.emacs.d
.emacs.d copied to clipboard
📔 My Emacs config.
.emacs.d
My personal Emacs configuration, using straight.el and use-package for third-party package management and setup. Straight in particular allows for some extreme optimization — current emacs-init-time on an M1 Max is ~170ms for terminal and under 300ms for GUI! ⚡️
Configuration is split up into modules which can be enabled or disabled in the core/sm-modules.el file. Personal settings such as note-taking directories are kept in core/sm-personal.el. Anything private can be placed in ~/.private/elisp/ — files placed there will be loaded during initialization.
Setup
Clone this repository into your home directory as .emacs.d.
git clone git://github.com/sjrmanning/.emacs.d.git ~/.emacs.d
...then run Emacs. On the first run, Emacs will install and compile any packages handled by the package manager, including native-compilation via libgccjit if supported.
Emacs version
I’m using native-compilation (--with-native-comp) and Emacs 29 with treesitter support, so there is some configuration using -ts-mode for some major modes.
Fonts and Theme
Fonts used are defined in core/sm-appearance.el. A custom version of Solarized (light) is used by default, but theme can also be changed in the sm-appearance.el file.
External requirements
There are a few cool external tools, mainly around code intelligence, syntax checking and auto-completion, that make this setup work a lot better, but obviously they need to be installed to work.
Editor-wide
brew install ripgrepforrgfor blazing fast search viaC-sandC-S.brew install editorconfigfor parsing .editorconfig files in projects.brew install aspell --with-lang-enfor spell-checking in writing/commit/text modes.
Language Servers
-
This config uses the built-in (Emacs 29+)
eglotto provide auto-completion and other code intelligence features for various programming languages. Pre-reqs differ by language, and some will handle their prerequisites themselves (lsp-python-msfor example will configure its own server).A list of available language server implementations can be found here.
Terminals
vtermrequires some compilation on first-use. You’ll needcmakeandlibvterm. Both can be installed withbrew.
Ruby
gem install rubocopfor style-checking via flycheck.
Markdown
- There are a few options for previewing and compiling Markdown documents. I’m currently using pandoc, installed via
brew install pandoc. You can also usediscountormarkdown, you’ll just need to updatemarkdown-command.