ComM ist eine native EMACS -LISP -Lösung für die Suche, Durchsuchen und Annotate von regulären Ausdrücken in Dateien. Die interaktive Schnittstelle ermöglicht es, eine umfassende Klassifizierung aller Ergebnisse durchzuführen, um falsch positive und ordnungsgemäße Übereinstimmungen während des Code -Audits auszuschließen.
M-x package-install RET comb
M-x package-install-file RET /path/to/comb/
( add-to-list 'load-path " /path/to/comb/ " )
( require 'comb )Dies ist eine kurze Überlassung über einige der Kammfunktionen. Um eine Suche durchzuführen:
Gehen Sie zum Root -Verzeichnis des Repositorys, das Sie ausprüflen möchten.
Mx comb laufen;
Drücken Sie c , um den Konfigurationsmodus einzugeben.
Füllen Sie die gewünschten Felder und führen Sie schließlich eine Suche durch.
Wenn einige Ergebnisse zu durchsuchen sind, wird der *Comb* -Puffer angezeigt. Von hier aus ist es möglich, die Ergebnisse ( ! ) Und Ändern des Status in genehmigten ( a / A ), abgelehnt ( r / R ) oder unentschlossen ( u / U , Standard).
Die oben genannten Aktionen funktionieren zum aktuellen Ergebnis, das auf den nächsten ( n ) oder das vorherige ( p ) verschoben werden kann. Dadurch wird der *Comb* -Puffer aktualisiert, um die Datei anzuzeigen, die das Ergebnis enthält, das jetzt hervorgehoben wird. Es werden nur Ergebnisse angezeigt, die mit dem Statusfilter (mit f ) und den Notizenfilter -Regexp (eingestellt mit F ) angezeigt werden. Darüber hinaus erzeugt t einen Puffer, der die Liste der aktuell angezeigten Ergebnisse enthält. Dadurch können Sie die Snippets durchsuchen und am Punkt zum Ergebnis springen.
Schließlich ist es möglich, die aktuelle Sitzung in s zu speichern und sie zurück zu laden, um das Audit ( l ) wieder aufzunehmen.
Eine Liste aller Funktionen und Schlüsselbindungen finden Sie in der Hilfe ( h ).
Die von ComM verwendeten Muster sind Regexps mit EMACS-Geschmack (siehe (elisp) Regular Expressions ). Das Dienstprogramm Mx regexp-builder kann verwendet werden, um die Regexps vor der Durchführung einer Suche interaktiv auszuprobieren. Stellen Sie einfach sicher, dass Sie die richtige Syntax ( Cc TAB string ) verwenden und die Umgebung weglassen "
ComM akzeptiert auch eine Liste von Rückrufen, mit denen zusätzliche Suchergebnisse, z. B. aus einem externen Lining -Tool, generiert werden können. Diese Funktionen werden mit dem auf das Stammverzeichnis festgelegten default-directory ausgeführt und der aktuelle Puffer, der in die aktuell verarbeitete Datei eingestellt ist, sie akzeptieren einen relativen Pfad als Argument und müssen eine Liste von Bereichen im Formular zurückgeben (BEGIN . END) .
Hier ist ein Beispiel für einen Rückruf:
( defun my-callback ( filename )
" Match only the first occurrence of 'qwerty'. "
( when ( re-search-forward " qwerty " nil t )
( list ( cons ( match-beginning 0 ) ( match-end 0 ))))) Fehler in der Rückrufausführung sind nicht tödlich, sie werden nur im *Messages* Puffer gemeldet.
Einige Gesichter und Optionen können konfiguriert werden. Schauen Sie sich die comb Anpassungsgruppe ( Mx customize-group RET comb ) an.
Zusätzlich können alle Schlüsselbindungen im *Comb* -Puffer durch Ändern des comb-keymap -Keymap geändert werden. Zum Beispiel, um die Pfeile zu verwenden, um die Ergebnisse zu navigieren: Verwendung:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )Dies entbindet jedoch nicht die ursprünglichen Schlüsselbindungen. Es kann bequem sein, stattdessen die Keymap vollständig zu ersetzen, um Kollisionen mit vorhandenen Modi zu vermeiden:
( setq comb-keymap ( make-sparse-keymap ))
( define-key comb-keymap ( kbd " x " ) 'comb-quit )
( define-key comb-keymap ( kbd " ? " ) 'comb-help )
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )
; ; ... Siehe den Alist von comb-default-keybindings um die von den Standard-Schlüsselbindungen verwendeten Funktionen zu erhalten.