打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
为tinyos程序添加ctags支持
一直感觉看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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Vim and Ctags
嵌入式Linux系列第19篇:如何高效的阅读Linux源码
掌握 PHP 中的正则表达式
关于正则的一点总结
用Gvim建立IDE编程环境 (Windows篇)
Vim as Python IDE on windows
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服