GNU bug report logs -
#54603
29.0.50; [PATCH] Eshell's external pipe module interferes with other argument parsing hooks
Previous Next
Reported by: Jim Porter <jporterbugs <at> gmail.com>
Date: Mon, 28 Mar 2022 02:22:02 UTC
Severity: normal
Tags: patch
Found in version 29.0.50
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #38 received at 54603 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On 3/31/2022 3:48 PM, Sean Whitton wrote:
> Thank you for testing. In the meantime, I've thought it all through
> some more, and I think that your original idea of catching the
> 'eshell-incomplete is the right thing, assuming all tests pass.
>
> I think the error should be caught inside the `or', though? The idea
> would be that if eshell-incomplete is thrown within one of the
> disjuncts, that disjunct should return nil.
Hmm, that's an interesting thought. Maybe this code could be more
particular about what parse function it calls. Since each of the
function calls here:
(while (or (eshell-parse-lisp-argument)
(eshell-parse-backslash)
(eshell-parse-double-quote)
(eshell-parse-literal-quote)))
correspond to a particular token here (earlier in the source):
(re-search-forward
"\\(?:(\\|#?'\\|\"\\|\\\\\\)" bound t)))
perhaps it would be better to match the function call to the
corresponding token. That is, if we see a "#?", we call
`eshell-parse-lisp-argument', and so on. See the attached patch, which
works in my tests (and passes all the existing Eshell unit tests).
[0001-Make-Eshell-s-extpipe-more-lenient-when-looking-for-.patch (text/plain, attachment)]
This bug report was last modified 3 years and 45 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.