emacs-china / Spacemacs-rocks

Happy Hacking Emacs & Spacemacs (Simplified Chinese)
http://book.emacs-china.org
2.12k stars 325 forks source link

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

Open zilongshanren opened 9 years ago

zilongshanren commented 9 years ago

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秒是黑屏(不过有声音。。。),见谅。
scloudyy commented 9 years ago

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

zilongshanren commented 9 years ago

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

scloudyy commented 9 years ago

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

zilongshanren commented 9 years ago

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

scloudyy commented 9 years ago

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

zilongshanren commented 9 years ago

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

yuaren commented 8 years ago

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

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

lwj0012 commented 8 years ago

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的时候有问题?

ghost commented 8 years ago

我用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,这个能改成自动加载吗?

jiegec commented 8 years ago

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

zilongshanren commented 8 years ago

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

ghost commented 8 years ago

ok,我明白了

cranehuang commented 8 years ago

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

cranehuang commented 8 years ago

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

0xtonyxia commented 7 years ago

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

2017-01-18 18 17 31

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

zilongshanren commented 7 years ago

@0xtonyxia

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

0xtonyxia commented 7 years ago

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