aboutsummaryrefslogtreecommitdiffstats
path: root/README.multi-tty
diff options
context:
space:
mode:
authorKaroly Lorentey2004-02-28 01:23:39 +0000
committerKaroly Lorentey2004-02-28 01:23:39 +0000
commit0b0d3e0bcefdde298893aaad2e816e1503cef222 (patch)
tree439342044857514ad784de0470f5546eb9c3ef9a /README.multi-tty
parent2fc0cf2aefa777e5fe48596e2d43774b28051931 (diff)
downloademacs-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-tty57
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