all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Samer Masterson <nosefrog@gmail.com>
To: 18960@debbugs.gnu.org
Subject: bug#18960: Fwd: bug#18960: 24.4; Eshell history substitution causes error
Date: Tue, 9 Dec 2014 14:49:40 -0800	[thread overview]
Message-ID: <CAP6_t8g_wc5Fmp9oQez-5R6mwbtaU6XZzAV9F15b5DBLA5YBgg@mail.gmail.com> (raw)
In-Reply-To: <CAP6_t8j6xtzurbz3S5+CTKu9eM+fxDXXZvuPhRvnBBaAt=bJWg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2523 bytes --]

On Tue, Dec 9, 2014 at 2:16 PM, Stefan Monnier <monnier@iro.umontreal.ca>
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
>

[-- Attachment #2: Type: text/html, Size: 3633 bytes --]

  parent reply	other threads:[~2014-12-09 22:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 19:45 bug#18960: 24.4; Eshell history substitution causes error Emanuel Evans
2014-12-08 11:54 ` Samer Masterson
2014-12-09 22:16   ` Stefan Monnier
     [not found]     ` <CAP6_t8j6xtzurbz3S5+CTKu9eM+fxDXXZvuPhRvnBBaAt=bJWg@mail.gmail.com>
2014-12-09 22:49       ` Samer Masterson [this message]
2014-12-10 12:51         ` Samer Masterson
2015-02-24 10:47 ` Samer Masterson
2015-02-24 19:04   ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP6_t8g_wc5Fmp9oQez-5R6mwbtaU6XZzAV9F15b5DBLA5YBgg@mail.gmail.com \
    --to=nosefrog@gmail.com \
    --cc=18960@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.