comparison README.multi-tty @ 83230:d8738586aaec

Remove remaining references to updating_frame. * src/dispextern.h (updated_window): Remove comment reference to updating_frame. * src/dispnew.c (update_window): Remove bogus xassert. * src/xterm.c: (x_clear_frame): Update comment. (x_draw_window_cursor): Remove reference to updating_frame. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-270
author Karoly Lorentey <lorentey@elte.hu>
date Sun, 28 Nov 2004 14:39:06 +0000
parents fe1db7935e1a
children ad592995fd24
comparison
equal deleted inserted replaced
83229:b8f2149f9c3d 83230:d8738586aaec
1 -*- coding: utf-8; mode: text; -*- 1 -*- coding: utf-8; mode: text; -*-
2 GOAL 2 GOAL
3 ---- 3 ----
4 4
5 The goal of this branch is to implement support for opening multiple, 5 This branch implements support for opening multiple, different tty
6 different tty devices and simultaneous X and tty frames from a single 6 devices and simultaneous X and tty frames from a single Emacs session.
7 Emacs session.
8 7
9 Some use cases: 8 Some use cases:
10 Emacs is notoriously slow at startup, so most people use another 9 Emacs is notoriously slow at startup, so most people use another
11 editor or emacsclient for quick editing jobs from the console. 10 editor or emacsclient for quick editing jobs from the console.
12 Unfortunately, emacsclient was very awkward to use, because it did not 11 Unfortunately, emacsclient was very awkward to use, because it did not
26 I'm Károly Lőrentey. My address: lorentey@elte.hu. 25 I'm Károly Lőrentey. My address: lorentey@elte.hu.
27 26
28 Comments, bug reports, suggestions and patches are welcome; send them 27 Comments, bug reports, suggestions and patches are welcome; send them
29 to multi-tty@lists.fnord.hu. 28 to multi-tty@lists.fnord.hu.
30 29
30 The following is a (sadly incomplete) list of people who have
31 contributed to the project by testing, submitting patches, bug
32 reports, and suggestions. Thanks!
33
34 ARISAWA Akihiro <ari at mbf dot ocn dot ne dot jp>
35 Han Boetes <han at mijncomputer dot nl>
36 Robert J. Chassell <bob at rattlesnake dot com>
37 Romain Francoise <romain at orebokech dot com>
38 Ami Fischman <ami at fischman dot org>
39 Friedrich Delgado Friedrichs <friedel at nomaden dot org>
40 IRIE Tetsuya <irie at t dot email dot ne dot jp>
41 Yoshiaki Kasahara <kasahara at nc dot kyushu-u dot ac dot jp>
42 Jurej Kubelka <Juraj dot Kubelka at email dot cz>
43 David Lichteblau <david at lichteblau dot com>
44 Istvan Marko <mi-mtty at kismala dot com>
45 Ted Morse <morse at ciholas dot com>
46 Dan Nicolaescu <dann at ics dot uci dot edu>
47 Gergely Nagy <algernon at debian dot org>
48 Mark Plaksin <happy at mcplaksin dot org>
49 Francisco Borges <borges at let dot rug dot nl>
50 Frank Ruell <stoerte at dreamwarrior dot net>
51 Dan Waber <dwaber at logolalia dot com>
52 and many others.
53
54 Richard Stallman was kind enough to review an earlier version of my
55 patches.
56
57
31 MAILING LISTS 58 MAILING LISTS
32 ------------- 59 -------------
33 60
34 The multi-tty mailing list (discussion & bug reports): 61 The multi-tty mailing list (discussion & bug reports):
35 62
62 know if you succeed or fail to use it on other platforms---I'll have a 89 know if you succeed or fail to use it on other platforms---I'll have a
63 few tricky test cases for you. 90 few tricky test cases for you.
64 91
65 Known problems: 92 Known problems:
66 93
67 * Mac, Windows and DOS support is broken, probably doesn't 94 * The single-kboard mode.
68 even compile -- this will be solved later. 95
96 If your multi-tty Emacs session seems to be frozen, you
97 probably have a recursive editing session or a pending
98 minibuffer prompt (which is a kind of recursive editing) on
99 another display. To unfreeze your session, switch to that
100 display and complete the recursive edit, for example by
101 pressing C-] (`abort-recursive-edit').
102
103 I am sorry to say that currently there is no way to break
104 out of this "single-kboard mode" from a frozen display. If
105 you are unable to switch to the display that locks the
106 others (for example because it is on a remote computer),
107 then you can use emacsclient to break out of all recursive
108 editing sessions:
109
110 emacsclient -e '(top-level)'
111
112 Note that this (perhaps) unintuitive behaviour is by design.
113 Single-kboard mode is required because of an intrinsic Emacs
114 limitation that is very hard to eliminate. (This limitation
115 is related to the single-threaded nature of Emacs.)
116
117 I plan to implement better user notification and support for
118 breaking out of single-kboard mode from locked displays.
119
120 * Mac, Windows and DOS support is broken, doesn't even
121 compile. Multiple display support will probably not provide
122 new Emacs features on these systems, but the multi-tty
123 branch changed a few low-level interfaces, and the
124 system-dependent source files need to be adapted
125 accordingly. The changes are mostly trivial, so almost
126 anyone can help, if only by compiling the branch and
127 reporting the compiler errors. (It is not worth to do this
128 yet, though.)
129
69 130
70 HOW TO GET THE BRANCH 131 HOW TO GET THE BRANCH
71 --------------------- 132 ---------------------
72 133
73 The branch uses GNU Arch (http://www.gnuarch.org) for version control. 134 The branch uses GNU Arch (http://www.gnuarch.org) for version control.
84 tla register-archive http://mirrors.gnuarch.org/lorentey@elte.hu--2004/ 145 tla register-archive http://mirrors.gnuarch.org/lorentey@elte.hu--2004/
85 tla get lorentey@elte.hu--2004/emacs--multi-tty <directory> 146 tla get lorentey@elte.hu--2004/emacs--multi-tty <directory>
86 147
87 (I use a recent tla development snapshot, but any of the released 148 (I use a recent tla development snapshot, but any of the released
88 versions of arch will do fine, I think.) My GPG key id is 0FB27A3F; 149 versions of arch will do fine, I think.) My GPG key id is 0FB27A3F;
89 it is available from hkp://wwwkeys.eu.pgp.net/, or my homepage at 150 it is available from hkp://wwwkeys.eu.pgp.net/, or from my homepage at
90 http://lorentey.hu/rolam/gpg.html) 151 http://lorentey.hu/rolam/gpg.html)
91 152
92 To update your source tree to the latest revision after the first 153 Don't worry if the above checkout takes a few minutes to complete;
93 checkout, simply use the following command: 154 once you have a source tree, updating it to the latest revision will
94 155 be _much_ faster. Use the following command for the update:
95 tla replay lorentey@elte.hu--2004/emacs--multi-tty--0 156
96 157 tla replay
97 If you are interested, you can find more information about Arch on 158
98 http://wiki.gnuarch.org/. It's a wonderful source control system, I 159 You can find more information about Arch on http://wiki.gnuarch.org/.
99 highly recommend it. 160 It's a wonderful source control system, I highly recommend it.
100 161
101 If you don't have tla, the branch has a homepage from which you can 162 If you don't have tla, the branch has a homepage from which you can
102 download conventional patches against Emacs CVS HEAD: 163 download conventional patches against Emacs CVS HEAD:
103 164
104 http://lorentey.hu/project/emacs.html 165 http://lorentey.hu/project/emacs.html
144 205
145 Creating new frames on the same tty with C-x 5 2 works, and they 206 Creating new frames on the same tty with C-x 5 2 works, and they
146 behave the same way as in previous Emacs versions. If you exit emacs, 207 behave the same way as in previous Emacs versions. If you exit emacs,
147 all terminals should be restored to their previous states. 208 all terminals should be restored to their previous states.
148 209
149 This is work in progress, and probably full of bugs. You should 210 This is work in progress, and probably full of bugs. It is a good
150 always run emacs from gdb, so that you'll have a live instance to 211 idea to run emacs from gdb, so that you'll have a live instance to
151 debug if something goes wrong. Please send me 212 debug if something goes wrong. Please send me your bug reports on our
152 (multi-tty@lists.fnord.hu) your bug reports. 213 mailing list: multi-tty@lists.fnord.hu
153 214
154 TIPS & TRICKS 215 TIPS & TRICKS
155 ------------- 216 -------------
156 217
157 I think the best way to use the new Emacs is to have it running inside 218 I think the best way to use the new Emacs is to have it running inside
265 *** The `window-system' variable has been made frame-local. 326 *** The `window-system' variable has been made frame-local.
266 327
267 *** The new `initial-window-system' variable contains the 328 *** The new `initial-window-system' variable contains the
268 `window-system' value for the first frame. 329 `window-system' value for the first frame.
269 330
270 THANKS
271 ------
272
273 The following is a (sadly incomplete) list of people who have
274 contributed to the project by testing, submitting patches, bug
275 reports, and suggestions. Thanks!
276
277 ARISAWA Akihiro <ari at mbf dot ocn dot ne dot jp>
278 Han Boetes <han at mijncomputer dot nl>
279 Robert J. Chassell <bob at rattlesnake dot com>
280 Romain Francoise <romain at orebokech dot com>
281 Ami Fischman <ami at fischman dot org>
282 Friedrich Delgado Friedrichs <friedel at nomaden dot org>
283 IRIE Tetsuya <irie at t dot email dot ne dot jp>
284 Yoshiaki Kasahara <kasahara at nc dot kyushu-u dot ac dot jp>
285 Jurej Kubelka <Juraj dot Kubelka at email dot cz>
286 David Lichteblau <david at lichteblau dot com>
287 Istvan Marko <mi-mtty at kismala dot com>
288 Ted Morse <morse at ciholas dot com>
289 Dan Nicolaescu <dann at ics dot uci dot edu>
290 Gergely Nagy <algernon at debian dot org>
291 Mark Plaksin <happy at mcplaksin dot org>
292 Francisco Borges <borges at let dot rug dot nl>
293 Frank Ruell <stoerte at dreamwarrior dot net>
294 Dan Waber <dwaber at logolalia dot com>
295 and many others.
296
297 Richard Stallman was kind enough to review an earlier version of my
298 patches.
299
300 CHANGELOG 331 CHANGELOG
301 --------- 332 ---------
302 333
303 See arch logs. 334 See arch logs.
304 335
307 (The rest of this file consists of my development notes and as such it 338 (The rest of this file consists of my development notes and as such it
308 is probably not very interesting for anyone else.) 339 is probably not very interesting for anyone else.)
309 340
310 THINGS TO DO 341 THINGS TO DO
311 ------------ 342 ------------
312
313 ** rif->flush_display_optional (NULL) calls should be replaced by a
314 new global function.
315
316 ** Hunt down display-related functions in frame.el and extend them all
317 to accept display ids.
318
319 ** Have a look at fatal_error_hook.
320
321 ** Check if we got term-setup-hook right.
322
323 ** make-frame does not correctly handle extra parameters in its
324 argument:
325
326 (frame-parameter (make-frame (list (cons 'foobar 42))) 'foobar)
327 => nil
328
329 (This is likely an error in the CVS trunk.)
330
331 ** Fix set-input-mode for multi-tty. It's a truly horrible interface;
332 what if we'd blow it up into several separate functions (with a
333 compatibility definition)?
334
335 ** Lisp-level stuff that needs to be updated for multi-tty:
336
337 - normal-erase-is-backspace-mode (simple.el) (rep. by Dan Waber)
338
339 343
340 ** The single-keyboard mode of MULTI_KBOARD is extremely confusing 344 ** The single-keyboard mode of MULTI_KBOARD is extremely confusing
341 sometimes; Emacs does not respond to stimuli from other keyboards. 345 sometimes; Emacs does not respond to stimuli from other keyboards.
342 At least a beep or a message would be important, if the single-mode 346 At least a beep or a message would be important, if the single-mode
343 is still required to prevent interference. (Reported by Dan 347 is still required to prevent interference. (Reported by Dan
344 Nicolaescu.) (Update: selecting a region with the mouse enables 348 Nicolaescu.)
345 single_kboard under X. This is very confusing.) Update: 349
346 After discussions with Richard, this will be resolved by having 350 Update: selecting a region with the mouse enables single_kboard
347 locked displays warn the user to wait, and introducing a complex 351 under X. This is very confusing.
348 protocol to remotely bail out of single-kboard mode by pressing C-g. 352
353 Update: After discussions with Richard, this will be resolved by
354 having locked displays warn the user to wait, and introducing a
355 complex protocol to remotely bail out of single-kboard mode by
356 pressing C-g.
357
358 Update: Warning the user is not trivial to implement, as Emacs has
359 only one echo area. Ideally the warning should not be displayed on
360 the display that is locking the others. Perhaps the high
361 probability of user confusion caused by single_kboard mode deserves
362 a special case in the display code. Alternatively, it might be
363 good enough to signal single_kboard mode by changing the modelines
364 or some other frame-local display element on the locked out displays.
365
366 ** normal-erase-is-backspace-mode in simple.el needs to be updated for
367 multi-tty (rep. by Dan Waber).
368
369 ** Hunt down display-related functions in frame.el and extend them all
370 to accept display ids.
371
372 ** rif->flush_display_optional (NULL) calls should be replaced by a
373 new global function.
374
375 ** Have a look at fatal_error_hook.
376
377 ** Check if we got term-setup-hook right.
378
379 ** make-frame does not correctly handle extra parameters in its
380 argument:
381
382 (frame-parameter (make-frame (list (cons 'foobar 42))) 'foobar)
383 => nil
384
385 (This is likely an error in the CVS trunk.)
386
387 ** Fix set-input-mode for multi-tty. It's a truly horrible interface;
388 what if we'd blow it up into several separate functions (with a
389 compatibility definition)?
349 390
350 ** The terminal customization files in term/*.el tend to change global 391 ** The terminal customization files in term/*.el tend to change global
351 parameters, which may confuse Emacs with multiple displays. Change 392 parameters, which may confuse Emacs with multiple displays. Change
352 them to tweak only frame-local settings, if possible. 393 them to tweak only frame-local settings, if possible.
353 394
362 implement. 403 implement.
363 404
364 ** Gergely Nagy suggests that C-x # should only kill the current 405 ** Gergely Nagy suggests that C-x # should only kill the current
365 frame, not any other emacsclient frame that may have the same file 406 frame, not any other emacsclient frame that may have the same file
366 opened for editing. I think I agree with him. 407 opened for editing. I think I agree with him.
367
368 ** Miles Bader suggests that C-x C-c on an emacsclient frame should
369 only close the frame, not exit the entire Emacs session. Update:
370 see above for a function that does this. Maybe this should be the
371 new default?
372 408
373 ** Very strange bug: visible-bell does not work on secondary 409 ** Very strange bug: visible-bell does not work on secondary
374 terminals in xterm and konsole. The screen does flicker a bit, 410 terminals in xterm and konsole. The screen does flicker a bit,
375 but it's so quick it isn't noticable. 411 but it's so quick it isn't noticable.
376 412
938 device names, this is not possible until struct display becomes 974 device names, this is not possible until struct display becomes
939 accessible as a Lisp-level object. 975 accessible as a Lisp-level object.
940 976
941 (Done.) 977 (Done.)
942 978
979 -- Miles Bader suggests that C-x C-c on an emacsclient frame should
980 only close the frame, not exit the entire Emacs session. Update:
981 see above for a function that does this. Maybe this should be the
982 new default?
983
984 (Done. This is the new default. No complaints so far.)
985
986
943 ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d 987 ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d