Le peigne est une solution Emacs Lisp native pour rechercher, parcourir et annoter les occurrences d'expressions régulières dans les fichiers. L'interface interactive permet d'effectuer une classification exhaustive de tous les résultats pour exclure les faux positifs et associe des correspondances appropriées pendant l'audit du code.
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 )Il s'agit d'une procédure à pas rapide de certaines des caractéristiques du peigne. Pour effectuer une recherche:
Passez au répertoire racine du référentiel que vous souhaitez auditer;
Exécutez Mx comb ;
Appuyez sur c pour entrer le mode de configuration;
Remplissez les champs souhaités et effectuez enfin une recherche.
S'il y a des résultats à parcourir, le tampon *Comb* s'affiche, à partir d'ici, il est possible d'annoter les résultats ( ! ) Et de modifier leur statut en approuvé ( a / A ), rejeté ( r / R ) ou indécis ( u / U , par défaut).
Les actions ci-dessus fonctionnent sur le résultat actuel qui peut être déplacée vers le prochain ( n ) ou le précédent ( p ), ce qui le faisait, le tampon *Comb* est mis à jour pour afficher le fichier qui contient le résultat, qui est maintenant mis en évidence. Seuls les résultats correspondant au filtre d'état (cyclé avec f ) et le filtre Regexp (défini avec F ) sont affichés. En plus de cela, t engendre un tampon contenant la liste des résultats actuellement affichés, cela permet de rechercher les extraits et de sauter au résultat au point.
Enfin, il est possible d'enregistrer la session en cours pour fichier ( s ) et de le refuser pour reprendre l'audit ( l ).
Voir l'aide ( h ) pour une liste de toutes les fonctionnalités et des clés.
Les modèles utilisés par PEPS sont les regexps à saveur d'EMACS (voir le nœud d'informations (elisp) Regular Expressions ). L'utilitaire Mx regexp-builder peut être utilisé pour essayer de manière interactive les regexps avant d'effectuer une recherche, assurez-vous simplement d'utiliser la syntaxe appropriée ( Cc TAB string ) et laisser de côté les environs " .
Le peigne accepte également une liste de rappels qui peuvent être utilisés pour générer des résultats de recherche supplémentaires, par exemple, provenant d'un outil de liaison externe. Ces fonctions sont exécutées avec le default-directory définie sur le répertoire racine et le tampon actuel défini sur le fichier actuellement traité, ils acceptent un chemin relatif comme argument et doivent renvoyer une liste de gammes dans le formulaire (BEGIN . END) .
Voici un exemple de rappel:
( 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 ))))) Les erreurs dans l'exécution du rappel ne sont pas fatales, elles sont simplement signalées dans le tampon *Messages* .
Certains faces et options peuvent être configurées, jetez un œil au groupe de personnalisation comb ( Mx customize-group RET comb ).
De plus, tous les liaisons de clés du tampon *Comb* peuvent être modifiés en modifiant le keymap comb-keymap . Par exemple, pour utiliser les flèches pour naviguer dans l'utilisation des résultats:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )Cela ne dénide pas les clés d'origine. Il peut être pratique de remplacer complètement le keymap à la place afin d'éviter les collisions avec les modes existants:
( 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 )
; ; ... Voir le comb-default-keybindings Alist pour obtenir les fonctions utilisées par les clés par défaut.