(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.")
|
||||
|
||||
(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.
|
||||
Looks first in `semantic-symref-filepattern-alist'. If it is not
|
||||
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)
|
||||
;; No hit, try auto-mode-alist.
|
||||
(dolist (X auto-mode-alist)
|
||||
(when (eq (cdr X) mode)
|
||||
;; Only take in simple patterns, so try to convert this one.
|
||||
(let ((Xp
|
||||
(cond ((string-match "\\\\\\.\\([^\\'>]+\\)\\\\'" (car X))
|
||||
(concat "*." (match-string 1 (car X))))
|
||||
(t nil))))
|
||||
(when Xp
|
||||
(setq pat (cons Xp pat))))
|
||||
)))
|
||||
(when (and (eq (cdr X) mode)
|
||||
;; Only take in simple patterns, so try to convert this one.
|
||||
(string-match "\\\\\\.\\([^\\'>]+\\)\\\\'" (car X)))
|
||||
(push (concat "*." (match-string 1 (car X))) pat))))
|
||||
;; Convert the list into some find-flags.
|
||||
(cond ((= (length pat) 1)
|
||||
(concat "-name " (shell-quote-argument (car pat))))
|
||||
((consp pat)
|
||||
(concat (shell-quote-argument "(") " "
|
||||
(mapconcat (lambda (s)
|
||||
(concat "-name " (shell-quote-argument s)))
|
||||
pat
|
||||
" -o ")
|
||||
" " (shell-quote-argument ")")))
|
||||
(t
|
||||
(error "Customize `semantic-symref-filepattern-alist' for %s" major-mode))
|
||||
)))
|
||||
(if (null pat)
|
||||
(error "Customize `semantic-symref-filepattern-alist' for %S"
|
||||
major-mode)
|
||||
(let ((args `("-name" ,(car pat))))
|
||||
(if (null (cdr args))
|
||||
args
|
||||
`("(" ,@args
|
||||
,@(apply #'nconc (mapcar (lambda (s) `("-o" "-name" ,s)) pat))
|
||||
")"))))))
|
||||
|
||||
(defvar grepflags)
|
||||
(defvar greppattern)
|
||||
|
@ -147,7 +141,8 @@ This shell should support pipe redirect syntax."
|
|||
;; Find the root of the project, and do a find-grep...
|
||||
(let* (;; Find the file patterns to use.
|
||||
(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.
|
||||
(grepflags (cond ((eq (oref tool :resulttype) 'file)
|
||||
"-l ")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue