lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs...
[bpt/emacs.git] / README.multi-tty
CommitLineData
28d440ab
KL
1 -*- coding: utf-8; -*-
2GOAL
3----
4
5The ultimate goal of this branch is to implement support for opening
6multiple, different tty devices and simultaneous X and tty frames from
7a single Emacs session.
8
9WHO IS DOING IT
10---------------
11
12I'm Károly Lőrentey. My address: lorentey@elte.hu.
13
14Patches or suggestions are welcome!
15
4f0359de
KL
16Retrieving the branch:
17
18 tla register-archive lorentey@elte.hu--2004 http://lorentey.web.elte.hu/arch/2004/
19 tla get lorentey@elte.hu--2004/emacs--multi-tty--0 <directory>
20
21(I use tla 1.1.)
22
28d440ab
KL
23
24STATUS
25------
26
27We can create frames on new tty devices, but there are problems with
9628b887
KL
28redisplay. Input is read from all terminals (NOT via MULTIKBOARD!).
29At the moment, the type of the new terminals must be the same as the
30initial terminal. Emacsclient is extended to support opening a new
31terminal frame.
28d440ab 32
9628b887
KL
33To try it out, start up the emacs server (M-x server-start), and then
34start emacsclient with
28d440ab 35
9628b887 36 emacsclient -h
28d440ab 37
9628b887
KL
38If you exit emacs, both terminals are restored to their previous
39states.
28d440ab
KL
40
41X, Mac, Windows and DOS support is broken.
42
43NEWS
44----
45
46For the NEWS file:
47
48** Support for multiple terminal devices has been added. You can
49 specify a terminal device (`tty' parameter) and a terminal type
50 (`tty-type' parameter) to `make-terminal-frame'.
51
9628b887
KL
52** Emacsclient has been extended to support opening a new terminal
53 frame.
28d440ab
KL
54
55CHANGELOG
56---------
57
58See arch logs.
59
60
61THINGS THAT ARE DONE
62--------------------
63
64-- Introduce a new abstraction for terminal devices.
65
66 (Done, see struct tty_output. The abstraction is not yet
67 complete.)
68
69
70-- Change the bootstrap procedure to initialize tty_list.
71
72 (Done, but needs review.)
73
74
75-- Change make-terminal-frame to support specifying another tty.
76
77 (Done, new frame parameters: `tty' and `tty-type'.)
78
79
9628b887
KL
80-- Implement support for reading from multiple terminals.
81
82 (Done, read_avail_input tries to read from each terminal, until one
83 succeeds.)
84
85-- other-frame should cycle through the frames on the `current'
86 terminal.
87
88 (Done. A little fragile, but seems to work.)
89
90-- Support different terminal sizes.
91
92 (Done, no problem.)
93
94-- Make sure terminal resizes are handled gracefully. (Could be
95 problematic.)
96
97 (Done. We don't get SIGWINCH for additional ttys, though.)
98
99-- Extend emacsclient to automatically open a new tty when it connects
100 to Emacs.
101
102 (Done. It's an ugly hack, needs more work.)
103
104-- Redisplay must refresh the topmost frame on all terminals, not just
105 the initial terminal.
106
107 (Done, but introduced ugly redisplay problems. Ugh.)
108
109
28d440ab
KL
110THINGS TO DO
111------------
112
9628b887
KL
113** Fix redisplay problems.
114
28d440ab
KL
115** Make make-terminal-frame look up the tty and tty-type parameters
116 from the currently selected terminal before the global default.
117
118** Move optimalization parameters (costs) from union output_data to
119 struct frame.
120
9628b887
KL
121** Provide a way for emacsclient to tell Emacs that the tty has been
122 resized.
123
28d440ab
KL
124** Implement terminal deletion, i.e., closing the tty device and
125 restoring its previous state without exiting Emacs. This should be
126 exported to the Lisp interpreter.
127
128** Implement automatic deletion of terminals, when the last frame on
129 that terminal is closed.
130
131** Put all cached terminal escape sequences into struct tty_output.
132 Currently, they are still stored in global variables, so we don't
133 really support multiple terminal types.
134
28d440ab 135
9628b887
KL
136** Each keypress should automatically select the frame corresponding
137 to the terminal that it was coming from. This means that Emacs
138 must know from which terminal the last keyboard event came from.
139 (Multikeyboard support may help with this.)
28d440ab
KL
140
141** Make struct tty_output available from Lisp.
142
28d440ab
KL
143** Implement support for starting an interactive Emacs session without
144 an initial frame. (The user would connect to it and open frames
145 later, with emacsclient.) Not necessary a good idea.
146
147** Fix X support.
148
149** Allow simultaneous X and tty frames.
150
151** Fix Mac support (I can't do this myself).
152
153** Fix W32 support (I can't do this myself).
154
155** Fix DOS support (I can't do this myself).
156
157
158
159;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d