diff options
Diffstat (limited to 'README.multi-tty')
| -rw-r--r-- | README.multi-tty | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/README.multi-tty b/README.multi-tty index ed2fb17770f..5d3e5f4f014 100644 --- a/README.multi-tty +++ b/README.multi-tty | |||
| @@ -27,8 +27,8 @@ STATUS | |||
| 27 | Basic support is there; there are some rough edges, but it already | 27 | Basic support is there; there are some rough edges, but it already |
| 28 | seems to be usable. Input is read from all terminals (NOT via | 28 | seems to be usable. Input is read from all terminals (NOT via |
| 29 | MULTIKBOARD!). At the moment, the type of the new terminals must be | 29 | MULTIKBOARD!). At the moment, the type of the new terminals must be |
| 30 | the same as the initial terminal. Emacsclient was extended to support | 30 | the same as the initial terminal. Emacsclient has been extended to |
| 31 | opening a new terminal frame. | 31 | support opening a new terminal frame. |
| 32 | 32 | ||
| 33 | To try it out, start up the emacs server (M-x server-start), and then | 33 | To try it out, start up the emacs server (M-x server-start), and then |
| 34 | (from a shell prompt on another terminal) start emacsclient with | 34 | (from a shell prompt on another terminal) start emacsclient with |
| @@ -147,38 +147,68 @@ DIARY OF CHANGES | |||
| 147 | (Done, emacsclient signals Emacs after writing to the proxy pseudo | 147 | (Done, emacsclient signals Emacs after writing to the proxy pseudo |
| 148 | terminal. This means that multi-tty does not work with raw ttys!) | 148 | terminal. This means that multi-tty does not work with raw ttys!) |
| 149 | 149 | ||
| 150 | THINGS TO DO | ||
| 151 | ------------ | ||
| 152 | 150 | ||
| 153 | ** Implement sane error handling after initialization. (Currently | 151 | -- Make make-terminal-frame look up the `tty' and `tty-type' frame |
| 152 | parameters from the currently selected terminal before the global | ||
| 153 | default. | ||
| 154 | |||
| 155 | (Done.) | ||
| 156 | |||
| 157 | -- Put all cached terminal escape sequences into struct tty_output. | ||
| 158 | Currently, they are still stored in global variables, so we don't | ||
| 159 | really support multiple terminal types. | ||
| 160 | |||
| 161 | (Done.) | ||
| 162 | |||
| 163 | -- Implement sane error handling after initialization. (Currently | ||
| 154 | emacs exits if you specify a bad terminal type.) The helpful error | 164 | emacs exits if you specify a bad terminal type.) The helpful error |
| 155 | messages must still be provided when Emacs starts. | 165 | messages must still be provided when Emacs starts. |
| 156 | 166 | ||
| 157 | ** C-g should work on secondary terminals. | 167 | (Done.) |
| 168 | |||
| 169 | -- Implement terminal deletion, i.e., deleting local frames, closing | ||
| 170 | the tty device and restoring its previous state without exiting | ||
| 171 | Emacs. | ||
| 158 | 172 | ||
| 159 | ** Make make-terminal-frame look up the tty and tty-type parameters | 173 | (Done, but at the moment only called when an error happens during |
| 160 | from the currently selected terminal before the global default. | 174 | initialization. There is a memory corruption error around this |
| 175 | somewhere.) | ||
| 176 | |||
| 177 | |||
| 178 | THINGS TO DO | ||
| 179 | ------------ | ||
| 180 | |||
| 181 | ** Fix mysterious memory corruption error with tty deletion. To | ||
| 182 | trigger it, try the following shell command: | ||
| 183 | |||
| 184 | while true; do TERM=no-such-terminal-definition emacsclient -h; done | ||
| 185 | |||
| 186 | Emacs usually dumps core after a few dozen iterations. (The bug | ||
| 187 | seems to be related to the xfree()ing or bzero()ing of | ||
| 188 | tty_output.Wcm. Maybe there are outside references to struct Wcm? | ||
| 189 | Sounds logical, otherwise these vars would not have been collected | ||
| 190 | into a struct. But where?) | ||
| 191 | |||
| 192 | This does not seem to happen if the error occurs before terminal | ||
| 193 | initialization or if I comment out all xfree()s in delete_frame. | ||
| 194 | Update: yes it does, although it is much rarer. | ||
| 195 | |||
| 196 | ** C-g should work on secondary terminals. | ||
| 161 | 197 | ||
| 162 | ** Move optimalization parameters (costs) from union output_data to | 198 | ** Move optimalization parameters (costs) from union output_data to |
| 163 | a backend-neutral per-device structure. | 199 | a backend-neutral per-device structure. |
| 164 | 200 | ||
| 165 | ** Implement terminal deletion, i.e., deleting local frames, closing | ||
| 166 | the tty device and restoring its previous state without exiting | ||
| 167 | Emacs. This should be exported to the Lisp environment. | ||
| 168 | |||
| 169 | ** Implement automatic deletion of terminals when the last frame on | 201 | ** Implement automatic deletion of terminals when the last frame on |
| 170 | that terminal is closed. | 202 | that terminal is closed. |
| 171 | 203 | ||
| 172 | ** Put all cached terminal escape sequences into struct tty_output. | ||
| 173 | Currently, they are still stored in global variables, so we don't | ||
| 174 | really support multiple terminal types. | ||
| 175 | |||
| 176 | ** Make parts of struct tty_output accessible from Lisp. The device | 204 | ** Make parts of struct tty_output accessible from Lisp. The device |
| 177 | name and the type is sufficient. | 205 | name and the type is sufficient. |
| 178 | 206 | ||
| 207 | ** Export delete_tty to the Lisp environment. | ||
| 208 | |||
| 179 | ** Implement support for starting an interactive Emacs session without | 209 | ** Implement support for starting an interactive Emacs session without |
| 180 | an initial frame. (The user would connect to it and open frames | 210 | an initial frame. (The user would connect to it and open frames |
| 181 | later, with emacsclient.) Not necessary a good idea. | 211 | later, with emacsclient.) Not necessarily a good idea. |
| 182 | 212 | ||
| 183 | ** Support raw secondary terminals. (This one is tricky, SIGIO works | 213 | ** Support raw secondary terminals. (This one is tricky, SIGIO works |
| 184 | only on the controlling terminal.) | 214 | only on the controlling terminal.) |