Skip to content

mwunsch/emacs.d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Emacs Configuration

Introduction

These are my Emacs customizations. I am in the process of learning and using Emacs as my primary text editor (amongst all the other things that Emacs seems to do for you).

System Requirements

Installed via Homebrew:

  • cmake and libtool - Required for vterm compilation
  • ghostscript - Required for PDF rendering
  • git - Required for tree-sitter grammar compilation
  • pandoc - Required for Markdown processing

Philosophy

The important thing to understand is that learning Emacs isn’t just learning the particulars of a text editor. Learning Emacs means learning a framework written in Emacs Lisp that is all about taking actions on buffers of text. Learning the Emacs basics are important, but that only scratches the surface of the different interaction modes.

My configuration follows the philosophy of better-defaults - starting simple and adding functionality as needed, rather than using a large framework like Spacemacs or Doom Emacs.

Current Setup

Package Management

  • Uses use-package for declarative package configuration
  • Configured with MELPA, Org, and GNU ELPA repositories

Core Packages

Editor Enhancements

Appearance

  • doom-themes - Modern color themes (using doom-one)
  • solaire-mode - Visual distinction between code and UI buffers
  • doom-modeline - Clean, informative modeline
  • anzu - Search match count display
  • Font: SF Mono at 12.4pt (when available)

Project & Version Control

  • project.el (built-in, C-c p) - Project management and navigation
  • magit - Git interface
  • gist - GitHub gist integration
  • exec-path-from-shell - Inherit shell environment (important on macOS, optimized for fast startup)
  • direnv - Automatically load direnv environments (essential for nix/devenv projects)

Development Tools

  • eglot (built-in) - Language Server Protocol support using standard Emacs bindings
  • flymake (built-in, M-g n/p) - On-the-fly syntax checking, displays LSP diagnostics
  • tree-sitter (built-in) - Advanced syntax highlighting and code navigation (Emacs 30)
  • company-mode - In-buffer completion
  • treemacs (C-c t) - File tree sidebar with git status indicators
  • vterm - Terminal emulator
  • claude-code-ide (C-c C-') - Claude AI integration

Language Support

TypeScript/TSX

  • Uses built-in typescript-ts-mode with tree-sitter (Emacs 30)
  • Automatically compiles and installs tree-sitter grammars from source on first use
  • Eglot provides LSP features (go-to-definition, find-references, completion, diagnostics)
  • Requires: npm install -g typescript-language-server typescript

Ruby

Rust

Nix

Lisp

  • paredit - Structural editing for Lisp and Scheme

Markdown

Docker

Document Formats

AI Assistant

  • gptel - ChatGPT/Claude interface

Key Bindings Reference

Essential Emacs

KeyCommandDescription
C-h thelp-with-tutorialEmacs tutorial
C-h aapropos-commandSearch for command
C-h mdescribe-modeCurrent mode help
C-h kdescribe-keyDescribe key binding
C-h .display-local-helpHelp at point

Project Management (project.el)

KeyCommandDescription
C-c p fproject-find-fileFind file in project
C-c p pproject-switch-projectSwitch project
C-c p gproject-find-regexpSearch in project
C-c p bproject-switch-to-bufferSwitch to project buffer
C-c p dproject-find-dirFind directory in project

Flymake (Syntax Checking)

KeyCommandDescription
M-g nflymake-goto-next-errorJump to next error
M-g pflymake-goto-prev-errorJump to previous error
C-h .display-local-helpShow error at point
M-xflymake-show-buffer-diagnosticsList all errors

Eglot (LSP)

KeyCommandDescription
M-.xref-find-definitionsGo to definition
M-?xref-find-referencesFind references
M-,xref-go-backGo back
C-h .eldoc-doc-bufferShow documentation
C-c reglot-renameRename symbol
C-c aeglot-code-actionsExecute code action
C-c feglot-formatFormat buffer/region

Other Tools

KeyCommandDescription
C-c ttreemacsToggle file tree sidebar
M-x magit-statusmagit-statusGit status
C-c C-'claude-code-ide-menuClaude Code menu

Treemacs (File Tree)

Inside the treemacs buffer:

KeyCommandDescription
n/pnext/previousNavigate files/folders
RETtreemacs-RET-actionOpen file or toggle dir
TABtreemacs-TAB-actionExpand/collapse directory
qquit-windowClose treemacs
?treemacs-helpful-hydraShow all keybindings

Learning Resources

Books & Guides

Community Resources

Configuration Examples

People whose configs I’ve learned from:

Key Advice

The key is to keep C-h a (pattern-matching help) and C-h m close at hand. C-h everything!

Future Enhancements

Some things I’m considering adding:

  • More language modes as needed
  • Org-mode configuration for note-taking and planning
  • Custom keybindings as I discover my workflow patterns
  • Performance optimizations (compile, lazy loading tweaks)

Eventually, I’ll get the hang of it.

About

'(wut)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •