From 4c7de90983f2a7be726d3a2919d5aefa4aef0065 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Wed, 12 Jan 2022 11:44:42 +0000 Subject: [PATCH] Added tree sitter parser library --- config.org | 873 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 444 insertions(+), 429 deletions(-) diff --git a/config.org b/config.org index e1c2237..dbb6a3d 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 "~/"))) @@ -26,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 @@ -49,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 @@ -86,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. @@ -99,7 +93,6 @@ Open external applications with =s-&= #+BEGIN_SRC emacs-lisp (use-package exwm - :ensure t :defer t :config (require 'exwm-config) @@ -111,40 +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 -** 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 +153,6 @@ Helpful pdf viewer. #+BEGIN_SRC emacs-lisp (use-package pdf-tools - :ensure t :config (pdf-tools-install 1)) #+END_SRC @@ -179,7 +161,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 +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) @@ -217,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 @@ -253,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 @@ -380,20 +361,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 +383,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 +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 @@ -438,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 @@ -464,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)) @@ -475,7 +452,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 +459,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 +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 @@ -536,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 @@ -613,8 +585,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 +596,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 +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 @@ -701,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 @@ -713,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 @@ -756,79 +750,72 @@ 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 - :hook (prog-mode . flycheck-mode) :config (global-flycheck-mode)) #+END_SRC *** 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 -** COMMENT LSP Mode +** 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) . lsp)) + ;; 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) + (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 @@ -844,7 +831,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 @@ -893,11 +879,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 @@ -914,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 @@ -924,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 @@ -934,43 +951,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)) @@ -980,7 +1024,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 @@ -990,35 +1033,42 @@ **** 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)) - (add-hook 'c-mode-hook 'clang-format-on-save) - (add-hook 'c++-mode-hook 'clang-format-on-save)) + (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 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 @@ -1027,11 +1077,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 @@ -1052,27 +1101,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 @@ -1084,7 +1129,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")) @@ -1117,13 +1162,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 @@ -1135,80 +1182,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 - :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 +1239,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 +1253,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,41 +1271,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 +**** Company +#+BEGIN_SRC emacs-lisp + (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 @@ -1316,13 +1336,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 @@ -1331,17 +1350,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 @@ -1354,8 +1372,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 @@ -1368,18 +1385,18 @@ #+END_SRC ** Org export additions -*** COMMENT Pandoc +*** 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 @@ -1403,7 +1420,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/") @@ -1494,18 +1510,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/" @@ -1521,19 +1536,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