From 8cc78d8ded160f0f66125e7dbba1128184014eb6 Mon Sep 17 00:00:00 2001 From: Camden Dixie O'Brien Date: Fri, 1 Jan 2021 00:00:29 +0000 Subject: [PATCH] add some stuff for LaTeX org export --- config.org | 480 +++++++++++++++++++++++++++++------------------------ 1 file changed, 259 insertions(+), 221 deletions(-) diff --git a/config.org b/config.org index f9ce627..f14b15d 100644 --- a/config.org +++ b/config.org @@ -1,8 +1,10 @@ -* Emacs Configuration +#+TITLE: Emacs Configuration +#+AUTHOR: Camden Dixie O'Brien +#+ATTR_LATEX: :float t Shout out to Harry R. Schwartz; A whole bunch of this config (including the idea of embeddeding the lot in an Org document) is -yanked from [[https://github.com/hts/dotfiles][his dotfiles repo]]. +yanked from [[https://github.com/hrs/dotfiles][his dotfiles repo]]. The rest of this config grabs packages via =use-package=, so that needs to be set up to install them if they aren't already. @@ -12,269 +14,305 @@ needs to be set up to install them if they aren't already. (setq use-package-always-ensure t) #+end_src -** UI +* UI -The start-up message gets pretty annoying, so disable that. + The start-up message gets pretty annoying, so disable that. -#+begin_src emacs-lisp - (setq inhibit-startup-screen t) -#+end_src + #+begin_src emacs-lisp + (setq inhibit-startup-screen t) + #+end_src -The default window size is just a little too small for my taste. + The default window size is just a little too small for my taste. -#+begin_src emacs-lisp - (when window-system (set-frame-size (selected-frame) 90 48)) -#+end_src + #+begin_src emacs-lisp + (when window-system (set-frame-size (selected-frame) 90 48)) + #+end_src -And I like a little more line spacing than default. + And I like a little more line spacing than default. -#+begin_src emacs-lisp - (setq-default line-spacing 0.2) -#+end_src + #+begin_src emacs-lisp + (setq-default line-spacing 0.2) + #+end_src -Also, the menu-, tool- and scroll-bar are ugly, take up space and I -don't use them. + Also, the menu-, tool- and scroll-bar are ugly, take up space and I + don't use them. -#+begin_src emacs-lisp - (menu-bar-mode -1) - (tool-bar-mode -1) - (scroll-bar-mode -1) -#+end_src + #+begin_src emacs-lisp + (menu-bar-mode -1) + (tool-bar-mode -1) + (scroll-bar-mode -1) + #+end_src -*** Colour Scheme +** Colour Scheme -Currently using =spacemacs-theme='s light variant, but I prefer a pure -white background to the off-white it has by default. + Currently using =spacemacs-theme='s light variant, but I prefer a pure + white background to the off-white it has by default. -#+begin_src emacs-lisp - (use-package spacemacs-theme - :defer t) - (setq spacemacs-theme-custom-colors - '((bg1 . "#ffffff") - (comment-bg . "#ffffff"))) - (load-theme 'spacemacs-light t) -#+end_src + #+begin_src emacs-lisp + (use-package spacemacs-theme + :defer t) + (setq spacemacs-theme-custom-colors + '((bg1 . "#ffffff") + (comment-bg . "#ffffff"))) + (load-theme 'spacemacs-light t) + #+end_src -*** Font +** Font -I am addicted to programming ligatures but Fira Code (my preferred -ligature font) requires some hackery to display properly; this is -defined in [[file:fira-code-mode/fira-code-mode.el][fira-code-mode.el]] so first we load that. + I am addicted to programming ligatures but Fira Code (my preferred + ligature font) requires some hackery to display properly; this is + defined in [[file:fira-code-mode/fira-code-mode.el][fira-code-mode.el]] so first we load that. -#+begin_src emacs-lisp - (add-to-list 'load-path "/home/cdo/.emacs.d/fira-code-mode") - (require 'fira-code-mode) -#+end_src + #+begin_src emacs-lisp + (add-to-list 'load-path "/home/cdo/.emacs.d/fira-code-mode") + (require 'fira-code-mode) + #+end_src -And then make sure that mode is enabled for any =prog-mode= buffer. + And then make sure that mode is enabled for any =prog-mode= buffer. -#+begin_src emacs-lisp - (add-hook 'prog-mode-hook 'fira-code-mode) -#+end_src + #+begin_src emacs-lisp + (add-hook 'prog-mode-hook 'fira-code-mode) + #+end_src -** Magit +* Magit -=magit= is truly a wonderful creation! Only deviations from defaults -here are a keybinding for =magit-status= and a maximum length for the -summary line of commit messages (after which the excess is -highlighted). + =magit= is truly a wonderful creation! Only deviations from defaults + here are a keybinding for =magit-status= and a maximum length for the + summary line of commit messages (after which the excess is + highlighted). -#+begin_src emacs-lisp - (use-package magit - :bind - ("C-x g" . magit-status) - :config - (setq git-commit-summary-max-length 50)) -#+end_src + #+begin_src emacs-lisp + (use-package magit + :bind + ("C-x g" . magit-status) + :config + (setq git-commit-summary-max-length 50)) + #+end_src -** Language Integrations +* Language Integrations -Generally, 8-character-wide tabs are not my thing. + Generally, 8-character-wide tabs are not my thing. -#+begin_src emacs-lisp - (setq-default tab-width 4) - (setq-default basic-offset 4) -#+end_src + #+begin_src emacs-lisp + (setq-default tab-width 4) + (setq-default basic-offset 4) + #+end_src -*** C + And generally indenting with spaces is more common, so make that the default: -For C, I like to indent with tabs and align with spaces: this -behaviour is provided by =smart-tabs-mode=. + #+begin_src emacs-lisp + (setq-default indent-tabs-mode nil) + #+end_src -#+begin_src emacs-lisp - (use-package smart-tabs-mode) - (smart-tabs-insinuate 'c) -#+end_src +** C -I'll generally format my code in BSD style but I also use -=clang-format= a lot, so I have a keybinding to run that. + For C, I like to indent with tabs and align with spaces: this + behaviour is provided by =smart-tabs-mode=. -#+begin_src emacs-lisp - (setq c-default-style "bsd") - (use-package clang-format) - (add-hook 'c-mode-hook - (lambda () - (define-key c-mode-map (kbd "C-M-f") - 'clang-format-buffer))) -#+end_src - -Meson is my build system of choice for C, but I also use CMake a lot. + #+begin_src emacs-lisp + (use-package smart-tabs-mode) + (smart-tabs-insinuate 'c) + #+end_src -#+begin_src emacs-lisp - (use-package meson-mode) - (use-package cmake-mode) -#+end_src + I'll generally format my code in BSD style but I also use + =clang-format= a lot, so I have a keybinding to run that. -*** Haskell - -My workflow with Haskell is very REPL-based, so I always want -=interactive-haskell-mode= on. - -#+begin_src emacs-lisp - (use-package haskell-mode) - (require 'haskell-interactive-mode) - (add-hook 'haskell-mode-hook 'interactive-haskell-mode) -#+end_src - -And, of course, that REPL needs to be taking advantage of parallelism! - -#+begin_src emacs-lisp - (require 'haskell-process) - (set-variable 'haskell-process-args-ghci - '("-threaded" "+RTS" "-N8" "-RTS")) -#+end_src - -*** Idris - -The only thing to change from the defaults here is to add a more -convenient way to case-split. - -#+begin_src emacs-lisp - (use-package idris-mode) - (add-hook 'idris-mode-hook - (lambda () - (define-key idris-mode-map (kbd "C-c SPC") - 'idris-case-split))) -#+end_src + #+begin_src emacs-lisp + (setq c-default-style "bsd") + (use-package clang-format) + (add-hook 'c-mode-hook + (lambda () + (define-key c-mode-map (kbd "C-M-f") + 'clang-format-buffer))) + #+end_src + + Meson is my build system of choice for C, but I also use CMake a lot. -*** Rust + #+begin_src emacs-lisp + (use-package meson-mode) + (use-package cmake-mode) + #+end_src -I never really use Rust without Cargo, so always turn on the minor -mode for Cargo in Rust buffers. +** Haskell + + My workflow with Haskell is very REPL-based, so I always want + =interactive-haskell-mode= on. + + #+begin_src emacs-lisp + (use-package haskell-mode) + (require 'haskell-interactive-mode) + (add-hook 'haskell-mode-hook 'interactive-haskell-mode) + #+end_src + + And, of course, that REPL needs to be taking advantage of parallelism! + + #+begin_src emacs-lisp + (require 'haskell-process) + (set-variable 'haskell-process-args-ghci + '("-threaded" "+RTS" "-N8" "-RTS")) + #+end_src -#+begin_src emacs-lisp - (use-package rust-mode) - (use-package cargo) - (add-hook 'rust-mode-hook 'cargo-minor-mode) -#+end_src +** Idris -*** Lisps + The only thing to change from the defaults here is to add a more + convenient way to case-split. -Get =racket-mode= for some Racket-specific things, like searching documentation + #+begin_src emacs-lisp + (use-package idris-mode) + (add-hook 'idris-mode-hook + (lambda () + (define-key idris-mode-map (kbd "C-c SPC") + 'idris-case-split))) + #+end_src -#+begin_src emacs-lisp - (use-package racket-mode) -#+end_src - -Use SLIME and Quicklisp for Common Lisp (SBCL), with a convenient -binding for =slime-selector= +** Rust -#+begin_src emacs-lisp - (use-package slime) - (setq inferior-lisp-program "sbcl") - (global-set-key (kbd "C-c s") 'slime-selector) - (load (expand-file-name "~/quicklisp/slime-helper.el")) -#+end_src + I never really use Rust without Cargo, so always turn on the minor + mode for Cargo in Rust buffers. -=paredit= is generally very useful for balancing parenthesis so we -want that turned on for all the lisps. Additionally, it's nice to have -an entire expression highlighted when the cursor is on one of its -enclosing parens. + #+begin_src emacs-lisp + (use-package rust-mode) + (use-package cargo) + (add-hook 'rust-mode-hook 'cargo-minor-mode) + #+end_src -#+begin_src emacs-lisp - (use-package paredit) - (setq lispy-mode-hooks - '(emacs-lisp-mode-hook - lisp-mode-hook - racket-mode-hook - scheme-mode-hook)) - (dolist (hook lispy-mode-hooks) - (add-hook hook (lambda () - (setq show-paren-style 'expression) - (paredit-mode)))) -#+end_src - -** Org-mode - -I use a couple non-standard bits and pieces, but not a whole bunch. I -really like the =