summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorVedang Manerikar <ved.manerikar@gmail.com>2025-12-30 21:19:04 +0530
committerVedang Manerikar <ved.manerikar@gmail.com>2025-12-31 08:32:12 +0530
commit804d183c59c7804f94fab652658fa7d4c4fd6ca0 (patch)
treeee393c7d791cd650b1866975e61d059bb34daeab /lisp
parent2e4b7bc3512017309c47e9db2ed419a872a79c28 (diff)
fix(pdf-view): replace obsolete registerv-make with cl-defstruct
The registerv-make function was deprecated in Emacs 27.1. Replace it with a proper cl-defstruct (pdf-view-register) and cl-defmethod implementations for register-val-jump-to, register-val-describe, and register-val-insert. Add tests for the register API used by pdf-view: - pdf-view-registerv-make-creates-register: verifies register creation - pdf-view-register-val-insert: verifies insert method works - pdf-view-position-to-register-stores-position: verifies store/retrieve Fixes: #333
Diffstat (limited to 'lisp')
-rw-r--r--lisp/pdf-view.el40
1 files changed, 25 insertions, 15 deletions
diff --git a/lisp/pdf-view.el b/lisp/pdf-view.el
index eabcce4..620e526 100644
--- a/lisp/pdf-view.el
+++ b/lisp/pdf-view.el
@@ -1843,21 +1843,22 @@ works only with bookmarks created by
(pdf-view-bookmark-jump-handler bmk)
(run-hooks 'bookmark-after-jump-hook))))
-(defun pdf-view-registerv-make ()
- "Create a PDF register entry of the current position."
- (registerv-make
- (pdf-view-bookmark-make-record nil t t)
- :print-func 'pdf-view-registerv-print-func
- :jump-func 'pdf-view-bookmark-jump
- :insert-func (lambda (bmk)
- (insert (format "%S" bmk)))))
-
-(defun pdf-view-registerv-print-func (bmk)
- "Print a textual representation of bookmark BMK.
-
-This function is used as the `:print-func' property with
-`registerv-make'."
- (let* ((file (bookmark-prop-get bmk 'filename))
+;; Register support using cl-defstruct (replaces obsolete registerv-make)
+(cl-defstruct (pdf-view-register
+ (:constructor nil)
+ (:constructor pdf-view-register--make (bookmark))
+ (:copier nil))
+ "A PDF position register entry."
+ bookmark)
+
+(cl-defmethod register-val-jump-to ((val pdf-view-register) _arg)
+ "Jump to the PDF position stored in VAL."
+ (pdf-view-bookmark-jump (pdf-view-register-bookmark val)))
+
+(cl-defmethod register-val-describe ((val pdf-view-register) _verbose)
+ "Print a description of the PDF position stored in VAL."
+ (let* ((bmk (pdf-view-register-bookmark val))
+ (file (bookmark-prop-get bmk 'filename))
(buffer (find-buffer-visiting file))
(page (bookmark-prop-get bmk 'page))
(origin (bookmark-prop-get bmk 'origin)))
@@ -1870,6 +1871,15 @@ This function is used as the `:print-func' property with
(round (* 100 (cdr origin)))
0)))))
+(cl-defmethod register-val-insert ((val pdf-view-register))
+ "Insert the PDF bookmark stored in VAL."
+ (insert (format "%S" (pdf-view-register-bookmark val))))
+
+(defun pdf-view-registerv-make ()
+ "Create a PDF register entry of the current position."
+ (pdf-view-register--make
+ (pdf-view-bookmark-make-record nil t t)))
+
(defmacro pdf-view-with-register-alist (&rest body)
"Setup the proper binding for `register-alist' in BODY.