summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-03-28 21:27:44 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-03-28 21:28:25 +0900
commit664ee1f4832340ea301f9525cb2d4ce8fc7f12cd (patch)
treeb72270bcb3aec5ac80cee2fa1a5bbfea403a79cc /src
parentdac5b6fde1cb6242492e8d27cbea162e37517be0 (diff)
downloadfzf-664ee1f4832340ea301f9525cb2d4ce8fc7f12cd.tar.gz
Add change-pointer and transform-pointer
Close #4178
Diffstat (limited to 'src')
-rw-r--r--src/actiontype_string.go92
-rw-r--r--src/options.go6
-rw-r--r--src/terminal.go17
3 files changed, 69 insertions, 46 deletions
diff --git a/src/actiontype_string.go b/src/actiontype_string.go
index ce388e38..19b5ea72 100644
--- a/src/actiontype_string.go
+++ b/src/actiontype_string.go
@@ -99,54 +99,56 @@ func _() {
_ = x[actTransformHeader-88]
_ = x[actTransformHeaderLabel-89]
_ = x[actTransformNth-90]
- _ = x[actTransformPreviewLabel-91]
- _ = x[actTransformPrompt-92]
- _ = x[actTransformQuery-93]
- _ = x[actTransformSearch-94]
- _ = x[actSearch-95]
- _ = x[actPreview-96]
- _ = x[actChangePreview-97]
- _ = x[actChangePreviewWindow-98]
- _ = x[actPreviewTop-99]
- _ = x[actPreviewBottom-100]
- _ = x[actPreviewUp-101]
- _ = x[actPreviewDown-102]
- _ = x[actPreviewPageUp-103]
- _ = x[actPreviewPageDown-104]
- _ = x[actPreviewHalfPageUp-105]
- _ = x[actPreviewHalfPageDown-106]
- _ = x[actPrevHistory-107]
- _ = x[actPrevSelected-108]
- _ = x[actPrint-109]
- _ = x[actPut-110]
- _ = x[actNextHistory-111]
- _ = x[actNextSelected-112]
- _ = x[actExecute-113]
- _ = x[actExecuteSilent-114]
- _ = x[actExecuteMulti-115]
- _ = x[actSigStop-116]
- _ = x[actFirst-117]
- _ = x[actLast-118]
- _ = x[actReload-119]
- _ = x[actReloadSync-120]
- _ = x[actDisableSearch-121]
- _ = x[actEnableSearch-122]
- _ = x[actSelect-123]
- _ = x[actDeselect-124]
- _ = x[actUnbind-125]
- _ = x[actRebind-126]
- _ = x[actToggleBind-127]
- _ = x[actBecome-128]
- _ = x[actShowHeader-129]
- _ = x[actHideHeader-130]
- _ = x[actBell-131]
- _ = x[actExclude-132]
- _ = x[actExcludeMulti-133]
+ _ = x[actTransformPointer-91]
+ _ = x[actTransformPreviewLabel-92]
+ _ = x[actTransformPrompt-93]
+ _ = x[actTransformQuery-94]
+ _ = x[actTransformSearch-95]
+ _ = x[actSearch-96]
+ _ = x[actPreview-97]
+ _ = x[actChangePointer-98]
+ _ = x[actChangePreview-99]
+ _ = x[actChangePreviewWindow-100]
+ _ = x[actPreviewTop-101]
+ _ = x[actPreviewBottom-102]
+ _ = x[actPreviewUp-103]
+ _ = x[actPreviewDown-104]
+ _ = x[actPreviewPageUp-105]
+ _ = x[actPreviewPageDown-106]
+ _ = x[actPreviewHalfPageUp-107]
+ _ = x[actPreviewHalfPageDown-108]
+ _ = x[actPrevHistory-109]
+ _ = x[actPrevSelected-110]
+ _ = x[actPrint-111]
+ _ = x[actPut-112]
+ _ = x[actNextHistory-113]
+ _ = x[actNextSelected-114]
+ _ = x[actExecute-115]
+ _ = x[actExecuteSilent-116]
+ _ = x[actExecuteMulti-117]
+ _ = x[actSigStop-118]
+ _ = x[actFirst-119]
+ _ = x[actLast-120]
+ _ = x[actReload-121]
+ _ = x[actReloadSync-122]
+ _ = x[actDisableSearch-123]
+ _ = x[actEnableSearch-124]
+ _ = x[actSelect-125]
+ _ = x[actDeselect-126]
+ _ = x[actUnbind-127]
+ _ = x[actRebind-128]
+ _ = x[actToggleBind-129]
+ _ = x[actBecome-130]
+ _ = x[actShowHeader-131]
+ _ = x[actHideHeader-132]
+ _ = x[actBell-133]
+ _ = x[actExclude-134]
+ _ = x[actExcludeMulti-135]
}
-const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactCancelactChangeBorderLabelactChangeListLabelactChangeInputLabelactChangeHeaderactChangeHeaderLabelactChangeMultiactChangePreviewLabelactChangePromptactChangeQueryactChangeNthactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactKillLineactKillWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleMultiLineactToggleHscrollactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactUpactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTransformactTransformBorderLabelactTransformListLabelactTransformInputLabelactTransformHeaderactTransformHeaderLabelactTransformNthactTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactSearchactPreviewactChangePreviewactChangePreviewWindowactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMulti"
+const _actionType_name = "actIgnoreactStartactClickactInvalidactBracketedPasteBeginactBracketedPasteEndactCharactMouseactBeginningOfLineactAbortactAcceptactAcceptNonEmptyactAcceptOrPrintQueryactBackwardCharactBackwardDeleteCharactBackwardDeleteCharEofactBackwardWordactCancelactChangeBorderLabelactChangeListLabelactChangeInputLabelactChangeHeaderactChangeHeaderLabelactChangeMultiactChangePreviewLabelactChangePromptactChangeQueryactChangeNthactClearScreenactClearQueryactClearSelectionactCloseactDeleteCharactDeleteCharEofactEndOfLineactFatalactForwardCharactForwardWordactKillLineactKillWordactUnixLineDiscardactUnixWordRuboutactYankactBackwardKillWordactSelectAllactDeselectAllactToggleactToggleSearchactToggleAllactToggleDownactToggleUpactToggleInactToggleOutactToggleTrackactToggleTrackCurrentactToggleHeaderactToggleWrapactToggleMultiLineactToggleHscrollactTrackCurrentactToggleInputactHideInputactShowInputactUntrackCurrentactDownactUpactPageUpactPageDownactPositionactHalfPageUpactHalfPageDownactOffsetUpactOffsetDownactOffsetMiddleactJumpactJumpAcceptactPrintQueryactRefreshPreviewactReplaceQueryactToggleSortactShowPreviewactHidePreviewactTogglePreviewactTogglePreviewWrapactTransformactTransformBorderLabelactTransformListLabelactTransformInputLabelactTransformHeaderactTransformHeaderLabelactTransformNthactTransformPointeractTransformPreviewLabelactTransformPromptactTransformQueryactTransformSearchactSearchactPreviewactChangePointeractChangePreviewactChangePreviewWindowactPreviewTopactPreviewBottomactPreviewUpactPreviewDownactPreviewPageUpactPreviewPageDownactPreviewHalfPageUpactPreviewHalfPageDownactPrevHistoryactPrevSelectedactPrintactPutactNextHistoryactNextSelectedactExecuteactExecuteSilentactExecuteMultiactSigStopactFirstactLastactReloadactReloadSyncactDisableSearchactEnableSearchactSelectactDeselectactUnbindactRebindactToggleBindactBecomeactShowHeaderactHideHeaderactBellactExcludeactExcludeMulti"
-var _actionType_index = [...]uint16{0, 9, 17, 25, 35, 57, 77, 84, 92, 110, 118, 127, 144, 165, 180, 201, 225, 240, 249, 269, 287, 306, 321, 341, 355, 376, 391, 405, 417, 431, 444, 461, 469, 482, 498, 510, 518, 532, 546, 557, 568, 586, 603, 610, 629, 641, 655, 664, 679, 691, 704, 715, 726, 738, 752, 773, 788, 801, 819, 835, 850, 864, 876, 888, 905, 912, 917, 926, 937, 948, 961, 976, 987, 1000, 1015, 1022, 1035, 1048, 1065, 1080, 1093, 1107, 1121, 1137, 1157, 1169, 1192, 1213, 1235, 1253, 1276, 1291, 1315, 1333, 1350, 1368, 1377, 1387, 1403, 1425, 1438, 1454, 1466, 1480, 1496, 1514, 1534, 1556, 1570, 1585, 1593, 1599, 1613, 1628, 1638, 1654, 1669, 1679, 1687, 1694, 1703, 1716, 1732, 1747, 1756, 1767, 1776, 1785, 1798, 1807, 1820, 1833, 1840, 1850, 1865}
+var _actionType_index = [...]uint16{0, 9, 17, 25, 35, 57, 77, 84, 92, 110, 118, 127, 144, 165, 180, 201, 225, 240, 249, 269, 287, 306, 321, 341, 355, 376, 391, 405, 417, 431, 444, 461, 469, 482, 498, 510, 518, 532, 546, 557, 568, 586, 603, 610, 629, 641, 655, 664, 679, 691, 704, 715, 726, 738, 752, 773, 788, 801, 819, 835, 850, 864, 876, 888, 905, 912, 917, 926, 937, 948, 961, 976, 987, 1000, 1015, 1022, 1035, 1048, 1065, 1080, 1093, 1107, 1121, 1137, 1157, 1169, 1192, 1213, 1235, 1253, 1276, 1291, 1310, 1334, 1352, 1369, 1387, 1396, 1406, 1422, 1438, 1460, 1473, 1489, 1501, 1515, 1531, 1549, 1569, 1591, 1605, 1620, 1628, 1634, 1648, 1663, 1673, 1689, 1704, 1714, 1722, 1729, 1738, 1751, 1767, 1782, 1791, 1802, 1811, 1820, 1833, 1842, 1855, 1868, 1875, 1885, 1900}
func (i actionType) String() string {
if i < 0 || i >= actionType(len(_actionType_index)-1) {
diff --git a/src/options.go b/src/options.go
index 1f431c45..80e428e3 100644
--- a/src/options.go
+++ b/src/options.go
@@ -1404,7 +1404,7 @@ const (
func init() {
executeRegexp = regexp.MustCompile(
- `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|transform)-(?:query|prompt|(?:border|list|preview|input|header)-label|header|search|nth)|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search)`)
+ `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|transform)-(?:query|prompt|(?:border|list|preview|input|header)-label|header|search|nth|pointer)|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search)`)
splitRegexp = regexp.MustCompile("[,:]+")
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
}
@@ -1799,6 +1799,8 @@ func isExecuteAction(str string) actionType {
return actChangeInputLabel
case "change-header-label":
return actChangeHeaderLabel
+ case "change-pointer":
+ return actChangePointer
case "change-preview-window":
return actChangePreviewWindow
case "change-preview":
@@ -1839,6 +1841,8 @@ func isExecuteAction(str string) actionType {
return actTransformHeader
case "transform-nth":
return actTransformNth
+ case "transform-pointer":
+ return actTransformPointer
case "transform-prompt":
return actTransformPrompt
case "transform-query":
diff --git a/src/terminal.go b/src/terminal.go
index cd8d4924..ec6e5d9b 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -547,12 +547,14 @@ const (
actTransformHeader
actTransformHeaderLabel
actTransformNth
+ actTransformPointer
actTransformPreviewLabel
actTransformPrompt
actTransformQuery
actTransformSearch
actSearch
actPreview
+ actChangePointer
actChangePreview
actChangePreviewWindow
actPreviewTop
@@ -5951,6 +5953,21 @@ func (t *Terminal) Loop() error {
}
}
}
+ case actChangePointer, actTransformPointer:
+ pointer := a.a
+ if a.t == actTransformPointer {
+ pointer = t.captureLine(a.a)
+ }
+ length := uniseg.StringWidth(pointer)
+ if length <= 2 {
+ if length != t.pointerLen {
+ t.forceRerenderList()
+ }
+ t.pointer = pointer
+ t.pointerLen = length
+ t.pointerEmpty = strings.Repeat(" ", t.pointerLen)
+ req(reqList)
+ }
case actChangePreview:
if t.previewOpts.command != a.a {
t.previewOpts.command = a.a