• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/emacs-93/emacs/lisp/

Lines Matching +defs:frame +defs:height

0 ;;; frame.el --- multi-frame management independent of window systems
30 (defvar frame-creation-function nil
31 "Window-system dependent function to call to create a new frame.
32 The window system startup file should set this to its frame creation
38 (defcustom initial-frame-alist nil
39 "*Alist of frame parameters for creating the initial X window frame.
41 (setq initial-frame-alist '((top . 1) (left . 1) (width . 80) (height . 55)))
42 Parameters specified here supersede the values given in `default-frame-alist'.
44 If the value calls for a frame without a minibuffer, and you have not created
45 a minibuffer frame on your own, one is created according to
46 `minibuffer-frame-alist'.
48 You can specify geometry-related options for just the initial frame
51 the frame. If you want the frame to have the proper geometry as soon
54 * Set `default-frame-alist' to override these options so that they
56 * Set `initial-frame-alist' in a way that matches the X resources,
57 to override what you put in `default-frame-alist'."
63 (defcustom minibuffer-frame-alist '((width . 80) (height . 2))
64 "*Alist of frame parameters for initially creating a minibuffer frame.
66 (setq minibuffer-frame-alist
67 '((top . 1) (left . 1) (width . 80) (height . 2)))
69 `default-frame-alist', for a minibuffer frame."
75 (defcustom pop-up-frame-alist nil
76 "*Alist of frame parameters used when creating pop-up frames.
79 (setq pop-up-frame-alist '((width . 80) (height . 20)))
80 These supersede the values given in `default-frame-alist',
87 (setq pop-up-frame-function
90 (make-frame pop-up-frame-alist)))
92 (defcustom special-display-frame-alist
93 '((height . 14) (width . 80) (unsplittable . t))
94 "*Alist of frame parameters used when creating special frames.
99 (setq special-display-frame-alist '((width . 80) (height . 20)))
100 These supersede the values given in `default-frame-alist'."
106 (defun special-display-popup-frame (buffer &optional args)
107 "Display BUFFER in its own frame, reusing an existing window if any.
109 Currently we do not insist on selecting the window within its frame.
110 If ARGS is an alist, use it as a list of frame parameter specs.
120 (let ((frame (window-frame window)))
121 (make-frame-visible frame)
122 (raise-frame frame)
129 ;; Stay on the same frame if requested.
130 (when (or (cdr (assq 'same-frame args)) (cdr (assq 'same-window args)))
137 ;; If no window yet, make one in a new frame.
138 (let ((frame
140 (make-frame (append args special-display-frame-alist)))))
141 (set-window-buffer (frame-selected-window frame) buffer)
142 (set-window-dedicated-p (frame-selected-window frame) t)
143 (frame-selected-window frame))))))
145 (defun handle-delete-frame (event)
146 "Handle delete-frame events from the X server."
148 (let ((frame (posn-window (event-start event)))
150 (tail (frame-list)))
152 (and (frame-visible-p (car tail))
153 (not (eq (car tail) frame))
157 (delete-frame frame t)
168 ;; 2) If no frames have been opened, we open an initial text frame.
171 ;; in initial-frame-alist to the frame.
176 ;; (add-hook 'before-init-hook 'frame-initialize)
177 ;; (add-hook 'window-setup-hook 'frame-notice-user-settings)
179 ;; If we create the initial frame, this is it.
180 (defvar frame-initial-frame nil)
182 ;; Record the parameters used in frame-initialize to make the initial frame.
183 (defvar frame-initial-frame-alist)
185 (defvar frame-initial-geometry-arguments nil)
188 ;; file - if there is no frame with a minibuffer open now, create
190 (defun frame-initialize ()
191 "Create an initial frame if necessary."
196 (setq special-display-function 'special-display-popup-frame)
198 ;; If there is no frame with a minibuffer besides the terminal
199 ;; frame, then we need to create the opening frame. Make sure
200 ;; it has a minibuffer, but let initial-frame-alist omit the
202 (or (delq terminal-frame (minibuffer-frame-list))
204 (setq frame-initial-frame-alist
205 (append initial-frame-alist default-frame-alist nil))
206 (or (assq 'horizontal-scroll-bars frame-initial-frame-alist)
207 (setq frame-initial-frame-alist
209 frame-initial-frame-alist)))
210 (setq default-minibuffer-frame
211 (setq frame-initial-frame
212 (make-frame frame-initial-frame-alist)))
214 ;; so that we won't reapply them in frame-notice-user-settings.
217 (setq initial-frame-alist
218 (frame-remove-geometry-params initial-frame-alist))))
219 ;; At this point, we know that we have a frame open, so we
220 ;; can delete the terminal frame.
221 (delete-frame terminal-frame)
222 (setq terminal-frame nil))
224 ;; No, we're not running a window system. Use make-terminal-frame if
227 (setq frame-creation-function
228 (if (fboundp 'tty-create-frame-with-faces)
229 'tty-create-frame-with-faces
235 (defvar frame-notice-user-settings t
236 "Non-nil means function `frame-notice-user-settings' wasn't run yet.")
239 ;; file. Now default-frame-alist and initial-frame-alist contain
241 (defun frame-notice-user-settings ()
242 "Act on user's init file settings of frame parameters.
243 React to settings of `default-frame-alist', `initial-frame-alist' there."
244 ;; Make menu-bar-mode and default-frame-alist consistent.
246 (let ((default (assq 'menu-bar-lines default-frame-alist)))
249 (setq default-frame-alist
251 default-frame-alist)))))
253 ;; Make tool-bar-mode and default-frame-alist consistent. Don't do
255 ;; parameter in default-frame-alist in a dumped Emacs, which is not
259 (let ((default (assq 'tool-bar-lines default-frame-alist)))
262 (setq default-frame-alist
264 default-frame-alist)))))
266 ;; Creating and deleting frames may shift the selected frame around,
273 (when (and frame-notice-user-settings
274 (null frame-initial-frame))
277 (let ((parms (frame-parameters frame-initial-frame)))
278 ;; Don't change the frame names.
282 (modify-frame-parameters nil
284 (append initial-frame-alist
285 default-frame-alist
288 ;; initial-frame-alist and
289 ;; default-frame-alist were already
293 (let ((newparms (frame-parameters))
294 (frame (selected-frame)))
295 (tty-handle-reverse-video frame newparms)
300 (unless (or (assq 'background-mode initial-frame-alist)
301 (assq 'background-mode default-frame-alist))
302 (frame-set-background-mode frame))
303 (face-set-after-frame-default frame))))))
305 ;; If the initial frame is still around, apply initial-frame-alist
306 ;; and default-frame-alist to it.
307 (when (frame-live-p frame-initial-frame)
309 ;; When tool-bar has been switched off, correct the frame size
310 ;; by the lines added in x-create-frame for the tool-bar and
313 (let ((tool-bar-lines (or (assq 'tool-bar-lines initial-frame-alist)
314 (assq 'tool-bar-lines default-frame-alist))))
319 (let* ((char-height (frame-char-height frame-initial-frame))
320 (image-height tool-bar-images-pixel-height)
332 (lines (/ (+ image-height
335 (1- char-height))
336 char-height))
337 (height (frame-parameter frame-initial-frame 'height))
338 (newparms (list (cons 'height (- height lines))))
340 frame-initial-geometry-arguments)))
341 (top (frame-parameter frame-initial-frame 'top)))
348 (* lines char-height))))
353 (* lines char-height))))
354 (t (+ top (* lines char-height))))))
359 (modify-frame-parameters frame-initial-frame newparms)
362 ;; The initial frame we create above always has a minibuffer.
364 ;; frame, then we'll have to delete the current frame and make a
366 ;; existing frame.
368 ;; NOTE: default-frame-alist was nil when we created the
369 ;; existing frame. We need to explicitly include
370 ;; default-frame-alist in the parameters of the screen we
373 (if (not (eq (cdr (or (assq 'minibuffer initial-frame-alist)
374 (assq 'minibuffer default-frame-alist)
377 ;; Create the new frame.
379 ;; If the frame isn't visible yet, wait till it is.
382 ;; the frame is seen to be visible.
384 (frame-parameters frame-initial-frame))))
386 (setq parms (frame-parameters frame-initial-frame))
389 (or (assq 'name frame-initial-frame-alist)
392 (setq parms (append initial-frame-alist
393 default-frame-alist
398 ;; when we first made the frame.
401 (if (assq 'height frame-initial-geometry-arguments)
402 (setq parms (assq-delete-all 'height parms)))
403 (if (assq 'width frame-initial-geometry-arguments)
405 (if (assq 'left frame-initial-geometry-arguments)
407 (if (assq 'top frame-initial-geometry-arguments)
410 (make-frame
412 ;; frame, rather than the parms we get for it.
413 (append frame-initial-geometry-arguments
416 ;; The initial frame, which we are about to delete, may be
417 ;; the only frame with a minibuffer. If it is, create a
419 (or (delq frame-initial-frame (minibuffer-frame-list))
420 (make-initial-minibuffer-frame nil))
422 ;; If the initial frame is serving as a surrogate
423 ;; minibuffer frame for any frames, we need to wean them
424 ;; onto a new frame. The default-minibuffer-frame
427 (filtered-frame-list
428 (function (lambda (frame)
429 (and (not (eq frame frame-initial-frame))
430 (eq (window-frame
431 (minibuffer-window frame))
432 frame-initial-frame)))))))
434 (eq default-minibuffer-frame frame-initial-frame))
436 ;; Choose an appropriate frame. Prefer frames which
440 (or (filtered-frame-list
442 (lambda (frame)
444 (frame-parameters frame)))
446 (minibuffer-frame-list))))
449 (if (eq default-minibuffer-frame frame-initial-frame)
450 (setq default-minibuffer-frame new-surrogate))
452 ;; Wean the frames using frame-initial-frame as
453 ;; their minibuffer frame.
456 (lambda (frame)
457 (modify-frame-parameters
458 frame (list (cons 'minibuffer new-minibuffer)))))
461 ;; Redirect events enqueued at this frame to the new frame.
463 (redirect-frame-focus frame-initial-frame new)
465 ;; Finally, get rid of the old frame.
466 (delete-frame frame-initial-frame t))
471 (setq allparms (append initial-frame-alist
472 default-frame-alist nil))
473 (if (assq 'height frame-initial-geometry-arguments)
474 (setq allparms (assq-delete-all 'height allparms)))
475 (if (assq 'width frame-initial-geometry-arguments)
477 (if (assq 'left frame-initial-geometry-arguments)
479 (if (assq 'top frame-initial-geometry-arguments)
483 ;; made this frame. Those are the ones actually set by
487 ;; once the user has seen the frame and been able to alter it
492 frame-initial-frame-alist))
499 (modify-frame-parameters frame-initial-frame
506 (frame-set-background-mode frame-initial-frame))
507 (face-set-after-frame-default frame-initial-frame)))))
512 ;; Make sure the initial frame can be GC'd if it is ever deleted.
513 ;; Make sure frame-notice-user-settings does nothing if called twice.
514 (setq frame-notice-user-settings nil)
515 (setq frame-initial-frame nil)))
517 (defun make-initial-minibuffer-frame (display)
518 (let ((parms (append minibuffer-frame-alist '((minibuffer . only)))))
520 (make-frame-on-display display parms)
521 (make-frame parms))))
523 ;;;; Creation of additional frames, and other frame miscellanea
527 This changes `default-frame-alist' and possibly `initial-frame-alist'.
528 See help of `modify-frame-parameters' for more information."
530 (dolist (frame (frame-list))
531 (modify-frame-parameters frame alist))
534 ;; initial-frame-alist needs setting only when
535 ;; frame-notice-user-settings is true
536 (and frame-notice-user-settings
537 (setq element (assoc (car pair) initial-frame-alist))
538 (setq initial-frame-alist (delq element initial-frame-alist)))
539 (and (setq element (assoc (car pair) default-frame-alist))
540 (setq default-frame-alist (delq element default-frame-alist)))))
541 (and frame-notice-user-settings
542 (setq initial-frame-alist (append initial-frame-alist alist)))
543 (setq default-frame-alist (append default-frame-alist alist)))
545 (defun get-other-frame ()
546 "Return some frame other than the current frame.
547 Create one if necessary. Note that the minibuffer frame, if separate,
548 is not considered (see `next-frame')."
549 (let ((s (if (equal (next-frame (selected-frame)) (selected-frame))
550 (make-frame)
551 (next-frame (selected-frame)))))
555 "Select the next window, regardless of which frame it is on."
560 (select-frame-set-input-focus (selected-frame)))
563 "Select the previous window, regardless of which frame it is on."
568 (select-frame-set-input-focus (selected-frame)))
570 (defun make-frame-on-display (display &optional parameters)
571 "Make a frame on display DISPLAY.
572 The optional second argument PARAMETERS specifies additional frame parameters."
573 (interactive "sMake frame on display: ")
576 (make-frame (cons (cons 'display display) parameters)))
578 (defun make-frame-command ()
579 "Make a new frame, and select it if the terminal displays only one frame."
582 (make-frame)
583 (select-frame (make-frame))))
585 (defvar before-make-frame-hook nil
586 "Functions to run before a frame is created.")
588 (defvar after-make-frame-functions nil
589 "Functions to run after a frame is created.
590 The functions are run with one arg, the newly created frame.")
593 "Functions to run after a frame's font has been changed.")
596 (define-obsolete-function-alias 'new-frame 'make-frame "22.1")
598 (defun make-frame (&optional parameters)
599 "Return a newly created frame displaying the current buffer.
600 Optional argument PARAMETERS is an alist of parameters for the new frame.
603 (name . STRING) The frame should be named STRING.
605 (width . NUMBER) The frame should be NUMBER characters in width.
606 (height . NUMBER) The frame should be NUMBER text lines high.
608 You cannot specify either `width' or `height', you must use neither or both.
610 (minibuffer . t) The frame should have a minibuffer.
611 (minibuffer . nil) The frame should have no minibuffer.
612 (minibuffer . only) The frame should contain only a minibuffer.
613 (minibuffer . WINDOW) The frame should use WINDOW as its minibuffer window.
615 Before the frame is created (via `frame-creation-function'), functions on the
616 hook `before-make-frame-hook' are run. After the frame is created, functions
617 on `after-make-frame-functions' are run with one arg, the newly created frame.
619 This function itself does not make the new frame the selected frame.
620 The previously selected frame remains selected. However, the
621 window system may select the new frame for its own reasons, for
622 instance if the frame appears under the mouse pointer and your
625 (run-hooks 'before-make-frame-hook)
626 (let ((frame (funcall frame-creation-function parameters)))
627 (run-hook-with-args 'after-make-frame-functions frame)
628 frame))
630 (defun filtered-frame-list (predicate)
632 (let* ((frames (frame-list))
640 (defun minibuffer-frame-list ()
642 (filtered-frame-list
643 (function (lambda (frame)
644 (eq frame (window-frame (minibuffer-window frame)))))))
649 If DISPLAY is omitted or nil, it defaults to the selected frame's display."
650 (let* ((display (or display (frame-parameter nil 'display)))
651 (func #'(lambda (frame)
652 (equal (frame-parameter frame 'display) display))))
653 (filtered-frame-list func)))
657 DISPLAY may be a display name or a frame. If it is a frame, its type is
659 If DISPLAY is omitted or nil, it defaults to the selected frame's display.
664 (defun frame-remove-geometry-params (param-list)
667 `height', `user-size' and `user-position' parameters.
675 '(height width top left user-position user-size)))
677 (setq frame-initial-geometry-arguments
678 (cons (car (cdr tail)) frame-initial-geometry-arguments))
681 (setq frame-initial-geometry-arguments
682 (nreverse frame-initial-geometry-arguments))
696 (defun select-frame-set-input-focus (frame)
698 (select-frame frame)
699 (raise-frame frame)
700 ;; Ensure, if possible, that frame gets input focus.
702 (x-focus-frame frame))
704 (w32-focus-frame frame)))
706 (set-mouse-position (selected-frame) (1- (frame-width)) 0))))
708 (defun other-frame (arg)
709 "Select the ARGth different visible frame on current display, and raise it.
711 This command selects the frame ARG steps away in that order.
720 (let ((frame (selected-frame)))
722 (setq frame (next-frame frame))
723 (while (not (eq (frame-visible-p frame) t))
724 (setq frame (next-frame frame)))
727 (setq frame (previous-frame frame))
728 (while (not (eq (frame-visible-p frame) t))
729 (setq frame (previous-frame frame)))
731 (select-frame-set-input-focus frame)))
733 (defun iconify-or-deiconify-frame ()
734 "Iconify the selected frame, or deiconify if it's currently an icon."
736 (if (eq (cdr (assq 'visibility (frame-parameters))) t)
737 (iconify-frame)
738 (make-frame-visible)))
740 (defun make-frame-names-alist ()
741 (let* ((current-frame (selected-frame))
744 (cons (frame-parameter current-frame 'name) current-frame) nil))
745 (frame (next-frame nil t)))
746 (while (not (eq frame current-frame))
748 (setq falist (cons (cons (frame-parameter frame 'name) frame) falist))
749 (setq frame (next-frame frame t))))
752 (defvar frame-name-history nil)
753 (defun select-frame-by-name (name)
754 "Select the frame on the current terminal whose name is NAME and raise it.
755 If there is no frame by that name, signal an error."
757 (let* ((frame-names-alist (make-frame-names-alist))
758 (default (car (car frame-names-alist)))
761 frame-names-alist nil t nil 'frame-name-history)))
765 (let* ((frame-names-alist (make-frame-names-alist))
766 (frame (cdr (assoc name frame-names-alist))))
767 (or frame
768 (error "There is no frame named `%s'" name))
769 (make-frame-visible frame)
770 (raise-frame frame)
771 (select-frame frame)
772 ;; Ensure, if possible, that frame gets input focus.
774 (x-focus-frame frame))
776 (w32-focus-frame frame)))
778 (set-mouse-position frame (1- (frame-width frame)) 0))))
783 (defun current-frame-configuration ()
785 Its car is `frame-configuration'.
788 FRAME is a frame object,
791 (cons 'frame-configuration
793 (lambda (frame)
794 (list frame
795 (frame-parameters frame)
796 (current-window-configuration frame))))
797 (frame-list))))
799 (defun set-frame-configuration (configuration &optional nodelete)
801 Each frame listed in CONFIGURATION has its position, size, window
808 (or (frame-configuration-p configuration)
810 (list 'frame-configuration-p configuration)))
814 (lambda (frame)
815 (let ((parameters (assq frame config-alist)))
818 (modify-frame-parameters
819 frame
820 ;; Since we can't set a frame's minibuffer status,
827 (setq frames-to-delete (cons frame frames-to-delete))))))
828 (frame-list))
831 ;; but led to some strange behavior--each time the frame
834 (mapcar 'iconify-frame frames-to-delete)
835 (mapcar 'delete-frame frames-to-delete))))
839 ;;;; frame parameters.
841 (defun frame-height (&optional frame)
843 If FRAME is omitted, describe the currently selected frame."
844 (cdr (assq 'height (frame-parameters frame))))
846 (defun frame-width (&optional frame)
848 If FRAME is omitted, describe the currently selected frame."
849 (cdr (assq 'width (frame-parameters frame))))
851 (defalias 'set-default-font 'set-frame-font)
852 (defun set-frame-font (font-name &optional keep-size)
853 "Set the font of the selected frame to FONT-NAME.
855 To get the frame's current default font, use `frame-parameters'.
858 the frame, thus may change its pixel size. If optional KEEP-SIZE is
859 non-nil (interactively, prefix argument) the current frame size (in
866 ;; if this frame doesn't support fonts.
867 (x-list-fonts "*" nil (selected-frame)))
869 (frame-parameter nil 'font))))
873 (setq fht (* (frame-parameter nil 'height) (frame-char-height))
874 fwd (* (frame-parameter nil 'width) (frame-char-width))))
875 (modify-frame-parameters (selected-frame)
878 (modify-frame-parameters
879 (selected-frame)
880 (list (cons 'height (round fht (frame-char-height)))
881 (cons 'width (round fwd (frame-char-width)))))))
884 (defun set-frame-parameter (frame parameter value)
885 "Set frame parameter PARAMETER to VALUE on FRAME.
886 If FRAME is nil, it defaults to the selected frame.
887 See `modify-frame-parameters'."
888 (modify-frame-parameters frame (list (cons parameter value))))
891 "Set the background color of the selected frame to COLOR-NAME.
893 To get the frame's current background color, use `frame-parameters'."
895 (modify-frame-parameters (selected-frame)
898 (face-set-after-frame-default (selected-frame))))
901 "Set the foreground color of the selected frame to COLOR-NAME.
903 To get the frame's current foreground color, use `frame-parameters'."
905 (modify-frame-parameters (selected-frame)
908 (face-set-after-frame-default (selected-frame))))
911 "Set the text cursor color of the selected frame to COLOR-NAME.
913 To get the frame's current cursor color, use `frame-parameters'."
915 (modify-frame-parameters (selected-frame)
919 "Set the color of the mouse pointer of the selected frame to COLOR-NAME.
921 To get the frame's current mouse color, use `frame-parameters'."
923 (modify-frame-parameters (selected-frame)
927 (frame-parameters))))))))
930 "Set the color of the border of the selected frame to COLOR-NAME.
932 To get the frame's current border color, use `frame-parameters'."
934 (modify-frame-parameters (selected-frame)
938 "Toggle whether or not the selected frame should auto-raise.
947 (if (cdr (assq 'auto-raise (frame-parameters (selected-frame))))
950 (raise-frame (selected-frame)))
951 (modify-frame-parameters (selected-frame)
955 "Toggle whether or not the selected frame should auto-lower.
964 (if (cdr (assq 'auto-lower (frame-parameters (selected-frame))))
966 (modify-frame-parameters (selected-frame)
968 (defun set-frame-name (name)
969 "Set the name of the selected frame to NAME.
970 When called interactively, prompt for the name of the frame.
971 The frame name is displayed on the modeline if the terminal displays only
972 one frame, otherwise the name is displayed on the frame's caption bar."
974 (modify-frame-parameters (selected-frame)
977 (defun frame-current-scroll-bars (&optional frame)
978 "Return the current scroll-bar settings in frame FRAME.
983 (let ((vert (frame-parameter frame 'vertical-scroll-bars))
986 (setq vert default-frame-scroll-bars))
993 DISPLAY can be a display name, a frame, or nil (meaning the selected
994 frame's display)."
995 (let ((frame-type (framep-on-display display)))
997 ((eq frame-type 'pc)
1002 ((memq frame-type '(x mac))
1013 DISPLAY can be a display name, a frame, or nil (meaning the selected
1014 frame's display).
1017 (let ((frame-type (framep-on-display display)))
1018 (memq frame-type '(x w32 pc mac)))
1026 DISPLAY can be a display name, a frame, or nil (meaning the selected
1027 frame's display)."
1033 DISPLAY can be a display name, a frame, or nil (meaning the selected
1034 frame's display)."
1039 (defalias 'display-multi-frame-p 'display-graphic-p)
1047 DISPLAY can be a display name, a frame, or nil (meaning the selected
1048 frame's display)."
1049 (let ((frame-type (framep-on-display display)))
1051 ((eq frame-type 'pc)
1056 ((memq frame-type '(x w32 mac))
1063 (let ((frame-type (framep-on-display display)))
1065 ((memq frame-type '(x w32 mac))
1070 (defun display-pixel-height (&optional display)
1071 "Return the height of DISPLAY's screen in pixels.
1073 (let ((frame-type (framep-on-display display)))
1075 ((memq frame-type '(x w32 mac))
1076 (x-display-pixel-height display))
1078 (frame-height (if (framep display) display (selected-frame)))))))
1083 (let ((frame-type (framep-on-display display)))
1085 ((memq frame-type '(x w32 mac))
1088 (frame-width (if (framep display) display (selected-frame)))))))
1092 The dimensions will be used for `display-mm-height' and
1095 Each element of the alist has the form (display . (width . height)),
1108 (defun display-mm-height (&optional display)
1109 "Return the height of DISPLAY's screen in millimeters.
1113 (or (cddr (assoc (or display (frame-parameter nil 'display))
1116 (x-display-mm-height display))))
1123 (or (cadr (assoc (or display (frame-parameter nil 'display))
1132 (let ((frame-type (framep-on-display display)))
1134 ((memq frame-type '(x w32 mac))
1141 (let ((frame-type (framep-on-display display)))
1143 ((memq frame-type '(x w32 mac))
1150 (let ((frame-type (framep-on-display display)))
1152 ((memq frame-type '(x w32 mac))
1154 ((eq frame-type 'pc)
1161 (let ((frame-type (framep-on-display display)))
1163 ((memq frame-type '(x w32 mac))
1165 ((eq frame-type 'pc)
1174 (let ((frame-type (framep-on-display display)))
1176 ((memq frame-type '(x w32 mac))
1178 ((and (memq frame-type '(pc t))
1187 (define-obsolete-function-alias 'screen-height 'frame-height) ;before 19.15
1188 (define-obsolete-function-alias 'screen-width 'frame-width) ;before 19.15
1193 but that the idea of the actual width of the frame should not be changed.
1195 (set-frame-width (selected-frame) cols pretend))
1197 (defun set-screen-height (lines &optional pretend)
1198 "Change the height of the screen to LINES lines.
1200 but that the idea of the actual height of the screen should not be changed.
1202 (set-frame-height (selected-frame) lines pretend))
1204 (defun delete-other-frames (&optional frame)
1206 If FRAME uses another frame's minibuffer, the minibuffer frame is
1207 left untouched. FRAME nil or omitted means use the selected frame."
1209 (unless frame
1210 (setq frame (selected-frame)))
1211 (let* ((mini-frame (window-frame (minibuffer-window frame)))
1212 (frames (delq mini-frame (delq frame (frame-list)))))
1213 ;; Delete mon-minibuffer-only frames first, because `delete-frame'
1214 ;; signals an error when trying to delete a mini-frame that's
1215 ;; still in use by another frame.
1216 (dolist (frame frames)
1217 (unless (eq (frame-parameter frame 'minibuffer) 'only)
1218 (delete-frame frame)))
1220 (dolist (frame frames)
1221 (when (eq (frame-parameter frame 'minibuffer) 'only)
1222 (delete-frame frame)))))
1224 (make-obsolete 'set-screen-width 'set-frame-width) ;before 19.15
1225 (make-obsolete 'set-screen-height 'set-frame-height) ;before 19.15
1228 (define-obsolete-variable-alias 'delete-frame-hook
1229 'delete-frame-functions "22.1")
1380 (define-key ctl-x-5-map "2" 'make-frame-command)
1382 (define-key ctl-x-5-map "0" 'delete-frame)
1383 (define-key ctl-x-5-map "o" 'other-frame)
1385 (provide 'frame)
1388 ;;; frame.el ends here