Skip to content

Commit

Permalink
Merge pull request #808 from rsteube/action-prefix
Browse files Browse the repository at this point in the history
action: prefix - fix value handling
  • Loading branch information
rsteube authored Jul 13, 2023
2 parents 0a19d22 + 86fcad5 commit 01cb29e
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 57 deletions.
9 changes: 9 additions & 0 deletions action.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"os"
"runtime"
"strings"
"time"

"github.com/rsteube/carapace/internal/cache"
Expand Down Expand Up @@ -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()
})
}
Expand Down
102 changes: 55 additions & 47 deletions docs/src/carapace/action/prefix.cast
Original file line number Diff line number Diff line change
@@ -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"]
6 changes: 1 addition & 5 deletions docs/src/carapace/action/prefix.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 1 addition & 5 deletions example/cmd/modifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
30 changes: 30 additions & 0 deletions example/cmd/modifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
})
}

0 comments on commit 01cb29e

Please sign in to comment.