about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Shahaf <d.s@daniel.shahaf.name>2015-09-02 15:33:22 +0000
committerDaniel Shahaf <d.s@daniel.shahaf.name>2015-09-03 09:17:39 +0000
commit1ba2fac03d611ca2955e1c019c9cc9189fd2920b (patch)
treef89959f675d67234ef1d7ecb7985da9f820a27d3
parent8dfdca8afd77c39a2bb6542cfd20488059de09d1 (diff)
downloadzsh-1ba2fac03d611ca2955e1c019c9cc9189fd2920b.tar.gz
zsh-1ba2fac03d611ca2955e1c019c9cc9189fd2920b.tar.xz
zsh-1ba2fac03d611ca2955e1c019c9cc9189fd2920b.zip
36403: type -w += suffix alias
This makes 'type -w' distinguish suffix aliases from regular aliases,
like bare 'type' already does.

Use-case: detecting programmatically whether the command word is indeed
a valid command word (see <https://github.com/zsh-users/zsh-syntax-highlighting/issues/126>)
-rw-r--r--ChangeLog5
-rw-r--r--Src/hashtable.c5
-rw-r--r--Test/A02alias.ztst3
3 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6d4d061a1..bf10cbdac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-03  Daniel Shahaf  <d.s@daniel.shahaf.name>
+
+	* 36403: Src/hashtable.c Test/A02alias.ztst: type -w +=
+	suffix alias
+
 2015-09-02  Barton E. Schaefer  <schaefer@zsh.org>
 
 	* unposted: Test/A05execution.ztst: test for 36393
diff --git a/Src/hashtable.c b/Src/hashtable.c
index 90739a882..2d1ff87cb 100644
--- a/Src/hashtable.c
+++ b/Src/hashtable.c
@@ -1234,7 +1234,10 @@ printaliasnode(HashNode hn, int printflags)
     }
 
     if (printflags & PRINT_WHENCE_WORD) {
-	printf("%s: alias\n", a->node.nam);
+	if (a->node.flags & ALIAS_SUFFIX)
+	    printf("%s: suffix alias\n", a->node.nam);
+	else
+	    printf("%s: alias\n", a->node.nam);
 	return;
     }
 
diff --git a/Test/A02alias.ztst b/Test/A02alias.ztst
index b294e65ca..389617898 100644
--- a/Test/A02alias.ztst
+++ b/Test/A02alias.ztst
@@ -91,5 +91,8 @@
 0:unalias -a
 
   alias -s foo=print
+  type bar.foo; type -w bar.foo
   unalias -as
 0:unalias -as
+>foo is a suffix alias for print
+>foo: suffix alias