sync with OpenBSD -current
This commit is contained in:
parent
074e641852
commit
8d26df7b18
19 changed files with 436 additions and 412 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: locore0.S,v 1.25 2024/07/21 19:41:31 bluhm Exp $ */
|
/* $OpenBSD: locore0.S,v 1.26 2024/10/04 21:15:52 bluhm Exp $ */
|
||||||
/* $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $ */
|
/* $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -269,37 +269,33 @@ cont:
|
||||||
orl %edx, RELOC(cpu_feature)
|
orl %edx, RELOC(cpu_feature)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Determine AMD SME and SEV capabilities.
|
* Determine AMD SEV capability.
|
||||||
*/
|
*/
|
||||||
movl $RELOC(cpu_vendor),%ebp
|
movl $RELOC(cpu_vendor),%ebp
|
||||||
cmpl $0x68747541, (%ebp) /* "Auth" */
|
cmpl $0x68747541, (%ebp) /* "Auth" */
|
||||||
jne .Lno_smesev
|
jne .Lno_sev
|
||||||
cmpl $0x69746e65, 4(%ebp) /* "enti" */
|
cmpl $0x69746e65, 4(%ebp) /* "enti" */
|
||||||
jne .Lno_smesev
|
jne .Lno_sev
|
||||||
cmpl $0x444d4163, 8(%ebp) /* "cAMD" */
|
cmpl $0x444d4163, 8(%ebp) /* "cAMD" */
|
||||||
jne .Lno_smesev
|
jne .Lno_sev
|
||||||
|
|
||||||
/* AMD CPU, check for SME and SEV. */
|
/* AMD CPU, check for SEV. */
|
||||||
movl $0x8000001f, %eax
|
movl $0x8000001f, %eax
|
||||||
cpuid
|
cpuid
|
||||||
pushl %eax
|
|
||||||
andl $CPUIDEAX_SME, %eax /* SME */
|
|
||||||
popl %eax
|
|
||||||
jz .Lno_smesev
|
|
||||||
andl $CPUIDEAX_SEV, %eax /* SEV */
|
andl $CPUIDEAX_SEV, %eax /* SEV */
|
||||||
jz .Lno_smesev
|
jz .Lno_sev
|
||||||
|
|
||||||
/* Are we in guest mode with SEV enabled? */
|
/* Are we in guest mode with SEV enabled? */
|
||||||
movl $MSR_SEV_STATUS, %ecx
|
movl $MSR_SEV_STATUS, %ecx
|
||||||
rdmsr
|
rdmsr
|
||||||
andl $SEV_STAT_ENABLED, %eax
|
andl $SEV_STAT_ENABLED, %eax
|
||||||
jz .Lno_smesev
|
jz .Lno_sev
|
||||||
|
|
||||||
/* Determine C bit position */
|
/* Determine C bit position */
|
||||||
movl %ebx, %ecx /* %ebx from previous cpuid */
|
movl %ebx, %ecx /* %ebx from previous cpuid */
|
||||||
andl $0x3f, %ecx
|
andl $0x3f, %ecx
|
||||||
cmpl $0x20, %ecx /* must be at least bit 32 (counting from 0) */
|
cmpl $0x20, %ecx /* must be at least bit 32 (counting from 0) */
|
||||||
jl .Lno_smesev
|
jl .Lno_sev
|
||||||
xorl %eax, %eax
|
xorl %eax, %eax
|
||||||
movl %eax, RELOC(pg_crypt)
|
movl %eax, RELOC(pg_crypt)
|
||||||
subl $0x20, %ecx
|
subl $0x20, %ecx
|
||||||
|
@ -338,7 +334,7 @@ cont:
|
||||||
|
|
||||||
movl $0x1, RELOC(cpu_sev_guestmode) /* we are a SEV guest */
|
movl $0x1, RELOC(cpu_sev_guestmode) /* we are a SEV guest */
|
||||||
|
|
||||||
.Lno_smesev:
|
.Lno_sev:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Finished with old stack; load new %esp now instead of later so we
|
* Finished with old stack; load new %esp now instead of later so we
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: exec_i386.c,v 1.11 2023/07/22 10:11:19 jsg Exp $ */
|
/* $OpenBSD: exec_i386.c,v 1.12 2024/10/04 22:21:28 bluhm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997-1998 Michael Shalayeff
|
* Copyright (c) 1997-1998 Michael Shalayeff
|
||||||
|
@ -239,6 +239,33 @@ ucode_load(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __amd64__
|
#ifdef __amd64__
|
||||||
|
int
|
||||||
|
detect_sev(void)
|
||||||
|
{
|
||||||
|
uint32_t max_ex_leaf, sev_feat;
|
||||||
|
uint32_t vendor[4];
|
||||||
|
uint32_t sev_status, dummy;
|
||||||
|
|
||||||
|
/* check whether we have SEV feature cpuid leaf */
|
||||||
|
CPUID(0x80000000, max_ex_leaf, vendor[0], vendor[2], vendor[1]);
|
||||||
|
vendor[3] = 0; /* NULL-terminate */
|
||||||
|
if (strcmp((char *)vendor, "AuthenticAMD") != 0 ||
|
||||||
|
max_ex_leaf < 0x8000001F)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
CPUID(0x8000001F, sev_feat, dummy, dummy, dummy);
|
||||||
|
/* check that SEV is supported */
|
||||||
|
if ((sev_feat & CPUIDEAX_SEV) == 0)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
__asm volatile ("rdmsr" : "=a" (sev_status), "=d"(dummy) : "c"(MSR_SEV_STATUS));
|
||||||
|
/* check whether SEV is enabled */
|
||||||
|
if ((sev_status & SEV_STAT_ENABLED) == 0)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
protect_writeable(uint64_t addr, size_t len)
|
protect_writeable(uint64_t addr, size_t len)
|
||||||
{
|
{
|
||||||
|
@ -247,6 +274,9 @@ protect_writeable(uint64_t addr, size_t len)
|
||||||
uint64_t cr0;
|
uint64_t cr0;
|
||||||
size_t idx;
|
size_t idx;
|
||||||
|
|
||||||
|
if (detect_sev() == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
__asm volatile("movq %%cr0, %0;" : "=r"(cr0) : :);
|
__asm volatile("movq %%cr0, %0;" : "=r"(cr0) : :);
|
||||||
if ((cr0 & CR0_PG) == 0)
|
if ((cr0 & CR0_PG) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: genassym.cf,v 1.18 2019/10/27 10:26:12 kettenis Exp $
|
# $OpenBSD: genassym.cf,v 1.19 2024/10/04 19:00:27 miod Exp $
|
||||||
# $NetBSD: genassym.cf,v 1.27 2003/11/04 10:33:16 dsl Exp$
|
# $NetBSD: genassym.cf,v 1.27 2003/11/04 10:33:16 dsl Exp$
|
||||||
|
|
||||||
# Copyright (c) 1982, 1990 The Regents of the University of California.
|
# Copyright (c) 1982, 1990 The Regents of the University of California.
|
||||||
|
@ -129,7 +129,6 @@ member pr_off
|
||||||
member pr_scale
|
member pr_scale
|
||||||
|
|
||||||
export SIGTRAP
|
export SIGTRAP
|
||||||
export SIGEMT
|
|
||||||
|
|
||||||
struct sigframe
|
struct sigframe
|
||||||
member SIGF_SC sf_sc
|
member SIGF_SC sf_sc
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: psp.c,v 1.4 2024/09/04 08:14:18 jsg Exp $ */
|
/* $OpenBSD: psp.c,v 1.5 2024/10/04 16:58:26 bluhm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023, 2024 Hans-Joerg Hoexer <hshoexer@genua.de>
|
* Copyright (c) 2023, 2024 Hans-Joerg Hoexer <hshoexer@genua.de>
|
||||||
|
@ -199,7 +199,7 @@ ccp_wait(struct psp_softc *sc, uint32_t *status, int poll)
|
||||||
|
|
||||||
if (poll) {
|
if (poll) {
|
||||||
count = 0;
|
count = 0;
|
||||||
while (count++ < 10) {
|
while (count++ < 100) {
|
||||||
cmdword = bus_space_read_4(sc->sc_iot, sc->sc_ioh,
|
cmdword = bus_space_read_4(sc->sc_iot, sc->sc_ioh,
|
||||||
PSP_REG_CMDRESP);
|
PSP_REG_CMDRESP);
|
||||||
if (cmdword & PSP_CMDRESP_RESPONSE)
|
if (cmdword & PSP_CMDRESP_RESPONSE)
|
||||||
|
@ -211,7 +211,7 @@ ccp_wait(struct psp_softc *sc, uint32_t *status, int poll)
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsleep_nsec(sc, PWAIT, "psp", SEC_TO_NSEC(1)) == EWOULDBLOCK)
|
if (tsleep_nsec(sc, PWAIT, "psp", SEC_TO_NSEC(2)) == EWOULDBLOCK)
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: if_ix.c,v 1.217 2024/09/04 07:54:52 mglocker Exp $ */
|
/* $OpenBSD: if_ix.c,v 1.218 2024/10/04 05:22:10 yasuoka Exp $ */
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
||||||
|
@ -508,8 +508,7 @@ ixgbe_start(struct ifqueue *ifq)
|
||||||
* hardware that this frame is available to transmit.
|
* hardware that this frame is available to transmit.
|
||||||
*/
|
*/
|
||||||
if (post)
|
if (post)
|
||||||
IXGBE_WRITE_REG(&sc->hw, IXGBE_TDT(txr->me),
|
IXGBE_WRITE_REG(&sc->hw, txr->tail, txr->next_avail_desc);
|
||||||
txr->next_avail_desc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
@ -706,7 +705,7 @@ ixgbe_watchdog(struct ifnet * ifp)
|
||||||
for (i = 0; i < sc->num_queues; i++, txr++) {
|
for (i = 0; i < sc->num_queues; i++, txr++) {
|
||||||
printf("%s: Queue(%d) tdh = %d, hw tdt = %d\n", ifp->if_xname, i,
|
printf("%s: Queue(%d) tdh = %d, hw tdt = %d\n", ifp->if_xname, i,
|
||||||
IXGBE_READ_REG(hw, IXGBE_TDH(i)),
|
IXGBE_READ_REG(hw, IXGBE_TDH(i)),
|
||||||
IXGBE_READ_REG(hw, IXGBE_TDT(i)));
|
IXGBE_READ_REG(hw, sc->tx_rings[i].tail));
|
||||||
printf("%s: TX(%d) Next TX to Clean = %d\n", ifp->if_xname,
|
printf("%s: TX(%d) Next TX to Clean = %d\n", ifp->if_xname,
|
||||||
i, txr->next_to_clean);
|
i, txr->next_to_clean);
|
||||||
}
|
}
|
||||||
|
@ -826,7 +825,7 @@ ixgbe_init(void *arg)
|
||||||
msec_delay(1);
|
msec_delay(1);
|
||||||
}
|
}
|
||||||
IXGBE_WRITE_FLUSH(&sc->hw);
|
IXGBE_WRITE_FLUSH(&sc->hw);
|
||||||
IXGBE_WRITE_REG(&sc->hw, IXGBE_RDT(i), rxr->last_desc_filled);
|
IXGBE_WRITE_REG(&sc->hw, rxr[i].tail, rxr->last_desc_filled);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set up VLAN support and filter */
|
/* Set up VLAN support and filter */
|
||||||
|
@ -2365,9 +2364,12 @@ ixgbe_initialize_transmit_units(struct ix_softc *sc)
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_TDLEN(i),
|
IXGBE_WRITE_REG(hw, IXGBE_TDLEN(i),
|
||||||
sc->num_tx_desc * sizeof(struct ixgbe_legacy_tx_desc));
|
sc->num_tx_desc * sizeof(struct ixgbe_legacy_tx_desc));
|
||||||
|
|
||||||
|
/* Set Tx Tail register */
|
||||||
|
txr->tail = IXGBE_TDT(i);
|
||||||
|
|
||||||
/* Setup the HW Tx Head and Tail descriptor pointers */
|
/* Setup the HW Tx Head and Tail descriptor pointers */
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_TDH(i), 0);
|
IXGBE_WRITE_REG(hw, IXGBE_TDH(i), 0);
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_TDT(i), 0);
|
IXGBE_WRITE_REG(hw, txr->tail, 0);
|
||||||
|
|
||||||
/* Setup Transmit Descriptor Cmd Settings */
|
/* Setup Transmit Descriptor Cmd Settings */
|
||||||
txr->txd_cmd = IXGBE_TXD_CMD_IFCS;
|
txr->txd_cmd = IXGBE_TXD_CMD_IFCS;
|
||||||
|
@ -2844,8 +2846,7 @@ ixgbe_rxrefill(void *xrxr)
|
||||||
|
|
||||||
if (ixgbe_rxfill(rxr)) {
|
if (ixgbe_rxfill(rxr)) {
|
||||||
/* Advance the Rx Queue "Tail Pointer" */
|
/* Advance the Rx Queue "Tail Pointer" */
|
||||||
IXGBE_WRITE_REG(&sc->hw, IXGBE_RDT(rxr->me),
|
IXGBE_WRITE_REG(&sc->hw, rxr->tail, rxr->last_desc_filled);
|
||||||
rxr->last_desc_filled);
|
|
||||||
} else if (if_rxr_inuse(&rxr->rx_ring) == 0)
|
} else if (if_rxr_inuse(&rxr->rx_ring) == 0)
|
||||||
timeout_add(&rxr->rx_refill, 1);
|
timeout_add(&rxr->rx_refill, 1);
|
||||||
|
|
||||||
|
@ -2940,6 +2941,9 @@ ixgbe_initialize_receive_units(struct ix_softc *sc)
|
||||||
srrctl = bufsz | IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
|
srrctl = bufsz | IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl);
|
IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl);
|
||||||
|
|
||||||
|
/* Capture Rx Tail index */
|
||||||
|
rxr->tail = IXGBE_RDT(i);
|
||||||
|
|
||||||
if (ISSET(ifp->if_xflags, IFXF_LRO)) {
|
if (ISSET(ifp->if_xflags, IFXF_LRO)) {
|
||||||
rdrxctl = IXGBE_READ_REG(&sc->hw, IXGBE_RSCCTL(i));
|
rdrxctl = IXGBE_READ_REG(&sc->hw, IXGBE_RSCCTL(i));
|
||||||
|
|
||||||
|
@ -2952,7 +2956,7 @@ ixgbe_initialize_receive_units(struct ix_softc *sc)
|
||||||
|
|
||||||
/* Setup the HW Rx Head and Tail Descriptor Pointers */
|
/* Setup the HW Rx Head and Tail Descriptor Pointers */
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_RDH(i), 0);
|
IXGBE_WRITE_REG(hw, IXGBE_RDH(i), 0);
|
||||||
IXGBE_WRITE_REG(hw, IXGBE_RDT(i), 0);
|
IXGBE_WRITE_REG(hw, rxr->tail, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sc->hw.mac.type != ixgbe_mac_82598EB) {
|
if (sc->hw.mac.type != ixgbe_mac_82598EB) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: if_ix.h,v 1.47 2024/05/21 11:19:39 bluhm Exp $ */
|
/* $OpenBSD: if_ix.h,v 1.48 2024/10/04 05:22:10 yasuoka Exp $ */
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
||||||
|
@ -169,6 +169,7 @@ struct ix_txring {
|
||||||
struct ix_softc *sc;
|
struct ix_softc *sc;
|
||||||
struct ifqueue *ifq;
|
struct ifqueue *ifq;
|
||||||
uint32_t me;
|
uint32_t me;
|
||||||
|
uint32_t tail;
|
||||||
uint32_t watchdog_timer;
|
uint32_t watchdog_timer;
|
||||||
union ixgbe_adv_tx_desc *tx_base;
|
union ixgbe_adv_tx_desc *tx_base;
|
||||||
struct ixgbe_tx_buf *tx_buffers;
|
struct ixgbe_tx_buf *tx_buffers;
|
||||||
|
@ -194,6 +195,7 @@ struct ix_rxring {
|
||||||
struct ix_softc *sc;
|
struct ix_softc *sc;
|
||||||
struct ifiqueue *ifiq;
|
struct ifiqueue *ifiq;
|
||||||
uint32_t me;
|
uint32_t me;
|
||||||
|
uint32_t tail;
|
||||||
union ixgbe_adv_rx_desc *rx_base;
|
union ixgbe_adv_rx_desc *rx_base;
|
||||||
struct ixgbe_dma_alloc rxdma;
|
struct ixgbe_dma_alloc rxdma;
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -244,6 +246,7 @@ struct ix_softc {
|
||||||
uint16_t num_segs;
|
uint16_t num_segs;
|
||||||
uint32_t link_speed;
|
uint32_t link_speed;
|
||||||
bool link_up;
|
bool link_up;
|
||||||
|
bool link_enabled;
|
||||||
uint32_t linkvec;
|
uint32_t linkvec;
|
||||||
struct rwlock sfflock;
|
struct rwlock sfflock;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: if_mcx.c,v 1.115 2024/05/24 06:02:53 jsg Exp $ */
|
/* $OpenBSD: if_mcx.c,v 1.116 2024/10/04 06:37:22 jmatthew Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 David Gwynne <dlg@openbsd.org>
|
* Copyright (c) 2017 David Gwynne <dlg@openbsd.org>
|
||||||
|
@ -2927,23 +2927,25 @@ mcx_attach(struct device *parent, struct device *self, void *aux)
|
||||||
goto teardown;
|
goto teardown;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf(", %s, address %s\n", intrstr,
|
|
||||||
ether_sprintf(sc->sc_ac.ac_enaddr));
|
|
||||||
|
|
||||||
msix--; /* admin ops took one */
|
msix--; /* admin ops took one */
|
||||||
sc->sc_intrmap = intrmap_create(&sc->sc_dev, msix, MCX_MAX_QUEUES,
|
sc->sc_intrmap = intrmap_create(&sc->sc_dev, msix, MCX_MAX_QUEUES,
|
||||||
INTRMAP_POWEROF2);
|
INTRMAP_POWEROF2);
|
||||||
if (sc->sc_intrmap == NULL) {
|
if (sc->sc_intrmap == NULL) {
|
||||||
printf("%s: unable to create interrupt map\n", DEVNAME(sc));
|
printf(": unable to create interrupt map\n");
|
||||||
goto teardown;
|
goto teardown;
|
||||||
}
|
}
|
||||||
sc->sc_queues = mallocarray(intrmap_count(sc->sc_intrmap),
|
sc->sc_queues = mallocarray(intrmap_count(sc->sc_intrmap),
|
||||||
sizeof(*sc->sc_queues), M_DEVBUF, M_WAITOK|M_ZERO);
|
sizeof(*sc->sc_queues), M_DEVBUF, M_WAITOK|M_ZERO);
|
||||||
if (sc->sc_queues == NULL) {
|
if (sc->sc_queues == NULL) {
|
||||||
printf("%s: unable to create queues\n", DEVNAME(sc));
|
printf(": unable to create queues\n");
|
||||||
goto intrunmap;
|
goto intrunmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf(", %s, %d queue%s, address %s\n", intrstr,
|
||||||
|
intrmap_count(sc->sc_intrmap),
|
||||||
|
intrmap_count(sc->sc_intrmap) > 1 ? "s" : "",
|
||||||
|
ether_sprintf(sc->sc_ac.ac_enaddr));
|
||||||
|
|
||||||
strlcpy(ifp->if_xname, DEVNAME(sc), IFNAMSIZ);
|
strlcpy(ifp->if_xname, DEVNAME(sc), IFNAMSIZ);
|
||||||
ifp->if_softc = sc;
|
ifp->if_softc = sc;
|
||||||
ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | IFF_SIMPLEX;
|
ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | IFF_SIMPLEX;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: if_qwx_pci.c,v 1.22 2024/07/06 05:34:35 patrick Exp $ */
|
/* $OpenBSD: if_qwx_pci.c,v 1.23 2024/10/04 07:46:33 kevlo Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2023 Stefan Sperling <stsp@openbsd.org>
|
* Copyright 2023 Stefan Sperling <stsp@openbsd.org>
|
||||||
|
@ -374,11 +374,9 @@ struct qwx_pci_softc {
|
||||||
struct qwx_dmamem *cmd_ctxt;
|
struct qwx_dmamem *cmd_ctxt;
|
||||||
|
|
||||||
|
|
||||||
struct qwx_pci_xfer_ring xfer_rings[4];
|
struct qwx_pci_xfer_ring xfer_rings[2];
|
||||||
#define QWX_PCI_XFER_RING_LOOPBACK_OUTBOUND 0
|
#define QWX_PCI_XFER_RING_IPCR_OUTBOUND 0
|
||||||
#define QWX_PCI_XFER_RING_LOOPBACK_INBOUND 1
|
#define QWX_PCI_XFER_RING_IPCR_INBOUND 1
|
||||||
#define QWX_PCI_XFER_RING_IPCR_OUTBOUND 2
|
|
||||||
#define QWX_PCI_XFER_RING_IPCR_INBOUND 3
|
|
||||||
struct qwx_pci_event_ring event_rings[QWX_NUM_EVENT_CTX];
|
struct qwx_pci_event_ring event_rings[QWX_NUM_EVENT_CTX];
|
||||||
struct qwx_pci_cmd_ring cmd_ring;
|
struct qwx_pci_cmd_ring cmd_ring;
|
||||||
};
|
};
|
||||||
|
@ -745,7 +743,6 @@ qwx_pci_attach(struct device *parent, struct device *self, void *aux)
|
||||||
struct ieee80211com *ic = &sc->sc_ic;
|
struct ieee80211com *ic = &sc->sc_ic;
|
||||||
struct ifnet *ifp = &ic->ic_if;
|
struct ifnet *ifp = &ic->ic_if;
|
||||||
uint32_t soc_hw_version_major, soc_hw_version_minor;
|
uint32_t soc_hw_version_major, soc_hw_version_minor;
|
||||||
const struct qwx_pci_ops *pci_ops;
|
|
||||||
struct pci_attach_args *pa = aux;
|
struct pci_attach_args *pa = aux;
|
||||||
pci_intr_handle_t ih;
|
pci_intr_handle_t ih;
|
||||||
pcireg_t memtype, reg;
|
pcireg_t memtype, reg;
|
||||||
|
@ -884,6 +881,9 @@ qwx_pci_attach(struct device *parent, struct device *self, void *aux)
|
||||||
|
|
||||||
pci_set_powerstate(pa->pa_pc, pa->pa_tag, PCI_PMCSR_STATE_D0);
|
pci_set_powerstate(pa->pa_pc, pa->pa_tag, PCI_PMCSR_STATE_D0);
|
||||||
|
|
||||||
|
/* register PCI ops */
|
||||||
|
psc->sc_pci_ops = &qwx_pci_ops_qca6390;
|
||||||
|
|
||||||
switch (PCI_PRODUCT(pa->pa_id)) {
|
switch (PCI_PRODUCT(pa->pa_id)) {
|
||||||
case PCI_PRODUCT_QUALCOMM_QCA6390:
|
case PCI_PRODUCT_QUALCOMM_QCA6390:
|
||||||
qwx_pci_read_hw_version(sc, &soc_hw_version_major,
|
qwx_pci_read_hw_version(sc, &soc_hw_version_major,
|
||||||
|
@ -898,11 +898,10 @@ qwx_pci_attach(struct device *parent, struct device *self, void *aux)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pci_ops = &qwx_pci_ops_qca6390;
|
|
||||||
psc->max_chan = QWX_MHI_CONFIG_QCA6390_MAX_CHANNELS;
|
psc->max_chan = QWX_MHI_CONFIG_QCA6390_MAX_CHANNELS;
|
||||||
break;
|
break;
|
||||||
case PCI_PRODUCT_QUALCOMM_QCN9074:
|
case PCI_PRODUCT_QUALCOMM_QCN9074:
|
||||||
pci_ops = &qwx_pci_ops_qcn9074;
|
psc->sc_pci_ops = &qwx_pci_ops_qcn9074;
|
||||||
sc->sc_hw_rev = ATH11K_HW_QCN9074_HW10;
|
sc->sc_hw_rev = ATH11K_HW_QCN9074_HW10;
|
||||||
psc->max_chan = QWX_MHI_CONFIG_QCA9074_MAX_CHANNELS;
|
psc->max_chan = QWX_MHI_CONFIG_QCA9074_MAX_CHANNELS;
|
||||||
break;
|
break;
|
||||||
|
@ -932,7 +931,6 @@ unsupported_wcn6855_soc:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pci_ops = &qwx_pci_ops_qca6390;
|
|
||||||
psc->max_chan = QWX_MHI_CONFIG_QCA6390_MAX_CHANNELS;
|
psc->max_chan = QWX_MHI_CONFIG_QCA6390_MAX_CHANNELS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -940,9 +938,6 @@ unsupported_wcn6855_soc:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register PCI ops */
|
|
||||||
psc->sc_pci_ops = pci_ops;
|
|
||||||
|
|
||||||
error = qwx_pcic_init_msi_config(sc);
|
error = qwx_pcic_init_msi_config(sc);
|
||||||
if (error)
|
if (error)
|
||||||
goto err_pci_free_region;
|
goto err_pci_free_region;
|
||||||
|
@ -1296,18 +1291,6 @@ qwx_pci_alloc_xfer_rings_qca6390(struct qwx_pci_softc *psc)
|
||||||
struct qwx_softc *sc = &psc->sc_sc;
|
struct qwx_softc *sc = &psc->sc_sc;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_LOOPBACK_OUTBOUND],
|
|
||||||
0, MHI_CHAN_TYPE_OUTBOUND, 0, 32);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_LOOPBACK_INBOUND],
|
|
||||||
1, MHI_CHAN_TYPE_INBOUND, 0, 32);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
ret = qwx_pci_alloc_xfer_ring(sc,
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_IPCR_OUTBOUND],
|
&psc->xfer_rings[QWX_PCI_XFER_RING_IPCR_OUTBOUND],
|
||||||
20, MHI_CHAN_TYPE_OUTBOUND, 1, 64);
|
20, MHI_CHAN_TYPE_OUTBOUND, 1, 64);
|
||||||
|
@ -1332,18 +1315,6 @@ qwx_pci_alloc_xfer_rings_qcn9074(struct qwx_pci_softc *psc)
|
||||||
struct qwx_softc *sc = &psc->sc_sc;
|
struct qwx_softc *sc = &psc->sc_sc;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_LOOPBACK_OUTBOUND],
|
|
||||||
0, MHI_CHAN_TYPE_OUTBOUND, 1, 32);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_LOOPBACK_INBOUND],
|
|
||||||
1, MHI_CHAN_TYPE_INBOUND, 1, 32);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
ret = qwx_pci_alloc_xfer_ring(sc,
|
ret = qwx_pci_alloc_xfer_ring(sc,
|
||||||
&psc->xfer_rings[QWX_PCI_XFER_RING_IPCR_OUTBOUND],
|
&psc->xfer_rings[QWX_PCI_XFER_RING_IPCR_OUTBOUND],
|
||||||
20, MHI_CHAN_TYPE_OUTBOUND, 1, 32);
|
20, MHI_CHAN_TYPE_OUTBOUND, 1, 32);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: cmd-choose-tree.c,v 1.51 2022/06/04 07:42:07 nicm Exp $ */
|
/* $OpenBSD: cmd-choose-tree.c,v 1.52 2024/10/04 19:16:13 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012 Thomas Adam <thomas@xteddy.org>
|
* Copyright (c) 2012 Thomas Adam <thomas@xteddy.org>
|
||||||
|
@ -33,7 +33,7 @@ const struct cmd_entry cmd_choose_tree_entry = {
|
||||||
.name = "choose-tree",
|
.name = "choose-tree",
|
||||||
.alias = NULL,
|
.alias = NULL,
|
||||||
|
|
||||||
.args = { "F:f:GK:NO:rst:wZ", 0, 1, cmd_choose_tree_args_parse },
|
.args = { "F:f:GK:NO:rst:wyZ", 0, 1, cmd_choose_tree_args_parse },
|
||||||
.usage = "[-GNrswZ] [-F format] [-f filter] [-K key-format] "
|
.usage = "[-GNrswZ] [-F format] [-f filter] [-K key-format] "
|
||||||
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ const struct cmd_entry cmd_choose_client_entry = {
|
||||||
.name = "choose-client",
|
.name = "choose-client",
|
||||||
.alias = NULL,
|
.alias = NULL,
|
||||||
|
|
||||||
.args = { "F:f:K:NO:rt:Z", 0, 1, cmd_choose_tree_args_parse },
|
.args = { "F:f:K:NO:rt:yZ", 0, 1, cmd_choose_tree_args_parse },
|
||||||
.usage = "[-NrZ] [-F format] [-f filter] [-K key-format] "
|
.usage = "[-NrZ] [-F format] [-f filter] [-K key-format] "
|
||||||
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ const struct cmd_entry cmd_choose_buffer_entry = {
|
||||||
.name = "choose-buffer",
|
.name = "choose-buffer",
|
||||||
.alias = NULL,
|
.alias = NULL,
|
||||||
|
|
||||||
.args = { "F:f:K:NO:rt:Z", 0, 1, cmd_choose_tree_args_parse },
|
.args = { "F:f:K:NO:rt:yZ", 0, 1, cmd_choose_tree_args_parse },
|
||||||
.usage = "[-NrZ] [-F format] [-f filter] [-K key-format] "
|
.usage = "[-NrZ] [-F format] [-f filter] [-K key-format] "
|
||||||
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
"[-O sort-order] " CMD_TARGET_PANE_USAGE " [template]",
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ const struct cmd_entry cmd_customize_mode_entry = {
|
||||||
.name = "customize-mode",
|
.name = "customize-mode",
|
||||||
.alias = NULL,
|
.alias = NULL,
|
||||||
|
|
||||||
.args = { "F:f:Nt:Z", 0, 0, NULL },
|
.args = { "F:f:Nt:yZ", 0, 0, NULL },
|
||||||
.usage = "[-NZ] [-F format] [-f filter] " CMD_TARGET_PANE_USAGE,
|
.usage = "[-NZ] [-F format] [-f filter] " CMD_TARGET_PANE_USAGE,
|
||||||
|
|
||||||
.target = { 't', CMD_FIND_PANE, 0 },
|
.target = { 't', CMD_FIND_PANE, 0 },
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: key-bindings.c,v 1.149 2024/08/21 05:03:13 nicm Exp $ */
|
/* $OpenBSD: key-bindings.c,v 1.150 2024/10/04 07:03:08 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
" '#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}' '<' {send -X history-top}" \
|
" '#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Top,}' '<' {send -X history-top}" \
|
||||||
" '#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}' '>' {send -X history-bottom}" \
|
" '#{?#{m/r:(copy|view)-mode,#{pane_mode}},Go To Bottom,}' '>' {send -X history-bottom}" \
|
||||||
" ''" \
|
" ''" \
|
||||||
" '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {if -F '#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}' 'copy-mode -t='; send -Xt= search-backward \"#{q:mouse_word}\"}" \
|
" '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {if -F '#{?#{m/r:(copy|view)-mode,#{pane_mode}},0,1}' 'copy-mode -t='; send -Xt= search-backward -- \"#{q:mouse_word}\"}" \
|
||||||
" '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {copy-mode -q; send-keys -l -- \"#{q:mouse_word}\"}" \
|
" '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {copy-mode -q; send-keys -l -- \"#{q:mouse_word}\"}" \
|
||||||
" '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {copy-mode -q; set-buffer -- \"#{q:mouse_word}\"}" \
|
" '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {copy-mode -q; set-buffer -- \"#{q:mouse_word}\"}" \
|
||||||
" '#{?mouse_line,Copy Line,}' 'l' {copy-mode -q; set-buffer -- \"#{q:mouse_line}\"}" \
|
" '#{?mouse_line,Copy Line,}' 'l' {copy-mode -q; set-buffer -- \"#{q:mouse_line}\"}" \
|
||||||
|
@ -489,26 +489,26 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode C-k { send -X copy-pipe-end-of-line-and-cancel }",
|
"bind -Tcopy-mode C-k { send -X copy-pipe-end-of-line-and-cancel }",
|
||||||
"bind -Tcopy-mode C-n { send -X cursor-down }",
|
"bind -Tcopy-mode C-n { send -X cursor-down }",
|
||||||
"bind -Tcopy-mode C-p { send -X cursor-up }",
|
"bind -Tcopy-mode C-p { send -X cursor-up }",
|
||||||
"bind -Tcopy-mode C-r { command-prompt -T search -ip'(search up)' -I'#{pane_search_string}' { send -X search-backward-incremental '%%' } }",
|
"bind -Tcopy-mode C-r { command-prompt -T search -ip'(search up)' -I'#{pane_search_string}' { send -X search-backward-incremental -- '%%' } }",
|
||||||
"bind -Tcopy-mode C-s { command-prompt -T search -ip'(search down)' -I'#{pane_search_string}' { send -X search-forward-incremental '%%' } }",
|
"bind -Tcopy-mode C-s { command-prompt -T search -ip'(search down)' -I'#{pane_search_string}' { send -X search-forward-incremental -- '%%' } }",
|
||||||
"bind -Tcopy-mode C-v { send -X page-down }",
|
"bind -Tcopy-mode C-v { send -X page-down }",
|
||||||
"bind -Tcopy-mode C-w { send -X copy-pipe-and-cancel }",
|
"bind -Tcopy-mode C-w { send -X copy-pipe-and-cancel }",
|
||||||
"bind -Tcopy-mode Escape { send -X cancel }",
|
"bind -Tcopy-mode Escape { send -X cancel }",
|
||||||
"bind -Tcopy-mode Space { send -X page-down }",
|
"bind -Tcopy-mode Space { send -X page-down }",
|
||||||
"bind -Tcopy-mode , { send -X jump-reverse }",
|
"bind -Tcopy-mode , { send -X jump-reverse }",
|
||||||
"bind -Tcopy-mode \\; { send -X jump-again }",
|
"bind -Tcopy-mode \\; { send -X jump-again }",
|
||||||
"bind -Tcopy-mode F { command-prompt -1p'(jump backward)' { send -X jump-backward '%%' } }",
|
"bind -Tcopy-mode F { command-prompt -1p'(jump backward)' { send -X jump-backward -- '%%' } }",
|
||||||
"bind -Tcopy-mode N { send -X search-reverse }",
|
"bind -Tcopy-mode N { send -X search-reverse }",
|
||||||
"bind -Tcopy-mode P { send -X toggle-position }",
|
"bind -Tcopy-mode P { send -X toggle-position }",
|
||||||
"bind -Tcopy-mode R { send -X rectangle-toggle }",
|
"bind -Tcopy-mode R { send -X rectangle-toggle }",
|
||||||
"bind -Tcopy-mode T { command-prompt -1p'(jump to backward)' { send -X jump-to-backward '%%' } }",
|
"bind -Tcopy-mode T { command-prompt -1p'(jump to backward)' { send -X jump-to-backward -- '%%' } }",
|
||||||
"bind -Tcopy-mode X { send -X set-mark }",
|
"bind -Tcopy-mode X { send -X set-mark }",
|
||||||
"bind -Tcopy-mode f { command-prompt -1p'(jump forward)' { send -X jump-forward '%%' } }",
|
"bind -Tcopy-mode f { command-prompt -1p'(jump forward)' { send -X jump-forward -- '%%' } }",
|
||||||
"bind -Tcopy-mode g { command-prompt -p'(goto line)' { send -X goto-line '%%' } }",
|
"bind -Tcopy-mode g { command-prompt -p'(goto line)' { send -X goto-line -- '%%' } }",
|
||||||
"bind -Tcopy-mode n { send -X search-again }",
|
"bind -Tcopy-mode n { send -X search-again }",
|
||||||
"bind -Tcopy-mode q { send -X cancel }",
|
"bind -Tcopy-mode q { send -X cancel }",
|
||||||
"bind -Tcopy-mode r { send -X refresh-from-pane }",
|
"bind -Tcopy-mode r { send -X refresh-from-pane }",
|
||||||
"bind -Tcopy-mode t { command-prompt -1p'(jump to forward)' { send -X jump-to-forward '%%' } }",
|
"bind -Tcopy-mode t { command-prompt -1p'(jump to forward)' { send -X jump-to-forward -- '%%' } }",
|
||||||
"bind -Tcopy-mode Home { send -X start-of-line }",
|
"bind -Tcopy-mode Home { send -X start-of-line }",
|
||||||
"bind -Tcopy-mode End { send -X end-of-line }",
|
"bind -Tcopy-mode End { send -X end-of-line }",
|
||||||
"bind -Tcopy-mode MouseDown1Pane select-pane",
|
"bind -Tcopy-mode MouseDown1Pane select-pane",
|
||||||
|
@ -553,8 +553,8 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode C-Down { send -X scroll-down }",
|
"bind -Tcopy-mode C-Down { send -X scroll-down }",
|
||||||
|
|
||||||
/* Copy mode (vi) keys. */
|
/* Copy mode (vi) keys. */
|
||||||
"bind -Tcopy-mode-vi '#' { send -FX search-backward '#{copy_cursor_word}' }",
|
"bind -Tcopy-mode-vi '#' { send -FX search-backward -- '#{copy_cursor_word}' }",
|
||||||
"bind -Tcopy-mode-vi * { send -FX search-forward '#{copy_cursor_word}' }",
|
"bind -Tcopy-mode-vi * { send -FX search-forward -- '#{copy_cursor_word}' }",
|
||||||
"bind -Tcopy-mode-vi C-c { send -X cancel }",
|
"bind -Tcopy-mode-vi C-c { send -X cancel }",
|
||||||
"bind -Tcopy-mode-vi C-d { send -X halfpage-down }",
|
"bind -Tcopy-mode-vi C-d { send -X halfpage-down }",
|
||||||
"bind -Tcopy-mode-vi C-e { send -X scroll-down }",
|
"bind -Tcopy-mode-vi C-e { send -X scroll-down }",
|
||||||
|
@ -570,7 +570,7 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode-vi Space { send -X begin-selection }",
|
"bind -Tcopy-mode-vi Space { send -X begin-selection }",
|
||||||
"bind -Tcopy-mode-vi '$' { send -X end-of-line }",
|
"bind -Tcopy-mode-vi '$' { send -X end-of-line }",
|
||||||
"bind -Tcopy-mode-vi , { send -X jump-reverse }",
|
"bind -Tcopy-mode-vi , { send -X jump-reverse }",
|
||||||
"bind -Tcopy-mode-vi / { command-prompt -T search -p'(search down)' { send -X search-forward '%%' } }",
|
"bind -Tcopy-mode-vi / { command-prompt -T search -p'(search down)' { send -X search-forward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi 0 { send -X start-of-line }",
|
"bind -Tcopy-mode-vi 0 { send -X start-of-line }",
|
||||||
"bind -Tcopy-mode-vi 1 { command-prompt -Np'(repeat)' -I1 { send -N '%%' } }",
|
"bind -Tcopy-mode-vi 1 { command-prompt -Np'(repeat)' -I1 { send -N '%%' } }",
|
||||||
"bind -Tcopy-mode-vi 2 { command-prompt -Np'(repeat)' -I2 { send -N '%%' } }",
|
"bind -Tcopy-mode-vi 2 { command-prompt -Np'(repeat)' -I2 { send -N '%%' } }",
|
||||||
|
@ -581,14 +581,14 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode-vi 7 { command-prompt -Np'(repeat)' -I7 { send -N '%%' } }",
|
"bind -Tcopy-mode-vi 7 { command-prompt -Np'(repeat)' -I7 { send -N '%%' } }",
|
||||||
"bind -Tcopy-mode-vi 8 { command-prompt -Np'(repeat)' -I8 { send -N '%%' } }",
|
"bind -Tcopy-mode-vi 8 { command-prompt -Np'(repeat)' -I8 { send -N '%%' } }",
|
||||||
"bind -Tcopy-mode-vi 9 { command-prompt -Np'(repeat)' -I9 { send -N '%%' } }",
|
"bind -Tcopy-mode-vi 9 { command-prompt -Np'(repeat)' -I9 { send -N '%%' } }",
|
||||||
"bind -Tcopy-mode-vi : { command-prompt -p'(goto line)' { send -X goto-line '%%' } }",
|
"bind -Tcopy-mode-vi : { command-prompt -p'(goto line)' { send -X goto-line -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi \\; { send -X jump-again }",
|
"bind -Tcopy-mode-vi \\; { send -X jump-again }",
|
||||||
"bind -Tcopy-mode-vi ? { command-prompt -T search -p'(search up)' { send -X search-backward '%%' } }",
|
"bind -Tcopy-mode-vi ? { command-prompt -T search -p'(search up)' { send -X search-backward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi A { send -X append-selection-and-cancel }",
|
"bind -Tcopy-mode-vi A { send -X append-selection-and-cancel }",
|
||||||
"bind -Tcopy-mode-vi B { send -X previous-space }",
|
"bind -Tcopy-mode-vi B { send -X previous-space }",
|
||||||
"bind -Tcopy-mode-vi D { send -X copy-pipe-end-of-line-and-cancel }",
|
"bind -Tcopy-mode-vi D { send -X copy-pipe-end-of-line-and-cancel }",
|
||||||
"bind -Tcopy-mode-vi E { send -X next-space-end }",
|
"bind -Tcopy-mode-vi E { send -X next-space-end }",
|
||||||
"bind -Tcopy-mode-vi F { command-prompt -1p'(jump backward)' { send -X jump-backward '%%' } }",
|
"bind -Tcopy-mode-vi F { command-prompt -1p'(jump backward)' { send -X jump-backward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi G { send -X history-bottom }",
|
"bind -Tcopy-mode-vi G { send -X history-bottom }",
|
||||||
"bind -Tcopy-mode-vi H { send -X top-line }",
|
"bind -Tcopy-mode-vi H { send -X top-line }",
|
||||||
"bind -Tcopy-mode-vi J { send -X scroll-down }",
|
"bind -Tcopy-mode-vi J { send -X scroll-down }",
|
||||||
|
@ -597,14 +597,14 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode-vi M { send -X middle-line }",
|
"bind -Tcopy-mode-vi M { send -X middle-line }",
|
||||||
"bind -Tcopy-mode-vi N { send -X search-reverse }",
|
"bind -Tcopy-mode-vi N { send -X search-reverse }",
|
||||||
"bind -Tcopy-mode-vi P { send -X toggle-position }",
|
"bind -Tcopy-mode-vi P { send -X toggle-position }",
|
||||||
"bind -Tcopy-mode-vi T { command-prompt -1p'(jump to backward)' { send -X jump-to-backward '%%' } }",
|
"bind -Tcopy-mode-vi T { command-prompt -1p'(jump to backward)' { send -X jump-to-backward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi V { send -X select-line }",
|
"bind -Tcopy-mode-vi V { send -X select-line }",
|
||||||
"bind -Tcopy-mode-vi W { send -X next-space }",
|
"bind -Tcopy-mode-vi W { send -X next-space }",
|
||||||
"bind -Tcopy-mode-vi X { send -X set-mark }",
|
"bind -Tcopy-mode-vi X { send -X set-mark }",
|
||||||
"bind -Tcopy-mode-vi ^ { send -X back-to-indentation }",
|
"bind -Tcopy-mode-vi ^ { send -X back-to-indentation }",
|
||||||
"bind -Tcopy-mode-vi b { send -X previous-word }",
|
"bind -Tcopy-mode-vi b { send -X previous-word }",
|
||||||
"bind -Tcopy-mode-vi e { send -X next-word-end }",
|
"bind -Tcopy-mode-vi e { send -X next-word-end }",
|
||||||
"bind -Tcopy-mode-vi f { command-prompt -1p'(jump forward)' { send -X jump-forward '%%' } }",
|
"bind -Tcopy-mode-vi f { command-prompt -1p'(jump forward)' { send -X jump-forward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi g { send -X history-top }",
|
"bind -Tcopy-mode-vi g { send -X history-top }",
|
||||||
"bind -Tcopy-mode-vi h { send -X cursor-left }",
|
"bind -Tcopy-mode-vi h { send -X cursor-left }",
|
||||||
"bind -Tcopy-mode-vi j { send -X cursor-down }",
|
"bind -Tcopy-mode-vi j { send -X cursor-down }",
|
||||||
|
@ -615,7 +615,7 @@ key_bindings_init(void)
|
||||||
"bind -Tcopy-mode-vi o { send -X other-end }",
|
"bind -Tcopy-mode-vi o { send -X other-end }",
|
||||||
"bind -Tcopy-mode-vi q { send -X cancel }",
|
"bind -Tcopy-mode-vi q { send -X cancel }",
|
||||||
"bind -Tcopy-mode-vi r { send -X refresh-from-pane }",
|
"bind -Tcopy-mode-vi r { send -X refresh-from-pane }",
|
||||||
"bind -Tcopy-mode-vi t { command-prompt -1p'(jump to forward)' { send -X jump-to-forward '%%' } }",
|
"bind -Tcopy-mode-vi t { command-prompt -1p'(jump to forward)' { send -X jump-to-forward -- '%%' } }",
|
||||||
"bind -Tcopy-mode-vi v { send -X rectangle-toggle }",
|
"bind -Tcopy-mode-vi v { send -X rectangle-toggle }",
|
||||||
"bind -Tcopy-mode-vi w { send -X next-word }",
|
"bind -Tcopy-mode-vi w { send -X next-word }",
|
||||||
"bind -Tcopy-mode-vi '{' { send -X previous-paragraph }",
|
"bind -Tcopy-mode-vi '{' { send -X previous-paragraph }",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: options-table.c,v 1.179 2024/10/02 11:51:15 nicm Exp $ */
|
/* $OpenBSD: options-table.c,v 1.180 2024/10/05 00:32:55 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -971,6 +971,18 @@ const struct options_table_entry options_table[] = {
|
||||||
.text = "Style of the marked line in copy mode."
|
.text = "Style of the marked line in copy mode."
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ .name = "copy-mode-position-format",
|
||||||
|
.type = OPTIONS_TABLE_STRING,
|
||||||
|
.scope = OPTIONS_TABLE_WINDOW|OPTIONS_TABLE_PANE,
|
||||||
|
.default_str = "#[align=right]"
|
||||||
|
"#{t/p:top_line_time}#{?#{e|>:#{top_line_time},0}, ,}"
|
||||||
|
"[#{scroll_position}/#{history_size}]"
|
||||||
|
"#{?search_timed_out, (timed out),"
|
||||||
|
"#{?search_count, (#{search_count}"
|
||||||
|
"#{?search_count_partial,+,} results),}}",
|
||||||
|
.text = "Format of the position indicator in copy mode."
|
||||||
|
},
|
||||||
|
|
||||||
{ .name = "fill-character",
|
{ .name = "fill-character",
|
||||||
.type = OPTIONS_TABLE_STRING,
|
.type = OPTIONS_TABLE_STRING,
|
||||||
.scope = OPTIONS_TABLE_WINDOW,
|
.scope = OPTIONS_TABLE_WINDOW,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: screen-write.c,v 1.226 2024/08/21 04:17:09 nicm Exp $ */
|
/* $OpenBSD: screen-write.c,v 1.227 2024/10/05 00:32:55 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -567,9 +567,11 @@ screen_write_fast_copy(struct screen_write_ctx *ctx, struct screen *src,
|
||||||
u_int px, u_int py, u_int nx, u_int ny)
|
u_int px, u_int py, u_int nx, u_int ny)
|
||||||
{
|
{
|
||||||
struct screen *s = ctx->s;
|
struct screen *s = ctx->s;
|
||||||
|
struct window_pane *wp = ctx->wp;
|
||||||
|
struct tty_ctx ttyctx;
|
||||||
struct grid *gd = src->grid;
|
struct grid *gd = src->grid;
|
||||||
struct grid_cell gc;
|
struct grid_cell gc;
|
||||||
u_int xx, yy, cx, cy;
|
u_int xx, yy, cx = s->cx, cy = s->cy;
|
||||||
|
|
||||||
if (nx == 0 || ny == 0)
|
if (nx == 0 || ny == 0)
|
||||||
return;
|
return;
|
||||||
|
@ -578,18 +580,28 @@ screen_write_fast_copy(struct screen_write_ctx *ctx, struct screen *src,
|
||||||
for (yy = py; yy < py + ny; yy++) {
|
for (yy = py; yy < py + ny; yy++) {
|
||||||
if (yy >= gd->hsize + gd->sy)
|
if (yy >= gd->hsize + gd->sy)
|
||||||
break;
|
break;
|
||||||
cx = s->cx;
|
s->cx = cx;
|
||||||
|
if (wp != NULL)
|
||||||
|
screen_write_initctx(ctx, &ttyctx, 0);
|
||||||
for (xx = px; xx < px + nx; xx++) {
|
for (xx = px; xx < px + nx; xx++) {
|
||||||
if (xx >= grid_get_line(gd, yy)->cellsize)
|
if (xx >= grid_get_line(gd, yy)->cellsize)
|
||||||
break;
|
break;
|
||||||
grid_get_cell(gd, xx, yy, &gc);
|
grid_get_cell(gd, xx, yy, &gc);
|
||||||
if (xx + gc.data.width > px + nx)
|
if (xx + gc.data.width > px + nx)
|
||||||
break;
|
break;
|
||||||
grid_view_set_cell(ctx->s->grid, cx, cy, &gc);
|
grid_view_set_cell(ctx->s->grid, s->cx, s->cy, &gc);
|
||||||
cx++;
|
if (wp != NULL) {
|
||||||
|
ttyctx.cell = &gc;
|
||||||
|
tty_write(tty_cmd_cell, &ttyctx);
|
||||||
|
ttyctx.ocx++;
|
||||||
|
}
|
||||||
|
s->cx++;
|
||||||
}
|
}
|
||||||
cy++;
|
s->cy++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s->cx = cx;
|
||||||
|
s->cy = cy;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Select character set for drawing border lines. */
|
/* Select character set for drawing border lines. */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: status.c,v 1.245 2024/08/22 09:05:51 nicm Exp $ */
|
/* $OpenBSD: status.c,v 1.246 2024/10/04 19:16:13 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -598,6 +598,19 @@ status_message_redraw(struct client *c)
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Accept prompt immediately. */
|
||||||
|
static enum cmd_retval
|
||||||
|
status_prompt_accept(__unused struct cmdq_item *item, void *data)
|
||||||
|
{
|
||||||
|
struct client *c = data;
|
||||||
|
|
||||||
|
if (c->prompt_string != NULL) {
|
||||||
|
c->prompt_inputcb(c, c->prompt_data, "y", 1);
|
||||||
|
status_prompt_clear(c);
|
||||||
|
}
|
||||||
|
return (CMD_RETURN_NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable status line prompt. */
|
/* Enable status line prompt. */
|
||||||
void
|
void
|
||||||
status_prompt_set(struct client *c, struct cmd_find_state *fs,
|
status_prompt_set(struct client *c, struct cmd_find_state *fs,
|
||||||
|
@ -655,6 +668,9 @@ status_prompt_set(struct client *c, struct cmd_find_state *fs,
|
||||||
|
|
||||||
free(tmp);
|
free(tmp);
|
||||||
format_free(ft);
|
format_free(ft);
|
||||||
|
|
||||||
|
if ((flags & PROMPT_SINGLE) && (flags & PROMPT_ACCEPT))
|
||||||
|
cmdq_append(c, cmdq_get_callback(status_prompt_accept, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove status line prompt. */
|
/* Remove status line prompt. */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.\" $OpenBSD: tmux.1,v 1.958 2024/10/01 10:10:29 nicm Exp $
|
.\" $OpenBSD: tmux.1,v 1.962 2024/10/05 00:32:55 nicm Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
.\"
|
.\"
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
||||||
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
.\"
|
.\"
|
||||||
.Dd $Mdocdate: October 1 2024 $
|
.Dd $Mdocdate: October 5 2024 $
|
||||||
.Dt TMUX 1
|
.Dt TMUX 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -1801,6 +1801,7 @@ Exit copy mode.
|
||||||
Clear the current selection.
|
Clear the current selection.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-end-of-line
|
.Ic copy-end-of-line
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Copy from the cursor position to the end of the line.
|
Copy from the cursor position to the end of the line.
|
||||||
|
@ -1808,11 +1809,13 @@ Copy from the cursor position to the end of the line.
|
||||||
is used to name the new paste buffer.
|
is used to name the new paste buffer.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-end-of-line-and-cancel
|
.Ic copy-end-of-line-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Copy from the cursor position and exit copy mode.
|
Copy from the cursor position and exit copy mode.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-end-of-line
|
.Ic copy-pipe-end-of-line
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1822,6 +1825,7 @@ Copy from the cursor position to the end of the line and pipe the text to
|
||||||
is used to name the new paste buffer.
|
is used to name the new paste buffer.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-end-of-line-and-cancel
|
.Ic copy-pipe-end-of-line-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1830,16 +1834,19 @@ Same as
|
||||||
but also exit copy mode.
|
but also exit copy mode.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-line
|
.Ic copy-line
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Copy the entire line.
|
Copy the entire line.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-line-and-cancel
|
.Ic copy-line-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Copy the entire line and exit copy mode.
|
Copy the entire line and exit copy mode.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-line
|
.Ic copy-pipe-line
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1849,6 +1856,7 @@ Copy the entire line and pipe the text to
|
||||||
is used to name the new paste buffer.
|
is used to name the new paste buffer.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-line-and-cancel
|
.Ic copy-pipe-line-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1857,6 +1865,7 @@ Same as
|
||||||
but also exit copy mode.
|
but also exit copy mode.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe
|
.Ic copy-pipe
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1866,6 +1875,7 @@ Copy the selection, clear it and pipe its text to
|
||||||
is used to name the new paste buffer.
|
is used to name the new paste buffer.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-no-clear
|
.Ic copy-pipe-no-clear
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1874,6 +1884,7 @@ Same as
|
||||||
but do not clear the selection.
|
but do not clear the selection.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-pipe-and-cancel
|
.Ic copy-pipe-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar command
|
.Op Ar command
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -1882,11 +1893,13 @@ Same as
|
||||||
but also exit copy mode.
|
but also exit copy mode.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-selection
|
.Ic copy-selection
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Copies the current selection.
|
Copies the current selection.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-selection-no-clear
|
.Ic copy-selection-no-clear
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
.Xc
|
.Xc
|
||||||
Same as
|
Same as
|
||||||
|
@ -1894,6 +1907,7 @@ Same as
|
||||||
but do not clear the selection.
|
but do not clear the selection.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic copy-selection-and-cancel
|
.Ic copy-selection-and-cancel
|
||||||
|
.Op Fl CP
|
||||||
.Op Ar prefix
|
.Op Ar prefix
|
||||||
(vi: Enter)
|
(vi: Enter)
|
||||||
(emacs: M-w)
|
(emacs: M-w)
|
||||||
|
@ -2341,6 +2355,16 @@ variants of some commands exit copy mode after they have completed (for copy
|
||||||
commands) or when the cursor reaches the bottom (for scrolling commands).
|
commands) or when the cursor reaches the bottom (for scrolling commands).
|
||||||
.Ql -no-clear
|
.Ql -no-clear
|
||||||
variants do not clear the selection.
|
variants do not clear the selection.
|
||||||
|
All the copy commands can take the
|
||||||
|
.Fl C
|
||||||
|
and
|
||||||
|
.Fl P
|
||||||
|
flags.
|
||||||
|
The
|
||||||
|
.Fl C
|
||||||
|
flag suppresses setting the terminal clipboard when copying, while the
|
||||||
|
.Fl P
|
||||||
|
flag suppresses adding a paste buffer with the text.
|
||||||
.Pp
|
.Pp
|
||||||
The next and previous word keys skip over whitespace and treat consecutive
|
The next and previous word keys skip over whitespace and treat consecutive
|
||||||
runs of either word separators or other letters as words.
|
runs of either word separators or other letters as words.
|
||||||
|
@ -2557,7 +2581,7 @@ the end of the visible pane.
|
||||||
The default is to capture only the visible contents of the pane.
|
The default is to capture only the visible contents of the pane.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic choose-client
|
.Ic choose-client
|
||||||
.Op Fl NrZ
|
.Op Fl NryZ
|
||||||
.Op Fl F Ar format
|
.Op Fl F Ar format
|
||||||
.Op Fl f Ar filter
|
.Op Fl f Ar filter
|
||||||
.Op Fl K Ar key-format
|
.Op Fl K Ar key-format
|
||||||
|
@ -2573,6 +2597,8 @@ or the list may be navigated and an item chosen or otherwise manipulated using
|
||||||
the keys below.
|
the keys below.
|
||||||
.Fl Z
|
.Fl Z
|
||||||
zooms the pane.
|
zooms the pane.
|
||||||
|
.Fl y
|
||||||
|
disables any confirmation prompts.
|
||||||
The following keys may be used in client mode:
|
The following keys may be used in client mode:
|
||||||
.Bl -column "Key" "Function" -offset indent
|
.Bl -column "Key" "Function" -offset indent
|
||||||
.It Sy "Key" Ta Sy "Function"
|
.It Sy "Key" Ta Sy "Function"
|
||||||
|
@ -2631,7 +2657,7 @@ starts without the preview or if given twice with the larger preview.
|
||||||
This command works only if at least one client is attached.
|
This command works only if at least one client is attached.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic choose-tree
|
.Ic choose-tree
|
||||||
.Op Fl GNrswZ
|
.Op Fl GNrswyZ
|
||||||
.Op Fl F Ar format
|
.Op Fl F Ar format
|
||||||
.Op Fl f Ar filter
|
.Op Fl f Ar filter
|
||||||
.Op Fl K Ar key-format
|
.Op Fl K Ar key-format
|
||||||
|
@ -2651,6 +2677,8 @@ starts with sessions collapsed and
|
||||||
with windows collapsed.
|
with windows collapsed.
|
||||||
.Fl Z
|
.Fl Z
|
||||||
zooms the pane.
|
zooms the pane.
|
||||||
|
.Fl y
|
||||||
|
disables any confirmation prompts.
|
||||||
The following keys may be used in tree mode:
|
The following keys may be used in tree mode:
|
||||||
.Bl -column "Key" "Function" -offset indent
|
.Bl -column "Key" "Function" -offset indent
|
||||||
.It Sy "Key" Ta Sy "Function"
|
.It Sy "Key" Ta Sy "Function"
|
||||||
|
@ -4805,6 +4833,8 @@ see the
|
||||||
.Sx STYLES
|
.Sx STYLES
|
||||||
section.
|
section.
|
||||||
.Pp
|
.Pp
|
||||||
|
.It Ic copy-mode-position-format Ar format
|
||||||
|
Format of the position indicator in copy mode.
|
||||||
.It Xo Ic mode-keys
|
.It Xo Ic mode-keys
|
||||||
.Op Ic vi | emacs
|
.Op Ic vi | emacs
|
||||||
.Xc
|
.Xc
|
||||||
|
@ -5282,6 +5312,8 @@ Run when a new session created.
|
||||||
Run when a session closed.
|
Run when a session closed.
|
||||||
.It session-renamed
|
.It session-renamed
|
||||||
Run when a session is renamed.
|
Run when a session is renamed.
|
||||||
|
.It window-layout-changed
|
||||||
|
Run when a window layout is changed.
|
||||||
.It window-linked
|
.It window-linked
|
||||||
Run when a window is linked into a session.
|
Run when a window is linked into a session.
|
||||||
.It window-renamed
|
.It window-renamed
|
||||||
|
@ -6783,7 +6815,7 @@ The buffer commands are as follows:
|
||||||
.Bl -tag -width Ds
|
.Bl -tag -width Ds
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic choose-buffer
|
.Ic choose-buffer
|
||||||
.Op Fl NZr
|
.Op Fl NryZ
|
||||||
.Op Fl F Ar format
|
.Op Fl F Ar format
|
||||||
.Op Fl f Ar filter
|
.Op Fl f Ar filter
|
||||||
.Op Fl K Ar key-format
|
.Op Fl K Ar key-format
|
||||||
|
@ -6799,6 +6831,8 @@ or the list may be navigated and an item chosen or otherwise manipulated using
|
||||||
the keys below.
|
the keys below.
|
||||||
.Fl Z
|
.Fl Z
|
||||||
zooms the pane.
|
zooms the pane.
|
||||||
|
.Fl y
|
||||||
|
disables any confirmation prompts.
|
||||||
The following keys may be used in buffer mode:
|
The following keys may be used in buffer mode:
|
||||||
.Bl -column "Key" "Function" -offset indent
|
.Bl -column "Key" "Function" -offset indent
|
||||||
.It Sy "Key" Ta Sy "Function"
|
.It Sy "Key" Ta Sy "Function"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: tmux.h,v 1.1232 2024/10/02 11:48:16 nicm Exp $ */
|
/* $OpenBSD: tmux.h,v 1.1233 2024/10/04 19:16:13 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -1935,6 +1935,7 @@ struct client {
|
||||||
#define PROMPT_INCREMENTAL 0x4
|
#define PROMPT_INCREMENTAL 0x4
|
||||||
#define PROMPT_NOFORMAT 0x8
|
#define PROMPT_NOFORMAT 0x8
|
||||||
#define PROMPT_KEY 0x10
|
#define PROMPT_KEY 0x10
|
||||||
|
#define PROMPT_ACCEPT 0x20
|
||||||
int prompt_flags;
|
int prompt_flags;
|
||||||
enum prompt_type prompt_type;
|
enum prompt_type prompt_type;
|
||||||
int prompt_cursor;
|
int prompt_cursor;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: tty-keys.c,v 1.181 2024/10/03 05:41:59 nicm Exp $ */
|
/* $OpenBSD: tty-keys.c,v 1.182 2024/10/04 14:55:17 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -1069,7 +1069,7 @@ tty_keys_extended_key(struct tty *tty, const char *buf, size_t len,
|
||||||
nkey = number;
|
nkey = number;
|
||||||
|
|
||||||
/* Convert UTF-32 codepoint into internal representation. */
|
/* Convert UTF-32 codepoint into internal representation. */
|
||||||
if (nkey & ~0x7f) {
|
if (nkey != KEYC_BSPACE && nkey & ~0x7f) {
|
||||||
if (utf8_fromwc(nkey, &ud) == UTF8_DONE &&
|
if (utf8_fromwc(nkey, &ud) == UTF8_DONE &&
|
||||||
utf8_from_data(&ud, &uc) == UTF8_DONE)
|
utf8_from_data(&ud, &uc) == UTF8_DONE)
|
||||||
nkey = uc;
|
nkey = uc;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: window-customize.c,v 1.14 2022/03/24 12:07:25 nicm Exp $ */
|
/* $OpenBSD: window-customize.c,v 1.15 2024/10/04 19:16:13 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2020 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -101,6 +101,7 @@ struct window_customize_modedata {
|
||||||
struct mode_tree_data *data;
|
struct mode_tree_data *data;
|
||||||
char *format;
|
char *format;
|
||||||
int hide_global;
|
int hide_global;
|
||||||
|
int prompt_flags;
|
||||||
|
|
||||||
struct window_customize_itemdata **item_list;
|
struct window_customize_itemdata **item_list;
|
||||||
u_int item_size;
|
u_int item_size;
|
||||||
|
@ -885,6 +886,8 @@ window_customize_init(struct window_mode_entry *wme, struct cmd_find_state *fs,
|
||||||
data->format = xstrdup(WINDOW_CUSTOMIZE_DEFAULT_FORMAT);
|
data->format = xstrdup(WINDOW_CUSTOMIZE_DEFAULT_FORMAT);
|
||||||
else
|
else
|
||||||
data->format = xstrdup(args_get(args, 'F'));
|
data->format = xstrdup(args_get(args, 'F'));
|
||||||
|
if (args_has(args, 'y'))
|
||||||
|
data->prompt_flags = PROMPT_ACCEPT;
|
||||||
|
|
||||||
data->data = mode_tree_start(wp, args, window_customize_build,
|
data->data = mode_tree_start(wp, args, window_customize_build,
|
||||||
window_customize_draw, NULL, window_customize_menu,
|
window_customize_draw, NULL, window_customize_menu,
|
||||||
|
@ -1453,7 +1456,8 @@ window_customize_key(struct window_mode_entry *wme, struct client *c,
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_customize_change_current_callback,
|
window_customize_change_current_callback,
|
||||||
window_customize_free_callback, data,
|
window_customize_free_callback, data,
|
||||||
PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
|
@ -1466,7 +1470,8 @@ window_customize_key(struct window_mode_entry *wme, struct client *c,
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_customize_change_tagged_callback,
|
window_customize_change_tagged_callback,
|
||||||
window_customize_free_callback, data,
|
window_customize_free_callback, data,
|
||||||
PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
|
@ -1482,7 +1487,8 @@ window_customize_key(struct window_mode_entry *wme, struct client *c,
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_customize_change_current_callback,
|
window_customize_change_current_callback,
|
||||||
window_customize_free_callback, data,
|
window_customize_free_callback, data,
|
||||||
PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
|
@ -1495,7 +1501,8 @@ window_customize_key(struct window_mode_entry *wme, struct client *c,
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_customize_change_tagged_callback,
|
window_customize_change_tagged_callback,
|
||||||
window_customize_free_callback, data,
|
window_customize_free_callback, data,
|
||||||
PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'H':
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: window-tree.c,v 1.63 2023/06/30 21:55:09 nicm Exp $ */
|
/* $OpenBSD: window-tree.c,v 1.64 2024/10/04 19:16:13 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com>
|
* Copyright (c) 2017 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||||
|
@ -131,6 +131,7 @@ struct window_tree_modedata {
|
||||||
char *key_format;
|
char *key_format;
|
||||||
char *command;
|
char *command;
|
||||||
int squash_groups;
|
int squash_groups;
|
||||||
|
int prompt_flags;
|
||||||
|
|
||||||
struct window_tree_itemdata **item_list;
|
struct window_tree_itemdata **item_list;
|
||||||
u_int item_size;
|
u_int item_size;
|
||||||
|
@ -934,6 +935,8 @@ window_tree_init(struct window_mode_entry *wme, struct cmd_find_state *fs,
|
||||||
else
|
else
|
||||||
data->command = xstrdup(args_string(args, 0));
|
data->command = xstrdup(args_string(args, 0));
|
||||||
data->squash_groups = !args_has(args, 'G');
|
data->squash_groups = !args_has(args, 'G');
|
||||||
|
if (args_has(args, 'y'))
|
||||||
|
data->prompt_flags = PROMPT_ACCEPT;
|
||||||
|
|
||||||
data->data = mode_tree_start(wp, args, window_tree_build,
|
data->data = mode_tree_start(wp, args, window_tree_build,
|
||||||
window_tree_draw, window_tree_search, window_tree_menu, NULL,
|
window_tree_draw, window_tree_search, window_tree_menu, NULL,
|
||||||
|
@ -1305,7 +1308,8 @@ again:
|
||||||
data->references++;
|
data->references++;
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_tree_kill_current_callback, window_tree_command_free,
|
window_tree_kill_current_callback, window_tree_command_free,
|
||||||
data, PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
data, PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case 'X':
|
case 'X':
|
||||||
|
@ -1316,7 +1320,8 @@ again:
|
||||||
data->references++;
|
data->references++;
|
||||||
status_prompt_set(c, NULL, prompt, "",
|
status_prompt_set(c, NULL, prompt, "",
|
||||||
window_tree_kill_tagged_callback, window_tree_command_free,
|
window_tree_kill_tagged_callback, window_tree_command_free,
|
||||||
data, PROMPT_SINGLE|PROMPT_NOFORMAT, PROMPT_TYPE_COMMAND);
|
data, PROMPT_SINGLE|PROMPT_NOFORMAT|data->prompt_flags,
|
||||||
|
PROMPT_TYPE_COMMAND);
|
||||||
free(prompt);
|
free(prompt);
|
||||||
break;
|
break;
|
||||||
case ':':
|
case ':':
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue