On Tue, Dec 9, 2014 at 2:16 PM, Stefan Monnier wrote: > > Modified lisp/eshell/em-hist.el > > diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el > > index b721b5d..e7e9a1e 100644 > > --- a/lisp/eshell/em-hist.el > > +++ b/lisp/eshell/em-hist.el > > @@ -724,7 +724,7 @@ matched." > > (setq nth (eshell-hist-word-reference nth))) > > (unless (numberp mth) > > (setq mth (eshell-hist-word-reference mth))) > > - (cons (mapconcat 'identity (eshell-sublist textargs nth mth) "") > > + (cons (mapconcat 'identity (eshell-sublist textargs nth mth) " ") > > end)))) > > Can you explain why this is needed? > (eshell-sublist) will return a sublist of textargs, which might look like ("ehco" "hi" "there"). The call to mapconcat would join that list without adding whitespace between the args previously, e.g. into "echohithere", which is incorrect. This then gets fed into eshell-hist-parse-modifier as event on line 663. eshell-hist-parse-modifier would then make the substitution on "echohithere". > > > @@ -737,7 +737,7 @@ matched." > > (goto-char (point-min)) > > (let ((modifiers (cdr (eshell-parse-modifiers)))) > > (dolist (mod modifiers) > > - (setq hist (funcall mod hist))) > > + (setq hist (car (funcall mod (list hist))))) > > hist)) > > (delete-region here (point))))) > > The docstring of eshell-parse-modifiers says: > > Parse value modifiers and predicates at point. > If ALLOW-PREDS is non-nil, predicates will be parsed as well. > Return a cons cell of the form > > (PRED-FUNC-LIST . MOD-FUNC-LIST) > > NEW-STRING is STRING minus any modifiers. PRED-FUNC-LIST is a list of > predicate functions. MOD-FUNC-LIST is a list of result modifier > functions. PRED-FUNCS take a filename and return t if the test > succeeds; MOD-FUNCS take any string and preform a modification, > returning the resultant string. > > If I read this right, `mod' (which is one of MOD-FUNCS) should take > a string and return a string, IIUC. So, maybe the right fix is not to > change this code but to change the functions returned by > `eshell-parse-modifiers'. > Ah, I should have read the docstring for eshell-parse-modifiers instead of simply looking at the function it returns :) I'll make that change. Also, I assume that NEW-STRING and ALLOW-PREDS both refer to variables that were removed when this file was made lexically scoped, and will remove them from the docstring. > > > > Stefan >