:PROPERTIES: :ID: 12d2de30-c569-4b8e-bbc7-85dd5ccc4afa :END: #+title: Official modules #+subtitle: Doom Emacs' official module repository #+startup: nonum * Description :unfold: This is a repository of official modules for [[https://github.com/doomemacs/core][Doom Emacs]]. They are more closely looked after by Doom's author. If a module you want isn't here, check our sibling repository for community-maintained modules: [[https://github.com/doomemacs/contrib-modules][doomemacs/contrib-modules]], which also serves as a staging ground for new modules. #+begin_quote πŸ“Œ Technical documentation on the anatomy of Doom modules can be found in [[id:72d8e438-a224-421a-b6a9-43d7dcebe0bb][the official developer's manual]]. #+end_quote ** Maintainers - @hlissner [[doom-contrib-maintainer:][Become a maintainer?]] ** TODO Changelog # This section will be machine generated. Don't edit it by hand. /This module does not have a changelog yet./ * Installation This module repository is included with Doom Emacs (for now). No additional setup is needed to add them. However, [[id:01cffea4-3329-45e2-a892-95a384ab2338][the modules themselves can be toggled in your ~doom!~ block.]] Remember to check their documentation (listed and linked below) for additional setup instructions. * Module list (150) :unfold: # Do not edit this list by hand; run 'doom make-index path/to/modules' ** [[doom-module::app][:app]] (6) :unfold: Application modules are complex and opinionated modules that transform Emacs toward a specific purpose. They may have additional dependencies and *should be loaded last* (but before [[doom-module::config]] modules). *** [[doom-module::app calendar][calendar]]: - : Watch your missed deadlines in real time This module adds a calendar view for Emacs, with org and google calendar sync support. *** [[doom-module::app emms][emms]]: - : A media player for music no one's heard of This module enables Emacs to be used as a music player. It uses [[https://www.musicpd.org/][mpd]] as a backend server and [[https://musicpd.org/clients/mpc/][mpc]] to update your music database. *** [[doom-module::app everywhere][everywhere]]: - : *leave* Emacs!? You must be joking This module adds system-wide popup Emacs windows for quick edits. *** [[doom-module::app irc][irc]]: - : How neckbeards socialize This module turns Emacs into an IRC client, capable of OS notifications. *** [[doom-module::app rss][rss]]: [[doom-module::app rss +org][+org]] : An RSS reader that Google can't shut down Read RSS feeds in the comfort of Emacs. *** [[doom-module::app twitter][twitter]]: - : Be superficial in plain text Enjoy twitter from emacs. - View various timelines side by side, e.g. user's timeline, home, etc. - Post new tweets - Send direct messages - Retweet - Follow and un-follow users - Favorite tweets ** [[doom-module::checkers][:checkers]] (3) :unfold: For modules dedicated to linting plain text (primarily code and prose). *** [[doom-module::checkers grammar][grammar]]: - : Tasing grammar mistake every you make This module adds grammar checking to Emacs to aid your writing by combining [[doom-package:lang-tool]] and [[doom-package:writegood-mode]]. *** [[doom-module::checkers spell][spell]]: [[doom-module::checkers spell +aspell][+aspell]] [[doom-module::checkers spell +enchant][+enchant]] [[doom-module::checkers spell +everywhere][+everywhere]] [[doom-module::checkers spell +flyspell][+flyspell]] [[doom-module::checkers spell +hunspell][+hunspell]] : Tasing you for misspelling mispelling This modules provides spellchecking powered by =aspell=, =hunspell= or =enchant=. Spellcheck is automatically loaded in many ~text-mode~ derivatives, which includes ~org-mode~, ~markdown-mode~, the Git Commit buffer (from magit), ~mu4e-compose-mode~, and others. - Spell checking and correction using =aspell=, =hunspell= or =enchant=. - Ignores source code inside org or markdown files. - Lazily spellchecking recent changes only when idle. - Choosing suggestions using completion interfaces ([[doom-package:ivy]] or [[doom-package:helm]]). *** [[doom-module::checkers syntax][syntax]]: [[doom-module::checkers syntax +childframe][+childframe]] : Tasing you for every semicolon you forget This module provides syntax checking and error highlighting, powered by [[doom-package:flycheck]]. ** [[doom-module::completion][:completion]] (5) :unfold: These modules provide interfaces and frameworks completion, including code completion. *** [[doom-module::completion company][company]]: [[doom-module::completion company +childframe][+childframe]] [[doom-module::completion company +tng][+tng]] : The ultimate code completion backend This module provides code completion, powered by [[https://github.com/company-mode/company-mode][company-mode]]. Many of Doom's [[doom-module::lang]] modules require it for "intellisense" functionality. https://assets.doomemacs.org/completion/company/overlay.png *** [[doom-module::completion helm][helm]]: [[doom-module::completion helm +childframe][+childframe]] [[doom-module::completion helm +fuzzy][+fuzzy]] [[doom-module::completion helm +icons][+icons]] : A tank for hunting a house fly This module provides Helm integration for a variety of Emacs commands, as well as a unified interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep][Ripgrep]]. *** [[doom-module::completion ido][ido]]: - : A foil for other search engines Interactive DO things. The completion engine that is /mostly/ built-into Emacs. *** [[doom-module::completion ivy][ivy]]: [[doom-module::completion ivy +childframe][+childframe]] [[doom-module::completion ivy +fuzzy][+fuzzy]] [[doom-module::completion ivy +icons][+icons]] [[doom-module::completion ivy +prescient][+prescient]] : Yesterday's lightest search engine This module provides Ivy integration for a variety of Emacs commands, as well as a unified interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep/][ripgrep]]. #+begin_quote I prefer ivy over ido for its flexibility. I prefer ivy over helm because it's lighter, simpler and faster in many cases. #+end_quote *** [[doom-module::completion vertico][vertico]]: [[doom-module::completion vertico +icons][+icons]] : Tomorrow's search engine This module enhances the Emacs search and completion experience, and also provides a united interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep/][ripgrep]]. It does this with several modular packages focused on enhancing the built-in ~completing-read~ interface, rather than replacing it with a parallel ecosystem like [[doom-package:ivy]] and [[doom-package:helm]] do. The primary packages are: - Vertico, which provides the vertical completion user interface - Consult, which provides a suite of useful commands using ~completing-read~ - Embark, which provides a set of minibuffer actions - Marginalia, which provides annotations to completion candidates - Orderless, which provides better filtering methods ** [[doom-module::config][:config]] (2) :unfold: Modules in this category provide sane defaults or improve your ability to configure Emacs. It is best to load these last. *** [[doom-module::config default][default]]: [[doom-module::config default +bindings][+bindings]] [[doom-module::config default +smartparens][+smartparens]] : Reasonable defaults for reasonable people This module provides a set of reasonable defaults, including: - A Spacemacs-inspired keybinding scheme - A configuration for (almost) universally repeating searches with [[kbd:][;]] and [[kbd:][,]] - A [[doom-package:smartparens]] configuration for smart completion of certain delimiters, like ~/* */~ command blocks in C-languages, ~~ tags in PHP, or ~def end~ in Ruby/Crystal/etc. *** [[doom-module::config literate][literate]]: - : Disguise your config as poor documentation This module enables support for a literate config. A literate config consists of a =$DOOMDIR/config.org=. All src blocks within are tangled =$DOOMDIR/config.el=, by default, when ~$ doom sync~ is executed. ** [[doom-module::editor][:editor]] (12) :unfold: For modules concerned with the insertion and editing of text. Amen. *** [[doom-module::editor evil][evil]]: [[doom-module::editor evil +everywhere][+everywhere]] : The text editor Emacs was missing This holy module brings the Vim editing model to Emacs. *** [[doom-module::editor file-templates][file-templates]]: - : Fill the void in your empty files This module adds file templates for blank files, powered by [[doom-package:yasnippet]]. *** [[doom-module::editor fold][fold]]: - : What you can't see won't hurt you This module marries [[doom-package:hideshow]], [[doom-package:vimish-fold]], and ~outline-minor-mode~ to bring you marker, indent and syntax-based code folding for as many languages as possible. *** [[doom-module::editor format][format]]: [[doom-module::editor format +onsave][+onsave]] : Standardize your ugly code This module integrates code formatters into Emacs. Here are some of the formatters that it currently supports: #+begin_quote asmfmt, black, brittany, cabal-fmt, clang-format, cmake-format, dartfmt, dfmt, dhall format, dockfmt, elm-format, emacs, fish_indent, fprettify, gleam format, gofmt, iStyle, jsonnetfmt, ktlint, latexindent, ledger-mode, lua-fmt, mix format, nixfmt, node-cljfmt, ocp-indent, perltidy, prettier, purty, rufo, rustfmt, scalafmt, script shfmt, snakefmt, sqlformat, styler, swiftformat, tidy #+end_quote *** [[doom-module::editor god][god]]: - : IDDQD Adds [[doom-package:god-mode]] support to Doom Emacs, allowing for entering commands without modifier keys, similar to Vim's modality, separating command mode and insert mode. *** [[doom-module::editor lispy][lispy]]: - : Vim for lisp, for people who don't like vim This module adds a keybind scheme for navigating and editing S-expressions in Lisps; including S-exp awareness for Evil users. This affects the following languages: - Common Lisp - Emacs Lisp - Scheme - Racket - [[http://docs.hylang.org/en/stable/][Hy]] - [[http://lfe.io/][LFE]] - Clojure - [[https://fennel-lang.org][Fennel]] *** [[doom-module::editor multiple-cursors][multiple-cursors]]: - : Make all your mistakes at once This module adds a multiple cursors implementation to Emacs (two, if you use evil) that loosely take after multi-cursors in Atom or Sublime Text. *** [[doom-module::editor objed][objed]]: [[doom-module::editor objed +manual][+manual]] : Text object editing for the innocent This modules adds [[doom-package:objed]], a global minor-mode for navigating and manipulating text objects. It combines the ideas of ~versor-mode~ and other editors like Vim or Kakoune and tries to align them with regular Emacs conventions. [[https://github.com/clemera/objed][See the objed project README]] for information on keybinds and usage. *** [[doom-module::editor parinfer][parinfer]]: - : For lispers that like Python more (i.e. nobody) Parinfer is a minor mode that aids the writing of Lisp code. It automatically infers parenthesis matching and indentation alignment, keeping your code balanced and beautiful. *** [[doom-module::editor rotate-text][rotate-text]]: - : The only back'n'forth nerds will ever know This module adds text rotation to Doom Emacs. I.e. The ability to cycle through keywords or text patterns at point, like ~true~ and ~false~, or ~public~, ~protected~, and ~private~ (in ~c++-mode~). *** [[doom-module::editor snippets][snippets]]: - : My elves type so I don't have to This module adds snippet expansions to Emacs, powered by [[doom-package:yasnippet]]. *** [[doom-module::editor word-wrap][word-wrap]]: - : Soft-wrapping with language-aware indent This module adds a minor-mode [[fn:+word-wrap-mode]], which intelligently wraps long lines in the buffer without modifying the buffer content. ** [[doom-module::emacs][:emacs]] (6) :unfold: Modules in this category augment and extend the built-in features of Emacs. *** [[doom-module::emacs dired][dired]]: [[doom-module::emacs dired +icons][+icons]] [[doom-module::emacs dired +ranger][+ranger]] : Making dired pretty [functional] This module provides reasonable defaults and augmentations for dired. *** [[doom-module::emacs electric][electric]]: - : Shocking keyword-based electric-indent This module augments the built-in [[doom-package:electric]] package with keyword-based indentation (as opposed to character-based). *** [[doom-module::emacs ibuffer][ibuffer]]: [[doom-module::emacs ibuffer +icons][+icons]] : Edit me like one of your French buffers This module augments the built-in [[doom-package:ibuffer]] package. - Adds project-based grouping of buffers - Support for file-type icons - Uses human-readable file-size *** tramp: - /(No description)/ *** [[doom-module::emacs undo][undo]]: [[doom-module::emacs undo +tree][+tree]] : Persistent, smarter undo for your inevitable mistakes This module augments Emacs' built-in undo system to be more intuitive and to persist across Emacs sessions. *** [[doom-module::emacs vc][vc]]: - : Be the difference you want to see in the fringe This module augments Emacs builtin version control support and provides better integration with =git=. ** [[doom-module::email][:email]] (3) :unfold: Modules that turn Emacs in an email client. *** [[doom-module::email mu4e][mu4e]]: [[doom-module::email mu4e +gmail][+gmail]] [[doom-module::email mu4e +org][+org]] : The great filter Hanson hadn't anticipated This module makes Emacs an email client, using [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]]. - Tidied mu4e headers view, with flags from [[doom-package:nerd-icons]]. - Consistent coloring of reply depths (across compose and gnus modes). - Prettified =mu4e:main= view. - Cooperative locking of the =mu= process. Another Emacs instance may request access, or grab the lock when it's available. - [[doom-package:org-msg]] integration with [[doom-module:+org]], which can be toggled per-message, with revamped style and an accent color. - Gmail integrations with the [[doom-module:+gmail]] flag. - Email notifications with [[doom-package:mu4e-alert]], and (on Linux) a customised notification style. #+begin_quote πŸ’‘ I want to live in Emacs, but as we all know, living is incomplete without email. So I prayed to the text editor gods and they (I) answered. Emacs+evil's editing combined with org-mode for writing emails? /Yes please./ It uses ~mu4e~ to read my email, but depends on ~offlineimap~ (to sync my email via IMAP) and ~mu~ (to index my mail into a format ~mu4e~ can understand). #+end_quote *** [[doom-module::email notmuch][notmuch]]: [[doom-module::email notmuch +afew][+afew]] [[doom-module::email notmuch +org][+org]] : Closest Emacs will ever be to multi-threaded This module turns Emacs into an email client using [[doom-package:notmuch]]. *** [[doom-module::email wanderlust][wanderlust]]: [[doom-module::email wanderlust +gmail][+gmail]] : To boldly go where no mail has gone before #+begin_quote πŸ”¨ This module has no description. [[doom-contrib-module:][Write one?]] #+end_quote ** [[doom-module::input][:input]] (3) :unfold: Modules in this category extend Emacs support for additional keyboard layouts and input methods for non-English languages. *** [[doom-module::input chinese][chinese]]: - : Spend your 3 hours a week in Emacs This module adds support for traditional Chinese script by introducing two input methods: Pinyin and Wubi. *** [[doom-module::input japanese][japanese]]: - : Ah, a man of culture This module adds support for Japanese script. *** [[doom-module::input layout][layout]]: [[doom-module::input layout +azerty][+azerty]] [[doom-module::input layout +bepo][+bepo]] : auie,ctsrnm is the superior home row This module provides barebones support for using Doom with non-qwerty keyboard layouts. ** [[doom-module::lang][:lang]] (60) :unfold: These modules specialize in integration particular languages and their ecosystems into (Doom) Emacs. *** [[doom-module::lang agda][agda]]: - : Types of types of types of types... This module adds support for the [[http://wiki.portal.chalmers.se/agda/pmwiki.php][agda]] programming language. The Emacs support exists directly in the agda repository, but not in melpa. *** [[doom-module::lang beancount][beancount]]: [[doom-module::lang beancount +lsp][+lsp]] : Mind the GAAP This module adds support for [[https://beancount.github.io/][Beancount]] to Emacs. Beancount, like ledger, lets you [[https://plaintextaccounting.org/][manage your money in plain text]]. *** [[doom-module::lang cc][cc]]: [[doom-module::lang cc +lsp][+lsp]] : C > C++ == 1 This module adds support for the C-family of languages: C, C++, and Objective-C. - Code completion (~company-irony~) - eldoc support (~irony-eldoc~) - Syntax-checking (~flycheck-irony~) - Code navigation (~rtags~) - File Templates ([[../../editor/file-templates/templates/c-mode][c-mode]], [[../../editor/file-templates/templates/c++-mode][c++-mode]]) - Snippets ([[https://github.com/hlissner/doom-snippets/tree/master/cc-mode][cc-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c-mode][c-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c++-mode][c++-mode]]) - Several improvements to C++11 indentation and syntax highlighting. *** [[doom-module::lang clojure][clojure]]: [[doom-module::lang clojure +lsp][+lsp]] : Java with a lisp This module adds support for the Clojure(Script) language. - Interactive development environment (~cider~): REPL, compilation, debugging, running tests, definitions & documentation lookup, code completion, and much more - Refactoring (~clj-refactor~) - Linting (~clj-kondo~), requires ~:checkers syntax~ - LSP support (~clojure-lsp~) *** [[doom-module::lang common-lisp][common-lisp]]: - : If you've seen one lisp, you've seen them all This module provides support for [[https://lisp-lang.org/][Common Lisp]] and the [[doom-package:Sly]] development environment. Common Lisp is not a single language but a specification, with many competing compiler implementations. By default, [[http://www.sbcl.org/][Steel Bank Common Lisp]] (SBCL) is assumed to be installed, but this can be configured. Common Lisp benefits from a mature specification and rich standard library. Thanks to its powerful REPL and debugger, it boasts an "interactive programming" style often unseen in other languages. Compiled Common Lisp programs are trusted to run unmodified for a long time. *** [[doom-module::lang coq][coq]]: - : Proofs as programs This module adds [[https://coq.inria.fr][coq]] support, powered by [[https://proofgeneral.github.io][Proof General]]. - Code completion ([[https://github.com/cpitclaudel/company-coq][company-coq]]) - [[https://github.com/hlissner/doom-snippets/tree/master/coq-mode][Snippets]] *** [[doom-module::lang crystal][crystal]]: - : Ruby at the speed of C This modules adds [[https://crystal-lang.org/][crystal]] support. - Syntax-checking (~flycheck~) - REPL (~inf-crystal~) *** [[doom-module::lang csharp][csharp]]: [[doom-module::lang csharp +dotnet][+dotnet]] [[doom-module::lang csharp +lsp][+lsp]] [[doom-module::lang csharp +unity][+unity]] : Unity, .NET, and Mono shenanigans This module adds C# support to Emacs, powered by Omnisharp (directly or through LSP). *** [[doom-module::lang dart][dart]]: [[doom-module::lang dart +flutter][+flutter]] [[doom-module::lang dart +lsp][+lsp]] : Paint ui and not much else [[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform. It is fast and optimized for UI, famous for the [[https://flutter.io/][Flutter]] framework, also made by Google. Both Flutter and Dart are free and open-source. This module wraps ~dart-mode~, with [[https://microsoft.github.io/language-server-protocol/][LSP]] features like code completion for =.dart= files, syntax highlighting, debugging, closing labels, etc. *** [[doom-module::lang data][data]]: - : A dumping ground for data formats This module adds Emacs support for CSV and XML files. *** [[doom-module::lang dhall][dhall]]: - : Config as code This module adds [[https://dhall-lang.org/][Dhall]] language support to Emacs. Dhall is a programmable configuration language that you can think of as: JSON + functions + types + imports. *** [[doom-module::lang elixir][elixir]]: [[doom-module::lang elixir +lsp][+lsp]] : Erlang done right This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[doom-package:alchemist]] or [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]]. *** [[doom-module::lang elm][elm]]: [[doom-module::lang elm +lsp][+lsp]] : Care for a cup of TEA? This module adds [[https://elm-lang.org/][Elm]] support to Doom Emacs. *** [[doom-module::lang emacs-lisp][emacs-lisp]]: - : A parsel-tongue for the oldest serpent This module extends support for Emacs Lisp in Doom Emacs. - Macro expansion - Go-to-definitions or references functionality - Syntax highlighting for defined and quoted symbols - Replaces the built-in help with the more powerful [[doom-package:helpful]] - Adds function example uses to documentation *** [[doom-module::lang erlang][erlang]]: [[doom-module::lang erlang +lsp][+lsp]] : An elegant language for a more civilized age This module provides support [[https://www.erlang.org/][Erlang programming language]]. Support for the [[https://github.com/erlang/sourcer][sourcer]] language server is optional. Includes: - Code completion ([[doom-module:+lsp]], [[doom-module::completion company]], & [[doom-module::completion ivy]]) - Syntax checking ([[doom-module::checkers syntax]]) *** [[doom-module::lang ess][ess]]: [[doom-module::lang ess +stan][+stan]] : 73.6% of all statistics are made up This module adds support for various statistics languages, including R, S-Plus, SAS, Julia and Stata. *** [[doom-module::lang factor][factor]]: - : ... This module adds support to the [[https://github.com/factor/factor][factor]] programming language and its associated [[doom-package:fuel]] emacs plugin. *** [[doom-module::lang faust][faust]]: - : DSP, but you can keep your soul Add support to [[https://faust.grame.fr/][Faust language]] inside emacs. - Faust code syntax highlighting and indentation - Project-based (inter-linked Faust files) - Build/compile with output window - Graphic diagrams generation and visualization in the (default) browser - Browse generated C++ code inside Emacs - Inter-linked files/buffers : - From "component" to Faust file - From "include" to Faust library file - From error to file:line number - From function name to online documentation - Fully configurable (build type/target/architecture/toolkit, keyboard shortcuts, etc.) - Automatic keyword completion (if Auto-Complete is installed) - Automatic objets (functions, operators, etc.) template insertion with default sensible values (if [[doom-module::editor snippets]] is enabled) - Modeline indicator of the state of the code *** [[doom-module::lang fsharp][fsharp]]: [[doom-module::lang fsharp +lsp][+lsp]] : ML stands for Microsoft's Language This module adds [[https://fsharp.org/][F#]] support to Doom Emacs. *** [[doom-module::lang fstar][fstar]]: - : (Dependent) types and (monadic) effects and Z3 This module adds [[https://fstar-lang.org/][F*]] support, powered by [[https://github.com/FStarLang/fstar-mode.el][fstar-mode.el]]. - Syntax highlighting - Interactively process F* files one definition at a time - Query the running F* process to look up definitions, documentation, and theorems *** [[doom-module::lang gdscript][gdscript]]: [[doom-module::lang gdscript +lsp][+lsp]] : the language you waited for This module adds support for GDScript, the scripting language of the [[http://godotengine.org/][Godot]] game engine, to Doom Emacs, powered by [[https://github.com/GDQuest/emacs-gdscript-mode][gdscript-mode]]. *** [[doom-module::lang go][go]]: [[doom-module::lang go +lsp][+lsp]] : The hipster dialect This module adds [[https://golang.org][Go]] support, with optional (but recommended) LSP support via [[https://github.com/golang/tools/blob/master/gopls/README.md][gopls]]. - Code completion (~gocode~) - Documentation lookup (~godoc~) - Eldoc support (~go-eldoc~) - REPL (~gore~) - Syntax-checking (~flycheck~) - Auto-formatting on save (~gofmt~) (requires [[doom-module::editor format +onsave]]) - Code navigation & refactoring (~go-guru~) - [[../../editor/file-templates/templates/go-mode][File templates]] - [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]] - Generate testing code (~go-gen-test~) - Code checking (~flycheck-golangci-lint~) *** [[doom-module::lang haskell][haskell]]: [[doom-module::lang haskell +lsp][+lsp]] : A language that's lazier than I am This module adds Haskell support to Doom Emacs. *** [[doom-module::lang hy][hy]]: - : Lisp is better than ugly /(No description yet)/ *** [[doom-module::lang idris][idris]]: - : A language you can depend on This module adds rudimentary [[https://www.idris-lang.org/][Idris]] support to Doom Emacs. *** [[doom-module::lang java][java]]: [[doom-module::lang java +lsp][+lsp]] [[doom-module::lang java +meghanada][+meghanada]] : The poster child for carpal tunnel syndrome This module adds [[https://www.java.com][Java]] support to Doom Emacs, including ~android-mode~ and ~groovy-mode~. *** [[doom-module::lang javascript][javascript]]: [[doom-module::lang javascript +lsp][+lsp]] : all(hope(abandon(ye(who(enter(here)))))) This module adds [[https://www.javascript.com/][JavaScript]] and [[https://www.typescriptlang.org/][TypeScript]] support to Doom Emacs. - Code completion ([[doom-package:tide]]) - REPL support ([[doom-package:nodejs-repl]]) - Refactoring commands ([[doom-package:js2-refactor]]) - Syntax checking ([[doom-package:flycheck]]) - Browser code injection with [[doom-package:skewer-mode]] - Coffeescript & JSX support - Jump-to-definitions and references support ([[doom-package:xref]]) *** [[doom-module::lang json][json]]: [[doom-module::lang json +lsp][+lsp]] : At least it ain't XML This module adds [[https://www.json.org/json-en.html][JSON]] support to Doom Emacs. *** [[doom-module::lang julia][julia]]: [[doom-module::lang julia +lsp][+lsp]] : A better, faster MATLAB This module adds support for [[https://julialang.org/][the Julia language]] to Doom Emacs. - Syntax highlighting and latex symbols from [[doom-package:julia-mode]] - REPL integration from [[doom-package:julia-repl]] - Code completion and syntax checking, requires [[doom-module::tools lsp]] and [[doom-module:+lsp]] *** [[doom-module::lang kotlin][kotlin]]: [[doom-module::lang kotlin +lsp][+lsp]] : A Java(Script) that won't depress you This module adds [[https://kotlinlang.org/][Kotlin]] support to Doom Emacs. *** [[doom-module::lang latex][latex]]: [[doom-module::lang latex +cdlatex][+cdlatex]] [[doom-module::lang latex +fold][+fold]] [[doom-module::lang latex +latexmk][+latexmk]] [[doom-module::lang latex +lsp][+lsp]] : Writing papers in Emacs has never been so fun Provide a helping hand when working with LaTeX documents. - Sane defaults - Fontification of many popular commands - Pretty indentation of wrapped lines using the [[doom-package:adaptive-wrap]] package - Spell checking with [[doom-package:flycheck]] - Change PDF viewer to Okular or [[doom-package:latex-preview-pane]] - Bibtex editor - Autocompletion using [[doom-package:company-mode]] - Compile your =.tex= code only once using LatexMk *** [[doom-module::lang lean][lean]]: - : For folks with too much to prove This module adds support for the [[https://leanprover.github.io/about/][Lean programming language]] to Doom Emacs. *** [[doom-module::lang ledger][ledger]]: - : Be audit you can be This module adds support for [[https://www.ledger-cli.org/][ledger]] files. Ledger is a command line double-entry accounting system that works with simple text files holding transactions in the following format: #+begin_src ledger 2015/10/12 Exxon Expenses:Auto:Gas $10.00 Liabilities:MasterCard $-10.00 #+end_src This modules enables the following features: - Syntax and indentation support for ledger files - Add, edit, and delete transactions - Generate reports - Schedule transactions - Sort transactions - Display statistics about transactions - Display balance up to a point *** [[doom-module::lang lua][lua]]: [[doom-module::lang lua +fennel][+fennel]] [[doom-module::lang lua +lsp][+lsp]] [[doom-module::lang lua +moonscript][+moonscript]] : One-based indices? one-based indices This module adds Lua support to Doom Emacs. - REPL - Love2D specific functions - Moonscript support - Fennel support *** [[doom-module::lang markdown][markdown]]: [[doom-module::lang markdown +grip][+grip]] : Write docs for people to ignore This module provides Markdown support for Emacs. #+begin_quote Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). Thus, β€œMarkdown” is two things: (1) a plain text formatting syntax; and (2) a software tool, written in Perl, that converts the plain text formatting to HTML. See the Syntax page for details pertaining to Markdown's formatting syntax. You can try it out, right now, using the online Dingus. The overriding design goal for Markdown's formatting syntax is to make it as readable as possible. The idea is that a Markdown-formatted document should be publishable as-is, as plain text, without looking like it's been marked up with tags or formatting instructions. While Markdown's syntax has been influenced by several existing text-to-HTML filters, the single biggest source of inspiration for Markdown's syntax is the format of plain text email. -- John Gruber #+end_quote *** [[doom-module::lang nim][nim]]: - : Python + lisp at the speed of C This module adds [[https://nim-lang.org][Nim]] support to Doom Emacs. - Code completion ([[doom-package:nimsuggest]] + [[doom-package:company]]) - Syntax checking ([[doom-package:nimsuggest]] + [[doom-package:flycheck]]) - Org babel support ([[doom-package:ob-nim]]) *** [[doom-module::lang nix][nix]]: - : I hereby declare "nix geht mehr!" This module adds support for the Nix language to Doom Emacs, along with tools for managing [[https://nixos.org/][Nix(OS)]]. Includes: - Syntax highlighting - Completion through [[doom-package:company]] and/or [[doom-package:helm]] - Nix option lookup - Formatting (~nixfmt~) *** [[doom-module::lang ocaml][ocaml]]: [[doom-module::lang ocaml +lsp][+lsp]] : An objective camel This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by [[doom-package:tuareg-mode]]. - Code completion, documentation look-up, code navigation and refactoring ([[doom-package:merlin]]) - Type, documentation and function argument display on idle ([[doom-package:merlin-eldoc]]) - REPL ([[doom-package:utop]]) - Syntax-checking ([[doom-package:merlin]] with [[doom-package:flycheck-ocaml]]) - Auto-indentation ([[doom-package:ocp-indent]]) - Code formatting ([[doom-package:ocamlformat]]) - Dune file format ([[doom-package:dune]]) *** [[doom-module::lang org][org]]: [[doom-module::lang org +brain][+brain]] [[doom-module::lang org +dragndrop][+dragndrop]] [[doom-module::lang org +gnuplot][+gnuplot]] [[doom-module::lang org +hugo][+hugo]] [[doom-module::lang org +ipython][+ipython]] [[doom-module::lang org +journal][+journal]] [[doom-module::lang org +jupyter][+jupyter]] [[doom-module::lang org +noter][+noter]] [[doom-module::lang org +pandoc][+pandoc]] [[doom-module::lang org +pomodoro][+pomodoro]] [[doom-module::lang org +present][+present]] [[doom-module::lang org +pretty][+pretty]] [[doom-module::lang org +roam][+roam]] [[doom-module::lang org +roam2][+roam2]] : Organize your plain life in plain text This module adds org-mode support to Doom Emacs, along with a number of adjustments, extensions and reasonable defaults to make it more performant and intuitive out of the box: - A custom, centralized attachment system that stores files in one place, rather than in the same directory as the input file(s) (only applies to attachments from files in/under ~org-directory~). - Executable code blocks with support for a variety of languages and tools (depending on what :lang modules are enabled). - Supports an external org-capture workflow through the =bin/org-capture= shell script and ~+org-capture/open-frame~. - A configuration for using org-mode for slide-show presentations or exporting org files to reveal.js slideshows. - Drag-and-drop support for images (with inline preview) and media files (drops a file icon and a short link) (requires [[doom-module:+dragndrop]] flag). - Integration with pandoc, ipython, jupyter, reveal.js, beamer, and others (requires flags). - Export-to-clipboard functionality, for copying text into formatted html, markdown or rich text to the clipboard (see ~+org/export-to-clipboard~ and ~+org/export-to-clipboard-as-rich-text~). #+begin_quote Org is a system for writing plain text notes with syntax highlighting, code execution, task scheduling, agenda management, and many more. The whole idea is that you can write notes and mix them with references to things like articles, images, and example code combined with the output of that code after it is executed. https://www.mfoot.com/blog/2015/11/22/literate-emacs-configuration-with-org-mode/ #+end_quote *** [[doom-module::lang php][php]]: [[doom-module::lang php +hack][+hack]] [[doom-module::lang php +lsp][+lsp]] : Perl's insecure younger brother This module adds support for PHP 5.3+ (including PHP7) to Doom Emacs. - ctags-based code completion (~company-php~ and ~phpctags~) - eldoc support (~ac-php~ and ~php-extras~) - REPL (~php-boris~) - Code refactoring commands (~php-refactor-mode~) - Unit-test commands (~phpunit~) - Support for ~laravel~ and ~composer~ projects (with project-specific snippets) - [[../../editor/file-templates/templates/php-mode][File templates]] - [[https://github.com/hlissner/doom-snippets/tree/master/php-mode][Snippets]] #+begin_quote πŸ’‘ PHP was the first programming language I got paid to code in, back in the Cretaceous period (2003). My sincerest apologies go out to all the programmers who inherited my earliest PHP work. I know you're out there, writhing in your straitjackets. Save a programmer today. Stop a friend from choosing PHP as their first language. #+end_quote *** [[doom-module::lang plantuml][plantuml]]: - : Diagrams to confuse people more This module adds plantuml support to Emacs; allowing you to generate diagrams from plain text. *** [[doom-module::lang purescript][purescript]]: [[doom-module::lang purescript +lsp][+lsp]] : Javascript, but functional This module adds [[https://www.purescript.org/][Purescript]] support to Doom Emacs. *** [[doom-module::lang python][python]]: [[doom-module::lang python +conda][+conda]] [[doom-module::lang python +cython][+cython]] [[doom-module::lang python +lsp][+lsp]] [[doom-module::lang python +poetry][+poetry]] [[doom-module::lang python +pyenv][+pyenv]] [[doom-module::lang python +pyright][+pyright]] : Beautiful is better than ugly This module adds [[https://www.python.org/][Python]] support to Doom Emacs. - Syntax checking ([[doom-package:flycheck]]) - Snippets - Run tests ([[doom-package:nose]], [[doom-package:pytest]]) - Auto-format (with ~black~, requires [[doom-module::editor format]]) - LSP integration (=mspyls=, =pyls=, or =pyright=) *** [[doom-module::lang qt][qt]]: - : The cutest GUI framework ever This module provides language functionality for [[https://qt.io][Qt]] specific files. - Syntax highlighting for [[https:://en.wikipedia.org/wiki/QML][qml]] files - Syntax highlighting for =.pro= and =.pri= files used by [[https://doc.qt.io/qt-5/qmake-project-files.html][qmake]] *** [[doom-module::lang racket][racket]]: [[doom-module::lang racket +lsp][+lsp]] [[doom-module::lang racket +xp][+xp]] : The DSL for DSLs This module adds support for the [[https://www.racket-lang.org/][Racket programming language]] to Doom Emacs. *** [[doom-module::lang raku][raku]]: - : The artist formerly known as perl6 This module adds support for the [[https://www.raku.org/][Raku programming language]] to Doom Emacs. *** [[doom-module::lang rest][rest]]: - : Emacs as a REST client This module turns Emacs into a [[https://en.wikipedia.org/wiki/Representational_state_transfer][REST]] client. - Code-completion (~company-restclient~) - Code evaluation - Imenu support for ~restclient-mode~ - org-mode: babel support (~ob-restclient~) #+begin_quote πŸ’‘ ~restclient-mode~ is tremendously useful for automated or quick testing REST APIs. My workflow is to open an ~org-mode~ buffer, create a restclient source block and hack away. ~restclient-mode~ and ~company-restclient~ power this arcane wizardry. #+end_quote *** [[doom-module::lang rst][rst]]: - : ReST in peace This module adds [[https://docutils.sourceforge.io/rst.html][ReStructured Text]] support to Doom Emacs. *** [[doom-module::lang ruby][ruby]]: [[doom-module::lang ruby +chruby][+chruby]] [[doom-module::lang ruby +lsp][+lsp]] [[doom-module::lang ruby +rails][+rails]] [[doom-module::lang ruby +rbenv][+rbenv]] [[doom-module::lang ruby +rvm][+rvm]] : 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} This module add Ruby and optional Ruby on Rails support to Emacs. - Code completion ([[doom-package:robe]]) - Syntax checking ([[doom-package:flycheck]]) - Jump-to-definitions ([[doom-package:robe]]) - Bundler - Rubocop integration ([[doom-package:flycheck]]) *** [[doom-module::lang rust][rust]]: [[doom-module::lang rust +lsp][+lsp]] : Fe2O3.unwrap().unwrap().unwrap().unwrap() This module adds support for the Rust language and integration for its tools, e.g. ~cargo~. - Code completion ([[doom-package:racer]] or an LSP server) - Syntax checking ([[doom-package:flycheck]]) - LSP support (for rust-analyzer and rls) ([[doom-package:rustic]]) - Snippets *** [[doom-module::lang scala][scala]]: [[doom-module::lang scala +lsp][+lsp]] : Java, but good This module adds [[https://www.scala-lang.org][scala]] and [[https://www.scala-sbt.org/][sbt]] support to Doom Emacs. Through the power of [[https://scalameta.org/metals/docs/editors/overview.html][Metals]] (LSP) this module offers: - Goto Definition - Completions - Hover - Paremeter Hints - Find References - Run/Debug - Find Implementations - Rename Symbol - Code Actions - Document Symbols - Formatting - Folding - Organize Imports *** [[doom-module::lang scheme][scheme]]: [[doom-module::lang scheme +chez][+chez]] [[doom-module::lang scheme +chibi][+chibi]] [[doom-module::lang scheme +chicken][+chicken]] [[doom-module::lang scheme +gambit][+gambit]] [[doom-module::lang scheme +gauche][+gauche]] [[doom-module::lang scheme +guile][+guile]] [[doom-module::lang scheme +kawa][+kawa]] [[doom-module::lang scheme +mit][+mit]] [[doom-module::lang scheme +racket][+racket]] : A fully conniving family of lisps This module provides support for the Scheme family of Lisp languages, powered by [[https://www.nongnu.org/geiser/geiser_1.html#introduction][geiser]]. *** [[doom-module::lang sh][sh]]: [[doom-module::lang sh +fish][+fish]] [[doom-module::lang sh +lsp][+lsp]] [[doom-module::lang sh +powershell][+powershell]] : She sells {ba,z,fi}sh shells on the C xor This module adds support for shell scripting languages (including Powershell and Fish script) to Doom Emacs. - Code completion ([[doom-package:company-shell]]) - Syntax Checking ([[doom-package:flycheck]]) *** [[doom-module::lang sml][sml]]: - : ... THis module adds [[https://smlfamily.github.io/][SML (Standard ML) programming language]] support to Doom Emacs. *** [[doom-module::lang solidity][solidity]]: - : Do you need a blockchain? No. This module adds [[https://github.com/ethereum/solidity][Solidity]] support to Doom Emacs. - Syntax-checking ([[doom-package:flycheck]]) - Code completion ([[doom-package:company-solidity]]) - Gas estimation (~C-c C-g~) *** [[doom-module::lang swift][swift]]: [[doom-module::lang swift +lsp][+lsp]] : We asked for emoji variables? This module adds support for the [[https://developer.apple.com/swift/][Swift programming language]] to Doom Emacs. *** [[doom-module::lang terra][terra]]: - : Earth and Moon in alignment for performance. /(No description)/ *** [[doom-module::lang web][web]]: [[doom-module::lang web +lsp][+lsp]] : The tubes This module adds support for various web languages, including HTML5, CSS, SASS/SCSS, Pug/Jade/Slim, and HAML, as well as various web frameworks, like ReactJS, Wordpress, Jekyll, Phaser, AngularJS, Djano, and more. *** [[doom-module::lang yaml][yaml]]: [[doom-module::lang yaml +lsp][+lsp]] : JSON, but readable This module provides support for the [[https://yaml.org/][YAML file format]] to Doom Emacs. *** [[doom-module::lang zig][zig]]: [[doom-module::lang zig +lsp][+lsp]] : C, but simpler This module adds [[https://ziglang.org/][Zig]] support, with optional (but recommended) LSP support via [[https://github.com/zigtools/zls][zls]]. - Syntax highlighting - Syntax-checking ([[doom-package:flycheck]]) - Code completion and LSP integration (~zls~) ** [[doom-module::os][:os]] (2) :unfold: Modules in this category are designed to improve compatibility with certain operating systems or OS features (like the shell). *** [[doom-module::os macos][macos]]: - : Compatibility for our favorite walled garden This module provides extra functionality for macOS. *** [[doom-module::os tty][tty]]: [[doom-module::os tty +osc][+osc]] : Make TTY Emacs suck less This module configures Emacs for use in the terminal, by providing: - System clipboard integration (through an external clipboard program or OSC-52 escape codes in supported terminals). - Cursor-shape changing across evil states (requires a terminal that supports it). - Mouse support in the terminal. ** [[doom-module::term][:term]] (4) :unfold: What's an operating system without a terminal? The modules in this category bring varying degrees of terminal emulation into Emacs. If you can't decide which to choose, I recommend [[doom-package:vterm]] or [[doom-package:eshell]]. [[doom-module::term vterm]] offers that best terminal emulation available but requires a few extra steps to get going. [[doom-module::term eshell]] works everywhere that Emacs runs, even Windows, and provides a shell entirely implemented in Emacs Lisp. *** [[doom-module::term eshell][eshell]]: - : The elisp shell that works everywhere This module provides additional features for the built-in [[https://www.gnu.org/software/emacs/manual/html_mono/eshell.html][Emacs Shell]] The Emacs Shell or [[doom-package:eshell]] is a shell-like command interpreter implemented in Emacs Lisp. It is an alternative to traditional shells such as =bash=, =zsh=, =fish=, etc. that is built into Emacs and entirely cross-platform. *** [[doom-module::term shell][shell]]: - : A REPL for your shell Provides a REPL for your shell. #+begin_quote πŸ’‘ =shell= is more REPL than terminal emulator. You can edit your command line like you would any ordinary text in Emacs -- something you can't do in [[doom-package:term]] (without ~term-line-mode~, which can be unstable) or [[doom-package:vterm]]. Due to =shell='s simplicity, you're less likely to encounter edge cases (e.g. against your shell config), but it's also the least capable. TUI programs like =htop= or =vim= won't work in shell directly, but will be launched in a =term= buffer -- which handles them reasonably well. #+end_quote *** [[doom-module::term term][term]]: - : It's terminal /(No description)/ *** [[doom-module::term vterm][vterm]]: - : As good as terminal emulation gets in Emacs This module provides a terminal emulator powered by libvterm. It is still in alpha and requires a component be compiled (=vterm-module.so=). #+begin_quote πŸ’‘ [[doom-package:vterm]] is as good as terminal emulation gets in Emacs (at the time of writing) and the most performant, as it is implemented in C. However, it requires extra steps to set up: - Emacs must be built with dynamic modules support, - and =vterm-module.so= must be compiled, which depends on =libvterm=, =cmake=, and =libtool-bin=. [[doom-package:vterm]] will try to automatically build =vterm-module.so= when you first open it, but this will fail on Windows, NixOS and Guix out of the box. Install instructions for nix/guix can be found in the [[doom-module::term vterm]] module's documentation. There is no way to install vterm on Windows that I'm aware of (but perhaps with WSL?). #+end_quote ** [[doom-module::tools][:tools]] (21) :unfold: Modules that integrate external tools into Emacs. *** [[doom-module::tools ansible][ansible]]: - : Allow silly people to focus on silly things /(No description)/ *** biblio: - /(No description)/ *** [[doom-module::tools debugger][debugger]]: [[doom-module::tools debugger +lsp][+lsp]] : Step through code to help you add bugs Introduces a code debugger to Emacs, powered by [[doom-package:realgud]] or [[doom-package:dap-mode]] (LSP). This document will help you to configure [[doom-package:dap-mode]] [[https://emacs-lsp.github.io/dap-mode/page/configuration/#native-debug-gdblldb][Native Debug(GDB/LLDB)]] as there is still not *enough* documentation for it. *** [[doom-module::tools direnv][direnv]]: - : Save (or destroy) the environment at your leisure This module integrates direnv into Emacs. #+begin_quote πŸ“Œ direnv is an environment switcher for the shell. It knows how to hook into bash, zsh, tcsh, fish shell and elvish to load or unload environment variables depending on the current directory. This allows project-specific environment variables without cluttering the ~/.profile file. Before each prompt, direnv checks for the existence of a ".envrc" file in the current and parent directories. If the file exists (and is authorized), it is loaded into a bash sub-shell and all exported variables are then captured by direnv and then made available to the current shell. #+end_quote *** [[doom-module::tools docker][docker]]: [[doom-module::tools docker +lsp][+lsp]] : Yo dawg, I heard you like OSes, so I… This module allows you to manipulate Docker images, containers, and more from Emacs. Provides a major ~dockerfile-mode~ to edit =Dockerfiles=. Additional convenience functions allow images to be built easily. [[doom-package:docker-tramp]] offers [[https://www.gnu.org/software/tramp/][TRAMP]] support for Docker containers. *** [[doom-module::tools editorconfig][editorconfig]]: - : Let someone else argue tabs and spaces This module integrates [[https://editorconfig.org/][EditorConfig]] into Emacs, allowing users to dictate code style on a per-project basis with an =.editorconfig= file ([[https://editorconfig-specification.readthedocs.io/][formal specification]]). *** [[doom-module::tools ein][ein]]: - : Tame Jupyter notebooks with emacs Adds [[https://jupyter.org/][Jupyter]] notebook integration into Emacs. *** [[doom-module::tools eval][eval]]: [[doom-module::tools eval +overlay][+overlay]] : Run code, run (also, repls) This modules adds inline code evaluation support to Emacs and a universal interface for opening and interacting with REPLs. *** [[doom-module::tools gist][gist]]: - : A pastebin for Githubsters Adds the ability to manage, pull from, or push to your [[https://gist.github.com][Gists]] from within Emacs. *** [[doom-module::tools lookup][lookup]]: [[doom-module::tools lookup +dictionary][+dictionary]] [[doom-module::tools lookup +docsets][+docsets]] [[doom-module::tools lookup +offline][+offline]] : Navigate your labyrinthine code and docs This module adds code navigation and documentation lookup tools to help you quickly look up definitions, references, documentation, dictionary definitions or synonyms. - Jump-to-definition and find-references implementations that just work. - Powerful xref integration for languages that support it. - Search online providers like [[https://devdocs.io][devdocs.io]], [[https://stackoverflow.com][stackoverflow]], [[https://google.com][google]], [[https://duckduckgo.com][duckduckgo]], or [[https://youtube.com][youtube]] (duckduckgo and google have live suggestions). - Integration with [[https://github.com/Kapeli/feeds][Dash.app docsets]]. - Support for online (and offline) dictionaries and thesauruses. *** [[doom-module::tools lsp][lsp]]: [[doom-module::tools lsp +eglot][+eglot]] [[doom-module::tools lsp +peek][+peek]] : M-x vscode This module integrates [[https://langserver.org/][language servers]] into Doom Emacs. They provide features you'd expect from IDEs, like code completion, realtime linting, language-aware [[doom-package:imenu]]/[[doom-package:xref]] integration, jump-to-definition/references support, and more. As of this writing, this is the state of LSP support in Doom Emacs: | Module | Major modes | Default language server | |----------------------------------+---------------------------------------------------------+---------------------------------------------------------------| | [[doom-module::lang cc]] | c-mode, c++-mode, objc-mode | ccls, clangd | | [[doom-module::lang clojure]] | clojure-mode | clojure-lsp | | [[doom-module::lang csharp]] | csharp-mode | omnisharp | | [[doom-module::lang elixir]] | elixir-mode | elixir-ls | | [[doom-module::lang fsharp]] | fsharp-mode | Mono, .NET core | | [[doom-module::lang go]] | go-mode | go-langserver | | [[doom-module::lang haskell]] | haskell-mode | haskell-language-server | | [[doom-module::lang java]] | java-mode | lsp-java | | [[doom-module::lang javascript]] | js2-mode, rjsx-mode, typescript-mode | ts-ls, deno-ls | | [[doom-module::lang julia]] | julia-mode | LanguageServer.jl | | [[doom-module::lang ocaml]] | tuareg-mode | ocaml-language-server | | [[doom-module::lang php]] | php-mode | php-language-server | | [[doom-module::lang purescript]] | purescript-mode | purescript-language-server | | [[doom-module::lang python]] | python-mode | lsp-python-ms | | [[doom-module::lang ruby]] | ruby-mode | solargraph | | [[doom-module::lang rust]] | rust-mode | rls | | [[doom-module::lang scala]] | scala-mode | metals | | [[doom-module::lang sh]] | sh-mode | bash-language-server | | [[doom-module::lang swift]] | swift-mode | sourcekit | | [[doom-module::lang web]] | web-mode, css-mode, scss-mode, sass-mode, less-css-mode | vscode-css-languageserver-bin, vscode-html-languageserver-bin | | [[doom-module::lang zig]] | zig-mode | zls | *** [[doom-module::tools magit][magit]]: [[doom-module::tools magit +forge][+forge]] : Wield git like a wizard This module provides Magit, an interface to the Git version control system. *** [[doom-module::tools make][make]]: - : The discount build system This module adds commands for executing Makefile targets. *** [[doom-module::tools pass][pass]]: [[doom-module::tools pass +auth][+auth]] : A password manager for nerds This module provides an Emacs interface to [[https://www.passwordstore.org/][Pass]]. *** [[doom-module::tools pdf][pdf]]: - : Emacs, your next PDF reader This module improves support for reading and interacting with PDF files in Emacs. It uses [[doom-package:pdf-tools]], which is a replacement for the built-in ~doc-view-mode~ for PDF files. The key difference being pages are not pre-rendered, but instead rendered on-demand and stored in memory; a much faster approach, especially for larger PDFs. Displaying PDF files is just one function of [[doom-package:pdf-tools]]. See [[https://github.com/politza/pdf-tools][its project website]] for details and videos. *** [[doom-module::tools prodigy][prodigy]]: - : No sweatshop is complete without child processes This module provides an interface for managing external services from within Emacs. *** [[doom-module::tools rgb][rgb]]: - : Creating color strings Highlights color hex values and names with the color itself, and provides tools to easily modify color values or formats. *** [[doom-module::tools taskrunner][taskrunner]]: - : Taskrunner for all your projects This module integrates [[doom-package:taskrunner]] into Doom Emacs, which scraps runnable tasks from build systems like make, gradle, npm and the like. *** [[doom-module::tools terraform][terraform]]: - : Infrastructure as code This module adds support for working with [[https://www.terraform.io][Terraform]] files within Emacs. This includes syntax highlighting, intelligent code completion, and the ability to run Terraform commands directly from Emacs. *** [[doom-module::tools tmux][tmux]]: - : From one multiplexer to another This module provides an API for talking to Tmux sessions. *** [[doom-module::tools upload][upload]]: - : Map local directories to remotes via ssh/ftp Uses ~ssh-deploy~ to map a local folder to a remote one. From the [[https://github.com/cjohansson/emacs-ssh-deploy/blob/master/README.md][ssh-deploy README]]: #+begin_quote The ssh-deploy plug-in for Emacs makes it possible to effortlessly deploy local files and directories to remote hosts via Tramp (including but not limited to SSH, SFTP, FTP). It tries to provide functions that can be easily used by custom scripts. The idea for this plug-in was to mimic the behavior of PhpStorm deployment functionality. #+end_quote ** [[doom-module::ui][:ui]] (23) :unfold: For modules concerned with changing Emacs' appearance or providing interfaces for its features, like sidebars, tabs, or fonts. *** [[doom-module::ui deft][deft]]: - : Notational velocity for Emacs [[https://jblevins.org/projects/deft/][Deft]] is a major mode for creating, browsing, and filtering notes written in plain text formats, such as org-mode, markdown, and LaTeX. It enables you to quickly jot down thoughts and easily retrieve them later. *** [[doom-module::ui doom][doom]]: - : Make Doom fabulous again This module gives Doom its signature look: powered by the [[doom-package:doom-themes][doom-one]] theme (loosely inspired by [[https://github.com/atom/one-dark-syntax][Atom's One Dark theme]]) and [[doom-package:solaire-mode]]. Includes: - A custom folded-region indicator for [[doom-package:hideshow]]. - "Thin bar" fringe bitmaps for [[doom-package:git-gutter-fringe]]. - File-visiting buffers are slightly brighter (thanks to [[doom-package:solaire-mode]]). *** [[doom-module::ui doom-dashboard][doom-dashboard]]: - : Welcome to your doom This module adds a minimalistic, Atom-inspired dashboard to Emacs. Besides eye candy, the dashboard serves two other purposes: 1. To improve Doom's startup times (the dashboard is lighter than the scratch buffer in many cases). 2. And to preserve the "last open directory" you were in. Occasionally, I kill the last buffer in my project and I end up who-knows-where (in the working directory of another buffer/project). It can take some work to find my way back to where I was. Not with the Dashboard. Since the dashboard cannot be killed, and it remembers the working directory of the last open buffer, ~M-x find-file~ will work from the directory I expect. *** [[doom-module::ui doom-quit][doom-quit]]: - : One does not simply quit Emacs A silly module that throws cute confirmation prompts at you when you exit Emacs, like DOOM (the game) did. Some quotes are from the classic games, others are random, nerdy references that no decent human being has any business recognizing. *** [[doom-module::ui emoji][emoji]]: [[doom-module::ui emoji +ascii][+ascii]] [[doom-module::ui emoji +github][+github]] [[doom-module::ui emoji +unicode][+unicode]] : πŸ’© This module gives Emacs the ability to display and insert emojis (ASCII, Github style, or unicode styles), as well as convert certain text patterns (e.g. =:smile:=) into emojis. *** [[doom-module::ui hl-todo][hl-todo]]: - : TODO FIXME NOTE DEPRECATED HACK REVIEW This module adds syntax highlighting for various tags in code comments, such as =TODO=, =FIXME=, and =NOTE=, among others. *** [[doom-module::ui hydra][hydra]]: - : Discount modality for mythological beast hunters This module adds hydra to Doom Emacs, as well as a few custom built hydras to start with: - A hydra to control windows ~+hydra/window-nav/body~. - A hydra to control text zoom level ~+hydra/text-zoom/body~. *** [[doom-module::ui indent-guides][indent-guides]]: - : Line up them indent columns /(No description)/ *** [[doom-module::ui ligatures][ligatures]]: [[doom-module::ui ligatures +extra][+extra]] [[doom-module::ui ligatures +fira][+fira]] [[doom-module::ui ligatures +hasklig][+hasklig]] [[doom-module::ui ligatures +iosevka][+iosevka]] [[doom-module::ui ligatures +pragmata-pro][+pragmata-pro]] : Distract folks from your code This module enables ligatures and arbitrary symbol substitutions with ~mac-auto-operator-composition-mode~ (on supported macOS systems) or composition tables (harfbuzz on Emacs 28), falling back on ~prettify-symbols-mode~ otherwise. *** [[doom-module::ui minimap][minimap]]: - : A map for lost programmers This module displays a minimap of the buffer in a sidebar, similar to the feature found in many other editors. *** [[doom-module::ui modeline][modeline]]: [[doom-module::ui modeline +light][+light]] : Snazzy, Atom-inspired modeline, plus API This module provides an Atom-inspired, minimalistic modeline for Doom Emacs, powered by the [[doom-package:doom-modeline]] package (where you can find screenshots). *** [[doom-module::ui nav-flash][nav-flash]]: - : Blink after big motions This module flashes the line around the cursor after any significant motion, to make it easy to follow after big operations. #+begin_quote πŸ’‘ Tremendously helpful on large, 1600p+ or 4K displays. #+end_quote *** [[doom-module::ui neotree][neotree]]: - : NERDTree for evil nerds This module brings a side panel for browsing project files, inspired by vim's NERDTree. #+begin_quote πŸ’‘ Sure, there's [[doom-package:dired]] and [[doom-package:projectile]], but sometimes I'd like a bird's eye view of a project. #+end_quote *** [[doom-module::ui ophints][ophints]]: - : An indicator for β€œwhat did I just do?” This module provides op-hints (operation hinting), i.e. visual feedback for certain operations. It highlights regions of text that the last operation (like yank) acted on. Uses [[doom-package:evil-goggles]] for evil users and [[doom-package:volatile-highlights]] otherwise. *** [[doom-module::ui popup][popup]]: [[doom-module::ui popup +all][+all]] [[doom-module::ui popup +defaults][+defaults]] : Tame sudden yet inevitable temporary windows This module provides a customizable popup window management system. Not all windows are created equally. Some are less important. Some I want gone once they have served their purpose, like code output or a help buffer. Others I want to stick around, like a scratch buffer or org-capture popup. More than that, popups ought to be the second class citizens of my editor; spawned off to the side, discarded with the push of a button (e.g. [[kbd:][ESC]] or [[kbd:][C-g]]), and easily restored if I want to see them again. Of course, this system should clean up after itself and kill off buffers I mark as transient. *** [[doom-module::ui tabs][tabs]]: - : Keep tabs on your buffers, literally This module adds an Atom-esque tab bar to the Emacs UI. *** [[doom-module::ui treemacs][treemacs]]: [[doom-module::ui treemacs +lsp][+lsp]] : A sidebar for all the things [[doom-package:treemacs][Treemacs]] is a file and project explorer similar to NeoTree or vim's NerdTree, but largely inspired by the Project Explorer in Eclipse. It shows the file system outlines of your projects in a simple tree layout allowing quick navigation and exploration, while also possessing basic file management utilities. It includes: - Integration with Git (if [[doom-module::tools magit]] is enabled) - Integration with Evil (if [[doom-module::editor evil +everywhere]] is enabled) - Workspace awareness (if [[doom-module::ui workspaces]] is enabled) *** [[doom-module::ui unicode][unicode]]: - : Extended unicode support for various languages This module extends Doom's ability to display non-English unicode. It is primarily useful for non-English Emacs users, for whom Doom's built-in unicode support in insufficient. This module relies on the [[https://github.com/rolandwalker/unicode-fonts][unicode-fonts]] package. It tries to setup the default emacs fontset to cover as many unicode glyphs as possible by scanning all available glyphs from all available fonts. When this module is enabled: - Emacs will prefer to use the ~doom-symbol-font~ font to display non-latin glyphs if it provides coverage for them. - The first time you run Emacs a unicode cache will be generated -- this will take a while! - The cache will be regenerated every time Emacs is made aware of new fonts or you change the font configuration e.g. by modifying ~doom-symbol-font~. - The cache will be stored and should not be regenerated unless font-related configuration or the versions of relevant packages changes. *** [[doom-module::ui vc-gutter][vc-gutter]]: - : Get your diff out of the gutter This module displays a diff of the current file (against HEAD) in the fringe. Supports Git, Svn, Hg, and Bzr. *** [[doom-module::ui vi-tilde-fringe][vi-tilde-fringe]]: - : Fringe tildes beyond EOB Displays a tilde(~) in the left fringe to indicate an empty line, similar to Vi. *** [[doom-module::ui window-select][window-select]]: [[doom-module::ui window-select +numbers][+numbers]] [[doom-module::ui window-select +switch-window][+switch-window]] : Visually switch windows This module provides several methods for selecting windows without the use of the mouse or spatial navigation (e.g. [[kbd:][C-w {h,j,k,l}]]). The command ~other-window~ is remapped to either [[doom-package:switch-window]] or [[doom-package:ace-window]], depending on which backend you've enabled. It is bound to [[kbd:][C-x o]] (and [[kbd:][C-w C-w]] for evil users). It also provides numbered windows and selection with the [[doom-package:winum]] package, if desired. Evil users can jump to window N in [[kbd:][C-w ]] (where N is a number between 0 and 9). Non evil users have [[kbd:][C-x w ]] instead. *** [[doom-module::ui workspaces][workspaces]]: - : Tab emulation, persistence, & separate workspaces This module adds support for workspaces, powered by [[doom-package:persp-mode]], as well as a API for manipulating them. #+begin_quote πŸ’‘ There are many ways to use workspaces. I spawn a workspace per task. Say I'm working in the main workspace, when I realize there is a bug in another part of my project. I open a new workspace and deal with it in there. In the meantime, I need to check my email, so mu4e gets its own workspace. Once I've completed the task, I close the workspace and return to main. #+end_quote *** [[doom-module::ui zen][zen]]: - : Distraction-free mode for the eternally distracted This module provides two minor modes that make Emacs into a more comfortable writing or coding environment. Folks familiar with "distraction-free" or "zen" modes from other editors -- or [[doom-package:olivetti]], [[doom-package:sublimity]], and [[doom-package:tabula-rasa]] (Emacs plugins) -- will feel right at home. These modes are: - ~mixed-pitch-mode~ :: Which renders (most) text in a variable pitch font (see ~doom-variable-pitch-font~). Unlike ~variable-pitch-mode~, this will not affect segments of text that are intended to remain in a fixed pitch font, such as code blocks or ASCII tables. - ~writeroom-mode~ :: Our all-in-one "zen" mode that will: 1. Center the current buffer. 2. Remove superfluous UI elements (like the modeline). 3. Activate ~mixed-pitch-mode~. 4. Scale up the buffer's text slightly (see ~+zen-text-scale~). 5. And make the window's borders slightly thicker (see ~+zen-window-divider-size~).