Subject: Re: bug#27954: 25.2; eshell alias: arguments get lost

From: [email-masked]
Date: Thu, 10 Aug 2017 22:22:03 -0400

tags 27954 + patch
quit

Tobias Zawada <[email-masked]> writes:

> In eshell:
>
> alias ll ls -l
>
> gives a full listing of all files as result of the following eshell-command:
>
> ll test.txt
>
> But, I expect only the listing for the file test.txt.
>
> At that link location there is also the following fast hack as workaround:
>
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; beginning of hack
>
> (defun eshell-maybe-replace-by-alias-bugfix-25.2.1 (command args)
> "If COMMAND has an alias definition, call that instead using ARGS."
> (unless (and eshell-prevent-alias-expansion
> (member command eshell-prevent-alias-expansion))
> (let ((alias (eshell-lookup-alias command)))
> (if alias
> (throw 'eshell-replace-command
> `(let ((eshell-command-name ',eshell-last-command-name)
> (eshell-command-arguments ',eshell-last-arguments)
> (eshell-prevent-alias-expansion
> ',(cons command eshell-prevent-alias-expansion)))
> ,(eshell-parse-command (nth 1 alias) args)))))))
>
> (advice-add #'eshell-maybe-replace-by-alias :override #'eshell-maybe-replace-by-alias-bugfix-25.2.1)

So this really just a case not ignoring ARGS, right?

>From fe2f8c4ce36a0775faedb1d7d4e9cbffec96f4cb Mon Sep 17 00:00:00 2001
From: Noam Postavsky <[email-masked]>
Date: Mon, 7 Aug 2017 08:56:42 -0400
Subject: [PATCH v1] Don't lose arguments to eshell aliases (Bug#27954)

* lisp/eshell/em-alias.el (eshell-maybe-replace-by-alias): Use ARGS.
---
 lisp/eshell/em-alias.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el
index 5bf80b2310..990eb02024 100644
--- a/lisp/eshell/em-alias.el
+++ b/lisp/eshell/em-alias.el
@@ -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))))))))
+                    ,(eshell-parse-command (nth 1 alias) args)))))))
 
 (defun eshell-alias-completions (name)
   "Find all possible completions for NAME.
-- 
2.11.1