From c1e21065ac8e79c57105cbdf86e63b4822009fbf Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Sun, 10 Apr 2022 03:04:22 +0000
Subject: [PATCH] fix flyspell and theme loading

---
 config.org |  911 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 452 insertions(+), 459 deletions(-)

diff --git a/config.org b/config.org
index ebb0723..8a03153 100644
--- a/config.org
+++ b/config.org
@@ -8,11 +8,10 @@
   (cond ((eq system-type 'windows-nt)
          (add-to-list 'exec-path "C:/msys64/usr/bin")
          (add-to-list 'exec-path "C:/msys64/mingw64/bin")
-         (add-to-list 'exec-path "c:/Program Files/gnuplot")
+         (add-to-list 'exec-path "C:/Program Files/gnuplot")
          (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
         ((eq system-type 'darwin)
          (use-package exec-path-from-shell
-           :ensure t
            :config
            (exec-path-from-shell-initialize))
          (setq default-directory "~/")))
@@ -23,53 +22,36 @@
 Theme switcher, using a cond allows loading of many preconfigured themes which can be switched between easily.
 Zenburn theme is my default.
 #+BEGIN_SRC emacs-lisp
-  (setq emacs-theme 'zenburn)
-
   (defun disable-all-themes ()
-      (dolist (i custom-enabled-themes)
-           (disable-theme i)))
+    (dolist (i custom-enabled-themes)
+      (disable-theme i)))
 
-  (cond ((eq emacs-theme 'zenburn)
-         (use-package zenburn-theme
-           :ensure t
-           :init
-           (disable-all-themes)
-           :config
-           (load-theme 'zenburn t)))
-        ((eq emacs-theme 'doom-one)
-         (use-package doom-themes
-           :ensure t
-           :init
-           (disable-all-themes)
-           :config
-           (setq doom-themes-enable-bolt t
-                 doom-themes-enable-italic t)
-           (load-theme 'doom-one t)
-           (doom-themes-visual-bell-config)
-           (doom-themes-org-config)))
-        ((eq emacs-theme 'nord)
-         (use-package nord-theme
-           :ensure t
-           :init
-           (disable-all-themes)
-           :config
-           (load-theme 'nord t)))
-        ((eq emacs-theme 'solarized)
-         (use-package solarized-theme
-           :ensure t
-           :init
-           (disable-all-themes)
-           :config
-           (load-theme 'solarized-dark t)))
-        ((eq emacs-theme 'jetbrains-darcula)
-         (use-package jetbrains-darcula-theme
-           :ensure t
-           :init
-           (disable-all-themes)
-           :config
-           (load-theme 'jetbrains-darcula t)))
-        ((eq emacs-theme 'none)
-         (disable-all-themes)))
+  (defun set-theme (theme)
+    "Set the theme with theme downloading"
+    (interactive "SWhat theme to load? ")
+    (cond ((eq theme 'zenburn)
+           (use-package zenburn-theme))
+          ((string-match-p "^doom" "doom-one")
+           (use-package doom-themes
+             :config
+             (setq doom-themes-enable-bolt t
+                   doom-themes-enable-italic t)
+             (doom-themes-visual-bell-config)
+             (doom-themes-org-config)))
+          ((eq theme 'nord)
+           (use-package nord-theme))
+          ((eq theme 'solarized)
+           (use-package solarized-theme))
+          ((eq theme 'jetbrains-darcula)
+           (use-package jetbrains-darcula-theme))
+          ((eq theme 'none)
+           (disable-all-themes)))
+    (setq emacs-theme theme)
+    (when (not (eq theme 'none))
+      (load-theme theme t))
+    (message (format "Theme set to: %s" theme)))
+
+  (set-theme 'zenburn)
 #+END_SRC
 
 ** Default font
@@ -99,7 +81,6 @@
 Open external applications with =s-&=
 #+BEGIN_SRC emacs-lisp
   (use-package exwm
-    :ensure t
     :defer t
     :config
     (require 'exwm-config)
@@ -111,40 +92,31 @@
 Use aspell for spellchecking. 
 Auto-enable in latex and org as they're the main writing modes.
 #+BEGIN_SRC emacs-lisp
-  (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)
-  (diminish 'flyspell-mode)
-
+  (use-package flyspell
+    :hook ((tex-mode latex-mode TeX-mode LaTeX-mode org-mode text-mode) . flyspell-mode)
+    :diminish flyspell-mode
+    :init
+    (require 'ispell)
+    :config
+    (setq-default ispell-program-name "aspell")
+    (setq-default ispell-local-dictionary "en_AU"))
 #+END_SRC
-** Language Tool
+** COMMENT Language Tool
 Language tool is an open source grammar checker.
 #+BEGIN_SRC emacs-lisp
   (use-package langtool
-    :ensure t
     :init
     (setq langtool-java-classpath "/usr/share/languagetool:/usr/share/java/languagetool/*"))
 #+END_SRC
 ** Switch-window
 Helps to change windows easily when many are open at once.
 #+BEGIN_SRC emacs-lisp
-(use-package switch-window
-  :ensure t
-  :config
-    (setq switch-window-input-style 'minibuffer)
-    (setq switch-window-increase 4)
+  (use-package switch-window
+    :config
+    ;; (setq switch-window-input-style 'minibuffer)
     (setq switch-window-threshold 2)
     (setq switch-window-shortcut-style 'qwerty)
-    (setq switch-window-qwerty-shortcuts
-        '("a" "s" "d" "f" "j" "k" "l" "i" "o"))
-  :bind
+    :bind
     ([remap other-window] . switch-window))
 #+END_SRC
 
@@ -170,7 +142,6 @@
 Helpful pdf viewer.
 #+BEGIN_SRC emacs-lisp
   (use-package pdf-tools
-    :ensure t
     :config
     (pdf-tools-install 1))
 #+END_SRC
@@ -179,7 +150,6 @@
 Supposedly should provide insight to writing quality.
 #+BEGIN_SRC emacs-lisp
   (use-package writegood-mode
-    :ensure t
     :hook (text-mode . writegood-mode))
 #+END_SRC
 
@@ -187,23 +157,22 @@
 ** Helm core
 Helm aids the user interface for emacs. Adds visual and auto-complete feedback for emacs commands.
 #+BEGIN_SRC emacs-lisp
-  (use-package helm-config
-    :ensure helm
+  (use-package helm
     :bind (("M-x" . helm-M-x)
            ("C-x C-f" . helm-find-files)
            ("M-y" . helm-show-kill-ring)
            ("C-x b" . helm-mini)
            ("C-c h o" . helm-occur))
     :config
-    (setq helm-M-x-fuzzy-match t)
-    (setq helm-buffers-fuzzy-matching t
-          helm-recentf-fuzzy-match    t)
-    (setq helm-split-window-in-side-p           t ; open helm buffer inside current window, not occupy whole other window
+    (setq helm-mode-fuzzy-match                 t
+          helm-completion-in-regionfuzzy-match  t
+          helm-split-window-inside-p            t ; open helm buffer inside current window, not occupy whole other window
           helm-move-to-line-cycle-in-source     t ; move to end or beginning of source when reaching top or bottom of source.
           helm-ff-search-library-in-sexp        t ; search for library in `require' and `declare-function' sexp.
           helm-scroll-amount                    8 ; scroll 8 lines other window using M-<next>/M-<prior>
           helm-ff-file-name-history-use-recentf t
-          helm-echo-input-in-header-line t)
+          helm-echo-input-in-header-line        t
+          completion-styles                     '(flex))
     (defun spacemacs//helm-hide-minibuffer-maybe ()
       "Hide minibuffer in Helm session if we use the header line as input field."
       (when (with-helm-buffer helm-echo-input-in-header-line)
@@ -217,35 +186,38 @@
               'spacemacs//helm-hide-minibuffer-maybe)
     (helm-mode 1))
 #+END_SRC
-
+*** Helm git
+Give helm git awareness.
+#+BEGIN_SRC emacs-lisp
+  (use-package helm-ls-git
+    :bind (("C-x C-d" . helm-browse-project)))
+#+END_SRC
 ** Projectile
 Projectile is project management framework for emacs.
 Helps in navigation and management of projects.
 Identifies project layout from git.
 *** Enable it
- #+BEGIN_SRC emacs-lisp
-   (use-package projectile
-     :ensure t
-     :bind ("C-c p" . projectile-command-map)
-     :diminish projectile-mode
-     :config
-     (projectile-global-mode)
-     (setq projectile-completion-system 'helm)
-     (when (eq system-type 'windows-nt)
-       (setq projectile-indexing-method 'alien)))
- #+END_SRC
+#+BEGIN_SRC emacs-lisp
+  (use-package projectile
+    :bind ("C-c p" . projectile-command-map)
+    :diminish projectile-mode
+    :config
+    (projectile-global-mode)
+    (setq projectile-completion-system 'helm)
+    (when (eq system-type 'windows-nt)
+      (setq projectile-indexing-method 'alien)))
+#+END_SRC
 
 *** Let it compile things
 Shortcut for compilation.
- #+BEGIN_SRC emacs-lisp
-   (global-set-key (kbd "<f5>") 'projectile-compile-project)
- #+END_SRC
+#+BEGIN_SRC emacs-lisp
+  (global-set-key (kbd "<f5>") 'projectile-compile-project)
+#+END_SRC
 
 *** Enable communication with helm
 Use helm to manage project.
 #+BEGIN_SRC emacs-lisp
   (use-package helm-projectile
-    :ensure t
     :config
     (helm-projectile-on))
 #+END_SRC
@@ -253,45 +225,43 @@
 ** COMMENT ggtags
 Use GNU Global Tags. Can be useful for large projects.
 #+BEGIN_SRC emacs-lisp
-    (use-package ggtags
-      :ensure t
-      :bind (("C-c g s" . ggtags-find-other-symbol)
+  (use-package ggtags
+    :bind (("C-c g s" . ggtags-find-other-symbol)
            ("C-c g h" . ggtags-view-tag-history)
            ("C-c g r" . ggtags-find-reference)
            ("C-c g f" . ggtags-find-file)
            ("C-c g c" . ggtags-create-tags)
            ("C-c g u" . ggtags-update-tags))
-      :config
-      (add-hook 'c-mode-common-hook
+    :config
+    (add-hook 'c-mode-common-hook
               (lambda ()
                 (when (derived-mode-p 'c-mode 'c++-mode 'java-mode)
                   (ggtags-mode 1))))
-      )
+    )
 
-    (setq
-     helm-gtags-ignore-case t
-     helm-gtags-auto-update t
-     helm-gtags-use-input-at-cursor t
-     helm-gtags-pulse-at-cursor t
-     helm-gtags-prefix-key "\C-c g"
-     helm-gtags-suggested-key-mapping t
-     )
+  (setq
+   helm-gtags-ignore-case t
+   helm-gtags-auto-update t
+   helm-gtags-use-input-at-cursor t
+   helm-gtags-pulse-at-cursor t
+   helm-gtags-prefix-key "\C-c g"
+   helm-gtags-suggested-key-mapping t
+   )
 
-    (use-package helm-gtags
-      :ensure t
-      :config
-      (add-hook 'dired-mode-hook 'helm-gtags-mode)
-      (add-hook 'eshell-mode-hook 'helm-gtags-mode)
-      (add-hook 'c-mode-hook 'helm-gtags-mode)
-      (add-hook 'c++-mode-hook 'helm-gtags-mode)
-      (add-hook 'asm-mode-hook 'helm-gtags-mode)
-	
-      (define-key helm-gtags-mode-map (kbd "C-c g a") 'helm-gtags-tags-in-this-function)
-      (define-key helm-gtags-mode-map (kbd "C-j") 'helm-gtags-select)
-      (define-key helm-gtags-mode-map (kbd "M-.") 'helm-gtags-dwim)
-      (define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack)
-      (define-key helm-gtags-mode-map (kbd "C-c <") 'helm-gtags-previous-history)
-      (define-key helm-gtags-mode-map (kbd "C-c >") 'helm-gtags-next-history))
+  (use-package helm-gtags
+    :config
+    (add-hook 'dired-mode-hook 'helm-gtags-mode)
+    (add-hook 'eshell-mode-hook 'helm-gtags-mode)
+    (add-hook 'c-mode-hook 'helm-gtags-mode)
+    (add-hook 'c++-mode-hook 'helm-gtags-mode)
+    (add-hook 'asm-mode-hook 'helm-gtags-mode)
+
+    (define-key helm-gtags-mode-map (kbd "C-c g a") 'helm-gtags-tags-in-this-function)
+    (define-key helm-gtags-mode-map (kbd "C-j") 'helm-gtags-select)
+    (define-key helm-gtags-mode-map (kbd "M-.") 'helm-gtags-dwim)
+    (define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack)
+    (define-key helm-gtags-mode-map (kbd "C-c <") 'helm-gtags-previous-history)
+    (define-key helm-gtags-mode-map (kbd "C-c >") 'helm-gtags-next-history))
 #+END_SRC
 
 ** COMMENT Ctags
@@ -380,20 +350,19 @@
 ** Remove startup screen
 Start on scratch buffer instead.
 #+BEGIN_SRC emacs-lisp
-(setq inhibit-startup-message t)
+  (setq inhibit-startup-message t)
 #+END_SRC
 
 ** Disable bell
 Bloody bell dings every time you hit a key too much.
 #+BEGIN_SRC emacs-lisp
-(setq ring-bell-function 'ignore)
+  (setq ring-bell-function 'ignore)
 #+END_SRC
 
 ** Pretty symbols
 Why not? They make it look nice.
 #+BEGIN_SRC emacs-lisp
   (use-package pretty-mode
-    :ensure t
     :diminish t
     :if window-system
     :config
@@ -403,17 +372,16 @@
 ** COMMENT Find file other window
 Lets it accept more than one file. Works recursively.
 #+BEGIN_SRC emacs-lisp
-(defadvice find-file-other-window (around find-files activate)
-  (if (listp filename)
-      (loop for f in filename do (find-file-other-window f wildcards))
-    ad-do-it))
+  (defadvice find-file-other-window (around find-files activate)
+    (if (listp filename)
+        (loop for f in filename do (find-file-other-window f wildcards))
+      ad-do-it))
 #+END_SRC
 
 ** Which key
 Helps to explain keybindings if you get lost.
 #+BEGIN_SRC emacs-lisp
   (use-package which-key
-    :ensure t
     :diminish which-key-mode
     :config
     (which-key-mode))
@@ -422,10 +390,10 @@
 ** Config shortcuts
 *** Go to this file
 #+BEGIN_SRC emacs-lisp
-(defun config-visit ()
-  (interactive)
-  (find-file "~/.emacs.d/config.org"))
-(global-set-key (kbd "C-c e d") 'config-visit)
+  (defun config-visit ()
+    (interactive)
+    (find-file "~/.emacs.d/config.org"))
+  (global-set-key (kbd "C-c e d") 'config-visit)
 #+END_SRC
 
 *** Go to init.el
@@ -438,18 +406,17 @@
 
 *** Reload configuration
 #+BEGIN_SRC emacs-lisp
-(defun config-reload ()
-  "Reloads ~/.emacs.d/config.org at run time"
-  (interactive)
-  (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
-(global-set-key (kbd "C-c e r") 'config-reload)
+  (defun config-reload ()
+    "Reloads ~/.emacs.d/config.org at run time"
+    (interactive)
+    (org-babel-load-file (expand-file-name "~/.emacs.d/config.org")))
+  (global-set-key (kbd "C-c e r") 'config-reload)
 #+END_SRC
 
 ** Smartparens
 Matches brackets automatically. Added "$" for latex in org mode.
 #+BEGIN_SRC emacs-lisp
   (use-package smartparens
-    :ensure t
     :diminish smartparens-mode
     :config
     (progn
@@ -464,7 +431,6 @@
 Colours according to code after a "#", works with 3 and 6 character hex codes.
 #+BEGIN_SRC emacs-lisp
   (use-package rainbow-mode
-    :ensure t
     :diminish rainbow-mode
     :init
     (add-hook 'prog-mode-hook 'rainbow-mode))
@@ -475,7 +441,6 @@
 Colours the brackets so that they stand out more.
 #+BEGIN_SRC emacs-lisp
   (use-package rainbow-delimiters
-    :ensure t
     :hook (prog-mode . rainbow-delimiters-mode))
 #+END_SRC
 
@@ -483,31 +448,30 @@
 Removes unnecessary white space
 #+BEGIN_SRC emacs-lisp
   (use-package clean-aindent-mode
-    :ensure t
     :hook prog-mode)
 #+END_SRC
 Shows trailing white space
 #+BEGIN_SRC emacs-lisp
-(add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
+  (add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
 #+END_SRC
 
 ** Whitespace mode
 Reveals whitespace characters
 #+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "C-c w") 'whitespace-mode)
-(add-hook 'diff-mode-hook (lambda ()
-                            (setq-local whitespace-style
-                                        '(face
-                                          tabs
-                                          tab-mark
-                                          spaces
-                                          space-mark
-                                          trailing
-                                          indentation::space
-                                          indentation::tab
-                                          newline
-                                          newline-mark))
-                            (whitespace-mode 1)))
+  (global-set-key (kbd "C-c w") 'whitespace-mode)
+  (add-hook 'diff-mode-hook (lambda ()
+                              (setq-local whitespace-style
+                                          '(face
+                                            tabs
+                                            tab-mark
+                                            spaces
+                                            space-mark
+                                            trailing
+                                            indentation::space
+                                            indentation::tab
+                                            newline
+                                            newline-mark))
+                              (whitespace-mode 1)))
 
 #+END_SRC
 
@@ -524,11 +488,10 @@
 Collects interesting statistics about key presses.
 Use M-x keyfreq-show to show in emacs or M-x keyfreq-html to output
 #+BEGIN_SRC emacs-lisp
-(use-package keyfreq
-  :ensure t
-  :config
-  (keyfreq-mode 1)
-  (keyfreq-autosave-mode 1))
+  (use-package keyfreq
+    :config
+    (keyfreq-mode 1)
+    (keyfreq-autosave-mode 1))
 #+END_SRC
 
 ** Undo tree
@@ -536,76 +499,74 @@
 Supports branched undo history (thus the tree).
 Pretty neat, if seldom used.
 #+BEGIN_SRC emacs-lisp
-(use-package undo-tree
-  :ensure t
-  :diminish undo-tree-mode
-  :config
-  (global-undo-tree-mode))
+  (use-package undo-tree
+    :diminish undo-tree-mode
+    :config
+    (global-undo-tree-mode))
 #+END_SRC
 
 ** Volatile highlights
 Colour the material just copied
 #+BEGIN_SRC emacs-lisp
-(use-package volatile-highlights
-  :ensure t
-  :diminish volatile-highlights-mode
-  :config
-  (volatile-highlights-mode t))
+  (use-package volatile-highlights
+    :diminish volatile-highlights-mode
+    :config
+    (volatile-highlights-mode t))
 #+END_SRC
 
 ** ibuffer
 View all open buffers in their own buffer rather in the temporary mini buffer.
 #+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "C-x C-b") 'ibuffer)
-(setq ibuffer-use-other-window t)
+  (global-set-key (kbd "C-x C-b") 'ibuffer)
+  (setq ibuffer-use-other-window t)
 #+END_SRC
 
 ** Hippie expand
 Seems cool, but I don't think I ever use this.
 Meant to suggest completions to beginning of a word.
 #+BEGIN_SRC emacs-lisp
-(global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand
-(setq
- hippie-expand-try-functions-list
- '(try-expand-dabbrev ;; Try to expand word "dynamically", searching the current buffer.
-   try-expand-dabbrev-all-buffers ;; Try to expand word "dynamically", searching all other buffers.
-   try-expand-dabbrev-from-kill ;; Try to expand word "dynamically", searching the kill ring.
-   try-complete-file-name-partially ;; Try to complete text as a file name, as many characters as unique.
-   try-complete-file-name ;; Try to complete text as a file name.
-   try-expand-all-abbrevs ;; Try to expand word before point according to all abbrev tables.
-   try-expand-list ;; Try to complete the current line to an entire line in the buffer.
-   try-expand-line ;; Try to complete the current line to an entire line in the buffer.
-   try-complete-lisp-symbol-partially ;; Try to complete as an Emacs Lisp symbol, as many characters as unique.
-   try-complete-lisp-symbol) ;; Try to complete word as an Emacs Lisp symbol.
- )
+  (global-set-key (kbd "M-/") 'hippie-expand) ;; replace dabbrev-expand
+  (setq
+   hippie-expand-try-functions-list
+   '(try-expand-dabbrev ;; Try to expand word "dynamically", searching the current buffer.
+     try-expand-dabbrev-all-buffers ;; Try to expand word "dynamically", searching all other buffers.
+     try-expand-dabbrev-from-kill ;; Try to expand word "dynamically", searching the kill ring.
+     try-complete-file-name-partially ;; Try to complete text as a file name, as many characters as unique.
+     try-complete-file-name ;; Try to complete text as a file name.
+     try-expand-all-abbrevs ;; Try to expand word before point according to all abbrev tables.
+     try-expand-list ;; Try to complete the current line to an entire line in the buffer.
+     try-expand-line ;; Try to complete the current line to an entire line in the buffer.
+     try-complete-lisp-symbol-partially ;; Try to complete as an Emacs Lisp symbol, as many characters as unique.
+     try-complete-lisp-symbol) ;; Try to complete word as an Emacs Lisp symbol.
+   )
 #+END_SRC
 
 ** Highlight line
 Very useful for finding where you are.
 #+BEGIN_SRC emacs-lisp
-(global-hl-line-mode)
+  (global-hl-line-mode)
 #+END_SRC
 
 ** Line numbers
 Everyone needs line numbers when programming.
 #+BEGIN_SRC emacs-lisp
-(add-hook 'prog-mode-hook 'linum-mode)
+  (add-hook 'prog-mode-hook 'linum-mode)
 #+END_SRC
 
 ** Garbage collection
 Starts garbage collection every 100MB.
 #+BEGIN_SRC emacs-lisp
-(setq gc-cons-threshold 100000000)
+  (setq gc-cons-threshold (* 1024 1024 100))
 #+END_SRC
 
 ** Kill ring
 Changes the kill ring size to 5000.
 #+BEGIN_SRC emacs-lisp
   (setq global-mark-ring-max 5000
-	mark-ring-max 5000
-	mode-require-final-newline t
-	kill-ring-max 5000
-	kill-whole-line t)
+        mark-ring-max 5000
+        mode-require-final-newline t
+        kill-ring-max 5000
+        kill-whole-line t)
 #+END_SRC
 
 ** Coding style
@@ -613,8 +574,8 @@
 K&R uses 4 space tabs.
 #+BEGIN_SRC emacs-lisp
   (setq c-default-style '((java-mode . "java")
-                         (awk-mode . "awk")
-                         (other . "linux")))
+                          (awk-mode . "awk")
+                          (other . "k&r")))
 #+END_SRC
 
 ** Coding system
@@ -624,12 +585,21 @@
   (set-keyboard-coding-system 'utf-8)
   (set-language-environment "UTF-8")
   (prefer-coding-system 'utf-8)
-  (setq-default indent-tabs-mode t
-                tab-width 8
+  (setq-default indent-tabs-mode nil
+                tab-width 4
                 c-basic-offset tab-width
                 cperl-indent-level tab-width)
+  (c-set-offset 'inline-open '0)
   (delete-selection-mode)
   (global-set-key (kbd "RET") 'newline-and-indent)
+#+END_SRC
+*** Smart tabs
+Tabs for indentation, spaces for alignment
+#+BEGIN_SRC emacs-lisp
+  (use-package smart-tabs-mode
+    :config
+    (smart-tabs-insinuate 'c 'c++ 'java 'javascript 'cperl 'python 'ruby
+                          'nxml))
 #+END_SRC
 
 ** Move to beginning of line ignoring whitespace
@@ -644,50 +614,55 @@
 If ARG is not nil or 1, move forward ARG - 1 lines first. If
 point reaches the beginning or end of the buffer, stop there.
 #+BEGIN_SRC emacs-lisp
-(defun prelude-move-beginning-of-line (arg)
-  (interactive "^p")
-  (setq arg (or arg 1))
+  (defun prelude-move-beginning-of-line (arg)
+    (interactive "^p")
+    (setq arg (or arg 1))
 
-  ;; Move lines first
-  (when (/= arg 1)
-    (let ((line-move-visual nil))
-      (forward-line (1- arg))))
+    ;; Move lines first
+    (when (/= arg 1)
+      (let ((line-move-visual nil))
+        (forward-line (1- arg))))
 
-  (let ((orig-point (point)))
-    (back-to-indentation)
-    (when (= orig-point (point))
-      (move-beginning-of-line 1))))
+    (let ((orig-point (point)))
+      (back-to-indentation)
+      (when (= orig-point (point))
+        (move-beginning-of-line 1))))
 
-(global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
+  (global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
 #+END_SRC
 
 ** Indent region or buffer
 Indent, slightly different to standard tab or C-M-\.
 #+BEGIN_SRC emacs-lisp
-(defun indent-region-or-buffer ()
-  "Indent a region if selected, otherwise the whole buffer."
-  (interactive)
-  (unless (member major-mode prelude-indent-sensitive-modes)
-    (save-excursion
-      (if (region-active-p)
+  (defun indent-region-or-buffer ()
+    "Indent a region if selected, otherwise the whole buffer."
+    (interactive)
+    (unless (member major-mode prelude-indent-sensitive-modes)
+      (save-excursion
+        (if (region-active-p)
+            (progn
+              (indent-region (region-beginning) (region-end))
+              (message "Indented selected region."))
           (progn
-            (indent-region (region-beginning) (region-end))
-            (message "Indented selected region."))
-        (progn
-          (indent-buffer)
-          (message "Indented buffer.")))
-      (whitespace-cleanup))))
+            (indent-buffer)
+            (message "Indented buffer.")))
+        (whitespace-cleanup))))
 
-(global-set-key (kbd "C-c i") 'indent-region-or-buffer)
+  (global-set-key (kbd "C-c i") 'indent-region-or-buffer)
 #+END_SRC
 
 ** Tramp
 Remote editing mode.
 Hate having to re-input passwords.
 #+BEGIN_SRC emacs-lisp
-  (when (eq system-type 'windows-nt)
-    (setq tramp-default-method "pscp"))
-  (setq password-cache-expiry nil)
+  (use-package tramp
+    :pin gnu
+    :config
+    ;; (setq tramp-default-method "ssh")
+    (when (eq system-type 'windows-nt)
+      (setq tramp-default-method "pscp"))
+    (setq password-cache-expiry nil)
+    (add-to-list 'tramp-remote-path 'tramp-own-remote-path))
 #+END_SRC
 
 ** COMMENT Y or N instead of yes or no
@@ -701,7 +676,6 @@
 Want to make work but need to find a good way of doing so.
 #+BEGIN_SRC emacs-lisp
   (use-package sublimity
-    :ensure t
     :config
     (require 'sublimity-scroll)
     (setq sublimity-scroll-weight 4
@@ -713,39 +687,47 @@
     (sublimity-mode 1))
 
   (use-package minimap
-    :ensure t
     :config
     (minimap-mode))
 #+END_SRC
 
+** Highlight indentation
+Vertical demarcations for indent levels
+#+BEGIN_SRC emacs-lisp
+  (use-package highlight-indentation
+    :hook (prog-mode . highlight-indentation-mode))
+#+END_SRC
+
+** Auto revert mode
+Update unchanged buffers if underlying file changes.
+#+BEGIN_SRC emacs-lisp
+  (global-auto-revert-mode)
+#+END_SRC
 * Mode line tweaks
 Diminish is used but is included in init.el such that it can be used throughout this document
 ** Spaceline
 A little easier to read than the default emacs mode line.
 #+BEGIN_SRC emacs-lisp
-    (use-package spaceline
-      :ensure t
-      :config
-      (require 'spaceline-config)
-      (setq spaceline-buffer-encoding-abbrev-p t)
-      (setq spaceline-line-column-p t)
-      (setq spaceline-line-p t)
-      (setq powerline-default-separator (quote arrow))
-      (spaceline-spacemacs-theme)
-      (spaceline-helm-mode))
+  (use-package spaceline
+    :config
+    (require 'spaceline-config)
+    (setq spaceline-buffer-encoding-abbrev-p t)
+    (setq spaceline-line-column-p t)
+    (setq powerline-default-separator (quote arrow))
+    (spaceline-spacemacs-theme)
+    (spaceline-helm-mode))
 #+END_SRC
 
 *** Separator
 Slightly nicer separator.
 #+BEGIN_SRC emacs-lisp
-(setq powerline-default-separator nil)
+  (setq powerline-default-separator nil)
 #+END_SRC
 
 ** Nyan mode
 Use nyan cat as a reference for buffer progression.
 #+BEGIN_SRC emacs-lisp
   (use-package nyan-mode
-    :ensure t
     :config
     (nyan-mode 1))
 #+END_SRC
@@ -756,21 +738,17 @@
 Manually added snippets are in ~/.emacs.d/snippets/{mode}.
 #+BEGIN_SRC emacs-lisp
   (use-package yasnippet
-    :ensure t
     :diminish yas-minor-mode
     :config
     (yas-global-mode 1))
 
   (use-package yasnippet-snippets
-    :ensure t
     :after yasnippet)
 #+END_SRC
-
 ** Flycheck
 Basic linter. Works pretty well.
 #+BEGIN_SRC emacs-lisp
   (use-package flycheck
-    :ensure t
     :diminish flycheck-mode
     :config
     (global-flycheck-mode))
@@ -778,19 +756,16 @@
 *** flycheck-pos-tip
 Add suggestions at the cursor.
 #+BEGIN_SRC emacs-lisp
-(use-package flycheck-pos-tip
-  :ensure t
-  :after flycheck
-  :config
-  (flycheck-pos-tip-mode))
+  (use-package flycheck-pos-tip
+    :after flycheck
+    :config
+    (flycheck-pos-tip-mode))
 #+END_SRC
-
 ** Company
 Company is auto-complete for Emacs.
 Uses various backends, more of which are added later.
 #+BEGIN_SRC emacs-lisp
   (use-package company
-    :ensure t
     :diminish company-mode
     :config
     (global-company-mode)
@@ -801,19 +776,20 @@
 ** LSP Mode
 Use LSP for completion suggestions.
 Causes too much memory usage, need to debug.
+Need to generate ~compile_flags~ for c/c++, can use ~bear~ but may need other tools.
 #+BEGIN_SRC emacs-lisp
   (use-package lsp-mode
-    :ensure t
     :hook (((c-mode
-             cpp-mode
+             c++-mode
              tex-mode
              latex-mode
              TeX-mode
              LaTeX-mode
              rust-mode
              sh-mode
-             verilog-mode
-             go-mode) . lsp))
+             ;; verilog-mode
+             go-mode
+             python-mode) . lsp))
     :init
     (setq lsp-keymap-prefix "C-c l")
     :commands lsp
@@ -823,13 +799,11 @@
     (setq lsp-completion-provider :capf)
     (setq lsp-keep-workspace-alive 'nil)
     (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
 
@@ -845,7 +819,6 @@
 Pretty good and offers fairly decent features.
 #+BEGIN_SRC emacs-lisp
   (use-package magit
-    :ensure t
     :commands magit-get-top-dir
     :bind ("C-x g" . magit-status)
     :init
@@ -894,11 +867,42 @@
        magit-process-popup-time 10
        ;; ask me if I want a tracking upstream
        magit-set-upstream-on-push 'askifnotset
-       )))
+       ))
+    )
+#+END_SRC
+
+*** More general yes and no prompt
+The default setting can miss some.
+Don't redefine the regex in case this is too general.
+#+BEGIN_SRC emacs-lisp
+  ;;(when-let ((regex "[\[\(]]?\\([Yy]\\(es\\)?\\)[/|]\\([Nn]o?\\)[\]\)]")
+  (defun magit-process-general-yn-prompt-hook (proc str)
+    "Handle [y/n] prompts"
+    (when-let ((beg (string-match "[\[\(]]?\\([Yy]\\(es\\)?\\)[/|]\\([Nn]o?\\)[\]\)]" str)))
+      (let ;; ((max-mini-window-height 30))
+          (process-send-string
+           proc
+           (downcase
+            (concat
+             (match-string
+              (if (save-match-data
+                    (magit-process-kill-on-abort proc
+                      (y-or-n-p (substring str 0 beg)))) 1 2)
+              str)
+             "\n"))))))
+
+  (add-hook 'magit-process-prompt-functions
+            #'magit-process-general-yn-prompt-hook)
+#+END_SRC
+*** COMMENT Gerrit integration
+Gerrit takes ~origin:refs/for/master~ as a destination.
+Enable magit to work with its oddities.
+#+BEGIN_SRC emacs-lisp
+  (use-package magit-gerrit)
 #+END_SRC
 
 ** CEDET
-*** Semantic
+*** COMMENT Semantic
 Parser library for code, supports many other packages.
 Allows emacs to be more aware of what is being written.
 #+BEGIN_SRC emacs-lisp
@@ -915,9 +919,9 @@
 Emacs Development Environment.
 Can be used to manage and create build files for a project.
 #+BEGIN_SRC emacs-lisp
-(use-package ede
-  :config
-  (global-ede-mode t))
+  (use-package ede
+    :config
+    (global-ede-mode t))
 #+END_SRC
 
 *** gdb-many-windows
@@ -925,9 +929,9 @@
 Shows register contents, variable contents and others in addition to GDB shell.
 Also shows source code while debugging.
 #+BEGIN_SRC emacs-lisp
-(setq
- gdb-many-windows t
- gdb-show-main t)
+  (setq
+   gdb-many-windows t
+   gdb-show-main t)
 #+END_SRC
 
 *** COMMENT Semantic refactor
@@ -935,43 +939,70 @@
 Should help to refactor file.
 #+BEGIN_SRC emacs-lisp
   (use-package srefactor
-    :ensure t
     :bind (("M-RET o" . 'srefactor-lisp-one-line)
-       ("M-RET m" . 'srefactor-lisp-format-sexp)
-       ("M-RET d" . 'srefactor-lisp-format-defun)
-       ("M-RET b" . 'srefactor-lisp-format-buffer)
-       :map c-mode-base-map
-            ("M-RET" . 'srefactor-refactor-at-point)
-            :map c++-mode-map
-            ("M-RET" . 'srefactor-refactor-at-point)))
+           ("M-RET m" . 'srefactor-lisp-format-sexp)
+           ("M-RET d" . 'srefactor-lisp-format-defun)
+           ("M-RET b" . 'srefactor-lisp-format-buffer)
+           :map c-mode-base-map
+           ("M-RET" . 'srefactor-refactor-at-point)
+           :map c++-mode-map
+           ("M-RET" . 'srefactor-refactor-at-point)))
+#+END_SRC
+
+** Tree sitter
+Parser library.
+Provides better syntax highlighting and some other neat features.
+#+BEGIN_SRC emacs-lisp
+  (use-package tree-sitter
+    :diminish t)
+  (use-package tree-sitter-langs
+    :config
+    (global-tree-sitter-mode)
+    (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))
 #+END_SRC
 
 ** Language specific configs
 *** C/C++
-**** Flycheck clang
+**** Flycheck
+***** Flycheck clang
 Add the clang backend for linting.
 #+BEGIN_SRC emacs-lisp
   (use-package flycheck-clang-analyzer
-    :ensure t
     :after flycheck
     :config
     (with-eval-after-load 'flycheck
       (require 'flycheck-clang-analyzer)
-       (flycheck-clang-analyzer-setup)))
+      (flycheck-clang-analyzer-setup)))
 #+END_SRC
+***** Flycheck project root
+Flycheck tends to fail finding the project root, giving errors about missing files.
+This should remove them.
+#+BEGIN_SRC emacs-lisp
+  (defun setup-flycheck-project-path ()
+    (let ((root (ignore-errors (projectile-project-root))))
+      (when root
+        (add-to-list
+         (make-variable-buffer-local 'flycheck-clang-include-path)
+         root)
+        (add-to-list
+         (make-variable-buffer-local 'flycheck-gcc-include-path)
+         root))))
 
-**** Company
+  (add-hook 'c-mode-hook 'setup-flycheck-project-path)
+  (add-hook 'c++-mode-hook 'setup-flycheck-project-path)
+#+END_SRC
+**** COMMENT Company
 Add header completion as well as Irony, which uses clang for suggestions.
 #+BEGIN_SRC emacs-lisp
   (use-package company-c-headers
-      :ensure t
-      :after company
-      :config
-      (add-hook 'c++-mode-hook 'company-mode)
-      (add-hook 'c-mode-hook 'company-mode))
-
+    :after company
+    :config
+    (add-hook 'c++-mode-hook 'company-mode)
+    (add-hook 'c-mode-hook 'company-mode))
+#+END_SRC
+**** COMMENT Irony
+#+BEGIN_SRC emacs-lisp
   (use-package irony
-    :ensure t
     :init
     (setq w32-pipe-read-delay 0)
     (setq irony-server-w32-pipe-buffer-size (* 64 1024))
@@ -981,7 +1012,6 @@
     (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
 
   (use-package company-irony
-    :ensure t
     :after irony
     :config
     (add-to-list 'company-backends '(company-c-headers
@@ -991,35 +1021,46 @@
 **** Clang-format
 Automatically format buffer on save.
 #+BEGIN_SRC emacs-lisp
-  (when (file-exists-p "/usr/share/clang/clang-format.el")
-    (load "/usr/share/clang/clang-format.el")
-    (setq clang-format-linux-style (concat "{BasedOnStyle: LLVM,"
-                                           "IndentWidth: 8,"
-                                           "UseTab: Always,"
-                                           "BreakBeforeBraces: Linux,"
-                                           "AllowShortIfStatementsOnASingleLine: false,"
-                                           "IndentCaseLabels: false}"))
-    (setq-default clang-format-style clang-format-linux-style)
-    (defun clang-format-on-save ()
-      (add-hook 'before-save-hook 'clang-format-buffer nil t))
-    (add-hook 'c-mode-hook 'clang-format-on-save nil t)
-    (add-hook 'c++-mode-hook 'clang-format-on-save nil t))
+  (defun set-clang-format-style ()
+    (if (file-exists-p (concat
+                        (projectile-project-root)
+                        ".clang-format"))
+        (setq-local clang-format-style nil)
+      (setq-local clang-format-style (concat "{BasedOnStyle: LLVM,"
+                                             "IndentWidth: " (format "%s" tab-width) ","
+                                             "TabWidth: " (format "%s" tab-width) ","
+                                             "UseTab: " (if (eq indent-tabs-mode nil)
+                                                            "Never"
+                                                          "AlignWithSpaces")
+                                             ","
+                                             "BreakBeforeBraces: Linux,"
+                                             "AllowShortIfStatementsOnASingleLine: false,"
+                                             "PointerAlignment: Left,"
+                                             "IndentCaseBlocks: true,"
+                                             "IndentCaseLabels: false,"
+                                             "SortUsingDeclarations: true}"))))
+  (add-hook 'c-mode-common-hook 'set-clang-format-style)
+
+  (use-package clang-format)
+
+  ;;   (defun clang-format-on-save ()
+  ;;     (add-hook 'before-save-hook 'clang-format-buffer nil t))
+  ;;   (add-hook 'c-mode-hook 'clang-format-on-save nil t)
+  ;;   (add-hook 'c++-mode-hook 'clang-format-on-save nil t))
 #+END_SRC
 *** emacs-lisp
 **** COMMENT Company
 Add slime backend.
 #+BEGIN_SRC emacs-lisp
-(add-hook 'emacs-lisp-mode-hook 'company-mode)
+  (add-hook 'emacs-lisp-mode-hook 'company-mode)
 
-(use-package slime
-  :ensure t
-  :config
-  (setq inferior-lisp-program "/usr/bin/sbcl")
-  (setq slime-contribs '(slime-fancy)))
+  (use-package slime
+    :config
+    (setq inferior-lisp-program "/usr/bin/sbcl")
+    (setq slime-contribs '(slime-fancy)))
 
-(use-package slime-company
-  :ensure t
-  :init
+  (use-package slime-company
+    :init
     (require 'company)
     (slime-setup '(slime-fancy slime-company)))
 #+END_SRC
@@ -1028,11 +1069,10 @@
 **** x86-lookup
 Look up reference PDF. Use Intel manual.
 #+BEGIN_SRC emacs-lisp
-(use-package x86-lookup
-  :ensure t
-  :init
-  (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
-  :bind ("C-h x" . x86-lookup))
+  (use-package x86-lookup
+    :init
+    (setq x86-lookup-pdf "D:/Coding/x86-instructions.pdf")
+    :bind ("C-h x" . x86-lookup))
 #+END_SRC
 
 *** Latex
@@ -1053,27 +1093,23 @@
 Help company complete tex math and references.
 #+BEGIN_SRC emacs-lisp
   (use-package company-math
-    :ensure t
     :after company
     :config
     (add-to-list 'company-backends '(company-math-symbols-unicode company-math-symbols-latex
-                                     company-latex-commands))
+                                                                  company-latex-commands))
     (setq company-math-allow-latex-symbols-in-faces t))
 
   (use-package company-reftex
-    :ensure t
     :after company
     :config
     (add-to-list 'company-backends 'company-reftex-citations))
 
   (use-package company-auctex
-    :ensure t
     :after company
     :config
     (company-auctex-init))
 
   (use-package company-bibtex
-    :ensure t
     :after company
     (add-to-list 'company-backends 'company-bibtex))
 #+END_SRC
@@ -1118,13 +1154,15 @@
 Sets the PlantUML path for the mode to generate models.
 #+BEGIN_SRC emacs-lisp
   (use-package plantuml-mode
-    :ensure t
     :init
     (cond ((eq system-type 'windows-nt)
-           (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar"))
+           (when (file-exists-p "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar")
+             (setq plantuml-jar-path "c:/ProgramData/chocolatey/lib/plantuml/tools/plantuml.jar")
+             (setq planuml-default-exec-mode 'jar)))
           ((eq system-type 'gnu/linux)
-           (setq plantuml-jar-path "/usr/share/java/plantuml/plantuml.jar")))
-    (setq planuml-default-exec-mode 'jar))
+           (when (file-exists-p "/usr/share/java/plantuml/plantuml.jar")
+             (setq plantuml-jar-path "/usr/share/java/plantuml/plantuml.jar")
+             (setq planuml-default-exec-mode 'jar)))))
 #+END_SRC
 
 *** COMMENT Racket
@@ -1136,79 +1174,44 @@
     (setenv "PATH" (mapconcat #'identity exec-path path-separator)))
 
   (use-package racket-mode
-      :ensure t
-      :config
-      (autoload 'racket-mode "Racket" "Racket Editing Mode" t)
-      (add-to-list
-       'auto-mode-alist
-       '("\\.rkt$" . racket-mode)))
+    :config
+    (autoload 'racket-mode "Racket" "Racket Editing Mode" t)
+    (add-to-list
+     'auto-mode-alist
+     '("\\.rkt$" . racket-mode)))
 #+END_SRC
 
-*** COMMENT Verilog
+*** Verilog
 **** Get latest version
-Pull the latest version from the web.
+Use latest version from repositories.
 #+BEGIN_SRC emacs-lisp
-  (defun get-verilog-latest()
-    (if (not(file-directory-p "~/.emacs.d/elpa/verilog-mode"))
-        (make-directory "~/.emacs.d/elpa/verilog-mode"))
-    (if (file-exists-p "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")
-        (delete-file "~/.emacs.d/elpa/verilog-mode/verilog-mode.el"))
-    (url-copy-file "https://www.veripool.org/ftp/verilog-mode.el" "~/.emacs.d/elpa/verilog-mode/verilog-mode.el" 1))
-#+END_SRC
-
-**** 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."
-    (with-temp-buffer
-      (insert string)
-      (when (file-writable-p file)
-        (write-region (point-min)
-                      (point-max)
-                      file))))
-
-  (defun verilog-today-day ()
-    (time-to-days (current-time)))
-
-  (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-read-last-update-day ()
-    "Read last update day."
-    (string-to-number
-     (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day")))
-
-  (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
-    :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")
+    :pin gnu
     :config
     (autoload 'verilog-mode "verilog-mode" "Verilog mode" t )
-    (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode)))
+    (add-to-list 'auto-mode-alist '("\\.[ds]?va?h?\\'" . verilog-mode))
+    (setq-default verilog-align-ifelse t
+                  verilog-auto-delete-trailing-whitespace t
+                  verilog-auto-inst-param-value t
+                  verilog-auto-lineup 'all
+                  verilog-auto-newline nil
+                  verilog-auto-save-policy nil
+                  verilog-auto-template-warn-unused t
+                  verilog-auto-endcomments nil
+                  verilog-highlight-grouping-keywords t
+                  verilog-highlight-modules t
+                  verilog-tab-to-comment t
+                  verilog-indent-begin-after-if nil
+                  verilog-indent-lists nil
+                  verilog-case-indent 4
+                  verilog-cexp-indent 0
+                  verilog-indent-level 4
+                  verilog-indent-level-behavioral 4
+                  verilog-indent-level-declaration 4
+                  verilog-indent-level-directive 4
+                  verilog-indent-level-module 4))
 #+END_SRC
-
+#+END_SRC
 *** COMMENT MATLAB
 Mode for editing MATLAB m-files.
 #+BEGIN_SRC emacs-lisp
@@ -1228,15 +1231,13 @@
 For editing MIPS assembly.
 #+BEGIN_SRC emacs-lisp
   (use-package mips-mode
-    :ensure t
     :mode "\\.mips$")
 #+END_SRC
 
 *** COMMENT IPython notebooks
 Allow emacs to view and use IPython notebooks
 #+BEGIN_SRC emacs-lisp
-  (use-package ein
-    :ensure t)
+  (use-package ein)
 #+END_SRC
 
 *** Rust
@@ -1244,20 +1245,17 @@
 Get the major mode for rust files.
 #+BEGIN_SRC emacs-lisp
   (use-package rust-mode
-    :ensure t
     :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)
+  (use-package toml-mode)
 #+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
@@ -1265,54 +1263,55 @@
 Linting with flycheck.
 #+BEGIN_SRC emacs-lisp
   (use-package flycheck-rust
-    :ensure t
     :config
-    (add-hook 'flyckeck-mode-hook #'flycheck-rust-setup))
+    (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))
 #+END_SRC
 *** Go
 **** Major mode
 #+BEGIN_SRC emacs-lisp
   (use-package go-mode
-    :ensure t
     :config
     (add-hook 'before-save-hook #'gofmt-before-save))
 #+END_SRC
 
-#+RESULTS:
-: t
-
 **** Flycheck
 #+BEGIN_SRC emacs-lisp
   (use-package flycheck-golangci-lint
-    :ensure t
     :config
     (add-hook 'flycheck-mode-hook #'flycheck-golangci-lint-setup))
 #+END_SRC
 **** Company
 #+BEGIN_SRC emacs-lisp
-  (use-package company-go
-    :ensure t)
+  (use-package company-go)
+#+END_SRC
+*** Python
+**** COMMENT LSP server
+Use jedi, idk why.
+#+BEGIN_SRC emacs-lisp
+  (use-package lsp-jedi
+    :config
+    (add-to-list 'lsp-disabled-clients 'pyls)
+    (add-to-list 'lsp-enabled-clients 'jedi))
 #+END_SRC
 * Org mode
 ** Up to date org
 Pull the latest org mode from the repository, rather than the org which comes with emacs.
 #+BEGIN_SRC emacs-lisp
-    (use-package org
-      :ensure org-plus-contrib
-      :pin org)
+  (use-package org
+    :ensure org-contrib)
 #+END_SRC
 
 ** Small tweaks
 Small quality of life changes to org-mode.
 #+BEGIN_SRC emacs-lisp
-(setq org-src-fontify-natively t)
-(setq org-src-tab-acts-natively t)
-(setq org-confirm-babel-evaluate nil)
-(setq org-export-with-smart-quotes t)
-(setq org-src-window-setup 'current-window)
-(add-hook 'org-mode-hook 'org-indent-mode)
-(diminish 'org-indent-mode)
-(diminish 'visual-line-mode)
+  (setq org-src-fontify-natively t
+        org-src-tab-acts-natively t
+        org-confirm-babel-evaluate nil
+        org-export-with-smart-quotes t
+        org-src-window-setup 'current-window)
+  (add-hook 'org-mode-hook 'org-indent-mode)
+  (diminish 'org-indent-mode)
+  (diminish 'visual-line-mode)
 #+END_SRC
 *** Spell checking for code and latex
 #+BEGIN_SRC emacs-lisp
@@ -1329,13 +1328,12 @@
                (visual-line-mode 1)))
 #+END_SRC
 
-** org-bullets
+** Fancy org points
 Use bullets of different colours and styles instead of the "\*\*\*" to denote indentation levels.
 #+BEGIN_SRC emacs-lisp
-  (use-package org-bullets
-    :ensure t
+  (use-package org-superstar
     :config
-    (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
+    (add-hook 'org-mode-hook (lambda () (org-superstar-mode 1))))
 #+END_SRC
 
 ** Org Babel
@@ -1344,17 +1342,16 @@
 *** Languages
 Add a bunch of languages to org babel supported languages
 #+BEGIN_SRC emacs-lisp
-    (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t)
-                                                             (C . t)
-                                                             (python . t)
-                                                             (latex . t)
-                                                             (scheme . t)
-                                                             (gnuplot . t)
-                                                             (matlab . t)
-                                                             (plantuml . t)
-                                                             (fortran . t)
-                                                             (java . t)
-                                                             (plantuml . t)))
+  (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t)
+                                                           (C . t)
+                                                           (python . t)
+                                                           (latex . t)
+                                                           (scheme . t)
+                                                           (gnuplot . t)
+                                                           (matlab . t)
+                                                           (fortran . t)
+                                                           (java . t)
+                                                           (plantuml . t)))
 #+END_SRC
 
 **** PlantUML path
@@ -1367,8 +1364,7 @@
 Allow the editing of files while execution of blocks is occurring.
 Needs :async tag in src header.
 #+BEGIN_SRC emacs-lisp
-  (use-package ob-async
-    :ensure t)
+  (use-package ob-async)
 #+END_SRC
 
 ** Latex preview fragments match colour
@@ -1385,15 +1381,14 @@
 Call pandoc on org buffer from org export.
 Need to add ~#+OPTIONS: H:99~ to enable large level header exports.
 #+BEGIN_SRC emacs-lisp
-  (use-package ox-pandoc
-    :ensure t)
+  (when (executable-find "pandoc")
+    (use-package ox-pandoc))
 #+END_SRC
 
 *** COMMENT Dokuwiki Wiki
 Allow export to dokuwiki markup from org.
 #+BEGIN_SRC emacs-lisp
-  (use-package ox-wk
-    :ensure t)
+  (use-package ox-wk)
 #+END_SRC
 
 * COMMENT EMMS
@@ -1417,7 +1412,6 @@
 Copied and modified from the example configuration.
 #+BEGIN_SRC emacs-lisp
   (use-package org-static-blog
-    :ensure t
     :config
     (setq org-static-blog-publish-title "Joel's Site")
     (setq org-static-blog-publish-url "https://blog.joelg.cf/")
@@ -1508,18 +1502,17 @@
 Allow org features to be exported to HTML for site.
 #+BEGIN_SRC emacs-lisp
   (use-package htmlize
-    :ensure t
     :defer t)
 #+END_SRC
 
-* Journaling
+* COMMENT Journaling
 ** Noteworthy entries
 I write weekly journal entries recapping my week.
 These files are in org mode.
 This is inspired by org-static-blog.
 #+BEGIN_SRC emacs-lisp
   (defun journal-create-new-post ()
-      "Create a new entry, prompt for title and insert header"
+    "Create a new entry, prompt for title and insert header"
     (interactive)
     (let ((title (read-string "Title: ")))
       (find-file (concat "~/Documents/Journal/entry/"
@@ -1535,19 +1528,19 @@
 Use org-publish to collate entries into a single unit.
 #+BEGIN_SRC emacs-lisp
   (setq org-publish-project-alist
-               '(("Journal"
-                 :base-directory "~/Documents/Journal/entry/"
-                 :publishing-directory "~/Documents/Journal/out/"
-                 :publishing-function org-html-publish-to-html
-                 ;;:htmlized-source t
-                 :section-numbers nil
-                 :html-preamble t
-                 :html-validation-link nil
+        '(("Journal"
+           :base-directory "~/Documents/Journal/entry/"
+           :publishing-directory "~/Documents/Journal/out/"
+           :publishing-function org-html-publish-to-html
+           ;;:htmlized-source t
+           :section-numbers nil
+           :html-preamble t
+           :html-validation-link nil
 
-                 :auto-sitemap t
-                 :sitemap-sort-files anti-chronologically
-                 :sitemap-file-entry-format "%d - %t"
-                 :sitemap-title "Home"
-                 :sitemap-filename "index.html"
-                 :sitemap-function org-publish-sitemap)))
+           :auto-sitemap t
+           :sitemap-sort-files anti-chronologically
+           :sitemap-file-entry-format "%d - %t"
+           :sitemap-title "Home"
+           :sitemap-filename "index.html"
+           :sitemap-function org-publish-sitemap)))
 #+END_SRC

--
Gitblit v1.9.3