diff --git a/core/core-keybinds.el b/core/core-keybinds.el index 91258aac8..95c7d0881 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -153,17 +153,26 @@ For example, :nvi will map to (list 'normal 'visual 'insert). See (defvar doom--defer nil) (defvar doom--local nil) -(defmacro define-key! (keymap key def &rest rest) +(defmacro define-key! (keymaps key def &rest rest) "TODO" (declare (indent defun)) - `(progn - (define-key ,keymap ,key ,def) - ,@(let (forms) - (while rest - (let ((key (pop rest)) - (def (pop rest))) - (push `(define-key ,keymap ,key ,def) forms))) - (nreverse forms)))) + (if (and (listp keymaps) + (not (eq (car-safe keymaps) 'quote))) + `(dolist (map (list ,@keymaps)) + ,(macroexpand `(define-key! map ,key ,def ,@rest))) + (when (eq (car-safe keymaps) 'quote) + (pcase (cadr keymaps) + (`global (setq keymaps '(current-global-map))) + (`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) "A nightmare of a key-binding macro that will use `evil-define-key*', diff --git a/modules/app/calendar/config.el b/modules/app/calendar/config.el index c607b2898..b359e1212 100644 --- a/modules/app/calendar/config.el +++ b/modules/app/calendar/config.el @@ -27,7 +27,7 @@ cfw:fchar-top-left-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) (add-hook 'cfw:calendar-mode-hook #'solaire-mode)) diff --git a/modules/app/irc/config.el b/modules/app/irc/config.el index 7d7c6df11..703ac4122 100644 --- a/modules/app/irc/config.el +++ b/modules/app/irc/config.el @@ -103,7 +103,7 @@ playback.") (advice-add 'circe--irc-conn-disconnected :after #'+irc*circe-disconnect-hook) ;; 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 () "Truncate long nicknames in chat output non-destructively." @@ -163,7 +163,7 @@ playback.") (def-package! lui :commands lui-mode :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) (setq lui-flyspell-p t lui-fill-type nil)) diff --git a/modules/app/rss/config.el b/modules/app/rss/config.el index e3908aa80..606bbaedf 100644 --- a/modules/app/rss/config.el +++ b/modules/app/rss/config.el @@ -39,23 +39,24 @@ paths.") ;; Enhance readability of a post (add-hook 'elfeed-show-mode-hook #'+rss|elfeed-wrap) - (map! (:map (elfeed-search-mode-map elfeed-show-mode-map) - [remap kill-this-buffer] #'+rss/quit - [remap kill-buffer] #'+rss/quit) - - (:map elfeed-search-mode-map - :n "q" #'+rss/quit - :n "r" #'elfeed-update - :n "s" #'elfeed-search-live-filter - :n "RET" #'elfeed-search-show-entry - :n "M-RET" #'elfeed-search-browse-url) - - (:map elfeed-show-mode-map - :n "q" #'elfeed-kill-buffer - :m "j" #'evil-next-visual-line - :m "k" #'evil-previous-visual-line - [remap next-buffer] #'+rss/next - [remap previous-buffer] #'+rss/previous))) + (define-key! (elfeed-search-mode-map elfeed-show-mode-map) + [remap kill-this-buffer] #'+rss/quit + [remap kill-buffer] #'+rss/quit) + (define-key! elfeed-show-mode-map + [remap next-buffer] #'+rss/next + [remap previous-buffer] #'+rss/previous) + (when (featurep 'evil) + (evil-define-key* 'normal elfeed-search-mode-map + "q" #'+rss/quit + "r" #'elfeed-update + "s" #'elfeed-search-live-filter + (kbd "RET") #'elfeed-search-show-entry + (kbd "M-RET") #'elfeed-search-browse-url) + (evil-define-key* 'normal elfeed-show-mode-map + "q" #'elfeed-kill-buffer) + (evil-define-key* 'motion elfeed-show-mode-map + "j" #'evil-next-visual-line + "k" #'evil-previous-visual-line))) (def-package! elfeed-org diff --git a/modules/app/twitter/config.el b/modules/app/twitter/config.el index acc592b40..4238172e0 100644 --- a/modules/app/twitter/config.el +++ b/modules/app/twitter/config.el @@ -52,28 +52,29 @@ mode-line-format nil)) (add-hook 'twittering-mode-hook #'+twitter|switch-mode-and-header-line) - (map! :map twittering-mode-map - "q" #'+twitter/quit - "Q" #'+twitter/quit-all - [remap twittering-kill-buffer] #'+twitter/quit - [remap delete-window] #'+twitter/quit - [remap +workspace/close-window-or-workspace] #'+twitter/quit - (:when (featurep! :feature evil) - [remap evil-window-delete] #'+twitter/quit - "f" #'twittering-favorite - "F" #'twittering-unfavorite - "C-f" #'twittering-follow - "C-F" #'twittering-unfollow - "d" #'twittering-delete-status - "r" #'twittering-retweet - "R" #'twittering-toggle-or-retrieve-replied-statuses - "o" #'twittering-update-status-interactive - "O" #'+twitter/ace-link - "/" #'twittering-search - "J" #'twittering-goto-next-status - "K" #'twittering-goto-previous-status - "g" nil - "gg" #'twittering-goto-first-status - "G" #'twittering-goto-last-status - "gj" #'twittering-goto-next-status-of-user - "gk" #'twittering-goto-previous-status-of-user))) + (define-key! twittering-mode-map + "q" #'+twitter/quit + "Q" #'+twitter/quit-all + [remap twittering-kill-buffer] #'+twitter/quit + [remap delete-window] #'+twitter/quit + [remap +workspace/close-window-or-workspace] #'+twitter/quit) + (when (featurep! :feature evil +everywhere) + (define-key! twittering-mode-map + [remap evil-window-delete] #'+twitter/quit + "f" #'twittering-favorite + "F" #'twittering-unfavorite + "\C-f" #'twittering-follow + "\C-F" #'twittering-unfollow + "d" #'twittering-delete-status + "r" #'twittering-retweet + "R" #'twittering-toggle-or-retrieve-replied-statuses + "o" #'twittering-update-status-interactive + "O" #'+twitter/ace-link + "/" #'twittering-search + "J" #'twittering-goto-next-status + "K" #'twittering-goto-previous-status + "g" nil + "gg" #'twittering-goto-first-status + "G" #'twittering-goto-last-status + "gj" #'twittering-goto-next-status-of-user + "gk" #'twittering-goto-previous-status-of-user))) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index 2233d7b07..7d137e6d9 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -14,20 +14,19 @@ :defer 1 :after-call pre-command-hook :init - (map! :map global-map - [remap apropos] #'helm-apropos - [remap bookmark-jump] #'helm-bookmarks - [remap execute-extended-command] #'helm-M-x - [remap find-file] #'helm-find-files - [remap imenu-anywhere] #'helm-imenu-anywhere - [remap imenu] #'helm-semantic-or-imenu - [remap swiper] #'helm-swoop - [remap noop-show-kill-ring] #'helm-show-kill-ring - [remap projectile-find-file] #'helm-projectile-find-file - [remap projectile-recentf] #'helm-projectile-recentf - [remap projectile-switch-project] #'helm-projectile-switch-project - [remap projectile-switch-to-buffer] #'helm-projectile-switch-to-buffer - [remap recentf-open-files] #'helm-recentf) + (define-key! 'global + [remap apropos] #'helm-apropos + [remap bookmark-jump] #'helm-bookmarks + [remap execute-extended-command] #'helm-M-x + [remap find-file] #'helm-find-files + [remap imenu-anywhere] #'helm-imenu-anywhere + [remap imenu] #'helm-semantic-or-imenu + [remap noop-show-kill-ring] #'helm-show-kill-ring + [remap projectile-find-file] #'helm-projectile-find-file + [remap projectile-recentf] #'helm-projectile-recentf + [remap projectile-switch-project] #'helm-projectile-switch-project + [remap projectile-switch-to-buffer] #'helm-projectile-switch-to-buffer + [remap recentf-open-files] #'helm-recentf) :config (helm-mode +1) ;; helm is too heavy for find-file-at-point diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 702afd189..596fff5b3 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -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! yasnippet (add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq)) - (map! [remap switch-to-buffer] #'ivy-switch-buffer - [remap persp-switch-to-buffer] #'+ivy/switch-workspace-buffer - [remap imenu-anywhere] #'ivy-imenu-anywhere) + (define-key! 'global + [remap switch-to-buffer] #'ivy-switch-buffer + [remap persp-switch-to-buffer] #'+ivy/switch-workspace-buffer + [remap imenu-anywhere] #'ivy-imenu-anywhere) (ivy-mode +1)) @@ -69,19 +70,21 @@ immediately runs it on the current candidate (ending the ivy session)." (def-package! counsel :commands counsel-describe-face :init - (map! [remap apropos] #'counsel-apropos - [remap bookmark-jump] #'counsel-bookmark - [remap describe-face] #'counsel-describe-face - [remap describe-function] #'counsel-describe-function - [remap describe-variable] #'counsel-describe-variable - [remap execute-extended-command] #'counsel-M-x - [remap find-file] #'counsel-find-file - [remap find-library] #'counsel-find-library - [remap info-lookup-symbol] #'counsel-info-lookup-symbol - [remap imenu] #'counsel-imenu - [remap recentf-open-files] #'counsel-recentf - [remap org-capture] #'counsel-org-capture - [remap swiper] #'counsel-grep-or-swiper) + (define-key! 'global + [remap apropos] #'counsel-apropos + [remap bookmark-jump] #'counsel-bookmark + [remap describe-face] #'counsel-describe-face + [remap describe-function] #'counsel-describe-function + [remap describe-variable] #'counsel-describe-variable + [remap execute-extended-command] #'counsel-M-x + [remap find-file] #'counsel-find-file + [remap find-library] #'counsel-find-library + [remap info-lookup-symbol] #'counsel-info-lookup-symbol + [remap imenu] #'counsel-imenu + [remap recentf-open-files] #'counsel-recentf + [remap org-capture] #'counsel-org-capture + [remap swiper] #'counsel-grep-or-swiper) + :config (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 counsel-projectile-grep counsel-projectile-ag counsel-projectile-switch-project) :init - (map! [remap projectile-find-file] #'counsel-projectile-find-file - [remap projectile-find-dir] #'counsel-projectile-find-dir - [remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer - [remap projectile-grep] #'counsel-projectile-grep - [remap projectile-ag] #'counsel-projectile-ag - [remap projectile-switch-project] #'counsel-projectile-switch-project) + (define-key! 'global + [remap projectile-find-file] #'counsel-projectile-find-file + [remap projectile-find-dir] #'counsel-projectile-find-dir + [remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer + [remap projectile-grep] #'counsel-projectile-grep + [remap projectile-ag] #'counsel-projectile-ag + [remap projectile-switch-project] #'counsel-projectile-switch-project) :config ;; Highlight entries that have been visited (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 :commands (+ivy@coo/body ivy-dispatching-done-hydra) :init - (map! :after ivy - :map ivy-minibuffer-map - "C-o" #'+ivy@coo/body - "M-o" #'ivy-dispatching-done-hydra) + (after! ivy + (define-key! ivy-minibuffer-map + "\C-o" #'+ivy@coo/body + (kbd "M-o") #'ivy-dispatching-done-hydra)) :config (defhydra +ivy@coo (:hint nil :color pink) " diff --git a/modules/config/default/autoload/evil.el b/modules/config/default/autoload/evil.el index b3cf49b6d..1d35ac8bf 100644 --- a/modules/config/default/autoload/evil.el +++ b/modules/config/default/autoload/evil.el @@ -42,7 +42,7 @@ buffers." integration." (interactive) (let ((prefix (this-command-keys))) - (map! :m prefix nil) + (evil-define-key* 'motion 'global prefix nil) (evilem-default-keybindings prefix) (set-transient-map evilem-map) (which-key-reload-key-sequence prefix))) diff --git a/modules/emacs/eshell/config.el b/modules/emacs/eshell/config.el index f78a8513f..90ed2816c 100644 --- a/modules/emacs/eshell/config.el +++ b/modules/emacs/eshell/config.el @@ -55,20 +55,23 @@ (defun +eshell|init-keymap () "Setup eshell keybindings. This must be done in a hook because eshell-mode redefines its keys every time `eshell-mode' is enabled." - (map! :map eshell-mode-map - :n [return] #'+eshell/goto-end-of-prompt - :n "c" #'+eshell/evil-change - :n "C" #'+eshell/evil-change-line - :n "d" #'+eshell/evil-delete - :n "D" #'+eshell/evil-delete-line - :i "C-d" #'+eshell/quit-or-delete-char - :i "C-p" #'eshell-previous-input - :i "C-n" #'eshell-next-input - [remap doom/backward-to-bol-or-indent] #'eshell-bol - [remap doom/backward-kill-to-bol-and-indent] #'eshell-kill-input - [remap split-window-below] #'+eshell/split-below - [remap split-window-right] #'+eshell/split-right - [remap evil-window-split] #'+eshell/split-below - [remap evil-window-vsplit] #'+eshell/split-right)) + (when (featurep 'evil) + (evil-define-key* 'normal eshell-mode-map + [return] #'+eshell/goto-end-of-prompt + "c" #'+eshell/evil-change + "C" #'+eshell/evil-change-line + "d" #'+eshell/evil-delete + "D" #'+eshell/evil-delete-line) + (evil-define-key* 'insert eshell-mode-map + "\C-d" #'+eshell/quit-or-delete-char + "\C-p" #'eshell-previous-input + "\C-n" #'eshell-next-input)) + (define-key! eshell-mode-map + [remap split-window-below] #'+eshell/split-below + [remap split-window-right] #'+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)) diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index cf9c59b35..5f6ad5f43 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -63,6 +63,8 @@ variable for an explanation of the defaults (in comments). See (add-hook 'doom-post-init-hook #'evil-mode) (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 "^\\*Command Line" '((size . 8))) @@ -77,18 +79,20 @@ variable for an explanation of the defaults (in comments). See ;; --- keybind fixes ---------------------- - (map! (:after wgrep - ;; A wrapper that invokes `wgrep-mark-deletion' across lines you use - ;; `evil-delete' in wgrep buffers. - :map wgrep-mode-map [remap evil-delete] #'+evil-delete) + (after! wgrep + ;; A wrapper that invokes `wgrep-mark-deletion' across lines you use + ;; `evil-delete' in wgrep buffers. + (define-key! wgrep-mode-map + [remap evil-delete] #'+evil-delete)) - ;; replace native folding commands - [remap evil-toggle-fold] #'+evil:fold-toggle - [remap evil-close-fold] #'+evil:fold-close - [remap evil-open-fold] #'+evil:fold-open - [remap evil-open-fold-rec] #'+evil:fold-open - [remap evil-close-folds] #'+evil:fold-close-all - [remap evil-open-folds] #'+evil:fold-open-all) + ;; replace native folding commands + (define-key! 'global + [remap evil-toggle-fold] #'+evil:fold-toggle + [remap evil-close-fold] #'+evil:fold-close + [remap evil-open-fold] #'+evil:fold-open + [remap evil-open-fold-rec] #'+evil:fold-open + [remap evil-close-folds] #'+evil:fold-close-all + [remap evil-open-folds] #'+evil:fold-open-all) (defun +evil|disable-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-delay 0.25) (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 ;; no `evil-escape' in minibuffer (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) :config (global-evil-matchit-mode 1) :init - (map! [remap evil-jump-item] #'evilmi-jump-items - :textobj "%" #'evilmi-inner-text-object #'evilmi-outer-text-object) + (define-key! 'global [remap evil-jump-item] #'evilmi-jump-items) + (define-key evil-inner-text-objects-map "%" #'evilmi-inner-text-object) + (define-key evil-outer-text-objects-map "%" #'evilmi-outer-text-object) :config ;; Fixes #519 where d% wouldn't leave a dangling end-parenthesis (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-backward) :init - (map! :v "*" #'evil-visualstar/begin-search-forward - :v "#" #'evil-visualstar/begin-search-backward) + (evil-define-key* 'visual 'global + "*" #'evil-visualstar/begin-search-forward + "#" #'evil-visualstar/begin-search-backward) :config (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 ;; over) can still use it in relative safety. (after! multiple-cursors-core - (map! :map mc/keymap :ne "" #'mc/keyboard-quit) + (evil-define-key* '(normal emacs) [escape] #'mc/keyboard-quit) (defvar +evil--mc-compat-evil-prev-state nil) (defvar +evil--mc-compat-mark-was-active nil) diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index cb02a6558..cd053efe3 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -110,7 +110,7 @@ compilation database is present in the project.") ;; Smartparens and cc-mode both try to autoclose angle-brackets intelligently. ;; The result isn't very intelligent (causes redundant characters), so just do ;; it ourselves. - (map! :map c++-mode-map "<" nil ">" nil) + (define-key! c++-mode-map "<" nil ">" nil) ;; ...and leave it to smartparens (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))) ;; 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)) (add-hook 'rtags-after-find-file-hook #'recenter) diff --git a/modules/lang/ess/config.el b/modules/lang/ess/config.el index a1fc837b2..aca1c81d5 100644 --- a/modules/lang/ess/config.el +++ b/modules/lang/ess/config.el @@ -41,44 +41,45 @@ (ess-toggle-underscore t) (set! :repl 'ess-mode #'+ess/r-repl) (set! :lookup 'ess-mode :documentation #'ess-display-help-on-object) - (map! (:map ess-doc-map - "h" #'ess-display-help-on-object - "p" #'ess-R-dv-pprint - "t" #'ess-R-dv-ctable) - (:map ess-mode-map - "" #'ess-eval-line - "" #'comint-next-input - "" #'comint-previous-input - (:localleader - :nv "," #'ess-eval-region-or-function-or-paragraph-and-step - :n "'" #'R - :n "" #'ess-switch-to-inferior-or-script-buffer - :n "" #'ess-switch-process - :n ;; REPL - :n "B" #'ess-eval-buffer-and-go - :n "b" #'ess-eval-buffer - :nv "d" #'ess-eval-region-or-line-and-step - :n "D" #'ess-eval-function-or-paragraph-and-step - :n "L" #'ess-eval-line-and-go - :n "l" #'ess-eval-line - :nv "R" #'ess-eval-region-and-go - :nv "r" #'ess-eval-region - :n "F" #'ess-eval-function-and-go - :n "f" #'ess-eval-function - ;; predefined keymaps - :n "h" #'ess-doc-map - :n "x" #'ess-extra-map - :n "p" #'ess-r-package-dev-map - :n "v" #'ess-dev-map - ;; noweb - :n "cC" #'ess-eval-chunk-and-go - :n "cc" #'ess-eval-chunk - :n "cd" #'ess-eval-chunk-and-step - :n "cm" #'ess-noweb-mark-chunk - :n "cp" #'ess-noweb-previous-chunk - :n "cn" #'ess-noweb-next-chunk)))) + (define-key! ess-doc-map + "h" #'ess-display-help-on-object + "p" #'ess-R-dv-pprint + "t" #'ess-R-dv-ctable) + (define-key! ess-doc-map + [s-return] #'ess-eval-line + [up] #'comint-next-input + [down] #'comint-previous-input) + (map! :map ess-mode-map + :localleader + :nv "," #'ess-eval-region-or-function-or-paragraph-and-step + :n "'" #'R + :n "" #'ess-switch-to-inferior-or-script-buffer + :n "" #'ess-switch-process + :n ;; REPL + :n "B" #'ess-eval-buffer-and-go + :n "b" #'ess-eval-buffer + :nv "d" #'ess-eval-region-or-line-and-step + :n "D" #'ess-eval-function-or-paragraph-and-step + :n "L" #'ess-eval-line-and-go + :n "l" #'ess-eval-line + :nv "R" #'ess-eval-region-and-go + :nv "r" #'ess-eval-region + :n "F" #'ess-eval-function-and-go + :n "f" #'ess-eval-function + ;; predefined keymaps + :n "h" #'ess-doc-map + :n "x" #'ess-extra-map + :n "p" #'ess-r-package-dev-map + :n "v" #'ess-dev-map + ;; noweb + :n "cC" #'ess-eval-chunk-and-go + :n "cc" #'ess-eval-chunk + :n "cd" #'ess-eval-chunk-and-step + :n "cm" #'ess-noweb-mark-chunk + :n "cp" #'ess-noweb-previous-chunk + :n "cn" #'ess-noweb-next-chunk)) ;; `ess-smart-equals-mode' -(add-hook! (ess-mode inferior-ess) +(add-hook! '(ess-mode-hook inferior-ess-hook) #'ess-smart-equals-mode) diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index 585873e53..bf76d3daf 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -52,7 +52,7 @@ LaTeX-fill-break-at-separators nil 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 ;; to .tex files @@ -120,10 +120,10 @@ :config (map-put TeX-view-program-list "preview-pane" '(latex-preview-pane-mode)) (map-put TeX-view-program-selection 'output-pdf '("preview-pane")) - (map! :map doc-view-mode-map - "ESC" #'delete-window - "q" #'delete-window - "k" (λ! (quit-window) (delete-window)))) + (define-key! doc-view-mode-map + (kbd "ESC") #'delete-window + "q" #'delete-window + "k" (λ! (quit-window) (delete-window)))) (def-package! reftex @@ -170,7 +170,7 @@ bibtex-completion-notes-path (expand-file-name "notes.org" +latex-bibtex-dir) bibtex-completion-pdf-open-function (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 diff --git a/modules/lang/markdown/config.el b/modules/lang/markdown/config.el index 230d41f01..c28067b72 100644 --- a/modules/lang/markdown/config.el +++ b/modules/lang/markdown/config.el @@ -18,32 +18,35 @@ (add-hook 'markdown-mode-hook #'+markdown|set-fill-column-and-line-spacing) (add-hook 'markdown-mode-hook #'auto-fill-mode) - (map! (:map markdown-mode-map - [remap find-file-at-point] #'markdown-follow-thing-at-point - "M-*" #'markdown-insert-list-item - "M-b" #'markdown-insert-bold - "M-i" #'markdown-insert-italic - "M-`" #'+markdown/insert-del - :m "gj" #'markdown-next-visible-heading - :m "gk" #'markdown-previous-visible-heading - ;; Assumes you have a markdown renderer plugin in chrome - :n "M-r" #'browse-url-of-file - ;; TODO: Make context sensitive - :m "]h" #'markdown-next-visible-heading - :m "[h" #'markdown-previous-visible-heading - :m "[p" #'markdown-promote - :m "]p" #'markdown-demote - :m "[l" #'markdown-next-link - :m "]l" #'markdown-previous-link - :i "M--" #'markdown-insert-hr - - (:localleader - :nv "o" #'markdown-open - :nv "b" #'markdown-preview - (:prefix "i" - :nv "t" #'markdown-toc-generate-toc - :nv "i" #'markdown-insert-image - :nv "l" #'markdown-insert-link))))) + (define-key! markdown-mode-map + [remap find-file-at-point] #'markdown-follow-thing-at-point + (kbd "M-*") #'markdown-insert-list-item + (kbd "M-b") #'markdown-insert-bold + (kbd "M-i") #'markdown-insert-italic + (kbd "M-`") #'+markdown/insert-del) + (when (featurep! :feature evil +everywhere) + (evil-define-key* 'motion markdown-mode-map + "gj" #'markdown-next-visible-heading + "gk" #'markdown-previous-visible-heading + ;; TODO: Make context sensitive + "]h" #'markdown-next-visible-heading + "[h" #'markdown-previous-visible-heading + "[p" #'markdown-promote + "]p" #'markdown-demote + "[l" #'markdown-next-link + "]l" #'markdown-previous-link) + (evil-define-key* 'insert markdown-mode-map + (kbd "M--") #'markdown-insert-hr) + (evil-define-key* 'normal markdown-mode-map + (kbd "M-r") #'browse-url-of-file)) + (map! :map markdown-mode-map + :localleader + :nv "o" #'markdown-open + :nv "b" #'markdown-preview + (:prefix "i" + :nv "t" #'markdown-toc-generate-toc + :nv "i" #'markdown-insert-image + :nv "l" #'markdown-insert-link))) (def-package! markdown-toc diff --git a/modules/lang/org/+babel.el b/modules/lang/org/+babel.el index 3b590d1a9..909695e77 100644 --- a/modules/lang/org/+babel.el +++ b/modules/lang/org/+babel.el @@ -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) ;; 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 ;; is something a fair number of babel plugins use. So until those plugins diff --git a/modules/tools/ein/config.el b/modules/tools/ein/config.el index 3228632ff..c2e290cec 100644 --- a/modules/tools/ein/config.el +++ b/modules/tools/ein/config.el @@ -42,9 +42,8 @@ (add-to-list 'doom-real-buffer-functions #'+ein-buffer-p nil #'eq) ;; Ace-link on notebook list buffers - (map! :after ein-notebooklist - :map ein:notebooklist-mode-map - "o" #'+ein/ace-link-ein) + (after! ein-notebooklist + (define-key ein:notebooklist-mode-map "o" #'+ein/ace-link-ein)) ;; add hydra (defhydra +ein/hydra (:hint t :color red) diff --git a/modules/tools/password-store/config.el b/modules/tools/password-store/config.el index 922361fdd..e05bf4b73 100644 --- a/modules/tools/password-store/config.el +++ b/modules/tools/password-store/config.el @@ -31,12 +31,12 @@ (set! :popup "^\\*Password-Store" '((side . left) (size . 0.25)) '((quit))) - (map! :map pass-mode-map - "j" #'pass-next-entry - "k" #'pass-prev-entry - "d" #'pass-kill - "C-j" #'pass-next-directory - "C-k" #'pass-next-directory)) + (define-key! pass-mode-map + "j" #'pass-next-entry + "k" #'pass-prev-entry + "d" #'pass-kill + "\C-j" #'pass-next-directory + "\C-k" #'pass-next-directory)) ;; Is built into Emacs 26+ diff --git a/modules/tools/pdf/config.el b/modules/tools/pdf/config.el index 85a4be1f8..27da28d94 100644 --- a/modules/tools/pdf/config.el +++ b/modules/tools/pdf/config.el @@ -6,9 +6,9 @@ (unless noninteractive (pdf-tools-install)) - (map! :map pdf-view-mode-map - "q" #'kill-this-buffer - doom-leader-key nil) + (define-key! pdf-view-mode-map + "q" #'kill-this-buffer + (kbd doom-leader-key) nil) (setq-default pdf-view-display-size 'fit-page) ;; Turn off cua so copy works diff --git a/modules/tools/prodigy/config.el b/modules/tools/prodigy/config.el index e9ba7ca32..b06d7278a 100644 --- a/modules/tools/prodigy/config.el +++ b/modules/tools/prodigy/config.el @@ -9,5 +9,5 @@ (advice-add #'prodigy-services :around #'+prodigy*services) - (map! :map prodigy-mode-map "d" #'+prodigy/delete)) + (define-key prodigy-mode-map "d" #'+prodigy/delete)) diff --git a/modules/ui/doom-dashboard/config.el b/modules/ui/doom-dashboard/config.el index 01c1f0d14..5749fb3b6 100644 --- a/modules/ui/doom-dashboard/config.el +++ b/modules/ui/doom-dashboard/config.el @@ -66,35 +66,46 @@ Possible values: (cl-loop for (car . _cdr) in fringe-indicator-alist collect (cons car nil) into 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 - "n" #'forward-button - :gn [down] #'forward-button - :gn "C-n" #'forward-button - :gn [tab] #'forward-button - :gn "TAB" #'forward-button - "p" #'backward-button - :gn [up] #'backward-button - :gn "C-p" #'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 +(define-key! +doom-dashboard-mode-map + "n" #'forward-button + "p" #'backward-button + "\C-n" #'forward-button + "\C-p" #'backward-button + [down] #'forward-button + [up] #'backward-button + [tab] #'forward-button + [backtab] #'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)) +(when (featurep 'evil) + (evil-define-key* 'normal +doom-dashboard-mode-map + "j" #'forward-button + "k" #'backward-button + "n" #'forward-button + "p" #'backward-button + "\C-n" #'forward-button + "\C-p" #'backward-button + [down] #'forward-button + [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)) ;;