Wie kann ich M-x rgrep mit dem Befehl git grep in Emacs verwenden?

8

Ich möchte den normalen M-x rgrep -Workflow verwenden (Eingabe eines Pfades, eines Musters und Anzeige der verknüpften Ergebnisse in einem *grep* -Puffer), aber mit git grep anstelle des normalen find -Befehls:

%Vor%

Ich habe versucht, die Variable grep-find-command direkt zu setzen:

%Vor%

und mit grep-apply-setting

%Vor%

aber keiner scheint zu funktionieren. Wenn ich M-x rgrep starte, wird nur der gleiche find -Befehl verwendet wie zuvor.

Tatsächlich bin ich mir ziemlich sicher, dass rgrep nicht einmal die Variable grep-find-command benutzt, aber ich kann nicht herausfinden, wo der Befehl gespeichert ist

>     
Tikhon Jelvis 02.09.2014, 22:38
quelle

2 Antworten

12

Was ist mit M-x vc-git-grep ( C-x v f )? Tut das nicht, was Sie brauchen?

Es fordert Sie auf:

  • Suchmuster (Standard: Token an Punkt oder Region)
  • Dateinamenmuster (Standard: aktuelles Dateisuffix)
  • Basissuchverzeichnis (Standard, aktuelles Verzeichnis)

Funktioniert gut für mich.

(obwohl ich das gesagt habe, bemerke ich jetzt, dass ich die Funktion beraten musste, damit sie Farben richtig macht. Es gibt vielleicht einen besseren Weg, dies zu tun:

%Vor%

)

    
James Ferguson 03.09.2014 21:16
quelle
11

Stellt sich heraus, dass die relevante Variable tatsächlich grep-find-template ist. Dies nimmt einen Befehl mit einigen zusätzlichen Parametern:

  • <D> für das Basisverzeichnis
  • <X> für die Suchoptionen zum Beschränken der Verzeichnisliste
  • <F> für die Suchoptionen, um die übereinstimmenden Dateien zu begrenzen
  • <C> für den Ort, an dem -i eingefügt werden soll, wenn bei der Suche die Groß- und Kleinschreibung nicht beachtet wird.
  • <R> für den regulären Ausdruck, nach dem
  • gesucht werden soll

Die Standardvorlage sieht folgendermaßen aus:

%Vor%

Damit der Befehl mit git grep funktioniert, musste ich einige Optionen übergeben, um sicherzustellen, dass git keinen Pager verwendet und die Objekte im richtigen Format ausgibt. Ich habe auch ein paar der Vorlagenoptionen ignoriert, weil git grep bereits die gesuchten Dateien auf natürliche Weise einschränkt. Es macht jedoch wahrscheinlich Sinn, sie irgendwie wieder hinzuzufügen.

Mein neuer Wert für grep-find-template ist

%Vor%

Nach einigen oberflächlichen Tests scheint es zu funktionieren.

Beachten Sie, dass Sie diese Variable mit grep-apply-setting setzen und nicht direkt ändern sollten:

%Vor%

Da ich nicht zwei der Eingänge zu rgrep verwende, habe ich meinen eigenen Befehl git-grep geschrieben, der vorübergehend die alte grep-find-template speichert und sie durch meine ersetzt. Das fühlt sich ein bisschen hacky an, scheint aber auch zu funktionieren.

%Vor%     
Tikhon Jelvis 02.09.2014 22:49
quelle

Tags und Links