aboutsummaryrefslogtreecommitdiff
path: root/evil-core.el
diff options
context:
space:
mode:
authorAxel Forsman <axel@axelf.se>2023-08-07 18:35:24 +0200
committerAxel Forsman <axel@axelf.se>2023-08-12 10:47:11 +0200
commit1b56ffcc102b4c5f8b015e760b5f9cf5932622af (patch)
treecc35e9997c92e6335c8949128a3444a37a904a0f /evil-core.el
parent3d7faadf30016a8c20699a5fb1b5731b8a49dcd2 (diff)
Merge evil-with-delay condition and body lambdas
This commit makes evil-with-delay generated code work using a single lambda that returns the result of condition, running body if non-nil. This way the byte compiler sees that body is guarded by condition, which fixes the FIXME.
Diffstat (limited to 'evil-core.el')
-rw-r--r--evil-core.el17
1 files changed, 5 insertions, 12 deletions
diff --git a/evil-core.el b/evil-core.el
index 1b0dcc7..2f9a575 100644
--- a/evil-core.el
+++ b/evil-core.el
@@ -980,18 +980,11 @@ mode, in which case `evil-define-minor-mode-key' is used."
;; BEWARE: Can't work for lexically scoped vars
`(and (boundp ',keymap) (keymapp ,keymap))
`(keymapp ,keymap))
- (after-load-functions t nil
- ,(format "evil-define-key-in-%s"
- (if (symbolp keymap) keymap
- 'keymap)))
- ;; Sadly, the compiler doesn't understand `evil-with-delay's
- ;; code well enough to figure out that the keymap var is
- ;; necessarily bound since we just tested `boundp'.
- ,(when (symbolp keymap) `(defvar ,keymap))
- (condition-case-unless-debug err
- (evil-define-key* ,state ,keymap ,key ,def ,@bindings)
- (error (message "error in evil-define-key: %s"
- (error-message-string err))))))))
+ (after-load-functions
+ t nil ,(format "evil-define-key-in-%s"
+ (if (symbolp keymap) keymap 'keymap)))
+ (with-demoted-errors "Error in evil-define-key: %S"
+ (evil-define-key* ,state ,keymap ,key ,def ,@bindings))))))
(defalias 'evil-declare-key #'evil-define-key)
(defun evil-define-key* (state keymap key def &rest bindings)