Add :prefix-map to map! macro
Each prefix now defines a doom-leader-DESC-map keymap, where DESC is the which-key description for that prefix key. This should make it easier for users to move leader prefixes. e.g. To move SPC TAB (workspaces) to SPC l: (map! :leader "TAB" nil "l" doom-leader-workspaces-map)
This commit is contained in:
parent
0a0def6a53
commit
b7d1702484
2 changed files with 32 additions and 17 deletions
|
@ -98,7 +98,7 @@ If any hook returns non-nil, all hooks after it are ignored.")
|
|||
(push `(define-key doom-leader-map (general--kbd ,key)
|
||||
,bdef)
|
||||
forms))
|
||||
(when-let* ((desc (plist-get udef :which-key)))
|
||||
(when-let* ((desc (cadr (memq :which-key udef))))
|
||||
(push `(which-key-add-key-based-replacements
|
||||
(general--concat t doom-leader-alt-key ,key)
|
||||
,desc)
|
||||
|
@ -275,8 +275,20 @@ For example, :nvi will map to (list 'normal 'visual 'insert). See
|
|||
((or :when :unless)
|
||||
(doom--map-nested (list (intern (doom-keyword-name key)) (pop rest)) rest)
|
||||
(setq rest nil))
|
||||
(:prefix-map
|
||||
(cl-destructuring-bind (prefix . desc)
|
||||
(doom-enlist (pop rest))
|
||||
(let ((keymap (intern (format "doom-leader-%s-map" desc))))
|
||||
(push `(progn
|
||||
(defvar ,keymap (make-sparse-keymap))
|
||||
(map! :leader
|
||||
:desc ,desc ,prefix ,keymap
|
||||
:prefix ,prefix ,@rest))
|
||||
doom--map-forms)
|
||||
(setq rest nil))))
|
||||
(:prefix
|
||||
(cl-destructuring-bind (prefix . desc) (doom-enlist (pop rest))
|
||||
(cl-destructuring-bind (prefix . desc)
|
||||
(doom-enlist (pop rest))
|
||||
(doom--map-set (if doom--map-fn :infix :prefix)
|
||||
prefix)
|
||||
(when (stringp desc)
|
||||
|
@ -398,7 +410,10 @@ Properties
|
|||
:mode [MODE(s)] [...] inner keybinds are applied to major MODE(s)
|
||||
:map [KEYMAP(s)] [...] inner keybinds are applied to KEYMAP(S)
|
||||
:keymap [KEYMAP(s)] [...] same as :map
|
||||
:prefix [PREFIX] [...] set keybind prefix for following keys
|
||||
:prefix [PREFIX] [...] set keybind prefix for following keys. PREFIX
|
||||
can be a cons cell: (PREFIX . DESCRIPTION)
|
||||
:prefix-map [PREFIX] [...] same as :prefix, but defines a prefix keymap
|
||||
where the following keys will be bound.
|
||||
:after [FEATURE] [...] apply keybinds when [FEATURE] loads
|
||||
:textobj KEY INNER-FN OUTER-FN define a text object keybind pair
|
||||
:if [CONDITION] [...]
|
||||
|
|
|
@ -526,7 +526,7 @@
|
|||
:desc "Jump to bookmark" "RET" #'bookmark-jump
|
||||
|
||||
;; Prefixed key groups
|
||||
(:prefix ("/" . "search")
|
||||
(:prefix-map ("/" . "search")
|
||||
:desc "Search buffer" "b" #'swiper
|
||||
:desc "Search current directory" "d" #'+default/search-from-cwd
|
||||
:desc "Jump to symbol" "i" #'imenu
|
||||
|
@ -536,7 +536,7 @@
|
|||
:desc "Search project" "p" #'+default/search-project)
|
||||
|
||||
(:when (featurep! :ui workspaces)
|
||||
(:prefix ("TAB" . "workspace")
|
||||
(:prefix-map ("TAB" . "workspace")
|
||||
:desc "Display tab bar" "TAB" #'+workspace/display
|
||||
:desc "Switch workspace" "." #'+workspace/switch-to
|
||||
:desc "New workspace" "n" #'+workspace/new
|
||||
|
@ -559,7 +559,7 @@
|
|||
:desc "Switch to 9th workspace" "9" (λ! (+workspace/switch-to 8))
|
||||
:desc "Switch to last workspace" "0" #'+workspace/switch-to-last))
|
||||
|
||||
(:prefix ("b" . "buffer")
|
||||
(:prefix-map ("b" . "buffer")
|
||||
:desc "Toggle narrowing" "-" #'doom/clone-and-narrow-buffer
|
||||
:desc "Previous buffer" "[" #'previous-buffer
|
||||
:desc "Next buffer" "]" #'next-buffer
|
||||
|
@ -578,7 +578,7 @@
|
|||
:desc "Pop scratch buffer" "x" #'doom/open-scratch-buffer
|
||||
:desc "Bury buffer" "z" #'bury-buffer)
|
||||
|
||||
(:prefix ("c" . "code")
|
||||
(:prefix-map ("c" . "code")
|
||||
:desc "Compile" "c" #'compile
|
||||
:desc "Jump to definition" "d" #'+lookup/definition
|
||||
:desc "Jump to references" "D" #'+lookup/references
|
||||
|
@ -590,7 +590,7 @@
|
|||
:desc "Delete trailing newlines" "W" #'doom/delete-trailing-newlines
|
||||
:desc "List errors" "x" #'flycheck-list-errors)
|
||||
|
||||
(:prefix ("f" . "file")
|
||||
(:prefix-map ("f" . "file")
|
||||
:desc "Find file" "." #'find-file
|
||||
:desc "Find file from here" "/"
|
||||
(if (featurep! :completion ivy)
|
||||
|
@ -610,7 +610,7 @@
|
|||
:desc "Delete this file" "X" #'doom/delete-this-file
|
||||
:desc "Yank filename" "y" #'+default/yank-buffer-filename)
|
||||
|
||||
(:prefix ("g" . "git")
|
||||
(:prefix-map ("g" . "git")
|
||||
:desc "Git revert file" "R" #'vc-revert
|
||||
(:when (featurep! :ui vc-gutter)
|
||||
:desc "Git revert hunk" "r" #'git-gutter:revert-hunk
|
||||
|
@ -658,12 +658,12 @@
|
|||
:desc "Issue" "i" #'forge-create-issue
|
||||
:desc "Pull request" "p" #'forge-create-pullreq)))
|
||||
|
||||
(:prefix ("i" . "insert")
|
||||
(:prefix-map ("i" . "insert")
|
||||
:desc "Insert from clipboard" "y" #'+default/yank-pop
|
||||
:desc "Insert from evil register" "r" #'evil-ex-registers
|
||||
:desc "Insert snippet" "s" #'yas-insert-snippet)
|
||||
|
||||
(:prefix ("n" . "notes")
|
||||
(:prefix-map ("n" . "notes")
|
||||
:desc "Open deft" "d" #'deft
|
||||
:desc "Find file in notes" "n" #'+default/find-in-notes
|
||||
:desc "Browse notes" "N" #'+default/browse-notes
|
||||
|
@ -671,7 +671,7 @@
|
|||
:desc "Org capture" "x" #'org-capture
|
||||
:desc "Org store link" "l" #'org-store-link)
|
||||
|
||||
(:prefix ("o" . "open")
|
||||
(:prefix-map ("o" . "open")
|
||||
:desc "Org agenda" "A" #'org-agenda
|
||||
(:prefix ("a" . "org agenda")
|
||||
:desc "Agenda" "a" #'org-agenda
|
||||
|
@ -720,7 +720,7 @@
|
|||
(:when (featurep! :tools docker)
|
||||
:desc "Docker" "D" #'docker))
|
||||
|
||||
(:prefix ("p" . "project")
|
||||
(:prefix-map ("p" . "project")
|
||||
:desc "Browse project" "." #'+default/browse-project
|
||||
:desc "Find file in other project" ">" #'doom/find-file-in-other-project
|
||||
:desc "Find file in project" "/" #'projectile-find-file
|
||||
|
@ -743,7 +743,7 @@
|
|||
:desc "Open term in project" "t" #'projectile-run-term
|
||||
:desc "Open shell in project" "s" #'projectile-run-shell))
|
||||
|
||||
(:prefix ("q" . "session")
|
||||
(:prefix-map ("q" . "session")
|
||||
:desc "Quit Emacs" "q" #'save-buffers-kill-terminal
|
||||
:desc "Quit Emacs without saving" "Q" #'evil-quit-all-with-error-code
|
||||
:desc "Quick save current session" "s" #'doom/quicksave-session
|
||||
|
@ -754,7 +754,7 @@
|
|||
:desc "Restart Emacs" "R" #'doom/restart)
|
||||
|
||||
(:when (featurep! :tools upload)
|
||||
(:prefix ("r" . "remote")
|
||||
(:prefix-map ("r" . "remote")
|
||||
:desc "Upload local" "u" #'ssh-deploy-upload-handler
|
||||
:desc "Upload local (force)" "U" #'ssh-deploy-upload-handler-forced
|
||||
:desc "Download remote" "d" #'ssh-deploy-download-handler
|
||||
|
@ -763,7 +763,7 @@
|
|||
:desc "Detect remote changes" ">" #'ssh-deploy-remote-changes-handler))
|
||||
|
||||
(:when (featurep! :editor snippets)
|
||||
(:prefix ("s" . "snippets")
|
||||
(:prefix-map ("s" . "snippets")
|
||||
:desc "New snippet" "n" #'yas-new-snippet
|
||||
:desc "Insert snippet" "i" #'yas-insert-snippet
|
||||
:desc "Jump to mode snippet" "/" #'yas-visit-snippet-file
|
||||
|
@ -773,7 +773,7 @@
|
|||
:desc "Create temporary snippet" "c" #'aya-create
|
||||
:desc "Use temporary snippet" "e" #'aya-expand))
|
||||
|
||||
(:prefix ("t" . "toggle")
|
||||
(:prefix-map ("t" . "toggle")
|
||||
:desc "Flyspell" "s" #'flyspell-mode
|
||||
:desc "Flycheck" "f" #'flycheck-mode
|
||||
:desc "Line numbers" "l" #'doom/toggle-line-numbers
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue