summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2001-04-18 16:02:50 +0000
committerBart Schaefer <barts@users.sourceforge.net>2001-04-18 16:02:50 +0000
commit6aa2261d52de6d3ecf2211aa5b3a465b3b1c7c45 (patch)
tree4059deaaafa0c7f7ca30f3b69022f76d4e815163
parenta924eeba12abf572e28431ae5dc0134e09974b08 (diff)
downloadzsh-6aa2261d52de6d3ecf2211aa5b3a465b3b1c7c45.tar.gz
zsh-6aa2261d52de6d3ecf2211aa5b3a465b3b1c7c45.zip
Tilde-path completion tweak.
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Unix/Type/_path_files14
2 files changed, 13 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 4678afc79..768755269 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-04-18 Bart Schaefer <schaefer@zsh.org>
+
+ * 14004 (plus typo fix per Sven 14009): Improve completion in the
+ tail of paths with a leading tilde-component, particularly with
+ respect to nameddirs.
+
2001-04-17 Sven Wischnowsky <wischnow@zsh.org>
* 13999: Src/Zle/computil.c: only use the exclusion lists of
diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files
index bc784426c..ffaf0d77f 100644
--- a/Completion/Unix/Type/_path_files
+++ b/Completion/Unix/Type/_path_files
@@ -190,7 +190,7 @@ eorig="$orig"
# Now let's have a closer look at the string to complete.
-if [[ "$pre" = *\$*/* && "$compstate[quote]" != \" ]]; then
+if [[ "$pre" = *(\`[^\`]#\`|\$)*/* && "$compstate[quote]" != \' ]]; then
# If there is a parameter expansion in the word from the line, we try
# to complete the beast by expanding the prefix and completing anything
@@ -207,6 +207,7 @@ if [[ "$pre" = *\$*/* && "$compstate[quote]" != \" ]]; then
donepath=
prepaths=( '' )
elif [[ "$pre[1]" = \~ && -z "$compstate[quote]" ]]; then
+
# It begins with `~', so remember anything before the first slash to be able
# to report it to the completion code. Also get an expanded version of it
# (in `realpath'), so that we can generate the matches. Then remove that
@@ -217,10 +218,6 @@ elif [[ "$pre[1]" = \~ && -z "$compstate[quote]" ]]; then
linepath="${pre[2,-1]%%/*}"
if [[ -z "$linepath" ]]; then
realpath="${HOME%/}/"
- elif (( $+userdirs[$linepath] )); then
- realpath="${userdirs[$linepath]%/}/"
- elif (( $+nameddirs[$linepath] )); then
- realpath="${nameddirs[$linepath]%/}/"
elif [[ "$linepath" = ([-+]|)[0-9]## ]]; then
if [[ "$linepath" != [-+]* ]]; then
if [[ -o pushdminus ]]; then
@@ -248,8 +245,11 @@ elif [[ "$pre[1]" = \~ && -z "$compstate[quote]" ]]; then
elif [[ "$linepath" = [-+] ]]; then
realpath=${~:-\~$linepath}/
else
- _message "unknown user \`$linepath'"
- return 1
+ eval "realpath=~${linepath}/" 2>/dev/null
+ if [[ -z "$realpath" ]]; then
+ _message "unknown user \`$linepath'"
+ return 1
+ fi
fi
linepath="~${linepath}/"
[[ "$realpath" = "$linepath" ]] && return 1