问题: CSearch 宏时。

RuntimeException: Could not find file with URI because it is a relative path, and no base URI was provided.



调试准备

"verbose message

let g:EclimLogLevel = 10

"重定向vim messages

:redir >xx.txt

:cmd

:redir END



改动和编译

git clone git://github.com/ervandew/eclim.git

cd eclim

ant "-Declipse.home=E:/eclipse" "-Dvim.files=E:/Program Files/Vim/vimfiles"

Unattended (automated) install

java -Dvim.files=$HOME/.vim -Declipse.home=/opt/eclipse -jar eclim_2.3.4.jar 



解决过程

我对照了函数是能够的:

(0s) system: "/mnt/eclipse/plugins/org.eclim_2.3.4/bin/eclim" --nailgun-port 9091 -editor vim -command c_search -n "test_cdt" -f "mod.c" -o 75 -l 4 -e utf-8 

可是宏就不行:

(0s) system: "/mnt/eclipse/plugins/org.eclim_2.3.4/bin/eclim" --nailgun-port 9091 -editor vim -command c_search -n "test_cdt" -f "mod.c" -o 106 -l 3 -e utf-8 

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalArgumentException: File '/test_cdt/mod.c' not found.

^Iat org.eclim.util.file.Position.fromOffset(Position.java:78)

^Iat org.eclim.plugin.cdt.command.search.SearchCommand.executeElementSearch(SearchCommand.java:191)

^Iat org.eclim.plugin.cdt.command.search.SearchCommand.execute(SearchCommand.java:148)

...

在windows xp上执行:

(0s) nailgun.py (port: 9091): -editor vim -command c_search -n "test_cdt" -f "mod.c" -o 106 -l 3 -e utf-8 



"(0s) nailgun.py (port: 9091): " 前缀是client/python/nailgun.vim里面加上的,里面关键的一句:

(retcode, result) = client.send(command)

是把命令消息发给eclimd (todo: 怎样与这个daemon交互的)。

-o -l 參数的含义是在lang.vim/eclim#lang#Search里面(引用utils.vim [1])。意思是磁盘文件里当前word的偏移字节和长度。

CSsearch 的其它參数请參考[2]。



两个命令行没有本质差异。那在vimfiles层面应该没有问题了,应该到eclim

java文件中面找。于是git 下载了代码,grep了 c_search, 找到一个

SearchCommandTest.java 里面有个"-t macro"! 我赶紧试了下:

:CSearch MY_MACRO -t macro 果然能够了。



grep MACRO , [3].getType()引用了TYPE_MACRO。JavaSearch跟到executePatternSearch()终于被./org.eclim/java/org/eclim/command/Main.java调。

executePatternSearch() 调cdt的 query.run() --> 取IIndex index =

CCorePlugin.getIndexManager().getIndex(projects,

IIndexManager.ADD_EXTENSION_FRAGMENTS_SEARCH)。然后回调

CSearchPatternQuery.runWithIndex()[4] 依据-t 比方 FIND_FUNCTION 过滤结果。



我打算跟踪到cdt.jar里面,大致了解index什么。只是cdt又是还有一个大project,暂且打住,以后有机会再探究;我仅仅知道在[3]里面,FIND_MACRO和FIND_FUNCTION的处理路径不同。

其它: [5] 里面给了一种办法,只是我数了要改5-6处,况且不一定有效。

參考

[1] vim 内置函数 http://bbs.chinaunix.net/thread-2192634-1-1.html

[2] Search 參数 vimfiles/./eclim/autoload/eclim/c/search.vim

[3] eclim/plugin/cdt/command/search/SearchCommand.java

[4] org\eclipse\cdt\internal\ui\search\CSearchPatternQuery.java

[5]http://stackoverflow.com/questions/7998574/apache-commons-vfs-cannot-resolvefile

最新文章

  1. java常用的设计模式
  2. 关于我-dinphy简介
  3. here 文档
  4. 关于antlr包删除问题
  5. sql server 导出的datetime结果 CAST(0x00009E0E0095524F AS DateTime) 如何向mysql,oracle等数据库进行转换
  6. PDF 补丁丁 0.4.1.804 测试版发布:合并文件夹的图片和PDF文件,自由生成多层次书签
  7. 毕向东day01笔记--dos-jdk-jre-环境变量等
  8. php 多进程workman服务器框架
  9. ReactNative环境搭建
  10. GitHub for Mac
  11. java学习之异常笔记
  12. canvas绘制多边形
  13. VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
  14. JAVA_SE基础——45.基本类型变量.值交换[独家深入解析]
  15. 文件服务器的详细配置之共享权限与NTFS权限的设置
  16. JAVA学习笔记(4)—— 排序算法
  17. 使用GOOGLE COLAB训练深度学习模型
  18. Oracle数据库用户锁定原因以及处理方式(ORA-28000)
  19. JS变量声明方式
  20. 使用nexus搭建maven私服教程详解

热门文章

  1. Dotfuscator使用
  2. mac安装navicat mysql破解版
  3. 选择一个 HTTP 状态码不再是一件难事 – Racksburg《转载》
  4. python 全栈开发,Day8(文件操作)
  5. jquery.Inputmask 插件用法(中文API文档)
  6. lldp
  7. (第8篇)实时可靠的开源分布式实时计算系统——Storm
  8. oracle <> 选不出为null的部分
  9. PostgreSQL主要优势
  10. [九省联考2018]一双木棋chess