summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Type/_canonical_paths5
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9dd63251e..2676d0a17 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-31 Barton E. Schaefer <schaefer@zsh.org>
+
+ * 39792: Completion/Unix/Type/_canonical_paths: improve handling
+ of relative paths in _canonical_paths_add_paths
+
2016-10-31 Daniel Shahaf <d.s@daniel.shahaf.name>
* 39786: Functions/VCS_Info/Backends/VCS_INFO_get_data_hg,
diff --git a/Completion/Unix/Type/_canonical_paths b/Completion/Unix/Type/_canonical_paths
index 9bccc7f86..6482602ac 100644
--- a/Completion/Unix/Type/_canonical_paths
+++ b/Completion/Unix/Type/_canonical_paths
@@ -69,7 +69,10 @@ _canonical_paths_add_paths () {
expref=${~origpref} 2>/dev/null
[[ $origpref == (|*/). ]] && rltrim=.
curpref=${${expref%$rltrim}:-./}
- if zstat $curpref >&/dev/null; then
+ if [[ $expref:h == (.|..) ]]; then
+ _canonical_paths_pwd $expref:h
+ canpref=$REPLY/$expref:t
+ elif zstat $curpref >&/dev/null; then
_canonical_paths_get_canonical_path $curpref
canpref=$REPLY
else