eclim CSearch macro 问题的解决过程备忘录
问题: 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
eclim CSearch macro 问题的解决过程备忘录的更多相关文章
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- 启动Tomcat一闪而过——分析及解决过程
启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的 ...
- 这几天帮一个朋友解决了一点小问题(RF的有些小问题及解决过程)
最近涉猎自动化太少了,以至于都不经常更新了.最近一个朋友在做移动端自动化的时候遇到了一些小问题来找我解决.本人也不是很精通,只是接触的时间长了一点了.下面就是一些问题和解决过程: 1.她刚过来的时候, ...
- nginx负载下站点错误响应会导致其他节点重复响应问题的解决过程
目录 前言 问题来了 问题又来了 问题分析 困惑 转机 后续 前言: 这是我上周工作过程中的一次解决问题的过程.解决的是nginx负载下站点错误响应导致其他节点重复响应. 我在整理这个记叙文时,在给这 ...
- 再记一次w3wp占用CPU过高的解决过程(Dictionary和线程安全)
在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一些障碍,这一次希望可以记 ...
- 记录linux /bin被误删除的解决过程
1.事因: 执行shell测试时,shell中rm -rf $path/* 变量$path为空,结果执行的命令是rm -rf / 事发时及时ctrl+c中断,导致只有/bin /boot目录删除 2. ...
- 【故障处理】ORA-30012的解决过程
[故障处理]ORA-30012的解决过程 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...
- 记VS2013并行编译导致出错的解决过程
接前一篇,电脑换了新的,系统是64bit的win8系统,先安装了SQLServer2012,再安装VS2010旗舰版,Stop!为什么还是2010?因为2010太经典了,以至于公司的项目还在用它写项目 ...
- 添加IFrame导致内存溢出的解决过程(IE浏览器,目前发现了原因,还未解决)
1. 现象 每次动态添加iframe时,iexplore.exe进程占据的内存都会增加(大概10M左右),不会自动释放,最终导致内存溢出 2. 解决过程 经过网络的一番搜索,基本上给出的解决方案是 ...
随机推荐
- 50个常用的sql语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...
- 字符串反转,例如"abc"反转"cba"
package stringyiwen; /* * 字符串反转,例如"abc"反转"cba" */public class StringTestChar { p ...
- MyBatis查询,返回值Map或List<Map>
一.返回值Map 1.mapper.xml <select id="selectUserMapLimitOne" resultType="java.util.Has ...
- 【C++ Primer 第16章】2. 模板实参推断
模板实参推断:对于函数模板,编译器利用调用中的函数实参来确定模板参数,从函数实参来确定模板参数的过程被称为模板实参推断. 类型转换与模板类型参数 与往常一样,顶层const无论在形参中还是在是实参中, ...
- 百度地图API如何给自定义覆盖物添加事件
摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~ --------- ...
- 【Java】 剑指offer(19) 正则表达式匹配
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现一个函数用来匹配包含'.'和'*'的正则表达式.模式中的字符 ...
- POJ - 1266 -
题目大意:给出一条圆弧上的两个端点A,B,和圆弧上两端点之间的一个点C,现在要用一块各个定点的坐标均为整数的矩形去覆盖这个圆弧,要求最小的矩形面积. 思路:叉积在本体发挥很强大的作用.首先求出三个点所 ...
- 获取img的高
我们可以通过css设置图片的width,然后通过 clientWidth获取图片的宽,但是这个宽似乎是css里面定义的width值,但是对于图片的高,使用 clientHeight 来获取似乎是有些问 ...
- spring整合mybatisXML版
引用的所有jar包,本demo是一个普通的java项目测试的: aopalliance.jarasm-3.3.1.jaraspectjweaver.jarcglib-2.2.2.jarcommons- ...
- <<c专家编程>>笔记
C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...