]> code.delx.au - gnu-emacs/commitdiff
Fix minor issues with CEDET on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Mon, 4 May 2015 14:46:30 +0000 (17:46 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 4 May 2015 14:46:30 +0000 (17:46 +0300)
* 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.

lisp/cedet/semantic/bovine/gcc.el
lisp/cedet/semantic/symref/grep.el
lisp/cedet/semantic/symref/idutils.el

index 19d149112c6423ba11155e7f70c315442a6fb376..b186e7bd6ee737c331005acd5797ed729f68ff93 100644 (file)
@@ -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))
 
 
index 981dab8a8b52cde79d9d02d81e0c862977e20700..d57b50fb98f153b469afd21f5c6ffe9be5189d9c 100644 (file)
@@ -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
index c22a6a3b7fb6b6713286ab563e5660249cffe4d5..655b000ccdda84ae2f7cd4cf5d3da7d20a69e0ac 100644 (file)
@@ -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))
           ))))