diff options
| author | Axel Forsman <axel@axelf.se> | 2023-08-07 18:35:24 +0200 |
|---|---|---|
| committer | Tom Dalziel <tom_dl@hotmail.com> | 2023-08-20 23:46:23 +0100 |
| commit | 3398b13b7455000d5647a13e0dfaf06ba8e31ba2 (patch) | |
| tree | 1c9c099aa19d84251252247fbad7eb45c5a6aec7 /evil-core.el | |
| parent | 44add36e972ed22ded6cb89654986e80d1d8989e (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.el | 17 |
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) |
