6e915e5665
Seems to make this more readable.
83 lines
6.7 KiB
Org Mode
83 lines
6.7 KiB
Org Mode
#+title: My Emacs Configuration
|
||
#+author: Howard X. Abrams
|
||
#+date: 2021-11-01 November
|
||
#+tags: emacs readme
|
||
|
||
** Introduction
|
||
I’ve crafted my Emacs configuration, I cheekily call /hamacs/, in a literate programming model, heavily inspired by my recent journey into [[https://www.youtube.com/watch?v=LKegZI9vWUU][Henrik Lissner's]] [[https://github.com/hlissner/doom-emacs][Doom Emacs]] and [[https://www.spacemacs.org/][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 [[https://howardism.org/Technical/Emacs/literate-devops.html][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 [[https://github.com/raxod502/straight.el][straight]] (see [[file:bootstrap.org][bootstrap]] for the details) and configure with [[https://github.com/jwiegley/use-package][use-package]] (see either [[https://ianyepan.github.io/posts/setting-up-use-package/][this introduction]] or [[https://www.emacswiki.org/emacs/UsePackage][this wiki page]] for those details)… meaning most blocks of code should work on its own.
|
||
|
||
I’ve 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 I’m not doing much with Ruby at work, I can remove that chapter from the list in my [[file:bootstrap.org::*Load the Rest][bootstrap]]. I also don’t load my [[file:ha-display.org][UI configuration]] when I am using the Terminal (doesn’t happen much, actually).
|
||
|
||
Hit me up with questions on Mastodon: [[https://emacs.ch/@howard][@howard@emacs.ch]].
|
||
|
||
If you want to try the entire process, after installing Emacs (see my instructions for [[file:README-MacOS.org][both MacOS]] and [[file:README-Linux.org][Linux]]), clone this repo with:
|
||
#+begin_src sh
|
||
git clone https://github.com/howardabrams/hamacs
|
||
#+end_src
|
||
And then, run:
|
||
#+BEGIN_SRC sh
|
||
./initialize
|
||
#+END_SRC
|
||
To create [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] which starts the process loading the files. Here’s how my Emacs looks when it starts:
|
||
|
||
[[file:screenshots/dashboard-small.png]]
|
||
** Core Configuration
|
||
- [[file:bootstrap.org][Bootstrap]] :: configures =straight= and loads basic libraries the rest of the code depends on. It then loads the following files in order.
|
||
- [[file:ha-config.org][Configuration]] :: contains /most/ of my configuration, setting up my sequence key menus, evil, etc.
|
||
- [[file:ha-evil.org][Evilness]] :: configuration for using VI, er, ~vim~ keybindings in Emacs.
|
||
- [[file:ha-display.org][GUI Display]] :: sets up the visual aspects of an Emacs GUI, including themes and fonts.
|
||
- [[file:ha-dashboard.org][Dashboard]] :: sets up initial window layout of the =main= project with a dashboard.
|
||
- [[file:ha-data.org][Data]] :: functions for dealing with a buffer-full of data.
|
||
|
||
** Org Mode Configuration
|
||
- [[file:ha-org.org][Initial Org Configuration]] :: configures the basics for org-mode formatted files. Specific features come from their own files.
|
||
- [[file:ha-org-word-processor.org][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.
|
||
- [[file:ha-org-clipboard.org][Clipboard]] :: automatically converting HTML from a clipboard into Org-formatted content.
|
||
- [[file:ha-org-journaling.org][Journaling]] :: for writing journal entries and tasks.
|
||
- [[file:ha-org-publishing.org][Publishing]] :: code for publishing my website, [[http://howardism.org][www.howardism.org]].
|
||
- [[file:ha-org-sprint.org][Sprint Notes]] :: functions for working with the my Org-focused sprint file.
|
||
- [[file:ha-agendas.org][Agendas]] :: attempts to "supe-up" my task list.
|
||
- [[file:ha-capturing-notes.org][Capturing Notes]] :: my engineering notebook.
|
||
|
||
** Terminal Configuration
|
||
If you know me, I appreciate the light-weight nature of Eshell (see [[https://emacsconf.org/2022/talks/eshell/][this talk at EmacsConf 2022]]), but Eshell doesn’t work that well with some of my remote work.
|
||
|
||
- [[file:ha-eshell.org][Eshell]] :: customization and enhancement to the Emacs shell.
|
||
- [[file:ha-remoting.org][Remote Access]] :: my interface to systems using SSH and Vterm.
|
||
|
||
** Programming Configuration
|
||
While I’m a language polyglot, I often focus on one or two languages at a time, but continue to keep my configuration for those languages around. I’m attempting to convert over to LSP (with varying degrees of success).
|
||
|
||
- [[file:ha-programming.org][General Programming]] :: configuration for /all/ programming languages, or at least, the simple ones.
|
||
- [[file:ha-programming-elisp.org][Emacs Lisp]] :: additions to Emacs Lisp programming.
|
||
- [[file:ha-programming-python.org][Python]] :: configuration for working with Python and LSP.
|
||
- [[file:ha-programming-scheme.org][Scheme]] :: configuration for Guile and Racket.
|
||
- [[file:ha-programming-clojure.org][Clojure]] :: configuration for Clojure.
|
||
- [[file:ha-programming-ruby.org][Ruby]] :: configuration for Ruby.
|
||
** Miscellanea
|
||
- [[file:ha-aux-apps.org][Applications]] :: optional applications, like Twitter and Telegram.
|
||
- [[file:ha-email.org][Email]] :: reading email using =notmuch= in a *Hey* fashion.
|
||
- [[file:ha-feed-reader.org][RSS Reader]] :: configuration of =elfeed= as well as my RSS feeds.
|
||
- [[file:ha-irc.org][IRC]] :: connection to IRC servers using rcirc and bitlbee.
|
||
- [[file:ha-passwords.org][Passwords]] :: code for generating passwords.
|
||
** Summary
|
||
The [[file:elisp/][elisp]] directory contains non-literate code.
|
||
|
||
Other functions and files come from essays written on [[http://www.howardism.org][my blog]]. To help with this synchronization, I created a [[file:support/final-initialize.el][support/final-initialize.el]] file, but that shouldn’t be too interesting to others.
|
||
|
||
🤓
|
||
|
||
#+DESCRIPTION: An index.html for describing my hamacs project
|
||
|
||
#+PROPERTY: header-args:sh :tangle no
|
||
#+PROPERTY: header-args:emacs-lisp :tangle no
|
||
#+PROPERTY: header-args :results none :eval no-export :comments no
|
||
|
||
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil date:nil
|
||
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
|
||
#+INFOJS_OPT: view:nil toc:t ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
|