changeset 17163:a63a326604ae

defvar before- and after- make frame vars; use properly in make-frame.
author Simon Marshall <simon@gnu.org>
date Sat, 15 Mar 1997 13:23:49 +0000
parents 97232f50447f
children 024399a1b442
files lisp/frame.el
diffstat 1 files changed, 27 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/frame.el	Sat Mar 15 13:22:49 1997 +0000
+++ b/lisp/frame.el	Sat Mar 15 13:23:49 1997 +0000
@@ -425,37 +425,41 @@
       (make-frame)
     (select-frame (make-frame))))
 
+(defvar before-make-frame-hook nil
+  "Functions to run before a frame is created.")
+
+(defvar after-make-frame-functions nil
+  "Functions to run after a frame is created.
+The functions are run with one arg, the newly created frame.")
+
 ;; Alias, kept temporarily.
 (defalias 'new-frame 'make-frame)
+
 (defun make-frame (&optional parameters)
-  "Create a new frame, displaying the current buffer.
-
-Optional argument PARAMETERS is an alist of parameters for the new
-frame.  Specifically, PARAMETERS is a list of pairs, each having
-the form (NAME . VALUE).
+  "Return a newly created frame displaying the current buffer.
+Optional argument PARAMETERS is an alist of parameters for the new frame.
+Each element of PARAMETERS should have the form (NAME . VALUE), for example:
 
-Here are some of the parameters allowed (not a complete list):
-
-\(name . STRING)	- The frame should be named STRING.
+ (name . STRING)	The frame should be named STRING.
 
-\(height . NUMBER) - The frame should be NUMBER text lines high.  If
-	this parameter is present, the width parameter must also be
-	given.
+ (width . NUMBER)	The frame should be NUMBER characters in width.
+ (height . NUMBER)	The frame should be NUMBER text lines high.
+
+You cannot specify either `width' or `height', you must use neither or both.
 
-\(width . NUMBER) - The frame should be NUMBER characters in width.
-	If this parameter is present, the height parameter must also
-	be given.
+ (minibuffer . t)	The frame should have a minibuffer.
+ (minibuffer . nil)	The frame should have no minibuffer.
+ (minibuffer . only)	The frame should contain only a minibuffer.
+ (minibuffer . WINDOW)	The frame should use WINDOW as its minibuffer window.
 
-\(minibuffer . t) - the frame should have a minibuffer
-\(minibuffer . nil) - the frame should have no minibuffer
-\(minibuffer . only) - the frame should contain only a minibuffer
-\(minibuffer . WINDOW) - the frame should use WINDOW as its minibuffer window."
+Before the frame is created (via `frame-creation-function'), functions on the
+hook `before-make-frame-hook' are run.  After the frame is created, functions
+on `after-make-frame-functions' are run with one arg, the newly created frame."
   (interactive)
-  (let ((nframe))
-    (run-hooks 'before-make-frame-hook)
-    (setq nframe (funcall frame-creation-function parameters))
-    (run-hooks 'after-make-frame-hook)
-    nframe))
+  (run-hooks 'before-make-frame-hook)
+  (let ((frame (funcall frame-creation-function parameters)))
+    (run-hook-with-args 'after-make-frame-functions frame)
+    frame))
 
 (defun filtered-frame-list (predicate)
   "Return a list of all live frames which satisfy PREDICATE."