Browse Source

Cleanup modules

main
parent
commit
96c3747b1c
  1. 2
      elisp/options.el
  2. 125
      modules/fonts.org
  3. 122
      modules/interface.org
  4. 24
      modules/org.org

2
elisp/options.el

@ -17,7 +17,7 @@
capture
projects
development
interface themes modeline
fonts interface themes modeline
dashboard)
"All of the available modules.")

125
modules/fonts.org

@ -0,0 +1,125 @@
#+TITLE: Fonts
#+AUTHOR: Christopher James Hayward
#+EMAIL: chris@chrishayward.xyz
#+PROPERTY: header-args:emacs-lisp :tangle fonts.el :comments org
#+PROPERTY: header-args:shell :tangle no
#+PROPERTY: header-args :results silent :eval no-export :comments org
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
Unified system font across Emacs.
* Setup
Install the required ~firacode~[fn:1] font before loading the module:
#+begin_src shell
RUN apt install -y fonts-firacode
#+end_src
* Config
Write out the value of ~dotfiles/font~ to all of the available font faces supported by Emacs. By default, this uses ~firacode~[fn:1] for its readability and ligature support. All of the heights are configured to ~dotfiles/font-size~ by default, with further configuration based on the given size possible.
#+begin_src emacs-lisp
(set-face-attribute 'default nil :font dotfiles/font :height dotfiles/font-size)
(set-face-attribute 'fixed-pitch nil :font dotfiles/font :height dotfiles/font-size)
(set-face-attribute 'variable-pitch nil :font dotfiles/font :height dotfiles/font-size)
#+end_src
** Icons
Emacs feels more modern with prioritized icon fonts, available in the ~all-the-icons~[fn:2] package. This makes navigation and visually parsing directories much faster, given that the file types are quickly identified by their corresponding icons.
#+begin_src emacs-lisp
(use-package all-the-icons)
#+end_src
Integration with the built-in ~dired~ package is available in the ~all-the-icons-dired~[fn:3] package.
#+begin_src emacs-lisp
(use-package all-the-icons-dired
:hook (dired-mode . all-the-icons-dired-mode))
#+end_src
** Emojis
It's finally here, first class support for Emojis in Emacs via the ~emacs-emojify~[fn:4] package. Have we finally gone too far?
#+begin_src emacs-lisp
(use-package emojify
:when (window-system)
:hook (after-init . global-emojify-mode))
#+end_src
** Symbols
Programming buffers can be made prettier with ~pretty-mode~[fn:5], this is complimentary to ~prettify-symbols-mode~[fn:6], a built-in package containing similar (but lacking) functionality.
#+begin_src emacs-lisp
(use-package pretty-mode
:hook (python-mode . turn-on-pretty-mode))
#+end_src
** Ligatures
Enable ~firacode~[fn:1] font ligatures with the ~fira-code-mode~[fn:7] package. Only perform this action when ~firacode~[fn:1] is the current font, and Emacs isn't running on the TTY.
#+begin_src emacs-lisp
(use-package fira-code-mode
:when (and (window-system)
(equal dotfiles/font "Fira Code"))
:hook (prog-mode org-mode))
#+end_src
** Parenthesis
Colourize nested parenthesis with ~rainbow-delimeters~[fn:4], a mandatory life-jacked to keep you from drowning in the sea of them in Lisp.
#+begin_src emacs-lisp
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
#+end_src
** Text scaling
Define a transient keybinding for scaling the text. One caveat to this, it only works when Emacs is running as a GUI application, and has no effect in the terminal.
#+begin_src emacs-lisp
(defhydra hydra-text-scale (:timeout 4)
"Scale"
("j" text-scale-increase "Increase")
("k" text-scale-decrease "Decrease")
("f" nil "Finished" :exit t))
#+end_src
* Shortcuts
Scale the text inside of buffers using the custom transient binding, behind =SPC t f=:
+ Increase with =j=
+ Decrease with =k=
+ Finish with =f=
#+begin_src emacs-lisp
(dotfiles/leader
"tf" '(hydra-text-scale/body :which-key "Font"))
#+end_src
* Footnotes
[fn:1] https://github.com/tonsky/FiraCode
[fn:2] [[https://github.com/domtronn/all-the-icons.el]]
[fn:3] https://github.com/jtbm37/all-the-icons-dired
[fn:4] https://github.com/Fanael/rainbow-delimiters
[fn:5] https://emacswiki.org/emacs/pretty-mode.el
[fn:6] https://emacswiki.org/emacs/PrettySymbol
[fn:7] https://github.com/jming422/fira-code-mode

122
modules/interface.org

@ -116,108 +116,6 @@ Sort completion candidates based on how recently or frequently they're selected.
(ivy-prescient-mode 1))
#+end_src
* Unified fonts
Write out to all of Emacs' available font faces with the unified font defined in the options.
#+begin_src emacs-lisp
(set-face-attribute 'default nil :font dotfiles/font :height dotfiles/font-size)
(set-face-attribute 'fixed-pitch nil :font dotfiles/font :height dotfiles/font-size)
(set-face-attribute 'variable-pitch nil :font dotfiles/font :height dotfiles/font-size)
#+end_src
** Text scaling
Define a transient keybinding for Scaling the text.
#+begin_src emacs-lisp
(defhydra hydra-text-scale (:timeout 4)
"Scale"
("j" text-scale-increase "Increase")
("k" text-scale-decrease "Decrease")
("f" nil "Finished" :exit t))
#+end_src
+ Scale the text inside of buffers with =SPC t f=
* Increase =j=
* Decrease =k=
* Finished =f=
#+begin_src emacs-lisp
(dotfiles/leader
"tf" '(hydra-text-scale/body :which-key "Font"))
#+end_src
** Icon fonts
Dired feels more modern with prioritized icon fonts using *All the Icons*[fn:3]. This makes navigation and visually parsing directories much faster, given that file types are quickly identified by their corresponding icons.
#+begin_src emacs-lisp
(use-package all-the-icons)
#+end_src
Integration with the *All the Icons Dired*[fn:4]package.
#+begin_src emacs-lisp
(use-package all-the-icons-dired
:hook (dired-mode . all-the-icons-dired-mode))
#+end_src
** Symbols
Programming buffers made prettier with *Pretty mode*[fn:5], complimentary to the built-in *Prettify symbols mode*[fn:6].
#+begin_src emacs-lisp
(use-package pretty-mode
:hook (python-mode . turn-on-pretty-mode))
#+end_src
** Ligatures
Enable font ligatures via *Fira Code mode*[fn:7].
+ Perform when *Fira Code* is the current font
+ Don't enable on TTY
#+begin_src emacs-lisp
(use-package fira-code-mode
:when (and (window-system)
(equal dotfiles/font "Fira Code"))
:hook (prog-mode org-mode))
#+end_src
Toggle global ligature mode with =SPC t g=.
#+begin_src emacs-lisp
(dotfiles/leader
"tg" '(global-fira-code-mode :which-key "Ligatures"))
#+end_src
** Emojification
Gotta have those emojis, first class support for Emacs via the *Emacs-emojify*[fn:8] package.
#+begin_src emacs-lisp
(use-package emojify
:when (window-system)
:hook (after-init . global-emojify-mode))
#+end_src
+ Place *Emojify*[fn:8] bindings behind =SPC f=
* List with =l=
* Search with =s=
* Insert with =i=
* Describe with =d=
#+begin_src emacs-lisp
;; (dotfiles/leader
;; "f" '(:ignore t :which-key "Emojify")
;; "fl" '(emojify-list-emojis :which-key "List")
;; "fs" '(emojify-apropos-emoji :which-key "Search")
;; "fi" '(emojify-insert-emoji :which-key "Insert")
;; "fd" '(emojify-describe-emoji :which-key "Describe"))
#+end_src
* Line numbering
Relative line numbers are important when using VI emulation keys. You can prefix commands with a number, allowing you to perform that action that number of times. Useful when navigating around pages that are hundreds, or even thousands of lines long.
@ -250,26 +148,6 @@ Toggle line numbers with =SPC t l=.
"tl" '(linum-relative-global-mode :which-key "Lines"))
#+end_src
* Parenthesis
Colourize nested parenthesis with *Rainbow delimeters*[fn:11].
#+begin_src emacs-lisp
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
#+end_src
* Superstar
Make headline stars *super* with *Org superstar mode*[fn:12].
#+begin_src emacs-lisp
(use-package org-superstar
:when (window-system)
:after org
:hook (org-mode . org-superstar-mode))
#+end_src
* Footnotes
[fn:1] https://github.com/abo-abo/swiper

24
modules/org.org

@ -8,11 +8,11 @@
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
Organize your plain-life in plain-text. The hallmark feature of Emacs, ~org-mode~ is the king of markup languages. It has rich feature support for project management, scheduling, development, and writing. It's hard to convey everything within its capabilities.
Organize your plain-life in plain-text. The hallmark feature of Emacs, ~org-mode~[fn:1] is the king of markup languages. It has rich feature support for project management, scheduling, development, and writing. It's hard to convey everything within its capabilities.
* Hook
* Setup
Define a custom hook when ~org-mode~ is enabled to customize the experience:
Define a custom hook when ~org-mode~[fn:1] is enabled to customize the experience:
+ Enable ~org-indent-mode~ to indent and align text with the parent heading
+ Enable ~visual-line-mode~ to allow text to overflow and wrap to the next visual line
@ -25,9 +25,9 @@ Define a custom hook when ~org-mode~ is enabled to customize the experience:
(variable-pitch-mode 1)) ;; Enable monospaced fonts.
#+end_src
* Setup
* Config
Force ~straight~ to ignore the local version of ~org-mode~, instead downloading the most recent version available.
Force ~straight~ to ignore the local version of ~org-mode~[fn:1], instead downloading the most recent version available.
#+begin_src emacs-lisp
(straight-use-package '(org :local-repo nil))
@ -65,6 +65,17 @@ Setup the default babel languages and structure templates, and apply customizati
(emacs-lisp . t))))
#+end_src
** Headline stars
Make the headline stars a bit more *super* with ~org-superstar-mode~[fn:2]. Only enable this inside of a window system, as the effect can be distracting on the TTY.
#+begin_src emacs-lisp
(use-package org-superstar
:when (window-system)
:after org
:hook (org-mode . org-superstar-mode))
#+end_src
* Methods
Define some custom methods for use in the rest of the configuration.
@ -100,3 +111,6 @@ Function that takes in a system and configuration file path, checks to see if th
* Footnotes
[fn:1] https://orgmode.org
[fn:2] https://github.com/integral-dw/org-superstar-mode
Loading…
Cancel
Save