Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jeremyf/dotemacs


https://github.com/jeremyf/dotemacs

dotfiles emacs

Last synced: 22 days ago
JSON representation

Awesome Lists containing this project

README

        

#+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-.el= has a rudimentary commentary.

- [[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-mode` package 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:

1. Create and document keybinding prefixes
2. Rely on the =which-key= package to provide bits of guidance.

Those keybinding prefixes are as follows:

1. =C-c y= :: *Yank* something; as insert some text.
2. =C-c w= :: *Wrap* something; as in wrap the /current region/ by inserting text before and after the region.
3. =C-c f= :: *Find* something; search the file or project for something.
4. =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.