hamacs/README.org
Howard Abrams 62651466e2 Reorganizing my Publishing Approach
Getting ready to ship an exported version of my files up to my own
server.
2023-12-20 19:54:30 -08:00

6.1 KiB
Raw Blame History

My Emacs Configuration

Introduction

My Emacs configuration, that I'm cheekily calling hamacs is a literate programming model heavily inspired by my recent journey into Henrik Lissner's Doom Emacs and Spacemacs. I used both extensively, but decided that I would roll my own as Emacs people tend to be control freaks (at least a little bit).

The other advantage to rolling yer own is that you may use what you add, leading to less bloat, and a more fun experience.

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

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

If you want to try the entire process, after installing Emacs, clone this repo with:

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

And then, run:

./initialize

To create ~/.emacs.d/init.el that starts the process loading the files:

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.
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.
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 usually focus on one or two languages at a time, and my configuration may acquire a wee bit of cruft. That said, 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.

You may ask yourself, Howard, why are you still using Github. The only reason is that Org files automatically get rendered as HTML with the code block correctly syntax highlighted. This may change. 🤓