emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ergoemacs-mode 9acd205 34/87: Fix Issue #451 by coding


From: Stefan Monnier
Subject: [elpa] externals/ergoemacs-mode 9acd205 34/87: Fix Issue #451 by coding a new old binding function
Date: Wed, 14 Apr 2021 18:47:02 -0400 (EDT)

branch: externals/ergoemacs-mode
commit 9acd2057fafe96ff7937e877f2d6edd04cc05dfe
Author: Fidler <matthew.fidler@gmail.com>
Commit: Fidler <matthew.fidler@gmail.com>

    Fix Issue #451 by coding a new old binding function
---
 ergoemacs-functions.el |  21 ++++++
 ergoemacs-map.el       | 173 +++++++++++++++++++++++++------------------------
 2 files changed, 108 insertions(+), 86 deletions(-)

diff --git a/ergoemacs-functions.el b/ergoemacs-functions.el
index 4516828..9edc59b 100644
--- a/ergoemacs-functions.el
+++ b/ergoemacs-functions.el
@@ -2730,6 +2730,27 @@ With a prefix argument like \\[universial-argument] in an
 (unless (fboundp 'ergoemacs-test)
   (autoload 'ergoemacs-test (expand-file-name "ergoemacs-test.el" 
ergoemacs-dir) nil t))
 
+(defun ergoemacs-where-is-old-binding ()
+  "Find where the old binding of a key is now located."
+  (interactive)
+  (let (ergoemacs-mode
+        key-seq
+       cmd
+        key-seq2)
+    (unwind-protect
+        (progn
+          (setq overriding-terminal-local-map (ergoemacs :original  
global-map))
+          (setq key-seq (read-key-sequence "Old Emacs Command: ")
+                cmd (key-binding key-seq)
+                overriding-terminal-local-map nil
+                key-seq2 (where-is-internal cmd nil t)))
+      (setq overriding-terminal-local-map nil))
+    (message "%s; %s" key-seq key-seq2)
+    (if key-seq2
+        (message "Old Emacs Key: %s-> Ergoemacs Key: %s" 
(ergoemacs-key-description  key-seq)
+                 (ergoemacs-key-description key-seq2))
+      (message "Could not find old emacs %s" (ergoemacs-key-description 
key-seq)))))
+
 (provide 'ergoemacs-functions)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; ergoemacs-functions.el ends here
diff --git a/ergoemacs-map.el b/ergoemacs-map.el
index 4c8cc2a..c2a77a7 100644
--- a/ergoemacs-map.el
+++ b/ergoemacs-map.el
@@ -953,92 +953,93 @@ If it is a tranisent map, assign the :dont-modify-p 
property to t."
   "Modifies Active maps.
 
 When INI is non-nil, add conditional maps to `minor-mode-map-alist'."
-  (let ((char-map (get-char-property-and-overlay (point) 'keymap))
-        (local-map (get-text-property (point) 'local-map))
-        (current-local-map (current-local-map))
-        tmp)
-    (when (and overriding-terminal-local-map
-               (not (eq overriding-terminal-local-map 
ergoemacs-map--modify-active-last-overriding-terminal-local-map))
-               (not (ergoemacs overriding-terminal-local-map :installed-p))
-              (not (memq 'add-keymap-witness overriding-terminal-local-map)))
-      ;; (ergoemacs-map--temporary-map-properties 
overriding-terminal-local-map)
-      (setq overriding-terminal-local-map (ergoemacs 
overriding-terminal-local-map)))
-    
-    (when (and overriding-local-map
-               (not (eq overriding-local-map 
ergoemacs-map--modify-active-last-overriding-local-map))
-               (not (ergoemacs overriding-local-map :installed-p)))
-      ;; (ergoemacs-map--temporary-map-properties overriding-local-map)
-      (setq overriding-local-map (ergoemacs overriding-local-map)))
-
-    (ergoemacs-save-buffer-state
-     (when (and char-map (symbolp char-map))
-       (setq char-map (ergoemacs-sv char-map)))
-     (when (and (listp char-map)
-               (car char-map)
-                (not (eq (car char-map) 
ergoemacs-map--modify-active-last-char-map))
-                (not (ergoemacs (car char-map) :installed-p)))
-       (cond
-        ((cdr char-map)
-         ;; Overlay
-         (overlay-put (cdr char-map) 'keymap (ergoemacs (car char-map))))
-        (t ;; Text Property
-         (put-text-property (previous-single-char-property-change (point) 
'keymap)
-                            (next-single-char-property-change (point) 'keymap)
-                            'keymap
-                            (ergoemacs (car char-map))))))
-     (when (and local-map (symbolp local-map))
-       (setq local-map (ergoemacs-sv local-map)))
-     (when (and local-map
-                (not (eq local-map 
ergoemacs-map--modify-active-last-local-map))
-                (not (ergoemacs local-map :installed-p)))
-       (put-text-property (previous-single-char-property-change (point) 
'local-map)
-                          (next-single-char-property-change (point) 'local-map)
-                          'local-map (ergoemacs local-map)))
-     ;; Save before any changes happen (ie in calc)
-     (when (and (not ergoemacs-map--saved-global-map)
-                (ergoemacs :ignore-global-changes-p))
-       (setq ergoemacs-map--saved-global-map (copy-keymap global-map)))
-     ;; Restore outside of modes that change the global map (calc)
-     (when (and ergoemacs-map--saved-global-map
-                (not (ergoemacs :ignore-global-changes-p)))
-       (setq global-map (copy-keymap ergoemacs-map--saved-global-map)
-             ergoemacs-map--saved-global-map nil)
-       (use-global-map global-map))
-     (when (and (setq tmp (current-global-map))
-                (ergoemacs-keymapp tmp)
-                (not (eq tmp global-map))
-                (or (not ergoemacs-map--last-global-map)
-                    (not (eq ergoemacs-map--last-global-map tmp)))
-                (not (ergoemacs tmp :installed-p)))
-       (use-global-map (ergoemacs tmp))
-       (setq ergoemacs-map--last-global-map (current-global-map)))
-     (when (and current-local-map (not (ergoemacs current-local-map 
:installed-p))
-                (not (minibufferp)))
-       (setq ergoemacs-map--breadcrumb (format "%s" major-mode))
-       (when (eq major-mode 'ess-mode)
-         (setq ergoemacs-map--breadcrumb (format "ess-mode-%s" ess-language)))
-       (use-local-map (ergoemacs current-local-map))
-       (setq ergoemacs-map--breadcrumb ""))
-     (when (and (minibufferp) ergoemacs-read-from-minibuffer-map)
-       (use-local-map (ergoemacs ergoemacs-read-from-minibuffer-map))
-       (setq ergoemacs-read-from-minibuffer-map nil
-             ergoemacs-map--breadcrumb ""))
-     ;; Run deferred "hooks"
-     (when (and (minibufferp) 
ergoemacs-component-struct--composed-hook-minibuffer)
-       (dolist (elt (reverse 
ergoemacs-component-struct--composed-hook-minibuffer))
-        (when (equal (ergoemacs (symbol-value elt) :map-key)
-                     (ergoemacs ergoemacs-read-from-minibuffer-map :map-key))
-          (use-local-map (make-composed-keymap (cdr elt) (current-local-map))))
-        (ergoemacs-save-buffer-state
-         (set (make-local-variable (car elt)) (make-composed-keymap (cdr elt) 
(symbol-value (car elt))))))
-       (setq ergoemacs-component-struct--composed-hook-minibuffer nil)))
-    (setq ergoemacs-map--modify-active-last-overriding-terminal-local-map 
overriding-terminal-local-map
-          ergoemacs-map--modify-active-last-overriding-local-map 
overriding-local-map
-          ergoemacs-map--modify-active-last-char-map char-map
-          ergoemacs-map--modify-active-last-local-map local-map)
-    (ergoemacs-map--emulation-mode-map-alists)
-    (ergoemacs-map--minor-mode-map-alist ini)
-    (ergoemacs-map--minor-mode-overriding-map-alist)))
+  (when ergoemacs-mode
+    (let ((char-map (get-char-property-and-overlay (point) 'keymap))
+         (local-map (get-text-property (point) 'local-map))
+         (current-local-map (current-local-map))
+         tmp)
+      (when (and overriding-terminal-local-map
+                (not (eq overriding-terminal-local-map 
ergoemacs-map--modify-active-last-overriding-terminal-local-map))
+                (not (ergoemacs overriding-terminal-local-map :installed-p))
+                (not (memq 'add-keymap-witness overriding-terminal-local-map)))
+       ;; (ergoemacs-map--temporary-map-properties 
overriding-terminal-local-map)
+       (setq overriding-terminal-local-map (ergoemacs 
overriding-terminal-local-map)))
+      
+      (when (and overriding-local-map
+                (not (eq overriding-local-map 
ergoemacs-map--modify-active-last-overriding-local-map))
+                (not (ergoemacs overriding-local-map :installed-p)))
+       ;; (ergoemacs-map--temporary-map-properties overriding-local-map)
+       (setq overriding-local-map (ergoemacs overriding-local-map)))
+
+      (ergoemacs-save-buffer-state
+       (when (and char-map (symbolp char-map))
+        (setq char-map (ergoemacs-sv char-map)))
+       (when (and (listp char-map)
+                 (car char-map)
+                 (not (eq (car char-map) 
ergoemacs-map--modify-active-last-char-map))
+                 (not (ergoemacs (car char-map) :installed-p)))
+        (cond
+         ((cdr char-map)
+          ;; Overlay
+          (overlay-put (cdr char-map) 'keymap (ergoemacs (car char-map))))
+         (t ;; Text Property
+          (put-text-property (previous-single-char-property-change (point) 
'keymap)
+                             (next-single-char-property-change (point) 'keymap)
+                             'keymap
+                             (ergoemacs (car char-map))))))
+       (when (and local-map (symbolp local-map))
+        (setq local-map (ergoemacs-sv local-map)))
+       (when (and local-map
+                 (not (eq local-map 
ergoemacs-map--modify-active-last-local-map))
+                 (not (ergoemacs local-map :installed-p)))
+        (put-text-property (previous-single-char-property-change (point) 
'local-map)
+                           (next-single-char-property-change (point) 
'local-map)
+                           'local-map (ergoemacs local-map)))
+       ;; Save before any changes happen (ie in calc)
+       (when (and (not ergoemacs-map--saved-global-map)
+                 (ergoemacs :ignore-global-changes-p))
+        (setq ergoemacs-map--saved-global-map (copy-keymap global-map)))
+       ;; Restore outside of modes that change the global map (calc)
+       (when (and ergoemacs-map--saved-global-map
+                 (not (ergoemacs :ignore-global-changes-p)))
+        (setq global-map (copy-keymap ergoemacs-map--saved-global-map)
+              ergoemacs-map--saved-global-map nil)
+        (use-global-map global-map))
+       (when (and (setq tmp (current-global-map))
+                 (ergoemacs-keymapp tmp)
+                 (not (eq tmp global-map))
+                 (or (not ergoemacs-map--last-global-map)
+                     (not (eq ergoemacs-map--last-global-map tmp)))
+                 (not (ergoemacs tmp :installed-p)))
+        (use-global-map (ergoemacs tmp))
+        (setq ergoemacs-map--last-global-map (current-global-map)))
+       (when (and current-local-map (not (ergoemacs current-local-map 
:installed-p))
+                 (not (minibufferp)))
+        (setq ergoemacs-map--breadcrumb (format "%s" major-mode))
+        (when (eq major-mode 'ess-mode)
+          (setq ergoemacs-map--breadcrumb (format "ess-mode-%s" ess-language)))
+        (use-local-map (ergoemacs current-local-map))
+        (setq ergoemacs-map--breadcrumb ""))
+       (when (and (minibufferp) ergoemacs-read-from-minibuffer-map)
+        (use-local-map (ergoemacs ergoemacs-read-from-minibuffer-map))
+        (setq ergoemacs-read-from-minibuffer-map nil
+              ergoemacs-map--breadcrumb ""))
+       ;; Run deferred "hooks"
+       (when (and (minibufferp) 
ergoemacs-component-struct--composed-hook-minibuffer)
+        (dolist (elt (reverse 
ergoemacs-component-struct--composed-hook-minibuffer))
+          (when (equal (ergoemacs (symbol-value elt) :map-key)
+                       (ergoemacs ergoemacs-read-from-minibuffer-map :map-key))
+            (use-local-map (make-composed-keymap (cdr elt) 
(current-local-map))))
+          (ergoemacs-save-buffer-state
+           (set (make-local-variable (car elt)) (make-composed-keymap (cdr 
elt) (symbol-value (car elt))))))
+        (setq ergoemacs-component-struct--composed-hook-minibuffer nil)))
+      (setq ergoemacs-map--modify-active-last-overriding-terminal-local-map 
overriding-terminal-local-map
+           ergoemacs-map--modify-active-last-overriding-local-map 
overriding-local-map
+           ergoemacs-map--modify-active-last-char-map char-map
+           ergoemacs-map--modify-active-last-local-map local-map)
+      (ergoemacs-map--emulation-mode-map-alists)
+      (ergoemacs-map--minor-mode-map-alist ini)
+      (ergoemacs-map--minor-mode-overriding-map-alist))))
 
 
 (defvar ergoemacs-map--quit-map nil



reply via email to

[Prev in Thread] Current Thread [Next in Thread]