From 141956574e8155cef75f1f70da256ae793aecb2e Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Thu, 06 Jan 2022 22:25:59 +0000
Subject: [PATCH] Use helm not helm-config, less errors in loading
---
config.org | 940 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 476 insertions(+), 464 deletions(-)
diff --git a/config.org b/config.org
index 20dfc72..710669c 100644
--- a/config.org
+++ b/config.org
@@ -8,13 +8,13 @@
(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))))
+ (exec-path-from-shell-initialize))
+ (setq default-directory "~/")))
#+END_SRC
* Aesthetic changes
@@ -25,19 +25,17 @@
(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
@@ -48,21 +46,18 @@
(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
@@ -85,12 +80,12 @@
(set-face-italic 'font-lock-keyword-face t)
#+END_SRC
-** Remove menu bar, toolbar, but keep scroll bar
+** Remove menu bar, toolbar, and scroll bar
Make the emacs interface slightly nicer.
#+BEGIN_SRC emacs-lisp
(menu-bar-mode 0)
(tool-bar-mode 0)
- (scroll-bar-mode 1)
+ (scroll-bar-mode 0)
#+END_SRC
* COMMENT EXWM
Emacs window manager.
@@ -98,7 +93,7 @@
Open external applications with =s-&=
#+BEGIN_SRC emacs-lisp
(use-package exwm
- :ensure t
+ :defer t
:config
(require 'exwm-config)
(exwm-config-default))
@@ -109,33 +104,30 @@
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)
+ :diminish flyspell-mode
+ :init (require 'ispell)
+ :config
+ (setq-default ispell-program-name "aspell")
+ (setq-default ispell-local-dictionary "en_AU"))
#+END_SRC
-
+** COMMENT Language Tool
+Language tool is an open source grammar checker.
+#+BEGIN_SRC emacs-lisp
+ (use-package langtool
+ :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
@@ -161,16 +153,14 @@
Helpful pdf viewer.
#+BEGIN_SRC emacs-lisp
(use-package pdf-tools
- :ensure t
- :config
- (pdf-tools-install 1))
+ :config
+ (pdf-tools-install 1))
#+END_SRC
** COMMENT Writegood-mode
Supposedly should provide insight to writing quality.
#+BEGIN_SRC emacs-lisp
(use-package writegood-mode
- :ensure t
:hook (text-mode . writegood-mode))
#+END_SRC
@@ -178,23 +168,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)
@@ -208,35 +197,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
@@ -244,45 +236,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
@@ -371,40 +361,38 @@
** 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
- (when window-system
- (use-package pretty-mode
- :ensure t
- :diminish t
- :config
- (global-pretty-mode)))
+ (use-package pretty-mode
+ :diminish t
+ :if window-system
+ :config
+ (global-pretty-mode))
#+END_SRC
** 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))
@@ -413,10 +401,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
@@ -429,18 +417,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
@@ -455,7 +442,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))
@@ -466,40 +452,37 @@
Colours the brackets so that they stand out more.
#+BEGIN_SRC emacs-lisp
(use-package rainbow-delimiters
- :ensure t
- :init
- (add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
+ :hook (prog-mode . rainbow-delimiters-mode))
#+END_SRC
** Following whitespace
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
@@ -516,11 +499,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
@@ -528,76 +510,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
@@ -605,22 +585,33 @@
K&R uses 4 space tabs.
#+BEGIN_SRC emacs-lisp
(setq c-default-style '((java-mode . "java")
- (awk-mode . "awk")
- (other . "k&r")))
+ (awk-mode . "awk")
+ (other . "k&r")))
#+END_SRC
** Coding system
-Cause we all love UTF8
+Cause we all love UTF8.
#+BEGIN_SRC emacs-lisp
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-language-environment "UTF-8")
(prefer-coding-system 'utf-8)
- (setq-default indent-tabs-mode t
- tab-width 4)
+ (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
Move point back to indentation of beginning of line.
@@ -634,50 +625,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
@@ -691,7 +687,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
@@ -703,39 +698,48 @@
(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 spaceline-line-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
@@ -746,20 +750,17 @@
Manually added snippets are in ~/.emacs.d/snippets/{mode}.
#+BEGIN_SRC emacs-lisp
(use-package yasnippet
- :ensure t
:diminish yas-minor-mode
:config
- (use-package yasnippet-snippets
- :ensure t)
- (yas-reload-all)
(yas-global-mode 1))
-#+END_SRC
+ (use-package yasnippet-snippets
+ :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))
@@ -767,60 +768,69 @@
*** 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)
(setq company-idle-delay 0)
- (setq company-minimum-prefix-length 3))
+ (setq company-minimum-prefix-length 1))
#+END_SRC
** LSP Mode
-Use LSP for completion suggestions
+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 ((lsp-mode . lsp-enable-which-key-integration))
+ :hook (((c-mode
+ c++-mode
+ tex-mode
+ latex-mode
+ TeX-mode
+ LaTeX-mode
+ rust-mode
+ sh-mode
+ ;; verilog-mode
+ go-mode
+ python-mode) . lsp))
:init
(setq lsp-keymap-prefix "C-c l")
:commands lsp
:config
+ (add-hook 'lsp-mode-hook 'lsp-enable-which-key-integration)
(setq read-process-output-max (* 1024 1024))
(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
+
** Version control
Settings for emacs' own version control system.
*** Enable version control on the mode line
#+BEGIN_SRC emacs-lisp
(vc-mode)
#+END_SRC
+
** Magit
Emacs git client.
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
@@ -869,15 +879,47 @@
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 mode aware of what is being written.
+Allows emacs to be more aware of what is being written.
#+BEGIN_SRC emacs-lisp
(use-package semantic
+ :hook (prog-mode . semantic-mode)
:config
(global-semanticdb-minor-mode 1)
(global-semantic-idle-scheduler-mode 1)
@@ -889,9 +931,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
@@ -899,9 +941,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
@@ -909,49 +951,58 @@
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
** Language specific configs
*** C/C++
-**** COMMENT yasnippet
-Enable yasnippet for C/C++.
-#+BEGIN_SRC emacs-lisp
-(add-hook 'c++-mode-hook 'yas-minor-mode)
-(add-hook 'c-mode-hook 'yas-minor-mode)
-#+END_SRC
-
-**** Flycheck clang
+**** Flycheck
+***** Flycheck clang
Add the clang backend for linting.
#+BEGIN_SRC emacs-lisp
-(use-package flycheck-clang-analyzer
- :ensure t
- :config
- (with-eval-after-load 'flycheck
- (require 'flycheck-clang-analyzer)
- (flycheck-clang-analyzer-setup)))
+ (use-package flycheck-clang-analyzer
+ :after flycheck
+ :config
+ (with-eval-after-load 'flycheck
+ (require 'flycheck-clang-analyzer)
+ (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))
@@ -961,40 +1012,51 @@
(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
company-dabbrev-code
company-irony)))
#+END_SRC
-
-**** LSP
-Allow completion with LSP.
+**** Clang-format
+Automatically format buffer on save.
#+BEGIN_SRC emacs-lisp
-(add-hook 'c-mode-hook 'lsp)
-(add-hook 'cpp-mode-hook 'lsp)
+ (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) ","
+ "UseTab: " (if (eq indent-tabs-mode nil)
+ "Never"
+ "AlignWithSpaces")
+ ","
+ "BreakBeforeBraces: Linux,"
+ "AllowShortIfStatementsOnASingleLine: false,"
+ "IndentCaseLabels: false}"))))
+ (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 yasnippet
-Enable yasnippet.
-#+BEGIN_SRC emacs-lisp
-(add-hook 'emacs-lisp-mode-hook 'yas-minor-mode)
-#+END_SRC
-
-**** COMMENT company
+**** 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
@@ -1003,11 +1065,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
@@ -1017,9 +1078,9 @@
(use-package tex
:ensure auctex
:config
- (setq TeX-auto-save t)
- (setq TeX-parse-self t)
- (setq TeX-view-program-selection '((output-pdf "PDF Tools"))
+ (setq TeX-auto-save t
+ TeX-parse-self t
+ TeX-view-program-selection '((output-pdf "PDF Tools"))
TeX-source-correlate-start-server t)
(add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer))
#+END_SRC
@@ -1028,27 +1089,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
@@ -1060,7 +1117,7 @@
(defun get-texcount-latest()
(if (not(file-directory-p "~/.texcount"))
(make-directory "~/.texcount"))
- (url-copy-file "https://app.uio.no/ifi/texcount/download.php?file=texcount_3_1_1.zip" "~/.texcount/texcount.zip" 1)
+ (url-copy-file "https://app.uio.no/ifi/texcount/download.php?file=texcount_3_2_0_41.zip" "~/.texcount/texcount.zip" 1)
(shell-command "unzip -o ~/.texcount/texcount.zip -d ~/.texcount")
(add-to-list 'exec-path "~/.texcount/texcount.pl"))
@@ -1089,25 +1146,19 @@
(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
(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
@@ -1119,81 +1170,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))
- (setq matlab-indent-function t))
+ :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
- :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")
+ :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
@@ -1213,15 +1227,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
@@ -1229,21 +1241,17 @@
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)
+ (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
@@ -1251,47 +1259,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
+ :config
+ (add-hook 'before-save-hook #'gofmt-before-save))
#+END_SRC
-**** COMMENT Completion
-Code completion with racer.
+**** Flycheck
#+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"))
+ (use-package flycheck-golangci-lint
+ :config
+ (add-hook 'flycheck-mode-hook #'flycheck-golangci-lint-setup))
#+END_SRC
-*** Bash
-**** LSP
-Completion with LSP
+**** Company
#+BEGIN_SRC emacs-lisp
-(add-hook 'sh-mode-hook 'lsp)
+ (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
@@ -1308,13 +1324,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
@@ -1323,17 +1338,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
@@ -1346,8 +1360,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
@@ -1362,16 +1375,16 @@
** Org export additions
*** Pandoc
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
@@ -1395,7 +1408,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/")
@@ -1486,17 +1498,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/"
@@ -1512,19 +1524,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.10.0