#+title: Emacs User Interface * Theming Set up Source Code Pro with Nerd Font patches as default font and Computer Modern as a variable pitch font. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (defvar jj/mono-font) (defvar jj/var-font) (pcase system-type (`gnu/linux (when (eq (system-name) "gentoo")) (setq jj/mono-font "SauceCodePro Nerd Font-11") (setq jj/var-font "CMU Serif-14")) (`darwin (setq jj/mono-font "SauceCodePro Nerd Font-14:weight=thin") (setq jj/var-font "CMU Serif-18"))) (add-to-list 'default-frame-alist `(font . ,jj/mono-font)) #+end_src Use my custom Doom Disco light theme. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package doom-themes :straight (doom-themes :type git :host github :repo "doomemacs/themes" :fork (:host github :repo "JacobJanzen/emacs-doom-themes")) :config (setq doom-themes-enable-bold t doom-themes-enable-italic t) (load-theme 'doom-disco t) (doom-themes-org-config)) (add-to-list 'default-frame-alist '(alpha-background . 90)) #+end_src Use =doom-modeline= for a nicer modeline. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package doom-modeline :init (doom-modeline-mode 1)) #+end_src Remove the title bar. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (add-to-list 'default-frame-alist '(undecorated . t)) #+end_src * Clean UI Disable the Emacs start screen and make the =scratch= buffer default to empty. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (setq inhibit-startup-screen t) (setq initial-scratch-message nil) #+end_src Disable scroll bar, tool bar, and menu bar. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) #+end_src * Fancy Stuff Use line numbers by default. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (global-display-line-numbers-mode 1) #+end_src Highlight changes for an operation with =evil-goggles=. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package evil-goggles :after evil :config (evil-goggles-mode) (evil-goggles-use-diff-faces)) #+end_src Install nerd font icons. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package nerd-icons) #+end_src Scroll one line at a time. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (setq scroll-conservatively most-positive-fixnum) #+end_src Create parent directories when they don't yet exist. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (defun jj/create-non-existent-directory () (let ((parent-directory (file-name-directory buffer-file-name))) (when (and (not (file-exists-p parent-directory)) (y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory))) (make-directory parent-directory t)))) (add-to-list 'find-file-not-found-functions #'jj/create-non-existent-directory) #+end_src * Whitespace Management Use spaces over tabs and set tab width to 4. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (setq-default indent-tabs-mode nil) (setq tab-width 4 c-basic-offset tab-width) #+end_src Delete trailing whitespace on save. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (defun jj/before-save-hook () (unless (eql (with-current-buffer (current-buffer) major-mode) 'markdown-mode) (delete-trailing-whitespace))) (add-hook 'before-save-hook #'jj/before-save-hook) #+end_src * Backup Management Don't create backup files. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (setq make-backup-files nil) #+end_src * Customize =dired= Use nerd font icons in =dired=. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package nerd-icons-dired :hook (dired-mode . nerd-icons-dired-mode)) #+end_src Use colours in =dired= with =diredfl=. #+begin_src emacs-lisp :tangle ~/.config/emacs/user-interface.el :mkdirp yes (use-package diredfl :init (diredfl-global-mode 1)) #+end_src