Mercurial > emacs
annotate lisp/frame.el @ 4816:2a5085c32935
(${archlibdir}): Install ${SCRIPTS} from ${srcdir}, not cwd.
author | Roland McGrath <roland@gnu.org> |
---|---|
date | Mon, 04 Oct 1993 04:31:33 +0000 |
parents | 8878c40bc7bd |
children | 78a52ca82a71 |
rev | line source |
---|---|
777 | 1 ;;; frame.el --- multi-frame management independent of window systems. |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
2 |
2069 | 3 ;;;; Copyright (C) 1993 Free Software Foundation, Inc. |
846
20674ae6bf52
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
827
diff
changeset
|
4 |
793
6fb68a1460a6
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
777
diff
changeset
|
5 ;; Maintainer: FSF |
811
e694e0879463
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
806
diff
changeset
|
6 ;; Keywords: internal |
793
6fb68a1460a6
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
777
diff
changeset
|
7 |
394 | 8 ;;; This file is part of GNU Emacs. |
9 ;;; | |
10 ;;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;;; it under the terms of the GNU General Public License as published by | |
806 | 12 ;;; the Free Software Foundation; either version 2, or (at your option) |
394 | 13 ;;; any later version. |
14 ;;; | |
15 ;;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;;; GNU General Public License for more details. | |
19 ;;; | |
20 ;;; You should have received a copy of the GNU General Public License | |
21 ;;; along with GNU Emacs; see the file COPYING. If not, write to | |
22 ;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | |
23 | |
793
6fb68a1460a6
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
777
diff
changeset
|
24 ;;; Code: |
6fb68a1460a6
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
777
diff
changeset
|
25 |
777 | 26 (defvar frame-creation-function nil |
27 "Window-system dependent function to call to create a new frame. | |
28 The window system startup file should set this to its frame creation | |
394 | 29 function, which should take an alist of parameters as its argument.") |
30 | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
31 ;;; The initial value given here for this must ask for a minibuffer. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
32 ;;; There must always exist a frame with a minibuffer, and after we |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
33 ;;; delete the terminal frame, this will be the only frame. |
958 | 34 (defvar initial-frame-alist '((minibuffer . t)) |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
35 "Alist of frame parameters for creating the initial X window frame. |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
36 You can set this in your `.emacs' file; for example, |
777 | 37 (setq initial-frame-alist '((top . 1) (left . 1) (width . 80) (height . 55))) |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
38 If the value calls for a frame without a minibuffer, and you do not create a |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
39 minibuffer frame on your own, one is created according to |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
40 `minibuffer-frame-alist'. |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
41 Parameters specified here supersede the values given in |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
42 `default-frame-alist'.") |
394 | 43 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
44 (defvar minibuffer-frame-alist '((width . 80) (height . 2)) |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
45 "Alist of frame parameters for initially creating a minibuffer frame. |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
46 You can set this in your `.emacs' file; for example, |
777 | 47 (setq minibuffer-frame-alist |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
48 '((top . 1) (left . 1) (width . 80) (height . 2))) |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
49 Parameters specified here supersede the values given in |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
50 `default-frame-alist'.") |
394 | 51 |
777 | 52 (defvar pop-up-frame-alist nil |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
53 "Alist of frame parameters used when creating pop-up frames. |
777 | 54 Pop-up frames are used for completions, help, and the like. |
394 | 55 This variable can be set in your init file, like this: |
777 | 56 (setq pop-up-frame-alist '((width . 80) (height . 20))) |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3554
diff
changeset
|
57 These supersede the values given in `default-frame-alist'.") |
394 | 58 |
777 | 59 (setq pop-up-frame-function |
394 | 60 (function (lambda () |
777 | 61 (new-frame pop-up-frame-alist)))) |
394 | 62 |
63 | |
777 | 64 ;;;; Arrangement of frames at startup |
394 | 65 |
66 ;;; 1) Load the window system startup file from the lisp library and read the | |
67 ;;; high-priority arguments (-q and the like). The window system startup | |
777 | 68 ;;; file should create any frames specified in the window system defaults. |
394 | 69 ;;; |
777 | 70 ;;; 2) If no frames have been opened, we open an initial text frame. |
394 | 71 ;;; |
72 ;;; 3) Once the init file is done, we apply any newly set parameters | |
777 | 73 ;;; in initial-frame-alist to the frame. |
394 | 74 |
2763
a93e407bf41c
Don't put frame-initialize and frame-notice-user-settings on hooks.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
75 ;; These are now called explicitly at the proper times, |
a93e407bf41c
Don't put frame-initialize and frame-notice-user-settings on hooks.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
76 ;; since that is easier to understand. |
a93e407bf41c
Don't put frame-initialize and frame-notice-user-settings on hooks.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
77 ;; Actually using hooks within Emacs is bad for future maintenance. --rms. |
a93e407bf41c
Don't put frame-initialize and frame-notice-user-settings on hooks.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
78 ;; (add-hook 'before-init-hook 'frame-initialize) |
a93e407bf41c
Don't put frame-initialize and frame-notice-user-settings on hooks.
Richard M. Stallman <rms@gnu.org>
parents:
2571
diff
changeset
|
79 ;; (add-hook 'window-setup-hook 'frame-notice-user-settings) |
394 | 80 |
777 | 81 ;;; If we create the initial frame, this is it. |
82 (defvar frame-initial-frame nil) | |
394 | 83 |
4305
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
84 ;; Record the parameters used in frame-initialize to make the initial frame. |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
85 (defvar frame-initial-frame-alist) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
86 |
394 | 87 ;;; startup.el calls this function before loading the user's init |
777 | 88 ;;; file - if there is no frame with a minibuffer open now, create |
394 | 89 ;;; one to display messages while loading the init file. |
777 | 90 (defun frame-initialize () |
394 | 91 |
92 ;; Are we actually running under a window system at all? | |
93 (if (and window-system (not noninteractive)) | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
94 (progn |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
95 ;; If there is no frame with a minibuffer besides the terminal |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
96 ;; frame, then we need to create the opening frame. Make sure |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
97 ;; it has a minibuffer, but let initial-frame-alist omit the |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
98 ;; minibuffer spec. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
99 (or (delq terminal-frame (minibuffer-frame-list)) |
3050
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
100 (progn |
4305
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
101 (setq frame-initial-frame-alist |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
102 (append initial-frame-alist default-frame-alist)) |
3050
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
103 (setq default-minibuffer-frame |
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
104 (setq frame-initial-frame |
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
105 (new-frame initial-frame-alist))) |
3433
2f5a9b79edf7
(frame-initialize): Delete geometry parms from initial-frame-alist.
Richard M. Stallman <rms@gnu.org>
parents:
3183
diff
changeset
|
106 ;; Delete any specifications for window geometry parameters |
2f5a9b79edf7
(frame-initialize): Delete geometry parms from initial-frame-alist.
Richard M. Stallman <rms@gnu.org>
parents:
3183
diff
changeset
|
107 ;; so that we won't reapply them in frame-notice-user-settings. |
2f5a9b79edf7
(frame-initialize): Delete geometry parms from initial-frame-alist.
Richard M. Stallman <rms@gnu.org>
parents:
3183
diff
changeset
|
108 ;; It would be wrong to reapply them then, |
2f5a9b79edf7
(frame-initialize): Delete geometry parms from initial-frame-alist.
Richard M. Stallman <rms@gnu.org>
parents:
3183
diff
changeset
|
109 ;; because that would override explicit user resizing. |
3971
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
110 (setq initial-frame-alist |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
111 (frame-remove-geometry-params initial-frame-alist)) |
3050
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
112 ;; Handle `reverse' as a parameter. |
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
113 (if (cdr (or (assq 'reverse initial-frame-alist) |
4621
859d97b0f5bd
(frame-initialize): Handle reverseVideo x-resource.
Richard M. Stallman <rms@gnu.org>
parents:
4553
diff
changeset
|
114 (assq 'reverse default-frame-alist) |
859d97b0f5bd
(frame-initialize): Handle reverseVideo x-resource.
Richard M. Stallman <rms@gnu.org>
parents:
4553
diff
changeset
|
115 (cons nil |
4625
dcd4453199e1
(frame-initialize): Check for `on' or `true'
Richard M. Stallman <rms@gnu.org>
parents:
4621
diff
changeset
|
116 (member (x-get-resource "reverseVideo" "ReverseVideo") |
dcd4453199e1
(frame-initialize): Check for `on' or `true'
Richard M. Stallman <rms@gnu.org>
parents:
4621
diff
changeset
|
117 '("on" "true"))))) |
3050
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
118 (let ((params (frame-parameters frame-initial-frame))) |
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
119 (modify-frame-parameters |
8e2472cd4409
(frame-initialize): Handle `reverse' as parameter.
Richard M. Stallman <rms@gnu.org>
parents:
2870
diff
changeset
|
120 frame-initial-frame |
3445
49b72d583354
(frame-initialize): Set cursor-color last.
Richard M. Stallman <rms@gnu.org>
parents:
3433
diff
changeset
|
121 ;; Must set cursor-color after background color. |
49b72d583354
(frame-initialize): Set cursor-color last.
Richard M. Stallman <rms@gnu.org>
parents:
3433
diff
changeset
|
122 ;; So put it first. |
3617 | 123 (list (cons 'cursor-color |
124 (cdr (assq 'background-color params))) | |
125 (cons 'foreground-color | |
126 (cdr (assq 'background-color params))) | |
127 (cons 'background-color | |
128 (cdr (assq 'foreground-color params))) | |
129 (cons 'mouse-color | |
130 (cdr (assq 'background-color params))) | |
131 (cons 'border-color | |
132 (cdr (assq 'background-color params))))))))) | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
133 |
777 | 134 ;; At this point, we know that we have a frame open, so we |
135 ;; can delete the terminal frame. | |
136 (delete-frame terminal-frame) | |
137 (setq terminal-frame nil)) | |
394 | 138 |
139 ;; No, we're not running a window system. Arrange to cause errors. | |
777 | 140 (setq frame-creation-function |
404
f6c751f07c4a
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
394
diff
changeset
|
141 (function |
f6c751f07c4a
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
394
diff
changeset
|
142 (lambda (parameters) |
f6c751f07c4a
*** empty log message ***
Michael I. Bushnell <mib@gnu.org>
parents:
394
diff
changeset
|
143 (error |
1881
436edc3e74f6
(frame-initialize): Fix error syntax.
Richard M. Stallman <rms@gnu.org>
parents:
1863
diff
changeset
|
144 "Can't create multiple frames without a window system")))))) |
394 | 145 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
146 ;;; startup.el calls this function after loading the user's init |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
147 ;;; file. Now default-frame-alist and initial-frame-alist contain |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
148 ;;; information to which we must react; do what needs to be done. |
777 | 149 (defun frame-notice-user-settings () |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
150 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
151 ;; Creating and deleting frames may shift the selected frame around, |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
152 ;; and thus the current buffer. Protect against that. We don't |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
153 ;; want to use save-excursion here, because that may also try to set |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
154 ;; the buffer of the selected window, which fails when the selected |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
155 ;; window is the minibuffer. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
156 (let ((old-buffer (current-buffer))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
157 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
158 ;; If the initial frame is still around, apply initial-frame-alist |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
159 ;; and default-frame-alist to it. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
160 (if (frame-live-p frame-initial-frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
161 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
162 ;; The initial frame we create above always has a minibuffer. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
163 ;; If the user wants to remove it, or make it a minibuffer-only |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
164 ;; frame, then we'll have to delete the current frame and make a |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
165 ;; new one; you can't remove or add a root window to/from an |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
166 ;; existing frame. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
167 ;; |
1113 | 168 ;; NOTE: default-frame-alist was nil when we created the |
169 ;; existing frame. We need to explicitly include | |
170 ;; default-frame-alist in the parameters of the screen we | |
171 ;; create here, so that its new value, gleaned from the user's | |
172 ;; .emacs file, will be applied to the existing screen. | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
173 (if (not (eq (cdr (or (assq 'minibuffer initial-frame-alist) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
174 (assq 'minibuffer default-frame-alist) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
175 '(minibuffer . t))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
176 t)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
177 ;; Create the new frame. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
178 (let ((new |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
179 (new-frame |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
180 (append initial-frame-alist |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
181 default-frame-alist |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
182 (frame-parameters frame-initial-frame))))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
183 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
184 ;; The initial frame, which we are about to delete, may be |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
185 ;; the only frame with a minibuffer. If it is, create a |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
186 ;; new one. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
187 (or (delq frame-initial-frame (minibuffer-frame-list)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
188 (new-frame (append minibuffer-frame-alist |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
189 '((minibuffer . only))))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
190 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
191 ;; If the initial frame is serving as a surrogate |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
192 ;; minibuffer frame for any frames, we need to wean them |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
193 ;; onto a new frame. The default-minibuffer-frame |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
194 ;; variable must be handled similarly. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
195 (let ((users-of-initial |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
196 (filtered-frame-list |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
197 (function (lambda (frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
198 (and (not (eq frame frame-initial-frame)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
199 (eq (window-frame |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
200 (minibuffer-window frame)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
201 frame-initial-frame))))))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
202 (if (or users-of-initial |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
203 (eq default-minibuffer-frame frame-initial-frame)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
204 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
205 ;; Choose an appropriate frame. Prefer frames which |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
206 ;; are only minibuffers. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
207 (let* ((new-surrogate |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
208 (car |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
209 (or (filtered-frame-list |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
210 (function |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
211 (lambda (frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
212 (eq (cdr (assq 'minibuffer |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
213 (frame-parameters frame))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
214 'only)))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
215 (minibuffer-frame-list)))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
216 (new-minibuffer (minibuffer-window new-surrogate))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
217 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
218 (if (eq default-minibuffer-frame frame-initial-frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
219 (setq default-minibuffer-frame new-surrogate)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
220 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
221 ;; Wean the frames using frame-initial-frame as |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
222 ;; their minibuffer frame. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
223 (mapcar |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
224 (function |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
225 (lambda (frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
226 (modify-frame-parameters |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
227 frame (list (cons 'minibuffer new-minibuffer))))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
228 users-of-initial)))) |
1113 | 229 |
230 ;; Redirect events enqueued at this frame to the new frame. | |
231 ;; Is this a good idea? | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
232 (redirect-frame-focus frame-initial-frame new) |
1113 | 233 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
234 ;; Finally, get rid of the old frame. |
4360
ea004f01b2d8
* frame.el (frame-notice-user-settings): If we had to create a new
Jim Blandy <jimb@redhat.com>
parents:
4305
diff
changeset
|
235 (delete-frame frame-initial-frame t)) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
236 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
237 ;; Otherwise, we don't need all that rigamarole; just apply |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
238 ;; the new parameters. |
4305
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
239 (let (newparms allparms tail) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
240 (setq allparms (append initial-frame-alist |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
241 default-frame-alist)) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
242 (setq tail allparms) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
243 ;; Find just the parms that have changed since we first |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
244 ;; made this frame. Those are the ones actually set by |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
245 ;; the init file. For those parms whose values we already knew |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
246 ;; (such as those spec'd by command line options) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
247 ;; it is undesirable to specify the parm again |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
248 ;; once the user has seen the frame and been able to alter it |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
249 ;; manually. |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
250 (while tail |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
251 (let (newval oldval) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
252 (setq oldval (cdr (assq (car (car tail)) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
253 frame-initial-frame-alist))) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
254 (setq newval (cdr (assq (car (car tail)) allparms))) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
255 (or (eq oldval newval) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
256 (setq newparms |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
257 (cons (cons (car (car tail)) newval) newparms)))) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
258 (setq tail (cdr tail))) |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
259 (modify-frame-parameters frame-initial-frame |
a39dcf68a29c
(frame-notice-user-settings): Don't reapply a parm
Richard M. Stallman <rms@gnu.org>
parents:
3971
diff
changeset
|
260 (nreverse newparms))))) |
394 | 261 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
262 ;; Restore the original buffer. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
263 (set-buffer old-buffer) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
264 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
265 ;; Make sure the initial frame can be GC'd if it is ever deleted. |
2870
cd270fa53052
* frame.el (frame-notice-user-settings): Don't make
Jim Blandy <jimb@redhat.com>
parents:
2846
diff
changeset
|
266 ;; Make sure frame-notice-user-settings does nothing if called twice. |
cd270fa53052
* frame.el (frame-notice-user-settings): Don't make
Jim Blandy <jimb@redhat.com>
parents:
2846
diff
changeset
|
267 (setq frame-initial-frame nil))) |
394 | 268 |
269 | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
270 ;;;; Creation of additional frames, and other frame miscellanea |
394 | 271 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
272 ;;; Return some frame other than the current frame, creating one if |
3591
507f64624555
Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents:
3554
diff
changeset
|
273 ;;; necessary. Note that the minibuffer frame, if separate, is not |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
274 ;;; considered (see next-frame). |
827 | 275 (defun get-other-frame () |
777 | 276 (let ((s (if (equal (next-frame (selected-frame)) (selected-frame)) |
277 (new-frame) | |
278 (next-frame (selected-frame))))) | |
394 | 279 s)) |
280 | |
777 | 281 (defun next-multiframe-window () |
282 "Select the next window, regardless of which frame it is on." | |
394 | 283 (interactive) |
284 (select-window (next-window (selected-window) | |
285 (> (minibuffer-depth) 0) | |
286 t))) | |
287 | |
777 | 288 (defun previous-multiframe-window () |
289 "Select the previous window, regardless of which frame it is on." | |
394 | 290 (interactive) |
291 (select-window (previous-window (selected-window) | |
292 (> (minibuffer-depth) 0) | |
293 t))) | |
294 | |
2246
1f0d48f7e583
(make-frame): Renamed from new-frame.
Richard M. Stallman <rms@gnu.org>
parents:
2202
diff
changeset
|
295 ;; Alias, kept temporarily. |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2246
diff
changeset
|
296 (defalias 'new-frame 'make-frame) |
2246
1f0d48f7e583
(make-frame): Renamed from new-frame.
Richard M. Stallman <rms@gnu.org>
parents:
2202
diff
changeset
|
297 (defun make-frame (&optional parameters) |
777 | 298 "Create a new frame, displaying the current buffer. |
539 | 299 |
542 | 300 Optional argument PARAMETERS is an alist of parameters for the new |
777 | 301 frame. Specifically, PARAMETERS is a list of pairs, each having one |
542 | 302 of the following forms: |
303 | |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
304 \(name . STRING) - The frame should be named STRING. |
542 | 305 |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
306 \(height . NUMBER) - The frame should be NUMBER text lines high. If |
542 | 307 this parameter is present, the width parameter must also be |
308 given. | |
309 | |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
310 \(width . NUMBER) - The frame should be NUMBER characters in width. |
542 | 311 If this parameter is present, the height parameter must also |
312 be given. | |
313 | |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
314 \(minibuffer . t) - the frame should have a minibuffer |
1977
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
315 \(minibuffer . nil) - the frame should have no minibuffer |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
316 \(minibuffer . only) - the frame should contain only a minibuffer |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
317 \(minibuffer . WINDOW) - the frame should use WINDOW as its minibuffer window. |
542 | 318 |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
319 The documentation for the function `x-create-frame' describes |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
320 additional frame parameters that Emacs recognizes for X window frames." |
394 | 321 (interactive) |
777 | 322 (funcall frame-creation-function parameters)) |
394 | 323 |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
324 (defun filtered-frame-list (predicate) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
325 "Return a list of all live frames which satisfy PREDICATE." |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
326 (let ((frames (frame-list)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
327 good-frames) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
328 (while (consp frames) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
329 (if (funcall predicate (car frames)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
330 (setq good-frames (cons (car frames) good-frames))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
331 (setq frames (cdr frames))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
332 good-frames)) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
333 |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
334 (defun minibuffer-frame-list () |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
335 "Return a list of all frames with their own minibuffers." |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
336 (filtered-frame-list |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
337 (function (lambda (frame) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
338 (eq frame (window-frame (minibuffer-window frame))))))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
339 |
3971
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
340 (defun frame-remove-geometry-params (param-list) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
341 "Return the parameter list PARAM-LIST, but with geometry specs removed. |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
342 This deletes all bindings in PARAM-LIST for `top', `left', `width', |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
343 and `height' parameters. |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
344 Emacs uses this to avoid overriding explicit moves and resizings from |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
345 the user during startup." |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
346 (setq param-list (cons nil param-list)) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
347 (let ((tail param-list)) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
348 (while (consp (cdr tail)) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
349 (if (and (consp (car (cdr tail))) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
350 (memq (car (car (cdr tail))) '(height width top left))) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
351 (setcdr tail (cdr (cdr tail))) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
352 (setq tail (cdr tail))))) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
353 (cdr param-list)) |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
354 |
6e7afc0a7fbc
* frame.el (frame-remove-geometry-params): New function.
Jim Blandy <jimb@redhat.com>
parents:
3966
diff
changeset
|
355 |
4425
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
356 (defun other-frame (arg) |
4431
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
357 "Select the ARG'th different visible frame, and raise it. |
4425
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
358 All frames are arranged in a cyclic order. |
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
359 This command selects the frame ARG steps away in that order. |
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
360 A negative ARG moves in the opposite order." |
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
361 (interactive "p") |
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
362 (let ((frame (selected-frame))) |
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
363 (while (> arg 0) |
4431
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
364 (setq frame (next-frame frame)) |
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
365 (while (not (eq (frame-visible-p frame) t)) |
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
366 (setq frame (next-frame frame))) |
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
367 (setq arg (1- arg))) |
4425
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
368 (while (< arg 0) |
4431
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
369 (setq frame (previous-frame frame)) |
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
370 (while (not (eq (frame-visible-p frame) t)) |
2fe6adb8a82f
(other-frame): Skip iconified and invisible frames.
Roland McGrath <roland@gnu.org>
parents:
4425
diff
changeset
|
371 (setq frame (previous-frame frame))) |
4553
ceb140c16ad2
(other-frame): Fix error in loop counting.
Richard M. Stallman <rms@gnu.org>
parents:
4431
diff
changeset
|
372 (setq arg (1+ arg))) |
4425
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
373 (raise-frame frame) |
4784
8878c40bc7bd
(other-frame): Warp the mouse so that the other
Richard M. Stallman <rms@gnu.org>
parents:
4670
diff
changeset
|
374 (select-frame frame) |
8878c40bc7bd
(other-frame): Warp the mouse so that the other
Richard M. Stallman <rms@gnu.org>
parents:
4670
diff
changeset
|
375 (set-mouse-position (selected-frame) (frame-width) 0) |
8878c40bc7bd
(other-frame): Warp the mouse so that the other
Richard M. Stallman <rms@gnu.org>
parents:
4670
diff
changeset
|
376 (unfocus-frame))) |
394 | 377 |
777 | 378 ;;;; Frame configurations |
756 | 379 |
777 | 380 (defun current-frame-configuration () |
381 "Return a list describing the positions and states of all frames. | |
2202
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
382 Its car is `frame-configuration'. |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
383 Each element of the cdr is a list of the form (FRAME ALIST WINDOW-CONFIG), |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
384 where |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
385 FRAME is a frame object, |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
386 ALIST is an association list specifying some of FRAME's parameters, and |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
387 WINDOW-CONFIG is a window configuration object for FRAME." |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
388 (cons 'frame-configuration |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
389 (mapcar (function |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
390 (lambda (frame) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
391 (list frame |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
392 (frame-parameters frame) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
393 (current-window-configuration frame)))) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
394 (frame-list)))) |
756 | 395 |
4670
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
396 (defun set-frame-configuration (configuration &optional nodelete) |
777 | 397 "Restore the frames to the state described by CONFIGURATION. |
398 Each frame listed in CONFIGURATION has its position, size, window | |
4670
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
399 configuration, and other parameters set as specified in CONFIGURATION. |
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
400 Unless optional second argument NODELETE is given and non-nil, deletes |
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
401 all existing frames not listed in CONFIGURATION." |
2202
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
402 (or (frame-configuration-p configuration) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
403 (signal 'wrong-type-argument |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
404 (list 'frame-configuration-p configuration))) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
405 (let ((config-alist (cdr configuration)) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
406 frames-to-delete) |
756 | 407 (mapcar (function |
777 | 408 (lambda (frame) |
2202
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
409 (let ((parameters (assq frame config-alist))) |
756 | 410 (if parameters |
411 (progn | |
3764
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
412 (modify-frame-parameters |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
413 frame |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
414 ;; Since we can't set a frame's minibuffer status, |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
415 ;; we might as well omit the parameter altogether. |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
416 (let* ((parms (nth 1 parameters)) |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
417 (mini (assq 'minibuffer parms))) |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
418 (if mini (setq parms (delq mini parms))) |
d965878f294f
* frame.el (set-frame-configuration): Don't try to set a frame's
Jim Blandy <jimb@redhat.com>
parents:
3647
diff
changeset
|
419 parms)) |
756 | 420 (set-window-configuration (nth 2 parameters))) |
777 | 421 (setq frames-to-delete (cons frame frames-to-delete)))))) |
422 (frame-list)) | |
4670
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
423 (or nodelete |
e39967101d8b
(set-frame-configuration): Take new optional arg NODELETE; if non-nil,
Roland McGrath <roland@gnu.org>
parents:
4625
diff
changeset
|
424 (mapcar 'delete-frame frames-to-delete)))) |
394 | 425 |
2202
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
426 (defun frame-configuration-p (object) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
427 "Return non-nil if OBJECT seems to be a frame configuration. |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
428 Any list whose car is `frame-configuration' is assumed to be a frame |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
429 configuration." |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
430 (and (consp object) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
431 (eq (car object) 'frame-configuration))) |
081afcef5e85
Make frame configurations start with a distinctive symbol.
Jim Blandy <jimb@redhat.com>
parents:
2069
diff
changeset
|
432 |
394 | 433 |
777 | 434 ;;;; Convenience functions for accessing and interactively changing |
435 ;;;; frame parameters. | |
394 | 436 |
826 | 437 (defun frame-height (&optional frame) |
777 | 438 "Return number of lines available for display on FRAME. |
439 If FRAME is omitted, describe the currently selected frame." | |
826 | 440 (cdr (assq 'height (frame-parameters frame)))) |
777 | 441 |
442 (defun frame-width (&optional frame) | |
443 "Return number of columns available for display on FRAME. | |
444 If FRAME is omitted, describe the currently selected frame." | |
826 | 445 (cdr (assq 'width (frame-parameters frame)))) |
777 | 446 |
394 | 447 (defun set-default-font (font-name) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
448 "Set the font of the selected frame to FONT. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
449 When called interactively, prompt for the name of the font to use." |
394 | 450 (interactive "sFont name: ") |
777 | 451 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
452 (list (cons 'font font-name)))) |
394 | 453 |
1881
436edc3e74f6
(frame-initialize): Fix error syntax.
Richard M. Stallman <rms@gnu.org>
parents:
1863
diff
changeset
|
454 (defun set-background-color (color-name) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
455 "Set the background color of the selected frame to COLOR. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
456 When called interactively, prompt for the name of the color to use." |
394 | 457 (interactive "sColor: ") |
777 | 458 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
459 (list (cons 'background-color color-name)))) |
394 | 460 |
1881
436edc3e74f6
(frame-initialize): Fix error syntax.
Richard M. Stallman <rms@gnu.org>
parents:
1863
diff
changeset
|
461 (defun set-foreground-color (color-name) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
462 "Set the foreground color of the selected frame to COLOR. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
463 When called interactively, prompt for the name of the color to use." |
394 | 464 (interactive "sColor: ") |
777 | 465 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
466 (list (cons 'foreground-color color-name)))) |
394 | 467 |
468 (defun set-cursor-color (color-name) | |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
469 "Set the text cursor color of the selected frame to COLOR. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
470 When called interactively, prompt for the name of the color to use." |
394 | 471 (interactive "sColor: ") |
777 | 472 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
473 (list (cons 'cursor-color color-name)))) |
394 | 474 |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
475 (defun set-mouse-color (color-name) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
476 "Set the color of the mouse pointer of the selected frame to COLOR. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
477 When called interactively, prompt for the name of the color to use." |
394 | 478 (interactive "sColor: ") |
777 | 479 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
480 (list (cons 'mouse-color color-name)))) |
394 | 481 |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
482 (defun set-border-color (color-name) |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
483 "Set the color of the border of the selected frame to COLOR. |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
484 When called interactively, prompt for the name of the color to use." |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
485 (interactive "sColor: ") |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
486 (modify-frame-parameters (selected-frame) |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
487 (list (cons 'border-color color-name)))) |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
488 |
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
489 (defun auto-raise-mode (arg) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
490 "Toggle whether or not the selected frame should auto-raise. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
491 With arg, turn auto-raise mode on if and only if arg is positive." |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
492 (interactive "P") |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
493 (if (null arg) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
494 (setq arg |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
495 (if (cdr (assq 'auto-raise (frame-parameters (selected-frame)))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
496 -1 1))) |
777 | 497 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
498 (list (cons 'auto-raise (> arg 0))))) |
394 | 499 |
1974
94e4f619080b
These changes were actually made by Richard; I stole his RCS lock.
Jim Blandy <jimb@redhat.com>
parents:
1881
diff
changeset
|
500 (defun auto-lower-mode (arg) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
501 "Toggle whether or not the selected frame should auto-lower. |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
502 With arg, turn auto-lower mode on if and only if arg is positive." |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
503 (interactive "P") |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
504 (if (null arg) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
505 (setq arg |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
506 (if (cdr (assq 'auto-lower (frame-parameters (selected-frame)))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
507 -1 1))) |
777 | 508 (modify-frame-parameters (selected-frame) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
509 (list (cons 'auto-lower (> arg 0))))) |
394 | 510 |
2846
c36e7ad524d3
(toggle-scroll-bar): Renamed from toggle-vertical-scroll...
Richard M. Stallman <rms@gnu.org>
parents:
2763
diff
changeset
|
511 (defun toggle-scroll-bar (arg) |
1977
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
512 "Toggle whether or not the selected frame has vertical scroll bars. |
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
513 With arg, turn vertical scroll bars on if and only if arg is positive." |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
514 (interactive "P") |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
515 (if (null arg) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
516 (setq arg |
1977
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
517 (if (cdr (assq 'vertical-scroll-bars |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
518 (frame-parameters (selected-frame)))) |
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
519 -1 1))) |
777 | 520 (modify-frame-parameters (selected-frame) |
1977
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
521 (list (cons 'vertical-scroll-bars (> arg 0))))) |
394 | 522 |
1881
436edc3e74f6
(frame-initialize): Fix error syntax.
Richard M. Stallman <rms@gnu.org>
parents:
1863
diff
changeset
|
523 (defun toggle-horizontal-scroll-bar (arg) |
1977
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
524 "Toggle whether or not the selected frame has horizontal scroll bars. |
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
525 With arg, turn horizontal scroll bars on if and only if arg is positive. |
ca6059bb1d6f
* frame.el (new-frame): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1974
diff
changeset
|
526 Horizontal scroll bars aren't implemented yet." |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
527 (interactive "P") |
1881
436edc3e74f6
(frame-initialize): Fix error syntax.
Richard M. Stallman <rms@gnu.org>
parents:
1863
diff
changeset
|
528 (error "Horizontal scroll bars aren't implemented yet")) |
1863
6f55c76b5789
* frame.el: Clean up initialization code.
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
529 |
394 | 530 |
777 | 531 ;;;; Aliases for backward compatibility with Emacs 18. |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2246
diff
changeset
|
532 (defalias 'screen-height 'frame-height) |
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2246
diff
changeset
|
533 (defalias 'screen-width 'frame-width) |
958 | 534 |
535 (defun set-screen-width (cols &optional pretend) | |
536 "Obsolete function to change the size of the screen to COLS columns.\n\ | |
537 Optional second arg non-nil means that redisplay should use COLS columns\n\ | |
538 but that the idea of the actual width of the frame should not be changed.\n\ | |
539 This function is provided only for compatibility with Emacs 18; new code\n\ | |
1475 | 540 should use `set-frame-width instead'." |
958 | 541 (set-frame-width (selected-frame) cols pretend)) |
542 | |
543 (defun set-screen-height (lines &optional pretend) | |
544 "Obsolete function to change the height of the screen to LINES lines.\n\ | |
545 Optional second arg non-nil means that redisplay should use LINES lines\n\ | |
546 but that the idea of the actual height of the screen should not be changed.\n\ | |
547 This function is provided only for compatibility with Emacs 18; new code\n\ | |
1475 | 548 should use `set-frame-width' instead." |
958 | 549 (set-frame-height (selected-frame) lines pretend)) |
550 | |
551 (make-obsolete 'screen-height 'frame-height) | |
552 (make-obsolete 'screen-width 'frame-width) | |
553 (make-obsolete 'set-screen-width 'set-frame-width) | |
554 (make-obsolete 'set-screen-height 'set-frame-height) | |
777 | 555 |
556 | |
394 | 557 ;;;; Key bindings |
727 | 558 (defvar ctl-x-5-map (make-sparse-keymap) |
777 | 559 "Keymap for frame commands.") |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2246
diff
changeset
|
560 (defalias 'ctl-x-5-prefix ctl-x-5-map) |
727 | 561 (define-key ctl-x-map "5" 'ctl-x-5-prefix) |
394 | 562 |
777 | 563 (define-key ctl-x-5-map "2" 'new-frame) |
564 (define-key ctl-x-5-map "0" 'delete-frame) | |
4425
1b48826df9cb
(other-frame): New function, analogous to other-window.
Roland McGrath <roland@gnu.org>
parents:
4360
diff
changeset
|
565 (define-key ctl-x-5-map "o" 'other-frame) |
584 | 566 |
777 | 567 (provide 'frame) |
658
7cbd4fcd8b0f
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
568 |
777 | 569 ;;; frame.el ends here |