为特殊项目结构配置VIM YouCompleteMe

yongzhy

我的C项目具有以下结构。这是大型项目的结构,我无法更改结构。我想使用YouCompleteMe完成该项目的语义代码。

main/                     // folder for C file to be compiled
  |- module1.c            // module main C file.
  |- module2.c
  |- .....
module1/
  |- mod1_func1.c         // function file to be included in main module C file.
  |- mod1_func2.c
  |- mod2_func3.c
module2/
  |- mod2_func1.c
  |- mod2_func2.c
  |- mod2_func3.c

的内容moduleX.c,将包括所有相关的头文件和与模块相关的C文件。

#include "header1.h"
#include "header2.h"
...
#include "modX_func1.c"
#include "modX_func2.c"

的内容modX_funcX.c具有一个或几个功能定义。没有标题

// no header file included here
int modX_funcX(void) {.....}

因为没有包含相关的标头,所以clang必须解析moduleX.c以便在上完成代码modX_funcX.c,我已尝试clang从命令行进行代码完成。下面的命令有效

clang -x c -fsyntax-only -code-completion-at mod1_func1.c:4:11 module1.c 

所以我的问题是:如何在编辑modX_funcX.c文件时配置YouCompleteMe以完成代码

我猜想可能需要对YouCompleteMe源进行修改才能完成此工作。我当前的想法是添加具有以下格式的文件映射数据库:

path_of_file_to_complete:path_of_file_for_clang_to_parse

因此,在发送代码完成请求之前,请path_of_file_for_clang_to_parse基于当前缓冲区名称从数据库中获取该文件名,并将其传递给libclang

我的想法可行吗?如果是,则在何处添加此文件映射功能?

yongzhy

正如所述pepper_chico我认为我的项目结构确实很la脚,但是别无选择,我无法更改它。在过去的几天里,我对这两者进行了一些修改,YouCompleteMelibclang通过更改的API调用libclanginput_filename附加传递complte_filename

这是一个肮脏的骇客,但现在对我有用。万一有人感兴趣,我写了一篇文章简要记录了我的分析和黑客过程。

更新2015-02-03

一年后,当我回顾这个问题时,我终于找到了一种更好的方法来YouCompleteMe满足我的需要。详细请看这里

我在GitHub上的修改在这里,请注意分行的名称是lamely现在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为特殊项目结构配置VIM YouCompleteMe

来自分类Dev

Vim YouCompleteMe安装

来自分类Dev

如何使用vim-youcompleteme

来自分类Dev

vim youcompleteme找不到cstdint

来自分类Dev

vim YouCompleteMe。命令返回你来自哪里?

来自分类Dev

jedi-vim是否与YouCompleteMe冲突?

来自分类Dev

如何接受Vim YouCompleteMe插件的建议

来自分类Dev

使vim的YouCompleteMe插件识别旺盛的标签

来自分类Dev

用YouCompleteMe完成VIM语义JavaScript?

来自分类Dev

vim YouCompleteMe GoTo不起作用

来自分类Dev

vundle / YouCompleteme:需要Vim 7.3.584+

来自分类Dev

vim YouCompleteMe的Compilation_database_folder路径

来自分类Dev

Vim YouCompleteMe插件-不要下载clang

来自分类Dev

让vim的YouCompleteMe插件识别旺盛的标签

来自分类Dev

小牛上的Vim YouCompleteMe和Ultisnips

来自分类Dev

YouCompleteMe(vim插件)GoToDefinition不起作用

来自分类Dev

Vim YouCompleteMe clang无法完成C ++ 11'auto'变量

来自分类Dev

有关vim的youcompleteme快捷键的困惑

来自分类Dev

Vim youcompleteme在Debian Jessie中不起作用

来自分类Dev

尝试使用Vim Valloric / YouCompleteMe插件时的Mac OS限制

来自分类Dev

Windows中的Vim YouCompleteMe C#语义完成

来自分类Dev

如何让 vim youcompleteme 插件正确列出函数名称?

来自分类Dev

Vim:youCompleteme插件打开一个带有函数定义的拆分窗口

来自分类Dev

Vim错误:“ YouCompleteMe不可用:在Python 3上不能访问此程序包”

来自分类Dev

C ++:使用Youcompleteme自动完成工具的Vim编辑器-不列出标准头

来自分类Dev

YouCompleteMe vim扩展:如何跳转到下一个错误?

来自分类Dev

Vim错误:“ YouCompleteMe不可用:在Python 3上不能访问此程序包”

来自分类Dev

YouCompleteMe无法自动完成

来自分类Dev

无法使YouCompleteMe正常运行

Related 相关文章

  1. 1

    为特殊项目结构配置VIM YouCompleteMe

  2. 2

    Vim YouCompleteMe安装

  3. 3

    如何使用vim-youcompleteme

  4. 4

    vim youcompleteme找不到cstdint

  5. 5

    vim YouCompleteMe。命令返回你来自哪里?

  6. 6

    jedi-vim是否与YouCompleteMe冲突?

  7. 7

    如何接受Vim YouCompleteMe插件的建议

  8. 8

    使vim的YouCompleteMe插件识别旺盛的标签

  9. 9

    用YouCompleteMe完成VIM语义JavaScript?

  10. 10

    vim YouCompleteMe GoTo不起作用

  11. 11

    vundle / YouCompleteme:需要Vim 7.3.584+

  12. 12

    vim YouCompleteMe的Compilation_database_folder路径

  13. 13

    Vim YouCompleteMe插件-不要下载clang

  14. 14

    让vim的YouCompleteMe插件识别旺盛的标签

  15. 15

    小牛上的Vim YouCompleteMe和Ultisnips

  16. 16

    YouCompleteMe(vim插件)GoToDefinition不起作用

  17. 17

    Vim YouCompleteMe clang无法完成C ++ 11'auto'变量

  18. 18

    有关vim的youcompleteme快捷键的困惑

  19. 19

    Vim youcompleteme在Debian Jessie中不起作用

  20. 20

    尝试使用Vim Valloric / YouCompleteMe插件时的Mac OS限制

  21. 21

    Windows中的Vim YouCompleteMe C#语义完成

  22. 22

    如何让 vim youcompleteme 插件正确列出函数名称?

  23. 23

    Vim:youCompleteme插件打开一个带有函数定义的拆分窗口

  24. 24

    Vim错误:“ YouCompleteMe不可用:在Python 3上不能访问此程序包”

  25. 25

    C ++:使用Youcompleteme自动完成工具的Vim编辑器-不列出标准头

  26. 26

    YouCompleteMe vim扩展:如何跳转到下一个错误?

  27. 27

    Vim错误:“ YouCompleteMe不可用:在Python 3上不能访问此程序包”

  28. 28

    YouCompleteMe无法自动完成

  29. 29

    无法使YouCompleteMe正常运行

热门标签

归档