Commit | Line | Data |
---|---|---|
28d440ab KL |
1 | -*- coding: utf-8; -*- |
2 | GOAL | |
3 | ---- | |
4 | ||
5 | The ultimate goal of this branch is to implement support for opening | |
6 | multiple, different tty devices and simultaneous X and tty frames from | |
7 | a single Emacs session. | |
8 | ||
9 | WHO IS DOING IT | |
10 | --------------- | |
11 | ||
12 | I'm Károly Lőrentey. My address: lorentey@elte.hu. | |
13 | ||
14 | Patches or suggestions are welcome! | |
15 | ||
4f0359de KL |
16 | Retrieving 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 | |
24 | STATUS | |
25 | ------ | |
26 | ||
27 | We can create frames on new tty devices, but there are problems with | |
9628b887 KL |
28 | redisplay. Input is read from all terminals (NOT via MULTIKBOARD!). |
29 | At the moment, the type of the new terminals must be the same as the | |
30 | initial terminal. Emacsclient is extended to support opening a new | |
31 | terminal frame. | |
28d440ab | 32 | |
9628b887 KL |
33 | To try it out, start up the emacs server (M-x server-start), and then |
34 | start emacsclient with | |
28d440ab | 35 | |
9628b887 | 36 | emacsclient -h |
28d440ab | 37 | |
9628b887 KL |
38 | If you exit emacs, both terminals are restored to their previous |
39 | states. | |
28d440ab KL |
40 | |
41 | X, Mac, Windows and DOS support is broken. | |
42 | ||
43 | NEWS | |
44 | ---- | |
45 | ||
46 | For 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 | |
55 | CHANGELOG | |
56 | --------- | |
57 | ||
58 | See arch logs. | |
59 | ||
60 | ||
61 | THINGS 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 |
110 | THINGS 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 |