#+TITLE: YCMD layer * Table of Contents :TOC_4_gh:noexport: - [[#description][Description]] - [[#install][Install]] - [[#layer][Layer]] - [[#ycmd][YCMD]] - [[#other-requirements][Other Requirements]] - [[#configuration][Configuration]] - [[#key-bindings][Key Bindings]] * Description This layer adds [[https://github.com/abingham/emacs-ycmd][emacs-ycmd]] support. * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =ycmd= to the existing =dotspacemacs-configuration-layers= list in this file. ** YCMD 1) Install the =ycm= server. Installation instructions can be found [[https://github.com/Valloric/ycmd#building][here]]. 2) Set the =ycmd-server-command= variable to reflect the path to the installation: #+BEGIN_SRC emacs-lisp (setq ycmd-server-command '("python" "/path/to/YouCompleteMe/third_party/ycmd/ycmd")) #+END_SRC 3) Instead of =.clang_complete= ycmd [[https://github.com/Valloric/YouCompleteMe/blob/master/README.md#c-family-semantic-completion][uses a .ycm_extra_conf.py file]]. 4) Whitelist the file by adding the following to =.spacemacs=: #+BEGIN_SRC emacs-lisp ;; In this example we whitelist everything in the Develop folder (setq ycmd-extra-conf-whitelist '("~/Develop/*")) #+END_SRC 5) The completion is not going to work automatically until we actually force it: #+BEGIN_SRC emacs-lisp (setq ycmd-force-semantic-completion t) #+END_SRC ** Other Requirements This package requires the =auto-completion= layer in order to get actual completion. The =syntax-checking= layer is required for flycheck support. * Configuration By default this layer only activates ycmd for =c++-mode=. If you want ycmd support in other modes you might just want to add it for specific languages like: #+BEGIN_SRC emacs-lisp (add-hook 'c++-mode-hook 'ycmd-mode) #+END_SRC * Key Bindings Adds ~SPC m g g~ go to definition binding to =c++-mode= as well as ~SPC m g G~ for the more imprecise but faster version.