about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Functions/Misc/run-help11
2 files changed, 14 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ec204772..234691a37 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-16  Peter Stephenson  <pws@csr.com>
+
+	* 27492 based on Jörg Sommer: 27473: Functions/Misc/run-help:
+	fix alias problem.
+
 2009-12-14  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* 27518: Completion/Unix/Command/_configure: suggest some
@@ -12492,5 +12497,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4843 $
+* $Revision: 1.4844 $
 *****************************************************
diff --git a/Functions/Misc/run-help b/Functions/Misc/run-help
index 837ce1ff0..6a1b3a418 100644
--- a/Functions/Misc/run-help
+++ b/Functions/Misc/run-help
@@ -49,6 +49,7 @@ if [[ $places = *"not found"* && $1 != ${(Q)1} ]]; then
   noalias=1
 fi
 
+{
 while ((i++ < $#places))
 do
     what=$places[$i]
@@ -56,7 +57,8 @@ do
     builtin print -r $what
     case $what in
     (*( is an alias)*)
-	[[ ${what[(w)6]:t} != ${what[(w)1]} ]] && run-help ${what[(w)6]:t}
+	[[ ${what[(w)6]:t} != ${what[(w)1]} ]] &&
+	  run_help_orig_cmd=${what[(w)1]} run-help ${what[(w)6]:t}
 	;;
     (*( is a * function))
 	case ${what[(w)1]} in
@@ -96,9 +98,9 @@ do
 		builtin print -z "$cmd_args"
 		cmd_args=( ${(z)cmd_args} )
 		# Discard environment assignments, etc.
-		while [[ $cmd_args[1] != $1 ]]
+		while [[ $cmd_args[1] != ${run_help_orig_cmd:-$1} ]]
 		do
-		    shift cmd_args
+		    shift cmd_args || return 1
 		done
 		eval "run-help-$1:t ${(q@)cmd_args[2,-1]}"
 	    else
@@ -115,3 +117,6 @@ do
 	[[ $what == [qQ] ]] && break
     fi
 done
+} always {
+  unset run_help_orig_cmd
+}