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:
commit
1f8bf7accb
179 changed files with 13125 additions and 8630 deletions
|
@ -1,3 +1,2 @@
|
|||
((nil (git-commit-major-mode . git-commit-elisp-text-mode)
|
||||
(fill-column . 80))
|
||||
(org-mode (buffer-read-only . t)))
|
||||
((nil (git-commit-major-mode . git-commit-elisp-text-mode)
|
||||
(fill-column . 80)))
|
||||
|
|
File diff suppressed because it is too large
Load diff
226
docs/modules.org
226
docs/modules.org
|
@ -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)
|
|
@ -1,7 +1,7 @@
|
|||
;;; doom-editor.el -*- lexical-binding: t; -*-
|
||||
|
||||
(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
|
||||
detected.")
|
||||
|
||||
|
|
624
lisp/lib/docs.el
Normal file
624
lisp/lib/docs.el
Normal 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
|
|
@ -749,3 +749,4 @@ Uses the symbol at point or the current selection, if available."
|
|||
(format "%s.el" filebase)))
|
||||
collect it)
|
||||
query "Search loaded files: "))
|
||||
|
||||
|
|
1492
modules/README.org
Normal file
1492
modules/README.org
Normal file
File diff suppressed because it is too large
Load diff
12
modules/app/README.org
Normal file
12
modules/app/README.org
Normal 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?]]
|
|
@ -1,34 +1,52 @@
|
|||
#+TITLE: app/calendar
|
||||
#+DATE: January 13, 2018
|
||||
#+SINCE: v2.1
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app calendar
|
||||
#+subtitle: Watch your missed deadlines in real time
|
||||
#+created: January 13, 2018
|
||||
#+since: 21.12.0 (#355)
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module adds a calendar view for Emacs, with org and google calendar sync
|
||||
support.
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Packages
|
||||
+ [[https://github.com/kiwanami/emacs-calfw][calfw]]
|
||||
+ [[https://github.com/kiwanami/emacs-calfw][calfw-org]]
|
||||
+ [[https://github.com/kidd/org-gcal.el][org-gcal]]
|
||||
- [[doom-package:][calfw]]
|
||||
- [[doom-package:][calfw-org]]
|
||||
- [[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
|
||||
By defining your own calendar commands, you can control what sources to pull
|
||||
calendar data from:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(defun my-open-calendar ()
|
||||
(interactive)
|
||||
(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 "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.
|
||||
|
||||
** 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
|
||||
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
|
||||
|
|
|
@ -1,71 +1,75 @@
|
|||
#+TITLE: app/emms
|
||||
#+DATE: March 6, 2021
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app emms
|
||||
#+subtitle: A media player for music no one's heard of
|
||||
#+created: March 06, 2021
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
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.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://git.savannah.gnu.org/git/emms.git/][emms]]
|
||||
** Packages
|
||||
- [[doom-package:][emms]]
|
||||
|
||||
* Prerequisites
|
||||
This module requires an active MPD server, the MPC utility, and a music library.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
** Arch Linux
|
||||
#+BEGIN_SRC bash
|
||||
pacman -S mpd mpc
|
||||
#+END_SRC
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
services.mpd.enable = true;
|
||||
environment.systemPackages = [ pkgs.mpc_cli ];
|
||||
#+END_SRC
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
** Ubuntu
|
||||
#+BEGIN_SRC bash
|
||||
apt install mpd mpc
|
||||
#+END_SRC
|
||||
This module requires:
|
||||
- [[https://mpd.readthedocs.io/en/stable/user.html#installation][mpd]] (and a running mpd server)
|
||||
- [[https://www.musicpd.org/clients/mpc/][mpc]]
|
||||
|
||||
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
|
||||
** New music files not showing up in database
|
||||
Try =M-x +emms/mpd-restart-music-daemon=. If that doesn't work restart emacs.
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
* Appendix
|
||||
** Keybinds
|
||||
+ =SPC m l= Toggles whether or not the player repeats the playlist.
|
||||
+ =SPC m m= Mixes the playlist.
|
||||
+ =SPC m i= Insert specific song
|
||||
+ =SPC m s= Save the current playlist to a file
|
||||
+ =SPC m p= Insert playlist save into current playlist
|
||||
+ =g a= Sort the browser by artists
|
||||
+ =g b= Sort the browser by genre
|
||||
+ =X= Stops the player
|
||||
+ =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.
|
||||
** New music files not showing up in database
|
||||
Try [[kbd:][M-x +emms/mpd-restart-music-daemon]] then restart emacs.
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,58 +1,73 @@
|
|||
#+title: app/everywhere
|
||||
#+date: February 7, 2021
|
||||
#+since: v3.0
|
||||
#+startup: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app everywhere
|
||||
#+subtitle: *leave* Emacs!? You must be joking
|
||||
#+created: February 07, 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]]
|
||||
- [[#configuration][Configuration]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module adds system-wide popup Emacs windows for quick edits.
|
||||
|
||||
** 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
|
||||
+ [[https://github.com/tecosaur/emacs-everywhere][emacs-everywhere]]
|
||||
** Packages
|
||||
- [[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
|
||||
ways:
|
||||
+ ~emacsclient --eval "(emacs-everywhere)"~
|
||||
+ ~doom everywhere~
|
||||
+ ~$ emacsclient --eval "(emacs-everywhere)"~
|
||||
+ ~$ doom everywhere~
|
||||
|
||||
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
|
||||
return to the original window and paste the content with =C-c C-c= or =SPC q f=.
|
||||
To exit without pasting, use =C-c C-k=.
|
||||
return to the original window and paste the content with [[kbd:][C-c C-c]] or [[kbd:][SPC q f]]. To
|
||||
exit without pasting, use [[kbd:][C-c C-k]].
|
||||
|
||||
* Configuration
|
||||
|
||||
=emacs-everywhere= likes to guess if you triggered it from an application which
|
||||
[[doom-package:][emacs-everywhere]] likes to guess if you triggered it from an application which
|
||||
supports markdown. Configure ~emacs-everywhere-markdown-windows~ and
|
||||
~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
|
||||
instead use pandoc to convert the content to Org (and export to markdown when
|
||||
By default, when markdown is detected, ~markdown-mode~ is used. It is possible
|
||||
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
|
||||
=#'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
|
||||
|
|
|
@ -1,82 +1,82 @@
|
|||
#+TITLE: app/irc
|
||||
#+DATE: June 11, 2017
|
||||
#+SINCE: v2.0.3
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app irc
|
||||
#+subtitle: How neckbeards socialize
|
||||
#+created: June 11, 2017
|
||||
#+since: 2.0.3
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module turns Emacs into an IRC client, capable of OS notifications.
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/jorgenschaefer/circe][circe]]
|
||||
+ [[https://github.com/eqyiel/circe-notifications][circe-notifications]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Prerequisites
|
||||
This module requires =gnutls= for secure IRC connections to work.
|
||||
** Packages
|
||||
- [[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
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
brew install gnutls
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Debian / Ubuntu
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
apt install gnutls-bin
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Arch Linux
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
pacman -S gnutls
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
#+begin_src nix
|
||||
environment.systemPackages = [ pkgs.gnutls ];
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* Features
|
||||
** An IRC Client in Emacs
|
||||
To connect to IRC you can invoke the ~=irc~ function using =M-x= or your own
|
||||
custom keybinding.
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
| command | description |
|
||||
|---------+-------------------------------------------|
|
||||
| ~=irc~ | Connect to IRC and all configured servers |
|
||||
To connect to IRC use ~M-x =irc~.
|
||||
|
||||
When in a circe buffer these keybindings will be available.
|
||||
When in a circe buffer these keybindings will be available:
|
||||
| command | key | description |
|
||||
|-----------------------------+-----------------+----------------------------------------------|
|
||||
| ~+irc/tracking-next-buffer~ | [[kbd:][<localleader> a]] | Switch to the next active buffer |
|
||||
| ~circe-command-JOIN~ | [[kbd:][<localleader> j]] | Join a channel |
|
||||
| ~+irc/send-message~ | [[kbd:][<localleader> m]] | Send a private message |
|
||||
| ~circe-command-NAMES~ | [[kbd:][<localleader> n]] | List the names of the current channel |
|
||||
| ~circe-command-PART~ | [[kbd:][<localleader> p]] | Part the current channel |
|
||||
| ~+irc/quit~ | [[kbd:][<localleader> Q]] | Kill the current circe session and workgroup |
|
||||
| ~circe-reconnect~ | [[kbd:][<localleader> R]] | Reconnect the current server |
|
||||
|
||||
| command | key | description |
|
||||
|-----------------------------+-----------+----------------------------------------------|
|
||||
| ~+irc/tracking-next-buffer~ | =SPC m a= | Switch to the next active buffer |
|
||||
| ~circe-command-JOIN~ | =SPC m j= | Join a channel |
|
||||
| ~+irc/send-message~ | =SPC m m= | Send a private message |
|
||||
| ~circe-command-NAMES~ | =SPC m n= | List the names of the current channel |
|
||||
| ~circe-command-PART~ | =SPC m p= | Part the current channel |
|
||||
| ~+irc/quit~ | =SPC m Q= | Kill the current circe session and workgroup |
|
||||
| ~circe-reconnect~ | =SPC m R= | Reconnect the current server |
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
* Configuration
|
||||
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 :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.
|
||||
(after! circe
|
||||
(set-irc-server! "irc.libera.chat"
|
||||
|
@ -86,20 +86,23 @@ takes the same arguments as ~circe-network-options~.
|
|||
:sasl-username "myusername"
|
||||
:sasl-password "mypassword"
|
||||
:channels ("#emacs"))))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
However, *it is a obviously a bad idea to store your password in plaintext,* so
|
||||
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
|
||||
[[../../../modules/tools/pass/README.org][:tools pass]] module you get an elisp API through which to access your
|
||||
password store.
|
||||
[[doom-module:][:tools pass]] module you get an elisp API through which to access your password
|
||||
store.
|
||||
|
||||
~set-irc-server!~ accepts a plist can use functions instead of strings.
|
||||
~+pass-get-user~ and ~+pass-get-secret~ can help here:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
#+begin_src emacs-lisp
|
||||
(set-irc-server! "irc.libera.chat"
|
||||
`(:tls t
|
||||
:port 6697
|
||||
|
@ -107,12 +110,11 @@ password store.
|
|||
:sasl-username ,(+pass-get-user "irc/libera.chat")
|
||||
:sasl-password ,(+pass-get-secret "irc/libera.chat")
|
||||
:channels ("#emacs")))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
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:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
#+begin_src emacs-lisp
|
||||
(set-irc-server! "irc.libera.chat"
|
||||
`(:tls t
|
||||
: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-password (lambda (&rest _) (+pass-get-secret "irc/libera.chat"))
|
||||
:channels ("#emacs")))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
And you're good to go!
|
||||
|
||||
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
|
||||
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
|
||||
=email=)=). An example configuration looks like
|
||||
|
||||
#+begin_example
|
||||
|
@ -136,8 +138,7 @@ username: myusername
|
|||
** 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
|
||||
(and retrieve) encrypted passwords with it.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
#+begin_src emacs-lisp
|
||||
(setq auth-sources '("~/.authinfo.gpg"))
|
||||
|
||||
(defun my-fetch-password (&rest params)
|
||||
|
@ -159,6 +160,15 @@ username: myusername
|
|||
:nick "doom"
|
||||
:sasl-password my-nickserver-password
|
||||
:channels ("#emacs")))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,92 +1,102 @@
|
|||
#+TITLE: app/rss
|
||||
#+DATE: May 12, 2020
|
||||
#+SINCE: v2.0.9
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app rss
|
||||
#+subtitle: An RSS reader that Google can't shut down
|
||||
#+created: May 12, 2020
|
||||
#+since: 2.0.9
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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)
|
||||
* Description :unfold:
|
||||
Read RSS feeds in the comfort of Emacs.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+org= to enable ~elfeed-org~ to use ~org-directory/elfeed.org~
|
||||
** Module flags
|
||||
- +org ::
|
||||
Enable [[doom-package:][elfeed-org]], so you can configure your feeds with an org file
|
||||
(={org-directory}/elfeed.org=) rather than Elisp.
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/skeeto/elfeed][elfeed]]
|
||||
+ [[https://github.com/algernon/elfeed-goodies][elfeed-goodies]]
|
||||
+ =+org=
|
||||
+ [[https://github.com/remyhonig/elfeed-org][elfeed-org]]
|
||||
** Packages
|
||||
- [[doom-package:][elfeed]]
|
||||
- [[doom-package:][elfeed-goodies]]
|
||||
- [[doom-package:][elfeed-org]] if [[doom-module:][+org]]
|
||||
|
||||
** 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~
|
||||
#+begin_src elisp
|
||||
(after! elfeed
|
||||
(setq elfeed-search-filter "@1-month-ago +unread"))
|
||||
- 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 =$DOOMDIR/config.el=:
|
||||
#+begin_src emacs-lisp
|
||||
(after! elfeed
|
||||
(setq elfeed-search-filter "@1-month-ago +unread"))
|
||||
#+end_src
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
* Features
|
||||
+ As there isn't currently binding for ~elfeed-update~ you can run it with ~M-x elfeed-update~
|
||||
* 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
|
||||
|
||||
- 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
|
||||
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:
|
||||
#+BEGIN_SRC elisp
|
||||
When you don't want to use org mode to manage your elfeed feeds you can put your
|
||||
subscriptions in =$DOOMDIR/config.el=:
|
||||
#+begin_src emacs-lisp
|
||||
(setq elfeed-feeds
|
||||
'("https://this-week-in-rust.org/rss.xml"
|
||||
"http://feeds.bbci.co.uk/news/rss.xml"))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** With +org
|
||||
When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to configure feeds to follow.
|
||||
#+BEGIN_SRC org
|
||||
When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to
|
||||
configure feeds to follow:
|
||||
#+begin_src org
|
||||
,* root :elfeed:
|
||||
,** Programming :programming:
|
||||
,*** [[https://this-week-in-rust.org/rss.xml][This Week in Rust]] :rust:
|
||||
,** News :news:
|
||||
,*** Top news :tops:
|
||||
,**** http://feeds.bbci.co.uk/news/rss.xml
|
||||
#+END_SRC
|
||||
+ Root of ~elfeed-org~ needs to have ~:elfeed:~ tag. This is where ~elfeed-org~ starts to read.
|
||||
+ 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~.
|
||||
+ 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~.
|
||||
+ 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))~
|
||||
#+end_src
|
||||
- Root of ~elfeed-org~ needs to have ~:elfeed:~ tag. This is where ~elfeed-org~
|
||||
starts to read.
|
||||
- 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~.
|
||||
- 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
|
||||
+ General
|
||||
| Key | Mode | Description |
|
||||
|---------+--------------------+--------------------------------|
|
||||
| =S-RET= | Elfeed-search-mode | Open link into browser |
|
||||
| =RET= | Elfeed-search-mode | Open item |
|
||||
| =s= | Elfeed-search-mode | Filter |
|
||||
| =C-j= | Elfeed-show-mode | Move to next item |
|
||||
| =C-k= | Elfeed-show-mode | Move to previous item |
|
||||
| Key | Mode | Description |
|
||||
|-------+--------------------+------------------------|
|
||||
| [[kbd:][S-RET]] | elfeed-search-mode | Open link into browser |
|
||||
| [[kbd:][RET]] | elfeed-search-mode | Open item |
|
||||
| [[kbd:][s]] | elfeed-search-mode | Filter |
|
||||
| [[kbd:][C-j]] | elfeed-show-mode | Move to next item |
|
||||
| [[kbd:][C-k]] | elfeed-show-mode | Move to previous item |
|
||||
|
||||
+ If ~:editor evil +everywhere~
|
||||
| Key | Description |
|
||||
|-----+-----------------------------|
|
||||
| q | elfeed-kill-buffer |
|
||||
| r | elfeed-search-update--force |
|
||||
| g c | Copy link of current entry |
|
||||
| [[kbd:][q]] | elfeed-kill-buffer |
|
||||
| [[kbd:][r]] | elfeed-search-update--force |
|
||||
| [[kbd:][g c]] | Copy link of current entry |
|
||||
|
||||
** News filtering
|
||||
+ Time filtering
|
||||
|
@ -106,9 +116,18 @@ When using ~+org~ flag then configuration is easier. You can use ~org-mode~ to c
|
|||
+ Exclude ~!something~
|
||||
|
||||
** Automatically updating feed when opening elfeed
|
||||
Hook ~elfeed-update~ to ~elfeed-search-mode-hook~
|
||||
#+BEGIN_SRC elisp
|
||||
(add-hook! 'elfeed-search-mode-hook 'elfeed-update)
|
||||
#+END_SRC
|
||||
Hook ~elfeed-update~ to ~elfeed-search-mode-hook~:
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'elfeed-search-mode-hook #'elfeed-update)
|
||||
#+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
|
||||
|
|
|
@ -1,96 +1,102 @@
|
|||
#+TITLE: app/twitter
|
||||
#+DATE: October 11, 2019
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :app twitter
|
||||
#+subtitle: Be superficial in plain text
|
||||
#+created: October 11, 2019
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
Enjoy twitter from emacs.
|
||||
|
||||
+ View various timelines side by side, e.g. user's timeline, home, etc.
|
||||
+ Post new tweets
|
||||
+ Send direct messages
|
||||
+ Retweet
|
||||
+ Follow and un-follow users
|
||||
+ Favorite tweets
|
||||
- View various timelines side by side, e.g. user's timeline, home, etc.
|
||||
- Post new tweets
|
||||
- Send direct messages
|
||||
- Retweet
|
||||
- Follow and un-follow users
|
||||
- Favorite tweets
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/hayamiz/twittering-mode][twittering-mode]]
|
||||
+ [[https://github.com/abo-abo/avy][avy]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** TODO Hacks
|
||||
{A list of internal modifications to included packages}
|
||||
** 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:
|
||||
+ [[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]] 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.
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
To build emacs with ImageMagick support the ~--with-imagemagick~ flag needs to
|
||||
be passed to the ~configure~ script, e.g. ~./configure --with-imagemagick~.
|
||||
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.
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
* TODO Features
|
||||
An in-depth list of features, how to use them, and their dependencies.
|
||||
This module requires:
|
||||
- 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
|
||||
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
|
||||
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 |
|
||||
|---------------------+------------------+-------------------------------------------------------------|
|
||||
| ~+twitter/quit~ | =q= | Close current window |
|
||||
| ~+twitter/quit-all~ | =Q= | Close all twitter windows and buffers, and delete workspace |
|
||||
|
||||
And when ~:editor evil +everywhere~ is active:
|
||||
| ~+twitter/quit~ | [[kbd:][q]] | Close current window |
|
||||
| ~+twitter/quit-all~ | [[kbd:][Q]] | Close all twitter windows and buffers, and delete workspace |
|
||||
|
||||
And when [[doom-module:][:editor evil +everywhere]] is active:
|
||||
| command | key / ex command | description |
|
||||
|--------------------------------------------------+------------------+------------------------------------------------------------------|
|
||||
| ~twittering-favorite~ | =f= | Favorite/Like a tweet |
|
||||
| ~twittering-unfavorite~ | =F= | Un-favorite/Un-like a tweet |
|
||||
| ~twittering-follow~ | =C-f= | Follow user |
|
||||
| ~twittering-unfollow~ | =C-F= | Un-follow user |
|
||||
| ~twittering-delete-status~ | =d= | Delete a tweet |
|
||||
| ~twittering-retweet~ | =r= | Retweet |
|
||||
| ~twittering-toggle-or-retrieve-replied-statuses~ | =R= | Toggle or retrieve replies |
|
||||
| ~twittering-update-status-interactive~ | =o= | Update tweets |
|
||||
| ~+twitter/ace-link~ | =O= | Open some visible link from a ~twittering-mode~ buffer using ace |
|
||||
| ~twittering-search~ | =/= | Search |
|
||||
| ~twittering-goto-next-status~ | =J= | Go to next tweet |
|
||||
| ~twittering-goto-previous-status~ | =K= | Go to previous tweet |
|
||||
| ~twittering-goto-first-status~ | =gg= | Go to first tweet |
|
||||
| ~twittering-goto-last-status~ | =G= | Go to last tweet |
|
||||
| ~twittering-goto-next-status-of-user~ | =gj= | Go to next tweet of user |
|
||||
| ~twittering-goto-previous-status-of-user)))~ | =gk= | Go to previous tweet of user |
|
||||
| ~twittering-favorite~ | [[kbd:][f]] | Favorite/Like a tweet |
|
||||
| ~twittering-unfavorite~ | [[kbd:][F]] | Un-favorite/Un-like a tweet |
|
||||
| ~twittering-follow~ | [[kbd:][C-f]] | Follow user |
|
||||
| ~twittering-unfollow~ | [[kbd:][C-F]] | Un-follow user |
|
||||
| ~twittering-delete-status~ | [[kbd:][d]] | Delete a tweet |
|
||||
| ~twittering-retweet~ | [[kbd:][r]] | Retweet |
|
||||
| ~twittering-toggle-or-retrieve-replied-statuses~ | [[kbd:][R]] | Toggle or retrieve replies |
|
||||
| ~twittering-update-status-interactive~ | [[kbd:][o]] | Update tweets |
|
||||
| ~+twitter/ace-link~ | [[kbd:][O]] | Open some visible link from a ~twittering-mode~ buffer using ace |
|
||||
| ~twittering-search~ | [[kbd:][/]] | Search |
|
||||
| ~twittering-goto-next-status~ | [[kbd:][J]] | Go to next tweet |
|
||||
| ~twittering-goto-previous-status~ | [[kbd:][K]] | Go to previous tweet |
|
||||
| ~twittering-goto-first-status~ | [[kbd:][gg]] | Go to first tweet |
|
||||
| ~twittering-goto-last-status~ | [[kbd:][G]] | Go to last tweet |
|
||||
| ~twittering-goto-next-status-of-user~ | [[kbd:][gj]] | Go to next 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
|
||||
|
||||
|
|
10
modules/checkers/README.org
Normal file
10
modules/checkers/README.org
Normal 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?]]
|
|
@ -1,68 +1,76 @@
|
|||
#+TITLE: checkers/grammar
|
||||
#+DATE: January 9, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :checkers grammar
|
||||
#+subtitle: Tasing grammar mistake every you make
|
||||
#+created: January 09, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
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
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/mhayashi1120/Emacs-langtool][langtool]]
|
||||
+ [[https://github.com/bnbeckwith/writegood-mode][writegood-mode]]
|
||||
** Packages
|
||||
- [[doom-package:][langtool]]
|
||||
- [[doom-package:][writegood-mode]]
|
||||
|
||||
* Prerequisites
|
||||
This module requires langtool (which requires =Java 1.8+=).
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
It can be acquired either from https://languagetool.org/ or your OS's package
|
||||
manager:
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
+ macOS: ~brew install languagetool~
|
||||
+ Arch Linux: ~pacman -S languagetool~
|
||||
* Installation
|
||||
[[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
|
||||
get a warning that Doom =couldn't find languagetool-commandline.jar=, you will
|
||||
need to set ~langtool-language-tool-jar~ to its location.
|
||||
This module requires [[https://languagetool.org/][LanguageTool]] (which requires =Java 1.8+=).
|
||||
|
||||
* Features
|
||||
An in-depth list of features, how to use them, and their dependencies.
|
||||
It is available from either https://languagetool.org/ or your OS's package
|
||||
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
|
||||
[[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+.
|
||||
|
||||
#+begin_quote
|
||||
This requires Java 1.8+
|
||||
🚧 This requires Java 1.8+
|
||||
#+end_quote
|
||||
|
||||
*** Commands
|
||||
- ~langtool-check~
|
||||
- ~langtool-correct-buffer~
|
||||
- ~M-x langtool-check~
|
||||
- ~M-x langtool-correct-buffer~
|
||||
|
||||
** writegood-mode
|
||||
This minor mode highlights weasel words, duplication and passive voice.
|
||||
|
||||
* Configuration
|
||||
How to configure this module, including common problems and how to address them.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,149 +1,154 @@
|
|||
#+TITLE: checkers/spell
|
||||
#+DATE: February 20, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :checkers spell
|
||||
#+subtitle: Tasing you for misspelling mispelling
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#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=.
|
||||
* Description :unfold:
|
||||
This modules provides spellchecking powered by =aspell=, =hunspell= or
|
||||
=enchant=.
|
||||
|
||||
Spellcheck is automatically loaded in many ~text-mode~ derivatives, which
|
||||
includes ~org-mode~, ~markdown-mode~, the Git Commit buffer (from magit),
|
||||
~mu4e-compose-mode~, and others.
|
||||
|
||||
- Spell checking and correction using =aspell=, =hunspell= or =enchant=.
|
||||
- Ignores source code inside org or markdown files.
|
||||
- Lazily spellchecking recent changes only when idle.
|
||||
- Choosing suggestions using completion interfaces ([[doom-package:][ivy]] or [[doom-package:][helm]]).
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+flyspell= Use =flyspell= instead of =spell-fu=. It's significantly slower,
|
||||
but supports multiple languages and dictionaries.
|
||||
+ =+aspell= Use =aspell= as a backend for correcting words.
|
||||
+ =+hunspell= Use =hunspell= as a backend for correcting words.
|
||||
+ =+enchant= Use =enchant-2= as a backend for correcting words.
|
||||
+ =+everywhere= Spell check in programming modes as well (in comments).
|
||||
** Module flags
|
||||
- +aspell ::
|
||||
Use =aspell= as a backend for correcting words.
|
||||
- +enchant ::
|
||||
Use =enchant-2= as a backend for correcting words.
|
||||
- +everywhere ::
|
||||
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
|
||||
+ if =+flyspell=
|
||||
+ [[https://github.com/d12frosted/flyspell-correct][flyspell-correct]]
|
||||
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-ivy-interface][flyspell-correct-ivy]] (=completion/ivy=)
|
||||
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-helm-interface][flyspell-correct-helm]] (=completion/helm=)
|
||||
+ [[https://github.com/d12frosted/flyspell-correct#flyspell-correct-popup-interface][flyspell-correct-popup]] (if *neither* =completion/ivy=, =completion/helm= or =completion/vertico=)
|
||||
+ [[https://github.com/rolandwalker/flyspell-lazy][flyspell-lazy]]
|
||||
+ else
|
||||
+ [[https://gitlab.com/ideasman42/emacs-spell-fu][spell-fu]]
|
||||
** Packages
|
||||
- if [[doom-module:][+flyspell]]
|
||||
- [[doom-package:][flyspell-correct]]
|
||||
- [[doom-package:][flyspell-correct-ivy]] if [[doom-module:][:completion ivy]]
|
||||
- [[doom-package:][flyspell-correct-helm]] if [[doom-module:][:completion helm]]
|
||||
- [[doom-package:][flyspell-correct-popup]] unless [[doom-module:][:completion ivy]], [[doom-module:][:completion helm]], or
|
||||
[[doom-module:][:completion vertico]]
|
||||
- [[doom-package:][flyspell-lazy]]
|
||||
- else
|
||||
- [[doom-package:][spell-fu]]
|
||||
|
||||
* Prerequisites
|
||||
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).
|
||||
** 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 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
|
||||
If you *are not* using =+flyspell=, you will need aspell (and a dictionary)
|
||||
installed whether or not you have =+hunspell= or =+enchant= enabled.
|
||||
This is because =spell-fu= does not support generating the word list
|
||||
with anything other than =aspell= yet.
|
||||
🚧 If you *are not* using [[doom-module:][+flyspell]], you will need =aspell= (and a dictionary)
|
||||
installed whether or not you have [[doom-module:][+hunspell]] or [[doom-module:][+enchant]] enabled. This is
|
||||
because [[doom-package:][spell-fu]] does not support generating the word list with anything
|
||||
other than =aspell= yet.
|
||||
#+end_quote
|
||||
|
||||
** Aspell
|
||||
+ Ubuntu: ~apt-get install aspell aspell-en~
|
||||
+ macOS: ~brew install aspell~
|
||||
+ Arch Linux: ~pacman -S aspell aspell-en~
|
||||
+ NixOS:
|
||||
#+BEGIN_SRC nix
|
||||
- Ubuntu: ~$ apt-get install aspell aspell-en~
|
||||
- macOS: ~$ brew install aspell~
|
||||
- Arch Linux: ~$ pacman -S aspell aspell-en~
|
||||
- NixOS:
|
||||
#+begin_src nix
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
(aspellWithDicts (dicts: with dicts; [ en en-computers en-science ]))
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Hunspell
|
||||
+ Ubuntu: ~apt-get install hunspell~
|
||||
+ macOS: ~brew install hunspell~
|
||||
+ Arch Linux: ~pacman -S hunspell~
|
||||
+ NixOS:
|
||||
#+BEGIN_SRC nix
|
||||
- Ubuntu: ~$ apt-get install hunspell~
|
||||
- macOS: ~$ brew install hunspell~
|
||||
- Arch Linux: ~$ pacman -S hunspell~
|
||||
- NixOS:
|
||||
#+begin_src nix
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
hunspell
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Enchant
|
||||
+ Ubuntu: ~apt-get install enchant-2~
|
||||
+ macOS: ~brew install enchant~
|
||||
+ Arch Linux: ~pacman -S enchant~
|
||||
+ NixOS:
|
||||
#+BEGIN_SRC nix
|
||||
- Ubuntu: ~$ apt-get install enchant-2~
|
||||
- macOS: ~$ brew install enchant~
|
||||
- Arch Linux: ~$ pacman -S enchant~
|
||||
- NixOS:
|
||||
#+begin_src nix
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
enchant
|
||||
];
|
||||
}
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Enchant is just a wrapper for other spelling libraries
|
||||
and you will need to have at least one of the supported backends installed as well.
|
||||
Enchant is just a wrapper for other spelling libraries and you will need to
|
||||
have at least one of the supported backends installed as well.
|
||||
|
||||
* Features
|
||||
+ 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 (=ivy= or =helm=).
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
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
|
||||
major modes.
|
||||
|
||||
* Configuration
|
||||
Dictionary is set by =ispell-dictionary= variable. Can be changed locally with
|
||||
the function =ispell-change-dictionary=.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /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
|
||||
Adjust ~spell-fu-idle-delay~ to change how long Emacs waits to spellcheck after
|
||||
recent changes.
|
||||
#+BEGIN_SRC elisp
|
||||
recent changes:
|
||||
#+begin_src emacs-lisp
|
||||
(after! spell-fu
|
||||
(setq spell-fu-idle-delay 0.5)) ; default is 0.25
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
*** 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
|
||||
recent changes (default as 1), while =flyspell-lazy-window-idle-seconds= sets
|
||||
how many seconds until the whole window is spellchecked (default as 3).
|
||||
#+BEGIN_SRC elisp
|
||||
~flyspell-lazy-idle-seconds~ sets how many idle seconds until spellchecking
|
||||
recent changes (default as 1), while ~flyspell-lazy-window-idle-seconds~ sets
|
||||
how many seconds until the whole window is spellchecked (default as 3):
|
||||
#+begin_src emacs-lisp
|
||||
(after! flyspell
|
||||
(setq flyspell-lazy-idle-seconds 2))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Reducing false positives by disabling spelling on certain faces
|
||||
*** Spell-fu users
|
||||
Users can exclude what faces to preform spellchecking on by adjusting
|
||||
~+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)
|
||||
'(markdown-code-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-name-face
|
||||
markdown-html-tag-name-face))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
*** 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!~:
|
||||
#+BEGIN_SRC elisp
|
||||
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!~:
|
||||
#+begin_src emacs-lisp
|
||||
(set-flyspell-predicate! '(markdown-mode gfm-mode)
|
||||
#'+markdown-flyspell-word-p)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Flyspell predicates take no arguments and must return a boolean to determine if
|
||||
the word at point should be spell checked. For example:
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(defun +markdown-flyspell-word-p ()
|
||||
"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
|
||||
if (memq face unsafe-faces)
|
||||
return t)))))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Adding or removing words to your personal dictionary
|
||||
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=,
|
||||
respectively. =+flyspell= users can also add/remove words from the
|
||||
~flyspell-correct~ popup interface (there will be extra options on the list of
|
||||
you know are not misspellings. For evil users these are bound to [[kbd:][zg]] and [[kbd:][zw]],
|
||||
respectively. [[doom-module:][+flyspell]] users can also add/remove words from the
|
||||
[[doom-package:][flyspell-correct]] popup interface (there will be extra options on the list of
|
||||
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
|
||||
|
|
|
@ -1,66 +1,84 @@
|
|||
#+TITLE: checkers/syntax
|
||||
#+DATE: February 20, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :checkers syntax
|
||||
#+subtitle: Tasing you for every semicolon you forget
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module provides syntax checking and error highlighting, powered by
|
||||
[[doom-package:][flycheck]].
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+childframe= Enables displaying completion candidates in a child frame, rather than an overlay or tooltip (among with other UI enhancements).
|
||||
** Module flags
|
||||
- +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.*
|
||||
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/flycheck/flycheck][flycheck]]
|
||||
+ [[https://github.com/flycheck/flycheck-popup-tip][flycheck-popup-tip]]
|
||||
+ =+childframe=
|
||||
+ [[https://github.com/alexmurray/flycheck-posframe][flycheck-posframe]]
|
||||
** Packages
|
||||
- [[doom-package:][flycheck]]
|
||||
- [[doom-package:][flycheck-popup-tip]]
|
||||
- [[doom-package:][flycheck-posframe]] if [[doom-module:][+childframe]]
|
||||
|
||||
** 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
|
||||
This module has no direct prerequisites.
|
||||
** TODO Changelog
|
||||
# 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 |
|
||||
| C-c ! ? | Describe Checker ] |
|
||||
| C-c ! c | Check syntax in buffer |
|
||||
| C-c ! l | List errors |
|
||||
| C-c ! n | Next Error |
|
||||
| C-c ! p | Previous error |
|
||||
| C-c ! C | Clear all errors in buffer |
|
||||
| C-c ! e | Explain error at point |
|
||||
| C-c ! h | Display all errors at point |
|
||||
|---------+-----------------------------|
|
||||
| [[kbd:][C-c ! ?]] | Describe Checker |
|
||||
| [[kbd:][C-c ! c]] | Check syntax in buffer |
|
||||
| [[kbd:][C-c ! l]] | List errors |
|
||||
| [[kbd:][C-c ! n]] | Next Error |
|
||||
| [[kbd:][C-c ! p]] | Previous error |
|
||||
| [[kbd:][C-c ! C]] | Clear all errors in buffer |
|
||||
| [[kbd:][C-c ! e]] | Explain error at point |
|
||||
| [[kbd:][C-c ! h]] | Display all errors at point |
|
||||
|
||||
Evil Specific
|
||||
Evil Specific:
|
||||
| Keybind | Description |
|
||||
| SPC t f | Toggle Flycheck |
|
||||
| SPC c x | List errors |
|
||||
| ] e | Next error |
|
||||
| [ e | Prevous error |
|
||||
|---------+-----------------|
|
||||
| [[kbd:][SPC t f]] | Toggle Flycheck |
|
||||
| [[kbd:][SPC c x]] | List errors |
|
||||
| [[kbd:][] e]] | Next error |
|
||||
| [[kbd:][[ e]] | Prevous error |
|
||||
|
||||
* 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
|
||||
|
|
19
modules/completion/README.org
Normal file
19
modules/completion/README.org
Normal 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.
|
|
@ -1,92 +1,103 @@
|
|||
#+TITLE: completion/company
|
||||
#+DATE: February 19, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :completion company
|
||||
#+subtitle: The ultimate code completion backend
|
||||
#+created: February 19, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#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.
|
||||
* Description :unfold:
|
||||
This module provides code completion, powered by [[https://github.com/company-mode/company-mode][company-mode]]. Many of Doom's
|
||||
[[doom-module:][:lang]] modules require it for "intellisense" functionality.
|
||||
|
||||
https://assets.doomemacs.org/completion/company/overlay.png
|
||||
|
||||
** Module Flags
|
||||
+ =+childframe= Enables displaying completion candidates in a child frame,
|
||||
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*
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Plugins
|
||||
+ [[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=)
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no direct prerequisites.
|
||||
** Module flags
|
||||
- +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
|
||||
work in them. Some major modes may have no completion support at all. Check that
|
||||
major mode's module's documentation for details.
|
||||
** Packages
|
||||
- [[doom-package:][company-box]] if [[doom-module:][+childframe]]
|
||||
- [[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
|
||||
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 |
|
||||
|---------+------------------------------------------|
|
||||
| =C-n= | Go to next candidate |
|
||||
| =C-p= | Go to previous candidate |
|
||||
| =C-j= | (evil) Go to next candidate |
|
||||
| =C-k= | (evil) Go to previous candidate |
|
||||
| =C-h= | Display documentation (if available) |
|
||||
| =C-u= | Move to previous page of candidates |
|
||||
| =C-d= | Move to next page of candidates |
|
||||
| =C-s= | Filter candidates |
|
||||
| =C-S-s= | Search candidates with helm/ivy |
|
||||
| =C-SPC= | Complete common |
|
||||
| =TAB= | Complete common or select next candidate |
|
||||
| =S-TAB= | Select previous candidate |
|
||||
| [[kbd:][C-n]] | Go to next candidate |
|
||||
| [[kbd:][C-p]] | Go to previous candidate |
|
||||
| [[kbd:][C-j]] | (evil) Go to next candidate |
|
||||
| [[kbd:][C-k]] | (evil) Go to previous candidate |
|
||||
| [[kbd:][C-h]] | Display documentation (if available) |
|
||||
| [[kbd:][C-u]] | Move to previous page of candidates |
|
||||
| [[kbd:][C-d]] | Move to next page of candidates |
|
||||
| [[kbd:][C-s]] | Filter candidates |
|
||||
| [[kbd:][C-S-s]] | Search candidates with helm/ivy |
|
||||
| [[kbd:][C-SPC]] | Complete common |
|
||||
| [[kbd:][TAB]] | Complete common or select next candidate |
|
||||
| [[kbd:][S-TAB]] | Select previous candidate |
|
||||
|
||||
** Vim-esque omni-completion prefix (C-x)
|
||||
In the spirit of Vim's omni-completion, the following insert mode keybinds are
|
||||
available to evil users to access specific company backends:
|
||||
| Keybind | Description |
|
||||
|---------+-----------------------------------|
|
||||
| [[kbd:][C-x C-]]] | Complete etags |
|
||||
| [[kbd:][C-x C-f]] | Complete file path |
|
||||
| [[kbd:][C-x C-k]] | Complete from dictionary/keyword |
|
||||
| [[kbd:][C-x C-l]] | Complete full line |
|
||||
| [[kbd:][C-x C-o]] | Invoke complete-at-point function |
|
||||
| [[kbd:][C-x C-n]] | Complete next symbol at point |
|
||||
| [[kbd:][C-x C-p]] | Complete previous symbol at point |
|
||||
| [[kbd:][C-x C-s]] | Complete snippet |
|
||||
| [[kbd:][C-x s]] | Complete spelling suggestions |
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------+-----------------------------------|
|
||||
| =C-x C-]= | Complete etags |
|
||||
| =C-x C-f= | Complete file path |
|
||||
| =C-x C-k= | Complete from dictionary/keyword |
|
||||
| =C-x C-l= | Complete full line |
|
||||
| =C-x C-o= | Invoke complete-at-point function |
|
||||
| =C-x C-n= | Complete next symbol at point |
|
||||
| =C-x C-p= | Complete previous symbol at point |
|
||||
| =C-x C-s= | Complete snippet |
|
||||
| =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
|
||||
The ~set-company-backend!~ function exists for setting ~company-backends~
|
||||
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
|
||||
those modes.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(after! js2-mode
|
||||
(set-company-backend! 'js2-mode 'company-tide 'company-yasnippet))
|
||||
|
||||
|
@ -97,20 +108,18 @@ those modes.
|
|||
(after! cc-mode
|
||||
(set-company-backend! 'c-mode
|
||||
'(:separate company-irony-c-headers company-irony)))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
To unset the backends for a particular mode, pass ~nil~ to it:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(after! sh-script
|
||||
(set-company-backend! 'sh-mode nil))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* Troubleshooting
|
||||
If code completion isn't working for you, consider the following common causes
|
||||
before you file a bug report:
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
** 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.
|
||||
|
||||
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.
|
||||
|
||||
** 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
|
||||
** 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
|
||||
short a list as possible). This may mean you aren't getting all the completion
|
||||
you want or any at all.
|
||||
|
||||
Check the value of ~company-backends~ (=SPC h v company-backends=) from that
|
||||
mode to see what backends are available. Check the [[*Assigning company backend(s) to modes][Configuration section]] for
|
||||
details on changing what backends are available for that mode.
|
||||
Check the value of ~company-backends~ ([[kbd:][SPC h v company-backends]]) from that mode
|
||||
to see what backends are available. Check the [[*Assigning company backend(s) to modes][Configuration section]] for details
|
||||
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
|
||||
|
|
|
@ -1,169 +1,183 @@
|
|||
#+TITLE: completion/helm
|
||||
#+DATE: January 22, 2021
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :completion helm
|
||||
#+subtitle: A tank for hunting a house fly
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#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 :unfold:
|
||||
This module provides Helm integration for a variety of Emacs commands, as well
|
||||
as a unified interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep][Ripgrep]].
|
||||
|
||||
* Description
|
||||
This module provides Helm integration for a variety of Emacs commands, as well as
|
||||
a unified interface for project search and replace, powered by ripgrep.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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
|
||||
I prefer ivy over ido for its flexibility. I prefer ivy over helm because it's
|
||||
lighter, simpler and faster in many cases.
|
||||
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+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
|
||||
+ =+fuzzy= Enables fuzzy completion for Helm searches.
|
||||
+ =+childframe= Causes Helm to display in a floating child frame, above Emacs.
|
||||
+ =+icons= Enables icons (supports both =all-the-icons= and =treemacs= icons)
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/emacs-helm/helm][helm]]
|
||||
+ [[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=)
|
||||
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.
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
Otherwise, Helm 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.
|
||||
|
||||
* Features
|
||||
Much like Ivy, Helm is a /large/ framework and as such
|
||||
covering everything is not in scope, however a number
|
||||
of Doom-specific features are shown below:
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+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
|
||||
Similar to Ivy, this module provides an interface to
|
||||
navigate within a project using =projectile=:
|
||||
|
||||
Similar to Ivy, this module provides an interface to navigate within a project
|
||||
using [[doom-package:][projectile]]:
|
||||
| Keybind | Description |
|
||||
|------------------+-------------------------------------|
|
||||
| =SPC p f=, =SPC SPC= | Jump to file in project |
|
||||
| =SPC f f=, =SPC .= | Jump to file from current directory |
|
||||
| =SPC s i= | Jump to symbol in file |
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
|
||||
| [[kbd:][SPC s i]] | Jump to symbol in file |
|
||||
|
||||
** 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
|
||||
|
||||
| Keybind | Description |
|
||||
|---------+--------------------------|
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
Prefixing these keys with the universal argument (=SPC u= for evil users; =C-u=
|
||||
| [[kbd:][SPC s p]] | Search project |
|
||||
| [[kbd:][SPC s P]] | Search another project |
|
||||
| [[kbd:][SPC s d]] | Search this directory |
|
||||
| [[kbd:][SPC s D]] | Search another directory |
|
||||
|
||||
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
|
||||
search engine to include ignored files.
|
||||
|
||||
This module also provides Ex Commands for evil users:
|
||||
|
||||
| Ex command | Description |
|
||||
|------------------------+------------------------------------------------------------------|
|
||||
| ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) |
|
||||
| ~: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.
|
||||
|
||||
*** Replace
|
||||
|
||||
These keybindings are available while a search is active:
|
||||
| Keybind | Description |
|
||||
|---------+-----------------------------------------------|
|
||||
| [[kbd:][C-c C-o]] | Open a buffer with your search results |
|
||||
| [[kbd:][C-c C-e]] | Open a writable buffer of your search results |
|
||||
| [[kbd:][C-SPC]] | Preview the current candidate |
|
||||
| [[kbd:][C-RET]] | Open the selected candidate in other-window |
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------+-----------------------------------------------|
|
||||
| =C-c C-o= | Open a buffer with your search results |
|
||||
| =C-c C-e= | Open a writable buffer of your search results |
|
||||
| =C-SPC= | Preview the current candidate |
|
||||
| =C-RET= | Open the selected candidate in other-window |
|
||||
|
||||
Changes to the resulting wgrep buffer (opened by =C-c C-e=) can be committed
|
||||
with =C-c C-c= and aborted with =C-c C-k= (alternatively =ZZ= and =ZQ=, for evil
|
||||
users).
|
||||
Changes to the resulting wgrep buffer (opened by [[kbd:][C-c C-e]]) can be committed with
|
||||
[[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]] (alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users).
|
||||
|
||||
** In-buffer searching
|
||||
The =swiper= package provides an interactive buffer search powered by helm. It
|
||||
can be invoked with:
|
||||
The [[doom-package:][swiper]] package provides an interactive buffer search powered by helm. It can
|
||||
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~)
|
||||
+ =SPC s S= (~swiper-isearch-thing-at-point~)
|
||||
+ =SPC s b= (~swiper~)
|
||||
+ ~:sw[iper] [QUERY]~
|
||||
A wgrep buffer can be opened from swiper with [[kbd:][C-c C-e]].
|
||||
|
||||
A wgrep buffer can be opened from swiper with =C-c C-e=.
|
||||
** Helm integration for various completing commands
|
||||
Helm also has a number of overrides for built-in functionality:
|
||||
|
||||
*** General
|
||||
| Keybind | Description |
|
||||
|------------+---------------------------|
|
||||
| =M-x=, =SPC := | Smarter, smex-powered M-x |
|
||||
| =SPC '= | Resume last ivy session |
|
||||
| [[kbd:][M-x]], [[kbd:][SPC :]] | Smarter, smex-powered M-x |
|
||||
| [[kbd:][SPC ']] | Resume last ivy session |
|
||||
|
||||
*** Jump to files, buffers or projects
|
||||
| Keybind | Description |
|
||||
|------------------+---------------------------------------|
|
||||
| =SPC RET= | Find bookmark |
|
||||
| =SPC f f=, =SPC .= | Browse from current directory |
|
||||
| =SPC p f=, =SPC SPC= | Find file in project |
|
||||
| =SPC f r= | Find recently opened file |
|
||||
| =SPC p p= | Open another project |
|
||||
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace |
|
||||
| =SPC b B=, =SPC <= | Switch to buffer |
|
||||
| [[kbd:][SPC RET]] | Find bookmark |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
|
||||
| [[kbd:][SPC f r]] | Find recently opened file |
|
||||
| [[kbd:][SPC p p]] | Open another project |
|
||||
| [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
|
||||
| [[kbd:][SPC b B]], [[kbd:][SPC <]] | Switch to buffer |
|
||||
|
||||
*** Search
|
||||
| Keybind | Description |
|
||||
|---------+-------------------------------------------|
|
||||
| =SPC p t= | List all TODO/FIXMEs in project |
|
||||
| =SPC s b= | Search the current buffer |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
| =SPC s i= | Search for symbol in current buffer |
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s s= | Search the current buffer (incrementally) |
|
||||
| [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
|
||||
| [[kbd:][SPC s b]] | Search the current buffer |
|
||||
| [[kbd:][SPC s d]] | Search this directory |
|
||||
| [[kbd:][SPC s D]] | Search another directory |
|
||||
| [[kbd:][SPC s i]] | Search for symbol in current buffer |
|
||||
| [[kbd:][SPC s p]] | Search project |
|
||||
| [[kbd:][SPC s P]] | Search another project |
|
||||
| [[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 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]]).
|
||||
By default, to maintain consistency we use =all-the-icons=; however if you wish
|
||||
to modify this you can do so using the below snippet:
|
||||
Icon support is now included, through one of two providers: [[doom-package:][all-the-icons]] and
|
||||
[[doom-package:][treemacs]]. By default, to maintain consistency we use [[doom-package:][all-the-icons]]; however if
|
||||
you wish to modify this you can do so using the below snippet:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(after! helm
|
||||
(setq helm-icons-provider 'treemacs))
|
||||
#+end_src
|
||||
|
||||
** Posframe
|
||||
** TODO Posframe
|
||||
|
||||
* 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
|
||||
|
|
57
modules/completion/ido/README.org
Normal file
57
modules/completion/ido/README.org
Normal 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
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
(use-package! ido
|
||||
:hook (doom-first-input . ido-mode)
|
||||
:hook (ido-mode . ido-everywhere)
|
||||
:hook (ido-mode . ido-ubiquitous-mode)
|
||||
:preface
|
||||
;; HACK `ido' is a really old package. It defines `ido-mode' manually and
|
||||
|
@ -29,7 +28,8 @@
|
|||
ido-confirm-unique-completion t
|
||||
ido-case-fold t
|
||||
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)
|
||||
"C-w" #'ido-delete-backward-word-updir
|
||||
|
|
|
@ -1,28 +1,10 @@
|
|||
#+TITLE: completion/ivy
|
||||
#+DATE: February 13, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :completion ivy
|
||||
#+subtitle: Yesterday's lightest search engine
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
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]].
|
||||
|
||||
|
@ -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.
|
||||
#+end_quote
|
||||
|
||||
** Module Flags
|
||||
+ =+fuzzy= Enables fuzzy completion for Ivy searches.
|
||||
+ =+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.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/abo-abo/swiper][ivy]]
|
||||
+ [[https://github.com/abo-abo/swiper][counsel]]
|
||||
+ [[https://github.com/ericdanan/counsel-projectile][counsel-projectile]]
|
||||
+ [[https://github.com/abo-abo/swiper][swiper]]
|
||||
+ [[https://github.com/abo-abo/swiper][ivy-hydra]]
|
||||
+ [[https://github.com/yevgnen/ivy-rich][ivy-rich]]
|
||||
+ [[https://github.com/mhayashi1120/Emacs-wgrep][wgrep]]
|
||||
+ [[https://github.com/DarwinAwardWinner/amx][amx]]
|
||||
+ [[https://github.com/lewang/flx][flx]]* (=+fuzzy=)
|
||||
+ [[https://github.com/raxod502/prescient.el][prescient]]* (=+prescient=)
|
||||
+ [[https://github.com/tumashu/ivy-posframe][ivy-posframe]]* (=+childframe=)
|
||||
+ [[https://github.com/asok/all-the-icons-ivy][all-the-icons-ivy]]* (=+icons=)
|
||||
** Module flags
|
||||
- +childframe ::
|
||||
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
|
||||
GUI Emacs.*
|
||||
- +fuzzy ::
|
||||
Enable fuzzy completion for Ivy searches.
|
||||
- +icons ::
|
||||
Enable file icons for switch-{buffer,project}/find-file commands.
|
||||
- +prescient ::
|
||||
Enable prescient filtering and sorting for Ivy searches.
|
||||
|
||||
** Packages
|
||||
- [[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
|
||||
+ 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
|
||||
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)
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
* Features
|
||||
Ivy and its ilk are large plugins. Covering everything about them is outside of
|
||||
this documentation's scope, so only Doom-specific Ivy features are listed here:
|
||||
* 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]], 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
|
||||
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~
|
||||
and ~ivy~ together.
|
||||
Command-T, this module provides similar functionality by bringing [[doom-package:][projectile]] and
|
||||
[[doom-package:][ivy]] together.
|
||||
|
||||
https://assets.doomemacs.org/completion/ivy/projectile.png
|
||||
|
||||
| Keybind | Description |
|
||||
|----------------------+-------------------------------------|
|
||||
| =SPC p f=, =SPC SPC= | Jump to file in project |
|
||||
| =SPC f f=, =SPC .= | Jump to file from current directory |
|
||||
| =SPC s i= | Jump to symbol in file |
|
||||
| Keybind | Description |
|
||||
|------------------+-------------------------------------|
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
|
||||
| [[kbd:][SPC s i]] | Jump to symbol in file |
|
||||
|
||||
** Project search & replace
|
||||
This module provides interactive text search and replace using ripgrep.
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------+--------------------------|
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
| Keybind | Description |
|
||||
|---------+--------------------------|
|
||||
| [[kbd:][SPC s p]] | Search project |
|
||||
| [[kbd:][SPC s P]] | Search another project |
|
||||
| [[kbd:][SPC s d]] | Search this directory |
|
||||
| [[kbd:][SPC s D]] | Search another directory |
|
||||
|
||||
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.
|
||||
|
||||
This module also provides Ex Commands for evil users:
|
||||
|
||||
| Ex command | Description |
|
||||
|------------------------+------------------------------------------------------------------|
|
||||
| ~:pg[rep][!] [QUERY]~ | Search project (if ~!~, include hidden files) |
|
||||
|
@ -108,65 +113,79 @@ commands.
|
|||
-----
|
||||
|
||||
These keybindings are available while a search is active:
|
||||
| Keybind | Description |
|
||||
|---------+-----------------------------------------------|
|
||||
| [[kbd:][C-c C-o]] | Open a buffer with your search results |
|
||||
| [[kbd:][C-c C-e]] | Open a writable buffer of your search results |
|
||||
| [[kbd:][C-SPC]] | Preview the current candidate |
|
||||
| [[kbd:][C-RET]] | Open the selected candidate in other-window |
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------+-----------------------------------------------|
|
||||
| =C-c C-o= | Open a buffer with your search results |
|
||||
| =C-c C-e= | Open a writable buffer of your search results |
|
||||
| =C-SPC= | Preview the current candidate |
|
||||
| =C-RET= | Open the selected candidate in other-window |
|
||||
|
||||
Changes to the resulting wgrep buffer (opened by =C-c C-e=) can be committed
|
||||
with =C-c C-c= and aborted with =C-c C-k= (alternatively =ZZ= and =ZQ=, for evil
|
||||
users).
|
||||
Changes to the resulting wgrep buffer (opened by [[kbd:][C-c C-e]]) can be committed with
|
||||
[[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]] (alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users).
|
||||
|
||||
https://assets.doomemacs.org/completion/ivy/search-replace.png
|
||||
|
||||
** 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:
|
||||
|
||||
+ =SPC s s= (~swiper-isearch~)
|
||||
+ =SPC s S= (~swiper-isearch-thing-at-point~)
|
||||
+ =SPC s b= (~swiper~)
|
||||
+ ~:sw[iper] [QUERY]~
|
||||
- [[kbd:][SPC s s]] (~swiper-isearch~)
|
||||
- [[kbd:][SPC s S]] (~swiper-isearch-thing-at-point~)
|
||||
- [[kbd:][SPC s b]] (~swiper~)
|
||||
- ~:sw[iper] [QUERY]~
|
||||
|
||||
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
|
||||
*** General
|
||||
| Keybind | Description |
|
||||
|----------------+---------------------------|
|
||||
| =M-x=, =SPC := | Smarter, smex-powered M-x |
|
||||
| =SPC '= | Resume last ivy session |
|
||||
| Keybind | Description |
|
||||
|------------+---------------------------|
|
||||
| [[kbd:][M-x]], [[kbd:][SPC :]] | Smarter, smex-powered M-x |
|
||||
| [[kbd:][SPC ']] | Resume last ivy session |
|
||||
|
||||
*** Jump to files, buffers or projects
|
||||
| Keybind | Description |
|
||||
|----------------------+---------------------------------------|
|
||||
| =SPC RET= | Find bookmark |
|
||||
| =SPC f f=, =SPC .= | Browse from current directory |
|
||||
| =SPC p f=, =SPC SPC= | Find file in project |
|
||||
| =SPC f r= | Find recently opened file |
|
||||
| =SPC p p= | Open another project |
|
||||
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace |
|
||||
| =SPC b B=, =SPC <= | Switch to buffer |
|
||||
| Keybind | Description |
|
||||
|------------------+---------------------------------------|
|
||||
| [[kbd:][SPC RET]] | Find bookmark |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
|
||||
| [[kbd:][SPC f r]] | Find recently opened file |
|
||||
| [[kbd:][SPC p p]] | Open another project |
|
||||
| [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
|
||||
| [[kbd:][SPC b B]], [[kbd:][SPC <]] | Switch to buffer |
|
||||
|
||||
*** Search
|
||||
| Keybind | Description |
|
||||
|-----------+-------------------------------------------|
|
||||
| =SPC p t= | List all TODO/FIXMEs in project |
|
||||
| =SPC s b= | Search the current buffer |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
| =SPC s i= | Search for symbol in current buffer |
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s s= | Search the current buffer (incrementally) |
|
||||
| Keybind | Description |
|
||||
|---------+-------------------------------------------|
|
||||
| [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
|
||||
| [[kbd:][SPC s b]] | Search the current buffer |
|
||||
| [[kbd:][SPC s d]] | Search this directory |
|
||||
| [[kbd:][SPC s D]] | Search another directory |
|
||||
| [[kbd:][SPC s i]] | Search for symbol in current buffer |
|
||||
| [[kbd:][SPC s p]] | Search project |
|
||||
| [[kbd:][SPC s P]] | Search another project |
|
||||
| [[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 Change the position of the ivy childframe
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,73 +1,66 @@
|
|||
#+TITLE: completion/vertico
|
||||
#+DATE: July 25, 2021
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :completion vertico
|
||||
#+subtitle: Tomorrow's search engine
|
||||
#+created: July 25, 2021
|
||||
#+since: 21.12.0 (#4664)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module enhances the Emacs search and completion experience, and also
|
||||
provides a united interface for project search and replace, powered by [[https://github.com/BurntSushi/ripgrep/][ripgrep]].
|
||||
|
||||
It does this with several modular packages focused on enhancing the built-in
|
||||
~completing-read~ interface, rather than replacing it with a parallel ecosystem
|
||||
like =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
|
||||
+ Consult, which provides a suite of useful commands using ~completing-read~
|
||||
+ Embark, which provides a set of minibuffer actions
|
||||
+ Marginalia, which provides annotations to completion candidates
|
||||
+ Orderless, which provides better filtering methods
|
||||
- Vertico, which provides the vertical completion user interface
|
||||
- Consult, which provides a suite of useful commands using ~completing-read~
|
||||
- Embark, which provides a set of minibuffer actions
|
||||
- Marginalia, which provides annotations to completion candidates
|
||||
- Orderless, which provides better filtering methods
|
||||
|
||||
** Maintainers
|
||||
+ @iyefrat
|
||||
- [[doom-user:][@iyefrat]]
|
||||
|
||||
** Module Flags
|
||||
+ =+icons= Adds icons to =file= and =buffer= category completion selections.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/minad/vertico][vertico]]
|
||||
+ [[https://github.com/minad/consult][consult]]
|
||||
+ [[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=)
|
||||
** Module flags
|
||||
- +icons ::
|
||||
Add icons to =file= and =buffer= category completion selections.
|
||||
|
||||
* Prerequisites
|
||||
Some of the advanced filtering features in async =consult= commands require
|
||||
=grep= and =ripgrep= to be built with support for [[https://www.pcre.org/][PCRE]] lookahead, see [[#async-search-commands][Async
|
||||
search commands]] for more information. You can check if this is true for your
|
||||
machine by running ~doom doctor~.
|
||||
** Packages
|
||||
- [[doom-package:][all-the-icons-completion]] if [[doom-module:][+icons]]
|
||||
- [[doom-package:][consult]]
|
||||
- [[doom-package:][consult-flycheck]] if [[doom-module:][:checkers syntax]]
|
||||
- [[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~
|
||||
function, which is used by any function that requires completion. Due to this
|
||||
|
@ -79,118 +72,117 @@ Doom-specific additions:
|
|||
When in an active Vertico completion session, the following doom added
|
||||
keybindings are available:
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------------------+-------------------------------------------------------------------------------|
|
||||
| =C-k= | (evil) Go to previous candidate |
|
||||
| =C-j= | (evil) Go to next candidate |
|
||||
| =C-M-k= | (evil) Go to previous group |
|
||||
| =C-M-j= | (evil) Go to next group |
|
||||
| =C-;= or =<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) |
|
||||
| =C-c C-l= | ~embark-collect~ the current candidate list (collect verbatim) |
|
||||
| =C-SPC= | Preview the current candidate |
|
||||
| Keybind | Description |
|
||||
|-------------------+----------------------------------------------------------------|
|
||||
| [[kbd:][C-k]] | (evil) Go to previous candidate |
|
||||
| [[kbd:][C-j]] | (evil) Go to next candidate |
|
||||
| [[kbd:][C-M-k]] | (evil) Go to previous group |
|
||||
| [[kbd:][C-M-j]] | (evil) Go to next group |
|
||||
| [[kbd:][C-;]] or [[kbd:][<leader> a]] | Open an ~embark-act~ menu to chose a useful action |
|
||||
| [[kbd:][C-c C-;]] | export the current candidate list to a buffer |
|
||||
| [[kbd:][C-c C-l]] | ~embark-collect~ the current candidate list (collect verbatim) |
|
||||
| [[kbd:][C-SPC]] | Preview the current candidate |
|
||||
|
||||
~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
|
||||
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
|
||||
due to Marginalia annotations.
|
||||
|
||||
** Jump-to navigation
|
||||
This module provides an interface to navigate within a project using
|
||||
=projectile=:
|
||||
[[doom-package:][projectile]]:
|
||||
|
||||
https://assets.doomemacs.org/completion/vertico/projectile.png
|
||||
|
||||
| Keybind | Description |
|
||||
|----------------------+-------------------------------------|
|
||||
| =SPC p f=, =SPC SPC= | Jump to file in project |
|
||||
| =SPC f f=, =SPC .= | Jump to file from current directory |
|
||||
| =SPC s i= | Jump to symbol in file |
|
||||
| Keybind | Description |
|
||||
|------------------+-------------------------------------|
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Jump to file in project |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Jump to file from current directory |
|
||||
| [[kbd:][SPC s i]] | Jump to symbol in file |
|
||||
|
||||
** Project search & replace
|
||||
This module provides interactive text search and replace using ripgrep.
|
||||
|
||||
| Keybind | Description |
|
||||
|-----------+--------------------------|
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
| Keybind | Description |
|
||||
|---------+--------------------------|
|
||||
| [[kbd:][<leader> s p]] | Search project |
|
||||
| [[kbd:][<leader> s P]] | Search another project |
|
||||
| [[kbd:][<leader> s d]] | Search this directory |
|
||||
| [[kbd:][<leader> s D]] | Search another directory |
|
||||
|
||||
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
|
||||
search engine to include ignored files.
|
||||
|
||||
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]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.
|
||||
|
||||
-----
|
||||
|
||||
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
|
||||
editing the changes can be committed with =C-c C-c= and aborted with =C-c C-k=
|
||||
(alternatively =ZZ= and =ZQ=, for evil users). It uses =wgrep= for grep
|
||||
searches, =wdired= for file searches, and =occur= for buffer searches.
|
||||
exporting the current candidate list to an editable buffer [[kbd:][C-c C-e]]. After
|
||||
editing the changes can be committed with [[kbd:][C-c C-c]] and aborted with [[kbd:][C-c C-k]]
|
||||
(alternatively [[kbd:][ZZ]] and [[kbd:][ZQ]], for evil users). It uses [[doom-package:][wgrep]] for grep searches,
|
||||
[[doom-package:][wdired]] for file searches, and =occur= for buffer searches.
|
||||
|
||||
https://assets.doomemacs.org/completion/vertico/search-replace.png
|
||||
|
||||
** In-buffer searching
|
||||
This module provides some in buffer searching bindings:
|
||||
|
||||
+ =SPC s s= (~isearch~)
|
||||
+ =SPC s S= (~+vertico/search-symbol-at-point~ via ~consult-line~)
|
||||
+ =SPC s b= (~consult-line~)
|
||||
- [[kbd:][SPC s s]] (~isearch~)
|
||||
- [[kbd:][SPC s S]] (~+vertico/search-symbol-at-point~ via ~consult-line~)
|
||||
- [[kbd:][SPC s b]] (~consult-line~)
|
||||
|
||||
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
|
||||
*** General
|
||||
| Keybind | Description |
|
||||
|----------------+-----------------------------|
|
||||
| =M-x=, =SPC := | Enhanced M-x |
|
||||
| =SPC '= | Resume last Vertico session |
|
||||
| Keybind | Description |
|
||||
|------------+-----------------------------|
|
||||
| [[kbd:][M-x]], [[kbd:][SPC :]] | Enhanced M-x |
|
||||
| [[kbd:][SPC ']] | Resume last Vertico session |
|
||||
|
||||
*** Jump to files, buffers or projects
|
||||
| Keybind | Description |
|
||||
|----------------------+---------------------------------------|
|
||||
| =SPC RET= | Find bookmark |
|
||||
| =SPC f f=, =SPC .= | Browse from current directory |
|
||||
| =SPC p f=, =SPC SPC= | Find file in project |
|
||||
| =SPC f r= | Find recently opened file |
|
||||
| =SPC p p= | Open another project |
|
||||
| =SPC b b=, =SPC ,= | Switch to buffer in current workspace |
|
||||
| =SPC b B=, =SPC <= | Switch to buffer |
|
||||
| Keybind | Description |
|
||||
|------------------+---------------------------------------|
|
||||
| [[kbd:][SPC RET]] | Find bookmark |
|
||||
| [[kbd:][SPC f f]], [[kbd:][SPC .]] | Browse from current directory |
|
||||
| [[kbd:][SPC p f]], [[kbd:][SPC SPC]] | Find file in project |
|
||||
| [[kbd:][SPC f r]] | Find recently opened file |
|
||||
| [[kbd:][SPC p p]] | Open another project |
|
||||
| [[kbd:][SPC b b]], [[kbd:][SPC ,]] | Switch to buffer in current workspace |
|
||||
| [[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
|
||||
selecting a buffer from the third workspace by typing =3 SPC= into the prompt,
|
||||
or the last workspace by typing =0 SPC=.
|
||||
selecting a buffer from the third workspace by typing [[kbd:][3 SPC]] into the prompt, or
|
||||
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
|
||||
| Keybind | Description |
|
||||
|-----------+-------------------------------------------|
|
||||
| =SPC p t= | List all TODO/FIXMEs in project |
|
||||
| =SPC s b= | Search the current buffer |
|
||||
| =SPC s d= | Search this directory |
|
||||
| =SPC s D= | Search another directory |
|
||||
| =SPC s i= | Search for symbol in current buffer |
|
||||
| =SPC s p= | Search project |
|
||||
| =SPC s P= | Search another project |
|
||||
| =SPC s s= | Search the current buffer (incrementally) |
|
||||
| Keybind | Description |
|
||||
|---------+-------------------------------------------|
|
||||
| [[kbd:][SPC p t]] | List all TODO/FIXMEs in project |
|
||||
| [[kbd:][SPC s b]] | Search the current buffer |
|
||||
| [[kbd:][SPC s d]] | Search this directory |
|
||||
| [[kbd:][SPC s D]] | Search another directory |
|
||||
| [[kbd:][SPC s i]] | Search for symbol in current buffer |
|
||||
| [[kbd:][SPC s p]] | Search project |
|
||||
| [[kbd:][SPC s P]] | Search another project |
|
||||
| [[kbd:][SPC s s]] | Search the current buffer (incrementally) |
|
||||
|
||||
*** File Path Completion
|
||||
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~:
|
||||
| Keybind | Description |
|
||||
|---------+-------------------------------------------------------------|
|
||||
| =TAB= | Select or deselect current candidate |
|
||||
| =RET= | Enters selected candidates (also toggles current candidate) |
|
||||
| [[kbd:][TAB]] | Select or deselect current candidate |
|
||||
| [[kbd:][RET]] | Enters selected candidates (also toggles current candidate) |
|
||||
|
||||
*** Async search commands
|
||||
:PROPERTIES:
|
||||
:ID: 4ab16bf0-f9e8-4798-8632-ee7b13d2291e
|
||||
:END:
|
||||
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
|
||||
command until you type a second seperator, afterwhich the candidate list will be
|
||||
filtered with Emacs instead (and can be filtered using =orderless=, for
|
||||
example). The specific seperator character can be changed by editing it, and
|
||||
might be different if the initial input already contains =#=.
|
||||
filtered with Emacs instead (and can be filtered using [[doom-package:][orderless]], for example).
|
||||
The specific seperator character can be changed by editing it, and might be
|
||||
different if the initial input already contains =#=.
|
||||
|
||||
Note that grep-like async commands translate the input (between the first and
|
||||
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
|
||||
| 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
|
||||
extra information the nature of the symbol. For the meaning of the annotations
|
||||
see ~marginalia--symbol-class~.
|
||||
Marginalia annotations for symbols (e.g. [[kbd:][SPC h f]] and [[kbd:][SPC h v]]) come with extra
|
||||
information the nature of the symbol. For the meaning of the annotations see
|
||||
~marginalia--symbol-class~.
|
||||
|
||||
** Orderless filtering
|
||||
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
|
||||
=foobar.org=, instead of option 1., use option 2.:
|
||||
|
||||
1. (BAD) Enter =foo TAB=, completes to =foobar.=, enter =org RET=
|
||||
2. (GOOD) Enter =foo SPC org RET=
|
||||
1. (BAD) Enter ~foo TAB~, completes to =foobar.=, enter ~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:
|
||||
| Input | Description |
|
||||
|------------------+----------------------------------------------|
|
||||
| =!foo= | match without literal 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 only with literal input =foo= |
|
||||
| =~foo= or =foo~= | match input =foo= with fuzzy/flex matching |
|
||||
| Input | Description |
|
||||
|--------------+------------------------------------------|
|
||||
| ~!foo~ | match without literal 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 only with literal input =foo= |
|
||||
| ~~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 provides several [[https://github.com/minad/vertico#extensions][extentions]] that can be used to extend it's interface
|
||||
|
||||
** Consult
|
||||
Much of the behaviour of Consult commands can be changed with
|
||||
~consult-customize~. The =vertico= module already does this, if you want to
|
||||
override the module's modifications, do:
|
||||
#+begin_src emacs-lisp
|
||||
(setq consult--read-config nil)
|
||||
(consult-customize
|
||||
;...
|
||||
)
|
||||
(consult-customize ...)
|
||||
#+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
|
||||
an extent on non-consult commands as well.
|
||||
|
||||
** Marginalia
|
||||
You can add more Marginalia annotation levels and change the existing ones by
|
||||
editing ~marginalia-annotator-registry~
|
||||
editing ~marginalia-annotator-registry~
|
||||
|
||||
** Embark
|
||||
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
|
||||
by defining them [[https://github.com/minad/marginalia/#adding-custom-annotators-or-classifiers][through marginalia]], and embark picks up on them.
|
||||
~embark-$cat-map~, and even add new categories. Note that you add categories by
|
||||
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
11
modules/config/README.org
Normal 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?]]
|
|
@ -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:
|
||||
|
||||
+ A Spacemacs-esque keybinding scheme
|
||||
+ Extra Ex commands for evil-mode users
|
||||
+ A yasnippet snippets library tailored to Doom emacs
|
||||
+ A configuration for (almost) universally repeating searches with =;= and =,=
|
||||
- A Spacemacs-inspired keybinding scheme
|
||||
- A configuration for (almost) universally repeating searches with [[kbd:][;]] and [[kbd:][,]]
|
||||
- A [[doom-package:][smartparens]] configuration for smart completion of certain delimiters, like
|
||||
~/* */~ command blocks in C-languages, ~<?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
|
||||
The defaults module is intended as a "reasonable-defaults" module, but also as a
|
||||
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.
|
||||
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#install][Install]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#im-not-an-evil-user][I'm not an evil user...]]
|
||||
- [[#appendix][Appendix]]
|
||||
- [[#commands][Commands]]
|
||||
- [[#hacks][Hacks]]
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* Install
|
||||
This module has no external dependencies.
|
||||
* Troubleshooting
|
||||
/There are no known problems with this module./ [[doom-report:][Report one?]]
|
||||
|
||||
* Configuration
|
||||
** I'm not an evil user...
|
||||
That's fine. All evil configuration is ignored if =:editor evil= is disabled.
|
||||
* 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
|
||||
|
||||
* Appendix
|
||||
** Commands
|
||||
+ ~+default/browse-project~
|
||||
+ ~+default/browse-templates~
|
||||
+ ~+default/find-in-templates~
|
||||
+ ~+default/browse-notes~
|
||||
+ ~+default/find-in-notes~
|
||||
+ ~+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+!*
|
||||
- ~+default/browse-project~
|
||||
- ~+default/browse-templates~
|
||||
- ~+default/find-in-templates~
|
||||
- ~+default/browse-notes~
|
||||
- ~+default/find-in-notes~
|
||||
- ~+default/find-in-snippets~
|
||||
|
|
|
@ -1,106 +1,125 @@
|
|||
#+TITLE: config/literate
|
||||
#+DATE: May 4, 2020
|
||||
#+SINCE: v2.0.9
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :config literate
|
||||
#+subtitle: Disguise your config as poor documentation
|
||||
#+created: May 28, 2020
|
||||
#+since: 2.0.9
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module enables support for a literate config.
|
||||
|
||||
A literate config consists of a =DOOMDIR/config.org=. All src blocks within are
|
||||
tangled =DOOMDIR/config.el=, by default, when ~doom sync~ is executed.
|
||||
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.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
This module installs no plugins.
|
||||
** Packages
|
||||
/This module doesn't install any packages./
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Features
|
||||
+ Automatically tangles ~config.org~ to ~config.el~ when saving. See
|
||||
Troubleshooting section belong on how to disable it.
|
||||
** 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 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
|
||||
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
|
||||
=DOOMDIR/cli.el=.
|
||||
To change this it must be modified early -- in =$DOOMDIR/init.el= or
|
||||
=$DOOMDIR/cli.el=.
|
||||
|
||||
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
|
||||
blocks are tangled to ~config.el~, but ~elisp~ gives correct syntax
|
||||
example ~#+begin_src emacs-lisp~, but it doesn't matter what language is used.
|
||||
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
|
||||
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
|
||||
By default, this module tangles all src emacs-lisp blocks to config.el unless
|
||||
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~
|
||||
- Disable tangling of the block altogether with ~:tangle no~
|
||||
- Or force non-elisp src blocks to tangle somewhere
|
||||
|
||||
For example:
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_SRC elisp :tangle no
|
||||
#+begin_src org
|
||||
,#+begin_src emacs-lisp :tangle no
|
||||
(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! 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
|
||||
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
|
||||
,#+END_SRC
|
||||
#+END_SRC
|
||||
,#+end_src
|
||||
#+end_src
|
||||
|
||||
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
|
||||
** 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
|
||||
literate), this module won't cut it. =init.el= is loaded long before
|
||||
=config.org= is tangled in the ~doom sync~ process.
|
||||
literate), this module won't cut it. =init.el= files in modules are loaded long
|
||||
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
|
||||
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
|
||||
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
|
||||
slow, produces too much noise, or happens too often (on unrelated org files in
|
||||
your =DOOMDIR=). This behavior can be disabled with:
|
||||
#+BEGIN_SRC elisp
|
||||
;; add to DOOMDIR/config.el
|
||||
your =$DOOMDIR=). This behavior can be disabled with:
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/config.el
|
||||
(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
10
modules/editor/README.org
Normal 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?]]
|
|
@ -1,114 +1,114 @@
|
|||
#+TITLE: editor/evil
|
||||
#+DATE: February 2, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor evil
|
||||
#+subtitle: The text editor Emacs was missing
|
||||
#+created: April 08, 2020
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This holy module brings the Vim editing model to Emacs.
|
||||
|
||||
* Description
|
||||
This holy module brings the vim experience to Emacs.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
+ =+everywhere= Enables evilified keybinds everywhere possible. Uses the
|
||||
[[https://github.com/emacs-evil/evil-collection][evil-collection]] plugin as a foundation.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/emacs-evil/evil][evil]]
|
||||
+ [[https://github.com/wcsmith/evil-args][evil-args]]
|
||||
+ [[https://github.com/PythonNut/evil-easymotion][evil-easymotion]]
|
||||
+ [[https://github.com/cute-jumper/evil-embrace.el][evil-embrace]]
|
||||
+ [[https://github.com/syl20bnr/evil-escape][evil-escape]]
|
||||
+ [[https://github.com/Dewdrops/evil-exchange][evil-exchange]]
|
||||
+ [[https://github.com/TheBB/evil-indent-plus][evil-indent-plus]]
|
||||
+ [[https://github.com/edkolev/evil-lion][evil-lion]]
|
||||
+ [[https://github.com/redguardtoo/evil-nerd-commenter][evil-nerd-commentary]]
|
||||
+ [[https://github.com/cofi/evil-numbers][evil-numbers]]
|
||||
+ [[https://github.com/noctuid/evil-textobj-anyblock][evil-textobj-anyblock]]
|
||||
+ [[https://github.com/hlissner/evil-snipe][evil-snipe]]
|
||||
+ [[https://github.com/emacs-evil/evil-surround][evil-surround]]
|
||||
+ [[https://github.com/alexmurray/evil-vimish-fold][evil-vimish-fold]]
|
||||
+ [[https://github.com/bling/evil-visualstar][evil-visualstar]]
|
||||
+ [[https://github.com/ninrod/exato][exato]]
|
||||
+ [[https://github.com/emacs-evil/evil-collection][evil-collection]]*
|
||||
+ [[https://www.github.com/rgrinberg/evil-quick-diff][evil-quick-diff]]
|
||||
** Module flags
|
||||
- +everywhere ::
|
||||
Enable evilified keybinds everywhere possible. Uses the [[https://github.com/emacs-evil/evil-collection][evil-collection]] plugin
|
||||
as a foundation.
|
||||
|
||||
** Packages
|
||||
- [[doom-package:][evil]]
|
||||
- [[doom-package:][evil-args]]
|
||||
- [[doom-package:][evil-collection]] if [[doom-module:][+everywhere]]
|
||||
- [[doom-package:][evil-easymotion]]
|
||||
- [[doom-package:][evil-embrace]]
|
||||
- [[doom-package:][evil-escape]]
|
||||
- [[doom-package:][evil-exchange]]
|
||||
- [[doom-package:][evil-indent-plus]]
|
||||
- [[doom-package:][evil-lion]]
|
||||
- [[doom-package:][evil-nerd-commentary]]
|
||||
- [[doom-package:][evil-numbers]]
|
||||
- [[doom-package:][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
|
||||
+ 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~).
|
||||
+ In visual mode, =*= and =#= will search for the current selection instead of
|
||||
the word-at-point.
|
||||
+ The ~:g[lobal]~ ex command has been modified to highlight matches.
|
||||
+ More of vim's filename modifiers are supported in ex commands (like ~:p~,
|
||||
- In visual mode, [[kbd:][*]] and [[kbd:][#]] will search for the current selection instead of the
|
||||
word-at-point.
|
||||
- The ~:g[lobal]~ ex command has been modified to highlight matches.
|
||||
- More of vim's filename modifiers are supported in ex commands (like ~:p~,
|
||||
~: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).
|
||||
|
||||
* Prerequisites
|
||||
This module has no external 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 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
|
||||
The following vim plugins have been ported to evil:
|
||||
|
||||
| Vim Plugin | Emacs Plugin | Keybind(s) |
|
||||
|-----------------------+--------------------------------+--------------------------------------------|
|
||||
| vim-commentary | evil-nerd-commenter | omap =gc= |
|
||||
| vim-easymotion | evil-easymotion | omap =gs= |
|
||||
| vim-lion | evil-lion | omap =gl= / =gL= |
|
||||
| vim-seek or vim-sneak | evil-snipe | mmap =s= / =S=, omap =z= / =Z= & =x= / =X= |
|
||||
| vim-surround | evil-embrace and evil-surround | vmap =S=, omap =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 Plugin | Emacs Plugin | Keybind(s) |
|
||||
|-----------------------+--------------------------------+--------------------------------|
|
||||
| vim-commentary | evil-nerd-commenter | omap [[kbd:][gc]] |
|
||||
| vim-easymotion | evil-easymotion | omap [[kbd:][gs]] |
|
||||
| vim-lion | evil-lion | omap [[kbd:][gl]] / [[kbd:][gL]] |
|
||||
| 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 [[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]] |
|
||||
|
||||
This module has also ported vim-unimpaired keybinds to Emacs.
|
||||
|
||||
In other modules:
|
||||
+ The tools/neotree & tools/treemacs modules provide a =NERDTree= equivalent.
|
||||
+ The editor/multiple-cursors module contains functionality equal to the
|
||||
- The [[doom-module:][:ui neotree]] & [[doom-module:][:ui treemacs]] modules provide a =NERDTree= equivalent.
|
||||
- The [[doom-module:][:editor multiple-cursors]] module contains functionality equal to the
|
||||
following vim plugins:
|
||||
+ evil-multiedit => vim-multiedit
|
||||
+ evil-mc => vim-multiple-cursors
|
||||
- [[doom-package:][evil-multiedit]] => [[github:hlissner/vim-multiedit][vim-multiedit]]
|
||||
- [[doom-package:][evil-mc]] => [[https://github.com/terryma/vim-multiple-cursors][vim-multiple-cursors]]
|
||||
|
||||
** Custom Text Objects
|
||||
This module provides a couple extra text objects, along with the built-in ones.
|
||||
For posterity, here are the built-in ones:
|
||||
|
||||
+ =w W= words
|
||||
+ =s= sentences
|
||||
+ =p= paragraphs
|
||||
+ =b= parenthesized blocks
|
||||
+ =b ( ) { } [ ] < >= braces, parentheses and brackets
|
||||
+ =' " `= quotes
|
||||
+ =t= tags
|
||||
+ =o= symbols
|
||||
- [[kbd:][w W]] words
|
||||
- [[kbd:][s]] sentences
|
||||
- [[kbd:][p]] paragraphs
|
||||
- [[kbd:][b]] parenthesized blocks
|
||||
- [[kbd:][b ( ) { } [ ] < >]] braces, parentheses and brackets
|
||||
- [[kbd:][' " `]] quotes
|
||||
- [[kbd:][t]] tags
|
||||
- [[kbd:][o]] symbols
|
||||
|
||||
And these are text objects added by this module:
|
||||
|
||||
+ =a= C-style function arguments (provided by ~evil-args~)
|
||||
+ =B= any block delimited by braces, parentheses or brackets (provided by
|
||||
- [[kbd:][a]] C-style function arguments (provided by ~evil-args~)
|
||||
- [[kbd:][B]] any block delimited by braces, parentheses or brackets (provided by
|
||||
~evil-textobj-anyblock~)
|
||||
+ =c= Comments
|
||||
+ =f= For functions (but relies on the major mode to have sane definitions for
|
||||
- [[kbd:][c]] Comments
|
||||
- [[kbd:][f]] For functions (but relies on the major mode to have sane definitions for
|
||||
~beginning-of-defun-function~ and ~end-of-defun-function~)
|
||||
+ =g= The entire buffer
|
||||
+ =i j k= by indentation (=k= includes one line above; =j= includes one line
|
||||
above and below) (provided by ~evil-indent-plus~)
|
||||
+ =q= For quotes (any kind)
|
||||
+ =u= For URLs
|
||||
+ =x= XML attributes (provided by ~exato~)
|
||||
- [[kbd:][g]] The entire buffer
|
||||
- [[kbd:][i j k]] by indentation ([[kbd:][k]] includes one line above; [[kbd:][j]] includes one line above and
|
||||
below) (provided by ~evil-indent-plus~)
|
||||
- [[kbd:][q]] For quotes (any kind)
|
||||
- [[kbd:][u]] For URLs
|
||||
- [[kbd:][x]] XML attributes (provided by ~exato~)
|
||||
|
||||
** Custom Ex Commands
|
||||
| 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 |
|
||||
| ~:tcd[!]~ | Send =cd X= to tmux. X = the project root if BANG, X = ~default-directory~ otherwise |
|
||||
|
||||
* Configuration
|
||||
** Removing evil-mode
|
||||
You must do two things to remove Evil:
|
||||
|
||||
1. Remove =:editor evil= from =~/.doom.d/init.el=,
|
||||
2. Run ~doom sync~ to clean up lingering dependencies and regenerate your
|
||||
autoloads files.
|
||||
3. [OPTIONAL] You may want to assign new values to ~doom-leader-alt-key~ and
|
||||
~doom-localleader-alt-key~. These are bound to =C-c= and =C-c l= by default.
|
||||
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
Ignore ~doom-leader-key~ and ~doom-localleader-key~, they don't apply to
|
||||
non-evil sessions.
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
Evil-specific configuration and keybindings (defined with ~map!~) will be
|
||||
ignored without =:editor evil= present (and omitted when byte-compiling).
|
||||
* Troubleshooting
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
Keep in mind that, at the time of this writing, Doom was designed by a vimmer,
|
||||
for vimmers. Little consideration has been put into designing a keybind scheme
|
||||
for vanilla Emacs users (though it's being worked on!).
|
||||
** 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]].
|
||||
|
||||
That means that much of Doom's functionality will be orphaned in an evil-less
|
||||
setup. You'll have to set your own keybinds.
|
||||
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
|
||||
|
||||
I suggest studying [[file:../../config/default/+emacs-bindings.el][config/default/+emacs-bindings.el]] to see what keybinds are
|
||||
available for non-evil users. Otherwise, you may find inspiration [[file:../../../docs/example_configs.org][on the example
|
||||
Doom configurations page]].
|
||||
|
||||
** Restoring old substitution behavior on s/S
|
||||
Doom replaces the =s= and =S= keys with the =evil-snipe= package (a port of
|
||||
** 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 =evil-snipe= completely with ~(package! evil-snipe :disable t)~
|
||||
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 =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$=.
|
||||
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 elisp
|
||||
;; add to ~/.doom.d/config.el
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/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:
|
||||
#+end_src
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
;; add to ~/.doom.d/config.el
|
||||
(setq evil-move-cursor-back 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.
|
||||
3. [OPTIONAL] Change ~doom-leader-alt-key~ and ~doom-localleader-alt-key~. These
|
||||
are bound to [[kbd:][C-c]] and [[kbd:][C-c l]] by default.
|
||||
|
||||
#+begin_quote
|
||||
🚧 Ignore ~doom-leader-key~ and ~doom-localleader-key~, they don't apply to
|
||||
non-evil sessions.
|
||||
#+end_quote
|
||||
|
||||
Evil-specific configuration and keybindings (defined with ~map!~) will be
|
||||
ignored without [[doom-module:][:editor evil]] present (and omitted when byte-compiling).
|
||||
|
||||
** Include underscores in evil word motions?
|
||||
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
|
||||
documentation]].
|
||||
|
||||
TL;DR If you want the underscore to be recognized as word character, you can
|
||||
modify its entry in the syntax-table:
|
||||
#+begin_src emacs-lisp
|
||||
(modify-syntax-entry ?_ "w")
|
||||
#+end_src
|
||||
|
||||
This gives the underscore the word syntax-class. You can use a mode-hook to
|
||||
modify the syntax-table in all buffers of some mode, e.g.
|
||||
#+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
|
||||
|
||||
* TODO Appendix
|
||||
#+begin_quote
|
||||
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
|
||||
#+end_quote
|
||||
|
|
|
@ -1,83 +1,97 @@
|
|||
#+TITLE: editor/file-templates
|
||||
#+DATE: February 11, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor file-templates
|
||||
#+subtitle: Fill the void in your empty files
|
||||
#+created: February 11, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_2:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module adds file templates for blank files, powered by [[doom-package:][yasnippet]].
|
||||
|
||||
* Description
|
||||
This module adds file templates for blank files, powered by yasnippet.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
This module installs no plugins.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Packages
|
||||
/This module doesn't install any packages./
|
||||
|
||||
* Usage
|
||||
File templates are automatically expanded when opening empty files.
|
||||
** Hacks
|
||||
- [[doom-package:][yasnippet]]
|
||||
|
||||
They are also regular yasnippet snippets, which can be expanded by typing their
|
||||
trigger and pressing =TAB=. By convention, the triggers for file templates are
|
||||
prefixed with two underscores ~__~.
|
||||
** 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
|
||||
|
||||
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
|
||||
A special command is available for inserting software licenses: ~M-x
|
||||
+file-templates/insert-license~.
|
||||
|
||||
#+begin_quote
|
||||
Licenses with a ~-bp~ suffix are boilerplate templates; shorter versions meant
|
||||
for comment headers in code.
|
||||
📌 Licenses with a ~-bp~ suffix are boilerplate templates; i.e. shorter
|
||||
versions intended for comment headers in code files.
|
||||
#+end_quote
|
||||
|
||||
* Configuration
|
||||
** Registering a new file template
|
||||
Look into the documentation of ~set-file-template!~ and ~set-file-templates!~.
|
||||
** Changing existing file templates
|
||||
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~.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
So long as these files exist, ~+file-templates/insert-license~ will recognize
|
||||
them.
|
||||
** Adding new or changing existing file templates
|
||||
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
|
||||
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
|
||||
apply for the correct file.
|
||||
- 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
|
||||
apply for the correct file.
|
||||
|
||||
* 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
|
||||
|
||||
* Appendix
|
||||
** API
|
||||
+ ~set-file-template! PRED &rest PLIST~
|
||||
+ ~set-file-templates! &rest TEMPLATES~
|
||||
- ~set-file-template! PRED &rest PLIST~
|
||||
- ~set-file-templates! &rest TEMPLATES~
|
||||
|
||||
** Commands
|
||||
+ ~+file-templates/insert-license~
|
||||
+ ~+file-templates/debug~
|
||||
- ~+file-templates/insert-license~
|
||||
- ~+file-templates/debug~
|
||||
|
||||
** Variables
|
||||
+ ~+file-templates-dir~
|
||||
+ ~+file-templates-default-trigger~
|
||||
+ ~+file-templates-alist~
|
||||
- ~+file-templates-dir~
|
||||
- ~+file-templates-default-trigger~
|
||||
- ~+file-templates-alist~
|
||||
|
|
|
@ -96,6 +96,14 @@ evil is loaded and enabled)."
|
|||
(file-relative-name path doom-private-dir))
|
||||
((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
|
||||
|
@ -133,3 +141,20 @@ for it. This is used for testing."
|
|||
:key #'yas--template-key :test #'equal))
|
||||
(message "Found %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")
|
||||
("__")))))
|
||||
|
|
|
@ -71,9 +71,8 @@ don't have a :trigger property in `+file-templates-alist'.")
|
|||
("/shell\\.nix$" :trigger "__shell.nix")
|
||||
(nix-mode)
|
||||
;; Org
|
||||
("/README\\.org$"
|
||||
:when +file-templates-in-emacs-dirs-p
|
||||
:trigger "__doom-readme"
|
||||
(doom-docs-org-mode
|
||||
:trigger +file-templates-insert-doom-docs-fn
|
||||
:mode org-mode)
|
||||
(org-journal-mode :ignore t)
|
||||
(org-mode)
|
||||
|
|
|
@ -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).
|
|
@ -0,0 +1,7 @@
|
|||
# -*- mode: snippet -*-
|
||||
# name: Doom documentation
|
||||
# --
|
||||
#+title: ${1:Title}
|
||||
#+subtitle: ${2:Subtitle}
|
||||
|
||||
$0
|
|
@ -1,70 +1,194 @@
|
|||
# -*- mode: snippet -*-
|
||||
# name: Doom module readme
|
||||
# --
|
||||
#+TITLE: ${1:`(if (string-match "modules/\\([^/]+\\)/\\([^/]+\\)/.+" buffer-file-name)
|
||||
(format "%s/%s"
|
||||
(match-string 1 buffer-file-name)
|
||||
(match-string 2 buffer-file-name))
|
||||
"")`}
|
||||
#+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
|
||||
#+title: `(+file-templates-module-for-path)`
|
||||
#+subtitle: <A one-line quip about this module to display in init.example.el>
|
||||
#+created: `(format-time-string "%B %d, %Y")`
|
||||
#+since: `(car (split-string doom-version "-"))` (#COMMIT-OR-PR-REF)
|
||||
|
||||
* 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
|
||||
${3:# A summary of what this module does.}
|
||||
|
||||
+ 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
|
||||
Then a longer, multiple paragraph description goes here, which should explain
|
||||
the purpose of the module and the features/technology(ies) it provides.
|
||||
|
||||
** Maintainers
|
||||
+ @username_linked_to_gihub (Author)
|
||||
+ @username_linked_to_gihub
|
||||
+ @username_linked_to_gihub
|
||||
- [[doom-user:][@github_username]]
|
||||
- [[doom-user:][@github_username]]
|
||||
- [[doom-user:][@github_username]]
|
||||
|
||||
# If this module has no maintainers, then...
|
||||
This module has no dedicated maintainers.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+flag1= A short description of what this flag does and what it might need
|
||||
when enabled.
|
||||
+ =+flag2= A short description of what this flag does and what it might need
|
||||
when enabled.
|
||||
+ =+flag3= A short description of what this flag does and what it might need
|
||||
when enabled.
|
||||
# If a module has no maintainers and can't be casually maintained by Henrik
|
||||
# alone, use:
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
# Otherwise, use:
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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...
|
||||
This module provides no flags.
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
# A list of linked plugins
|
||||
+ [[https://orgmode.org/][org-plus-contrib]]
|
||||
+ [[https://github.com/sabof/org-bullets][org-bullets]]
|
||||
+ [[https://github.com/TobiasZawada/org-yt][org-yt]]
|
||||
+ [[https://github.com/sebastiencs/company-box][company-box]]* (=+childframe=)
|
||||
+ =:lang crystal=
|
||||
+ [[https://github.com/brantou/ob-crystal][ob-crystal]]
|
||||
+ =:lang go=
|
||||
+ [[https://github.com/pope/ob-go][ob-go]]
|
||||
+ =+present=
|
||||
+ [[https://github.com/anler/centered-window-mode][centered-window]]
|
||||
+ [[https://github.com/takaxp/org-tree-slide][org-tree-slide]]
|
||||
+ [[https://gitlab.com/oer/org-re-reveal][org-re-reveal]]
|
||||
# If this module has flags but you can't document them now, add a TODO to the
|
||||
# heading and use:
|
||||
#+begin_quote
|
||||
🔨 This module has flags, but they aren't documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+end_quote
|
||||
|
||||
** Packages
|
||||
- [[doom-package:][org]]
|
||||
- [[doom-package:][org-contrib]] if [[doom-module:][+contrib]]
|
||||
- [[doom-package:][org-bullets]] unless [[doom-module:][+bullets]]
|
||||
- if [[doom-module:][+present]]
|
||||
- [[doom-package:][centered-window]]
|
||||
- [[doom-package:][org-tree-slide]]
|
||||
- [[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
|
||||
# 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
|
||||
This module has no prerequisites.
|
||||
# If there aren't any hacks, use:
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
# If this module contains hacks, but you can't document them now, add a TODO to
|
||||
# the heading and use:
|
||||
#+begin_quote
|
||||
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+end_quote
|
||||
|
||||
* Configuration
|
||||
# How to configure this module, including common problems and how to address them.
|
||||
** TODO Changelog
|
||||
# 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
$0
|
||||
# List common issues and any workarounds/solutions, or link to external resources.
|
||||
[[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
|
|
@ -1,44 +1,70 @@
|
|||
#+TITLE: editor/fold
|
||||
#+DATE: February 17, 2019
|
||||
#+SINCE: v2.1
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor fold
|
||||
#+subtitle: What you can't see won't hurt you
|
||||
#+created: May 15, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module marries [[doom-package:][hideshow]], [[doom-package:][vimish-fold]], and ~outline-minor-mode~ to bring you
|
||||
marker, indent and syntax-based code folding for as many languages as possible.
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/alexmurray/evil-vimish-fold][evil-vimish-fold]]
|
||||
+ [[https://github.com/matsievskiysv/vimish-fold][vimish-fold]]
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Module flags
|
||||
/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.
|
||||
| Keybind | Description |
|
||||
|------------------------+---------------------------|
|
||||
| =C-c C-f C-f= | Fold region |
|
||||
| =C-c C-f C-u= or =C `= | Unfold region |
|
||||
| =C-c C-f C-d= | Delete folded region |
|
||||
| =C-c C-f C-a C-f= | Fold all regions |
|
||||
| =C-c C-f C-a C-u= | Unfold all regions |
|
||||
| =C-c C-a C-d= | Delete all folded regions |
|
||||
** 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 |
|
||||
|--------------------+---------------------------|
|
||||
| [[kbd:][C-c C-f C-f]] | Fold region |
|
||||
| [[kbd:][C-c C-f C-u]] or [[kbd:][C `]] | Unfold region |
|
||||
| [[kbd:][C-c C-f C-d]] | Delete folded region |
|
||||
| [[kbd:][C-c C-f C-a C-f]] | Fold all regions |
|
||||
| [[kbd:][C-c C-f C-a C-u]] | Unfold all regions |
|
||||
| [[kbd:][C-c C-a C-d]] | Delete all folded regions |
|
||||
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,30 +1,16 @@
|
|||
#+TITLE: editor/format
|
||||
#+DATE: July 25, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor format
|
||||
#+subtitle: Standardize your ugly code
|
||||
#+created: July 26, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
#+begin_quote
|
||||
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
|
||||
rewrite can be found [[https://github.com/hlissner/doom-emacs-private/tree/master/modules/editor/format][in my private config]].
|
||||
🔨 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
|
||||
rewrite can be found [[https://github.com/hlissner/doom-emacs-private/tree/master/modules/editor/format][in my private config]].
|
||||
#+end_quote
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module integrates code formatters into Emacs. Here are some of the
|
||||
formatters that it currently supports:
|
||||
|
||||
|
@ -37,88 +23,102 @@ rustfmt, scalafmt, script shfmt, snakefmt, sqlformat, styler, swiftformat, tidy
|
|||
#+end_quote
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+onsave= Preform buffer-wide reformatting of a buffer when you save it. See
|
||||
~+format-on-save-enabled-modes~ to control what major modes to (or not to)
|
||||
** Module flags
|
||||
- +onsave ::
|
||||
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.
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/lassik/emacs-format-all-the-code][format-all]]
|
||||
** Packages
|
||||
- [[doom-package:][format-all]]
|
||||
|
||||
** Hacks
|
||||
+ 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
|
||||
- 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
|
||||
affect on cursor position.
|
||||
+ 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
|
||||
pass the universal argument to ~+format/buffer~ or ~+format/region~ (i.e.
|
||||
- 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
|
||||
pass the universal argument to [[fn:][+format/buffer]] or [[fn:][+format/region]] (i.e.
|
||||
removes the major-mode lock on formatters).
|
||||
|
||||
* Prerequisites
|
||||
This module depends on external programs to perform the actual formatting. These
|
||||
will need to be installed for them to work. In their absence, =format-all= will
|
||||
fail silently.
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
+ 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)
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
This module has no direct requirements, but each language will need one of their
|
||||
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
|
||||
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
|
||||
|
@ -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
|
||||
first item in the list is the symbol ~not~, the list is negated. This is its
|
||||
default value:
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(setq +format-on-save-enabled-modes
|
||||
'(not emacs-lisp-mode ; elisp's mechanisms are good enough
|
||||
sql-mode ; sqlformat is currently broken
|
||||
tex-mode ; latexindent is broken
|
||||
latex-mode))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
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
|
||||
alternative. Make sure =+onsave= is disabled before you try this:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
alternative. Make sure [[doom-module:][+onsave]] is disabled before you try this:
|
||||
#+begin_src emacs-lisp
|
||||
(add-hook 'python-mode-hook #'format-all-mode)
|
||||
(add-hook 'js2-mode-hook #'format-all-mode)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Disabling the LSP formatter
|
||||
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 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
|
||||
See the ~set-formatter!~ function.
|
||||
|
@ -158,17 +158,24 @@ See the ~set-formatter!~ function.
|
|||
** TODO Selecting a specific formatter for a particular buffer
|
||||
Set the buffer-local variable ~+format-with~ to the name of the formatter to
|
||||
use. e.g.
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(setq-hook! 'python-mode-hook +format-with 'html-tidy)
|
||||
|
||||
;; Or set it to `:none' to disable formatting
|
||||
(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
|
||||
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]].
|
||||
|
||||
* 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
|
||||
|
|
56
modules/editor/god/README.org
Normal file
56
modules/editor/god/README.org
Normal 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
|
|
@ -1,18 +1,13 @@
|
|||
#+TITLE: editor/lispy
|
||||
#+DATE: October 27, 2018
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor lispy
|
||||
#+subtitle: Vim for lisp, for people who don't like vim
|
||||
#+created: October 27, 2018
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
- [[#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:
|
||||
* Description :unfold:
|
||||
This module adds a keybind scheme for navigating and editing S-expressions in
|
||||
Lisps; including S-exp awareness for Evil users. This affects the following
|
||||
languages:
|
||||
|
||||
- Common Lisp
|
||||
- Emacs Lisp
|
||||
|
@ -23,12 +18,43 @@ This includes:
|
|||
- Clojure
|
||||
- [[https://fennel-lang.org][Fennel]]
|
||||
|
||||
If evil is enabled, lispyville would also be activated for every mode where
|
||||
lispy is active
|
||||
** Maintainers
|
||||
*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:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
'((operators normal)
|
||||
c-w
|
||||
(prettify insert)
|
||||
|
@ -36,18 +62,25 @@ The default key themes that are set are as follows:
|
|||
slurp/barf-lispy
|
||||
additional
|
||||
additional-insert)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
To change the key themes set ~lispyville-key-theme~. Think of
|
||||
~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
|
||||
(starting [[https://github.com/noctuid/lispyville#operators-key-theme][here]]).
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
|
||||
* 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]])
|
||||
lispyville binds =M-[= to ~lispyville-wrap-brackets~ when the =wrap= or
|
||||
=additional-wrap= key theme are enabled. In terminal Emacs, this is the key
|
||||
lispyville binds [[kbd:][M-[]] to ~lispyville-wrap-brackets~ when the =wrap= or
|
||||
=additional-wrap= key themes are enabled. In terminal Emacs, this is the key
|
||||
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
|
||||
|
|
79
modules/editor/multiple-cursors/README.org
Normal file
79
modules/editor/multiple-cursors/README.org
Normal 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
|
|
@ -1,23 +1,61 @@
|
|||
#+TITLE: editor/objed
|
||||
#+DATE: May 30, 2019
|
||||
#+SINCE: v2.1
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor objed
|
||||
#+subtitle: Text object editing for the innocent
|
||||
#+created: May 30, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
|
||||
* 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
|
||||
* Description :unfold:
|
||||
This modules adds [[doom-package:][objed]], a global minor-mode for navigating and manipulating
|
||||
text objects. It combines the ideas of ~versor-mode~ and other editors like Vim
|
||||
or Kakoune and tries to align them with regular Emacs conventions.
|
||||
|
||||
[[https://github.com/clemera/objed][See the objed project README]] for information on keybinds and usage.
|
||||
|
||||
** Module Flags
|
||||
+ ~+manual~ Do not turn =objed= automatically. The user is responsible for calling
|
||||
`objed-activate` (bound to `M-SPC` if using the default Emacs bindings.)
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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
|
||||
|
|
|
@ -1,55 +1,58 @@
|
|||
#+TITLE: editor/parinfer
|
||||
#+DATE: June 9, 2018
|
||||
#+SINCE: v2.1
|
||||
#+STARTUP: inlineimages nofold
|
||||
|
||||
* 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
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor parinfer
|
||||
#+subtitle: For lispers that like Python more (i.e. nobody)
|
||||
#+created: February 27, 2021
|
||||
#+since: 21.12.0
|
||||
|
||||
* Description :unfold:
|
||||
Parinfer is a minor mode that aids the writing of Lisp code. It automatically
|
||||
infers parenthesis matching and indentation alignment, keeping your code
|
||||
balanced and beautiful.
|
||||
|
||||
Note that the original =parinfer-mode= has been deprecated and superceded by
|
||||
=parinfer-rust-mode=, which has much better performance.
|
||||
|
||||
** 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.
|
||||
|
||||
* Features
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
** Keybindings
|
||||
| Binding | Description |
|
||||
|-----------------+-------------------------------------------|
|
||||
| [[kbd:][<localleader> p]] | Toggle between different inference modes. |
|
||||
| [[kbd:][<localleader> P]] | Temporarily disable parinfer. |
|
||||
|
||||
| Binding | Description |
|
||||
|-------------------+-------------------------------------------|
|
||||
| ~<localleader> m p~ | Toggle between different inference modes. |
|
||||
| ~<localleader> m P~ | Temporarily disable parinfer. |
|
||||
|
||||
* Configuration
|
||||
# How to configure this module, including common problems and how to address them.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,52 +1,78 @@
|
|||
#+TITLE: editor/rotate-text
|
||||
#+DATE: October 14, 2021
|
||||
#+SINCE: v2.0.4
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor rotate-text
|
||||
#+subtitle: The only back'n'forth nerds will ever know
|
||||
#+created: June 22, 2018
|
||||
#+since: 2.0.4
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#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.
|
||||
* Description :unfold:
|
||||
This module adds text rotation to Doom Emacs. I.e. The ability to cycle through
|
||||
keywords or text patterns at point, like ~true~ and ~false~, or ~public~,
|
||||
~protected~, and ~private~ (in ~c++-mode~).
|
||||
|
||||
** Maintainers
|
||||
# If this module has no maintainers, then...
|
||||
This module has no dedicated maintainers.
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
# If this module has no flags, then...
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/debug-ito/rotate-text.el][rotate-text.el]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Packages
|
||||
- [[doom-package:][rotate-text]]
|
||||
|
||||
* Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
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.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Configuration
|
||||
To enable a set of items to cycle through globally, add the following to your configuration
|
||||
** 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
|
||||
|
||||
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
|
||||
;; in ~/.doom.d/config.el
|
||||
;; in $DOOMDIR/config.el
|
||||
(after! rotate-text
|
||||
(pushnew! rotate-text-words '("small" "medium" "large")))
|
||||
(add-to-list 'rotate-text-words '("small" "medium" "large")))
|
||||
#+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
|
||||
;; in ~/.doom.d/config.el
|
||||
;; in $DOOMDIR/config.el
|
||||
(set-rotate-patterns! 'c++-mode
|
||||
: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
|
||||
|
|
|
@ -1,46 +1,67 @@
|
|||
#+TITLE: editor/snippets
|
||||
#+DATE: February 11, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor snippets
|
||||
#+subtitle: My elves type so I don't have to
|
||||
#+created: February 11, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module adds snippet expansions to Emacs, powered by [[doom-package:][yasnippet]].
|
||||
|
||||
* Description
|
||||
This module adds snippets to Emacs, powered by yasnippet.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module exposes no flags.
|
||||
** Module flags
|
||||
/This module exposes no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/joaotavora/yasnippet][yasnippet]]
|
||||
+ [[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
|
||||
#+begin_quote
|
||||
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+end_quote
|
||||
|
||||
* Prerequisites
|
||||
This module has no external dependencies.
|
||||
** TODO Changelog
|
||||
# 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
|
||||
Don't want to use provided one? Then add this to your private module,
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; in ~/.doom.d/packages.el
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/packages.el
|
||||
(package! doom-snippets :ignore t)
|
||||
;; If you want to replace it with yasnippet's default 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
|
||||
|
|
|
@ -1,17 +1,80 @@
|
|||
#+TITLE: editor/word-wrap
|
||||
#+DATE: August 26, 2019
|
||||
#+SINCE: v2.1
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :editor word-wrap
|
||||
#+subtitle: Soft-wrapping with language-aware indent
|
||||
#+created: August 25, 2019
|
||||
#+since: 21.12.0 (#1709)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#configuration][Configuration]]
|
||||
|
||||
* Description
|
||||
This module adds a minor-mode ~+word-wrap-mode~, which intelligently wraps long
|
||||
* Description :unfold:
|
||||
This module adds a minor-mode [[fn:][+word-wrap-mode]], which intelligently wraps long
|
||||
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,
|
||||
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
|
||||
|
@ -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
|
||||
modes like ~org-mode~ which handle prefix indentation themselves.
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
* Troubleshooting
|
||||
/There are no known problems with this module./ [[doom-report:][Report one?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://elpa.gnu.org/packages/adaptive-wrap.html][adaptive-wrap]]
|
||||
* Frequently asked questions
|
||||
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
||||
|
||||
* Configuration
|
||||
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 ~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
|
||||
* TODO Appendix
|
||||
#+begin_quote
|
||||
🔨 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
|
||||
#+end_quote
|
||||
|
|
10
modules/emacs/README.org
Normal file
10
modules/emacs/README.org
Normal 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?]]
|
|
@ -1,49 +1,75 @@
|
|||
#+TITLE: emacs/dired
|
||||
#+DATE: May 27, 2018
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :emacs dired
|
||||
#+subtitle: Making dired pretty [functional]
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#keybindings][Keybindings]]
|
||||
- [[#ranger][Ranger]]
|
||||
* Description :unfold:
|
||||
This module provides reasonable defaults and augmentations for dired.
|
||||
|
||||
* Description
|
||||
This module provides configuration for dired.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+ranger= Enables dired to be more like [[https://github.com/ranger/ranger][ranger]].
|
||||
+ =+icons= Enables the display of fancy icons depending on file types in dired
|
||||
buffers.
|
||||
** Module flags
|
||||
- +icons ::
|
||||
Enables the display of fancy icons depending on file types in dired buffers.
|
||||
- +ranger ::
|
||||
Enables dired to be more like [[https://github.com/ranger/ranger][ranger]].
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/purcell/diredfl][diredfl]]
|
||||
+ [[https://github.com/stsquad/dired-rsync][dired-rsync]]
|
||||
+ [[https://github.com/dgutov/diff-hl/][diff-hl]]
|
||||
+ [[https://github.com/yqrashawn/fd-dired][fd-dired]]
|
||||
+ =+ranger=
|
||||
+ [[https://github.com/ralesi/ranger.el][ranger]]
|
||||
+ =+icons=
|
||||
+ [[https://github.com/jtbm37/all-the-icons-dired][all-the-icons-dired]]
|
||||
** Packages
|
||||
- [[doom-package:][all-the-icons-dired]] if [[doom-module:][+icons]]
|
||||
- [[doom-package:][diff-hl]]
|
||||
- [[doom-package:][diredfl]]
|
||||
- [[doom-package:][dired-rsync]]
|
||||
- [[doom-package:][fd-dired]]
|
||||
- [[doom-package:][ranger]] if [[doom-module:][+ranger]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites *except on BSDs* where =GNU ls= (~gls~) is
|
||||
needed for it to work properly (Doom doctor will notify you if it is missing).
|
||||
** TODO Hacks
|
||||
#+begin_quote
|
||||
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+end_quote
|
||||
|
||||
* Keybindings
|
||||
| Keybind | Description |
|
||||
|-----------+------------------------------|
|
||||
| =SPC f d= | Find directory with dired |
|
||||
| =q= | Exit dired buffer |
|
||||
| =C-c C-r= | Run =dired-rsync= |
|
||||
| =C-c C-e= | Rename entries with =wdired= |
|
||||
** 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
|
||||
|
||||
| Keybind | Description |
|
||||
|---------+----------------------------|
|
||||
| [[kbd:][SPC f d]] | Find directory with dired |
|
||||
| [[kbd:][q]] | Exit dired buffer |
|
||||
| [[kbd:][C-c C-r]] | Run [[doom-package:][dired-rsync]] |
|
||||
| [[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]].
|
||||
|
||||
** Ranger
|
||||
If =+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.
|
||||
If [[doom-module:][+ranger]] is enabled often a buffer will be opened in minimal ranger mode
|
||||
(~deer-mode~). In this case [[kbd:][z P]] can be used to toggle between full ranger and
|
||||
~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
|
||||
|
|
55
modules/emacs/electric/README.org
Normal file
55
modules/emacs/electric/README.org
Normal 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
|
|
@ -1,36 +1,58 @@
|
|||
#+TITLE: emacs/ibuffer
|
||||
#+DATE: October 20, 2019
|
||||
#+SINCE: v2.1.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :emacs ibuffer
|
||||
#+subtitle: Edit me like one of your French buffers
|
||||
#+created: October 20, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
* Description :unfold:
|
||||
This module augments the built-in [[doom-package:][ibuffer]] package.
|
||||
|
||||
* Description
|
||||
This module augments ibuffer.
|
||||
- Adds project-based grouping of buffers
|
||||
- Support for file-type icons
|
||||
- Uses human-readable file-size
|
||||
|
||||
+ Adds project-based grouping of buffers
|
||||
+ Support for file-type icons
|
||||
+ Uses human-readable file-size
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+icons= Enables filetype icons for buffers
|
||||
** Module flags
|
||||
- +icons ::
|
||||
Enable filetype icons for buffers using [[doom-package:][all-the-icons]].
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/purcell/ibuffer-projectile][ibuffer-projectile]]
|
||||
+ [[https://github.com/purcell/ibuffer-vc][ibuffer-vc]]
|
||||
** Packages
|
||||
- [[doom-package:][ibuffer-projectile]]
|
||||
- [[doom-package:][ibuffer-vc]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** TODO Hacks
|
||||
#+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
|
||||
#+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
|
||||
|
|
|
@ -1,68 +1,84 @@
|
|||
#+TITLE: emacs/undo
|
||||
#+DATE: April 13, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :emacs undo
|
||||
#+subtitle: Persistent, smarter undo for your inevitable mistakes
|
||||
#+created: April 14, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module augments Emacs' built-in undo system to be more intuitive and to
|
||||
persist across Emacs sessions.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
+ =+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.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]]
|
||||
+ [[https://gitlab.com/ideasman42/emacs-undo-fu-session][undo-fu-session]]
|
||||
+ [[https://github.com/emacsmirror/undo-tree][undo-tree]] (=+tree=)
|
||||
** Module flags
|
||||
- +tree ::
|
||||
Uses [[doom-package:][undo-tree]] instead of [[doom-package:][undo-fu]], which is a little less stable, but offers
|
||||
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
|
||||
+ 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.
|
||||
+ undo-tree only
|
||||
+ 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 only
|
||||
- Text properties are stripped from undo history to shrink it.
|
||||
- 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
|
||||
minibuffer.
|
||||
+ unfo-fu only
|
||||
+ Doom defines =undo-fu-mode= to make it easier to add hooks/mode-local
|
||||
- unfo-fu only
|
||||
- Doom defines ~undo-fu-mode~ to make it easier to add hooks/mode-local
|
||||
keybinds.
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
* 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 persistent undo history
|
||||
+ If you are using =+tree=:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
- If you are using [[doom-module:][+tree]]:
|
||||
#+begin_src emacs-lisp
|
||||
(after! undo-tree
|
||||
(setq undo-tree-auto-save-history nil))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
+ If you aren't:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
- If you aren't:
|
||||
#+begin_src emacs-lisp
|
||||
(remove-hook 'undo-fu-mode-hook #'global-undo-fu-session-mode)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* TODO Troubleshooting
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* Troubleshooting
|
||||
[[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
|
||||
|
|
|
@ -1,42 +1,61 @@
|
|||
#+TITLE: emacs/vc
|
||||
#+DATE: May 23, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :emacs vc
|
||||
#+subtitle: Be the difference you want to see in the fringe
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module augments Emacs builtin version control support and provides better
|
||||
integration with =git=.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
# A list of linked plugins
|
||||
+ [[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]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Packages
|
||||
- [[doom-package:][browse-at-remote]]
|
||||
- [[doom-package:][git-timemachine]]
|
||||
- [[doom-package:][gitconfig-mode]]
|
||||
- [[doom-package:][gitignore-mode]]
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
** Hacks
|
||||
- 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
|
||||
# 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
10
modules/email/README.org
Normal file
10
modules/email/README.org
Normal 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?]]
|
|
@ -1,79 +1,87 @@
|
|||
#+TITLE: email/mu4e
|
||||
#+DATE: April 8, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :email mu4e
|
||||
#+subtitle: The great filter Hanson hadn't anticipated
|
||||
#+created: April 08, 2017
|
||||
#+since: 2.0.3
|
||||
|
||||
* Table of Contents :TOC:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module makes Emacs an email client, using [[https://www.djcbsoftware.nl/code/mu/mu4e.html][mu4e]].
|
||||
|
||||
#+begin_quote
|
||||
I want to live in Emacs, but as we all know, living is incomplete without email.
|
||||
So I prayed to the text editor gods and they (I) answered. Emacs+evil's editing
|
||||
combined with org-mode for writing emails? /Yes please./
|
||||
- Tidied mu4e headers view, with flags from [[doom-package:][all-the-icons]].
|
||||
- Consistent coloring of reply depths (across compose and gnus modes).
|
||||
- Prettified =mu4e:main= view.
|
||||
- Cooperative locking of the =mu= process. Another Emacs instance may request
|
||||
access, or grab the lock when it's available.
|
||||
- [[doom-package:][org-msg]] integration with [[doom-module:][+org]], which can be toggled per-message, with revamped
|
||||
style and an accent color.
|
||||
- Gmail integrations with the [[doom-module:][+gmail]] flag.
|
||||
- Email notifications with [[doom-package:][mu4e-alert]], and (on Linux) a customised notification
|
||||
style.
|
||||
|
||||
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).
|
||||
#+begin_quote
|
||||
💡 I want to live in Emacs, but as we all know, living is incomplete without
|
||||
email. So I prayed to the text editor gods and they (I) answered.
|
||||
Emacs+evil's editing combined with org-mode for writing emails? /Yes
|
||||
please./
|
||||
|
||||
It uses ~mu4e~ to read my email, but depends on ~offlineimap~ (to sync my
|
||||
email via IMAP) and ~mu~ (to index my mail into a format ~mu4e~ can
|
||||
understand).
|
||||
#+end_quote
|
||||
|
||||
** Maintainers
|
||||
+ [[https://github.com/tecosaur][@tecosaur]]
|
||||
- [[doom-user:][@tecosaur]]
|
||||
|
||||
** Module Flags
|
||||
+ =+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.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/iqbalansari/mu4e-alert][mu4e-alert]]
|
||||
+ =+org=
|
||||
+ [[https://github.com/jeremy-compostella/org-msg][org-msg]]
|
||||
** Module flags
|
||||
- +gmail ::
|
||||
Enable gmail-specific configuration for mail ~To~ or ~From~ a gmail address,
|
||||
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:
|
||||
|
||||
+ [[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
|
||||
[[https://isync.sourceforge.io/][mbsync]] (recommended, default) or [[http://www.offlineimap.org/][offlineimap]] but you can sync mail in
|
||||
other ways too.
|
||||
- [[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 [[https://isync.sourceforge.io/][mbsync]]
|
||||
(recommended, default) or [[http://www.offlineimap.org/][offlineimap]] but you can sync mail in other ways too.
|
||||
|
||||
#+name: Install Matrix
|
||||
| Platform | Install command | Base packages |
|
||||
|---------------+--------------------------+-------------------------|
|
||||
| MacOS | ~brew install <pkgs>~ | =mu= |
|
||||
| Arch | ~pacman -S <pkgs>~ | (AUR, ~yay -S~) =mu= |
|
||||
| openSUSE | ~zypper install <pkgs>~ | =maildir-utils=, =mu4e= |
|
||||
| Fedora | ~dnf install <pkgs>~ | =maildir-utils= |
|
||||
| Debian/Ubuntu | ~apt-get install <pkgs>~ | =maildir-utils=, =mu4e= |
|
||||
| Platform | Install command | Base packages |
|
||||
|---------------+----------------------------+-------------------------|
|
||||
| MacOS | ~$ brew install <pkgs>~ | =mu= |
|
||||
| Arch | ~$ pacman -S <pkgs>~ | (AUR, ~$ yay -S~) =mu= |
|
||||
| openSUSE | ~$ zypper install <pkgs>~ | =maildir-utils=, =mu4e= |
|
||||
| Fedora | ~$ dnf install <pkgs>~ | =maildir-utils= |
|
||||
| Debian/Ubuntu | ~$ apt-get install <pkgs>~ | =maildir-utils=, =mu4e= |
|
||||
|
||||
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.
|
||||
You can also run a local SMTP server like =sendmail= or =postfix=, or use an SMTP
|
||||
forwarder such as =msmtp= (recommended).
|
||||
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
|
||||
a local SMTP server like =sendmail= or =postfix=, or use an SMTP forwarder such
|
||||
as =msmtp= (recommended).
|
||||
|
||||
If you use =msmtp=, you'll likely want to add the following to your
|
||||
=config.el=:
|
||||
If you use =msmtp=:
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/config.el
|
||||
(after! mu4e
|
||||
(setq sendmail-program (executable-find "msmtp")
|
||||
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
|
||||
|
||||
** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
#+begin_src nix
|
||||
environment.systemPackages = with pkgs; [
|
||||
mu
|
||||
# And one of the following
|
||||
isync
|
||||
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]]
|
||||
|
||||
* Features
|
||||
+ Tidied mu4e headers view, with flags from =all-the-icons=
|
||||
+ Consistent coloring of reply depths (across compose and gnus modes)
|
||||
+ Prettified =mu4e:main= view
|
||||
+ Cooperative locking of the =mu= process. Another Emacs instance may request
|
||||
access, or grab the lock when it's available.
|
||||
+ =org-msg= integration with =+org=, which can be toggled per-message, with revamped style and
|
||||
an accent color
|
||||
+ Gmail integrations with the =+gmail= flag
|
||||
+ Email notifications with =mu4e-alert=, and (on Linux) a customised notification style
|
||||
* 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
|
||||
** offlineimap
|
||||
This module uses =mbsync= by default. To use =offlineimap=, change ~+mu4e-backend~:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
This module uses =mbsync= by default. To use =offlineimap=, change
|
||||
~+mu4e-backend~:
|
||||
#+begin_src emacs-lisp
|
||||
(setq +mu4e-backend 'offlineimap)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Next, you need to write a configuration file for =offlineimap=. Mine can be found
|
||||
[[https://github.com/hlissner/dotfiles/blob/be0dce5dae8f3cbafaac0cc44269d84b4a742c46/shell/mu/][in my dotfiles repository]]. It is configured to download mail to ~\~/.mail~. I
|
||||
use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find a *very*
|
||||
detailed configuration [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]].
|
||||
Next, you need to write a configuration file for =offlineimap=. Mine can be
|
||||
found [[https://github.com/hlissner/dotfiles/blob/be0dce5dae8f3cbafaac0cc44269d84b4a742c46/shell/mu/][in my dotfiles repository]]. It is configured to download mail to
|
||||
~\~/.mail~. I use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find
|
||||
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.
|
||||
|
||||
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
|
||||
[[#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
|
||||
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
|
||||
should be quicker than =offlineimap= ;).
|
||||
Next you can download your email with ~$ mbsync --all~. This may take a while,
|
||||
but should be quicker than =offlineimap= ;).
|
||||
|
||||
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
|
||||
[[https://gitlab.com/shackra/goimapnotify][goimapnotify]] is used for this.
|
||||
|
||||
** Fetching your mail in other ways
|
||||
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
|
||||
~mu4e-get-mail-command~ to the command you want to execute.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
~mu4e-get-mail-command~ to the command you want to execute:
|
||||
#+begin_src emacs-lisp
|
||||
(setq +mu4e-backend nil)
|
||||
(after! mu4e
|
||||
(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
|
||||
of the ~mu4e~get-mail-password-regexp~ such that =mu4e= will recognize the
|
||||
prompt and let you provide the passphrase from within Emacs.
|
||||
of the ~mu4e~get-mail-password-regexp~ such that [[doom-package:][mu4e]] will recognize the prompt
|
||||
and let you provide the passphrase from within Emacs.
|
||||
|
||||
** mu and mu4e
|
||||
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
|
||||
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:
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
mu init --maildir ~/.mail --my-address email@example.com
|
||||
mu index
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
=mu= *<1.4* only requires one command:
|
||||
#+BEGIN_SRC sh
|
||||
mu index --maildir ~/.mail
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
mu index --maildir $HOME/.mail
|
||||
#+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:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
#+begin_src emacs-lisp
|
||||
;; Each path is relative to the path of the maildir you passed to mu
|
||||
(set-email-account! "bar.com"
|
||||
'((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
|
||||
(mu4e-compose-signature . "---\nYours truly\nThe Baz"))
|
||||
t)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
If you use multiple email accounts, defining them with ~set-email-account!~ will
|
||||
automatically set the appropriate account context when replying to emails in
|
||||
that account's maildir. ~mu4e-context-policy~ and ~mu4e-compose-context-policy~
|
||||
can be modified to change context behavior when opening mu4e and composing
|
||||
email:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq mu4e-context-policy 'ask-if-none
|
||||
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.
|
||||
|
||||
*** 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.
|
||||
|
||||
The integrations are applied to addresses with /both/ "@gmail.com" in the
|
||||
|
@ -222,8 +227,8 @@ benefit from the integrations:
|
|||
("example@example.com" . "/example")))
|
||||
#+end_src
|
||||
|
||||
If you only use Gmail, you can improve performance due to the way Gmail
|
||||
presents messages over IMAP:
|
||||
If you only use Gmail, you can improve performance due to the way Gmail presents
|
||||
messages over IMAP:
|
||||
#+begin_src emacs-lisp
|
||||
;; don't need to run cleanup after indexing for gmail
|
||||
(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.
|
||||
|
||||
** OrgMsg
|
||||
With the =+org= flag, =org-msg= is installed, and ~org-msg-mode~ is enabled before
|
||||
composing the first message. To disable ~org-msg-mode~ by default, simply
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(setq mu4e-compose--org-msg-toggle-next nil)
|
||||
#+END_SRC
|
||||
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:
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/config.el
|
||||
(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
|
||||
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
|
||||
~+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
|
||||
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
|
||||
;; add to $DOOMDIR/packages.el
|
||||
(package! mu4e-alert :disable t)
|
||||
#+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
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
** =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.
|
||||
|
||||
Some times the the ~mu~ package does not include ~mu4e~ (*cough Ubuntu*).
|
||||
if that's the case you will need to [[https://github.com/djcb/mu][install]] it and add it to your ~load-path~
|
||||
you can do that by...
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
Some times the the ~mu~ package does not include ~mu4e~ (*cough Ubuntu*). if
|
||||
that's the case you will need to [[https://github.com/djcb/mu][install]] it and add it to your ~load-path~ you
|
||||
can do that by:
|
||||
#+begin_src emacs-lisp
|
||||
(add-to-list 'load-path "your/path/to/mu4e")
|
||||
;; if you installed it using your package manager
|
||||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/mu4e")
|
||||
;; if you built from source
|
||||
(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!
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
If you have completely lost your install then you can use:
|
||||
#+begin_src sh
|
||||
find / -type d -iname '*mu4e*'
|
||||
# I recommend rerouting all of the errors to /dev/null
|
||||
find / -type d -iname '*mu4e*' 2> /dev/null
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** ~(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
|
||||
|
@ -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
|
||||
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
|
||||
|
|
|
@ -1,62 +1,60 @@
|
|||
#+TITLE: email/notmuch
|
||||
#+DATE: May 5, 2019
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :email notmuch
|
||||
#+subtitle: Closest Emacs will ever be to multi-threaded
|
||||
#+created: July 31, 2018
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module turns Emacs into an email client using [[doom-package:][notmuch]].
|
||||
|
||||
* Description
|
||||
This module turns Emacs into an email client using [[https://notmuchmail.org/][notmuch]].
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+org= Enables org-mime for writing HTML emails using org-mode.
|
||||
+ =+afew= Enables integration with =afew=.
|
||||
** Module flags
|
||||
- +afew ::
|
||||
Enable integration with [[https://github.com/afewmail/afew][afew]].
|
||||
- +org ::
|
||||
Enable [[doom-package:][org-mime]] for writing HTML emails using org-mode.
|
||||
|
||||
** Plugins
|
||||
+ [[https://notmuchmail.org/][notmuch]]
|
||||
+ [[https://github.com/org-mime/org-mime][org-mime]]* (with =+org= flag)
|
||||
+ [[https://github.com/fuxialexander/counsel-notmuch][counsel-notmuch]]*
|
||||
+ [[https://github.com/emacs-helm/helm-notmuch][helm-notmuch]]*
|
||||
** Packages
|
||||
- [[doom-package:][counsel-notmuch]] if [[doom-module:][:completion ivy]]
|
||||
- [[doom-package:][helm-notmuch]] if [[doom-module:][:completion helm]]
|
||||
- [[doom-package:][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:
|
||||
|
||||
+ 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://github.com/afewmail/afew][afew]] , optionally to initially tag your downloaded messages.
|
||||
+ 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://github.com/afewmail/afew][afew]] -- optionally to initially tag your downloaded messages.
|
||||
|
||||
** TODO MacOS
|
||||
|
||||
** Arch Linux
|
||||
Run one of the following commands.
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
Run one of the following commands:
|
||||
#+begin_src sh
|
||||
pacman -S isync notmuch #mbsync
|
||||
#+END_SRC
|
||||
#+BEGIN_SRC sh
|
||||
#+end_src
|
||||
#+begin_src sh
|
||||
pacman -S offlineimap notmuch
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
See: [[https://wiki.archlinux.org/index.php/Notmuch][Arch Wiki - Notmuch]]
|
||||
|
||||
** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
#+begin_src nix
|
||||
environment.systemPackages = with pkgs; [
|
||||
notmuch
|
||||
# And one of the following
|
||||
|
@ -64,20 +62,28 @@ environment.systemPackages = with pkgs; [
|
|||
isync
|
||||
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]]
|
||||
|
||||
** TODO openSUSE
|
||||
** 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 |
|
||||
| ~SPC m u~ | =+notmuch/update= | Download, sync, and index emails with notmuch |
|
||||
| ~SPC m c~ | =+notmuch/compose= | Compose new email |
|
||||
| Keymap | Command | Description |
|
||||
|-----------------+--------------------+-----------------------------------------------|
|
||||
| [[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
|
||||
To download your email you need a sync backend. Out of the box, this module
|
||||
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
|
||||
index your email for the first time:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
notmuch new
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
*** lieer
|
||||
|
||||
[[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]].
|
||||
[[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]].
|
||||
|
||||
*** offlineimap
|
||||
To use [[https://www.offlineimap.org/][offlineimap]], change ~+notmuch-sync-backend~:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; add to ~/.doom.d/config.el
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/config.el
|
||||
(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
|
||||
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
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
*** mbsync
|
||||
To use [[https://isync.sourceforge.io/][mbsync]], change ~+notmuch-sync-backend~:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(setq +notmuch-sync-backend 'mbsync)
|
||||
|
||||
;; Use `mbsync-xdg' if your mbsync config lives in $XDG_CONFIG_HOME/isync:
|
||||
(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
|
||||
[[*offlineimap][offlineimap]].
|
||||
|
||||
Start with writing a ~\~/.mbsyncrc~ to store your configuration. An example for
|
||||
GMAIL can be found on the [[https://wiki.archlinux.org/index.php/isync#Configuring][ArchWiki]] which will also explain how its integration
|
||||
with notmuch for auto synchronization. A non-GMAIL example is available as a
|
||||
gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]].
|
||||
Start with writing a =$HOME/.mbsyncrc= to store your configuration. An example
|
||||
for GMAIL can be found on the [[https://wiki.archlinux.org/index.php/isync#Configuring][ArchWiki]] which will also explain how its
|
||||
integration with notmuch for auto synchronization. A non-GMAIL example is
|
||||
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=.
|
||||
|
||||
*** Custom method
|
||||
If you have a unique method for synchronizing your email, you can define your
|
||||
own backend:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(setq +notmuch-sync-backend 'custom
|
||||
;; Set this to an arbitrary shell command
|
||||
+notmuch-sync-command "my-notmuch-sync-cmd")
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** 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/#index12h2][notmuch docs: sending mail using smtpmail]]
|
||||
|
||||
** Customize =*notmuch-hello*= buffer
|
||||
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
|
||||
(setq notmuch-show-log nil
|
||||
notmuch-hello-sections `(notmuch-hello-insert-saved-searches
|
||||
notmuch-hello-insert-alltags)
|
||||
;; To hide headers while composing an email
|
||||
notmuch-message-headers-visible nil))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Changing the =notmuch= landing page
|
||||
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
|
||||
the =notmuch= function and so has the same familiar behavior of running a
|
||||
When using [[kbd:][<leader> o m]] the ~+notmuch-home-function~ is called. By default it
|
||||
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
|
||||
a custom search as your landing page.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
(setq +notmuch-home-function (lambda () (notmuch-search "tag:inbox")))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** 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:
|
||||
- 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~
|
||||
- To compose email using an org-mode editor buffer, use ~M-x org-mime-edit-mail-in-org-mode~
|
||||
|
||||
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.
|
||||
|
||||
/config.el/
|
||||
|
||||
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:
|
||||
#+begin_src emacs-lisp
|
||||
;; add to $DOOMDIR/config.el
|
||||
(after! org-mime
|
||||
(setq org-mime-export-options '(:section-numbers nil
|
||||
:with-author nil
|
||||
:with-toc nil)))
|
||||
#+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
|
||||
|
|
55
modules/email/wanderlust/README.org
Normal file
55
modules/email/wanderlust/README.org
Normal 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
11
modules/input/README.org
Normal 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?]]
|
|
@ -1,51 +1,66 @@
|
|||
#+TITLE: input/chinese
|
||||
#+DATE: May 13, 2019
|
||||
#+SINCE: 2.1
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :input chinese
|
||||
#+subtitle: Spend your 3 hours a week in Emacs
|
||||
#+created: May 13, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#using-fcitx5][Using fcitx5]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module adds support for traditional Chinese script by introducing two input
|
||||
methods: Pinyin and Wubi.
|
||||
|
||||
#+begin_quote
|
||||
Because I am unable to personally test this module, help to improve this module
|
||||
would be greatly appreciated! Especially where performance is concerned.
|
||||
#+end_quote
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/tumashu/pyim][pyim]] (unless =+wubi=)
|
||||
+ [[https://github.com/zilongshanren/chinese-wbim][chinese-wbim]] (if =+wubi=)
|
||||
+ [[https://github.com/cute-jumper/fcitx.el][fcitx]]
|
||||
+ [[https://github.com/cute-jumper/ace-pinyin][ace-pinyin]]
|
||||
+ [[https://github.com/coldnew/pangu-spacing][pangu-spacing]]
|
||||
** Packages
|
||||
- [[doom-package:][ace-pinyin]]
|
||||
- [[doom-package:][chinese-wbim]] if [[doom-module:][+wubi]]
|
||||
- [[doom-package:][fcitx]]
|
||||
- [[doom-package:][pangu-spacing]]
|
||||
- [[doom-package:][pyim]] unless [[doom-module:][+wubi]]
|
||||
|
||||
** 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).
|
||||
|
||||
* TODO Prerequisites
|
||||
* TODO Features
|
||||
** 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 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
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
** Using fcitx5
|
||||
Modify ~fcitx-remote-command~ to change the default:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(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
|
||||
|
|
|
@ -1,43 +1,56 @@
|
|||
#+TITLE: input/japanese
|
||||
#+DATE: May 13, 2019
|
||||
#+SINCE: 2.1
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :input japanese
|
||||
#+subtitle: Ah, a man of culture
|
||||
#+created: May 13, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module adds support for Japanese script.
|
||||
|
||||
#+begin_quote
|
||||
Because I am unable to personally test this module, help to improve this module
|
||||
would be greatly appreciated! Especially where performance is concerned.
|
||||
#+end_quote
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/emacs-jp/migemo][migemo]]
|
||||
+ [[https://github.com/momomo5717/avy-migemo][avy-migemo]]
|
||||
+ [[https://github.com/hsaito/ddskk][ddskk]]
|
||||
+ [[https://github.com/coldnew/pangu-spacing][pangu-spacing]]
|
||||
** Packages
|
||||
- [[doom-package:][avy-migemo]]
|
||||
- [[doom-package:][ddskk]]
|
||||
- [[doom-package:][migemo]]
|
||||
- [[doom-package:][pangu-spacing]]
|
||||
|
||||
** 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).
|
||||
|
||||
* TODO Prerequisites
|
||||
+ For incremental search with Migemo, one of the following is required:
|
||||
+ [[https://github.com/koron/cmigemo][cmigemo]], which is recommended, or
|
||||
+ [[http://0xcc.net/migemo/][CVS Head Migemo]]
|
||||
* TODO Features
|
||||
** 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.]]
|
||||
|
||||
- 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 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
|
||||
|
|
|
@ -1,140 +1,139 @@
|
|||
#+TITLE: input/layout
|
||||
#+DATE: Jun 29, 2020
|
||||
#+SINCE: v3.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :input layout
|
||||
#+subtitle: auie,ctsrnm is the superior home row
|
||||
#+created: Jun 29, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#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.
|
||||
* Description :unfold:
|
||||
This module provides barebones support for using Doom with non-qwerty keyboard
|
||||
layouts.
|
||||
|
||||
** Maintainers
|
||||
+ @gagbo (Author, Bépo)
|
||||
- [[doom-user:][@gagbo]] ([[kbd:][+bepo]])
|
||||
|
||||
** Module Flags
|
||||
+ =+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).
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
None
|
||||
** Module flags
|
||||
- +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
|
||||
If you are using =:editor evil=, you should use =(evil +everywhere)=, as the
|
||||
module uses =evil-collection= utilities to do the remapping.
|
||||
** Packages
|
||||
/This module doesn't install any packages./
|
||||
|
||||
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
|
||||
Support for the bépo layout includes:
|
||||
- Setting Avy keys to the correct home row keys
|
||||
- Changing navigation keys to =ctsr=
|
||||
+ old =t= is mapped to =j=
|
||||
+ old =s= is mapped to =k= (i.e. staging in the magit status buffer is done
|
||||
with =k=)
|
||||
+ See [[*Configuration][Configuration]] to see where old =c= and =r= functions
|
||||
- Changing navigation keys to [[kbd:][c]], [[kbd:][t]], [[kbd:][s]], and [[kbd:][r]]
|
||||
+ old [[kbd:][t]] is mapped to [[kbd:][j]]
|
||||
+ old [[kbd:][s]] is mapped to [[kbd:][k]] (i.e. staging in the magit status buffer is done with
|
||||
[[kbd:][k]])
|
||||
+ See [[*Configuration][Configuration]] to see where old [[kbd:][c]] and [[kbd:][r]] functions
|
||||
are remapped
|
||||
- Bind =<>= functions to =«»= keys when possible
|
||||
- Bind =[]= functions to =()= keys when possible (the "unimpaired-like"
|
||||
bindings)
|
||||
- Bind =é= key to =w= functions when possible
|
||||
- Bind =è= key to useful functions when possible
|
||||
- Bind =`~= functions to =$#= keys when possible
|
||||
- Bind [[kbd:][<>]] functions to [[kbd:][«»]] keys when possible
|
||||
- Bind [[kbd:][[]]] functions to [[kbd:][()]] keys when possible (the "unimpaired-like" bindings)
|
||||
- Bind [[kbd:][é]] key to [[kbd:][w]] functions when possible
|
||||
- Bind [[kbd:][è]] key to useful functions when possible
|
||||
- Bind [[kbd:][`~]] functions to [[kbd:][$#]] keys when possible
|
||||
|
||||
*** Easymotion
|
||||
If you use =evil-easymotion=, then all the bindings that were on =gs= have been
|
||||
moved to =gé=.
|
||||
If you use [[doom-package:][evil-easymotion]], then all the bindings that were on [[kbd:][gs]] have been
|
||||
moved to [[kbd:][gé]].
|
||||
|
||||
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
|
||||
Exchanging =hjkl= to =ctsr= has the effect of destroying a few mnemonics: the
|
||||
change operator becomes =l= for example, or the window split becomes =SPC é k=.
|
||||
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 [[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
|
||||
buffers. A concrete example is magit.
|
||||
|
||||
As the =magit: project= buffer (obtained with =magit-status=) does not need
|
||||
left-right navigation, keys =c=, =r=, =h=, and =l= keep their "expected" bindings,
|
||||
while =t=, =s=, =j=, and =k= are flipped:
|
||||
- checking the log from a magit buffer is still on =l=
|
||||
- staging a file/region has been moved to =k=
|
||||
As the =magit: project= buffer (obtained with ~M-x magit-status~) does not need
|
||||
left-right navigation, keys [[kbd:][c]], [[kbd:][r]], [[kbd:][h]], and [[kbd:][l]] keep their "expected" bindings, while
|
||||
[[kbd:][t]], [[kbd:][s]], [[kbd:][j]], and [[kbd:][k]] are flipped:
|
||||
- checking the log from a magit buffer is still on [[kbd:][l]]
|
||||
- staging a file/region has been moved to [[kbd:][k]]
|
||||
|
||||
*** 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
|
||||
start with =g= start with =,= instead to avoid the curl on these common
|
||||
bindings. This is *not* implemented for the time being.
|
||||
start with [[kbd:][g]] start with [[kbd:][,]] instead to avoid the curl on these common bindings.
|
||||
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
|
||||
Also, implementing all those changes as a minor we could flip on and off would
|
||||
help with adoption
|
||||
|
||||
**** Put "word" text objects to é instead of w
|
||||
"inside word" and "around word" are =iw= and =aw=, which use the very poorly
|
||||
rated =w= key in the bépo layout. Finding a way to use =é= or even =è= more for
|
||||
these would be a welcome change
|
||||
"inside word" and "around word" are [[kbd:][iw]] and [[kbd:][aw]], which use the very poorly rated [[kbd:][w]]
|
||||
key in the bépo layout. Finding a way to use [[kbd:][é]] or even [[kbd:][è]] more for these would be
|
||||
a welcome change
|
||||
|
||||
*** Org-mode
|
||||
=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
|
||||
=C-r= in normal and insert states though, and it's not really user friendly in
|
||||
Emacs to remap those.
|
||||
[[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 [[kbd:][C-c]] and [[kbd:][C-r]] in
|
||||
normal and insert states though, and it's not really user friendly in Emacs to
|
||||
remap those.
|
||||
|
||||
Therefore, in org-mode:
|
||||
- =org-shiftright= is bound to =C-»=
|
||||
- =org-shiftleft= is bound to =C-«=
|
||||
Therefore, in ~org-mode~:
|
||||
- ~org-shiftright~ is bound to [[kbd:][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
|
||||
=+layout-bepo-cr-rotation-style= controls whether:
|
||||
- =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
|
||||
=bépo-l= key (='strict=)
|
||||
=bépo-l= key (~'strict~)
|
||||
|
||||
='strict= would be the logical choice but the =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
|
||||
the key that does not need a curl.
|
||||
~'strict~ would be the logical choice but the [[kbd:][c]] functions are used more often
|
||||
than the [[kbd:][r]] ones so [[https://bepo.fr/wiki/Vim#Principe][Ergodis]] advises to actually put all the [[kbd:][c]] functions on the
|
||||
key that does not need a curl.
|
||||
|
||||
* Troubleshooting
|
||||
# Common issues and their solution, or places to look for help.
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
** Outstanding issues (contributions welcome)
|
||||
*** Bépo
|
||||
- in eshell, the key `c` is still bound to
|
||||
`evil-collection-eshell-evil-change` in normal mode
|
||||
- In [[doom-package:][eshell]], the key [[kbd:][c]] is still bound to ~evil-collection-eshell-evil-change~ in
|
||||
normal mode.
|
||||
|
||||
** How to investigate an issue ?
|
||||
If a key is misbehaving, use =describe-key= (=C-h k= or =SPC h k= or =F1 k=) to
|
||||
see the functions bound to the key, and more importantly in which map it is
|
||||
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 command bound to the key, and more importantly in which keymap it is
|
||||
bound.
|
||||
|
||||
You should ignore all =evil-collection-...-backup-map= keymaps, as they are
|
||||
artifacts from =evil-collection-translate-key= and those maps are actually not
|
||||
You should ignore all ~evil-collection-*-backup-map~ keymaps, as they are
|
||||
artifacts from ~evil-collection-translate-key~ and those maps are actually not
|
||||
active.
|
||||
|
||||
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 ?
|
||||
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
|
||||
sync= and restart emacs.
|
||||
"get work done". Sadly the only way is to comment out the module, run ~$ doom
|
||||
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.
|
||||
|
||||
* 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
11
modules/lang/README.org
Normal 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?]]
|
|
@ -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
|
||||
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
|
||||
|
|
|
@ -1,53 +1,58 @@
|
|||
#+TITLE: lang/beancount
|
||||
#+DATE: April 13, 2021
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang beancount
|
||||
#+subtitle: Mind the GAAP
|
||||
#+created: April 13, 2021
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
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]].
|
||||
|
||||
+ Supports [[https://github.com/polarmutex/beancount-language-server][beancount-language-server]] (if module is enabled with the =+lsp=
|
||||
flag).
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
- @hlissner
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable support for [beancount-language-server]. Requires Doom's =:tools
|
||||
lsp= module.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/beancount/beancount-mode][beancount]]
|
||||
** Module flags
|
||||
- +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
|
||||
+ Associates the material =attach_money= icon with *.beancount files in the
|
||||
=all-the-icons= package.
|
||||
- Associates the material =attach_money= icon with =*.beancount= files in the
|
||||
[[doom-package:][all-the-icons]] package.
|
||||
|
||||
* Prerequisites
|
||||
This module has no hard prerequisites, but assumes you have [[https://github.com/beancount/beancount][beancount]] installed
|
||||
in order to generate reports with ~bean-report~.
|
||||
** 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/beancount/beancount][beancount]], for generating reports
|
||||
- [[https://beancount.github.io/fava/][fava]], for a web interface for your ledgers
|
||||
|
||||
* TODO Usage
|
||||
#+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
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
|
||||
* 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
|
@ -1,73 +1,73 @@
|
|||
#+TITLE: lang/cc
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang cc
|
||||
#+subtitle: C > C++ == 1
|
||||
#+created: February 20, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module adds support for the C-family of languages: C, C++, and Objective-C.
|
||||
|
||||
+ Code completion (~company-irony~)
|
||||
+ eldoc support (~irony-eldoc~)
|
||||
+ Syntax-checking (~flycheck-irony~)
|
||||
+ Code navigation (~rtags~)
|
||||
+ File Templates ([[../../editor/file-templates/templates/c-mode][c-mode]], [[../../editor/file-templates/templates/c++-mode][c++-mode]])
|
||||
+ Snippets ([[https://github.com/hlissner/doom-snippets/tree/master/cc-mode][cc-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c-mode][c-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c++-mode][c++-mode]])
|
||||
+ Several improvements to C++11 indentation and syntax highlighting.
|
||||
- Code completion (~company-irony~)
|
||||
- eldoc support (~irony-eldoc~)
|
||||
- Syntax-checking (~flycheck-irony~)
|
||||
- Code navigation (~rtags~)
|
||||
- File Templates ([[../../editor/file-templates/templates/c-mode][c-mode]], [[../../editor/file-templates/templates/c++-mode][c++-mode]])
|
||||
- Snippets ([[https://github.com/hlissner/doom-snippets/tree/master/cc-mode][cc-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c-mode][c-mode]], [[https://github.com/hlissner/doom-snippets/tree/master/c++-mode][c++-mode]])
|
||||
- Several improvements to C++11 indentation and syntax highlighting.
|
||||
|
||||
** Module Flags
|
||||
+ ~+lsp~ Disables irony+rtags and replaces them with LSP (ccls by default). This
|
||||
requires the =:tools lsp= module.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/Kitware/CMake][cmake-mode]]
|
||||
+ [[https://github.com/chachi/cuda-mode][cuda-mode]]
|
||||
+ [[https://github.com/liblit/demangle-mode][demangle-mode]]
|
||||
+ [[https://github.com/jart/disaster][disaster]]
|
||||
+ [[https://github.com/ludwigpacifici/modern-cpp-font-lock][modern-cpp-font-lock]]
|
||||
+ [[https://github.com/salmanebah/opencl-mode][opencl-mode]]
|
||||
+ [[https://github.com/jimhourihan/glsl-mode][glsl-mode]]*
|
||||
+ [[https://github.com/guidoschmidt/company-glsl][company-glsl]]*
|
||||
+ =+lsp=
|
||||
+ [[https://github.com/MaskRay/emacs-ccls][ccls]] if =:tools lsp= has *no* =+eglot= flag
|
||||
+ =-lsp=
|
||||
+ [[https://github.com/Sarcasm/irony-mode][irony]]
|
||||
+ [[https://github.com/ikirill/irony-eldoc][irony-eldoc]]
|
||||
+ [[https://github.com/Sarcasm/flycheck-irony][flycheck-irony]]
|
||||
+ [[https://github.com/Sarcasm/company-irony][company-irony]]
|
||||
+ [[https://github.com/hotpxl/company-irony-c-headers][company-irony-c-headers]]
|
||||
+ [[https://github.com/Andersbakken/rtags][rtags]]
|
||||
+ [[https://github.com/Andersbakken/rtags][ivy-rtags]]
|
||||
+ [[https://github.com/Andersbakken/rtags][helm-rtags]]
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
Enable LSP support for ~c-mode~, ~c++-mode~, and ~objc-mode~. Requires [[doom-module:][:tools
|
||||
lsp]] and a langserver (supports ccls, clangd, and cquery). Replaces irony &
|
||||
rtags.
|
||||
- +tree-sitter ::
|
||||
Leverages tree-sitter for better syntax highlighting and structural text
|
||||
editing. Requires [[doom-module:][:tools tree-sitter]].
|
||||
|
||||
** Packages
|
||||
- [[doom-package:][cmake-mode]]
|
||||
- [[doom-package:][company-glsl]]
|
||||
- [[doom-package:][cuda-mode]]
|
||||
- [[doom-package:][demangle-mode]]
|
||||
- [[doom-package:][disaster]]
|
||||
- [[doom-package:][glsl-mode]]
|
||||
- [[doom-package:][modern-cpp-font-lock]]
|
||||
- [[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.
|
||||
|
||||
+ If =+lsp= is enabled, you need one of *clangd v9+* or *ccls*.
|
||||
+ If =+lsp= is *not* enabled, you need *irony-server* and *rtags*.
|
||||
+ Other features in this module depend on:
|
||||
+ (optional) glslangValidator, for GLSL completion in ~glsl-mode~
|
||||
+ (optional) cmake, for code completion in ~cmake-mode~
|
||||
+ You will need a C/C++ compiler, like =gcc= or =clang=.
|
||||
- If [[doom-module:][+lsp]] is enabled, you need one of *clangd v9+* or *ccls*.
|
||||
- If [[doom-module:][+lsp]] is *not* enabled, you need *irony-server* and *rtags*.
|
||||
- Other features in this module depend on:
|
||||
- (optional) glslangValidator, for GLSL completion in ~glsl-mode~
|
||||
- (optional) cmake, for code completion in ~cmake-mode~
|
||||
- You will need a C/C++ compiler, like =gcc= or =clang=.
|
||||
|
||||
** LSP servers
|
||||
=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
|
||||
available through your OS' package manager.
|
||||
- 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]]
|
||||
- Fedora & CentOS/RHEL 8+: ~# dnf install clang-tools-extra~
|
||||
- openSUSE: ~# zypper install clang~
|
||||
- Arch: ~# pacman -S clang~
|
||||
- Fedora & CentOS/RHEL 8+: ~$ dnf install clang-tools-extra~
|
||||
- openSUSE: ~$ zypper install clang~
|
||||
- Arch: ~$ pacman -S clang~
|
||||
- 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!
|
||||
- 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
|
||||
|
@ -97,14 +97,13 @@ irony-install-server~ in Emacs.
|
|||
|
||||
*** macOS
|
||||
Due to linking issues, macOS users must compile irony-server manually:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
brew install cmake
|
||||
brew install llvm
|
||||
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
|
||||
pushd irony-mode/server/build
|
||||
|
||||
|
@ -121,7 +120,7 @@ install_name_tool -change @rpath/libclang.dylib \
|
|||
# Cleanup
|
||||
popd
|
||||
rm -rf irony-mode
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** rtags
|
||||
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
|
||||
isn't already running). If you prefer to run it yourself:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
rdm &
|
||||
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
|
||||
By default, a set of default compile settings are defined in
|
||||
~+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
|
||||
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
|
||||
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
# For non-CMake projects
|
||||
make clean
|
||||
bear make
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Use ~M-x +cc/reload-compile-db~ to reload your compile db in an already-open
|
||||
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.
|
||||
|
||||
From the bear [[https://github.com/rizsotto/Bear#empty-compilation-database-on-os-x-captain-or-fedora][readme]]:
|
||||
|
||||
#+begin_quote
|
||||
Security extension/modes on different operating systems might disable library
|
||||
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.
|
||||
#+end_quote
|
||||
|
||||
A workaround might be to install ~make~ via Homebrew which puts ~gmake~
|
||||
under ~/usr/local/~.
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
A workaround might be to install ~make~ via Homebrew which puts ~gmake~ under
|
||||
=/usr/local/=:
|
||||
#+begin_src sh
|
||||
brew install make
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
#+end_src
|
||||
#+begin_src sh
|
||||
make clean
|
||||
bear gmake
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Additional info:
|
||||
+ [[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/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]]
|
||||
|
||||
** Configure LSP servers
|
||||
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
|
||||
=init.el= file.
|
||||
[[doom-package:][lsp-mode]] by default, [[doom-package:][eglot]] if you have [[doom-module:][:tools lsp +eglot]] active in
|
||||
=$DOOMDIR/init.el= file.
|
||||
|
||||
*** LSP-mode with clangd
|
||||
#+begin_src emacs-lisp
|
||||
(after! lsp-clangd
|
||||
(setq lsp-clients-clangd-args
|
||||
'("-j=3"
|
||||
"--background-index"
|
||||
"--clang-tidy"
|
||||
"--completion-style=detailed"
|
||||
"--header-insertion=never"
|
||||
"--header-insertion-decorators=0"))
|
||||
(set-lsp-priority! 'clangd 2))
|
||||
#+end_src
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
(setq lsp-clients-clangd-args '("-j=3"
|
||||
"--background-index"
|
||||
"--clang-tidy"
|
||||
"--completion-style=detailed"
|
||||
"--header-insertion=never"
|
||||
"--header-insertion-decorators=0"))
|
||||
(after! lsp-clangd (set-lsp-priority! 'clangd 2))
|
||||
#+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
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(after! ccls
|
||||
(setq ccls-initialization-options '(:index (:comments 2) :completion (:detailedLabel t)))
|
||||
(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
|
||||
documentation]] lists available options, use =t= for ~true~, =:json-false= for
|
||||
~false~, and =:json-null= for ~null~.
|
||||
|
||||
*** Eglot with clangd
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(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
|
||||
it is the last =set-eglot-client! 'cc-mode= in your config).
|
||||
|
||||
*** Eglot with ccls
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(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
|
||||
is the last =set-eglot-client! 'cc-mode= in your config). [[https://github.com/MaskRay/ccls/wiki/Customization#--initjson][CCLS documentation]]
|
||||
lists available options
|
||||
|
||||
* Appendix
|
||||
** Eglot specific bindings
|
||||
When using =+lsp= and =:tools (lsp +eglot)=, lsp-mode is replaced with eglot,
|
||||
and an additional function to get inheritance type hierarchy is added
|
||||
| Binding | Description |
|
||||
|------------------------------+--------------------------------------------------|
|
||||
| ~<localleader> c t~ | ~Display inheritance type hierarchy (upwards)~ |
|
||||
| ~<prefix> <localleader> c t~ | ~Display inheritance type hierarchy (downwards)~ |
|
||||
* 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
|
||||
|
|
|
@ -1,115 +1,121 @@
|
|||
#+TITLE: lang/clojure
|
||||
#+DATE: May 30, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang clojure
|
||||
#+subtitle: Java with a lisp
|
||||
#+created: May 30, 2017
|
||||
#+since: 2.0.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#keybindings][Keybindings]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
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
|
||||
more
|
||||
+ Refactoring (~clj-refactor~)
|
||||
+ Linting (~clj-kondo~), requires ~:checkers syntax~
|
||||
+ LSP support (~clojure-lsp~)
|
||||
- Refactoring (~clj-refactor~)
|
||||
- Linting (~clj-kondo~), requires ~:checkers syntax~
|
||||
- LSP support (~clojure-lsp~)
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables LSP support, alongside Cider.
|
||||
** Module flags
|
||||
- +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
|
||||
+ [[https://github.com/clojure-emacs/cider][cider]]
|
||||
+ [[https://github.com/clojure-emacs/clj-refactor.el][clj-refactor]]
|
||||
+ [[https://github.com/borkdude/flycheck-clj-kondo][flycheck-clj-kondo]]
|
||||
** Packages
|
||||
- [[doom-package:][cider]]
|
||||
- [[doom-package:][clj-refactor]]
|
||||
- [[doom-package:][flycheck-clj-kondo]] if [[doom-module:][:checkers syntax]]
|
||||
|
||||
** 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.
|
||||
+ 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:
|
||||
- [[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]]
|
||||
+ [[https://leiningen.org/][leiningen]] (REPL)
|
||||
+ [[https://github.com/borkdude/clj-kondo][clj-kondo]] (linter)
|
||||
+ With =+lsp=
|
||||
+ [[https://clojure-lsp.github.io/clojure-lsp/][clojure-lsp]]
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
** Keybindings
|
||||
| Binding | Description |
|
||||
|---------------------+------------------------------------------------------|
|
||||
| =<localleader> '= | =cider-jack-in-clj= |
|
||||
| =<localleader> C= | =cider-connect-cljs= |
|
||||
| =<localleader> M= | =cider-macroexpand-all= |
|
||||
| =<localleader> R= | =hydra-cljr-help-menu/body= |
|
||||
| =<localleader> c= | =cider-connect-clj= |
|
||||
| =<localleader> e D= | =cider-insert-defun-in-repl= |
|
||||
| =<localleader> e E= | =cider-insert-last-sexp-in-repl= |
|
||||
| =<localleader> e R= | =cider-insert-region-in-repl= |
|
||||
| =<localleader> e b= | =cider-eval-buffer= |
|
||||
| =<localleader> e d= | =cider-eval-defun-at-point= |
|
||||
| =<localleader> e e= | =cider-eval-last-sexp= |
|
||||
| =<localleader> e r= | =cider-eval-region= |
|
||||
| =<localleader> e u= | =cider-undef= |
|
||||
| =<localleader> g b= | =cider-pop-back= |
|
||||
| =<localleader> g g= | =cider-find-var= |
|
||||
| =<localleader> g n= | =cider-find-ns= |
|
||||
| =<localleader> h a= | =cider-apropos= |
|
||||
| =<localleader> h c= | =cider-clojuredocs= |
|
||||
| =<localleader> h d= | =cider-doc= |
|
||||
| =<localleader> h j= | =cider-javadoc= |
|
||||
| =<localleader> h n= | =cider-find-ns= |
|
||||
| =<localleader> h w= | =cider-clojuredocs-web= |
|
||||
| =<localleader> i e= | =cider-enlighten-mode= |
|
||||
| =<localleader> i i= | =cider-inspect= |
|
||||
| =<localleader> i r= | =cider-inspect-last-result= |
|
||||
| =<localleader> m "= | =cider-jack-in-cljs= |
|
||||
| =<localleader> m= | =cider-macroexpand-1= |
|
||||
| =<localleader> n N= | =cider-browse-ns-all= |
|
||||
| =<localleader> n n= | =cider-browse-ns= |
|
||||
| =<localleader> n r= | =cider-ns-refresh= |
|
||||
| =<localleader> p d= | =cider-pprint-eval-defun-at-point= |
|
||||
| =<localleader> p D= | =cider-pprint-eval-defun-to-comment= |
|
||||
| =<localleader> p p= | =cider-pprint-eval-last-sexp= |
|
||||
| =<localleader> p P= | =cider-pprint-eval-last-sexp-to-comment= |
|
||||
| =<localleader> p r= | =cider-pprint-eval-last-sexp-to-repl= |
|
||||
| =<localleader> r B= | =+clojure/cider-switch-to-repl-buffer-and-switch-ns= |
|
||||
| =<localleader> r L= | =cider-load-buffer-and-switch-to-repl-buffer= |
|
||||
| =<localleader> r R= | =cider-restart= |
|
||||
| =<localleader> r b= | =cider-switch-to-repl-buffer= |
|
||||
| =<localleader> r c= | =cider-find-and-clear-repl-output= |
|
||||
| =<localleader> r l= | =cider-load-buffer= |
|
||||
| =<localleader> r n= | =cider-repl-set-ns= |
|
||||
| =<localleader> r q= | =cider-quit= |
|
||||
| =<localleader> r r= | =cider-ns-refresh= |
|
||||
| =<localleader> t a= | =cider-test-rerun-test= |
|
||||
| =<localleader> t l= | =cider-test-run-loaded-tests= |
|
||||
| =<localleader> t n= | =cider-test-run-ns-tests= |
|
||||
| =<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= |
|
||||
| Keybind | Command |
|
||||
|-------------------+------------------------------------------------------|
|
||||
| [[kbd:][<localleader> ']] | ~cider-jack-in-clj~ |
|
||||
| [[kbd:][<localleader> C]] | ~cider-connect-cljs~ |
|
||||
| [[kbd:][<localleader> M]] | ~cider-macroexpand-all~ |
|
||||
| [[kbd:][<localleader> R]] | ~hydra-cljr-help-menu/body~ |
|
||||
| [[kbd:][<localleader> c]] | ~cider-connect-clj~ |
|
||||
| [[kbd:][<localleader> e D]] | ~cider-insert-defun-in-repl~ |
|
||||
| [[kbd:][<localleader> e E]] | ~cider-insert-last-sexp-in-repl~ |
|
||||
| [[kbd:][<localleader> e R]] | ~cider-insert-region-in-repl~ |
|
||||
| [[kbd:][<localleader> e b]] | ~cider-eval-buffer~ |
|
||||
| [[kbd:][<localleader> e d]] | ~cider-eval-defun-at-point~ |
|
||||
| [[kbd:][<localleader> e e]] | ~cider-eval-last-sexp~ |
|
||||
| [[kbd:][<localleader> e r]] | ~cider-eval-region~ |
|
||||
| [[kbd:][<localleader> e u]] | ~cider-undef~ |
|
||||
| [[kbd:][<localleader> g b]] | ~cider-pop-back~ |
|
||||
| [[kbd:][<localleader> g g]] | ~cider-find-var~ |
|
||||
| [[kbd:][<localleader> g n]] | ~cider-find-ns~ |
|
||||
| [[kbd:][<localleader> h a]] | ~cider-apropos~ |
|
||||
| [[kbd:][<localleader> h c]] | ~cider-clojuredocs~ |
|
||||
| [[kbd:][<localleader> h d]] | ~cider-doc~ |
|
||||
| [[kbd:][<localleader> h j]] | ~cider-javadoc~ |
|
||||
| [[kbd:][<localleader> h n]] | ~cider-find-ns~ |
|
||||
| [[kbd:][<localleader> h w]] | ~cider-clojuredocs-web~ |
|
||||
| [[kbd:][<localleader> i e]] | ~cider-enlighten-mode~ |
|
||||
| [[kbd:][<localleader> i i]] | ~cider-inspect~ |
|
||||
| [[kbd:][<localleader> i r]] | ~cider-inspect-last-result~ |
|
||||
| [[kbd:][<localleader> m "]] | ~cider-jack-in-cljs~ |
|
||||
| [[kbd:][<localleader> m]] | ~cider-macroexpand-1~ |
|
||||
| [[kbd:][<localleader> n N]] | ~cider-browse-ns-all~ |
|
||||
| [[kbd:][<localleader> n n]] | ~cider-browse-ns~ |
|
||||
| [[kbd:][<localleader> n r]] | ~cider-ns-refresh~ |
|
||||
| [[kbd:][<localleader> p d]] | ~cider-pprint-eval-defun-at-point~ |
|
||||
| [[kbd:][<localleader> p D]] | ~cider-pprint-eval-defun-to-comment~ |
|
||||
| [[kbd:][<localleader> p p]] | ~cider-pprint-eval-last-sexp~ |
|
||||
| [[kbd:][<localleader> p P]] | ~cider-pprint-eval-last-sexp-to-comment~ |
|
||||
| [[kbd:][<localleader> p r]] | ~cider-pprint-eval-last-sexp-to-repl~ |
|
||||
| [[kbd:][<localleader> r B]] | ~+clojure/cider-switch-to-repl-buffer-and-switch-ns~ |
|
||||
| [[kbd:][<localleader> r L]] | ~cider-load-buffer-and-switch-to-repl-buffer~ |
|
||||
| [[kbd:][<localleader> r R]] | ~cider-restart~ |
|
||||
| [[kbd:][<localleader> r b]] | ~cider-switch-to-repl-buffer~ |
|
||||
| [[kbd:][<localleader> r c]] | ~cider-find-and-clear-repl-output~ |
|
||||
| [[kbd:][<localleader> r l]] | ~cider-load-buffer~ |
|
||||
| [[kbd:][<localleader> r n]] | ~cider-repl-set-ns~ |
|
||||
| [[kbd:][<localleader> r q]] | ~cider-quit~ |
|
||||
| [[kbd:][<localleader> r r]] | ~cider-ns-refresh~ |
|
||||
| [[kbd:][<localleader> t a]] | ~cider-test-rerun-test~ |
|
||||
| [[kbd:][<localleader> t l]] | ~cider-test-run-loaded-tests~ |
|
||||
| [[kbd:][<localleader> t n]] | ~cider-test-run-ns-tests~ |
|
||||
| [[kbd:][<localleader> t p]] | ~cider-test-run-project-tests~ |
|
||||
| [[kbd:][<localleader> t r]] | ~cider-test-rerun-failed-tests~ |
|
||||
| [[kbd:][<localleader> t s]] | ~cider-test-run-ns-tests-with-filters~ |
|
||||
| [[kbd:][<localleader> t t]] | ~cider-test-run-test~ |
|
||||
|
||||
* 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
|
@ -1,22 +1,11 @@
|
|||
#+TITLE: lang/common-lisp
|
||||
#+DATE: June 13, 2018
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang common-lisp
|
||||
#+subtitle: If you've seen one lisp, you've seen them all
|
||||
#+created: June 13, 2018
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module provides support for [[https://lisp-lang.org/][Common Lisp]] and the [[doom-package:][Sly]] development
|
||||
environment. Common Lisp is not a single language but a specification, with many
|
||||
competing compiler implementations. By default, [[http://www.sbcl.org/][Steel Bank Common Lisp]] (SBCL) is
|
||||
assumed to be installed, but this can be configured.
|
||||
|
@ -27,45 +16,65 @@ style often unseen in other languages. Compiled Common Lisp programs are trusted
|
|||
to run unmodified for a long time.
|
||||
|
||||
** 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]]
|
||||
+ [[https://github.com/joaotavora/sly-macrostep][sly-macrostep]]
|
||||
+ [[https://github.com/PuercoPop/sly-repl-ansi-color][sly-repl-ansi-color]]
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
* 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 the =lsp= module. Sly (and SLIME before it) is
|
||||
This module does not integrate with [[doom-module:][:tools lsp]]. Sly (and SLIME before it) is
|
||||
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
|
||||
Emacs.
|
||||
|
||||
** Sly
|
||||
|
||||
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]].
|
||||
|
||||
A Sly session will be started when you open a =.lisp= file. Use =SPC m '= to switch
|
||||
to the REPL minibuffer.
|
||||
A Sly session will be started when you open a =.lisp= file. Use [[kbd:][<localleader> ']]
|
||||
to switch to the REPL minibuffer.
|
||||
|
||||
** 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.
|
||||
|
||||
* 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
|
||||
~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
|
||||
|
|
|
@ -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]].
|
||||
|
||||
+ Code completion ([[https://github.com/cpitclaudel/company-coq][company-coq]])
|
||||
+ [[https://github.com/hlissner/doom-snippets/tree/master/coq-mode][Snippets]]
|
||||
- Code completion ([[https://github.com/cpitclaudel/company-coq][company-coq]])
|
||||
- [[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
|
||||
|
|
|
@ -1,62 +1,66 @@
|
|||
#+TITLE: lang/crystal
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang crystal
|
||||
#+subtitle: Ruby at the speed of C
|
||||
#+created: January 16, 2017
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This modules adds [[https://crystal-lang.org/][crystal]] support.
|
||||
|
||||
+ Syntax-checking (~flycheck~)
|
||||
+ REPL (~inf-crystal~)
|
||||
- Syntax-checking (~flycheck~)
|
||||
- REPL (~inf-crystal~)
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/crystal-lang-tools/emacs-crystal-mode/][crystal-mode]]
|
||||
+ [[https://github.com/brantou/inf-crystal.el/][inf-crystal]]
|
||||
+ if ~:checkers syntax~ is enabled
|
||||
- [[https://github.com/crystal-lang-tools/emacs-crystal-mode/][flycheck-crystal]]
|
||||
- [[https://github.com/crystal-ameba/ameba.el/][flycheck-ameba]]
|
||||
** Packages
|
||||
- [[doom-package:][crystal-mode]]
|
||||
- [[doom-package:][inf-crystal]]
|
||||
- if [[doom-module:][:checkers syntax]]
|
||||
- [[doom-package:][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
|
||||
you need to install [[https://crystal-lang.org/install/][the crystal compiler]].
|
||||
|
||||
*** MacOS
|
||||
#+begin_src shell
|
||||
brew install crystal
|
||||
#+end_src
|
||||
|
||||
*** Arch
|
||||
#+begin_src shell
|
||||
sudo pacman -S crystal shards
|
||||
#+end_src
|
||||
- MacOS: ~$ brew install crystal~
|
||||
- Arch Linux: ~$ pacman -S crystal shards~
|
||||
|
||||
** 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
|
||||
# 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
|
@ -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][Description]]
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module adds C# support to Emacs, powered by Omnisharp (directly or through
|
||||
LSP).
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables omnisharp through LSP support (requires omnisharp).
|
||||
+ =+unity= Enables special support for the [[https://unity.com/][Unity game engine]] (particularly,
|
||||
support for HLSL shaders).
|
||||
+ =+dotnet= Enables Dotnet transient interface with Sharper
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/josteink/csharp-mode][csharp-mode]]
|
||||
+ [[https://github.com/omajid/csproj-mode][csproj-mode]]
|
||||
+ [[https://github.com/OmniSharp/omnisharp-emacs][omnisharp]]* (not =+lsp=)
|
||||
+ [[https://github.com/midnightSuyama/shader-mode][shader-mode]]* (=+unity=)
|
||||
+ [[https://github.com/sebasmonia/sharper][sharper]] (=+dotnet=)
|
||||
** Module flags
|
||||
- +dotnet ::
|
||||
Enable Dotnet transient interface with Sharper
|
||||
- +lsp ::
|
||||
Enable LSP support for ~csharp-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(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).
|
||||
|
||||
** Packages
|
||||
- [[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]]
|
||||
|
||||
* Prerequisites
|
||||
This module needs:
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
+ omnisharp (with the ~+lsp~ flag, this must be installed externally. Without
|
||||
it, use ~M-x omnisharp-install-server~)
|
||||
+ .NET SDKs (on Windows)
|
||||
+ Mono (on UNIX platforms)
|
||||
+ .NET Core 1.X - 3.X or .NET 5 for cross platform
|
||||
** 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:
|
||||
- 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
|
||||
|
||||
** Arch Linux
|
||||
#+BEGIN_SRC sh
|
||||
sudo pacman --needed --noconfirm -S mono
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
pacman --needed --noconfirm -S mono
|
||||
#+end_src
|
||||
|
||||
** 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
|
||||
|
|
|
@ -1,47 +1,47 @@
|
|||
#+TITLE: lang/dart
|
||||
#+DATE: February 16, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang dart
|
||||
#+subtitle: Paint ui and not much else
|
||||
#+created: February 15, 2020
|
||||
#+since: 21.12.0 (#2729)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#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 :unfold:
|
||||
[[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform. It
|
||||
is fast and optimized for UI, famous for the [[https://flutter.io/][Flutter]] framework, also made by
|
||||
Google. Both Flutter and Dart are free and open-source.
|
||||
|
||||
* Description
|
||||
[[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform.
|
||||
It is fast and optimized for UI, famous for the [[https://flutter.io/][Flutter]] framework, also
|
||||
made by Google. Both Flutter and Dart are free and open-source.
|
||||
|
||||
This module wraps ~dart-mode~, with [[https://microsoft.github.io/language-server-protocol/][LSP]] features like code completion for =.dart= files,
|
||||
syntax highlighting, debugging, closing labels, etc.
|
||||
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
|
||||
+ [[https://github.com/ericdallo][@ericdallo]]
|
||||
- [[doom-user:][@ericdallo]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable LSP server integration.
|
||||
+ =+flutter= Adds ~flutter~ integration and some sane defaults for Flutter
|
||||
development along with ~hover~ for desktop development.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/bradyt/dart-mode][dart-mode]]
|
||||
+ [[https://github.com/amake/flutter.el][flutter.el]]
|
||||
+ [[https://github.com/ericdallo/hover.el][hover.el]]
|
||||
** Module flags
|
||||
- +flutter ::
|
||||
Enable ~flutter~ integration and some sane defaults for Flutter development
|
||||
along with ~hover~ for desktop development.
|
||||
- +lsp ::
|
||||
Enable LSP support for ~dart-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(supports flutter).
|
||||
|
||||
* Prerequisites
|
||||
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.
|
||||
** Packages
|
||||
- [[doom-package:][dart-mode]]
|
||||
- [[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
|
||||
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,
|
||||
please refer to the official website at: https://dart.dev/get-dart
|
||||
|
||||
+ *On Debian (also Ubuntu and its derivations):*
|
||||
#+BEGIN_SRC shell
|
||||
sudo apt-get install dart
|
||||
#+END_SRC
|
||||
+ *On Arch Linux (and derivations like Manjaro):*
|
||||
#+BEGIN_SRC shell
|
||||
sudo pacman -S dart
|
||||
#+END_SRC
|
||||
+ *On macOS*:
|
||||
#+BEGIN_SRC shell
|
||||
- *On Debian (also Ubuntu and its derivations):*
|
||||
#+begin_src sh
|
||||
apt-get install dart
|
||||
#+end_src
|
||||
- *On Arch Linux (and derivations like Manjaro):*
|
||||
#+begin_src sh
|
||||
pacman -S dart
|
||||
#+end_src
|
||||
- *On macOS*:
|
||||
#+begin_src sh
|
||||
brew tap dart-lang/dart
|
||||
brew install dart
|
||||
#+END_SRC
|
||||
+ *On NixOS*:
|
||||
#+BEGIN_SRC shell
|
||||
#+end_src
|
||||
- *On NixOS*:
|
||||
#+begin_src sh
|
||||
nix-env -iA nixpkgs.dart
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Installing Flutter SDK
|
||||
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
|
||||
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
|
||||
export PATH="$PATH:$(pwd)/flutter/bin" # to add it to PATH
|
||||
flutter doctor # for Dependency check and further instructions
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* Features
|
||||
+ Syntax highlighting and formatting for ~.dart~ files provided by LSP
|
||||
+ Auto import
|
||||
+ Widget guide lines for Flutter
|
||||
+ Closing labels for constructors
|
||||
+ Run tests interactively
|
||||
+ Outline support via ~lsp-treemacs~
|
||||
+ Emacs functions for running and debugging Flutter projects
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
- Syntax highlighting and formatting for ~.dart~ files provided by LSP.
|
||||
- Auto import.
|
||||
- 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
|
||||
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
|
||||
|
@ -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
|
||||
and Flutter on your ~PATH~ variable.
|
||||
|
||||
** Android
|
||||
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
|
||||
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
|
||||
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
|
||||
[[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
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
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
|
||||
the permissions of the ~/opt/dart-sdk~ and ~/opt/flutter~ directories (not to
|
||||
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
|
||||
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
|
||||
|
|
50
modules/lang/data/README.org
Normal file
50
modules/lang/data/README.org
Normal 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
|
54
modules/lang/dhall/README.org
Normal file
54
modules/lang/dhall/README.org
Normal 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
|
|
@ -1,79 +1,106 @@
|
|||
#+TITLE: lang/elixir
|
||||
#+DATE: June 24, 2019
|
||||
#+SINCE: v2.0.9
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang elixir
|
||||
#+subtitle: Erlang done right
|
||||
#+created: May 24, 2017
|
||||
#+since: 2.0.3 (#83)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module flags]]
|
||||
- [[#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 :unfold:
|
||||
This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[doom-package:][alchemist]] or
|
||||
[[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]].
|
||||
|
||||
* Description
|
||||
This module provides support for [[https://elixir-lang.org/][Elixir programming language]] via [[https://github.com/tonini/alchemist.el][alchemist.el]]
|
||||
or [[https://github.com/elixir-lsp/elixir-ls/][elixir-ls]].
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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
|
||||
+ [[https://github.com/elixir-editors/emacs-elixir][elixir-mode]]
|
||||
+ [[https://github.com/tonini/alchemist.el][alchemist.el]]
|
||||
+ [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]]
|
||||
+ [[https://github.com/ananthakumaran/exunit.el][exunit]]
|
||||
** Packages
|
||||
- [[doom-package:][alchemist]]
|
||||
- [[doom-package:][elixir-mode]]
|
||||
- [[doom-package:][exunit]]
|
||||
- [[doom-package:][flycheck-credo]] if [[doom-module:][:checkers syntax]]
|
||||
|
||||
* Prerequisites
|
||||
You should have Elixir installed, for example, via your distribution's package
|
||||
manager or a version management tool such as [[https://github.com/asdf-vm/asdf-elixir][asdf]].
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
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]]
|
||||
and enable ~:tools lsp~ in your ~init.el~.
|
||||
** 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 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
|
||||
(See [[https://elixir-lang.org/install.html]] for other operating systems)
|
||||
|
||||
*** With ~asdf~
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
asdf plugin-add elixir
|
||||
asdf install elixir 1.9.1
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
*** Arch Linux
|
||||
#+BEGIN_SRC sh :dir /sudo::
|
||||
sudo pacman -S elixir
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
pacman -S elixir
|
||||
#+end_src
|
||||
|
||||
*** Gentoo Linux
|
||||
#+BEGIN_SRC sh :dir /sudo::
|
||||
sudo emerge -v dev-lang/elixir
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
emerge -v dev-lang/elixir
|
||||
#+end_src
|
||||
|
||||
*** openSUSE
|
||||
#+BEGIN_SRC sh :dir /sudo::
|
||||
sudo zypper install elixir
|
||||
#+END_SRC
|
||||
See [[https://elixir-lang.org/install.html]] for other operating systems
|
||||
* Features
|
||||
- Code completion (~:completion company~)
|
||||
- Documentation lookup (~:tools lookup~)
|
||||
#+begin_src sh
|
||||
zypper install elixir
|
||||
#+end_src
|
||||
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /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
|
||||
- Phoenix support
|
||||
- ~iex~ integration (~:tools eval~)
|
||||
- Syntax checking (~:checkers syntax~, using [[https://github.com/aaronjensen/flycheck-credo][flycheck-credo]]~)
|
||||
* Appendix
|
||||
** Commands
|
||||
*** exunit-mode
|
||||
The exunit-mode prefix is =SPC m t=. Here is some examples:
|
||||
| | | |
|
||||
| command | key / ex command | description |
|
||||
|------------------------------------------+------------------+--------------------------------------------------------|
|
||||
| ~exunit-verify-all~ | =SPC m t a= | Runs exunit on all files |
|
||||
| ~exunit-rerun~ | =SPC m t r= | Re-runs last exunit command |
|
||||
| ~exunit-verify~ | =SPC m t v= | Runs exunit on current file |
|
||||
| ~exunit-verify-single~ | =SPC m 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-other-window~ | =SPC m t T= | Switch between implementation and test in other window |
|
||||
- ~iex~ integration ([[doom-module:][:tools eval]])
|
||||
- Syntax checking ([[doom-module:][:checkers syntax]], using [[doom-package:][flycheck-credo]])
|
||||
|
||||
** exunit-mode
|
||||
The exunit-mode prefix is [[kbd:][<localleader> t]]. Here is some examples:
|
||||
| command | key / ex command | description |
|
||||
|--------------------------------------------+-------------------+--------------------------------------------------------|
|
||||
| ~exunit-verify-all~ | [[kbd:][<localleader> t a]] | Runs exunit on all files |
|
||||
| ~exunit-rerun~ | [[kbd:][<localleader> t r]] | Re-runs last exunit command |
|
||||
| ~exunit-verify~ | [[kbd:][<localleader> t v]] | Runs exunit on current file |
|
||||
| ~exunit-verify-single~ | [[kbd:][<localleader> t s]] | Runs exunit for the item on cursor |
|
||||
| ~exunit-toggle-file-and-test~ | [[kbd:][<localleader> t t]] | Switch between implementation and test |
|
||||
| ~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
|
||||
|
|
61
modules/lang/elm/README.org
Normal file
61
modules/lang/elm/README.org
Normal 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
|
|
@ -1,60 +1,74 @@
|
|||
#+TITLE: lang/emacs-lisp
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang emacs-lisp
|
||||
#+subtitle: A parsel-tongue for the oldest serpent
|
||||
#+created: January 16, 2017
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module extends support for Emacs Lisp in Doom Emacs.
|
||||
|
||||
+ Macro expansion
|
||||
+ Go-to-definitions or references functionality
|
||||
- Macro expansion
|
||||
- Go-to-definitions or references functionality
|
||||
- Syntax highlighting for defined and quoted symbols
|
||||
- Replaces the built-in help with the more powerful [[doom-package:][helpful]]
|
||||
- Adds function example uses to documentation
|
||||
|
||||
** Maintainers
|
||||
+ @hlissner (author)
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/jorgenschaefer/emacs-buttercup][buttercup]]
|
||||
+ [[https://github.com/Wilfred/elisp-def][elisp-def]]
|
||||
+ [[https://github.com/xuchunyang/elisp-demos][elisp-demos]]
|
||||
+ [[https://github.com/flycheck/flycheck-cask][flycheck-cask]] (=:checkers syntax=)
|
||||
+ [[https://github.com/Fanael/highlight-quoted][highlight-quoted]]
|
||||
+ [[https://github.com/joddie/macrostep][macrostep]]
|
||||
+ [[https://github.com/tonini/overseer.el][overseer]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Packages
|
||||
- [[doom-package:][buttercup]]
|
||||
- [[doom-package:][elisp-def]]
|
||||
- [[doom-package:][elisp-demos]]
|
||||
- [[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
|
||||
+ 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~.
|
||||
+ Eldoc will display the values of variables next to its documentation.
|
||||
+ ~elisp-demos~ was modified to display API demos for Doom's standard library
|
||||
- Eldoc will display the values of variables next to its documentation.
|
||||
- ~elisp-demos~ was modified to display API demos for Doom's standard library
|
||||
(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!~)
|
||||
+ 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.
|
||||
|
||||
* 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
|
||||
about it.
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
|
@ -95,7 +95,7 @@ if it's callable, `apropos' otherwise."
|
|||
(with-demoted-errors "%s"
|
||||
(re-search-forward
|
||||
(if (caddr module)
|
||||
"\\* Module Flags$"
|
||||
"\\* Module flags$"
|
||||
"\\* Description$"))
|
||||
(when (caddr module)
|
||||
(re-search-forward (format "=\\%s=" (caddr module))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#+TITLE: API Demos
|
||||
#+PROPERTY: header-args:emacs-lisp :results verbatim
|
||||
#+title: API Demos
|
||||
#+property: header-args:elisp :results pp
|
||||
|
||||
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
|
||||
|
|
|
@ -1,39 +1,61 @@
|
|||
#+TITLE: lang/erlang
|
||||
#+DATE: January 14, 2020
|
||||
#+SINCE: {replace with next tagged release version}
|
||||
#+STARTUP: inlineimages nofold
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
|
||||
* Description
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang erlang
|
||||
#+subtitle: an elegant language for a more civilized age
|
||||
#+created: April 07, 2018
|
||||
#+since: 21.12.0 (#497)
|
||||
|
||||
* Description :unfold:
|
||||
This module provides support [[https://www.erlang.org/][Erlang programming language]]. Support for the
|
||||
[[https://github.com/erlang/sourcer][sourcer]] language server is optional.
|
||||
|
||||
Includes:
|
||||
- Code completion ([[doom-module:][+lsp]], [[doom-module:][:completion company]], & [[doom-module:][:completion ivy]])
|
||||
- Syntax checking ([[doom-module:][:checkers syntax]])
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ ~+lsp~ Enable LSP Support. Requires [[https://github.com/erlang/sourcer][sourcer]].
|
||||
** Module flags
|
||||
- +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
|
||||
+ Erlang Mode (bundled with Erlang installations)
|
||||
+ [[https://github.com/joedevivo/flycheck-rebar3][flycheck-rebar3]]
|
||||
+ [[https://github.com/s-kostyaev/ivy-erlang-complete][ivy-erlang-complete]]
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Prerequisites
|
||||
You should have Erlang installed. Check your distribution's package manager or a
|
||||
version management tool such as [[https://github.com/kerl/kerl][kerl]].
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/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
|
||||
- Code completion (~+lsp~, ~:completion company~, and ~:completion ivy~)
|
||||
- Syntax checking (~:checkers syntax~)
|
||||
This module requires Erlang be installed (which includes ~erlang-mode~). Check
|
||||
your distribution's package manager or a version management tool such as [[https://github.com/kerl/kerl][kerl]].
|
||||
|
||||
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
|
||||
|
|
|
@ -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,
|
||||
SAS, Julia and Stata.
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#prequisites][Prequisites]]
|
||||
- [[#appendix][Appendix]]
|
||||
- [[#keybindings][Keybindings]]
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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:
|
||||
|
||||
+ [[https://github.com/jimhester/lintr][lintr]]: Enables R linting.
|
||||
+ [[https://github.com/REditorSupport/languageserver][languageserver]]: Enables LSP support in an R buffer (with =+lsp= flag).
|
||||
|
||||
* Appendix
|
||||
** Keybindings
|
||||
*** :map ess-doc-map
|
||||
- [[https://github.com/jimhester/lintr][lintr]]: for R linting.
|
||||
- [[https://github.com/REditorSupport/languageserver][languageserver]]: for LSP support in an R buffer (with [[doom-module:][+lsp]] flag).
|
||||
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
** :map ess-doc-map
|
||||
| key | command |
|
||||
|-----+----------------------------|
|
||||
| "h" | ess-display-help-on-object |
|
||||
| "p" | ess-R-dv-pprint |
|
||||
| "t" | ess-R-dv-ctable |
|
||||
*** :map ess-mode-map
|
||||
|
||||
** :map ess-mode-map
|
||||
| key | command |
|
||||
|--------------+-----------------------|
|
||||
| "<s-return>" | ess-eval-line |
|
||||
| "<up>" | comint-next-input |
|
||||
| "<down>" | comint-previous-input |
|
||||
**** :localleader
|
||||
|
||||
** :localleader
|
||||
| state | key | command |
|
||||
|-------+-------------+---------------------------------------------------|
|
||||
| :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 | "cp" | ess-noweb-previous-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
|
||||
|
|
|
@ -1,43 +1,58 @@
|
|||
#+TITLE: lang/factor
|
||||
#+DATE: December 3, 2019
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang factor
|
||||
#+subtitle: ...
|
||||
#+created: December 03, 2019
|
||||
#+since: 21.12.0 (#2129)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
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
|
||||
+ Like code completion, syntax checking or available snippets
|
||||
+ Include links to packages & external things where possible
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
{A list of linked plugins}
|
||||
** Packages
|
||||
/This module doesn't install any packages./
|
||||
|
||||
** Hacks
|
||||
{A list of internal modifications to included packages}
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Prerequisites
|
||||
You must install [[https://github.com/factor/factor][factor]] to use the advanced functionality of 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://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
|
||||
=fuel-factor-root-dir=. Here's an example of how to set it:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
~fuel-factor-root-dir~. E.g.
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(setq fuel-factor-root-dir "/Applications/factor")
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,46 +1,70 @@
|
|||
#+TITLE: lang/faust
|
||||
#+DATE: July 23, 2019
|
||||
#+SINCE: v2.1.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang faust
|
||||
#+subtitle: DSP, but you can keep your soul
|
||||
#+created: October 14, 2019
|
||||
#+since: 21.12.0 (#1898)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#features][Features]]
|
||||
* Description :unfold:
|
||||
Add support to [[https://faust.grame.fr/][Faust language]] inside emacs.
|
||||
|
||||
* Description
|
||||
Add support to Faust language inside emacs.
|
||||
- Faust code syntax highlighting and indentation
|
||||
- Project-based (inter-linked Faust files)
|
||||
- Build/compile with output window
|
||||
- Graphic diagrams generation and visualization in the (default) browser
|
||||
- Browse generated C++ code inside Emacs
|
||||
- Inter-linked files/buffers :
|
||||
- From "component" to Faust file
|
||||
- From "include" to Faust library file
|
||||
- From error to file:line number
|
||||
- From function name to online documentation
|
||||
- Fully configurable (build type/target/architecture/toolkit, keyboard
|
||||
shortcuts, etc.)
|
||||
- Automatic keyword completion (if Auto-Complete is installed)
|
||||
- Automatic objets (functions, operators, etc.) template insertion with default
|
||||
sensible values (if [[doom-module:][:editor snippets]] is enabled)
|
||||
- Modeline indicator of the state of the code
|
||||
|
||||
+ Faust code syntax hightlighting and indentation
|
||||
+ Project-based (inter-linked Faust files)
|
||||
+ 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
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://bitbucket.org/yphil/faustine][faustine]]
|
||||
** Packages
|
||||
- [[doom-package:][faustine]]
|
||||
|
||||
* Features
|
||||
Keybindings
|
||||
** Hacks
|
||||
- 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 |
|
||||
|-------------------+----------------------|
|
||||
| ~<localleader> b~ | ~build~ |
|
||||
| ~<localleader> c~ | ~syntax check~ |
|
||||
| ~<localleader> d~ | ~diagram~ |
|
||||
| ~<localleader> h~ | ~online dock~ |
|
||||
| ~<localleader> RET~ | ~mdoc~ |
|
||||
| ~<localleader> o~ | ~toggle output buffer~ |
|
||||
| ~<localleader> s~ | ~source code~ |
|
||||
| ~<localleader> r~ | ~run~ |
|
||||
| ~<localleader> S-b~ | ~build all~ |
|
||||
| ~<localleader> S-d~ | ~diagram all~ |
|
||||
| [[kbd:][<localleader> b]] | build |
|
||||
| [[kbd:][<localleader> c]] | syntax check |
|
||||
| [[kbd:][<localleader> d]] | diagram |
|
||||
| [[kbd:][<localleader> h]] | online dock |
|
||||
| [[kbd:][<localleader> RET]] | mdoc |
|
||||
| [[kbd:][<localleader> o]] | toggle output buffer |
|
||||
| [[kbd:][<localleader> s]] | source code |
|
||||
| [[kbd:][<localleader> r]] | run |
|
||||
| [[kbd:][<localleader> S-b]] | build 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
|
||||
|
|
|
@ -1,58 +1,71 @@
|
|||
#+TITLE: lang/fsharp
|
||||
#+DATE: May 22, 2019
|
||||
#+SINCE: {replace with next tagged release version}
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang fsharp
|
||||
#+subtitle: ML stands for Microsoft's Language
|
||||
#+created: May 23, 2019
|
||||
#+since: 21.12.0 (#1327)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module adds [[https://fsharp.org/][F#]] support to Doom Emacs.
|
||||
|
||||
* Description
|
||||
# A summary of what this module does.
|
||||
*Includes:*
|
||||
- Code completion
|
||||
- eldoc support
|
||||
- Syntax checking
|
||||
|
||||
# + 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
|
||||
This module adds [[https://fsharp.org/][F#]] support.
|
||||
+ Code completion
|
||||
+ eldoc support
|
||||
+ Syntax checking
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
Enable LSP support for ~fsharp-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(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
|
||||
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
|
||||
To get code completion/syntax checking when not using lsp, you will need to install [[https://www.mono-project.com/][mono]].
|
||||
*** 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
|
||||
#+BEGIN_SRC sh
|
||||
sudo pacman -S mono
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
pacman -S mono
|
||||
#+end_src
|
||||
|
||||
** LSP
|
||||
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
|
||||
How to configure this module, including common problems and how to address them.
|
||||
* 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
|
||||
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
|
||||
|
|
|
@ -1,56 +1,74 @@
|
|||
#+TITLE: lang/fstar
|
||||
#+DATE: February 2, 2020
|
||||
#+SINCE: 2.0.10
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang fstar
|
||||
#+subtitle: (Dependent) types and (monadic) effects and Z3
|
||||
#+created: February 02, 2020
|
||||
#+since: 21.12.0 (#2473)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module adds [[https://fstar-lang.org/][F*]] support, powered by [[https://github.com/FStarLang/fstar-mode.el][fstar-mode.el]].
|
||||
|
||||
+ Syntax highlighting
|
||||
+ Interactively process F* files one definition at a time
|
||||
+ Query the running F* process to look up definitions, documentation, and
|
||||
- Syntax highlighting
|
||||
- Interactively process F* files one definition at a time
|
||||
- Query the running F* process to look up definitions, documentation, and
|
||||
theorems
|
||||
|
||||
** Maintainers
|
||||
+ [[https://github.com/tchajed][@tchajed]] (Author)
|
||||
- [[doom-user:][@tchajed]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/FStarLang/fstar-mode.el][fstar-mode]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Prerequisites
|
||||
** F*
|
||||
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]].
|
||||
*** macOS
|
||||
#+BEGIN_SRC sh
|
||||
** Packages
|
||||
- [[doom-package:][fstar-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://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
|
||||
#+END_SRC
|
||||
*** Arch Linux
|
||||
Install ~fstar~ from the AUR:
|
||||
#+BEGIN_SRC sh
|
||||
#+end_src
|
||||
|
||||
** Arch Linux
|
||||
~fstar~ is available in the AUR:
|
||||
#+begin_src sh
|
||||
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
|
||||
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.
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
- 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
|
||||
|
|
|
@ -1,55 +1,79 @@
|
|||
#+TITLE: lang/gdscript
|
||||
#+DATE: May 27, 2020
|
||||
#+SINCE: v2.0.9
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang gdscript
|
||||
#+subtitle: the language you waited for
|
||||
#+created: June 01, 2020
|
||||
#+since: 21.12.0 (#3239)
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#appendix][Appendix]]
|
||||
- [[#commands][Commands]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
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]].
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables LSP support for gdscript-mode. This requires the =:tools lsp=
|
||||
module to be enabled and you need to open your project in Godot ~3.2.1~ or
|
||||
above to run the language server.
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
This module provides no plugins.
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
Enable LSP support for ~gdscript-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(Godot ~3.2.1~ or newer).
|
||||
|
||||
* Prerequisites
|
||||
To format your GDScript code, you need to install [[https://github.com/Scony/godot-gdscript-toolkit/][gdtoolkit]]:
|
||||
** Packages
|
||||
- [[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
|
||||
pip install gdtoolkit
|
||||
|
||||
# On MacOS and Linux
|
||||
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
|
||||
you have the ~lsp~ module installed, you should be able to use the language
|
||||
server.
|
||||
you have [[doom-module:][+lsp]] and [[doom-module:][:tools lsp]] enabled, and Godot 3.2.1+ installed, it should work
|
||||
out of the box.
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
|
|
|
@ -1,81 +1,76 @@
|
|||
#+TITLE: lang/go
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang go
|
||||
#+subtitle: The hipster dialect
|
||||
#+created: June 15, 2015
|
||||
#+since: 0.7
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#go][Go]]
|
||||
- [[#dependencies][Dependencies]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module adds [[https://golang.org][Go]] support, with optional (but recommended) LSP support via
|
||||
[[https://github.com/golang/tools/blob/master/gopls/README.md][gopls]].
|
||||
|
||||
+ Code completion (~gocode~)
|
||||
+ Documentation lookup (~godoc~)
|
||||
+ Eldoc support (~go-eldoc~)
|
||||
+ REPL (~gore~)
|
||||
+ Syntax-checking (~flycheck~)
|
||||
+ Auto-formatting on save (~gofmt~) (requires =:editor (format +onsave)=)
|
||||
+ Code navigation & refactoring (~go-guru~)
|
||||
+ [[../../editor/file-templates/templates/go-mode][File templates]]
|
||||
+ [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]]
|
||||
+ Generate testing code (~go-gen-test~)
|
||||
+ Code checking (~flycheck-golangci-lint~)
|
||||
- Code completion (~gocode~)
|
||||
- Documentation lookup (~godoc~)
|
||||
- Eldoc support (~go-eldoc~)
|
||||
- REPL (~gore~)
|
||||
- Syntax-checking (~flycheck~)
|
||||
- Auto-formatting on save (~gofmt~) (requires [[doom-module:][:editor format +onsave]])
|
||||
- Code navigation & refactoring (~go-guru~)
|
||||
- [[../../editor/file-templates/templates/go-mode][File templates]]
|
||||
- [[https://github.com/hlissner/doom-snippets/tree/master/go-mode][Snippets]]
|
||||
- Generate testing code (~go-gen-test~)
|
||||
- Code checking (~flycheck-golangci-lint~)
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables integration for the gopls LSP server. It is highly recommended
|
||||
you use this, as the non-LSP experience is deprecated (and poor).
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/dominikh/go-mode.el][go-mode]]
|
||||
+ [[https://github.com/syohex/emacs-go-eldoc][go-eldoc]]
|
||||
+ [[https://github.com/dominikh/go-mode.el][go-guru]]
|
||||
+ [[https://github.com/manute/gorepl-mode][gorepl-mode]]
|
||||
+ [[https://github.com/brantou/emacs-go-tag][go-tag]]
|
||||
+ [[https://github.com/mdempsky/gocode][company-go]]* =DEPRECATED=
|
||||
+ [[https://github.com/s-kostyaev/go-gen-test][go-gen-test]]
|
||||
+ [[https://github.com/weijiangan/flycheck-golangci-lint][flycheck-golangci-lint]] (if =:checkers syntax= is enabled)
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
Enable LSP support for ~go-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(supports gopls). Highly recommended, as the non-LSP experience is deprecated
|
||||
(and poor).
|
||||
- +tree-sitter ::
|
||||
Leverages tree-sitter for better syntax highlighting and structural text
|
||||
editing. Requires [[doom-module:][:tools tree-sitter]].
|
||||
|
||||
** 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
|
||||
To get started with Go, you need the ~go~ tool:
|
||||
|
||||
*** MacOS
|
||||
#+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
|
||||
- macOS: ~$ brew install go~
|
||||
- Arch Linux: ~$ pacman -S go~
|
||||
- openSUSE: ~$ zypper install go~
|
||||
|
||||
** 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)
|
||||
+ ~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
|
||||
#+begin_src sh
|
||||
export GOPATH=~/work/go
|
||||
|
||||
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 github.com/cweill/gotests/gotests@latest
|
||||
go install github.com/fatih/gomodifytags@latest
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
+ ~golangci-lint~ (optional: for flycheck to integrate golangci-lint results)
|
||||
it is recommended to *not* use ~go get~ to install this one, check the
|
||||
- ~golangci-lint~ (optional: for flycheck to integrate golangci-lint results) it
|
||||
is recommended to *not* use ~$ go get~ to install this one, check the
|
||||
[[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
|
||||
#+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
|
||||
|
|
|
@ -1,43 +1,42 @@
|
|||
#+TITLE: lang/haskell
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v0.7
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang haskell
|
||||
#+subtitle: A language that's lazier than I am
|
||||
#+created: March 29, 2016
|
||||
#+since: 0.9
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
|
||||
* Description
|
||||
Adds Haskell support to Doom Emacs.
|
||||
* Description :unfold:
|
||||
This module adds Haskell support to Doom Emacs.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable LSP support with for [[https://github.com/haskell/haskell-language-server][haskell-language-server]] (requires the =:tools lsp= module).
|
||||
** Module flags
|
||||
- +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
|
||||
+ [[https://github.com/haskell/haskell-mode][haskell-mode]]
|
||||
+ [[https://github.com/emacs-lsp/lsp-haskell][lsp-haskell]] (=+lsp=, =:tools lsp=)
|
||||
** Packages
|
||||
- [[doom-package:][haskell-mode]]
|
||||
- [[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
|
||||
for basic functionality:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
#+begin_src sh
|
||||
ghcup install ghc
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
but =+lsp= users should also install the language server:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
#+begin_src sh
|
||||
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
|
||||
=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]],
|
||||
which can be installed through system package manager, cabal, or stack.
|
||||
|
||||
* Features
|
||||
This module intergrates the haskell packages into Doom by providing things such
|
||||
as repl support, project root recognition, etc. It also provide the following
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /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:
|
||||
|
||||
| Keybinding | Description |
|
||||
|-------------------+-----------------------------------------------|
|
||||
| =<localleader> b= | Build the current cabal project |
|
||||
| =<localleader> c= | Visit the =.cabal= file of the current buffer |
|
||||
| =<localleader> h= | Toggle visibility of the form at point |
|
||||
| =<localleader> H= | hides all top level functions |
|
||||
| Keybinding | Description |
|
||||
|-----------------+-----------------------------------------------|
|
||||
| [[kbd:][<localleader> b]] | Build the current cabal project |
|
||||
| [[kbd:][<localleader> c]] | Visit the =.cabal= file of the current buffer |
|
||||
| [[kbd:][<localleader> h]] | Toggle visibility of the form at point |
|
||||
| [[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
|
||||
=lsp-haskell-formatting-provider= to it.
|
||||
|
||||
Make sure to configure the lsp to use your perfered formatter, e.g.:
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
;; ~/.doom.d/config.el
|
||||
(after!
|
||||
(after! lsp-haskell
|
||||
(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
|
||||
|
|
50
modules/lang/hy/README.org
Normal file
50
modules/lang/hy/README.org
Normal 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
|
|
@ -1,30 +1,55 @@
|
|||
#+TITLE: lang/idris
|
||||
#+DATE: October 6, 2020
|
||||
#+SINCE: v2.0.9
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang idris
|
||||
#+subtitle: A language you can depend on
|
||||
#+created: August 21, 2018
|
||||
#+since: 21.12.0 (#822)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
* Description :unfold:
|
||||
This module adds rudimentary [[https://www.idris-lang.org/][Idris]] support to Doom Emacs.
|
||||
|
||||
* Description
|
||||
This module adds rudimentary Idris support.
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** Plugins
|
||||
# A list of linked plugins
|
||||
+ [[https://github.com/idris-hackers/idris-mode/][idris-mode]]
|
||||
** Packages
|
||||
- [[doom-package:][idris-mode]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Features
|
||||
In addition to =idris-mode= goodness, adds frequently used functions under the localleader key.
|
||||
** 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
|
||||
🔨 /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
|
||||
|
|
|
@ -1,148 +1,171 @@
|
|||
#+TITLE: lang/java
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang java
|
||||
#+subtitle: The poster child for carpal tunnel syndrome
|
||||
#+created: January 16, 2017
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#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 :unfold:
|
||||
This module adds [[https://www.java.com][Java]] support to Doom Emacs, including ~android-mode~ and
|
||||
~groovy-mode~.
|
||||
|
||||
* Description
|
||||
This module adds [[https://www.java.com][java]] support to Doom Emacs, including =android-mode= and
|
||||
=groovy-mode=.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables integration for the eclipse.jdt.ls LSP server.
|
||||
+ =+meghanada= Enables the [[https://github.com/mopemope/meghanada-emacs/tree/master][meghanada-mode]]
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
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
|
||||
together. At the time of writing the =+meghanada= is already configured whereas
|
||||
=+lsp= needs to manual configuring.
|
||||
** Packages
|
||||
- [[doom-package:][android-mode]]
|
||||
- [[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
|
||||
provides =dap-mode= which contains the Java test runner.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Prerequisites
|
||||
This module requires the Java SDK.
|
||||
** 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.oracle.com/java/technologies/downloads/][Java SDK]]
|
||||
- The LSP test runner requires [[doom-module:][:tools debugger +lsp]] (requires [[doom-package:][dap-mode]])
|
||||
|
||||
** OpenJDK 11
|
||||
*** Ubuntu
|
||||
#+BEGIN_SRC sh
|
||||
sudo apt-get install openjdk-11-jdk-headless
|
||||
#+END_SRC
|
||||
#+begin-src sh
|
||||
apt-get install openjdk-11-jdk-headless
|
||||
#+end_src
|
||||
|
||||
*** Fedora
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf install java-11-openjdk
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
dnf install java-11-openjdk
|
||||
#+end_src
|
||||
|
||||
** Oracle JDK 11
|
||||
*** Ubuntu
|
||||
#+BEGIN_SRC sh
|
||||
sudo add-apt-repository ppa:linuxuprising/java
|
||||
sudo apt update
|
||||
sudo apt install oracle-java11-installer
|
||||
sudo apt install oracle-java11-set-default
|
||||
#+END_SRC
|
||||
#+begin_src sh
|
||||
add-apt-repository ppa:linuxuprising/java
|
||||
apt update
|
||||
apt install oracle-java11-installer
|
||||
apt install oracle-java11-set-default
|
||||
#+end_src
|
||||
|
||||
*** 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
|
||||
tar zxvf openjdk-11.0.2_linux-x64_bin.tar.gz
|
||||
sudo mv jdk-11.0.2/ /usr/local/
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Open =/etc/profile.d/jdk11.sh= as root and add
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
Open =/etc/profile.d/jdk11.sh= as root and add:
|
||||
#+begin_src sh
|
||||
export JAVA_HOME=/usr/local/jdk-11.0.2
|
||||
export PATH=$PATH:$JAVA_HOME/bin
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Save the file and source the file
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
Save the file and source it:
|
||||
#+begin_src sh
|
||||
source /etc/profile.d/jdk11.sh
|
||||
java -version
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Multiple Java Versions
|
||||
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.
|
||||
|
||||
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
|
||||
Java version for a particular project, create a =.envrc= pointing to the Java
|
||||
installation in the root of the project:
|
||||
|
||||
#+BEGIN_SRC conf-unix
|
||||
To have a different version of Java per-project, it is recommended you use
|
||||
[[https://github.com/direnv/direnv][direnv]] and [[doom-module:][:tools direnv]]; create a =.envrc= in the root of the project pointing
|
||||
to the Java installation:
|
||||
#+begin_src sh
|
||||
PATH_add ~/.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
|
||||
is enabled, then Doom will automatically source this environment before
|
||||
executing the LSP server.
|
||||
And then run ~$ direnv allow .~ in the project directory. The [[doom-module:][:tools direnv]]
|
||||
module will automatically source this environment before activating LSP servers.
|
||||
|
||||
* Features
|
||||
** =+lsp= features
|
||||
According to [[https://github.com/emacs-lsp/lsp-java]] it adds
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /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]])
|
||||
+ Code completion - using [[https://github.com/tigersoldier/company-lsp][company-lsp]] or builtin complete-at-point
|
||||
+ Javadoc hovers - using [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]]
|
||||
+ Code actions - using [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]]
|
||||
+ Code outline - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Imenu.html][imenu]]
|
||||
+ Code navigation - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html][xref]]
|
||||
+ Code lens (references/implementations) - using builtin [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html][xref]]
|
||||
+ Highlights
|
||||
+ Code formatting
|
||||
+ Maven pom.xml project support
|
||||
+ Limited Gradle support
|
||||
+ Visual debugger - [[https://github.com/yyoncho/dap-mode/][dap-mode]]
|
||||
+ Test runner - [[https://github.com/yyoncho/dap-mode/][dap-mode]]
|
||||
+ Project explorer integration - [[https://github.com/Alexander-Miller/treemacs][treemacs]]
|
||||
+ Integration with [[https://start.spring.io/][Spring Initializr]]
|
||||
** [[doom-module:][+lsp]] features
|
||||
According to [[https://github.com/emacs-lsp/lsp-java]], you get:
|
||||
- As you type reporting of parsing and compilation errors (via [[doom-package:][flycheck]] or
|
||||
[[doom-package:][lsp-ui]])
|
||||
- Code completion ([[doom-package:][company-lsp]] or complete-at-point)
|
||||
- Javadoc hovers ([[doom-package:][lsp-ui]])
|
||||
- Code actions ([[doom-package:][lsp-ui]])
|
||||
- Code outline ([[doom-package:][imenu]])
|
||||
- Code navigation ([[doom-package:][xref]])
|
||||
- Code lens for references/implementations ([[doom-package:][xref]])
|
||||
- Highlights
|
||||
- Code formatting
|
||||
- Maven pom.xml project support
|
||||
- Limited Gradle support
|
||||
- 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
|
||||
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
|
||||
+ [[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 (=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
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
* Configuration
|
||||
** =+lsp=
|
||||
Install the eclipse server by executing =M-x lsp-install-server= and selecting
|
||||
** [[doom-module:][+lsp]]
|
||||
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
|
||||
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
|
||||
install it again. You can do this with =M-x +lsp/uninstall-server= followed by
|
||||
=M-x lsp-install-server=.
|
||||
install it again. You can do this with ~M-x +lsp/uninstall-server~ followed by
|
||||
~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
|
||||
|
|
|
@ -1,146 +1,162 @@
|
|||
#+TITLE: lang/javascript
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang javascript
|
||||
#+subtitle: all(hope(abandon(ye(who(enter(here))))))
|
||||
#+created: January 16, 2017
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module adds [[https://www.javascript.com/][JavaScript]] and [[https://www.typescriptlang.org/][TypeScript]] support to Doom Emacs.
|
||||
|
||||
* Description
|
||||
This module adds JavaScript and TypeScript support.
|
||||
- Code completion ([[doom-package:][tide]])
|
||||
- REPL support ([[doom-package:][nodejs-repl]])
|
||||
- Refactoring commands ([[doom-package:][js2-refactor]])
|
||||
- Syntax checking ([[doom-package:][flycheck]])
|
||||
- Browser code injection with [[doom-package:][skewer-mode]]
|
||||
- Coffeescript & JSX support
|
||||
- Jump-to-definitions and references support ([[doom-package:][xref]])
|
||||
|
||||
+ Code completion (tide)
|
||||
+ REPL support (nodejs-repl)
|
||||
+ Refactoring commands (js2-refactor)
|
||||
+ Syntax checking (flycheck)
|
||||
+ Browser code injection with skewer-mode
|
||||
+ Coffeescript & JSX support
|
||||
+ Jump-to-definitions and references support (xref)
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables LangServer support for this module. You must have =:tools lsp=
|
||||
enabled for this to work, as well as the langserver (e.g.
|
||||
typescript-language-server) installed on your system.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module flags
|
||||
- +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
|
||||
+ [[https://github.com/defunkt/coffee-mode][coffee-mode]]
|
||||
+ [[https://github.com/mooz/js2-mode][js2-mode]]
|
||||
+ [[https://github.com/felipeochoa/rjsx-mode][rjsx-mode]]
|
||||
+ [[https://github.com/emacs-typescript/typescript.el][typescript-mode]]
|
||||
+ [[https://github.com/magnars/js2-refactor.el][js2-refactor]]
|
||||
+ [[https://github.com/mojochao/npm-mode][npm-mode]]
|
||||
+ [[https://github.com/abicky/nodejs-repl.el][nodejs-repl]]
|
||||
+ [[https://github.com/skeeto/skewer-mode][skewer-mode]]
|
||||
+ [[https://github.com/ananthakumaran/tide][tide]]
|
||||
+ [[https://github.com/NicolasPetton/xref-js2][xref-js2]]*
|
||||
- [[doom-package:][js2-refactor]]
|
||||
- [[doom-package:][nodejs-repl]]
|
||||
- [[doom-package:][npm-mode]]
|
||||
- [[doom-package:][rjsx-mode]]
|
||||
- [[doom-package:][skewer-mode]] (DEPRECATED)
|
||||
- [[doom-package:][tide]]
|
||||
- [[doom-package:][typescript-mode]]
|
||||
- [[doom-package:][xref-js2]] if [[doom-module:][:tools lookup]]
|
||||
|
||||
* Prerequisites
|
||||
Many of this modules' plugins require ~node~ and either ~npm~ or ~yarn~
|
||||
installed.
|
||||
** TODO Hacks
|
||||
#+begin_quote
|
||||
🔨 This module's hacks haven't been documented yet. [[doom-contrib-module:][Document them?]]
|
||||
#+end_quote
|
||||
|
||||
** MacOS
|
||||
#+BEGIN_SRC sh :tangle (if (doom-system-os 'macos) "yes")
|
||||
brew install node
|
||||
#+END_SRC
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
** Arch Linux
|
||||
#+BEGIN_SRC sh :dir /sudo:: :tangle (if (doom-system-os 'arch) "yes")
|
||||
sudo pacman --needed --noconfirm -S nodejs npm
|
||||
#+END_SRC
|
||||
* Installation
|
||||
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||
|
||||
** openSUSE
|
||||
#+BEGIN_SRC sh :dir /sudo::
|
||||
sudo zypper install nodejs npm
|
||||
#+END_SRC
|
||||
This module requires [[https://nodejs.org/en/][NodeJS]] and one of [[https://www.npmjs.com/][NPM]] or [[https://yarnpkg.com/][Yarn]] in your =$PATH=.
|
||||
|
||||
* Troubleshooting
|
||||
** ~tide-sort-completions-by-kind~ isn't respected
|
||||
The =:completion company= module uses =company-prescient= to sort completion by
|
||||
[[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~).
|
||||
- MacOS: ~$ brew install node~
|
||||
- Arch Linux: ~$ pacman --needed --noconfirm -S nodejs npm~
|
||||
- openSUSE: ~$ zypper install nodejs npm~
|
||||
|
||||
* 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
|
||||
*** JS2-mode
|
||||
*** rjsx-mode
|
||||
| command | key / ex command | description |
|
||||
|----------------------------------+------------------+------------------------------------------------------------|
|
||||
| ~+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/open-repl~ | ~:repl~ | Open the NodeJS REPL (or send the current selection to it) |
|
||||
| ~+javascript/skewer-this-buffer~ | [[kbd:][<localleader> S]] | Attaches a browser to the current buffer |
|
||||
|
||||
*** Tide
|
||||
| command | key / ex command | description |
|
||||
|-------------------------+------------------+------------------------|
|
||||
| ~tide-restart-server~ | =SPC m R= | Restart tide server |
|
||||
| ~tide-reformat~ | =SPC m f= | Reformat region |
|
||||
| ~tide-rename-symbol~ | =SPC m r r s= | Rename symbol at point |
|
||||
| ~tide-organize-imports~ | =SPC m r o i= | Organize imports |
|
||||
| command | key / ex command | description |
|
||||
|-------------------------+---------------------+------------------------|
|
||||
| ~tide-restart-server~ | [[kbd:][<localleader> R]] | Restart tide server |
|
||||
| ~tide-reformat~ | [[kbd:][<localleader> f]] | Reformat region |
|
||||
| ~tide-rename-symbol~ | [[kbd:][<localleader> r r s]] | Rename symbol at point |
|
||||
| ~tide-organize-imports~ | [[kbd:][<localleader> r o i]] | Organize imports |
|
||||
|
||||
*** Refactoring (js2-refactor-mode)
|
||||
| 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-contract-node-at-point~ | =SPC m 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-method~ | =SPC m 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-arrow-function-and-expression~ | =SPC m 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-introduce-parameter~ | =SPC m 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-wrap-buffer-in-iife~ | =SPC m 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-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-extract-var~ | =SPC m 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-const~ | =SPC m 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-rename-var~ | =SPC m 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-arguments-to-object~ | =SPC m 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-split-var-declaration~ | =SPC m 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-string-to-template~ | =SPC m 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-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-debug-this~ | =SPC m 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-barf~ | =SPC m 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. |
|
||||
| command | key / ex command | description |
|
||||
|---------------------------------------------------+---------------------+--------------------------------------------------------------------------------------------------------------------|
|
||||
| ~js2r-expand-node-at-point~ | [[kbd:][<localleader> r e e]] | Expand 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~ | [[kbd:][<localleader> r e f]] | Extracts the marked expressions out into a new named function. |
|
||||
| ~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~ | [[kbd:][<localleader> r t f]] | Toggle between function name() {} and var name = function (); |
|
||||
| ~js2r-toggle-arrow-function-and-expression~ | [[kbd:][<localleader> r t a]] | Toggle between function expression to arrow function. |
|
||||
| ~js2r-toggle-function-async~ | [[kbd:][<localleader> r t s]] | Toggle between an async and a regular function. |
|
||||
| ~js2r-introduce-parameter~ | [[kbd:][<localleader> r i p]] | Changes the marked expression to a parameter 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~ | [[kbd:][<localleader> r w i]] | Wraps the entire buffer in an 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~ | [[kbd:][<localleader> r a g]] | Creates a /*global */ annotation if it is missing, and adds the var at point to it. |
|
||||
| ~js2r-extract-var~ | [[kbd:][<localleader> r e v]] | Takes a marked expression and replaces it with a var. |
|
||||
| ~js2r-extract-let~ | [[kbd:][<localleader> r e l]] | Similar to extract-var but uses a let-statement. |
|
||||
| ~js2r-extract-const~ | [[kbd:][<localleader> r e c]] | Similar to extract-var but uses a const-statement. |
|
||||
| ~js2r-inline-var~ | [[kbd:][<localleader> r i v]] | Replaces all instances of a variable with its initial value. |
|
||||
| ~js2r-rename-var~ | [[kbd:][<localleader> r r v]] | Renames the variable on point and all occurrences in its lexical scope. |
|
||||
| ~js2r-var-to-this~ | [[kbd:][<localleader> r v t]] | Changes local var a to be this.a instead. |
|
||||
| ~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~ | [[kbd:][<localleader> r 3 i]] | Converts ternary operator to if-statement. |
|
||||
| ~js2r-split-var-declaration~ | [[kbd:][<localleader> r s v]] | Splits a var with multiple vars declared, into several var statements. |
|
||||
| ~js2r-split-string~ | [[kbd:][<localleader> r s s]] | Splits a string. |
|
||||
| ~js2r-string-to-template~ | [[kbd:][<localleader> r s t]] | Converts a string into a template string. |
|
||||
| ~js2r-unwrap~ | [[kbd:][<localleader> r u w]] | Replaces the parent statement with the selected region. |
|
||||
| ~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~ | [[kbd:][<localleader> r d t]] | Adds a debug() statement for what is at point (or region). |
|
||||
| ~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~ | [[kbd:][<localleader> r b a]] | Moves the last child out of current function, if-statement, for-loop or while-loop. |
|
||||
| ~js2r-kill~ | [[kbd:][<localleader> r k]] | Kills to the end of the line, but does not cross semantic boundaries. |
|
||||
|
||||
*** skewer-mode
|
||||
**** general
|
||||
| command | key / ex command | description |
|
||||
|-------------------------------+------------------+---------------------------------------|
|
||||
| ~skewer-eval-last-expression~ | =SPC m s E= | Evaluate last expression |
|
||||
| ~skewer-eval-defun~ | =SPC m s e= | Evaluate function definition at point |
|
||||
| ~skewer-load-buffer~ | =SPC m s f= | Load buffer into REPL |
|
||||
| command | key / ex command | description |
|
||||
|-------------------------------+-------------------+---------------------------------------|
|
||||
| ~skewer-eval-last-expression~ | [[kbd:][<localleader> s E]] | Evaluate last expression |
|
||||
| ~skewer-eval-defun~ | [[kbd:][<localleader> s e]] | Evaluate function definition at point |
|
||||
| ~skewer-load-buffer~ | [[kbd:][<localleader> s f]] | Load buffer into REPL |
|
||||
|
||||
**** css
|
||||
| command | key / ex command | description |
|
||||
|---------------------------------------+------------------+-------------------------------|
|
||||
| ~skewer-css-eval-current-declaration~ | =SPC m s e= | Evaluate declaration at point |
|
||||
| ~skewer-css-eval-current-rule~ | =SPC m s r= | Evaluate rule at point |
|
||||
| ~skewer-css-eval-buffer~ | =SPC m s b= | Evaluate buffer |
|
||||
| ~skewer-css-clear-all~ | =SPC m s c= | Clear all rules |
|
||||
| command | key / ex command | description |
|
||||
|---------------------------------------+-------------------+-------------------------------|
|
||||
| ~skewer-css-eval-current-declaration~ | [[kbd:][<localleader> s e]] | Evaluate declaration at point |
|
||||
| ~skewer-css-eval-current-rule~ | [[kbd:][<localleader> s r]] | Evaluate rule at point |
|
||||
| ~skewer-css-eval-buffer~ | [[kbd:][<localleader> s b]] | Evaluate buffer |
|
||||
| ~skewer-css-clear-all~ | [[kbd:][<localleader> s c]] | Clear all rules |
|
||||
|
||||
**** html
|
||||
| command | key / ex command | description |
|
||||
|------------------------+------------------+-----------------------|
|
||||
| ~skewer-html-eval-tag~ | =SPC m s e= | Evaluate tag at point |
|
||||
| command | key / ex command | description |
|
||||
|------------------------+-------------------+-----------------------|
|
||||
| ~skewer-html-eval-tag~ | [[kbd:][<localleader> s e]] | Evaluate tag at point |
|
||||
|
||||
*** npm-mode
|
||||
| command | key / ex command | description |
|
||||
|---------------------------------+------------------+------------------------------------------------------------------|
|
||||
| ~npm-mode-npm-init~ | =SPC m n n= | Initialize npm project |
|
||||
| ~npm-mode-npm-install~ | =SPC m 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-dev~ | =SPC m 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-list~ | =SPC m n l= | List npm packages |
|
||||
| ~npm-mode-npm-run~ | =SPC m n r= | Run npm task |
|
||||
| ~npm-mode-visit-project-file~ | =SPC m n v= | Find file in npm project |
|
||||
| command | key / ex command | description |
|
||||
|---------------------------------+-------------------+------------------------------------------------------------------|
|
||||
| ~npm-mode-npm-init~ | [[kbd:][<localleader> n n]] | Initialize npm project |
|
||||
| ~npm-mode-npm-install~ | [[kbd:][<localleader> n i]] | Install npm package |
|
||||
| ~npm-mode-npm-install-save~ | [[kbd:][<localleader> n s]] | Install npm package and save to package.json |
|
||||
| ~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~ | [[kbd:][<localleader> n u]] | Uninstall npm package |
|
||||
| ~npm-mode-npm-list~ | [[kbd:][<localleader> n l]] | List npm packages |
|
||||
| ~npm-mode-npm-run~ | [[kbd:][<localleader> n r]] | Run npm task |
|
||||
| ~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
|
||||
|
|
|
@ -1,40 +1,57 @@
|
|||
#+TITLE: lang/json
|
||||
#+DATE: April 23, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang json
|
||||
#+subtitle: At least it ain't XML
|
||||
#+created: April 23, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
This module provides JSON support.
|
||||
* Description :unfold:
|
||||
This module adds [[https://www.json.org/json-en.html][JSON]] support to Doom Emacs.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable integration with LSP servers, if one is available. Requires the
|
||||
=:tools lsp= module to be enabled.
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
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
|
||||
+ [[https://github.com/joshwnj/json-mode][json-mode]]
|
||||
+ [[https://github.com/Sterlingg/json-snatcher][json-snatcher]]
|
||||
** Packages
|
||||
- [[doom-package:][counsel-jq]] if [[doom-module:][:completion ivy]]
|
||||
- [[doom-package:][json-mode]]
|
||||
- [[doom-package:][json-snatcher]]
|
||||
|
||||
* Prerequisites
|
||||
This module has no prerequisites.
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
** 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
|
||||
# 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
|
||||
# Common issues and their solution, or places to look for help.
|
||||
* 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
|
||||
|
|
|
@ -1,109 +1,131 @@
|
|||
#+TITLE: lang/julia
|
||||
#+DATE: April 8, 2020
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang julia
|
||||
#+subtitle: A better, faster MATLAB
|
||||
#+created: April 08, 2020
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module adds support for [[https://julialang.org/][the Julia language]] to Doom Emacs.
|
||||
|
||||
+ Syntax highlighting and latex symbols from ~julia-mode~
|
||||
+ REPL integration from ~julia-repl~
|
||||
+ Code completion and syntax checking, requires ~:tools lsp~ and ~+lsp~
|
||||
- Syntax highlighting and latex symbols from [[doom-package:][julia-mode]]
|
||||
- REPL integration from [[doom-package:][julia-repl]]
|
||||
- Code completion and syntax checking, requires [[doom-module:][:tools lsp]] and [[doom-module:][+lsp]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable LSP server support.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/JuliaEditorSupport/julia-emacs/][julia-mode]]
|
||||
+ [[https://github.com/tpapp/julia-repl][julia-repl]]
|
||||
+ =+lsp= and =:tools lsp=
|
||||
+ [[https://github.com/non-jedi/lsp-julia][lsp-julia]]
|
||||
+ [[https://github.com/emacs-lsp/lsp-mode][lsp]]
|
||||
+ =+lsp= and =:tools lsp +eglot=
|
||||
+ [[https://github.com/non-jedi/eglot-jl][eglot-jl]]
|
||||
+ [[https://github.com/joaotavora/eglot][eglot]]
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
Enable LSP support for ~julia-mode~. Requires [[doom-module:][:tools lsp]] and a langserver
|
||||
(supports LanguageServer.jl).
|
||||
- +tree-sitter ::
|
||||
Leverages tree-sitter for better syntax highlighting and structural text
|
||||
editing. Requires [[doom-module:][:tools tree-sitter]].
|
||||
|
||||
* Prerequisites
|
||||
This module requires =julia= and an language server if =+lsp= is enabled.
|
||||
** Packages
|
||||
- [[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
|
||||
~+lsp~ requires ~LanguageServer.jl~ and ~SymbolServer.jl~. The =lsp-julia= and
|
||||
=eglot-jl= packages both come bundled with their own versions of these servers,
|
||||
[[doom-module:][+lsp]] requires ~LanguageServer.jl~ and ~SymbolServer.jl~. The [[doom-package:][lsp-julia]] and
|
||||
[[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
|
||||
necessary.
|
||||
|
||||
However, to use your own installation you will need to install then configure
|
||||
them. To install them, execute these commands in a Julia REPL:
|
||||
|
||||
#+BEGIN_SRC julia
|
||||
#+begin_src julia
|
||||
using Pkg
|
||||
Pkg.add("LanguageServer")
|
||||
Pkg.add("SymbolServer")
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Then configure =lsp-julia= or =eglot-jl= depending on whether you have enabled
|
||||
=:tools lsp= or =:tools (lsp +eglot)=, respectively:
|
||||
Then configure [[doom-package:][lsp-julia]] or [[doom-package:][eglot-jl]] depending on whether you have enabled
|
||||
[[doom-module:][:tools lsp]] or [[doom-module:][:tools lsp +eglot]], respectively:
|
||||
|
||||
*** ~lsp-julia~
|
||||
To instruct =lsp-julia= not to use the built-in package:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
;; ~/.doom.d/config.el
|
||||
*** =lsp-julia=
|
||||
To instruct [[doom-package:][lsp-julia]] not to use the built-in package:
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(setq lsp-julia-package-dir nil)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
To find your installation of ~LanguageServer.jl~, ~eglot-jl~ needs to know the
|
||||
environment in which it is installed. This is set to v1.0 by default as it is
|
||||
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.6 by default as it is
|
||||
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
|
||||
(setq lsp-julia-default-environment "~/.julia/environments/v1.0")
|
||||
#+END_SRC
|
||||
|
||||
*** ~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
|
||||
*** =eglot-jl=
|
||||
To find your installation of ~LanguageServer.jl~, [[doom-package:][eglot-jl]] must know the
|
||||
environment in which it is installed. This is set to v1.6 by default as it is
|
||||
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
|
||||
;; ~/.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
|
||||
But to let [[doom-package:][eglot-jl]] use the environment bundled with it, set it to
|
||||
~eglot-jl-base~ instead:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
;; ~/.doom.d/config.el
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(after! eglot-jl
|
||||
(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
|
||||
~+lsp~ adds code completion, syntax checking, formatting and other ~lsp-mode~ or
|
||||
~eglot~ features. It requires ~LanguageServer.jl~, the installation of which is
|
||||
[[doom-module:][+lsp]] adds code completion, syntax checking, formatting and other [[doom-package:][lsp-mode]] or
|
||||
[[doom-package:][eglot]] features. It requires ~LanguageServer.jl~, the installation of which is
|
||||
described above.
|
||||
|
||||
* Configuration
|
||||
** Change the default environment for the Julia language server
|
||||
~lsp-julia~ requires a variable be set for the Julia environment. This is set to
|
||||
v1.0 by default as it is the current LTS.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
;; ~/.doom.d/config.el
|
||||
(setq lsp-julia-default-environment "~/.julia/environments/v1.0")
|
||||
#+END_SRC
|
||||
** Change the default environment for the Julia language server
|
||||
[[doom-package:][lsp-julia]] requires a variable be set for the Julia environment. This is set to
|
||||
v1.6 by default as it is 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
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,36 +1,55 @@
|
|||
#+TITLE: lang/kotlin
|
||||
#+DATE: March 28, 2019
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang kotlin
|
||||
#+subtitle: A Java(Script) that won't depress you
|
||||
#+created: March 28, 2019
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
* Description :unfold:
|
||||
This module adds [[https://kotlinlang.org/][Kotlin]] support to Doom Emacs.
|
||||
|
||||
* Description
|
||||
This module adds Kotlin support to Emacs.
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enables integration with [[https://github.com/emacs-lsp/lsp-mode][kotlin-language-server]]. This requires the
|
||||
=:tools lsp= module.
|
||||
** Module flags
|
||||
- +lsp ::
|
||||
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
|
||||
+ kotlin-mode
|
||||
+ flycheck-kotlin
|
||||
** Packages
|
||||
- [[doom-package:][flycheck-kotlin]] if [[doom-module:][:checkers syntax]]
|
||||
- [[doom-package:][kotlin-mode]]
|
||||
|
||||
* Prerequisites
|
||||
TODO
|
||||
** Hacks
|
||||
/No hacks documented for this module./
|
||||
|
||||
* Features
|
||||
TODO
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
* Configuration
|
||||
TODO
|
||||
* 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
|
||||
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
|
||||
|
|
|
@ -1,98 +1,112 @@
|
|||
#+TITLE: lang/latex
|
||||
#+DATE: January 16, 2017
|
||||
#+SINCE: v1.3
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang latex
|
||||
#+subtitle: Writing papers in Emacs has never been so fun
|
||||
#+created: January 16, 2017
|
||||
#+since: 1.3
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
Provide a helping hand when working with LaTeX documents.
|
||||
|
||||
+ Sane defaults
|
||||
+ Fontification of many popular commands
|
||||
+ Pretty indentation of wrapped lines using the ~adaptive-wrap~ package
|
||||
+ Spell checking with ~flycheck~
|
||||
+ Change PDF viewer to Okular or ~latex-preview-pane~
|
||||
+ Bibtex editor
|
||||
+ Autocompletion using ~company-mode~
|
||||
+ Compile your .tex code only once using LatexMk
|
||||
- Sane defaults
|
||||
- Fontification of many popular commands
|
||||
- Pretty indentation of wrapped lines using the [[doom-package:][adaptive-wrap]] package
|
||||
- Spell checking with [[doom-package:][flycheck]]
|
||||
- Change PDF viewer to Okular or [[doom-package:][latex-preview-pane]]
|
||||
- Bibtex editor
|
||||
- Autocompletion using [[doom-package:][company-mode]]
|
||||
- Compile your =.tex= code only once using LatexMk
|
||||
|
||||
** Module Flags
|
||||
+ =+latexmk= Use LatexMk instead of LaTeX to compile documents.
|
||||
+ =+cdlatex= Enable [[https://github.com/cdominik/cdlatex][cdlatex]] for fast math insertion.
|
||||
+ =+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.
|
||||
** Maintainers
|
||||
- [[doom-user:][@tecosaur]]
|
||||
- [[doom-user:][@ymarco]]
|
||||
|
||||
** Plugins
|
||||
+ [[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=)
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
* Prerequisites
|
||||
You will need ghostscript and a latex compiler. All this is provided by
|
||||
the =texlive= bundle, available through many OS package managers.
|
||||
** Module flags
|
||||
- +cdlatex ::
|
||||
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
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
apt-get install texlive
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Arch Linux
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
pacman -S texlive-core
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** TODO macOS
|
||||
#+BEGIN_SRC sh
|
||||
#+begin_src sh
|
||||
brew install --cask basictex
|
||||
# If the above doesn't work, then
|
||||
brew install --cask mactex # WARNING: large 4gb download!
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
#+begin_quote
|
||||
This has not been verified.
|
||||
🔨 This has not been verified.
|
||||
#+end_quote
|
||||
|
||||
** NixOS
|
||||
#+BEGIN_SRC nix
|
||||
#+begin_src nix
|
||||
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
|
||||
Reftex has a variable that allow you to
|
||||
specify where it should find your bibliography file(s):
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
Reftex has a variable that allow you to specify where it should find your
|
||||
bibliography file(s):
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(setq reftex-default-bibliography "/your/bib/file.bib")
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
** Changing the PDFs viewer
|
||||
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
|
||||
+ Zathura
|
||||
+ 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,
|
||||
or remove tools from the search altogether. If you want to exclusively use one
|
||||
tool, for instance:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(setq +latex-viewers '(zathura))
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
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~
|
||||
to ~nil~.
|
||||
|
||||
** Using cdlatex's snippets despite having yasnippet
|
||||
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
|
||||
the ~TAB~ key for cdlatex, which takes care of snippet-related stuff:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
[[doom-package:][cdlatex]] has a snippet insertion capability which is disabled in favor of
|
||||
[[doom-package:][yasnippet]] when using [[doom-module:][:editor snippets]]. If you still wanna use it, simply rebind
|
||||
the [[kbd:][TAB]] key for cdlatex, which takes care of snippet-related stuff:
|
||||
#+begin_src emacs-lisp
|
||||
;; in $DOOMDIR/config.el
|
||||
(map! :map cdlatex-mode-map
|
||||
:i "TAB" #'cdlatex-tab)
|
||||
#+END_SRC
|
||||
:i "TAB" #'cdlatex-tab)
|
||||
#+end_src
|
||||
|
||||
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
|
||||
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
|
||||
|
|
55
modules/lang/lean/README.org
Normal file
55
modules/lang/lean/README.org
Normal 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
|
|
@ -1,56 +1,74 @@
|
|||
#+TITLE: lang/ledger
|
||||
#+DATE: October 13, 2019
|
||||
#+SINCE: v2.0.4
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang ledger
|
||||
#+subtitle: Be audit you can be
|
||||
#+created: September 09, 2017
|
||||
#+since: 2.0.6 (#194)
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#hacks][Hacks]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
|
||||
* Description
|
||||
* Description :unfold:
|
||||
This module adds support for [[https://www.ledger-cli.org/][ledger]] files. Ledger is a command line double-entry
|
||||
accounting system that works with simple text files holding transactions in the
|
||||
following format:
|
||||
|
||||
#+BEGIN_SRC ledger
|
||||
#+begin_src ledger
|
||||
2015/10/12 Exxon
|
||||
Expenses:Auto:Gas $10.00
|
||||
Liabilities:MasterCard $-10.00
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
This modules enables the following features:
|
||||
+ Syntax and indentation support for ledger files
|
||||
+ Add, edit, and delete transactions
|
||||
+ Generate reports
|
||||
+ Schedule transactions
|
||||
+ Sort transactions
|
||||
+ Display statistics about transactions
|
||||
+ Display balance up to a point
|
||||
- Syntax and indentation support for ledger files
|
||||
- Add, edit, and delete transactions
|
||||
- Generate reports
|
||||
- Schedule transactions
|
||||
- Sort transactions
|
||||
- Display statistics about transactions
|
||||
- Display balance up to a point
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
** Maintainers
|
||||
/This module has no dedicated maintainers./ [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/purcell/flycheck-ledger][flycheck-ledger]]
|
||||
+ [[https://github.com/atheriel/evil-ledger][evil-ledger]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
** 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
|
||||
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
|
||||
whole transaction instead of toggling just the current posting.
|
||||
- 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 whole transaction instead of toggling just the current posting.
|
||||
|
||||
* Prerequisites
|
||||
In order for ~flycheck-ledger~ to work and to be able to generate reports you
|
||||
will need to install [[https://www.ledger-cli.org/][ledger]].
|
||||
** TODO Changelog
|
||||
# This section will be machine generated. Don't edit it by hand.
|
||||
/This module does not have a changelog yet./
|
||||
|
||||
* TODO Features
|
||||
An in-depth list of features, how to use them, and their dependencies.
|
||||
* Installation
|
||||
[[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
|
||||
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
|
||||
|
|
|
@ -1,57 +1,66 @@
|
|||
#+TITLE: lang/lua
|
||||
#+DATE: Jun 3, 2020
|
||||
#+SINCE: v3.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang lua
|
||||
#+subtitle: One-based indices? one-based indices
|
||||
#+created: Jun 03, 2020
|
||||
#+since: 21.12.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#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 :unfold:
|
||||
This module adds Lua support to Doom Emacs.
|
||||
|
||||
* Description
|
||||
Adds Lua support to Doom Emacs
|
||||
# A summary of what this module does.
|
||||
|
||||
+ REPL
|
||||
+ Love2D specific functions
|
||||
+ Moonscript support
|
||||
- REPL
|
||||
- Love2D specific functions
|
||||
- Moonscript support
|
||||
- Fennel support
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
+ =+moonscript= Moonscript language support
|
||||
+ =+fennel= Fennel language support
|
||||
+ =+lsp= Language Server Protocol support
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
# A list of linked plugins
|
||||
+ [[https://github.com/immerrr/lua-mode][lua-mode]]
|
||||
+ [[https://github.com/k2052/moonscript-mode][moonscript-mode]] (=+moonscript=)
|
||||
+ [[https://gitlab.com/technomancy/fennel-mode][fennel-mode]] (=+fennel=)
|
||||
** Module flags
|
||||
- +fennel ::
|
||||
Enable support for the Fennel language.
|
||||
- +lsp ::
|
||||
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
|
||||
LSP server support depends on which flavor of the =:tools lsp= module you have
|
||||
installed (Eglot or LSP-mode).
|
||||
LSP server support depends on which flavor of the [[doom-module:][:tools lsp]] module you have
|
||||
installed ([[doom-package:][eglot]] or [[doom-package:][lsp-mode]]).
|
||||
|
||||
*** LSP-mode
|
||||
Three servers are supported, ordered from highest to lowest priority:
|
||||
|
||||
+ [[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.
|
||||
+ [[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
|
||||
- [[https://github.com/EmmyLua/EmmyLua-LanguageServer][EmmyLua-LanguageServer]] :: Must be in
|
||||
=$EMACSDIR/.local/etc/lsp/EmmyLua-LS-all.jar=. See
|
||||
~lsp-clients-emmy-lua-jar-path~ variable to change this.
|
||||
- [[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.
|
||||
+ [[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.
|
||||
|
||||
[[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 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
|
||||
=~/.config/emacs/.local/etc/lsp/lua-language-server/=. See
|
||||
~+lua-lsp-dir~ variable to change this.
|
||||
=$EMACSDIR/.local/etc/lsp/lua-language-server/=. See ~+lua-lsp-dir~ variable
|
||||
to change this.
|
||||
|
||||
* TODO Features
|
||||
# An in-depth list of features, how to use them, and their dependencies.
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
* Configuration
|
||||
- lua-lsp-dir :: This must be set when using =+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.
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+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
|
||||
[[doom-report:][Report an issue?]]
|
||||
|
||||
** 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
|
||||
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
|
||||
|
|
|
@ -1,26 +1,10 @@
|
|||
#+TITLE: lang/markdown
|
||||
#+DATE: February 19, 2017
|
||||
#+SINCE: 2.0
|
||||
#+STARTUP: inlineimages
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang markdown
|
||||
#+subtitle: Write docs for people to ignore
|
||||
#+created: February 19, 2017
|
||||
#+since: 2.0.0
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#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
|
||||
* Description :unfold:
|
||||
This module provides Markdown support for Emacs.
|
||||
|
||||
#+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
|
||||
software tool, written in Perl, that converts the plain text formatting to HTML.
|
||||
See the Syntax page for details pertaining to Markdown’s formatting syntax. You
|
||||
See the Syntax page for details pertaining to Markdown's formatting syntax. You
|
||||
can try it out, right now, using the online Dingus.
|
||||
|
||||
The overriding design goal for Markdown’s formatting syntax is to make it as
|
||||
The overriding design goal for Markdown's formatting syntax is to make it as
|
||||
readable as possible. The idea is that a Markdown-formatted document should be
|
||||
publishable as-is, as plain text, without looking like it’s been marked up with
|
||||
tags or formatting instructions. While Markdown’s syntax has been influenced by
|
||||
publishable as-is, as plain text, without looking like it's been marked up with
|
||||
tags or formatting instructions. While Markdown's syntax has been influenced by
|
||||
several existing text-to-HTML filters, the single biggest source of inspiration
|
||||
for Markdown’s syntax is the format of plain text email. -- John Gruber
|
||||
for Markdown's syntax is the format of plain text email. -- John Gruber
|
||||
#+end_quote
|
||||
|
||||
** Module Flags
|
||||
+ =+grip= Enables [[https://github.com/seagle0128/grip-mode][grip support]] (on =<localleader> p=), to provide live
|
||||
github-style previews of your markdown (or org) files.
|
||||
** Maintainers
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Plugins
|
||||
+ markdown-mode
|
||||
+ markdown-toc
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** 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
|
||||
+ 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.
|
||||
|
||||
* Prerequisites
|
||||
This module has two soft dependencies: a linter and a compiler (for previewing
|
||||
markdown).
|
||||
** 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 linter (requires [[doom-module:][:checkers syntax]])
|
||||
- A markdown compiler, for previewing Markdown
|
||||
|
||||
** Linters
|
||||
Out of the box, flycheck recognizes these checkers for markdown-mode and
|
||||
gfm-mode:
|
||||
|
||||
+ Markdown-specific
|
||||
+ [[https://github.com/DavidAnson/markdownlint][markdownlint]] (~npm install markdownlint~)
|
||||
+ [[https://github.com/markdownlint/markdownlint][mdl]] (~gem install mdl~)
|
||||
+ General (natural language)
|
||||
+ [[http://proselint.com/][proselint]]
|
||||
- ~pip install proselint~
|
||||
- Markdown-specific
|
||||
- [[https://github.com/DavidAnson/markdownlint][markdownlint]] (~$ npm install markdownlint~)
|
||||
- [[https://github.com/markdownlint/markdownlint][mdl]] (~$ gem install mdl~)
|
||||
- General (natural language)
|
||||
- [[http://proselint.com/][proselint]]
|
||||
- ~$ pip install proselint~
|
||||
- Or through your OS package manager
|
||||
- MacOS: ~brew install proselint~
|
||||
- Arch Linux: ~pacman -S proselint~
|
||||
+ [[https://github.com/textlint/textlint][textlint]] (~npm install textlint~)
|
||||
- MacOS: ~$ brew install proselint~
|
||||
- Arch Linux: ~$ pacman -S proselint~
|
||||
- [[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
|
||||
work. It will recognize and use one of the following executables, in this order
|
||||
(you only need one):
|
||||
|
||||
+ [[https://github.com/markedjs/marked][markedjs]]: a markdown compiler "built for speed"
|
||||
+ [[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
|
||||
- [[https://github.com/markedjs/marked][markedjs]]: a markdown compiler "built for speed"
|
||||
- [[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
|
||||
for these two:
|
||||
+ 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
|
||||
+ [[https://fletcher.github.io/MultiMarkdown-6/][multimarkdown]]: a compiler for a language that is a superset of Markdown, with
|
||||
- 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
|
||||
- [[https://fletcher.github.io/MultiMarkdown-6/][multimarkdown]]: a compiler for a language that is a superset of Markdown, with
|
||||
additional output formats and features.
|
||||
|
||||
*** MarkedJS
|
||||
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
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
*** Pandoc
|
||||
Pandoc is the universal markup transpiler. It should be available through your
|
||||
system package manager. For example:
|
||||
|
||||
+ MacOS: ~brew install pandoc~
|
||||
+ Arch Linux: ~pacman -S pandoc~
|
||||
+ MacOS: ~$ brew install pandoc~
|
||||
+ Arch Linux: ~$ pacman -S pandoc~
|
||||
|
||||
*** Markdown
|
||||
The C implementation of Markdown.pl, called =discount=, is available through
|
||||
your OS's package manager:
|
||||
|
||||
+ MacOS: ~brew install discount~
|
||||
+ Arch Linux: ~pacman -S discount~
|
||||
+ MacOS: ~$ brew install 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
|
||||
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
|
||||
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
|
||||
|
||||
* Features
|
||||
** Markdown preview
|
||||
~markdown-preview~ is bound to =<localleader> p=. This will open a preview of
|
||||
your compiled markdown document in your browser.
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 /This module's usage documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+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
|
||||
#+begin_quote
|
||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||
#+end_quote
|
||||
|
||||
** 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-compile-functions~: a list of functions that take three arguments: the
|
||||
start and end point in the current buffer to use as input, and an output buffer
|
||||
to insert the result in.
|
||||
~+markdown-compile-functions~: a list of functions that take three arguments:
|
||||
the start and end point in the current buffer to use as input, and an output
|
||||
buffer to insert the result in.
|
||||
|
||||
By default, the value of ~+markdown-compile-functions~ is:
|
||||
|
||||
#+BEGIN_SRC lisp
|
||||
#+begin_src lisp
|
||||
'(+markdown-compile-marked
|
||||
+markdown-compile-pandoc
|
||||
+markdown-compile-markdown
|
||||
+markdown-compile-multimarkdown)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
These functions will attempt to use the marked, pandoc and markdown executables,
|
||||
if available. Changing this variable will control how markdown is compiled.
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
if available. Changing this variable will control how markdown is compiled:
|
||||
#+begin_src emacs-lisp
|
||||
;; Add a new one
|
||||
(add-hook '+markdown-compile-functions #'my-compile-function)
|
||||
|
||||
;; Or remove an existing one
|
||||
(remove-hook '+markdown-compile-functions #'+markdown-compile-markdown)
|
||||
#+END_SRC
|
||||
#+end_src
|
||||
|
||||
Otherwise, you can change ~markdown-command~ directly:
|
||||
|
||||
#+BEGIN_SRC elisp
|
||||
#+begin_src emacs-lisp
|
||||
(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
|
||||
|
|
|
@ -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
|
||||
This module is a work in progress.
|
||||
#+end_quote
|
||||
* Description :unfold:
|
||||
This module adds [[https://nim-lang.org][Nim]] support to Doom Emacs.
|
||||
|
||||
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)
|
||||
+ Syntax checking (nimsuggest + flycheck)
|
||||
+ Babel support (~ob-nim~)
|
||||
** Maintainers
|
||||
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
* Table of Contents :TOC:
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#nim][Nim]]
|
||||
- [[#configuration][Configuration]]
|
||||
** Module flags
|
||||
/This module has no flags./
|
||||
|
||||
* Module Flags
|
||||
This module provides no flags.
|
||||
** Packages
|
||||
- [[doom-package:][flycheck-nim]] if [[doom-module:][:checkers syntax]]
|
||||
- [[doom-package:][nim-mode]]
|
||||
|
||||
* Prerequisites
|
||||
+ ~nim~ (for building & evaluation)
|
||||
+ ~nimsuggest~ (for code completion, syntax checking & jump-to-definition functionality)
|
||||
** Hacks
|
||||
- [[doom-package:][nimsuggest]] was modified to strip invalid characters from its temp file paths
|
||||
(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
|
||||
=choosenim= is an installer and version manager for the Nim programming
|
||||
language. You can install the latest stable release of Nim by running the
|
||||
following in your terminal and following the onscreen instructions:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
#+begin_src 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:
|
||||
- MacOS: ~$ brew install nim~
|
||||
- Arch Linux: ~$ pacman --needed --noconfirm -S nim nimble~
|
||||
- openSUSE: ~$ zypper install nim~
|
||||
|
||||
*** MacOS
|
||||
#+BEGIN_SRC sh :tangle (if (doom-system-os 'macos) "yes")
|
||||
brew install nim
|
||||
#+END_SRC
|
||||
* TODO Usage
|
||||
#+begin_quote
|
||||
🔨 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
*** Arch Linux
|
||||
#+BEGIN_SRC sh :dir /sudo:: :tangle (if (doom-system-os 'arch) "yes")
|
||||
sudo pacman --needed --noconfirm -S nim nimble
|
||||
#+END_SRC
|
||||
* TODO Configuration
|
||||
#+begin_quote
|
||||
🔨 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||
#+end_quote
|
||||
|
||||
*** openSUSE
|
||||
#+BEGIN_SRC sh :dir /sudo::
|
||||
sudo zypper install nim
|
||||
#+END_SRC
|
||||
* Troubleshooting
|
||||
/There are no known problems with this module./ [[doom-report:][Report one?]]
|
||||
|
||||
* 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
|
||||
|
|
|
@ -1,57 +1,82 @@
|
|||
#+TITLE: lang/nix
|
||||
#+DATE: May 4, 2020
|
||||
#+SINCE: v2.0.7
|
||||
#+STARTUP: inlineimages nofold
|
||||
# -*- mode: doom-docs-org -*-
|
||||
#+title: :lang nix
|
||||
#+subtitle: I hereby declare "nix geht mehr!"
|
||||
#+created: December 02, 2017
|
||||
#+since: 2.0.8 (#280)
|
||||
|
||||
* 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 :unfold:
|
||||
This module adds support for the Nix language to Doom Emacs, along with tools
|
||||
for managing [[https://nixos.org/][Nix(OS)]].
|
||||
|
||||
* Description
|
||||
Adds many tools for [[https://nixos.org/][Nix(OS)]] users in nice package for Doom users.
|
||||
|
||||
+ Syntax highlighting
|
||||
+ Completion through ~company~ / ~helm~
|
||||
+ Nix option lookup
|
||||
+ Formatting (~nixfmt~)
|
||||
Includes:
|
||||
- Syntax highlighting
|
||||
- Completion through [[doom-package:][company]] and/or [[doom-package:][helm]]
|
||||
- Nix option lookup
|
||||
- Formatting (~nixfmt~)
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
- [[doom-user:][@hlissner]]
|
||||
|
||||
** Module Flags
|
||||
This module provides no flags.
|
||||
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/NixOS/nix-mode][nix-mode]]
|
||||
+ [[https://github.com/jwiegley/nix-update-el][nix-update]]
|
||||
** Module flags
|
||||
- +tree-sitter ::
|
||||
Leverages tree-sitter for better syntax highlighting and structural text
|
||||
editing. Requires [[doom-module:][:tools tree-sitter]].
|
||||
|
||||
* Prerequisites
|
||||
+ ~nixfmt~ is required to use formatting
|
||||
+ If you have Nix(OS) installed it can be installed through Nix configuration ~environment.systemPackages = with pkgs; [ nixfmt ];~ (recommended)
|
||||
+ Or through nix-env ~nix-env -iA nixpkgs.nixfmt~
|
||||
+ Or through nix-shell ~nix-shell -f https://github.com/serokell/nixfmt/archive/master.tar.gz -i~
|
||||
+ ~: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.
|
||||
** Packages
|
||||
- [[doom-package:][company-nixos-options]] if [[doom-module:][:completion company]]
|
||||
- [[doom-package:][helm-nixos-options]] if [[doom-module:][:completion helm]]
|
||||
- [[doom-package:][nix-mode]]
|
||||
- [[doom-package:][nix-update]]
|
||||
|
||||
** 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
|
||||
| Binding | Description |
|
||||
|-------------------+----------------------|
|
||||
| ~<localleader> b~ | ~nix-build~ |
|
||||
| ~<localleader> f~ | ~nix-update-fetch~ |
|
||||
| ~<localleader> o~ | ~+nix/lookup-option~ |
|
||||
| ~<localleader> p~ | ~nix-format-buffer~ |
|
||||
| ~<localleader> r~ | ~nix-repl-show~ |
|
||||
| ~<localleader> s~ | ~nix-repl-shell~ |
|
||||
| ~<localleader> u~ | ~nix-unpack~ |
|
||||
| Binding | Description |
|
||||
|-----------------+----------------------|
|
||||
| [[kbd:][<localleader> b]] | ~nix-build~ |
|
||||
| [[kbd:][<localleader> f]] | ~nix-update-fetch~ |
|
||||
| [[kbd:][<localleader> o]] | ~+nix/lookup-option~ |
|
||||
| [[kbd:][<localleader> p]] | ~nix-format-buffer~ |
|
||||
| [[kbd:][<localleader> r]] | ~nix-repl-show~ |
|
||||
| [[kbd:][<localleader> s]] | ~nix-repl-shell~ |
|
||||
| [[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
|
||||
+ 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
Loading…
Add table
Add a link
Reference in a new issue