emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 4b11706: * lisp/frameset.el: Stop using obsolete re


From: Stefan Monnier
Subject: [Emacs-diffs] master 4b11706: * lisp/frameset.el: Stop using obsolete registerv objects
Date: Tue, 28 May 2019 09:05:29 -0400 (EDT)

branch: master
commit 4b117065e9dcdd1542f90e5560e1ace6767faacb
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * 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.
---
 lisp/frameset.el | 50 +++++++++++++++++++++++++-------------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/lisp/frameset.el b/lisp/frameset.el
index 3bc7375..73b2071 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."
           ;; that frame has already been loaded (which can happen after
           ;; M-x desktop-read).
           (setq frame (frameset--find-frame-if
-                       (lambda (f id)
-                         (frameset-frame-id-equal-p f id))
+                       #'frameset-frame-id-equal-p
                        display (frameset-cfg-id parameters)))
           ;; If it has not been loaded, and it is not a minibuffer-only frame,
           ;; let's look for an existing non-minibuffer-only frame to reuse.
@@ -1350,15 +1349,17 @@ All keyword parameters default to nil."
 
 ;; Register support
 
-;;;###autoload
-(defun frameset--jump-to-register (data)
-  "Restore frameset from DATA stored in register.
-Called from `jump-to-register'.  Internal use only."
+(cl-defstruct (frameset-register
+               (:constructor nil)
+               (:constructor frameset-make-register (frameset frame-id point)))
+  frameset frame-id point)
+
+(cl-defmethod register-val-jump-to ((data frameset-register) arg)
   (frameset-restore
-   (aref data 0)
+   (frameset-register-frameset data)
    :filters frameset-session-filter-alist
-   :reuse-frames (if current-prefix-arg t 'match)
-   :cleanup-frames (if current-prefix-arg
+   :reuse-frames (if arg t 'match)
+   :cleanup-frames (if arg
                       ;; delete frames
                       nil
                     ;; iconify frames
@@ -1371,20 +1372,21 @@ Called from `jump-to-register'.  Internal use only."
                         ('ignored (delete-frame frame))))))
 
   ;; Restore selected frame, buffer and point.
-  (let ((frame (frameset-frame-with-id (aref data 1)))
+  (let ((frame (frameset-frame-with-id (frameset-register-frame-id data)))
+        (marker (frameset-register-point data))
        buffer window)
     (when frame
       (select-frame-set-input-focus frame)
-      (when (and (buffer-live-p (setq buffer (marker-buffer (aref data 2))))
+      (when (and (buffer-live-p
+                  (setq buffer (marker-buffer marker)))
                 (window-live-p (setq window (get-buffer-window buffer frame))))
        (set-frame-selected-window frame window)
-       (with-current-buffer buffer (goto-char (aref data 2)))))))
+       (with-current-buffer buffer (goto-char marker))))))
 
-;;;###autoload
-(defun frameset--print-register (data)
+(cl-defmethod register-val-describe ((data frameset-register) _verbose)
   "Print basic info about frameset stored in DATA.
 Called from `list-registers' and `view-register'.  Internal use only."
-  (let* ((fs (aref data 0))
+  (let* ((fs (frameset-register-frameset data))
         (ns (length (frameset-states fs))))
     (princ (format "a frameset (%d frame%s, saved on %s)."
                   ns
@@ -1400,16 +1402,14 @@ Argument is a character, naming the register.
 Interactively, reads the register using `register-read-with-preview'."
   (interactive (list (register-read-with-preview "Frameset to register: ")))
   (set-register register
-               (registerv-make
-                (vector (frameset-save nil
-                                       :app 'register
-                                       :filters frameset-session-filter-alist)
-                        ;; frameset-save does not include the value of point
-                        ;; in the current buffer, so record that separately.
-                        (frameset-frame-id nil)
-                        (point-marker))
-                :print-func #'frameset--print-register
-                :jump-func #'frameset--jump-to-register)))
+               (frameset-make-register
+                 (frameset-save nil
+                               :app 'register
+                               :filters frameset-session-filter-alist)
+                ;; frameset-save does not include the value of point
+                ;; in the current buffer, so record that separately.
+                (frameset-frame-id nil)
+                (point-marker))))
 
 (provide 'frameset)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]