Learning Org Mode
Since hearing about org-mode on the web many years ago, I always meant to give it a spin. I only ever found
one two problems:
Time - Life eh?
It's a mode of Emacs for which I'd also have to learn (again time)
So I recently set about solving both shortcomings, as painful as it was to dismiss all the effort I put in to my vim muscle memory over the years. The tough part usually is finding good documentation that is both easy to read and follow.
So what is org-mode?
To put it simply, Org-mode is an editing mode of Emacs, which allows you to write plain text TODO lists. But it is also a lot more. You can:
Use plain text tables
Run snippets of code (and edit them in their own file with proper formatting)
Use plain text spreadsheets
Export to many, many formats (Latex, PDF, HTML) or a custom format
Agenda mode for many ways to look at your TODOs
This all sounds complicated, but the beautiful thing about org-mode is that it gradually reveals the features it has. You can only ever write a simple list like this if you want:
* My First org mode outline ** TODO Must read the org manual
and that's it. Really. You don't need to use any of the other features if you don't want to. This is also a reason that it was a joy to learn: it never pushes unnecessary complication on the user. I wish I could say the same for Emacs! Although to be fair, Emacs is probably easier then Vim to get started in.
## Combining Emacs + Org: Literate Programming
So this was the fun part: how can I combine learning Emacs and Org? It turns out, I can create my whole Emacs configuration file in org-mode, and it will convert it Emacs Lisp. This is brilliant because in org-mode, we can annotate and explain everything. Take a look at this:
* Packages Let's fetch Emacs packages from the Melpa mirror: #+BEGIN_SRC emacs-lisp (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) #+END_SRC
This is fully self documented code (some argue Lisp is this by nature also). This is nicely rendered on Github, see these two examples to see what I mean. The pertinent advice here is: start with a minimal configuration and only ever add things you understand. I followed exactly this advice, and those two files were brilliant references. I would find an annoyance in Emacs, and one of those two org files would have something in Emacs to
fix customise the issue I had.