comparison README.multi-tty @ 83009:b2b37c85b00a

Numerous bugfixes and small improvements. lisp/bindings.el (mode-line-frame-identification): Use %T, not %F. lisp/faces.el (x-create-frame-with-faces): Added frame-creation-function parameter. (tty-create-frame-with-faces): Ditto. lisp/frame.el (frame-creation-function): Make it frame-local. (select-frame-set-input-focus): Use the window-system function, not the variable. lisp/server.el (server-handle-delete-tty): Make sure the client process is removed from server-clients after the delete-process call. It seems that the sentinel is not called. Added docs. (server-process-filter): Immediately add the client to server-clients when a new termcap frame is created. Fixed a case of `not' called with two parameters. Ignore errors while sending the evaluation result back to the client. (server-kill-buffer-query-function): Don't ask the user if the server process is already dead. lisp/term/x-win.el: Don't change mode-line-frame-identification. src/buffer.c (syms_of_buffer): Added %T to the docs of mode-line-format. src/dispnew.c (init_display): Increment the reference count of the new termcap display. src/frame.c (make_terminal_frame): Set the old top frame's visibility to `obscured'. (Fmake_terminal_frame): Look at the current termcap display's name, not just the similar frame parameter. Try to get the type from the current display first, and only then from Vdefault_frame_alist. src/keyboard.c (handle_interrupt): New function to separate the signal handling from C-g processing. (interrupt_signal): Call handle_interrupt to do the real work. (kbd_buffer_store_event): Use handle_interrupt instead of interrupt_signal. (cmd_error_internal): Use FRAME_INITIAL_P instead of ugly hacks. src/termhooks.h (initial_display): New declaration. src/xdisp.c (decode_mode_spec): Added '%T' (termcap-only frame name). git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-49
author Karoly Lorentey <lorentey@elte.hu>
date Sat, 10 Jan 2004 12:56:22 +0000
parents 040dd41ed7d0
children 4aa172a45af1
comparison
equal deleted inserted replaced
83008:040dd41ed7d0 83009:b2b37c85b00a
102 102
103 ** Support for multiple terminal devices has been added. You can 103 ** Support for multiple terminal devices has been added. You can
104 specify a terminal device (`tty' parameter) and a terminal type 104 specify a terminal device (`tty' parameter) and a terminal type
105 (`tty-type' parameter) to `make-terminal-frame'. `tty' must be a 105 (`tty-type' parameter) to `make-terminal-frame'. `tty' must be a
106 terminal device created by the updated emacsclient, or there will 106 terminal device created by the updated emacsclient, or there will
107 be problems with terminal input and window resizes. 107 be problems with terminal input and window resizes.
108 108
109 You can test for the presence of multiple terminal support by 109 You can test for the presence of multiple terminal support by
110 testing for the `multi-tty' feature. 110 testing for the `multi-tty' feature.
111 111
112 ** A make-frame-on-tty function has been added to make it easier to 112 ** A make-frame-on-tty function has been added to make it easier to
136 ** frame-creation-function should always create a frame that is on the 136 ** frame-creation-function should always create a frame that is on the
137 same display as the selected frame. Maybe frame-creation-function 137 same display as the selected frame. Maybe frame-creation-function
138 should simply be removed and make-frame changed to do the right 138 should simply be removed and make-frame changed to do the right
139 thing. 139 thing.
140 140
141 ** The command `emacsclient -t -e '(delete-frame)'' fails to exit. 141 ** Fix interactive use of temacs. There are face-related SEGVs, most
142 likely because of changes in realize_default_face, realize_face.
143
144 ** Allow opening an X session after -nw.
142 145
143 ** Find out the best way to support suspending Emacs with multiple 146 ** Find out the best way to support suspending Emacs with multiple
144 ttys. My guess: disable it on the controlling tty, but from other 147 ttys. My guess: disable it on the controlling tty, but from other
145 ttys pass it on to emacsclient somehow. (It is (I hope) trivial to 148 ttys pass it on to emacsclient somehow. (It is (I hope) trivial to
146 extend emacsclient to handle suspend/resume. A `kill -STOP' almost 149 extend emacsclient to handle suspend/resume. A `kill -STOP' almost
147 works right now.) 150 works right now.)
148 151
149 ** If there are no frames on its controlling terminal, Emacs should 152 ** Exiting Emacs while there are emacsclient frames don't restore the
150 exit if the uses presses C-c there. (See the SIGTERM comment in 153 ttys to their default states.
151 interrupt_signal on why this seems to be impossible to solve
152 generally.)
153
154 ** During an X session, Emacs seems to read from stdin.
155 154
156 ** Move baud_rate to struct display. 155 ** Move baud_rate to struct display.
157
158 ** Do tty output through struct display, like graphical display
159 backends.
160 156
161 ** Implement support for starting an interactive Emacs session without 157 ** Implement support for starting an interactive Emacs session without
162 an initial frame. (The user would connect to it and open frames 158 an initial frame. (The user would connect to it and open frames
163 later, with emacsclient.) Not necessarily a good idea. 159 later, with emacsclient.) Not necessarily a good idea.
164 160
210 206
211 Update: This may have been caused by checking for nread != 0 207 Update: This may have been caused by checking for nread != 0
212 instead of nread > 0 after calling read_socket_hook in 208 instead of nread > 0 after calling read_socket_hook in
213 read_avail_input. 209 read_avail_input.
214 210
215 ** Define an output_initial value for output_method for the initial
216 frame that is dumped with Emacs. Checking for this frame (e.g. in
217 cmd_error_internal) is ugly.
218
219 ** emacsclient -t from an Emacs term buffer does not work, complains 211 ** emacsclient -t from an Emacs term buffer does not work, complains
220 about face problems. This can even lock up Emacs (if the recursive 212 about face problems. This can even lock up Emacs (if the recursive
221 frame sets single_kboard). Update: the face problems are caused by 213 frame sets single_kboard). Update: the face problems are caused by
222 bugs in term.el, not in multi-tty. The lockup is caused by 214 bugs in term.el, not in multi-tty. The lockup is caused by
223 single_kboard mode. 215 single_kboard mode.
225 DIARY OF CHANGES 217 DIARY OF CHANGES
226 ---------------- 218 ----------------
227 219
228 (ex-TODO items with explanations.) 220 (ex-TODO items with explanations.)
229 221
230 -- Introduce a new struct for terminal devices. 222 -- Introduce a new struct for terminal devices.
231 223
232 (Done, see struct tty_output. The list of members is not yet 224 (Done, see struct tty_output. The list of members is not yet
233 complete.) 225 complete.)
234 226
235 -- Change the bootstrap procedure to initialize tty_list. 227 -- Change the bootstrap procedure to initialize tty_list.
249 (Update: They do, now.) 241 (Update: They do, now.)
250 242
251 (Update2: After enabling X, they don't.) 243 (Update2: After enabling X, they don't.)
252 244
253 -- other-frame should cycle through the frames on the `current' 245 -- other-frame should cycle through the frames on the `current'
254 terminal only. 246 terminal only.
255 247
256 (Done, by trivially modifiying next_frame and prev_frame.) 248 (Done, by trivially modifiying next_frame and prev_frame.)
257 249
258 -- Support different terminal sizes. 250 -- Support different terminal sizes.
259 251
260 (Done, no problem.) 252 (Done, no problem.)
261 253
262 -- Make sure terminal resizes are handled gracefully. (Could be 254 -- Make sure terminal resizes are handled gracefully. (Could be
263 problematic.) 255 problematic.)
264 256
265 (Done. We don't get automatic SIGWINCH for additional ttys, 257 (Done. We don't get automatic SIGWINCH for additional ttys,
266 though.) 258 though.)
267 259
268 -- Extend emacsclient to automatically open a new tty when it connects 260 -- Extend emacsclient to automatically open a new tty when it connects
269 to Emacs. 261 to Emacs.
270 262
271 (Done. It's an ugly hack, needs more work.) 263 (Done. It's an ugly hack, needs more work.)
272 264
273 -- Redisplay must refresh the topmost frame on *all* terminals, not 265 -- Redisplay must refresh the topmost frame on *all* terminals, not
274 just the initial terminal. 266 just the initial terminal.
275 267
276 (Done, but introduced an ugly redisplay problems. Ugh.) 268 (Done, but introduced an ugly redisplay problems. Ugh.)
277 269
278 -- Fix redisplay problems. 270 -- Fix redisplay problems.
279 271
280 (Done; it turned out that the entire Wcm structure must be moved 272 (Done; it turned out that the entire Wcm structure must be moved
341 -- Restore tty screen after closing the terminal. 333 -- Restore tty screen after closing the terminal.
342 334
343 (Done, we do the same as Emacs 21.2 for all terminals.) 335 (Done, we do the same as Emacs 21.2 for all terminals.)
344 336
345 -- 'TERM=dumb src/emacs' does not restore the terminal state. 337 -- 'TERM=dumb src/emacs' does not restore the terminal state.
346 338
347 (Done.) 339 (Done.)
348 340
349 -- C-g should work on secondary terminals. 341 -- C-g should work on secondary terminals.
350 342
351 (Done, but the binding is not configurable.) 343 (Done, but the binding is not configurable.)
498 490
499 (Done. There was a safeguard against writing to the initial 491 (Done. There was a safeguard against writing to the initial
500 terminal frame during bootstrap which prevented echo_area_display 492 terminal frame during bootstrap which prevented echo_area_display
501 from working correctly on a tty frame during a combo session.) 493 from working correctly on a tty frame during a combo session.)
502 494
495 -- If there are no frames on its controlling terminal, Emacs should
496 exit if the uses presses C-c there.
497
498 (Done, as far as possible. See the SIGTERM comment in
499 interrupt_signal on why this seems to be impossible to solve this
500 in general.)
501
502 -- During an X session, Emacs seems to read from stdin. Also, Emacs
503 fails to start without a controlling tty.
504
505 (Fixed by replacing the troublesome termcap display with a dummy
506 bootstrap display during bootstrap.
507
508 -- Do tty output through struct display, like graphical display
509 backends.
510
511 (Done.)
512
513 -- Define an output_initial value for output_method for the initial
514 frame that is dumped with Emacs. Checking for this frame (e.g. in
515 cmd_error_internal) is ugly.
516
517 (Done, broking interactive temacs.)
518
519 -- The command `emacsclient -t -e '(delete-frame)'' fails to exit.
520
521 (Fixed.)
522
503 ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d 523 ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d