Spacemacs-rocks icon indicating copy to clipboard operation
Spacemacs-rocks copied to clipboard

Spacemacs Rocks(3): 打造C/C++ IDE

Open zilongshanren opened this issue 9 years ago • 17 comments

Youtube 视频地址: https://www.youtube.com/watch?v=CNbvt-veozU&feature=youtu.be

优酷视频地址: http://v.youku.com/v_show/id_XMTM2OTM3MDkwMA==.html

百度网盘: http://pan.baidu.com/s/1sjBrEJr

关于视频的几点说明:

  1. 我平时写 Cocos2D-X 80%是 Emacs, 20%是 XCode,然后调试基本上是 XCode。
  2. 我使用的 Company-backend 默认没有 company-ycmd,需要调用 ,tb 来激活。为什么不使用有语义补全功能的 backend 是因为对于大项目而言,这个补全有点慢。 我用的 gtags + hippie-expand
  3. 一定要使用 CMake,这样生成 ycmd 的配置文件也会省心,跨平台也会省心。
  4. 关于ycmd 和 ycmd 配置文件生成请参考 https://github.com/rdnetto/YCM-Generator https://github.com/Valloric/ycmd
  5. 由于技术原因,视频从5:27到5:57秒是黑屏(不过有声音。。。),见谅。

zilongshanren avatar Oct 25 '15 14:10 zilongshanren

请问用ycmd-goto(SPC-g-g)调到一处定义后如何跳回原处呢?就像Gtags用M-.和M-,来回跳一样

scloudyy avatar Oct 31 '15 07:10 scloudyy

@scloudyy 用的 evil-jumper 里面的 c-o跳回来的。

zilongshanren avatar Oct 31 '15 14:10 zilongshanren

谢谢~~还有一个问题就是ycmd分析是不是只分析当前buffer?比如我包含了#include "head.h",但没有进到head.h那个文件里去,那里的内容就补全不了?至少我用ycmd-parse-buffer这个命令他只是分析当前buffer并没有递归的分析下去。

scloudyy avatar Nov 01 '15 02:11 scloudyy

@scloudyy 不是只分析当前 buffer,它通过 include 路径做的分析进行补全。

zilongshanren avatar Nov 01 '15 02:11 zilongshanren

是这样啊~也就是include里的文件用ycmd-parse-buffer它都会去分析?当前文件夹里的.ycm_extra_conf.py优先级是最高的吧,会覆盖spacemacs设置的global_config?

scloudyy avatar Nov 01 '15 03:11 scloudyy

@scloudyy 对,当前文件夹的.ycm_extra_conf.py会覆盖全局的。

zilongshanren avatar Nov 02 '15 14:11 zilongshanren

请问下,当前目录下已有由YCM-Generator生成的config.py文件,打开该目录下的.C 文件不出现补齐,但是打开一个从github clone的工程时,该工程里面也已包含有config.py文件,自动补齐正常,大概是什么 原因?

找到原因了, 在.spacemacs user-init 中添加(add-hook 'c-mode-hook 'ycmd-mode)就可以了。我以为C++mode下支持.c的补齐

yuaren avatar Dec 09 '15 14:12 yuaren

ycmd-goto-implementation不能使用吗?Messages里面提示: REQUEST [error] Error (error) while connecting to http://127.0.0.1:34059/run_completer_command Supported commands are: ClearCompilationFlagCache FixIt GetDoc GetDocQuick GetParent GetType GoTo GoToDeclaration GoToDefinition GoToImprecise GoToInclude See the docs for information on what they do. 难道是编译ycmd的时候有问题?

lwj0012 avatar Jun 29 '16 16:06 lwj0012

我用YCM-Generator在我的项目目录下面也生成了.ycm_extra_conf.py, 可是打开文件出现下面的错误: REQUEST [error] Error (error) while connecting to http://127.0.0.1:57039/event_notification. 而且每次打开.c或者.h文件的时候都会提示我要不要加载.ycm_extra_conf.py,这个能改成自动加载吗?

ghost avatar Jul 31 '16 21:07 ghost

@vinurs 提交问题最好在 emacs-china.org 提问。这个我暂时回答不了,等其它人吧。

jiegec avatar Aug 01 '16 00:08 jiegec

@vinurs 试试 (set-variable 'ycmd-server-command '("python" "/path/to/ycmd/package")) 这些 ycmd 的问题直接去官方仓库提问会比较好

zilongshanren avatar Aug 01 '16 01:08 zilongshanren

ok,我明白了

ghost avatar Aug 01 '16 01:08 ghost

qq 20160929203624 你好,我用的你的配置,然后自己配置了ycmd。flycheck报'iostream' file not found。 但是我用make可以正常构建项目,并成功运行。 我用的clang-3.8 , flycheck-20160912.814, emacs 25.1。

cranehuang avatar Sep 29 '16 12:09 cranehuang

flycheck报'iostream' file not found的问题(也即flycheck对C++11的支持问题),可以在.ycm_extra_conf.py文件中加入-std=c++11 的flag,或者在spacemacs的user-config中加入如下代码: (add-hook 'c++-mode-hook (lambda () (setq flycheck-clang-language-standard "c++11")))

更多信息可以看SO:http://stackoverflow.com/questions/30949847/configuring-flycheck-to-work-with-c11 以及ycm的一个issue:https://github.com/Valloric/YouCompleteMe/issues/303

cranehuang avatar Oct 11 '16 11:10 cranehuang

您好,请问我用了您的spacemacs-private 配置,ycmd不是默认启用吗,我这里, g g不是ycmd-goto呢?

2017-01-18 18 17 31

而且我spc spc也搜不到ycmd相关的函数

0xtonyxia avatar Jan 18 '17 10:01 0xtonyxia

@0xtonyxia

我的最新配置已经把 ycmd 删除了。

zilongshanren avatar Jan 18 '17 10:01 zilongshanren

@zilongshanren 那您现在写c/c++的自动补全策略是?

0xtonyxia avatar Jan 18 '17 10:01 0xtonyxia