summaryrefslogtreecommitdiff
path: root/lisp/cedet/semantic/symref/grep.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/cedet/semantic/symref/grep.el')
-rw-r--r--lisp/cedet/semantic/symref/grep.el30
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