首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你在你的标准电子标签里放了什么--regex=..。打电话?

你在你的标准电子标签里放了什么--regex=..。打电话?
EN

Stack Overflow用户
提问于 2014-01-22 13:00:51
回答 1查看 231关注 0票数 3

当我为一个新的Emacs“foo模式”编写一些elisp代码时,它包含了如下一行

代码语言:javascript
复制
(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参数来解决我的问题。最后,我无意中找到了正确的参数语法和顺序

代码语言:javascript
复制
etags --regex='{lisp}/(fset.*/' foo-mode.el

我现在正在考虑开发和维护我自己的etags用户相关的regex扩展列表。可以启动和改进上述正则表达式,使其与(fset ..行的匹配更少。

我现在的问题是:您通常希望etags为lisp和elisp代码索引其他模式吗?分享好主意!在web上发现的大多数示例都在etags页面中,并且它们不包括一个lisp示例:-(

PS:在这台机器上,etags --version写着"etags (GNUEmacs22.1)“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-13 16:07:19

我在以下网站找到了一些例子:https://stuff.mit.edu/afs/athena/astaff/source/src-9.0/third/librep/Makefile.in

下面是我正在使用的那些:

代码语言:javascript
复制
   --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“的内容非常有用:

代码语言:javascript
复制
   --regex='/[ \t]+([ \t]*def[ \t]+(?[ \t]*\([^ \t)]+\)/\1/'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21283687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档