From: Eli Zaretskii Date: Sat, 27 Jan 2001 12:43:56 +0000 (+0000) Subject: (shell-unquote-argument): If the shell is one of the X-Git-Tag: emacs-pretest-21.0.96~21 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f5058b9653e1aa98001902d18a0586d36c46f1d2;p=emacs.git (shell-unquote-argument): If the shell is one of the mentioned in shell-dumb-shell-regexp, don't treat a backslash as a quote character. (shell-dumb-shell-regexp): Document that the shells which match this regexp are supposed to not treat a backslash as a quote character. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f5ef149f12f..31da8a33a6b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,12 @@ 2001-01-27 Eli Zaretskii + * shell.el (shell-unquote-argument): If the shell is one of the + mentioned in shell-dumb-shell-regexp, don't treat a backslash as a + quote character. + (shell-dumb-shell-regexp): Document that the shells which match + this regexp are supposed to not treat a backslash as a quote + character. + * emacs-lisp/lisp-mode.el (lisp-mode-shared-map): Undo the change from 2001-01-12. It is not needed, since backspace is mapped into DEL. diff --git a/lisp/shell.el b/lisp/shell.el index d3ec4ee8a9f..e0052e57c8a 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -122,9 +122,11 @@ ;;;###autoload (defcustom shell-dumb-shell-regexp "cmd\\(proxy\\)?\\.exe" - "Regexp to match shells that don't save their command history. -For shells that match this regexp, Emacs will write out the -command history when the shell finishes." + "Regexp to match shells that don't save their command history, and +don't handle the backslash as a quote character. For shells that +match this regexp, Emacs will write out the command history when the +shell finishes, and won't remove backslashes when it unquotes shell +arguments." :type 'regexp :group 'shell) @@ -597,9 +599,15 @@ Environment variables are expanded, see function `substitute-in-file-name'." (defun shell-unquote-argument (string) "Remove all kinds of shell quoting from STRING." (save-match-data - (let ((idx 0) next inside) + (let ((idx 0) next inside + (quote-chars + (if (string-match shell-dumb-shell-regexp + (file-name-nondirectory + (car (process-command (get-buffer-process (current-buffer)))))) + "['`\"]" + "[\\'`\"]"))) (while (and (< idx (length string)) - (setq next (string-match "[\\'`\"]" string next))) + (setq next (string-match quote-chars string next))) (cond ((= (aref string next) ?\\) (setq string (replace-match "" nil nil string)) (setq next (1+ next)))