[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ergoemacs-mode bcaf49b 03/87: Don't allow infinite recu
From: |
Stefan Monnier |
Subject: |
[elpa] externals/ergoemacs-mode bcaf49b 03/87: Don't allow infinite recursion on mapkeymap. |
Date: |
Wed, 14 Apr 2021 18:46:56 -0400 (EDT) |
branch: externals/ergoemacs-mode
commit bcaf49b631d3744a5ee11288aae689d319578e95
Author: Fidler <matthew.fidler@gmail.com>
Commit: Fidler <matthew.fidler@gmail.com>
Don't allow infinite recursion on mapkeymap.
Should fix Issues #442 and #440
---
ergoemacs-mapkeymap.el | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/ergoemacs-mapkeymap.el b/ergoemacs-mapkeymap.el
index b7d9e9c..f7c52cc 100644
--- a/ergoemacs-mapkeymap.el
+++ b/ergoemacs-mapkeymap.el
@@ -84,6 +84,8 @@ If `ergoemacs-mode' cant determine the value, return nil."
(and (fboundp keymap) (setq tmp (symbol-function
keymap))
(ergoemacs-keymapp tmp) tmp))))))))
+(defvar ergoemacs-map-keymap--submap-stack nil)
+
(defun ergoemacs-map-keymap--map-submap (sub-keymap function &optional
original prefix flat-keymap nil-keys)
"Expose SUB-KEYMAP, then apply `ergoemacs-map-keymap'.
@@ -95,15 +97,18 @@ FLAT-KEYMAP and NIL-KEYS arguments. It is missing the
keymap
argument, since it is calculated from the exposed sub-keymap."
(let ((tmp (ergoemacs-map-keymap--expose-keymap sub-keymap)))
(when tmp
- (ergoemacs-map-keymap function
- (cond
- ((eq original :setcdr)
- (ergoemacs-setcdr (cdr tmp)
- (cdr (ergoemacs :original
tmp))))
- (original
- (ergoemacs :original tmp))
- (t tmp))
- original prefix flat-keymap nil-keys))))
+ (unless (memq tmp ergoemacs-map-keymap--submap-stack)
+ (push tmp ergoemacs-map-keymap--submap-stack)
+ (ergoemacs-map-keymap function
+ (cond
+ ((eq original :setcdr)
+ (ergoemacs-setcdr (cdr tmp)
+ (cdr (ergoemacs :original
tmp))))
+ (original
+ (ergoemacs :original tmp))
+ (t tmp))
+ original prefix flat-keymap nil-keys)
+ (pop ergoemacs-map-keymap--submap-stack)))))
(defun ergoemacs-map-keymap (function keymap &optional original prefix
flat-keymap nil-keys)
"Call FUNCTION for all keys in hash table KEYMAP.
- [elpa] externals/ergoemacs-mode updated (5450f4d -> f9d6e3f), Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode 7ba903e4 04/87: Don't grow mouse commands & set this-command before command is called, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode bcaf49b 03/87: Don't allow infinite recursion on mapkeymap.,
Stefan Monnier <=
- [elpa] externals/ergoemacs-mode f12edbb 02/87: Maybe Fix issue #426, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode f10eecc 01/87: Fix overriding keymap. Needs to be expanded., Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode 27f60cc 11/87: Will eat commands for self insert like <apps> e t, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode b3df015 17/87: Make sure changing local variables doesn't affect save state, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode a1dd7a7 09/87: Eat command prefixes that were intercepted by the timer, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode f7a68f6 29/87: Add back Ctrl+Shift+c and Ctrl+Shift+x., Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode 59cb758 08/87: Change to an idle timer for more stability, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode 07ef724 22/87: Change ergoemacs-override-keymap key bindings., Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode a75a338 07/87: Add ergoemacs start prefix correctly, Stefan Monnier, 2021/04/14
- [elpa] externals/ergoemacs-mode f3dd332 23/87: Revert set-map-list, Stefan Monnier, 2021/04/14