From: samer <samer@samertm.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Subject: bug#8531: 24.0.50;
Date: Mon, 08 Dec 2014 16:15:17 -0800 [thread overview]
Message-ID: <92a38c617b988742e23fc909e497975a@samertm.com> (raw)
In-Reply-To: <jwv7fy20yuc.fsf-monnier+emacsbugs@gnu.org>
Forgot to CC debbugs in my previous email:
This is the full patch, generated with magit because I couldn't commit
this to a private branch (I get "Empty change log entry" even though
I've changed both ChangeLog files. I don't know awk, do you have any
idea why I would get that error?)
Best,
Samer
Changes from master to working tree
4 files changed, 26 insertions(+), 22 deletions(-)
etc/ChangeLog | 4 ++++
etc/NEWS | 6 ++++++
lisp/ChangeLog | 7 +++++++
lisp/eshell/esh-arg.el | 31 +++++++++----------------------
Modified etc/ChangeLog
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 309c01f..3e76256 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-08 Samer Masterson <samer@dark-horse>
+
+ * NEWS: Mention change in backslash expand behavior for eshell.
+
2014-12-08 Lars Magne Ingebrigtsen <larsi@gnus.org>
* NEWS: Mention the new eww `S' command.
Modified etc/NEWS
diff --git a/etc/NEWS b/etc/NEWS
index 56036f8..e6d9aab 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -192,6 +192,12 @@ result of the calculation into the current buffer.
*** New minor mode global-eldoc-mode
*** eldoc-documentation-function now defaults to nil
+** eshell
+
+*** Backslash (\) expands to the character literal after it if that
+character is non-special (e.g. 'b\in' expands to 'bin', because 'i' is
+not a special character). This behavior conforms with bash.
+
** eww
+++
Modified lisp/ChangeLog
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2669e07..0ec9b35 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-08 Samer Masterson <samer@samertm.com>
+
+ * eshell/esh-arg.el (eshell-parse-backslash): Return the literal
+ character after the backslash if the character is non-special
+ (bug#8531).
+ (eshell-looking-at-backslash-return): Unused, remove.
+
2014-12-08 Lars Magne Ingebrigtsen <larsi@gnus.org>
* net/nsm.el (nsm-check-protocol): Test for RC4 on `high'.
Modified lisp/eshell/esh-arg.el
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index 704de57..33ff384 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -89,7 +89,8 @@ yield the values intended."
(goto-char (match-end 0))
(eshell-finish-arg)))))
- ;; backslash before a special character means escape it
+ ;; backslash before a character escapes it if the character is
+ ;; special, and returns the character literal if it is non-special
'eshell-parse-backslash
;; text beginning with ' is a literally quoted
@@ -282,13 +283,6 @@ Point is left at the end of the arguments."
"A stub function that generates an error if a floating operator is
found."
(error "Unhandled operator in input text"))
-(defsubst eshell-looking-at-backslash-return (pos)
- "Test whether a backslash-return sequence occurs at POS."
- (and (eq (char-after pos) ?\\)
- (or (= (1+ pos) (point-max))
- (and (eq (char-after (1+ pos)) ?\n)
- (= (+ pos 2) (point-max))))))
-
(defun eshell-quote-backslash (string &optional index)
"Intelligently backslash the character occurring in STRING at INDEX.
If the character is itself a backslash, it needs no escaping."
@@ -305,9 +299,11 @@ If the character is itself a backslash, it needs no
escaping."
(string ?\\ char)))))
(defun eshell-parse-backslash ()
- "Parse a single backslash (\) character, which might mean escape.
-It only means escape if the character immediately following is a
-special character that is not itself a backslash."
+ "Parse a single backslash (\) character to escape the character
after.
+If the character immediately following the backslash is a special
+character, it returns the escaped version of that character.
+Else, the character has no meaning and is returned as the literal
+character. This conforms with the behavior of bash."
(when (eq (char-after) ?\\)
(if (eshell-looking-at-backslash-return (point))
(throw 'eshell-incomplete ?\\)
@@ -321,18 +317,9 @@ special character that is not itself a backslash."
(forward-char 2)
(list 'eshell-escape-arg
(char-to-string (char-before))))
- ;; allow \\<RET> to mean a literal "\" character followed by a
- ;; normal return, rather than a backslash followed by a line
- ;; continuation (i.e., "\\ + \n" rather than "\ + \\n"). This
- ;; is necessary because backslashes in Eshell are not special
- ;; unless they either precede something special, or precede a
- ;; backslash that precedes something special. (Mainly this is
- ;; done to make using backslash on Windows systems more
- ;; natural-feeling).
- (if (eshell-looking-at-backslash-return (1+ (point)))
- (forward-char))
(forward-char)
- "\\"))))
+ (forward-char)
+ (char-before)))))
(defun eshell-parse-literal-quote ()
"Parse a literally quoted string. Nothing has special meaning!"
next prev parent reply other threads:[~2014-12-09 0:15 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-21 7:23 bug#8531: 24.0.50; shell-quote-argument shouldn't escape special characters Thierry Volpiatto
2011-04-21 10:33 ` Eli Zaretskii
2011-04-21 12:10 ` Thierry Volpiatto
2011-04-21 13:04 ` Eli Zaretskii
2011-04-21 13:31 ` Thierry Volpiatto
2011-04-21 13:58 ` Eli Zaretskii
2011-04-21 16:34 ` Thierry Volpiatto
2011-04-21 23:14 ` Glenn Morris
2011-04-22 5:53 ` Eli Zaretskii
2011-04-22 7:10 ` Glenn Morris
2011-04-22 8:03 ` Eli Zaretskii
2011-04-22 6:03 ` Thierry Volpiatto
2011-04-22 6:15 ` Eli Zaretskii
2011-04-22 9:21 ` Thierry Volpiatto
2014-12-08 9:34 ` bug#8531: 24.0.50; samer
2014-12-08 18:46 ` Stefan Monnier
2014-12-09 0:15 ` samer [this message]
2014-12-09 0:41 ` Lars Magne Ingebrigtsen
2014-12-09 2:11 ` samer
2014-12-09 2:14 ` Lars Magne Ingebrigtsen
2014-12-09 22:11 ` samer
2014-12-09 22:21 ` Lars Magne Ingebrigtsen
2014-12-09 22:30 ` samer
2014-12-08 16:48 ` bug#8531: 24.0.50; shell-quote-argument shouldn't escape special characters samer
2015-02-24 10:51 ` bug#8531: 24.0.50; Samer Masterson
2015-03-03 15:52 ` Eli Zaretskii
[not found] ` <1425472710.1450.3@mail.samertm.com>
[not found] ` <83h9u0psn8.fsf@gnu.org>
2015-04-06 3:50 ` Samer Masterson
2015-03-15 11:58 ` Samer Masterson
2015-04-09 2:32 ` 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=92a38c617b988742e23fc909e497975a@samertm.com \
--to=samer@samertm.com \
--cc=monnier@iro.umontreal.ca \
/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.