aboutsummaryrefslogtreecommitdiff
path: root/common/.config/emacs/user-interface.el.org
blob: ff4bd34f918f97466c8fb1ced099bd2ad0376f24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#+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