Check - это собственное решение EMACS LISP для поиска, просмотра и аннотирования вхождения регулярных выражений в файлах. Интерактивный интерфейс позволяет выполнить исчерпывающую классификацию всех результатов, чтобы исключить ложные срабатывания и оценивает надлежащие совпадения во время аудита кода.
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 )Это быстрое прохождение некоторых особенностей гребня. Чтобы выполнить поиск:
Перейдите к корневому каталогу репозитория, который вы хотите проверить;
запустить Mx comb ;
Нажмите c , чтобы ввести режим конфигурации;
Заполните желаемые поля и, наконец, выполните поиск.
Если есть некоторые результаты для просмотра, то отображается буфер *Comb* , отсюда можно аннотировать результаты ( ! ) И изменить их статус на утвержденный ( a / A ), отклонен ( r / R ) или не определился ( u / U , Default).
Приведенные выше действия работают над текущим результатом, который может быть перенесен в следующее ( n ) или предыдущее ( p ), при этом буфер *Comb* обновляется, чтобы показать файл, который содержит результат, который теперь выделяется. Отображаются только результаты, соответствующие фильтру статуса (цикл с f ), и отображение Regexp фильтра Notes (установлено с F ). В дополнение к этому, t появляется в буфере, содержащем список отображаемых в настоящее время результатов, это позволяет исследовать фрагменты и прыгать в результат в точке.
Наконец, можно сохранить текущий сеанс в файла ( s ) и загрузить его обратно, чтобы возобновить аудит ( l ).
Смотрите помощь ( h ) для списка всех функций и связей с ключами.
Паттерны, используемые расческами, представляют собой eMACS-ароматизированные регуляции (см. (elisp) Regular Expressions ). Утилита Mx regexp-builder может использоваться для интерактивной попытки REGEXP перед выполнением поиска, просто обязательно используйте правильный синтаксис ( Cc TAB string ) и оставьте окружающее " .
Check также принимает список обратных вызовов, которые можно использовать для генерации дополнительных результатов поиска, например, поступающего из инструмента внешнего подножки. Эти функции выполняются с помощью default-directory установленной в корневом каталоге, и текущего буфера, установленного в обработанном в настоящее время файл, они принимают относительный путь в качестве аргумента и должны вернуть список диапазонов в форме (BEGIN . END) .
Вот пример обратного вызова:
( 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 ))))) Ошибки в исполнении обратного вызова не являются фатальными, они просто сообщаются в буфере *Messages* .
Некоторые лица и параметры могут быть настроены, взгляните на группу comb ( Mx customize-group RET comb ).
Кроме того, все соединения ключей в буфере *Comb* могут быть изменены путем изменения comb-keymap Keymap. Например, для использования стрел для навигации по использованию результатов:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )Это не раскрывает исходные связки клавиш, хотя. Вместо этого может быть удобно полностью заменить Keymap, чтобы избежать столкновений с существующими режимами:
( 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 )
; ; ... См. Alist comb-default-keybindings чтобы получить функции, используемые в связи с ключами по умолчанию.