From 044e8e054cbcc2c25fb95937add58b6fee15c61d Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 3 Jul 2000 14:00:44 +0000 Subject: [PATCH] 12140: make key rebinding for _expand complter easier --- ChangeLog | 5 +++++ Completion/Core/compinit | 9 +++++++++ Completion/Core/compinstall | 14 ++++++++------ Doc/Zsh/compsys.yo | 5 ++++- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3bdd52c57..438fd80a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2000-07-03 Peter Stephenson + * 12140: Completion/Core/compinit, Completion/Core/compinstall, + Doc/Zsh/compsys.yo: compinstall calls compinit after styles + are defined; compinit checks for _expand completer and if + necessary rebinds ^i to complete-word. + * Config/version.mk: 3.1.9-dev-2. * 12138: Src/params.c, Test/06arith.ztst: setting of array diff --git a/Completion/Core/compinit b/Completion/Core/compinit index 15eae2607..61128af01 100644 --- a/Completion/Core/compinit +++ b/Completion/Core/compinit @@ -452,6 +452,15 @@ for _i_line in complete-word delete-char-or-list expand-or-complete \ done zle -la menu-select && zle -C menu-select .menu-select _main_complete +# If the default completer set includes _expand, and tab is bound +# to expand-or-complete, rebind it to complete-word instead. +bindkey '^i' | read -A _i_line +if [[ ${_i_line[2]} = expand-or-complete ]] && + zstyle -a ':completion:' completer _i_line && + (( ${_i_line[(i)_expand]} <= ${#_i_line} )); then + bindkey '^i' complete-word +fi + unfunction compinit autoload -U compinit diff --git a/Completion/Core/compinstall b/Completion/Core/compinstall index 4b519354c..2f784fcc2 100644 --- a/Completion/Core/compinstall +++ b/Completion/Core/compinstall @@ -1727,17 +1727,19 @@ local tmpout=${TMPPREFIX:-/tmp/zsh}compinstall$$ # insert. # { print -r "$startline -autoload -U compinit -compinit" - - [[ -n $fpath_line ]] && print -r "$fpath_line" - - print -r "$output" +$output" if [[ -n $ifile ]]; then line="zstyle :compinstall filename ${(qq)ifile}" print -r "$line" eval "$line" fi + + [[ -n $fpath_line ]] && print -r "$fpath_line" + + print -r " +autoload -U compinit +compinit" + print -r "$endline" } >$tmpout diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index 73060c038..71a8351af 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -73,7 +73,10 @@ autoloaded, and will then re-define all widgets that do completion to use the new system. If you use the tt(menu-select) widget, which is part of the tt(zsh/complist) module, you should make sure that that module is loaded before the call to tt(compinit) to make sure that that widget is also -re-defined. +re-defined. If completion styles (see below) are set up to perform +expansion as well as completion by default, and the TAB key is bound to +tt(expand-or-complete), tt(compinit) will rebind it to tt(complete-word); +this is necessary to use the correct form of expansion. Should you need to use the original completion commands, you can still bind keys to the old widgets by putting a `tt(.)' in front of the