The Emacs configuration directory.
Clone the root of this version-controlled repository to a place where Emacs can find the init.el
file, e.g. ~/.config/emacs
.
emacs.d/ ├── bin/ - Shell scripts; add to PATH ├── etc/ - Startup & config files for packages │ └── tempel/ - Used by tempel, storing templates ├── init.d/ - Symlinks to package sources in lisp/ │ └── symlinks.sh - Symlink manager script ├── lisp/ - Emacs Lisp package source files │ ├── archive/ - Unused code archive for reference │ ├── themes/ - Theme package config files │ │ └── themes-*.el - Configure a theme │ ├── init-*.el - Initialize a package manager │ ├── linux-gui.el - Configure GUI sub-component in Linux │ ├── maj-*.el - Configure a major mode & its utilities │ ├── optimizations.el - Perf optimization │ └── subsys-*.el - Configure a subsystem not packaged as major mode ├── straight/ - Used by straight │ ├── repos/ - Package source repositories │ └── versions/ │ └── default.el - Version freeze info ├── tree-sitter/ - Tree-sitter library files ├── var/ - Package data files ├── early-init.el └── init.el
The Emacs starts by loading early-init.el
and then init.el
. This section describes the architecture of the init.el
file.
This repository makes heavy use of use-package
with straight
, configured in lisp/init-straight.el
.
Use :straight nil
to avoid pulling the source:
(use-package builtin-package
:straight nil
…)
Emacs Lisp source files are in lisp/
. Those .el
files actually loaded by init-loader
are symlinked in init.d/
, in (mostly) ASCII order. To set up symlinks, use symlinks.sh
:
./init.d/symlinks.sh -r # refresh all symlinks
See the Key Binding Conventions section of the GNU Emacs Lisp Reference Manual.
In a typical Linux system that I use, the startup time is about 1.5 - 2.0 seconds on the first launch and 1.0 - 1.5 seconds thereafter. The Emacs Lisp sources are written for readability and maintainability. Some strategies are maintained to minimize package loading time, however. The following resources may offer useful tips: