m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-15 06:43:47 -05:00

Add enable-raw and disable-raw actions

This commit is contained in:
Junegunn Choi
2025-09-29 18:42:50 +09:00
parent ba945f1bf9
commit 2f03c5d10f
5 changed files with 138 additions and 103 deletions

View File

@@ -1846,10 +1846,12 @@ A key or an event can be bound to one or more of the following actions.
\fBdelete\-char/eof\fR \fIctrl\-d\fR (same as \fBdelete\-char\fR except aborts fzf if query is empty) \fBdelete\-char/eof\fR \fIctrl\-d\fR (same as \fBdelete\-char\fR except aborts fzf if query is empty)
\fBdeselect\fR \fBdeselect\fR
\fBdeselect\-all\fR (deselect all matches; to also clear non-matching selections, use \fBclear\-multi\fR) \fBdeselect\-all\fR (deselect all matches; to also clear non-matching selections, use \fBclear\-multi\fR)
\fBdisable\-raw\fR (disable raw mode)
\fBdisable\-search\fR (disable search functionality) \fBdisable\-search\fR (disable search functionality)
\fBdown\fR \fIctrl\-j down\fR \fBdown\fR \fIctrl\-j down\fR
\fBdown\-match\fR \fIctrl\-n\fR \fIalt\-down\fR (move to the match below the cursor) \fBdown\-match\fR \fIctrl\-n\fR \fIalt\-down\fR (move to the match below the cursor)
\fBdown\-selected\fR (move to the selected item below the cursor) \fBdown\-selected\fR (move to the selected item below the cursor)
\fBenable\-raw\fR (enable raw mode)
\fBenable\-search\fR (enable search functionality) \fBenable\-search\fR (enable search functionality)
\fBend\-of\-line\fR \fIctrl\-e end\fR \fBend\-of\-line\fR \fIctrl\-e end\fR
\fBexclude\fR (exclude the current item from the result) \fBexclude\fR (exclude the current item from the result)
@@ -1915,7 +1917,7 @@ A key or an event can be bound to one or more of the following actions.
\fBtoggle\-multi\-line\fR \fBtoggle\-multi\-line\fR
\fBtoggle\-preview\fR \fBtoggle\-preview\fR
\fBtoggle\-preview\-wrap\fR \fBtoggle\-preview\-wrap\fR
\fBtoggle\-raw\fR \fBtoggle\-raw\fR (toggle raw mode for displaying non-matching items)
\fBtoggle\-search\fR (toggle search functionality) \fBtoggle\-search\fR (toggle search functionality)
\fBtoggle\-sort\fR \fBtoggle\-sort\fR
\fBtoggle\-track\fR (toggle global tracking option (\fB\-\-track\fR)) \fBtoggle\-track\fR (toggle global tracking option (\fB\-\-track\fR))

View File

@@ -78,108 +78,110 @@ func _() {
_ = x[actToggleMultiLine-67] _ = x[actToggleMultiLine-67]
_ = x[actToggleHscroll-68] _ = x[actToggleHscroll-68]
_ = x[actToggleRaw-69] _ = x[actToggleRaw-69]
_ = x[actTrackCurrent-70] _ = x[actEnableRaw-70]
_ = x[actToggleInput-71] _ = x[actDisableRaw-71]
_ = x[actHideInput-72] _ = x[actTrackCurrent-72]
_ = x[actShowInput-73] _ = x[actToggleInput-73]
_ = x[actUntrackCurrent-74] _ = x[actHideInput-74]
_ = x[actDown-75] _ = x[actShowInput-75]
_ = x[actDownMatch-76] _ = x[actUntrackCurrent-76]
_ = x[actUp-77] _ = x[actDown-77]
_ = x[actUpMatch-78] _ = x[actDownMatch-78]
_ = x[actPageUp-79] _ = x[actUp-79]
_ = x[actPageDown-80] _ = x[actUpMatch-80]
_ = x[actPosition-81] _ = x[actPageUp-81]
_ = x[actHalfPageUp-82] _ = x[actPageDown-82]
_ = x[actHalfPageDown-83] _ = x[actPosition-83]
_ = x[actOffsetUp-84] _ = x[actHalfPageUp-84]
_ = x[actOffsetDown-85] _ = x[actHalfPageDown-85]
_ = x[actOffsetMiddle-86] _ = x[actOffsetUp-86]
_ = x[actJump-87] _ = x[actOffsetDown-87]
_ = x[actJumpAccept-88] _ = x[actOffsetMiddle-88]
_ = x[actPrintQuery-89] _ = x[actJump-89]
_ = x[actRefreshPreview-90] _ = x[actJumpAccept-90]
_ = x[actReplaceQuery-91] _ = x[actPrintQuery-91]
_ = x[actToggleSort-92] _ = x[actRefreshPreview-92]
_ = x[actShowPreview-93] _ = x[actReplaceQuery-93]
_ = x[actHidePreview-94] _ = x[actToggleSort-94]
_ = x[actTogglePreview-95] _ = x[actShowPreview-95]
_ = x[actTogglePreviewWrap-96] _ = x[actHidePreview-96]
_ = x[actTransform-97] _ = x[actTogglePreview-97]
_ = x[actTransformBorderLabel-98] _ = x[actTogglePreviewWrap-98]
_ = x[actTransformGhost-99] _ = x[actTransform-99]
_ = x[actTransformHeader-100] _ = x[actTransformBorderLabel-100]
_ = x[actTransformFooter-101] _ = x[actTransformGhost-101]
_ = x[actTransformHeaderLabel-102] _ = x[actTransformHeader-102]
_ = x[actTransformFooterLabel-103] _ = x[actTransformFooter-103]
_ = x[actTransformInputLabel-104] _ = x[actTransformHeaderLabel-104]
_ = x[actTransformListLabel-105] _ = x[actTransformFooterLabel-105]
_ = x[actTransformNth-106] _ = x[actTransformInputLabel-106]
_ = x[actTransformPointer-107] _ = x[actTransformListLabel-107]
_ = x[actTransformPreviewLabel-108] _ = x[actTransformNth-108]
_ = x[actTransformPrompt-109] _ = x[actTransformPointer-109]
_ = x[actTransformQuery-110] _ = x[actTransformPreviewLabel-110]
_ = x[actTransformSearch-111] _ = x[actTransformPrompt-111]
_ = x[actTrigger-112] _ = x[actTransformQuery-112]
_ = x[actBgTransform-113] _ = x[actTransformSearch-113]
_ = x[actBgTransformBorderLabel-114] _ = x[actTrigger-114]
_ = x[actBgTransformGhost-115] _ = x[actBgTransform-115]
_ = x[actBgTransformHeader-116] _ = x[actBgTransformBorderLabel-116]
_ = x[actBgTransformFooter-117] _ = x[actBgTransformGhost-117]
_ = x[actBgTransformHeaderLabel-118] _ = x[actBgTransformHeader-118]
_ = x[actBgTransformFooterLabel-119] _ = x[actBgTransformFooter-119]
_ = x[actBgTransformInputLabel-120] _ = x[actBgTransformHeaderLabel-120]
_ = x[actBgTransformListLabel-121] _ = x[actBgTransformFooterLabel-121]
_ = x[actBgTransformNth-122] _ = x[actBgTransformInputLabel-122]
_ = x[actBgTransformPointer-123] _ = x[actBgTransformListLabel-123]
_ = x[actBgTransformPreviewLabel-124] _ = x[actBgTransformNth-124]
_ = x[actBgTransformPrompt-125] _ = x[actBgTransformPointer-125]
_ = x[actBgTransformQuery-126] _ = x[actBgTransformPreviewLabel-126]
_ = x[actBgTransformSearch-127] _ = x[actBgTransformPrompt-127]
_ = x[actBgCancel-128] _ = x[actBgTransformQuery-128]
_ = x[actSearch-129] _ = x[actBgTransformSearch-129]
_ = x[actPreview-130] _ = x[actBgCancel-130]
_ = x[actPreviewTop-131] _ = x[actSearch-131]
_ = x[actPreviewBottom-132] _ = x[actPreview-132]
_ = x[actPreviewUp-133] _ = x[actPreviewTop-133]
_ = x[actPreviewDown-134] _ = x[actPreviewBottom-134]
_ = x[actPreviewPageUp-135] _ = x[actPreviewUp-135]
_ = x[actPreviewPageDown-136] _ = x[actPreviewDown-136]
_ = x[actPreviewHalfPageUp-137] _ = x[actPreviewPageUp-137]
_ = x[actPreviewHalfPageDown-138] _ = x[actPreviewPageDown-138]
_ = x[actPrevHistory-139] _ = x[actPreviewHalfPageUp-139]
_ = x[actPrevSelected-140] _ = x[actPreviewHalfPageDown-140]
_ = x[actPrint-141] _ = x[actPrevHistory-141]
_ = x[actPut-142] _ = x[actPrevSelected-142]
_ = x[actNextHistory-143] _ = x[actPrint-143]
_ = x[actNextSelected-144] _ = x[actPut-144]
_ = x[actExecute-145] _ = x[actNextHistory-145]
_ = x[actExecuteSilent-146] _ = x[actNextSelected-146]
_ = x[actExecuteMulti-147] _ = x[actExecute-147]
_ = x[actSigStop-148] _ = x[actExecuteSilent-148]
_ = x[actFirst-149] _ = x[actExecuteMulti-149]
_ = x[actLast-150] _ = x[actSigStop-150]
_ = x[actReload-151] _ = x[actFirst-151]
_ = x[actReloadSync-152] _ = x[actLast-152]
_ = x[actDisableSearch-153] _ = x[actReload-153]
_ = x[actEnableSearch-154] _ = x[actReloadSync-154]
_ = x[actSelect-155] _ = x[actDisableSearch-155]
_ = x[actDeselect-156] _ = x[actEnableSearch-156]
_ = x[actUnbind-157] _ = x[actSelect-157]
_ = x[actRebind-158] _ = x[actDeselect-158]
_ = x[actToggleBind-159] _ = x[actUnbind-159]
_ = x[actBecome-160] _ = x[actRebind-160]
_ = x[actShowHeader-161] _ = x[actToggleBind-161]
_ = x[actHideHeader-162] _ = x[actBecome-162]
_ = x[actBell-163] _ = x[actShowHeader-163]
_ = x[actExclude-164] _ = x[actHideHeader-164]
_ = x[actExcludeMulti-165] _ = x[actBell-165]
_ = x[actAsync-166] _ = x[actExclude-166]
_ = x[actExcludeMulti-167]
_ = x[actAsync-168]
} }
const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactBackwardSubWordactCancelactChangeBorderLabelactChangeGhostactChangeHeaderactChangeFooteractChangeHeaderLabelactChangeFooterLabelactChangeInputLabelactChangeListLabelactChangeMultiactChangeNthactChangePointeractChangePreviewactChangePreviewLabelactChangePreviewWindowactChangePromptactChangeQueryactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactForwardSubWordactKillLineactKillWordactKillSubWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactBackwardKillSubWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleMultiLineactToggleHscrollactToggleRawactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactDownMatchactUpactUpMatchactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTransformactTransformBorderLabelactTransformGhostactTransformHeaderactTransformFooteractTransformHeaderLabelactTransformFooterLabelactTransformInputLabelactTransformListLabelactTransformNthactTransformPointeractTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactTriggeractBgTransformactBgTransformBorderLabelactBgTransformGhostactBgTransformHeaderactBgTransformFooteractBgTransformHeaderLabelactBgTransformFooterLabelactBgTransformInputLabelactBgTransformListLabelactBgTransformNthactBgTransformPointeractBgTransformPreviewLabelactBgTransformPromptactBgTransformQueryactBgTransformSearchactBgCancelactSearchactPreviewactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMultiactAsync" const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactBackwardSubWordactCancelactChangeBorderLabelactChangeGhostactChangeHeaderactChangeFooteractChangeHeaderLabelactChangeFooterLabelactChangeInputLabelactChangeListLabelactChangeMultiactChangeNthactChangePointeractChangePreviewactChangePreviewLabelactChangePreviewWindowactChangePromptactChangeQueryactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactForwardSubWordactKillLineactKillWordactKillSubWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactBackwardKillSubWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleMultiLineactToggleHscrollactToggleRawactEnableRawactDisableRawactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactDownMatchactUpactUpMatchactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTransformactTransformBorderLabelactTransformGhostactTransformHeaderactTransformFooteractTransformHeaderLabelactTransformFooterLabelactTransformInputLabelactTransformListLabelactTransformNthactTransformPointeractTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactTriggeractBgTransformactBgTransformBorderLabelactBgTransformGhostactBgTransformHeaderactBgTransformFooteractBgTransformHeaderLabelactBgTransformFooterLabelactBgTransformInputLabelactBgTransformListLabelactBgTransformNthactBgTransformPointeractBgTransformPreviewLabelactBgTransformPromptactBgTransformQueryactBgTransformSearchactBgCancelactSearchactPreviewactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMultiactAsync"
var _actionType_index = [...]uint16{0, 9, 17, 25, 35, 57, 77, 84, 92, 110, 118, 127, 144, 165, 180, 201, 225, 240, 258, 267, 287, 301, 316, 331, 351, 371, 390, 408, 422, 434, 450, 466, 487, 509, 524, 538, 552, 565, 582, 590, 603, 619, 631, 639, 653, 667, 684, 695, 706, 720, 738, 755, 762, 781, 803, 815, 829, 838, 853, 865, 878, 889, 900, 912, 926, 947, 962, 975, 993, 1009, 1021, 1036, 1050, 1062, 1074, 1091, 1098, 1110, 1115, 1125, 1134, 1145, 1156, 1169, 1184, 1195, 1208, 1223, 1230, 1243, 1256, 1273, 1288, 1301, 1315, 1329, 1345, 1365, 1377, 1400, 1417, 1435, 1453, 1476, 1499, 1521, 1542, 1557, 1576, 1600, 1618, 1635, 1653, 1663, 1677, 1702, 1721, 1741, 1761, 1786, 1811, 1835, 1858, 1875, 1896, 1922, 1942, 1961, 1981, 1992, 2001, 2011, 2024, 2040, 2052, 2066, 2082, 2100, 2120, 2142, 2156, 2171, 2179, 2185, 2199, 2214, 2224, 2240, 2255, 2265, 2273, 2280, 2289, 2302, 2318, 2333, 2342, 2353, 2362, 2371, 2384, 2393, 2406, 2419, 2426, 2436, 2451, 2459} var _actionType_index = [...]uint16{0, 9, 17, 25, 35, 57, 77, 84, 92, 110, 118, 127, 144, 165, 180, 201, 225, 240, 258, 267, 287, 301, 316, 331, 351, 371, 390, 408, 422, 434, 450, 466, 487, 509, 524, 538, 552, 565, 582, 590, 603, 619, 631, 639, 653, 667, 684, 695, 706, 720, 738, 755, 762, 781, 803, 815, 829, 838, 853, 865, 878, 889, 900, 912, 926, 947, 962, 975, 993, 1009, 1021, 1033, 1046, 1061, 1075, 1087, 1099, 1116, 1123, 1135, 1140, 1150, 1159, 1170, 1181, 1194, 1209, 1220, 1233, 1248, 1255, 1268, 1281, 1298, 1313, 1326, 1340, 1354, 1370, 1390, 1402, 1425, 1442, 1460, 1478, 1501, 1524, 1546, 1567, 1582, 1601, 1625, 1643, 1660, 1678, 1688, 1702, 1727, 1746, 1766, 1786, 1811, 1836, 1860, 1883, 1900, 1921, 1947, 1967, 1986, 2006, 2017, 2026, 2036, 2049, 2065, 2077, 2091, 2107, 2125, 2145, 2167, 2181, 2196, 2204, 2210, 2224, 2239, 2249, 2265, 2280, 2290, 2298, 2305, 2314, 2327, 2343, 2358, 2367, 2378, 2387, 2396, 2409, 2418, 2431, 2444, 2451, 2461, 2476, 2484}
func (i actionType) String() string { func (i actionType) String() string {
if i < 0 || i >= actionType(len(_actionType_index)-1) { if i < 0 || i >= actionType(len(_actionType_index)-1) {

View File

@@ -1750,6 +1750,10 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actToggleHscroll) appendAction(actToggleHscroll)
case "toggle-raw": case "toggle-raw":
appendAction(actToggleRaw) appendAction(actToggleRaw)
case "enable-raw":
appendAction(actEnableRaw)
case "disable-raw":
appendAction(actDisableRaw)
case "show-header": case "show-header":
appendAction(actShowHeader) appendAction(actShowHeader)
case "hide-header": case "hide-header":

View File

@@ -577,6 +577,8 @@ const (
actToggleMultiLine actToggleMultiLine
actToggleHscroll actToggleHscroll
actToggleRaw actToggleRaw
actEnableRaw
actDisableRaw
actTrackCurrent actTrackCurrent
actToggleInput actToggleInput
actHideInput actHideInput
@@ -6099,8 +6101,19 @@ func (t *Terminal) Loop() error {
t.vmove(dir, true) t.vmove(dir, true)
} }
req(reqList) req(reqList)
case actToggleRaw, actEnableRaw, actDisableRaw:
prevRaw := t.raw
switch a.t {
case actEnableRaw:
t.raw = true
case actDisableRaw:
t.raw = false
case actToggleRaw: case actToggleRaw:
t.raw = !t.raw t.raw = !t.raw
}
if prevRaw == t.raw {
break
}
prevPos := t.cy - t.offset prevPos := t.cy - t.offset
prevIndex := t.currentIndex() prevIndex := t.currentIndex()
if t.raw { if t.raw {

View File

@@ -5,7 +5,7 @@ require_relative 'lib/common'
# Testing raw mode # Testing raw mode
class TestRaw < TestInteractive class TestRaw < TestInteractive
def test_raw_mode def test_raw_mode
tmux.send_keys %(seq 1000 | #{FZF} --raw --bind ctrl-x:toggle-raw --gutter '▌' --multi), :Enter tmux.send_keys %(seq 1000 | #{FZF} --raw --bind ctrl-x:toggle-raw,a:enable-raw,b:disable-raw --gutter '▌' --multi), :Enter
tmux.until { assert_equal 1000, it.match_count } tmux.until { assert_equal 1000, it.match_count }
tmux.send_keys 1 tmux.send_keys 1
@@ -56,5 +56,19 @@ class TestRaw < TestInteractive
assert_includes it, '▌ 110' assert_includes it, '▌ 110'
assert_includes it, '>>11' assert_includes it, '>>11'
end end
tmux.send_keys 'a'
tmux.until do
assert_equal 1, it.select_count
assert_includes it, '>>11'
assert_includes it, '▖ 10'
end
tmux.send_keys 'b'
tmux.until do
assert_equal 1, it.select_count
assert_includes it, '▌ 110'
assert_includes it, '>>11'
end
end end
end end