From c8124c3efb9c68bd4a3310da1422af9fa92e61f1 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Thu, 15 Oct 2020 00:16:56 +0000
Subject: [PATCH] Added LSP support

---
 config.org |  119 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 77 insertions(+), 42 deletions(-)

diff --git a/config.org b/config.org
index 4bfaa6a..9e4ccb8 100644
--- a/config.org
+++ b/config.org
@@ -778,6 +778,27 @@
     (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))
+
+  (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 +958,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.
@@ -1098,54 +1125,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
@@ -1184,6 +1212,7 @@
 #+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)))
@@ -1219,6 +1248,12 @@
     :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