当我为一个新的Emacs“foo模式”编写一些elisp代码时,它包含了如下一行
(fset 'foo (if safe-mode 'fast-over-open-gently 'fast-over-open-everything-and-not-care)))而以后用etags foo-mode.el索引代码,etags将不会索引foo的定义。这很烦人,因为(fset ...实际上是用来在这里定义一个函数的,而且也是一个交互式的函数。
etags的手册页面表明,我可以使用一些regex参数来解决我的问题。最后,我无意中找到了正确的参数语法和顺序
etags --regex='{lisp}/(fset.*/' foo-mode.el我现在正在考虑开发和维护我自己的etags用户相关的regex扩展列表。可以启动和改进上述正则表达式,使其与(fset ..行的匹配更少。
我现在的问题是:您通常希望etags为lisp和elisp代码索引其他模式吗?分享好主意!在web上发现的大多数示例都在etags页面中,并且它们不包括一个lisp示例:-(
PS:在这台机器上,etags --version写着"etags (GNUEmacs22.1)“。
发布于 2014-08-13 16:07:19
我在以下网站找到了一些例子:https://stuff.mit.edu/afs/athena/astaff/source/src-9.0/third/librep/Makefile.in
下面是我正在使用的那些:
--regex='/[ \t]+([ \t]*defun[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'
--regex='/[ \t]+([ \t]*define[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'
--regex='/[ \t]+([ \t]*defmacro[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'
--regex='/[ \t]+([ \t]*defconst[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'
--regex='/[ \t]+([ \t]*defvar[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'或者,只捕获"def“的内容非常有用:
--regex='/[ \t]+([ \t]*def[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'https://stackoverflow.com/questions/21283687
复制相似问题