Stellt sich heraus die relevante Variable ist eigentlich grep-find-template
. Dies nimmt einen Befehl mit einigen zusätzlichen Parametern:
<D>
für das Basisverzeichnis
<X>
für die Entdeckung Optionen Verzeichnisliste
<F>
für die Entdeckung Optionen zu beschränken, um die Dateien
<C>
angepasst zu begrenzen für den Ort -i
zu setzen, wenn die Suche case-insensitive
<R>
für den regulären Ausdruck für die Suche nach
Die Standardvorlage wie folgt aussieht:
find . <X> -type f <F> -exec grep <C> -nH -e <R> {} +
Um den Befehl Arbeit mit git grep
zu machen, hatte ich in ein paar Optionen zu übergeben, um sicherzustellen, git
keinen Pager nicht verwendet und gibt Dinge in der richtiges Format. Ich habe auch ein paar der Vorlagenoptionen ignoriert, weil git grep
bereits die Dateien auf natürliche Weise beschränkt. Es macht jedoch wahrscheinlich Sinn, sie irgendwie wieder hinzuzufügen.
Mein neuer Wert für grep-find-template
ist
git --no-pager grep --no-color --line-number <C> <R>
Nach einigen oberflächlichen Tests, es scheint zu funktionieren.
Beachten Sie, dass diese Variable sollte grep-apply-setting
mit, anstatt es direkt zu modifizieren:
(grep-apply-setting 'grep-find-template "git --no-pager grep --no-color --line-number <C> <R>")
Da ich nicht zwei der Eingänge rgrep
nicht verwenden, schrieb ich meine eigenen git-grep
Befehl, der vorübergehend die alte stashes grep-find-template
und ersetzt es durch meine. Das fühlt sich ein wenig hacky an, scheint aber auch zu funktionieren.
(defcustom git-grep-command "git --no-pager grep --no-color --line-number <C> <R>"
"The command to run with M-x git-grep.")
(defun git-grep (regexp)
"Search for the given regexp using `git grep' in the current directory."
(interactive "sRegexp: ")
(unless (boundp 'grep-find-template) (grep-compute-defaults))
(let ((old-command grep-find-template))
(grep-apply-setting 'grep-find-template git-grep-command)
(rgrep regexp "*" "")
(grep-apply-setting 'grep-find-template old-command)))
Oh Ja, ich wusste eigentlich nichts über diesen Befehl. Für mich hat es auch das gleiche Problem mit Paging, anstatt die Ergebnisse direkt zurück zu geben. Das könnte mit demselben Ratschlag behoben werden. –
Und es ist auch nicht rekursiv mit Standard 'grep-files-aliases'-Mustern. Benötigt, um einen Hinweis dafür hinzuzufügen. – eush77