diff options
Diffstat (limited to 'lisp/cedet/semantic/symref/grep.el')
-rw-r--r-- | lisp/cedet/semantic/symref/grep.el | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el index b326062e97d..521babc1f6e 100644 --- a/lisp/cedet/semantic/symref/grep.el +++ b/lisp/cedet/semantic/symref/grep.el @@ -30,10 +30,6 @@ (require 'semantic/symref) (require 'grep) -(defvar ede-minor-mode) -(declare-function ede-toplevel "ede/files") -(declare-function ede-project-root-directory "ede/files") - ;;; Code: ;;; GREP @@ -86,7 +82,7 @@ Optional argument MODE specifies the `major-mode' to test." " -o ") " \\)")) (t - (error "Configuration for `semantic-symref-tool-grep' needed for %s" major-mode)) + (error "Customize `semantic-symref-filepattern-alist' for %s" major-mode)) ))) (defvar semantic-symref-grep-expand-keywords @@ -119,6 +115,12 @@ GREPPATTERN is the pattern used by grep." ;;(message "New command: %s" cmd) cmd)) +(defcustom semantic-symref-grep-shell "sh" + "The shell command to use for executing find/grep. +This shell should support pipe redirect syntax." + :group 'semantic + :type 'string) + (defmethod semantic-symref-perform-search ((tool semantic-symref-tool-grep)) "Perform a search with Grep." ;; Grep doesn't support some types of searches. @@ -129,19 +131,7 @@ GREPPATTERN is the pattern used by grep." ;; Find the root of the project, and do a find-grep... (let* (;; Find the file patterns to use. (pat (cdr (assoc major-mode semantic-symref-filepattern-alist))) - (rootdir (cond - ;; Project root via EDE. - ((eq (oref tool :searchscope) 'project) - (let ((rootproj (when (and (featurep 'ede) ede-minor-mode) - (ede-toplevel)))) - (if rootproj - (ede-project-root-directory rootproj) - default-directory))) - ;; Calculate the target files as just in - ;; this directory... cause I'm lazy. - ((eq (oref tool :searchscope) 'target) - default-directory) - )) + (rootdir (semantic-symref-calculate-rootdir)) (filepattern (semantic-symref-derive-find-filepatterns)) ;; Grep based flags. (grepflags (cond ((eq (oref tool :resulttype) 'file) @@ -168,10 +158,10 @@ GREPPATTERN is the pattern used by grep." (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 " "| xargs -0 grep -H " grepflags "-e " greppat))) ;;(message "Old command: %s" cmd) - (call-process "sh" nil b nil "-c" cmd) + (call-process semantic-symref-grep-shell nil b nil "-c" cmd) ) (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat))) - (call-process "sh" nil b nil "-c" cmd)) + (call-process semantic-symref-grep-shell nil b nil "-c" cmd)) )) (setq ans (semantic-symref-parse-tool-output tool b)) ;; Return the answer |