init.el in org-mode
I've been learning a little bit about Emacs each day over the last month. My latest attempt was re-doing my init.el
in org-mode.
My primary goal was better organization. My init.el
was several hundred lines long and was totally disorganized. I've been adding to the end of it randomly as I've learned. I wanted a better way to understand my configuration so that I could improve it.
My secondary goal was to switch to using use-package
for all my packages.
bootstrapping
I replaced ~/.emacs.d/init.el
with this:
(require 'org) (org-babel-load-file (expand-file-name "settings.org" user-emacs-directory))
I then created ~/.emacs.d/settings.org
and put everything from my old init.el
into a giant BEGIN_SRC block:
#+BEGIN_SRC emacs-lisp ; original code goes here #+END_SRC emacs-lisp
building an organizational structure
- Emacs environment
- Directories/path setup
- Package setup
- Repositories
- Customize
use-package
- Subprocesses
- Helm
- Startup
- Backup file names
- Ask before closing
- Nuke buffers
- Global revert
- Display and movement preferences
- No easy keys
- Subword mode
- Only one space after period
- dired sort directories at top
M-o
to open previous line- save-place-mode
- Modules
- Snippets
- Flymake
- Git
- Python development
- Python-related modes
- Django setup
- Python flymake rules
- Editing modes
org-mode
org-mode
modules- org-mode link type
jekyll-post
- Custom emacs functions
- random numbers
- Overrides
- OS-specific overrides
- System-specific overrides
- Username-specific overrides
local.el
overrides
Trying out use-package
I don't know much about use-package
still. that said, I started to figure out a few of the options:
(use-package helm :config (progn (require 'helm-config) ) :bind (("C-x C-f" . helm-find-files) ("M-x" . helm-M-x) ("C-x r b" . helm-filtered-bookmarks) ("C-x b" . 'helm-mini)) :config (progn (helm-mode 1)))
Testing out the new configuration
After I got things sort of working, I closed Emacs and deleted my elpa repository. This made Emacs re-download all packages, which also showed me a bunch of errors. For example, I didn't have this set up properly:
(require 'use-package-ensure) ;install packages by default (setq use-package-always-ensure t)
These add :ensure t
to every use-package
statement; I left off the setq so no packages actually got downloaded.
Initial lessons learned
I had a fair bit of duplicate code, e.g. repeated imports of the same module. I also learned more about org-mode's dependencies and how some things aren't really modules. For example I'm using org-plus-contrib
, which apparently also gives me org-checklist
.
PS Eventually I'll post my .emacs.d.