diff options
author | Jim Blandy <jimb@redhat.com> | 1993-03-15 08:51:02 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 1993-03-15 08:51:02 +0000 |
commit | 0a208d37edeee3b05d76838b8a81cefa0d6a70c6 (patch) | |
tree | 9d5c3983a7c08f4cd78ca0786b97ba2d3566f470 /lisp | |
parent | 6b99828a0b2536555c3dbdb89770c5485040fe3b (diff) | |
download | emacs-0a208d37edeee3b05d76838b8a81cefa0d6a70c6.tar.gz |
Make frame configurations start with a distinctive symbol.
* frame.el (current-frame-configuration): Return a list as before,
but starting with `frame-configuration'.
(set-frame-configuration): Check that CONFIGURATION is a list
starting with `frame-configuration', strip it off, and do as before.
(frame-configuration-p): New function.
* register.el (jump-to-register): Use frame-configuration-p,
instead of catching an error in set-frame-configuration. Really now.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/frame.el | 38 | ||||
-rw-r--r-- | lisp/register.el | 20 |
2 files changed, 36 insertions, 22 deletions
diff --git a/lisp/frame.el b/lisp/frame.el index e52d50de04b..989b3efa2ec 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -284,25 +284,32 @@ additional frame parameters that Emacs recognizes for X window frames." (defun current-frame-configuration () "Return a list describing the positions and states of all frames. -Each element is a list of the form (FRAME ALIST WINDOW-CONFIG), where -FRAME is a frame object, ALIST is an association list specifying -some of FRAME's parameters, and WINDOW-CONFIG is a window -configuration object for FRAME." - (mapcar (function - (lambda (frame) - (list frame - (frame-parameters frame) - (current-window-configuration frame)))) - (frame-list))) +Its car is `frame-configuration'. +Each element of the cdr is a list of the form (FRAME ALIST WINDOW-CONFIG), +where + FRAME is a frame object, + ALIST is an association list specifying some of FRAME's parameters, and + WINDOW-CONFIG is a window configuration object for FRAME." + (cons 'frame-configuration + (mapcar (function + (lambda (frame) + (list frame + (frame-parameters frame) + (current-window-configuration frame)))) + (frame-list)))) (defun set-frame-configuration (configuration) "Restore the frames to the state described by CONFIGURATION. Each frame listed in CONFIGURATION has its position, size, window configuration, and other parameters set as specified in CONFIGURATION." - (let (frames-to-delete) + (or (frame-configuration-p configuration) + (signal 'wrong-type-argument + (list 'frame-configuration-p configuration))) + (let ((config-alist (cdr configuration)) + frames-to-delete) (mapcar (function (lambda (frame) - (let ((parameters (assq frame configuration))) + (let ((parameters (assq frame config-alist))) (if parameters (progn (modify-frame-parameters frame (nth 1 parameters)) @@ -311,6 +318,13 @@ configuration, and other parameters set as specified in CONFIGURATION." (frame-list)) (mapcar 'delete-frame frames-to-delete))) +(defun frame-configuration-p (object) + "Return non-nil if OBJECT seems to be a frame configuration. +Any list whose car is `frame-configuration' is assumed to be a frame +configuration." + (and (consp object) + (eq (car object) 'frame-configuration))) + ;;;; Convenience functions for accessing and interactively changing ;;;; frame parameters. diff --git a/lisp/register.el b/lisp/register.el index 885e5c5a0a7..25167cf4abd 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -72,16 +72,16 @@ configuration (all frames), restore that frame or all frames accordingly. Argument is a character, naming the register." (interactive "cJump to register: ") (let ((val (get-register char))) - (condition-case () - (set-frame-configuration val) - (error - (if (window-configuration-p val) - (set-window-configuration val) - (if (markerp val) - (progn - (switch-to-buffer (marker-buffer val)) - (goto-char val)) - (error "Register doesn't contain a buffer position or configuration"))))))) + (cond + ((frame-configuration-p val) + (set-frame-configuration val)) + ((window-configuration-p val) + (set-window-configuration val)) + ((markerp val) + (switch-to-buffer (marker-buffer val)) + (goto-char val)) + (t + (error "Register doesn't contain a buffer position or configuration"))))) ;(defun number-to-register (arg char) ; "Store a number in a register. |