From a154f4dbb09b24e4fdba69991c97e2a7a8d8581e Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 29 Sep 2017 21:00:10 -0400 Subject: [PATCH] Revert "Don't lose arguments to eshell aliases (Bug#27954)" It broke the established argument handling methods provided by eshell aliases (Bug#28568). * doc/misc/eshell.texi (Aliases): Fix example, call out use of arguments in aliases. * lisp/eshell/em-alias.el (eshell-maybe-replace-by-alias): Ignore ARGS. --- doc/misc/eshell.texi | 9 ++++++++- lisp/eshell/em-alias.el | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 8963826c4c..8dff739612 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -431,13 +431,20 @@ Aliases Aliases are commands that expand to a longer input line. For example, @command{ll} is a common alias for @code{ls -l}, and would be defined -with the command invocation @samp{alias ll ls -l}; with this defined, +with the command invocation @samp{alias ll 'ls -l $*'}; with this defined, running @samp{ll foo} in Eshell will actually run @samp{ls -l foo}. Aliases defined (or deleted) by the @command{alias} command are automatically written to the file named by @code{eshell-aliases-file}, which you can also edit directly (although you will have to manually reload it). +Note that unlike aliases in Bash, arguments must be handled +explicitly. Typically the alias definition would end in @samp{$*} to +pass all arguments along. More selective use of arguments via +@samp{$1}, @samp{$2}, etc., is also possible. For example, +@samp{alias mcd 'mkdir $1 && cd $1'} would cause @samp{mcd foo} to +create and switch to a directory called @samp{foo}. + @node History @section History @cmindex history diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el index f951efa65d..742234574f 100644 --- a/lisp/eshell/em-alias.el +++ b/lisp/eshell/em-alias.el @@ -214,8 +214,8 @@ eshell-lookup-alias (defvar eshell-prevent-alias-expansion nil) -(defun eshell-maybe-replace-by-alias (command args) - "If COMMAND has an alias definition, call that instead using ARGS." +(defun eshell-maybe-replace-by-alias (command _args) + "Call COMMAND's alias definition, if it exists." (unless (and eshell-prevent-alias-expansion (member command eshell-prevent-alias-expansion)) (let ((alias (eshell-lookup-alias command))) @@ -225,7 +225,7 @@ eshell-maybe-replace-by-alias (eshell-command-arguments ',eshell-last-arguments) (eshell-prevent-alias-expansion ',(cons command eshell-prevent-alias-expansion))) - ,(eshell-parse-command (nth 1 alias) args))))))) + ,(eshell-parse-command (nth 1 alias)))))))) (defun eshell-alias-completions (name) "Find all possible completions for NAME. -- 2.11.0