多年来,我的Windows C标记/范围解决方案已经几乎工作了。我可以构建文件列表,为vim / gvim导航构建标签(通过Exuberant Ctags),构建cscope.out,并在我通过单击C源文件启动的gvim.exe窗口中标记。
我不知道的最后一件事是,当我选择一个项目时,我似乎无法在cmd.exe中获取cscope来启动我的编辑器。我确保gvim.exe在我的Path环境变量中。我确保设置了CSCOPE_EDITOR环境变量(更多内容如下)。但是当我从cscope中选择一个行项目时,编辑器没有启动。相反,我得到以下两个失败之一:
供参考:
cscope -V返回“cscope:version 15.8a”并从此站点下载:http://code.google.com/p/cscope-win32/
我的gvim.exe版本是7.3,最新版本来自http://www.vim.org/
另外,我用“C”标记了这篇文章,因为虽然这不是C语言问题,但cscope和ctags主要用于C编程,因此我认为C标签是相关的。 (我想在有人出现并删除标签之前我会指出这一点并说这不是一个C问题,因为C程序员最有可能得到答案。)
答案 0 :(得分:2)
在@mattn和@mMontu的帮助下,以及大量的试错和丑陋但简单的黑客攻击我终于有了这个工作。以下是我遇到的问题:
cscope-win32不处理EDITOR或CSCOPE_EDITOR环境变量中的空格。我试过了我能想到的每一个太空逃生技巧(单引号,双引号,反斜杠转义),没有任何效果。
当cscope-win32成功启动gvim.exe时,如果gvim.exe尝试添加相同的cscope.out数据库(通过cs add cscope.out
),则add命令会挂起。如果add是vimrc文件的一部分,那么编辑器将在打开期间挂起(gvim.exe和cscope.exe进程启动但应用程序窗口永远不会出现)。如果在编辑器窗口打开后完成添加,则窗口将挂起。这似乎与在同一进程树中尝试的多个cscope-win32进程有关,但我没有实际的证据。
这是我解决问题的方法。就像我说的,这是一个丑陋但简单的黑客。
创建包装批处理文件。我命名为gvim_cscope.bat
。确保它位于PATH环境变量中的目录中。您可以通过调用“where gvim_cscope.bat
”来在cmd.exe shell中对此进行验证。
编辑批处理文件并在其前面添加编辑器命令,但使用windows start
命令。例如,我的批处理文件包含以下内容:
start gvim.exe %*
创建/更新您的CSCOPE_EDITOR环境变量为“gvim_cscope.bat
”。如果你以前从未修改过Windows环境变量,你可以通过Start - >到达它们(无论如何在Windows 7上)。右键单击计算机 - >属性 - >高级系统设置 - >环境变量。
这就是让事情发挥作用所需要的一切。打开一个新的cmd.exe窗口(以便拉入更新的环境变量)并打开cscope.exe,一切正常。我能够从cscope.exe中弹出多个gvim.exe窗口,每个窗口都有自己与cscope.out数据库的连接。通过使用包装批处理文件(命令中不再有空格)可以避免第一个问题,并且使用windows start
命令可以避免第二个问题,这样gvim.exe就可以作为一个单独的进程启动。
感谢@mattn和@mMontu的帮助。让事情正常运作真好!