diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | Completion/compinstall | 51 |
2 files changed, 55 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 2dbfd4335..a246cbfdc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2001-10-05 Peter Stephenson <pws@csr.com> + + * 15949: Completion/compinstall: add handling for expand style. + 2001-10-05 Oliver Kiddle <opk@zsh.org> * 15851, 15948: Src/builtin.c, Doc/Zsh/builtins.yo: add printf diff --git a/Completion/compinstall b/Completion/compinstall index 42ef0c330..389196aaf 100644 --- a/Completion/compinstall +++ b/Completion/compinstall @@ -1529,11 +1529,13 @@ completions? # squeeze-slashes, __ci_do_file_styles() { local key files cursor expand speciald ignorep squeezes select + local prefon suffon __ci_get_this_style file-sort files __ci_get_this_style ignore-parents ignorep __ci_get_this_style special-dirs speciald __ci_get_this_style squeeze-slashes squeezes + __ci_get_this_style expand expand while true; do clear @@ -1548,6 +1550,8 @@ __ci_do_file_styles() { 4. When expanding paths, \`foo//bar' is treated as \`foo/bar'. +5. Configure how multiple paths are expanded, e.g. /f/b -> /foo/bar + q. Return without saving. 0. Done setting options for filename completion. " @@ -1655,6 +1659,52 @@ one ([y]es, [n]o, [k]eep current setting)? ([nN]) squeezes=;; esac ;; + (5) if [[ $expand = *prefix* ]]; then + prefon=prefix + else + prefon= + fi + if [[ $expand = *suffix* ]]; then + suffon=suffix + else + suffon= + fi + print " +When expanding /f/b, the shell will attempt to match /f*/b* (e.g. /foo/bar), +and so on to any depth. If the first part of the expansion fails, by default +the shell will not expand the remainder. However, you can force it always +to expand the first part. Currently this feature is ${${prefon:+on}:-off}. +Do you want it on ([y]es, [n]o, [k]eep current setting)? +" + while true; do + read -k key'?--- Hit selection --- ' + [[ $key = [yYnNkK] ]] && break + print "Type one of y, n or k." + done + case $key in + ([yY]) prefon=prefix;; + ([nN]) prefon=prefix;; + esac + print " +Further, if /f*/b* is ambiguous, the shell will usually only expand +as far as the part that is unambiguous; for example, if /foo/bar and +/food/basket exist, it will wait for you to choose either /foo or /food, +and not attempt to expand the rest of the match. However, you can force +it to add all possible completions for you to resolve conflicts in the +normal way. Currently this feature is ${${suffon:+on}:-off}. +Do you want it on ([y]es, [n]o, [k]eep current settign)? +" + while true; do + read -k key'?--- Hit selection --- ' + [[ $key = [yYnNkK] ]] && break + print "Type one of y, n or k." + done + case $key in + ([yY]) suffon=suffix;; + ([nN]) suffon=suffix;; + esac + expand=${prefon:+$prefon${suffon:+ }}${suffon} + ;; (q) return 1 ;; esac @@ -1665,6 +1715,7 @@ one ([y]es, [n]o, [k]eep current setting)? __ci_set_this_style ignore-parents ignorep __ci_set_this_style special-dirs speciald __ci_set_this_style squeeze-slashes squeezes + __ci_set_this_style expand expand return 0 } |