From 86fcad5e6569f35adb1be9feb8d9da5f0b3372b7 Mon Sep 17 00:00:00 2001 From: rsteube Date: Thu, 13 Jul 2023 14:27:23 +0200 Subject: [PATCH] action: prefix - fix value handling - e.g. `carapace.ActionFiles().Prefix("file://")` --- action.go | 9 +++ docs/src/carapace/action/prefix.cast | 102 +++++++++++++++------------ docs/src/carapace/action/prefix.md | 6 +- example/cmd/modifier.go | 6 +- example/cmd/modifier_test.go | 30 ++++++++ 5 files changed, 96 insertions(+), 57 deletions(-) diff --git a/action.go b/action.go index 67086ea6..961109fc 100644 --- a/action.go +++ b/action.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "runtime" + "strings" "time" "github.com/rsteube/carapace/internal/cache" @@ -128,6 +129,14 @@ func (a Action) NoSpace(suffixes ...rune) Action { // carapace.ActionValues("melon", "drop", "fall").Prefix("water") func (a Action) Prefix(prefix string) Action { return ActionCallback(func(c Context) Action { + switch { + case strings.HasPrefix(c.Value, prefix): + c.Value = strings.TrimPrefix(c.Value, prefix) + case strings.HasPrefix(prefix, c.Value): + c.Value = "" + default: + return ActionValues() + } return a.Invoke(c).Prefix(prefix).ToA() }) } diff --git a/docs/src/carapace/action/prefix.cast b/docs/src/carapace/action/prefix.cast index 3501ac18..bff60dd9 100644 --- a/docs/src/carapace/action/prefix.cast +++ b/docs/src/carapace/action/prefix.cast @@ -1,47 +1,55 @@ -{"version": 2, "width": 108, "height": 24, "timestamp": 1688566269, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}} -[0.056957, "o", "\u001b[?7h\u001b[7m⏎\u001b[m \r \r\u001b[?7l\u001b[?2004h\u001b[?25l\r???> ???> \r\u001b[5C\u001b[?25h"] -[0.057709, "o", "\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"] -[0.072111, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"] -[0.072299, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace\u001b[0;m on \u001b[0;1;35m doc-update\u001b[0;m \u001b[0;1;31m[$!]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.4 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"] -[0.496779, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"] -[0.496896, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] -[0.497261, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] -[0.509038, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] -[0.50919, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] -[0.654767, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"] -[0.740991, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"] -[0.904113, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"] -[0.957707, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] -[1.074537, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[12C\u001b[?25h"] -[1.170095, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"] -[1.242821, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"] -[1.358988, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Cm\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"] -[1.437099, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Co\r\u001b[16C\u001b[?25h"] -[1.437567, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"] -[1.439896, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"] -[1.440129, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"] -[1.555507, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Cdifier \r\u001b[23C\u001b[?25h"] -[2.104454, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23C-\r\u001b[24C\u001b[?25h"] -[2.245374, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24C-\r\u001b[25C\u001b[?25h"] -[2.24588, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"] -[2.774179, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cp\r\u001b[26C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[26C\u001b[?25h"] -[2.88486, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[26Cr\r\u001b[27C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[27C\u001b[?25h"] -[3.130998, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[27Cefix \r\u001b[32C\u001b[?25h"] -[3.667567, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32Cwater\r\u001b[37C\u001b[?25h"] -[4.434503, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32C\u001b[K\u001b[0;4mwaterdrop \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mdrop\u001b[0;m fall melon\u001b[1A\r\u001b[22C\u001b[?25h"] -[6.272316, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mfall \r\n\r\n\u001b[0;m\u001b[Kdrop \u001b[0;7mfall\u001b[0;m melon\u001b[1A\r\u001b[22C\u001b[?25h"] -[7.77969, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[37C\u001b[K\u001b[0;4mmelon \r\n\r\n\u001b[6C\u001b[0;m\u001b[Kfall \u001b[0;7mmelon\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"] -[9.892044, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[32C\u001b[Kwatermelon \r\n\u001b[J\u001b[A\r\u001b[43C\u001b[?25h"] -[10.498365, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] -[10.499661, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] -[10.517766, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] -[10.51791, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] -[11.063615, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"] -[11.063696, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] -[11.227834, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"] -[11.404788, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h"] -[11.404864, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"] -[11.490781, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h"] -[11.491038, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"] -[11.606204, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h"] -[11.606283, "o", "\u001b[?7h\u001b[?2004l\r"] +{"version": 2, "width": 108, "height": 24, "timestamp": 1689251913, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}} +[0.067008, "o", "\u001b[?7h\u001b[7m⏎\u001b[m \r \r\u001b[?7l\u001b[?2004h\u001b[?25l\r???> ???> \r\u001b[5C\u001b[?25h"] +[0.06805, "o", "\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"] +[0.077461, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h"] +[0.07766, "o", "\u001b[?25l\r\u001b[K\r\n\u001b[0;1;36mcarapace/example\u001b[0;m on \u001b[0;1;35m action-prefix\u001b[0;m \u001b[0;1;31m[$?]\u001b[0;m via \u001b[0;1;36m🐹 v1.20.5 \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"] +[0.595493, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"] +[0.596478, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] +[0.608163, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] +[0.608304, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] +[0.771297, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"] +[0.897155, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h"] +[0.897453, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[9C\u001b[?25h"] +[1.008183, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"] +[1.057745, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h"] +[1.058931, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] +[1.059241, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] +[1.059622, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] +[1.060461, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] +[1.060529, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[11C\u001b[?25h"] +[1.237211, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h"] +[1.424847, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[13C\u001b[?25h"] +[1.595612, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[13C \r\u001b[14C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[14C\u001b[?25h"] +[1.742788, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[14Cm\r\u001b[15C\u001b[?25h"] +[1.742864, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[15C\u001b[?25h"] +[1.824182, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[15Co\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[16C\u001b[?25h"] +[1.962866, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[16Cdifier \r\u001b[23C\u001b[?25h"] +[2.263993, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[23C-\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[24C\u001b[?25h"] +[2.396336, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[24C-\r\u001b[25C\u001b[?25h"] +[2.396514, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[25C\u001b[?25h"] +[2.626554, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[25Cp\r\u001b[26C\u001b[?25h"] +[2.715719, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[26Cr\r\u001b[27C\u001b[?25h"] +[2.71598, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[27C\u001b[?25h"] +[2.924548, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[27Cefix \r\u001b[32C\u001b[?25h"] +[3.332851, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32Cfile://\r\u001b[39C\u001b[?25h"] +[3.850567, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32C\u001b[K\u001b[0;4mfile://README.md \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;38;2;255;184;108mREADME.md\u001b[0;m \u001b[0;38;2;189;147;249m_test/\u001b[0;m \u001b[0;38;2;189;147;249mcmd/\u001b[0;m \u001b[0;38;2;255;184;108mmain.go\u001b[0;m \u001b[0;38;2;255;184;108mmain_test.go\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"] +[4.581885, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[39C\u001b[K\u001b[0;4m_test/\r\n\r\n\u001b[0;m\u001b[K\u001b[0;38;2;255;184;108mREADME.md\u001b[0;m \u001b[0;7;38;2;189;147;249m_test/\u001b[0;m \u001b[0;38;2;189;147;249mcmd/\u001b[0;m \u001b[0;38;2;255;184;108mmain.go\u001b[0;m \u001b[0;38;2;255;184;108mmain_test.go\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"] +[4.75631, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[39C\u001b[K\u001b[0;4mcmd/\r\n\r\n\u001b[11C\u001b[0;m\u001b[K\u001b[0;38;2;189;147;249m_test/\u001b[0;m \u001b[0;7;38;2;189;147;249mcmd/\u001b[0;m \u001b[0;38;2;255;184;108mmain.go\u001b[0;m \u001b[0;38;2;255;184;108mmain_test.go\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"] +[4.953955, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[32C\u001b[Kfile://cmd/\r\n\u001b[J\u001b[A\r\u001b[43C\u001b[?25h"] +[5.105939, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32C\u001b[K\u001b[0;4mfile://cmd/_test/\r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;38;2;189;147;249m_test/ \u001b[0;m \u001b[0;38;2;255;184;108mflag.go \u001b[0;m \u001b[0;38;2;255;184;108minterspersed_test.go\u001b[0;m \u001b[0;38;2;255;184;108mmultiparts_test.go\r\n\u001b[0;38;2;189;147;249m_test_files/ \u001b[0;m \u001b[0;38;2;255;184;108mhelp_test.go \u001b[0;m \u001b[0;38;2;255;184;108mmodifier.go \u001b[0;m \u001b[0;38;2;255;184;108mroot.go \r\naction.go \u001b[0;m \u001b[0;38;2;255;184;108minjection.go \u001b[0;m \u001b[0;38;2;255;184;108mmodifier_test.go \u001b[0;m \u001b[0;38;2;255;184;108mroot_test.go \r\naction_test.go\u001b[0;m \u001b[0;38;2;255;184;108minterspersed.go\u001b[0;m \u001b[0;38;2;255;184;108mmultiparts.go \u001b[0;m \u001b[0;38;2;255;184;108mspecial.go \u001b[0;m\u001b[4A\r\u001b[22C\u001b[?25h"] +[5.106801, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[4A\r\u001b[22C\u001b[?25h"] +[5.107167, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u001b[4A\r\u001b[22C\u001b[?25h"] +[5.745288, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[48C\u001b[K\u001b[0;4m_files/\r\n\r\n\u001b[0;m\u001b[K\u001b[0;38;2;189;147;249m_test/ \u001b[0;m \u001b[0;38;2;255;184;108mflag.go \u001b[0;m \u001b[0;38;2;255;184;108minterspersed_test.go\u001b[0;m \u001b[0;38;2;255;184;108mmultiparts_test.go\r\n\u001b[0;m\u001b[K\u001b[0;7;38;2;189;147;249m_test_files/ \u001b[0;m \u001b[0;38;2;255;184;108mhelp_test.go \u001b[0;m \u001b[0;38;2;255;184;108mmodifier.go \u001b[0;m \u001b[0;38;2;255;184;108mroot.go \r\n\r\n\u001b[0;m\u001b[4A\r\u001b[22C\u001b[?25h"] +[6.225643, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[32C\u001b[Kfile://cmd/_test_files/\r\n\u001b[J\u001b[A\r\u001b[55C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[55C\u001b[?25h"] +[6.67073, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[32C\u001b[K\u001b[0;4mfile://cmd/_test_files/files_linux.go \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;38;2;255;184;108mfiles_linux.go\u001b[0;m \u001b[0;38;2;255;184;108mgo.mod\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"] +[7.578326, "o", "\u001b[?25l\u001b[3A\r\r\n\r\n\u001b[32C\u001b[Kfile://cmd/_test_files/files_linux.go \r\n\u001b[J\u001b[A\r\u001b[70C\u001b[?25h"] +[7.578411, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[70C\u001b[?25h"] +[9.138121, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] +[9.138685, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] +[9.157986, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[6C\u001b[?25h"] +[9.674165, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h"] +[9.674261, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[7C\u001b[?25h"] +[9.882009, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[8C\u001b[?25h"] +[10.049316, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h"] +[10.169171, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[2A\r\r\n\r\n\r\u001b[10C\u001b[?25h"] +[10.32004, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"] diff --git a/docs/src/carapace/action/prefix.md b/docs/src/carapace/action/prefix.md index 9e847a57..14684837 100644 --- a/docs/src/carapace/action/prefix.md +++ b/docs/src/carapace/action/prefix.md @@ -3,11 +3,7 @@ [`Prefix`] adds a prefix to the inserted values. ```go -carapace.ActionValues( - "melon", - "drop", - "fall", -).Prefix("water") +carapace.ActionFiles().Prefix("file://") ``` ![](./prefix.cast) diff --git a/example/cmd/modifier.go b/example/cmd/modifier.go index 8a288cb9..e9b775ce 100644 --- a/example/cmd/modifier.go +++ b/example/cmd/modifier.go @@ -125,11 +125,7 @@ func init() { "dir/subdir1/fileB.txt", "dir/subdir2/fileC.txt", ).MultiParts("/"), - "prefix": carapace.ActionValues( - "melon", - "drop", - "fall", - ).Prefix("water"), + "prefix": carapace.ActionFiles().Prefix("file://"), "retain": carapace.ActionValuesDescribed( "1", "one", "2", "two", diff --git a/example/cmd/modifier_test.go b/example/cmd/modifier_test.go index 7075dd4e..86369eeb 100644 --- a/example/cmd/modifier_test.go +++ b/example/cmd/modifier_test.go @@ -122,3 +122,33 @@ func TestMultiParts(t *testing.T) { Usage("MultiParts()")) }) } + +func TestPrefix(t *testing.T) { + sandbox.Package(t, "github.com/rsteube/carapace/example")(func(s *sandbox.Sandbox) { + s.Files("subdir/file1.txt", "") + + s.Run("modifier", "--prefix", ""). + Expect(carapace.ActionValues("subdir/"). + StyleF(style.ForPath). + Prefix("file://"). + NoSpace('/'). + Usage("Prefix()"). + Tag("files")) + + s.Run("modifier", "--prefix", "file"). + Expect(carapace.ActionValues("subdir/"). + StyleF(style.ForPath). + Prefix("file://"). + NoSpace('/'). + Usage("Prefix()"). + Tag("files")) + + s.Run("modifier", "--prefix", "file://subdir/f"). + Expect(carapace.ActionValues("file1.txt"). + StyleF(style.ForPath). + Prefix("file://subdir/"). + NoSpace('/'). + Usage("Prefix()"). + Tag("files")) + }) +}