Commit 28cbd14d authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

New kind of register value is a file name and position.

(jump-to-register): Handle file-query.
(register-swap-out): New function.  Add it to kill-buffer-hook.
(register-alist): Doc fix.
parent b455c665
......@@ -36,7 +36,9 @@
NAME is a character (a number). CONTENTS is a string, number,
frame configuration, mark or list.
A list of strings represents a rectangle.
A list of the form (file . NAME) represents the file named NAME.")
A list of the form (file . NAME) represents the file named NAME.
A list of the form (file-query NAME POSITION) represents position POSITION
in the file named NAME, but query before visiting it.")
(defun get-register (reg)
"Return contents of Emacs register named REG, or nil if none."
......@@ -101,9 +103,30 @@ delete any existing frames that the frame configuration doesn't mention.
(goto-char val))
((and (consp val) (eq (car val) 'file))
(find-file (cdr val)))
((and (consp val) (eq (car val) 'file-query))
(or (find-buffer-visiting (nth 1 val))
(y-or-n-p (format "Visit file %s again? " (nth 1 val)))
(error "Register access aborted"))
(find-file (nth 1 val))
(goto-char (nth 2 val)))
(error "Register doesn't contain a buffer position or configuration")))))
;; Turn markers into file-query references when a buffer is killed.
(defun register-swap-out ()
(and buffer-file-name
(let ((tail register-alist))
(while tail
(and (markerp (cdr (car tail)))
(eq (marker-buffer (cdr (car tail))) (current-buffer))
(setcdr (car tail)
(list 'file-query
(marker-position (cdr (car tail))))))
(setq tail (cdr tail))))))
(add-hook 'kill-buffer-hook 'register-swap-out)
;(defun number-to-register (arg char)
; "Store a number in a register.
;Two args, NUMBER and REGISTER (a character, naming the register).
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment