[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/embark 273261b717: Generalize embark-keymap-alist to al
From: |
ELPA Syncer |
Subject: |
[elpa] externals/embark 273261b717: Generalize embark-keymap-alist to allow lists of keymaps |
Date: |
Fri, 6 May 2022 20:57:34 -0400 (EDT) |
branch: externals/embark
commit 273261b717fbc12ff8e46392a4ce813158877fa2
Author: Omar Antolín <omar.antolin@gmail.com>
Commit: Omar Antolín <omar.antolin@gmail.com>
Generalize embark-keymap-alist to allow lists of keymaps
---
embark-org.el | 28 +++++++---------------
embark.el | 77 ++++++++++++++++++++++++++++++++++-------------------------
2 files changed, 53 insertions(+), 52 deletions(-)
diff --git a/embark-org.el b/embark-org.el
index 63778b7f5f..ee532e67aa 100644
--- a/embark-org.el
+++ b/embark-org.el
@@ -289,15 +289,6 @@ also the whole target.")
("'" org-insert-link)
("w" 'embark-org-copy-map))
-(defmacro embark-org--define-link-keymap (type)
- "Define a keymap for Org link of given TYPE.
-The keymap will inherit from `embark-org-link-map' and from
-`embark-TYPE-map' in that order."
- `(defvar ,(intern (format "embark-org-%s-link-map" type))
- (make-composed-keymap embark-org-link-map
- ,(intern (format "embark-%s-map" type)))
- ,(format "Keymap for Embark actions on Org %s links" type)))
-
;; The reason for this is left as an exercise to the reader.
;; Solution: Na ryvfc gnetrg znl cebzcg gur hfre sbe fbzrguvat!
(push 'embark--ignore-target
@@ -306,17 +297,16 @@ The keymap will inherit from `embark-org-link-map' and
from
(push 'embark--ignore-target
(alist-get 'org-insert-link embark-target-injection-hooks))
-(embark-org--define-link-keymap url)
-(embark-org--define-link-keymap file)
-(embark-org--define-link-keymap email)
-(embark-org--define-link-keymap expression)
-
-(add-to-list 'embark-keymap-alist '(org-link . embark-org-link-map))
-(add-to-list 'embark-keymap-alist '(org-url-link . embark-org-url-link-map))
-(add-to-list 'embark-keymap-alist '(org-email-link .
embark-org-email-link-map))
-(add-to-list 'embark-keymap-alist '(org-file-link . embark-org-file-link-map))
(add-to-list 'embark-keymap-alist
- '(org-expression-link . embark-org-expression-link-map))
+ '(org-link embark-org-link-map))
+(add-to-list 'embark-keymap-alist
+ '(org-url-link embark-org-link-map embark-url-map))
+(add-to-list 'embark-keymap-alist
+ '(org-email-link embark-org-link-map embark-email-map))
+(add-to-list 'embark-keymap-alist
+ '(org-file-link embark-org-link-map embark-file-map))
+(add-to-list 'embark-keymap-alist
+ '(org-expression-link embark-org-link-map embark-expression-map))
;;; Source blocks and babel calls
diff --git a/embark.el b/embark.el
index bab357c81d..e8c9d9c85c 100644
--- a/embark.el
+++ b/embark.el
@@ -122,35 +122,38 @@
:group 'minibuffer)
(defcustom embark-keymap-alist
- `((file . embark-file-map)
- (library . embark-library-map)
- (environment-variables . embark-file-map) ; they come up in file completion
- (url . embark-url-map)
- (email . embark-email-map)
- (buffer . embark-buffer-map)
- (tab . embark-tab-map)
- (expression . embark-expression-map)
- (identifier . embark-identifier-map)
- (,'defun . embark-defun-map) ;; Avoid package-lint warning
- (symbol . embark-symbol-map)
- (face . embark-face-map)
- (command . embark-command-map)
- (variable . embark-variable-map)
- (function . embark-function-map)
- (minor-mode . embark-command-map)
- (unicode-name . embark-unicode-name-map)
- (package . embark-package-map)
- (bookmark . embark-bookmark-map)
- (region . embark-region-map)
- (sentence . embark-sentence-map)
- (paragraph . embark-paragraph-map)
- (kill-ring . embark-kill-ring-map)
- (heading . embark-heading-map)
- (t . embark-general-map))
+ '((file embark-file-map)
+ (library embark-library-map)
+ (environment-variables embark-file-map) ; they come up in file completion
+ (url embark-url-map)
+ (email embark-email-map)
+ (buffer embark-buffer-map)
+ (tab embark-tab-map)
+ (expression embark-expression-map)
+ (identifier embark-identifier-map)
+ (defun embark-defun-map)
+ (symbol embark-symbol-map)
+ (face embark-face-map)
+ (command embark-command-map)
+ (variable embark-variable-map)
+ (function embark-function-map)
+ (minor-mode embark-command-map)
+ (unicode-name embark-unicode-name-map)
+ (package embark-package-map)
+ (bookmark embark-bookmark-map)
+ (region embark-region-map)
+ (sentence embark-sentence-map)
+ (paragraph embark-paragraph-map)
+ (kill-ring embark-kill-ring-map)
+ (heading embark-heading-map)
+ (t embark-general-map))
"Alist of action types and corresponding keymaps.
-For any type not listed here, `embark-act' will use
-`embark-general-map'."
- :type '(alist :key-type symbol :value-type variable))
+The special key `t' is associated with the default keymap to use.
+Each value can be either a single symbol whose value is a keymap,
+or a list of such symbols."
+ :type '(alist :key-type (symbol :tag "Target type")
+ :value-type (choice (variable :tag "Keymap")
+ (repeat :tag "Keymaps" variable))))
(defcustom embark-target-finders
'(embark-target-top-minibuffer-completion
@@ -976,6 +979,17 @@ their own target finder. See for example
"Return the key to use for `embark-cycle'."
(or embark-cycle-key (car (where-is-internal #'embark-act))))
+(defun embark--raw-action-keymap (type)
+ "Return raw action map for targets of given TYPE.
+This does not take into account the default action, help key or
+cycling bindings, just what's registered in
+`embark-keymap-alist'."
+ (make-composed-keymap
+ (mapcar #'symbol-value
+ (let ((actions (or (alist-get type embark-keymap-alist)
+ (alist-get t embark-keymap-alist))))
+ (if (consp actions) actions (list actions))))))
+
(defun embark--action-keymap (type cycle)
"Return action keymap for targets of given TYPE.
If CYCLE is non-nil bind `embark-cycle'."
@@ -988,8 +1002,7 @@ If CYCLE is non-nil bind `embark-cycle'."
(when embark-help-key
(define-key map embark-help-key #'embark-keymap-help))
map)
- (symbol-value (or (alist-get type embark-keymap-alist)
- (alist-get t embark-keymap-alist)))))
+ (embark--raw-action-keymap type)))
(defun embark--truncate-target (target)
"Truncate TARGET string."
@@ -1986,9 +1999,7 @@ keymap for the given type."
(alist-get type embark-default-action-overrides)
(alist-get t embark-default-action-overrides)
embark--command
- (lookup-key (symbol-value (or (alist-get type embark-keymap-alist)
- (alist-get t embark-keymap-alist)))
- (kbd "RET"))))
+ (lookup-key (embark--raw-action-keymap type) (kbd "RET"))))
(defun embark--rotate (list k)
"Rotate LIST by K elements and return the rotated list."
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/embark 273261b717: Generalize embark-keymap-alist to allow lists of keymaps,
ELPA Syncer <=