Switch from irony to lsp-mode.
Remove irony, cmake-ide, ggtags. Add lsp-mode, lsp-mode-ui and company-lsp.
This commit is contained in:
parent
0e6c527d24
commit
e965cd88e7
115
init.el
115
init.el
|
@ -1,5 +1,5 @@
|
||||||
;;; init.el --- tastytea's Emacs init file.
|
;;; init.el --- tastytea's Emacs init file.
|
||||||
;; Time-stamp: <2019-09-30T16:38:17+00:00>
|
;; Time-stamp: <2019-10-08T13:44:40+00:00>
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;; Requires at least Emacs 24.3.
|
;; Requires at least Emacs 24.3.
|
||||||
|
@ -232,22 +232,29 @@ With argument, do this that many times."
|
||||||
|
|
||||||
(use-package flycheck-clang-tidy
|
(use-package flycheck-clang-tidy
|
||||||
:pin melpa
|
:pin melpa
|
||||||
:after (flycheck projectile)
|
:after (flycheck projectile lsp-ui)
|
||||||
:if (executable-find "clang-tidy")
|
:if (executable-find "clang-tidy")
|
||||||
:config
|
:config
|
||||||
(defun my/clang-tidy-off ()
|
(defun my/clang-tidy-off ()
|
||||||
"Disable c++-clang-tidy."
|
"Disable c/c++-clang-tidy."
|
||||||
(when (or (eq major-mode 'c++-mode) (eq major-mode 'c-mode))
|
(when (or (eq major-mode 'c++-mode) (eq major-mode 'c-mode))
|
||||||
(add-to-list 'flycheck-disabled-checkers 'c/c++-clang-tidy))
|
(add-to-list 'flycheck-disabled-checkers 'c/c++-clang-tidy))
|
||||||
)
|
)
|
||||||
(defun my/clang-tidy-on ()
|
(defun my/clang-tidy-on ()
|
||||||
"Enable c++-clang-tidy."
|
"Enable c/c++-clang-tidy."
|
||||||
(when (or (eq major-mode 'c++-mode) (eq major-mode 'c-mode))
|
(when (or (eq major-mode 'c++-mode) (eq major-mode 'c-mode))
|
||||||
(setq-local flycheck-disabled-checkers
|
(setq-local flycheck-disabled-checkers
|
||||||
(remove 'c/c++-clang-tidy flycheck-disabled-checkers)))
|
(remove 'c/c++-clang-tidy flycheck-disabled-checkers)))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(defun my/flycheck-clang-tidy-setup ()
|
||||||
|
(flycheck-clang-tidy-setup)
|
||||||
|
;; Run clang-tidy after the lsp-ui checker.
|
||||||
|
(when lsp-mode
|
||||||
|
(flycheck-add-next-checker 'lsp-ui '(warning . c/c++-clang-tidy)))
|
||||||
|
)
|
||||||
:hook
|
:hook
|
||||||
(flycheck-mode . flycheck-clang-tidy-setup)
|
(flycheck-mode . my/flycheck-clang-tidy-setup)
|
||||||
(first-change . my/clang-tidy-off) ; Disable when file is modified.
|
(first-change . my/clang-tidy-off) ; Disable when file is modified.
|
||||||
(before-save . my/clang-tidy-on) ; Enable if file is saved.
|
(before-save . my/clang-tidy-on) ; Enable if file is saved.
|
||||||
)
|
)
|
||||||
|
@ -325,15 +332,6 @@ With argument, do this that many times."
|
||||||
;; Mark variable as safe. This prevents prompts when using .dir-locals.el.
|
;; Mark variable as safe. This prevents prompts when using .dir-locals.el.
|
||||||
(put 'projectile-project-compilation-cmd 'safe-local-variable #'stringp)
|
(put 'projectile-project-compilation-cmd 'safe-local-variable #'stringp)
|
||||||
(put 'projectile-project-configure-cmd 'safe-local-variable #'stringp)
|
(put 'projectile-project-configure-cmd 'safe-local-variable #'stringp)
|
||||||
|
|
||||||
;; Always run `cmake-ide-run-cmake` after configuring a project.
|
|
||||||
(defun my/configure-project (old-function &rest arguments)
|
|
||||||
"Runs `projectile-configure-project' followed by `cmake-ide-run-cmake'."
|
|
||||||
(apply old-function arguments)
|
|
||||||
;; (cmake-ide-run-cmake)
|
|
||||||
(cmake-ide-load-db)
|
|
||||||
)
|
|
||||||
(advice-add 'projectile-configure-project :around #'my/configure-project)
|
|
||||||
:bind
|
:bind
|
||||||
("C-c p" . 'projectile-command-map)
|
("C-c p" . 'projectile-command-map)
|
||||||
))
|
))
|
||||||
|
@ -404,7 +402,7 @@ With argument, do this that many times."
|
||||||
(dumb-jump-selector 'ivy)
|
(dumb-jump-selector 'ivy)
|
||||||
:bind
|
:bind
|
||||||
("M-." . dumb-jump-go)
|
("M-." . dumb-jump-go)
|
||||||
("M-," . dumb-jump-back))
|
)
|
||||||
|
|
||||||
;; Support .editorconfig files.
|
;; Support .editorconfig files.
|
||||||
(use-package editorconfig
|
(use-package editorconfig
|
||||||
|
@ -457,52 +455,33 @@ With argument, do this that many times."
|
||||||
(c-default-style "tastytea"))
|
(c-default-style "tastytea"))
|
||||||
|
|
||||||
(unless slow-computer
|
(unless slow-computer
|
||||||
;; irony communicates with a clang-server. It needs compile_commands.json.
|
;; Client for Language Server Protocol servers.
|
||||||
(use-package irony
|
(use-package lsp-mode
|
||||||
:pin melpa ; 1.3.1 Server does not compile.
|
|
||||||
:after yasnippet
|
|
||||||
:hook
|
|
||||||
(c++-mode . irony-mode)
|
|
||||||
(c-mode . irony-mode)
|
|
||||||
(irony-mode . irony-cdb-autosetup-compile-options)
|
|
||||||
:config
|
|
||||||
;; If irony server is not installed, install it.
|
|
||||||
(unless (irony--find-server-executable)
|
|
||||||
(call-interactively #'irony-install-server)))
|
|
||||||
|
|
||||||
;; Eldoc shows argument list of the function you are currently writing.
|
|
||||||
(use-package irony-eldoc
|
|
||||||
:after (eldoc irony)
|
|
||||||
:hook
|
|
||||||
(irony-mode . irony-eldoc))
|
|
||||||
|
|
||||||
;; Syntax checker.
|
|
||||||
(use-package flycheck-irony
|
|
||||||
:after (flycheck irony)
|
|
||||||
:hook
|
|
||||||
(flycheck-mode-hook . flycheck-irony-setup))
|
|
||||||
|
|
||||||
;; Auto-complete integration.
|
|
||||||
(use-package company-irony
|
|
||||||
:after (company irony)
|
|
||||||
;; Backend is added in company-irony-c-headers.
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Auto-complete headers
|
|
||||||
(use-package company-irony-c-headers
|
|
||||||
:after company-irony
|
|
||||||
:config
|
|
||||||
(add-to-list 'company-backends '(company-irony-c-headers company-irony))
|
|
||||||
)
|
|
||||||
|
|
||||||
;; cmake integration.
|
|
||||||
(use-package cmake-ide
|
|
||||||
:after irony
|
|
||||||
:custom
|
:custom
|
||||||
(cmake-ide-build-dir "build")
|
(lsp-prefer-flymake nil) ; Disable flymake.
|
||||||
(cmake-ide-cmake-opts "") ; Use the already configured options.
|
:hook
|
||||||
|
(c++-mode . lsp)
|
||||||
|
(c-mode . lsp)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Eye-candy and flycheck support for lsp-mode.
|
||||||
|
(use-package lsp-ui
|
||||||
|
:after (lsp-mode flycheck)
|
||||||
|
:custom
|
||||||
|
(lsp-ui-sideline-enable nil)
|
||||||
|
:bind
|
||||||
|
(:map lsp-ui-mode-map
|
||||||
|
("M-." . lsp-ui-peek-find-definitions))
|
||||||
|
:hook
|
||||||
|
(lsp-mode . lsp-ui-mode)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Completions with lsp-mode.
|
||||||
|
(use-package company-lsp
|
||||||
|
:after (lsp-mode company)
|
||||||
:config
|
:config
|
||||||
(cmake-ide-setup))
|
(push 'company-lsp company-backends)
|
||||||
|
)
|
||||||
) ; unless slow-computer
|
) ; unless slow-computer
|
||||||
|
|
||||||
|
|
||||||
|
@ -551,20 +530,6 @@ With argument, do this that many times."
|
||||||
(c++-mode . modern-c++-font-lock-mode)
|
(c++-mode . modern-c++-font-lock-mode)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; Jump to definition. Overwrites dumb-jump keybindings.
|
|
||||||
(use-package ggtags
|
|
||||||
:if (executable-find "gtags")
|
|
||||||
:bind
|
|
||||||
(:map ggtags-mode-map
|
|
||||||
("C-M-." . ggtags-navigation-next-mark)
|
|
||||||
("C-M-," . ggtags-navigation-previous-mark)
|
|
||||||
("C-M-:" . ggtags-navigation-next-file)
|
|
||||||
("C-M-;" . ggtags-navigation-previous-file)
|
|
||||||
)
|
|
||||||
:hook
|
|
||||||
(c++-mode . ggtags-mode)
|
|
||||||
)
|
|
||||||
|
|
||||||
;; Add #include directives for missing symbols.
|
;; Add #include directives for missing symbols.
|
||||||
(use-package clang-include-fixer
|
(use-package clang-include-fixer
|
||||||
:ensure nil ; Installed by clang.
|
:ensure nil ; Installed by clang.
|
||||||
|
@ -851,6 +816,9 @@ With argument, do this that many times."
|
||||||
(if my/ws-enabled
|
(if my/ws-enabled
|
||||||
(whitespace-mode t)))
|
(whitespace-mode t)))
|
||||||
|
|
||||||
|
(defun my/whitespace-mode-off ()
|
||||||
|
(whitespace-mode -1))
|
||||||
|
|
||||||
(if (display-graphic-p)
|
(if (display-graphic-p)
|
||||||
(custom-set-faces
|
(custom-set-faces
|
||||||
'(whitespace-line ((t (:inherit whitespace-line
|
'(whitespace-line ((t (:inherit whitespace-line
|
||||||
|
@ -878,6 +846,7 @@ With argument, do this that many times."
|
||||||
(prog-mode . my/ws-load-local-vars-first)
|
(prog-mode . my/ws-load-local-vars-first)
|
||||||
(conf-mode . my/ws-load-local-vars-first)
|
(conf-mode . my/ws-load-local-vars-first)
|
||||||
(text-mode . my/ws-load-local-vars-first)
|
(text-mode . my/ws-load-local-vars-first)
|
||||||
|
(lsp-ui-peek-mode . my/whitespace-mode-off) ; Dots in wrong color.
|
||||||
:custom-face
|
:custom-face
|
||||||
(whitespace-space ((nil :foreground "gray18")))
|
(whitespace-space ((nil :foreground "gray18")))
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
127.0.0.1:51313 23841
|
127.0.0.1:51313 32519
|
||||||
phahw2ohVoh0oopheish7IVie9desh8aequeenei3uo8wahShe%thuadaeNa4ieh
|
phahw2ohVoh0oopheish7IVie9desh8aequeenei3uo8wahShe%thuadaeNa4ieh
|
Loading…
Reference in New Issue
Block a user