运费可以抵扣吗:为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
使用的工具是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
tinyos简介
用两种方法在“开始”中的“程序”添加程序notepad.exe,名称取为“文本编辑器”
我的电脑为什在控制面板--删除添加程序中看不到所有的程序?
为什么简体的2KP的添加删除程序界面为英文了呢
为什麽电脑里的添加和删除程序打不开?
添加删除程序里有一片项目呈现为很长的黑影,望高手解决
无法使用控制面板的添加和删除程序,显示为value failed at 201
添加、删除程序打不开
添加或删除程序
添加/删除程序
如何添加“启动”程序?
如何添加声卡程序
关于《添加,删除程序》
添加删除程序问题
添加/删除程序
程序添加不了??
添加删除程序
windows 添加删除程序
关于添加删除程序!!!!!!!!
右键添加程序?
禁止添加程序
添加或删除程序。。。
添加删除程序
添加删除程序问题~