#+title: Emacs Config #+property: header-args:elisp :mkdirp yes :results silent :padline no #+property: header-args:elisp+ :tangle "~/.config/emacs/init.el" * General ** Settings Quality of life settings. #+begin_src elisp (setq-default help-window-select t delete-by-moving-to-trash t sentence-end-double-space nil confirm-kill-emacs 'yes-or-no-p) #+end_src ** GUI Bars Disable GUI bars. #+begin_src elisp (tool-bar-mode -1) (menu-bar-mode -1) (scroll-bar-mode -1) #+end_src ** Editor Tab behaviour settings. #+begin_src elisp (setq-default tab-width 4 tab-always-indent 'complete backward-delete-char-untabify-method 'hungry indent-tabs-mode nil) #+end_src Replace selected region when yanking text. #+begin_src elisp (delete-selection-mode) #+end_src Automatically remove trailing whitespace on file-save. #+begin_src elisp (add-hook 'before-save-hook #'whitespace-cleanup) #+end_src Set whitespace column length and symbols. #+begin_src elisp (with-eval-after-load 'whitespace (setq-default whitespace-line-column fill-column whitespace-display-mappings '((space-mark ?\s [?·] [?.]) (newline-mark ?\n [?↴ ?\n]) (tab-mark ?\t [?➔ ?\t] [?\\ ?\t])))) #+end_src ** Theme Enable theme. #+begin_src elisp (load-theme 'modus-vivendi) #+end_src ** Completion Enable completions previews. #+begin_src elisp (add-hook 'prog-mode-hook #'completion-preview-mode) #+end_src Set completion keybindings. #+begin_src elisp (with-eval-after-load 'completion-preview (let ((map completion-preview-active-mode-map)) (keymap-set map "M-n" #'completion-preview-next-candidate) (keymap-set map "M-p" #'completion-preview-prev-candidate))) #+end_src ** Which-key Enable which-key that displays a pop-up window of posisble keybindings sequences. #+begin_src elisp (which-key-mode) #+end_src * Global Keybindings File actions. #+begin_src elisp (keymap-global-set "C-x x R" #'rename-visited-file) (keymap-global-set "C-x x D" #'delete-file) #+end_src Window actions. #+begin_src elisp (keymap-global-set "M-O" #'window-swap-states) (keymap-global-set "M-o" #'other-window) (keymap-global-set "M-V" #'scroll-other-window-down) (keymap-global-set "C-S-V" #'scroll-other-window) (keymap-global-set "C-M-<" #'beginning-of-buffer-other-window) (keymap-global-set "C-M->" #'end-of-buffer-other-window) #+end_src Improve region text manipulation. #+begin_src elisp (keymap-global-set "M-c" #'capitalize-dwim) (keymap-global-set "M-l" #'downcase-dwim) (keymap-global-set "M-u" #'upcase-dwim) (keymap-global-set "M-U" #'upcase-char) #+end_src Help actions. #+begin_src elisp (keymap-global-set "C-h M" #'describe-keymap) (keymap-global-set "C-h j" #'describe-char) #+end_src