Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
[PATCH] fix: do not complete indices for empty array subscripts
- X-seq: zsh-workers 53449
- From: Kyle Andelin <andelink@xxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: [PATCH] fix: do not complete indices for empty array subscripts
- Date: Fri, 4 Apr 2025 07:53:57 -0700
- Archived-at: <https://zsh.org/workers/53449>
- Feedback-id: ifaae48e5:Fastmail
- List-id: <zsh-workers.zsh.org>
From: Kyle Andelin <7277377+andelink@xxxxxxxxxxxxxxxxxxxxxxxx>
Small patch to ensure nonexistent indices are not offered as completion
choices when subscripting empty arrays.
The problem:
# Clean zsh environment
$ env -i TERM=${TERM} TERMINFO=${TERMINFO} zsh -f
$ zmodload -i zsh/complist zsh/zle zsh/zutil
$ autoload -Uz compinit; compinit -D
$ zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Example arrays
$ typeset -a arrfoo=(wheeler jump routine) arrbar=()
$ echo ${arrfoo[ # <TAB> produces expected completion options
1 -- wheeler 2 -- jump 3 -- routine
$ echo ${arrbar[ # <TAB> completes to [0] and [1] despite being empty
1 0
In the above, `arrbar` is empty and thus should not have any indices
as completion choices. After applying the attached patch, we get the
expected results:
# Clean zsh environment
$ env -i TERM=${TERM} TERMINFO=${TERMINFO} dist/bin/zsh-5.9.0.1-dev -f
$ zmodload -i zsh/complist zsh/zle zsh/zutil
$ autoload -Uz compinit; compinit -D
$ zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
# Example arrays
$ typeset -a arrfoo=(wheeler jump routine) arrbar=()
$ echo ${arrfoo[ # <TAB> produces expected completion options
1 -- wheeler 2 -- jump 3 -- routine
$ echo ${arrbar[ # <TAB> instead completes to parameters as expected
zsh: do you wish to see all 148 possibilities (25 lines)?
First time contributor here so please let me know if there is anything I need
to do different or if there are any changes you'd like to see. I also opened
a PR on GitHub as I wasn't sure which would be preferred:
https://github.com/zsh-users/zsh/pull/130
Thanks!
Kyle
---
Completion/Zsh/Context/_subscript | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Completion/Zsh/Context/_subscript b/Completion/Zsh/Context/_subscript
index 25cedd193..67bad2862 100644
--- a/Completion/Zsh/Context/_subscript
+++ b/Completion/Zsh/Context/_subscript
@@ -98,6 +98,9 @@ elif [[ ${(Pt)${compstate[parameter]}} = array* ]]; then
while _tags; do
if _requested indexes; then
ind=( {1..${#${(P)${compstate[parameter]}}}} )
+ if [[ ${ind[-1]} -eq 0 ]]; then
+ ind=()
+ fi
if zstyle -T ":completion:${curcontext}:indexes" verbose; then
list=()
for i in "$ind[@]"; do
--
2.49.0
Messages sorted by:
Reverse Date,
Date,
Thread,
Author