diff options
Diffstat (limited to 'Functions/Zle/cycle-completion-positions')
-rw-r--r-- | Functions/Zle/cycle-completion-positions | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Functions/Zle/cycle-completion-positions b/Functions/Zle/cycle-completion-positions new file mode 100644 index 000000000..34a2d8174 --- /dev/null +++ b/Functions/Zle/cycle-completion-positions @@ -0,0 +1,16 @@ +# This may be called after a completion that inserted the unambiguous +# (i.e. non-menu- and non-single-match-) string into the command line. +# If there are multiple positions in the string with missing or differing +# characters, repeatedly calling this widget cycles between all these +# positions. + +emulate -L zsh +setopt extendedglob + +local p="$_lastcomp[insert_positions]" + +if [[ $p = ((#s)|*:)${CURSOR}:* ]]; then + CURSOR=${${p#(|*:)${CURSOR}:}%%:*} +elif [[ -n $p ]]; then + CURSOR=${p%%:*} +fi |