Browse Source

overall fix of rgrep command

pull/1/head
10sr 11 years ago
parent
commit
8add2152cd
1 changed files with 148 additions and 84 deletions
  1. +148
    -84
      emacs.el

+ 148
- 84
emacs.el View File

@@ -2051,96 +2051,160 @@ ARG is ignored."
"")
"memo.txt"))))

(defvar my-rgrep-gitgrep
"git --no-pager -c color.grep=false grep -nH -e "
"Grep command for git grep.")

(defvar my-rgrep-ag
"ag --nocolor --nogroup --nopager "
"Grep command for ag")

(defvar my-rgrep-ack
"ack --nocolor --nogroup --nopager "
"Grep command for ack")

(defvar my-rgrep-global
"global --result grep "
"Grep command for global")

(defvar my-rgrep-grep
(concat "find . "
"-path '*/.git' -prune -o "
"-path '*/.svn' -prune -o "
"-type f -print0 | "
"xargs -0 -e grep -nH -e ")
"Grep command for grep")

(defun my-rgrep-grep-command ()
"Return recursive grep command for current directory."
(if (and (require 'gtags nil t)
(gtags-get-rootpath))
my-rgrep-global
(if (eq 0
(shell-command "git rev-parse --git-dir"))
my-rgrep-gitgrep
(if (executable-find "ag")
my-rgrep-ag
(if (executable-find "ack")
my-rgrep-ack
my-rgrep-grep)))))
;; (defvar my-rgrep-gitgrep
;; "git --no-pager -c color.grep=false grep -nH -e "
;; "Grep command for git grep.")

;; (defvar my-rgrep-ag
;; "ag --nocolor --nogroup --nopager "
;; "Grep command for ag")

;; (defvar my-rgrep-ack
;; "ack --nocolor --nogroup --nopager "
;; "Grep command for ack")

;; (defvar my-rgrep-global
;; "global --result grep "
;; "Grep command for global")

;; (defvar my-rgrep-grep
;; (concat "find . "
;; "-path '*/.git' -prune -o "
;; "-path '*/.svn' -prune -o "
;; "-type f -print0 | "
;; "xargs -0 -e grep -nH -e ")
;; "Grep command for grep")

(defvar my-rgrep-alist
`(
;; gnu global
("global"
(and (require 'gtags nil t)
(gtags-get-rootpath))
"global --result grep ")

;; git grep
("gitgrep"
(eq 0
(shell-command "git rev-parse --git-dir"))
"git --no-pager -c color.grep=false grep -nH -e ")

;; the silver searcher
("ag"
(executable-find "ag")
"ag --nocolor --nogroup --nopager ")

;; ack
("ack"
(executable-find "ack")
"ack --nocolor --nogroup --nopager ")

;; grep
("grep"
t
,(concat "find . "
"-path '*/.git' -prune -o "
"-path '*/.svn' -prune -o "
"-type f -print0 | "
"xargs -0 grep -nH -e "))
)
"Alist of rgrep command.
Each element is in the form like (NAME SEXP COMMAND), where SEXP returns the
condition to choose COMMAND when evaluated.")

(defvar my-rgrep-default nil
"Default command name for my-rgrep.")

(defun my-rgrep-grep-command (&optional name alist)
"Return recursive grep command for current directory or nil.
If NAME is given, use that without testing.
Commands are searched from ALIST."
(if alist
(if name
;; if name is given search that from alist and return the command
(nth 2 (assoc name
alist))

;; if name is not given try test in 1th elem
(let ((car (car alist))
(cdr (cdr alist)))

(if (eval (nth 1 car))
;; if the condition is true return the command
(nth 2 car)

;; try next one
(and cdr
(my-rgrep-grep-command name cdr)))))

;; if alist is not given set default value
(my-rgrep-grep-command name my-rgrep-alist)))

(my-rgrep-grep-command "ag" nil)

(defun my-rgrep (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
(my-rgrep-grep-command)
'grep-find-history)))
"My recursive grep. Run COMMAND-ARGS."
(interactive (let ((cmd (my-rgrep-grep-command my-rgrep-default
nil)))
(if cmd
(list (read-shell-command "grep command: "
cmd
'grep-find-history))
(error "my-rgrep: Command for rgrep not found")
)))
(compilation-start command-args
'grep-mode))

(defun my-rgrep-symbol-at-point (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
(concat (my-rgrep-grep-command)
" "
(thing-at-point 'symbol))
'grep-find-history)))
(compilation-start command-args
'grep-mode))
;; (defun my-rgrep-symbol-at-point (command-args)
;; "My recursive grep. Run COMMAND-ARGS."
;; (interactive (list (read-shell-command "grep command: "
;; (concat (my-rgrep-grep-command)
;; " "
;; (thing-at-point 'symbol))
;; 'grep-find-history)))
;; (compilation-start command-args
;; 'grep-mode))

(defun my-rgrep-ack ()
"My recursive grep by ack."
(interactive)
(let ((my-rgrep-default "ack"))
(if (called-interactively-p 'any)
(call-interactively 'my-rgrep)
(error "Not intended to be called noninteractively. Use `my-rgrep'"))))

(defun my-rgrep-ag ()
"My recursive grep by ack."
(interactive)
(let ((my-rgrep-default "ag"))
(if (called-interactively-p 'any)
(call-interactively 'my-rgrep)
(error "Not intended to be called noninteractively. Use `my-rgrep'"))))

(defun my-rgrep-gitgrep ()
"My recursive grep by ack."
(interactive)
(let ((my-rgrep-default "gitgrep"))
(if (called-interactively-p 'any)
(call-interactively 'my-rgrep)
(error "Not intended to be called noninteractively. Use `my-rgrep'"))))

(defun my-rgrep-grep ()
"My recursive grep by ack."
(interactive)
(let ((my-rgrep-default "grep"))
(if (called-interactively-p 'any)
(call-interactively 'my-rgrep)
(error "Not intended to be called noninteractively. Use `my-rgrep'"))))

(defun my-rgrep-global ()
"My recursive grep by ack."
(interactive)
(let ((my-rgrep-default "global"))
(if (called-interactively-p 'any)
(call-interactively 'my-rgrep)
(error "Not intended to be called noninteractively. Use `my-rgrep'"))))

(defun my-rgrep-ack (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-ack
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-ag (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-ag
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-gitgrep (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-gitgrep
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-global (command-args)
"My recursive grep by gnu global."
(interactive (list (read-shell-command "grep command: "
my-rgrep-global
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-grep (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-grep
'grep-find-history)))
(my-rgrep command-args))

(define-key ctl-x-map "s" 'my-rgrep)



Loading…
Cancel
Save