SimplyEmacs
Vanilla Emacs at heart, with Evil scoped strictly to buffer editing and basic motion.
Philosophy
SimplyEmacs is my personal, versioned Emacs setup — built up piece by piece and treated like a project with tags and releases.
Simple idea: stick as close to vanilla Emacs as possible, but keep movement comfortable. Evil handles normal modal editing inside regular text buffers, while in modes like Dired or Magit it's stripped down to a paper-thin navigation layer (hjkl for moving around) so all the native keybinds and features keep working as intended. It gives you comfortable motion without burying how Emacs actually works.
Layout
.
├── init.el # bootstrap, general UI, built-in settings, module loader
├── lisp/
│ ├── init-evil.el # evil-mode, ex commands, buffer-editing keybinds
│ ├── init-dired.el # evil-style navigation for dired
│ ├── init-completion.el # vertico, orderless, marginalia, corfu, consult, which-key
│ ├── init-project.el # project.el scoped to ~/Projects, with a sticky project pin
│ ├── init-build.el # simple build system around build.sh scripts
│ ├── init-dev.el # per-language tooling (Odin, Lua, TOML) + eglot
│ ├── init-git.el # version control with Magit
│ ├── init-theme.el # gruvbox-dark-hard + a few face tweaks
│ └── init-cheatsheet.el # in-Emacs keybinding reference (toggle with C-c /)
└── custom.el # auto-generated by M-x customize, gitignored
init.el is meant to stay readable as "what does bare Emacs look and feel
like" — general UI, backups/autosave, scrolling, removing confirmations, etc.
Everything else is one file per concern under lisp/, required at the
bottom of init.el. Custom's auto-generated output is redirected to its
own custom.el (gitignored) so a stray M-x customize never shows up
as noise in a diff.
Included
- Completion — vertico + vertico-posframe, orderless, marginalia, corfu, consult
- Discovery — which-key
- Editing — evil (buffer editing only)
- Files — dired, tuned with evil-style
hjklnavigation - Dev tooling — tree-sitter + odin-ts-mode + eglot (OLS) for Odin, plus lua-mode, toml-mode, and markdown-mode
- Theme — gruvbox-dark-hard, darkened background/fringe/line-numbers to
#111111
Install
git clone <this-repo> ~/.config/emacs
emacs
First launch will refresh package archives and install everything declared
via use-package.
Adding a language
Add a new ;;;; <Language> section to lisp/init-dev.el following the Odin
example (tree-sitter grammar source, mode package, eglot hook).
Versioning
Tagged releases (v1.0, v1.1, ...) mark points where the config is in a
known-good, "I'd hand this to past-me" state.
Day-to-day tweaks happen over time and, once they've proven themselves,
eventually land in a version.