[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash behaves improperly with colons in programmable completion
From: |
jeremy-bash |
Subject: |
bash behaves improperly with colons in programmable completion |
Date: |
11 Oct 2002 00:30:00 -0000 |
Configuration Information [Automatically generated, do not change]:
Machine: powerpc
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='powerpc'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='powerpc-unknown-linux-gnu'
-DCONF_VENDOR='unknown' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib
-g -O2
uname output: Linux hecate.batray.net 2.4.18 #1 Thu Feb 28 22:12:22 PST 2002
ppc unknown
Machine Type: powerpc-unknown-linux-gnu
Bash Version: 2.05b
Patch Level: 0
Release Status: release
Description:
1. When using wordlist completion and the wordlist contains entries with a
colon, or you are completing a word with a colon, bash doesn't do the
right thing:
a) if you have not yet typed the colon, and exactly one entry matches
the word typed so far, bash completes correctly.
b) if you have not yet typed the colon, bash will correctly comple the
common prefix of the entries in the wordlist, but this leads to
the c) & d) situation.
c) if you have typed up to the colon and stopped, bash will display all
entries with <TAB><TAB>, whether matching or not.
d) if you have typed past the colon, bash will not complete at all.
2. When using words containing colons in function completion, the
situation gets more complicated. The compgen builtin seems to get
it right, but bash completion doesn't. a) and b) work as with direct
wordlist completion, but if the currently typed word contains a
colon, bash will insert the completed string (even if it's the
nonunique prefix and not a complete match) after the colon,
duplicating the text before the colon.
Repeat-By:
1.
X='b:drive b:place b:plaza d:nature regular word'
x()
{
echo 'x(): ' "$@"
}
complete -W 'b:drive b:place b:plaza d:nature regular word ' x
x d<tab> # shows a
x b<tab> # shows b
x b:<tab> # shows c
x b:pl<tab # shows d
2.
pc_x()
{
local cur
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$X" -- "$cur") )
}
complete -F pc_x x
x d<tab> # shows correctly
x b<tab> # shows correctly
x b:p<tab> # inserts matching entries' prefix after colon, 'b:b:pla'
x d:<tab> # inserts matching entry after colon, 'd:d:nature '
- bash behaves improperly with colons in programmable completion,
jeremy-bash <=