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.
This commit is contained in:
parent
5d3940a3b9
commit
8c392682fc
3 changed files with 26 additions and 16 deletions
|
@ -86,13 +86,11 @@ to give to the program."
|
|||
(let ((chars (append line nil)))
|
||||
(when (= 32 (nth 0 chars))
|
||||
(let ((path (substring line 1)))
|
||||
(when (file-accessible-directory-p path)
|
||||
(when (if (memq system-type '(windows-nt))
|
||||
(/= ?/ (nth 1 chars))
|
||||
(= ?/ (nth 1 chars)))
|
||||
(add-to-list 'inc-path
|
||||
(expand-file-name (substring line 1))
|
||||
t)))))))))
|
||||
(when (and (file-accessible-directory-p path)
|
||||
(file-name-absolute-p path))
|
||||
(add-to-list 'inc-path
|
||||
(expand-file-name path)
|
||||
t))))))))
|
||||
inc-path))
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -60,7 +60,7 @@ Moves cursor to end of the match."
|
|||
(when (re-search-forward "^\\([^ ]+\\) " nil t)
|
||||
(match-string 1)))
|
||||
(t
|
||||
(when (re-search-forward "^\\([^ :]+\\):+\\([0-9]+\\):" nil t)
|
||||
(when (re-search-forward "^\\(\\(?:[a-zA-Z]:\\)?[^:\n]+\\):\\([0-9]+\\):" nil t)
|
||||
(cons (string-to-number (match-string 2))
|
||||
(expand-file-name (match-string 1) default-directory))
|
||||
))))
|
||||
|
|
Loading…
Add table
Reference in a new issue