[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ergoemacs-mode 8cfa471 270/325: Use nadvice, as request
From: |
Stefan Monnier |
Subject: |
[elpa] externals/ergoemacs-mode 8cfa471 270/325: Use nadvice, as requested by Stephan Monnier |
Date: |
Sat, 23 Oct 2021 18:49:08 -0400 (EDT) |
branch: externals/ergoemacs-mode
commit 8cfa4717ce2cc9cefe2ce17e64cb3dae7431c132
Author: Matthew Fidler <514778+mattfidler@users.noreply.github.com>
Commit: Matthew Fidler <514778+mattfidler@users.noreply.github.com>
Use nadvice, as requested by Stephan Monnier
---
ergoemacs-advice.el | 87 +++++++----------------------------------------------
ergoemacs-mode.el | 14 +++++++--
2 files changed, 23 insertions(+), 78 deletions(-)
diff --git a/ergoemacs-advice.el b/ergoemacs-advice.el
index 523590d..feb7724 100644
--- a/ergoemacs-advice.el
+++ b/ergoemacs-advice.el
@@ -34,21 +34,13 @@
(require 'ergoemacs-macros))
(require 'mouse)
+(require 'nadvice)
(defvar ergoemacs-mode)
(defvar ergoemacs-keymap)
(defvar ergoemacs-map--unbound-keys)
(defvar ergoemacs-user-keymap)
-(declare-function ergoemacs-map-- "ergoemacs-map")
-
-(declare-function ergoemacs-map-properties--hook-define-key
"ergoemacs-map-properties")
-(declare-function ergoemacs-map-properties--installed-p
"ergoemacs-map-properties")
-(declare-function ergoemacs-map-properties--label "ergoemacs-map-properties")
-(declare-function ergoemacs-map-properties--map-fixed-plist
"ergoemacs-map-properties")
-(declare-function ergoemacs-map-properties--original
"ergoemacs-map-properties")
-(declare-function ergoemacs-map-properties--original-user
"ergoemacs-map-properties")
-
(declare-function ergoemacs-key-description--substitute-command-keys
"ergoemacs-key-description")
(declare-function ergoemacs-translate--define-key "ergoemacs-translate")
@@ -62,64 +54,11 @@
(declare-function ergoemacs-command-loop--temp-message
"ergoemacs-command-loop")
(declare-function ergoemacs-key-description "ergoemacs-key-description")
-(defvar ergoemacs-advice--temp-replace-functions nil
- "List of `ergoemacs-mode' temporary replacement functions.
-
-These replacement functions are are turned on when
-`ergoemacs-mode' is turned on.")
-
-(defvar ergoemacs-advice--permanent-replace-functions nil
- "List of `ergoemacs-mode' permanent replacement functions.
-
-These replacement functinos are turned on after `ergoemacs-mode'
-is loaded, but not turned off.")
-
-(defun ergoemacs-advice--enable-replacement (ad &optional disable)
- "Enable ergoemacs-c advice AD (or optionally DISABLE)."
- (cond
- (disable
- (when (fboundp (intern (concat "ergoemacs-advice--real-" (symbol-name
ad))))
- (defalias ad (intern (concat "ergoemacs-advice--real-" (symbol-name ad)))
- (documentation (intern (concat "ergoemacs-advice--real-" (symbol-name
ad)))))))
- (t
- (when (fboundp (intern (concat "ergoemacs-advice--" (symbol-name ad))))
- (defalias ad (intern (concat "ergoemacs-advice--" (symbol-name ad)))
- (documentation (intern (concat "ergoemacs-advice--" (symbol-name
ad)))))))))
-
-(defun ergoemacs-advice--enable-replacements (&optional disable permanent)
- "Enable the function replacements.
-
-When DISABLE is non-nil, disable the replacements.
-
-When PERMANENT is non-nil, these replacements are permanent, not temporary."
- (dolist (ad (or (and permanent ergoemacs-advice--permanent-replace-functions)
- ergoemacs-advice--temp-replace-functions))
- (ergoemacs-advice--enable-replacement ad disable)))
-
-(add-hook 'ergoemacs-mode-startup-hook 'ergoemacs-advice--enable-replacements)
-
-(defun ergoemacs-advice--disable-replacements ()
- "Disable the function replacements."
- (ergoemacs-advice--enable-replacements t))
-
-(add-hook 'ergoemacs-mode-shutdown-hook
'ergoemacs-advice--disable-replacements)
-
-(defun ergoemacs-advice--enable-permanent-replacements ()
- "Enable permanent replacements."
- (ergoemacs-advice--enable-replacements nil t))
-
-(add-hook 'ergoemacs-mode-intialize-hook
'ergoemacs-advice--enable-permanent-replacements)
-
-(defvar ergoemacs--original-local-map nil
- "Original keymap used with `use-local-map'.")
-
-;; FIXME for emacs 25
-(ergoemacs-advice substitute-command-keys (string)
+(defun ergoemacs-advice-substitute-command-keys (orig-fun &rest args)
"Use `ergoemacs-substitute-command-keys' when `ergoemacs-mode' is enabled"
- :type :replace
(if ergoemacs-mode
- (ergoemacs-key-description--substitute-command-keys string)
- (ergoemacs-advice--real-substitute-command-keys string)))
+ (ergoemacs-key-description--substitute-command-keys (nth 0 args))
+ (funcall orig-fun args)))
(defun ergoemacs-mode--undefined-advice (&optional type)
@@ -155,25 +94,21 @@ TYPE is the type of translation installed."
(when (memq 'down (event-modifiers last-command-event))
current-prefix-arg)))))
-(ergoemacs-advice undefined ()
+(defun ergoemacs-advice-undefined (orig-fun)
"Allow `ergoemacs-mode' to display keys, and intercept ending <apps> keys."
- :type :around
- (if (not ergoemacs-mode)
- ad-do-it
- (ergoemacs-mode--undefined-advice)))
-
-(ergoemacs-advice handle-shift-selection ()
+ (if ergoemacs-mode
+ (ergoemacs-mode--undefined-advice)
+ (call-interactively orig-fun)))
+
+ (defun ergoemacs-advice-handle-shift-selection ()
"Allow `ergoemacs-mode' to do shift selection on keys like Alt+# to Alt+3."
- :type :before
(when (eq 'ergoemacs-command-loop--shift-translate (key-binding
(this-single-command-keys)))
(setq this-command-keys-shift-translated t)))
-(ergoemacs-advice read-key (&optional prompt)
+(defun ergoemacs-advice-read-key ()
"Drop single command keys for read-key." ; For compataiblity with emacs 25.5
- :type :before
(setq ergoemacs-command-loop--single-command-keys nil))
-
(provide 'ergoemacs-advice)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ergoemacs-advice.el ends here
diff --git a/ergoemacs-mode.el b/ergoemacs-mode.el
index 2451438..295a2e1 100644
--- a/ergoemacs-mode.el
+++ b/ergoemacs-mode.el
@@ -394,6 +394,8 @@ after initializing ergoemacs-mode.
(defvar ergoemacs-minor-alist nil
"ErgoEmacs minor mode keymap.")
+(declare-function ergoemacs-advice-undefined "ergoemacs-advice")
+
(defun ergoemacs-setup-override-keymap ()
"Setup `ergoemacs-mode' keymaps."
(setq ergoemacs-override-alist `((ergoemacs-mode . ,ergoemacs-user-keymap)
@@ -401,12 +403,20 @@ after initializing ergoemacs-mode.
(ergoemacs-mode . ,ergoemacs-keymap))
ergoemacs-minor-alist `((mark-active . ,ergoemacs-mark-active-keymap)))
(add-hook 'emulation-mode-map-alists ergoemacs-override-alist)
- (add-hook 'minor-mode-map-alist ergoemacs-minor-alist))
+ (add-hook 'minor-mode-map-alist ergoemacs-minor-alist)
+ (advice-add 'undefined :around #'ergoemacs-advice-undefined)
+ (advice-add 'substitute-command-keys :around
#'ergoemacs-advice-substitute-command-keys)
+ (advice-add 'handle-shift-selection :before
#'ergoemacs-advice-handle-shift-selection)
+ (advice-add 'read-key :before #'ergoemacs-advice-read-key))
(defun ergoemacs-remove-override-keymap ()
"Remove `ergoemacs-mode' keymaps."
(remove-hook 'emulation-mode-map-alists 'ergoemacs-override-alist)
- (remove-hook 'minor-mode-map-alist ergoemacs-minor-alist))
+ (remove-hook 'minor-mode-map-alist ergoemacs-minor-alist)
+ (advice-remove 'undefined #'ergoemacs-advice-undefined)
+ (advice-remove 'substitute-command-keys
#'ergoemacs-advice-substitute-command-keys)
+ (advice-remove 'handle-shift-selection
#'ergoemacs-advice-handle-shift-selection)
+ (advice-remove 'read-key #'ergoemacs-advice-read-key))
;;; Frequently used commands as aliases
- [elpa] externals/ergoemacs-mode 706e35e 024/325: Remove dead code, (continued)
- [elpa] externals/ergoemacs-mode 706e35e 024/325: Remove dead code, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode c3e7830 023/325: Remove option to bind C-c and C-x as copy/cut, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 25f5be8 022/325: Merge branch 'ctl-x-c', Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 0935e87 020/325: Remove timeout for ctl-x-c, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode b62f068 030/325: Remove more package stuff, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 46c76c0 036/325: Remove a little modal, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode c88308e 026/325: Make ergoemacs-test-keep-ctl-s work, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode d97731c 266/325: Add tab indent region when active again, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 21624e9 269/325: Bug fix for calculate bindings and update for the modes modified, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 3edd1e1 268/325: Save and restore keymaps on startup, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 8cfa471 270/325: Use nadvice, as requested by Stephan Monnier,
Stefan Monnier <=
- [elpa] externals/ergoemacs-mode c9d4c1b 015/325: Remove ergoemacs-package, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode b2a8bb7 099/325: Make 'compile' the default make target, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 18b3859 121/325: Simplify split-window binding, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode b378df1 105/325: Reindent, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode c973446 124/325: Remove redundant fixed-newline, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode cbfa5a9 115/325: Remove some now obsolete <apps> tests, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 1bd971e 137/325: Remove iswitchb bindings and misc cleanup, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode 377d498 107/325: Set variables properly. Lots of duplication., Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode c09952e 125/325: Remove all C-h help bindings except ergoemacs-describe-current-theme, Stefan Monnier, 2021/10/23
- [elpa] externals/ergoemacs-mode da06d4f 112/325: Fix more warnings. Remove compatibility with <25.1., Stefan Monnier, 2021/10/23