diff options
Diffstat (limited to 'lisp/ravi-init-cpp.el')
| -rw-r--r-- | lisp/ravi-init-cpp.el | 58 |
1 files changed, 42 insertions, 16 deletions
diff --git a/lisp/ravi-init-cpp.el b/lisp/ravi-init-cpp.el index 1ccd363..6555d70 100644 --- a/lisp/ravi-init-cpp.el +++ b/lisp/ravi-init-cpp.el @@ -473,7 +473,6 @@ this to 3 makes header-protection define KIG_MISC_NEWTYPE_H for a file named (bind-key "]" 'ravi/insert-closing-delimiter c-mode-base-map) - (setq ravi/use-cquery-mode t) (use-package rtags :load-path (lambda () (ravi/emacs-file "site-lisp/rtags/src")) :config @@ -533,35 +532,62 @@ this to 3 makes header-protection define KIG_MISC_NEWTYPE_H for a file named (bind-key "C-<tab>" 'company-rtags c-mode-base-map) (add-to-list 'company-backends 'company-rtags))))) - (when (bound-and-true-p ravi/use-cquery-mode) + ;; Choices of different LSP backends + (setq ravi/use-cpp-lsp-backends '(ravi/use-cpp-cquery ravi/use-cpp-ccls ravi/use-cpp-none)) + (setq ravi/use-cpp-lsp-backend 'ravi/use-cpp-ccls) + (unless (memq ravi/use-cpp-lsp-backend ravi/use-cpp-lsp-backends) + (message "Invalid value for C++ LSP backend") + (setq ravi/use-cpp-lsp-backend 'ravi/use-cpp-none)) + + (unless (eq ravi/use-cpp-lsp-backend 'ravi/use-cpp-none) + (setq lsp-enable-completion-at-point nil) + (setq lsp-enable-indentation nil) ; conflicts with other indentation commands + (use-package company-lsp + :commands company-lsp + :config + (progn + (bind-key "H-<tab>" 'company-rtags c-mode-base-map) + (setq company-lsp-async t) + (setq company-lsp-cache-candidates nil))) + (use-package lsp-mode + :commands lsp) + (use-package lsp-ui + :commands lsp-ui-mode)) + + (when (eq ravi/use-cpp-lsp-backend 'ravi/use-cpp-ccls) + (use-package ccls + :init + (progn + (defun ravi/ccls-enable () + (unless (file-remote-p default-directory) + (condition-case nil + (progn + (require 'ccls) + (lsp)) + (user-error nil)))) + (add-hook 'c-mode-common-hook #'ravi/ccls-enable)) + :config + (setq ccls-executable (ravi/emacs-file "site-lisp/ccls/Release/ccls")) + (setq ccls-args `(,(concat "--log-file=" (expand-file-name "ccls.log" (ravi/emacs-file "past"))))) ; to do: use relative path + )) + + (when (eq ravi/use-cpp-lsp-backend 'ravi/use-cpp-cquery) (use-package cquery :commands lsp-cquery-enable :init (progn (defun ravi/cquery-enable () (unless (file-remote-p default-directory) - (setq lsp-enable-completion-at-point nil) - (setq lsp-enable-indentation nil) ; conflicts with other indentation commands (condition-case nil (lsp-cquery-enable) (user-error nil)))) - (add-hook 'c-mode-common-hook #'ravi/cquery-enable) - ) + (add-hook 'c-mode-common-hook #'ravi/cquery-enable)) :config (progn (setq cquery-executable (ravi/emacs-file "site-lisp/cquery/build/cquery")) (setq cquery-extra-args `(,(concat "--log-file=" (expand-file-name "cq.log" (ravi/emacs-file "past"))))) ; to do: use relative path (setq cquery-cache-dir ".cquery_cached_index") - (setq cquery-extra-init-params '(:index (:comments 2) :cacheFormat "msgpack" :completion (:detailedLabel t))) - - (use-package company-lsp - :config - (progn - (bind-key "H-<tab>" 'company-rtags c-mode-base-map) - (setq company-lsp-async t) - (setq company-lsp-cache-candidates nil))) - (use-package lsp-mode) - (use-package lsp-ui)))) + (setq cquery-extra-init-params '(:index (:comments 2) :cacheFormat "msgpack" :completion (:detailedLabel t)))))) (setq hide-ifdef-initially nil) |
