Emacs.d is an opinionated Emacs configuration based on use-package, helm (& various addons), projectile, flycheck and smartparens. For the looks, it uses dashboard, centaur-tabs, doom-modeline, kaolin-themes and all-the-icons.
For coding, it provides magit (with forge), lsp-mode with lsp-ui, and org-mode with org-modern and org-roam. Language support is configured per file — active languages are Elixir, Go, JavaScript, Lisp, Python, Rust and Terraform. Additional configurations for Haskell, Java, Ruby and Vala are available but disabled by default.
All language layers use lsp-mode as the unified backend for completions, diagnostics, code actions, and navigation — with company for the completion frontend. Python uses lsp-pyright with blacken for formatting.
Here are some sample screenshots:
- Emacs v27.x or higher
- Font IBM Plex Mono
- Ag - The Silver Searcher
- Language servers for your active language layers:
- gopls — Go
- rust-analyzer — Rust
- pyright — Python (
pip install pyright) - elixir-ls — Elixir
- terraform-ls — Terraform (optional)
- Clone this repo. This will go to your
$HOMEdirectory.
$ git clone https://github.com/otype/emacs.d.git ~/.emacs.d- Enable your desired language support configurations. This happens in init.el.
Please check each language configuration file (see /elisp/) for related dependencies.
$ nano -w ~/.emacs.d/init.el-
Add your personal email and name. Modify user.el.
-
Start Emacs. Emacs will auto-install all dependencies.
$ emacsOnce finished, you have a working Emacs configuration.
| Binding | Command |
|---|---|
M-x |
helm-M-x |
C-x C-f |
helm-find-files |
C-x b |
helm-mini (buffer switcher) |
M-y |
helm-show-kill-ring |
C-c h a |
helm-projectile-ag |
C-c h b |
helm-filtered-bookmarks |
C-c h d |
helm-do-ag |
C-c h g |
helm-browse-project |
C-c h i |
helm-semantic-or-imenu |
C-c h k |
helm-show-kill-ring |
C-c h m |
helm-mini |
C-c h o |
helm-occur |
C-c h r |
helm-resume |
C-c h v |
helm-projectile |
| Binding | Command |
|---|---|
C-c l r |
lsp-rename |
C-c l a |
lsp-execute-code-action |
C-c l f |
lsp-format-buffer |
C-c l d |
lsp-describe-thing-at-point |
C-c l l |
lsp-ui-flycheck-list |
| Binding | Command |
|---|---|
C-c m b |
magit-branch-and-checkout |
C-c m c |
magit-commit |
C-c m d |
magit-diff-unstaged |
C-c m e |
magit-ediff-resolve |
C-c m f |
magit-fetch |
C-c m l |
magit-log-current |
C-c m p |
magit-push |
C-c m r |
magit-rebase-interactive |
C-c m s |
magit-status |
C-c m u |
magit-pull |
C-c m x |
magit-checkout |
| Binding | Command |
|---|---|
C-c o a |
org-agenda |
C-c o c |
org-capture |
C-c o s |
org-store-link |
| Binding | Command |
|---|---|
C-c r f |
org-roam-node-find |
C-c r g |
org-roam-graph |
C-c r l |
org-roam-buffer-toggle |
C-c r r |
org-roam-node-random |
C-c r i |
org-roam-node-insert (org buffers) |
C-c r d |
org-roam-dailies-capture-today (org buffers) |


