diff options
| author | Karoly Lorentey | 2004-02-28 01:23:39 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-02-28 01:23:39 +0000 |
| commit | 0b0d3e0bcefdde298893aaad2e816e1503cef222 (patch) | |
| tree | 439342044857514ad784de0470f5546eb9c3ef9a /README.multi-tty | |
| parent | 2fc0cf2aefa777e5fe48596e2d43774b28051931 (diff) | |
| download | emacs-0b0d3e0bcefdde298893aaad2e816e1503cef222.tar.gz emacs-0b0d3e0bcefdde298893aaad2e816e1503cef222.zip | |
Implemented suspending of emacsclient frames.
lib-src/emacsclient.c (quote_file_name): Renamed to quote_argument.
(unquote_argument, handle_sigcont, handle_sigtstp): New functions.
(out, in): New global variables for communicating with the Emacs process.
(init_signals): Set up handlers for SIGCONT, SIGTSTP and SIGTTOU.
(main): Changed out and in to global variables. Prepend `-eval' or
'-file' to each argument. Use fsync to force sending the strings to Emacs.
Removed obsolete -bad-version code. Support the -suspend command.
Cleaned up newline handling.
lisp/frame.el (suspend-frame): New function.
Substitute key definition of suspend-emacs with suspend-frame.
lisp/server.el (server-log): Cosmetic change in log format.
(server-handle-delete-tty, server-handle-delete-frame): Added logging.
(server-handle-suspend-tty, server-quote-arg): New functions.
(server-start): Install server-handle-suspend-tty.
(server-process-filter): Reorganized source code for clarity.
Implemented -resume, -suspend and -ignore commands.
lisp/term/x-win.el (x-initialize-window-system): Don't change the
binding of C-z.
src/cm.c: Replaced TTY_INPUT, TTY_OUTPUT, TTY_TERMSCRIPT calls with
their macro expansion.
src/dispnew.c: Ditto.
src/frame.c: Ditto.
src/keyboard.c: Ditto.
src/sysdep.c: Ditto.
src/keyboard.c (tty_read_avail_input): Don't read if the terminal is
suspended.
src/sysdep.c (discard_tty_input, init_sys_modes, reset_sys_modes): Ditto.
src/term.c (tty_set_terminal_modes, tty_reset_terminal_modes): Ditto.
src/term.c (Vsuspend_tty_functions, Vresume_tty_functions): New hooks.
(syms_of_term): Defvar them.
(term_init): Don't allow opening a new frame on a suspended tty device.
(Fsuspend_tty, Fresume_tty): New functions.
(syms_of_term): Defsubr them.
src/termchar.c (struct tty_display_info): Update documentation of
input and output.
(TTY_INPUT, TTY_OUTPUT, TTY_TERMSCRIPT): Removed.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-105
Diffstat (limited to 'README.multi-tty')
| -rw-r--r-- | README.multi-tty | 57 |
1 files changed, 48 insertions, 9 deletions
diff --git a/README.multi-tty b/README.multi-tty index 68cae7a2060..43dfdcbc91f 100644 --- a/README.multi-tty +++ b/README.multi-tty | |||
| @@ -200,22 +200,50 @@ THINGS TO DO | |||
| 200 | argument-handling is done in Lisp, so this should be quite easy to | 200 | argument-handling is done in Lisp, so this should be quite easy to |
| 201 | implement. | 201 | implement. |
| 202 | 202 | ||
| 203 | ** Very strange bug: visible-bell does not work on secondary | 203 | ** Make `struct display' accessible to Lisp programs. Accessor functions: |
| 204 | terminals. This might be something xterm (konsole) specific. | ||
| 205 | 204 | ||
| 206 | ** Find out the best way to support suspending Emacs with multiple | 205 | (displayp OBJECT): Returns t if OBJECT is a display. |
| 207 | ttys. My guess: disable it on the controlling tty, but from other | ||
| 208 | ttys pass it on to emacsclient somehow. (It is (I hope) trivial to | ||
| 209 | extend emacsclient to handle suspend/resume. A `kill -STOP' almost | ||
| 210 | works right now.) | ||
| 211 | 206 | ||
| 212 | ** Clean up the frame-local variable system. I think it's ugly and | 207 | (selected-display): Returns the display object of the selected frame. |
| 213 | error-prone. But maybe I just haven't yet fully understood it. | 208 | |
| 209 | (frame-display FRAME): Returns the display object of FRAME. | ||
| 210 | |||
| 211 | (display-frames DISPLAY): Returns a list of frames on DISPLAY. | ||
| 212 | |||
| 213 | (display-type DISPLAY): Returns the type of DISPLAY, as a | ||
| 214 | symbol. (See `framep'.) | ||
| 215 | |||
| 216 | (display-device DISPLAY): Returns the name of the device that | ||
| 217 | DISPLAY uses, as a string. (E.g: "/dev/pts/16", or | ||
| 218 | ":0.0") | ||
| 219 | |||
| 220 | See next issue why this is necessary. | ||
| 221 | |||
| 222 | ** The following needs to be supported: | ||
| 223 | |||
| 224 | $ emacsclient -t | ||
| 225 | C-z | ||
| 226 | $ bg | ||
| 227 | $ emacsclient -t | ||
| 228 | (This fails now.) | ||
| 229 | |||
| 230 | The cleanest way to solve this is to allow multiple displays on the | ||
| 231 | same terminal device; each new emacsclient process should create | ||
| 232 | its own display. As displays are currently identified by their | ||
| 233 | device names, this is not possible until struct display becomes | ||
| 234 | accessible as a Lisp-level object. | ||
| 214 | 235 | ||
| 215 | ** Add an elaborate mechanism for display-local variables. (There are | 236 | ** Add an elaborate mechanism for display-local variables. (There are |
| 216 | already a few of these; search for `terminal-local' in the Elisp | 237 | already a few of these; search for `terminal-local' in the Elisp |
| 217 | manual.) | 238 | manual.) |
| 218 | 239 | ||
| 240 | ** Very strange bug: visible-bell does not work on secondary | ||
| 241 | terminals in xterm and konsole. The screen does flicker a bit, | ||
| 242 | but it's so quick it isn't noticable. | ||
| 243 | |||
| 244 | ** Clean up the frame-local variable system. I think it's ugly and | ||
| 245 | error-prone. But maybe I just haven't yet fully understood it. | ||
| 246 | |||
| 219 | ** Move baud_rate to struct display. | 247 | ** Move baud_rate to struct display. |
| 220 | 248 | ||
| 221 | ** Implement support for starting an interactive Emacs session without | 249 | ** Implement support for starting an interactive Emacs session without |
| @@ -667,4 +695,15 @@ DIARY OF CHANGES | |||
| 667 | complaints seem to be caused by bugs in term.el; they are not | 695 | complaints seem to be caused by bugs in term.el; they are not |
| 668 | related to multi-tty.) | 696 | related to multi-tty.) |
| 669 | 697 | ||
| 698 | -- Find out the best way to support suspending Emacs with multiple | ||
| 699 | ttys. My guess: disable it on the controlling tty, but from other | ||
| 700 | ttys pass it on to emacsclient somehow. (It is (I hope) trivial to | ||
| 701 | extend emacsclient to handle suspend/resume. A `kill -STOP' almost | ||
| 702 | works right now.) | ||
| 703 | |||
| 704 | (Done. I needed to play with signal handling and the server | ||
| 705 | protocol a bit to make emacsclient behave as a normal UNIX program | ||
| 706 | wrt foreground/background process groups.) | ||
| 707 | |||
| 708 | |||
| 670 | ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d | 709 | ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d |