(semantic-symref-derive-find-filepatterns): Return a list
* lisp/cedet/semantic/symref/grep.el (semantic-symref-derive-find-filepatterns): Return a list. (semantic-symref-perform-search): Quote the result here once and for all.
This commit is contained in:
parent
0a7ad071ef
commit
8637f3d0fa
1 changed files with 17 additions and 22 deletions
|
@ -53,6 +53,8 @@ and those hits returned.")
|
||||||
See find -name man page for format.")
|
See find -name man page for format.")
|
||||||
|
|
||||||
(defun semantic-symref-derive-find-filepatterns (&optional mode)
|
(defun semantic-symref-derive-find-filepatterns (&optional mode)
|
||||||
|
;; FIXME: This should be moved to grep.el, where it could be used
|
||||||
|
;; for "C-u M-x grep" as well.
|
||||||
"Derive a list of file patterns for the current buffer.
|
"Derive a list of file patterns for the current buffer.
|
||||||
Looks first in `semantic-symref-filepattern-alist'. If it is not
|
Looks first in `semantic-symref-filepattern-alist'. If it is not
|
||||||
there, it then looks in `auto-mode-alist', and attempts to derive something
|
there, it then looks in `auto-mode-alist', and attempts to derive something
|
||||||
|
@ -64,28 +66,20 @@ Optional argument MODE specifies the `major-mode' to test."
|
||||||
(when (not pat)
|
(when (not pat)
|
||||||
;; No hit, try auto-mode-alist.
|
;; No hit, try auto-mode-alist.
|
||||||
(dolist (X auto-mode-alist)
|
(dolist (X auto-mode-alist)
|
||||||
(when (eq (cdr X) mode)
|
(when (and (eq (cdr X) mode)
|
||||||
;; Only take in simple patterns, so try to convert this one.
|
;; Only take in simple patterns, so try to convert this one.
|
||||||
(let ((Xp
|
(string-match "\\\\\\.\\([^\\'>]+\\)\\\\'" (car X)))
|
||||||
(cond ((string-match "\\\\\\.\\([^\\'>]+\\)\\\\'" (car X))
|
(push (concat "*." (match-string 1 (car X))) pat))))
|
||||||
(concat "*." (match-string 1 (car X))))
|
|
||||||
(t nil))))
|
|
||||||
(when Xp
|
|
||||||
(setq pat (cons Xp pat))))
|
|
||||||
)))
|
|
||||||
;; Convert the list into some find-flags.
|
;; Convert the list into some find-flags.
|
||||||
(cond ((= (length pat) 1)
|
(if (null pat)
|
||||||
(concat "-name " (shell-quote-argument (car pat))))
|
(error "Customize `semantic-symref-filepattern-alist' for %S"
|
||||||
((consp pat)
|
major-mode)
|
||||||
(concat (shell-quote-argument "(") " "
|
(let ((args `("-name" ,(car pat))))
|
||||||
(mapconcat (lambda (s)
|
(if (null (cdr args))
|
||||||
(concat "-name " (shell-quote-argument s)))
|
args
|
||||||
pat
|
`("(" ,@args
|
||||||
" -o ")
|
,@(apply #'nconc (mapcar (lambda (s) `("-o" "-name" ,s)) pat))
|
||||||
" " (shell-quote-argument ")")))
|
")"))))))
|
||||||
(t
|
|
||||||
(error "Customize `semantic-symref-filepattern-alist' for %s" major-mode))
|
|
||||||
)))
|
|
||||||
|
|
||||||
(defvar grepflags)
|
(defvar grepflags)
|
||||||
(defvar greppattern)
|
(defvar greppattern)
|
||||||
|
@ -147,7 +141,8 @@ This shell should support pipe redirect syntax."
|
||||||
;; Find the root of the project, and do a find-grep...
|
;; Find the root of the project, and do a find-grep...
|
||||||
(let* (;; Find the file patterns to use.
|
(let* (;; Find the file patterns to use.
|
||||||
(rootdir (semantic-symref-calculate-rootdir))
|
(rootdir (semantic-symref-calculate-rootdir))
|
||||||
(filepattern (semantic-symref-derive-find-filepatterns))
|
(filepatterns (semantic-symref-derive-find-filepatterns))
|
||||||
|
(filepattern (mapconcat #'shell-quote-argument filepatterns " "))
|
||||||
;; Grep based flags.
|
;; Grep based flags.
|
||||||
(grepflags (cond ((eq (oref tool :resulttype) 'file)
|
(grepflags (cond ((eq (oref tool :resulttype) 'file)
|
||||||
"-l ")
|
"-l ")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue