dotemacs
dotemacs copied to clipboard
#+title: README for Dotemacs #+AUTHOR: Jeremy Friesen #+EMAIL: [email protected] #+STARTUP: showall #+OPTIONS: toc:3
This is my Emacs configuration repository. It pairs with my [[https://github.com/jeremyf/dotzshrc/][dotzshrc repository]]. The [[https://github.com/jeremyf/dotzshrc/blob/main/install.rb][install.rb]] script of the dotzshrc repository uses this repository. For implementation reasons, the =emacs.d= directory contains the init files that I link into my =$HOME/.emacs.d= directory.
For those curious, I wrote [[https://takeonrules.com/2020/10/18/why-i-chose-emacs-as-my-new-text-editor/][Why I Chose Emacs as My New Text Editor // Take on Rules]].
- The Structure :PROPERTIES: :ID: 45A067AA-0193-4D6E-A77F-8E02B088DCBC :END:
Below is the top-level directory:
#+BEGIN_EXAMPLE
tree -L 1 . ├── README.org ├── emacs.d ├── lib ├── random-tables └── templates
3 directories, 2 files #+END_EXAMPLE
The files and directories:
- README.org :: This file.
- emacs.d :: A directory that contains files symlinked into =$HOME/.emacs.d= directory.
- lib :: Some scripts I’ve written to help with my Emacs configuration.
- random-tables :: Fodder for gaming, really not very well developed.
- templates :: Templates for the [[https://github.com/minad/tempel][Emacs tempel package]].
- The emacs.d Directory :PROPERTIES: :ID: F12B8506-CA7F-4BC7-92DA-077C96AD2B80 :END:
There are two “primary” files to consider in =./emacs.d=:
- [[file:emacs.d/init.el][init.el]] :: The file evaluated when Emacs launches.
- early-init.el :: The file evaluated early on when Emacs launches.
** Digging Further into emacs.d :PROPERTIES: :ID: 9E740E8A-2098-41A5-B20F-72E1321AA97E :END:
The =init.el= file requires the various files in my =emacs.d= directory. As of <2022-11-19 Sat> I shifted from Literate configuration to a Emacs Lisp configuration. I appreciate being able to jump to the definition and edit directly; something that wasn’t immediately obvious with Literate configuration.
Organizing concepts is an interesting challenge, as packages interact in a multi-dimensional manner. Each of my =jf-
- [[file:emacs.d/abbrev_defs][abbrev_defs]] :: Common typos auto-corrected
- [[file:emacs.d/early-init.el][early-init.el]] :: The preamble for starting Emacs
- [[file:emacs.d/hide-comnt.el][hide-comnt.el]] :: A silly little mode to hide comments
- [[file:emacs.d/init.el][init.el]] :: Most everything of or related to my Emacs configuration.
- [[file:emacs.d/dig-my-grave.el][dig-my-grave.el] :: An
org-modepackage that extends the triple back tick by providing a prompt for block context. - [[file:emacs.d/org-charsheet.el][org-charsheet.el]] :: A work-in-progress package for managing Org Headline metadata (with a focus on table top role-playing games).
** Keybinding Prefixes :PROPERTIES: :ID: EADA236A-4612-42D2-B5A7-7F73408C2AB8 :END:
On <2023-10-20 Fri> I began refactoring some keybindings. There were functions that got “prime” key chords but were not things I’d frequently use. As such, I’m taking a two-fold approach:
- Create and document keybinding prefixes
- Rely on the =which-key= package to provide bits of guidance.
Those keybinding prefixes are as follows:
- =C-c y= :: Yank something; as insert some text.
- =C-c w= :: Wrap something; as in wrap the /current region/ by inserting text before and after the region.
- =C-c f= :: Find something; search the file or project for something.
- =C-c j= :: Jump to something; I have =C-j= bound =avy-goto-char-timer= as a quick in buffer jumper. And =C-c C-j= as =jf/project/jump-to-task=; which provides another context
There are foundational keys that are deeply bound to muscle memory:
- =C-s= :: For =consult-line=; a mini-buffer search and go to line within file. Akin to a feature I used in TextMate, Sublime, and Atom.
- =s-t= :: For =consult-projectile=; a very potent navigation through buffers, files, and projects.