merge: rewrite-docs

I've omitted docs/*.org from this merge, as there is still work left to
do there, but I am pushing the module docs early so folks can benefit
from the new docs sooner.
This commit is contained in:
Henrik Lissner 2022-08-03 03:23:34 +02:00
commit 1f8bf7accb
No known key found for this signature in database
GPG key ID: B60957CA074D39A3
179 changed files with 13125 additions and 8630 deletions

View file

@ -1,3 +1,2 @@
((nil (git-commit-major-mode . git-commit-elisp-text-mode) ((nil (git-commit-major-mode . git-commit-elisp-text-mode)
(fill-column . 80)) (fill-column . 80)))
(org-mode (buffer-read-only . t)))

File diff suppressed because it is too large Load diff

View file

@ -1,226 +0,0 @@
#+TITLE: Module Index
#+STARTUP: nofold
Functionality in Doom is divided into collections of code called modules (à la
Spacemacs' layers). A module is a bundle of packages, configuration and
commands, organized into a unit that can be enabled or disabled by adding or
removing them from your ~doom!~ block in =$DOOMDIR/init.el=.
* Table of Contents :TOC:
- [[#app][:app]]
- [[#checkers][:checkers]]
- [[#completion][:completion]]
- [[#config][:config]]
- [[#editor][:editor]]
- [[#emacs][:emacs]]
- [[#email][:email]]
- [[#input][:input]]
- [[#lang][:lang]]
- [[#os][:os]]
- [[#term][:term]]
- [[#tools][:tools]]
- [[#ui][:ui]]
* :app
Application modules are complex and opinionated modules that transform Emacs
toward a specific purpose. They may have additional dependencies and *should be
loaded last*, before =:config= modules.
+ [[file:../modules/app/calendar/README.org][calendar]] - TODO
+ [[file:../modules/app/emms/README.org][emms]] - TODO
+ [[file:../modules/app/everywhere/README.org][everywhere]] - TODO
+ [[file:../modules/app/irc/README.org][irc]] - how neckbeards socialize
+ [[file:../modules/app/rss/README.org][rss]] =+org= - an RSS client in Emacs
+ [[file:../modules/app/twitter/README.org][twitter]] - A twitter client for Emacs
* :checkers
+ syntax =+childframe= - Live error/warning highlights
+ [[file:../modules/checkers/spell/README.org][spell]] =+aspell +flyspell +enchant +everywhere +hunspell= - Spell checking
+ [[file:../modules/checkers/grammar/README.org][grammar]] - TODO
* :completion
Modules that provide new interfaces or frameworks for completion, including code
completion.
+ [[file:../modules/completion/company/README.org][company]] =+childframe +tng= - The ultimate code completion backend
+ helm =+fuzzy +childframe= - *Another* search engine for love and life
+ ido - The /other/ *other* search engine for love and life
+ [[file:../modules/completion/ivy/README.org][ivy]] =+fuzzy +prescient +childframe +icons= - /The/ search engine for love and life
+ [[file:../modules/completion/vertico/README.org][vertico]] =+icons= - The search engine of the future
* :config
Modules that configure Emacs one way or another, or focus on making it easier
for you to customize it yourself. It is best to load these last.
+ [[file:../modules/config/literate/README.org][literate]] - For users with literate configs. This will tangle+compile a
config.org in your ~doom-private-dir~ when it changes.
+ [[file:../modules/config/default/README.org][default]] =+bindings +smartparens= - The default module sets reasonable defaults
for Emacs. It also provides a Spacemacs-inspired keybinding scheme and a
smartparens config. Use it as a reference for your own modules.
* :editor
Modules that affect and augment your ability to manipulate or insert text.
+ [[file:../modules/editor/evil/README.org][evil]] =+everywhere= - transforms Emacs into Vim
+ [[file:../modules/editor/file-templates/README.org][file-templates]] - Auto-inserted templates in blank new files
+ [[file:../modules/editor/fold/README.org][fold]] - universal code folding
+ format =+onsave= - TODO
+ god - TODO
+ [[file:../modules/editor/lispy/README.org][lispy]] - TODO
+ multiple-cursors - TODO
+ [[file:../modules/editor/objed/README.org][objed]] =+manual= - TODO
+ [[file:../modules/editor/parinfer/README.org][parinfer]] - TODO
+ rotate-text - TODO
+ [[file:../modules/editor/snippets/README.org][snippets]] - Snippet expansion for lazy typists
+ [[file:../modules/editor/word-wrap/README.org][word-wrap]] - soft wrapping with language-aware indent
* :emacs
Modules that reconfigure or augment packages or features built into Emacs.
+ [[file:../modules/emacs/dired/README.org][dired]] =+ranger +icons= - TODO
+ electric - TODO
+ [[file:../modules/emacs/ibuffer/README.org][ibuffer]] =+icons= - TODO
+ [[file:../modules/emacs/undo/README.org][undo]] =+tree= - A smarter, more intuitive & persistent undo history
+ [[file:../modules/emacs/vc/README.org][vc]] - TODO
* :email
+ [[file:../modules/email/mu4e/README.org][mu4e]] =+org +gmail= - TODO
+ [[file:../modules/email/notmuch/README.org][notmuch]] - TODO
+ wanderlust =+gmail= - TODO
* :input
+ [[file:../modules/input/bidi/README.org][bidi]] - (tfel ot) thgir etirw uoy gnipleh
+ [[file:../modules/input/chinese/README.org][chinese]] - TODO
+ [[file:../modules/input/japanese/README.org][japanese]] - TODO
+ [[file:../modules/input/layout/README.org][layout]] =+azerty +bepo= - TODO
* :lang
Modules that bring support for a language or group of languages to Emacs.
+ [[file:../modules/lang/agda/README.org][agda]] =+local= - TODO
+ [[file:../modules/lang/beancount/README.org][beancount]] =+lsp= - TODO
+ [[file:../modules/lang/cc/README.org][cc]] =+lsp= - TODO
+ [[file:../modules/lang/clojure/README.org][clojure]] =+lsp= - TODO
+ common-lisp - TODO
+ [[file:../modules/lang/coq/README.org][coq]] - TODO
+ [[file:../modules/lang/crystal/README.org][crystal]] - TODO
+ [[file:../modules/lang/csharp/README.org][csharp]] =+lsp +unity= - TODO
+ [[file:../modules/lang/dart/README.org][dart]] =+lsp +flutter=
+ data - TODO
+ [[file:../modules/lang/elixir/README.org][elixir]] =+lsp= - TODO
+ elm =+lsp= - TODO
+ [[file:../modules/lang/emacs-lisp/README.org][emacs-lisp]] - TODO
+ [[file:../modules/lang/erlang/README.org][erlang]] =+lsp= - TODO
+ [[file:../modules/lang/ess/README.org][ess]] =+lsp= - TODO
+ [[file:../modules/lang/factor/README.org][factor]] - TODO
+ [[file:../modules/lang/faust/README.org][faust]] - TODO
+ [[file:../modules/lang/fsharp/README.org][fsharp]] =+lsp= - TODO
+ [[file:../modules/lang/fstar/README.org][fstar]] - F* support
+ [[file:../modules/lang/gdscript/README.org][gdscript]] =+lsp= - TODO
+ [[file:../modules/lang/go/README.org][go]] =+lsp= - TODO
+ [[file:../modules/lang/haskell/README.org][haskell]] =+lsp= - TODO
+ hy - TODO
+ [[file:../modules/lang/idris/README.org][idris]] - TODO
+ java =+meghanada +eclim +lsp= - TODO
+ [[file:../modules/lang/javascript/README.org][javascript]] =+lsp= - JavaScript, TypeScript, and CoffeeScript support
+ [[file:../modules/lang/json/README.org][json]] =+lsp= - TODO
+ [[file:../modules/lang/julia/README.org][julia]] =+lsp= - TODO
+ [[file:../modules/lang/kotlin/README.org][kotlin]] =+lsp= - TODO
+ [[file:../modules/lang/latex/README.org][latex]] =+latexmk +cdlatex +fold +lsp= - TODO
+ lean - TODO
+ [[file:../modules/lang/ledger/README.org][ledger]] - TODO
+ [[file:../modules/lang/lua/README.org][lua]] =+fennel +moonscript= - TODO
+ [[file:../modules/lang/markdown/README.org][markdown]] =+grip= - TODO
+ [[file:../modules/lang/nim/README.org][nim]] - TODO
+ [[file:../modules/lang/nix/README.org][nix]] - TODO
+ [[file:../modules/lang/ocaml/README.org][ocaml]] =+lsp= - TODO
+ [[file:../modules/lang/org/README.org][org]] =+brain +dragndrop +gnuplot +hugo +ipython +journal +jupyter +noter +pandoc +pomodoro +present +pretty +roam= - TODO
+ [[file:../modules/lang/php/README.org][php]] =+hack +lsp= - TODO
+ plantuml - TODO
+ purescript =+lsp= - TODO
+ [[file:../modules/lang/python/README.org][python]] =+cython +lsp +pyright +pyenv +conda +poetry= - TODO
+ qt - TODO
+ [[file:../modules/lang/racket/README.org][racket]] =+lsp +xp= - TODO
+ [[file:../modules/lang/raku/README.org][raku]] - TODO
+ [[file:../modules/lang/rest/README.org][rest]] - TODO
+ rst - TODO
+ [[file:../modules/lang/ruby/README.org][ruby]] =+lsp +rvm +rbenv +rails +chruby=
+ [[file:../modules/lang/rust/README.org][rust]] =+lsp= - TODO
+ [[file:../modules/lang/scala/README.org][scala]] =+lsp= - TODO
+ [[file:../modules/lang/scheme/README.org][scheme]] =+chez +chibi +chicken +gambit +gauche +guile +kawa +mit +racket= - TODO
+ [[file:../modules/lang/sh/README.org][sh]] =+fish +lsp +powershell= - TODO
+ [[file:../modules/lang/sml/README.org][sml]] - TODO
+ [[file:../modules/lang/solidity/README.org][solidity]] - TODO
+ swift =+lsp= - TODO
+ terra - TODO
+ web =+lsp= - HTML and CSS (SCSS/SASS/LESS/Stylus) support.
+ [[file:../modules/lang/yaml/README.org][yaml]] =+lsp= - TODO
+ [[file:../modules/lang/zig/README.org][zig]] =+lsp= - Zig support.
* :os
Modules to improve integration into your OS, system, or devices.
+ [[file:../modules/os/macos/README.org][macos]] - Improve Emacs' compatibility with macOS
+ [[file:../modules/os/tty/README.org][tty]] =+osc= - Improves the terminal Emacs experience.
* :term
Modules that offer terminal emulation.
+ [[file:../modules/term/eshell/README.org][eshell]] - TODO
+ shell - TODO
+ term - TODO
+ [[file:../modules/term/vterm/README.org][vterm]] - TODO
* :tools
Small modules that give Emacs access to external tools & services.
+ ansible - TODO
+ debugger =+lsp= - A (nigh-)universal debugger in Emacs
+ [[file:../modules/tools/direnv/README.org][direnv]] - TODO
+ [[file:../modules/tools/docker/README.org][docker]] =+lsp= - TODO
+ [[file:../modules/tools/editorconfig/README.org][editorconfig]] - TODO
+ [[file:../modules/tools/ein/README.org][ein]] - TODO
+ [[file:../modules/tools/eval/README.org][eval]] =+overlay= - REPL & code evaluation support for a variety of languages
+ gist - TODO
+ [[file:../modules/tools/lookup/README.org][lookup]] =+dictionary +docsets +offline= - Universal jump-to & documentation lookup
backend
+ [[file:../modules/tools/lsp/README.org][lsp]] =+peek +eglot= - Installation and configuration of language server protocol client (lsp-mode or eglot)
+ [[file:../modules/tools/magit/README.org][magit]] =+forge= - TODO
+ make - TODO
+ [[file:../modules/tools/pass/README.org][pass]] =+auth= - TODO
+ [[file:../modules/tools/pdf/README.org][pdf]] - TODO
+ prodigy - TODO
+ [[file:../modules/tools/rgb/README.org][rgb]] - TODO
+ [[file:../modules/tools/taskrunner/README.org][taskrunner]] - TODO
+ [[file:../modules/tools/terraform/README.org][terraform]] - TODO
+ tmux - TODO
+ [[file:../modules/tools/tree-sitter/README.org][tree-sitter]] - syntax and parsing, sitting in a tree...
+ [[file:../modules/tools/upload/README.org][upload]] - TODO
* :ui
Aesthetic modules that affect the Emacs interface or user experience.
+ [[file:../modules/ui/deft/README.org][deft]] - TODO
+ [[file:../modules/ui/doom/README.org][doom]] - TODO
+ [[file:../modules/ui/doom-dashboard/README.org][doom-dashboard]] - TODO
+ [[file:../modules/ui/doom-quit/README.org][doom-quit]] - TODO
+ [[file:../modules/ui/emoji/README.org][emoji]] =+ascii +github +unicode= - Adds emoji support to Emacs
+ [[file:../modules/ui/hl-todo/README.org][hl-todo]] - TODO
+ [[file:../modules/ui/hydra/README.org][hydra]] - TODO
+ indent-guides - TODO
+ [[file:../modules/ui/ligatures/README.org][ligatures]] =+extra +fira +hasklig +iosevka +pragmata-pro= - Ligature support for Emacs
+ [[file:../modules/ui/minimap/README.org][minimap]] - TODO
+ [[file:../modules/ui/modeline/README.org][modeline]] =+light= - TODO
+ [[file:../modules/ui/nav-flash/README.org][nav-flash]] - TODO
+ [[file:../modules/ui/neotree/README.org][neotree]] - TODO
+ [[file:../modules/ui/ophints/README.org][ophints]] - TODO
+ [[file:../modules/ui/popup/README.org][popup]] =+all +defaults= - Makes temporary/disposable windows less intrusive
+ [[file:../modules/ui/tabs/README.org][tabs]] - TODO
+ [[file:../modules/ui/treemacs/README.org][treemacs]] - =+lsp= - A tree layout file explorer for Emacs
+ [[file:../modules/ui/unicode/README.org][unicode]] - TODO
+ vc-gutter - TODO
+ vi-tilde-fringe - TODO
+ [[file:../modules/ui/window-select/README.org][window-select]] =+switch-window +numbers= - TODO
+ [[file:../modules/ui/workspaces/README.org][workspaces]] - Isolated workspaces
+ [[file:../modules/ui/zen/README.org][zen]] - Distraction-free coding (or writing)

View file

@ -1,7 +1,7 @@
;;; doom-editor.el -*- lexical-binding: t; -*- ;;; doom-editor.el -*- lexical-binding: t; -*-
(defvar doom-detect-indentation-excluded-modes (defvar doom-detect-indentation-excluded-modes
'(fundamental-mode pascal-mode so-long-mode) '(fundamental-mode pascal-mode so-long-mode doom-docs-org-mode)
"A list of major modes in which indentation should be automatically "A list of major modes in which indentation should be automatically
detected.") detected.")

624
lisp/lib/docs.el Normal file
View file

@ -0,0 +1,624 @@
;;; core/lib/docs.el -- a reader mode for Doom's Org docs -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(defvar doom-docs-header-alist
`(("/docs/index\\.org$"
(left ("↖ FAQ" . "doom-faq:")))
(("/docs/[^/]+\\.org$" "/modules/README\\.org$")
(left ("← Back to index" . "doom-index:")))
("/modules/[^/]+/README\\.org$"
(left ("← Back to module index" . "doom-module-index:")))
("/modules/[^/]+/[^/]+/README\\.org$"
(left ("← Back to module index" . "doom-module-index:"))
(right ("↖ History"
. ,(lambda (file)
(cl-destructuring-bind (category . module) (doom-module-from-path file)
(format "doom-module-history:%s/%s" (doom-keyword-name category) module))))
("! Issues"
. ,(lambda (file)
(cl-destructuring-bind (category . module) (doom-module-from-path file)
(format "doom-module-issues::%s %s" category module)))))))
"TODO")
(defvar doom-docs-header-common-alist
`(("± Suggest edits" . "doom-suggest-edit:")
("? Help"
. ,(lambda (_file)
(let ((title (cadar (org-collect-keywords '("TITLE")))))
(cond ((equal title "Changelog") "doom-help-changelog:")
((string-prefix-p ":" title) "doom-help-modules:")
("doom-help:"))))))
"TODO")
;;
;;; `doom-docs-mode'
(defun doom-docs--display-header-h ()
"Show header line in Doom documentation."
(let ((beg (point-min))
end)
(org-with-wide-buffer
(goto-char beg)
(when (looking-at-p "^# -\\*- ")
(goto-char (line-beginning-position 2))
(setq beg (point)))
(when (looking-at-p org-drawer-regexp)
(re-search-forward org-drawer-regexp nil t 2)
(goto-char (setq beg (1+ (line-end-position)))))
(with-silent-modifications
(let ((inhibit-modification-hooks nil)
(menu (cl-loop for (regexp . rules) in doom-docs-header-alist
if (seq-find (doom-rpartial #'string-match-p (buffer-file-name))
(ensure-list regexp))
return rules)))
(when (re-search-forward "^-\\{80\\}" 512 t)
(delete-region beg (1+ (line-end-position))))
(when (and menu doom-docs-mode)
(let* ((fn
(lambda (menu)
(cl-destructuring-bind (icon . label)
(split-string (car menu) " ")
(if (cdr menu)
(format "%s [[%s][%s]]"
icon
(cond ((functionp (cdr menu))
(funcall (cdr menu) (buffer-file-name)))
((file-name-absolute-p (cdr menu))
(concat "file:"
(file-relative-name (file-truename (cdr menu)))))
((cdr menu)))
(string-join label " "))
(format "%s+ %s+" icon (string-join label " "))))))
(lenfn
(lambda (link)
(length (replace-regexp-in-string org-link-any-re "\\3" link))))
(sep " ")
(lhs (mapconcat fn (alist-get 'left menu) sep))
(rhs (mapconcat fn (append (alist-get 'right menu)
doom-docs-header-common-alist)
sep))
(llen (funcall lenfn lhs))
(rlen (funcall lenfn rhs))
(pad (max 0 (- 80 llen rlen))))
(insert lhs
(if (zerop rlen) ""
(format "%s%s" (make-string pad 32) rhs))
"\n" (make-string 80 ?-) "\n")))))
(org-element-cache-refresh (point-min)))))
(defun doom-docs--hide-meta-h ()
"Hide all meta or comment lines."
(org-with-wide-buffer
(goto-char (point-min))
(save-match-data
(let ((case-fold-search t))
(while (re-search-forward "^[ \t]*\\#" nil t)
(catch 'abort
(org-fold-core-region
(line-beginning-position)
(cond ((looking-at "+\\(?:title\\|subtitle\\): +")
(match-end 0))
((looking-at "+\\(?:created\\|since\\|author\\|email\\|date\\): +")
(throw 'abort nil))
((or (eq (char-after) ?\s)
(looking-at "+\\(begin\\|end\\)_comment"))
(line-beginning-position 2))
((looking-at "+\\(?:begin\\|end\\)_\\([^ \n]+\\)")
(line-end-position))
((line-beginning-position 2)))
doom-docs-mode 'doom-doc-hidden)))))))
(defun doom-docs--hide-drawers-h ()
"Hide all property drawers."
(org-with-wide-buffer
(goto-char (point-min))
(while (re-search-forward org-drawer-regexp nil t)
(let ((beg (max (point-min) (1- (match-beginning 0))))
(end (re-search-forward org-drawer-regexp nil t)))
(unless (org-current-level)
(cl-incf end))
(org-fold-core-region beg end doom-docs-mode 'doom-doc-hidden)))))
(defun doom-docs--hide-tags-h ()
"Hide tags in org headings."
(org-with-wide-buffer
(goto-char (point-min))
(while (re-search-forward org-heading-regexp nil t)
(when-let (tags (org-get-tags nil t))
(when (or (member "noorg" tags)
(member "unfold" tags))
;; prevent `org-ellipsis' around hidden regions
(org-show-entry))
(if (member "noorg" tags)
(org-fold-core-region (line-end-position 0)
(save-excursion
(org-end-of-subtree t)
(forward-line 1)
(if (and (bolp) (eolp))
(line-beginning-position)
(line-end-position 0)))
doom-docs-mode 'doom-doc-hidden)
(org-fold-core-region (save-excursion
(goto-char (line-beginning-position))
(re-search-forward " +:[^ ]" (line-end-position))
(match-beginning 0))
(line-end-position)
doom-docs-mode 'doom-doc-hidden))))))
(defun doom-docs--hide-stars-h ()
"Update invisible property to VISIBILITY for markers in the current buffer."
(org-with-wide-buffer
(goto-char (point-min))
(with-silent-modifications
(while (re-search-forward "^\\(\\*[ \t]\\|\\*\\*+\\)" nil t)
(org-fold-core-region (match-beginning 0)
(match-end 0)
doom-docs-mode
'doom-doc-hidden)))))
(defvar doom-docs--babel-cache nil)
(defun doom-docs--hide-src-blocks-h ()
"Hide babel blocks (and/or their results) depending on their :exports arg."
(org-with-wide-buffer
(let ((inhibit-read-only t))
(goto-char (point-min))
(make-local-variable 'doom-docs--babel-cache)
(while (re-search-forward org-babel-src-block-regexp nil t)
(let* ((beg (match-beginning 0))
(end (save-excursion (goto-char (match-end 0))
(skip-chars-forward "\n")
(point)))
(exports
(save-excursion
(goto-char beg)
(and (re-search-forward " :exports \\([^ \n]+\\)" (line-end-position) t)
(match-string-no-properties 1))))
(results (org-babel-where-is-src-block-result)))
(save-excursion
(when (and (if (stringp exports)
(member exports '("results" "both"))
org-export-use-babel)
(not results)
doom-docs-mode)
(cl-pushnew beg doom-docs--babel-cache)
(quiet! (org-babel-execute-src-block))
(setq results (org-babel-where-is-src-block-result))
(org-element-cache-refresh beg)
(restore-buffer-modified-p nil)))
(save-excursion
(when results
(when (member exports '("code" "both" "t"))
(setq beg results))
(when (member exports '("none" "code"))
(setq end (progn (goto-char results)
(goto-char (org-babel-result-end))
(skip-chars-forward "\n")
(point))))))
(unless (member exports '(nil "both" "code" "t"))
(org-fold-core-region beg end doom-docs-mode 'doom-doc-hidden))))
(unless doom-docs-mode
(save-excursion
(dolist (pos doom-docs--babel-cache)
(goto-char pos)
(org-babel-remove-result)
(org-element-cache-refresh pos))
(kill-local-variable 'doom-docs--babel-cache)
(restore-buffer-modified-p nil))))))
(defvar doom-docs--macro-cache nil)
(defun doom-docs--expand-macros-h ()
"Expand {{{macros}}} with their value."
(org-with-wide-buffer
(goto-char (point-min))
(make-local-variable 'doom-docs--macro-cache)
(while (re-search-forward "{{{[^}]+}}}" nil t)
(with-silent-modifications
(if doom-docs-mode
(when-let* ((element (org-element-context))
(key (org-element-property :key element))
(cachekey (org-element-property :value element))
(template (cdr (assoc-string key org-macro-templates t))))
(let ((value (or (cdr (assoc-string cachekey doom-docs--macro-cache))
(setf (alist-get cachekey doom-docs--macro-cache nil nil 'equal)
(org-macro-expand element org-macro-templates)))))
(add-text-properties (match-beginning 0)
(match-end 0)
`(display ,value))))
(remove-text-properties (match-beginning 0)
(match-end 0)
'(display))))
(org-element-cache-refresh (point)))))
(defvar doom-docs-mode-alist
'((flyspell-mode . -1)
(spell-fu-mode . -1)
(visual-line-mode . -1)
(mixed-pitch-mode . -1)
(variable-pitch-mode . -1))
"An alist of minor modes to activate or deactivate in `doom-docs-mode'.
The CAR is the minor mode symbol, and CDR should be either +1 or -1,
depending.")
(defvar doom-docs--initial-values nil)
(defvar doom-docs--cookies nil)
;;;###autoload
(define-minor-mode doom-docs-mode
"Hides metadata, tags, & drawers and activates all org-mode pretiffications.
This primes `org-mode' for reading."
:lighter " Doom Docs"
:after-hook (org-restart-font-lock)
(unless (derived-mode-p 'org-mode)
(user-error "Not an org mode buffer"))
(org-fold-add-folding-spec
'doom-doc-hidden '(:visible nil
:alias (hidden)
:isearch-open nil
:font-lock-skip t))
(mapc (lambda (sym)
(if doom-docs-mode
(set (make-local-variable sym) t)
(kill-local-variable sym)))
`(org-pretty-entities
org-hide-emphasis-markers
org-hide-macro-markers))
(when doom-docs-mode
(make-local-variable 'doom-docs--initial-values))
(mapc (lambda! ((face . plist))
(if doom-docs-mode
(push (apply #'face-remap-add-relative face plist) doom-docs--cookies)
(mapc #'face-remap-remove-relative doom-docs--cookies)))
'((org-document-title :weight bold :height 1.4)
(org-document-info :weight normal :height 1.15)))
(mapc (lambda! ((mode . state))
(if doom-docs-mode
(if (and (boundp mode) (symbol-value mode))
(unless (> state 0)
(setf (alist-get mode doom-docs--initial-values) t)
(funcall mode -1))
(unless (< state 0)
(setf (alist-get mode doom-docs--initial-values) nil)
(funcall mode +1)))
(when-let (old-val (assq mode doom-docs--initial-values))
(funcall mode (if old-val +1 -1)))))
doom-docs-mode-alist)
(unless doom-docs-mode
(kill-local-variable 'doom-docs--initial-values)))
(add-hook! 'doom-docs-mode-hook
#'doom-docs--display-header-h
#'doom-docs--hide-meta-h
#'doom-docs--hide-tags-h
#'doom-docs--hide-drawers-h
#'doom-docs--hide-stars-h
#'doom-docs--expand-macros-h
#'doom-docs--hide-src-blocks-h)
(defun doom-docs--toggle-read-only-h ()
(doom-docs-mode (if buffer-read-only +1 -1)))
(defvar doom-docs--id-locations nil)
(defvar doom-docs--id-files nil)
;;;###autoload
(defun doom/reload-docs (&optional force)
"Reload the ID locations in Doom's documentation and open docs buffers."
(interactive (list 'interactive))
(with-temp-buffer
(let ((org-id-locations-file
(doom-path (file-truename doom-cache-dir) "doom-docs-org-ids"))
(org-id-track-globally t)
org-agenda-files
org-id-extra-files
org-id-files
org-id-locations
org-id-extra-files
(org-inhibit-startup t)
org-mode-hook)
(if force
(org-id-update-id-locations
(doom-files-in (list doom-docs-dir doom-modules-dir)
:match "/[^.].+\\.org$"))
(org-id-locations-load))
(setq doom-docs--id-files org-id-files
doom-docs--id-locations org-id-locations)))
(dolist (buf (doom-buffers-in-mode 'doom-docs-org-mode))
(with-current-buffer buf
(setq-local org-id-files doom-docs--id-files
org-id-locations doom-docs--id-locations))))
;;
;;; `doom-docs-org-mode'
(defvar doom-docs-link-alist
'(("doom-tag" . "https://github.com/hlissner/doom-emacs/releases/tag/%s")
("doom-contrib-core" . "id:9ac0c15c-29e7-43f8-8926-5f0edb1098f0")
("doom-contrib-docs" . "id:31f5a61d-d505-4ee8-9adb-97678250f4e2")
("doom-contrib-maintainer" . "id:e71e9595-a297-4c49-bd11-f238329372db")
("doom-contrib-module" . "id:b461a050-8702-4e63-9995-c2ef3a78f35d")
("doom-faq" . "id:5fa8967a-532f-4e0c-8ae8-25cd802bf9a9")
("doom-help" . "id:9bb17259-0b07-45a8-ae7a-fc5e0b16244e")
("doom-help-changelog" . "id:7c56cc08-b54b-4f4b-b106-a76e2650addd")
("doom-help-modules" . "id:1ee0b650-f09b-4454-8690-cc145aadef6e")
("doom-index" . "id:3051d3b6-83e2-4afa-b8fe-1956c62ec096")
("doom-module-index" . "id:12d2de30-c569-4b8e-bbc7-85dd5ccc4afa")
("doom-module-issues" . "https://github.com/doomemacs/doomemacs/labels/%s")
("doom-module-history" . "https://github.com/doomemacs/doomemacs/commits/master/modules/%s")
("doom-report" . "https://github.com/doomemacs/doomemacs/issues/new/choose")
("doom-suggest-edit" . "id:31f5a61d-d505-4ee8-9adb-97678250f4e2")
("doom-suggest-faq" . "id:aa28b732-0512-49ed-a47b-f20586c0f051")
("github" . "https://github.com/%s")))
;;;###autoload
(define-derived-mode doom-docs-org-mode org-mode "Doom Docs"
"A derivative of `org-mode' for Doom's documentation files.
Keeps track of its own IDs in `doom-docs-dir' and toggles `doom-docs-mode' when
`read-only-mode' is activated."
:after-hook (visual-line-mode -1)
(require 'org-id)
(require 'ob)
(setq-local org-id-link-to-org-use-id t
org-id-method 'uuid
org-id-track-globally t
org-id-locations-file (doom-path doom-cache-dir "doom-docs-org-ids")
org-id-locations doom-docs--id-locations
org-id-files doom-docs--id-files
org-num-max-level 3
org-footnote-define-inline nil
org-footnote-auto-label t
org-footnote-auto-adjust t
org-footnote-section nil
wgrep-change-readonly-file t
org-link-abbrev-alist-local (append org-link-abbrev-alist-local doom-docs-link-alist)
org-babel-default-header-args
(append '((:eval . "no") (:tangle . "no"))
org-babel-default-header-args)
save-place-ignore-files-regexp ".")
(when (require 'org-glossary nil t)
(setq org-glossary-collection-root doom-docs-dir
org-glossary-global-terms (doom-glob org-glossary-collection-root "appendix.org"))
(require 'ox)
(org-glossary-mode +1))
(unless org-inhibit-startup
(doom/reload-docs)
(unless (local-variable-p 'org-startup-with-inline-images)
(setq org-display-remote-inline-images 'cache)
(org-display-inline-images))
(unless (local-variable-p 'org-startup-indented)
(org-indent-mode +1))
(unless (local-variable-p 'org-startup-numerated)
(when (bound-and-true-p org-num-mode)
(org-num-mode -1))
(org-num-mode +1))
(unless (local-variable-p 'org-startup-folded)
(let ((org-startup-folded 'content))
(org-set-startup-visibility))))
(add-hook 'read-only-mode-hook #'doom-docs--toggle-read-only-h nil 'local)
(org-with-limited-levels
(end-of-line)
(null (re-search-forward org-outline-regexp-bol nil t))))
;;;###autoload
(defun doom-docs-read-only-h ()
"Activate `read-only-mode' if the current file exists and is non-empty."
;; The rationale: if it's empty or non-existant, you want to write an org
;; file, not read it.
(let ((file-name (buffer-file-name (buffer-base-buffer))))
(when (and file-name
(> (buffer-size) 0)
(not (string-prefix-p "." (file-name-base file-name)))
(file-exists-p file-name))
(read-only-mode +1))))
(add-hook 'doom-docs-org-mode-hook #'doom-docs-read-only-h)
;;
;;; Custom links
;;;###autoload
(defun doom-docs-read-link-desc-at-point (&optional default context)
"TODO"
(if (and (stringp default) (not (string-empty-p default)))
(string-trim default)
(if-let* ((context (or context (org-element-context)))
(context (org-element-lineage context '(link) t))
(beg (org-element-property :contents-begin context))
(end (org-element-property :contents-end context)))
(unless (= beg end)
(replace-regexp-in-string
"[ \n]+" " " (string-trim (buffer-substring-no-properties beg end)))))))
;;;###autoload
(defun doom-docs-doom-module-link-follow-fn (link)
(cl-destructuring-bind (&key category module flag)
(doom-docs--read-module-link link)
(when category
(let ((doom-modules-dirs (list doom-modules-dir)))
(if-let* ((path (doom-module-locate-path category module))
(path (or (car (doom-glob path "README.org"))
path)))
(find-file path)
(user-error "Can't find Doom module '%s'" link))))
(when flag
(goto-char (point-min))
(when (and (re-search-forward "^\\*+ \\(?:TODO \\)?Module flags")
(re-search-forward (format "^\\s-*- \\+%s ::[ \n]"
(substring (symbol-name flag) 1))
(save-excursion (org-get-next-sibling)
(point))))
(org-show-entry)
(recenter)))))
;;;###autoload
(defun doom-docs-doom-module-link-face-fn (link)
(cl-destructuring-bind (&key category module flag)
(doom-docs--read-module-link link)
(if (doom-module-locate-path category module)
`(:inherit org-priority
:weight bold)
'error)))
;;;###autoload
(defun doom-docs-doom-package-link-follow-fn (link)
"TODO"
(doom/describe-package
(intern-soft
(doom-docs-read-link-desc-at-point link))))
;;;###autoload
(defun doom-docs-make-symbol-link (fn)
"TODO"
(lambda (link)
(let ((desc (doom-docs-read-link-desc-at-point link)))
(funcall
fn (or (intern-soft desc)
(user-error "Can't find documentation for %S" desc))))))
(defun doom-docs--describe-kbd (keystr)
(dolist (key `(("<leader>" . ,doom-leader-key)
("<localleader>" . ,doom-localleader-key)
("<prefix>" . ,(if (bound-and-true-p evil-mode)
(concat doom-leader-key " u")
"C-u"))
("<help>" . ,(if (bound-and-true-p evil-mode)
(concat doom-leader-key " h")
"C-h"))
("\\<M-" . "alt-")
("\\<S-" . "shift-")
("\\<s-" . "super-")
("\\<C-" . "ctrl-")))
(setq keystr
(replace-regexp-in-string (car key) (cdr key)
keystr t t)))
keystr)
;;;###autoload
(defun doom-docs-read-kbd-at-point (&optional default context)
"TODO"
(doom-docs--describe-kbd
(doom-docs-read-link-desc-at-point default context)))
;;;###autoload
(after! org
;; Add "lookup" links for packages and keystrings; useful for Emacs
;; documentation -- especially Doom's!
(org-link-set-parameters
"kbd"
:follow (lambda (_) (minibuffer-message "%s" (doom--display-docs-link-in-eldoc-a)))
:help-echo #'doom-docs-read-kbd-at-point
:face 'help-key-binding)
(org-link-set-parameters
"var"
:follow (doom-docs-make-symbol-link #'helpful-variable)
:face '(font-lock-variable-name-face underline))
(org-link-set-parameters
"fn"
:follow (doom-docs-make-symbol-link #'helpful-callable)
:face '(font-lock-function-name-face underline))
(org-link-set-parameters
"face"
:follow (doom-docs-make-symbol-link #'describe-face)
:face '(font-lock-type-face underline))
(org-link-set-parameters
"doom-ref"
:follow (lambda (link)
(let ((link (doom-docs-read-link-desc-at-point link))
(url "https://github.com")
(doom-repo "doomemacs/doomemacs"))
(save-match-data
(browse-url
(cond ((string-match "^\\([^/]+\\(?:/[^/]+\\)?\\)?#\\([0-9]+\\(?:#.*\\)?\\)" link)
(format "%s/%s/issues/%s" url
(or (match-string 1 link)
doom-repo)
(match-string 2 link)))
((string-match "^\\([^/]+\\(?:/[^/]+\\)?@\\)?\\([a-z0-9]\\{7,\\}\\(?:#.*\\)?\\)" link)
(format "%s/%s/commit/%s" url
(or (match-string 1 link)
doom-repo)
(match-string 2 link)))
((user-error "Invalid doom-ref link: %S" link)))))))
:face (lambda (link)
(let ((link (doom-docs-read-link-desc-at-point link)))
(if (or (string-match "^\\([^/]+\\(?:/[^/]+\\)?\\)?#\\([0-9]+\\(?:#.*\\)?\\)" link)
(string-match "^\\([^/]+\\(?:/[^/]+\\)?@\\)?\\([a-z0-9]\\{7,\\}\\(?:#.*\\)?\\)" link))
'org-link
'error))))
(org-link-set-parameters
"doom-user"
:follow (lambda (link)
(browse-url
(format "https://github.com/%s"
(string-remove-prefix
"@" (doom-docs-read-link-desc-at-point link)))))
:face (lambda (_) 'org-priority))
(org-link-set-parameters
"doom-package"
:follow #'doom-docs-doom-package-link-follow-fn
:face (lambda (_) '(:inherit org-priority :slant italic)))
(org-link-set-parameters
"doom-source"
:follow (lambda (link)
(user-error "-- %S %S %S" source url link)
(cl-destructuring-bind (source . url)
(save-match-data
(and (string-match "^\\([^:]+\\):\\(.+\\)$" link)
(cons (match-string 1) (match-string 2))))
(pcase source
("doom"
(org-link-open (expand-file-name url doom-modules-dir)))
("contrib"
(browse-url (format "https://docs.doomemacs.org/modules/"
(replace-regexp-in-string "::\\(.+\\)$" "#\\1" url))))
(_ (user-error "%s is not a valid module source" source))))))
(org-link-set-parameters
"doom-module"
:follow #'doom-docs-doom-module-link-follow-fn
:face #'doom-docs-doom-module-link-face-fn)
(org-link-set-parameters
"doom-changelog"
:follow (lambda (link)
(find-file (doom-path doom-docs-dir "changelog.org"))
(org-match-sparse-tree nil link)))
(add-to-list 'org-link-abbrev-alist '("doom-repo" . "https://github.com/doomemacs/doomemacs/%s"))
(defadvice! doom--display-docs-link-in-eldoc-a (&rest _)
"Display full doom-*: links in minibuffer when cursor/mouse is over it."
:before-until #'org-eldoc-documentation-function
(when-let* ((context (org-element-context))
(path (org-element-property :path context)))
(pcase (org-element-property :type context)
("kbd"
(format "%s %s"
(propertize "Key sequence:" 'face 'bold)
(propertize (doom-docs-read-kbd-at-point path context)
'face 'help-key-binding)))
("doom-module"
(format "%s %s"
(propertize "Doom module:" 'face 'bold)
(propertize (doom-docs-read-link-desc-at-point path)
'face 'org-priority)))
("doom-package"
(format "%s %s"
(propertize "Doom package:" 'face 'bold)
(propertize (doom-docs-read-link-desc-at-point path)
'face 'org-priority)))))))
(defun doom-docs--read-module-link (link)
(cl-destructuring-bind (category &optional module flag)
(let ((desc (doom-docs-read-link-desc-at-point link)))
(if (string-prefix-p "+" (string-trim-left desc))
(list nil nil (intern desc))
(mapcar #'intern (split-string desc " " nil))))
(list :category category
:module module
:flag flag)))
;;; docs.el ends here

View file

@ -749,3 +749,4 @@ Uses the symbol at point or the current selection, if available."
(format "%s.el" filebase))) (format "%s.el" filebase)))
collect it) collect it)
query "Search loaded files: ")) query "Search loaded files: "))

1492
modules/README.org Normal file

File diff suppressed because it is too large Load diff

12
modules/app/README.org Normal file
View file

@ -0,0 +1,12 @@
# -*- mode: doom-docs-org -*-
#+title: :app
#+created: February 19, 2017
#+since: 21.12.0
* Description
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).
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,34 +1,52 @@
#+TITLE: app/calendar # -*- mode: doom-docs-org -*-
#+DATE: January 13, 2018 #+title: :app calendar
#+SINCE: v2.1 #+subtitle: Watch your missed deadlines in real time
#+STARTUP: inlineimages #+created: January 13, 2018
#+since: 21.12.0 (#355)
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#packages][Packages]]
- [[#configuration][Configuration]]
- [[#changing-calendar-sources][Changing calendar sources]]
- [[#synchronizing-org-and-google-calendar][Synchronizing Org and Google Calendar]]
* Description
This module adds a calendar view for Emacs, with org and google calendar sync This module adds a calendar view for Emacs, with org and google calendar sync
support. support.
** Module Flags ** Maintainers
This module provides no flags. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages ** Packages
+ [[https://github.com/kiwanami/emacs-calfw][calfw]] - [[doom-package:][calfw]]
+ [[https://github.com/kiwanami/emacs-calfw][calfw-org]] - [[doom-package:][calfw-org]]
+ [[https://github.com/kidd/org-gcal.el][org-gcal]] - [[doom-package:][org-gcal]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- A Google Calendar account.
- [[https://github.com/kidd/org-gcal.el#installation][An OAuth client ID]], for syncing said account with [[doom-package:][org-gcal]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Changing calendar sources ** Changing calendar sources
By defining your own calendar commands, you can control what sources to pull By defining your own calendar commands, you can control what sources to pull
calendar data from: calendar data from:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(defun my-open-calendar () (defun my-open-calendar ()
(interactive) (interactive)
(cfw:open-calendar-buffer (cfw:open-calendar-buffer
@ -41,10 +59,21 @@ calendar data from:
(cfw:ical-create-source "Moon" "~/moon.ics" "Gray") ; ICS source1 (cfw:ical-create-source "Moon" "~/moon.ics" "Gray") ; ICS source1
(cfw:ical-create-source "gcal" "https://..../basic.ics" "IndianRed") ; google calendar ICS (cfw:ical-create-source "gcal" "https://..../basic.ics" "IndianRed") ; google calendar ICS
))) )))
#+END_SRC #+end_src
The [[https://github.com/kiwanami/emacs-calfw][kiwanami/emacs-calfw]] project readme contains more examples. The [[https://github.com/kiwanami/emacs-calfw][kiwanami/emacs-calfw]] project readme contains more examples.
** Synchronizing Org and Google Calendar ** Synchronizing Org and Google Calendar
The [[https://github.com/kidd/org-gcal.el][kidd/org-gcal.el]] project README contains more detailed instructions on how The [[https://github.com/kidd/org-gcal.el][kidd/org-gcal.el]] project README contains more detailed instructions on how
to link your calendar with Google calendars. to link your calendar with Google calendars.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,71 +1,75 @@
#+TITLE: app/emms # -*- mode: doom-docs-org -*-
#+DATE: March 6, 2021 #+title: :app emms
#+SINCE: v3.0.0 #+subtitle: A media player for music no one's heard of
#+STARTUP: inlineimages nofold #+created: March 06, 2021
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#arch-linux][Arch Linux]]
- [[#nixos][NixOS]]
- [[#ubuntu][Ubuntu]]
- [[#troubleshooting][Troubleshooting]]
- [[#new-music-files-not-showing-up-in-database][New music files not showing up in database]]
- [[#appendix][Appendix]]
- [[#keybinds][Keybinds]]
* Description
This module enables Emacs to be used as a music player. It uses [[https://www.musicpd.org/][mpd]] as a backend 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. server and [[https://musicpd.org/clients/mpc/][mpc]] to update your music database.
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
+ [[https://git.savannah.gnu.org/git/emms.git/][emms]] - [[doom-package:][emms]]
* Prerequisites ** Hacks
This module requires an active MPD server, the MPC utility, and a music library. /No hacks documented for this module./
** Arch Linux ** TODO Changelog
#+BEGIN_SRC bash # This section will be machine generated. Don't edit it by hand.
pacman -S mpd mpc /This module does not have a changelog yet./
#+END_SRC
** NixOS * Installation
#+BEGIN_SRC nix [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
services.mpd.enable = true;
environment.systemPackages = [ pkgs.mpc_cli ];
#+END_SRC
** Ubuntu This module requires:
#+BEGIN_SRC bash - [[https://mpd.readthedocs.io/en/stable/user.html#installation][mpd]] (and a running mpd server)
apt install mpd mpc - [[https://www.musicpd.org/clients/mpc/][mpc]]
#+END_SRC
These should be available through your OS package manager.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Keybinds
- [[kbd:][<localleader> l]] Toggles whether or not the player repeats the playlist.
- [[kbd:][<localleader> m]] Mixes the playlist.
- [[kbd:][<localleader> i]] Insert specific song
- [[kbd:][<localleader> s]] Save the current playlist to a file
- [[kbd:][<localleader> p]] Insert playlist save into current playlist
- [[kbd:][g a]] Sort the browser by artists
- [[kbd:][g b]] Sort the browser by genre
- [[kbd:][X]] Stops the player
- [[kbd:][x]] pauses the player
- [[kbd:][D]] in the playlist window removes that item
- [[kbd:][C]] clears the playlist
- [[kbd:][>]] move five seconds forward in the current track
- [[kbd:][<]] Opposite five back
- [[kbd:][RET]] In browser adds the artist's songs to the playlist, in the playlist starts
playlist.
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
** New music files not showing up in database [[doom-report:][Report an issue?]]
Try =M-x +emms/mpd-restart-music-daemon=. If that doesn't work restart emacs.
* Appendix ** New music files not showing up in database
** Keybinds Try [[kbd:][M-x +emms/mpd-restart-music-daemon]] then restart emacs.
+ =SPC m l= Toggles whether or not the player repeats the playlist.
+ =SPC m m= Mixes the playlist. * Frequently asked questions
+ =SPC m i= Insert specific song /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
+ =SPC m s= Save the current playlist to a file
+ =SPC m p= Insert playlist save into current playlist * TODO Appendix
+ =g a= Sort the browser by artists #+begin_quote
+ =g b= Sort the browser by genre 🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
+ =X= Stops the player #+end_quote
+ =x= pauses the player
+ =D= in the playlist window removes that item
+ =C= clears the playlist
+ =>= move five seconds forward in the current track
+ =<= Opposite five back
+ =RET= In browser adds the artist's songs to the playlist, in the playlist starts playlist.

View file

@ -1,58 +1,73 @@
#+title: app/everywhere # -*- mode: doom-docs-org -*-
#+date: February 7, 2021 #+title: :app everywhere
#+since: v3.0 #+subtitle: *leave* Emacs!? You must be joking
#+startup: inlineimages nofold #+created: February 07, 2021
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
* Description
This module adds system-wide popup Emacs windows for quick edits. This module adds system-wide popup Emacs windows for quick edits.
** Maintainers ** Maintainers
+ [[https://github.com/tecosaur][@tecosaur]] - [[doom-user:][@tecosaur]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags. ** Module flags
/This module has no flags./
** Plugins ** Packages
+ [[https://github.com/tecosaur/emacs-everywhere][emacs-everywhere]] - [[doom-package:][emacs-everywhere]]
* Prerequisites ** Hacks
/No hacks documented for this module./
On Linux =xclip=, =xdotool=, =xprop=, and =xwininfo= are needed. ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
On MacOS, Emacs must be allowed to "control your computer" under *Settings > Accessibility*. * Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Features This module requires:
- *On Linux:* (these should be available through your OS package manager)
- =xclip=
- =xdotool=
- =xprop=
- =xwininfo=
- *On MacOS:* that Emacs is allowed to "control your computer" under *System
Preferences > Accessibility*.
* Usage
To use this, invoke the =emacs-everywhere= executable. This can be done in two To use this, invoke the =emacs-everywhere= executable. This can be done in two
ways: ways:
+ ~emacsclient --eval "(emacs-everywhere)"~ + ~$ emacsclient --eval "(emacs-everywhere)"~
+ ~doom everywhere~ + ~$ doom everywhere~
It is recommended that you add a keybinding for this. It is recommended that you add a keybinding for this.
From here, you can edit away to your hearts content in the created frame, then From here, you can edit away to your hearts content in the created frame, then
return to the original window and paste the content with =C-c C-c= or =SPC q f=. return to the original window and paste the content with [[kbd:][C-c C-c]] or [[kbd:][SPC q f]]. To
To exit without pasting, use =C-c C-k=. exit without pasting, use [[kbd:][C-c C-k]].
* Configuration * Configuration
[[doom-package:][emacs-everywhere]] likes to guess if you triggered it from an application which
=emacs-everywhere= likes to guess if you triggered it from an application which
supports markdown. Configure ~emacs-everywhere-markdown-windows~ and supports markdown. Configure ~emacs-everywhere-markdown-windows~ and
~emacs-everywhere-markdown-apps~ to improve how accurate this is on your system. ~emacs-everywhere-markdown-apps~ to improve how accurate this is on your system.
By default, when markdown is detected, ~markdown-mode~ is used. It is possible to By default, when markdown is detected, ~markdown-mode~ is used. It is possible
instead use pandoc to convert the content to Org (and export to markdown when to instead use pandoc to convert the content to Org (and export to markdown when
closing the frame) by setting ~emacs-everywhere-major-mode-function~ to closing the frame) by setting ~emacs-everywhere-major-mode-function~ to
=#'org-mode=. ~#'org-mode~.
Most other behaviour is implemented as hooks on ~emacs-everywhere-init-hooks~. Most other behavior is implemented as hooks on ~emacs-everywhere-init-hooks~.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,82 +1,82 @@
#+TITLE: app/irc # -*- mode: doom-docs-org -*-
#+DATE: June 11, 2017 #+title: :app irc
#+SINCE: v2.0.3 #+subtitle: How neckbeards socialize
#+STARTUP: inlineimages #+created: June 11, 2017
#+since: 2.0.3
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#macos][macOS]]
- [[#debian--ubuntu][Debian / Ubuntu]]
- [[#arch-linux][Arch Linux]]
- [[#nixos][NixOS]]
- [[#features][Features]]
- [[#an-irc-client-in-emacs][An IRC Client in Emacs]]
- [[#configuration][Configuration]]
- [[#pass-the-unix-password-manager][Pass: the unix password manager]]
- [[#emacs-auth-source-api][Emacs' auth-source API]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module turns Emacs into an IRC client, capable of OS notifications. This module turns Emacs into an IRC client, capable of OS notifications.
** Module Flags ** Maintainers
This module provides no flags. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Plugins ** Module flags
+ [[https://github.com/jorgenschaefer/circe][circe]] /This module has no flags./
+ [[https://github.com/eqyiel/circe-notifications][circe-notifications]]
* Prerequisites ** Packages
This module requires =gnutls= for secure IRC connections to work. - [[doom-package:][circe]]
- [[doom-package:][circe-notifications]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- [[https://www.gnutls.org/][GnuTLS]], for secure IRC connections to work.
This should be available through your OS package manager.
** macOS ** macOS
#+BEGIN_SRC sh #+begin_src sh
brew install gnutls brew install gnutls
#+END_SRC #+end_src
** Debian / Ubuntu ** Debian / Ubuntu
#+BEGIN_SRC sh #+begin_src sh
apt install gnutls-bin apt install gnutls-bin
#+END_SRC #+end_src
** Arch Linux ** Arch Linux
#+BEGIN_SRC sh #+begin_src sh
pacman -S gnutls pacman -S gnutls
#+END_SRC #+end_src
** NixOS ** NixOS
#+BEGIN_SRC nix #+begin_src nix
environment.systemPackages = [ pkgs.gnutls ]; environment.systemPackages = [ pkgs.gnutls ];
#+END_SRC #+end_src
* Features * TODO Usage
** An IRC Client in Emacs #+begin_quote
To connect to IRC you can invoke the ~=irc~ function using =M-x= or your own 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
custom keybinding. #+end_quote
| command | description | To connect to IRC use ~M-x =irc~.
|---------+-------------------------------------------|
| ~=irc~ | Connect to IRC and all configured servers |
When in a circe buffer these keybindings will be available.
When in a circe buffer these keybindings will be available:
| command | key | description | | command | key | description |
|-----------------------------+-----------+----------------------------------------------| |-----------------------------+-----------------+----------------------------------------------|
| ~+irc/tracking-next-buffer~ | =SPC m a= | Switch to the next active buffer | | ~+irc/tracking-next-buffer~ | [[kbd:][<localleader> a]] | Switch to the next active buffer |
| ~circe-command-JOIN~ | =SPC m j= | Join a channel | | ~circe-command-JOIN~ | [[kbd:][<localleader> j]] | Join a channel |
| ~+irc/send-message~ | =SPC m m= | Send a private message | | ~+irc/send-message~ | [[kbd:][<localleader> m]] | Send a private message |
| ~circe-command-NAMES~ | =SPC m n= | List the names of the current channel | | ~circe-command-NAMES~ | [[kbd:][<localleader> n]] | List the names of the current channel |
| ~circe-command-PART~ | =SPC m p= | Part the current channel | | ~circe-command-PART~ | [[kbd:][<localleader> p]] | Part the current channel |
| ~+irc/quit~ | =SPC m Q= | Kill the current circe session and workgroup | | ~+irc/quit~ | [[kbd:][<localleader> Q]] | Kill the current circe session and workgroup |
| ~circe-reconnect~ | =SPC m R= | Reconnect the current server | | ~circe-reconnect~ | [[kbd:][<localleader> R]] | Reconnect the current server |
* Configuration * TODO Configuration
Use ~set-irc-server! SERVER PLIST~ to configure IRC servers. Its second argument (a plist) #+begin_quote
takes the same arguments as ~circe-network-options~. 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
#+BEGIN_SRC emacs-lisp :tangle no Use ~set-irc-server! SERVER PLIST~ to configure IRC servers. Its second argument
(a plist) takes the same arguments as ~circe-network-options~:
#+begin_src emacs-lisp
;; if you omit =:host=, ~SERVER~ will be used instead. ;; if you omit =:host=, ~SERVER~ will be used instead.
(after! circe (after! circe
(set-irc-server! "irc.libera.chat" (set-irc-server! "irc.libera.chat"
@ -86,20 +86,23 @@ takes the same arguments as ~circe-network-options~.
:sasl-username "myusername" :sasl-username "myusername"
:sasl-password "mypassword" :sasl-password "mypassword"
:channels ("#emacs")))) :channels ("#emacs"))))
#+END_SRC #+end_src
However, *it is a obviously a bad idea to store your password in plaintext,* so However, *it is a obviously a bad idea to store your password in plaintext,* so
here are ways to avoid that: here are ways to avoid that:
** Pass: the unix password manager ** TODO Pass: the unix password manager
#+begin_quote
🔨 /This section is outdated and needs to be rewritten./ [[doom-contrib-module:][Rewrite it?]]
#+end_quote
[[https://www.passwordstore.org/][Pass]] is my tool of choice. I use it to manage my passwords. If you activate the [[https://www.passwordstore.org/][Pass]] is my tool of choice. I use it to manage my passwords. If you activate the
[[../../../modules/tools/pass/README.org][:tools pass]] module you get an elisp API through which to access your [[doom-module:][:tools pass]] module you get an elisp API through which to access your password
password store. store.
~set-irc-server!~ accepts a plist can use functions instead of strings. ~set-irc-server!~ accepts a plist can use functions instead of strings.
~+pass-get-user~ and ~+pass-get-secret~ can help here: ~+pass-get-user~ and ~+pass-get-secret~ can help here:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle no
(set-irc-server! "irc.libera.chat" (set-irc-server! "irc.libera.chat"
`(:tls t `(:tls t
:port 6697 :port 6697
@ -107,12 +110,11 @@ password store.
:sasl-username ,(+pass-get-user "irc/libera.chat") :sasl-username ,(+pass-get-user "irc/libera.chat")
:sasl-password ,(+pass-get-secret "irc/libera.chat") :sasl-password ,(+pass-get-secret "irc/libera.chat")
:channels ("#emacs"))) :channels ("#emacs")))
#+END_SRC #+end_src
But wait, there's more! This stores your password in a public variable which But wait, there's more! This stores your password in a public variable which
could be accessed or appear in backtraces. Not good! So we go a step further: could be accessed or appear in backtraces. Not good! So we go a step further:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle no
(set-irc-server! "irc.libera.chat" (set-irc-server! "irc.libera.chat"
`(:tls t `(:tls t
:port 6697 :port 6697
@ -120,12 +122,12 @@ could be accessed or appear in backtraces. Not good! So we go a step further:
:sasl-username ,(+pass-get-user "irc/libera.chat") :sasl-username ,(+pass-get-user "irc/libera.chat")
:sasl-password (lambda (&rest _) (+pass-get-secret "irc/libera.chat")) :sasl-password (lambda (&rest _) (+pass-get-secret "irc/libera.chat"))
:channels ("#emacs"))) :channels ("#emacs")))
#+END_SRC #+end_src
And you're good to go! And you're good to go!
Note that =+pass-get-user= tries to find your username by looking for the fields Note that ~+pass-get-user~ tries to find your username by looking for the fields
listed in =+pass-user-fields= (by default =login=, =user==, =username== and listed in ~+pass-user-fields~ (by default =login=, =user==, =username== and
=email=)=). An example configuration looks like =email=)=). An example configuration looks like
#+begin_example #+begin_example
@ -136,8 +138,7 @@ username: myusername
** Emacs' auth-source API ** Emacs' auth-source API
~auth-source~ is built into Emacs. As suggested [[https://github.com/jorgenschaefer/circe/wiki/Configuration#safer-password-management][in the circe wiki]], you can store ~auth-source~ is built into Emacs. As suggested [[https://github.com/jorgenschaefer/circe/wiki/Configuration#safer-password-management][in the circe wiki]], you can store
(and retrieve) encrypted passwords with it. (and retrieve) encrypted passwords with it.
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle no
(setq auth-sources '("~/.authinfo.gpg")) (setq auth-sources '("~/.authinfo.gpg"))
(defun my-fetch-password (&rest params) (defun my-fetch-password (&rest params)
@ -159,6 +160,15 @@ username: myusername
:nick "doom" :nick "doom"
:sasl-password my-nickserver-password :sasl-password my-nickserver-password
:channels ("#emacs"))) :channels ("#emacs")))
#+END_SRC #+end_src
* TODO Troubleshooting * TODO Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,92 +1,102 @@
#+TITLE: app/rss # -*- mode: doom-docs-org -*-
#+DATE: May 12, 2020 #+title: :app rss
#+SINCE: v2.0.9 #+subtitle: An RSS reader that Google can't shut down
#+STARTUP: inlineimages nofold #+created: May 12, 2020
#+since: 2.0.9
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] Read RSS feeds in the comfort of Emacs.
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#without-org][Without +org]]
- [[#with-org][With +org]]
- [[#keybindings][Keybindings]]
- [[#news-filtering][News filtering]]
- [[#automatically-updating-feed-when-opening-elfeed][Automatically updating feed when opening elfeed]]
- [[#troubleshooting][Troubleshooting]]
* Description
+ Read RSS feeds in the comfort of DOOM (Emacs)
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+org= to enable ~elfeed-org~ to use ~org-directory/elfeed.org~ - +org ::
Enable [[doom-package:][elfeed-org]], so you can configure your feeds with an org file
(={org-directory}/elfeed.org=) rather than Elisp.
** Plugins ** Packages
+ [[https://github.com/skeeto/elfeed][elfeed]] - [[doom-package:][elfeed]]
+ [[https://github.com/algernon/elfeed-goodies][elfeed-goodies]] - [[doom-package:][elfeed-goodies]]
+ =+org= - [[doom-package:][elfeed-org]] if [[doom-module:][+org]]
+ [[https://github.com/remyhonig/elfeed-org][elfeed-org]]
** Hacks ** Hacks
+ By default ~elfeed-search-filter~ is set to ~@2-weeks-ago~ and makes the last 2 weeks of entries visible. This needs to be set after elfeed has loaded like so in your ~config.el~ - By default ~elfeed-search-filter~ is set to ~@2-weeks-ago~ and makes the last
#+begin_src elisp 2 weeks of entries visible. This needs to be set after elfeed has loaded like
so in your =$DOOMDIR/config.el=:
#+begin_src emacs-lisp
(after! elfeed (after! elfeed
(setq elfeed-search-filter "@1-month-ago +unread")) (setq elfeed-search-filter "@1-month-ago +unread"))
#+end_src #+end_src
* Prerequisites ** TODO Changelog
This module has no prerequisites. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Features * Installation
+ As there isn't currently binding for ~elfeed-update~ you can run it with ~M-x elfeed-update~ [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
- As there isn't currently binding for ~elfeed-update~ you can run it with ~M-x
elfeed-update~
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Without +org ** Without +org
When you don't want to use org mode to manage your elfeed feeds you can put your subscriptions to personal ~config.el~ file, ex: When you don't want to use org mode to manage your elfeed feeds you can put your
#+BEGIN_SRC elisp subscriptions in =$DOOMDIR/config.el=:
#+begin_src emacs-lisp
(setq elfeed-feeds (setq elfeed-feeds
'("https://this-week-in-rust.org/rss.xml" '("https://this-week-in-rust.org/rss.xml"
"http://feeds.bbci.co.uk/news/rss.xml")) "http://feeds.bbci.co.uk/news/rss.xml"))
#+END_SRC #+end_src
** With +org ** With +org
When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to configure feeds to follow. When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to
#+BEGIN_SRC org configure feeds to follow:
#+begin_src org
,* root :elfeed: ,* root :elfeed:
,** Programming :programming: ,** Programming :programming:
,*** [[https://this-week-in-rust.org/rss.xml][This Week in Rust]] :rust: ,*** [[https://this-week-in-rust.org/rss.xml][This Week in Rust]] :rust:
,** News :news: ,** News :news:
,*** Top news :tops: ,*** Top news :tops:
,**** http://feeds.bbci.co.uk/news/rss.xml ,**** http://feeds.bbci.co.uk/news/rss.xml
#+END_SRC #+end_src
+ Root of ~elfeed-org~ needs to have ~:elfeed:~ tag. This is where ~elfeed-org~ starts to read. - Root of ~elfeed-org~ needs to have ~:elfeed:~ tag. This is where ~elfeed-org~
+ You can have subheaders as in example ~:programming:~, and ~elfeed-org~ applies that tag to all subheader feeds, in example it adds it to ~This Week in Rust~. starts to read.
+ You can "name" feeds as you please with ~org-mode~ ~org-insert-link~ (~C-c C-l~) and put name as you want into ~description~. - You can have subheaders as in example ~:programming:~, and ~elfeed-org~
+ If you don't want to use ~org-directory/elfeed.org~ file you can specify it with ~(setq rmh-elfeed-org-files '("path/to/your/elfeed/file.org))~ applies that tag to all subheader feeds, in example it adds it to ~This Week
in Rust~.
- You can "name" feeds as you please with ~org-mode~ ~org-insert-link~ ([[kbd:][C-c C-l]])
and put name as you want into ~description~.
- If you don't want to use ~org-directory/elfeed.org~ file you can specify it
with ~(setq rmh-elfeed-org-files '("path/to/your/elfeed/file.org))~
** Keybindings ** Keybindings
+ General + General
| Key | Mode | Description | | Key | Mode | Description |
|---------+--------------------+--------------------------------| |-------+--------------------+------------------------|
| =S-RET= | Elfeed-search-mode | Open link into browser | | [[kbd:][S-RET]] | elfeed-search-mode | Open link into browser |
| =RET= | Elfeed-search-mode | Open item | | [[kbd:][RET]] | elfeed-search-mode | Open item |
| =s= | Elfeed-search-mode | Filter | | [[kbd:][s]] | elfeed-search-mode | Filter |
| =C-j= | Elfeed-show-mode | Move to next item | | [[kbd:][C-j]] | elfeed-show-mode | Move to next item |
| =C-k= | Elfeed-show-mode | Move to previous item | | [[kbd:][C-k]] | elfeed-show-mode | Move to previous item |
+ If ~:editor evil +everywhere~ + If ~:editor evil +everywhere~
| Key | Description | | Key | Description |
|-----+-----------------------------| |-----+-----------------------------|
| q | elfeed-kill-buffer | | [[kbd:][q]] | elfeed-kill-buffer |
| r | elfeed-search-update--force | | [[kbd:][r]] | elfeed-search-update--force |
| g c | Copy link of current entry | | [[kbd:][g c]] | Copy link of current entry |
** News filtering ** News filtering
+ Time filtering + Time filtering
@ -106,9 +116,18 @@ When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to c
+ Exclude ~!something~ + Exclude ~!something~
** Automatically updating feed when opening elfeed ** Automatically updating feed when opening elfeed
Hook ~elfeed-update~ to ~elfeed-search-mode-hook~ Hook ~elfeed-update~ to ~elfeed-search-mode-hook~:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(add-hook! 'elfeed-search-mode-hook 'elfeed-update) (add-hook 'elfeed-search-mode-hook #'elfeed-update)
#+END_SRC #+end_src
* TODO Troubleshooting * Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,96 +1,102 @@
#+TITLE: app/twitter # -*- mode: doom-docs-org -*-
#+DATE: October 11, 2019 #+title: :app twitter
#+SINCE: v2.0 #+subtitle: Be superficial in plain text
#+STARTUP: inlineimages #+created: October 11, 2019
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
- [[#appendix][Appendix]]
- [[#commands--keybindings][Commands & Keybindings]]
* Description
Enjoy twitter from emacs. Enjoy twitter from emacs.
+ View various timelines side by side, e.g. user's timeline, home, etc. - View various timelines side by side, e.g. user's timeline, home, etc.
+ Post new tweets - Post new tweets
+ Send direct messages - Send direct messages
+ Retweet - Retweet
+ Follow and un-follow users - Follow and un-follow users
+ Favorite tweets - Favorite tweets
** Module Flags ** Maintainers
This module provides no flags. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Plugins ** Module flags
+ [[https://github.com/hayamiz/twittering-mode][twittering-mode]] /This module has no flags./
+ [[https://github.com/abo-abo/avy][avy]]
** TODO Hacks ** Packages
{A list of internal modifications to included packages} - [[doom-package:][avy]]
- [[doom-package:][twittering-mode]]
* Prerequisites ** Hacks
/No hacks documented for this module./
+ For SSL connection (required by Twitter's API), one of the followings is required: ** TODO Changelog
+ [[http://curl.haxx.se/][cURL]] # This section will be machine generated. Don't edit it by hand.
+ [[http://www.gnu.org/software/wget/][GNU Wget]] /This module does not have a changelog yet./
+ [[http://www.openssl.org/][OpenSSL]]
+ [[http://www.gnu.org/software/gnutls/][GnuTLS]]
+ [[http://www.gnupg.org/][GnuPG]] is required for keeping the OAuth token encrypted in local storage.
+ ~twittering-icon-mode~ converts retrieved icons into XPM by default. To
achieve this and for displaying icons in formats that are not supported by
Emacs as well as for resizing icon images, [[http://www.imagemagick.org/][ImageMagick]] is required.
To build emacs with ImageMagick support the ~--with-imagemagick~ flag needs to * Installation
be passed to the ~configure~ script, e.g. ~./configure --with-imagemagick~. [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
For detailed instruction on how to build Emacs from source please refer to
[[https://git.savannah.gnu.org/cgit/emacs.git/tree/INSTALL][INSTALL]] in Emacs' savannah repository.
+ For keeping retrieved icons in local storage, [[http://www.gzip.org/][gzip]] is required.
* TODO Features This module requires:
An in-depth list of features, how to use them, and their dependencies. - One of the following (for SSL connections; required by Twitter's API):
- [[http://curl.haxx.se/][cURL]]
- [[http://www.gnu.org/software/wget/][GNU Wget]]
- [[http://www.openssl.org/][OpenSSL]]
- [[http://www.gnu.org/software/gnutls/][GnuTLS]]
- [[http://www.gnupg.org/][GnuPG]], for encrypting the OAuth token, stored locally.
- [[http://www.gzip.org/][gzip]], for compressing retrieved profile pictures,
- [[http://www.imagemagick.org/][ImageMagick]], for displaying and resizing profile pictures.
Build Emacs with ImageMagick support using the ~--with-imagemagick~ flag ([[https://git.savannah.gnu.org/cgit/emacs.git/tree/INSTALL][how
to build Emacs from source]]).
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
How to configure this module, including common problems and how to address them. #+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Troubleshooting
Currently ~twittering-mode~ binds =SPC=, breaking its functionality as a leader
key. To work around this issue you may use =M-SPC= instead when in
~twittering-mode~.
* Appendix
** Commands & Keybindings ** Commands & Keybindings
Here is a list of available commands and their default keybindings (defined in Here is a list of available commands and their default keybindings (defined in
[[./config.el][config.el]]). [[./config.el][config.el]]):
| command | key / ex command | description | | command | key / ex command | description |
|---------------------+------------------+-------------------------------------------------------------| |---------------------+------------------+-------------------------------------------------------------|
| ~+twitter/quit~ | =q= | Close current window | | ~+twitter/quit~ | [[kbd:][q]] | Close current window |
| ~+twitter/quit-all~ | =Q= | Close all twitter windows and buffers, and delete workspace | | ~+twitter/quit-all~ | [[kbd:][Q]] | Close all twitter windows and buffers, and delete workspace |
And when ~:editor evil +everywhere~ is active:
And when [[doom-module:][:editor evil +everywhere]] is active:
| command | key / ex command | description | | command | key / ex command | description |
|--------------------------------------------------+------------------+------------------------------------------------------------------| |--------------------------------------------------+------------------+------------------------------------------------------------------|
| ~twittering-favorite~ | =f= | Favorite/Like a tweet | | ~twittering-favorite~ | [[kbd:][f]] | Favorite/Like a tweet |
| ~twittering-unfavorite~ | =F= | Un-favorite/Un-like a tweet | | ~twittering-unfavorite~ | [[kbd:][F]] | Un-favorite/Un-like a tweet |
| ~twittering-follow~ | =C-f= | Follow user | | ~twittering-follow~ | [[kbd:][C-f]] | Follow user |
| ~twittering-unfollow~ | =C-F= | Un-follow user | | ~twittering-unfollow~ | [[kbd:][C-F]] | Un-follow user |
| ~twittering-delete-status~ | =d= | Delete a tweet | | ~twittering-delete-status~ | [[kbd:][d]] | Delete a tweet |
| ~twittering-retweet~ | =r= | Retweet | | ~twittering-retweet~ | [[kbd:][r]] | Retweet |
| ~twittering-toggle-or-retrieve-replied-statuses~ | =R= | Toggle or retrieve replies | | ~twittering-toggle-or-retrieve-replied-statuses~ | [[kbd:][R]] | Toggle or retrieve replies |
| ~twittering-update-status-interactive~ | =o= | Update tweets | | ~twittering-update-status-interactive~ | [[kbd:][o]] | Update tweets |
| ~+twitter/ace-link~ | =O= | Open some visible link from a ~twittering-mode~ buffer using ace | | ~+twitter/ace-link~ | [[kbd:][O]] | Open some visible link from a ~twittering-mode~ buffer using ace |
| ~twittering-search~ | =/= | Search | | ~twittering-search~ | [[kbd:][/]] | Search |
| ~twittering-goto-next-status~ | =J= | Go to next tweet | | ~twittering-goto-next-status~ | [[kbd:][J]] | Go to next tweet |
| ~twittering-goto-previous-status~ | =K= | Go to previous tweet | | ~twittering-goto-previous-status~ | [[kbd:][K]] | Go to previous tweet |
| ~twittering-goto-first-status~ | =gg= | Go to first tweet | | ~twittering-goto-first-status~ | [[kbd:][gg]] | Go to first tweet |
| ~twittering-goto-last-status~ | =G= | Go to last tweet | | ~twittering-goto-last-status~ | [[kbd:][G]] | Go to last tweet |
| ~twittering-goto-next-status-of-user~ | =gj= | Go to next tweet of user | | ~twittering-goto-next-status-of-user~ | [[kbd:][gj]] | Go to next tweet of user |
| ~twittering-goto-previous-status-of-user)))~ | =gk= | Go to previous tweet of user | | ~twittering-goto-previous-status-of-user)))~ | [[kbd:][gk]] | Go to previous tweet of user |
* Troubleshooting
[[doom-report:][Report an issue?]]
** ~twittering-mode~ overrides the [[kbd:][SPC]] key
Currently ~twittering-mode~ binds [[kbd:][SPC]], breaking its functionality as a leader
key for evil users. To work around this issue you may use [[kbd:][M-SPC]] instead.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,10 @@
# -*- mode: doom-docs-org -*-
#+title: :checkers
#+created: August 01, 2021
#+since: 21.12.0
* Description
For modules dedicated to linting plain text (primarily code and prose).
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,68 +1,76 @@
#+TITLE: checkers/grammar # -*- mode: doom-docs-org -*-
#+DATE: January 9, 2020 #+title: :checkers grammar
#+SINCE: v3.0.0 #+subtitle: Tasing grammar mistake every you make
#+STARTUP: inlineimages nofold #+created: January 09, 2020
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#language-tool][Language Tool]]
- [[#commands][Commands]]
- [[#writegood-mode][writegood-mode]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds grammar checking to Emacs to aid your writing by combining This module adds grammar checking to Emacs to aid your writing by combining
=lang-tool= and =writegood-mode=. [[doom-package:][lang-tool]] and [[doom-package:][writegood-mode]].
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
+ [[https://github.com/mhayashi1120/Emacs-langtool][langtool]] - [[doom-package:][langtool]]
+ [[https://github.com/bnbeckwith/writegood-mode][writegood-mode]] - [[doom-package:][writegood-mode]]
* Prerequisites ** Hacks
This module requires langtool (which requires =Java 1.8+=). /No hacks documented for this module./
It can be acquired either from https://languagetool.org/ or your OS's package ** TODO Changelog
manager: # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
+ macOS: ~brew install languagetool~ * Installation
+ Arch Linux: ~pacman -S languagetool~ [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module tries to guess the location of languagetool-commandline.jar. If you This module requires [[https://languagetool.org/][LanguageTool]] (which requires =Java 1.8+=).
get a warning that Doom =couldn't find languagetool-commandline.jar=, you will
need to set ~langtool-language-tool-jar~ to its location.
* Features It is available from either https://languagetool.org/ or your OS's package
An in-depth list of features, how to use them, and their dependencies. manager. E.g.
- macOS: ~$ brew install languagetool~
- Arch Linux: ~$ pacman -S languagetool~
This module tries to guess the location of =languagetool-commandline.jar=. If
you get a warning that Doom ~couldn't find languagetool-commandline.jar~, you
will need to set ~langtool-language-tool-jar~ to its location.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Language Tool ** Language Tool
[[https://www.languagetool.org/][Language Tool]] is a polyglot proofreader service that checks for grammar and [[https://www.languagetool.org/][Language Tool]] is a polyglot proofreader service that checks for grammar and
stylistic issues in your writing. This requires Java 1.8+. stylistic issues in your writing. This requires Java 1.8+.
#+begin_quote #+begin_quote
This requires Java 1.8+ 🚧 This requires Java 1.8+
#+end_quote #+end_quote
*** Commands *** Commands
- ~langtool-check~ - ~M-x langtool-check~
- ~langtool-correct-buffer~ - ~M-x langtool-correct-buffer~
** writegood-mode ** writegood-mode
This minor mode highlights weasel words, duplication and passive voice. This minor mode highlights weasel words, duplication and passive voice.
* Configuration * TODO Configuration
How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,149 +1,154 @@
#+TITLE: checkers/spell # -*- mode: doom-docs-org -*-
#+DATE: February 20, 2017 #+title: :checkers spell
#+SINCE: v2.0 #+subtitle: Tasing you for misspelling mispelling
#+STARTUP: inlineimages nofold #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This modules provides spellchecking powered by =aspell=, =hunspell= or
- [[#maintainers][Maintainers]] =enchant=.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#aspell][Aspell]]
- [[#hunspell][Hunspell]]
- [[#enchant][Enchant]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#changing-how-quickly-spell-fu-spellchecks-after-changes][Changing how quickly spell-fu spellchecks after changes]]
- [[#spell-fu-users][Spell-fu users]]
- [[#flyspell-users][Flyspell users]]
- [[#reducing-false-positives-by-disabling-spelling-on-certain-faces][Reducing false positives by disabling spelling on certain faces]]
- [[#spell-fu-users-1][Spell-fu users]]
- [[#flyspell-users-1][Flyspell users]]
- [[#adding-or-removing-words-to-your-personal-dictionary][Adding or removing words to your personal dictionary]]
- [[#troubleshooting][Troubleshooting]]
* Description
This modules provides spellchecking powered by =aspell=, =hunspell= or =enchant=.
Spellcheck is automatically loaded in many ~text-mode~ derivatives, which Spellcheck is automatically loaded in many ~text-mode~ derivatives, which
includes ~org-mode~, ~markdown-mode~, the Git Commit buffer (from magit), includes ~org-mode~, ~markdown-mode~, the Git Commit buffer (from magit),
~mu4e-compose-mode~, and others. ~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]]).
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+flyspell= Use =flyspell= instead of =spell-fu=. It's significantly slower, - +aspell ::
but supports multiple languages and dictionaries. Use =aspell= as a backend for correcting words.
+ =+aspell= Use =aspell= as a backend for correcting words. - +enchant ::
+ =+hunspell= Use =hunspell= as a backend for correcting words. Use =enchant-2= as a backend for correcting words.
+ =+enchant= Use =enchant-2= as a backend for correcting words. - +everywhere ::
+ =+everywhere= Spell check in programming modes as well (in comments). Spell check in programming modes as well (in comments only).
- +flyspell ::
Use [[doom-package:][flyspell]] instead of [[doom-package:][spell-fu]]. It's significantly slower, but supports
multiple languages and dictionaries.
- +hunspell ::
Use =hunspell= as a backend for correcting words.
** Plugins ** Packages
+ if =+flyspell= - if [[doom-module:][+flyspell]]
+ [[https://github.com/d12frosted/flyspell-correct][flyspell-correct]] - [[doom-package:][flyspell-correct]]
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-ivy-interface][flyspell-correct-ivy]] (=completion/ivy=) - [[doom-package:][flyspell-correct-ivy]] if [[doom-module:][:completion ivy]]
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-helm-interface][flyspell-correct-helm]] (=completion/helm=) - [[doom-package:][flyspell-correct-helm]] if [[doom-module:][:completion helm]]
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-popup-interface][flyspell-correct-popup]] (if *neither* =completion/ivy=, =completion/helm= or =completion/vertico=) - [[doom-package:][flyspell-correct-popup]] unless [[doom-module:][:completion ivy]], [[doom-module:][:completion helm]], or
+ [[https://github.com/rolandwalker/flyspell-lazy][flyspell-lazy]] [[doom-module:][:completion vertico]]
+ else - [[doom-package:][flyspell-lazy]]
+ [[https://gitlab.com/ideasman42/emacs-spell-fu][spell-fu]] - else
- [[doom-package:][spell-fu]]
* Prerequisites ** Hacks
This module requires one of =aspell=, =hunspell= or =enchant-2= /No hacks documented for this module./
installed on your system and in your ~PATH~.
They also need dictionaries for your language(s). ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires one of =aspell=, =hunspell= or =enchant-2= installed on
your system and in your =$PATH=. They also need dictionaries for your
language(s).
#+begin_quote #+begin_quote
If you *are not* using =+flyspell=, you will need aspell (and a dictionary) 🚧 If you *are not* using [[doom-module:][+flyspell]], you will need =aspell= (and a dictionary)
installed whether or not you have =+hunspell= or =+enchant= enabled. installed whether or not you have [[doom-module:][+hunspell]] or [[doom-module:][+enchant]] enabled. This is
This is because =spell-fu= does not support generating the word list because [[doom-package:][spell-fu]] does not support generating the word list with anything
with anything other than =aspell= yet. other than =aspell= yet.
#+end_quote #+end_quote
** Aspell ** Aspell
+ Ubuntu: ~apt-get install aspell aspell-en~ - Ubuntu: ~$ apt-get install aspell aspell-en~
+ macOS: ~brew install aspell~ - macOS: ~$ brew install aspell~
+ Arch Linux: ~pacman -S aspell aspell-en~ - Arch Linux: ~$ pacman -S aspell aspell-en~
+ NixOS: - NixOS:
#+BEGIN_SRC nix #+begin_src nix
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
(aspellWithDicts (dicts: with dicts; [ en en-computers en-science ])) (aspellWithDicts (dicts: with dicts; [ en en-computers en-science ]))
]; ];
} }
#+END_SRC #+end_src
** Hunspell ** Hunspell
+ Ubuntu: ~apt-get install hunspell~ - Ubuntu: ~$ apt-get install hunspell~
+ macOS: ~brew install hunspell~ - macOS: ~$ brew install hunspell~
+ Arch Linux: ~pacman -S hunspell~ - Arch Linux: ~$ pacman -S hunspell~
+ NixOS: - NixOS:
#+BEGIN_SRC nix #+begin_src nix
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
hunspell hunspell
]; ];
} }
#+END_SRC #+end_src
** Enchant ** Enchant
+ Ubuntu: ~apt-get install enchant-2~ - Ubuntu: ~$ apt-get install enchant-2~
+ macOS: ~brew install enchant~ - macOS: ~$ brew install enchant~
+ Arch Linux: ~pacman -S enchant~ - Arch Linux: ~$ pacman -S enchant~
+ NixOS: - NixOS:
#+BEGIN_SRC nix #+begin_src nix
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
enchant enchant
]; ];
} }
#+END_SRC #+end_src
Enchant is just a wrapper for other spelling libraries Enchant is just a wrapper for other spelling libraries and you will need to
and you will need to have at least one of the supported backends installed as well. have at least one of the supported backends installed as well.
* Features * TODO Usage
+ Spell checking and correction using =aspell=, =hunspell= or =enchant=. #+begin_quote
+ Ignores source code inside org or markdown files. 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
+ Lazily spellchecking recent changes only when idle. #+end_quote
+ Choosing suggestions using completion interfaces (=ivy= or =helm=).
When using =+everywhere=, spell checking is performed for as many major modes as When using [[doom-module:][+everywhere]], spell checking is performed for as many major modes as
possible, and not only ~text-mode~ derivatives. e.g. in comments for programming possible, and not only ~text-mode~ derivatives. e.g. in comments for programming
major modes. major modes.
* Configuration * TODO Configuration
Dictionary is set by =ispell-dictionary= variable. Can be changed locally with #+begin_quote
the function =ispell-change-dictionary=. 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Changing how quickly spell-fu spellchecks after changes Dictionary is set by ~ispell-dictionary~ variable. Can be changed locally with
the function ~ispell-change-dictionary~.
** Changing how quickly spelling is checked after changes
*** Spell-fu users *** Spell-fu users
Adjust ~spell-fu-idle-delay~ to change how long Emacs waits to spellcheck after Adjust ~spell-fu-idle-delay~ to change how long Emacs waits to spellcheck after
recent changes. recent changes:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(after! spell-fu (after! spell-fu
(setq spell-fu-idle-delay 0.5)) ; default is 0.25 (setq spell-fu-idle-delay 0.5)) ; default is 0.25
#+END_SRC #+end_src
*** Flyspell users *** Flyspell users
Lazy spellcheck is provided by =flyspell-lazy= package. Lazy spellcheck is provided by [[doom-package:][flyspell-lazy]] package.
=flyspell-lazy-idle-seconds= sets how many idle seconds until spellchecking ~flyspell-lazy-idle-seconds~ sets how many idle seconds until spellchecking
recent changes (default as 1), while =flyspell-lazy-window-idle-seconds= sets recent changes (default as 1), while ~flyspell-lazy-window-idle-seconds~ sets
how many seconds until the whole window is spellchecked (default as 3). how many seconds until the whole window is spellchecked (default as 3):
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(after! flyspell (after! flyspell
(setq flyspell-lazy-idle-seconds 2)) (setq flyspell-lazy-idle-seconds 2))
#+END_SRC #+end_src
** Reducing false positives by disabling spelling on certain faces ** Reducing false positives by disabling spelling on certain faces
*** Spell-fu users *** Spell-fu users
Users can exclude what faces to preform spellchecking on by adjusting Users can exclude what faces to preform spellchecking on by adjusting
~+spell-excluded-faces-alist~ in a buffer-local hook: ~+spell-excluded-faces-alist~ in a buffer-local hook:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(setf (alist-get 'markdown-mode +spell-excluded-faces-alist) (setf (alist-get 'markdown-mode +spell-excluded-faces-alist)
'(markdown-code-face '(markdown-code-face
markdown-reference-face markdown-reference-face
@ -153,18 +158,19 @@ Users can exclude what faces to preform spellchecking on by adjusting
markdown-html-attr-value-face markdown-html-attr-value-face
markdown-html-attr-name-face markdown-html-attr-name-face
markdown-html-tag-name-face)) markdown-html-tag-name-face))
#+END_SRC #+end_src
*** Flyspell users *** Flyspell users
Flyspell will run a series of predicate functions to determine if a word should be spell checked. You can add your own with ~set-flyspell-predicate!~: Flyspell will run a series of predicate functions to determine if a word should
#+BEGIN_SRC elisp be spell checked. You can add your own with ~set-flyspell-predicate!~:
#+begin_src emacs-lisp
(set-flyspell-predicate! '(markdown-mode gfm-mode) (set-flyspell-predicate! '(markdown-mode gfm-mode)
#'+markdown-flyspell-word-p) #'+markdown-flyspell-word-p)
#+END_SRC #+end_src
Flyspell predicates take no arguments and must return a boolean to determine if Flyspell predicates take no arguments and must return a boolean to determine if
the word at point should be spell checked. For example: the word at point should be spell checked. For example:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(defun +markdown-flyspell-word-p () (defun +markdown-flyspell-word-p ()
"Return t if point is on a word that should be spell checked. "Return t if point is on a word that should be spell checked.
@ -183,13 +189,46 @@ Return nil if on a link url, markup, html, or references."
for face in faces for face in faces
if (memq face unsafe-faces) if (memq face unsafe-faces)
return t))))) return t)))))
#+END_SRC #+end_src
** Adding or removing words to your personal dictionary ** Adding or removing words to your personal dictionary
Use ~M-x +spell/add-word~ and ~M-x +spell/remove-word~ to whitelist words that Use ~M-x +spell/add-word~ and ~M-x +spell/remove-word~ to whitelist words that
you know are not misspellings. For evil users these are bound to =zg= and =zw=, you know are not misspellings. For evil users these are bound to [[kbd:][zg]] and [[kbd:][zw]],
respectively. =+flyspell= users can also add/remove words from the respectively. [[doom-module:][+flyspell]] users can also add/remove words from the
~flyspell-correct~ popup interface (there will be extra options on the list of [[doom-package:][flyspell-correct]] popup interface (there will be extra options on the list of
corrections for "save word to dictionary"). corrections for "save word to dictionary").
* TODO Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
** spell-fu highlights every single word
[[doom-package:][spell-fu]] caches its word list. If it was activated before your dictionaries were
installed, it will generate an empty word list, causing it to highlight all
words as incorrect. Delete its cache files in =$EMACSDIR/.local/etc/spell-fu/=
to fix this.
** Cannot add [word] to any active dictionary
*** Aspell
If ~M-x +spell/add-word~ results in the above error this mean that the
personal dictionary file was not created for some reason. This can be
fixed by creating the required file manually.
#+begin_example shell
mkdir -p ~/.emacs.d/.local/etc/ispell
echo personal_ws-1.1 en 0 > ~/.emacs.d/.local/etc/ispell/.pws
#+end_example
Where ~personal_ws-1.1 en 0~ is the required header format for the personal
dictionary file. ~en~ is the language you're writing in and have a dict
installed and ~0~ is the number of added words in the dictionary. If you are
planning of updating the file with the list of words, update the number
accordingly.
After the file is created, restart emacs and adding words should work.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,66 +1,84 @@
#+TITLE: checkers/syntax # -*- mode: doom-docs-org -*-
#+DATE: February 20, 2017 #+title: :checkers syntax
#+SINCE: v2.0 #+subtitle: Tasing you for every semicolon you forget
#+STARTUP: inlineimages nofold #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides syntax checking and error highlighting, powered by
- [[#maintainers][Maintainers]] [[doom-package:][flycheck]].
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module provides syntax checking and error highlighting, powered by [[https://github.com/flycheck/flycheck][flycheck]]
+ If possible, include a brief list of feature highlights here
+ Like code completion, syntax checking or available snippets
+ Include links to packages & external things where possible
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+childframe= Enables displaying completion candidates in a child frame, rather than an overlay or tooltip (among with other UI enhancements). - +childframe ::
Display errors/warnings in a [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html][child frame]] rather than an overlay or tooltip.
*Requires GUI Emacs.*
** Packages
** Plugins - [[doom-package:][flycheck]]
+ [[https://github.com/flycheck/flycheck][flycheck]] - [[doom-package:][flycheck-popup-tip]]
+ [[https://github.com/flycheck/flycheck-popup-tip][flycheck-popup-tip]] - [[doom-package:][flycheck-posframe]] if [[doom-module:][+childframe]]
+ =+childframe=
+ [[https://github.com/alexmurray/flycheck-posframe][flycheck-posframe]]
** Hacks ** Hacks
If =lsp-ui-mode= is active, most of the aesthetic functionality of this module is turned off, as they show the same information. - If ~lsp-ui-mode~ is active, most of the aesthetic functionality of this module
is turned off, as they show the same information.
* Prerequisites ** TODO Changelog
This module has no direct prerequisites. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
However, some major modes may require a specific linter or program to work, and some major modes may not work at all. The best way to find these dependencies is by either reading the documentation for that module, or running =doom doctor=. * Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module has no direct requirements, but some languages may have their own
requirements to fulfill before you get syntax checking in them (and some
languages may lack syntax checking support altogether). Run ~$ doom doctor~ to
find out if you're missing any dependencies.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
Most of flycheck's features are under [[kbd:][C-c !]], regardless of whether evil mode is
used.
* Features
Most of flycheck's features are under =C-c !=, regardless of whether evil mode is used.
| Keybind | Description | | Keybind | Description |
| C-c ! ? | Describe Checker ] | |---------+-----------------------------|
| C-c ! c | Check syntax in buffer | | [[kbd:][C-c ! ?]] | Describe Checker |
| C-c ! l | List errors | | [[kbd:][C-c ! c]] | Check syntax in buffer |
| C-c ! n | Next Error | | [[kbd:][C-c ! l]] | List errors |
| C-c ! p | Previous error | | [[kbd:][C-c ! n]] | Next Error |
| C-c ! C | Clear all errors in buffer | | [[kbd:][C-c ! p]] | Previous error |
| C-c ! e | Explain error at point | | [[kbd:][C-c ! C]] | Clear all errors in buffer |
| C-c ! h | Display all errors at point | | [[kbd:][C-c ! e]] | Explain error at point |
| [[kbd:][C-c ! h]] | Display all errors at point |
Evil Specific Evil Specific:
| Keybind | Description | | Keybind | Description |
| SPC t f | Toggle Flycheck | |---------+-----------------|
| SPC c x | List errors | | [[kbd:][SPC t f]] | Toggle Flycheck |
| ] e | Next error | | [[kbd:][SPC c x]] | List errors |
| [ e | Prevous error | | [[kbd:][] e]] | Next error |
| [[kbd:][[ e]] | Prevous error |
* TODO Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
- Use ~M-x flycheck-verify-setup~ to determine what checkers are available in a
buffer and whether they're active or not (and why).
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,19 @@
# -*- mode: doom-docs-org -*-
#+title: :completion
#+created: July 29, 2021
#+since: 21.12.0
* Description
These modules provide interfaces and frameworks completion, including code
completion.
* Frequently asked questions
** Should I choose Ivy, Helm, Vertico, or Ido?
:PROPERTIES:
:ID: 4f36ae11-1da8-4624-9c30-46b764e849fc
:END:
Vertico is Doom's default and comes highly recommended of the four. It is the
fastest, best integrated in Doom's ecosystem, and its module is the most
actively maintained of the four. It also has the cleanest codebase and ties into
native functionality already existing in Emacs, rather than reinventing the
wheel.

View file

@ -1,92 +1,103 @@
#+TITLE: completion/company # -*- mode: doom-docs-org -*-
#+DATE: February 19, 2017 #+title: :completion company
#+SINCE: v2.0 #+subtitle: The ultimate code completion backend
#+STARTUP: inlineimages #+created: February 19, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides code completion, powered by [[https://github.com/company-mode/company-mode][company-mode]]. Many of Doom's
- [[#module-flags][Module Flags]] [[doom-module:][:lang]] modules require it for "intellisense" functionality.
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#code-completion][Code completion]]
- [[#vim-esque-omni-completion-prefix-c-x][Vim-esque omni-completion prefix (C-x)]]
- [[#configuration][Configuration]]
- [[#enable-company-backends-in-certain-modes][Enable company backend(s) in certain modes]]
- [[#troubleshooting][Troubleshooting]]
- [[#x-mode-doesnt-have-code-completion-support-or-requires-extra-setup][X-mode doesn't have code completion support or requires extra setup.]]
- [[#no-backends-or-the-incorrect-ones-have-been-registered-for-x-mode][No backends (or the incorrect ones) have been registered for X-mode.]]
* Description
This module provides code completion, powered by [[https://github.com/company-mode/company-mode][company-mode]]. It is required
for code completion in many of Doom's :lang modules.
https://assets.doomemacs.org/completion/company/overlay.png https://assets.doomemacs.org/completion/company/overlay.png
** Module Flags ** Maintainers
+ =+childframe= Enables displaying completion candidates in a child frame, - [[doom-user:][@hlissner]]
rather than an overlay or tooltip (among with other UI enhancements). *This
requires GUI Emacs 26.1+ and is incompatible with the =+tng= flag*
+ =+tng= Enables completion using only ~TAB~. Pressing ~TAB~ will select the
next completion suggestion, while ~S-TAB~ will select the previous one. *This
is incompatible with the =+childframe= flag*
** Plugins [[doom-contrib-maintainer:][Become a maintainer?]]
+ [[https://github.com/company-mode/company-mode][company-mode]]
+ [[https://github.com/hlissner/emacs-company-dict][company-dict]]
+ [[https://github.com/sebastiencs/company-box][company-box]]* (=+childframe=)
* Prerequisites ** Module flags
This module has no direct prerequisites. - +childframe ::
Display completion candidates in a [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html][child frame]] rather than an overlay or
tooltip. *Requires GUI Emacs.*
- +tng ::
Invoke completion on [[kbd:][TAB]] instad of [[kbd:][C-SPC]]. When company is active, [[kbd:][TAB]] and
[[kbd:][S-TAB]] will navigate the completion candidates.
However, some major modes may require additional setup for code completion to ** Packages
work in them. Some major modes may have no completion support at all. Check that - [[doom-package:][company-box]] if [[doom-module:][+childframe]]
major mode's module's documentation for details. - [[doom-package:][company-dict]]
- [[doom-package:][company-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module has no direct requirements, but some languages may have their own
requirements to fulfill before you get code completion in them (and some
languages may lack code completion support altogether). Run ~$ doom doctor~ to
find out if you're missing any dependencies.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features
** Code completion ** Code completion
By default, completion is triggered after a short idle period or with the By default, completion is triggered after a short idle period or with the
=C-SPC= key. While the popup is visible, the following keys are available: [[kbd:][C-SPC]] key. While the popup is visible, the following keys are available:
| Keybind | Description | | Keybind | Description |
|---------+------------------------------------------| |---------+------------------------------------------|
| =C-n= | Go to next candidate | | [[kbd:][C-n]] | Go to next candidate |
| =C-p= | Go to previous candidate | | [[kbd:][C-p]] | Go to previous candidate |
| =C-j= | (evil) Go to next candidate | | [[kbd:][C-j]] | (evil) Go to next candidate |
| =C-k= | (evil) Go to previous candidate | | [[kbd:][C-k]] | (evil) Go to previous candidate |
| =C-h= | Display documentation (if available) | | [[kbd:][C-h]] | Display documentation (if available) |
| =C-u= | Move to previous page of candidates | | [[kbd:][C-u]] | Move to previous page of candidates |
| =C-d= | Move to next page of candidates | | [[kbd:][C-d]] | Move to next page of candidates |
| =C-s= | Filter candidates | | [[kbd:][C-s]] | Filter candidates |
| =C-S-s= | Search candidates with helm/ivy | | [[kbd:][C-S-s]] | Search candidates with helm/ivy |
| =C-SPC= | Complete common | | [[kbd:][C-SPC]] | Complete common |
| =TAB= | Complete common or select next candidate | | [[kbd:][TAB]] | Complete common or select next candidate |
| =S-TAB= | Select previous candidate | | [[kbd:][S-TAB]] | Select previous candidate |
** Vim-esque omni-completion prefix (C-x) ** Vim-esque omni-completion prefix (C-x)
In the spirit of Vim's omni-completion, the following insert mode keybinds are In the spirit of Vim's omni-completion, the following insert mode keybinds are
available to evil users to access specific company backends: available to evil users to access specific company backends:
| Keybind | Description | | Keybind | Description |
|-----------+-----------------------------------| |---------+-----------------------------------|
| =C-x C-]= | Complete etags | | [[kbd:][C-x C-]]] | Complete etags |
| =C-x C-f= | Complete file path | | [[kbd:][C-x C-f]] | Complete file path |
| =C-x C-k= | Complete from dictionary/keyword | | [[kbd:][C-x C-k]] | Complete from dictionary/keyword |
| =C-x C-l= | Complete full line | | [[kbd:][C-x C-l]] | Complete full line |
| =C-x C-o= | Invoke complete-at-point function | | [[kbd:][C-x C-o]] | Invoke complete-at-point function |
| =C-x C-n= | Complete next symbol at point | | [[kbd:][C-x C-n]] | Complete next symbol at point |
| =C-x C-p= | Complete previous symbol at point | | [[kbd:][C-x C-p]] | Complete previous symbol at point |
| =C-x C-s= | Complete snippet | | [[kbd:][C-x C-s]] | Complete snippet |
| =C-x s= | Complete spelling suggestions | | [[kbd:][C-x s]] | Complete spelling suggestions |
** Searching with multiple keywords
If the =vertico= module is enabled, users can perform code completion with multiple search keywords with an ampersand =&=.
More information can be found [[https://github.com/oantolin/orderless#company][here]].
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Enable company backend(s) in certain modes ** Enable company backend(s) in certain modes
The ~set-company-backend!~ function exists for setting ~company-backends~ The ~set-company-backend!~ function exists for setting ~company-backends~
buffer-locally in MODES, which is either a major-mode symbol, a minor-mode buffer-locally in MODES, which is either a major-mode symbol, a minor-mode
symbol, or a list of either. BACKENDS are prepended to ~company-backends~ for symbol, or a list of either. BACKENDS are prepended to ~company-backends~ for
those modes. those modes.
#+BEGIN_SRC emacs-lisp #+begin_src emacs-lisp
(after! js2-mode (after! js2-mode
(set-company-backend! 'js2-mode 'company-tide 'company-yasnippet)) (set-company-backend! 'js2-mode 'company-tide 'company-yasnippet))
@ -97,20 +108,18 @@ those modes.
(after! cc-mode (after! cc-mode
(set-company-backend! 'c-mode (set-company-backend! 'c-mode
'(:separate company-irony-c-headers company-irony))) '(:separate company-irony-c-headers company-irony)))
#+END_SRC #+end_src
To unset the backends for a particular mode, pass ~nil~ to it: To unset the backends for a particular mode, pass ~nil~ to it:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(after! sh-script (after! sh-script
(set-company-backend! 'sh-mode nil)) (set-company-backend! 'sh-mode nil))
#+END_SRC #+end_src
* Troubleshooting * Troubleshooting
If code completion isn't working for you, consider the following common causes [[doom-report:][Report an issue?]]
before you file a bug report:
** X-mode doesn't have code completion support or requires extra setup. ** X-mode doesn't have code completion support or requires extra setup
There is no guarantee your language mode will have completion support. There is no guarantee your language mode will have completion support.
Some, like ~lua-mode~, don't have completion support in Emacs at all. Others may Some, like ~lua-mode~, don't have completion support in Emacs at all. Others may
@ -120,11 +129,19 @@ requires that you have a Robe server running (~M-x robe-start~).
Check the relevant module's documentation for this kind of information. Check the relevant module's documentation for this kind of information.
** No backends (or the incorrect ones) have been registered for X-mode. ** No backends (or the incorrect ones) have been registered for X-mode
Doom expects every mode to have an explicit list of company-backends (and as Doom expects every mode to have an explicit list of ~company-backends~ (and as
short a list as possible). This may mean you aren't getting all the completion short a list as possible). This may mean you aren't getting all the completion
you want or any at all. you want or any at all.
Check the value of ~company-backends~ (=SPC h v company-backends=) from that Check the value of ~company-backends~ ([[kbd:][SPC h v company-backends]]) from that mode
mode to see what backends are available. Check the [[*Assigning company backend(s) to modes][Configuration section]] for to see what backends are available. Check the [[*Assigning company backend(s) to modes][Configuration section]] for details
details on changing what backends are available for that mode. on changing what backends are available for that mode.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,169 +1,183 @@
#+TITLE: completion/helm # -*- mode: doom-docs-org -*-
#+DATE: January 22, 2021 #+title: :completion helm
#+SINCE: v2.0 #+subtitle: A tank for hunting a house fly
#+STARTUP: inlineimages #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides Helm integration for a variety of Emacs commands, as well
- [[#module-flags][Module Flags]] as a unified interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep][Ripgrep]].
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#jump-to-navigation][Jump-to navigation]]
- [[#project-search--replace][Project search & replace]]
- [[#search][Search]]
- [[#replace][Replace]]
- [[#in-buffer-searching][In-buffer searching]]
- [[#helm-integration-for-various-completing-commands][Helm integration for various completing commands]]
- [[#general][General]]
- [[#jump-to-files-buffers-or-projects][Jump to files, buffers or projects]]
- [[#search-1][Search]]
- [[#configuration][Configuration]]
- [[#icons][Icons]]
- [[#posframe][Posframe]]
- [[#troubleshooting][Troubleshooting]]
* Description ** Maintainers
This module provides Helm integration for a variety of Emacs commands, as well as /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
a unified interface for project search and replace, powered by ripgrep.
** Module flags
- +childframe ::
Display Helm windows in a [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html][child frame]] rather than an popup buffer. *Requires
GUI Emacs.*
- +fuzzy ::
Enable fuzzy completion for Helm searches.
- +icons ::
Display icons on completion results (where possible) using either
[[doom-package:][all-the-icons]] or [[doom-package:][treemacs]] iconsets.
** Packages
- [[doom-package:][helm]]
- [[doom-package:][helm-company]]
- [[doom-package:][helm-c-yasnippet]]
- [[doom-package:][helm-descbinds]]
- [[doom-package:][helm-describe-modes]]
- [[doom-package:][helm-flx]]* if [[doom-module:][+fuzzy]]
- [[doom-package:][helm-icons]]* if [[doom-module:][+icons]]
- [[doom-package:][helm-org]]* if [[doom-module:][:lang org]]
- [[doom-package:][helm-posframe]]* if [[doom-module:][+childframe]]
- [[doom-package:][helm-projectile]]
- [[doom-package:][helm-rg]]
- [[doom-package:][helm-swiper]]
** TODO Hacks
#+begin_quote #+begin_quote
I prefer ivy over ido for its flexibility. I prefer ivy over helm because it's 🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
lighter, simpler and faster in many cases.
#+end_quote #+end_quote
Ivy is considered a first-class citizen in Doom, however it is still possible to use Helm if you so desire. ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
** Module Flags * Installation
+ =+fuzzy= Enables fuzzy completion for Helm searches. [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
+ =+childframe= Causes Helm to display in a floating child frame, above Emacs.
+ =+icons= Enables icons (supports both =all-the-icons= and =treemacs= icons)
** Plugins This module has only one requirement: [[https://github.com/BurntSushi/ripgrep][Ripgrep]], which is a hard dependency of
+ [[https://github.com/emacs-helm/helm][helm]] Doom itself, so you should already have it installed.
+ [[https://github.com/microamp/helm-rg][helm-rg]]
+ [[https://github.com/emacs-jp/helm-c-yasnippet][helm-c-yasnippet]]
+ [[https://github.com/tuhdo/helm-company][helm-company]]
+ [[https://github.com/emacs-helm/helm-describe-modes][helm-describe-modes]]
+ [[https://github.com/bbatsov/helm-projectile][helm-projectile]]
+ [[https://github.com/abo-abo/swiper-helm][helm-swiper]]
+ [[https://github.com/emacs-helm/helm-descbinds][helm-descbinds]]
+ [[https://github.com/PythonNut/helm-flx][helm-flx]]* (=+fuzzy=)
+ [[https://github.com/tumashu/helm-posframe][helm-posframe]]* (=+childframe=)
+ [[https://github.com/emacs-helm/helm-org][helm-org]]* (=:lang org=)
+ [[https://github.com/yyoncho/helm-icons][helm-icons]]* (=+icons=)
* Prerequisites Otherwise, Helm provides many commands to interface with a variety of programs
This module has no prerequisites. from [[https://github.com/junegunn/fzf][fzf]] to [[https://kapeli.com/dash][Dash docsets]] to [[https://www.passwordstore.org/][pass]] and /much/ more. These programs are optional
for this module, but must be installed if you intend to use their associated
Helm command or plugin.
* Features * TODO Usage
Much like Ivy, Helm is a /large/ framework and as such #+begin_quote
covering everything is not in scope, however a number 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
of Doom-specific features are shown below: #+end_quote
Much like [[doom-package:][ivy]] and [[doom-package:][vertico]], [[doom-package:][helm]] is a /large/ framework. Covering all its
features is not within the scope of this module's documentation, so only its
highlights will be covered here.
** Jump-to navigation ** Jump-to navigation
Similar to Ivy, this module provides an interface to Similar to Ivy, this module provides an interface to navigate within a project
navigate within a project using =projectile=: using [[doom-package:][projectile]]:
| Keybind | Description | | Keybind | Description |
|------------------+-------------------------------------| |------------------+-------------------------------------|
| =SPC p f=, =SPC SPC= | Jump to file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
| =SPC f f=, =SPC .= | Jump to file from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
| =SPC s i= | Jump to symbol in file | | [[kbd:][SPC s i]] | Jump to symbol in file |
** Project search & replace ** Project search & replace
This module also provides interacetive text search and replace using ripgrep This module also provides interactive text search and replace using ripgrep.
*** Search *** Search
| Keybind | Description | | Keybind | Description |
|---------+--------------------------| |---------+--------------------------|
| =SPC s p= | Search project | | [[kbd:][SPC s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][SPC s P]] | Search another project |
| =SPC s d= | Search this directory | | [[kbd:][SPC s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][SPC s D]] | Search another directory |
Prefixing these keys with the universal argument (=SPC u= for evil users; =C-u=
Prefixing these keys with the universal argument ([[kbd:][SPC u]] for evil users; [[kbd:][C-u]]
otherwise) changes the behavior of these commands, instructing the underlying otherwise) changes the behavior of these commands, instructing the underlying
search engine to include ignored files. search engine to include ignored files.
This module also provides Ex Commands for evil users: This module also provides Ex Commands for evil users:
| Ex command | Description | | Ex command | Description |
|------------------------+------------------------------------------------------------------| |------------------------+------------------------------------------------------------------|
| ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) | | ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) |
| ~:pg[rep]d[!] [QUERY]~ | Search from current directory (if ~!~, don't search recursively) | | ~:pg[rep]d[!] [QUERY]~ | Search from current directory (if ~!~, don't search recursively) |
The optional `!` is equivalent to the universal argument for the previous The optional ~!~ is equivalent to the universal argument for the previous
commands. commands.
*** Replace *** Replace
These keybindings are available while a search is active: These keybindings are available while a search is active:
| Keybind | Description | | Keybind | Description |
|-----------+-----------------------------------------------| |---------+-----------------------------------------------|
| =C-c C-o= | Open a buffer with your search results | | [[kbd:][C-c C-o]] | Open a buffer with your search results |
| =C-c C-e= | Open a writable buffer of your search results | | [[kbd:][C-c C-e]] | Open a writable buffer of your search results |
| =C-SPC= | Preview the current candidate | | [[kbd:][C-SPC]] | Preview the current candidate |
| =C-RET= | Open the selected candidate in other-window | | [[kbd:][C-RET]] | Open the selected candidate in other-window |
Changes to the resulting wgrep buffer (opened by =C-c C-e=) can be committed Changes to the resulting wgrep buffer (opened by [[kbd:][C-c C-e]]) can be committed with
with =C-c C-c= and aborted with =C-c C-k= (alternatively =ZZ= and =ZQ=, for evil [[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]] (alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users).
users).
** In-buffer searching ** In-buffer searching
The =swiper= package provides an interactive buffer search powered by helm. It The [[doom-package:][swiper]] package provides an interactive buffer search powered by helm. It can
can be invoked with: be invoked with:
- [[kbd:][SPC s s]] (~swiper-isearch~)
- [[kbd:][SPC s S]] (~swiper-isearch-thing-at-point~)
- [[kbd:][SPC s b]] (~swiper~)
- ~:sw[iper] [QUERY]~
+ =SPC s s= (~swiper-isearch~) A wgrep buffer can be opened from swiper with [[kbd:][C-c C-e]].
+ =SPC s S= (~swiper-isearch-thing-at-point~)
+ =SPC s b= (~swiper~)
+ ~:sw[iper] [QUERY]~
A wgrep buffer can be opened from swiper with =C-c C-e=.
** Helm integration for various completing commands ** Helm integration for various completing commands
Helm also has a number of overrides for built-in functionality: Helm also has a number of overrides for built-in functionality:
*** General *** General
| Keybind | Description | | Keybind | Description |
|------------+---------------------------| |------------+---------------------------|
| =M-x=, =SPC := | Smarter, smex-powered M-x | | [[kbd:][M-x]], [[kbd:][SPC :]] | Smarter, smex-powered M-x |
| =SPC '= | Resume last ivy session | | [[kbd:][SPC ']] | Resume last ivy session |
*** Jump to files, buffers or projects *** Jump to files, buffers or projects
| Keybind | Description | | Keybind | Description |
|------------------+---------------------------------------| |------------------+---------------------------------------|
| =SPC RET= | Find bookmark | | [[kbd:][SPC RET]] | Find bookmark |
| =SPC f f=, =SPC .= | Browse from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
| =SPC p f=, =SPC SPC= | Find file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
| =SPC f r= | Find recently opened file | | [[kbd:][SPC f r]] | Find recently opened file |
| =SPC p p= | Open another project | | [[kbd:][SPC p p]] | Open another project |
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace | | [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
| =SPC b B=, =SPC <= | Switch to buffer | | [[kbd:][SPC b B]], [[kbd:][SPC <]] | Switch to buffer |
*** Search *** Search
| Keybind | Description | | Keybind | Description |
|---------+-------------------------------------------| |---------+-------------------------------------------|
| =SPC p t= | List all TODO/FIXMEs in project | | [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
| =SPC s b= | Search the current buffer | | [[kbd:][SPC s b]] | Search the current buffer |
| =SPC s d= | Search this directory | | [[kbd:][SPC s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][SPC s D]] | Search another directory |
| =SPC s i= | Search for symbol in current buffer | | [[kbd:][SPC s i]] | Search for symbol in current buffer |
| =SPC s p= | Search project | | [[kbd:][SPC s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][SPC s P]] | Search another project |
| =SPC s s= | Search the current buffer (incrementally) | | [[kbd:][SPC s s]] | Search the current buffer (incrementally) |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Icons ** Icons
Icons are now included, and support 2 providers ([[https://github.com/domtronn/all-the-icons.el][all-the-icons]] and [[https://github.com/Alexander-Miller/treemacs][treemacs]]). Icon support is now included, through one of two providers: [[doom-package:][all-the-icons]] and
By default, to maintain consistency we use =all-the-icons=; however if you wish [[doom-package:][treemacs]]. By default, to maintain consistency we use [[doom-package:][all-the-icons]]; however if
to modify this you can do so using the below snippet: you wish to modify this you can do so using the below snippet:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(after! helm (after! helm
(setq helm-icons-provider 'treemacs)) (setq helm-icons-provider 'treemacs))
#+end_src #+end_src
** Posframe ** TODO Posframe
* Troubleshooting * Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** Helm vs Ivy vs Ido vs Vertico
See [[id:4f36ae11-1da8-4624-9c30-46b764e849fc][this answer]].
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,57 @@
# -*- mode: doom-docs-org -*-
#+title: :completion ido
#+subtitle: A foil for other search engines
#+created: February 20, 2017
#+since: 2.0.0
* Description :unfold:
Interactive DO things. The completion engine that is /mostly/ built-into Emacs.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][crm-custom]]
- [[doom-package:][flx-ido]]
- [[doom-package:][ido-completing-read+]]
- [[doom-package:][ido-sort-mtime]]
- [[doom-package:][ido-vertical-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** Helm vs Ivy vs Ido vs Vertico
See [[id:4f36ae11-1da8-4624-9c30-46b764e849fc][this answer]].
* Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -9,7 +9,6 @@
(use-package! ido (use-package! ido
:hook (doom-first-input . ido-mode) :hook (doom-first-input . ido-mode)
:hook (ido-mode . ido-everywhere)
:hook (ido-mode . ido-ubiquitous-mode) :hook (ido-mode . ido-ubiquitous-mode)
:preface :preface
;; HACK `ido' is a really old package. It defines `ido-mode' manually and ;; HACK `ido' is a really old package. It defines `ido-mode' manually and
@ -29,7 +28,8 @@
ido-confirm-unique-completion t ido-confirm-unique-completion t
ido-case-fold t ido-case-fold t
ido-create-new-buffer 'always ido-create-new-buffer 'always
ido-enable-flex-matching t) ido-enable-flex-matching t
ido-everywhere t)
(map! :map (ido-common-completion-map ido-file-completion-map) (map! :map (ido-common-completion-map ido-file-completion-map)
"C-w" #'ido-delete-backward-word-updir "C-w" #'ido-delete-backward-word-updir

View file

@ -1,28 +1,10 @@
#+TITLE: completion/ivy # -*- mode: doom-docs-org -*-
#+DATE: February 13, 2017 #+title: :completion ivy
#+SINCE: v2.0 #+subtitle: Yesterday's lightest search engine
#+STARTUP: inlineimages #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#jump-to-navigation][Jump-to navigation]]
- [[#project-search--replace][Project search & replace]]
- [[#in-buffer-searching][In-buffer searching]]
- [[#ivy-integration-for-various-completing-commands][Ivy integration for various completing commands]]
- [[#general][General]]
- [[#jump-to-files-buffers-or-projects][Jump to files, buffers or projects]]
- [[#search][Search]]
- [[#configuration][Configuration]]
- [[#enable-fuzzynon-fuzzy-search-for-specific-commands][Enable fuzzy/non-fuzzy search for specific commands]]
- [[#change-the-position-of-the-ivy-childframe][Change the position of the ivy childframe]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module provides Ivy integration for a variety of Emacs commands, as well as 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]]. a unified interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep/][ripgrep]].
@ -31,63 +13,87 @@ I prefer ivy over ido for its flexibility. I prefer ivy over helm because it's
lighter, simpler and faster in many cases. lighter, simpler and faster in many cases.
#+end_quote #+end_quote
** Module Flags ** Maintainers
+ =+fuzzy= Enables fuzzy completion for Ivy searches. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+prescient= Enables prescient filtering and sorting for Ivy searches.
+ =+childframe= Causes Ivy to display in a floating child frame, above Emacs.
+ =+icons= Enables file icons for switch-{buffer,project}/find-file counsel
commands.
** Plugins ** Module flags
+ [[https://github.com/abo-abo/swiper][ivy]] - +childframe ::
+ [[https://github.com/abo-abo/swiper][counsel]] Display Ivy windows in a [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html][child frame]] rather than an popup buffer. *Requires
+ [[https://github.com/ericdanan/counsel-projectile][counsel-projectile]] GUI Emacs.*
+ [[https://github.com/abo-abo/swiper][swiper]] - +fuzzy ::
+ [[https://github.com/abo-abo/swiper][ivy-hydra]] Enable fuzzy completion for Ivy searches.
+ [[https://github.com/yevgnen/ivy-rich][ivy-rich]] - +icons ::
+ [[https://github.com/mhayashi1120/Emacs-wgrep][wgrep]] Enable file icons for switch-{buffer,project}/find-file commands.
+ [[https://github.com/DarwinAwardWinner/amx][amx]] - +prescient ::
+ [[https://github.com/lewang/flx][flx]]* (=+fuzzy=) Enable prescient filtering and sorting for Ivy searches.
+ [[https://github.com/raxod502/prescient.el][prescient]]* (=+prescient=)
+ [[https://github.com/tumashu/ivy-posframe][ivy-posframe]]* (=+childframe=) ** Packages
+ [[https://github.com/asok/all-the-icons-ivy][all-the-icons-ivy]]* (=+icons=) - [[doom-package:][all-the-icons-ivy]]* if [[doom-module:][+icons]]
- [[doom-package:][amx]]
- [[doom-package:][counsel]]
- [[doom-package:][counsel-projectile]]
- [[doom-package:][flx]]* if [[doom-module:][+fuzzy]]
- [[doom-package:][ivy]]
- [[doom-package:][ivy-hydra]]
- [[doom-package:][ivy-posframe]]* if [[doom-module:][+childframe]]
- [[doom-package:][ivy-rich]]
- [[doom-package:][prescient]]* if [[doom-module:][+prescient]]
- [[doom-package:][swiper]]
- [[doom-package:][wgrep]]
** Hacks ** Hacks
+ Functions with ivy/counsel equivalents have been globally remapped (like - Functions with ivy/counsel equivalents have been globally remapped (like
~find-file~ => ~counsel-find-file~). So a keybinding to ~find-file~ will ~find-file~ => ~counsel-find-file~). So a keybinding to ~find-file~ will
invoke ~counsel-find-file~ instead. invoke ~counsel-find-file~ instead.
+ ~counsel-[arp]g~'s 3-character limit was reduced to 1 (mainly for the ex - ~counsel-[arp]g~'s 3-character limit was reduced to 1 (mainly for the ex
command) command)
* Prerequisites ** TODO Changelog
This module has no prerequisites. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Features * Installation
Ivy and its ilk are large plugins. Covering everything about them is outside of [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
this documentation's scope, so only Doom-specific Ivy features are listed here:
This module has only one requirement: [[https://github.com/BurntSushi/ripgrep][Ripgrep]], which is a hard dependency of
Doom itself, so you should already have it installed.
Otherwise, Counsel (an Ivy plugin) provides many commands to interface with a
variety of programs from [[https://github.com/junegunn/fzf][fzf]] to [[https://kapeli.com/dash][Dash docsets]] to [[https://www.passwordstore.org/][pass]] and /much/ more. These
programs are optional for this module, but must be installed if you intend to
use their associated Helm command or plugin.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
[[doom-package:][ivy]] is a /large/ framework for completing things. Covering all its features is
not within the scope of this module's documentation, so only its highlights will
be covered here.
** Jump-to navigation ** Jump-to navigation
Inspired by Sublime Text's jump-to-anywhere, CtrlP/Unite in Vim, and Textmate's Inspired by Sublime Text's jump-to-anywhere, CtrlP/Unite in Vim, and Textmate's
Command-T, this module provides similar functionality by bringing ~projectile~ Command-T, this module provides similar functionality by bringing [[doom-package:][projectile]] and
and ~ivy~ together. [[doom-package:][ivy]] together.
https://assets.doomemacs.org/completion/ivy/projectile.png https://assets.doomemacs.org/completion/ivy/projectile.png
| Keybind | Description | | Keybind | Description |
|----------------------+-------------------------------------| |------------------+-------------------------------------|
| =SPC p f=, =SPC SPC= | Jump to file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
| =SPC f f=, =SPC .= | Jump to file from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
| =SPC s i= | Jump to symbol in file | | [[kbd:][SPC s i]] | Jump to symbol in file |
** Project search & replace ** Project search & replace
This module provides interactive text search and replace using ripgrep. This module provides interactive text search and replace using ripgrep.
| Keybind | Description | | Keybind | Description |
|-----------+--------------------------| |---------+--------------------------|
| =SPC s p= | Search project | | [[kbd:][SPC s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][SPC s P]] | Search another project |
| =SPC s d= | Search this directory | | [[kbd:][SPC s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][SPC s D]] | Search another directory |
https://assets.doomemacs.org/completion/ivy/search.png https://assets.doomemacs.org/completion/ivy/search.png
@ -96,7 +102,6 @@ otherwise) changes the behavior of these commands, instructing the underlying
search engine to include ignored files. search engine to include ignored files.
This module also provides Ex Commands for evil users: This module also provides Ex Commands for evil users:
| Ex command | Description | | Ex command | Description |
|------------------------+------------------------------------------------------------------| |------------------------+------------------------------------------------------------------|
| ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) | | ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) |
@ -108,65 +113,79 @@ commands.
----- -----
These keybindings are available while a search is active: These keybindings are available while a search is active:
| Keybind | Description | | Keybind | Description |
|-----------+-----------------------------------------------| |---------+-----------------------------------------------|
| =C-c C-o= | Open a buffer with your search results | | [[kbd:][C-c C-o]] | Open a buffer with your search results |
| =C-c C-e= | Open a writable buffer of your search results | | [[kbd:][C-c C-e]] | Open a writable buffer of your search results |
| =C-SPC= | Preview the current candidate | | [[kbd:][C-SPC]] | Preview the current candidate |
| =C-RET= | Open the selected candidate in other-window | | [[kbd:][C-RET]] | Open the selected candidate in other-window |
Changes to the resulting wgrep buffer (opened by =C-c C-e=) can be committed Changes to the resulting wgrep buffer (opened by [[kbd:][C-c C-e]]) can be committed with
with =C-c C-c= and aborted with =C-c C-k= (alternatively =ZZ= and =ZQ=, for evil [[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]] (alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users).
users).
https://assets.doomemacs.org/completion/ivy/search-replace.png https://assets.doomemacs.org/completion/ivy/search-replace.png
** In-buffer searching ** In-buffer searching
The =swiper= package provides an interactive buffer search powered by ivy. It The [[doom-package:][swiper]] package provides an interactive buffer search powered by ivy. It
can be invoked with: can be invoked with:
+ =SPC s s= (~swiper-isearch~) - [[kbd:][SPC s s]] (~swiper-isearch~)
+ =SPC s S= (~swiper-isearch-thing-at-point~) - [[kbd:][SPC s S]] (~swiper-isearch-thing-at-point~)
+ =SPC s b= (~swiper~) - [[kbd:][SPC s b]] (~swiper~)
+ ~:sw[iper] [QUERY]~ - ~:sw[iper] [QUERY]~
https://assets.doomemacs.org/completion/ivy/swiper.png https://assets.doomemacs.org/completion/ivy/swiper.png
A wgrep buffer can be opened from swiper with =C-c C-e=. A wgrep buffer can be opened from swiper with [[kbd:][C-c C-e]].
** Ivy integration for various completing commands ** Ivy integration for various completing commands
*** General *** General
| Keybind | Description | | Keybind | Description |
|----------------+---------------------------| |------------+---------------------------|
| =M-x=, =SPC := | Smarter, smex-powered M-x | | [[kbd:][M-x]], [[kbd:][SPC :]] | Smarter, smex-powered M-x |
| =SPC '= | Resume last ivy session | | [[kbd:][SPC ']] | Resume last ivy session |
*** Jump to files, buffers or projects *** Jump to files, buffers or projects
| Keybind | Description | | Keybind | Description |
|----------------------+---------------------------------------| |------------------+---------------------------------------|
| =SPC RET= | Find bookmark | | [[kbd:][SPC RET]] | Find bookmark |
| =SPC f f=, =SPC .= | Browse from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
| =SPC p f=, =SPC SPC= | Find file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
| =SPC f r= | Find recently opened file | | [[kbd:][SPC f r]] | Find recently opened file |
| =SPC p p= | Open another project | | [[kbd:][SPC p p]] | Open another project |
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace | | [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
| =SPC b B=, =SPC <= | Switch to buffer | | [[kbd:][SPC b B]], [[kbd:][SPC <]] | Switch to buffer |
*** Search *** Search
| Keybind | Description | | Keybind | Description |
|-----------+-------------------------------------------| |---------+-------------------------------------------|
| =SPC p t= | List all TODO/FIXMEs in project | | [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
| =SPC s b= | Search the current buffer | | [[kbd:][SPC s b]] | Search the current buffer |
| =SPC s d= | Search this directory | | [[kbd:][SPC s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][SPC s D]] | Search another directory |
| =SPC s i= | Search for symbol in current buffer | | [[kbd:][SPC s i]] | Search for symbol in current buffer |
| =SPC s p= | Search project | | [[kbd:][SPC s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][SPC s P]] | Search another project |
| =SPC s s= | Search the current buffer (incrementally) | | [[kbd:][SPC s s]] | Search the current buffer (incrementally) |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** TODO Enable fuzzy/non-fuzzy search for specific commands ** TODO Enable fuzzy/non-fuzzy search for specific commands
** TODO Change the position of the ivy childframe ** TODO Change the position of the ivy childframe
* TODO Troubleshooting * TODO Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** Helm vs Ivy vs Ido vs Vertico
See [[id:4f36ae11-1da8-4624-9c30-46b764e849fc][this answer]].
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,73 +1,66 @@
#+TITLE: completion/vertico # -*- mode: doom-docs-org -*-
#+DATE: July 25, 2021 #+title: :completion vertico
#+SINCE: v3.0.0 #+subtitle: Tomorrow's search engine
#+STARTUP: inlineimages #+created: July 25, 2021
#+since: 21.12.0 (#4664)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#vertico-keybindings][Vertico keybindings]]
- [[#jump-to-navigation][Jump-to navigation]]
- [[#project-search--replace][Project search & replace]]
- [[#in-buffer-searching][In-buffer searching]]
- [[#vertico-integration-for-various-completing-commands][Vertico integration for various completing commands]]
- [[#general][General]]
- [[#jump-to-files-buffers-or-projects][Jump to files, buffers or projects]]
- [[#search][Search]]
- [[#file-path-completion][File Path Completion]]
- [[#consult][Consult]]
- [[#multiple-candidate-search][Multiple candidate search]]
- [[#async-search-commands][Async search commands]]
- [[#marginalia][Marginalia]]
- [[#orderless-filtering][Orderless filtering]]
- [[#configuration][Configuration]]
- [[#vertico][Vertico]]
- [[#consult-1][Consult]]
- [[#marginalia-1][Marginalia]]
- [[#embark][Embark]]
* Description
This module enhances the Emacs search and completion experience, and also 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]]. 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 It does this with several modular packages focused on enhancing the built-in
~completing-read~ interface, rather than replacing it with a parallel ecosystem ~completing-read~ interface, rather than replacing it with a parallel ecosystem
like =ivy= and =helm= do. The primary packages are: like [[doom-package:][ivy]] and [[doom-package:][helm]] do. The primary packages are:
+ Vertico, which provides the vertical completion user interface - Vertico, which provides the vertical completion user interface
+ Consult, which provides a suite of useful commands using ~completing-read~ - Consult, which provides a suite of useful commands using ~completing-read~
+ Embark, which provides a set of minibuffer actions - Embark, which provides a set of minibuffer actions
+ Marginalia, which provides annotations to completion candidates - Marginalia, which provides annotations to completion candidates
+ Orderless, which provides better filtering methods - Orderless, which provides better filtering methods
** Maintainers ** Maintainers
+ @iyefrat - [[doom-user:][@iyefrat]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+icons= Adds icons to =file= and =buffer= category completion selections.
** Plugins ** Module flags
+ [[https://github.com/minad/vertico][vertico]] - +icons ::
+ [[https://github.com/minad/consult][consult]] Add icons to =file= and =buffer= category completion selections.
+ [[https://github.com/oantolin/embark/][embark]]
+ [[https://github.com/oantolin/embark/][embark-consult]]
+ [[https://github.com/minad/marginalia][marginalia]]
+ [[https://github.com/oantolin/orderless][orderless]]
+ [[https://github.com/mhayashi1120/Emacs-wgrep][wgrep]]
+ [[https://github.com/minad/consult/][consult-flycheck]] (=:checkers syntax=)
+ [[https://github.com/iyefrat/all-the-icons-completion][all-the-icons-completion]] (=+icons=)
* Prerequisites ** Packages
Some of the advanced filtering features in async =consult= commands require - [[doom-package:][all-the-icons-completion]] if [[doom-module:][+icons]]
=grep= and =ripgrep= to be built with support for [[https://www.pcre.org/][PCRE]] lookahead, see [[#async-search-commands][Async - [[doom-package:][consult]]
search commands]] for more information. You can check if this is true for your - [[doom-package:][consult-flycheck]] if [[doom-module:][:checkers syntax]]
machine by running ~doom doctor~. - [[doom-package:][embark]]
- [[doom-package:][embark-consult]]
- [[doom-package:][marginalia]]
- [[doom-package:][orderless]]
- [[doom-package:][vertico]]
- [[doom-package:][wgrep]]
* Features ** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module has only one requirement: [[https://github.com/BurntSushi/ripgrep][Ripgrep]] (built with [[https://www.pcre.org/][PCRE]] support; run ~$
doom doctor~ to determine if your build meets this requirement), which is a hard
dependency of Doom itself, so you should already have it installed.
Otherwise, Consult (a plugin this module installs) provides many commands to
interface with a variety of programs from [[https://github.com/junegunn/fzf][fzf]] to [[https://kapeli.com/dash][Dash docsets]] to [[https://www.passwordstore.org/][pass]] and /much/
more. These programs are optional for this module, but must be installed if you
intend to use their associated Helm command or plugin.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
The packages in this module modify and use the built-in ~completing-read~ The packages in this module modify and use the built-in ~completing-read~
function, which is used by any function that requires completion. Due to this function, which is used by any function that requires completion. Due to this
@ -80,117 +73,116 @@ When in an active Vertico completion session, the following doom added
keybindings are available: keybindings are available:
| Keybind | Description | | Keybind | Description |
|-----------------------+-------------------------------------------------------------------------------| |-------------------+----------------------------------------------------------------|
| =C-k= | (evil) Go to previous candidate | | [[kbd:][C-k]] | (evil) Go to previous candidate |
| =C-j= | (evil) Go to next candidate | | [[kbd:][C-j]] | (evil) Go to next candidate |
| =C-M-k= | (evil) Go to previous group | | [[kbd:][C-M-k]] | (evil) Go to previous group |
| =C-M-j= | (evil) Go to next group | | [[kbd:][C-M-j]] | (evil) Go to next group |
| =C-;= or =<leader> a= | Open an ~embark-act~ menu to chose a useful action | | [[kbd:][C-;]] or [[kbd:][<leader> a]] | Open an ~embark-act~ menu to chose a useful action |
| =C-c C-;= | ~embark-export~ the current candidate list (export to a type-specific buffer) | | [[kbd:][C-c C-;]] | export the current candidate list to a buffer |
| =C-c C-l= | ~embark-collect~ the current candidate list (collect verbatim) | | [[kbd:][C-c C-l]] | ~embark-collect~ the current candidate list (collect verbatim) |
| =C-SPC= | Preview the current candidate | | [[kbd:][C-SPC]] | Preview the current candidate |
~embark-act~ will prompt you with a =which-key= menu with useful commands on the ~embark-act~ will prompt you with a =which-key= menu with useful commands on the
selected candidate or candidate list, depending on the completion category. Note selected candidate or candidate list, depending on the completion category. Note
that you can press =C-h= instead of choosing a command to filter through the that you can press [[kbd:][C-h]] instead of choosing a command to filter through the
options with a Vertico buffer, that also has slightly more detailed descriptions options with a Vertico buffer, that also has slightly more detailed descriptions
due to Marginalia annotations. due to Marginalia annotations.
** Jump-to navigation ** Jump-to navigation
This module provides an interface to navigate within a project using This module provides an interface to navigate within a project using
=projectile=: [[doom-package:][projectile]]:
https://assets.doomemacs.org/completion/vertico/projectile.png https://assets.doomemacs.org/completion/vertico/projectile.png
| Keybind | Description | | Keybind | Description |
|----------------------+-------------------------------------| |------------------+-------------------------------------|
| =SPC p f=, =SPC SPC= | Jump to file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
| =SPC f f=, =SPC .= | Jump to file from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
| =SPC s i= | Jump to symbol in file | | [[kbd:][SPC s i]] | Jump to symbol in file |
** Project search & replace ** Project search & replace
This module provides interactive text search and replace using ripgrep. This module provides interactive text search and replace using ripgrep.
| Keybind | Description | | Keybind | Description |
|-----------+--------------------------| |---------+--------------------------|
| =SPC s p= | Search project | | [[kbd:][<leader> s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][<leader> s P]] | Search another project |
| =SPC s d= | Search this directory | | [[kbd:][<leader> s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][<leader> s D]] | Search another directory |
https://assets.doomemacs.org/completion/vertico/search.png https://assets.doomemacs.org/completion/vertico/search.png
Prefixing these keys with the universal argument (=SPC u= for evil users; =C-u= Prefixing these keys with the universal argument ([[kbd:][SPC u]] for evil users; [[kbd:][C-u]]
otherwise) changes the behavior of these commands, instructing the underlying otherwise) changes the behavior of these commands, instructing the underlying
search engine to include ignored files. search engine to include ignored files.
This module also provides Ex Commands for evil users: This module also provides Ex Commands for evil users:
| Ex command | Description | | Ex command | Description |
|------------------------+------------------------------------------------------------------| |----------------------+----------------------------------------------------------------|
| ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) | | ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) |
| ~:pg[rep]d[!] [QUERY]~ | Search from current directory (if ~!~, don't search recursively) | | ~:pg[rep]d[!] [QUERY]~ | Search from current directory (if ~!~, don't search recursively) |
The optional `!` is equivalent to the universal argument for the previous The optional ~!~ is equivalent to the universal argument for the previous
commands. commands.
----- -----
On top of the usual Vertico keybindings, search commands also offer support for On top of the usual Vertico keybindings, search commands also offer support for
exporting the current candidate list to an editable buffer =C-c C-e=. After exporting the current candidate list to an editable buffer [[kbd:][C-c C-e]]. After
editing the changes can be committed with =C-c C-c= and aborted with =C-c C-k= editing the changes can be committed with [[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]]
(alternatively =ZZ= and =ZQ=, for evil users). It uses =wgrep= for grep (alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users). It uses [[doom-package:][wgrep]] for grep searches,
searches, =wdired= for file searches, and =occur= for buffer searches. [[doom-package:][wdired]] for file searches, and =occur= for buffer searches.
https://assets.doomemacs.org/completion/vertico/search-replace.png https://assets.doomemacs.org/completion/vertico/search-replace.png
** In-buffer searching ** In-buffer searching
This module provides some in buffer searching bindings: This module provides some in buffer searching bindings:
+ =SPC s s= (~isearch~) - [[kbd:][SPC s s]] (~isearch~)
+ =SPC s S= (~+vertico/search-symbol-at-point~ via ~consult-line~) - [[kbd:][SPC s S]] (~+vertico/search-symbol-at-point~ via ~consult-line~)
+ =SPC s b= (~consult-line~) - [[kbd:][SPC s b]] (~consult-line~)
https://assets.doomemacs.org/completion/vertico/buffer-search.png https://assets.doomemacs.org/completion/vertico/buffer-search.png
An ~occur-edit~ buffer can be opened from ~consult-line~ with =C-c C-e=. An ~occur-edit~ buffer can be opened from ~consult-line~ with [[kbd:][C-c C-e]].
** Vertico integration for various completing commands ** Vertico integration for various completing commands
*** General *** General
| Keybind | Description | | Keybind | Description |
|----------------+-----------------------------| |------------+-----------------------------|
| =M-x=, =SPC := | Enhanced M-x | | [[kbd:][M-x]], [[kbd:][SPC :]] | Enhanced M-x |
| =SPC '= | Resume last Vertico session | | [[kbd:][SPC ']] | Resume last Vertico session |
*** Jump to files, buffers or projects *** Jump to files, buffers or projects
| Keybind | Description | | Keybind | Description |
|----------------------+---------------------------------------| |------------------+---------------------------------------|
| =SPC RET= | Find bookmark | | [[kbd:][SPC RET]] | Find bookmark |
| =SPC f f=, =SPC .= | Browse from current directory | | [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
| =SPC p f=, =SPC SPC= | Find file in project | | [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
| =SPC f r= | Find recently opened file | | [[kbd:][SPC f r]] | Find recently opened file |
| =SPC p p= | Open another project | | [[kbd:][SPC p p]] | Open another project |
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace | | [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
| =SPC b B=, =SPC <= | Switch to buffer | | [[kbd:][SPC b B]], [[kbd:][SPC <]] | Switch to buffer |
=SPC b b= and =SPC ,= support changing the workspace you're selecting a buffer from [[kbd:][SPC b b]] and [[kbd:][SPC ,]] support changing the workspace you're selecting a buffer from
via [[https://github.com/minad/consult#narrowing-and-grouping][Consult narrowing]], e.g. if you're on the first workspace, you can switch to via [[https://github.com/minad/consult#narrowing-and-grouping][Consult narrowing]], e.g. if you're on the first workspace, you can switch to
selecting a buffer from the third workspace by typing =3 SPC= into the prompt, selecting a buffer from the third workspace by typing [[kbd:][3 SPC]] into the prompt, or
or the last workspace by typing =0 SPC=. the last workspace by typing [[kbd:][0 SPC]].
=SPC f f= and =SPC .= support exporting to a =wdired= buffer using =C-c C-e=. [[kbd:][SPC f f]] and [[kbd:][SPC .]] support exporting to a [[kbd:][wdired]] buffer using [[kbd:][C-c C-e]].
*** Search *** Search
| Keybind | Description | | Keybind | Description |
|-----------+-------------------------------------------| |---------+-------------------------------------------|
| =SPC p t= | List all TODO/FIXMEs in project | | [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
| =SPC s b= | Search the current buffer | | [[kbd:][SPC s b]] | Search the current buffer |
| =SPC s d= | Search this directory | | [[kbd:][SPC s d]] | Search this directory |
| =SPC s D= | Search another directory | | [[kbd:][SPC s D]] | Search another directory |
| =SPC s i= | Search for symbol in current buffer | | [[kbd:][SPC s i]] | Search for symbol in current buffer |
| =SPC s p= | Search project | | [[kbd:][SPC s p]] | Search project |
| =SPC s P= | Search another project | | [[kbd:][SPC s P]] | Search another project |
| =SPC s s= | Search the current buffer (incrementally) | | [[kbd:][SPC s s]] | Search the current buffer (incrementally) |
*** File Path Completion *** File Path Completion
Note that Emacs allows you to switch directories with shadow paths, for example Note that Emacs allows you to switch directories with shadow paths, for example
@ -206,17 +198,20 @@ This module modifies the default keybindings used in
~consult-completing-read-multiple~: ~consult-completing-read-multiple~:
| Keybind | Description | | Keybind | Description |
|---------+-------------------------------------------------------------| |---------+-------------------------------------------------------------|
| =TAB= | Select or deselect current candidate | | [[kbd:][TAB]] | Select or deselect current candidate |
| =RET= | Enters selected candidates (also toggles current candidate) | | [[kbd:][RET]] | Enters selected candidates (also toggles current candidate) |
*** Async search commands *** Async search commands
:PROPERTIES:
:ID: 4ab16bf0-f9e8-4798-8632-ee7b13d2291e
:END:
Consult async commands (e.g. ~consult-ripgrep~) will have a preceding separator Consult async commands (e.g. ~consult-ripgrep~) will have a preceding separator
character (usually =#=) before the search input. This is known as the =perl= character (usually ~#~) before the search input. This is known as the =perl=
splitting style. Input typed after the separator will be fed to the async splitting style. Input typed after the separator will be fed to the async
command until you type a second seperator, afterwhich the candidate list will be command until you type a second seperator, afterwhich the candidate list will be
filtered with Emacs instead (and can be filtered using =orderless=, for filtered with Emacs instead (and can be filtered using [[doom-package:][orderless]], for example).
example). The specific seperator character can be changed by editing it, and The specific seperator character can be changed by editing it, and might be
might be different if the initial input already contains =#=. different if the initial input already contains =#=.
Note that grep-like async commands translate the input (between the first and Note that grep-like async commands translate the input (between the first and
second =#=) to an Orderless-light expression: space separated inputs are all second =#=) to an Orderless-light expression: space separated inputs are all
@ -229,11 +224,11 @@ For more information [[https://github.com/minad/consult#asynchronous-search][see
** Marginalia ** Marginalia
| Keybind | Description | | Keybind | Description |
|---------+---------------------------------| |---------+---------------------------------|
| =M-A= | Cycle between annotation levels | | [[kbd:][M-A]] | Cycle between annotation levels |
Marginalia annotations for symbols (e.g. =SPC h f= and =SPC h v=) come with Marginalia annotations for symbols (e.g. [[kbd:][SPC h f]] and [[kbd:][SPC h v]]) come with extra
extra information the nature of the symbol. For the meaning of the annotations information the nature of the symbol. For the meaning of the annotations see
see ~marginalia--symbol-class~. ~marginalia--symbol-class~.
** Orderless filtering ** Orderless filtering
When using orderless to filter through candidates, the default behaviour is for When using orderless to filter through candidates, the default behaviour is for
@ -246,40 +241,62 @@ first matched candidate as input. Filtering further is instead achieved by
pressing space and entering another input. In essence, when trying to match pressing space and entering another input. In essence, when trying to match
=foobar.org=, instead of option 1., use option 2.: =foobar.org=, instead of option 1., use option 2.:
1. (BAD) Enter =foo TAB=, completes to =foobar.=, enter =org RET= 1. (BAD) Enter ~foo TAB~, completes to =foobar.=, enter ~org RET~
2. (GOOD) Enter =foo SPC org RET= 2. (GOOD) Enter ~foo SPC org RET~
Doom has some builtin [[https://github.com/oantolin/orderless#style-dispatchers][style dispatchers]] for more finegrained filtering, which Doom has some builtin [[https://github.com/oantolin/orderless#style-dispatchers][style dispatchers]] for more fine-grained filtering, which
you can use to further specify each space separated input in the following ways: you can use to further specify each space separated input in the following ways:
| Input | Description | | Input | Description |
|------------------+----------------------------------------------| |--------------+------------------------------------------|
| =!foo= | match without literal input =foo= | | ~!foo~ | match without literal input =foo= |
| =%foo= or =foo%= | perform ~char-fold-to-regexp~ on input =foo= | | ~%foo~ or ~foo%~ | perform ~char-fold-to-regexp~ on input =foo= |
| =`foo= or =foo`= | match input =foo= as an initialism | | ~`foo~ or ~foo`~ | match input =foo= as an initialism |
| ==foo= or =foo== | match only with literal input =foo= | | ~=foo~ or ~foo=~ | match only with literal input =foo= |
| =~foo= or =foo~= | match input =foo= with fuzzy/flex matching | | ~~foo~ or ~foo~~ | match input =foo= with fuzzy/flex matching |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
If you want to further configure this module, here are some good places to
start:
* Configuration
If you want to further configure this module, here are some good places to start:
** Vertico ** Vertico
Vertico provides several [[https://github.com/minad/vertico#extensions][extentions]] that can be used to extend it's interface Vertico provides several [[https://github.com/minad/vertico#extensions][extentions]] that can be used to extend it's interface
** Consult ** Consult
Much of the behaviour of Consult commands can be changed with Much of the behaviour of Consult commands can be changed with
~consult-customize~. The =vertico= module already does this, if you want to ~consult-customize~. The =vertico= module already does this, if you want to
override the module's modifications, do: override the module's modifications, do:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq consult--read-config nil) (setq consult--read-config nil)
(consult-customize (consult-customize ...)
;...
)
#+end_src #+end_src
If you are changing the preview key (set to =C-SPC=), remember to change the
If you are changing the preview key (set to [[kbd:][C-SPC]]), remember to change the
binding on ~vertico-map~ as well, as the binding there gets previews to work to binding on ~vertico-map~ as well, as the binding there gets previews to work to
an extent on non-consult commands as well. an extent on non-consult commands as well.
** Marginalia ** Marginalia
You can add more Marginalia annotation levels and change the existing ones by You can add more Marginalia annotation levels and change the existing ones by
editing ~marginalia-annotator-registry~ editing ~marginalia-annotator-registry~
** Embark ** Embark
You can change the available commands in Embark for category ~$cat~ by editing You can change the available commands in Embark for category ~$cat~ by editing
~embark-$cat-map~, and even add new categories. Note that you add categories ~embark-$cat-map~, and even add new categories. Note that you add categories by
by defining them [[https://github.com/minad/marginalia/#adding-custom-annotators-or-classifiers][through marginalia]], and embark picks up on them. defining them [[https://github.com/minad/marginalia/#adding-custom-annotators-or-classifiers][through marginalia]], and embark picks up on them.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** Helm vs Ivy vs Ido vs Vertico
See [[id:4f36ae11-1da8-4624-9c30-46b764e849fc][this answer]].
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

11
modules/config/README.org Normal file
View file

@ -0,0 +1,11 @@
# -*- mode: doom-docs-org -*-
#+title: :config
#+created: July 29, 2021
#+since: 21.12.0
* Description
Modules in this category provide sane defaults or improve your ability to
configure Emacs. It is best to load these last.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,44 +1,69 @@
#+TITLE: :config default # -*- mode: doom-docs-org -*-
#+title: :config default
#+subtitle: Reasonable defaults for reasonable people
#+created: February 14, 2018
#+since: 2.0.9
* Description :unfold:
This module provides a set of reasonable defaults, including: This module provides a set of reasonable defaults, including:
+ A Spacemacs-esque keybinding scheme - A Spacemacs-inspired keybinding scheme
+ Extra Ex commands for evil-mode users - A configuration for (almost) universally repeating searches with [[kbd:][;]] and [[kbd:][,]]
+ A yasnippet snippets library tailored to Doom emacs - A [[doom-package:][smartparens]] configuration for smart completion of certain delimiters, like
+ A configuration for (almost) universally repeating searches with =;= and =,= ~/* */~ command blocks in C-languages, ~<?php ?>~ tags in PHP, or ~def end~ in
Ruby/Crystal/etc.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +bindings :: ...
- +smartparens :: ...
** Packages
- [[doom-package:][avy]]
- [[doom-package:][drag-stuff]]
- [[doom-package:][link-hint]]
- [[doom-package:][expand-region]] unless [[doom-module:][:editor evil]]
** Hacks
- ~epa-pinentry-mode~ is set to ~'loopback~, forcing gpg-agent to use the Emacs
minibuffer when prompting for your passphrase. *Only works with GPG 2.1+!*
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote #+begin_quote
The defaults module is intended as a "reasonable-defaults" module, but also as a 🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
reference for your own private modules. You'll find [[https://github.com/hlissner/doom-emacs-private][my private module in a
separate repo]].
Refer to the [[https://github.com/hlissner/doom-emacs/wiki/Customization][Customization page]] on the wiki for details on starting your own
private module.
#+end_quote #+end_quote
* Table of Contents :TOC: * TODO Configuration
- [[#install][Install]] #+begin_quote
- [[#configuration][Configuration]] 🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
- [[#im-not-an-evil-user][I'm not an evil user...]] #+end_quote
- [[#appendix][Appendix]]
- [[#commands][Commands]]
- [[#hacks][Hacks]]
* Install * Troubleshooting
This module has no external dependencies. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Configuration * Frequently asked questions
** I'm not an evil user... /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
That's fine. All evil configuration is ignored if =:editor evil= is disabled.
* TODO Appendix
#+begin_quote
🔨 /This module's appendix is incomplete./ [[doom-contrib-module:][Write more?]]
#+end_quote
* Appendix
** Commands ** Commands
+ ~+default/browse-project~ - ~+default/browse-project~
+ ~+default/browse-templates~ - ~+default/browse-templates~
+ ~+default/find-in-templates~ - ~+default/find-in-templates~
+ ~+default/browse-notes~ - ~+default/browse-notes~
+ ~+default/find-in-notes~ - ~+default/find-in-notes~
+ ~+default/find-in-snippets~ - ~+default/find-in-snippets~
** Hacks
+ ~epa-pinentry-mode~ is set to ~'loopback~, forcing gpg-agent to use the Emacs
minibuffer when prompting for your passphrase. *Only works with GPG 2.1+!*

View file

@ -1,106 +1,125 @@
#+TITLE: config/literate # -*- mode: doom-docs-org -*-
#+DATE: May 4, 2020 #+title: :config literate
#+SINCE: v2.0.9 #+subtitle: Disguise your config as poor documentation
#+STARTUP: inlineimages nofold #+created: May 28, 2020
#+since: 2.0.9
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#change-the-location-of-configorg][Change the location of config.org]]
- [[#change-where-src-blocks-are-tangled-or-prevent-it-entirely][Change where src blocks are tangled or prevent it entirely]]
- [[#troubleshooting][Troubleshooting]]
- [[#how-to-tangle-to-doomdirinitel][How to tangle to =DOOMDIR/init.el=]]
- [[#how-to-disable-tangle-on-save][How to disable tangle-on-save]]
* Description
This module enables support for a literate config. This module enables support for a literate config.
A literate config consists of a =DOOMDIR/config.org=. All src blocks within are 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. tangled =$DOOMDIR/config.el=, by default, when ~$ doom sync~ is executed.
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
This module installs no plugins. /This module doesn't install any packages./
* Prerequisites ** Hacks
This module has no prerequisites. /No hacks documented for this module./
* Features ** TODO Changelog
+ Automatically tangles ~config.org~ to ~config.el~ when saving. See # This section will be machine generated. Don't edit it by hand.
Troubleshooting section belong on how to disable it. /This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module only requires a =$DOOMDIR/config.org=, which will be tangled into
=$DOOMDIR/config.el= when you run ~$ doom sync~.
#+begin_quote
🚧 *Be careful!* Enabling this module will overwrite =$DOOMDIR/config.el=! If
you are only trying out the module, *back up this file first!*
#+end_quote
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
- Automatically tangles =$DOOMDIR/config.org= to =$DOOMDIR/config.el= when
saving. See [[*Troubleshooting][Troubleshooting]] section belong on how to disable it.
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Change the location of config.org ** Change the location of config.org
The ~+literate-config-file~ variable controls where to look for your config.org. The ~+literate-config-file~ variable controls where to look for your config.org.
To change this it must be modified early -- in =DOOMDIR/init.el= or To change this it must be modified early -- in =$DOOMDIR/init.el= or
=DOOMDIR/cli.el=. =$DOOMDIR/cli.el=.
Source blocks needs to be in some language to be automatically tangled, for Source blocks needs to be in some language to be automatically tangled, for
example ~#+BEGIN_SRC elisp~, but it doesn't matter what language is used. All example ~#+begin_src emacs-lisp~, but it doesn't matter what language is used.
blocks are tangled to ~config.el~, but ~elisp~ gives correct syntax All blocks are tangled to ~config.el~, but ~elisp~ gives correct syntax
highlighting. If you don't want to specify language in block you can also highlighting. If you don't want to specify language in block you can also
enforce tangling by adding ~#+BEGIN_SRC :tangle yes~ enforce tangling by adding ~#+begin_src :tangle yes~
** Change where src blocks are tangled or prevent it entirely ** Change where src blocks are tangled or prevent it entirely
By default, this module tangles all src emacs-lisp blocks to config.el unless By default, this module tangles all src emacs-lisp blocks to config.el unless
otherwise specified. otherwise specified.
To specify otherwise use the =:tangle= parameter to: To specify otherwise use the ~:tangle~ parameter to:
- Specify a destination other than config.el: ~:tangle packages.el~ - Specify a destination other than config.el: ~:tangle packages.el~
- Disable tangling of the block altogether with ~:tangle no~ - Disable tangling of the block altogether with ~:tangle no~
- Or force non-elisp src blocks to tangle somewhere - Or force non-elisp src blocks to tangle somewhere
For example: For example:
#+BEGIN_SRC org #+begin_src org
,#+BEGIN_SRC elisp :tangle no ,#+begin_src emacs-lisp :tangle no
(message "Don't tangle me") (message "Don't tangle me")
,#+END_SRC ,#+end_src
,#+BEGIN_SRC elisp :tangle packages.el ,#+begin_src emacs-lisp :tangle packages.el
(package! my-package) (package! my-package)
(package! other-package) (package! other-package)
,#+END_SRC ,#+end_src
,#+BEGIN_SRC sh :tangle ~/.dotfiles/bin/script.sh :tangle-mode (identity #o755) ,#+begin_src sh :tangle ~/.dotfiles/bin/script.sh :tangle-mode (identity #o755)
#!/usr/bin/env bash #!/usr/bin/env bash
echo Hello world echo Hello world
,#+END_SRC ,#+end_src
,#+BEGIN_SRC sh :tangle ~/.dotfiles/bin/script.sh :shebang "#!/usr/bin/env bash" ,#+begin_src sh :tangle ~/.dotfiles/bin/script.sh :shebang "#!/usr/bin/env bash"
echo Hello world echo Hello world
,#+END_SRC ,#+end_src
#+END_SRC #+end_src
You'll find more information about babel src blocks and what parameters they You'll find more information about babel src blocks and what parameters they
support [[https://orgmode.org/manual/Working-with-Source-Code.html][in the manual]]. support [[https://orgmode.org/manual/Working-with-Source-Code.html][in the Org manual]].
* Troubleshooting * Troubleshooting
** How to tangle to =DOOMDIR/init.el= /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** How do I tangle to =$DOOMDIR/init.el=?
If your literate needs are more complex (e.g. you want to make your init.el If your literate needs are more complex (e.g. you want to make your init.el
literate), this module won't cut it. =init.el= is loaded long before literate), this module won't cut it. =init.el= files in modules are loaded long
=config.org= is tangled in the ~doom sync~ process. before =config.org= is tangled in the ~$ doom sync~ process.
However, Doom comes with a [[file:../../../bin/org-tangle][bin/org-tangle]] script which can be used to tangle However, Doom comes with a [[file:../../../bin/org-tangle][bin/org-tangle]] script which can be used to tangle
arbitrary org files from the command line. Use it to create your own compilation arbitrary org files from the command line. Use it to create your own compilation
workflows. This is /much/ faster than using ~org-babel-load-file~ directly to workflows. This is /much/ faster than using ~org-babel-load-file~ directly to
load your literate config every time Doom is started. load your literate config every time Doom is started.
** How to disable tangle-on-save ** How do I disable tangle-on-save?
There are occasions where tangling on save may be undesirable. Maybe it's too There are occasions where tangling on save may be undesirable. Maybe it's too
slow, produces too much noise, or happens too often (on unrelated org files in slow, produces too much noise, or happens too often (on unrelated org files in
your =DOOMDIR=). This behavior can be disabled with: your =$DOOMDIR=). This behavior can be disabled with:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
;; add to DOOMDIR/config.el ;; add to $DOOMDIR/config.el
(remove-hook 'org-mode-hook #'+literate-enable-recompile-h) (remove-hook 'org-mode-hook #'+literate-enable-recompile-h)
#+END_SRC #+end_src
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

10
modules/editor/README.org Normal file
View file

@ -0,0 +1,10 @@
# -*- mode: doom-docs-org -*-
#+title: :editor
#+created: July 30, 2021
#+since: 21.12.0
* Description
For modules concerned with the insertion and editing of text. Amen.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,114 +1,114 @@
#+TITLE: editor/evil # -*- mode: doom-docs-org -*-
#+DATE: February 2, 2017 #+title: :editor evil
#+SINCE: v2.0 #+subtitle: The text editor Emacs was missing
#+STARTUP: inlineimages nofold #+created: April 08, 2020
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This holy module brings the Vim editing model to Emacs.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#ported-vim-plugins][Ported vim plugins]]
- [[#custom-text-objects][Custom Text Objects]]
- [[#custom-ex-commands][Custom Ex Commands]]
- [[#configuration][Configuration]]
- [[#removing-evil-mode][Removing evil-mode]]
- [[#restoring-old-substitution-behavior-on-ss][Restoring old substitution behavior on s/S]]
- [[#restoring-old-y-behavior-yank-the-whole-line][Restoring old Y behavior (yank the whole line)]]
- [[#disabling-cursor-movement-when-exiting-insert-mode][Disabling cursor movement when exiting insert mode]]
* Description ** Maintainers
This holy module brings the vim experience to Emacs. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+everywhere= Enables evilified keybinds everywhere possible. Uses the
[[https://github.com/emacs-evil/evil-collection][evil-collection]] plugin as a foundation.
** Plugins ** Module flags
+ [[https://github.com/emacs-evil/evil][evil]] - +everywhere ::
+ [[https://github.com/wcsmith/evil-args][evil-args]] Enable evilified keybinds everywhere possible. Uses the [[https://github.com/emacs-evil/evil-collection][evil-collection]] plugin
+ [[https://github.com/PythonNut/evil-easymotion][evil-easymotion]] as a foundation.
+ [[https://github.com/cute-jumper/evil-embrace.el][evil-embrace]]
+ [[https://github.com/syl20bnr/evil-escape][evil-escape]] ** Packages
+ [[https://github.com/Dewdrops/evil-exchange][evil-exchange]] - [[doom-package:][evil]]
+ [[https://github.com/TheBB/evil-indent-plus][evil-indent-plus]] - [[doom-package:][evil-args]]
+ [[https://github.com/edkolev/evil-lion][evil-lion]] - [[doom-package:][evil-collection]] if [[doom-module:][+everywhere]]
+ [[https://github.com/redguardtoo/evil-nerd-commenter][evil-nerd-commentary]] - [[doom-package:][evil-easymotion]]
+ [[https://github.com/cofi/evil-numbers][evil-numbers]] - [[doom-package:][evil-embrace]]
+ [[https://github.com/noctuid/evil-textobj-anyblock][evil-textobj-anyblock]] - [[doom-package:][evil-escape]]
+ [[https://github.com/hlissner/evil-snipe][evil-snipe]] - [[doom-package:][evil-exchange]]
+ [[https://github.com/emacs-evil/evil-surround][evil-surround]] - [[doom-package:][evil-indent-plus]]
+ [[https://github.com/alexmurray/evil-vimish-fold][evil-vimish-fold]] - [[doom-package:][evil-lion]]
+ [[https://github.com/bling/evil-visualstar][evil-visualstar]] - [[doom-package:][evil-nerd-commentary]]
+ [[https://github.com/ninrod/exato][exato]] - [[doom-package:][evil-numbers]]
+ [[https://github.com/emacs-evil/evil-collection][evil-collection]]* - [[doom-package:][evil-quick-diff]]
+ [[https://www.github.com/rgrinberg/evil-quick-diff][evil-quick-diff]] - [[doom-package:][evil-snipe]]
- [[doom-package:][evil-surround]]
- [[doom-package:][evil-textobj-anyblock]]
- [[doom-package:][evil-vimish-fold]]
- [[doom-package:][evil-visualstar]]
- [[doom-package:][exato]]
** Hacks ** Hacks
+ The o/O keys will respect and continue commented lines (can be disabled by - The o/O keys will respect and continue commented lines (can be disabled by
setting ~+evil-want-o/O-to-continue-comments~ to ~nil~). setting ~+evil-want-o/O-to-continue-comments~ to ~nil~).
+ In visual mode, =*= and =#= will search for the current selection instead of - In visual mode, [[kbd:][*]] and [[kbd:][#]] will search for the current selection instead of the
the word-at-point. word-at-point.
+ The ~:g[lobal]~ ex command has been modified to highlight matches. - The ~:g[lobal]~ ex command has been modified to highlight matches.
+ More of vim's filename modifiers are supported in ex commands (like ~:p~, - More of vim's filename modifiers are supported in ex commands (like ~:p~,
~:p:h~ or ~:t~) than vanilla evil-mode offers. ~:p:h~ or ~:t~) than vanilla evil-mode offers.
+ A custom filename modifier is available in Doom: ~:P~, which expands to the - A custom filename modifier is available in Doom: ~:P~, which expands to the
project root (throws an error if not in a project). project root (throws an error if not in a project).
* Prerequisites ** TODO Changelog
This module has no external prerequisites. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features
** Ported vim plugins ** Ported vim plugins
The following vim plugins have been ported to evil: The following vim plugins have been ported to evil:
| Vim Plugin | Emacs Plugin | Keybind(s) | | Vim Plugin | Emacs Plugin | Keybind(s) |
|-----------------------+--------------------------------+--------------------------------------------| |-----------------------+--------------------------------+--------------------------------|
| vim-commentary | evil-nerd-commenter | omap =gc= | | vim-commentary | evil-nerd-commenter | omap [[kbd:][gc]] |
| vim-easymotion | evil-easymotion | omap =gs= | | vim-easymotion | evil-easymotion | omap [[kbd:][gs]] |
| vim-lion | evil-lion | omap =gl= / =gL= | | vim-lion | evil-lion | omap [[kbd:][gl]] / [[kbd:][gL]] |
| vim-seek or vim-sneak | evil-snipe | mmap =s= / =S=, omap =z= / =Z= & =x= / =X= | | vim-seek or vim-sneak | evil-snipe | mmap [[kbd:][s]] / [[kbd:][S]], omap [[kbd:][z]] / [[kbd:][Z]] & [[kbd:][x]] / [[kbd:][X]] |
| vim-surround | evil-embrace and evil-surround | vmap =S=, omap =ys= | | vim-surround | evil-embrace and evil-surround | vmap [[kbd:][S]], omap [[kbd:][ys]] |
| vim-unimpaired | (provided by Doom) | [[https://github.com/hlissner/doom-emacs/blob/develop/modules/editor/evil/config.el#L413-L460][see the list]] | | vim-unimpaired | (provided by Doom) | [[https://github.com/hlissner/doom-emacs/blob/develop/modules/editor/evil/config.el#L413-L460][see the list]] |
This module has also ported vim-unimpaired keybinds to Emacs. This module has also ported vim-unimpaired keybinds to Emacs.
In other modules: In other modules:
+ The tools/neotree & tools/treemacs modules provide a =NERDTree= equivalent. - The [[doom-module:][:ui neotree]] & [[doom-module:][:ui treemacs]] modules provide a =NERDTree= equivalent.
+ The editor/multiple-cursors module contains functionality equal to the - The [[doom-module:][:editor multiple-cursors]] module contains functionality equal to the
following vim plugins: following vim plugins:
+ evil-multiedit => vim-multiedit - [[doom-package:][evil-multiedit]] => [[github:hlissner/vim-multiedit][vim-multiedit]]
+ evil-mc => vim-multiple-cursors - [[doom-package:][evil-mc]] => [[https://github.com/terryma/vim-multiple-cursors][vim-multiple-cursors]]
** Custom Text Objects ** Custom Text Objects
This module provides a couple extra text objects, along with the built-in ones. This module provides a couple extra text objects, along with the built-in ones.
For posterity, here are the built-in ones: For posterity, here are the built-in ones:
+ =w W= words - [[kbd:][w W]] words
+ =s= sentences - [[kbd:][s]] sentences
+ =p= paragraphs - [[kbd:][p]] paragraphs
+ =b= parenthesized blocks - [[kbd:][b]] parenthesized blocks
+ =b ( ) { } [ ] < >= braces, parentheses and brackets - [[kbd:][b ( ) { } [ ] < >]] braces, parentheses and brackets
+ =' " `= quotes - [[kbd:][' " `]] quotes
+ =t= tags - [[kbd:][t]] tags
+ =o= symbols - [[kbd:][o]] symbols
And these are text objects added by this module: And these are text objects added by this module:
- [[kbd:][a]] C-style function arguments (provided by ~evil-args~)
+ =a= C-style function arguments (provided by ~evil-args~) - [[kbd:][B]] any block delimited by braces, parentheses or brackets (provided by
+ =B= any block delimited by braces, parentheses or brackets (provided by
~evil-textobj-anyblock~) ~evil-textobj-anyblock~)
+ =c= Comments - [[kbd:][c]] Comments
+ =f= For functions (but relies on the major mode to have sane definitions for - [[kbd:][f]] For functions (but relies on the major mode to have sane definitions for
~beginning-of-defun-function~ and ~end-of-defun-function~) ~beginning-of-defun-function~ and ~end-of-defun-function~)
+ =g= The entire buffer - [[kbd:][g]] The entire buffer
+ =i j k= by indentation (=k= includes one line above; =j= includes one line - [[kbd:][i j k]] by indentation ([[kbd:][k]] includes one line above; [[kbd:][j]] includes one line above and
above and below) (provided by ~evil-indent-plus~) below) (provided by ~evil-indent-plus~)
+ =q= For quotes (any kind) - [[kbd:][q]] For quotes (any kind)
+ =u= For URLs - [[kbd:][u]] For URLs
+ =x= XML attributes (provided by ~exato~) - [[kbd:][x]] XML attributes (provided by ~exato~)
** Custom Ex Commands ** Custom Ex Commands
| Ex Command | Description | | Ex Command | Description |
@ -137,64 +137,92 @@ And these are text objects added by this module:
| ~:rm[!] [PATH]~ | Delete the current buffer's file and buffer | | ~:rm[!] [PATH]~ | Delete the current buffer's file and buffer |
| ~:tcd[!]~ | Send =cd X= to tmux. X = the project root if BANG, X = ~default-directory~ otherwise | | ~:tcd[!]~ | Send =cd X= to tmux. X = the project root if BANG, X = ~default-directory~ otherwise |
* Configuration * TODO Configuration
** Removing evil-mode #+begin_quote
You must do two things to remove Evil: 🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
1. Remove =:editor evil= from =~/.doom.d/init.el=, * Troubleshooting
2. Run ~doom sync~ to clean up lingering dependencies and regenerate your [[doom-report:][Report an issue?]]
** Can't access the universal argument key ([[kbd:][C-u]])
For maximum Vim emulation, this module commandeers the C-u key for scrolling (as
it does in Vim). The same goes for [[kbd:][C-u]] in insert mode (which deletes to BOL). In
both cases the universal argument has been moved to [[kbd:][<leader> u]].
To undo this, use:
#+begin_src emacs-lisp
;; add to $DOOMDIR/config.el
(setq! evil-want-C-u-scroll nil
evil-want-C-u-delete nil)
#+end_src
** The [[kbd:][s]]/[[kbd:][S]] keys behave differently from Vim
Doom replaces the [[kbd:][s]] and [[kbd:][S]] keys with the [[doom-package:][evil-snipe]] package (a port of
vim-seek/vim-sneak for 2-character versions of f/F/t/T).
To disable evil-snipe on s/S, you can either:
1. Disable ~evil-snipe-mode~ by adding ~(remove-hook 'doom-first-input-hook
#'evil-snipe-mode)~ to =$DOOMDIR/config.el=,
2. Or disable [[doom-package:][evil-snipe]] completely with ~(package! evil-snipe :disable t)~
added to =$DOOMDIR/packages.el=, but this will also disable incremental
highlighting for the f/F/t/T motions keys.
3. Or use [[kbd:][cl]] and [[kbd:][cc]], respectively; they do the same thing.
** The [[kbd:][Y]] key behaves differently from Vim (should yank the whole line)
Doom changes the behavior of the [[kbd:][Y]] key in normal mode to yank-to-EOL (equivalent
to [[kbd:][y$]]). This was to make it consistent with the [[kbd:][C]] and [[kbd:][D]] capital operators, and
because it was redundant with [[kbd:][yy]], which is easier to type than [[kbd:][y$]].
If you prefer the old behavior, it can be reversed with:
#+begin_src emacs-lisp
;; add to $DOOMDIR/config.el
(setq! evil-want-Y-yank-to-eol nil)
#+end_src
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
** How do I remove evil?
:PROPERTIES:
:ID: f3925da6-5f0b-4d11-aa08-7bb58bea1982
:END:
1. [[id:01cffea4-3329-45e2-a892-95a384ab2338][Disable this module]].
2. Run ~$ doom sync~ to clean up lingering dependencies and regenerate your
autoloads files. autoloads files.
3. [OPTIONAL] You may want to assign new values to ~doom-leader-alt-key~ and 3. [OPTIONAL] Change ~doom-leader-alt-key~ and ~doom-localleader-alt-key~. These
~doom-localleader-alt-key~. These are bound to =C-c= and =C-c l= by default. are bound to [[kbd:][C-c]] and [[kbd:][C-c l]] by default.
#+begin_quote #+begin_quote
Ignore ~doom-leader-key~ and ~doom-localleader-key~, they don't apply to 🚧 Ignore ~doom-leader-key~ and ~doom-localleader-key~, they don't apply to
non-evil sessions. non-evil sessions.
#+end_quote #+end_quote
Evil-specific configuration and keybindings (defined with ~map!~) will be Evil-specific configuration and keybindings (defined with ~map!~) will be
ignored without =:editor evil= present (and omitted when byte-compiling). ignored without [[doom-module:][:editor evil]] present (and omitted when byte-compiling).
Keep in mind that, at the time of this writing, Doom was designed by a vimmer, ** Include underscores in evil word motions?
for vimmers. Little consideration has been put into designing a keybind scheme A more in-depth answer and explanation for this can be found [[https://evil.readthedocs.io/en/latest/faq.html#underscore-is-not-a-word-character][in Evil's
for vanilla Emacs users (though it's being worked on!). documentation]].
That means that much of Doom's functionality will be orphaned in an evil-less TL;DR If you want the underscore to be recognized as word character, you can
setup. You'll have to set your own keybinds. modify its entry in the syntax-table:
#+begin_src emacs-lisp
(modify-syntax-entry ?_ "w")
#+end_src
I suggest studying [[file:../../config/default/+emacs-bindings.el][config/default/+emacs-bindings.el]] to see what keybinds are This gives the underscore the word syntax-class. You can use a mode-hook to
available for non-evil users. Otherwise, you may find inspiration [[file:../../../docs/example_configs.org][on the example modify the syntax-table in all buffers of some mode, e.g.
Doom configurations page]]. #+begin_src emacs-lisp
;; For python
(add-hook! 'python-mode-hook (modify-syntax-entry ?_ "w"))
;; For ruby
(add-hook! 'ruby-mode-hook (modify-syntax-entry ?_ "w"))
;; For Javascript
(add-hook! 'js2-mode-hook (modify-syntax-entry ?_ "w"))
#+end_src
** Restoring old substitution behavior on s/S * TODO Appendix
Doom replaces the =s= and =S= keys with the =evil-snipe= package (a port of #+begin_quote
vim-seek/vim-sneak for 2-character versions of f/F/t/T). 🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
To disable evil-snipe on s/S, you can either:
1. Disable ~evil-snipe-mode~ by adding ~(remove-hook 'doom-first-input-hook
#'evil-snipe-mode)~ to =$DOOMDIR/config.el=,
2. Or disable =evil-snipe= completely with ~(package! evil-snipe :disable t)~
added to =$DOOMDIR/packages.el=, but this will also disable incremental
highlighting for the f/F/t/T motions keys.
3. Or use =cl= and =cc=, respectively; they do the same thing.
** Restoring old Y behavior (yank the whole line)
Doom changes the behavior of the =Y= key in normal mode to yank-to-EOL
(equivalent to =y$=). This was to make it consistent with the =C= and =D=
capital operators, and because it was redundant with =yy=, which is easier to
type than =y$=.
If you prefer the old behavior, it can be reversed with:
#+BEGIN_SRC elisp
;; add to ~/.doom.d/config.el
(setq! evil-want-Y-yank-to-eol nil)
#+END_SRC
** Disabling cursor movement when exiting insert mode
Vim (and evil) move the cursor one character back when exiting insert mode. If
you prefer that it didn't, set:
#+BEGIN_SRC elisp
;; add to ~/.doom.d/config.el
(setq evil-move-cursor-back nil)
#+END_SRC

View file

@ -1,83 +1,97 @@
#+TITLE: editor/file-templates # -*- mode: doom-docs-org -*-
#+DATE: February 11, 2017 #+title: :editor file-templates
#+SINCE: v2.0 #+subtitle: Fill the void in your empty files
#+STARTUP: inlineimages #+created: February 11, 2017
#+since: 2.0.0
* Table of Contents :TOC_2:noexport: * Description :unfold:
- [[#description][Description]] This module adds file templates for blank files, powered by [[doom-package:][yasnippet]].
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#usage][Usage]]
- [[#inserting-oss-licenses][Inserting OSS licenses]]
- [[#configuration][Configuration]]
- [[#registering-a-new-file-template][Registering a new file template]]
- [[#changing-existing-file-templates][Changing existing file templates]]
- [[#adding-new-oss-licenses][Adding new OSS licenses]]
- [[#troubleshooting][Troubleshooting]]
- [[#appendix][Appendix]]
- [[#api][API]]
- [[#commands][Commands]]
- [[#variables][Variables]]
* Description ** Maintainers
This module adds file templates for blank files, powered by yasnippet. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags.
** Plugins ** Module flags
This module installs no plugins. /This module has no flags./
* Prerequisites ** Packages
This module has no prerequisites. /This module doesn't install any packages./
* Usage ** Hacks
File templates are automatically expanded when opening empty files. - [[doom-package:][yasnippet]]
They are also regular yasnippet snippets, which can be expanded by typing their ** TODO Changelog
trigger and pressing =TAB=. By convention, the triggers for file templates are # This section will be machine generated. Don't edit it by hand.
prefixed with two underscores ~__~. /This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
File templates are automatically expanded when opening empty files who match one
of the rules in the ~+file-templates-alist~ variable.
These templates are simply yasnippet snippets, which can also be expanded by
typing their trigger and pressing [[kbd:][TAB]]. By convention, the triggers for file
templates are prefixed with two underscores ~__~ (the trigger for the default
file template of a major mode is almost always ~__~).
** Inserting OSS licenses ** Inserting OSS licenses
A special command is available for inserting software licenses: ~M-x A special command is available for inserting software licenses: ~M-x
+file-templates/insert-license~. +file-templates/insert-license~.
#+begin_quote #+begin_quote
Licenses with a ~-bp~ suffix are boilerplate templates; shorter versions meant 📌 Licenses with a ~-bp~ suffix are boilerplate templates; i.e. shorter
for comment headers in code. versions intended for comment headers in code files.
#+end_quote #+end_quote
* Configuration * TODO Configuration
** Registering a new file template #+begin_quote
Look into the documentation of ~set-file-template!~ and ~set-file-templates!~. 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
** Changing existing file templates #+end_quote
Simply register a new template (using ~set-file-template!~) that matches the same
file. The new template would be pushed to the top of ~+file-template-alist~ and
thus would take priority while searching for a template to insert.
** Adding new OSS licenses
The ~+file-templates/insert-license~ command searches for snippets under
~text-mode~ that are named ~__license-ABC~, where ABC is the short name of the
license. e.g. ~__license-mit~.
So long as these files exist, ~+file-templates/insert-license~ will recognize ** Adding new or changing existing file templates
them. New file templates can be added to
=$DOOMDIR/snippets/{major-mode}/{snippet-name}=. The yasnippet documentation
covers [[https://joaotavora.github.io/yasnippet/snippet-development.html][how to write a snippet]]. You can map a snippet to a file path, major mode,
or another arbitrary predicate using [[fn:][set-file-template!]].
Look into its documentation with [[kbd:][<help> f set-file-template\!]].
** Adding new OSS licenses
Add snippet files to =$DOOMDIR/snippets/text-mode/= with the =__licenses-=
prefix and [[fn:][+file-templates/insert-license]] will recognize them. E.g.
=$DOOMDIR/snippets/text-mode/__license-mit=.
* Troubleshooting * Troubleshooting
If a file template isn't expanding where you expect it to, run ~M-x - If a file template isn't expanding where you expect it to, run ~M-x
+file-templates/debug~. This will report to you what file template rule would +file-templates/debug~. This will report to you what file template rule would
apply for the correct file. apply for the correct file.
* Appendix * Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 /This module's appendix is incomplete./ [[doom-contrib-module:][Write more?]]
#+end_quote
** API ** API
+ ~set-file-template! PRED &rest PLIST~ - ~set-file-template! PRED &rest PLIST~
+ ~set-file-templates! &rest TEMPLATES~ - ~set-file-templates! &rest TEMPLATES~
** Commands ** Commands
+ ~+file-templates/insert-license~ - ~+file-templates/insert-license~
+ ~+file-templates/debug~ - ~+file-templates/debug~
** Variables ** Variables
+ ~+file-templates-dir~ - ~+file-templates-dir~
+ ~+file-templates-default-trigger~ - ~+file-templates-default-trigger~
+ ~+file-templates-alist~ - ~+file-templates-alist~

View file

@ -96,6 +96,14 @@ evil is loaded and enabled)."
(file-relative-name path doom-private-dir)) (file-relative-name path doom-private-dir))
((abbreviate-file-name path)))))) ((abbreviate-file-name path))))))
;;;###autoload
(defun +file-templates-module-for-path (&optional path)
"Generate a title for a doom module's readme at PATH."
(let ((m (doom-module-from-path (or path (buffer-file-name)))))
(if (eq (cdr m) 'README.org)
(symbol-name (car m))
(format "%s %s" (car m) (cdr m)))))
;; ;;
;;; Commands ;;; Commands
@ -133,3 +141,20 @@ for it. This is used for testing."
:key #'yas--template-key :test #'equal)) :key #'yas--template-key :test #'equal))
(message "Found %s" (cons pred plist)) (message "Found %s" (cons pred plist))
(message "Found rule, but can't find associated snippet: %s" (cons pred plist))))) (message "Found rule, but can't find associated snippet: %s" (cons pred plist)))))
;;
;;; Trigger functions
(defun +file-templates-insert-doom-docs-fn ()
"Expand one of Doom's README templates depending."
(+file-templates--expand
t :trigger
(let ((path (file-truename (buffer-file-name))))
(cond ((string-match-p "/modules/[^/]+/README\\.org$" path)
"__doom-category-readme")
((string-match-p "/modules/[^/]+/[^/]+/README\\.org$" path)
"__doom-readme")
((file-in-directory-p path doom-docs-dir)
"__doom-docs")
("__")))))

View file

@ -71,9 +71,8 @@ don't have a :trigger property in `+file-templates-alist'.")
("/shell\\.nix$" :trigger "__shell.nix") ("/shell\\.nix$" :trigger "__shell.nix")
(nix-mode) (nix-mode)
;; Org ;; Org
("/README\\.org$" (doom-docs-org-mode
:when +file-templates-in-emacs-dirs-p :trigger +file-templates-insert-doom-docs-fn
:trigger "__doom-readme"
:mode org-mode) :mode org-mode)
(org-journal-mode :ignore t) (org-journal-mode :ignore t)
(org-mode) (org-mode)

View file

@ -0,0 +1,10 @@
# -*- mode: snippet -*-
# name: Doom category readme
# --
#+title: `(+file-templates-module-for-path)`
#+created: `(format-time-string "%B %d, %Y")`
#+since: `(car (split-string doom-version "-"))`
$0
* Description
Replace this with a description of what modules in this category are for,
including any important information (like load order constraints).

View file

@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: Doom documentation
# --
#+title: ${1:Title}
#+subtitle: ${2:Subtitle}
$0

View file

@ -1,70 +1,194 @@
# -*- mode: snippet -*- # -*- mode: snippet -*-
# name: Doom module readme # name: Doom module readme
# -- # --
#+TITLE: ${1:`(if (string-match "modules/\\([^/]+\\)/\\([^/]+\\)/.+" buffer-file-name) #+title: `(+file-templates-module-for-path)`
(format "%s/%s" #+subtitle: <A one-line quip about this module to display in init.example.el>
(match-string 1 buffer-file-name) #+created: `(format-time-string "%B %d, %Y")`
(match-string 2 buffer-file-name)) #+since: `(car (split-string doom-version "-"))` (#COMMIT-OR-PR-REF)
"")`}
#+DATE: `(format (format-time-string "%B %%s, %Y") (string-to-number (format-time-string "%d")))`
#+SINCE: ${2:<replace with next tagged release version>}
#+STARTUP: inlineimages nofold
* Table of Contents :TOC_3:noexport: * Description :unfold:
$0Replace this with a short (1-2 sentence) description of what this module does.
This is displayed in the module index.
* Description Then a longer, multiple paragraph description goes here, which should explain
${3:# A summary of what this module does.} the purpose of the module and the features/technology(ies) it provides.
+ If possible, include a brief list of feature highlights here
+ Like code completion, syntax checking or available snippets
+ Include links to packages & external things where possible
** Maintainers ** Maintainers
+ @username_linked_to_gihub (Author) - [[doom-user:][@github_username]]
+ @username_linked_to_gihub - [[doom-user:][@github_username]]
+ @username_linked_to_gihub - [[doom-user:][@github_username]]
# If this module has no maintainers, then... [[doom-contrib-maintainer:][Become a maintainer?]]
This module has no dedicated maintainers.
** Module Flags # If a module has no maintainers and can't be casually maintained by Henrik
+ =+flag1= A short description of what this flag does and what it might need # alone, use:
when enabled. *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+flag2= A short description of what this flag does and what it might need
when enabled. # Otherwise, use:
+ =+flag3= A short description of what this flag does and what it might need /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
when enabled.
** Module flags
# Flags should be in alphanumerical order.
- +bar ::
A short description of what this flag does and what it might need when
enabled.
- +childframe ::
Display X in a [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html][child frame]] rather than an overlay or tooltip. *Requires GUI
Emacs.*
- +lsp ::
Enable LSP support for ~X-mode~. Requires [[doom-module:][:tools lsp]] and a
langserver (supports A, B, and C).
# If this module has no flags, then... # If this module has no flags, then...
This module provides no flags. /This module has no flags./
** Plugins # If this module has flags but you can't document them now, add a TODO to the
# A list of linked plugins # heading and use:
+ [[https://orgmode.org/][org-plus-contrib]] #+begin_quote
+ [[https://github.com/sabof/org-bullets][org-bullets]] 🔨 This module has flags, but they aren't documented yet. [[doom-contrib-module:][Document them?]]
+ [[https://github.com/TobiasZawada/org-yt][org-yt]] #+end_quote
+ [[https://github.com/sebastiencs/company-box][company-box]]* (=+childframe=)
+ =:lang crystal= ** Packages
+ [[https://github.com/brantou/ob-crystal][ob-crystal]] - [[doom-package:][org]]
+ =:lang go= - [[doom-package:][org-contrib]] if [[doom-module:][+contrib]]
+ [[https://github.com/pope/ob-go][ob-go]] - [[doom-package:][org-bullets]] unless [[doom-module:][+bullets]]
+ =+present= - if [[doom-module:][+present]]
+ [[https://github.com/anler/centered-window-mode][centered-window]] - [[doom-package:][centered-window]]
+ [[https://github.com/takaxp/org-tree-slide][org-tree-slide]] - [[doom-package:][org-tree-slide]]
+ [[https://gitlab.com/oer/org-re-reveal][org-re-reveal]] - [[doom-package:][org-re-reveal]]
# If this module installs no packages, then...
/This module doesn't install any packages./
# If this module installs packages, but you can't document them now, add a TODO
# to the heading and use:
#+begin_quote
🔨 This module installs packages, but they aren't documented yet. [[doom-contrib-module:][Document
them?]]
#+end_quote
** Hacks ** Hacks
# A list of internal modifications to included packages; omit if unneeded # Place a list of internal (and potentially unexpected) modifications to
# included packages:
- Fixed X which should help you do Y
- Advised Z to work harder, better, faster, stronger.
- Tricked the hobbitses into giving me the precious.
* Prerequisites # If there aren't any hacks, use:
This module has no prerequisites. /No hacks documented for this module./
* Features # If this module contains hacks, but you can't document them now, add a TODO to
# An in-depth list of features, how to use them, and their dependencies. # the heading and use:
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
* Configuration ** TODO Changelog
# How to configure this module, including common problems and how to address them. # Do not edit this by hand. Your commits are your changelog. Commits that
# shouldn't show up should use the 'Amend: ...' trailer (see
# https://docs.doomemacs.org/-/git-conventions for details).
#
# ALSO: Version headings should be linked to the respective heading in
# docs/changelog.org.
** [[doom-tag:][v21.12.0]] [2021-12-30]
*** [[doom-ref:a1b2c3d4][commit SUBJECT linked to github commit]]
commit BODY
*** [[doom-ref:a1b2c3d4][commit SUBJECT linked to github commit]]
commit BODY
*** [[doom-ref:a1b2c3d4][commit SUBJECT linked to github commit]]
commit BODY
# If no changelog is available, use:
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
# This section should describe, in-depth, how to set up this module and its
# dependencies, starting with this line:
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
# ...Then list its external requirements, if any.
This module requires:
- ...
- ...
- ...
# And finally, go into detail about how to install them.
# If there are no external requirements, use:
/This module has no external requirements./
# If there are prerequisites but you can't document them yet, add TODO to the
# heading and use:
#+begin_quote
🔨 /No installation steps have been documented./ [[doom-contrib-module:][Document them?]]
#+end_quote
* Usage
# Walk the user through how this module is used.
# If this is left empty, add TODO to the heading and use:
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
# If this section has incomplete content, add TODO to the heading and use:
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* TODO Configuration
# Walk the user through how to configure this module, including any variables it
# exposes or user-facing configuration API.
# If this is left empty, add TODO to the heading and use:
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
# If this section has incomplete content, add TODO to the heading and use:
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. # List common issues and any workarounds/solutions, or link to external resources.
$0 [[doom-report:][Report an issue?]]
** Common issue
Solution.
** Common issue
Solution.
** Common issue
Solution.
# If this is left empty, use:
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
[[doom-suggest-faq:][Ask a question?]]
# This is for adoption, design, or niche questions. More general
# usage/configuration matters should be covered in the sections above.
** Question
Answer
** Question
Answer
** Question
Answer
# If no questions are available, use
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
# A glossary of important major modes, minor modes, commands, functions, faces,
# and variables that this module exposes. It doesn't have to be exhaustive and
# should omit explanation/documentation.
# If this is left empty, add TODO to the heading and use:
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
# If this section has incomplete content, add TODO to the heading and use:
#+begin_quote
🔨 /This module's appendix is incomplete./ [[doom-contrib-module:][Write more?]]
#+end_quote

View file

@ -1,44 +1,70 @@
#+TITLE: editor/fold # -*- mode: doom-docs-org -*-
#+DATE: February 17, 2019 #+title: :editor fold
#+SINCE: v2.1 #+subtitle: What you can't see won't hurt you
#+STARTUP: inlineimages #+created: May 15, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module marries [[doom-package:][hideshow]], [[doom-package:][vimish-fold]], and ~outline-minor-mode~ to bring you
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module marries hideshow, vimish-fold and outline-minor-mode to bring you
marker, indent and syntax-based code folding for as many languages as possible. marker, indent and syntax-based code folding for as many languages as possible.
** Module Flags ** Maintainers
This module provides no flags. - [[doom-user:][@hlissner]]
** Plugins [[doom-contrib-maintainer:][Become a maintainer?]]
+ [[https://github.com/alexmurray/evil-vimish-fold][evil-vimish-fold]]
+ [[https://github.com/matsievskiysv/vimish-fold][vimish-fold]]
* Prerequisites ** Module flags
This module has no prerequisites. /This module has no flags./
* Features ** Packages
- [[doom-package:][evil-vimish-fold]]
- [[doom-package:][vimish-fold]]
- if [[doom-module:][:tools tree-sitter]]
- [[doom-package:][ts-fold]]
Emacs keybinds when evil +everywhere is disabled. ** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
Emacs keybinds when [[doom-module:][:editor evil +everywhere]] is disabled:
| Keybind | Description | | Keybind | Description |
|------------------------+---------------------------| |--------------------+---------------------------|
| =C-c C-f C-f= | Fold region | | [[kbd:][C-c C-f C-f]] | Fold region |
| =C-c C-f C-u= or =C `= | Unfold region | | [[kbd:][C-c C-f C-u]] or [[kbd:][C `]] | Unfold region |
| =C-c C-f C-d= | Delete folded region | | [[kbd:][C-c C-f C-d]] | Delete folded region |
| =C-c C-f C-a C-f= | Fold all regions | | [[kbd:][C-c C-f C-a C-f]] | Fold all regions |
| =C-c C-f C-a C-u= | Unfold all regions | | [[kbd:][C-c C-f C-a C-u]] | Unfold all regions |
| =C-c C-a C-d= | Delete all folded regions | | [[kbd:][C-c C-a C-d]] | Delete all folded regions |
* TODO Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
Sometimes an unfolded region does not fold back with =C-c C-f C-f=. To bypass this bug you must delete the folded region (=C-c C-f C-d=) and then fold it(=C-c C-f C-f=) again. - Sometimes, an unfolded region won't fold back with [[kbd:][C-c C-f C-f]]. To bypass this
bug you must delete the folded region ([[kbd:][C-c C-f C-d]]) and then fold it ([[kbd:][C-c C-f
C-f]]) again.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,30 +1,16 @@
#+TITLE: editor/format # -*- mode: doom-docs-org -*-
#+DATE: July 25, 2020 #+title: :editor format
#+SINCE: v3.0.0 #+subtitle: Standardize your ugly code
#+STARTUP: inlineimages nofold #+created: July 26, 2020
#+since: 21.12.0
#+begin_quote #+begin_quote
This module has been scheduled for a rewrite. Its documentation will remain 🔨 This module has been scheduled for a rewrite. Its documentation will remain
incomplete and edge cases left unpatched in the meantime. A preview of this incomplete and edge cases left unpatched in the meantime. A preview of this
rewrite can be found [[https://github.com/hlissner/doom-emacs-private/tree/master/modules/editor/format][in my private config]]. rewrite can be found [[https://github.com/hlissner/doom-emacs-private/tree/master/modules/editor/format][in my private config]].
#+end_quote #+end_quote
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#automatic-reformatting-when-saving-buffers][Automatic reformatting when saving buffers]]
- [[#disabling-the-lsp-formatter][Disabling the LSP formatter]]
- [[#defining-your-own-formatters][Defining your own formatters]]
- [[#selecting-a-specific-formatter-for-a-particular-buffer][Selecting a specific formatter for a particular buffer]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module integrates code formatters into Emacs. Here are some of the This module integrates code formatters into Emacs. Here are some of the
formatters that it currently supports: formatters that it currently supports:
@ -37,88 +23,102 @@ rustfmt, scalafmt, script shfmt, snakefmt, sqlformat, styler, swiftformat, tidy
#+end_quote #+end_quote
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+onsave= Preform buffer-wide reformatting of a buffer when you save it. See - +onsave ::
~+format-on-save-enabled-modes~ to control what major modes to (or not to) Enable reformatting of a buffer when it is saved. See
[[var:][+format-on-save-enabled-modes]] to control what major modes to (or not to)
format on save. format on save.
** Plugins ** Packages
+ [[https://github.com/lassik/emacs-format-all-the-code][format-all]] - [[doom-package:][format-all]]
** Hacks ** Hacks
+ format-all has been heavily modified to suit Doom's goals for this module: - format-all has been heavily modified to suit Doom's goals for this module:
+ Reformatted text is applied to the buffer by RCS patch, as to reduce its - Reformatted text is applied to the buffer by RCS patch, as to reduce its
affect on cursor position. affect on cursor position.
+ Adds partial formatting, i.e. you can now reformat a subset of the buffer. - Adds partial formatting, i.e. you can now reformat a subset of the buffer.
+ Adds the ability to use any arbitrary formatter on the current buffer if you - Adds the ability to use any arbitrary formatter on the current buffer if you
pass the universal argument to ~+format/buffer~ or ~+format/region~ (i.e. pass the universal argument to [[fn:][+format/buffer]] or [[fn:][+format/region]] (i.e.
removes the major-mode lock on formatters). removes the major-mode lock on formatters).
* Prerequisites ** TODO Changelog
This module depends on external programs to perform the actual formatting. These # This section will be machine generated. Don't edit it by hand.
will need to be installed for them to work. In their absence, =format-all= will /This module does not have a changelog yet./
fail silently.
+ Angular/Vue (prettier) * Installation
+ Assembly (asmfmt) [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
+ Bazel Starlark (buildifier)
+ BibTeX (emacs)
+ C/C++/Objective-C (clang-format)
+ Cabal (cabal-fmt)
+ Clojure/ClojureScript (node-cljfmt)
+ CMake (cmake-format)
+ Crystal (crystal tool format)
+ CSS/Less/SCSS (prettier)
+ D (dfmt)
+ Dart (dartfmt)
+ Dhall (dhall format)
+ Dockerfile (dockfmt)
+ Elixir (mix format)
+ Elm (elm-format)
+ Emacs Lisp (emacs)
+ Fish Shell (fish_indent)
+ Fortran 90 (fprettify)
+ Gleam (gleam format)
+ Go (gofmt)
+ GraphQL (prettier)
+ Haskell (brittany)
+ HTML/XHTML/XML (tidy)
+ Java (clang-format)
+ JavaScript/JSON/JSX (prettier)
+ Jsonnet (jsonnetfmt)
+ Kotlin (ktlint)
+ LaTeX (latexindent)
+ Ledger (ledger-mode)
+ Lua (lua-fmt)
+ Markdown (prettier)
+ Nix (nixfmt)
+ OCaml (ocp-indent)
+ Perl (perltidy)
+ PHP (prettier plugin-php)
+ Protocol Buffers (clang-format)
+ PureScript (purty)
+ Python (black)
+ R (styler)
+ Ruby (rufo)
+ Rust (rustfmt)
+ Scala (scalafmt)
+ Shell script (shfmt)
+ Snakemake (snakefmt)
+ Solidity (prettier-plugin-solidity)
+ SQL (sqlformat)
+ Swift (swiftformat)
+ Terraform (terraform fmt)
+ TOML (prettier-plugin-toml)
+ TypeScript/TSX (prettier)
+ Verilog (iStyle)
+ YAML (prettier)
* TODO Features This module has no direct requirements, but each language will need one of their
# An in-depth list of features, how to use them, and their dependencies. supported formatter programs in order for this to work. In their absence,
[[doom-package:][format-all]] will fail silently.
Supported formatters:
- Angular/Vue (prettier)
- Assembly (asmfmt)
- Bazel Starlark (buildifier)
- BibTeX (emacs)
- C/C++/Objective-C (clang-format)
- Cabal (cabal-fmt)
- Clojure/ClojureScript (node-cljfmt)
- CMake (cmake-format)
- Crystal (crystal tool format)
- CSS/Less/SCSS (prettier)
- D (dfmt)
- Dart (dartfmt)
- Dhall (dhall format)
- Dockerfile (dockfmt)
- Elixir (mix format)
- Elm (elm-format)
- Emacs Lisp (emacs)
- Fish Shell (fish_indent)
- Fortran 90 (fprettify)
- Gleam (gleam format)
- Go (gofmt)
- GraphQL (prettier)
- Haskell (brittany)
- HTML/XHTML/XML (tidy)
- Java (clang-format)
- JavaScript/JSON/JSX (prettier)
- Jsonnet (jsonnetfmt)
- Kotlin (ktlint)
- LaTeX (latexindent)
- Ledger (ledger-mode)
- Lua (lua-fmt)
- Markdown (prettier)
- Nix (nixfmt)
- OCaml (ocp-indent)
- Perl (perltidy)
- PHP (prettier plugin-php)
- Protocol Buffers (clang-format)
- PureScript (purty)
- Python (black)
- R (styler)
- Ruby (rufo)
- Rust (rustfmt)
- Scala (scalafmt)
- Shell script (shfmt)
- Snakemake (snakefmt)
- Solidity (prettier-plugin-solidity)
- SQL (sqlformat)
- Swift (swiftformat)
- Terraform (terraform fmt)
- TOML (prettier-plugin-toml)
- TypeScript/TSX (prettier)
- Verilog (iStyle)
- YAML (prettier)
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Automatic reformatting when saving buffers ** Automatic reformatting when saving buffers
There are two ways to achieve this. Either through the =+onsave= flag, or by There are two ways to achieve this. Either through the =+onsave= flag, or by
adding ~format-all-mode~ to the hook of each major mode you want this behavior adding ~format-all-mode~ to the hook of each major mode you want this behavior
@ -128,29 +128,29 @@ If you choose the former, what modes it applies to can be changed by modifying
~+format-on-save-enabled-modes~, which contains a list of major modes. If the ~+format-on-save-enabled-modes~, which contains a list of major modes. If the
first item in the list is the symbol ~not~, the list is negated. This is its first item in the list is the symbol ~not~, the list is negated. This is its
default value: default value:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
(setq +format-on-save-enabled-modes (setq +format-on-save-enabled-modes
'(not emacs-lisp-mode ; elisp's mechanisms are good enough '(not emacs-lisp-mode ; elisp's mechanisms are good enough
sql-mode ; sqlformat is currently broken sql-mode ; sqlformat is currently broken
tex-mode ; latexindent is broken tex-mode ; latexindent is broken
latex-mode)) latex-mode))
#+END_SRC #+end_src
If you want to format code when you save a buffer, but want more granular If you want to format code when you save a buffer, but want more granular
control over which major modes this behavior is enabled in, there is an control over which major modes this behavior is enabled in, there is an
alternative. Make sure =+onsave= is disabled before you try this: alternative. Make sure [[doom-module:][+onsave]] is disabled before you try this:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(add-hook 'python-mode-hook #'format-all-mode) (add-hook 'python-mode-hook #'format-all-mode)
(add-hook 'js2-mode-hook #'format-all-mode) (add-hook 'js2-mode-hook #'format-all-mode)
#+END_SRC #+end_src
** Disabling the LSP formatter ** Disabling the LSP formatter
If you are in a buffer with ~lsp-mode~ enabled and a server that supports If you are in a buffer with ~lsp-mode~ enabled and a server that supports
=textDocument/formatting=, it will be used instead of =format-all='s formatter. =textDocument/formatting=, it will be used instead of [[doom-package:][format-all]]'s formatter.
+ To disable this behavior universally use: ~(setq +format-with-lsp nil)~ + To disable this behavior universally use: ~(setq +format-with-lsp nil)~
+ To disable this behavior in one mode: ~(setq-hook! 'python-mode-hook +format-with-lsp nil)~ + To disable this behavior in one mode: ~(setq-hook! 'python-mode-hook
+format-with-lsp nil)~
** TODO Defining your own formatters ** TODO Defining your own formatters
See the ~set-formatter!~ function. See the ~set-formatter!~ function.
@ -158,17 +158,24 @@ See the ~set-formatter!~ function.
** TODO Selecting a specific formatter for a particular buffer ** TODO Selecting a specific formatter for a particular buffer
Set the buffer-local variable ~+format-with~ to the name of the formatter to Set the buffer-local variable ~+format-with~ to the name of the formatter to
use. e.g. use. e.g.
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(setq-hook! 'python-mode-hook +format-with 'html-tidy) (setq-hook! 'python-mode-hook +format-with 'html-tidy)
;; Or set it to `:none' to disable formatting ;; Or set it to `:none' to disable formatting
(setq-hook! 'python-mode-hook +format-with :none) (setq-hook! 'python-mode-hook +format-with :none)
#+END_SRC #+end_src
Formatters are referred to by the name they were defined with. They can be Formatters are referred to by the name they were defined with. They can be
looked up in the ~format-all-mode-table~ hash table or in format-all's [[https://github.com/lassik/emacs-format-all-the-code/blob/master/format-all.el#L512][source looked up in the ~format-all-mode-table~ hash table or in format-all's [[https://github.com/lassik/emacs-format-all-the-code/blob/master/format-all.el#L512][source
code]]. code]].
* Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,56 @@
# -*- mode: doom-docs-org -*-
#+title: :editor god
#+subtitle: IDDQD
#+created: October 13, 2021
#+since: 21.12.0
#+begin_quote
🚧 *This module is deprecated.* ~god-mode~ is EOL and no longer maintained.
#+end_quote
* Description :unfold:
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.
** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][god-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,18 +1,13 @@
#+TITLE: editor/lispy # -*- mode: doom-docs-org -*-
#+DATE: October 27, 2018 #+title: :editor lispy
#+SINCE: v2.0 #+subtitle: Vim for lisp, for people who don't like vim
#+STARTUP: inlineimages #+created: October 27, 2018
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds a keybind scheme for navigating and editing S-expressions in
- [[#prerequisites][Prerequisites]] Lisps; including S-exp awareness for Evil users. This affects the following
- [[#troubleshooting][Troubleshooting]] languages:
- [[#mouse-wheel-and-wrapadditional-wrap-key-themes-in-tty-emacs-2573][Mouse wheel and =wrap=/=additional-wrap= key themes in TTY Emacs (#2573)]]
* Description
This module adds [[https://github.com/noctuid/lispyville][lispy]] key functionality in Lisp languages.
This includes:
- Common Lisp - Common Lisp
- Emacs Lisp - Emacs Lisp
@ -23,12 +18,43 @@ This includes:
- Clojure - Clojure
- [[https://fennel-lang.org][Fennel]] - [[https://fennel-lang.org][Fennel]]
If evil is enabled, lispyville would also be activated for every mode where ** Maintainers
lispy is active *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][lispy]]
- [[doom-package:][lispyville]] if [[doom-module:][:editor evil +everywhere]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
If [[doom-module:][:editor evil]] is enabled, [[doom-package:][lispyville]] would also be activated for every mode
where [[doom-package:][lispy]] is active.
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
The default key themes that are set are as follows: The default key themes that are set are as follows:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
'((operators normal) '((operators normal)
c-w c-w
(prettify insert) (prettify insert)
@ -36,18 +62,25 @@ The default key themes that are set are as follows:
slurp/barf-lispy slurp/barf-lispy
additional additional
additional-insert) additional-insert)
#+END_SRC #+end_src
To change the key themes set ~lispyville-key-theme~. Think of To change the key themes set ~lispyville-key-theme~. Think of
~lispyville-key-theme~ as the equivalent of ~parinfer-extensions~. See ~lispyville-key-theme~ as the equivalent of ~parinfer-extensions~. See
lispyville's [[https://github.com/noctuid/lispyville/blob/master/README.org][README]] for more info on the specific keybindings of each key theme lispyville's [[https://github.com/noctuid/lispyville/blob/master/README.org][README]] for more info on the specific keybindings of each key theme
(starting [[https://github.com/noctuid/lispyville#operators-key-theme][here]]). (starting [[https://github.com/noctuid/lispyville#operators-key-theme][here]]).
* Prerequisites
This module has no prerequisites.
* Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
** Mouse wheel and =wrap=/=additional-wrap= key themes in TTY Emacs ([[https://github.com/hlissner/doom-emacs/issues/2573][#2573]]) ** Mouse wheel and =wrap=/=additional-wrap= key themes in TTY Emacs ([[https://github.com/hlissner/doom-emacs/issues/2573][#2573]])
lispyville binds =M-[= to ~lispyville-wrap-brackets~ when the =wrap= or lispyville binds [[kbd:][M-[]] to ~lispyville-wrap-brackets~ when the =wrap= or
=additional-wrap= key theme are enabled. In terminal Emacs, this is the key =additional-wrap= key themes are enabled. In terminal Emacs, this is the key
Emacs receives when you scroll with your mouse wheel. Emacs receives when you scroll with your mouse wheel.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,79 @@
# -*- mode: doom-docs-org -*-
#+title: :editor multiple-cursors
#+subtitle: Make all your mistakes at once
#+created: October 13, 2021
#+since: 21.12.0
* Description :unfold:
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.
** Maintainers
- [[doom-user:][@hlissner]]
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- if [[doom-module:][:editor evil]]
- [[doom-package:][evil-multiedit]]
- [[doom-package:][evil-mc]]
- else
- [[doom-package:][multiple-cursors]]
** Hacks
- Attempts to smooth over [[doom-package:][multiple-cursors]]' incompatibilities with [[doom-package:][evil]], which
is used internally in some third party plugins.
- Attempts to smooth over [[doom-package:][evil-mc]]'s incompatibilities with other packages, like
[[doom-package:][lispy]].
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** evil-mc
- The [[doom-package:][evil-mc]] keys are under the [[kbd:][gz]] prefix, e.g.
- [[kbd:][gzz]] to toggle new (frozen) cursors at point.
- [[kbd:][gzt]] to toggle mirroring on and off (or switch to insert mode to activate
them).
- [[kbd:][gzA]] to place cursors at the end of each selected line.
- [[kbd:][gzI]] will place them at the beginning.
- There's also the ex command ~:mc/REGEXP/FLAGS~, for laying down cursors by
regex.
** evil-multiedit
Designates "interactive edit" regions. Only the textual changes to them are mirrored.
- [[kbd:][M-d]] to iedit the symbol at point. Again to iedit its next match.
- [[kbd:][M-S-d]] to do it backwards.
- [[kbd:][R]] (in visual mode) to iedit all matches of the selection at point in the
buffer.
- Or ~:iedit/REGEX~ to iedit all matches of REGEX.
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,23 +1,61 @@
#+TITLE: editor/objed # -*- mode: doom-docs-org -*-
#+DATE: May 30, 2019 #+title: :editor objed
#+SINCE: v2.1 #+subtitle: Text object editing for the innocent
#+created: May 30, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This modules adds [[doom-package:][objed]], a global minor-mode for navigating and manipulating
- [[#module-flags][Module Flags]] 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.
* Description
This modules adds [[https://github.com/clemera/objed][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.
#+begin_quote
This module is incompatible with the =:editor evil=. Enabling them both will
cause errors.
#+end_quote
[[https://github.com/clemera/objed][See the objed project README]] for information on keybinds and usage. [[https://github.com/clemera/objed][See the objed project README]] for information on keybinds and usage.
** Module Flags ** Maintainers
+ ~+manual~ Do not turn =objed= automatically. The user is responsible for calling *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
`objed-activate` (bound to `M-SPC` if using the default Emacs bindings.)
** Module flags
- +manual ::
Don't activate [[doom-package:][objed]] at startup, automatically, leaving it to the user to call
[[fn:][objed-activate]] (bound to [[kbd:][M-SPC]] if using [[doom-module:][:config default +bindings]]).
** Packages
- [[doom-package:][objed]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
#+begin_quote
🚧 This module is incompatible with [[doom-module:][:editor evil]]. Do not enable them both at
the same time or you will get errors.
#+end_quote
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,55 +1,58 @@
#+TITLE: editor/parinfer # -*- mode: doom-docs-org -*-
#+DATE: June 9, 2018 #+title: :editor parinfer
#+SINCE: v2.1 #+subtitle: For lispers that like Python more (i.e. nobody)
#+STARTUP: inlineimages nofold #+created: February 27, 2021
#+since: 21.12.0
* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#keybindings][Keybindings]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
* Description :unfold:
Parinfer is a minor mode that aids the writing of Lisp code. It automatically Parinfer is a minor mode that aids the writing of Lisp code. It automatically
infers parenthesis matching and indentation alignment, keeping your code infers parenthesis matching and indentation alignment, keeping your code
balanced and beautiful. balanced and beautiful.
Note that the original =parinfer-mode= has been deprecated and superceded by
=parinfer-rust-mode=, which has much better performance.
** Maintainers ** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
This module has no dedicated maintainers. ** Module flags
/This module has no flags./
** Module Flags ** Packages
- [[doom-package:][parinfer-rust-mode]]
This module provides no flags. ** Hacks
/No hacks documented for this module./
** Plugins ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
+ [[https://github.com/justinbarclay/parinfer-rust-mode][parinfer-rust-mode]] * Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites This module requires [[https://github.com/justinbarclay/parinfer-rust-mode#parinfer-rust-library][parinfer-rust]].
This module has no prerequisites. * TODO Usage
#+begin_quote
* Features 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Keybindings ** Keybindings
| Binding | Description | | Binding | Description |
|-------------------+-------------------------------------------| |-----------------+-------------------------------------------|
| ~<localleader> m p~ | Toggle between different inference modes. | | [[kbd:][<localleader> p]] | Toggle between different inference modes. |
| ~<localleader> m P~ | Temporarily disable parinfer. | | [[kbd:][<localleader> P]] | Temporarily disable parinfer. |
* Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,52 +1,78 @@
#+TITLE: editor/rotate-text # -*- mode: doom-docs-org -*-
#+DATE: October 14, 2021 #+title: :editor rotate-text
#+SINCE: v2.0.4 #+subtitle: The only back'n'forth nerds will ever know
#+STARTUP: inlineimages nofold #+created: June 22, 2018
#+since: 2.0.4
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds text rotation to Doom Emacs. I.e. The ability to cycle through
- [[#maintainers][Maintainers]] keywords or text patterns at point, like ~true~ and ~false~, or ~public~,
- [[#module-flags][Module Flags]] ~protected~, and ~private~ (in ~c++-mode~).
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
* Description
# A summary of what this module does.
Provides a convenient way to rotate trough a set of related entities using a single key binding. There are both globally available sets as well as mode local once. For example the sequence ~enable~ and ~disable~ is globally available whereas the sequence ~public~, ~protected~ and ~private~ is only available in ~c++~ mode.
** Maintainers ** Maintainers
# If this module has no maintainers, then... - [[doom-user:][@hlissner]]
This module has no dedicated maintainers.
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
# If this module has no flags, then...
This module provides no flags.
** Plugins ** Module flags
+ [[https://github.com/debug-ito/rotate-text.el][rotate-text.el]] /This module has no flags./
* Prerequisites ** Packages
This module has no prerequisites. - [[doom-package:][rotate-text]]
* Features ** Hacks
# An in-depth list of features, how to use them, and their dependencies. /No hacks documented for this module./
With point on a word or symbol that is part of a sequence you can call ~rotate-text~ or ~rotate-text-backward~ to rotate to the next or previous item in the sequence. The list of items will wrap around as you cycle through them.
* Configuration ** TODO Changelog
To enable a set of items to cycle through globally, add the following to your configuration # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
For evil users: [[kbd:][[r]] and [[kbd:][]r]] will cycle back and forward (respectively) through
specified patterns for the text at point. Patterns will wrap around as you cycle
through them.
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
To enable a set of items to cycle through globally:
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; in ~/.doom.d/config.el ;; in $DOOMDIR/config.el
(after! rotate-text (after! rotate-text
(pushnew! rotate-text-words '("small" "medium" "large"))) (add-to-list 'rotate-text-words '("small" "medium" "large")))
#+end_src #+end_src
To add a sequence to a specific mode, you can add something like the following to your configuration To add a sequence to a specific mode:
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; in ~/.doom.d/config.el ;; in $DOOMDIR/config.el
(set-rotate-patterns! 'c++-mode (set-rotate-patterns! 'c++-mode
:words '(("float" "double"))) :words '(("float" "double")))
#+end_src #+end_src
When configuring a sequence of words or symbols that should be rotated through, it is important that all items are all lower case. The casing will be determined by the item that initiated the rotation. For example, ~Small~ will be replaced with ~Medium~ and ~SMALL~ will be replaced with ~MEDIUM~ using the example described above. When configuring a sequence of words or symbols that should be rotated through,
it is important that all items are all lower case. The casing will be determined
by the item that initiated the rotation. For example, ~Small~ will be replaced
with ~Medium~ and ~SMALL~ will be replaced with ~MEDIUM~ using the example
described above.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,46 +1,67 @@
#+TITLE: editor/snippets # -*- mode: doom-docs-org -*-
#+DATE: February 11, 2017 #+title: :editor snippets
#+SINCE: v2.0 #+subtitle: My elves type so I don't have to
#+STARTUP: inlineimages #+created: February 11, 2017
#+since: 2.0.0
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]] This module adds snippet expansions to Emacs, powered by [[doom-package:][yasnippet]].
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#disabling-the-built-in-snippets][Disabling the built-in snippets]]
- [[#troubleshooting][Troubleshooting]]
* Description ** Maintainers
This module adds snippets to Emacs, powered by yasnippet. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module exposes no flags.
** Plugins ** Module flags
+ [[https://github.com/joaotavora/yasnippet][yasnippet]] /This module exposes no flags./
+ [[https://github.com/abo-abo/auto-yasnippet][auto-yasnippet]]
+ [[https://github.com/hlissner/doom-snippets][doom-snippets]] ** Packages
- [[doom-package:][yasnippet]]
- [[doom-package:][auto-yasnippet]]
- [[doom-package:][doom-snippets]]
** TODO Hacks ** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
* Prerequisites ** TODO Changelog
This module has no external dependencies. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Features * Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Disabling the built-in snippets ** Disabling the built-in snippets
Don't want to use provided one? Then add this to your private module, #+begin_src emacs-lisp
;; in $DOOMDIR/packages.el
#+BEGIN_SRC emacs-lisp
;; in ~/.doom.d/packages.el
(package! doom-snippets :ignore t) (package! doom-snippets :ignore t)
;; If you want to replace it with yasnippet's default snippets ;; If you want to replace it with yasnippet's default snippets
(package! yasnippet-snippets) (package! yasnippet-snippets)
#+END_SRC #+end_src
* TODO Troubleshooting ** Adding custom snippets
Custom snippets should be added under =$DOOMDIR/snippets/= directory. Refer to [[http://joaotavora.github.io/yasnippet/snippet-development.html][yasnippet-documentation]] on how to write snippets.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,17 +1,80 @@
#+TITLE: editor/word-wrap # -*- mode: doom-docs-org -*-
#+DATE: August 26, 2019 #+title: :editor word-wrap
#+SINCE: v2.1 #+subtitle: Soft-wrapping with language-aware indent
#+created: August 25, 2019
#+since: 21.12.0 (#1709)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds a minor-mode [[fn:][+word-wrap-mode]], which intelligently wraps long
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#configuration][Configuration]]
* Description
This module adds a minor-mode ~+word-wrap-mode~, which intelligently wraps long
lines in the buffer without modifying the buffer content. lines in the buffer without modifying the buffer content.
** Maintainers
- [[doom-user:][@flatwhatson]]
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][adaptive-wrap]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Activation
Word wrapping is not enabled by default.
Wrapping can be toggled in the current buffer with ~M-x +word-wrap-mode~. The
default doom bindings bind this to [[kbd:][SPC t w]] for ~evil~ users.
To enable wrapping in a specific mode, add it to the appropriate hook in your
~config.el~:
#+begin_src emacs-lisp
;; enable word-wrap in C/C++/ObjC/Java
(add-hook 'c-mode-common-hook #'+word-wrap-mode)
#+end_src
To customize the behaviour in a specific mode:
#+begin_src emacs-lisp
;; use a single indent in json-mode
(add-hook! 'json-mode-hook
(setq-local +word-wrap-extra-indent 'single)
(+word-wrap-mode +1))
#+end_src
To turn on word wrapping (almost) everywhere:
#+begin_src emacs-lisp
;; enable word-wrap (almost) everywhere
(+global-word-wrap-mode +1)
#+end_src
To disable global word-wrapping in a specific mode:
#+begin_src emacs-lisp
;; disable global word-wrap in emacs-lisp-mode
(add-to-list '+word-wrap-disabled-modes 'emacs-lisp-mode)
#+end_src
** Settings
Wrapped lines will be indented to match the preceding line. In code buffers, Wrapped lines will be indented to match the preceding line. In code buffers,
lines which are not inside a string or comment will have extra indentation as lines which are not inside a string or comment will have extra indentation as
determined by ~+word-wrap-extra-indent~. The default is to increase the indent determined by ~+word-wrap-extra-indent~. The default is to increase the indent
@ -37,45 +100,13 @@ The ~+word-wrap-visual-modes~ variable lists modes which should only enable
~visual-line-mode~ and not provide any prefix indentation. This is useful for ~visual-line-mode~ and not provide any prefix indentation. This is useful for
modes like ~org-mode~ which handle prefix indentation themselves. modes like ~org-mode~ which handle prefix indentation themselves.
** Module Flags * Troubleshooting
This module provides no flags. /There are no known problems with this module./ [[doom-report:][Report one?]]
** Plugins * Frequently asked questions
+ [[https://elpa.gnu.org/packages/adaptive-wrap.html][adaptive-wrap]] /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* Configuration * TODO Appendix
Word wrapping is not enabled by default. #+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
Wrapping can be toggled in the current buffer with ~M-x +word-wrap-mode~. The #+end_quote
default doom bindings bind this to ~SPC t w~ for ~evil~ users.
To enable wrapping in a specific mode, add it to the appropriate hook in your
~config.el~:
#+BEGIN_SRC emacs-lisp
;; enable word-wrap in C/C++/ObjC/Java
(add-hook 'c-mode-common-hook #'+word-wrap-mode)
#+END_SRC
To customize the behaviour in a specific mode:
#+BEGIN_SRC emacs-lisp
;; use a single indent in json-mode
(add-hook! 'json-mode-hook
(setq-local +word-wrap-extra-indent 'single)
(+word-wrap-mode +1))
#+END_SRC
To turn on word wrapping (almost) everywhere:
#+BEGIN_SRC emacs-lisp
;; enable word-wrap (almost) everywhere
(+global-word-wrap-mode +1)
#+END_SRC
To disable global word-wrapping in a specific mode:
#+BEGIN_SRC emacs-lisp
;; disable global word-wrap in emacs-lisp-mode
(add-to-list '+word-wrap-disabled-modes 'emacs-lisp-mode)
#+END_SRC

10
modules/emacs/README.org Normal file
View file

@ -0,0 +1,10 @@
# -*- mode: doom-docs-org -*-
#+title: :emacs
#+created: August 01, 2021
#+since: 21.12.0
* Description
Modules in this category augment and extend the built-in features of Emacs.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,49 +1,75 @@
#+TITLE: emacs/dired # -*- mode: doom-docs-org -*-
#+DATE: May 27, 2018 #+title: :emacs dired
#+SINCE: v2.0 #+subtitle: Making dired pretty [functional]
#+STARTUP: inlineimages #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides reasonable defaults and augmentations for dired.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#keybindings][Keybindings]]
- [[#ranger][Ranger]]
* Description ** Maintainers
This module provides configuration for dired. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+ranger= Enables dired to be more like [[https://github.com/ranger/ranger][ranger]]. - +icons ::
+ =+icons= Enables the display of fancy icons depending on file types in dired Enables the display of fancy icons depending on file types in dired buffers.
buffers. - +ranger ::
Enables dired to be more like [[https://github.com/ranger/ranger][ranger]].
** Plugins ** Packages
+ [[https://github.com/purcell/diredfl][diredfl]] - [[doom-package:][all-the-icons-dired]] if [[doom-module:][+icons]]
+ [[https://github.com/stsquad/dired-rsync][dired-rsync]] - [[doom-package:][diff-hl]]
+ [[https://github.com/dgutov/diff-hl/][diff-hl]] - [[doom-package:][diredfl]]
+ [[https://github.com/yqrashawn/fd-dired][fd-dired]] - [[doom-package:][dired-rsync]]
+ =+ranger= - [[doom-package:][fd-dired]]
+ [[https://github.com/ralesi/ranger.el][ranger]] - [[doom-package:][ranger]] if [[doom-module:][+ranger]]
+ =+icons=
+ [[https://github.com/jtbm37/all-the-icons-dired][all-the-icons-dired]]
* Prerequisites ** TODO Hacks
This module has no prerequisites *except on BSDs* where =GNU ls= (~gls~) is #+begin_quote
needed for it to work properly (Doom doctor will notify you if it is missing). 🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module has no requirements *except on BSDs* like MacOS or FreeBSD, where
=GNU ls= (aka ~gls~) is required.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Keybindings
| Keybind | Description | | Keybind | Description |
|-----------+------------------------------| |---------+----------------------------|
| =SPC f d= | Find directory with dired | | [[kbd:][SPC f d]] | Find directory with dired |
| =q= | Exit dired buffer | | [[kbd:][q]] | Exit dired buffer |
| =C-c C-r= | Run =dired-rsync= | | [[kbd:][C-c C-r]] | Run [[doom-package:][dired-rsync]] |
| =C-c C-e= | Rename entries with =wdired= | | [[kbd:][C-c C-e]] | Rename entries with [[doom-package:][wdired]] |
Other keybindings can be found on the official [[https://www.gnu.org/software/emacs/refcards/pdf/dired-ref.pdf][Dired reference card]]. Other keybindings can be found on the official [[https://www.gnu.org/software/emacs/refcards/pdf/dired-ref.pdf][Dired reference card]].
** Ranger ** Ranger
If =+ranger= is enabled often a buffer will be opened in minimal ranger mode If [[doom-module:][+ranger]] is enabled often a buffer will be opened in minimal ranger mode
(deer-mode). In this case =z P= can be used to toggle between full ranger and (~deer-mode~). In this case [[kbd:][z P]] can be used to toggle between full ranger and
deer-mode. ~deer-mode~.
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,55 @@
# -*- mode: doom-docs-org -*-
#+title: :emacs electric
#+subtitle: Shocking keyword-based electric-indent
#+created: February 21, 2017
#+since: 2.0.0
* Description :unfold:
This module augments the built-in [[doom-package:][electric]] package with keyword-based
indentation (as opposed to character-based).
** Maintainers
- [[doom-user:][@hlissner]]
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
/This module doesn't install any packages./
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,36 +1,58 @@
#+TITLE: emacs/ibuffer # -*- mode: doom-docs-org -*-
#+DATE: October 20, 2019 #+title: :emacs ibuffer
#+SINCE: v2.1.0 #+subtitle: Edit me like one of your French buffers
#+STARTUP: inlineimages #+created: October 20, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module augments the built-in [[doom-package:][ibuffer]] package.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description - Adds project-based grouping of buffers
This module augments ibuffer. - Support for file-type icons
- Uses human-readable file-size
+ Adds project-based grouping of buffers ** Maintainers
+ Support for file-type icons *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
+ Uses human-readable file-size
** Module Flags ** Module flags
+ =+icons= Enables filetype icons for buffers - +icons ::
Enable filetype icons for buffers using [[doom-package:][all-the-icons]].
** Plugins ** Packages
+ [[https://github.com/purcell/ibuffer-projectile][ibuffer-projectile]] - [[doom-package:][ibuffer-projectile]]
+ [[https://github.com/purcell/ibuffer-vc][ibuffer-vc]] - [[doom-package:][ibuffer-vc]]
* Prerequisites ** TODO Hacks
This module has no prerequisites. #+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
* TODO Features ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,68 +1,84 @@
#+TITLE: emacs/undo # -*- mode: doom-docs-org -*-
#+DATE: April 13, 2020 #+title: :emacs undo
#+SINCE: v3.0.0 #+subtitle: Persistent, smarter undo for your inevitable mistakes
#+STARTUP: inlineimages nofold #+created: April 14, 2020
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#disabling-persistent-undo-history][Disabling persistent undo history]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module augments Emacs' built-in undo system to be more intuitive and to This module augments Emacs' built-in undo system to be more intuitive and to
persist across Emacs sessions. persist across Emacs sessions.
** Maintainers ** Maintainers
This module has no dedicated maintainers. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+tree= Uses ~undo-tree~ instead of ~undo-fu~, which is a little less stable,
but offers branching undo history and a visualizer for navigating it.
** Plugins ** Module flags
+ [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]] - +tree ::
+ [[https://gitlab.com/ideasman42/emacs-undo-fu-session][undo-fu-session]] Uses [[doom-package:][undo-tree]] instead of [[doom-package:][undo-fu]], which is a little less stable, but offers
+ [[https://github.com/emacsmirror/undo-tree][undo-tree]] (=+tree=) branching undo history and a visualizer for navigating it.
** Packages
- [[doom-package:][undo-fu]]
- [[doom-package:][undo-fu-session]]
- [[doom-package:][undo-tree]] if [[doom-module:][+tree]]
** Hacks ** Hacks
+ Both undo-fu and undo-tree have been modified to use zstd to compress undo - Both undo-fu and undo-tree have been modified to use =zstd= to compress undo
history if it is available. history if it is available.
+ undo-tree only - undo-tree only
+ Text properties are stripped from undo history to shrink it. - Text properties are stripped from undo history to shrink it.
+ Undo-tree is too chatty about saving its history files. This has be - Undo-tree is too chatty about saving its history files. This has be
"silenced". i.e. It's visible in \*Messages\*, but won't appear in your "silenced". i.e. It's visible in \*Messages\*, but won't appear in your
minibuffer. minibuffer.
+ unfo-fu only - unfo-fu only
+ Doom defines =undo-fu-mode= to make it easier to add hooks/mode-local - Doom defines ~undo-fu-mode~ to make it easier to add hooks/mode-local
keybinds. keybinds.
* Prerequisites ** TODO Changelog
This module has no prerequisites. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Features * Installation
# An in-depth list of features, how to use them, and their dependencies. [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Disabling persistent undo history ** Disabling persistent undo history
+ If you are using =+tree=: - If you are using [[doom-module:][+tree]]:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(after! undo-tree (after! undo-tree
(setq undo-tree-auto-save-history nil)) (setq undo-tree-auto-save-history nil))
#+END_SRC #+end_src
+ If you aren't: - If you aren't:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(remove-hook 'undo-fu-mode-hook #'global-undo-fu-session-mode) (remove-hook 'undo-fu-mode-hook #'global-undo-fu-session-mode)
#+END_SRC #+end_src
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. [[doom-report:][Report an issue?]]
** undo-tree
- Has been known to truncate undo history unpredictably, due to Emacs' undo
cleanup imposing linear undo limits on non-linear undo tree data. Doom already
sets ~undo-limit~, ~undo-strong-limit~, and ~undo-outer-limit~ absurdly high
to mitigate this somewhat.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,42 +1,61 @@
#+TITLE: emacs/vc # -*- mode: doom-docs-org -*-
#+DATE: May 23, 2020 #+title: :emacs vc
#+SINCE: v3.0.0 #+subtitle: Be the difference you want to see in the fringe
#+STARTUP: inlineimages nofold #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module augments Emacs builtin version control support and provides better
- [[#maintainers][Maintainers]] integration with =git=.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module augments Emacs builtin version control support and provides better integration with git
** Maintainers ** Maintainers
This module has no dedicated maintainers. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags.
** Plugins ** Module flags
# A list of linked plugins /This module has no flags./
+ [[https://github.com/rmuslimov/browse-at-remote][browse-at-remote]]
+ [[https://gitlab.com/pidu/git-timemachine][git-timemachine]]
+ [[https://github.com/magit/git-modes][gitconfig-mode]]
+ [[https://github.com/magit/git-modes][gitignore-mode]]
* Prerequisites ** Packages
This module has no prerequisites. - [[doom-package:][browse-at-remote]]
- [[doom-package:][git-timemachine]]
- [[doom-package:][gitconfig-mode]]
- [[doom-package:][gitignore-mode]]
* TODO Features ** Hacks
# An in-depth list of features, how to use them, and their dependencies. - Allow [[doom-package:][browse-at-remote]] commands in [[doom-package:][git-timemachine]] buffers to open that file
in your browser at the visited revision.
- [[doom-package:][git-timemachine]] buffers will display revision details in the header-line,
rather than the minibuffer (easier to see).
- [[doom-package:][browse-at-remote]] will fall back to the =master= branch if target is in a
detached state.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module only requires [[https://git-scm.com/][Git]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

10
modules/email/README.org Normal file
View file

@ -0,0 +1,10 @@
# -*- mode: doom-docs-org -*-
#+title: :email
#+created: October 14, 2021
#+since: 21.12.0
* Description
Modules that turn Emacs in an email client.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,79 +1,87 @@
#+TITLE: email/mu4e # -*- mode: doom-docs-org -*-
#+DATE: April 8, 2017 #+title: :email mu4e
#+SINCE: v2.0 #+subtitle: The great filter Hanson hadn't anticipated
#+STARTUP: inlineimages #+created: April 08, 2017
#+since: 2.0.3
* Table of Contents :TOC:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#nixos][NixOS]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#offlineimap][offlineimap]]
- [[#mbsync][mbsync]]
- [[#fetching-your-mail-in-other-ways][Fetching your mail in other ways]]
- [[#mu-and-mu4e][mu and mu4e]]
- [[#orgmsg][OrgMsg]]
- [[#mu4e-alert][mu4e-alert]]
- [[#troubleshooting][Troubleshooting]]
- [[#no-such-file-or-directory-mu4e][=No such file or directory, mu4e=]]
- [[#void-function-org-time-add-error-on-gentoo][~(void-function org-time-add)~ error on Gentoo]]
* Description
This module makes Emacs an email client, using [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]]. This module makes Emacs an email client, using [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]].
#+begin_quote - Tidied mu4e headers view, with flags from [[doom-package:][all-the-icons]].
I want to live in Emacs, but as we all know, living is incomplete without email. - Consistent coloring of reply depths (across compose and gnus modes).
So I prayed to the text editor gods and they (I) answered. Emacs+evil's editing - Prettified =mu4e:main= view.
combined with org-mode for writing emails? /Yes please./ - 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.
It uses ~mu4e~ to read my email, but depends on ~offlineimap~ (to sync my email #+begin_quote
via IMAP) and ~mu~ (to index my mail into a format ~mu4e~ can understand). 💡 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 #+end_quote
** Maintainers ** Maintainers
+ [[https://github.com/tecosaur][@tecosaur]] - [[doom-user:][@tecosaur]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+gmail= Enables gmail-specific configuration for mail ~To~ or ~From~ a gmail
address, or a maildir with ~gmail~ in the name.
+ =+org= Use =org-msg= for composing email in Org, then sending a multipart text
(ASCII export) and HTML message.
** Plugins ** Module flags
+ [[https://github.com/iqbalansari/mu4e-alert][mu4e-alert]] - +gmail ::
+ =+org= Enable gmail-specific configuration for mail ~To~ or ~From~ a gmail address,
+ [[https://github.com/jeremy-compostella/org-msg][org-msg]] or a maildir with ~gmail~ in the name.
- +org ::
Use [[doom-package:][org-msg]] for composing email in Org, then sending a multipart text (ASCII
export) and HTML message.
** Packages
- [[doom-package:][mu4e-alert]]
- [[doom-package:][org-msg]] if [[doom-module:][+org]]
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites
This module requires: This module requires:
+ [[https://www.djcbsoftware.nl/code/mu/][mu]], to index your downloaded messages and to provide the [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]] package. - [[https://www.djcbsoftware.nl/code/mu/][mu]], to index your downloaded messages and to provide the [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]] package.
+ A program to sync your mail. This module comes with builtin support for - A program to sync your mail. This module comes with builtin support for [[https://isync.sourceforge.io/][mbsync]]
[[https://isync.sourceforge.io/][mbsync]] (recommended, default) or [[http://www.offlineimap.org/][offlineimap]] but you can sync mail in (recommended, default) or [[http://www.offlineimap.org/][offlineimap]] but you can sync mail in other ways too.
other ways too.
#+name: Install Matrix #+name: Install Matrix
| Platform | Install command | Base packages | | Platform | Install command | Base packages |
|---------------+--------------------------+-------------------------| |---------------+----------------------------+-------------------------|
| MacOS | ~brew install <pkgs>~ | =mu= | | MacOS | ~$ brew install <pkgs>~ | =mu= |
| Arch | ~pacman -S <pkgs>~ | (AUR, ~yay -S~) =mu= | | Arch | ~$ pacman -S <pkgs>~ | (AUR, ~$ yay -S~) =mu= |
| openSUSE | ~zypper install <pkgs>~ | =maildir-utils=, =mu4e= | | openSUSE | ~$ zypper install <pkgs>~ | =maildir-utils=, =mu4e= |
| Fedora | ~dnf install <pkgs>~ | =maildir-utils= | | Fedora | ~$ dnf install <pkgs>~ | =maildir-utils= |
| Debian/Ubuntu | ~apt-get install <pkgs>~ | =maildir-utils=, =mu4e= | | Debian/Ubuntu | ~$ apt-get install <pkgs>~ | =maildir-utils=, =mu4e= |
Then install either the =isync= (=mbsync=) or =offlineimap= package. Then install either the =isync= (=mbsync=) or =offlineimap= package.
To send mail, mu4e uses [[https://www.gnu.org/software/emacs/manual/html_mono/smtpmail.html][smtpmail]] (an Emacs library) by default. To send mail, mu4e uses [[https://www.gnu.org/software/emacs/manual/html_mono/smtpmail.html][smtpmail]] (an Emacs library) by default. You can also run
You can also run a local SMTP server like =sendmail= or =postfix=, or use an SMTP a local SMTP server like =sendmail= or =postfix=, or use an SMTP forwarder such
forwarder such as =msmtp= (recommended). as =msmtp= (recommended).
If you use =msmtp=, you'll likely want to add the following to your If you use =msmtp=:
=config.el=:
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; add to $DOOMDIR/config.el
(after! mu4e (after! mu4e
(setq sendmail-program (executable-find "msmtp") (setq sendmail-program (executable-find "msmtp")
send-mail-function #'smtpmail-send-it send-mail-function #'smtpmail-send-it
@ -83,42 +91,40 @@ If you use =msmtp=, you'll likely want to add the following to your
#+end_src #+end_src
** NixOS ** NixOS
#+BEGIN_SRC nix #+begin_src nix
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mu mu
# And one of the following # And one of the following
isync isync
offlineimap offlineimap
]; ];
#+END_SRC #+end_src
[[https://github.com/Emiller88/dotfiles/blob/5eaabedf1b141c80a8d32e1b496055231476f65e/modules/shell/mail.nix][An example of setting up mbsync and mu with home-manager]] [[https://github.com/Emiller88/dotfiles/blob/5eaabedf1b141c80a8d32e1b496055231476f65e/modules/shell/mail.nix][An example of setting up mbsync and mu with home-manager]]
* Features * TODO Usage
+ Tidied mu4e headers view, with flags from =all-the-icons= #+begin_quote
+ Consistent coloring of reply depths (across compose and gnus modes) 🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
+ Prettified =mu4e:main= view #+end_quote
+ Cooperative locking of the =mu= process. Another Emacs instance may request
access, or grab the lock when it's available. * TODO Configuration
+ =org-msg= integration with =+org=, which can be toggled per-message, with revamped style and #+begin_quote
an accent color 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
+ Gmail integrations with the =+gmail= flag #+end_quote
+ Email notifications with =mu4e-alert=, and (on Linux) a customised notification style
* Configuration
** offlineimap ** offlineimap
This module uses =mbsync= by default. To use =offlineimap=, change ~+mu4e-backend~: This module uses =mbsync= by default. To use =offlineimap=, change
~+mu4e-backend~:
#+BEGIN_SRC emacs-lisp #+begin_src emacs-lisp
(setq +mu4e-backend 'offlineimap) (setq +mu4e-backend 'offlineimap)
#+END_SRC #+end_src
Next, you need to write a configuration file for =offlineimap=. Mine can be found Next, you need to write a configuration file for =offlineimap=. Mine can be
[[https://github.com/hlissner/dotfiles/blob/be0dce5dae8f3cbafaac0cc44269d84b4a742c46/shell/mu/][in my dotfiles repository]]. It is configured to download mail to ~\~/.mail~. I found [[https://github.com/hlissner/dotfiles/blob/be0dce5dae8f3cbafaac0cc44269d84b4a742c46/shell/mu/][in my dotfiles repository]]. It is configured to download mail to
use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find a *very* ~\~/.mail~. I use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find
detailed configuration [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]]. a *very* detailed configuration [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]].
Next you can download your email with ~offlineimap -o~. This may take a while, Next you can download your email with ~$ offlineimap -o~. This may take a while,
especially if you have thousands of mails. especially if you have thousands of mails.
You can now proceed with the [[#mu-and-mu4e][mu and mu4e]] section. You can now proceed with the [[#mu-and-mu4e][mu and mu4e]] section.
@ -127,12 +133,12 @@ You can now proceed with the [[#mu-and-mu4e][mu and mu4e]] section.
The steps needed to set up =mu4e= with =mbsync= are very similar to the ones for The steps needed to set up =mu4e= with =mbsync= are very similar to the ones for
[[#offlineimap][offlineimap]]. [[#offlineimap][offlineimap]].
Start with writing a ~~/.mbsyncrc~. An example for Gmail can be found on Start with writing a =~/.mbsyncrc=. An example for Gmail can be found on
[[http://pragmaticemacs.com/emacs/migrating-from-offlineimap-to-mbsync-for-mu4e/][pragmaticemacs.com]]. A non-Gmail example is available as a gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]]. The [[http://isync.sourceforge.net/mbsync.html][manual [[http://pragmaticemacs.com/emacs/migrating-from-offlineimap-to-mbsync-for-mu4e/][pragmaticemacs.com]]. A non-Gmail example is available as a gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]]. The [[http://isync.sourceforge.net/mbsync.html][manual
page]] contains all needed information to set up your own. page]] contains all needed information to set up your own.
Next you can download your email with ~mbsync --all~. This may take a while, but Next you can download your email with ~$ mbsync --all~. This may take a while,
should be quicker than =offlineimap= ;). but should be quicker than =offlineimap= ;).
You can now proceed with the [[#mu-and-mu4e][mu and mu4e]] section. You can now proceed with the [[#mu-and-mu4e][mu and mu4e]] section.
@ -142,19 +148,20 @@ tailored =mbsync= command to just fetch the new changes.
If this is of interest, this approach can be seen [[https://tecosaur.github.io/emacs-config/config.html#fetching][in @tecosaur's config]] where If this is of interest, this approach can be seen [[https://tecosaur.github.io/emacs-config/config.html#fetching][in @tecosaur's config]] where
[[https://gitlab.com/shackra/goimapnotify][goimapnotify]] is used for this. [[https://gitlab.com/shackra/goimapnotify][goimapnotify]] is used for this.
** Fetching your mail in other ways ** Fetching your mail in other ways
You also have the possiblity to invoke an arbitary shell command to fetch your You also have the possiblity to invoke an arbitary shell command to fetch your
mail by disabling this module's backend selection and setting the value of the mail by disabling this module's backend selection and setting the value of the
~mu4e-get-mail-command~ to the command you want to execute. ~mu4e-get-mail-command~ to the command you want to execute:
#+BEGIN_SRC emacs-lisp #+begin_src emacs-lisp
(setq +mu4e-backend nil) (setq +mu4e-backend nil)
(after! mu4e (after! mu4e
(setq mu4e-get-mail-command "your_command")) (setq mu4e-get-mail-command "your_command"))
#+END_SRC #+end_src
If your command prompts you for a passphrase, you might want to change the value If your command prompts you for a passphrase, you might want to change the value
of the ~mu4e~get-mail-password-regexp~ such that =mu4e= will recognize the of the ~mu4e~get-mail-password-regexp~ such that [[doom-package:][mu4e]] will recognize the prompt
prompt and let you provide the passphrase from within Emacs. and let you provide the passphrase from within Emacs.
** mu and mu4e ** mu and mu4e
You should have your email downloaded already. If you have not, you need to set You should have your email downloaded already. If you have not, you need to set
@ -162,24 +169,23 @@ You should have your email downloaded already. If you have not, you need to set
Before you can use =mu4e= or the CLI program =mu=, you need to index your email Before you can use =mu4e= or the CLI program =mu=, you need to index your email
initially. How to do that differs a little depending on the version of =mu= you initially. How to do that differs a little depending on the version of =mu= you
use. You can check your version with ~mu --version~. use. You can check your version with ~$ mu --version~.
For =mu= *>=1.4* you need to run two commands: For =mu= *>=1.4* you need to run two commands:
#+BEGIN_SRC sh #+begin_src sh
mu init --maildir ~/.mail --my-address email@example.com mu init --maildir ~/.mail --my-address email@example.com
mu index mu index
#+END_SRC #+end_src
=mu= *<1.4* only requires one command: =mu= *<1.4* only requires one command:
#+BEGIN_SRC sh #+begin_src sh
mu index --maildir ~/.mail mu index --maildir $HOME/.mail
#+END_SRC #+end_src
Be sure to replace ~~/.mail~ with the directory containing your mail. Be sure to replace =$HOME/.mail= with the directory containing your mail.
Then configure Emacs to use your email address: Then configure Emacs to use your email address:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp :tangle no
;; Each path is relative to the path of the maildir you passed to mu ;; Each path is relative to the path of the maildir you passed to mu
(set-email-account! "bar.com" (set-email-account! "bar.com"
'((mu4e-sent-folder . "/bar.com/Sent Mail") '((mu4e-sent-folder . "/bar.com/Sent Mail")
@ -190,14 +196,13 @@ Then configure Emacs to use your email address:
(user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4 (user-mail-address . "foo@bar.com") ;; only needed for mu < 1.4
(mu4e-compose-signature . "---\nYours truly\nThe Baz")) (mu4e-compose-signature . "---\nYours truly\nThe Baz"))
t) t)
#+END_SRC #+end_src
If you use multiple email accounts, defining them with ~set-email-account!~ will If you use multiple email accounts, defining them with ~set-email-account!~ will
automatically set the appropriate account context when replying to emails in automatically set the appropriate account context when replying to emails in
that account's maildir. ~mu4e-context-policy~ and ~mu4e-compose-context-policy~ that account's maildir. ~mu4e-context-policy~ and ~mu4e-compose-context-policy~
can be modified to change context behavior when opening mu4e and composing can be modified to change context behavior when opening mu4e and composing
email: email:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq mu4e-context-policy 'ask-if-none (setq mu4e-context-policy 'ask-if-none
mu4e-compose-context-policy 'always-ask) mu4e-compose-context-policy 'always-ask)
@ -209,7 +214,7 @@ you are not replying to an email to or from one of the specified aliases, you
will be prompted for an alias to send from. will be prompted for an alias to send from.
*** Gmail *** Gmail
With the =+gmail= flag, integrations are applied which account for the different With the [[doom-module:][+gmail]] flag, integrations are applied which account for the different
behaviour of Gmail. behaviour of Gmail.
The integrations are applied to addresses with /both/ "@gmail.com" in the The integrations are applied to addresses with /both/ "@gmail.com" in the
@ -222,8 +227,8 @@ benefit from the integrations:
("example@example.com" . "/example"))) ("example@example.com" . "/example")))
#+end_src #+end_src
If you only use Gmail, you can improve performance due to the way Gmail If you only use Gmail, you can improve performance due to the way Gmail presents
presents messages over IMAP: messages over IMAP:
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; don't need to run cleanup after indexing for gmail ;; don't need to run cleanup after indexing for gmail
(setq mu4e-index-cleanup nil (setq mu4e-index-cleanup nil
@ -238,14 +243,15 @@ as deleted: Auto-Expunge off - Wait for the client to update the server." and
folder: Move the message to the trash" for the integrations to work as expected. folder: Move the message to the trash" for the integrations to work as expected.
** OrgMsg ** OrgMsg
With the =+org= flag, =org-msg= is installed, and ~org-msg-mode~ is enabled before With the [[doom-module:][+org]] flag, [[doom-package:][org-msg]] is installed, and ~org-msg-mode~ is enabled before
composing the first message. To disable ~org-msg-mode~ by default, simply composing the first message. To disable ~org-msg-mode~ by default:
#+BEGIN_SRC emacs-lisp :tangle no #+begin_src emacs-lisp
(setq mu4e-compose--org-msg-toggle-next nil) ;; add to $DOOMDIR/config.el
#+END_SRC (setq +mu4e-compose-org-msg-toggle-next nil)
#+end_src
To toggle org-msg for a single message, just apply the universal argument to the To toggle org-msg for a single message, just apply the universal argument to the
compose or reply command (=SPC u= with ~evil~, =C-u= otherwise). compose or reply command ([[kbd:][SPC u]] with [[doom-package:][evil]], [[kbd:][C-u]] otherwise).
The accent color that Doom uses can be customised by setting The accent color that Doom uses can be customised by setting
~+org-msg-accent-color~ to a CSS color string. ~+org-msg-accent-color~ to a CSS color string.
@ -253,35 +259,44 @@ The accent color that Doom uses can be customised by setting
** mu4e-alert ** mu4e-alert
This provides notifications through the [[https://github.com/jwiegley/alert][alert]] library. This provides notifications through the [[https://github.com/jwiegley/alert][alert]] library.
If you don't like this, simply add If you don't like this use:
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; add to $DOOMDIR/packages.el
(package! mu4e-alert :disable t) (package! mu4e-alert :disable t)
#+end_src #+end_src
to your [[elisp:(find-file (expand-file-name "packages.el" doom-private-dir))][packages.el]] and it will not be used.
** Enabling automatic email fetching
By default, periodic email update is *disabled*. To enable periodic
mail retrieval/indexing, change the value of ~mu4e-update-interval~:
#+begin_src emacs-lisp
(setq mu4e-update-interval 60)
#+end_src
* Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
** =No such file or directory, mu4e= ** =No such file or directory, mu4e=
You will get =No such file or directory, mu4e= errors if you don't run ~doom You will get =No such file or directory, mu4e= errors if you don't run ~$ doom
sync~ after installing =mu= through your package manager. sync~ after installing =mu= through your package manager.
Some times the the ~mu~ package does not include ~mu4e~ (*cough Ubuntu*). Some times the the ~mu~ package does not include ~mu4e~ (*cough Ubuntu*). if
if that's the case you will need to [[https://github.com/djcb/mu][install]] it and add it to your ~load-path~ that's the case you will need to [[https://github.com/djcb/mu][install]] it and add it to your ~load-path~ you
you can do that by... can do that by:
#+BEGIN_SRC emacs-lisp :tangle no #+begin_src emacs-lisp
(add-to-list 'load-path "your/path/to/mu4e") (add-to-list 'load-path "your/path/to/mu4e")
;; if you installed it using your package manager ;; if you installed it using your package manager
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e") (add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e")
;; if you built from source ;; if you built from source
(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e") (add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu4e")
#+END_SRC #+end_src
If you have completely lost your install then you can use this handy command! If you have completely lost your install then you can use:
#+begin_src sh
#+BEGIN_SRC shell
find / -type d -iname '*mu4e*' find / -type d -iname '*mu4e*'
# I recommend rerouting all of the errors to /dev/null # I recommend rerouting all of the errors to /dev/null
find / -type d -iname '*mu4e*' 2> /dev/null find / -type d -iname '*mu4e*' 2> /dev/null
#+END_SRC #+end_src
** ~(void-function org-time-add)~ error on Gentoo ** ~(void-function org-time-add)~ error on Gentoo
Gentoo users will see this error because [[https://gitweb.gentoo.org/repo/gentoo.git/tree/net-mail/mu/files/70mu-gentoo.el#n2][the =net-mail/mu= package eagerly loads Gentoo users will see this error because [[https://gitweb.gentoo.org/repo/gentoo.git/tree/net-mail/mu/files/70mu-gentoo.el#n2][the =net-mail/mu= package eagerly loads
@ -291,3 +306,11 @@ version that Doom installs.
Later versions of the =net-mail/mu= package have [[https://gitweb.gentoo.org/repo/gentoo.git/commit/net-mail/mu?id=770e1fccb119fbce8ba6d16021a3598123f212ff][fixed this issue]], but you may Later versions of the =net-mail/mu= package have [[https://gitweb.gentoo.org/repo/gentoo.git/commit/net-mail/mu?id=770e1fccb119fbce8ba6d16021a3598123f212ff][fixed this issue]], but you may
need to switch to the unstable build of =net-mail/mu= to see it. need to switch to the unstable build of =net-mail/mu= to see it.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,62 +1,60 @@
#+TITLE: email/notmuch # -*- mode: doom-docs-org -*-
#+DATE: May 5, 2019 #+title: :email notmuch
#+SINCE: v2.0 #+subtitle: Closest Emacs will ever be to multi-threaded
#+STARTUP: inlineimages #+created: July 31, 2018
#+since: 21.12.0
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]] This module turns Emacs into an email client using [[doom-package:][notmuch]].
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#macos][MacOS]]
- [[#arch-linux][Arch Linux]]
- [[#nixos][NixOS]]
- [[#opensuse][openSUSE]]
- [[#debianubuntu][Debian/Ubuntu]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#downloading-your-email][Downloading your email]]
- [[#sending-mail][Sending mail]]
- [[#customize-notmuch-hello-buffer][Customize =*notmuch-hello*= buffer]]
- [[#changing-the-notmuch-landing-page][Changing the =notmuch= landing page]]
- [[#writing-html-emails][Writing HTML Emails]]
- [[#troubleshooting][Troubleshooting]]
* Description ** Maintainers
This module turns Emacs into an email client using [[https://notmuchmail.org/][notmuch]]. *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+org= Enables org-mime for writing HTML emails using org-mode. - +afew ::
+ =+afew= Enables integration with =afew=. Enable integration with [[https://github.com/afewmail/afew][afew]].
- +org ::
Enable [[doom-package:][org-mime]] for writing HTML emails using org-mode.
** Plugins ** Packages
+ [[https://notmuchmail.org/][notmuch]] - [[doom-package:][counsel-notmuch]] if [[doom-module:][:completion ivy]]
+ [[https://github.com/org-mime/org-mime][org-mime]]* (with =+org= flag) - [[doom-package:][helm-notmuch]] if [[doom-module:][:completion helm]]
+ [[https://github.com/fuxialexander/counsel-notmuch][counsel-notmuch]]* - [[doom-package:][notmuch]]
+ [[https://github.com/emacs-helm/helm-notmuch][helm-notmuch]]* - [[doom-package:][org-mime]]* if [[doom-module:][+org]]
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites
This module requires: This module requires:
+ Either [[https://github.com/gauteh/lieer][gmailieer]] (default), [[https://isync.sourceforge.io/][mbsync]] or [[http://www.offlineimap.org/][offlineimap]] (to sync mail with) + Either [[https://github.com/gauteh/lieer][gmailieer]] (default), [[https://isync.sourceforge.io/][mbsync]] or [[http://www.offlineimap.org/][offlineimap]] -- to sync mail with.
+ [[https://notmuchmail.org/][notmuch]], to index and tag your downloaded messages. + [[https://notmuchmail.org/][notmuch]] -- to index and tag your downloaded messages.
+ [[https://github.com/afewmail/afew][afew]] , optionally to initially tag your downloaded messages. + [[https://github.com/afewmail/afew][afew]] -- optionally to initially tag your downloaded messages.
** TODO MacOS ** TODO MacOS
** Arch Linux ** Arch Linux
Run one of the following commands. Run one of the following commands:
#+begin_src sh
#+BEGIN_SRC sh
pacman -S isync notmuch #mbsync pacman -S isync notmuch #mbsync
#+END_SRC #+end_src
#+BEGIN_SRC sh #+begin_src sh
pacman -S offlineimap notmuch pacman -S offlineimap notmuch
#+END_SRC #+end_src
See: [[https://wiki.archlinux.org/index.php/Notmuch][Arch Wiki - Notmuch]] See: [[https://wiki.archlinux.org/index.php/Notmuch][Arch Wiki - Notmuch]]
** NixOS ** NixOS
#+BEGIN_SRC nix #+begin_src nix
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
notmuch notmuch
# And one of the following # And one of the following
@ -64,20 +62,28 @@ environment.systemPackages = with pkgs; [
isync isync
offlineimap offlineimap
]; ];
#+END_SRC #+end_src
[[https://github.com/Emiller88/dotfiles/blob/319841bd3b89e59b01d169137cceee3183aba4fc/modules/shell/mail.nix][An example of setting up mbsync and notmuch with home-manager]] [[https://github.com/Emiller88/dotfiles/blob/319841bd3b89e59b01d169137cceee3183aba4fc/modules/shell/mail.nix][An example of setting up mbsync and notmuch with home-manager]]
** TODO openSUSE ** TODO openSUSE
** TODO Debian/Ubuntu ** TODO Debian/Ubuntu
* Features * TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
| Keymap | Command | Description | | Keymap | Command | Description |
| ~SPC m u~ | =+notmuch/update= | Download, sync, and index emails with notmuch | |-----------------+--------------------+-----------------------------------------------|
| ~SPC m c~ | =+notmuch/compose= | Compose new email | | [[kbd:][<localleader> u]] | ~+notmuch/update~ | Download, sync, and index emails with notmuch |
| [[kbd:][<localleader> c]] | ~+notmuch/compose~ | Compose new email |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Downloading your email ** Downloading your email
To download your email you need a sync backend. Out of the box, this module To download your email you need a sync backend. Out of the box, this module
supports =Gmailier= (the default), =mbsync=, and =offlineimap= (ordered by supports =Gmailier= (the default), =mbsync=, and =offlineimap= (ordered by
@ -86,109 +92,118 @@ through setting them up with notmuch.
Later, once you've set up a sync backend and downloaded your email, you must Later, once you've set up a sync backend and downloaded your email, you must
index your email for the first time: index your email for the first time:
#+begin_src sh
#+BEGIN_SRC sh
notmuch new notmuch new
#+END_SRC #+end_src
*** lieer *** lieer
[[https://github.com/gauteh/lieer][Lieer]], formerly called Gmailieer, is the indexing tool used by default. To
[[https://github.com/gauteh/lieer][Lieer]], formerly called Gmailieer, is the indexing tool used by default. To install lieer, see the [[https://github.com/gauteh/lieer#installation][installation docs]]. install lieer, see the [[https://github.com/gauteh/lieer#installation][installation docs]].
*** offlineimap *** offlineimap
To use [[https://www.offlineimap.org/][offlineimap]], change ~+notmuch-sync-backend~: To use [[https://www.offlineimap.org/][offlineimap]], change ~+notmuch-sync-backend~:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp ;; add to $DOOMDIR/config.el
;; add to ~/.doom.d/config.el
(setq +notmuch-sync-backend 'offlineimap) (setq +notmuch-sync-backend 'offlineimap)
#+END_SRC #+end_src
Next, write a configuration file for =offlineimap=. [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][Here is a comprehensive Next, write a configuration file for =offlineimap=. [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][Here is a comprehensive
example]] and [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf.minimal][another minimal one]]. example]] and [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf.minimal][another minimal one]].
As a real world example, [[https://github.com/hlissner/dotfiles/blob/5f146b6c39552c0cf38025406f5dba7389542b0a/shell/mu/.offlineimaprc][here is my old config]], where it is configured to As a real world example, [[https://github.com/hlissner/dotfiles/blob/5f146b6c39552c0cf38025406f5dba7389542b0a/shell/mu/.offlineimaprc][here is my old config]], where it is configured to
download mail to ~\~/.mail~. I used [[https://www.passwordstore.org/][unix pass]] to securely store my login download mail to =$HOME/.mail=. I used [[https://www.passwordstore.org/][unix pass]] to securely store my login
credentials. credentials.
Finally, download your email with ~offlineimap -o~. This may take a while, Finally, download your email with ~$ offlineimap -o~. This may take a while,
especially if you have thousands of emails. especially if you have thousands of emails.
*** mbsync *** mbsync
To use [[https://isync.sourceforge.io/][mbsync]], change ~+notmuch-sync-backend~: To use [[https://isync.sourceforge.io/][mbsync]], change ~+notmuch-sync-backend~:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(setq +notmuch-sync-backend 'mbsync) (setq +notmuch-sync-backend 'mbsync)
;; Use `mbsync-xdg' if your mbsync config lives in $XDG_CONFIG_HOME/isync: ;; Use `mbsync-xdg' if your mbsync config lives in $XDG_CONFIG_HOME/isync:
(setq +notmuch-sync-backend 'mbsync-xdg) (setq +notmuch-sync-backend 'mbsync-xdg)
#+END_SRC #+end_src
The steps needed to set up =notmuch= with =mbsync= are similar to the ones for The steps needed to set up =notmuch= with =mbsync= are similar to the ones for
[[*offlineimap][offlineimap]]. [[*offlineimap][offlineimap]].
Start with writing a ~\~/.mbsyncrc~ to store your configuration. An example for Start with writing a =$HOME/.mbsyncrc= to store your configuration. An example
GMAIL can be found on the [[https://wiki.archlinux.org/index.php/isync#Configuring][ArchWiki]] which will also explain how its integration for GMAIL can be found on the [[https://wiki.archlinux.org/index.php/isync#Configuring][ArchWiki]] which will also explain how its
with notmuch for auto synchronization. A non-GMAIL example is available as a integration with notmuch for auto synchronization. A non-GMAIL example is
gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]]. available as a gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]].
Finally, download your email with ~mbsync --all~. This may take a while, but Finally, download your email with ~$ mbsync --all~. This may take a while, but
will be quicker than =offlineimap=. will be quicker than =offlineimap=.
*** Custom method *** Custom method
If you have a unique method for synchronizing your email, you can define your If you have a unique method for synchronizing your email, you can define your
own backend: own backend:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(setq +notmuch-sync-backend 'custom (setq +notmuch-sync-backend 'custom
;; Set this to an arbitrary shell command ;; Set this to an arbitrary shell command
+notmuch-sync-command "my-notmuch-sync-cmd") +notmuch-sync-command "my-notmuch-sync-cmd")
#+END_SRC #+end_src
** Sending mail ** Sending mail
- [[https://notmuchmail.org/notmuch-emacs/#index6h2][notmuch docs: Sending mail]] - [[https://notmuchmail.org/notmuch-emacs/#index6h2][notmuch docs: Sending mail]]
- [[https://notmuchmail.org/emacstips/#index11h2][notmuch docs: msmtp, message mode and multiple accounts]] - [[https://notmuchmail.org/emacstips/#index11h2][notmuch docs: msmtp, message mode and multiple accounts]]
- [[https://notmuchmail.org/emacstips/#index12h2][notmuch docs: sending mail using smtpmail]] - [[https://notmuchmail.org/emacstips/#index12h2][notmuch docs: sending mail using smtpmail]]
** Customize =*notmuch-hello*= buffer ** Customize =*notmuch-hello*= buffer
It is possible to change the =*notmuch-hello*= buffer if you want to. It is possible to change the =*notmuch-hello*= buffer if you want to.
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp ;; add to $DOOMDIR/config.el
(after! notmuch (after! notmuch
(setq notmuch-show-log nil (setq notmuch-show-log nil
notmuch-hello-sections `(notmuch-hello-insert-saved-searches notmuch-hello-sections `(notmuch-hello-insert-saved-searches
notmuch-hello-insert-alltags) notmuch-hello-insert-alltags)
;; To hide headers while composing an email ;; To hide headers while composing an email
notmuch-message-headers-visible nil)) notmuch-message-headers-visible nil))
#+END_SRC #+end_src
** Changing the =notmuch= landing page ** Changing the =notmuch= landing page
You may want to forego the =*notmuch-hello*= buffer by having ~M-x =notmuch~ or You may want to forego the =*notmuch-hello*= buffer by having ~M-x =notmuch~ or
~SPC o m~ take you straight to a search page. [[kbd:][<leader> o m]] take you straight to a search page.
When using ~SPC o m~ the =+notmuch-home-function= is called. By default it uses When using [[kbd:][<leader> o m]] the ~+notmuch-home-function~ is called. By default it
the =notmuch= function and so has the same familiar behavior of running a uses the ~notmuch~ function and so has the same familiar behavior of running a
vanilla install of notmuch-emacs. But, by overwriting this function you can run vanilla install of notmuch-emacs. But, by overwriting this function you can run
a custom search as your landing page. a custom search as your landing page.
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(setq +notmuch-home-function (lambda () (notmuch-search "tag:inbox"))) (setq +notmuch-home-function (lambda () (notmuch-search "tag:inbox")))
#+END_SRC #+end_src
** Writing HTML Emails ** Writing HTML Emails
The [[https://github.com/org-mime/org-mime][org-mime]] package provides functionality for composing emails in org-mode and transforming them to HTML. This feature is enabled using the =+org= flag. The [[https://github.com/org-mime/org-mime][org-mime]] package provides functionality for composing emails in org-mode and
transforming them to HTML. This feature is enabled using the =+org= flag.
Example use cases: Example use cases:
- To convert an email to an HTML email use ~M-x org-mime-htmlize~.
- To compose email using an org-mode editor buffer, use ~M-x
org-mime-edit-mail-in-org-mode~.
- To convert an email to an HTML email use ~M-x org-mime-htmlize~ If you'd like to make configuration changes to =org-mime=, you may do so
- To compose email using an org-mode editor buffer, use ~M-x org-mime-edit-mail-in-org-mode~ normally. By default the output of =org-mime-htmlize= includes section numbers,
a byline, and a table of contents. That's probably more formal than the emails
If you'd like to make configuration changes to =org-mime=, you may do so normally. By default the output of =org-mime-htmlize= includes section numbers, a byline, and a table of contents. That's probably more formal than the emails you're used to sending, so here's some example configuration that turns those features off. you're used to sending, so here's some example configuration that turns those
features off:
/config.el/
#+begin_src emacs-lisp #+begin_src emacs-lisp
;; add to $DOOMDIR/config.el
(after! org-mime (after! org-mime
(setq org-mime-export-options '(:section-numbers nil (setq org-mime-export-options '(:section-numbers nil
:with-author nil :with-author nil
:with-toc nil))) :with-toc nil)))
#+end_src #+end_src
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* TODO Troubleshooting * Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,55 @@
# -*- mode: doom-docs-org -*-
#+title: :email wanderlust
#+subtitle: To boldly go where no mail has gone before
#+created: May 05, 2019
#+since: 21.12.0
* Description :unfold:
#+begin_quote
🔨 This module has no description. [[doom-contrib-module:][Write one?]]
#+end_quote
** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +gmail ::
Enable gmail-specific configuration for mail ~To~ or ~From~ a gmail address.
** Packages
- [[doom-package:][wanderlust]]
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

11
modules/input/README.org Normal file
View file

@ -0,0 +1,11 @@
# -*- mode: doom-docs-org -*-
#+title: :input
#+created: May 13, 2019
#+since: 2.0.9
* Description
Modules in this category extend Emacs support for additional keyboard layouts
and input methods for non-English languages.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,51 +1,66 @@
#+TITLE: input/chinese # -*- mode: doom-docs-org -*-
#+DATE: May 13, 2019 #+title: :input chinese
#+SINCE: 2.1 #+subtitle: Spend your 3 hours a week in Emacs
#+STARTUP: inlineimages #+created: May 13, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#using-fcitx5][Using fcitx5]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds support for traditional Chinese script by introducing two input This module adds support for traditional Chinese script by introducing two input
methods: Pinyin and Wubi. methods: Pinyin and Wubi.
#+begin_quote ** Maintainers
Because I am unable to personally test this module, help to improve this module *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
would be greatly appreciated! Especially where performance is concerned.
#+end_quote
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
+ [[https://github.com/tumashu/pyim][pyim]] (unless =+wubi=) - [[doom-package:][ace-pinyin]]
+ [[https://github.com/zilongshanren/chinese-wbim][chinese-wbim]] (if =+wubi=) - [[doom-package:][chinese-wbim]] if [[doom-module:][+wubi]]
+ [[https://github.com/cute-jumper/fcitx.el][fcitx]] - [[doom-package:][fcitx]]
+ [[https://github.com/cute-jumper/ace-pinyin][ace-pinyin]] - [[doom-package:][pangu-spacing]]
+ [[https://github.com/coldnew/pangu-spacing][pangu-spacing]] - [[doom-package:][pyim]] unless [[doom-module:][+wubi]]
** Hacks ** Hacks
+ ~org-html-paragraph~ has been modified to join consecutive Chinese lines into - ~org-html-paragraph~ has been modified to join consecutive Chinese lines into
a single long line without wanted spaced (when exporting org-mode to html). a single long line without wanted spaced (when exporting org-mode to html).
* TODO Prerequisites ** TODO Changelog
* TODO Features # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
#+begin_quote
🔨 This module is missing install instructions. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Using fcitx5 ** Using fcitx5
Modify ~fcitx-remote-command~ to change the default: Modify ~fcitx-remote-command~ to change the default:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
;; in $DOOMDIR/config.el ;; in $DOOMDIR/config.el
(setq fcitx-remote-command "fcitx5-remote") (setq fcitx-remote-command "fcitx5-remote")
#+END_SRC #+end_src
* TODO Troubleshooting * Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,43 +1,56 @@
#+TITLE: input/japanese # -*- mode: doom-docs-org -*-
#+DATE: May 13, 2019 #+title: :input japanese
#+SINCE: 2.1 #+subtitle: Ah, a man of culture
#+STARTUP: inlineimages #+created: May 13, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds support for Japanese script. This module adds support for Japanese script.
#+begin_quote ** Maintainers
Because I am unable to personally test this module, help to improve this module *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
would be greatly appreciated! Especially where performance is concerned.
#+end_quote
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
+ [[https://github.com/emacs-jp/migemo][migemo]] - [[doom-package:][avy-migemo]]
+ [[https://github.com/momomo5717/avy-migemo][avy-migemo]] - [[doom-package:][ddskk]]
+ [[https://github.com/hsaito/ddskk][ddskk]] - [[doom-package:][migemo]]
+ [[https://github.com/coldnew/pangu-spacing][pangu-spacing]] - [[doom-package:][pangu-spacing]]
** Hacks ** Hacks
+ ~org-html-paragraph~ has been modified to join consecutive Chinese lines into - ~org-html-paragraph~ has been modified to join consecutive Chinese lines into
a single long line without wanted spaced (when exporting org-mode to html). a single long line without wanted spaced (when exporting org-mode to html).
* TODO Prerequisites ** TODO Changelog
+ For incremental search with Migemo, one of the following is required: # This section will be machine generated. Don't edit it by hand.
+ [[https://github.com/koron/cmigemo][cmigemo]], which is recommended, or /This module does not have a changelog yet./
+ [[http://0xcc.net/migemo/][CVS Head Migemo]]
* TODO Features * TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
- For incremental search with Migemo, one of the following is required:
- [[https://github.com/koron/cmigemo][cmigemo]] (recommended)
- or [[http://0xcc.net/migemo/][CVS Head Migemo]]
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
* TODO Troubleshooting #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,140 +1,139 @@
#+TITLE: input/layout # -*- mode: doom-docs-org -*-
#+DATE: Jun 29, 2020 #+title: :input layout
#+SINCE: v3.0 #+subtitle: auie,ctsrnm is the superior home row
#+STARTUP: inlineimages nofold #+created: Jun 29, 2020
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides barebones support for using Doom with non-qwerty keyboard
- [[#maintainers][Maintainers]] layouts.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#bépo][Bépo]]
- [[#easymotion][Easymotion]]
- [[#leaving-mnemonics-alone-when-possible][Leaving mnemonics alone when possible]]
- [[#possible-contributions][Possible contributions]]
- [[#org-mode][Org-mode]]
- [[#configuration][Configuration]]
- [[#bépo-1][Bépo]]
- [[#troubleshooting][Troubleshooting]]
- [[#outstanding-issues-contributions-welcome][Outstanding issues (contributions welcome)]]
- [[#bépo-2][Bépo]]
- [[#how-to-investigate-an-issue-][How to investigate an issue ?]]
- [[#how-to-deactivate-the-new-bindings-and-go-back-to-the-old-ones-][How to deactivate the new bindings and go back to the old ones ?]]
* Description
This module provides barebones support for using Doom with non-qwerty layouts.
** Maintainers ** Maintainers
+ @gagbo (Author, Bépo) - [[doom-user:][@gagbo]] ([[kbd:][+bepo]])
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+azerty= Remaps keybinds to accommodate the
[[https://en.wikipedia.org/wiki/AZERTY][Azerty keyboard layout]].
+ =+bepo= Remaps keybinds to accommodate the
[[https://en.wikipedia.org/wiki/B%C3%89PO][BÉPO keyboard layout]] (version
1.1, in particualr).
** Plugins ** Module flags
None - +azerty ::
Remap keybinds to accommodate the [[https://en.wikipedia.org/wiki/AZERTY][Azerty keyboard layout]].
- +bepo ::
Remap keybinds to accommodate the [[https://en.wikipedia.org/wiki/B%C3%89PO][BÉPO keyboard layout]] (version 1.1, in
particular).
* Prerequisites ** Packages
If you are using =:editor evil=, you should use =(evil +everywhere)=, as the /This module doesn't install any packages./
module uses =evil-collection= utilities to do the remapping.
If you are not using =:editor evil=, then you have nothing to do. ** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features
# An in-depth list of features, how to use them, and their dependencies.
** Bépo ** Bépo
Support for the bépo layout includes: Support for the bépo layout includes:
- Setting Avy keys to the correct home row keys - Setting Avy keys to the correct home row keys
- Changing navigation keys to =ctsr= - Changing navigation keys to [[kbd:][c]], [[kbd:][t]], [[kbd:][s]], and [[kbd:][r]]
+ old =t= is mapped to =j= + old [[kbd:][t]] is mapped to [[kbd:][j]]
+ old =s= is mapped to =k= (i.e. staging in the magit status buffer is done + old [[kbd:][s]] is mapped to [[kbd:][k]] (i.e. staging in the magit status buffer is done with
with =k=) [[kbd:][k]])
+ See [[*Configuration][Configuration]] to see where old =c= and =r= functions + See [[*Configuration][Configuration]] to see where old [[kbd:][c]] and [[kbd:][r]] functions
are remapped are remapped
- Bind =<>= functions to =«»= keys when possible - Bind [[kbd:][<>]] functions to [[kbd:][«»]] keys when possible
- Bind =[]= functions to =()= keys when possible (the "unimpaired-like" - Bind [[kbd:][[]]] functions to [[kbd:][()]] keys when possible (the "unimpaired-like" bindings)
bindings) - Bind [[kbd:][é]] key to [[kbd:][w]] functions when possible
- Bind =é= key to =w= functions when possible - Bind [[kbd:][è]] key to useful functions when possible
- Bind =è= key to useful functions when possible - Bind [[kbd:][`~]] functions to [[kbd:][$#]] keys when possible
- Bind =`~= functions to =$#= keys when possible
*** Easymotion *** Easymotion
If you use =evil-easymotion=, then all the bindings that were on =gs= have been If you use [[doom-package:][evil-easymotion]], then all the bindings that were on [[kbd:][gs]] have been
moved to =gé=. moved to [[kbd:][]].
In short : =g s j= -> =g é t= (evilem-motion-next-line). And so on. In short : [[kbd:][g s j]] -> [[kbd:][g é t]] (~evilem-motion-next-line~). And so on.
*** Leaving mnemonics alone when possible *** Leaving mnemonics alone when possible
Exchanging =hjkl= to =ctsr= has the effect of destroying a few mnemonics: the Exchanging [[kbd:][h]]/[[kbd:][j]]/[[kbd:][k]]/[[kbd:][l]] to [[kbd:][c]]/[[kbd:][t]]/[[kbd:][s]]/[[kbd:][r]] has the effect of destroying a few mnemonics: the
change operator becomes =l= for example, or the window split becomes =SPC é k=. change operator becomes [[kbd:][l]] for example, or the window split becomes [[kbd:][SPC é k]].
The module tries to limit those changes to the minimum, especially in special The module tries to limit those changes to the minimum, especially in special
buffers. A concrete example is magit. buffers. A concrete example is magit.
As the =magit: project= buffer (obtained with =magit-status=) does not need As the =magit: project= buffer (obtained with ~M-x magit-status~) does not need
left-right navigation, keys =c=, =r=, =h=, and =l= keep their "expected" bindings, left-right navigation, keys [[kbd:][c]], [[kbd:][r]], [[kbd:][h]], and [[kbd:][l]] keep their "expected" bindings, while
while =t=, =s=, =j=, and =k= are flipped: [[kbd:][t]], [[kbd:][s]], [[kbd:][j]], and [[kbd:][k]] are flipped:
- checking the log from a magit buffer is still on =l= - checking the log from a magit buffer is still on [[kbd:][l]]
- staging a file/region has been moved to =k= - staging a file/region has been moved to [[kbd:][k]]
*** Possible contributions *** Possible contributions
**** Avoid =g= and =z= to be used too often **** Avoid [[kbd:][g]] and [[kbd:][z]] to be used too often
A nice addition in the future might be to have all the normal mode bindings that A nice addition in the future might be to have all the normal mode bindings that
start with =g= start with =,= instead to avoid the curl on these common start with [[kbd:][g]] start with [[kbd:][,]] instead to avoid the curl on these common bindings.
bindings. This is *not* implemented for the time being. This is *not* implemented for the time being.
The same thing could be done to =z=, potentially using =à= instead. The same thing could be done to [[kbd:][z]], potentially using [[kbd:][à]] instead.
**** Proper minor mode **** Proper minor mode
Also, implementing all those changes as a minor we could flip on and off would Also, implementing all those changes as a minor we could flip on and off would
help with adoption help with adoption
**** Put "word" text objects to é instead of w **** Put "word" text objects to é instead of w
"inside word" and "around word" are =iw= and =aw=, which use the very poorly "inside word" and "around word" are [[kbd:][iw]] and [[kbd:][aw]], which use the very poorly rated [[kbd:][w]]
rated =w= key in the bépo layout. Finding a way to use =é= or even =è= more for key in the bépo layout. Finding a way to use [[kbd:][é]] or even [[kbd:][è]] more for these would be
these would be a welcome change a welcome change
*** Org-mode *** Org-mode
=evil-org= allows to define =evil-org-movement-bindings= to automatically map [[doom-package:][evil-org]] allows to define ~evil-org-movement-bindings~ to automatically map
movement bindings on non-hjkl keys. It maps automatically keys to =C-c= and movement bindings on non-hjkl keys. It maps automatically keys to [[kbd:][C-c]] and [[kbd:][C-r]] in
=C-r= in normal and insert states though, and it's not really user friendly in normal and insert states though, and it's not really user friendly in Emacs to
Emacs to remap those. remap those.
Therefore, in org-mode: Therefore, in ~org-mode~:
- =org-shiftright= is bound to =C-»= - ~org-shiftright~ is bound to [[kbd:][C-»]]
- =org-shiftleft= is bound to =C-«= - ~org-shiftleft~ is bound to [[kbd:][C-«]]
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Bépo ** Bépo
=+layout-bepo-cr-rotation-style= controls whether: =+layout-bepo-cr-rotation-style= controls whether:
- =qwerty-c= functions are mapped on =bépo-l= key, and =qwerty-r= functions on - =qwerty-c= functions are mapped on =bépo-l= key, and =qwerty-r= functions on
=bépo-h= key (='ergodis=), or =bépo-h= key (~'ergodis~), or
- =qwerty-c= functions are mapped on =bépo-h= key, and =qwerty-r= functions on - =qwerty-c= functions are mapped on =bépo-h= key, and =qwerty-r= functions on
=bépo-l= key (='strict=) =bépo-l= key (~'strict~)
='strict= would be the logical choice but the =c= functions are used more often ~'strict~ would be the logical choice but the [[kbd:][c]] functions are used more often
than the =r= ones so [[https://bepo.fr/wiki/Vim#Principe][Ergodis]] advises to actually put all the =c= functions on than the [[kbd:][r]] ones so [[https://bepo.fr/wiki/Vim#Principe][Ergodis]] advises to actually put all the [[kbd:][c]] functions on the
the key that does not need a curl. key that does not need a curl.
* Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. [[doom-report:][Report an issue?]]
** Outstanding issues (contributions welcome) ** Outstanding issues (contributions welcome)
*** Bépo *** Bépo
- in eshell, the key `c` is still bound to - In [[doom-package:][eshell]], the key [[kbd:][c]] is still bound to ~evil-collection-eshell-evil-change~ in
`evil-collection-eshell-evil-change` in normal mode normal mode.
** How to investigate an issue ? ** How to investigate an issue ?
If a key is misbehaving, use =describe-key= (=C-h k= or =SPC h k= or =F1 k=) to If a key is misbehaving, use ~M-x describe-key~ ([[kbd:][C-h k]] or [[kbd:][SPC h k]] or [[kbd:][F1 k]]) to
see the functions bound to the key, and more importantly in which map it is see the command bound to the key, and more importantly in which keymap it is
bound. bound.
You should ignore all =evil-collection-...-backup-map= keymaps, as they are You should ignore all ~evil-collection-*-backup-map~ keymaps, as they are
artifacts from =evil-collection-translate-key= and those maps are actually not artifacts from ~evil-collection-translate-key~ and those maps are actually not
active. active.
Most likely the solution is to call one of the "key rotation" functions on the Most likely the solution is to call one of the "key rotation" functions on the
@ -142,8 +141,16 @@ relevant keymaps.
** How to deactivate the new bindings and go back to the old ones ? ** How to deactivate the new bindings and go back to the old ones ?
If you are learning a new layout you might want to go back to tho old one to If you are learning a new layout you might want to go back to tho old one to
"get work done". Sadly the only way is to comment out the module, run =doom "get work done". Sadly the only way is to comment out the module, run ~$ doom
sync= and restart emacs. sync~ and restart emacs.
Restoring the session =SPC q l= by default helps to lower the impact of the Restoring the session [[kbd:][SPC q l]] by default helps to lower the impact of the
restart. restart.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

11
modules/lang/README.org Normal file
View file

@ -0,0 +1,11 @@
# -*- mode: doom-docs-org -*-
#+title: :lang
#+created: August 03, 2021
#+since: 21.12.0
* Description
These modules specialize in integration particular languages and their
ecosystems into (Doom) Emacs.
* Frequently asked questions
/This category has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

View file

@ -1,4 +1,57 @@
#+TITLE: :lang agda # -*- mode: doom-docs-org -*-
#+title: :lang agda
#+subtitle: Types of types of types of types...
#+created: August 21, 2018
#+since: 21.12.0 (#821)
* Description :unfold:
This module adds support for the [[http://wiki.portal.chalmers.se/agda/pmwiki.php][agda]] programming language. The Emacs support 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. exists directly in the agda repository, but not in melpa.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +local ::
Use the =agda-mode= executable that comes with your local =agda= install.
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
** Packages
- unless [[doom-module:][+local]]
- [[doom-package:][agda-input]]
- [[doom-package:][agda2-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,53 +1,58 @@
#+TITLE: lang/beancount # -*- mode: doom-docs-org -*-
#+DATE: April 13, 2021 #+title: :lang beancount
#+SINCE: v3.0.0 #+subtitle: Mind the GAAP
#+STARTUP: inlineimages nofold #+created: April 13, 2021
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds support for [[https://beancount.github.io/][Beancount]] to Emacs. Beancount, like ledger, lets 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]]. you [[https://plaintextaccounting.org/][manage your money in plain text]].
+ Supports [[https://github.com/polarmutex/beancount-language-server][beancount-language-server]] (if module is enabled with the =+lsp=
flag).
** Maintainers ** Maintainers
This module has no dedicated maintainers. - @hlissner
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+lsp= Enable support for [beancount-language-server]. Requires Doom's =:tools
lsp= module.
** Plugins ** Module flags
+ [[https://github.com/beancount/beancount-mode][beancount]] - +lsp ::
Enable LSP support for ~beancount-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/polarmutex/beancount-language-server][beancount-language-server]]).
** Packages
- [[doom-package:][beancount]]
** Hacks ** Hacks
+ Associates the material =attach_money= icon with *.beancount files in the - Associates the material =attach_money= icon with =*.beancount= files in the
=all-the-icons= package. [[doom-package:][all-the-icons]] package.
* Prerequisites ** TODO Changelog
This module has no hard prerequisites, but assumes you have [[https://github.com/beancount/beancount][beancount]] installed # This section will be machine generated. Don't edit it by hand.
in order to generate reports with ~bean-report~. /This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- [[https://github.com/beancount/beancount][beancount]], for generating reports
- [[https://beancount.github.io/fava/][fava]], for a web interface for your ledgers
* TODO Usage
#+begin_quote #+begin_quote
Also: the ~beancount-fava~ command requires [[https://beancount.github.io/fava/][fava]]. 🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote #+end_quote
* TODO Features
# An in-depth list of features, how to use them, and their dependencies.
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,73 +1,73 @@
#+TITLE: lang/cc # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang cc
#+SINCE: v2.0 #+subtitle: C > C++ == 1
#+STARTUP: inlineimages #+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#lsp-servers][LSP servers]]
- [[#irony-server][irony-server]]
- [[#macos][macOS]]
- [[#rtags][rtags]]
- [[#configure][Configure]]
- [[#project-compile-settings][Project compile settings]]
- [[#known-issues-with-bear-on-macos][Known issues with bear on macOS]]
- [[#configure-lsp-servers][Configure LSP servers]]
- [[#lsp-mode-with-clangd][LSP-mode with clangd]]
- [[#lsp-mode-with-ccls][LSP-mode with ccls]]
- [[#eglot-with-clangd][Eglot with clangd]]
- [[#eglot-with-ccls][Eglot with ccls]]
- [[#appendix][Appendix]]
- [[#eglot-specific-bindings][Eglot specific bindings]]
* Description
This module adds support for the C-family of languages: C, C++, and Objective-C. This module adds support for the C-family of languages: C, C++, and Objective-C.
+ Code completion (~company-irony~) - Code completion (~company-irony~)
+ eldoc support (~irony-eldoc~) - eldoc support (~irony-eldoc~)
+ Syntax-checking (~flycheck-irony~) - Syntax-checking (~flycheck-irony~)
+ Code navigation (~rtags~) - Code navigation (~rtags~)
+ File Templates ([[../../editor/file-templates/templates/c-mode][c-mode]], [[../../editor/file-templates/templates/c++-mode][c++-mode]]) - 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]]) - 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. - Several improvements to C++11 indentation and syntax highlighting.
** Module Flags ** Maintainers
+ ~+lsp~ Disables irony+rtags and replaces them with LSP (ccls by default). This - [[doom-user:][@hlissner]]
requires the =:tools lsp= module.
** Plugins [[doom-contrib-maintainer:][Become a maintainer?]]
+ [[https://github.com/Kitware/CMake][cmake-mode]]
+ [[https://github.com/chachi/cuda-mode][cuda-mode]] ** Module flags
+ [[https://github.com/liblit/demangle-mode][demangle-mode]] - +lsp ::
+ [[https://github.com/jart/disaster][disaster]] Enable LSP support for ~c-mode~, ~c++-mode~, and ~objc-mode~. Requires [[doom-module:][:tools
+ [[https://github.com/ludwigpacifici/modern-cpp-font-lock][modern-cpp-font-lock]] lsp]] and a langserver (supports ccls, clangd, and cquery). Replaces irony &
+ [[https://github.com/salmanebah/opencl-mode][opencl-mode]] rtags.
+ [[https://github.com/jimhourihan/glsl-mode][glsl-mode]]* - +tree-sitter ::
+ [[https://github.com/guidoschmidt/company-glsl][company-glsl]]* Leverages tree-sitter for better syntax highlighting and structural text
+ =+lsp= editing. Requires [[doom-module:][:tools tree-sitter]].
+ [[https://github.com/MaskRay/emacs-ccls][ccls]] if =:tools lsp= has *no* =+eglot= flag
+ =-lsp= ** Packages
+ [[https://github.com/Sarcasm/irony-mode][irony]] - [[doom-package:][cmake-mode]]
+ [[https://github.com/ikirill/irony-eldoc][irony-eldoc]] - [[doom-package:][company-glsl]]
+ [[https://github.com/Sarcasm/flycheck-irony][flycheck-irony]] - [[doom-package:][cuda-mode]]
+ [[https://github.com/Sarcasm/company-irony][company-irony]] - [[doom-package:][demangle-mode]]
+ [[https://github.com/hotpxl/company-irony-c-headers][company-irony-c-headers]] - [[doom-package:][disaster]]
+ [[https://github.com/Andersbakken/rtags][rtags]] - [[doom-package:][glsl-mode]]
+ [[https://github.com/Andersbakken/rtags][ivy-rtags]] - [[doom-package:][modern-cpp-font-lock]]
+ [[https://github.com/Andersbakken/rtags][helm-rtags]] - [[doom-package:][opencl-mode]]
- if [[doom-module:][+lsp]]
- [[doom-package:][ccls]] if [[doom-module:][:tools lsp -eglot]]
- else
- [[doom-package:][company-irony]]
- [[doom-package:][company-irony-c-headers]]
- [[doom-package:][flycheck-irony]]
- [[doom-package:][helm-rtags]] if [[doom-module:][:completion helm]]
- [[doom-package:][irony]]
- [[doom-package:][irony-eldoc]]
- [[doom-package:][ivy-rtags]] if [[doom-module:][:completion ivy]]
- [[doom-package:][rtags]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites
This module's requirements change depending on how you use it. This module's requirements change depending on how you use it.
+ If =+lsp= is enabled, you need one of *clangd v9+* or *ccls*. - If [[doom-module:][+lsp]] is enabled, you need one of *clangd v9+* or *ccls*.
+ If =+lsp= is *not* enabled, you need *irony-server* and *rtags*. - If [[doom-module:][+lsp]] is *not* enabled, you need *irony-server* and *rtags*.
+ Other features in this module depend on: - Other features in this module depend on:
+ (optional) glslangValidator, for GLSL completion in ~glsl-mode~ - (optional) glslangValidator, for GLSL completion in ~glsl-mode~
+ (optional) cmake, for code completion in ~cmake-mode~ - (optional) cmake, for code completion in ~cmake-mode~
+ You will need a C/C++ compiler, like =gcc= or =clang=. - You will need a C/C++ compiler, like =gcc= or =clang=.
** LSP servers ** LSP servers
=lsp-mode= and =eglot= support a few LSP servers, but =clangd= and =ccls= are =lsp-mode= and =eglot= support a few LSP servers, but =clangd= and =ccls= are
@ -76,13 +76,13 @@ recommended.
+ clangd (must be v9 or newer) :: clangd is included with =llvm= which should be + clangd (must be v9 or newer) :: clangd is included with =llvm= which should be
available through your OS' package manager. available through your OS' package manager.
- Linux: - Linux:
- Debian 11 & Ubuntu 20.10: ~# apt-get install clangd-11~ - Debian 11 & Ubuntu 20.10: ~$ apt-get install clangd-11~
- 20.04 LTS: [[https://pkgs.org/search/?q=clangd][clangd-10]] - 20.04 LTS: [[https://pkgs.org/search/?q=clangd][clangd-10]]
- Fedora & CentOS/RHEL 8+: ~# dnf install clang-tools-extra~ - Fedora & CentOS/RHEL 8+: ~$ dnf install clang-tools-extra~
- openSUSE: ~# zypper install clang~ - openSUSE: ~$ zypper install clang~
- Arch: ~# pacman -S clang~ - Arch: ~$ pacman -S clang~
- BSDs: - BSDs:
- NetBSD & OpenBSD: ~# pkg_add clang-tools-extra~ - NetBSD & OpenBSD: ~$ pkg_add clang-tools-extra~
- macOS: ~$ brew install llvm~ // 1GB+ installation! May take a while! - macOS: ~$ brew install llvm~ // 1GB+ installation! May take a while!
- Windows: use the win64 installer from [[https://releases.llvm.org/download.html][LLVM's GitHub release page]]. - Windows: use the win64 installer from [[https://releases.llvm.org/download.html][LLVM's GitHub release page]].
+ ccls :: Available in many OS' package managers as =ccls=. Otherwise, there are + ccls :: Available in many OS' package managers as =ccls=. Otherwise, there are
@ -97,14 +97,13 @@ irony-install-server~ in Emacs.
*** macOS *** macOS
Due to linking issues, macOS users must compile irony-server manually: Due to linking issues, macOS users must compile irony-server manually:
#+begin_src sh
#+BEGIN_SRC sh
brew install cmake brew install cmake
brew install llvm brew install llvm
git clone https://github.com/Sarcasm/irony-mode irony-mode git clone https://github.com/Sarcasm/irony-mode irony-mode
#+END_SRC #+end_src
#+BEGIN_SRC bash #+begin_src sh
mkdir irony-mode/server/build mkdir irony-mode/server/build
pushd irony-mode/server/build pushd irony-mode/server/build
@ -121,7 +120,7 @@ install_name_tool -change @rpath/libclang.dylib \
# Cleanup # Cleanup
popd popd
rm -rf irony-mode rm -rf irony-mode
#+END_SRC #+end_src
** rtags ** rtags
Code navigation requires an [[https://github.com/Andersbakken/rtags][rtags]] server (~rdm~) installed. This should be Code navigation requires an [[https://github.com/Andersbakken/rtags][rtags]] server (~rdm~) installed. This should be
@ -130,12 +129,36 @@ available through your OS's package manager.
This module will auto-start ~rdm~ when you open C/C++ buffers (so long as one This module will auto-start ~rdm~ when you open C/C++ buffers (so long as one
isn't already running). If you prefer to run it yourself: isn't already running). If you prefer to run it yourself:
#+BEGIN_SRC sh #+begin_src sh
rdm & rdm &
rc -J $PROJECT_ROOT # loads PROJECT_ROOT's compile_commands.json rc -J $PROJECT_ROOT # loads PROJECT_ROOT's compile_commands.json
#+END_SRC #+end_src
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
1. Enable this module.
2. Enable the ~+lsp~ flag for the appropriate modules you want LSP support for
(e.g. ~:lang (python +lsp)~ or ~:lang (rust +lsp)~),
3. Install the prerequisite LSP servers through your package manager or other
means. You can find a list of supported servers on [[https://github.com/emacs-lsp/lsp-mode#supported-languages][the lsp-mode project page]].
4. Run ~$ doom sync~ on the command line and restart Emacs.
** Eglot-specific bindings
When using [[doom-module:][+lsp]] and [[doom-module:][:tools lsp +eglot]], [[doom-package:][lsp-mode]] is replaced with [[doom-package:][eglot]], and an
additional function to get inheritance type hierarchy is added:
| Binding | Description |
|----------------------------+------------------------------------------------|
| [[kbd:][<localleader> c t]] | Display inheritance type hierarchy (upwards) |
| [[kbd:][<prefix> <localleader> c t]] | Display inheritance type hierarchy (downwards) |
* TODO Configure
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configure
** Project compile settings ** Project compile settings
By default, a set of default compile settings are defined in By default, a set of default compile settings are defined in
~+cc-default-compiler-options~ for C, C++ and Objective C. Irony, rtags and ~+cc-default-compiler-options~ for C, C++ and Objective C. Irony, rtags and
@ -145,16 +168,16 @@ For a more universal solution: both LSP servers and irony will recognize a
[[https://sarcasm.github.io/notes/dev/compilation-database.html#ninja][compilation database]] (a ~compile_commands.json~ file). There are [[https://sarcasm.github.io/notes/dev/compilation-database.html][many ways to [[https://sarcasm.github.io/notes/dev/compilation-database.html#ninja][compilation database]] (a ~compile_commands.json~ file). There are [[https://sarcasm.github.io/notes/dev/compilation-database.html][many ways to
generate one]]. Here is an example using [[http://www.cmake.org/][CMake]] and [[https://github.com/rizsotto/Bear][bear]]: generate one]]. Here is an example using [[http://www.cmake.org/][CMake]] and [[https://github.com/rizsotto/Bear][bear]]:
#+BEGIN_SRC sh #+begin_src sh
# For CMake projects # For CMake projects
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
#+END_SRC #+end_src
#+BEGIN_SRC sh #+begin_src sh
# For non-CMake projects # For non-CMake projects
make clean make clean
bear make bear make
#+END_SRC #+end_src
Use ~M-x +cc/reload-compile-db~ to reload your compile db in an already-open Use ~M-x +cc/reload-compile-db~ to reload your compile db in an already-open
C/C++/ObjC buffer. C/C++/ObjC buffer.
@ -164,7 +187,6 @@ MacOS' [[https://support.apple.com/en-us/HT204899][System Integrity Protection (
under ~/usr/bin/~ which results in an empty compilation database. under ~/usr/bin/~ which results in an empty compilation database.
From the bear [[https://github.com/rizsotto/Bear#empty-compilation-database-on-os-x-captain-or-fedora][readme]]: From the bear [[https://github.com/rizsotto/Bear#empty-compilation-database-on-os-x-captain-or-fedora][readme]]:
#+begin_quote #+begin_quote
Security extension/modes on different operating systems might disable library Security extension/modes on different operating systems might disable library
preloads. This case Bear behaves normally, but the result compilation database preloads. This case Bear behaves normally, but the result compilation database
@ -182,77 +204,76 @@ such tool might be scan-build. The build system shall respect CC and CXX
environment variables. environment variables.
#+end_quote #+end_quote
A workaround might be to install ~make~ via Homebrew which puts ~gmake~ A workaround might be to install ~make~ via Homebrew which puts ~gmake~ under
under ~/usr/local/~. =/usr/local/=:
#+begin_src sh
#+BEGIN_SRC sh
brew install make brew install make
#+END_SRC #+end_src
#+begin_src sh
#+BEGIN_SRC sh
make clean make clean
bear gmake bear gmake
#+END_SRC #+end_src
Additional info: Additional info:
+ [[https://github.com/rizsotto/Bear/issues/158][Empty compilation database with compiler in /usr/local]] - [[https://github.com/rizsotto/Bear/issues/158][Empty compilation database with compiler in /usr/local]]
+ [[https://github.com/rizsotto/Bear/issues/152][Workaround for 'Empty compilation database on OS X Captain]] - [[https://github.com/rizsotto/Bear/issues/152][Workaround for 'Empty compilation database on OS X Captain]]
** Configure LSP servers ** Configure LSP servers
Search for your combination of =(LSP client package, LSP server)=. You are using Search for your combination of =(LSP client package, LSP server)=. You are using
=LSP-mode= by default, =eglot= if you have =:tools (lsp +eglot)= active in your [[doom-package:][lsp-mode]] by default, [[doom-package:][eglot]] if you have [[doom-module:][:tools lsp +eglot]] active in
=init.el= file. =$DOOMDIR/init.el= file.
*** LSP-mode with clangd *** LSP-mode with clangd
#+begin_src emacs-lisp
#+BEGIN_SRC elisp (after! lsp-clangd
(setq lsp-clients-clangd-args '("-j=3" (setq lsp-clients-clangd-args
'("-j=3"
"--background-index" "--background-index"
"--clang-tidy" "--clang-tidy"
"--completion-style=detailed" "--completion-style=detailed"
"--header-insertion=never" "--header-insertion=never"
"--header-insertion-decorators=0")) "--header-insertion-decorators=0"))
(after! lsp-clangd (set-lsp-priority! 'clangd 2)) (set-lsp-priority! 'clangd 2))
#+END_SRC #+end_src
This will both set your clangd flags and choose =clangd= as the default LSP server everywhere clangd can be used. This will both set your clangd flags and choose =clangd= as the default LSP
server everywhere clangd can be used.
*** LSP-mode with ccls *** LSP-mode with ccls
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(after! ccls (after! ccls
(setq ccls-initialization-options '(:index (:comments 2) :completion (:detailedLabel t))) (setq ccls-initialization-options '(:index (:comments 2) :completion (:detailedLabel t)))
(set-lsp-priority! 'ccls 2)) ; optional as ccls is the default in Doom (set-lsp-priority! 'ccls 2)) ; optional as ccls is the default in Doom
#+END_SRC #+end_src
This will both set your ccls flags and choose ccls as the default server. [[https://github.com/MaskRay/ccls/wiki/Customization#--initjson][CCLS This will both set your ccls flags and choose ccls as the default server. [[https://github.com/MaskRay/ccls/wiki/Customization#--initjson][CCLS
documentation]] lists available options, use =t= for ~true~, =:json-false= for documentation]] lists available options, use =t= for ~true~, =:json-false= for
~false~, and =:json-null= for ~null~. ~false~, and =:json-null= for ~null~.
*** Eglot with clangd *** Eglot with clangd
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(set-eglot-client! 'cc-mode '("clangd" "-j=3" "--clang-tidy")) (set-eglot-client! 'cc-mode '("clangd" "-j=3" "--clang-tidy"))
#+END_SRC #+end_src
This will both set your clangd flags and choose clangd as the default server (if This will both set your clangd flags and choose clangd as the default server (if
it is the last =set-eglot-client! 'cc-mode= in your config). it is the last =set-eglot-client! 'cc-mode= in your config).
*** Eglot with ccls *** Eglot with ccls
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(set-eglot-client! 'cc-mode '("ccls" "--init={\"index\": {\"threads\": 3}}")) (set-eglot-client! 'cc-mode '("ccls" "--init={\"index\": {\"threads\": 3}}"))
#+END_SRC #+end_src
This will both set your ccls flags and choose ccls as the default server (if it This will both set your ccls flags and choose ccls as the default server (if it
is the last =set-eglot-client! 'cc-mode= in your config). [[https://github.com/MaskRay/ccls/wiki/Customization#--initjson][CCLS documentation]] is the last =set-eglot-client! 'cc-mode= in your config). [[https://github.com/MaskRay/ccls/wiki/Customization#--initjson][CCLS documentation]]
lists available options lists available options
* Appendix * Troubleshooting
** Eglot specific bindings /There are no known problems with this module./ [[doom-report:][Report one?]]
When using =+lsp= and =:tools (lsp +eglot)=, lsp-mode is replaced with eglot,
and an additional function to get inheritance type hierarchy is added * Frequently asked questions
| Binding | Description | /This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|------------------------------+--------------------------------------------------|
| ~<localleader> c t~ | ~Display inheritance type hierarchy (upwards)~ | * TODO Appendix
| ~<prefix> <localleader> c t~ | ~Display inheritance type hierarchy (downwards)~ | #+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,115 +1,121 @@
#+TITLE: lang/clojure # -*- mode: doom-docs-org -*-
#+DATE: May 30, 2017 #+title: :lang clojure
#+SINCE: v2.0 #+subtitle: Java with a lisp
#+STARTUP: inlineimages nofold #+created: May 30, 2017
#+since: 2.0.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#keybindings][Keybindings]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds support for the Clojure(Script) language. This module adds support for the Clojure(Script) language.
+ Interactive development environment (~cider~): REPL, compilation, debugging, - Interactive development environment (~cider~): REPL, compilation, debugging,
running tests, definitions & documentation lookup, code completion, and much running tests, definitions & documentation lookup, code completion, and much
more more
+ Refactoring (~clj-refactor~) - Refactoring (~clj-refactor~)
+ Linting (~clj-kondo~), requires ~:checkers syntax~ - Linting (~clj-kondo~), requires ~:checkers syntax~
+ LSP support (~clojure-lsp~) - LSP support (~clojure-lsp~)
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+lsp= Enables LSP support, alongside Cider. - +lsp ::
Enable LSP support for ~clojure-mode~ (alongside Cider). Requires [[doom-module:][:tools lsp]]
and a langserver (supports [[https://clojure-lsp.io/][clojure-lsp]]).
** Plugins ** Packages
+ [[https://github.com/clojure-emacs/cider][cider]] - [[doom-package:][cider]]
+ [[https://github.com/clojure-emacs/clj-refactor.el][clj-refactor]] - [[doom-package:][clj-refactor]]
+ [[https://github.com/borkdude/flycheck-clj-kondo][flycheck-clj-kondo]] - [[doom-package:][flycheck-clj-kondo]] if [[doom-module:][:checkers syntax]]
** Hacks ** Hacks
+ Error messages emitted from CIDER are piped into the REPL buffer when it is - Error messages emitted from CIDER are piped into the REPL buffer when it is
first opened, to make them easier to notice. first opened, to make them easier to notice.
+ Disabled the help banner when opening the cider REPL. - Disabled the help banner when opening the cider REPL.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites
This module requires: This module requires:
- [[https://clojure.org/][clojure]]
- [[https://leiningen.org/][leiningen]], for the REPL
- [[https://github.com/borkdude/clj-kondo][clj-kondo]], for linting code
- [[https://clojure-lsp.github.io/clojure-lsp/][clojure-lsp]], for LSP support (if [[doom-module:][+lsp]])
+ [[https://clojure.org/][clojure]] * TODO Usage
+ [[https://leiningen.org/][leiningen]] (REPL) #+begin_quote
+ [[https://github.com/borkdude/clj-kondo][clj-kondo]] (linter) 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
+ With =+lsp= #+end_quote
+ [[https://clojure-lsp.github.io/clojure-lsp/][clojure-lsp]]
| Keybind | Command |
* TODO Features |-------------------+------------------------------------------------------|
# An in-depth list of features, how to use them, and their dependencies. | [[kbd:][<localleader> ']] | ~cider-jack-in-clj~ |
** Keybindings | [[kbd:][<localleader> C]] | ~cider-connect-cljs~ |
| Binding | Description | | [[kbd:][<localleader> M]] | ~cider-macroexpand-all~ |
|---------------------+------------------------------------------------------| | [[kbd:][<localleader> R]] | ~hydra-cljr-help-menu/body~ |
| =<localleader> '= | =cider-jack-in-clj= | | [[kbd:][<localleader> c]] | ~cider-connect-clj~ |
| =<localleader> C= | =cider-connect-cljs= | | [[kbd:][<localleader> e D]] | ~cider-insert-defun-in-repl~ |
| =<localleader> M= | =cider-macroexpand-all= | | [[kbd:][<localleader> e E]] | ~cider-insert-last-sexp-in-repl~ |
| =<localleader> R= | =hydra-cljr-help-menu/body= | | [[kbd:][<localleader> e R]] | ~cider-insert-region-in-repl~ |
| =<localleader> c= | =cider-connect-clj= | | [[kbd:][<localleader> e b]] | ~cider-eval-buffer~ |
| =<localleader> e D= | =cider-insert-defun-in-repl= | | [[kbd:][<localleader> e d]] | ~cider-eval-defun-at-point~ |
| =<localleader> e E= | =cider-insert-last-sexp-in-repl= | | [[kbd:][<localleader> e e]] | ~cider-eval-last-sexp~ |
| =<localleader> e R= | =cider-insert-region-in-repl= | | [[kbd:][<localleader> e r]] | ~cider-eval-region~ |
| =<localleader> e b= | =cider-eval-buffer= | | [[kbd:][<localleader> e u]] | ~cider-undef~ |
| =<localleader> e d= | =cider-eval-defun-at-point= | | [[kbd:][<localleader> g b]] | ~cider-pop-back~ |
| =<localleader> e e= | =cider-eval-last-sexp= | | [[kbd:][<localleader> g g]] | ~cider-find-var~ |
| =<localleader> e r= | =cider-eval-region= | | [[kbd:][<localleader> g n]] | ~cider-find-ns~ |
| =<localleader> e u= | =cider-undef= | | [[kbd:][<localleader> h a]] | ~cider-apropos~ |
| =<localleader> g b= | =cider-pop-back= | | [[kbd:][<localleader> h c]] | ~cider-clojuredocs~ |
| =<localleader> g g= | =cider-find-var= | | [[kbd:][<localleader> h d]] | ~cider-doc~ |
| =<localleader> g n= | =cider-find-ns= | | [[kbd:][<localleader> h j]] | ~cider-javadoc~ |
| =<localleader> h a= | =cider-apropos= | | [[kbd:][<localleader> h n]] | ~cider-find-ns~ |
| =<localleader> h c= | =cider-clojuredocs= | | [[kbd:][<localleader> h w]] | ~cider-clojuredocs-web~ |
| =<localleader> h d= | =cider-doc= | | [[kbd:][<localleader> i e]] | ~cider-enlighten-mode~ |
| =<localleader> h j= | =cider-javadoc= | | [[kbd:][<localleader> i i]] | ~cider-inspect~ |
| =<localleader> h n= | =cider-find-ns= | | [[kbd:][<localleader> i r]] | ~cider-inspect-last-result~ |
| =<localleader> h w= | =cider-clojuredocs-web= | | [[kbd:][<localleader> m "]] | ~cider-jack-in-cljs~ |
| =<localleader> i e= | =cider-enlighten-mode= | | [[kbd:][<localleader> m]] | ~cider-macroexpand-1~ |
| =<localleader> i i= | =cider-inspect= | | [[kbd:][<localleader> n N]] | ~cider-browse-ns-all~ |
| =<localleader> i r= | =cider-inspect-last-result= | | [[kbd:][<localleader> n n]] | ~cider-browse-ns~ |
| =<localleader> m "= | =cider-jack-in-cljs= | | [[kbd:][<localleader> n r]] | ~cider-ns-refresh~ |
| =<localleader> m= | =cider-macroexpand-1= | | [[kbd:][<localleader> p d]] | ~cider-pprint-eval-defun-at-point~ |
| =<localleader> n N= | =cider-browse-ns-all= | | [[kbd:][<localleader> p D]] | ~cider-pprint-eval-defun-to-comment~ |
| =<localleader> n n= | =cider-browse-ns= | | [[kbd:][<localleader> p p]] | ~cider-pprint-eval-last-sexp~ |
| =<localleader> n r= | =cider-ns-refresh= | | [[kbd:][<localleader> p P]] | ~cider-pprint-eval-last-sexp-to-comment~ |
| =<localleader> p d= | =cider-pprint-eval-defun-at-point= | | [[kbd:][<localleader> p r]] | ~cider-pprint-eval-last-sexp-to-repl~ |
| =<localleader> p D= | =cider-pprint-eval-defun-to-comment= | | [[kbd:][<localleader> r B]] | ~+clojure/cider-switch-to-repl-buffer-and-switch-ns~ |
| =<localleader> p p= | =cider-pprint-eval-last-sexp= | | [[kbd:][<localleader> r L]] | ~cider-load-buffer-and-switch-to-repl-buffer~ |
| =<localleader> p P= | =cider-pprint-eval-last-sexp-to-comment= | | [[kbd:][<localleader> r R]] | ~cider-restart~ |
| =<localleader> p r= | =cider-pprint-eval-last-sexp-to-repl= | | [[kbd:][<localleader> r b]] | ~cider-switch-to-repl-buffer~ |
| =<localleader> r B= | =+clojure/cider-switch-to-repl-buffer-and-switch-ns= | | [[kbd:][<localleader> r c]] | ~cider-find-and-clear-repl-output~ |
| =<localleader> r L= | =cider-load-buffer-and-switch-to-repl-buffer= | | [[kbd:][<localleader> r l]] | ~cider-load-buffer~ |
| =<localleader> r R= | =cider-restart= | | [[kbd:][<localleader> r n]] | ~cider-repl-set-ns~ |
| =<localleader> r b= | =cider-switch-to-repl-buffer= | | [[kbd:][<localleader> r q]] | ~cider-quit~ |
| =<localleader> r c= | =cider-find-and-clear-repl-output= | | [[kbd:][<localleader> r r]] | ~cider-ns-refresh~ |
| =<localleader> r l= | =cider-load-buffer= | | [[kbd:][<localleader> t a]] | ~cider-test-rerun-test~ |
| =<localleader> r n= | =cider-repl-set-ns= | | [[kbd:][<localleader> t l]] | ~cider-test-run-loaded-tests~ |
| =<localleader> r q= | =cider-quit= | | [[kbd:][<localleader> t n]] | ~cider-test-run-ns-tests~ |
| =<localleader> r r= | =cider-ns-refresh= | | [[kbd:][<localleader> t p]] | ~cider-test-run-project-tests~ |
| =<localleader> t a= | =cider-test-rerun-test= | | [[kbd:][<localleader> t r]] | ~cider-test-rerun-failed-tests~ |
| =<localleader> t l= | =cider-test-run-loaded-tests= | | [[kbd:][<localleader> t s]] | ~cider-test-run-ns-tests-with-filters~ |
| =<localleader> t n= | =cider-test-run-ns-tests= | | [[kbd:][<localleader> t t]] | ~cider-test-run-test~ |
| =<localleader> t p= | =cider-test-run-project-tests= |
| =<localleader> t r= | =cider-test-rerun-failed-tests= |
| =<localleader> t s= | =cider-test-run-ns-tests-with-filters= |
| =<localleader> t t= | =cider-test-run-test= |
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,22 +1,11 @@
#+TITLE: lang/common-lisp # -*- mode: doom-docs-org -*-
#+DATE: June 13, 2018 #+title: :lang common-lisp
#+SINCE: v2.0 #+subtitle: If you've seen one lisp, you've seen them all
#+STARTUP: inlineimages nofold #+created: June 13, 2018
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides support for [[https://lisp-lang.org/][Common Lisp]] and the [[doom-package:][Sly]] development
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#sly][Sly]]
- [[#org-mode][org-mode]]
- [[#configuration][Configuration]]
* Description
This module provides support for [[https://lisp-lang.org/][Common Lisp]] and the [[https://github.com/joaotavora/sly][Sly]] development
environment. Common Lisp is not a single language but a specification, with many 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 competing compiler implementations. By default, [[http://www.sbcl.org/][Steel Bank Common Lisp]] (SBCL) is
assumed to be installed, but this can be configured. assumed to be installed, but this can be configured.
@ -27,45 +16,65 @@ style often unseen in other languages. Compiled Common Lisp programs are trusted
to run unmodified for a long time. to run unmodified for a long time.
** Maintainers ** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
This module has no dedicated maintainers. ** Module flags
/This module has no flags./
** Module Flags ** Packages
- [[doom-package:][sly]]
- [[doom-package:][sly-macrostep]]
- [[doom-package:][sly-repl-ansi-color]]
This module provides no flags. ** Hacks
/No hacks documented for this module./
** Plugins ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
+ [[https://github.com/joaotavora/sly][sly]] * Installation
+ [[https://github.com/joaotavora/sly-macrostep][sly-macrostep]] [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
+ [[https://github.com/PuercoPop/sly-repl-ansi-color][sly-repl-ansi-color]]
* Prerequisites This module requires [[http://www.sbcl.org/][SBCL]].
This module requires the [[http://www.sbcl.org/][SBCL]] compiler to be installed. * TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features This module does not integrate with [[doom-module:][:tools lsp]]. Sly (and SLIME before it) is
This module does not integrate with the =lsp= module. Sly (and SLIME before it) is
considered the defacto development environment for Common Lisp and provides much considered the defacto development environment for Common Lisp and provides much
of what is normally expected of an LSP, plus tight integration with the REPL and of what is normally expected of an LSP, plus tight integration with the REPL and
Emacs. Emacs.
** Sly ** Sly
Using this module is mostly a matter of using Sly. Please consider reading Using this module is mostly a matter of using Sly. Please consider reading
through [[http://joaotavora.github.io/sly/#A-SLY-tour-for-SLIME-users][the Sly Tour]]. through [[http://joaotavora.github.io/sly/#A-SLY-tour-for-SLIME-users][the Sly Tour]].
A Sly session will be started when you open a =.lisp= file. Use =SPC m '= to switch A Sly session will be started when you open a =.lisp= file. Use [[kbd:][<localleader> ']]
to the REPL minibuffer. to switch to the REPL minibuffer.
** org-mode ** org-mode
This module also enables the evaluation of =lisp= source blocks in Org Mode. This module also enables the evaluation of =lisp= source blocks in Org Mode.
However, you will need a running Sly session for this to work. =M-x sly= starts However, you will need a running Sly session for this to work. ~M-x sly~ starts
such a session if you didn't have one open already. such a session if you didn't have one open already.
* Configuration * TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
If you don't want Sly to use SBCL, you can configure the variable If you don't want Sly to use SBCL, you can configure the variable
~inferior-lisp-program~ to some other binary on your PATH. ~inferior-lisp-program~ to some other binary on your PATH.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,6 +1,54 @@
#+TITLE: :lang coq # -*- mode: doom-docs-org -*-
#+title: :lang coq
#+subtitle: Proofs as programs
#+created: August 14, 2018
#+since: 21.12.0 (#804)
* Description :unfold:
This module adds [[https://coq.inria.fr][coq]] support, powered by [[https://proofgeneral.github.io][Proof General]]. 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]]) - Code completion ([[https://github.com/cpitclaudel/company-coq][company-coq]])
+ [[https://github.com/hlissner/doom-snippets/tree/master/coq-mode][Snippets]] - [[https://github.com/hlissner/doom-snippets/tree/master/coq-mode][Snippets]]
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][proof-general]]
- [[doom-package:][company-coq]]
** Hacks
+ Replaces coq-mode abbrevs with yasnippet snippets from doom's snippet library
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
+ [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
+ To use the completion features of company-coq you need to enable ~(:completion company)~
+ Make sure you have Coq installed and that the ~coqtop~ command is available. This comes with a standard installation of Coq.
You can use your linux distribution's Coq package or one of the methods given on the [[https://coq.inria.fr/download][Coq website]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Configuration
This module provides no additional configuration over that of the [[Packages]] it loads
* Troubleshooting
See [[https://github.com/hlissner/doom-emacs/issues?q=is%3Aissue+is%3Aopen+label%3A%22%3Alang+coq"][related github issues]]
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,62 +1,66 @@
#+TITLE: lang/crystal # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang crystal
#+SINCE: v1.3 #+subtitle: Ruby at the speed of C
#+STARTUP: inlineimages nofold #+created: January 16, 2017
#+since: 1.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#crystal][Crystal]]
- [[#macos][MacOS]]
- [[#arch][Arch]]
- [[#icr-repl][ICR (REPL)]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This modules adds [[https://crystal-lang.org/][crystal]] support. This modules adds [[https://crystal-lang.org/][crystal]] support.
+ Syntax-checking (~flycheck~) - Syntax-checking (~flycheck~)
+ REPL (~inf-crystal~) - REPL (~inf-crystal~)
** Maintainers ** Maintainers
This module has no dedicated maintainers. This module has no dedicated maintainers.
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
+ [[https://github.com/crystal-lang-tools/emacs-crystal-mode/][crystal-mode]] - [[doom-package:][crystal-mode]]
+ [[https://github.com/brantou/inf-crystal.el/][inf-crystal]] - [[doom-package:][inf-crystal]]
+ if ~:checkers syntax~ is enabled - if [[doom-module:][:checkers syntax]]
- [[https://github.com/crystal-lang-tools/emacs-crystal-mode/][flycheck-crystal]] - [[doom-package:][flycheck-ameba]]
- [[https://github.com/crystal-ameba/ameba.el/][flycheck-ameba]] - [[doom-package:][flycheck-crystal]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- [[https://crystal-lang.org/install/][The crystal compiler]]
- [[https://github.com/crystal-community/icr][ICR]], for the REPL
* Prerequisites
** Crystal ** Crystal
you need to install [[https://crystal-lang.org/install/][the crystal compiler]]. - MacOS: ~$ brew install crystal~
- Arch Linux: ~$ pacman -S crystal shards~
*** MacOS
#+begin_src shell
brew install crystal
#+end_src
*** Arch
#+begin_src shell
sudo pacman -S crystal shards
#+end_src
** ICR (REPL) ** ICR (REPL)
you need to install [[https://github.com/crystal-community/icr][ICR]]. [[https://github.com/crystal-community/icr#installation][Installation instructions]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Features
# An in-depth list of features, how to use them, and their dependencies.
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,43 +1,78 @@
#+TITLE: :lang csharp # -*- mode: doom-docs-org -*-
#+title: :lang csharp
#+subtitle: Unity, .NET, and Mono shenanigans
#+created: February 20, 2017
#+since: 2.0.0
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]] This module adds C# support to Emacs, powered by Omnisharp (directly or through
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#macos][MacOS]]
- [[#arch-linux][Arch Linux]]
- [[#nixos][NixOS]]
* Description
This module adds C# support to Emacs. Powered by omnisharp (directly or through
LSP). LSP).
** Module Flags ** Maintainers
+ =+lsp= Enables omnisharp through LSP support (requires omnisharp). /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+unity= Enables special support for the [[https://unity.com/][Unity game engine]] (particularly,
support for HLSL shaders).
+ =+dotnet= Enables Dotnet transient interface with Sharper
** Plugins ** Module flags
+ [[https://github.com/josteink/csharp-mode][csharp-mode]] - +dotnet ::
+ [[https://github.com/omajid/csproj-mode][csproj-mode]] Enable Dotnet transient interface with Sharper
+ [[https://github.com/OmniSharp/omnisharp-emacs][omnisharp]]* (not =+lsp=) - +lsp ::
+ [[https://github.com/midnightSuyama/shader-mode][shader-mode]]* (=+unity=) Enable LSP support for ~csharp-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
+ [[https://github.com/sebasmonia/sharper][sharper]] (=+dotnet=) (supports =omnisharp-roslyn=).
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
- +unity ::
Enable special support for the [[https://unity.com/][Unity game engine]] (particularly, support for
HLSL shaders).
* Prerequisites ** Packages
This module needs: - [[doom-package:][csharp-mode]]
- [[doom-package:][csproj-mode]]
- [[doom-package:][shader-mode]] if [[doom-module:][+unity]]
- [[doom-package:][sharper]] if [[doom-module:][+dotnet]]
- [[doom-package:][sln-mode]]
+ omnisharp (with the ~+lsp~ flag, this must be installed externally. Without ** Hacks
it, use ~M-x omnisharp-install-server~) /No hacks documented for this module./
+ .NET SDKs (on Windows)
+ Mono (on UNIX platforms) ** TODO Changelog
+ .NET Core 1.X - 3.X or .NET 5 for cross platform # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- Mono (on UNIX platforms)
- .NET SDKs (on Windows)
- .NET Core 1.X - 3.X or .NET 5 for cross platform
- omnisharp-rosyln (if [[doom-module:][+lsp]])
** TODO MacOS ** TODO MacOS
** Arch Linux ** Arch Linux
#+BEGIN_SRC sh #+begin_src sh
sudo pacman --needed --noconfirm -S mono pacman --needed --noconfirm -S mono
#+END_SRC #+end_src
** TODO NixOS ** TODO NixOS
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,47 +1,47 @@
#+TITLE: lang/dart # -*- mode: doom-docs-org -*-
#+DATE: February 16, 2020 #+title: :lang dart
#+SINCE: v3.0.0 #+subtitle: Paint ui and not much else
#+STARTUP: inlineimages nofold #+created: February 15, 2020
#+since: 21.12.0 (#2729)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] [[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform. It
- [[#maintainers][Maintainers]] is fast and optimized for UI, famous for the [[https://flutter.io/][Flutter]] framework, also made by
- [[#module-flags][Module Flags]] Google. Both Flutter and Dart are free and open-source.
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#installing-dart-sdk][Installing Dart SDK]]
- [[#installing-flutter-sdk][Installing Flutter SDK]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#dart--flutter][Dart & Flutter]]
- [[#android][Android]]
- [[#flutter-mobile-development-on-desktop][Flutter mobile development on desktop]]
- [[#troubleshooting][Troubleshooting]]
* Description This module wraps ~dart-mode~, with [[https://microsoft.github.io/language-server-protocol/][LSP]] features like code completion for
[[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform. =.dart= files, syntax highlighting, debugging, closing labels, etc.
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.
** Maintainers ** Maintainers
+ [[https://github.com/ericdallo][@ericdallo]] - [[doom-user:][@ericdallo]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+lsp= Enable LSP server integration.
+ =+flutter= Adds ~flutter~ integration and some sane defaults for Flutter
development along with ~hover~ for desktop development.
** Plugins ** Module flags
+ [[https://github.com/bradyt/dart-mode][dart-mode]] - +flutter ::
+ [[https://github.com/amake/flutter.el][flutter.el]] Enable ~flutter~ integration and some sane defaults for Flutter development
+ [[https://github.com/ericdallo/hover.el][hover.el]] along with ~hover~ for desktop development.
- +lsp ::
Enable LSP support for ~dart-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports flutter).
* Prerequisites ** Packages
Make sure that the Dart SDK is on your ~PATH~, and if using Flutter, make sure - [[doom-package:][dart-mode]]
the Flutter binary is on your ~PATH~ as well. - [[doom-package:][flutter.el]]
- [[doom-package:][hover.el]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
Make sure that the Dart SDK is on your =$PATH=, and if using Flutter, make sure
the Flutter binary is on your =$PATH= as well.
** Installing Dart SDK ** Installing Dart SDK
Before starting note that Flutter SDK will have a version of Dart. Therefore, Before starting note that Flutter SDK will have a version of Dart. Therefore,
@ -52,23 +52,23 @@ The stable version of the SDK is in most major distributions repositories.
If you find it necessary to install any other version or build from source, If you find it necessary to install any other version or build from source,
please refer to the official website at: https://dart.dev/get-dart please refer to the official website at: https://dart.dev/get-dart
+ *On Debian (also Ubuntu and its derivations):* - *On Debian (also Ubuntu and its derivations):*
#+BEGIN_SRC shell #+begin_src sh
sudo apt-get install dart apt-get install dart
#+END_SRC #+end_src
+ *On Arch Linux (and derivations like Manjaro):* - *On Arch Linux (and derivations like Manjaro):*
#+BEGIN_SRC shell #+begin_src sh
sudo pacman -S dart pacman -S dart
#+END_SRC #+end_src
+ *On macOS*: - *On macOS*:
#+BEGIN_SRC shell #+begin_src sh
brew tap dart-lang/dart brew tap dart-lang/dart
brew install dart brew install dart
#+END_SRC #+end_src
+ *On NixOS*: - *On NixOS*:
#+BEGIN_SRC shell #+begin_src sh
nix-env -iA nixpkgs.dart nix-env -iA nixpkgs.dart
#+END_SRC #+end_src
** Installing Flutter SDK ** Installing Flutter SDK
Due to complications with permissions, it is suggested not to use AUR or any Due to complications with permissions, it is suggested not to use AUR or any
@ -77,22 +77,30 @@ automatic installation tools for Flutter SDK.
On any system just run the following commands to install Flutter, once you have On any system just run the following commands to install Flutter, once you have
met dependencies named on [[https://flutter.dev/docs/get-started/install/][the site]]: met dependencies named on [[https://flutter.dev/docs/get-started/install/][the site]]:
#+BEGIN_SRC shell #+begin_src sh
git clone https://github.com/flutter/flutter --branch stable # to download Flutter git clone https://github.com/flutter/flutter --branch stable # to download Flutter
export PATH="$PATH:$(pwd)/flutter/bin" # to add it to PATH export PATH="$PATH:$(pwd)/flutter/bin" # to add it to PATH
flutter doctor # for Dependency check and further instructions flutter doctor # for Dependency check and further instructions
#+END_SRC #+end_src
* Features * TODO Usage
+ Syntax highlighting and formatting for ~.dart~ files provided by LSP #+begin_quote
+ Auto import 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
+ Widget guide lines for Flutter #+end_quote
+ Closing labels for constructors
+ Run tests interactively - Syntax highlighting and formatting for ~.dart~ files provided by LSP.
+ Outline support via ~lsp-treemacs~ - Auto import.
+ Emacs functions for running and debugging Flutter projects - Widget guide lines for Flutter.
- Closing labels for constructors.
- Run tests interactively.
- Outline support via [[doom-package:][lsp-treemacs]].
- Emacs functions for running and debugging Flutter projects.
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
** Dart & Flutter ** Dart & Flutter
On Linux, the installers for Dart and Flutter use the ~/opt~ directory, and this On Linux, the installers for Dart and Flutter use the ~/opt~ directory, and this
module assumes that. However, you may set ~lsp-dart-sdk-dir~ to your Dart module assumes that. However, you may set ~lsp-dart-sdk-dir~ to your Dart
@ -101,18 +109,31 @@ LSP can find the language server included with the Dart SDK.
Alternatively, these variables shouldn't be necessary if you just include Dart Alternatively, these variables shouldn't be necessary if you just include Dart
and Flutter on your ~PATH~ variable. and Flutter on your ~PATH~ variable.
** Android ** Android
You will also need to setup your system for Android development if you intend to You will also need to setup your system for Android development if you intend to
use Flutter to develop mobile applications. Refer to your distributions package use Flutter to develop mobile applications. Refer to your distributions package
manager for details. In most distributions the ~/opt/android-sdk~ directory is manager for details. In most distributions the ~/opt/android-sdk~ directory is
used, and you might have to change some permissions in this directory since it's used, and you might have to change some permissions in this directory since it's
owned by root. The [[https://wiki.archlinux.org/index.php/Android][Arch Linux wiki has a great guide on this here.]] owned by root. The [[https://wiki.archlinux.org/index.php/Android][Arch Linux wiki has a great guide on this here.]]
** Flutter mobile development on desktop ** Flutter mobile development on desktop
[[https://github.com/go-flutter-desktop/go-flutter][Hover]] is an application that can run Flutter mobile apps on your desktop, this [[https://github.com/go-flutter-desktop/go-flutter][Hover]] is an application that can run Flutter mobile apps on your desktop, this
makes the mobile development a lot easier without the need to setup an Android emulator. makes the mobile development a lot easier without the need to setup an Android
emulator.
* Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
See the configuration section for information on the binaries for Dart and See the configuration section for information on the binaries for Dart and
Flutter. On new installs to the ~/opt~ directory, you will likely need to edit Flutter. On new installs to the =/opt= directory, you will likely need to edit
the permissions of the ~/opt/dart-sdk~ and ~/opt/flutter~ directories (not to the permissions of the =/opt/dart-sdk= and =/opt/flutter= directories (not to
mention the Android SDK, as discussed above). mention the Android SDK, as discussed above).
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,50 @@
# -*- mode: doom-docs-org -*-
#+title: :lang data
#+subtitle: A dumping ground for data formats
#+created: February 20, 2017
#+since: 2.0.0
* Description :unfold:
This module adds Emacs support for CSV and XML files.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][csv-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,54 @@
# -*- mode: doom-docs-org -*-
#+title: :lang dhall
#+subtitle: Config as code
#+created: August 03, 2021
#+since: 21.12.0
* Description :unfold:
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.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][dhall-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires the =dhall-json= package, which provides both the
=dhall-to-json=, =dhall-to-yaml=, and =dhall-format= executables.
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,79 +1,106 @@
#+TITLE: lang/elixir # -*- mode: doom-docs-org -*-
#+DATE: June 24, 2019 #+title: :lang elixir
#+SINCE: v2.0.9 #+subtitle: Erlang done right
#+created: May 24, 2017
#+since: 2.0.3 (#83)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[doom-package:][alchemist]] or
- [[#module-flags][Module flags]] [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]].
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#install-elixir][Install Elixir]]
- [[#with-asdf][With ~asdf~]]
- [[#arch-linux][Arch Linux]]
- [[#gentoo-linux][Gentoo Linux]]
- [[#opensuse][openSUSE]]
- [[#features][Features]]
- [[#appendix][Appendix]]
- [[#commands][Commands]]
* Description ** Maintainers
This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[https://github.com/tonini/alchemist.el][alchemist.el]] /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
or [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]].
** Module flags ** Module flags
+ ~+lsp~ Enable LSP support. Requires [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]]. - +lsp ::
Enable LSP support for ~elixir-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]]).
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
** Plugins ** Packages
+ [[https://github.com/elixir-editors/emacs-elixir][elixir-mode]] - [[doom-package:][alchemist]]
+ [[https://github.com/tonini/alchemist.el][alchemist.el]] - [[doom-package:][elixir-mode]]
+ [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]] - [[doom-package:][exunit]]
+ [[https://github.com/ananthakumaran/exunit.el][exunit]] - [[doom-package:][flycheck-credo]] if [[doom-module:][:checkers syntax]]
* Prerequisites ** Hacks
You should have Elixir installed, for example, via your distribution's package /No hacks documented for this module./
manager or a version management tool such as [[https://github.com/asdf-vm/asdf-elixir][asdf]].
If you want to add support for LSP ([[modules/tools/lsp][:tools lsp]]), be sure to install [[https://github.com/JakeBecker/elixir-ls/][elixir-ls]] ** TODO Changelog
and enable ~:tools lsp~ in your ~init.el~. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires Elixir. Install it via your distribution's package manager
or a version management tool such as [[https://github.com/asdf-vm/asdf-elixir][asdf]].
To add LSP support, install [[https://github.com/JakeBecker/elixir-ls/][elixir-ls]] and enable [[doom-module:][:tools lsp]].
To support linting with [[https://github.com/rrrene/credo][credo]], add ~:checkers syntax~ to ~$DOOMDIR/init.el~.
To support linting with [[https://github.com/rrrene/credo][credo]], add ~:checkers syntax~ to your ~init.el~
** Install Elixir ** Install Elixir
(See [[https://elixir-lang.org/install.html]] for other operating systems)
*** With ~asdf~ *** With ~asdf~
#+BEGIN_SRC sh #+begin_src sh
asdf plugin-add elixir asdf plugin-add elixir
asdf install elixir 1.9.1 asdf install elixir 1.9.1
#+END_SRC #+end_src
*** Arch Linux *** Arch Linux
#+BEGIN_SRC sh :dir /sudo:: #+begin_src sh
sudo pacman -S elixir pacman -S elixir
#+END_SRC #+end_src
*** Gentoo Linux *** Gentoo Linux
#+BEGIN_SRC sh :dir /sudo:: #+begin_src sh
sudo emerge -v dev-lang/elixir emerge -v dev-lang/elixir
#+END_SRC #+end_src
*** openSUSE *** openSUSE
#+BEGIN_SRC sh :dir /sudo:: #+begin_src sh
sudo zypper install elixir zypper install elixir
#+END_SRC #+end_src
See [[https://elixir-lang.org/install.html]] for other operating systems
* Features * TODO Usage
- Code completion (~:completion company~) #+begin_quote
- Documentation lookup (~:tools lookup~) 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
- Code completion ([[doom-module:][:completion company]])
- Documentation lookup ([[doom-module:][:tools lookup]])
- Mix integration - Mix integration
- Phoenix support - Phoenix support
- ~iex~ integration (~:tools eval~) - ~iex~ integration ([[doom-module:][:tools eval]])
- Syntax checking (~:checkers syntax~, using [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]]~) - Syntax checking ([[doom-module:][:checkers syntax]], using [[doom-package:][flycheck-credo]])
* Appendix
** Commands ** exunit-mode
*** exunit-mode The exunit-mode prefix is [[kbd:][<localleader> t]]. Here is some examples:
The exunit-mode prefix is =SPC m t=. Here is some examples:
| | | |
| command | key / ex command | description | | command | key / ex command | description |
|------------------------------------------+------------------+--------------------------------------------------------| |--------------------------------------------+-------------------+--------------------------------------------------------|
| ~exunit-verify-all~ | =SPC m t a= | Runs exunit on all files | | ~exunit-verify-all~ | [[kbd:][<localleader> t a]] | Runs exunit on all files |
| ~exunit-rerun~ | =SPC m t r= | Re-runs last exunit command | | ~exunit-rerun~ | [[kbd:][<localleader> t r]] | Re-runs last exunit command |
| ~exunit-verify~ | =SPC m t v= | Runs exunit on current file | | ~exunit-verify~ | [[kbd:][<localleader> t v]] | Runs exunit on current file |
| ~exunit-verify-single~ | =SPC m t s= | Runs exunit for the item on cursor | | ~exunit-verify-single~ | [[kbd:][<localleader> t s]] | Runs exunit for the item on cursor |
| ~exunit-toggle-file-and-test~ | =SPC m t t= | Switch between implementation and test | | ~exunit-toggle-file-and-test~ | [[kbd:][<localleader> t t]] | Switch between implementation and test |
| ~exunit-toggle-file-and-test-other-window~ | =SPC m t T= | Switch between implementation and test in other window | | ~exunit-toggle-file-and-test-other-window~ | [[kbd:][<localleader> t T]] | Switch between implementation and test in other window |
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,61 @@
# -*- mode: doom-docs-org -*-
#+title: :lang elm
#+subtitle: Care for a cup of TEA?
#+created: May 21, 2017
#+since: 2.0.3 (#74)
* Description :unfold:
This module adds [[https://elm-lang.org/][Elm]] support to Doom Emacs.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +lsp ::
Enable LSP support for ~elm-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/elm-tooling/elm-language-server][elm-language-server]]).
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
** Packages
- [[doom-package:][elm-mode]]
- [[doom-package:][flycheck-elm]] if [[doom-module:][:checkers syntax]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
#+begin_quote
🔨 /This module's prerequisites are not all documented./ [[doom-contrib-module:][Document them?]]
#+end_quote
- If [[doom-module:][+lsp]] is enabled, [[https://github.com/elm-tooling/elm-language-server][elm-language-server]] is required to be installed and in
your =$PATH=.
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,60 +1,74 @@
#+TITLE: lang/emacs-lisp # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang emacs-lisp
#+SINCE: v1.3 #+subtitle: A parsel-tongue for the oldest serpent
#+STARTUP: inlineimages nofold #+created: January 16, 2017
#+since: 1.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module extends support for Emacs Lisp in Doom Emacs. This module extends support for Emacs Lisp in Doom Emacs.
+ Macro expansion - Macro expansion
+ Go-to-definitions or references functionality - 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
** Maintainers ** Maintainers
+ @hlissner (author) - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags.
** Plugins ** Module flags
+ [[https://github.com/jorgenschaefer/emacs-buttercup][buttercup]] /This module has no flags./
+ [[https://github.com/Wilfred/elisp-def][elisp-def]]
+ [[https://github.com/xuchunyang/elisp-demos][elisp-demos]] ** Packages
+ [[https://github.com/flycheck/flycheck-cask][flycheck-cask]] (=:checkers syntax=) - [[doom-package:][buttercup]]
+ [[https://github.com/Fanael/highlight-quoted][highlight-quoted]] - [[doom-package:][elisp-def]]
+ [[https://github.com/joddie/macrostep][macrostep]] - [[doom-package:][elisp-demos]]
+ [[https://github.com/tonini/overseer.el][overseer]] - [[doom-package:][flycheck-cask]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][flycheck-package]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][highlight-quoted]]
- [[doom-package:][macrostep]]
- [[doom-package:][overseer]]
** Hacks ** Hacks
+ Symbols that are defined in the current session are highlighted with - Symbols that are defined in the current session are highlighted with
~font-lock-variable-face~. ~font-lock-variable-face~.
+ Eldoc will display the values of variables next to its documentation. - Eldoc will display the values of variables next to its documentation.
+ ~elisp-demos~ was modified to display API demos for Doom's standard library - ~elisp-demos~ was modified to display API demos for Doom's standard library
(in [[file:../../../docs/api.org][docs/api.org]]). (in [[file:../../../docs/api.org][docs/api.org]]).
+ This module extends imenu support for Doom's API (e.g. ~package!~, - This module extends imenu support for Doom's API (e.g. ~package!~,
~use-package~, ~after!~) ~use-package~, ~after!~)
+ Flycheck has been configured to tone down the false positives when you are - Flycheck has been configured to tone down the false positives when you are
editing your Emacs or Doom config. editing your Emacs or Doom config.
* Prerequisites ** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module's sole dependency is Emacs. It's very obscure, you wouldn't know This module's sole dependency is Emacs. It's very obscure, you wouldn't know
about it. about it.
* TODO Features * TODO Usage
# An in-depth list of features, how to use them, and their dependencies. #+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -95,7 +95,7 @@ if it's callable, `apropos' otherwise."
(with-demoted-errors "%s" (with-demoted-errors "%s"
(re-search-forward (re-search-forward
(if (caddr module) (if (caddr module)
"\\* Module Flags$" "\\* Module flags$"
"\\* Description$")) "\\* Description$"))
(when (caddr module) (when (caddr module)
(re-search-forward (format "=\\%s=" (caddr module)) (re-search-forward (format "=\\%s=" (caddr module))

View file

@ -1,5 +1,5 @@
#+TITLE: API Demos #+title: API Demos
#+PROPERTY: header-args:emacs-lisp :results verbatim #+property: header-args:elisp :results pp
This file contains demos of Doom's public API; its core library, macros, and This file contains demos of Doom's public API; its core library, macros, and
autodefs. It is used by the =elisp-demos= package to display examples of their autodefs. It is used by the =elisp-demos= package to display examples of their

View file

@ -1,39 +1,61 @@
#+TITLE: lang/erlang # -*- mode: doom-docs-org -*-
#+DATE: January 14, 2020 #+title: :lang erlang
#+SINCE: {replace with next tagged release version} #+subtitle: an elegant language for a more civilized age
#+STARTUP: inlineimages nofold #+created: April 07, 2018
#+since: 21.12.0 (#497)
* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
* Description
* Description :unfold:
This module provides support [[https://www.erlang.org/][Erlang programming language]]. Support for the This module provides support [[https://www.erlang.org/][Erlang programming language]]. Support for the
[[https://github.com/erlang/sourcer][sourcer]] language server is optional. [[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]])
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ ~+lsp~ Enable LSP Support. Requires [[https://github.com/erlang/sourcer][sourcer]]. - +lsp ::
Enable LSP support for ~erlang-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/erlang/sourcer][sourcer]]).
** Packages
- [[doom-package:][flycheck-rebar3]]
- [[doom-package:][ivy-erlang-complete]]
** Plugins ** Hacks
+ Erlang Mode (bundled with Erlang installations) /No hacks documented for this module./
+ [[https://github.com/joedevivo/flycheck-rebar3][flycheck-rebar3]]
+ [[https://github.com/s-kostyaev/ivy-erlang-complete][ivy-erlang-complete]]
* Prerequisites ** TODO Changelog
You should have Erlang installed. Check your distribution's package manager or a # This section will be machine generated. Don't edit it by hand.
version management tool such as [[https://github.com/kerl/kerl][kerl]]. /This module does not have a changelog yet./
If you want LSP support, install [[https://github.com/erlang/sourcer][sourcer]]. * Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Features This module requires Erlang be installed (which includes ~erlang-mode~). Check
- Code completion (~+lsp~, ~:completion company~, and ~:completion ivy~) your distribution's package manager or a version management tool such as [[https://github.com/kerl/kerl][kerl]].
- Syntax checking (~:checkers syntax~)
For LSP support, install [[https://github.com/erlang/sourcer][sourcer]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,34 +1,66 @@
#+TITLE: :lang ess # -*- mode: doom-docs-org -*-
#+title: :lang ess
#+subtitle: 73.6% of all statistics are made up
#+created: February 05, 2018
#+since: 21.12.0 (#410)
* Description :unfold:
This module adds support for various statistics languages, including R, S-Plus, This module adds support for various statistics languages, including R, S-Plus,
SAS, Julia and Stata. SAS, Julia and Stata.
* Table of Contents :TOC: ** Maintainers
- [[#prequisites][Prequisites]] /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
- [[#appendix][Appendix]]
- [[#keybindings][Keybindings]] ** Module flags
- +stan ::
Enable support for ~stan-mode~, including code completion and syntax checking.
** Packages
- [[doom-package:][ess]]
- [[doom-package:][ess-R-data-view]]
- [[doom-package:][polymode]]
- [[doom-package:][poly-R]]
- if [[doom-module:][+stan]]
- [[doom-package:][company-stan]] if [[doom-module:][:completion company]]
- [[doom-package:][eldoc-stan]]
- [[doom-package:][flycheck-stan]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][stan-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prequisites
This module has several optional dependencies: This module has several optional dependencies:
+ [[https://github.com/jimhester/lintr][lintr]]: Enables R linting. - [[https://github.com/jimhester/lintr][lintr]]: for R linting.
+ [[https://github.com/REditorSupport/languageserver][languageserver]]: Enables LSP support in an R buffer (with =+lsp= flag). - [[https://github.com/REditorSupport/languageserver][languageserver]]: for LSP support in an R buffer (with [[doom-module:][+lsp]] flag).
* Appendix * TODO Usage
** Keybindings #+begin_quote
*** :map ess-doc-map 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** :map ess-doc-map
| key | command | | key | command |
|-----+----------------------------| |-----+----------------------------|
| "h" | ess-display-help-on-object | | "h" | ess-display-help-on-object |
| "p" | ess-R-dv-pprint | | "p" | ess-R-dv-pprint |
| "t" | ess-R-dv-ctable | | "t" | ess-R-dv-ctable |
*** :map ess-mode-map
** :map ess-mode-map
| key | command | | key | command |
|--------------+-----------------------| |--------------+-----------------------|
| "<s-return>" | ess-eval-line | | "<s-return>" | ess-eval-line |
| "<up>" | comint-next-input | | "<up>" | comint-next-input |
| "<down>" | comint-previous-input | | "<down>" | comint-previous-input |
**** :localleader
** :localleader
| state | key | command | | state | key | command |
|-------+-------------+---------------------------------------------------| |-------+-------------+---------------------------------------------------|
| :nv | "," | ess-eval-region-or-function-or-paragraph-and-step | | :nv | "," | ess-eval-region-or-function-or-paragraph-and-step |
@ -55,3 +87,19 @@ This module has several optional dependencies:
| :n | "cm" | ess-noweb-mark-chunk | | :n | "cm" | ess-noweb-mark-chunk |
| :n | "cp" | ess-noweb-previous-chunk | | :n | "cp" | ess-noweb-previous-chunk |
| :n | "cn" | ess-noweb-next-chunk | | :n | "cn" | ess-noweb-next-chunk |
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,43 +1,58 @@
#+TITLE: lang/factor # -*- mode: doom-docs-org -*-
#+DATE: December 3, 2019 #+title: :lang factor
#+SINCE: v3.0.0 #+subtitle: ...
#+STARTUP: inlineimages #+created: December 03, 2019
#+since: 21.12.0 (#2129)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds support to the [[https://github.com/factor/factor][factor]] programming language and its associated This module adds support to the [[https://github.com/factor/factor][factor]] programming language and its associated
_fuel_ emacs plugin. [[doom-package:][fuel]] emacs plugin.
+ If possible, include a brief list of feature highlights here ** Maintainers
+ Like code completion, syntax checking or available snippets /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
+ Include links to packages & external things where possible
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
{A list of linked plugins} /This module doesn't install any packages./
** Hacks ** Hacks
{A list of internal modifications to included packages} /No hacks documented for this module./
* Prerequisites ** TODO Changelog
You must install [[https://github.com/factor/factor][factor]] to use the advanced functionality of this module. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires [[https://github.com/factor/factor][factor]] for its advanced functionality.
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
This module requires the installation of factor to be available at This module requires the installation of factor to be available at
=fuel-factor-root-dir=. Here's an example of how to set it: ~fuel-factor-root-dir~. E.g.
#+BEGIN_SRC emacs-lisp #+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(setq fuel-factor-root-dir "/Applications/factor") (setq fuel-factor-root-dir "/Applications/factor")
#+END_SRC #+end_src
* Troubleshooting * Troubleshooting
Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,46 +1,70 @@
#+TITLE: lang/faust # -*- mode: doom-docs-org -*-
#+DATE: July 23, 2019 #+title: :lang faust
#+SINCE: v2.1.0 #+subtitle: DSP, but you can keep your soul
#+STARTUP: inlineimages #+created: October 14, 2019
#+since: 21.12.0 (#1898)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] Add support to [[https://faust.grame.fr/][Faust language]] inside emacs.
- [[#plugins][Plugins]]
- [[#features][Features]]
* Description - Faust code syntax highlighting and indentation
Add support to Faust language inside emacs. - 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
+ Faust code syntax hightlighting and indentation ** Maintainers
+ Project-based (inter-linked Faust files) *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
+ Build/compile with output window
+ Graphic diagrams generation and vizualisation 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 Yasnippet is installed)
+ Modeline indicator of the state of the code
** Plugins ** Packages
+ [[https://bitbucket.org/yphil/faustine][faustine]] - [[doom-package:][faustine]]
* Features ** Hacks
Keybindings - Both ~faust-mode~ and ~faustine-mode~ are hardcoded to use [[doom-package:][auto-complete]],
which Doom does not use. Its obnoxious 'You really should install and use
auto-complete' warnings have been silenced.
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
| Binding | Description | | Binding | Description |
|-------------------+----------------------| |-------------------+----------------------|
| ~<localleader> b~ | ~build~ | | [[kbd:][<localleader> b]] | build |
| ~<localleader> c~ | ~syntax check~ | | [[kbd:][<localleader> c]] | syntax check |
| ~<localleader> d~ | ~diagram~ | | [[kbd:][<localleader> d]] | diagram |
| ~<localleader> h~ | ~online dock~ | | [[kbd:][<localleader> h]] | online dock |
| ~<localleader> RET~ | ~mdoc~ | | [[kbd:][<localleader> RET]] | mdoc |
| ~<localleader> o~ | ~toggle output buffer~ | | [[kbd:][<localleader> o]] | toggle output buffer |
| ~<localleader> s~ | ~source code~ | | [[kbd:][<localleader> s]] | source code |
| ~<localleader> r~ | ~run~ | | [[kbd:][<localleader> r]] | run |
| ~<localleader> S-b~ | ~build all~ | | [[kbd:][<localleader> S-b]] | build all |
| ~<localleader> S-d~ | ~diagram all~ | | [[kbd:][<localleader> S-d]] | diagram all |
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,58 +1,71 @@
#+TITLE: lang/fsharp # -*- mode: doom-docs-org -*-
#+DATE: May 22, 2019 #+title: :lang fsharp
#+SINCE: {replace with next tagged release version} #+subtitle: ML stands for Microsoft's Language
#+STARTUP: inlineimages #+created: May 23, 2019
#+since: 21.12.0 (#1327)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds [[https://fsharp.org/][F#]] support to Doom Emacs.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#mono][Mono]]
- [[#osx][OSX]]
- [[#arch-linux][Arch Linux]]
- [[#lsp][LSP]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description *Includes:*
# A summary of what this module does. - Code completion
- eldoc support
- Syntax checking
# + If possible, include a brief list of feature highlights here ** Maintainers
# + Like code completion, syntax checking or available snippets /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
# + Include links to packages & external things where possible
This module adds [[https://fsharp.org/][F#]] support. ** Module flags
+ Code completion - +lsp ::
+ eldoc support Enable LSP support for ~fsharp-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
+ Syntax checking (supports [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]].).
** Packages
- [[doom-package:][fsharp-mode]]
- [[doom-package:][lsp-fsharp]] if [[doom-package:][+lsp]]
** Module Flags
+ =+lsp= Enables lsp-fsharp (this requires ~:tools lsp~ to be enabled).
** Plugins
+ [[https://github.com/fsharp/emacs-fsharp-mode][fsharp-mode]]
+ =+lsp=
+ [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]]
** Hacks ** Hacks
None so far. /No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
To get code completion/syntax checking when not using lsp, you will need to
install [[https://www.mono-project.com/][mono]].
* Prerequisites
** Mono ** Mono
To get code completion/syntax checking when not using lsp, you will need to install [[https://www.mono-project.com/][mono]].
*** OSX *** OSX
Do *NOT* install mono via brew. See this [[https://github.com/fsharp/FsAutoComplete/issues/331][issue]]. *Do NOT install mono via brew.* See this [[https://github.com/fsharp/FsAutoComplete/issues/331][issue]].
*** Arch Linux *** Arch Linux
#+BEGIN_SRC sh #+begin_src sh
sudo pacman -S mono pacman -S mono
#+END_SRC #+end_src
** LSP ** LSP
The language server is automatically installed by [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]]. The language server is automatically installed by [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]].
* Features
An in-depth list of features, how to use them, and their dependencies.
* Configuration * TODO Usage
How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,56 +1,74 @@
#+TITLE: lang/fstar # -*- mode: doom-docs-org -*-
#+DATE: February 2, 2020 #+title: :lang fstar
#+SINCE: 2.0.10 #+subtitle: (Dependent) types and (monadic) effects and Z3
#+STARTUP: inlineimages nofold #+created: February 02, 2020
#+since: 21.12.0 (#2473)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#f][F*]]
- [[#macos][macOS]]
- [[#arch-linux][Arch Linux]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds [[https://fstar-lang.org/][F*]] support, powered by [[https://github.com/FStarLang/fstar-mode.el][fstar-mode.el]]. This module adds [[https://fstar-lang.org/][F*]] support, powered by [[https://github.com/FStarLang/fstar-mode.el][fstar-mode.el]].
+ Syntax highlighting - Syntax highlighting
+ Interactively process F* files one definition at a time - Interactively process F* files one definition at a time
+ Query the running F* process to look up definitions, documentation, and - Query the running F* process to look up definitions, documentation, and
theorems theorems
** Maintainers ** Maintainers
+ [[https://github.com/tchajed][@tchajed]] (Author) - [[doom-user:][@tchajed]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags.
** Plugins ** Module flags
+ [[https://github.com/FStarLang/fstar-mode.el][fstar-mode]] /This module has no flags./
* Prerequisites ** Packages
** F* - [[doom-package:][fstar-mode]]
While fstar-mode supports the latest release of F*, you may have a better
experience installing a more recent version from source. See F*'s [[https://github.com/FStarLang/FStar/blob/master/INSTALL.md][INSTALL.md]]. ** Hacks
*** macOS /No hacks documented for this module./
#+BEGIN_SRC sh
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires [[https://github.com/FStarLang/FStar/blob/master/INSTALL.md][F*]].
While ~fstar-mode~ supports the latest release of F*, you may have a better
experience installing a more recent version from source.
** macOS
#+begin_src sh
brew install fstar brew install fstar
#+END_SRC #+end_src
*** Arch Linux
Install ~fstar~ from the AUR: ** Arch Linux
#+BEGIN_SRC sh ~fstar~ is available in the AUR:
#+begin_src sh
yaourt -S fstar yaourt -S fstar
#+END_SRC #+end_src
* Features * TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
If you're having trouble getting F* to start correctly, you may need to [[doom-report:][Report an issue?]]
configure a few variables in fstar-mode; see its [[https://github.com/FStarLang/fstar-mode.el][README]] for more details.
- If you're having trouble getting F* to start correctly, you may need to
configure a few variables in ~fstar-mode~; see its [[https://github.com/FStarLang/fstar-mode.el][README]] for more details.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,55 +1,79 @@
#+TITLE: lang/gdscript # -*- mode: doom-docs-org -*-
#+DATE: May 27, 2020 #+title: :lang gdscript
#+SINCE: v2.0.9 #+subtitle: the language you waited for
#+created: June 01, 2020
#+since: 21.12.0 (#3239)
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#appendix][Appendix]]
- [[#commands][Commands]]
* Description
This module adds support for GDScript, the scripting language of the [[http://godotengine.org/][Godot]] game 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]]. engine, to Doom Emacs, powered by [[https://github.com/GDQuest/emacs-gdscript-mode][gdscript-mode]].
** Module Flags ** Maintainers
+ =+lsp= Enables LSP support for gdscript-mode. This requires the =:tools lsp= *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
module to be enabled and you need to open your project in Godot ~3.2.1~ or
above to run the language server.
** Plugins ** Module flags
This module provides no plugins. - +lsp ::
Enable LSP support for ~gdscript-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(Godot ~3.2.1~ or newer).
* Prerequisites ** Packages
To format your GDScript code, you need to install [[https://github.com/Scony/godot-gdscript-toolkit/][gdtoolkit]]: - [[doom-package:][gdscript-mode]]
#+BEGIN_SRC shell ** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires Godot 3.2.1+ to be installed to make use of any of its
features (beyond syntax highlighting).
To format your GDScript code, you will need [[https://github.com/Scony/godot-gdscript-toolkit/][gdtoolkit]]:
#+begin_src sh
# On Windows # On Windows
pip install gdtoolkit pip install gdtoolkit
# On MacOS and Linux # On MacOS and Linux
pip3 install gdtoolkit pip3 install gdtoolkit
#+END_SRC #+end_src
* Features * TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** LSP support
The language server support for GDScript is built into by lsp-mode. As long as The language server support for GDScript is built into by lsp-mode. As long as
you have the ~lsp~ module installed, you should be able to use the language you have [[doom-module:][+lsp]] and [[doom-module:][:tools lsp]] enabled, and Godot 3.2.1+ installed, it should work
server. out of the box.
Godot's language server is built into the game engine, so you need to open your Godot's language server is built into the game engine, so you need to open your
project in Godot ~3.2.1~ or above for the GDScript language server to be project in Godot ~3.2.1~ or above for the GDScript language server to be
available. available.
/Note that the GDScript language server has known issues causing some errors
with lsp-mode. They should be addressed in future releases./
* Configuration
This module provides no configuration.
* Appendix
** Commands ** Commands
Press ~SPC m~ (local leader key) to explore available commands. Press the localleader key ([[kbd:][SPC m]] for evil users, [[kbd:][C-c l]] otherwise) to explore
available commands.
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
[[doom-report:][Report an issue?]]
- The GDScript language server has known issues causing some errors with
[[doom-package:][lsp-mode]]. They should be addressed in future releases.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,81 +1,76 @@
#+TITLE: lang/go # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang go
#+SINCE: v2.0 #+subtitle: The hipster dialect
#+STARTUP: inlineimages #+created: June 15, 2015
#+since: 0.7
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#go][Go]]
- [[#dependencies][Dependencies]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module adds [[https://golang.org][Go]] support, with optional (but recommended) LSP support via 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]]. [[https://github.com/golang/tools/blob/master/gopls/README.md][gopls]].
+ Code completion (~gocode~) - Code completion (~gocode~)
+ Documentation lookup (~godoc~) - Documentation lookup (~godoc~)
+ Eldoc support (~go-eldoc~) - Eldoc support (~go-eldoc~)
+ REPL (~gore~) - REPL (~gore~)
+ Syntax-checking (~flycheck~) - Syntax-checking (~flycheck~)
+ Auto-formatting on save (~gofmt~) (requires =:editor (format +onsave)=) - Auto-formatting on save (~gofmt~) (requires [[doom-module:][:editor format +onsave]])
+ Code navigation & refactoring (~go-guru~) - Code navigation & refactoring (~go-guru~)
+ [[../../editor/file-templates/templates/go-mode][File templates]] - [[../../editor/file-templates/templates/go-mode][File templates]]
+ [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]] - [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]]
+ Generate testing code (~go-gen-test~) - Generate testing code (~go-gen-test~)
+ Code checking (~flycheck-golangci-lint~) - Code checking (~flycheck-golangci-lint~)
** Module Flags ** Maintainers
+ =+lsp= Enables integration for the gopls LSP server. It is highly recommended *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
you use this, as the non-LSP experience is deprecated (and poor).
** Plugins ** Module flags
+ [[https://github.com/dominikh/go-mode.el][go-mode]] - +lsp ::
+ [[https://github.com/syohex/emacs-go-eldoc][go-eldoc]] Enable LSP support for ~go-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
+ [[https://github.com/dominikh/go-mode.el][go-guru]] (supports gopls). Highly recommended, as the non-LSP experience is deprecated
+ [[https://github.com/manute/gorepl-mode][gorepl-mode]] (and poor).
+ [[https://github.com/brantou/emacs-go-tag][go-tag]] - +tree-sitter ::
+ [[https://github.com/mdempsky/gocode][company-go]]* =DEPRECATED= Leverages tree-sitter for better syntax highlighting and structural text
+ [[https://github.com/s-kostyaev/go-gen-test][go-gen-test]] editing. Requires [[doom-module:][:tools tree-sitter]].
+ [[https://github.com/weijiangan/flycheck-golangci-lint][flycheck-golangci-lint]] (if =:checkers syntax= is enabled)
** Packages
- [[doom-package:][company-go]] if [[doom-module:][:completion company]] (DEPRECATED)
- [[doom-package:][flycheck-golangci-lint]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][go-eldoc]]
- [[doom-package:][go-gen-test]]
- [[doom-package:][go-guru]]
- [[doom-package:][go-mode]]
- [[doom-package:][gorepl-mode]]
- [[doom-package:][go-tag]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires Go, a valid =$GOPATH=, and a number of go packages, listed
below.
* Prerequisites
** Go ** Go
To get started with Go, you need the ~go~ tool: - macOS: ~$ brew install go~
- Arch Linux: ~$ pacman -S go~
*** MacOS - openSUSE: ~$ zypper install go~
#+BEGIN_SRC bash
brew install go
#+END_SRC
*** Arch Linux
#+BEGIN_SRC bash
sudo pacman -S go
#+END_SRC
*** openSUSE
#+BEGIN_SRC sh :dir /sudo::
sudo zypper install go
#+END_SRC
** Dependencies ** Dependencies
This module requires a valid ~GOPATH~, and the following Go packages: - ~gocode~ (for code completion & eldoc support)
- ~godoc~ (for documentation lookup)
- ~gorename~ (for extra refactoring commands)
- ~gore~ (for the REPL)
- ~guru~ (for code navigation & refactoring commands)
- ~goimports~ (/optional/: for auto-formatting code on save & fixing imports)
- ~gotests~ (for generate test code)
- ~gomodifytags~ (for manipulating tags)
+ ~gocode~ (for code completion & eldoc support) #+begin_src sh
+ ~godoc~ (for documentation lookup)
+ ~gorename~ (for extra refactoring commands)
+ ~gore~ (for the REPL)
+ ~guru~ (for code navigation & refactoring commands)
+ ~goimports~ (optional: for auto-formatting code on save & fixing imports)
+ ~gotests~ (for generate test code)
+ ~gomodifytags~ (for manipulating tags)
#+BEGIN_SRC sh
export GOPATH=~/work/go export GOPATH=~/work/go
go install github.com/x-motemen/gore/cmd/gore@latest go install github.com/x-motemen/gore/cmd/gore@latest
@ -86,14 +81,29 @@ go install golang.org/x/tools/cmd/gorename@latest
go install golang.org/x/tools/cmd/guru@latest go install golang.org/x/tools/cmd/guru@latest
go install github.com/cweill/gotests/gotests@latest go install github.com/cweill/gotests/gotests@latest
go install github.com/fatih/gomodifytags@latest go install github.com/fatih/gomodifytags@latest
#+END_SRC #+end_src
+ ~golangci-lint~ (optional: for flycheck to integrate golangci-lint results) - ~golangci-lint~ (optional: for flycheck to integrate golangci-lint results) it
it is recommended to *not* use ~go get~ to install this one, check the is recommended to *not* use ~$ go get~ to install this one, check the
[[https://github.com/golangci/golangci-lint#binary-release][documentation]]. [[https://github.com/golangci/golangci-lint#binary-release][documentation]].
* TODO Features * TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,43 +1,42 @@
#+TITLE: lang/haskell # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang haskell
#+SINCE: v0.7 #+subtitle: A language that's lazier than I am
#+STARTUP: inlineimages #+created: March 29, 2016
#+since: 0.9
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]] This module adds Haskell support to Doom Emacs.
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
* Description
Adds Haskell support to Doom Emacs.
** Maintainers ** Maintainers
This module has no dedicated maintainers. *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+lsp= Enable LSP support with for [[https://github.com/haskell/haskell-language-server][haskell-language-server]] (requires the =:tools lsp= module). - +lsp ::
Enable LSP support for ~haskell-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/haskell/haskell-language-server][haskell-language-server]]).
** Plugins ** Packages
+ [[https://github.com/haskell/haskell-mode][haskell-mode]] - [[doom-package:][haskell-mode]]
+ [[https://github.com/emacs-lsp/lsp-haskell][lsp-haskell]] (=+lsp=, =:tools lsp=) - [[doom-package:][lsp-haskell]] if [[doom-module:][+lsp]]
** Hacks
/No hacks documented for this module./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
* Prerequisites
It is recommended to install the haskell tooling using [[https://www.haskell.org/ghcup/][ghcup]]. Only ghc is needed It is recommended to install the haskell tooling using [[https://www.haskell.org/ghcup/][ghcup]]. Only ghc is needed
for basic functionality: for basic functionality:
#+BEGIN_SRC bash #+begin_src sh
ghcup install ghc ghcup install ghc
#+END_SRC #+end_src
but =+lsp= users should also install the language server: but =+lsp= users should also install the language server:
#+BEGIN_SRC bash #+begin_src sh
ghcup install hls ghcup install hls
#+END_SRC #+end_src
Installing [[https://www.haskell.org/cabal/][cabal]] or [[https://docs.haskellstack.org/en/stable/README/][stack]] as well is recommended, and can be done through Installing [[https://www.haskell.org/cabal/][cabal]] or [[https://docs.haskellstack.org/en/stable/README/][stack]] as well is recommended, and can be done through
=ghcup=. =ghcup=.
@ -49,25 +48,44 @@ system package manager, cabal, or stack.
formatters such as [[https://github.com/lspitzner/brittany][brittany]], [[https://github.com/ennocramer/floskell][floskell]], [[https://github.com/tweag/ormolu][ormolu]], [[https://github.com/fourmolu/fourmolu][fourmolu]], and [[https://github.com/haskell/stylish-haskell][stylish-haskell]], formatters such as [[https://github.com/lspitzner/brittany][brittany]], [[https://github.com/ennocramer/floskell][floskell]], [[https://github.com/tweag/ormolu][ormolu]], [[https://github.com/fourmolu/fourmolu][fourmolu]], and [[https://github.com/haskell/stylish-haskell][stylish-haskell]],
which can be installed through system package manager, cabal, or stack. which can be installed through system package manager, cabal, or stack.
* Features * TODO Usage
This module intergrates the haskell packages into Doom by providing things such #+begin_quote
as repl support, project root recognition, etc. It also provide the following 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
This module integrates the haskell packages into Doom by providing things such
as REPL support, project root recognition, etc. It also provide the following
keybindings: keybindings:
| Keybinding | Description | | Keybinding | Description |
|-------------------+-----------------------------------------------| |-----------------+-----------------------------------------------|
| =<localleader> b= | Build the current cabal project | | [[kbd:][<localleader> b]] | Build the current cabal project |
| =<localleader> c= | Visit the =.cabal= file of the current buffer | | [[kbd:][<localleader> c]] | Visit the =.cabal= file of the current buffer |
| =<localleader> h= | Toggle visibility of the form at point | | [[kbd:][<localleader> h]] | Toggle visibility of the form at point |
| =<localleader> H= | hides all top level functions | | [[kbd:][<localleader> H]] | hides all top level functions |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
After installing your preferred formatter, make sure to set After installing your preferred formatter, make sure to set
=lsp-haskell-formatting-provider= to it. =lsp-haskell-formatting-provider= to it.
Make sure to configure the lsp to use your perfered formatter, e.g.: Make sure to configure the lsp to use your perfered formatter, e.g.:
#+BEGIN_SRC elisp #+begin_src emacs-lisp
;; ~/.doom.d/config.el ;; ~/.doom.d/config.el
(after! (after! lsp-haskell
(setq lsp-haskell-formatting-provider "brittany")) (setq lsp-haskell-formatting-provider "brittany"))
#+END_SRC #+end_src
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,50 @@
# -*- mode: doom-docs-org -*-
#+title: :lang hy
#+subtitle: Lisp is better than ugly
#+created: June 25, 2017
#+since: 2.0.4 (#122)
* Description :unfold:
/(No description yet)/
** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][hy-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires [[https://docs.hylang.org/en/alpha/][Hy]].
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,30 +1,55 @@
#+TITLE: lang/idris # -*- mode: doom-docs-org -*-
#+DATE: October 6, 2020 #+title: :lang idris
#+SINCE: v2.0.9 #+subtitle: A language you can depend on
#+STARTUP: inlineimages nofold #+created: August 21, 2018
#+since: 21.12.0 (#822)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds rudimentary [[https://www.idris-lang.org/][Idris]] support to Doom Emacs.
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
* Description
This module adds rudimentary Idris support.
** Maintainers ** Maintainers
This module has no dedicated maintainers. *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
This module provides no flags. /This module has no flags./
** Plugins ** Packages
# A list of linked plugins - [[doom-package:][idris-mode]]
+ [[https://github.com/idris-hackers/idris-mode/][idris-mode]]
* Prerequisites ** Hacks
This module has no prerequisites. /No hacks documented for this module./
* Features ** TODO Changelog
In addition to =idris-mode= goodness, adds frequently used functions under the localleader key. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
#+begin_quote
🔨 /No installation steps have been documented./ [[doom-contrib-module:][Document them?]]
#+end_quote
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
In addition to ~idris-mode~ goodness, adds frequently used functions under the
[[kbd:][<localleader>]] key.
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,148 +1,171 @@
#+TITLE: lang/java # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang java
#+SINCE: v1.3 #+subtitle: The poster child for carpal tunnel syndrome
#+STARTUP: inlineimages #+created: January 16, 2017
#+since: 1.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds [[https://www.java.com][Java]] support to Doom Emacs, including ~android-mode~ and
- [[#module-flags][Module Flags]] ~groovy-mode~.
- [[#prerequisites][Prerequisites]]
- [[#openjdk-11][OpenJDK 11]]
- [[#ubuntu][Ubuntu]]
- [[#fedora][Fedora]]
- [[#oracle-jdk-11][Oracle JDK 11]]
- [[#ubuntu-1][Ubuntu]]
- [[#fedora-1][Fedora]]
- [[#multiple-java-versions][Multiple Java Versions]]
- [[#features][Features]]
- [[#lsp-features][=+lsp= features]]
- [[#meghanada-features][=+meghanada= features]]
- [[#configuration][Configuration]]
- [[#lsp][=+lsp=]]
* Description ** Maintainers
This module adds [[https://www.java.com][java]] support to Doom Emacs, including =android-mode= and /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
=groovy-mode=.
** Module Flags ** Module flags
+ =+lsp= Enables integration for the eclipse.jdt.ls LSP server. - +lsp ::
+ =+meghanada= Enables the [[https://github.com/mopemope/meghanada-emacs/tree/master][meghanada-mode]] Enable LSP support for ~java-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports eclipse.jdt.ls). *Incompatible with [[doom-module:][+meghanada]].*
- +meghanada ::
Enable [[doom-package:][meghanada-mode]]. *Incompatible with [[doom-module:][+lsp]].*
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
The =+lsp= and =+meghanada= packages are mutually exclusive and do not work ** Packages
together. At the time of writing the =+meghanada= is already configured whereas - [[doom-package:][android-mode]]
=+lsp= needs to manual configuring. - [[doom-package:][groovy-mode]]
- [[doom-package:][meghanada]] if [[doom-module:][+meghanada]]
- if [[doom-module:][+eclim]]
- [[doom-package:][eclim]]
- [[doom-package:][company-emacs-eclim]] if [[doom-module:][:completion company]]
- if [[doom-module:][+lsp]] and not [[doom-module:][:tools lsp +eglot]]
- [[doom-package:][lsp-java]]
The =lsp= test runner requires that =:tools (debugger +lsp)= is enabled, as this ** Hacks
provides =dap-mode= which contains the Java test runner. /No hacks documented for this module./
* Prerequisites ** TODO Changelog
This module requires the Java SDK. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- [[https://www.oracle.com/java/technologies/downloads/][Java SDK]]
- The LSP test runner requires [[doom-module:][:tools debugger +lsp]] (requires [[doom-package:][dap-mode]])
** OpenJDK 11 ** OpenJDK 11
*** Ubuntu *** Ubuntu
#+BEGIN_SRC sh #+begin-src sh
sudo apt-get install openjdk-11-jdk-headless apt-get install openjdk-11-jdk-headless
#+END_SRC #+end_src
*** Fedora *** Fedora
#+BEGIN_SRC sh #+begin_src sh
sudo dnf install java-11-openjdk dnf install java-11-openjdk
#+END_SRC #+end_src
** Oracle JDK 11 ** Oracle JDK 11
*** Ubuntu *** Ubuntu
#+BEGIN_SRC sh #+begin_src sh
sudo add-apt-repository ppa:linuxuprising/java add-apt-repository ppa:linuxuprising/java
sudo apt update apt update
sudo apt install oracle-java11-installer apt install oracle-java11-installer
sudo apt install oracle-java11-set-default apt install oracle-java11-set-default
#+END_SRC #+end_src
*** Fedora *** Fedora
#+BEGIN_SRC sh #+begin_src sh
curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz curl -O https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
sudo mv jdk-11.0.2/ /usr/local/ sudo mv jdk-11.0.2/ /usr/local/
#+END_SRC #+end_src
Open =/etc/profile.d/jdk11.sh= as root and add Open =/etc/profile.d/jdk11.sh= as root and add:
#+begin_src sh
#+BEGIN_SRC sh
export JAVA_HOME=/usr/local/jdk-11.0.2 export JAVA_HOME=/usr/local/jdk-11.0.2
export PATH=$PATH:$JAVA_HOME/bin export PATH=$PATH:$JAVA_HOME/bin
#+END_SRC #+end_src
Save the file and source the file Save the file and source it:
#+begin_src sh
#+BEGIN_SRC sh
source /etc/profile.d/jdk11.sh source /etc/profile.d/jdk11.sh
java -version java -version
#+END_SRC #+end_src
** Multiple Java Versions ** Multiple Java Versions
It is common to need support for multiple Java versions. You can use a generic It is common to need support for multiple Java versions. You can use a generic
tool like [[https://github.com/shyiko/jabba][jabba]] to install and manage multiple Java versions on any OS. tool like [[https://github.com/shyiko/jabba][jabba]] to install and manage multiple Java versions on any OS.
To switch between Java versions in Doom, you can use [[https://github.com/direnv/direnv][direnv]] and the [[file:~/.emacs.d/modules/tools/direnv/README.org::+TITLE: tools/direnv][direnv module]]. To set a To have a different version of Java per-project, it is recommended you use
Java version for a particular project, create a =.envrc= pointing to the Java [[https://github.com/direnv/direnv][direnv]] and [[doom-module:][:tools direnv]]; create a =.envrc= in the root of the project pointing
installation in the root of the project: to the Java installation:
#+begin_src sh
#+BEGIN_SRC conf-unix
PATH_add ~/.jabba/jdk/adopt@1.11.0-3 PATH_add ~/.jabba/jdk/adopt@1.11.0-3
JAVA_HOME=~/.jabba/jdk/adopt@1.11.0-3 JAVA_HOME=~/.jabba/jdk/adopt@1.11.0-3
#+END_SRC #+end_src
And then run =direnv allow .= in the project directory. If the =direnv= module And then run ~$ direnv allow .~ in the project directory. The [[doom-module:][:tools direnv]]
is enabled, then Doom will automatically source this environment before module will automatically source this environment before activating LSP servers.
executing the LSP server.
* Features * TODO Usage
** =+lsp= features #+begin_quote
According to [[https://github.com/emacs-lsp/lsp-java]] it adds 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
+ As you type reporting of parsing and compilation errors (via flycheck/[[https://github.com/emacs-lsp/lsp-ui][lsp-ui]]) ** [[doom-module:][+lsp]] features
+ Code completion - using [[https://github.com/tigersoldier/company-lsp][company-lsp]] or builtin complete-at-point According to [[https://github.com/emacs-lsp/lsp-java]], you get:
+ Javadoc hovers - using [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]] - As you type reporting of parsing and compilation errors (via [[doom-package:][flycheck]] or
+ Code actions - using [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]] [[doom-package:][lsp-ui]])
+ Code outline - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html][imenu]] - Code completion ([[doom-package:][company-lsp]] or complete-at-point)
+ Code navigation - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html][xref]] - Javadoc hovers ([[doom-package:][lsp-ui]])
+ Code lens (references/implementations) - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html][xref]] - Code actions ([[doom-package:][lsp-ui]])
+ Highlights - Code outline ([[doom-package:][imenu]])
+ Code formatting - Code navigation ([[doom-package:][xref]])
+ Maven pom.xml project support - Code lens for references/implementations ([[doom-package:][xref]])
+ Limited Gradle support - Highlights
+ Visual debugger - [[https://github.com/yyoncho/dap-mode/][dap-mode]] - Code formatting
+ Test runner - [[https://github.com/yyoncho/dap-mode/][dap-mode]] - Maven pom.xml project support
+ Project explorer integration - [[https://github.com/Alexander-Miller/treemacs][treemacs]] - Limited Gradle support
+ Integration with [[https://start.spring.io/][Spring Initializr]] - Visual debugger ([[doom-package:][dap-mode]])
- Test runner ([[doom-package:][dap-mode]])
- Project explorer integration ([[doom-package:][treemacs]])
- Integration with [[https://start.spring.io/][Spring Initializr]]
** =+meghanada= features ** =+meghanada= features
According to [[https://github.com/mopemope/meghanada-emacs/]] it adds According to [[https://github.com/mopemope/meghanada-emacs/]], you get:
- Auto-update server module
- [[https://gradle.org/][Gradle]] and [[http://maven.apache.org/][Maven]] and Eclipse project support
- No need build tool's plugin
- Run build tool task
- Compile your project
- Syntax check and analyze java source ([[doom-package:][flycheck-meghanada]])
- Support =Generic Types=
- Code completion with [[doom-package:][company-mode]] ([[doom-package:][company-meghanada]])
- Optimize import and sort
- Jump declaration
- Run [[http://www.junit.org/][JUnit]] test (include test runner)
- Diagnostic reporting with [[doom-package:][flycheck]] ([[doom-package:][flycheck-meghanada]])
- Show symbol's type info with [[doom-package:][eldoc]]
- Search references
- Full-featured text search
+ Auto-update server module * TODO Configuration
+ [[https://gradle.org/][Gradle]] and [[http://maven.apache.org/][Maven]] and Eclipse project support #+begin_quote
+ No need build tool's plugin 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
+ Run build tool task #+end_quote
+ Compile your project
+ Syntax check and analyze java source (=flycheck-meghanada=)
+ Support =Generic Types=
+ Code completion with [[http://company-mode.github.io/][company-mode]] (=company-meghanada=)
+ Optimize import and sort
+ Jump declaration
+ Run [[http://www.junit.org/][JUnit]] test (include test runner)
+ Diagnostic reporting with [[http://flycheck.org/][flycheck]] (=flycheck-meghanada=)
+ Show symbol's type info with =el-doc=
+ Search references
+ Full-featured text search
* Configuration ** [[doom-module:][+lsp]]
** =+lsp= Install the eclipse server by executing ~M-x lsp-install-server~ and selecting
Install the eclipse server by executing =M-x lsp-install-server= and selecting
=jdtls=. After that any newly opened =java= files should start the LSP server =jdtls=. After that any newly opened =java= files should start the LSP server
automatically. automatically.
To update the server, perform =SPC u M-x lsp-install-server=. To update the server, perform ~SPC u M-x lsp-install-server~.
Note that if you change Java version you may need to remove the LSP server and Note that if you change Java version you may need to remove the LSP server and
install it again. You can do this with =M-x +lsp/uninstall-server= followed by install it again. You can do this with ~M-x +lsp/uninstall-server~ followed by
=M-x lsp-install-server=. ~M-x lsp-install-server~.
Enable the =:tools (debugger +lsp)= module to get test runner support. Enable the [[doom-module:][:tools debugger +lsp]] module to get test runner support.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,146 +1,162 @@
#+TITLE: lang/javascript # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang javascript
#+SINCE: v2.0 #+subtitle: all(hope(abandon(ye(who(enter(here))))))
#+STARTUP: inlineimages #+created: January 16, 2017
#+since: 1.3
* Table of Contents :TOC: * Description :unfold:
- [[#description][Description]] This module adds [[https://www.javascript.com/][JavaScript]] and [[https://www.typescriptlang.org/][TypeScript]] support to Doom Emacs.
- [[#module-flags][Module Flags]]
- [[#packages][Packages]]
- [[#prerequisites][Prerequisites]]
- [[#macos][MacOS]]
- [[#arch-linux][Arch Linux]]
- [[#opensuse][openSUSE]]
- [[#troubleshooting][Troubleshooting]]
- [[#tide-sort-completions-by-kind-isnt-respected][~tide-sort-completions-by-kind~ isn't respected]]
- [[#appendix][Appendix]]
- [[#commands][Commands]]
* Description - Code completion ([[doom-package:][tide]])
This module adds JavaScript and TypeScript support. - 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]])
+ Code completion (tide) ** Maintainers
+ REPL support (nodejs-repl) - [[doom-user:][@hlissner]]
+ Refactoring commands (js2-refactor)
+ Syntax checking (flycheck)
+ Browser code injection with skewer-mode
+ Coffeescript & JSX support
+ Jump-to-definitions and references support (xref)
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+lsp= Enables LangServer support for this module. You must have =:tools lsp=
enabled for this to work, as well as the langserver (e.g. ** Module flags
typescript-language-server) installed on your system. - +lsp ::
Enable LSP support for ~js2-mode~, ~rjsx-mode~, JS in ~web-mode~, and
~typescript-mode~. Requires [[doom-module:][:tools lsp]] and a langserver (supports ts-ls and
deno-ls).
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
** Packages ** Packages
+ [[https://github.com/defunkt/coffee-mode][coffee-mode]] - [[doom-package:][js2-refactor]]
+ [[https://github.com/mooz/js2-mode][js2-mode]] - [[doom-package:][nodejs-repl]]
+ [[https://github.com/felipeochoa/rjsx-mode][rjsx-mode]] - [[doom-package:][npm-mode]]
+ [[https://github.com/emacs-typescript/typescript.el][typescript-mode]] - [[doom-package:][rjsx-mode]]
+ [[https://github.com/magnars/js2-refactor.el][js2-refactor]] - [[doom-package:][skewer-mode]] (DEPRECATED)
+ [[https://github.com/mojochao/npm-mode][npm-mode]] - [[doom-package:][tide]]
+ [[https://github.com/abicky/nodejs-repl.el][nodejs-repl]] - [[doom-package:][typescript-mode]]
+ [[https://github.com/skeeto/skewer-mode][skewer-mode]] - [[doom-package:][xref-js2]] if [[doom-module:][:tools lookup]]
+ [[https://github.com/ananthakumaran/tide][tide]]
+ [[https://github.com/NicolasPetton/xref-js2][xref-js2]]*
* Prerequisites ** TODO Hacks
Many of this modules' plugins require ~node~ and either ~npm~ or ~yarn~ #+begin_quote
installed. 🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** MacOS ** TODO Changelog
#+BEGIN_SRC sh :tangle (if (doom-system-os 'macos) "yes") # This section will be machine generated. Don't edit it by hand.
brew install node /This module does not have a changelog yet./
#+END_SRC
** Arch Linux * Installation
#+BEGIN_SRC sh :dir /sudo:: :tangle (if (doom-system-os 'arch) "yes") [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
sudo pacman --needed --noconfirm -S nodejs npm
#+END_SRC
** openSUSE This module requires [[https://nodejs.org/en/][NodeJS]] and one of [[https://www.npmjs.com/][NPM]] or [[https://yarnpkg.com/][Yarn]] in your =$PATH=.
#+BEGIN_SRC sh :dir /sudo::
sudo zypper install nodejs npm
#+END_SRC
* Troubleshooting - MacOS: ~$ brew install node~
** ~tide-sort-completions-by-kind~ isn't respected - Arch Linux: ~$ pacman --needed --noconfirm -S nodejs npm~
The =:completion company= module uses =company-prescient= to sort completion by - openSUSE: ~$ zypper install nodejs npm~
[[https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Places/Frecency_algorithm][frecency]], which overrules specialized sorting provided by some company backends
(like ~company-tide~). * TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
~rjsx-mode~ is used for all javascript buffers.
* Appendix
** Commands ** Commands
*** JS2-mode *** rjsx-mode
| command | key / ex command | description | | command | key / ex command | description |
|----------------------------------+------------------+------------------------------------------------------------| |----------------------------------+------------------+------------------------------------------------------------|
| ~+javascript/open-repl~ | =:repl= | Open the NodeJS REPL (or send the current selection to it) | | ~+javascript/open-repl~ | ~:repl~ | Open the NodeJS REPL (or send the current selection to it) |
| ~+javascript/skewer-this-buffer~ | =SPC m S= | Attaches a browser to the current buffer | | ~+javascript/skewer-this-buffer~ | [[kbd:][<localleader> S]] | Attaches a browser to the current buffer |
*** Tide *** Tide
| command | key / ex command | description | | command | key / ex command | description |
|-------------------------+------------------+------------------------| |-------------------------+---------------------+------------------------|
| ~tide-restart-server~ | =SPC m R= | Restart tide server | | ~tide-restart-server~ | [[kbd:][<localleader> R]] | Restart tide server |
| ~tide-reformat~ | =SPC m f= | Reformat region | | ~tide-reformat~ | [[kbd:][<localleader> f]] | Reformat region |
| ~tide-rename-symbol~ | =SPC m r r s= | Rename symbol at point | | ~tide-rename-symbol~ | [[kbd:][<localleader> r r s]] | Rename symbol at point |
| ~tide-organize-imports~ | =SPC m r o i= | Organize imports | | ~tide-organize-imports~ | [[kbd:][<localleader> r o i]] | Organize imports |
*** Refactoring (js2-refactor-mode) *** Refactoring (js2-refactor-mode)
| command | key / ex command | description | | command | key / ex command | description |
|---------------------------------------------------+------------------+--------------------------------------------------------------------------------------------------------------------| |---------------------------------------------------+---------------------+--------------------------------------------------------------------------------------------------------------------|
| ~js2r-expand-node-at-point~ | =SPC m r e e= | Expand bracketed list according to node type at point | | ~js2r-expand-node-at-point~ | [[kbd:][<localleader> r e e]] | Expand bracketed list according to node type at point |
| ~js2r-contract-node-at-point~ | =SPC m r c c= | Contract bracketed list according to node type at point | | ~js2r-contract-node-at-point~ | [[kbd:][<localleader> r c c]] | Contract bracketed list according to node type at point |
| ~js2r-extract-function~ | =SPC m r e f= | Extracts the marked expressions out into a new named function. | | ~js2r-extract-function~ | [[kbd:][<localleader> r e f]] | Extracts the marked expressions out into a new named function. |
| ~js2r-extract-method~ | =SPC m r e m= | Extracts the marked expressions out into a new named method in an object literal. | | ~js2r-extract-method~ | [[kbd:][<localleader> r e m]] | Extracts the marked expressions out into a new named method in an object literal. |
| ~js2r-toggle-function-expression-and-declaration~ | =SPC m r t f= | Toggle between function name() {} and var name = function (); | | ~js2r-toggle-function-expression-and-declaration~ | [[kbd:][<localleader> r t f]] | Toggle between function name() {} and var name = function (); |
| ~js2r-toggle-arrow-function-and-expression~ | =SPC m r t a= | Toggle between function expression to arrow function. | | ~js2r-toggle-arrow-function-and-expression~ | [[kbd:][<localleader> r t a]] | Toggle between function expression to arrow function. |
| ~js2r-toggle-function-async~ | =SPC m r t s= | Toggle between an async and a regular function. | | ~js2r-toggle-function-async~ | [[kbd:][<localleader> r t s]] | Toggle between an async and a regular function. |
| ~js2r-introduce-parameter~ | =SPC m r i p= | Changes the marked expression to a parameter in a local function. | | ~js2r-introduce-parameter~ | [[kbd:][<localleader> r i p]] | Changes the marked expression to a parameter in a local function. |
| ~js2r-localize-parameter~ | =SPC m r l p= | Changes a parameter to a local var in a local function. | | ~js2r-localize-parameter~ | [[kbd:][<localleader> r l p]] | Changes a parameter to a local var in a local function. |
| ~js2r-wrap-buffer-in-iife~ | =SPC m r w i= | Wraps the entire buffer in an immediately invoked function expression | | ~js2r-wrap-buffer-in-iife~ | [[kbd:][<localleader> r w i]] | Wraps the entire buffer in an immediately invoked function expression |
| ~js2r-inject-global-in-iife~ | =SPC m r i g= | Creates a shortcut for a marked global by injecting it in the wrapping immediately invoked function expression | | ~js2r-inject-global-in-iife~ | [[kbd:][<localleader> r i g]] | Creates a shortcut for a marked global by injecting it in the wrapping immediately invoked function expression |
| ~js2r-add-to-globals-annotation~ | =SPC m r a g= | Creates a /*global */ annotation if it is missing, and adds the var at point to it. | | ~js2r-add-to-globals-annotation~ | [[kbd:][<localleader> r a g]] | Creates a /*global */ annotation if it is missing, and adds the var at point to it. |
| ~js2r-extract-var~ | =SPC m r e v= | Takes a marked expression and replaces it with a var. | | ~js2r-extract-var~ | [[kbd:][<localleader> r e v]] | Takes a marked expression and replaces it with a var. |
| ~js2r-extract-let~ | =SPC m r e l= | Similar to extract-var but uses a let-statement. | | ~js2r-extract-let~ | [[kbd:][<localleader> r e l]] | Similar to extract-var but uses a let-statement. |
| ~js2r-extract-const~ | =SPC m r e c= | Similar to extract-var but uses a const-statement. | | ~js2r-extract-const~ | [[kbd:][<localleader> r e c]] | Similar to extract-var but uses a const-statement. |
| ~js2r-inline-var~ | =SPC m r i v= | Replaces all instances of a variable with its initial value. | | ~js2r-inline-var~ | [[kbd:][<localleader> r i v]] | Replaces all instances of a variable with its initial value. |
| ~js2r-rename-var~ | =SPC m r r v= | Renames the variable on point and all occurrences in its lexical scope. | | ~js2r-rename-var~ | [[kbd:][<localleader> r r v]] | Renames the variable on point and all occurrences in its lexical scope. |
| ~js2r-var-to-this~ | =SPC m r v t= | Changes local var a to be this.a instead. | | ~js2r-var-to-this~ | [[kbd:][<localleader> r v t]] | Changes local var a to be this.a instead. |
| ~js2r-arguments-to-object~ | =SPC m r a o= | Replaces arguments to a function call with an object literal of named arguments. | | ~js2r-arguments-to-object~ | [[kbd:][<localleader> r a o]] | Replaces arguments to a function call with an object literal of named arguments. |
| ~js2r-ternary-to-if~ | =SPC m r 3 i= | Converts ternary operator to if-statement. | | ~js2r-ternary-to-if~ | [[kbd:][<localleader> r 3 i]] | Converts ternary operator to if-statement. |
| ~js2r-split-var-declaration~ | =SPC m r s v= | Splits a var with multiple vars declared, into several var statements. | | ~js2r-split-var-declaration~ | [[kbd:][<localleader> r s v]] | Splits a var with multiple vars declared, into several var statements. |
| ~js2r-split-string~ | =SPC m r s s= | Splits a string. | | ~js2r-split-string~ | [[kbd:][<localleader> r s s]] | Splits a string. |
| ~js2r-string-to-template~ | =SPC m r s t= | Converts a string into a template string. | | ~js2r-string-to-template~ | [[kbd:][<localleader> r s t]] | Converts a string into a template string. |
| ~js2r-unwrap~ | =SPC m r u w= | Replaces the parent statement with the selected region. | | ~js2r-unwrap~ | [[kbd:][<localleader> r u w]] | Replaces the parent statement with the selected region. |
| ~js2r-log-this~ | =SPC m r l t= | Adds a console.log() statement for what is at point (or region). With a prefix argument, use JSON pretty-printing. | | ~js2r-log-this~ | [[kbd:][<localleader> r l t]] | Adds a console.log() statement for what is at point (or region). With a prefix argument, use JSON pretty-printing. |
| ~js2r-debug-this~ | =SPC m r d t= | Adds a debug() statement for what is at point (or region). | | ~js2r-debug-this~ | [[kbd:][<localleader> r d t]] | Adds a debug() statement for what is at point (or region). |
| ~js2r-forward-slurp~ | =SPC m r s l= | Moves the next statement into current function, if-statement, for-loop or while-loop. | | ~js2r-forward-slurp~ | [[kbd:][<localleader> r s l]] | Moves the next statement into current function, if-statement, for-loop or while-loop. |
| ~js2r-forward-barf~ | =SPC m r b a= | Moves the last child out of current function, if-statement, for-loop or while-loop. | | ~js2r-forward-barf~ | [[kbd:][<localleader> r b a]] | Moves the last child out of current function, if-statement, for-loop or while-loop. |
| ~js2r-kill~ | =SPC m r k= | Kills to the end of the line, but does not cross semantic boundaries. | | ~js2r-kill~ | [[kbd:][<localleader> r k]] | Kills to the end of the line, but does not cross semantic boundaries. |
*** skewer-mode *** skewer-mode
**** general **** general
| command | key / ex command | description | | command | key / ex command | description |
|-------------------------------+------------------+---------------------------------------| |-------------------------------+-------------------+---------------------------------------|
| ~skewer-eval-last-expression~ | =SPC m s E= | Evaluate last expression | | ~skewer-eval-last-expression~ | [[kbd:][<localleader> s E]] | Evaluate last expression |
| ~skewer-eval-defun~ | =SPC m s e= | Evaluate function definition at point | | ~skewer-eval-defun~ | [[kbd:][<localleader> s e]] | Evaluate function definition at point |
| ~skewer-load-buffer~ | =SPC m s f= | Load buffer into REPL | | ~skewer-load-buffer~ | [[kbd:][<localleader> s f]] | Load buffer into REPL |
**** css **** css
| command | key / ex command | description | | command | key / ex command | description |
|---------------------------------------+------------------+-------------------------------| |---------------------------------------+-------------------+-------------------------------|
| ~skewer-css-eval-current-declaration~ | =SPC m s e= | Evaluate declaration at point | | ~skewer-css-eval-current-declaration~ | [[kbd:][<localleader> s e]] | Evaluate declaration at point |
| ~skewer-css-eval-current-rule~ | =SPC m s r= | Evaluate rule at point | | ~skewer-css-eval-current-rule~ | [[kbd:][<localleader> s r]] | Evaluate rule at point |
| ~skewer-css-eval-buffer~ | =SPC m s b= | Evaluate buffer | | ~skewer-css-eval-buffer~ | [[kbd:][<localleader> s b]] | Evaluate buffer |
| ~skewer-css-clear-all~ | =SPC m s c= | Clear all rules | | ~skewer-css-clear-all~ | [[kbd:][<localleader> s c]] | Clear all rules |
**** html **** html
| command | key / ex command | description | | command | key / ex command | description |
|------------------------+------------------+-----------------------| |------------------------+-------------------+-----------------------|
| ~skewer-html-eval-tag~ | =SPC m s e= | Evaluate tag at point | | ~skewer-html-eval-tag~ | [[kbd:][<localleader> s e]] | Evaluate tag at point |
*** npm-mode *** npm-mode
| command | key / ex command | description | | command | key / ex command | description |
|---------------------------------+------------------+------------------------------------------------------------------| |---------------------------------+-------------------+------------------------------------------------------------------|
| ~npm-mode-npm-init~ | =SPC m n n= | Initialize npm project | | ~npm-mode-npm-init~ | [[kbd:][<localleader> n n]] | Initialize npm project |
| ~npm-mode-npm-install~ | =SPC m n i= | Install npm package | | ~npm-mode-npm-install~ | [[kbd:][<localleader> n i]] | Install npm package |
| ~npm-mode-npm-install-save~ | =SPC m n s= | Install npm package and save to package.json | | ~npm-mode-npm-install-save~ | [[kbd:][<localleader> n s]] | Install npm package and save to package.json |
| ~npm-mode-npm-install-save-dev~ | =SPC m n d= | Install npm package and save to package.json as a dev dependency | | ~npm-mode-npm-install-save-dev~ | [[kbd:][<localleader> n d]] | Install npm package and save to package.json as a dev dependency |
| ~npm-mode-npm-uninstall~ | =SPC m n u= | Uninstall npm package | | ~npm-mode-npm-uninstall~ | [[kbd:][<localleader> n u]] | Uninstall npm package |
| ~npm-mode-npm-list~ | =SPC m n l= | List npm packages | | ~npm-mode-npm-list~ | [[kbd:][<localleader> n l]] | List npm packages |
| ~npm-mode-npm-run~ | =SPC m n r= | Run npm task | | ~npm-mode-npm-run~ | [[kbd:][<localleader> n r]] | Run npm task |
| ~npm-mode-visit-project-file~ | =SPC m n v= | Find file in npm project | | ~npm-mode-visit-project-file~ | [[kbd:][<localleader> n v]] | Find file in npm project |
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,40 +1,57 @@
#+TITLE: lang/json # -*- mode: doom-docs-org -*-
#+DATE: April 23, 2020 #+title: :lang json
#+SINCE: v3.0.0 #+subtitle: At least it ain't XML
#+STARTUP: inlineimages nofold #+created: April 23, 2020
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds [[https://www.json.org/json-en.html][JSON]] support to Doom Emacs.
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description
This module provides JSON support.
** Maintainers ** Maintainers
This module has no dedicated maintainers. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+lsp= Enable integration with LSP servers, if one is available. Requires the - +lsp ::
=:tools lsp= module to be enabled. Enable LSP support for ~json-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/vscode-langservers/vscode-json-languageserver][vscode-json-languageserver]]).
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
** Plugins ** Packages
+ [[https://github.com/joshwnj/json-mode][json-mode]] - [[doom-package:][counsel-jq]] if [[doom-module:][:completion ivy]]
+ [[https://github.com/Sterlingg/json-snatcher][json-snatcher]] - [[doom-package:][json-mode]]
- [[doom-package:][json-snatcher]]
* Prerequisites ** Hacks
This module has no prerequisites. /No hacks documented for this module./
* TODO Features ** TODO Changelog
# An in-depth list of features, how to use them, and their dependencies. # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
/This module has no external requirements./
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration * TODO Configuration
# How to configure this module, including common problems and how to address them. #+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Troubleshooting * Troubleshooting
# Common issues and their solution, or places to look for help. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,109 +1,131 @@
#+TITLE: lang/julia # -*- mode: doom-docs-org -*-
#+DATE: April 8, 2020 #+title: :lang julia
#+SINCE: v1.3 #+subtitle: A better, faster MATLAB
#+STARTUP: inlineimages nofold #+created: April 08, 2020
#+since: 1.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#language-server][Language Server]]
- [[#lsp-julia][~lsp-julia~]]
- [[#eglot-jl][~eglot-jl~]]
- [[#features][Features]]
- [[#language-server-1][Language Server]]
- [[#configuration][Configuration]]
- [[#change-the-default-environment-for-the-julia-language-server][Change the default environment for the Julia language server]]
* Description
This module adds support for [[https://julialang.org/][the Julia language]] to Doom Emacs. This module adds support for [[https://julialang.org/][the Julia language]] to Doom Emacs.
+ Syntax highlighting and latex symbols from ~julia-mode~ - Syntax highlighting and latex symbols from [[doom-package:][julia-mode]]
+ REPL integration from ~julia-repl~ - REPL integration from [[doom-package:][julia-repl]]
+ Code completion and syntax checking, requires ~:tools lsp~ and ~+lsp~ - Code completion and syntax checking, requires [[doom-module:][:tools lsp]] and [[doom-module:][+lsp]]
** Module Flags ** Maintainers
+ =+lsp= Enable LSP server support. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Plugins ** Module flags
+ [[https://github.com/JuliaEditorSupport/julia-emacs/][julia-mode]] - +lsp ::
+ [[https://github.com/tpapp/julia-repl][julia-repl]] Enable LSP support for ~julia-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
+ =+lsp= and =:tools lsp= (supports LanguageServer.jl).
+ [[https://github.com/non-jedi/lsp-julia][lsp-julia]] - +tree-sitter ::
+ [[https://github.com/emacs-lsp/lsp-mode][lsp]] Leverages tree-sitter for better syntax highlighting and structural text
+ =+lsp= and =:tools lsp +eglot= editing. Requires [[doom-module:][:tools tree-sitter]].
+ [[https://github.com/non-jedi/eglot-jl][eglot-jl]]
+ [[https://github.com/joaotavora/eglot][eglot]]
* Prerequisites ** Packages
This module requires =julia= and an language server if =+lsp= is enabled. - [[doom-package:][julia-mode]]
- [[doom-package:][julia-repl]]
- if [[doom-package:][+lsp]]
- if [[doom-module:][:tools lsp]]
- [[doom-package:][lsp-julia]]
- [[doom-package:][lsp]]
- if [[doom-module:][:tools lsp +eglot]]
- [[doom-package:][eglot-jl]]
- [[doom-package:][eglot]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires [[https://julialang.org/][Julia]] and an language server if [[doom-module:][+lsp]] is enabled.
** Language Server ** Language Server
~+lsp~ requires ~LanguageServer.jl~ and ~SymbolServer.jl~. The =lsp-julia= and [[doom-module:][+lsp]] requires ~LanguageServer.jl~ and ~SymbolServer.jl~. The [[doom-package:][lsp-julia]] and
=eglot-jl= packages both come bundled with their own versions of these servers, [[doom-package:][eglot-jl]] packages both come bundled with their own versions of these servers,
which is used by default. If you're happy with that, no further configuration is which is used by default. If you're happy with that, no further configuration is
necessary. necessary.
However, to use your own installation you will need to install then configure However, to use your own installation you will need to install then configure
them. To install them, execute these commands in a Julia REPL: them. To install them, execute these commands in a Julia REPL:
#+begin_src julia
#+BEGIN_SRC julia
using Pkg using Pkg
Pkg.add("LanguageServer") Pkg.add("LanguageServer")
Pkg.add("SymbolServer") Pkg.add("SymbolServer")
#+END_SRC #+end_src
Then configure =lsp-julia= or =eglot-jl= depending on whether you have enabled Then configure [[doom-package:][lsp-julia]] or [[doom-package:][eglot-jl]] depending on whether you have enabled
=:tools lsp= or =:tools (lsp +eglot)=, respectively: [[doom-module:][:tools lsp]] or [[doom-module:][:tools lsp +eglot]], respectively:
*** ~lsp-julia~ *** =lsp-julia=
To instruct =lsp-julia= not to use the built-in package: To instruct [[doom-package:][lsp-julia]] not to use the built-in package:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp ;; in $DOOMDIR/config.el
;; ~/.doom.d/config.el
(setq lsp-julia-package-dir nil) (setq lsp-julia-package-dir nil)
#+END_SRC #+end_src
To find your installation of ~LanguageServer.jl~, ~eglot-jl~ needs to know the To find your installation of ~LanguageServer.jl~, [[doom-package:][lsp-julia]] needs to know the
environment in which it is installed. This is set to v1.0 by default as it is environment in which it is installed. This is set to v1.6 by default as it is
the current LTS: the current LTS:
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(after! lsp-julia
(setq lsp-julia-default-environment "~/.julia/environments/v1.6"))
#+end_src
#+BEGIN_SRC elisp *** =eglot-jl=
(setq lsp-julia-default-environment "~/.julia/environments/v1.0") To find your installation of ~LanguageServer.jl~, [[doom-package:][eglot-jl]] must know the
#+END_SRC environment in which it is installed. This is set to v1.6 by default as it is
*** ~eglot-jl~
To find your installation of ~LanguageServer.jl~, ~eglot-jl~ must know the
environment in which it is installed. This is set to v1.0 by default as it is
the current LTS: the current LTS:
#+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(setq eglot-jl-language-server-project "~/.julia/environments/v1.6")
#+end_src
#+BEGIN_SRC elisp But to let [[doom-package:][eglot-jl]] use the environment bundled with it, set it to
;; ~/.doom.d/config.el
(setq eglot-jl-language-server-project "~/.julia/environments/v1.0")
#+END_SRC
But to let ~eglot-jl~ use the environment bundled with it, set it to
~eglot-jl-base~ instead: ~eglot-jl-base~ instead:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp ;; in $DOOMDIR/config.el
;; ~/.doom.d/config.el
(after! eglot-jl (after! eglot-jl
(setq eglot-jl-language-server-project eglot-jl-base)) (setq eglot-jl-language-server-project eglot-jl-base))
#+END_SRC #+end_src
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features
** Language Server ** Language Server
~+lsp~ adds code completion, syntax checking, formatting and other ~lsp-mode~ or [[doom-module:][+lsp]] adds code completion, syntax checking, formatting and other [[doom-package:][lsp-mode]] or
~eglot~ features. It requires ~LanguageServer.jl~, the installation of which is [[doom-package:][eglot]] features. It requires ~LanguageServer.jl~, the installation of which is
described above. described above.
* Configuration * TODO Configuration
** Change the default environment for the Julia language server #+begin_quote
~lsp-julia~ requires a variable be set for the Julia environment. This is set to 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
v1.0 by default as it is the current LTS. #+end_quote
#+BEGIN_SRC elisp ** Change the default environment for the Julia language server
;; ~/.doom.d/config.el [[doom-package:][lsp-julia]] requires a variable be set for the Julia environment. This is set to
(setq lsp-julia-default-environment "~/.julia/environments/v1.0") v1.6 by default as it is the current LTS:
#+END_SRC #+begin_src emacs-lisp
;; in $DOOMDIR/config.el
(after! lsp-julia
(setq lsp-julia-default-environment "~/.julia/environments/v1.6"))
#+end_src
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,36 +1,55 @@
#+TITLE: lang/kotlin # -*- mode: doom-docs-org -*-
#+DATE: March 28, 2019 #+title: :lang kotlin
#+SINCE: v3.0.0 #+subtitle: A Java(Script) that won't depress you
#+STARTUP: inlineimages #+created: March 28, 2019
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds [[https://kotlinlang.org/][Kotlin]] support to Doom Emacs.
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description ** Maintainers
This module adds Kotlin support to Emacs. *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
** Module Flags ** Module flags
+ =+lsp= Enables integration with [[https://github.com/emacs-lsp/lsp-mode][kotlin-language-server]]. This requires the - +lsp ::
=:tools lsp= module. Enable LSP support for ~kotlin-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports [[https://github.com/emacs-lsp/lsp-mode][kotlin-language-server]]).
** Plugins ** Packages
+ kotlin-mode - [[doom-package:][flycheck-kotlin]] if [[doom-module:][:checkers syntax]]
+ flycheck-kotlin - [[doom-package:][kotlin-mode]]
* Prerequisites ** Hacks
TODO /No hacks documented for this module./
* Features ** TODO Changelog
TODO # This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Configuration * TODO Installation
TODO [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
#+begin_quote
🔨 /This module's prerequisites are not documented./ [[doom-contrib-module:][Document them?]]
#+end_quote
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
TODO /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,98 +1,112 @@
#+TITLE: lang/latex # -*- mode: doom-docs-org -*-
#+DATE: January 16, 2017 #+title: :lang latex
#+SINCE: v1.3 #+subtitle: Writing papers in Emacs has never been so fun
#+STARTUP: inlineimages #+created: January 16, 2017
#+since: 1.3
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#ubuntu][Ubuntu]]
- [[#arch-linux][Arch Linux]]
- [[#macos][macOS]]
- [[#nixos][NixOS]]
- [[#features][Features]]
- [[#customization][Customization]]
- [[#specifying-the-location-of-a-bibtex-file--corresponding-pdfs][Specifying the location of a bibtex file & corresponding PDFs]]
- [[#changing-the-pdfs-viewer][Changing the PDFs viewer]]
- [[#using-cdlatexs-snippets-despite-having-yasnippet][Using cdlatex's snippets despite having yasnippet]]
* Description
Provide a helping hand when working with LaTeX documents. Provide a helping hand when working with LaTeX documents.
+ Sane defaults - Sane defaults
+ Fontification of many popular commands - Fontification of many popular commands
+ Pretty indentation of wrapped lines using the ~adaptive-wrap~ package - Pretty indentation of wrapped lines using the [[doom-package:][adaptive-wrap]] package
+ Spell checking with ~flycheck~ - Spell checking with [[doom-package:][flycheck]]
+ Change PDF viewer to Okular or ~latex-preview-pane~ - Change PDF viewer to Okular or [[doom-package:][latex-preview-pane]]
+ Bibtex editor - Bibtex editor
+ Autocompletion using ~company-mode~ - Autocompletion using [[doom-package:][company-mode]]
+ Compile your .tex code only once using LatexMk - Compile your =.tex= code only once using LatexMk
** Module Flags ** Maintainers
+ =+latexmk= Use LatexMk instead of LaTeX to compile documents. - [[doom-user:][@tecosaur]]
+ =+cdlatex= Enable [[https://github.com/cdominik/cdlatex][cdlatex]] for fast math insertion. - [[doom-user:][@ymarco]]
+ =+lsp= Start LSP automatically in `tex-mode-hook`. This requires the =:tools
lsp= module. Supported servers are `digestif` and `TexLab`.
+ =+fold= Use TeX-fold (from auctex) to fold LaTeX macros to unicode, and make
folding hook-based and less manual.
** Plugins [[doom-contrib-maintainer:][Become a maintainer?]]
+ [[http://www.gnu.org/software/auctex/][auctex]]
+ [[http://elpa.gnu.org/packages/adaptive-wrap.html][adaptive-wrap]]
+ [[https://github.com/iyefrat/evil-tex][evil-tex]] (when =:editor evil +everywhere=)
+ [[https://github.com/jsinglet/latex-preview-pane][latex-preview-pane]]
+ [[https://github.com/tom-tan/auctex-latexmk][auctex-latexmk]]*
+ [[https://github.com/alexeyr/company-auctex][company-auctex]]*
+ [[https://github.com/TheBB/company-reftex][company-reftex]]*
+ [[https://github.com/vspinu/company-math][company-math]]*
+ [[https://github.com/cdominik/cdlatex][cdlatex]] (=+cdlatex=)
* Prerequisites ** Module flags
You will need ghostscript and a latex compiler. All this is provided by - +cdlatex ::
the =texlive= bundle, available through many OS package managers. Enable [[doom-package:][cdlatex]] for fast math insertion.
- +fold ::
Use TeX-fold (from [[doom-package:][auctex]]) to fold LaTeX macros to unicode, and make folding
hook-based and less manual.
- +latexmk ::
Use LatexMk instead of LaTeX to compile documents.
- +lsp ::
Enable LSP support in latex buffers. Requires [[doom-module:][:tools lsp]] and a langserver
(supports digestif and TexLab).
** Packages
- [[doom-package:][adaptive-wrap]]
- [[doom-package:][auctex]]
- [[doom-package:][auctex-latexmk]] if [[doom-module:][+latexmk]]
- [[doom-package:][cdlatex]] if [[doom-module:][+cdlatex]]
- [[doom-package:][evil-tex]] if [[doom-module:][:editor evil +everywhere]]
- [[doom-package:][latex-preview-pane]]
- if [[doom-module:][:completion company]]
- [[doom-package:][company-auctex]]
- [[doom-package:][company-math]]
- [[doom-package:][company-reftex]]
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires ghostscript and a latex compiler. These are provided by the
=texlive= bundle, available through many OS package managers.
#+begin_quote
🚧 Ghostscript <= 9.27 is [[/auctex/manual/preview-latex/No-images-are-displayed-with-gs-9_002e27-and-earlier.html][reportedly buggy]] and doesn't work with auctex's math
previews. (You can check you ghostscript version with ~$ gs --version~.)
Most package managers already have newer versions, but if not you might have
to build gs from source.
#+end_quote
Ghostscript <= 9.27 is [[https://www.gnu.org/software/auctex/manual/preview-latex/No-images-are-displayed-with-gs-9_002e27-and-earlier.html][reported buggy]] and doesn't work with auctex's math
previews. (You can check you ghostscript version with ~gs --version~.) Most
package managers already have newer versions, but if not you might have to build
gs from source.
** Ubuntu ** Ubuntu
#+BEGIN_SRC sh #+begin_src sh
apt-get install texlive apt-get install texlive
#+END_SRC #+end_src
** Arch Linux ** Arch Linux
#+BEGIN_SRC sh #+begin_src sh
pacman -S texlive-core pacman -S texlive-core
#+END_SRC #+end_src
** TODO macOS ** TODO macOS
#+BEGIN_SRC sh #+begin_src sh
brew install --cask basictex brew install --cask basictex
# If the above doesn't work, then # If the above doesn't work, then
brew install --cask mactex # WARNING: large 4gb download! brew install --cask mactex # WARNING: large 4gb download!
#+END_SRC #+end_src
#+begin_quote #+begin_quote
This has not been verified. 🔨 This has not been verified.
#+end_quote #+end_quote
** NixOS ** NixOS
#+BEGIN_SRC nix #+begin_src nix
environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ]; environment.systemPackages = [ pkgs.texlive.combined.scheme-medium ];
#+END_SRC #+end_src
* TODO Features * TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Customization * Configuration
** Specifying the location of a bibtex file & corresponding PDFs ** Specifying the location of a bibtex file & corresponding PDFs
Reftex has a variable that allow you to Reftex has a variable that allow you to specify where it should find your
specify where it should find your bibliography file(s): bibliography file(s):
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp ;; in $DOOMDIR/config.el
(setq reftex-default-bibliography "/your/bib/file.bib") (setq reftex-default-bibliography "/your/bib/file.bib")
#+END_SRC #+end_src
** Changing the PDFs viewer ** Changing the PDFs viewer
This module provides integration for four supported pdf viewers. They are This module provides integration for four supported pdf viewers. They are
@ -102,30 +116,41 @@ This module provides integration for four supported pdf viewers. They are
+ Sumatra PDF + Sumatra PDF
+ Zathura + Zathura
+ Okular + Okular
+ pdf-tools (requires =:tools pdf= module) + pdf-tools (requires [[doom-module:][:tools pdf]] module)
They are searched for in this order. See ~+latex-viewers~ to change the order, They are searched for in this order. See ~+latex-viewers~ to change the order,
or remove tools from the search altogether. If you want to exclusively use one or remove tools from the search altogether. If you want to exclusively use one
tool, for instance: tool, for instance:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp ;; in $DOOMDIR/config.el
(setq +latex-viewers '(zathura)) (setq +latex-viewers '(zathura))
#+END_SRC #+end_src
If none of these tools are found, ~latex-preview-pane~ (uses ~DocView~ in Emacs) If none of these tools are found, ~latex-preview-pane~ (uses ~DocView~ in Emacs)
is used as a fallback. You can use this exclusively by setting ~+latex-viewers~ is used as a fallback. You can use this exclusively by setting ~+latex-viewers~
to ~nil~. to ~nil~.
** Using cdlatex's snippets despite having yasnippet ** Using cdlatex's snippets despite having yasnippet
cdlatex has a snippet insertion capability which is disabled in favor of [[doom-package:][cdlatex]] has a snippet insertion capability which is disabled in favor of
yasnippet when using ~:editor snippets~. If you still wanna use it, simply rebind [[doom-package:][yasnippet]] when using [[doom-module:][:editor snippets]]. If you still wanna use it, simply rebind
the ~TAB~ key for cdlatex, which takes care of snippet-related stuff: the [[kbd:][TAB]] key for cdlatex, which takes care of snippet-related stuff:
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp ;; in $DOOMDIR/config.el
(map! :map cdlatex-mode-map (map! :map cdlatex-mode-map
:i "TAB" #'cdlatex-tab) :i "TAB" #'cdlatex-tab)
#+END_SRC #+end_src
This would favor yasnippet's expansion and cursor movement over cdlatex's This would favor yasnippet's expansion and cursor movement over cdlatex's
expansion and movement, but that shouldn't matter if you're not using yasnippet expansion and movement, but that shouldn't matter if you're not using yasnippet
in latex buffers. in latex buffers.
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -0,0 +1,55 @@
# -*- mode: doom-docs-org -*-
#+title: :lang lean
#+subtitle: For folks with too much to prove
#+created: September 10, 2019
#+since: 21.12.0 (#1759)
* Description :unfold:
This module adds support for the [[https://leanprover.github.io/about/][Lean programming language]] to Doom Emacs.
** Maintainers
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
/This module has no flags./
** Packages
- [[doom-package:][lean-mode]]
- [[doom-package:][company-lean]] if [[doom-module:][:completion company]]
** TODO Hacks
#+begin_quote
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
#+end_quote
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
#+begin_quote
🔨 /This module's prerequisites are not documented./ [[doom-contrib-module:][Document them?]]
#+end_quote
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,56 +1,74 @@
#+TITLE: lang/ledger # -*- mode: doom-docs-org -*-
#+DATE: October 13, 2019 #+title: :lang ledger
#+SINCE: v2.0.4 #+subtitle: Be audit you can be
#+STARTUP: inlineimages #+created: September 09, 2017
#+since: 2.0.6 (#194)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
* Description
This module adds support for [[https://www.ledger-cli.org/][ledger]] files. Ledger is a command line double-entry 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 accounting system that works with simple text files holding transactions in the
following format: following format:
#+begin_src ledger
#+BEGIN_SRC ledger
2015/10/12 Exxon 2015/10/12 Exxon
Expenses:Auto:Gas $10.00 Expenses:Auto:Gas $10.00
Liabilities:MasterCard $-10.00 Liabilities:MasterCard $-10.00
#+END_SRC #+end_src
This modules enables the following features: This modules enables the following features:
+ Syntax and indentation support for ledger files - Syntax and indentation support for ledger files
+ Add, edit, and delete transactions - Add, edit, and delete transactions
+ Generate reports - Generate reports
+ Schedule transactions - Schedule transactions
+ Sort transactions - Sort transactions
+ Display statistics about transactions - Display statistics about transactions
+ Display balance up to a point - Display balance up to a point
** Module Flags ** Maintainers
This module provides no flags. /This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
** Plugins ** Module flags
+ [[https://github.com/purcell/flycheck-ledger][flycheck-ledger]] /This module has no flags./
+ [[https://github.com/atheriel/evil-ledger][evil-ledger]]
** Packages
- [[doom-package:][evil-ledger]] if [[doom-module:][:editor evil +everywhere]]
- [[doom-package:][flycheck-ledger]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][ledger-mode]]
** Hacks ** Hacks
This module sets ~ledger-clear-whole-transactions~ to ~t~ (default value is - This module sets ~ledger-clear-whole-transactions~ to ~t~ (default value is
~nil~). This results in ~ledger-toggle-current~ toggling the clear status of the ~nil~). This results in ~ledger-toggle-current~ toggling the clear status of
whole transaction instead of toggling just the current posting. the whole transaction instead of toggling just the current posting.
* Prerequisites ** TODO Changelog
In order for ~flycheck-ledger~ to work and to be able to generate reports you # This section will be machine generated. Don't edit it by hand.
will need to install [[https://www.ledger-cli.org/][ledger]]. /This module does not have a changelog yet./
* TODO Features * Installation
An in-depth list of features, how to use them, and their dependencies. [[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires [[https://www.ledger-cli.org/][ledger]] to syntax check and generate reports from your
ledgers.
* TODO Usage
#+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Configuration
Please refer to ~ledger-mode~'s documentation for information on how to Please refer to ~ledger-mode~'s documentation for information on how to
configure it. You can do so within emacs with =C-h i= configure it. You can do so within emacs with [[kbd:][C-h i]]
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,57 +1,66 @@
#+TITLE: lang/lua # -*- mode: doom-docs-org -*-
#+DATE: Jun 3, 2020 #+title: :lang lua
#+SINCE: v3.0 #+subtitle: One-based indices? one-based indices
#+STARTUP: inlineimages nofold #+created: Jun 03, 2020
#+since: 21.12.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds Lua support to Doom Emacs.
- [[#maintainers][Maintainers]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#language-server-protocol-servers][Language Server Protocol servers]]
- [[#lsp-mode][LSP-mode]]
- [[#eglot][Eglot]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
- [[#install-lua-language-server][Install lua-language-server]]
* Description - REPL
Adds Lua support to Doom Emacs - Love2D specific functions
# A summary of what this module does. - Moonscript support
- Fennel support
+ REPL
+ Love2D specific functions
+ Moonscript support
** Maintainers ** Maintainers
This module has no dedicated maintainers. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
+ =+moonscript= Moonscript language support
+ =+fennel= Fennel language support
+ =+lsp= Language Server Protocol support
** Plugins ** Module flags
# A list of linked plugins - +fennel ::
+ [[https://github.com/immerrr/lua-mode][lua-mode]] Enable support for the Fennel language.
+ [[https://github.com/k2052/moonscript-mode][moonscript-mode]] (=+moonscript=) - +lsp ::
+ [[https://gitlab.com/technomancy/fennel-mode][fennel-mode]] (=+fennel=) Enable LSP support for ~lua-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
(supports EmmyLua, lua-language-server, and lua-lsp).
- +moonscript ::
Enable support for the Moonscript language.
** Packages
- [[doom-package:][company-lua]] if [[doom-module:][:completion company]]
- [[doom-package:][fennel-mode]] if [[doom-module:][+fennel]]
- [[doom-package:][lua-mode]]
- if [[doom-module:][+moonscript]]
- [[doom-package:][flycheck-moonscript]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][moonscript-mode]]
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires Lua 5.1+ for most of its capabilities and, optionally, the
fennel and moonscript transpilers. An LSP server is also required for LSP
support.
* Prerequisites
** Language Server Protocol servers ** Language Server Protocol servers
LSP server support depends on which flavor of the =:tools lsp= module you have LSP server support depends on which flavor of the [[doom-module:][:tools lsp]] module you have
installed (Eglot or LSP-mode). installed ([[doom-package:][eglot]] or [[doom-package:][lsp-mode]]).
*** LSP-mode *** LSP-mode
Three servers are supported, ordered from highest to lowest priority: Three servers are supported, ordered from highest to lowest priority:
- [[https://github.com/EmmyLua/EmmyLua-LanguageServer][EmmyLua-LanguageServer]] :: Must be in
+ [[https://github.com/EmmyLua/EmmyLua-LanguageServer][EmmyLua-LanguageServer]] :: Must be in =~/.emacs.d/.local/etc/lsp/EmmyLua-LS-all.jar=. See ~lsp-clients-emmy-lua-jar-path~ variable to change this. =$EMACSDIR/.local/etc/lsp/EmmyLua-LS-all.jar=. See
+ [[https://github.com/sumneko/lua-language-server][Sumneko language server]] (lua-language-server) :: Must be in ~lsp-clients-emmy-lua-jar-path~ variable to change this.
=~/.config/emacs/.local/etc/lsp/lua-language-server/=. See - [[https://github.com/sumneko/lua-language-server][Sumneko language server]] (lua-language-server) :: Must be in
=$EMACSDIR/.local/etc/lsp/lua-language-server/=. See
~lsp-clients-lua-language-server-bin~ variable to change this. ~lsp-clients-lua-language-server-bin~ variable to change this.
+ [[https://github.com/Alloyed/lua-lsp][lua-lsp]] :: Must be available in =~/.luarocks/bin/lua-lsp=. See - [[https://github.com/Alloyed/lua-lsp][lua-lsp]] :: Must be available in =~/.luarocks/bin/lua-lsp=. See
~lsp-clients-lua-lsp-server-install-dir~ variable to change this. ~lsp-clients-lua-lsp-server-install-dir~ variable to change this.
[[https://emacs-lsp.github.io/lsp-mode/page/lsp-emmy-lua/][LSP-mode documentation]] has more information about setting up the server and the [[https://emacs-lsp.github.io/lsp-mode/page/lsp-emmy-lua/][LSP-mode documentation]] has more information about setting up the server and the
@ -59,20 +68,35 @@ configuration variables correctly.
*** Eglot *** Eglot
Eglot currently only supports one of the above servers out of the box: Eglot currently only supports one of the above servers out of the box:
+ [[https://github.com/sumneko/lua-language-server][Sumneko language server]] (lua-language-server) :: Must be in + [[https://github.com/sumneko/lua-language-server][Sumneko language server]] (lua-language-server) :: Must be in
=~/.config/emacs/.local/etc/lsp/lua-language-server/=. See =$EMACSDIR/.local/etc/lsp/lua-language-server/=. See ~+lua-lsp-dir~ variable
~+lua-lsp-dir~ variable to change this. to change this.
* TODO Features * TODO Usage
# An in-depth list of features, how to use them, and their dependencies. #+begin_quote
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Configuration * TODO Configuration
- lua-lsp-dir :: This must be set when using =+lsp= and using #+begin_quote
[[https://github.com/sumneko/lua-language-server][lua-language-server]]. This controls where the repository has been cloned and 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
built to finish the configuration of the server. #+end_quote
- lua-lsp-dir :: This must be set when using [[doom-module:][+lsp]] and using [[https://github.com/sumneko/lua-language-server][lua-language-server]].
This controls where the repository has been cloned and built to finish the
configuration of the server.
* Troubleshooting * Troubleshooting
[[doom-report:][Report an issue?]]
** Install lua-language-server ** Install lua-language-server
A [[https://github.com/sumneko/lua-language-server/issues/60][catch-all issue]] has been created to gather help for installing A [[https://github.com/sumneko/lua-language-server/issues/60][catch-all issue]] has been created to gather help for installing
lua-language-server on non-VSCode platforms. lua-language-server on non-VSCode platforms.
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,26 +1,10 @@
#+TITLE: lang/markdown # -*- mode: doom-docs-org -*-
#+DATE: February 19, 2017 #+title: :lang markdown
#+SINCE: 2.0 #+subtitle: Write docs for people to ignore
#+STARTUP: inlineimages #+created: February 19, 2017
#+since: 2.0.0
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]]
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#linters][Linters]]
- [[#markdown-preview][Markdown preview]]
- [[#markedjs][MarkedJS]]
- [[#pandoc][Pandoc]]
- [[#markdown][Markdown]]
- [[#multimarkdown][MultiMarkdown]]
- [[#features][Features]]
- [[#markdown-preview-1][Markdown preview]]
- [[#configuration][Configuration]]
- [[#changing-how-markdown-is-compiled][Changing how markdown is compiled]]
* Description
This module provides Markdown support for Emacs. This module provides Markdown support for Emacs.
#+begin_quote #+begin_quote
@ -30,82 +14,97 @@ to structurally valid XHTML (or HTML).
Thus, “Markdown” is two things: (1) a plain text formatting syntax; and (2) a 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. software tool, written in Perl, that converts the plain text formatting to HTML.
See the Syntax page for details pertaining to Markdowns formatting syntax. You See the Syntax page for details pertaining to Markdown's formatting syntax. You
can try it out, right now, using the online Dingus. can try it out, right now, using the online Dingus.
The overriding design goal for Markdowns formatting syntax is to make it as 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 readable as possible. The idea is that a Markdown-formatted document should be
publishable as-is, as plain text, without looking like its been marked up with publishable as-is, as plain text, without looking like it's been marked up with
tags or formatting instructions. While Markdowns syntax has been influenced by tags or formatting instructions. While Markdown's syntax has been influenced by
several existing text-to-HTML filters, the single biggest source of inspiration several existing text-to-HTML filters, the single biggest source of inspiration
for Markdowns syntax is the format of plain text email. -- John Gruber for Markdown's syntax is the format of plain text email. -- John Gruber
#+end_quote #+end_quote
** Module Flags ** Maintainers
+ =+grip= Enables [[https://github.com/seagle0128/grip-mode][grip support]] (on =<localleader> p=), to provide live - [[doom-user:][@hlissner]]
github-style previews of your markdown (or org) files.
** Plugins [[doom-contrib-maintainer:][Become a maintainer?]]
+ markdown-mode
+ markdown-toc ** Module flags
- +grip ::
Enable [[https://github.com/seagle0128/grip-mode][grip support]] (on [[kbd:][<localleader> p]]), to provide live github-style
previews of your markdown (or org) files.
** Packages
- [[doom-package:][edit-indirect]]
- [[doom-package:][evil-markdown]] if [[doom-module:][:editor evil +everywhere]]
- [[doom-package:][grip-mode]] if [[doom-module:][+grip]]
- [[doom-package:][markdown-mode]]
- [[doom-package:][markdown-toc]]
** Hacks ** Hacks
+ Flyspell has been configured not to spell check in code blocks, links, HTML - [[doom-package:][flyspell]] has been configured not to spell check in code blocks, links, HTML
tags or references. tags or references.
* Prerequisites ** TODO Changelog
This module has two soft dependencies: a linter and a compiler (for previewing # This section will be machine generated. Don't edit it by hand.
markdown). /This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- A linter (requires [[doom-module:][:checkers syntax]])
- A markdown compiler, for previewing Markdown
** Linters ** Linters
Out of the box, flycheck recognizes these checkers for markdown-mode and Out of the box, flycheck recognizes these checkers for markdown-mode and
gfm-mode: gfm-mode:
+ Markdown-specific - Markdown-specific
+ [[https://github.com/DavidAnson/markdownlint][markdownlint]] (~npm install markdownlint~) - [[https://github.com/DavidAnson/markdownlint][markdownlint]] (~$ npm install markdownlint~)
+ [[https://github.com/markdownlint/markdownlint][mdl]] (~gem install mdl~) - [[https://github.com/markdownlint/markdownlint][mdl]] (~$ gem install mdl~)
+ General (natural language) - General (natural language)
+ [[http://proselint.com/][proselint]] - [[http://proselint.com/][proselint]]
- ~pip install proselint~ - ~$ pip install proselint~
- Or through your OS package manager - Or through your OS package manager
- MacOS: ~brew install proselint~ - MacOS: ~$ brew install proselint~
- Arch Linux: ~pacman -S proselint~ - Arch Linux: ~$ pacman -S proselint~
+ [[https://github.com/textlint/textlint][textlint]] (~npm install textlint~) - [[https://github.com/textlint/textlint][textlint]] (~$ npm install textlint~)
** Markdown preview ** Markdown compiler
This module requires a markdown compiler in order for ~markdown-preview~ to This module requires a markdown compiler in order for ~markdown-preview~ to
work. It will recognize and use one of the following executables, in this order work. It will recognize and use one of the following executables, in this order
(you only need one): (you only need one):
+ [[https://github.com/markedjs/marked][markedjs]]: a markdown compiler "built for speed" - [[https://github.com/markedjs/marked][markedjs]]: a markdown compiler "built for speed"
+ [[https://github.com/jgm/pandoc][pandoc]]: the universal markup transpiler - [[https://github.com/jgm/pandoc][pandoc]]: the universal markup transpiler
+ [[http://pell.portland.or.us/~orc/Code/discount/][markdown]]: there are various flavors of this compiler. This module will look - [[http://pell.portland.or.us/~orc/Code/discount/][markdown]]: there are various flavors of this compiler. This module will look
for these two: for these two:
+ John Gruber's [[https://daringfireball.net/projects/markdown/][original perl script]] - John Gruber's [[https://daringfireball.net/projects/markdown/][original perl script]]
+ The C implementation called [[http://pell.portland.or.us/~orc/Code/discount/][discount]], by David Parsons - The C implementation called [[http://pell.portland.or.us/~orc/Code/discount/][discount]], by David Parsons
+ [[https://fletcher.github.io/MultiMarkdown-6/][multimarkdown]]: a compiler for a language that is a superset of Markdown, with - [[https://fletcher.github.io/MultiMarkdown-6/][multimarkdown]]: a compiler for a language that is a superset of Markdown, with
additional output formats and features. additional output formats and features.
*** MarkedJS *** MarkedJS
Not to be confused with [[https://marked2app.com/][the Marked 2 app]], marked is an npm package: Not to be confused with [[https://marked2app.com/][the Marked 2 app]], marked is an npm package:
#+begin_src sh
#+BEGIN_SRC sh
npm install -g marked npm install -g marked
#+END_SRC #+end_src
*** Pandoc *** Pandoc
Pandoc is the universal markup transpiler. It should be available through your Pandoc is the universal markup transpiler. It should be available through your
system package manager. For example: system package manager. For example:
+ MacOS: ~brew install pandoc~ + MacOS: ~$ brew install pandoc~
+ Arch Linux: ~pacman -S pandoc~ + Arch Linux: ~$ pacman -S pandoc~
*** Markdown *** Markdown
The C implementation of Markdown.pl, called =discount=, is available through The C implementation of Markdown.pl, called =discount=, is available through
your OS's package manager: your OS's package manager:
+ MacOS: ~brew install discount~ + MacOS: ~$ brew install discount~
+ Arch Linux: ~pacman -S discount~ + Arch Linux: ~$ pacman -S discount~
The original perl script that discount is inspired from can be found on [[https://daringfireball.net/projects/markdown/][John The original perl script that discount is inspired from can be found on [[https://daringfireball.net/projects/markdown/][John
Gruber's website]]. Gruber's website]].
@ -114,46 +113,62 @@ Gruber's website]].
See [[https://fletcher.github.io/MultiMarkdown-6/introduction.html][its documentation]] for details on what MultiMarkdown is. The compiler can be See [[https://fletcher.github.io/MultiMarkdown-6/introduction.html][its documentation]] for details on what MultiMarkdown is. The compiler can be
installed through your OS's package manager: installed through your OS's package manager:
+ MacOS: ~brew install multimarkdown~ + MacOS: ~$ brew install multimarkdown~
+ Arch Linux: [[https://aur.archlinux.org/packages/multimarkdown/][multimarkdown]] is available on the AUR + Arch Linux: [[https://aur.archlinux.org/packages/multimarkdown/][multimarkdown]] is available on the AUR
* Features * TODO Usage
** Markdown preview #+begin_quote
~markdown-preview~ is bound to =<localleader> p=. This will open a preview of 🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
your compiled markdown document in your browser. #+end_quote
Alternatively, you can use ~grip-mode~ through =+grip=. ** Markdown preview
~markdown-preview~ is bound to [[kbd:][<localleader> p]]. This will open a preview of your
compiled markdown document in your browser.
Alternatively, you can use ~grip-mode~ through [[doom-module:][+grip]].
* Configuration * Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
** Changing how markdown is compiled ** Changing how markdown is compiled
When ~markdown-preview~ is invoked (=<localleader> p=) it consults When ~markdown-preview~ is invoked ([[kbd:][<localleader> p]]) it consults
~markdown-command~. Its default value (~#'+markdown-compile~) will consult ~markdown-command~. Its default value (~#'+markdown-compile~) will consult
~+markdown-compile-functions~: a list of functions that take three arguments: the ~+markdown-compile-functions~: a list of functions that take three arguments:
start and end point in the current buffer to use as input, and an output buffer the start and end point in the current buffer to use as input, and an output
to insert the result in. buffer to insert the result in.
By default, the value of ~+markdown-compile-functions~ is: By default, the value of ~+markdown-compile-functions~ is:
#+begin_src lisp
#+BEGIN_SRC lisp
'(+markdown-compile-marked '(+markdown-compile-marked
+markdown-compile-pandoc +markdown-compile-pandoc
+markdown-compile-markdown +markdown-compile-markdown
+markdown-compile-multimarkdown) +markdown-compile-multimarkdown)
#+END_SRC #+end_src
These functions will attempt to use the marked, pandoc and markdown executables, These functions will attempt to use the marked, pandoc and markdown executables,
if available. Changing this variable will control how markdown is compiled. if available. Changing this variable will control how markdown is compiled:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
;; Add a new one ;; Add a new one
(add-hook '+markdown-compile-functions #'my-compile-function) (add-hook '+markdown-compile-functions #'my-compile-function)
;; Or remove an existing one ;; Or remove an existing one
(remove-hook '+markdown-compile-functions #'+markdown-compile-markdown) (remove-hook '+markdown-compile-functions #'+markdown-compile-markdown)
#+END_SRC #+end_src
Otherwise, you can change ~markdown-command~ directly: Otherwise, you can change ~markdown-command~ directly:
#+begin_src emacs-lisp
#+BEGIN_SRC elisp
(setq markdown-command "markdown | smartypants") (setq markdown-command "markdown | smartypants")
#+END_SRC #+end_src
* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,52 +1,74 @@
#+TITLE: :lang Nim # -*- mode: doom-docs-org -*-
#+title: :lang nim
#+subtitle: Python + lisp at the speed of C
#+created: May 08, 2018
#+since: 21.12.0 (#568)
#+begin_quote * Description :unfold:
This module is a work in progress. This module adds [[https://nim-lang.org][Nim]] support to Doom Emacs.
#+end_quote
This module adds [[https://nim-lang.org][Nim]] support to Emacs. - Code completion ([[doom-package:][nimsuggest]] + [[doom-package:][company]])
- Syntax checking ([[doom-package:][nimsuggest]] + [[doom-package:][flycheck]])
- Org babel support ([[doom-package:][ob-nim]])
+ Code completion (nimsuggest + company) ** Maintainers
+ Syntax checking (nimsuggest + flycheck) *This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
+ Babel support (~ob-nim~)
* Table of Contents :TOC: ** Module flags
- [[#module-flags][Module Flags]] /This module has no flags./
- [[#prerequisites][Prerequisites]]
- [[#nim][Nim]]
- [[#configuration][Configuration]]
* Module Flags ** Packages
This module provides no flags. - [[doom-package:][flycheck-nim]] if [[doom-module:][:checkers syntax]]
- [[doom-package:][nim-mode]]
* Prerequisites ** Hacks
+ ~nim~ (for building & evaluation) - [[doom-package:][nimsuggest]] was modified to strip invalid characters from its temp file paths
+ ~nimsuggest~ (for code completion, syntax checking & jump-to-definition functionality) (which would break nimsuggest on Windows systems).
- [[doom-package:][nim-mode]] was modified to fail gracefully if =nimsuggest= (the executable)
isn't available.
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- ~nim~, for building & evaluation.
- ~nimsuggest~, for code completion, syntax checking, and jump-to-definition
functionality.
** Nim ** Nim
=choosenim= is an installer and version manager for the Nim programming =choosenim= is an installer and version manager for the Nim programming
language. You can install the latest stable release of Nim by running the language. You can install the latest stable release of Nim by running the
following in your terminal and following the onscreen instructions: following in your terminal and following the onscreen instructions:
#+begin_src sh
#+BEGIN_SRC bash
curl https://nim-lang.org/choosenim/init.sh -sSf | sh curl https://nim-lang.org/choosenim/init.sh -sSf | sh
#+END_SRC #+end_src
Alternatively, nim is usually available through your OS's package manager: Alternatively, nim is usually available through your OS's package manager:
- MacOS: ~$ brew install nim~
- Arch Linux: ~$ pacman --needed --noconfirm -S nim nimble~
- openSUSE: ~$ zypper install nim~
*** MacOS * TODO Usage
#+BEGIN_SRC sh :tangle (if (doom-system-os 'macos) "yes") #+begin_quote
brew install nim 🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+END_SRC #+end_quote
*** Arch Linux * TODO Configuration
#+BEGIN_SRC sh :dir /sudo:: :tangle (if (doom-system-os 'arch) "yes") #+begin_quote
sudo pacman --needed --noconfirm -S nim nimble 🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+END_SRC #+end_quote
*** openSUSE * Troubleshooting
#+BEGIN_SRC sh :dir /sudo:: /There are no known problems with this module./ [[doom-report:][Report one?]]
sudo zypper install nim
#+END_SRC
* Configuration * Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

View file

@ -1,57 +1,82 @@
#+TITLE: lang/nix # -*- mode: doom-docs-org -*-
#+DATE: May 4, 2020 #+title: :lang nix
#+SINCE: v2.0.7 #+subtitle: I hereby declare "nix geht mehr!"
#+STARTUP: inlineimages nofold #+created: December 02, 2017
#+since: 2.0.8 (#280)
* Table of Contents :TOC_3:noexport: * Description :unfold:
- [[#description][Description]] This module adds support for the Nix language to Doom Emacs, along with tools
- [[#maintainers][Maintainers]] for managing [[https://nixos.org/][Nix(OS)]].
- [[#module-flags][Module Flags]]
- [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#keybindings][Keybindings]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
* Description Includes:
Adds many tools for [[https://nixos.org/][Nix(OS)]] users in nice package for Doom users. - Syntax highlighting
- Completion through [[doom-package:][company]] and/or [[doom-package:][helm]]
+ Syntax highlighting - Nix option lookup
+ Completion through ~company~ / ~helm~ - Formatting (~nixfmt~)
+ Nix option lookup
+ Formatting (~nixfmt~)
** Maintainers ** Maintainers
This module has no dedicated maintainers. - [[doom-user:][@hlissner]]
** Module Flags [[doom-contrib-maintainer:][Become a maintainer?]]
This module provides no flags.
** Plugins ** Module flags
+ [[https://github.com/NixOS/nix-mode][nix-mode]] - +tree-sitter ::
+ [[https://github.com/jwiegley/nix-update-el][nix-update]] Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module:][:tools tree-sitter]].
* Prerequisites ** Packages
+ ~nixfmt~ is required to use formatting - [[doom-package:][company-nixos-options]] if [[doom-module:][:completion company]]
+ If you have Nix(OS) installed it can be installed through Nix configuration ~environment.systemPackages = with pkgs; [ nixfmt ];~ (recommended) - [[doom-package:][helm-nixos-options]] if [[doom-module:][:completion helm]]
+ Or through nix-env ~nix-env -iA nixpkgs.nixfmt~ - [[doom-package:][nix-mode]]
+ Or through nix-shell ~nix-shell -f https://github.com/serokell/nixfmt/archive/master.tar.gz -i~ - [[doom-package:][nix-update]]
+ ~:editor format~ ~format-all~ also supports ~nixfmt~ so you can use that also to format Nix code, default binding is ~SPC c f~ in evil.
** Hacks
/No hacks documented for this module./
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./
* TODO Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
This module requires:
- [[https://nixos.org/guides/install-nix.html][The Nix package manager]], for a variety of its features (besides syntax
highlighting).
- =nixfmt=, for automatic formatting (requires [[doom-module:][:editor format]]).
- *MacOS:* TODO
- *Arch Linux:* TODO
- *NixOS:* in ~pkgs.nixfmt~
* TODO Usage
#+begin_quote
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
#+end_quote
* Features
** Keybindings ** Keybindings
| Binding | Description | | Binding | Description |
|-------------------+----------------------| |-----------------+----------------------|
| ~<localleader> b~ | ~nix-build~ | | [[kbd:][<localleader> b]] | ~nix-build~ |
| ~<localleader> f~ | ~nix-update-fetch~ | | [[kbd:][<localleader> f]] | ~nix-update-fetch~ |
| ~<localleader> o~ | ~+nix/lookup-option~ | | [[kbd:][<localleader> o]] | ~+nix/lookup-option~ |
| ~<localleader> p~ | ~nix-format-buffer~ | | [[kbd:][<localleader> p]] | ~nix-format-buffer~ |
| ~<localleader> r~ | ~nix-repl-show~ | | [[kbd:][<localleader> r]] | ~nix-repl-show~ |
| ~<localleader> s~ | ~nix-repl-shell~ | | [[kbd:][<localleader> s]] | ~nix-repl-shell~ |
| ~<localleader> u~ | ~nix-unpack~ | | [[kbd:][<localleader> u]] | ~nix-unpack~ |
* Configuration * TODO Configuration
#+begin_quote
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote
* Troubleshooting * Troubleshooting
+ There aren't any known problems. /There are no known problems with this module./ [[doom-report:][Report one?]]
* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
* TODO Appendix
#+begin_quote
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote

Some files were not shown because too many files have changed in this diff Show more