hamacs/README.org
Howard Abrams 71168110e0 Fixing my Markdown configuration a bit
Just need to get the fonts working better.
2024-09-02 15:57:51 -07:00

85 lines
7 KiB
Org Mode
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+title: My Emacs Configuration
#+author: Howard X. Abrams
#+date: 2021-11-01
#+filetags: emacs readme
#+startup: inlineimages
** Introduction
Ive 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.
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 [[file:bootstrap.org::*Load the Rest][bootstrap]]. I also dont load my [[file:ha-display.org][UI configuration]] when I am using the Terminal (doesnt 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. Heres 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-general.org][Leader]] :: using the ~SPC~ to kick off a hierarchal order of functions.
- [[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-literate.org][Literate Programming]] :: functions to support literate programming techniques. I use this most prevalently with this Emacs configuration.
- [[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 doesnt 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 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).
- [[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 shouldnt 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