My Emacs Configuration written with a literate programming style
Find a file
2025-01-16 11:42:00 -08:00
data Add generate password system 2021-11-15 16:18:31 -08:00
elisp Fix starting bug with theme 2025-01-16 11:42:00 -08:00
screenshots Screenshot for my Org Mode rendering 2023-12-22 11:50:47 -08:00
snippets Personal snippets for Hugo 2025-01-08 21:02:38 -08:00
support Minor fixes to work better with demonstrating hamacs 2024-10-25 22:05:22 -07:00
templates Journaling cleanup 2024-08-10 21:59:03 -07:00
.gitignore More tweaks to the theme 2024-11-26 10:40:02 -08:00
beep-notify.wav Fix my code inclusion, like beep and demo-it 2021-12-27 09:46:10 -08:00
bootstrap.org Create my own dark theme 2024-11-22 12:56:39 -08:00
CONTRIBUTING.md Add CONTRIBUTING and a Code of Conduct 2022-01-10 22:24:49 +00:00
ha-agendas.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-applications.org Fix starting bug with theme 2025-01-16 11:42:00 -08:00
ha-aux-apps.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-capturing-notes.org Minor capturing changes 2024-10-19 13:37:45 -07:00
ha-config.org Fix starting bug with theme 2025-01-16 11:42:00 -08:00
ha-dashboard.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-data.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-demos.org Update dslide-based demonstrations 2025-01-15 15:47:38 -08:00
ha-display.org Fix starting bug with theme 2025-01-16 11:42:00 -08:00
ha-email.org Minor fixes to work better with demonstrating hamacs 2024-10-25 22:05:22 -07:00
ha-eshell.org Fix eshell banner when directory is not a git project 2024-11-21 10:07:37 -08:00
ha-evil.org Minor fixes to work better with demonstrating hamacs 2024-10-25 22:05:22 -07:00
ha-feed-reader.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-general.org Not crazy about how winner mode doesn't work with persp mode 2024-12-16 17:04:32 -08:00
ha-irc.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-org-clipboard.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-org-graphviz-example.png Minor copyright touchups on my snippets. 2022-03-09 17:14:21 -08:00
ha-org-journaling.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-org-literate.org Move searching for noweb references into the Literate section 2024-11-16 10:42:43 -08:00
ha-org-mermaid.png Better hiding of Org header lines 2024-11-05 12:07:27 -08:00
ha-org-mermaid.svg More tweaks to the theme 2024-11-26 10:40:02 -08:00
ha-org-pikchr-01.svg Added Mermaid diagram support 2024-10-19 13:41:06 -07:00
ha-org-pikchr-02.svg Controlling the previews of Markdown 2024-05-19 09:26:56 -07:00
ha-org-plantuml-example.png Get PlantUML back to working in org mode documents 2022-04-11 20:37:15 -07:00
ha-org-publishing.org Add link to RSS in the header of the blogs 2024-10-27 22:52:02 -07:00
ha-org-sprint.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-org-word-processor.org Fixing my presentation/demo configuration 2024-12-16 17:03:28 -08:00
ha-org.org Touching up the pikchr images. 2024-11-22 13:06:27 -08:00
ha-passwords.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-ansible.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-clojure.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-elisp.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-haskell.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-ocaml.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-python.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-ruby.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-rust.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming-scheme.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-programming.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-remoting.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
ha-theme-colors.svg More tweaks to the theme 2024-11-26 10:40:02 -08:00
ha-theme-grays.svg More tweaks to the theme 2024-11-26 10:40:02 -08:00
ha-theme-results.png More tweaks to the theme 2024-11-26 10:40:02 -08:00
ha-theme.org Theme now includes standard terminal colors 2025-01-14 22:03:10 -08:00
initialize Add the hl-todo and consult-todo 2024-07-02 10:11:23 -07:00
LICENSE Add LICENSE 2022-01-10 22:10:36 +00:00
README-Linux.org Decided I like lowercase headers better 2024-03-06 20:02:25 -08:00
README-MacOS.org Migration from ~/other to ~/src 2024-10-19 13:34:01 -07:00
README.org Fixing my Markdown configuration a bit 2024-09-02 15:57:51 -07:00

My Emacs Configuration

Introduction

Ive crafted my Emacs configuration, I cheekily call hamacs, in a literate programming model, heavily inspired by my recent journey into Henrik Lissner's Doom Emacs and Spacemacs. While I used both extensively, I decided I would roll my own as Emacs people like myself, tend to be control freaks (at least a little bit).

The advantage to rolling yer own is I tend to use what I add, leading to less bloat. In reality, this is more fun.

Using literate programming for my Emacs configuration gives me an easy way to share my code. Feel free to steal whatever you find interesting, as sharing makes our community great. Notice that functions and features I have written begin with ha-, but everything else is either stock Emacs or a package I download using straight (see bootstrap for the details) and configure with use-package (see either this introduction or this wiki page for those details)… meaning most blocks of code should work on its own.

Ive separated my configuration into chapters around particular subjects, applications and programming languages. This feature allows you, dear reader, to jump our to items of interest, but allows me to selectively load individual chapters. For instance, if Im not doing much with Ruby at work, I can remove that chapter from the list in my bootstrap. I also dont load my UI configuration when I am using the Terminal (doesnt happen much, actually).

Hit me up with questions on Mastodon: @howard@emacs.ch.

If you want to try the entire process, after installing Emacs (see my instructions for both MacOS and Linux), clone this repo with:

  git clone https://github.com/howardabrams/hamacs

And then, run:

./initialize

To create ~/.emacs.d/init.el which starts the process loading the files. Heres how my Emacs looks when it starts:

/git/howard/hamacs/media/commit/5ac74fadceb9affe0b3c293ee930c2fbd0059c33/screenshots/dashboard-small.png

Core Configuration

Bootstrap
configures straight and loads basic libraries the rest of the code depends on. It then loads the following files in order.
Configuration
contains most of my configuration, setting up my sequence key menus, evil, etc.
Evilness
configuration for using VI, er, vim keybindings in Emacs.
Leader
using the SPC to kick off a hierarchal order of functions.
GUI Display
sets up the visual aspects of an Emacs GUI, including themes and fonts.
Dashboard
sets up initial window layout of the main project with a dashboard.
Data
functions for dealing with a buffer-full of data.

Org Mode Configuration

Initial Org Configuration
configures the basics for org-mode formatted files. Specific features come from their own files.
Word Processing
attempts to make Org files visually look like a word processor, including turning off the colors for headers, and instead increasing their size.
Literate Programming
functions to support literate programming techniques. I use this most prevalently with this Emacs configuration.
Clipboard
automatically converting HTML from a clipboard into Org-formatted content.
Journaling
for writing journal entries and tasks.
Publishing
code for publishing my website, www.howardism.org.
Sprint Notes
functions for working with the my Org-focused sprint file.
Agendas
attempts to "supe-up" my task list.
Capturing Notes
my engineering notebook.

Terminal Configuration

If you know me, I appreciate the light-weight nature of Eshell (see this talk at EmacsConf 2022), but Eshell doesnt work that well with some of my remote work.

Eshell
customization and enhancement to the Emacs shell.
Remote Access
my interface to systems using SSH and Vterm.

Programming Configuration

While Im a language polyglot, I often focus on one or two languages at a time, but continue to keep my configuration for those languages around. Im attempting to convert over to LSP (with varying degrees of success).

General Programming
configuration for all programming languages, or at least, the simple ones.
Emacs Lisp
additions to Emacs Lisp programming.
Python
configuration for working with Python and LSP.
Scheme
configuration for Guile and Racket.
Clojure
configuration for Clojure.
Ruby
configuration for Ruby.

Miscellanea

Applications
optional applications, like Twitter and Telegram.
Email
reading email using notmuch in a Hey fashion.
RSS Reader
configuration of elfeed as well as my RSS feeds.
IRC
connection to IRC servers using rcirc and bitlbee.
Passwords
code for generating passwords.

Summary

The elisp directory contains non-literate code.

Other functions and files come from essays written on my blog. To help with this synchronization, I created a support/final-initialize.el file, but that shouldnt be too interesting to others.

🤓