让ctags也支持nesC

3205阅读 0评论2011-08-08 Jelline
分类:嵌入式

摘要:
    ctags目前还不支持nesC语言,但已有牛人定义了新的配置文件,使得ctags部分支持nesC。本文转述其操作过程。   

    ctags目前还不支持nesC语言,阅读TinyOS源码很不方便。今天搜了下,已有牛人定义了新的配置文件,使得ctags部分支持nesC,但并不是很完善。具体操作如下[1]

在vim中,使nesC语言语法高亮,见上一篇博文《让nesC在vim中语法高亮》。

(1) 新建.ctags文件
在用户目录$HOME下,新建.ctags文件,内容如下:
  1. --langdef=nesc
  2. --langmap=nesc:.nc.h
  3. --regex-nesc=/^module[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
  4. --regex-nesc=/^configuration[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
  5. --regex-nesc=/^generic configuration[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
  6. --regex-nesc=/^generic module[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
  7. --regex-nesc=/^interface[ \t]*([a-zA-Z0-9_]+)/\1/d,definition/
  8. --regex-nesc=/uses[ \t]+interface[ \t]+[a-zA-Z0-9_]+[a-zA-Z0-9 \t]+as[ \t]+([a-zA-Z0-9_]+)/\1/d,definition/
  9. --regex-nesc=/.*\.([a-zA-Z0-9]+)[ \t]*->.*/\1/d,definition/
(2) 定义新的环境变量
    因为后续执行ctags,需要带很长的参数,可以把ctags用到的参数定义成一个新的变量,并且添加到~/.bashrc文件的末尾,如下,重启shell。
  1. export TOSCTAGS="-R --languages=nesc . $TOSDIR"
(3) 生成tags文件
定义了TOSCTAGS变量后,生成tags文件就方便多了,如下:
  1. jelline@jelline:~/project/tinyos_stm32/apps/Blink$ ctags $TOSCTAGS
现在可以打开文件vim *.nc,用命令Ctrl+]实现跳转,Ctrl+t返回。
(4) 其他问题
   经过上述操作后,我(Ubuntu 10.04TLS)可以实现跳转。但在另一台机子上(Ubuntu 10.10),当执行命令Ctrl+]跳转,提示如下错误:
  1. E433: 没有 tag 文件
  2. E426: 找不到 tag: TimerMilliC
可以尝试这样解决,在shell下执行cscope -kbR,重新打开文件,再试。

参考资料:
[1] 博文《为tinyos程序添加ctags支持
上一篇:让nesC在vim中语法高亮
下一篇:Ubuntu 10.04开机运行不久自动死机解决方法