mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-05 22:20:24 -08:00
Add buffer-local register commands to DocView
* lisp/doc-view.el (doc-view-register-alist): New defvar to keep track of buffer-local register-alist. (doc-view-page-to-register, doc-view-jump-to-register): Add new commands to set and jump to buffer-local registers. (register-val-insert, register-val-describe) (register-val-jump-to): Register defmethod to save and restore doc-view registers. (doc-view-mode-map): Bind the new commands. * doc/emacs/misc.texi (DocView Navigation): Document the new commands. (Bug#73293) * etc/NEWS: Announce the change.
This commit is contained in:
parent
bba14a2767
commit
fb3aa69356
3 changed files with 69 additions and 1 deletions
|
|
@ -556,7 +556,10 @@ Typically \"page-%s.png\".")
|
|||
"C-c C-c" #'doc-view-toggle-display
|
||||
;; Open a new buffer with doc's text contents
|
||||
"C-c C-t" #'doc-view-open-text
|
||||
"r" #'revert-buffer)
|
||||
"r" #'revert-buffer
|
||||
;; Registers
|
||||
"m" #'doc-view-page-to-register
|
||||
"'" #'doc-view-jump-to-register)
|
||||
|
||||
(define-obsolete-function-alias 'doc-view-revert-buffer #'revert-buffer "27.1")
|
||||
(defvar revert-buffer-preserve-modes)
|
||||
|
|
@ -2468,6 +2471,55 @@ See the command `doc-view-mode' for more information on this mode."
|
|||
|
||||
(put 'doc-view-bookmark-jump 'bookmark-handler-type "DocView")
|
||||
|
||||
;;; Register integration
|
||||
|
||||
(defvar-local doc-view-register-alist nil
|
||||
"Register alist containing only doc-view registers for current buffer.
|
||||
Each doc-view register entry is of the form (doc-view . ALIST) where
|
||||
ALIST has the keys `buffer', `file', and `page'. `buffer' is the buffer
|
||||
the `file' is visiting. `page' is the page number to be show.")
|
||||
|
||||
(defun doc-view-page-to-register (register)
|
||||
"Store the current page to the register REGISTER."
|
||||
(interactive
|
||||
(let ((register-alist doc-view-register-alist))
|
||||
(list (register-read-with-preview "Page to register: "))))
|
||||
(let ((register-alist doc-view-register-alist))
|
||||
(set-register register
|
||||
`(doc-view
|
||||
(buffer . ,(current-buffer))
|
||||
(file . ,(buffer-file-name))
|
||||
(page . ,(doc-view-current-page))))
|
||||
(setq doc-view-register-alist register-alist)))
|
||||
|
||||
(defun doc-view-jump-to-register (register)
|
||||
"Jump to the register REGISTER."
|
||||
(interactive
|
||||
(let ((register-alist doc-view-register-alist))
|
||||
(list (register-read-with-preview "Jump to register: "))))
|
||||
(let ((register-alist doc-view-register-alist))
|
||||
(jump-to-register register)))
|
||||
|
||||
(cl-defmethod register-val-insert ((val (head doc-view)))
|
||||
(prin1 val))
|
||||
|
||||
(cl-defmethod register-val-describe ((val (head doc-view)) _verbose)
|
||||
(let* ((alist (cdr val))
|
||||
(name (or (file-name-nondirectory (alist-get 'file alist))
|
||||
(buffer-name (alist-get 'buffer alist)))))
|
||||
(princ name)
|
||||
(princ " p. ")
|
||||
(princ (alist-get 'page alist))))
|
||||
|
||||
(cl-defmethod register-val-jump-to ((val (head doc-view)) _arg)
|
||||
(let* ((alist (cdr val))
|
||||
(buffer (or (alist-get 'buffer alist)
|
||||
(find-buffer-visiting (alist-get 'file alist)))))
|
||||
(unless buffer
|
||||
(user-error "Cannot find the doc-view buffer to jump to"))
|
||||
(switch-to-buffer buffer)
|
||||
(doc-view-goto-page (alist-get 'page alist))))
|
||||
|
||||
;; Obsolete.
|
||||
|
||||
(defun doc-view-intersection (l1 l2)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue