From f0bf387feb64fd6af3f1325d375aa3292932d900 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Fri, 16 Oct 2020 08:07:38 +0000 Subject: [PATCH] Added LSP and spellchecking for latex, fixed cargo path --- config.org | 172 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 130 insertions(+), 42 deletions(-) diff --git a/config.org b/config.org index ff5d0ba..37744a1 100644 --- a/config.org +++ b/config.org @@ -106,7 +106,10 @@ (require 'ispell) (setq-default ispell-program-name "aspell") (setq-default ispell-local-dictionary "en_AU") + (add-hook 'tex-mode-hook 'flyspell-mode) (add-hook 'latex-mode-hook 'flyspell-mode) + (add-hook 'TeX-mode-hook 'flyspell-mode) + (add-hook 'LaTeX-mode-hook 'flyspell-mode) ;; (add-hook 'latex-mode-hook 'flyspell-buffer) (add-hook 'org-mode-hook 'flyspell-mode) ;; (add-hook 'org-mode-hook 'flyspell-buffer) @@ -778,6 +781,28 @@ (setq company-minimum-prefix-length 3)) #+END_SRC +** LSP Mode +Use LSP for completion suggestions +#+BEGIN_SRC emacs-lisp + (use-package lsp-mode + :ensure t + :hook ((lsp-mode . lsp-enable-which-key-integration)) + :init + (setq lsp-keymap-prefix "C-c l") + :commands lsp + :config + (setq read-process-output-max (* 1024 1024)) + (setq lsp-completion-provider :capf) + (add-to-list 'exec-path "~/.cargo/bin")) + + (use-package lsp-ui + :ensure t + :commands lsp-ui-mode) + + (use-package helm-lsp + :ensure t + :commands helm-lsp-workspace-symbol) +#+END_SRC ** Version control Settings for emacs' own version control system. *** Enable version control on the mode line @@ -937,6 +962,12 @@ company-irony))) #+END_SRC +**** LSP +Allow completion with LSP. +#+BEGIN_SRC emacs-lisp +(add-hook 'c-mode-hook 'lsp) +(add-hook 'cpp-mode-hook 'lsp) +#+END_SRC *** emacs-lisp **** COMMENT yasnippet Enable yasnippet. @@ -1052,6 +1083,14 @@ (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount))) #+END_SRC +**** LSP +Allow LSP completion +#+BEGIN_SRC emacs-lisp + (add-hook 'tex-mode-hook 'lsp) + (add-hook 'latex-mode-hook 'lsp) + (add-hook 'TeX-mode-hook 'lsp) + (add-hook 'LaTeX-mode-hook 'lsp) +#+END_SRC *** PlantUML Sets the PlantUML path for the mode to generate models. #+BEGIN_SRC emacs-lisp @@ -1098,54 +1137,55 @@ **** Integrate into emacs Add updated version (based off auto-package-update) and integrate it with Emacs. #+BEGIN_SRC emacs-lisp - (defun verilog-read-file-as-string (file) - "Read FILE contents." - (when (file-exists-p file) - (with-temp-buffer - (insert-file-contents file) - (buffer-string)))) - - (defun verilog-write-string-to-file (file string) - "Substitute FILE contents with STRING." + (defun verilog-read-file-as-string (file) + "Read FILE contents." + (when (file-exists-p file) (with-temp-buffer - (insert string) - (when (file-writable-p file) - (write-region (point-min) - (point-max) - file)))) + (insert-file-contents file) + (buffer-string)))) - (defun verilog-today-day () - (time-to-days (current-time))) + (defun verilog-write-string-to-file (file string) + "Substitute FILE contents with STRING." + (with-temp-buffer + (insert string) + (when (file-writable-p file) + (write-region (point-min) + (point-max) + file)))) - (defun should-update-verilog-p () - "Return non-nil when an update is due." - (and - (or - (not (file-exists-p "~/.emacs.d/.last-verilog-update-day")) - (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1) - t - nil)))) + (defun verilog-today-day () + (time-to-days (current-time))) - (defun verilog-read-last-update-day () - "Read last update day." - (string-to-number - (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day"))) + (defun should-update-verilog-p () + "Return non-nil when an update is due." + (and + (or + (not (file-exists-p "~/.emacs.d/.last-verilog-update-day")) + (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1) + t + nil)))) - (defun verilog-write-current-day () - "Store current day." - (verilog-write-string-to-file - "~/.emacs.d/.last-verilog-update-day" - (int-to-string (verilog-today-day)))) + (defun verilog-read-last-update-day () + "Read last update day." + (string-to-number + (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day"))) - (use-package verilog-mode - :init - (when (should-update-verilog-p) - (get-verilog-latest) - (verilog-write-current-day)) - (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el") - :config - (autoload 'verilog-mode "verilog-mode" "Verilog mode" t ) - (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode))) + (defun verilog-write-current-day () + "Store current day." + (verilog-write-string-to-file + "~/.emacs.d/.last-verilog-update-day" + (int-to-string (verilog-today-day)))) + + (use-package verilog-mode + :hook (verilog-mode . lsp) + :init + (when (should-update-verilog-p) + (get-verilog-latest) + (verilog-write-current-day)) + (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el") + :config + (autoload 'verilog-mode "verilog-mode" "Verilog mode" t ) + (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode))) #+END_SRC *** COMMENT MATLAB @@ -1178,6 +1218,54 @@ :ensure t) #+END_SRC +*** Rust +**** Major mode +Get the major mode for rust files. +#+BEGIN_SRC emacs-lisp + (use-package rust-mode + :ensure t + :hook (rust-mode . lsp) + :config + ;; style guide suggests spaces not tabs + (add-hook 'rust-mode-hook (lambda () (setq indent-tabs-mode nil))) + (setq rust-format-on-save t)) + + (use-package toml-mode + :ensure t) +#+END_SRC +**** Cargo integration +Integrate Cargo, rust's package manager. +#+BEGIN_SRC emacs-lisp + (use-package cargo + :ensure t + :hook + (rust-mode . cargo-minor-mode)) +#+END_SRC +**** Flycheck +Linting with flycheck. +#+BEGIN_SRC emacs-lisp + (use-package flycheck-rust + :ensure t + :config + (add-hook 'flyckeck-mode-hook #'flycheck-rust-setup)) +#+END_SRC + +**** COMMENT Completion +Code completion with racer. +#+BEGIN_SRC emacs-lisp + (use-package racer + :ensure t + :hook ((rust-mode . racer-mode) + (racer-mode . (eldoc-mode company-mode))) + :init + (setq racer-command "~/.cargo/bin/racer")) +#+END_SRC +*** Bash +**** LSP +Completion with LSP +#+BEGIN_SRC emacs-lisp +(add-hook 'sh-mode-hook 'lsp) +#+END_SRC * Org mode ** Up to date org Pull the latest org mode from the repository, rather than the org which comes with emacs. -- Gitblit v1.9.3