Evie Litherland-Smith
f44c767eea
Contents of README.org have been split into org files in config/ directory Added init.el to simply loop over config files and call org-babel-load-file Add lots to .gitignore as this repo should now be cloned to .emacs.d (instead of .emacs as before)
245 lines
7.2 KiB
Org Mode
245 lines
7.2 KiB
Org Mode
#+title: Emacs Config Defaults
|
|
#+author: Evie Litherland-Smith
|
|
#+email: evie@xenia.me.uk
|
|
#+filetags: :emacs:config:org:
|
|
* Common defaults
|
|
#+begin_src emacs-lisp :results output silent
|
|
(setq custom-file (locate-user-emacs-file "custom.el"))
|
|
(when (and custom-file (file-exists-p custom-file))
|
|
(load custom-file nil 'nomessage))
|
|
|
|
(setq user-full-name "Evie Litherland-Smith"
|
|
user-mail-address "evie@xenia.me.uk"
|
|
use-short-answers t
|
|
load-prefer-newer t
|
|
indent-tabs-mode nil
|
|
even-window-sizes t
|
|
global-auto-revert-non-file-buffers t
|
|
dired-auto-revert-buffer t
|
|
dired-dwim-target t
|
|
tab-always-indent t
|
|
completion-cycle-threshold nil
|
|
completions-detailed t
|
|
xref-show-definitions-function #'xref-show-definitions-completing-read
|
|
kill-do-not-save-duplicates t
|
|
auto-window-vscroll nil
|
|
fast-but-imprecise-scrolling t
|
|
scroll-conservatively 101
|
|
scroll-margin 0
|
|
scroll-preserve-screen-position 1)
|
|
|
|
;; Config file shortcut
|
|
(defun my/open-config-file ()
|
|
"Open my literate config file"
|
|
(interactive)
|
|
(find-file "~/.emacs/README.org"))
|
|
(keymap-global-set "C-c w c" #'my/open-config-file)
|
|
|
|
|
|
;; Scratch buffer shortcut
|
|
(keymap-global-set "C-c w x" #'scratch-buffer)
|
|
|
|
;; Bind normal forward/back buttons on mouse to next/previous buffer respectively
|
|
(keymap-global-set "<mouse-8>" #'previous-buffer)
|
|
(keymap-global-set "<mouse-9>" #'next-buffer)
|
|
|
|
(set-default-coding-systems 'utf-8)
|
|
(set-terminal-coding-system 'utf-8)
|
|
(set-keyboard-coding-system 'utf-8)
|
|
|
|
(global-auto-revert-mode +1)
|
|
(delete-selection-mode +1)
|
|
|
|
;; No tabs
|
|
(customize-set-variable 'indent-tabs-mode nil)
|
|
|
|
;; Only display async output buffer when there's something to show
|
|
(customize-set-variable 'async-shell-command-display-buffer nil)
|
|
|
|
;; Make shebang (#!) file executable when saved
|
|
(add-hook 'after-save-hook #'executable-make-buffer-file-executable-if-script-p)
|
|
|
|
;; Scroll compilation buffer output
|
|
(customize-set-variable 'compilation-scroll-output t)
|
|
#+end_src
|
|
|
|
** Auto-save file settings
|
|
#+begin_src emacs-lisp :tangle yes
|
|
(setq backup-directory-alist '(("." . "~/.local/state/emacs/backups"))
|
|
tramp-backup-directory-alist backup-directory-alist
|
|
tramp-auto-save-directory (cdr (assoc "." tramp-backup-directory-alist)))
|
|
|
|
(savehist-mode +1)
|
|
#+end_src
|
|
|
|
** Recent files
|
|
#+begin_src emacs-lisp
|
|
(use-package recentf
|
|
:config
|
|
(run-at-time nil (* 5 60) 'recentf-save-list)
|
|
(recentf-mode +1)
|
|
:custom
|
|
(recentf-max-saved-items 2048))
|
|
#+end_src
|
|
|
|
** package-archive with priorities
|
|
#+begin_src emacs-lisp :results output silent
|
|
(when (require 'package nil :noerror)
|
|
(add-to-list 'package-archives '("stable" . "https://stable.melpa.org/packages/"))
|
|
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
|
|
|
|
(setq package-archive-priorities '(("gnu" . 99)
|
|
("nongnu" . 80)
|
|
("stable" . 70)
|
|
("melpa" . 0))))
|
|
#+end_src
|
|
** diminish modes
|
|
#+begin_src emacs-lisp
|
|
(use-package diminish :ensure t)
|
|
#+end_src
|
|
|
|
** Authentication
|
|
#+begin_src emacs-lisp
|
|
(when (require 'auth-source nil :noerror)
|
|
(setq auth-sources '("secrets:Login"))
|
|
(when (require 'auth-source-pass nil :noerror)
|
|
(auth-source-pass-enable)))
|
|
#+end_src
|
|
|
|
** Helpful
|
|
#+begin_src emacs-lisp
|
|
;; Make `describe-*' screens more helpful
|
|
(use-package helpful
|
|
:ensure t
|
|
:bind (("<remap> <describe-command>" . helpful-command)
|
|
("<remap> <describe-function>" . helpful-callable)
|
|
("<remap> <describe-key>" . helpful-key)
|
|
("<remap> <describe-symbol>" . helpful-symbol)
|
|
("<remap> <describe-variable>" . helpful-variable)
|
|
("C-h F" . helpful-function)
|
|
:map helpful-mode-map
|
|
("<remap> <revert-buffer>" . helpful-update)))
|
|
|
|
;; Bind extra `describe-*' commands
|
|
(keymap-global-set "C-h K" #'describe-keymap)
|
|
#+end_src
|
|
|
|
** Spell checking
|
|
#+begin_src emacs-lisp
|
|
;; turn on spell checking, if available.
|
|
(when (and (require 'ispell nil :noerror) (executable-find ispell-program-name))
|
|
(use-package flyspell
|
|
:ensure t
|
|
:diminish
|
|
:hook ((text-mode . flyspell-mode)
|
|
(prog-mode . flyspell-prog-mode))
|
|
:custom
|
|
(flyspell-mode-line-string nil)
|
|
(flyspell-use-meta-tab nil))
|
|
(use-package flyspell-correct
|
|
:ensure t
|
|
:diminish
|
|
:after flyspell
|
|
:bind ( :map flyspell-mode-map
|
|
("C-;" . flyspell-correct-wrapper)))
|
|
(use-package consult-flyspell
|
|
:ensure t
|
|
:diminish
|
|
:after (consult flyspell)
|
|
:bind ( :map flyspell-mode-map
|
|
("C-c s ;" . consult-flyspell))
|
|
:config
|
|
(setq consult-flyspell-always-check-buffer t)))
|
|
#+end_src
|
|
|
|
** ibuffer
|
|
#+begin_src emacs-lisp
|
|
(use-package ibuffer
|
|
:ensure t
|
|
:bind (("C-c b" . ibuffer)))
|
|
|
|
(use-package ibuffer-project
|
|
:ensure t
|
|
:after ibuffer
|
|
:hook ((ibuffer . (lambda ()
|
|
(setq ibuffer-filter-groups (ibuffer-project-generate-filter-groups))
|
|
(unless (eq ibuffer-sorting-mode 'project-file-relative)
|
|
(ibuffer-do-sort-by-project-file-relative))))))
|
|
#+end_src
|
|
|
|
** whitespace-mode
|
|
#+begin_src emacs-lisp
|
|
(use-package whitespace
|
|
:custom
|
|
(whitespace-action '(report-on-bogus
|
|
cleanup
|
|
warn-if-read-only))
|
|
(whitespace-style '(face
|
|
trailing
|
|
tabs
|
|
spaces
|
|
lines-tail
|
|
newline
|
|
missing-newline-at-eof
|
|
empty
|
|
indentation
|
|
big-indent
|
|
space-after-tab
|
|
space-before-tab
|
|
space-mark
|
|
tab-mark
|
|
newline-mark)))
|
|
#+end_src
|
|
|
|
** Link hint keymaps
|
|
#+begin_src emacs-lisp
|
|
(use-package link-hint
|
|
:ensure t
|
|
:bind (("C-c l o" . link-hint-open-link)
|
|
("C-c l c" . link-hint-copy-link)
|
|
("C-c l C-o" . link-hint-open-all-link)
|
|
("C-c l C-c" . link-hint-copy-all-link)))
|
|
#+end_src
|
|
|
|
** Avy keymaps
|
|
#+begin_src emacs-lisp
|
|
(use-package avy
|
|
:ensure t
|
|
:diminish
|
|
:bind (("C-c j j" . avy-goto-char-2)
|
|
("C-c j w" . avy-goto-word-0)
|
|
("C-c j c" . avy-goto-char)
|
|
("C-c j l" . avy-goto-line)))
|
|
#+end_src
|
|
|
|
** which-func config
|
|
#+begin_src emacs-lisp
|
|
(use-package which-func
|
|
:ensure t
|
|
:init (which-function-mode))
|
|
#+end_src
|
|
|
|
** Shells and terminals
|
|
#+begin_src emacs-lisp
|
|
(use-package shell
|
|
:bind (("C-c t s" . shell)))
|
|
|
|
(use-package eshell
|
|
:bind (("C-c t e" . eshell)))
|
|
#+end_src
|
|
|
|
** Web browser
|
|
#+begin_src emacs-lisp :tangle yes
|
|
(use-package eww
|
|
:defer t
|
|
:diminish
|
|
:custom
|
|
(browse-url-browser-function 'browse-url-default-browser)
|
|
(browse-url-new-window-flag t)
|
|
(eww-default-download-directory "~/Downloads/")
|
|
(eww-auto-rename-buffer 'title)
|
|
(eww-browse-url-new-window-is-tab nil))
|
|
|
|
|
|
#+end_src
|