branch: externals/cursor-undo
commit c544a74e5e4e46bc1211fdad25248200c330ec7b
Author: Luke Lee <luke@gauss>
Commit: Luke Lee <luke@gauss>

    Fix for upgrading package by allowing redefining of advised functions.
    
    * cursor-undo.el: change redefining errors to warnings.
    (def-cursor-undo, disable-cursor-tracking): prevent redefining errors
    that prevent users from upgrading package, also attempt to cease
    warning on upgrading.
---
 cursor-undo.el | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/cursor-undo.el b/cursor-undo.el
index b16175d81b..cd10f20c46 100644
--- a/cursor-undo.el
+++ b/cursor-undo.el
@@ -5,7 +5,7 @@
 ;; Author:       Luke Lee <luke.yx....@gmail.com>
 ;; Maintainer:   Luke Lee <luke.yx....@gmail.com>
 ;; Keywords:     undo, cursor
-;; Version:      1.1.3
+;; Version:      1.1.4
 
 ;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -183,10 +183,11 @@ relative screen position (screen-pos=NIL) nor `point' 
position (no-move=t)."))
          (def-advice-sym (intern-soft
                           (concat func-sym-str "@" advice-sym-str))))
     ;; prevent duplicate definition
-    (if def-advice-sym
-        (error (message
-                (format "Error: Redefining cursor undo advice for `%S'"
-                        func-sym))))
+    (when def-advice-sym
+      (unless (member #'package-menu--post-refresh post-command-hook)
+        ;; do not warn when upgrading this package
+        (warn "Redefining cursor undo advice for `%S'" func-sym))
+      (advice-remove func-sym def-advice-sym))
     `(define-advice ,func-sym (:around (orig-func &rest args) ,advice-sym)
        (let* ((cursor-tracking cundo-enable-cursor-tracking)
               ;; prevent nested calls for complicated compound commands
@@ -257,10 +258,11 @@ relative screen position (screen-pos=NIL) nor `point' 
position (no-move=t)."))
          (def-advice-sym (intern-soft
                           (concat func-sym-str "@" advice-sym-str))))
     ;; prevent duplicate definition
-    (if def-advice-sym
-        (error (message (format
-"Error: Redefining cursor tracking disabling advice for `%S'"
-                         func-sym))))
+    (when def-advice-sym
+      (unless (member #'package-menu--post-refresh post-command-hook)
+        ;; do not warn when upgrading this package
+        (warn "Redefining cursor tracking disabling advice for `%S'" func-sym))
+      (advice-remove func-sym def-advice-sym))
     `(define-advice ,func-sym (:around (orig-func &rest args) ,advice-sym)
        (let ((cundo-enable-cursor-tracking nil))
          (apply orig-func args)))))

Reply via email to