Mercurial > emacs
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 |
