From: Noam Postavsky <npostavs@users.sourceforge.net>
To: Jay Kamat <jaygkamat@gmail.com>
Cc: 29821@debbugs.gnu.org
Subject: bug#29821: Ensure quick substitution only occurs at start of line
Date: Sun, 31 Dec 2017 19:33:20 -0500 [thread overview]
Message-ID: <87shbqto33.fsf@users.sourceforge.net> (raw)
In-Reply-To: <87fu8272h6.fsf@gmail.com> (Jay Kamat's message of "Fri, 22 Dec 2017 15:57:08 -0800")
Jay Kamat <jaygkamat@gmail.com> writes:
> I'm filing this separately from #29157, because I think that issue got a
> bit overloaded with multiple eshell problems and is very hard to follow.
Yes, thanks.
> I recently noticed the changes in #29157, and I'm disappointed that we
> came to the conclusion to disable history expansion completely. I find
> it's rather useful, especially for things like:
>
> $ mv one.txt two.txtt
> # whoops!
> $ mv !!:$ two.txt
Hmm, using history expansion would mean typing
M-p DEL C-a M-f M-d M-d ! ! : $
to get
mv !!:$ two.txt
vs
M-p C-a M-f M-d M-d C-k C-y C-y DEL
to get
mv two.txtt two.txt
Hardly seems worth the trouble of learning this syntax (and occasionally
triggering accidentally, which is why I disable it in bash too). Is
having history expansion enabled by default very important? You can
still enable it in your config.
> This is preferred (in my opinion) over lisp functions to keep muscle
> memory working between shells. If anything, I would suggest disabling
> quick substitution (as I don't find it more useful than using history
> directly most of the time)
(PS my suggestion is almost compatible with bash readline too, just M-p
needs to be C-p instead, and that incompatibility is present in the
history expansion case too).
> I've created a patch to try to fix the bug found in #29157, which was:
>
>> echo $PATH | sed "s/[^o]foo[^o]/bar/g"
>> Unknown predicate character ‘b’
>
> The fix is rather simple, it simply limits the quick substitution to the
> start of the line only (as observed in bash, as Andreas noted in the
> previous thread).
>
> I hope that we reconsider the decision to disable history expansion by
> default, it's a nice feature of eshell (which I have another patch I
> would like to submit later to try to expand it's functionality a bit
> more).
>
> Please let me know if you think this is a poor way of solving this issue
> (or if anything else seems wrong or missing), and I'll try to follow up.
I guess it's an improvement on what we have currently (the feature is
rather underspecified). Should we consider also handling spaces like
bash does? In bash I can do this:
~/tmp$ echo foo bar
foo bar
~/tmp$ ^foo bar^blah^
echo blah
blah
In eshell (with and without your patch) I get:
~/src/emacs $ echo foo bar
("foo" "bar")
~/src/emacs $ ^foo bar^blah^
^foo: command not found
next prev parent reply other threads:[~2018-01-01 0:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-22 23:57 bug#29821: Ensure quick substitution only occurs at start of line Jay Kamat
2018-01-01 0:33 ` Noam Postavsky [this message]
2018-01-01 9:56 ` Andreas Schwab
2018-01-02 1:29 ` Noam Postavsky
2018-01-02 2:30 ` Jay Kamat
2018-01-02 3:58 ` Noam Postavsky
2018-01-02 17:48 ` Jay Kamat
2018-01-03 1:51 ` Noam Postavsky
2018-01-04 1:17 ` Jay Kamat
2018-01-04 3:10 ` Noam Postavsky
2018-01-04 20:26 ` Jay Kamat
2018-01-05 1:04 ` Noam Postavsky
2018-01-05 1:53 ` Jay Kamat
2018-01-05 14:31 ` Noam Postavsky
2018-01-01 23:44 ` Jay Kamat
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=87shbqto33.fsf@users.sourceforge.net \
--to=npostavs@users.sourceforge.net \
--cc=29821@debbugs.gnu.org \
--cc=jaygkamat@gmail.com \
/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.