梳子是一种本机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 ,默认值)。
上述操作在当前结果上起作用,该结果可以移至下一个( n )或上一个( p ),在此操作中, *Comb*缓冲区已更新以显示包含结果的文件,现在突出显示了结果。仅显示与状态过滤器(与f一起循环)的结果,并显示了注释滤波器Regexp(用F设置)。除此之外, t还催生一个包含当前显示结果列表的缓冲区,这允许搜索片段并在点上跳到结果。
最后,可以将当前的会话保存到s中并加载回审核( l )。
有关所有功能和关键框架的列表,请参见帮助( h )。
梳子使用的模式是Emacs-Fravory Regexps(请参阅(elisp) Regular Expressions信息节点)。 Mx regexp-builder实用程序可用于在执行搜索之前与Regexps进行交互尝试,只需确保使用适当的语法( Cc TAB string )并抛弃周围的环境" 。
梳子还接受可用于生成其他搜索结果的回调列表,例如,来自外部刺激工具。这些功能将使用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-keymap来改变*Comb*缓冲液中的所有键符号。例如,使用箭头导航结果:
( 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 )
; ; ...请参阅comb-default-keybindings alist,以获取默认键键的功能。