A dark cyberpunk Emacs theme with neon green and slateblue accents, plus a Doom live-coding module inspired by emacs-live.
"Cyber Medieval Sourceror's Cave"
Bit-Mage draws inspiration from:
- The neon-green Matrix aesthetic of terminal hacking
- Medieval grimoires and arcane study chambers
- Live coding environments like Emacs Live and Overtone
- The focused concentration of late-night coding sessions
- Low-light optimized: Deep blacks and muted backgrounds reduce eye strain
- Semantic color hierarchy: Greens for code, blues for structure, purples for accents
- Live-coding focused: Clear visual feedback for evaluation and debugging
- Keyboard-centric: No UI chrome, maximum code visibility
| Role | Color | Hex | Usage |
|---|---|---|---|
| Background | void | gray1 | Main editing area |
| Foreground | neon green | #00FF00 | Primary text |
| Accent 1 | slateblue | slateblue | Structure, types |
| Accent 2 | spring green | spring green | Success, strings |
| Warning | orange | #ffaf00 | Warnings, modified |
| Error | red | #ff5f5f | Errors, failures |
See the full palette (~30 color variables) in
bit-mage-theme.el.
Add to packages.el:
(package! bit-mage-theme.el
:recipe (:host github :repo "rajp152k/bit-mage-theme.el"))Add to config.el:
(add-to-list 'custom-theme-load-path
(file-name-as-directory
(expand-file-name "bit-mage-theme.el"
(file-name-directory (straight--repos-dir "bit-mage-theme.el")))))
(setq doom-theme 'bit-mage)
(load-theme 'bit-mage t)Then run doom sync and restart Emacs.
Clone and add to your load path:
git clone https://github.com/rajp152k/bit-mage-theme.el.git ~/.emacs.d/themes/bit-mage(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/bit-mage")
(load-theme 'bit-mage t)A Doom module inspired by emacs-live that adds visual feedback for live coding. Included in this repo under modules/private/live-coding/.
- Symlink the module into your Doom config:
mkdir -p ~/.config/doom/modules/private
ln -s /path/to/bit-mage-theme.el/modules/private/live-coding \
~/.config/doom/modules/private/live-coding- Add to your
init.el(inside thedoom!block):
:private
(live-coding +pulse +prettify +aggressive)- Run
doom syncand restart.
| Flag | Feature | Description |
|---|---|---|
+pulse |
pulse.el | Animated purple color-fade on eval for both elisp and CIDER commands |
+flash |
eval-sexp-fu | Static overlay flash (0.4s, purple orchid) — alternative to +pulse |
+prettify |
prettify-symbols | Displays fn and lambda as λ in Lisp modes |
+aggressive |
aggressive-indent | Auto-reindent on every keystroke in Lisp modes |
+pulse (recommended) uses Emacs built-in pulse.el for an animated fade effect. On eval, the sexp region flashes with a purple tint (#2a0040) that gradually fades back to the background. Errors flash red (#330000). Works for both elisp (C-x C-e, eval-defun) and CIDER (cider-eval-last-sexp, cider-eval-defun-at-point, cider-pprint-eval-last-sexp).
+flash uses eval-sexp-fu for a static overlay approach. Use one or the other — +pulse is the recommended default.
The theme covers 300+ faces across these packages:
| Category | Packages |
|---|---|
| Core | Default, font-lock, tree-sitter, mode-line, minibuffer |
| Clojure | CIDER (36 faces), eval-sexp-fu, clojure-mode |
| Completion | Vertico, Marginalia, Orderless, Consult, Corfu, Company, Ivy |
| VCS | Magit (45+ faces), diff, ediff, git-gutter, git-commit |
| Org | Org-mode (50+ faces), org-roam |
| File management | Dired, Diredfl, Treemacs |
| Editing | Smartparens, hl-sexp, volatile-highlights, rainbow-delimiters |
| Diagnostics | Flycheck, Flymake, LSP Mode/UI |
| UI | Doom dashboard/modeline, which-key, hydra, avy, tab-bar |
| Help | Apropos, Info, helpful |
| Other | Elfeed, Eshell, ERC, LaTeX, Markdown, term |
The theme uses let* binding for all colors. Fork and modify:
(let* ((bg-void "gray1") ; Change background here
(fg-main "green") ; Change foreground here
...)rainbow-delimiters— Paren depth highlighting (themed with 4-color rotation)eval-sexp-fu— Flash on eval (included in live-coding module)doom-modeline— Themed modeline (faces included)aggressive-indent— Auto-reindent (included in live-coding module)


