doom.d/init.el

117 lines
4.6 KiB
EmacsLisp

;;; init.el -*- lexical-binding: t; -*-
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a link to Doom's Module Index where all
;; of our modules are listed, including what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on
;; flags as well (those symbols that start with a plus).
;;
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :completion
(company +childframe) ; the ultimate code completion backend
(vertico +childframe +icons)
:ui
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
(emoji +unicode) ; 🙂
hl-todo ; highlight todo-words
indent-guides ; highlighted indent columns
nav-flash ; blink cursor line after big motions
(popup +defaults) ; tame sudden yet inevitable temporary windows
(treemacs +lsp) ; a project drawer, like neotree but cooler
unicode ; extended unicode support for various languages
(vc-gutter +diff-hl +pretty)
window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
zen ; distraction-free coding or writing
modeline
:editor
(evil +everywhere)
multiple-cursors
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
(format +onsave) ; automated prettiness
lispy
rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
word-wrap ; soft wrapping with language-aware indent
:emacs
(dired +icons) ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
(ibuffer +icons) ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
(:if (not IS-WINDOWS) vterm)
:checkers
(syntax +childframe) ; tasing you for every semicolon you forget
(spell +aspell +everywhere) ; tasing you for misspelling mispelling
:tools
(debugger +lsp) ; stepping through code, to help you add bugs
direnv
editorconfig ; let someone else argue about tabs vs spaces
(eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation
(lsp +peek) ; M-x vscode
magit
pdf ; pdf enhancements
rgb ; creating color strings
tree-sitter
:os
(:if IS-MAC macos) ; improve compatibility with macOS
(tty +osc)
:lang
;;; Programming languages
;; Systems/low level languages
(rust +lsp +tree-sitter)
;; JVM
(java +lsp)
(kotlin +lsp)
;; Web
(javascript +lsp +tree-sitter)
(web +lsp +tree-sitter)
;; Other High Level
(haskell +lsp +tree-sitter)
emacs-lisp
(scheme +chez)
(sh +fish)
;; Configuration/Data
(nix +tree-sitter)
data
(yaml +tree-sittter)
(json +tree-sitter)
dhall
;; Markup
(latex +fold)
(markdown +tree-sitter)
(org +pandoc +present +roam2 +pomodoro)
plantuml
(python +cython +lsp +pyenv +pyright +tree-sitter)
:email
(:if IS-LINUX (mu4e +org))
:app
(rss +org) ; emacs as an RSS reader
:config
literate
(default +bindings +smartparens))
(when IS-WINDOWS
(setq native-comp-deferred-compilation t))