From 5facfd32805831230f9b42b7ec9765e858b553a8 Mon Sep 17 00:00:00 2001 From: Matthew Martin Date: Thu, 4 Apr 2019 18:45:19 -0500 Subject: 44200 (tweaked): Completion: Append to precommands in _normal --- ChangeLog | 7 +++++++ Completion/Base/Core/_normal | 5 +++-- Completion/Linux/Command/_setsid | 4 +--- Completion/Zsh/Command/_builtin | 4 +--- Completion/Zsh/Command/_command | 5 +---- Completion/Zsh/Command/_exec | 4 +--- Completion/Zsh/Command/_precommand | 5 +---- Doc/Zsh/compsys.yo | 15 +++++++++++---- 8 files changed, 26 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1074d6a54..a0bceaca5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2019-04-04 Matthew Martin + * 44200 (tweaked): Completion/Base/Core/_normal, + Completion/Linux/Command/_setsid, + Completion/Zsh/Command/_builtin, + Completion/Zsh/Command/_command, Completion/Zsh/Command/_exec, + Completion/Zsh/Command/_precommand, Doc/Zsh/compsys.yo: Append + to precommands in _normal. + * 44199: Completion/Base/Core/_normal: Use zparseopts. 2019-04-01 dana diff --git a/Completion/Base/Core/_normal b/Completion/Base/Core/_normal index fe336e303..7732837ac 100644 --- a/Completion/Base/Core/_normal +++ b/Completion/Base/Core/_normal @@ -1,10 +1,11 @@ #compdef -command-line- -local _comp_command1 _comp_command2 _comp_command +local _comp_command1 _comp_command2 _comp_command precommand local -A opts -zparseopts -A opts -D - s +zparseopts -A opts -D - p+:-=precommand s (( $+opts[-s] )) || _compskip= +(( $#precommand )) && precommands+=(${precommand#-p}) # Check for a history reference to complete modifiers. # $PREFIX has a quoted form of the !, so we can't test that diff --git a/Completion/Linux/Command/_setsid b/Completion/Linux/Command/_setsid index a8107e582..f3aef500a 100644 --- a/Completion/Linux/Command/_setsid +++ b/Completion/Linux/Command/_setsid @@ -1,7 +1,5 @@ #compdef setsid -[[ $service == setsid ]] && precommands+=( setsid ) - _arguments -s -S -A '-*' : \ '(: * -)'{-h,--help}'[display help information]' \ '(: * -)'{-V,--version}'[display version information]' \ @@ -9,4 +7,4 @@ _arguments -s -S -A '-*' : \ '(-f --fork)'{-f,--fork}'[always fork]' \ '(-w --wait)'{-w,--wait}'[wait for program to exit, and use same return code]' \ '1: :_path_commands' \ - '*:: : _normal' + '*:: : _normal -p $service' diff --git a/Completion/Zsh/Command/_builtin b/Completion/Zsh/Command/_builtin index a77af9879..ffb7b8c8d 100644 --- a/Completion/Zsh/Command/_builtin +++ b/Completion/Zsh/Command/_builtin @@ -1,11 +1,9 @@ #compdef builtin -precommands+=(builtin) - if (( $CURRENT > 2 )); then shift words (( CURRENT -- )) - _normal + _normal -p $service else local expl diff --git a/Completion/Zsh/Command/_command b/Completion/Zsh/Command/_command index 4e2858676..7a59a2386 100644 --- a/Completion/Zsh/Command/_command +++ b/Completion/Zsh/Command/_command @@ -1,11 +1,8 @@ #compdef command -# indicate if this is a precommand modifier -[[ $service = command ]] && precommands+=(command) - _arguments \ '-v[indicate result of command search]:*:command:_path_commands' \ '-V[show result of command search in verbose form]:*:command:_path_commands' \ '(-)-p[use default PATH to find command]' \ ':command:_path_commands' \ - '*::arguments: _normal' + '*:: : _normal -p $service' diff --git a/Completion/Zsh/Command/_exec b/Completion/Zsh/Command/_exec index 8de341a02..2498b57c0 100644 --- a/Completion/Zsh/Command/_exec +++ b/Completion/Zsh/Command/_exec @@ -1,9 +1,7 @@ #compdef exec -[[ $service == exec ]] && precommands+=( exec ) - _arguments -s -S -A '-*' : \ '-a+[set argv\[0\] to specified string]:argv[0] string' \ '-c[clear environment]' \ '-l[simulate login shell (prepend - to argv\[0\])]' \ - '*:: : _normal' + '*:: : _normal -p $service' diff --git a/Completion/Zsh/Command/_precommand b/Completion/Zsh/Command/_precommand index c9eef78af..fd88074c0 100644 --- a/Completion/Zsh/Command/_precommand +++ b/Completion/Zsh/Command/_precommand @@ -1,9 +1,6 @@ #compdef - nohup eval time rusage noglob nocorrect catchsegv aoss hilite eatmydata -# precommands is made local in _main_complete -precommands+=($words[1]) - shift words (( CURRENT-- )) -_normal +_normal -p $service diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index ba49fe298..f0fdbf293 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -4658,7 +4658,7 @@ fi return ret) ) findex(_normal) -item(tt(_normal))( +item(tt(_normal) [ tt(-p) var(precommand) ])( This is the standard function called to handle completion outside any special tt(-)var(context)tt(-). It is called both to complete the command word and also the arguments for a command. In the second case, @@ -4668,10 +4668,17 @@ there is none it uses the completion for the tt(-default-) context. A second use is to reexamine the command line specified by the tt($words) array and the tt($CURRENT) parameter after those have been modified. For example, the function tt(_precommand), which -completes after pre-command specifiers such as tt(nohup), removes the +completes after precommand specifiers such as tt(nohup), removes the first word from the tt(words) array, decrements the tt(CURRENT) parameter, -then calls tt(_normal) again. The effect is that `tt(nohup) var(cmd ...)' -is treated in the same way as `var(cmd ...)'. +then calls `tt(_normal -p $service)'. The effect is that +`tt(nohup) var(cmd ...)' is treated in the same way as `var(cmd ...)'. + +startitem() +item(tt(-p) var(precommand))( +Append var(precommand) to the list of precommands. This option should be +used in nearly all cases. +) +enditem() If the command name matches one of the patterns given by one of the options tt(-p) or tt(-P) to tt(compdef), the corresponding completion -- cgit 1.4.1