diff options
| author | Axel Forsman <axel@axelf.se> | 2023-08-07 18:35:24 +0200 |
|---|---|---|
| committer | Axel Forsman <axel@axelf.se> | 2023-08-12 10:47:11 +0200 |
| commit | 1b56ffcc102b4c5f8b015e760b5f9cf5932622af (patch) | |
| tree | cc35e9997c92e6335c8949128a3444a37a904a0f /evil-core.el | |
| parent | 3d7faadf30016a8c20699a5fb1b5731b8a49dcd2 (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) |
