diff options
| author | Vedang Manerikar <ved.manerikar@gmail.com> | 2025-12-30 21:19:04 +0530 |
|---|---|---|
| committer | Vedang Manerikar <ved.manerikar@gmail.com> | 2025-12-31 08:32:12 +0530 |
| commit | 804d183c59c7804f94fab652658fa7d4c4fd6ca0 (patch) | |
| tree | ee393c7d791cd650b1866975e61d059bb34daeab /lisp | |
| parent | 2e4b7bc3512017309c47e9db2ed419a872a79c28 (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.el | 40 |
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. |
