branch: externals/doc-view-follow
commit 692b5f436feebb74e1e69c96f9931d6a9eb8aace
Author: Paul Nelson <ultr...@gmail.com>
Commit: Paul Nelson <ultr...@gmail.com>

    Fix compatibility issue with follow-mode-prefix-key
    
    * doc-view-follow.el (doc-view-follow-mode-prefix-key)
    (doc-view-follow--update-prefix-key): Use follow-mode-prefix-key if
    available (Emacs 31+), else fall back to follow-mode-prefix.
---
 doc-view-follow.el | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/doc-view-follow.el b/doc-view-follow.el
index 9b78cc03ea..4570194070 100644
--- a/doc-view-follow.el
+++ b/doc-view-follow.el
@@ -69,20 +69,38 @@
   "n"   #'follow-next-window
   "p"   #'follow-previous-window)
 
-(defvar doc-view-follow-mode-prefix-key follow-mode-prefix-key
+(defvar doc-view-follow-mode-prefix-key
+  (cond ((boundp 'follow-mode-prefix-key)
+         (symbol-value 'follow-mode-prefix-key))
+        ((boundp 'follow-mode-prefix)
+         (key-description
+          (symbol-value 'follow-mode-prefix)))
+        (t
+         nil))
   "Prefix key to use for follow commands in Doc View Follow mode.
-By default, this matches `follow-mode-prefix-key'.")
+By default, this matches `follow-mode-prefix-key' (Emacs 31+) or
+`follow-mode-prefix' (earlier Emacs versions).")
 
-(defun doc-view-follow--update-prefix-key (_sym newval op _where)
+(defun doc-view-follow--update-prefix-key (sym newval op _where)
   "Update doc-view-follow mode keymap when the prefix key changes.
-Called when `follow-mode-prefix-key' is customized."
+Called when `follow-mode-prefix-key' is customized.
+SYM is the symbol being changed, NEWVAL is the new value, and OP is
+the operation being performed."
   (when (and (eq op 'set) (boundp 'doc-view-follow-mode-map))
     (keymap-unset doc-view-follow-mode-map doc-view-follow-mode-prefix-key t)
-    (setq doc-view-follow-mode-prefix-key newval)
-    (keymap-set doc-view-follow-mode-map newval doc-view-follow-mode-submap)))
+    (setq doc-view-follow-mode-prefix-key
+          (if (eq sym 'follow-mode-prefix)
+              (key-description newval)
+            newval))
+    (keymap-set doc-view-follow-mode-map
+                doc-view-follow-mode-prefix-key
+                doc-view-follow-mode-submap)))
 
 (add-variable-watcher
- 'follow-mode-prefix-key #'doc-view-follow--update-prefix-key)
+ (if (boundp 'follow-mode-prefix-key)
+     'follow-mode-prefix-key
+   'follow-mode-prefix)
+ #'doc-view-follow--update-prefix-key)
 
 (defvar-keymap doc-view-follow-mode-map
   "<remap> <doc-view-first-page>" #'doc-view-follow-beginning-of-buffer

Reply via email to