Skip to main content

DrEmacs

My dream of my personal Emacs environment, 2021-07-05T11:00:00+02:00

I don't like Emacs, I love it. And so I live most of the time inside this great lisp environment, and read mail or RSS feeds, view PDFs, do my personal accounting or write letters. There is an package for everything. And all of these packages come with their own configurations, keybindings and aesthetics.

And if that wouldn't be enough for my brain, all of it is pretty archaic. Emacs is famous (or should I say notorious) for its strange key combinations and user interfaces.

And I don't like that to get in my way.

I want to change that, but instead of doing some kind of public package, that tries to solve this problem for everyone, I chose another way. I am building my own personal configuration for Emacs, that I try to explain thorougly (with literate configuration) to myself, and to everyone who is interested in it.

I don't want you to use it as it is, but I try to tell you the reasons and concepts of all the tweaks my Emacs got over time. And I hope you understand my ideas and intentions enough to build your own config from that.

As I know, people will copy parts of it anyways, I tried to separate it into 4 different projects, all publicly available on codeberg.org, to make it as easy as possible to get just the thing you need, with the explanation right beside it.

Those 4 projects are

  • My Basic configuration
  • SaneKeys
  • Medusa
  • DrOps-Theme

It's also the order in which my init.el file loads all these included config files

here is my full config.el

(setq vc-follow-symlinks nil)

(org-babel-load-file (concat user-emacs-directory "config.org"))
(org-babel-load-file (concat user-emacs-directory "sanekeys.org"))
(org-babel-load-file (concat user-emacs-directory "medusa.org"))
(org-babel-load-file (concat user-emacs-directory "elgato.org"))

(setq custom-file (concat user-emacs-directory "custom.el"))
(load (concat user-emacs-directory "custom.el"))

(require 'epa-file)
(epa-file-enable)

(pdf-tools-install)

You see the 4 lines of org-babel-load-file. The last one (with elgato.org) is experimental right now. I try to integrate my Elgato Streamdeck more closely with emacs.

Also for experimental reasons is the use of the custom.el, which is loaded last (and so it overwrites every other configuration done before). This file is usually empty, but I do all of my customizations via the built-in customize interface, that writes it to this file. If the customization plases me, I extract it from here, and put it in the according config file.

Config

The configuration file contains all the defaults, I expect my packages to have.

You will find this project here

SaneKeys

The SaneKeys file contains only keybindings, global as well as mode-specific ones The goal is to have keybindings that are least surprising, and are mostly derived from well-known things like Ctrl-O for opening files, or Ctrl-S for saving and Ctrl-Q for quitting emacs.

You will find this project here

Medusa

The SaneKeys work well for everyday tasks, but if you need a command once or twice every few months we will forget even the easiest keybinding. So I use the Hydra packack to make groups of similar commands by its context. The good thing is, that Hydra gives visual helps when choosing the right function. So Medusa is my project for herding dozens of Hydras

You will find this project here

DrOps-Theme

My own theme from scratch. Dark background, and rainbowish colors. It's in its very beginnings, and changes slowly, as I can live with a wide range of other dark themes too.

You will find this project here