Minimize dependence on map!
This is in preparation for general.el integration coming in 2.1.1. It is very likely that map! will change (and even more, be split into several macros). Not much, but change none-the-less. Specifically, the state keywords (e.g. :nvi, :n, :i) will be removed in favor of a :state property that takes a list, e.g. (normal visual insert). In any case, both map! and general are also relatively expensive compared to define-key and evil-define-key* (and the new define-key! macro), so use that when we can. This also means changes to either API won't affect Doom's modules in the long term.
This commit is contained in:
parent
83590d65ba
commit
1e81a35461
20 changed files with 276 additions and 239 deletions
|
@ -153,17 +153,26 @@ For example, :nvi will map to (list 'normal 'visual 'insert). See
|
||||||
(defvar doom--defer nil)
|
(defvar doom--defer nil)
|
||||||
(defvar doom--local nil)
|
(defvar doom--local nil)
|
||||||
|
|
||||||
(defmacro define-key! (keymap key def &rest rest)
|
(defmacro define-key! (keymaps key def &rest rest)
|
||||||
"TODO"
|
"TODO"
|
||||||
(declare (indent defun))
|
(declare (indent defun))
|
||||||
`(progn
|
(if (and (listp keymaps)
|
||||||
(define-key ,keymap ,key ,def)
|
(not (eq (car-safe keymaps) 'quote)))
|
||||||
,@(let (forms)
|
`(dolist (map (list ,@keymaps))
|
||||||
(while rest
|
,(macroexpand `(define-key! map ,key ,def ,@rest)))
|
||||||
(let ((key (pop rest))
|
(when (eq (car-safe keymaps) 'quote)
|
||||||
(def (pop rest)))
|
(pcase (cadr keymaps)
|
||||||
(push `(define-key ,keymap ,key ,def) forms)))
|
(`global (setq keymaps '(current-global-map)))
|
||||||
(nreverse forms))))
|
(`local (setq keymaps '(current-local-map)))
|
||||||
|
(x (error "%s is not a valid keymap" x))))
|
||||||
|
`(let ((map ,keymaps))
|
||||||
|
(define-key map ,key ,def)
|
||||||
|
,@(let (forms)
|
||||||
|
(while rest
|
||||||
|
(let ((key (pop rest))
|
||||||
|
(def (pop rest)))
|
||||||
|
(push `(define-key map ,key ,def) forms)))
|
||||||
|
(nreverse forms)))))
|
||||||
|
|
||||||
(defmacro map! (&rest rest)
|
(defmacro map! (&rest rest)
|
||||||
"A nightmare of a key-binding macro that will use `evil-define-key*',
|
"A nightmare of a key-binding macro that will use `evil-define-key*',
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
cfw:fchar-top-left-corner ?┏
|
cfw:fchar-top-left-corner ?┏
|
||||||
cfw:fchar-top-right-corner ?┓)
|
cfw:fchar-top-right-corner ?┓)
|
||||||
|
|
||||||
(map! :map cfw:calendar-mode-map "q" #'+calendar/quit)
|
(define-key cfw:calendar-mode-map "q" #'+calendar/quit)
|
||||||
|
|
||||||
(when (featurep 'solaire-mode)
|
(when (featurep 'solaire-mode)
|
||||||
(add-hook 'cfw:calendar-mode-hook #'solaire-mode))
|
(add-hook 'cfw:calendar-mode-hook #'solaire-mode))
|
||||||
|
|
|
@ -103,7 +103,7 @@ playback.")
|
||||||
(advice-add 'circe--irc-conn-disconnected :after #'+irc*circe-disconnect-hook)
|
(advice-add 'circe--irc-conn-disconnected :after #'+irc*circe-disconnect-hook)
|
||||||
|
|
||||||
;; Let `+irc/quit' and `circe' handle buffer cleanup
|
;; Let `+irc/quit' and `circe' handle buffer cleanup
|
||||||
(map! :map circe-mode-map [remap kill-buffer] #'bury-buffer)
|
(define-key circe-mode-map [remap kill-buffer] #'bury-buffer)
|
||||||
|
|
||||||
(defun +irc*circe-truncate-nicks ()
|
(defun +irc*circe-truncate-nicks ()
|
||||||
"Truncate long nicknames in chat output non-destructively."
|
"Truncate long nicknames in chat output non-destructively."
|
||||||
|
@ -163,7 +163,7 @@ playback.")
|
||||||
(def-package! lui
|
(def-package! lui
|
||||||
:commands lui-mode
|
:commands lui-mode
|
||||||
:config
|
:config
|
||||||
(map! :map lui-mode-map "C-u" #'lui-kill-to-beginning-of-line)
|
(define-key lui-mode-map "\C-u" #'lui-kill-to-beginning-of-line)
|
||||||
(when (featurep! :feature spellcheck)
|
(when (featurep! :feature spellcheck)
|
||||||
(setq lui-flyspell-p t
|
(setq lui-flyspell-p t
|
||||||
lui-fill-type nil))
|
lui-fill-type nil))
|
||||||
|
|
|
@ -39,23 +39,24 @@ paths.")
|
||||||
;; Enhance readability of a post
|
;; Enhance readability of a post
|
||||||
(add-hook 'elfeed-show-mode-hook #'+rss|elfeed-wrap)
|
(add-hook 'elfeed-show-mode-hook #'+rss|elfeed-wrap)
|
||||||
|
|
||||||
(map! (:map (elfeed-search-mode-map elfeed-show-mode-map)
|
(define-key! (elfeed-search-mode-map elfeed-show-mode-map)
|
||||||
[remap kill-this-buffer] #'+rss/quit
|
[remap kill-this-buffer] #'+rss/quit
|
||||||
[remap kill-buffer] #'+rss/quit)
|
[remap kill-buffer] #'+rss/quit)
|
||||||
|
(define-key! elfeed-show-mode-map
|
||||||
(:map elfeed-search-mode-map
|
[remap next-buffer] #'+rss/next
|
||||||
:n "q" #'+rss/quit
|
[remap previous-buffer] #'+rss/previous)
|
||||||
:n "r" #'elfeed-update
|
(when (featurep 'evil)
|
||||||
:n "s" #'elfeed-search-live-filter
|
(evil-define-key* 'normal elfeed-search-mode-map
|
||||||
:n "RET" #'elfeed-search-show-entry
|
"q" #'+rss/quit
|
||||||
:n "M-RET" #'elfeed-search-browse-url)
|
"r" #'elfeed-update
|
||||||
|
"s" #'elfeed-search-live-filter
|
||||||
(:map elfeed-show-mode-map
|
(kbd "RET") #'elfeed-search-show-entry
|
||||||
:n "q" #'elfeed-kill-buffer
|
(kbd "M-RET") #'elfeed-search-browse-url)
|
||||||
:m "j" #'evil-next-visual-line
|
(evil-define-key* 'normal elfeed-show-mode-map
|
||||||
:m "k" #'evil-previous-visual-line
|
"q" #'elfeed-kill-buffer)
|
||||||
[remap next-buffer] #'+rss/next
|
(evil-define-key* 'motion elfeed-show-mode-map
|
||||||
[remap previous-buffer] #'+rss/previous)))
|
"j" #'evil-next-visual-line
|
||||||
|
"k" #'evil-previous-visual-line)))
|
||||||
|
|
||||||
|
|
||||||
(def-package! elfeed-org
|
(def-package! elfeed-org
|
||||||
|
|
|
@ -52,28 +52,29 @@
|
||||||
mode-line-format nil))
|
mode-line-format nil))
|
||||||
(add-hook 'twittering-mode-hook #'+twitter|switch-mode-and-header-line)
|
(add-hook 'twittering-mode-hook #'+twitter|switch-mode-and-header-line)
|
||||||
|
|
||||||
(map! :map twittering-mode-map
|
(define-key! twittering-mode-map
|
||||||
"q" #'+twitter/quit
|
"q" #'+twitter/quit
|
||||||
"Q" #'+twitter/quit-all
|
"Q" #'+twitter/quit-all
|
||||||
[remap twittering-kill-buffer] #'+twitter/quit
|
[remap twittering-kill-buffer] #'+twitter/quit
|
||||||
[remap delete-window] #'+twitter/quit
|
[remap delete-window] #'+twitter/quit
|
||||||
[remap +workspace/close-window-or-workspace] #'+twitter/quit
|
[remap +workspace/close-window-or-workspace] #'+twitter/quit)
|
||||||
(:when (featurep! :feature evil)
|
(when (featurep! :feature evil +everywhere)
|
||||||
[remap evil-window-delete] #'+twitter/quit
|
(define-key! twittering-mode-map
|
||||||
"f" #'twittering-favorite
|
[remap evil-window-delete] #'+twitter/quit
|
||||||
"F" #'twittering-unfavorite
|
"f" #'twittering-favorite
|
||||||
"C-f" #'twittering-follow
|
"F" #'twittering-unfavorite
|
||||||
"C-F" #'twittering-unfollow
|
"\C-f" #'twittering-follow
|
||||||
"d" #'twittering-delete-status
|
"\C-F" #'twittering-unfollow
|
||||||
"r" #'twittering-retweet
|
"d" #'twittering-delete-status
|
||||||
"R" #'twittering-toggle-or-retrieve-replied-statuses
|
"r" #'twittering-retweet
|
||||||
"o" #'twittering-update-status-interactive
|
"R" #'twittering-toggle-or-retrieve-replied-statuses
|
||||||
"O" #'+twitter/ace-link
|
"o" #'twittering-update-status-interactive
|
||||||
"/" #'twittering-search
|
"O" #'+twitter/ace-link
|
||||||
"J" #'twittering-goto-next-status
|
"/" #'twittering-search
|
||||||
"K" #'twittering-goto-previous-status
|
"J" #'twittering-goto-next-status
|
||||||
"g" nil
|
"K" #'twittering-goto-previous-status
|
||||||
"gg" #'twittering-goto-first-status
|
"g" nil
|
||||||
"G" #'twittering-goto-last-status
|
"gg" #'twittering-goto-first-status
|
||||||
"gj" #'twittering-goto-next-status-of-user
|
"G" #'twittering-goto-last-status
|
||||||
"gk" #'twittering-goto-previous-status-of-user)))
|
"gj" #'twittering-goto-next-status-of-user
|
||||||
|
"gk" #'twittering-goto-previous-status-of-user)))
|
||||||
|
|
|
@ -14,20 +14,19 @@
|
||||||
:defer 1
|
:defer 1
|
||||||
:after-call pre-command-hook
|
:after-call pre-command-hook
|
||||||
:init
|
:init
|
||||||
(map! :map global-map
|
(define-key! 'global
|
||||||
[remap apropos] #'helm-apropos
|
[remap apropos] #'helm-apropos
|
||||||
[remap bookmark-jump] #'helm-bookmarks
|
[remap bookmark-jump] #'helm-bookmarks
|
||||||
[remap execute-extended-command] #'helm-M-x
|
[remap execute-extended-command] #'helm-M-x
|
||||||
[remap find-file] #'helm-find-files
|
[remap find-file] #'helm-find-files
|
||||||
[remap imenu-anywhere] #'helm-imenu-anywhere
|
[remap imenu-anywhere] #'helm-imenu-anywhere
|
||||||
[remap imenu] #'helm-semantic-or-imenu
|
[remap imenu] #'helm-semantic-or-imenu
|
||||||
[remap swiper] #'helm-swoop
|
[remap noop-show-kill-ring] #'helm-show-kill-ring
|
||||||
[remap noop-show-kill-ring] #'helm-show-kill-ring
|
[remap projectile-find-file] #'helm-projectile-find-file
|
||||||
[remap projectile-find-file] #'helm-projectile-find-file
|
[remap projectile-recentf] #'helm-projectile-recentf
|
||||||
[remap projectile-recentf] #'helm-projectile-recentf
|
[remap projectile-switch-project] #'helm-projectile-switch-project
|
||||||
[remap projectile-switch-project] #'helm-projectile-switch-project
|
[remap projectile-switch-to-buffer] #'helm-projectile-switch-to-buffer
|
||||||
[remap projectile-switch-to-buffer] #'helm-projectile-switch-to-buffer
|
[remap recentf-open-files] #'helm-recentf)
|
||||||
[remap recentf-open-files] #'helm-recentf)
|
|
||||||
:config
|
:config
|
||||||
(helm-mode +1)
|
(helm-mode +1)
|
||||||
;; helm is too heavy for find-file-at-point
|
;; helm is too heavy for find-file-at-point
|
||||||
|
|
|
@ -50,9 +50,10 @@ immediately runs it on the current candidate (ending the ivy session)."
|
||||||
(after! magit (setq magit-completing-read-function #'ivy-completing-read))
|
(after! magit (setq magit-completing-read-function #'ivy-completing-read))
|
||||||
(after! yasnippet (add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq))
|
(after! yasnippet (add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq))
|
||||||
|
|
||||||
(map! [remap switch-to-buffer] #'ivy-switch-buffer
|
(define-key! 'global
|
||||||
[remap persp-switch-to-buffer] #'+ivy/switch-workspace-buffer
|
[remap switch-to-buffer] #'ivy-switch-buffer
|
||||||
[remap imenu-anywhere] #'ivy-imenu-anywhere)
|
[remap persp-switch-to-buffer] #'+ivy/switch-workspace-buffer
|
||||||
|
[remap imenu-anywhere] #'ivy-imenu-anywhere)
|
||||||
|
|
||||||
(ivy-mode +1))
|
(ivy-mode +1))
|
||||||
|
|
||||||
|
@ -69,19 +70,21 @@ immediately runs it on the current candidate (ending the ivy session)."
|
||||||
(def-package! counsel
|
(def-package! counsel
|
||||||
:commands counsel-describe-face
|
:commands counsel-describe-face
|
||||||
:init
|
:init
|
||||||
(map! [remap apropos] #'counsel-apropos
|
(define-key! 'global
|
||||||
[remap bookmark-jump] #'counsel-bookmark
|
[remap apropos] #'counsel-apropos
|
||||||
[remap describe-face] #'counsel-describe-face
|
[remap bookmark-jump] #'counsel-bookmark
|
||||||
[remap describe-function] #'counsel-describe-function
|
[remap describe-face] #'counsel-describe-face
|
||||||
[remap describe-variable] #'counsel-describe-variable
|
[remap describe-function] #'counsel-describe-function
|
||||||
[remap execute-extended-command] #'counsel-M-x
|
[remap describe-variable] #'counsel-describe-variable
|
||||||
[remap find-file] #'counsel-find-file
|
[remap execute-extended-command] #'counsel-M-x
|
||||||
[remap find-library] #'counsel-find-library
|
[remap find-file] #'counsel-find-file
|
||||||
[remap info-lookup-symbol] #'counsel-info-lookup-symbol
|
[remap find-library] #'counsel-find-library
|
||||||
[remap imenu] #'counsel-imenu
|
[remap info-lookup-symbol] #'counsel-info-lookup-symbol
|
||||||
[remap recentf-open-files] #'counsel-recentf
|
[remap imenu] #'counsel-imenu
|
||||||
[remap org-capture] #'counsel-org-capture
|
[remap recentf-open-files] #'counsel-recentf
|
||||||
[remap swiper] #'counsel-grep-or-swiper)
|
[remap org-capture] #'counsel-org-capture
|
||||||
|
[remap swiper] #'counsel-grep-or-swiper)
|
||||||
|
|
||||||
:config
|
:config
|
||||||
(set! :popup "^\\*ivy-occur" '((size . 0.35)) '((transient . 0) (quit)))
|
(set! :popup "^\\*ivy-occur" '((size . 0.35)) '((transient . 0) (quit)))
|
||||||
|
|
||||||
|
@ -106,12 +109,13 @@ immediately runs it on the current candidate (ending the ivy session)."
|
||||||
:commands (counsel-projectile-find-file counsel-projectile-find-dir counsel-projectile-switch-to-buffer
|
:commands (counsel-projectile-find-file counsel-projectile-find-dir counsel-projectile-switch-to-buffer
|
||||||
counsel-projectile-grep counsel-projectile-ag counsel-projectile-switch-project)
|
counsel-projectile-grep counsel-projectile-ag counsel-projectile-switch-project)
|
||||||
:init
|
:init
|
||||||
(map! [remap projectile-find-file] #'counsel-projectile-find-file
|
(define-key! 'global
|
||||||
[remap projectile-find-dir] #'counsel-projectile-find-dir
|
[remap projectile-find-file] #'counsel-projectile-find-file
|
||||||
[remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer
|
[remap projectile-find-dir] #'counsel-projectile-find-dir
|
||||||
[remap projectile-grep] #'counsel-projectile-grep
|
[remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer
|
||||||
[remap projectile-ag] #'counsel-projectile-ag
|
[remap projectile-grep] #'counsel-projectile-grep
|
||||||
[remap projectile-switch-project] #'counsel-projectile-switch-project)
|
[remap projectile-ag] #'counsel-projectile-ag
|
||||||
|
[remap projectile-switch-project] #'counsel-projectile-switch-project)
|
||||||
:config
|
:config
|
||||||
;; Highlight entries that have been visited
|
;; Highlight entries that have been visited
|
||||||
(ivy-set-display-transformer #'counsel-projectile-find-file #'+ivy-projectile-find-file-transformer))
|
(ivy-set-display-transformer #'counsel-projectile-find-file #'+ivy-projectile-find-file-transformer))
|
||||||
|
@ -126,10 +130,10 @@ immediately runs it on the current candidate (ending the ivy session)."
|
||||||
(def-package! ivy-hydra
|
(def-package! ivy-hydra
|
||||||
:commands (+ivy@coo/body ivy-dispatching-done-hydra)
|
:commands (+ivy@coo/body ivy-dispatching-done-hydra)
|
||||||
:init
|
:init
|
||||||
(map! :after ivy
|
(after! ivy
|
||||||
:map ivy-minibuffer-map
|
(define-key! ivy-minibuffer-map
|
||||||
"C-o" #'+ivy@coo/body
|
"\C-o" #'+ivy@coo/body
|
||||||
"M-o" #'ivy-dispatching-done-hydra)
|
(kbd "M-o") #'ivy-dispatching-done-hydra))
|
||||||
:config
|
:config
|
||||||
(defhydra +ivy@coo (:hint nil :color pink)
|
(defhydra +ivy@coo (:hint nil :color pink)
|
||||||
"
|
"
|
||||||
|
|
|
@ -42,7 +42,7 @@ buffers."
|
||||||
integration."
|
integration."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((prefix (this-command-keys)))
|
(let ((prefix (this-command-keys)))
|
||||||
(map! :m prefix nil)
|
(evil-define-key* 'motion 'global prefix nil)
|
||||||
(evilem-default-keybindings prefix)
|
(evilem-default-keybindings prefix)
|
||||||
(set-transient-map evilem-map)
|
(set-transient-map evilem-map)
|
||||||
(which-key-reload-key-sequence prefix)))
|
(which-key-reload-key-sequence prefix)))
|
||||||
|
|
|
@ -55,20 +55,23 @@
|
||||||
(defun +eshell|init-keymap ()
|
(defun +eshell|init-keymap ()
|
||||||
"Setup eshell keybindings. This must be done in a hook because eshell-mode
|
"Setup eshell keybindings. This must be done in a hook because eshell-mode
|
||||||
redefines its keys every time `eshell-mode' is enabled."
|
redefines its keys every time `eshell-mode' is enabled."
|
||||||
(map! :map eshell-mode-map
|
(when (featurep 'evil)
|
||||||
:n [return] #'+eshell/goto-end-of-prompt
|
(evil-define-key* 'normal eshell-mode-map
|
||||||
:n "c" #'+eshell/evil-change
|
[return] #'+eshell/goto-end-of-prompt
|
||||||
:n "C" #'+eshell/evil-change-line
|
"c" #'+eshell/evil-change
|
||||||
:n "d" #'+eshell/evil-delete
|
"C" #'+eshell/evil-change-line
|
||||||
:n "D" #'+eshell/evil-delete-line
|
"d" #'+eshell/evil-delete
|
||||||
:i "C-d" #'+eshell/quit-or-delete-char
|
"D" #'+eshell/evil-delete-line)
|
||||||
:i "C-p" #'eshell-previous-input
|
(evil-define-key* 'insert eshell-mode-map
|
||||||
:i "C-n" #'eshell-next-input
|
"\C-d" #'+eshell/quit-or-delete-char
|
||||||
[remap doom/backward-to-bol-or-indent] #'eshell-bol
|
"\C-p" #'eshell-previous-input
|
||||||
[remap doom/backward-kill-to-bol-and-indent] #'eshell-kill-input
|
"\C-n" #'eshell-next-input))
|
||||||
[remap split-window-below] #'+eshell/split-below
|
(define-key! eshell-mode-map
|
||||||
[remap split-window-right] #'+eshell/split-right
|
[remap split-window-below] #'+eshell/split-below
|
||||||
[remap evil-window-split] #'+eshell/split-below
|
[remap split-window-right] #'+eshell/split-right
|
||||||
[remap evil-window-vsplit] #'+eshell/split-right))
|
[remap doom/backward-to-bol-or-indent] #'eshell-bol
|
||||||
|
[remap doom/backward-kill-to-bol-and-indent] #'eshell-kill-input
|
||||||
|
[remap evil-window-split] #'+eshell/split-below
|
||||||
|
[remap evil-window-vsplit] #'+eshell/split-right))
|
||||||
(add-hook 'eshell-first-time-mode-hook #'+eshell|init-keymap))
|
(add-hook 'eshell-first-time-mode-hook #'+eshell|init-keymap))
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,8 @@ variable for an explanation of the defaults (in comments). See
|
||||||
(add-hook 'doom-post-init-hook #'evil-mode)
|
(add-hook 'doom-post-init-hook #'evil-mode)
|
||||||
(evil-select-search-module 'evil-search-module 'evil-search)
|
(evil-select-search-module 'evil-search-module 'evil-search)
|
||||||
|
|
||||||
|
(put 'evil-define-key* 'lisp-indent-function 'defun)
|
||||||
|
|
||||||
(set! :popup "^\\*evil-registers" '((size . 0.3)))
|
(set! :popup "^\\*evil-registers" '((size . 0.3)))
|
||||||
(set! :popup "^\\*Command Line" '((size . 8)))
|
(set! :popup "^\\*Command Line" '((size . 8)))
|
||||||
|
|
||||||
|
@ -77,18 +79,20 @@ variable for an explanation of the defaults (in comments). See
|
||||||
|
|
||||||
|
|
||||||
;; --- keybind fixes ----------------------
|
;; --- keybind fixes ----------------------
|
||||||
(map! (:after wgrep
|
(after! wgrep
|
||||||
;; A wrapper that invokes `wgrep-mark-deletion' across lines you use
|
;; A wrapper that invokes `wgrep-mark-deletion' across lines you use
|
||||||
;; `evil-delete' in wgrep buffers.
|
;; `evil-delete' in wgrep buffers.
|
||||||
:map wgrep-mode-map [remap evil-delete] #'+evil-delete)
|
(define-key! wgrep-mode-map
|
||||||
|
[remap evil-delete] #'+evil-delete))
|
||||||
|
|
||||||
;; replace native folding commands
|
;; replace native folding commands
|
||||||
[remap evil-toggle-fold] #'+evil:fold-toggle
|
(define-key! 'global
|
||||||
[remap evil-close-fold] #'+evil:fold-close
|
[remap evil-toggle-fold] #'+evil:fold-toggle
|
||||||
[remap evil-open-fold] #'+evil:fold-open
|
[remap evil-close-fold] #'+evil:fold-close
|
||||||
[remap evil-open-fold-rec] #'+evil:fold-open
|
[remap evil-open-fold] #'+evil:fold-open
|
||||||
[remap evil-close-folds] #'+evil:fold-close-all
|
[remap evil-open-fold-rec] #'+evil:fold-open
|
||||||
[remap evil-open-folds] #'+evil:fold-open-all)
|
[remap evil-close-folds] #'+evil:fold-close-all
|
||||||
|
[remap evil-open-folds] #'+evil:fold-open-all)
|
||||||
|
|
||||||
(defun +evil|disable-highlights ()
|
(defun +evil|disable-highlights ()
|
||||||
"Disable ex search buffer highlights."
|
"Disable ex search buffer highlights."
|
||||||
|
@ -234,7 +238,7 @@ variable for an explanation of the defaults (in comments). See
|
||||||
evil-escape-key-sequence "jk"
|
evil-escape-key-sequence "jk"
|
||||||
evil-escape-delay 0.25)
|
evil-escape-delay 0.25)
|
||||||
(add-hook 'pre-command-hook #'evil-escape-pre-command-hook)
|
(add-hook 'pre-command-hook #'evil-escape-pre-command-hook)
|
||||||
(map! :irvo "C-g" #'evil-escape)
|
(evil-define-key* '(insert replace visual operator) 'global "\C-g" #'evil-escape)
|
||||||
:config
|
:config
|
||||||
;; no `evil-escape' in minibuffer
|
;; no `evil-escape' in minibuffer
|
||||||
(add-hook 'evil-escape-inhibit-functions #'minibufferp))
|
(add-hook 'evil-escape-inhibit-functions #'minibufferp))
|
||||||
|
@ -259,8 +263,9 @@ variable for an explanation of the defaults (in comments). See
|
||||||
evilmi-outer-text-object evilmi-inner-text-object)
|
evilmi-outer-text-object evilmi-inner-text-object)
|
||||||
:config (global-evil-matchit-mode 1)
|
:config (global-evil-matchit-mode 1)
|
||||||
:init
|
:init
|
||||||
(map! [remap evil-jump-item] #'evilmi-jump-items
|
(define-key! 'global [remap evil-jump-item] #'evilmi-jump-items)
|
||||||
:textobj "%" #'evilmi-inner-text-object #'evilmi-outer-text-object)
|
(define-key evil-inner-text-objects-map "%" #'evilmi-inner-text-object)
|
||||||
|
(define-key evil-outer-text-objects-map "%" #'evilmi-outer-text-object)
|
||||||
:config
|
:config
|
||||||
;; Fixes #519 where d% wouldn't leave a dangling end-parenthesis
|
;; Fixes #519 where d% wouldn't leave a dangling end-parenthesis
|
||||||
(evil-set-command-properties 'evilmi-jump-items :type 'inclusive :jump t)
|
(evil-set-command-properties 'evilmi-jump-items :type 'inclusive :jump t)
|
||||||
|
@ -374,8 +379,9 @@ the new algorithm is confusing, like in python or ruby."
|
||||||
evil-visualstar/begin-search-forward
|
evil-visualstar/begin-search-forward
|
||||||
evil-visualstar/begin-search-backward)
|
evil-visualstar/begin-search-backward)
|
||||||
:init
|
:init
|
||||||
(map! :v "*" #'evil-visualstar/begin-search-forward
|
(evil-define-key* 'visual 'global
|
||||||
:v "#" #'evil-visualstar/begin-search-backward)
|
"*" #'evil-visualstar/begin-search-forward
|
||||||
|
"#" #'evil-visualstar/begin-search-backward)
|
||||||
:config
|
:config
|
||||||
(global-evil-visualstar-mode 1))
|
(global-evil-visualstar-mode 1))
|
||||||
|
|
||||||
|
@ -402,7 +408,7 @@ the new algorithm is confusing, like in python or ruby."
|
||||||
;; so that any plugins that depend on multiple-cursors (which I have no control
|
;; so that any plugins that depend on multiple-cursors (which I have no control
|
||||||
;; over) can still use it in relative safety.
|
;; over) can still use it in relative safety.
|
||||||
(after! multiple-cursors-core
|
(after! multiple-cursors-core
|
||||||
(map! :map mc/keymap :ne "<escape>" #'mc/keyboard-quit)
|
(evil-define-key* '(normal emacs) [escape] #'mc/keyboard-quit)
|
||||||
|
|
||||||
(defvar +evil--mc-compat-evil-prev-state nil)
|
(defvar +evil--mc-compat-evil-prev-state nil)
|
||||||
(defvar +evil--mc-compat-mark-was-active nil)
|
(defvar +evil--mc-compat-mark-was-active nil)
|
||||||
|
|
|
@ -110,7 +110,7 @@ compilation database is present in the project.")
|
||||||
;; Smartparens and cc-mode both try to autoclose angle-brackets intelligently.
|
;; Smartparens and cc-mode both try to autoclose angle-brackets intelligently.
|
||||||
;; The result isn't very intelligent (causes redundant characters), so just do
|
;; The result isn't very intelligent (causes redundant characters), so just do
|
||||||
;; it ourselves.
|
;; it ourselves.
|
||||||
(map! :map c++-mode-map "<" nil ">" nil)
|
(define-key! c++-mode-map "<" nil ">" nil)
|
||||||
|
|
||||||
;; ...and leave it to smartparens
|
;; ...and leave it to smartparens
|
||||||
(sp-with-modes '(c++-mode objc-mode)
|
(sp-with-modes '(c++-mode objc-mode)
|
||||||
|
@ -228,7 +228,7 @@ compilation database is present in the project.")
|
||||||
(add-hook! kill-emacs (ignore-errors (rtags-cancel-process)))
|
(add-hook! kill-emacs (ignore-errors (rtags-cancel-process)))
|
||||||
|
|
||||||
;; Use rtags-imenu instead of imenu/counsel-imenu
|
;; Use rtags-imenu instead of imenu/counsel-imenu
|
||||||
(map! :map (c-mode-map c++-mode-map) [remap imenu] #'rtags-imenu)
|
(define-key! (c-mode-map c++-mode-map) [remap imenu] #'rtags-imenu)
|
||||||
|
|
||||||
(when (featurep 'evil) (add-hook 'rtags-jump-hook #'evil-set-jump))
|
(when (featurep 'evil) (add-hook 'rtags-jump-hook #'evil-set-jump))
|
||||||
(add-hook 'rtags-after-find-file-hook #'recenter)
|
(add-hook 'rtags-after-find-file-hook #'recenter)
|
||||||
|
|
|
@ -41,44 +41,45 @@
|
||||||
(ess-toggle-underscore t)
|
(ess-toggle-underscore t)
|
||||||
(set! :repl 'ess-mode #'+ess/r-repl)
|
(set! :repl 'ess-mode #'+ess/r-repl)
|
||||||
(set! :lookup 'ess-mode :documentation #'ess-display-help-on-object)
|
(set! :lookup 'ess-mode :documentation #'ess-display-help-on-object)
|
||||||
(map! (:map ess-doc-map
|
(define-key! ess-doc-map
|
||||||
"h" #'ess-display-help-on-object
|
"h" #'ess-display-help-on-object
|
||||||
"p" #'ess-R-dv-pprint
|
"p" #'ess-R-dv-pprint
|
||||||
"t" #'ess-R-dv-ctable)
|
"t" #'ess-R-dv-ctable)
|
||||||
(:map ess-mode-map
|
(define-key! ess-doc-map
|
||||||
"<s-return>" #'ess-eval-line
|
[s-return] #'ess-eval-line
|
||||||
"<up>" #'comint-next-input
|
[up] #'comint-next-input
|
||||||
"<down>" #'comint-previous-input
|
[down] #'comint-previous-input)
|
||||||
(:localleader
|
(map! :map ess-mode-map
|
||||||
:nv "," #'ess-eval-region-or-function-or-paragraph-and-step
|
:localleader
|
||||||
:n "'" #'R
|
:nv "," #'ess-eval-region-or-function-or-paragraph-and-step
|
||||||
:n "<tab>" #'ess-switch-to-inferior-or-script-buffer
|
:n "'" #'R
|
||||||
:n "<backtab>" #'ess-switch-process
|
:n "<tab>" #'ess-switch-to-inferior-or-script-buffer
|
||||||
:n ;; REPL
|
:n "<backtab>" #'ess-switch-process
|
||||||
:n "B" #'ess-eval-buffer-and-go
|
:n ;; REPL
|
||||||
:n "b" #'ess-eval-buffer
|
:n "B" #'ess-eval-buffer-and-go
|
||||||
:nv "d" #'ess-eval-region-or-line-and-step
|
:n "b" #'ess-eval-buffer
|
||||||
:n "D" #'ess-eval-function-or-paragraph-and-step
|
:nv "d" #'ess-eval-region-or-line-and-step
|
||||||
:n "L" #'ess-eval-line-and-go
|
:n "D" #'ess-eval-function-or-paragraph-and-step
|
||||||
:n "l" #'ess-eval-line
|
:n "L" #'ess-eval-line-and-go
|
||||||
:nv "R" #'ess-eval-region-and-go
|
:n "l" #'ess-eval-line
|
||||||
:nv "r" #'ess-eval-region
|
:nv "R" #'ess-eval-region-and-go
|
||||||
:n "F" #'ess-eval-function-and-go
|
:nv "r" #'ess-eval-region
|
||||||
:n "f" #'ess-eval-function
|
:n "F" #'ess-eval-function-and-go
|
||||||
;; predefined keymaps
|
:n "f" #'ess-eval-function
|
||||||
:n "h" #'ess-doc-map
|
;; predefined keymaps
|
||||||
:n "x" #'ess-extra-map
|
:n "h" #'ess-doc-map
|
||||||
:n "p" #'ess-r-package-dev-map
|
:n "x" #'ess-extra-map
|
||||||
:n "v" #'ess-dev-map
|
:n "p" #'ess-r-package-dev-map
|
||||||
;; noweb
|
:n "v" #'ess-dev-map
|
||||||
:n "cC" #'ess-eval-chunk-and-go
|
;; noweb
|
||||||
:n "cc" #'ess-eval-chunk
|
:n "cC" #'ess-eval-chunk-and-go
|
||||||
:n "cd" #'ess-eval-chunk-and-step
|
:n "cc" #'ess-eval-chunk
|
||||||
:n "cm" #'ess-noweb-mark-chunk
|
:n "cd" #'ess-eval-chunk-and-step
|
||||||
:n "cp" #'ess-noweb-previous-chunk
|
:n "cm" #'ess-noweb-mark-chunk
|
||||||
:n "cn" #'ess-noweb-next-chunk))))
|
:n "cp" #'ess-noweb-previous-chunk
|
||||||
|
:n "cn" #'ess-noweb-next-chunk))
|
||||||
|
|
||||||
|
|
||||||
;; `ess-smart-equals-mode'
|
;; `ess-smart-equals-mode'
|
||||||
(add-hook! (ess-mode inferior-ess)
|
(add-hook! '(ess-mode-hook inferior-ess-hook)
|
||||||
#'ess-smart-equals-mode)
|
#'ess-smart-equals-mode)
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
LaTeX-fill-break-at-separators nil
|
LaTeX-fill-break-at-separators nil
|
||||||
LaTeX-item-indent 0) ; item indentation.
|
LaTeX-item-indent 0) ; item indentation.
|
||||||
|
|
||||||
(map! :map LaTeX-mode-map "C-j" nil)
|
(define-key LaTeX-mode-map "C-j" nil)
|
||||||
|
|
||||||
;; Do not prompt for Master files, this allows auto-insert to add templates
|
;; Do not prompt for Master files, this allows auto-insert to add templates
|
||||||
;; to .tex files
|
;; to .tex files
|
||||||
|
@ -120,10 +120,10 @@
|
||||||
:config
|
:config
|
||||||
(map-put TeX-view-program-list "preview-pane" '(latex-preview-pane-mode))
|
(map-put TeX-view-program-list "preview-pane" '(latex-preview-pane-mode))
|
||||||
(map-put TeX-view-program-selection 'output-pdf '("preview-pane"))
|
(map-put TeX-view-program-selection 'output-pdf '("preview-pane"))
|
||||||
(map! :map doc-view-mode-map
|
(define-key! doc-view-mode-map
|
||||||
"ESC" #'delete-window
|
(kbd "ESC") #'delete-window
|
||||||
"q" #'delete-window
|
"q" #'delete-window
|
||||||
"k" (λ! (quit-window) (delete-window))))
|
"k" (λ! (quit-window) (delete-window))))
|
||||||
|
|
||||||
|
|
||||||
(def-package! reftex
|
(def-package! reftex
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
bibtex-completion-notes-path (expand-file-name "notes.org" +latex-bibtex-dir)
|
bibtex-completion-notes-path (expand-file-name "notes.org" +latex-bibtex-dir)
|
||||||
bibtex-completion-pdf-open-function
|
bibtex-completion-pdf-open-function
|
||||||
(lambda (fpath) (async-start-process "open-pdf" "/usr/bin/xdg-open" nil fpath))))
|
(lambda (fpath) (async-start-process "open-pdf" "/usr/bin/xdg-open" nil fpath))))
|
||||||
(map! :map bibtex-mode-map "C-c \\" #'bibtex-fill-entry))
|
(define-key bibtex-mode-map (kbd "C-c \\") #'bibtex-fill-entry))
|
||||||
|
|
||||||
|
|
||||||
(def-package! auctex-latexmk
|
(def-package! auctex-latexmk
|
||||||
|
|
|
@ -18,32 +18,35 @@
|
||||||
(add-hook 'markdown-mode-hook #'+markdown|set-fill-column-and-line-spacing)
|
(add-hook 'markdown-mode-hook #'+markdown|set-fill-column-and-line-spacing)
|
||||||
(add-hook 'markdown-mode-hook #'auto-fill-mode)
|
(add-hook 'markdown-mode-hook #'auto-fill-mode)
|
||||||
|
|
||||||
(map! (:map markdown-mode-map
|
(define-key! markdown-mode-map
|
||||||
[remap find-file-at-point] #'markdown-follow-thing-at-point
|
[remap find-file-at-point] #'markdown-follow-thing-at-point
|
||||||
"M-*" #'markdown-insert-list-item
|
(kbd "M-*") #'markdown-insert-list-item
|
||||||
"M-b" #'markdown-insert-bold
|
(kbd "M-b") #'markdown-insert-bold
|
||||||
"M-i" #'markdown-insert-italic
|
(kbd "M-i") #'markdown-insert-italic
|
||||||
"M-`" #'+markdown/insert-del
|
(kbd "M-`") #'+markdown/insert-del)
|
||||||
:m "gj" #'markdown-next-visible-heading
|
(when (featurep! :feature evil +everywhere)
|
||||||
:m "gk" #'markdown-previous-visible-heading
|
(evil-define-key* 'motion markdown-mode-map
|
||||||
;; Assumes you have a markdown renderer plugin in chrome
|
"gj" #'markdown-next-visible-heading
|
||||||
:n "M-r" #'browse-url-of-file
|
"gk" #'markdown-previous-visible-heading
|
||||||
;; TODO: Make context sensitive
|
;; TODO: Make context sensitive
|
||||||
:m "]h" #'markdown-next-visible-heading
|
"]h" #'markdown-next-visible-heading
|
||||||
:m "[h" #'markdown-previous-visible-heading
|
"[h" #'markdown-previous-visible-heading
|
||||||
:m "[p" #'markdown-promote
|
"[p" #'markdown-promote
|
||||||
:m "]p" #'markdown-demote
|
"]p" #'markdown-demote
|
||||||
:m "[l" #'markdown-next-link
|
"[l" #'markdown-next-link
|
||||||
:m "]l" #'markdown-previous-link
|
"]l" #'markdown-previous-link)
|
||||||
:i "M--" #'markdown-insert-hr
|
(evil-define-key* 'insert markdown-mode-map
|
||||||
|
(kbd "M--") #'markdown-insert-hr)
|
||||||
(:localleader
|
(evil-define-key* 'normal markdown-mode-map
|
||||||
:nv "o" #'markdown-open
|
(kbd "M-r") #'browse-url-of-file))
|
||||||
:nv "b" #'markdown-preview
|
(map! :map markdown-mode-map
|
||||||
(:prefix "i"
|
:localleader
|
||||||
:nv "t" #'markdown-toc-generate-toc
|
:nv "o" #'markdown-open
|
||||||
:nv "i" #'markdown-insert-image
|
:nv "b" #'markdown-preview
|
||||||
:nv "l" #'markdown-insert-link)))))
|
(:prefix "i"
|
||||||
|
:nv "t" #'markdown-toc-generate-toc
|
||||||
|
:nv "i" #'markdown-insert-image
|
||||||
|
:nv "l" #'markdown-insert-link)))
|
||||||
|
|
||||||
|
|
||||||
(def-package! markdown-toc
|
(def-package! markdown-toc
|
||||||
|
|
|
@ -41,7 +41,7 @@ string). Stops at the first function to return non-nil.")
|
||||||
(advice-add #'org-babel-confirm-evaluate :around #'+org*babel-lazy-load-library)
|
(advice-add #'org-babel-confirm-evaluate :around #'+org*babel-lazy-load-library)
|
||||||
|
|
||||||
;; I prefer C-c C-c for confirming over the default C-c '
|
;; I prefer C-c C-c for confirming over the default C-c '
|
||||||
(map! :map org-src-mode-map "C-c C-c" #'org-edit-src-exit)
|
(define-key org-src-mode-map (kbd "C-c C-c") #'org-edit-src-exit)
|
||||||
|
|
||||||
;; In a recent update, `org-babel-get-header' was removed from org-mode, which
|
;; In a recent update, `org-babel-get-header' was removed from org-mode, which
|
||||||
;; is something a fair number of babel plugins use. So until those plugins
|
;; is something a fair number of babel plugins use. So until those plugins
|
||||||
|
|
|
@ -42,9 +42,8 @@
|
||||||
(add-to-list 'doom-real-buffer-functions #'+ein-buffer-p nil #'eq)
|
(add-to-list 'doom-real-buffer-functions #'+ein-buffer-p nil #'eq)
|
||||||
|
|
||||||
;; Ace-link on notebook list buffers
|
;; Ace-link on notebook list buffers
|
||||||
(map! :after ein-notebooklist
|
(after! ein-notebooklist
|
||||||
:map ein:notebooklist-mode-map
|
(define-key ein:notebooklist-mode-map "o" #'+ein/ace-link-ein))
|
||||||
"o" #'+ein/ace-link-ein)
|
|
||||||
|
|
||||||
;; add hydra
|
;; add hydra
|
||||||
(defhydra +ein/hydra (:hint t :color red)
|
(defhydra +ein/hydra (:hint t :color red)
|
||||||
|
|
|
@ -31,12 +31,12 @@
|
||||||
(set! :popup "^\\*Password-Store"
|
(set! :popup "^\\*Password-Store"
|
||||||
'((side . left) (size . 0.25))
|
'((side . left) (size . 0.25))
|
||||||
'((quit)))
|
'((quit)))
|
||||||
(map! :map pass-mode-map
|
(define-key! pass-mode-map
|
||||||
"j" #'pass-next-entry
|
"j" #'pass-next-entry
|
||||||
"k" #'pass-prev-entry
|
"k" #'pass-prev-entry
|
||||||
"d" #'pass-kill
|
"d" #'pass-kill
|
||||||
"C-j" #'pass-next-directory
|
"\C-j" #'pass-next-directory
|
||||||
"C-k" #'pass-next-directory))
|
"\C-k" #'pass-next-directory))
|
||||||
|
|
||||||
|
|
||||||
;; Is built into Emacs 26+
|
;; Is built into Emacs 26+
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
(unless noninteractive
|
(unless noninteractive
|
||||||
(pdf-tools-install))
|
(pdf-tools-install))
|
||||||
|
|
||||||
(map! :map pdf-view-mode-map
|
(define-key! pdf-view-mode-map
|
||||||
"q" #'kill-this-buffer
|
"q" #'kill-this-buffer
|
||||||
doom-leader-key nil)
|
(kbd doom-leader-key) nil)
|
||||||
|
|
||||||
(setq-default pdf-view-display-size 'fit-page)
|
(setq-default pdf-view-display-size 'fit-page)
|
||||||
;; Turn off cua so copy works
|
;; Turn off cua so copy works
|
||||||
|
|
|
@ -9,5 +9,5 @@
|
||||||
|
|
||||||
(advice-add #'prodigy-services :around #'+prodigy*services)
|
(advice-add #'prodigy-services :around #'+prodigy*services)
|
||||||
|
|
||||||
(map! :map prodigy-mode-map "d" #'+prodigy/delete))
|
(define-key prodigy-mode-map "d" #'+prodigy/delete))
|
||||||
|
|
||||||
|
|
|
@ -66,35 +66,46 @@ Possible values:
|
||||||
(cl-loop for (car . _cdr) in fringe-indicator-alist
|
(cl-loop for (car . _cdr) in fringe-indicator-alist
|
||||||
collect (cons car nil) into alist
|
collect (cons car nil) into alist
|
||||||
finally do (setq fringe-indicator-alist alist))
|
finally do (setq fringe-indicator-alist alist))
|
||||||
(add-hook 'post-command-hook #'+doom-dashboard|reposition-point nil t))
|
(add-hook 'post-command-hook #'+doom-dashboard|reposition-point nil t)
|
||||||
|
;;
|
||||||
|
(setq-local which-key-idle-delay 0.01)
|
||||||
|
(setq-local which-key-min-display-lines 9))
|
||||||
|
|
||||||
(map! :map +doom-dashboard-mode-map
|
(define-key! +doom-dashboard-mode-map
|
||||||
"n" #'forward-button
|
"n" #'forward-button
|
||||||
:gn [down] #'forward-button
|
"p" #'backward-button
|
||||||
:gn "C-n" #'forward-button
|
"\C-n" #'forward-button
|
||||||
:gn [tab] #'forward-button
|
"\C-p" #'backward-button
|
||||||
:gn "TAB" #'forward-button
|
[down] #'forward-button
|
||||||
"p" #'backward-button
|
[up] #'backward-button
|
||||||
:gn [up] #'backward-button
|
[tab] #'forward-button
|
||||||
:gn "C-p" #'backward-button
|
[backtab] #'backward-button)
|
||||||
:gn [backtab] #'backward-button
|
|
||||||
:gn "S-TAB" #'backward-button
|
|
||||||
(:when (featurep! :feature evil)
|
|
||||||
:m "j" #'forward-button
|
|
||||||
:m "k" #'backward-button
|
|
||||||
[remap evil-next-visual-line] #'forward-button
|
|
||||||
[remap evil-previous-visual-line] #'backward-button
|
|
||||||
|
|
||||||
[remap evil-delete] #'ignore
|
(when (featurep 'evil)
|
||||||
[remap evil-delete-line] #'ignore
|
(evil-define-key* 'normal +doom-dashboard-mode-map
|
||||||
[remap evil-insert] #'ignore
|
"j" #'forward-button
|
||||||
[remap evil-append] #'ignore
|
"k" #'backward-button
|
||||||
[remap evil-replace] #'ignore
|
"n" #'forward-button
|
||||||
[remap evil-replace-state] #'ignore
|
"p" #'backward-button
|
||||||
[remap evil-change] #'ignore
|
"\C-n" #'forward-button
|
||||||
[remap evil-change-line] #'ignore
|
"\C-p" #'backward-button
|
||||||
[remap evil-visual-char] #'ignore
|
[down] #'forward-button
|
||||||
[remap evil-visual-line] #'ignore))
|
[up] #'backward-button
|
||||||
|
[tab] #'forward-button
|
||||||
|
[backtab] #'backward-button)
|
||||||
|
(define-key! +doom-dashboard-mode-map
|
||||||
|
[remap evil-next-visual-line] #'forward-button
|
||||||
|
[remap evil-previous-visual-line] #'backward-button
|
||||||
|
[remap evil-delete] #'ignore
|
||||||
|
[remap evil-delete-line] #'ignore
|
||||||
|
[remap evil-insert] #'ignore
|
||||||
|
[remap evil-append] #'ignore
|
||||||
|
[remap evil-replace] #'ignore
|
||||||
|
[remap evil-replace-state] #'ignore
|
||||||
|
[remap evil-change] #'ignore
|
||||||
|
[remap evil-change-line] #'ignore
|
||||||
|
[remap evil-visual-char] #'ignore
|
||||||
|
[remap evil-visual-line] #'ignore))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue