Emacs 你在你的标准ETag里放了什么--regex=。。电话?

Emacs 你在你的标准ETag里放了什么--regex=。。电话?,emacs,tags,elisp,Emacs,Tags,Elisp,当我为一个新的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…实际上是用来定义一个函数的,也是一个交互式函数 etag的手册页面建议我可以用一些regex参数来解决我的问题。最终,

当我为一个新的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…
实际上是用来定义一个函数的,也是一个交互式函数

etag的手册页面建议我可以用一些regex参数来解决我的问题。最终,我成功地找到了正确的参数语法和顺序

etags --regex='{lisp}/(fset.*/' foo-mode.el
我现在正在考虑为etag开发和维护我自己的依赖于用户的regex扩展列表。 可以启动并改进上述正则表达式,使其与
(fset..
行中的较少部分匹配

我现在的问题是:您通常希望etags为lisp和elisp代码索引哪些其他模式?请分享好的想法!在web上找到的大多数示例都在etags手册页中,其中不包括一个lisp示例:-(

PS:在这台机器上,
etags--version
上写着“etags(GNU Emacs 22.1)”。

我在以下位置找到了一些示例:

以下是我正在使用的:

   --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/'

一个相关的问题(也没有答案):这并没有回答您的
etags
问题,而是关于:
fset
-最好使用
defalias
,因为后者处理某些符号属性并用定义的位置更新
加载历史记录(我假设它也会被
etag
拾取)。