1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

* lisp/shell.el (shell-parse-pcomplete-arguments): Unquote args.

Fixes: debbugs:9160
This commit is contained in:
Stefan Monnier 2011-08-28 01:15:17 -04:00
parent dca4927e8b
commit 356a368181
2 changed files with 26 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2011-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
* shell.el (shell-parse-pcomplete-arguments): Unquote args (bug#9160).
2011-08-27 Alan Mackenzie <acm@muc.de>
* progmodes/cc-menus.el (cc-imenu-c++-generic-expression): Make it

View File

@ -393,10 +393,28 @@ to `dirtrack-mode'."
(while (< (point) end)
(skip-chars-forward " \t\n")
(push (point) begins)
(looking-at "\\(?:[^\s\t\n\\]\\|'[^']*'\\|\"\\(?:[^\"\\]\\|\\\\.\\)*\"\\|\\\\.\\)*\\(?:\\\\\\|'[^']*\\|\"\\(?:[^\"\\]\\|\\\\.\\)*\\)?")
(goto-char (match-end 0))
(push (buffer-substring-no-properties (car begins) (point))
args))
(let ((arg ()))
(while (looking-at
(eval-when-compile
(concat
"\\(?:[^\s\t\n\\\"']+"
"\\|'\\([^']*\\)'?"
"\\|\"\\(\\(?:[^\"\\]\\|\\\\.\\)*\\)\"?"
"\\|\\\\\\(\\(?:.\\|\n\\)?\\)\\)")))
(goto-char (match-end 0))
(cond
((match-beginning 3) ;Backslash escape.
(push (if (= (match-beginning 3) (match-end 3))
"\\" (match-string 3))
arg))
((match-beginning 2) ;Double quote.
(push (replace-regexp-in-string
"\\\\\\(.\\)" "\\1" (match-string 2))
arg))
((match-beginning 1) ;Single quote.
(push (match-string 1) arg))
(t (push (match-string 0) arg))))
(push (mapconcat #'identity (nreverse arg) "") args)))
(cons (nreverse args) (nreverse begins)))))
(defun shell-completion-vars ()