运费可以抵扣吗:为tinyos程序添加ctags支持

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 00:44:11
一直感觉看tinyos程序比较辛苦,接口一层层的往外接,半天找不到个尽头,不像C语言,,找函数定义用ctags或者source insight之类的工具甚是方便,一下就跳转过去了。而nesc这种小众语言没这样的神器可供使用,咱只能自己动手了。

使用的工具是vim+ctags。最常用的exuberant ctags据称可以支持34种语言(可惜再多也没有nesc),而且自定义规则也比较方便。为ctags添加新的语言支持方法有两种:在配置文件中定义和改源代码加语法分析模块。

本着不折腾的精神,显然选择比较简单的第一种,步骤如下:
在$HOME下新建.ctags文件,内容如下:

--langdef=nesc
--langmap=nesc:.nc.h
--regex-nesc=/^module[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/^configuration[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/^generic configuration[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/^generic module[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/^interface[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/uses[ \t]+interface[ \t]+[a-zA-Z0-9_]+[a-zA-Z0-9 \t]+as[ \t]+([a-zA-Z0-9_]+)/\1/d,definition/
--regex-nesc=/.*\.([a-zA-Z0-9]+)[ \t]*->.*/\1/d,definition/

定义一个环境变量TOSCTAGS,免的以后敲一长串命令:

export TOSCTAGS="-R --languages=nesc . $TOSDIR"


以Blink为例,进入$TOSROOT/app/Blink,敲以下命令生成tags文件:

ctags $TOSCTAGS

用vim打开BlinkAppC.nc,随便找个组件如BlinkC,按CTRL+],就用跳到BlinkC.nc,按CTRL+T就可以回到BlinkAppC.nc。

这只是一个能凑和着用的方法而已,以后继续改进

另外可以配合grep使用。.vimrc中加入下面这一行:

map grep :grep -InR *.nc *.h:cw



以后在要查找的单词上敲grep,就可以在同一目录下查找含有这一单词的行。

存在问题:
# 不好解决模块命令相同的问题。
# 用gvim跟下去一两层后就找不到tags文件,而用终端下的就不会。
# 在urxvt 终端下的vim用ctrl+鼠标右键返回上一层会报convert selection,然后X无响应,只能ctrl+alt+f1杀死urxvt。解决方法:在$HOME/.Xdefault的URxvt.perl- ext-common: 中加-selection-popup