diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-05-04 17:46:30 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-05-04 17:46:30 +0300 |
commit | 8c392682fc9938b2ee02cc2741bf6f680281b0c7 (patch) | |
tree | a7f9d2820d72e43fd77d18299cb88b7701ae420a /lisp/cedet/semantic/symref/grep.el | |
parent | 5d3940a3b9144efbc4db4a7b76a3331cebc64165 (diff) | |
download | emacs-8c392682fc9938b2ee02cc2741bf6f680281b0c7.tar.gz emacs-8c392682fc9938b2ee02cc2741bf6f680281b0c7.tar.bz2 emacs-8c392682fc9938b2ee02cc2741bf6f680281b0c7.zip |
Fix minor issues with CEDET on MS-Windows
* lisp/cedet/semantic/symref/idutils.el
(semantic-symref-parse-tool-output-one-line): Fix the search
regexp to match MS-Windows file names with drive letters.
(Bug#19468)
* lisp/cedet/semantic/symref/grep.el
(semantic-symref-grep-use-template): Remove "--color=always" from
Grep switches on MS-Windows.
(semantic-symref-grep-shell): Use shell-file-name as the default
value, so this works not only on Posix platforms.
(semantic-symref-perform-search): Use shell-quote-argument instead
of literal '..' for portable quoting of Grep command-line
argument. Use shell-command-switch instead of a literal "-c".
* lisp/cedet/semantic/bovine/gcc.el
(semantic-gcc-get-include-paths): Use file-name-absolute-p to test
for an absolute file name in a portable way.
Diffstat (limited to 'lisp/cedet/semantic/symref/grep.el')
-rw-r--r-- | lisp/cedet/semantic/symref/grep.el | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el index 981dab8a8b5..d57b50fb98f 100644 --- a/lisp/cedet/semantic/symref/grep.el +++ b/lisp/cedet/semantic/symref/grep.el @@ -105,17 +105,26 @@ GREPPATTERN is the pattern used by grep." ;; We have grep-compute-defaults. Let's use it. (grep-compute-defaults) (let* ((grep-expand-keywords semantic-symref-grep-expand-keywords) - (cmd (grep-expand-template grep-find-template - greppattern - filepattern - rootdir))) + (cmd (grep-expand-template + (if (memq system-type '(windows-nt ms-dos)) + ;; grep-find uses '--color=always' on MS-Windows + ;; because it wants the colorized output, to show + ;; it to the user. By contrast, here we don't show + ;; the output, and the SGR escapes get in the way + ;; of parsing the output. + (replace-regexp-in-string "--color=always" "" + grep-find-template t t) + grep-find-template) + greppattern + filepattern + rootdir))) ;; For some reason, my default has no <D> in it. (when (string-match "find \\(\\.\\)" cmd) (setq cmd (replace-match rootdir t t cmd 1))) ;;(message "New command: %s" cmd) cmd)) -(defcustom semantic-symref-grep-shell "sh" +(defcustom semantic-symref-grep-shell shell-file-name "The shell command to use for executing find/grep. This shell should support pipe redirect syntax." :group 'semantic @@ -140,7 +149,8 @@ This shell should support pipe redirect syntax." (greppat (cond ((eq (oref tool :searchtype) 'regexp) (oref tool searchfor)) (t - (concat "'\\<" (oref tool searchfor) "\\>'")))) + (shell-quote-argument + (concat "\\<" (oref tool searchfor) "\\>"))))) ;; Misc (b (get-buffer-create "*Semantic SymRef*")) (ans nil) @@ -158,10 +168,12 @@ This shell should support pipe redirect syntax." (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 " "| xargs -0 grep -H " grepflags "-e " greppat))) ;;(message "Old command: %s" cmd) - (call-process semantic-symref-grep-shell nil b nil "-c" cmd) + (call-process semantic-symref-grep-shell nil b nil + shell-command-switch cmd) ) (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat))) - (call-process semantic-symref-grep-shell nil b nil "-c" cmd)) + (call-process semantic-symref-grep-shell nil b nil + shell-command-switch cmd)) )) (setq ans (semantic-symref-parse-tool-output tool b)) ;; Return the answer |