* lisp/progmodes/compile.el (compilation-start): Try to handle common
quoting of `cd' argument. Fixes: debbugs:12640
This commit is contained in:
parent
9c3e39f3ff
commit
c79825bd22
2 changed files with 17 additions and 6 deletions
|
|
@ -1,5 +1,8 @@
|
|||
2012-10-23 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* progmodes/compile.el (compilation-start): Try to handle common
|
||||
quoting of `cd' argument (bug#12640).
|
||||
|
||||
* vc/diff-mode.el (diff-hunk): `save-excursion' while refining
|
||||
(bug#12671).
|
||||
|
||||
|
|
|
|||
|
|
@ -1568,12 +1568,20 @@ Returns the compilation buffer created."
|
|||
;; Then evaluate a cd command if any, but don't perform it yet, else
|
||||
;; start-command would do it again through the shell: (cd "..") AND
|
||||
;; sh -c "cd ..; make"
|
||||
(cd (if (string-match "\\`\\s *cd\\(?:\\s +\\(\\S +?\\)\\)?\\s *[;&\n]"
|
||||
command)
|
||||
(if (match-end 1)
|
||||
(substitute-env-vars (match-string 1 command))
|
||||
"~")
|
||||
default-directory))
|
||||
(cd (cond
|
||||
((not (string-match "\\`\\s *cd\\(?:\\s +\\(\\S +?\\|'[^']*'\\|\"\\(?:[^\"`$\\]\\|\\\\.\\)*\"\\)\\)?\\s *[;&\n]"
|
||||
command))
|
||||
default-directory)
|
||||
((not (match-end 1)) "~")
|
||||
((eq (aref command (match-beginning 1)) ?\')
|
||||
(substring command (1+ (match-beginning 1))
|
||||
(1- (match-end 1))))
|
||||
((eq (aref command (match-beginning 1)) ?\")
|
||||
(replace-regexp-in-string
|
||||
"\\\\\\(.\\)" "\\1"
|
||||
(substring command (1+ (match-beginning 1))
|
||||
(1- (match-end 1)))))
|
||||
(t (substitute-env-vars (match-string 1 command)))))
|
||||
(erase-buffer)
|
||||
;; Select the desired mode.
|
||||
(if (not (eq mode t))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue