summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuanma Barranquero <lekktu@gmail.com>2013-08-09 02:30:24 +0200
committerJuanma Barranquero <lekktu@gmail.com>2013-08-09 02:30:24 +0200
commit77187e6f36e423fbf291ce9ea824d4b8da66108d (patch)
tree2960640f322e8f876ff5d569bc6dd3663e1dbb3b
parent9d3aa82cf961afda732fc369a42321f4bfbc0021 (diff)
downloademacs-77187e6f36e423fbf291ce9ea824d4b8da66108d.tar.gz
Move frameset-to-register stuff from register.el to frameset.el.
lisp/register.el (frameset-frame-id, frameset-frame-with-id, frameset-p) (frameset-restore, frameset-save, frameset-session-filter-alist): Remove declarations. (register-alist): Doc fix. (frameset-to-register): Move to frameset.el. (jump-to-register, describe-register-1): Remove frameset-specific code. lisp/frameset.el (frameset-p): Add autoload cookie. (frameset--jump-to-register): New function, based on code moved from register.el. (frameset-to-register): Move from register.el. Adapt to `registerv'.
-rw-r--r--lisp/ChangeLog14
-rw-r--r--lisp/frameset.el38
-rw-r--r--lisp/register.el39
3 files changed, 53 insertions, 38 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f240aa445d0..382c5804330 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,17 @@
+2013-08-09 Juanma Barranquero <lekktu@gmail.com>
+
+ * frameset.el (frameset-p): Add autoload cookie.
+ (frameset--jump-to-register): New function, based on code moved from
+ register.el.
+ (frameset-to-register): Move from register.el. Adapt to `registerv'.
+
+ * register.el (frameset-frame-id, frameset-frame-with-id, frameset-p)
+ (frameset-restore, frameset-save, frameset-session-filter-alist):
+ Remove declarations.
+ (register-alist): Doc fix.
+ (frameset-to-register): Move to frameset.el.
+ (jump-to-register, describe-register-1): Remove frameset-specific code.
+
2013-08-08 Juanma Barranquero <lekktu@gmail.com>
* allout-widgets.el (allout-widgets-pre-command-business)
diff --git a/lisp/frameset.el b/lisp/frameset.el
index b1ad9f7702a..132cbcd4856 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -129,6 +129,9 @@ root window of the frame.\n
IMPORTANT: Modifying this slot may cause frameset functions to fail,
unless the type constraints defined above are respected.\n\n(fn FRAMESET)")
+;;;###autoload (autoload 'frameset-p "frameset"
+;;;###autoload "Return non-nil if OBJECT is a frameset, nil otherwise." nil)
+
(defun frameset-copy (frameset)
"Return a deep copy of FRAMESET.
FRAMESET is copied with `copy-tree'."
@@ -1184,6 +1187,41 @@ All keyword parameters default to nil."
(unless (or (daemonp) (visible-frame-list))
(make-frame-visible (car (frame-list))))))
+
+;; Register support
+
+(defun frameset--jump-to-register (data)
+ "Restore frameset from DATA stored in register.
+Called from `jump-to-register'. Internal use only."
+ (let* ((delete (and current-prefix-arg t))
+ (iconify-list (if delete nil (frame-list))))
+ (frameset-restore (aref data 0)
+ :filters frameset-session-filter-alist
+ :reuse-frames (if delete t :keep))
+ (mapc #'iconify-frame iconify-list)
+ (let ((frame (frameset-frame-with-id (aref data 1))))
+ (when frame
+ (select-frame-set-input-focus frame)
+ (goto-char (aref data 2))))))
+
+;;;###autoload
+(defun frameset-to-register (register &optional _arg)
+ "Store the current frameset in register REGISTER.
+Use \\[jump-to-register] to restore the frameset.
+Argument is a character, naming the register."
+ (interactive "cFrameset to register: \nP")
+ (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 (lambda (_data) (princ "a frameset."))
+ :jump-func #'frameset--jump-to-register)))
+
(provide 'frameset)
;;; frameset.el ends here
diff --git a/lisp/register.el b/lisp/register.el
index 84305f71d03..78f18dbc7c1 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -31,12 +31,6 @@
(eval-when-compile (require 'cl-lib))
-(declare-function frameset-frame-id "frameset" (frame))
-(declare-function frameset-frame-with-id "frameset" (id &optional frame-list))
-(declare-function frameset-p "frameset" (frameset))
-(declare-function frameset-restore "frameset" (frameset &rest keys) t)
-(declare-function frameset-save "frameset" (frame-list &rest keys) t)
-
;;; Code:
(cl-defstruct
@@ -77,9 +71,7 @@ A list of the form (file-query FILE-NAME POSITION) represents
A list of the form (WINDOW-CONFIGURATION POSITION)
represents a saved window configuration plus a saved value of point.
A list of the form (FRAME-CONFIGURATION POSITION)
- represents a saved frame configuration plus a saved value of point.
-A list of the form (FRAMESET FRAME-ID POSITION)
- represents a saved frameset plus the value of point in frame FRAME-ID.")
+ represents a saved frame configuration plus a saved value of point.")
(defgroup register nil
"Register commands."
@@ -140,22 +132,6 @@ Argument is a character, naming the register."
;; of point in the current buffer, so record that separately.
(set-register register (list (current-frame-configuration) (point-marker))))
-(defvar frameset-session-filter-alist)
-
-(defun frameset-to-register (register &optional _arg)
- "Store the current frameset in register REGISTER.
-Use \\[jump-to-register] to restore the frameset.
-Argument is a character, naming the register."
- (interactive "cFrameset to register: \nP")
- (set-register register
- (list (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))))
-
(defalias 'register-to-point 'jump-to-register)
(defun jump-to-register (register &optional delete)
"Move point to location stored in a register.
@@ -181,16 +157,6 @@ delete any existing frames that the frameset doesn't mention.
((and (consp val) (window-configuration-p (car val)))
(set-window-configuration (car val))
(goto-char (cadr val)))
- ((and (consp val) (frameset-p (car val)))
- (let ((iconify-list (if delete nil (frame-list)))
- frame)
- (frameset-restore (car val)
- :filters frameset-session-filter-alist
- :reuse-frames (if delete t :keep))
- (mapc #'iconify-frame iconify-list)
- (when (setq frame (frameset-frame-with-id (cadr val)))
- (select-frame-set-input-focus frame)
- (goto-char (nth 2 val)))))
((markerp val)
(or (marker-buffer val)
(error "That register's buffer no longer exists"))
@@ -303,9 +269,6 @@ The Lisp value REGISTER is a character."
((and (consp val) (frame-configuration-p (car val)))
(princ "a frame configuration."))
- ((and (consp val) (frameset-p (car val)))
- (princ "a frameset."))
-
((and (consp val) (eq (car val) 'file))
(princ "the file ")
(prin1 (cdr val))