emacs 有一个很实用的函数原型提示的扩展,名叫msf-abbrev。我最近在学习perl,心血来潮,就做了一个基于这个扩展的扩展。
先说一下这个msf-abbrev,这是这家伙的主页:http://www.bloomington.in.us/~brutt/msf-abbrev.html。
他利用emacs的缩写绑定功能对一大堆库函数和诸如for,if之类的语句进行了绑定。绑定规则是在原本的函数名称后面加个x。
比如你输入memsetx,再键入回车或空格,emacs中就会提示给你C语言的标准库函数memset的参数类型,写入参数时可以用Tab进行缩进。
他主页上有个很眩的示例,点击主页上的demo可以观看。
我并不很精通emacs,只是按照主页上的要求下载了相关的lisp程序和一个名叫mode-abbrevs的包就可以使用提示函数原型的功能了。
接下来我发现,在那个mode-abbrevs包的里面有一大堆的子目录,比如我用C语言工作,就浏览了一下c-mode那个目录,发现里面的东西其实很简单。比如memsetx这个文件,里面就这么一行话:
memset(<field "void * s">, <field "int c">, <field "size_t n">);
稍微一猜就明白它是怎么工作的了。
接下来我又试了一下,仿照他自带文件的样子自己写个文件,做个自定义的函数,放到c-mode目录下,重启emacs后也能实现函数原型提示的功能。
于是我就写了这么个perl程序,给定一个c语言的头文件,这个perl程序会把所有在头文件中进行声明的函数提取出来,做成符合msf-abbrev格式要求的文件,把这些文件拷贝到mode-abbrevs/c-mode目录下,就可以在emacs中显示这些函数的原型提示了。
比如你有一个函数:tx_thread_create();
在emacs中键入txthreadcreatex回车或空格,就会蹦出这个函数的原型。当然,前提是你事先已经能正常使用msf-abbrev了。
我这个perl程序很简单,名字叫func_declare.pl。
你只要在终端中进入func_declare.pl的目录下,然后键入perl ./func_declare.pl <file_name>
就可以把指定的c语言头文件送给这个小小的perl程序进行分析了,它会在当前目录下输出符合msf-abbrev要就的文件。
emacs 函数原型提示的扩展
-
- 帖子: 57
- 注册时间: 2008-09-13 23:53
emacs 函数原型提示的扩展
- 附件
-
- func_declare.pl.tar.gz
- (895 Bytes) 已下载 87 次
- jarodlau
- 帖子: 501
- 注册时间: 2005-09-06 20:34
- 联系: