Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1672599
  • 博文数量: 124
  • 博客积分: 4078
  • 博客等级: 中校
  • 技术积分: 3943
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:28
个人简介

新博客:http://sparkandshine.net/

文章分类

全部博文(124)

分类: 嵌入式

2011-08-08 19:33:37

摘要:
    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,重新打开文件,再试。

参考资料:
阅读(2977) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~