move company and lsp support to common section and fix rustic indentation

rustic: change to 4 spaces indentation
This commit is contained in:
Łukasz Pankowski 2019-12-11 22:47:20 +01:00
parent fc430f9135
commit 523e18fac3

123
init.el
View File

@ -332,15 +332,42 @@ of the key binding used to execute this command."
;;; --------------------- ;;; ---------------------
;;; ### Global bindings for programming modes ### ;;; ### Common settings for programming modes ###
(global-set-key (kbd "C-c d") #'lsp-describe-thing-at-point) ;;; For modes using [company](https://company-mode.github.io/) for tab
(global-set-key (kbd "C-c e n") #'flymake-goto-next-error) ;;; completion add
(global-set-key (kbd "C-c e p") #'flymake-goto-prev-error)
(global-set-key (kbd "C-c e r") #'lsp-find-references) (use-package company
(global-set-key (kbd "C-c e R") #'lsp-rename) :init
(global-set-key (kbd "C-c e i") #'lsp-find-implementation) (setq company-idle-delay nil ; avoid auto completion popup, use TAB
(global-set-key (kbd "C-c e t") #'lsp-find-type-definition) ; to show it
company-tooltip-align-annotations t)
:hook (after-init . global-company-mode)
:bind
(:map prog-mode-map
("C-i" . company-indent-or-complete-common)
("C-M-i" . completion-at-point)))
;;; For modes that also use Language Server Protocol from
;;; [lsp-mode](https://github.com/emacs-lsp/lsp-mode) add
(use-package company-lsp
:defer)
(use-package lsp-mode
:commands lsp
;; reformat code and add missing (or remove old) imports
:hook ((before-save . lsp-format-buffer)
(before-save . lsp-organize-imports))
:bind (("C-c d" . lsp-describe-thing-at-point)
("C-c e n" . flymake-goto-next-error)
("C-c e p" . flymake-goto-prev-error)
("C-c e r" . lsp-find-references)
("C-c e R" . lsp-rename)
("C-c e i" . lsp-find-implementation)
("C-c e t" . lsp-find-type-definition)))
;;; [my common settings for programming modes]: #common-settings-for-programming-modes
;;; ### C and C++ ### ;;; ### C and C++ ###
@ -509,6 +536,9 @@ of the key binding used to execute this command."
;;; [go-mode]: https://github.com/dominikh/go-mode.el ;;; [go-mode]: https://github.com/dominikh/go-mode.el
;;; For **tab completion** and **lsp** support also add [my common
;;; settings for programming modes].
(defun my-go-electric-brace () (defun my-go-electric-brace ()
"Insert an opening brace may be with the closing one. "Insert an opening brace may be with the closing one.
If there is a space before the brace also adds new line with If there is a space before the brace also adds new line with
@ -532,40 +562,20 @@ inserted between the braces between the braces."
:candidates (go-packages)) :candidates (go-packages))
:buffer "*godoc packages*"))) :buffer "*godoc packages*")))
(use-package lsp-mode
:commands lsp)
(use-package company-lsp
:defer)
(use-package go-guru (use-package go-guru
:defer) :after go-mode)
(use-package company
:defer)
(use-package go-mode (use-package go-mode
:init :init
(setq go-fontify-function-calls nil ; fontifing names of called (setq go-fontify-function-calls nil) ; fontifing names of called
; functions is too much for me ; functions is too much for me
company-idle-delay nil) ; avoid auto completion popup, use TAB
; to show it
:bind :bind
(:map go-mode-map (:map go-mode-map
("C-c d" . lsp-describe-thing-at-point) ("C-c e g" . godoc)
("C-c g" . godoc)
("C-c P" . my-godoc-package) ("C-c P" . my-godoc-package)
("{" . my-go-electric-brace) ("{" . my-go-electric-brace))
("C-i" . company-indent-or-complete-common) :hook ((go-mode . lsp)
("C-M-i" . company-indent-or-complete-common) (go-mode . smartparens-mode)))
)
:config
(require 'go-guru)
(add-hook 'go-mode-hook #'lsp)
(add-hook 'go-mode-hook #'smartparens-mode)
;; reformat code and add missing (or remove old) imports
(add-hook 'before-save-hook #'lsp-format-buffer)
(add-hook 'before-save-hook #'lsp-organize-imports))
;; Go/speedbar integration ;; Go/speedbar integration
@ -671,20 +681,17 @@ inserted between the braces between the braces."
;;; $ rustup component add rls ;;; $ rustup component add rls
;;; ``` ;;; ```
;;; ;;;
;;; and then add ;;; For **tab completion** and **lsp** support add [my common settings
;;; for programming modes] and then add
(use-package lsp-mode (defun my-rustic-mode-hook-fn ()
:if (>= emacs-major-version 26) "needed for lsp-format-buffer to indent with 4 spaces"
:commands lsp) (setq tab-width 4
indent-tabs-mode nil))
(use-package rustic (use-package rustic
:if (>= emacs-major-version 26) :if (>= emacs-major-version 26)
:init :hook (rustic-mode . my-rustic-mode-hook-fn))
(setq company-tooltip-align-annotations t
rustic-format-on-save t)
:bind
(:map rustic-mode-map
("C-i" . company-indent-or-complete-common)))
;;; But if you have Emacs older than 26 than you should install ;;; But if you have Emacs older than 26 than you should install
;;; [racer](https://github.com/racer-rust/racer) and add ;;; [racer](https://github.com/racer-rust/racer) and add
@ -700,16 +707,12 @@ inserted between the braces between the braces."
(use-package rust-mode (use-package rust-mode
:if (< emacs-major-version 26) :if (< emacs-major-version 26)
:init :init
(setq company-tooltip-align-annotations t (setq rust-format-on-save t)
rust-format-on-save t)
:config :config
(add-hook 'rust-mode-hook #'company-mode) (add-hook 'rust-mode-hook #'company-mode)
(add-hook 'rust-mode-hook #'cargo-minor-mode) (add-hook 'rust-mode-hook #'cargo-minor-mode)
(add-hook 'rust-mode-hook #'racer-mode) (add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'eldoc-mode) (add-hook 'racer-mode-hook #'eldoc-mode))
:bind
(:map rust-mode-map
("C-i" . company-indent-or-complete-common)))
;;; ### Language server with Vala support ### ;;; ### Language server with Vala support ###
@ -760,22 +763,14 @@ inserted between the braces between the braces."
;;; NOTE: `pub` and `dart` must be in PATH for lsp to start in ;;; NOTE: `pub` and `dart` must be in PATH for lsp to start in
;;; dart-mode. ;;; dart-mode.
;;; For **tab completion** and **lsp** support also add [my common
;;; settings for programming modes].
(use-package dart-mode (use-package dart-mode
:init :init
(setq lsp-dart-analysis-sdk-dir "~/local/flutter/bin/cache/dart-sdk/") (setq lsp-dart-analysis-sdk-dir "~/local/flutter/bin/cache/dart-sdk/")
:bind :hook ((dart-mode . smartparens-mode)
(:map dart-mode-map (dart-mode . lsp)))
("C-i" . company-indent-or-complete-common)
("C-M-i" . company-indent-or-complete-common))
:config
(defun my-dart-mode-hook-fn ()
(smartparens-mode 1)
(flycheck-mode 1)
(company-mode 1)
(lsp))
(add-hook 'dart-mode-hook #'my-dart-mode-hook-fn)
(add-hook 'before-save-hook #'lsp-format-buffer)
(add-hook 'before-save-hook #'lsp-organize-imports))
(use-package flutter (use-package flutter
:after dart-mode :after dart-mode