aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2019-05-28 09:05:25 -0400
committerStefan Monnier2019-05-28 09:05:25 -0400
commit4b117065e9dcdd1542f90e5560e1ace6767faacb (patch)
tree28ad2800385811d2c17d743677aba473a134f964
parentdd5ea0a068ce72277b9e06427063bf059ed1d03c (diff)
downloademacs-4b117065e9dcdd1542f90e5560e1ace6767faacb.tar.gz
emacs-4b117065e9dcdd1542f90e5560e1ace6767faacb.zip
* lisp/frameset.el: Stop using obsolete registerv objects
(frameset-register): New type. (register-val-jump-to): Define on this new type, replacing frameset--jump-to-register. (register-val-describe): Define on this new type, replacing frameset--print-register. (frameset-to-register): Use new frameset-make-register. (frameset--reuse-frame): η-reduce.
-rw-r--r--lisp/frameset.el50
1 files changed, 25 insertions, 25 deletions
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 3bc73751c0e..73b2071a5a0 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -970,8 +970,7 @@ is the parameter alist of the frame being restored. Internal use only."
970 ;; that frame has already been loaded (which can happen after 970 ;; that frame has already been loaded (which can happen after
971 ;; M-x desktop-read). 971 ;; M-x desktop-read).
972 (setq frame (frameset--find-frame-if 972 (setq frame (frameset--find-frame-if
973 (lambda (f id) 973 #'frameset-frame-id-equal-p
974 (frameset-frame-id-equal-p f id))
975 display (frameset-cfg-id parameters))) 974 display (frameset-cfg-id parameters)))
976 ;; If it has not been loaded, and it is not a minibuffer-only frame, 975 ;; If it has not been loaded, and it is not a minibuffer-only frame,
977 ;; let's look for an existing non-minibuffer-only frame to reuse. 976 ;; let's look for an existing non-minibuffer-only frame to reuse.
@@ -1350,15 +1349,17 @@ All keyword parameters default to nil."
1350 1349
1351;; Register support 1350;; Register support
1352 1351
1353;;;###autoload 1352(cl-defstruct (frameset-register
1354(defun frameset--jump-to-register (data) 1353 (:constructor nil)
1355 "Restore frameset from DATA stored in register. 1354 (:constructor frameset-make-register (frameset frame-id point)))
1356Called from `jump-to-register'. Internal use only." 1355 frameset frame-id point)
1356
1357(cl-defmethod register-val-jump-to ((data frameset-register) arg)
1357 (frameset-restore 1358 (frameset-restore
1358 (aref data 0) 1359 (frameset-register-frameset data)
1359 :filters frameset-session-filter-alist 1360 :filters frameset-session-filter-alist
1360 :reuse-frames (if current-prefix-arg t 'match) 1361 :reuse-frames (if arg t 'match)
1361 :cleanup-frames (if current-prefix-arg 1362 :cleanup-frames (if arg
1362 ;; delete frames 1363 ;; delete frames
1363 nil 1364 nil
1364 ;; iconify frames 1365 ;; iconify frames
@@ -1371,20 +1372,21 @@ Called from `jump-to-register'. Internal use only."
1371 ('ignored (delete-frame frame)))))) 1372 ('ignored (delete-frame frame))))))
1372 1373
1373 ;; Restore selected frame, buffer and point. 1374 ;; Restore selected frame, buffer and point.
1374 (let ((frame (frameset-frame-with-id (aref data 1))) 1375 (let ((frame (frameset-frame-with-id (frameset-register-frame-id data)))
1376 (marker (frameset-register-point data))
1375 buffer window) 1377 buffer window)
1376 (when frame 1378 (when frame
1377 (select-frame-set-input-focus frame) 1379 (select-frame-set-input-focus frame)
1378 (when (and (buffer-live-p (setq buffer (marker-buffer (aref data 2)))) 1380 (when (and (buffer-live-p
1381 (setq buffer (marker-buffer marker)))
1379 (window-live-p (setq window (get-buffer-window buffer frame)))) 1382 (window-live-p (setq window (get-buffer-window buffer frame))))
1380 (set-frame-selected-window frame window) 1383 (set-frame-selected-window frame window)
1381 (with-current-buffer buffer (goto-char (aref data 2))))))) 1384 (with-current-buffer buffer (goto-char marker))))))
1382 1385
1383;;;###autoload 1386(cl-defmethod register-val-describe ((data frameset-register) _verbose)
1384(defun frameset--print-register (data)
1385 "Print basic info about frameset stored in DATA. 1387 "Print basic info about frameset stored in DATA.
1386Called from `list-registers' and `view-register'. Internal use only." 1388Called from `list-registers' and `view-register'. Internal use only."
1387 (let* ((fs (aref data 0)) 1389 (let* ((fs (frameset-register-frameset data))
1388 (ns (length (frameset-states fs)))) 1390 (ns (length (frameset-states fs))))
1389 (princ (format "a frameset (%d frame%s, saved on %s)." 1391 (princ (format "a frameset (%d frame%s, saved on %s)."
1390 ns 1392 ns
@@ -1400,16 +1402,14 @@ Argument is a character, naming the register.
1400Interactively, reads the register using `register-read-with-preview'." 1402Interactively, reads the register using `register-read-with-preview'."
1401 (interactive (list (register-read-with-preview "Frameset to register: "))) 1403 (interactive (list (register-read-with-preview "Frameset to register: ")))
1402 (set-register register 1404 (set-register register
1403 (registerv-make 1405 (frameset-make-register
1404 (vector (frameset-save nil 1406 (frameset-save nil
1405 :app 'register 1407 :app 'register
1406 :filters frameset-session-filter-alist) 1408 :filters frameset-session-filter-alist)
1407 ;; frameset-save does not include the value of point 1409 ;; frameset-save does not include the value of point
1408 ;; in the current buffer, so record that separately. 1410 ;; in the current buffer, so record that separately.
1409 (frameset-frame-id nil) 1411 (frameset-frame-id nil)
1410 (point-marker)) 1412 (point-marker))))
1411 :print-func #'frameset--print-register
1412 :jump-func #'frameset--jump-to-register)))
1413 1413
1414(provide 'frameset) 1414(provide 'frameset)
1415 1415