Compare commits

...
1 Commits
Author SHA1 Message Date
Junegunn Choi 99bfd5aa0f Add change-info-command and transform variants
- change-info-command, transform-info-command, bg-transform-info-command
- change-info-command disallowed from remote --listen like change-preview

Close #4951
2026-11-02 22:14:08 +09:00
6 changed files with 220 additions and 159 deletions

No files matched your search

+7 -1
View File
@@ -1,8 +1,14 @@
CHANGELOG
=========
0.74.6
0.75.0
------
- Added `{change,transform,bg-transform}-info-command` actions (#4951) (@casperdcl)
```sh
seq 100 | fzf --info-command 'echo "mode: A | $FZF_INFO"' \
--bind 'ctrl-a:change-info-command:echo "mode: A | $FZF_INFO"' \
--bind 'ctrl-b:change-info-command:echo "mode: B | $FZF_INFO"'
```
- Fixed `--with-shell` on Windows not detecting cmd, PowerShell, and pwsh, which made fzf quote commands and entries for a POSIX shell (#4936) (@vimkim)
- e.g. With `--with-shell "cmd.exe /d /c"`, `--preview '"C:\Program Files\nu\bin\nu.exe" --version'` failed
- `transform-nth` and `transform-with-nth` (and their `bg-` variants) no longer split the output at `|`
+2
View File
@@ -2056,6 +2056,7 @@ A key or an event can be bound to one or more of the following actions.
\fBchange\-header(...)\fR (change header to the given string; doesn't affect \fB\-\-header\-lines\fR)
\fBchange\-header\-lines(N)\fR (change the number of \fB\-\-header\-lines\fR)
\fBchange\-header\-label(...)\fR (change \fB\-\-header\-label\fR to the given string)
\fBchange\-info\-command(...)\fR (change \fB\-\-info\-command\fR option)
\fBchange\-input\-label(...)\fR (change \fB\-\-input\-label\fR to the given string)
\fBchange\-list\-label(...)\fR (change \fB\-\-list\-label\fR to the given string)
\fBchange\-multi\fR (enable multi-select mode with no limit)
@@ -2164,6 +2165,7 @@ A key or an event can be bound to one or more of the following actions.
\fBtransform\-header(...)\fR (transform header using an external command)
\fBtransform\-header\-lines(...)\fR (transform the number of \fB\-\-header\-lines\fR using an external command)
\fBtransform\-header\-label(...)\fR (transform header label using an external command)
\fBtransform\-info\-command(...)\fR (transform \fB\-\-info\-command\fR using an external command)
\fBtransform\-input\-label(...)\fR (transform input label using an external command)
\fBtransform\-list\-label(...)\fR (transform list label using an external command)
\fBtransform\-nth(...)\fR (transform nth using an external command; see CHANGE NTH AND WITH\-NTH)
+161 -157
View File
@@ -34,168 +34,172 @@ func _() {
_ = x[actChangeFooter-23]
_ = x[actChangeHeaderLabel-24]
_ = x[actChangeFooterLabel-25]
_ = x[actChangeInputLabel-26]
_ = x[actChangeListLabel-27]
_ = x[actChangeMulti-28]
_ = x[actChangeNth-29]
_ = x[actChangeWithNth-30]
_ = x[actChangePointer-31]
_ = x[actChangePreview-32]
_ = x[actChangePreviewLabel-33]
_ = x[actChangePreviewWindow-34]
_ = x[actChangePrompt-35]
_ = x[actChangeQuery-36]
_ = x[actClearScreen-37]
_ = x[actClearQuery-38]
_ = x[actClearSelection-39]
_ = x[actClose-40]
_ = x[actDeleteChar-41]
_ = x[actDeleteCharEof-42]
_ = x[actEndOfLine-43]
_ = x[actFatal-44]
_ = x[actForwardChar-45]
_ = x[actForwardWord-46]
_ = x[actForwardSubWord-47]
_ = x[actKillLine-48]
_ = x[actKillWord-49]
_ = x[actKillSubWord-50]
_ = x[actUnixLineDiscard-51]
_ = x[actUnixWordRubout-52]
_ = x[actYank-53]
_ = x[actBackwardKillWord-54]
_ = x[actBackwardKillSubWord-55]
_ = x[actSelectAll-56]
_ = x[actDeselectAll-57]
_ = x[actToggle-58]
_ = x[actToggleSearch-59]
_ = x[actToggleAll-60]
_ = x[actToggleDown-61]
_ = x[actToggleUp-62]
_ = x[actToggleIn-63]
_ = x[actToggleOut-64]
_ = x[actToggleTrack-65]
_ = x[actToggleTrackCurrent-66]
_ = x[actToggleHeader-67]
_ = x[actToggleWrap-68]
_ = x[actToggleWrapWord-69]
_ = x[actToggleMultiLine-70]
_ = x[actToggleHscroll-71]
_ = x[actToggleRaw-72]
_ = x[actEnableRaw-73]
_ = x[actDisableRaw-74]
_ = x[actTrackCurrent-75]
_ = x[actToggleInput-76]
_ = x[actHideInput-77]
_ = x[actShowInput-78]
_ = x[actUntrackCurrent-79]
_ = x[actDown-80]
_ = x[actDownMatch-81]
_ = x[actUp-82]
_ = x[actUpMatch-83]
_ = x[actPageUp-84]
_ = x[actPageDown-85]
_ = x[actPosition-86]
_ = x[actHalfPageUp-87]
_ = x[actHalfPageDown-88]
_ = x[actOffsetUp-89]
_ = x[actOffsetDown-90]
_ = x[actOffsetMiddle-91]
_ = x[actJump-92]
_ = x[actJumpAccept-93]
_ = x[actPrintQuery-94]
_ = x[actRefreshPreview-95]
_ = x[actReplaceQuery-96]
_ = x[actToggleSort-97]
_ = x[actShowPreview-98]
_ = x[actHidePreview-99]
_ = x[actTogglePreview-100]
_ = x[actTogglePreviewWrap-101]
_ = x[actTogglePreviewWrapWord-102]
_ = x[actTransform-103]
_ = x[actTransformBorderLabel-104]
_ = x[actTransformGhost-105]
_ = x[actTransformHeader-106]
_ = x[actTransformHeaderLines-107]
_ = x[actTransformFooter-108]
_ = x[actTransformHeaderLabel-109]
_ = x[actTransformFooterLabel-110]
_ = x[actTransformInputLabel-111]
_ = x[actTransformListLabel-112]
_ = x[actTransformNth-113]
_ = x[actTransformWithNth-114]
_ = x[actTransformPointer-115]
_ = x[actTransformPreviewLabel-116]
_ = x[actTransformPrompt-117]
_ = x[actTransformQuery-118]
_ = x[actTransformSearch-119]
_ = x[actTrigger-120]
_ = x[actBgTransform-121]
_ = x[actBgTransformBorderLabel-122]
_ = x[actBgTransformGhost-123]
_ = x[actBgTransformHeader-124]
_ = x[actBgTransformHeaderLines-125]
_ = x[actBgTransformFooter-126]
_ = x[actBgTransformHeaderLabel-127]
_ = x[actBgTransformFooterLabel-128]
_ = x[actBgTransformInputLabel-129]
_ = x[actBgTransformListLabel-130]
_ = x[actBgTransformNth-131]
_ = x[actBgTransformWithNth-132]
_ = x[actBgTransformPointer-133]
_ = x[actBgTransformPreviewLabel-134]
_ = x[actBgTransformPrompt-135]
_ = x[actBgTransformQuery-136]
_ = x[actBgTransformSearch-137]
_ = x[actBgCancel-138]
_ = x[actSearch-139]
_ = x[actPreview-140]
_ = x[actPreviewTop-141]
_ = x[actPreviewBottom-142]
_ = x[actPreviewUp-143]
_ = x[actPreviewDown-144]
_ = x[actPreviewPageUp-145]
_ = x[actPreviewPageDown-146]
_ = x[actPreviewHalfPageUp-147]
_ = x[actPreviewHalfPageDown-148]
_ = x[actPrevHistory-149]
_ = x[actPrevSelected-150]
_ = x[actPrint-151]
_ = x[actPut-152]
_ = x[actNextHistory-153]
_ = x[actNextSelected-154]
_ = x[actExecute-155]
_ = x[actExecuteSilent-156]
_ = x[actExecuteMulti-157]
_ = x[actSigStop-158]
_ = x[actBest-159]
_ = x[actFirst-160]
_ = x[actLast-161]
_ = x[actReload-162]
_ = x[actReloadSync-163]
_ = x[actDisableSearch-164]
_ = x[actEnableSearch-165]
_ = x[actSelect-166]
_ = x[actDeselect-167]
_ = x[actUnbind-168]
_ = x[actRebind-169]
_ = x[actToggleBind-170]
_ = x[actBecome-171]
_ = x[actShowHeader-172]
_ = x[actHideHeader-173]
_ = x[actBell-174]
_ = x[actExclude-175]
_ = x[actExcludeMulti-176]
_ = x[actAsync-177]
_ = x[actWait-178]
_ = x[actChangeInfoCommand-26]
_ = x[actChangeInputLabel-27]
_ = x[actChangeListLabel-28]
_ = x[actChangeMulti-29]
_ = x[actChangeNth-30]
_ = x[actChangeWithNth-31]
_ = x[actChangePointer-32]
_ = x[actChangePreview-33]
_ = x[actChangePreviewLabel-34]
_ = x[actChangePreviewWindow-35]
_ = x[actChangePrompt-36]
_ = x[actChangeQuery-37]
_ = x[actClearScreen-38]
_ = x[actClearQuery-39]
_ = x[actClearSelection-40]
_ = x[actClose-41]
_ = x[actDeleteChar-42]
_ = x[actDeleteCharEof-43]
_ = x[actEndOfLine-44]
_ = x[actFatal-45]
_ = x[actForwardChar-46]
_ = x[actForwardWord-47]
_ = x[actForwardSubWord-48]
_ = x[actKillLine-49]
_ = x[actKillWord-50]
_ = x[actKillSubWord-51]
_ = x[actUnixLineDiscard-52]
_ = x[actUnixWordRubout-53]
_ = x[actYank-54]
_ = x[actBackwardKillWord-55]
_ = x[actBackwardKillSubWord-56]
_ = x[actSelectAll-57]
_ = x[actDeselectAll-58]
_ = x[actToggle-59]
_ = x[actToggleSearch-60]
_ = x[actToggleAll-61]
_ = x[actToggleDown-62]
_ = x[actToggleUp-63]
_ = x[actToggleIn-64]
_ = x[actToggleOut-65]
_ = x[actToggleTrack-66]
_ = x[actToggleTrackCurrent-67]
_ = x[actToggleHeader-68]
_ = x[actToggleWrap-69]
_ = x[actToggleWrapWord-70]
_ = x[actToggleMultiLine-71]
_ = x[actToggleHscroll-72]
_ = x[actToggleRaw-73]
_ = x[actEnableRaw-74]
_ = x[actDisableRaw-75]
_ = x[actTrackCurrent-76]
_ = x[actToggleInput-77]
_ = x[actHideInput-78]
_ = x[actShowInput-79]
_ = x[actUntrackCurrent-80]
_ = x[actDown-81]
_ = x[actDownMatch-82]
_ = x[actUp-83]
_ = x[actUpMatch-84]
_ = x[actPageUp-85]
_ = x[actPageDown-86]
_ = x[actPosition-87]
_ = x[actHalfPageUp-88]
_ = x[actHalfPageDown-89]
_ = x[actOffsetUp-90]
_ = x[actOffsetDown-91]
_ = x[actOffsetMiddle-92]
_ = x[actJump-93]
_ = x[actJumpAccept-94]
_ = x[actPrintQuery-95]
_ = x[actRefreshPreview-96]
_ = x[actReplaceQuery-97]
_ = x[actToggleSort-98]
_ = x[actShowPreview-99]
_ = x[actHidePreview-100]
_ = x[actTogglePreview-101]
_ = x[actTogglePreviewWrap-102]
_ = x[actTogglePreviewWrapWord-103]
_ = x[actTransform-104]
_ = x[actTransformBorderLabel-105]
_ = x[actTransformGhost-106]
_ = x[actTransformHeader-107]
_ = x[actTransformHeaderLines-108]
_ = x[actTransformFooter-109]
_ = x[actTransformHeaderLabel-110]
_ = x[actTransformFooterLabel-111]
_ = x[actTransformInfoCommand-112]
_ = x[actTransformInputLabel-113]
_ = x[actTransformListLabel-114]
_ = x[actTransformNth-115]
_ = x[actTransformWithNth-116]
_ = x[actTransformPointer-117]
_ = x[actTransformPreviewLabel-118]
_ = x[actTransformPrompt-119]
_ = x[actTransformQuery-120]
_ = x[actTransformSearch-121]
_ = x[actTrigger-122]
_ = x[actBgTransform-123]
_ = x[actBgTransformBorderLabel-124]
_ = x[actBgTransformGhost-125]
_ = x[actBgTransformHeader-126]
_ = x[actBgTransformHeaderLines-127]
_ = x[actBgTransformFooter-128]
_ = x[actBgTransformHeaderLabel-129]
_ = x[actBgTransformFooterLabel-130]
_ = x[actBgTransformInfoCommand-131]
_ = x[actBgTransformInputLabel-132]
_ = x[actBgTransformListLabel-133]
_ = x[actBgTransformNth-134]
_ = x[actBgTransformWithNth-135]
_ = x[actBgTransformPointer-136]
_ = x[actBgTransformPreviewLabel-137]
_ = x[actBgTransformPrompt-138]
_ = x[actBgTransformQuery-139]
_ = x[actBgTransformSearch-140]
_ = x[actBgCancel-141]
_ = x[actSearch-142]
_ = x[actPreview-143]
_ = x[actPreviewTop-144]
_ = x[actPreviewBottom-145]
_ = x[actPreviewUp-146]
_ = x[actPreviewDown-147]
_ = x[actPreviewPageUp-148]
_ = x[actPreviewPageDown-149]
_ = x[actPreviewHalfPageUp-150]
_ = x[actPreviewHalfPageDown-151]
_ = x[actPrevHistory-152]
_ = x[actPrevSelected-153]
_ = x[actPrint-154]
_ = x[actPut-155]
_ = x[actNextHistory-156]
_ = x[actNextSelected-157]
_ = x[actExecute-158]
_ = x[actExecuteSilent-159]
_ = x[actExecuteMulti-160]
_ = x[actSigStop-161]
_ = x[actBest-162]
_ = x[actFirst-163]
_ = x[actLast-164]
_ = x[actReload-165]
_ = x[actReloadSync-166]
_ = x[actDisableSearch-167]
_ = x[actEnableSearch-168]
_ = x[actSelect-169]
_ = x[actDeselect-170]
_ = x[actUnbind-171]
_ = x[actRebind-172]
_ = x[actToggleBind-173]
_ = x[actBecome-174]
_ = x[actShowHeader-175]
_ = x[actHideHeader-176]
_ = x[actBell-177]
_ = x[actExclude-178]
_ = x[actExcludeMulti-179]
_ = x[actAsync-180]
_ = x[actWait-181]
}
const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactBackwardSubWordactCancelactChangeBorderLabelactChangeGhostactChangeHeaderactChangeHeaderLinesactChangeFooteractChangeHeaderLabelactChangeFooterLabelactChangeInputLabelactChangeListLabelactChangeMultiactChangeNthactChangeWithNthactChangePointeractChangePreviewactChangePreviewLabelactChangePreviewWindowactChangePromptactChangeQueryactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactForwardSubWordactKillLineactKillWordactKillSubWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactBackwardKillSubWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleWrapWordactToggleMultiLineactToggleHscrollactToggleRawactEnableRawactDisableRawactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactDownMatchactUpactUpMatchactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTogglePreviewWrapWordactTransformactTransformBorderLabelactTransformGhostactTransformHeaderactTransformHeaderLinesactTransformFooteractTransformHeaderLabelactTransformFooterLabelactTransformInputLabelactTransformListLabelactTransformNthactTransformWithNthactTransformPointeractTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactTriggeractBgTransformactBgTransformBorderLabelactBgTransformGhostactBgTransformHeaderactBgTransformHeaderLinesactBgTransformFooteractBgTransformHeaderLabelactBgTransformFooterLabelactBgTransformInputLabelactBgTransformListLabelactBgTransformNthactBgTransformWithNthactBgTransformPointeractBgTransformPreviewLabelactBgTransformPromptactBgTransformQueryactBgTransformSearchactBgCancelactSearchactPreviewactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactBestactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMultiactAsyncactWait"
const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactBackwardSubWordactCancelactChangeBorderLabelactChangeGhostactChangeHeaderactChangeHeaderLinesactChangeFooteractChangeHeaderLabelactChangeFooterLabelactChangeInfoCommandactChangeInputLabelactChangeListLabelactChangeMultiactChangeNthactChangeWithNthactChangePointeractChangePreviewactChangePreviewLabelactChangePreviewWindowactChangePromptactChangeQueryactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactForwardSubWordactKillLineactKillWordactKillSubWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactBackwardKillSubWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleWrapWordactToggleMultiLineactToggleHscrollactToggleRawactEnableRawactDisableRawactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactDownMatchactUpactUpMatchactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTogglePreviewWrapWordactTransformactTransformBorderLabelactTransformGhostactTransformHeaderactTransformHeaderLinesactTransformFooteractTransformHeaderLabelactTransformFooterLabelactTransformInfoCommandactTransformInputLabelactTransformListLabelactTransformNthactTransformWithNthactTransformPointeractTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactTriggeractBgTransformactBgTransformBorderLabelactBgTransformGhostactBgTransformHeaderactBgTransformHeaderLinesactBgTransformFooteractBgTransformHeaderLabelactBgTransformFooterLabelactBgTransformInfoCommandactBgTransformInputLabelactBgTransformListLabelactBgTransformNthactBgTransformWithNthactBgTransformPointeractBgTransformPreviewLabelactBgTransformPromptactBgTransformQueryactBgTransformSearchactBgCancelactSearchactPreviewactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactBestactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMultiactAsyncactWait"
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, 336, 351, 371, 391, 410, 428, 442, 454, 470, 486, 502, 523, 545, 560, 574, 588, 601, 618, 626, 639, 655, 667, 675, 689, 703, 720, 731, 742, 756, 774, 791, 798, 817, 839, 851, 865, 874, 889, 901, 914, 925, 936, 948, 962, 983, 998, 1011, 1028, 1046, 1062, 1074, 1086, 1099, 1114, 1128, 1140, 1152, 1169, 1176, 1188, 1193, 1203, 1212, 1223, 1234, 1247, 1262, 1273, 1286, 1301, 1308, 1321, 1334, 1351, 1366, 1379, 1393, 1407, 1423, 1443, 1467, 1479, 1502, 1519, 1537, 1560, 1578, 1601, 1624, 1646, 1667, 1682, 1701, 1720, 1744, 1762, 1779, 1797, 1807, 1821, 1846, 1865, 1885, 1910, 1930, 1955, 1980, 2004, 2027, 2044, 2065, 2086, 2112, 2132, 2151, 2171, 2182, 2191, 2201, 2214, 2230, 2242, 2256, 2272, 2290, 2310, 2332, 2346, 2361, 2369, 2375, 2389, 2404, 2414, 2430, 2445, 2455, 2462, 2470, 2477, 2486, 2499, 2515, 2530, 2539, 2550, 2559, 2568, 2581, 2590, 2603, 2616, 2623, 2633, 2648, 2656, 2663}
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, 336, 351, 371, 391, 411, 430, 448, 462, 474, 490, 506, 522, 543, 565, 580, 594, 608, 621, 638, 646, 659, 675, 687, 695, 709, 723, 740, 751, 762, 776, 794, 811, 818, 837, 859, 871, 885, 894, 909, 921, 934, 945, 956, 968, 982, 1003, 1018, 1031, 1048, 1066, 1082, 1094, 1106, 1119, 1134, 1148, 1160, 1172, 1189, 1196, 1208, 1213, 1223, 1232, 1243, 1254, 1267, 1282, 1293, 1306, 1321, 1328, 1341, 1354, 1371, 1386, 1399, 1413, 1427, 1443, 1463, 1487, 1499, 1522, 1539, 1557, 1580, 1598, 1621, 1644, 1667, 1689, 1710, 1725, 1744, 1763, 1787, 1805, 1822, 1840, 1850, 1864, 1889, 1908, 1928, 1953, 1973, 1998, 2023, 2048, 2072, 2095, 2112, 2133, 2154, 2180, 2200, 2219, 2239, 2250, 2259, 2269, 2282, 2298, 2310, 2324, 2340, 2358, 2378, 2400, 2414, 2429, 2437, 2443, 2457, 2472, 2482, 2498, 2513, 2523, 2530, 2538, 2545, 2554, 2567, 2583, 2598, 2607, 2618, 2627, 2636, 2649, 2658, 2671, 2684, 2691, 2701, 2716, 2724, 2731}
func (i actionType) String() string {
if i < 0 || i >= actionType(len(_actionType_index)-1) {
idx := int(i) - 0
if i < 0 || idx >= len(_actionType_index)-1 {
return "actionType(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _actionType_name[_actionType_index[i]:_actionType_index[i+1]]
return _actionType_name[_actionType_index[idx]:_actionType_index[idx+1]]
}
+7 -1
View File
@@ -1672,7 +1672,7 @@ const (
func init() {
argActionRegexp = regexp.MustCompile(
`(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|bg-transform|transform)-(?:query|prompt|(?:border|list|preview|input|header|footer)-label|header-lines|header|footer|search|with-nth|nth|pointer|ghost)|bg-transform|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search|trigger)`)
`(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|bg-transform|transform)-(?:query|prompt|(?:border|list|preview|input|header|footer)-label|header-lines|header|footer|search|with-nth|nth|pointer|ghost|info-command)|bg-transform|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search|trigger)`)
splitRegexp = regexp.MustCompile("[,:]+")
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
}
@@ -2101,6 +2101,8 @@ func isExecuteAction(str string) actionType {
return actChangeHeaderLabel
case "change-footer-label":
return actChangeFooterLabel
case "change-info-command":
return actChangeInfoCommand
case "change-ghost":
return actChangeGhost
case "change-pointer":
@@ -2145,6 +2147,8 @@ func isExecuteAction(str string) actionType {
return actTransformHeaderLabel
case "transform-footer-label":
return actTransformFooterLabel
case "transform-info-command":
return actTransformInfoCommand
case "transform-footer":
return actTransformFooter
case "transform-header":
@@ -2179,6 +2183,8 @@ func isExecuteAction(str string) actionType {
return actBgTransformHeaderLabel
case "bg-transform-footer-label":
return actBgTransformFooterLabel
case "bg-transform-info-command":
return actBgTransformInfoCommand
case "bg-transform-footer":
return actBgTransformFooter
case "bg-transform-header":
+13
View File
@@ -589,6 +589,7 @@ const (
actChangeFooter
actChangeHeaderLabel
actChangeFooterLabel
actChangeInfoCommand
actChangeInputLabel
actChangeListLabel
actChangeMulti
@@ -676,6 +677,7 @@ const (
actTransformFooter
actTransformHeaderLabel
actTransformFooterLabel
actTransformInfoCommand
actTransformInputLabel
actTransformListLabel
actTransformNth
@@ -696,6 +698,7 @@ const (
actBgTransformFooter
actBgTransformHeaderLabel
actBgTransformFooterLabel
actBgTransformInfoCommand
actBgTransformInputLabel
actBgTransformListLabel
actBgTransformNth
@@ -764,6 +767,7 @@ func processExecution(action actionType) bool {
actTransformFooter,
actTransformHeaderLabel,
actTransformFooterLabel,
actTransformInfoCommand,
actTransformInputLabel,
actTransformListLabel,
actTransformNth,
@@ -781,6 +785,7 @@ func processExecution(action actionType) bool {
actBgTransformFooter,
actBgTransformHeaderLabel,
actBgTransformFooterLabel,
actBgTransformInfoCommand,
actBgTransformInputLabel,
actBgTransformListLabel,
actBgTransformNth,
@@ -792,6 +797,7 @@ func processExecution(action actionType) bool {
actBgTransformSearch,
actPreview,
actChangePreview,
actChangeInfoCommand,
actRefreshPreview,
actExecute,
actExecuteSilent,
@@ -7447,6 +7453,13 @@ func (t *Terminal) Loop() error {
t.footerLabel, t.footerLabelLen = t.ansiLabelPrinter(label, &tui.ColFooterLabel, false)
req(reqRedrawFooterLabel)
})
case actChangeInfoCommand, actTransformInfoCommand, actBgTransformInfoCommand:
capture(true, func(command string) {
if t.infoCommand != command {
t.infoCommand = command
req(reqInfo)
}
})
case actChangeInputLabel, actTransformInputLabel, actBgTransformInputLabel:
capture(true, func(label string) {
t.inputLabelOpts.label = label
+30
View File
@@ -1826,6 +1826,36 @@ class TestCore < TestInteractive
tmux.until { assert_match(/^ 2 xx/, it[-2]) }
end
def test_change_info_command
tmux.send_keys(%(seq 100 | #{FZF} --separator x --bind 'a:change-info-command(echo {}: $FZF_INFO)' --bind 'b:change-info-command()'), :Enter)
tmux.until { assert_match(%r{^ 100/100 xx}, it[-2]) }
tmux.send_keys :a
tmux.until { assert_match(%r{^ 1: 100/100 xx}, it[-2]) }
# Placeholders are evaluated on each update, not when the action runs
tmux.send_keys :Up
tmux.until { assert_match(%r{^ 2: 100/100 xx}, it[-2]) }
tmux.send_keys :b
tmux.until { assert_match(%r{^ 100/100 xx}, it[-2]) }
end
def test_transform_info_command
tmux.send_keys(%(seq 100 | #{FZF} --separator x --bind 'a:transform-info-command(echo "echo {}: \\$FZF_POS")'), :Enter)
tmux.until { assert_match(%r{^ 100/100 xx}, it[-2]) }
tmux.send_keys :a
tmux.until { assert_match(%r{^ 1: 1 xx}, it[-2]) }
tmux.send_keys :Up
tmux.until { assert_match(%r{^ 1: 2 xx}, it[-2]) }
end
def test_bg_transform_info_command
tmux.send_keys(%(seq 100 | #{FZF} --separator x --bind 'a:bg-transform-info-command(sleep 0.5; echo "echo {}: \\$FZF_POS")'), :Enter)
tmux.until { assert_match(%r{^ 100/100 xx}, it[-2]) }
tmux.send_keys :a
tmux.until { assert_match(%r{^ 1: 1 xx}, it[-2]) }
tmux.send_keys :Up
tmux.until { assert_match(%r{^ 1: 2 xx}, it[-2]) }
end
def test_prev_next_selected
tmux.send_keys 'seq 10 | fzf --multi --bind ctrl-n:next-selected,ctrl-p:prev-selected', :Enter
tmux.until { |lines| assert_equal 10, lines.match_count }