💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in other categories, so they've been moved: - feature/debugger -> tools/debugger - feature/evil -> editor/evil - feature/eval -> tools/eval - feature/lookup -> tools/lookup - feature/snippets -> editor/snippets - feature/file-templates -> editor/file-templates - feature/workspaces -> ui/workspaces More potential changes in the future: - A new :term category for terminal emulation modules (eshell, term and vterm). - A new :os category for modules dedicated to os-specific functionality. The :tools macos module would fit here, but so would modules for nixos and arch. - A new :services category for web-service integration, like wakatime, twitter, elfeed, gist and pastebin services.
This commit is contained in:
parent
52eed893fe
commit
77e4cc4d58
193 changed files with 304 additions and 303 deletions
|
@ -147,7 +147,7 @@ selection of all minor-modes, active or not."
|
|||
(defun doom/describe-module (category module)
|
||||
"Open the documentation of CATEGORY MODULE.
|
||||
|
||||
CATEGORY is a keyword and MODULE is a symbol. e.g. :feature and 'evil.
|
||||
CATEGORY is a keyword and MODULE is a symbol. e.g. :editor and 'evil.
|
||||
|
||||
Automatically selects a) the module at point (in private init files), b) the
|
||||
module derived from a `featurep!' or `require!' call, c) the module that the
|
||||
|
|
|
@ -17,21 +17,32 @@
|
|||
(defconst doom-obsolete-modules
|
||||
'((:feature (version-control (:emacs vc) (:ui vc-gutter))
|
||||
(spellcheck (:tools flyspell))
|
||||
(syntax-checker (:tools flycheck)))
|
||||
(syntax-checker (:tools flycheck))
|
||||
(evil (:editor evil))
|
||||
(snippets (:editor snippets))
|
||||
(file-templates (:editor file-templates))
|
||||
(workspaces (:ui workspaces))
|
||||
(eval (:tools eval))
|
||||
(lookup (:tools lookup))
|
||||
(debugger (:tools debugger)))
|
||||
(:tools (rotate-text (:editor rotate-text)))
|
||||
(:emacs (electric-indent (:emacs electric))
|
||||
(hideshow (:editor fold)))
|
||||
(:ui (doom-modeline (:ui modeline)))
|
||||
(:ui (fci (:ui fill-column)))
|
||||
(:ui (evil-goggles (:ui ophints))))
|
||||
"An alist of deprecated modules, mapping deprecated modules to an optional new
|
||||
location (which will create an alias). Each CAR and CDR is a (CATEGORY .
|
||||
MODULES). E.g.
|
||||
(:ui (doom-modeline (:ui modeline))
|
||||
(fci (:ui fill-column))
|
||||
(evil-goggles (:ui ophints))))
|
||||
"A tree alist that maps deprecated modules to their replacement(s).
|
||||
|
||||
((:emacs . electric-indent) . (:emacs electric))
|
||||
((:feature . version-control) (:emacs vc) (:ui . vc-gutter))
|
||||
Each entry is a three-level tree. For example:
|
||||
|
||||
A warning will be put out if these deprecated modules are used.")
|
||||
(:feature (version-control (:emacs vc) (:ui vc-gutter))
|
||||
(spellcheck (:tools flyspell))
|
||||
(syntax-checker (:tools flycheck)))
|
||||
|
||||
This marks :feature version-control, :feature spellcheck and :feature
|
||||
syntax-checker modules obsolete. e.g. If :feature version-control is found in
|
||||
your `doom!' block, a warning is emitted before replacing it with :emacs vc and
|
||||
:ui vc-gutter.")
|
||||
|
||||
(defvar doom--current-module nil)
|
||||
(defvar doom--current-flags nil)
|
||||
|
|
|
@ -43,7 +43,7 @@ It is recommended you don't set specify a font-size, as to inherit `doom-font's
|
|||
size.")
|
||||
|
||||
(defvar doom-unicode-font nil
|
||||
"Fallback font for unicode glyphs. Is ignored if :feature unicode is active.
|
||||
"Fallback font for unicode glyphs. Is ignored if :ui unicode is active.
|
||||
|
||||
Expects either a `font-spec', font object, a XFT font string or XLFD string. See
|
||||
`doom-font' for examples.
|
||||
|
|
|
@ -8,17 +8,7 @@
|
|||
;; More information about these modules (and what flags they support) can be
|
||||
;; found in modules/README.org.
|
||||
|
||||
(doom! :feature
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
eval ; run code, run (also, repls)
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
(lookup ; helps you navigate your code and documentation
|
||||
+docsets) ; ...or in Dash docsets locally
|
||||
snippets ; my elves. They type so I don't have to
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
|
||||
:completion
|
||||
(doom! :completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
|
@ -46,14 +36,18 @@
|
|||
vc-gutter ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
;;(format +onsave) ; automated prettiness
|
||||
;;lispy ; vim for lisp, for people who dont like vim
|
||||
multiple-cursors ; editing in many places at once
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
|
||||
:emacs
|
||||
(dired ; making dired pretty [functional]
|
||||
|
@ -68,13 +62,17 @@
|
|||
|
||||
:tools
|
||||
;;ansible
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
eval ; run code, run (also, repls)
|
||||
flycheck ; tasing you for every semicolon you forget
|
||||
;;flyspell ; tasing you for misspelling mispelling
|
||||
;;gist ; interacting with github gists
|
||||
(lookup ; helps you navigate your code and documentation
|
||||
+docsets) ; ...or in Dash docsets locally
|
||||
;;lsp
|
||||
;;macos ; MacOS-specific commands
|
||||
magit ; a git porcelain for Emacs
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#+TITLE: Doom Modules
|
||||
|
||||
* Table of Contents :TOC:noexport:
|
||||
- [[#feature][:feature]]
|
||||
- [[#completion][:completion]]
|
||||
- [[#ui][:ui]]
|
||||
- [[#editor][:editor]]
|
||||
|
@ -12,19 +11,9 @@
|
|||
- [[#collab][:collab]]
|
||||
- [[#config][:config]]
|
||||
|
||||
* :feature
|
||||
Broad modules that bring essential IDE functionality to Emacs.
|
||||
|
||||
+ debugger: A (nigh-)universal debugger in Emacs
|
||||
+ [[file:feature/eval/README.org][eval]]: REPL & code evaluation support for a variety of languages
|
||||
+ [[file:feature/evil/README.org][evil]] =+everywhere=: Vim in Emacs
|
||||
+ [[file:feature/file-templates/README.org][file-templates]]: Auto-inserted templates in blank new files
|
||||
+ [[file:feature/lookup/README.org][lookup]] =+docsets=: Universal jump-to & documentation lookup backend
|
||||
+ [[file:feature/snippets/README.org][snippets]]: A templating system for Emacs for lazy typers (aka programmers)
|
||||
+ [[file:feature/workspaces/README.org][workspaces]]: Isolated workspaces
|
||||
|
||||
* :completion
|
||||
Swappable completion modules for quickly narrowing down lists of candidates.
|
||||
Modules that provide new interfaces or frameworks for completion, including code
|
||||
completion.
|
||||
|
||||
+ [[file:completion/company/README.org][company]] =+auto +childframe=: The ultimate code completion backend
|
||||
+ helm =+fuzzy +childframe=: *Another* search engine for love and life
|
||||
|
@ -53,19 +42,23 @@ Aesthetic modules that affect the Emacs interface or user experience.
|
|||
+ vc-gutter:
|
||||
+ vi-tilde-fringe:
|
||||
+ [[file:ui/window-select/README.org][window-select]]:
|
||||
+ [[file:ui/workspaces/README.org][workspaces]]: Isolated workspaces
|
||||
|
||||
* :editor
|
||||
Modules that affect and augment your ability to write and edit text.
|
||||
Modules that affect and augment your ability to manipulate or insert text.
|
||||
|
||||
+ [[file:editor/evil/README.org][evil]] =+everywhere=: transforms Emacs into Vim
|
||||
+ [[file:editor/file-templates/README.org][file-templates]]: Auto-inserted templates in blank new files
|
||||
+ [[file:editor/fold/README.org][fold]]: universal code folding
|
||||
+ [[file:editor/format/README.org][format]] =+onsave=:
|
||||
+ [[file:editor/lispy/README.org][lispy]]:
|
||||
+ multiple-cursors:
|
||||
+ [[file:editor/parinfer/README.org][parinfer]]:
|
||||
+ rotate-text:
|
||||
+ [[file:editor/snippets/README.org][snippets]]: Snippet expansion for lazy typists
|
||||
|
||||
* :emacs
|
||||
Modules that reconfigure packages or features built into Emacs
|
||||
Modules that reconfigure or augment packages or features built into Emacs.
|
||||
|
||||
+ dired =+ranger +icons=:
|
||||
+ electric:
|
||||
|
@ -78,12 +71,15 @@ Modules that reconfigure packages or features built into Emacs
|
|||
Small modules that give Emacs access to external tools & services.
|
||||
|
||||
+ ansible:
|
||||
+ debugger: A (nigh-)universal debugger in Emacs
|
||||
+ docker:
|
||||
+ [[file:tools/editorconfig/README.org][editorconfig]]:
|
||||
+ [[file:tools/ein/README.org][ein]]:
|
||||
+ [[file:tools/eval/README.org][eval]]: REPL & code evaluation support for a variety of languages
|
||||
+ flycheck: Live error/warning highlights
|
||||
+ flyspell: Spell checking
|
||||
+ gist:
|
||||
+ [[file:tools/lookup/README.org][lookup]] =+docsets=: Universal jump-to & documentation lookup backend
|
||||
+ [[file:tools/lsp/README.org][lsp]]:
|
||||
+ macos:
|
||||
+ magit:
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
(defun =calendar ()
|
||||
"Activate (or switch to) `calendar' in its workspace."
|
||||
(interactive)
|
||||
(if (featurep! :feature workspaces)
|
||||
(if (featurep! :ui workspaces)
|
||||
(progn
|
||||
(+workspace-switch "Calendar" t)
|
||||
(doom/switch-to-scratch-buffer)
|
||||
|
@ -28,7 +28,7 @@
|
|||
(defun +calendar/quit ()
|
||||
"TODO"
|
||||
(interactive)
|
||||
(if (featurep! :feature workspaces)
|
||||
(if (featurep! :ui workspaces)
|
||||
(+workspace/delete "Calendar")
|
||||
(doom-kill-matching-buffers "^\\*cfw:")
|
||||
(set-window-configuration +calendar--wconf)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;; app/email/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
;;;###if (featurep! :feature evil)
|
||||
;;;###if (featurep! :editor evil)
|
||||
|
||||
;;;###autoload
|
||||
(defun +email/mark (&optional beg end)
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
If INHIBIT-WORKSPACE (the universal argument) is non-nil, don't spawn a new
|
||||
workspace for it."
|
||||
(interactive "P")
|
||||
(cond ((and (featurep! :feature workspaces)
|
||||
(cond ((and (featurep! :ui workspaces)
|
||||
(+workspace-exists-p +irc--workspace-name))
|
||||
(+workspace-switch +irc--workspace-name))
|
||||
((not (+irc-setup-wconf inhibit-workspace))
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
(defun =notmuch ()
|
||||
"Activate (or switch to) `notmuch' in its workspace."
|
||||
(interactive)
|
||||
(unless (featurep! :feature workspaces)
|
||||
(user-error ":feature workspaces is required, but disabled"))
|
||||
(unless (featurep! :ui workspaces)
|
||||
(user-error ":ui workspaces is required, but disabled"))
|
||||
(condition-case-unless-debug e
|
||||
(progn
|
||||
(+workspace-switch "*MAIL*" t)
|
||||
|
|
|
@ -57,7 +57,7 @@ easier to scroll through.")
|
|||
(define-key! elfeed-show-mode-map
|
||||
[remap next-buffer] #'+rss/next
|
||||
[remap previous-buffer] #'+rss/previous))
|
||||
(when (featurep! :feature evil +everywhere)
|
||||
(when (featurep! :editor evil +everywhere)
|
||||
(evil-define-key 'normal elfeed-search-mode-map
|
||||
"q" #'elfeed-kill-buffer
|
||||
"r" #'elfeed-search-update--force
|
||||
|
|
|
@ -29,7 +29,7 @@ that works with the feature/popup module."
|
|||
(interactive "P")
|
||||
(condition-case _
|
||||
(progn
|
||||
(if (and (not arg) (featurep! :feature workspaces))
|
||||
(if (and (not arg) (featurep! :ui workspaces))
|
||||
(+workspace/new +twitter-workspace-name)
|
||||
(setq +twitter--old-wconf (current-window-configuration))
|
||||
(delete-other-windows)
|
||||
|
@ -52,7 +52,7 @@ that works with the feature/popup module."
|
|||
(when (eq major-mode 'twittering-mode)
|
||||
(twittering-kill-buffer)
|
||||
(cond ((one-window-p) (+twitter/quit-all))
|
||||
((featurep! :feature workspaces)
|
||||
((featurep! :ui workspaces)
|
||||
(+workspace/close-window-or-workspace))
|
||||
((delete-window)))))
|
||||
|
||||
|
@ -60,7 +60,7 @@ that works with the feature/popup module."
|
|||
(defun +twitter/quit-all ()
|
||||
"Close all open `twitter-mode' buffers and the associated workspace, if any."
|
||||
(interactive)
|
||||
(when (featurep! :feature workspaces)
|
||||
(when (featurep! :ui workspaces)
|
||||
(+workspace/delete +twitter-workspace-name))
|
||||
(when +twitter--old-wconf
|
||||
(set-window-configuration +twitter--old-wconf)
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
[remap twittering-kill-buffer] #'+twitter/quit
|
||||
[remap delete-window] #'+twitter/quit
|
||||
[remap +workspace/close-window-or-workspace] #'+twitter/quit)
|
||||
(when (featurep! :feature evil +everywhere)
|
||||
(when (featurep! :editor evil +everywhere)
|
||||
(define-key! twittering-mode-map
|
||||
[remap evil-window-delete] #'+twitter/quit
|
||||
"f" #'twittering-favorite
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
company-echo-metadata-frontend))
|
||||
:config
|
||||
(add-hook 'company-mode-hook #'+company|init-backends)
|
||||
(when (featurep! :feature evil)
|
||||
(when (featurep! :editor evil)
|
||||
(add-hook 'company-mode-hook #'evil-normalize-keymaps))
|
||||
(global-company-mode +1))
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; completion/helm/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
;;;###if (featurep! :feature evil)
|
||||
;;;###if (featurep! :editor evil)
|
||||
|
||||
;;
|
||||
;; Project searching
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
"A version of `helm-buffers-list' with its buffer list restricted to the
|
||||
current workspace."
|
||||
(interactive)
|
||||
(unless (featurep! :feature workspaces)
|
||||
(user-error "This command requires the :feature workspaces module"))
|
||||
(unless (featurep! :ui workspaces)
|
||||
(user-error "This command requires the :ui workspaces module"))
|
||||
(with-no-warnings
|
||||
(with-persp-buffer-list nil (helm-buffers-list))))
|
||||
|
||||
|
@ -34,8 +34,8 @@ current workspace."
|
|||
"A version of `helm-mini' with its buffer list restricted to the current
|
||||
workspace."
|
||||
(interactive)
|
||||
(unless (featurep! :feature workspaces)
|
||||
(user-error "This command requires the :feature workspaces module"))
|
||||
(unless (featurep! :ui workspaces)
|
||||
(user-error "This command requires the :ui workspaces module"))
|
||||
(with-no-warnings
|
||||
(with-persp-buffer-list nil (helm-mini))))
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ be negative.")
|
|||
;; disable special behavior for left/right, M-left/right keys.
|
||||
helm-ff-lynx-style-map nil)
|
||||
|
||||
(when (featurep! :feature evil +everywhere)
|
||||
(when (featurep! :editor evil +everywhere)
|
||||
(setq helm-default-prompt-display-function #'+helm--set-prompt-display))
|
||||
|
||||
:init
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;; completion/ivy/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
;;;###if (featurep! :feature evil)
|
||||
;;;###if (featurep! :editor evil)
|
||||
|
||||
;;;###autoload (autoload '+ivy:swiper "completion/ivy/autoload/evil" nil t)
|
||||
(evil-define-command +ivy:swiper (&optional search)
|
||||
|
|
|
@ -276,7 +276,7 @@ immediately runs it on the current candidate (ending the ivy session)."
|
|||
;;
|
||||
;; Evil key fixes
|
||||
|
||||
(map! :when (featurep! :feature evil +everywhere)
|
||||
(map! :when (featurep! :editor evil +everywhere)
|
||||
:after ivy
|
||||
:map (ivy-occur-mode-map ivy-occur-grep-mode-map)
|
||||
:m "j" #'ivy-occur-next-line
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
(:prefix ("q" . "quit/restart")
|
||||
:desc "Quit Emacs" "q" #'kill-emacs
|
||||
:desc "Save and quit Emacs" "Q" #'save-buffers-kill-terminal
|
||||
(:when (featurep! :feature workspaces)
|
||||
(:when (featurep! :ui workspaces)
|
||||
:desc "Quit Emacs & forget session" "X" #'+workspace/kill-session-and-quit)
|
||||
:desc "Restart & restore Emacs" "r" #'doom/restart-and-restore
|
||||
:desc "Restart Emacs" "R" #'doom/restart)
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
;; Smart tab
|
||||
:i [tab] (general-predicate-dispatch nil ; fall back to nearest keymap
|
||||
(and (featurep! :feature snippets)
|
||||
(and (featurep! :editor snippets)
|
||||
(bound-and-true-p yas-minor-mode)
|
||||
(yas-maybe-expand-abbrev-key-filter 'yas-expand))
|
||||
'yas-expand
|
||||
|
@ -165,90 +165,6 @@
|
|||
;;
|
||||
;;; Module keybinds
|
||||
|
||||
;;; :feature
|
||||
(map! (:when (featurep! :feature debugger)
|
||||
:after realgud
|
||||
:map realgud:shortkey-mode-map
|
||||
:n "j" #'evil-next-line
|
||||
:n "k" #'evil-previous-line
|
||||
:n "h" #'evil-backward-char
|
||||
:n "l" #'evil-forward-char
|
||||
:n "c" #'realgud:cmd-continue
|
||||
:m "n" #'realgud:cmd-next
|
||||
:m "b" #'realgud:cmd-break
|
||||
:m "B" #'realgud:cmd-clear)
|
||||
|
||||
(:when (featurep! :feature eval)
|
||||
:g "M-r" #'+eval/buffer
|
||||
:nv "gr" #'+eval:region
|
||||
:n "gR" #'+eval/buffer
|
||||
:v "gR" #'+eval:replace-region)
|
||||
|
||||
(:when (featurep! :feature lookup)
|
||||
:nv "K" #'+lookup/documentation
|
||||
:nv "gd" #'+lookup/definition
|
||||
:nv "gD" #'+lookup/references
|
||||
:nv "gf" #'+lookup/file)
|
||||
|
||||
(:when (featurep! :feature snippets)
|
||||
;; auto-yasnippet
|
||||
:i [C-tab] #'aya-expand
|
||||
:nv [C-tab] #'aya-create
|
||||
;; yasnippet
|
||||
(:after yasnippet
|
||||
(:map yas-keymap
|
||||
"C-e" #'+snippets/goto-end-of-field
|
||||
"C-a" #'+snippets/goto-start-of-field
|
||||
[M-right] #'+snippets/goto-end-of-field
|
||||
[M-left] #'+snippets/goto-start-of-field
|
||||
[M-backspace] #'+snippets/delete-to-start-of-field
|
||||
[backspace] #'+snippets/delete-backward-char
|
||||
[delete] #'+snippets/delete-forward-char-or-field)))
|
||||
|
||||
(:when (featurep! :tools flyspell)
|
||||
;; Keybinds that have no Emacs+evil analogues (i.e. don't exist):
|
||||
;; zq - mark word at point as good word
|
||||
;; zw - mark word at point as bad
|
||||
;; zu{q,w} - undo last marking
|
||||
;; Keybinds that evil define:
|
||||
;; z= - correct flyspell word at point
|
||||
;; ]s - jump to previous spelling error
|
||||
;; [s - jump to next spelling error
|
||||
(:map flyspell-mouse-map
|
||||
"RET" #'flyspell-correct-word-generic
|
||||
[return] #'flyspell-correct-word-generic
|
||||
[mouse-1] #'flyspell-correct-word-generic))
|
||||
|
||||
(:when (featurep! :tools flycheck)
|
||||
:m "]e" #'next-error
|
||||
:m "[e" #'previous-error
|
||||
(:after flycheck
|
||||
:map flycheck-error-list-mode-map
|
||||
:n "C-n" #'flycheck-error-list-next-error
|
||||
:n "C-p" #'flycheck-error-list-previous-error
|
||||
:n "j" #'flycheck-error-list-next-error
|
||||
:n "k" #'flycheck-error-list-previous-error
|
||||
:n "RET" #'flycheck-error-list-goto-error
|
||||
:n [return] #'flycheck-error-list-goto-error))
|
||||
|
||||
(:when (featurep! :feature workspaces)
|
||||
:n "gt" #'+workspace/switch-right
|
||||
:n "gT" #'+workspace/switch-left
|
||||
:n "]w" #'+workspace/switch-right
|
||||
:n "[w" #'+workspace/switch-left
|
||||
:g "M-1" (λ! (+workspace/switch-to 0))
|
||||
:g "M-2" (λ! (+workspace/switch-to 1))
|
||||
:g "M-3" (λ! (+workspace/switch-to 2))
|
||||
:g "M-4" (λ! (+workspace/switch-to 3))
|
||||
:g "M-5" (λ! (+workspace/switch-to 4))
|
||||
:g "M-6" (λ! (+workspace/switch-to 5))
|
||||
:g "M-7" (λ! (+workspace/switch-to 6))
|
||||
:g "M-8" (λ! (+workspace/switch-to 7))
|
||||
:g "M-9" (λ! (+workspace/switch-to 8))
|
||||
:g "M-0" #'+workspace/switch-to-last
|
||||
:g "M-t" #'+workspace/new
|
||||
:g "M-T" #'+workspace/display))
|
||||
|
||||
;;; :completion
|
||||
(map! (:when (featurep! :completion company)
|
||||
:i "C-@" #'+company/complete
|
||||
|
@ -400,7 +316,25 @@
|
|||
|
||||
(:when (featurep! :ui vc-gutter)
|
||||
:m "]d" #'git-gutter:next-hunk
|
||||
:m "[d" #'git-gutter:previous-hunk))
|
||||
:m "[d" #'git-gutter:previous-hunk)
|
||||
|
||||
(:when (featurep! :ui workspaces)
|
||||
:n "gt" #'+workspace/switch-right
|
||||
:n "gT" #'+workspace/switch-left
|
||||
:n "]w" #'+workspace/switch-right
|
||||
:n "[w" #'+workspace/switch-left
|
||||
:g "M-1" (λ! (+workspace/switch-to 0))
|
||||
:g "M-2" (λ! (+workspace/switch-to 1))
|
||||
:g "M-3" (λ! (+workspace/switch-to 2))
|
||||
:g "M-4" (λ! (+workspace/switch-to 3))
|
||||
:g "M-5" (λ! (+workspace/switch-to 4))
|
||||
:g "M-6" (λ! (+workspace/switch-to 5))
|
||||
:g "M-7" (λ! (+workspace/switch-to 6))
|
||||
:g "M-8" (λ! (+workspace/switch-to 7))
|
||||
:g "M-9" (λ! (+workspace/switch-to 8))
|
||||
:g "M-0" #'+workspace/switch-to-last
|
||||
:g "M-t" #'+workspace/new
|
||||
:g "M-T" #'+workspace/display))
|
||||
|
||||
;;; :editor
|
||||
(map! (:when (featurep! :editor fold)
|
||||
|
@ -449,7 +383,22 @@
|
|||
"C-p" #'evil-multiedit-prev)))
|
||||
|
||||
(:when (featurep! :editor rotate-text)
|
||||
:n "!" #'rotate-text))
|
||||
:n "!" #'rotate-text)
|
||||
|
||||
(:when (featurep! :editor snippets)
|
||||
;; auto-yasnippet
|
||||
:i [C-tab] #'aya-expand
|
||||
:nv [C-tab] #'aya-create
|
||||
;; yasnippet
|
||||
(:after yasnippet
|
||||
(:map yas-keymap
|
||||
"C-e" #'+snippets/goto-end-of-field
|
||||
"C-a" #'+snippets/goto-start-of-field
|
||||
[M-right] #'+snippets/goto-end-of-field
|
||||
[M-left] #'+snippets/goto-start-of-field
|
||||
[M-backspace] #'+snippets/delete-to-start-of-field
|
||||
[backspace] #'+snippets/delete-backward-char
|
||||
[delete] #'+snippets/delete-forward-char-or-field))))
|
||||
|
||||
;;; :emacs
|
||||
(map! (:when (featurep! :emacs vc)
|
||||
|
@ -463,14 +412,49 @@
|
|||
:n "gb" #'git-timemachine-blame))
|
||||
|
||||
;;; :tools
|
||||
(map! (:when (featurep! :tools magit)
|
||||
(:after evil-magit
|
||||
;; fix conflicts with private bindings
|
||||
:map (magit-status-mode-map magit-revision-mode-map)
|
||||
"C-j" nil
|
||||
"C-k" nil)
|
||||
(:map transient-map
|
||||
"q" #'transient-quit-one))
|
||||
(map! (:when (featurep! :tools debugger)
|
||||
:after realgud
|
||||
:map realgud:shortkey-mode-map
|
||||
:n "j" #'evil-next-line
|
||||
:n "k" #'evil-previous-line
|
||||
:n "h" #'evil-backward-char
|
||||
:n "l" #'evil-forward-char
|
||||
:n "c" #'realgud:cmd-continue
|
||||
:m "n" #'realgud:cmd-next
|
||||
:m "b" #'realgud:cmd-break
|
||||
:m "B" #'realgud:cmd-clear)
|
||||
|
||||
(:when (featurep! :tools eval)
|
||||
:g "M-r" #'+eval/buffer
|
||||
:nv "gr" #'+eval:region
|
||||
:n "gR" #'+eval/buffer
|
||||
:v "gR" #'+eval:replace-region)
|
||||
|
||||
(:when (featurep! :tools flyspell)
|
||||
;; Keybinds that have no Emacs+evil analogues (i.e. don't exist):
|
||||
;; zq - mark word at point as good word
|
||||
;; zw - mark word at point as bad
|
||||
;; zu{q,w} - undo last marking
|
||||
;; Keybinds that evil define:
|
||||
;; z= - correct flyspell word at point
|
||||
;; ]s - jump to previous spelling error
|
||||
;; [s - jump to next spelling error
|
||||
(:map flyspell-mouse-map
|
||||
"RET" #'flyspell-correct-word-generic
|
||||
[return] #'flyspell-correct-word-generic
|
||||
[mouse-1] #'flyspell-correct-word-generic))
|
||||
|
||||
(:when (featurep! :tools flycheck)
|
||||
:m "]e" #'next-error
|
||||
:m "[e" #'previous-error
|
||||
(:after flycheck
|
||||
:map flycheck-error-list-mode-map
|
||||
:n "C-n" #'flycheck-error-list-next-error
|
||||
:n "C-p" #'flycheck-error-list-previous-error
|
||||
:n "j" #'flycheck-error-list-next-error
|
||||
:n "k" #'flycheck-error-list-previous-error
|
||||
:n "RET" #'flycheck-error-list-goto-error
|
||||
:n [return] #'flycheck-error-list-goto-error))
|
||||
|
||||
(:when (featurep! :tools gist)
|
||||
:after gist
|
||||
|
@ -484,7 +468,22 @@
|
|||
:n "q" #'kill-this-buffer
|
||||
:n "s" #'gist-star
|
||||
:n "S" #'gist-unstar
|
||||
:n "y" #'gist-print-current-url))
|
||||
:n "y" #'gist-print-current-url)
|
||||
|
||||
(:when (featurep! :tools lookup)
|
||||
:nv "K" #'+lookup/documentation
|
||||
:nv "gd" #'+lookup/definition
|
||||
:nv "gD" #'+lookup/references
|
||||
:nv "gf" #'+lookup/file)
|
||||
|
||||
(:when (featurep! :tools magit)
|
||||
(:after evil-magit
|
||||
;; fix conflicts with private bindings
|
||||
:map (magit-status-mode-map magit-revision-mode-map)
|
||||
"C-j" nil
|
||||
"C-k" nil)
|
||||
(:map transient-map
|
||||
"q" #'transient-quit-one)))
|
||||
|
||||
;;; :lang
|
||||
(map! (:when (featurep! :lang markdown)
|
||||
|
@ -512,7 +511,7 @@
|
|||
:desc "Find file" "." #'find-file
|
||||
|
||||
:desc "Switch buffer" "," #'switch-to-buffer
|
||||
(:when (featurep! :feature workspaces)
|
||||
(:when (featurep! :ui workspaces)
|
||||
:desc "Switch workspace buffer" "," #'persp-switch-to-buffer
|
||||
:desc "Switch buffer" "<" #'switch-to-buffer)
|
||||
|
||||
|
@ -536,7 +535,7 @@
|
|||
:desc "Look up online" "o" #'+lookup/online-select
|
||||
:desc "Search project" "p" #'+default/search-project)
|
||||
|
||||
(:when (featurep! :feature workspaces)
|
||||
(:when (featurep! :ui workspaces)
|
||||
(:prefix ("TAB" . "workspace")
|
||||
:desc "Display tab bar" "TAB" #'+workspace/display
|
||||
:desc "Switch workspace" "." #'+workspace/switch-to
|
||||
|
@ -564,10 +563,10 @@
|
|||
:desc "Toggle narrowing" "-" #'doom/clone-and-narrow-buffer
|
||||
:desc "Previous buffer" "[" #'previous-buffer
|
||||
:desc "Next buffer" "]" #'next-buffer
|
||||
(:when (featurep! :feature workspaces)
|
||||
(:when (featurep! :ui workspaces)
|
||||
:desc "Switch workspace buffer" "b" #'persp-switch-to-buffer
|
||||
:desc "Switch buffer" "B" #'switch-to-buffer)
|
||||
(:unless (featurep! :feature workspaces)
|
||||
(:unless (featurep! :ui workspaces)
|
||||
:desc "Switch buffer" "b" #'switch-to-buffer)
|
||||
:desc "Kill buffer" "k" #'kill-this-buffer
|
||||
:desc "Next buffer" "n" #'next-buffer
|
||||
|
@ -763,7 +762,7 @@
|
|||
:desc "Browse remote files" "." #'ssh-deploy-browse-remote-handler
|
||||
:desc "Detect remote changes" ">" #'ssh-deploy-remote-changes-handler))
|
||||
|
||||
(:when (featurep! :feature snippets)
|
||||
(:when (featurep! :editor snippets)
|
||||
(:prefix ("s" . "snippets")
|
||||
:desc "New snippet" "n" #'yas-new-snippet
|
||||
:desc "Insert snippet" "i" #'yas-insert-snippet
|
||||
|
@ -835,7 +834,7 @@ To change these keys see `+default-repeat-keys'."
|
|||
;;
|
||||
;;; Universal evil integration
|
||||
|
||||
(when (featurep! :feature evil +everywhere)
|
||||
(when (featurep! :editor evil +everywhere)
|
||||
;; Have C-u behave similarly to `doom/backward-to-bol-or-indent'.
|
||||
;; NOTE SPC u replaces C-u as the universal argument.
|
||||
(map! :gi "C-u" #'doom/backward-kill-to-bol-and-indent
|
||||
|
|
|
@ -43,7 +43,7 @@ Don't want to use provided one? Then add this to your private module,
|
|||
#+END_SRC
|
||||
|
||||
** I'm not an evil user...
|
||||
That's fine. All evil configuration is ignored if =:feature evil= is disabled.
|
||||
That's fine. All evil configuration is ignored if =:editor evil= is disabled.
|
||||
|
||||
* Appendix
|
||||
** Commands
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; config/default/packages.el
|
||||
|
||||
(unless (featurep! :feature evil)
|
||||
(unless (featurep! :editor evil)
|
||||
(package! winum)
|
||||
(package! expand-region))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/evil/+commands.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/+commands.el -*- lexical-binding: t; -*-
|
||||
|
||||
(evil-define-operator +evil:open-scratch-buffer (bang)
|
||||
(interactive "<!>")
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/evil/+everywhere.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/+everywhere.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; We load evil-collection ourselves for these reasons:
|
||||
;;
|
|
@ -137,7 +137,7 @@ And these are text objects added by this module:
|
|||
** Removing evil-mode
|
||||
You must do two things to remove Evil:
|
||||
|
||||
1. Remove =:feature evil= from =~/.doom.d/init.el=,
|
||||
1. Remove =:editor evil= from =~/.doom.d/init.el=,
|
||||
2. Run ~doom refresh~ to clean up lingering dependencies and refresh yuor
|
||||
autoloads files.
|
||||
3. [OPTIONAL] You may want to assign new values to ~doom-leader-alt-key~ and
|
||||
|
@ -149,7 +149,7 @@ non-evil sessions.
|
|||
#+end_quote
|
||||
|
||||
Evil-specific configuration and keybindings (defined with ~map!~) will be
|
||||
ignored without =:feature evil= present (and omitted when byte-compiling).
|
||||
ignored without =:editor evil= present (and omitted when byte-compiling).
|
||||
|
||||
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
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/evil/autoload/advice.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/autoload/advice.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defun +evil--insert-newline (&optional above _noextranewline)
|
||||
(let ((pos (save-excursion (beginning-of-line-text) (point)))
|
||||
|
@ -148,7 +148,7 @@ more information on modifiers."
|
|||
path file-name t t 1))))
|
||||
(replace-regexp-in-string regexp "\\1" file-name t)))
|
||||
|
||||
;;;###autoload (autoload '+evil*window-split "feature/evil/autoload/advice" nil t)
|
||||
;;;###autoload (autoload '+evil*window-split "editor/evil/autoload/advice" nil t)
|
||||
(evil-define-command +evil*window-split (&optional count file)
|
||||
"Same as `evil-window-split', but focuses (and recenters) the new split."
|
||||
:repeat nil
|
||||
|
@ -164,7 +164,7 @@ more information on modifiers."
|
|||
(balance-windows (window-parent)))
|
||||
(if file (evil-edit file)))
|
||||
|
||||
;;;###autoload (autoload '+evil*window-vsplit "feature/evil/autoload/advice" nil t)
|
||||
;;;###autoload (autoload '+evil*window-vsplit "editor/evil/autoload/advice" nil t)
|
||||
(evil-define-command +evil*window-vsplit (&optional count file)
|
||||
"Same as `evil-window-vsplit', but focuses (and recenters) the new split."
|
||||
:repeat nil
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/evil/autoload/embrace.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/autoload/embrace.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defun +evil--embrace-get-pair (char)
|
|
@ -1,5 +1,5 @@
|
|||
;; feature/evil/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
;;;###if (featurep! :feature evil)
|
||||
;; editor/evil/autoload/evil.el -*- lexical-binding: t; -*-
|
||||
;;;###if (featurep! :editor evil)
|
||||
|
||||
;;;###autodef
|
||||
(defun set-evil-initial-state! (modes state)
|
||||
|
@ -113,7 +113,7 @@ integration."
|
|||
;;
|
||||
;;; Evil commands/operators
|
||||
|
||||
;;;###autoload (autoload '+evil:apply-macro "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil:apply-macro "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil:apply-macro (beg end)
|
||||
"Apply macro to each line."
|
||||
:move-point nil
|
||||
|
@ -139,14 +139,14 @@ integration."
|
|||
(apply-macro-to-region-lines beg end macro)
|
||||
(message "Applied macro in %c register %d times...DONE" register lines)))))
|
||||
|
||||
;;;###autoload (autoload '+evil:retab "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil:retab "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil:retab (&optional beg end)
|
||||
"Wrapper around `doom/retab'."
|
||||
:motion nil :move-point nil :type line
|
||||
(interactive "<r>")
|
||||
(doom/retab beg end))
|
||||
|
||||
;;;###autoload (autoload '+evil:narrow-buffer "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil:narrow-buffer "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil:narrow-buffer (beg end &optional bang)
|
||||
"Wrapper around `doom/clone-and-narrow-buffer'."
|
||||
:move-point nil
|
||||
|
@ -219,7 +219,7 @@ integration."
|
|||
(let ((result (car-safe (evil-delimited-arguments arg 2))))
|
||||
(+evil--ex-buffer-match result hl-name nil (point-min) (point-max))))))
|
||||
|
||||
;;;###autoload (autoload '+evil:align "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil:align "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil:align (beg end pattern &optional bang)
|
||||
"Ex interface to `align-regexp'. PATTERN is a vim-style regexp. If BANG,
|
||||
repeat the alignment for all matches (otherwise just the first match on each
|
||||
|
@ -230,7 +230,7 @@ line)."
|
|||
(concat "\\(\\s-*\\)" (evil-transform-vim-style-regexp pattern))
|
||||
1 1 bang))
|
||||
|
||||
;;;###autoload (autoload '+evil:align-right "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil:align-right "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil:align-right (beg end pattern &optional bang)
|
||||
"Like `+evil:align', except alignments are right-justified. PATTERN is a
|
||||
vim-style regexp. If BANG, repeat the alignment for all matches (otherwise just
|
||||
|
@ -245,7 +245,7 @@ the first match on each line)."
|
|||
;;
|
||||
;;; wgrep
|
||||
|
||||
;;;###autoload (autoload '+evil-delete "feature/evil/autoload/evil" nil t)
|
||||
;;;###autoload (autoload '+evil-delete "editor/evil/autoload/evil" nil t)
|
||||
(evil-define-operator +evil-delete (beg end type register yank-handler)
|
||||
"A wrapper around `evil-delete' for `wgrep' buffers that will invoke
|
||||
`wgrep-mark-deletion' on lines you try to delete."
|
|
@ -1,6 +1,6 @@
|
|||
;;; feature/evil/autoload/files.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/autoload/files.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload (autoload '+evil:delete-this-file "feature/evil/autoload/files" nil t)
|
||||
;;;###autoload (autoload '+evil:delete-this-file "editor/evil/autoload/files" nil t)
|
||||
(evil-define-command +evil:delete-this-file (&optional filename force-p)
|
||||
"Delete FILENAME (defaults to the file associated with current buffer) and
|
||||
kills the buffer. If FORCE-P, force the deletion (don't ask for confirmation)."
|
||||
|
@ -9,7 +9,7 @@ kills the buffer. If FORCE-P, force the deletion (don't ask for confirmation)."
|
|||
(doom/delete-this-file (or filename (file-truename buffer-file-name))
|
||||
force-p))
|
||||
|
||||
;;;###autoload (autoload '+evil:move-this-file "feature/evil/autoload/files" nil t)
|
||||
;;;###autoload (autoload '+evil:move-this-file "editor/evil/autoload/files" nil t)
|
||||
(evil-define-command +evil:move-this-file (new-path &optional force-p)
|
||||
"Move current buffer's file to NEW-PATH. Replaces %, # and other vim-esque
|
||||
filename modifiers (see `+evil*ex-replace-special-filenames'). If FORCE-P,
|
||||
|
@ -20,7 +20,7 @@ overwrite the destination file if it exists, without confirmation."
|
|||
(user-error "No new path was specified"))
|
||||
(doom/move-this-file new-path force-p))
|
||||
|
||||
;;;###autoload (autoload '+evil:copy-this-file "feature/evil/autoload/files" nil nil)
|
||||
;;;###autoload (autoload '+evil:copy-this-file "editor/evil/autoload/files" nil nil)
|
||||
(evil-define-command +evil:copy-this-file (new-path &optional force-p)
|
||||
"Copy current buffer's file to NEW-PATH. Replaces %, # and other vim-esque
|
||||
filename modifiers (see `+evil*ex-replace-special-filenames'). If FORCE-P,
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/evil/config.el -*- lexical-binding: t; -*-
|
||||
;;; editor/evil/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; I'm a vimmer at heart. Its modal philosophy suits me better, and this module
|
||||
;; strives to make Emacs a much better vim than vim was.
|
|
@ -1,5 +1,5 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; feature/evil/packages.el
|
||||
;;; editor/evil/packages.el
|
||||
|
||||
(package! evil)
|
||||
(package! evil-args)
|
|
@ -1,10 +1,10 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; feature/evil/test/test-evil.el
|
||||
;;; editor/evil/test/test-evil.el
|
||||
|
||||
(describe "feature/evil"
|
||||
:var (resv project-root)
|
||||
(before-all
|
||||
(require! :feature evil)
|
||||
(require! :editor evil)
|
||||
(require 'evil)
|
||||
(load! "../autoload/evil"))
|
||||
(after-all
|
|
@ -1,4 +1,4 @@
|
|||
#+TITLE: feature/file-templates
|
||||
#+TITLE: editor/file-templates
|
||||
#+DATE: February 11, 2017
|
||||
#+SINCE: v2.0
|
||||
#+STARTUP: inlineimages
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/file-templates/autoload.el -*- lexical-binding: t; -*-
|
||||
;;; editor/file-templates/autoload.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defun +file-templates--set (pred plist)
|
||||
(if (null (car-safe plist))
|
|
@ -1,4 +1,4 @@
|
|||
;;; feature/file-templates/config.el -*- lexical-binding: t; -*-
|
||||
;;; editor/file-templates/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +file-templates-dir
|
||||
(expand-file-name "templates/" (file-name-directory load-file-name))
|
||||
|
@ -122,7 +122,7 @@ must be non-read-only, empty, and there must be a rule in
|
|||
;; Bootstrap
|
||||
|
||||
(after! yasnippet
|
||||
(if (featurep! :feature snippets)
|
||||
(if (featurep! :editor snippets)
|
||||
(add-to-list 'yas-snippet-dirs '+file-templates-dir 'append #'eq)
|
||||
(setq yas-prompt-functions (delq #'yas-dropdown-prompt yas-prompt-functions)
|
||||
yas-snippet-dirs '(+file-templates-dir))
|
|
@ -1,5 +1,5 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; feature/file-templates/packages.el
|
||||
;;; editor/file-templates/packages.el
|
||||
|
||||
(package! yasnippet)
|
||||
|
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