diff options
Diffstat (limited to 'admin/notes/multi-tty')
| -rw-r--r-- | admin/notes/multi-tty | 225 |
1 files changed, 82 insertions, 143 deletions
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index c4edd3abc93..868d45138d8 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | -*- coding: utf-8; mode: text; -*- | 1 | -*- coding: utf-8; mode: text; -*- |
| 2 | 2 | ||
| 3 | Copyright (C) 2007-2013 Free Software Foundation, Inc. | 3 | Copyright (C) 2007-2015 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. | 4 | See the end of the file for license conditions. |
| 5 | 5 | ||
| 6 | From README.multi-tty in the multi-tty branch. | 6 | From README.multi-tty in the multi-tty branch. |
| @@ -82,7 +82,7 @@ Known problems: | |||
| 82 | minibuffer prompt (which is a kind of recursive editing) on | 82 | minibuffer prompt (which is a kind of recursive editing) on |
| 83 | another display. To unfreeze your session, switch to that | 83 | another display. To unfreeze your session, switch to that |
| 84 | display and complete the recursive edit, for example by | 84 | display and complete the recursive edit, for example by |
| 85 | pressing C-] (`abort-recursive-edit'). | 85 | pressing C-] ('abort-recursive-edit'). |
| 86 | 86 | ||
| 87 | I am sorry to say that currently there is no way to break | 87 | I am sorry to say that currently there is no way to break |
| 88 | out of this "single-kboard mode" from a frozen display. If | 88 | out of this "single-kboard mode" from a frozen display. If |
| @@ -101,16 +101,6 @@ Known problems: | |||
| 101 | I plan to implement better user notification and support for | 101 | I plan to implement better user notification and support for |
| 102 | breaking out of single-kboard mode from locked displays. | 102 | breaking out of single-kboard mode from locked displays. |
| 103 | 103 | ||
| 104 | * Mac and DOS support is broken, doesn't even | ||
| 105 | compile. Multiple display support will probably not provide | ||
| 106 | new Emacs features on these systems, but the multi-tty | ||
| 107 | branch changed a few low-level interfaces, and the | ||
| 108 | system-dependent source files need to be adapted | ||
| 109 | accordingly. The changes are mostly trivial, so almost | ||
| 110 | anyone can help, if only by compiling the branch and | ||
| 111 | reporting the compiler errors. | ||
| 112 | |||
| 113 | |||
| 114 | TESTING | 104 | TESTING |
| 115 | ------- | 105 | ------- |
| 116 | 106 | ||
| @@ -219,11 +209,11 @@ following: | |||
| 219 | THINGS TO DO | 209 | THINGS TO DO |
| 220 | ------------ | 210 | ------------ |
| 221 | 211 | ||
| 222 | ** See if `tty-defined-color-alist' needs to be terminal-local. | 212 | ** See if 'tty-defined-color-alist' needs to be terminal-local. |
| 223 | Update: Dan says it should be, so convert it. | 213 | Update: Dan says it should be, so convert it. |
| 224 | 214 | ||
| 225 | ** Mikhail Gusarov suggest to add a hook akin to | 215 | ** Mikhail Gusarov suggest to add a hook akin to |
| 226 | `after-make-frame-functions' that is called whenever Emacs connects | 216 | 'after-make-frame-functions' that is called whenever Emacs connects |
| 227 | to a new terminal. Good idea! | 217 | to a new terminal. Good idea! |
| 228 | 218 | ||
| 229 | ** emacsclient -t on the console does not work after su. You have to | 219 | ** emacsclient -t on the console does not work after su. You have to |
| @@ -247,16 +237,16 @@ THINGS TO DO | |||
| 247 | proxy idea. | 237 | proxy idea. |
| 248 | 238 | ||
| 249 | ** lisp/vc.el depends on the terminal type during load time. | 239 | ** lisp/vc.el depends on the terminal type during load time. |
| 250 | `vc-annotate-color-map' is one example that needs to be fixed. | 240 | 'vc-annotate-color-map' is one example that needs to be fixed. |
| 251 | 241 | ||
| 252 | ** Understand how `quit_throw_to_read_char' works, and fix any bugs | 242 | ** Understand how 'quit_throw_to_read_char' works, and fix any bugs |
| 253 | that come to light. | 243 | that come to light. |
| 254 | 244 | ||
| 255 | ** See if getcjmp can be eliminated somehow. Why does Emacs allow | 245 | ** See if getcjmp can be eliminated somehow. Why does Emacs allow |
| 256 | asynchronous input processing while it's reading input anyway? | 246 | asynchronous input processing while it's reading input anyway? |
| 257 | 247 | ||
| 258 | ** `delete-frame' events are handled by `special-event-map' | 248 | ** 'delete-frame' events are handled by 'special-event-map' |
| 259 | immediately when read by `read_char'. This is fine but it prevents | 249 | immediately when read by 'read_char'. This is fine but it prevents |
| 260 | higher-level keymaps from binding that event to get notified of the | 250 | higher-level keymaps from binding that event to get notified of the |
| 261 | deleted frame. | 251 | deleted frame. |
| 262 | 252 | ||
| @@ -264,26 +254,26 @@ THINGS TO DO | |||
| 264 | deletions after they have happened, usually because they want to | 254 | deletions after they have happened, usually because they want to |
| 265 | clean up after the deleted frame. Not all frame-local states can | 255 | clean up after the deleted frame. Not all frame-local states can |
| 266 | be stored as a frame parameter. For example, | 256 | be stored as a frame parameter. For example, |
| 267 | `display-splash-screen' uses `recursive-edit' with a special keymap | 257 | 'display-splash-screen' uses 'recursive-edit' with a special keymap |
| 268 | override to create its buffer---and it leads to all kinds of | 258 | override to create its buffer---and it leads to all kinds of |
| 269 | nastiness if Emacs stays in this recursive edit mode after the | 259 | nastiness if Emacs stays in this recursive edit mode after the |
| 270 | frame containing the splash screen is deleted. Basically, the | 260 | frame containing the splash screen is deleted. Basically, the |
| 271 | splash-screen implementation wants to throw out of the recursive | 261 | splash-screen implementation wants to throw out of the recursive |
| 272 | edit when the frame is deleted; however, it is not legal to throw | 262 | edit when the frame is deleted; however, it is not legal to throw |
| 273 | from `delete-frame-functions' because `delete-frame' must not fail. | 263 | from 'delete-frame-functions' because 'delete-frame' must not fail. |
| 274 | (Introducing `delete-frame-after-functions' would not help either | 264 | (Introducing 'delete-frame-after-functions' would not help either |
| 275 | because `delete-frame' may not fail at that time either.) | 265 | because 'delete-frame' may not fail at that time either.) |
| 276 | 266 | ||
| 277 | Currently `fancy-splash-screens' installs a | 267 | Currently 'fancy-splash-screens' installs a |
| 278 | `delete-frame-functions' hook that sets up a timer to exit the | 268 | 'delete-frame-functions' hook that sets up a timer to exit the |
| 279 | recursive edit. This is an adequate solution, but it would perhaps | 269 | recursive edit. This is an adequate solution, but it would perhaps |
| 280 | be better to have something like a `frame-deleted' event that could | 270 | be better to have something like a 'frame-deleted' event that could |
| 281 | be bound in the normal way. | 271 | be bound in the normal way. |
| 282 | 272 | ||
| 283 | ** Trouble: `setenv' doesn't actually set environment variables in the | 273 | ** Trouble: 'setenv' doesn't actually set environment variables in the |
| 284 | Emacs process. This defeats the purpose of the elaborate | 274 | Emacs process. This defeats the purpose of the elaborate |
| 285 | `server-with-environment' magic around the `tgetent' call in | 275 | 'server-with-environment' magic around the 'tgetent' call in |
| 286 | `init_tty'. D'oh. | 276 | 'init_tty'. D'oh. |
| 287 | 277 | ||
| 288 | ** (Possibly) create hooks in struct device for creating frames on a | 278 | ** (Possibly) create hooks in struct device for creating frames on a |
| 289 | specific terminal, and eliminate the hackish terminal-related frame | 279 | specific terminal, and eliminate the hackish terminal-related frame |
| @@ -300,9 +290,9 @@ THINGS TO DO | |||
| 300 | as static, removing it from dispextern.h. | 290 | as static, removing it from dispextern.h. |
| 301 | Move fatal to emacs.c and declare it somewhere. | 291 | Move fatal to emacs.c and declare it somewhere. |
| 302 | 292 | ||
| 303 | ** Search for `suspend-emacs' references and replace them with | 293 | ** Search for 'suspend-emacs' references and replace them with |
| 304 | `suspend-frame', if necessary. Ditto for `save-buffers-kill-emacs' | 294 | 'suspend-frame', if necessary. Ditto for 'save-buffers-kill-emacs' |
| 305 | vs. `save-buffers-kill-display'. | 295 | vs. 'save-buffers-kill-display'. |
| 306 | 296 | ||
| 307 | ** Emacs crashes when a tty frame is resized so that there is no space | 297 | ** Emacs crashes when a tty frame is resized so that there is no space |
| 308 | for all its windows. (Tom Schutzer-Weissmann) | 298 | for all its windows. (Tom Schutzer-Weissmann) |
| @@ -325,7 +315,7 @@ THINGS TO DO | |||
| 325 | impression that the various multidisplay fixes will only get | 315 | impression that the various multidisplay fixes will only get |
| 326 | released in GTK+ 2.10. | 316 | released in GTK+ 2.10. |
| 327 | 317 | ||
| 328 | ** Audit `face-valid-attribute-values' usage in customize and | 318 | ** Audit 'face-valid-attribute-values' usage in customize and |
| 329 | elsewhere. Its return value depends on the current window system. | 319 | elsewhere. Its return value depends on the current window system. |
| 330 | Replace static initializers using it with runtime functions. For | 320 | Replace static initializers using it with runtime functions. For |
| 331 | example, custom's buttons are broken on non-initial device types. | 321 | example, custom's buttons are broken on non-initial device types. |
| @@ -335,9 +325,9 @@ THINGS TO DO | |||
| 335 | 325 | ||
| 336 | ** frames-on-display-list should also accept frames. | 326 | ** frames-on-display-list should also accept frames. |
| 337 | 327 | ||
| 338 | ** Consider the `tty-type' frame parameter and the `display-tty-type' | 328 | ** Consider the 'tty-type' frame parameter and the 'display-tty-type' |
| 339 | function. They serve the exact same purpose. I think it may be | 329 | function. They serve the exact same purpose. I think it may be |
| 340 | a good idea to eliminate one of them, preferably `tty-type'. | 330 | a good idea to eliminate one of them, preferably 'tty-type'. |
| 341 | 331 | ||
| 342 | ** The handling of lisp/term/*.el, and frame creation in general, is a | 332 | ** The handling of lisp/term/*.el, and frame creation in general, is a |
| 343 | big, big mess. How come the terminal-specific file is loaded by | 333 | big, big mess. How come the terminal-specific file is loaded by |
| @@ -350,27 +340,23 @@ THINGS TO DO | |||
| 350 | changed in CVS, and frame.el in multi-tty has not yet been adapted | 340 | changed in CVS, and frame.el in multi-tty has not yet been adapted |
| 351 | for the changes. (It needs to look at | 341 | for the changes. (It needs to look at |
| 352 | default-frame-background-mode.) (Update: maybe it is fixed now; | 342 | default-frame-background-mode.) (Update: maybe it is fixed now; |
| 353 | needs testing.) (Note that the byte compiler has this to say about | 343 | needs testing.) |
| 354 | term/rxvt.el:) | ||
| 355 | |||
| 356 | term/rxvt.el:309:17:Warning: assignment to free variable | ||
| 357 | `default-frame-background-mode' | ||
| 358 | 344 | ||
| 359 | ** I think `(set-)terminal-local-value' and the terminal parameter | 345 | ** I think '(set-)terminal-local-value' and the terminal parameter |
| 360 | mechanism should be integrated into a single framework. | 346 | mechanism should be integrated into a single framework. |
| 361 | 347 | ||
| 362 | (Update: `(set-)terminal-local-value' is now eliminated, but the | 348 | (Update: '(set-)terminal-local-value' is now eliminated, but the |
| 363 | terminal-local variables should still be accessible as terminal | 349 | terminal-local variables should still be accessible as terminal |
| 364 | parameters. This also applies to `display-name' and similar | 350 | parameters. This also applies to 'display-name' and similar |
| 365 | functions.) | 351 | functions.) |
| 366 | 352 | ||
| 367 | ** Add the following hooks: after-delete-frame-hook (for server.el, | 353 | ** Add the following hooks: after-delete-frame-hook (for server.el, |
| 368 | instead of delete-frame-functions), | 354 | instead of delete-frame-functions), |
| 369 | after-delete-terminal-functions, after-create-terminal-functions. | 355 | after-delete-terminal-functions, after-create-terminal-functions. |
| 370 | 356 | ||
| 371 | ** BULK RENAME: The `display-' prefix of new Lisp-level functions | 357 | ** BULK RENAME: The 'display-' prefix of new Lisp-level functions |
| 372 | conflicts with stuff like `display-time-mode'. Use `device-' | 358 | conflicts with stuff like 'display-time-mode'. Use 'device-' |
| 373 | or `terminal-' instead. I think I prefer `terminal-'. | 359 | or 'terminal-' instead. I think I prefer 'terminal-'. |
| 374 | 360 | ||
| 375 | It turns out that most of the offending Lisp functions were defined | 361 | It turns out that most of the offending Lisp functions were defined |
| 376 | in the trunk. Therefore, compatibility aliases should be defined | 362 | in the trunk. Therefore, compatibility aliases should be defined |
| @@ -476,7 +462,7 @@ THINGS TO DO | |||
| 476 | 462 | ||
| 477 | ** With iswitchb-default-method set to 'always-frame, only frames on | 463 | ** With iswitchb-default-method set to 'always-frame, only frames on |
| 478 | the current display should be considered. This might involve | 464 | the current display should be considered. This might involve |
| 479 | extending `get-buffer-window'. | 465 | extending 'get-buffer-window'. |
| 480 | 466 | ||
| 481 | ** Have a look at Vlocale_coding_system. Seems like it would be a | 467 | ** Have a look at Vlocale_coding_system. Seems like it would be a |
| 482 | tedious job to localize it, although most references use it for | 468 | tedious job to localize it, although most references use it for |
| @@ -504,17 +490,6 @@ THINGS TO DO | |||
| 504 | 490 | ||
| 505 | (This is likely an error in the CVS trunk.) | 491 | (This is likely an error in the CVS trunk.) |
| 506 | 492 | ||
| 507 | ** Dan Nicolaescu suggests that -nw should be added as an alias for -t | ||
| 508 | in emacsclient. Good idea. (Alas, implementing this is not | ||
| 509 | trivial, getopt_long does not seem to support two-letter ``short'' | ||
| 510 | options. Patches are welcome.) | ||
| 511 | |||
| 512 | ** Mark Plaksin suggests that emacsclient should accept the same | ||
| 513 | X-related command-line arguments as Emacs. Most of the X-related | ||
| 514 | argument-handling is done in Lisp, so this should be quite easy to | ||
| 515 | implement. (For example, Samium Gromoff wants emacsclient to | ||
| 516 | support --geometry; implementing this would add that support.) | ||
| 517 | |||
| 518 | ** Gergely Nagy suggests that C-x # should only kill the current | 493 | ** Gergely Nagy suggests that C-x # should only kill the current |
| 519 | frame, not any other emacsclient frame that may have the same file | 494 | frame, not any other emacsclient frame that may have the same file |
| 520 | opened for editing. I think I agree with him. | 495 | opened for editing. I think I agree with him. |
| @@ -532,21 +507,9 @@ THINGS TO DO | |||
| 532 | an initial frame. (The user would connect to it and open frames | 507 | an initial frame. (The user would connect to it and open frames |
| 533 | later, with emacsclient.) | 508 | later, with emacsclient.) |
| 534 | 509 | ||
| 535 | ** Fix Mac support (I can't do this entirely myself). Note that the | 510 | ** Implement Mac/Windows/DOS support. Many XXX comments mark things |
| 536 | current state of Mac-specific source files in the multi-tty tree | 511 | that probably need updating, ChangeLogs will help in spotting |
| 537 | are not useful; before starting work on Mac support, revert to | 512 | changes to X specific files that may need porting. |
| 538 | pristine, pre-multi-tty versions. | ||
| 539 | |||
| 540 | ** Fix DOS support (I can't do this entirely myself). Note that the | ||
| 541 | current state of DOS-specific source files in the multi-tty tree | ||
| 542 | are not useful; before starting work on DOS support, revert to | ||
| 543 | pristine, pre-multi-tty versions. | ||
| 544 | |||
| 545 | ** Fix Windows support. Currently bootstrapping works on w32, but Emacs | ||
| 546 | crashes on startup and none of the multi-tty features are | ||
| 547 | implemented. Many XXX comments mark things that probably need | ||
| 548 | updating, ChangeLogs will help in spotting changes to X specific | ||
| 549 | files that may need porting. | ||
| 550 | 513 | ||
| 551 | ** Do a grep on XXX and ?? for more issues. | 514 | ** Do a grep on XXX and ?? for more issues. |
| 552 | 515 | ||
| @@ -570,7 +533,7 @@ DIARY OF CHANGES | |||
| 570 | 533 | ||
| 571 | -- Change make-terminal-frame to support specifying another tty. | 534 | -- Change make-terminal-frame to support specifying another tty. |
| 572 | 535 | ||
| 573 | (Done, new frame parameters: `tty' and `tty-type'.) | 536 | (Done, new frame parameters: 'tty' and 'tty-type'.) |
| 574 | 537 | ||
| 575 | -- Implement support for reading from multiple terminals. | 538 | -- Implement support for reading from multiple terminals. |
| 576 | 539 | ||
| @@ -582,7 +545,7 @@ DIARY OF CHANGES | |||
| 582 | 545 | ||
| 583 | (Update2: After enabling X, they don't.) | 546 | (Update2: After enabling X, they don't.) |
| 584 | 547 | ||
| 585 | -- other-frame should cycle through the frames on the `current' | 548 | -- other-frame should cycle through the frames on the 'current' |
| 586 | terminal only. | 549 | terminal only. |
| 587 | 550 | ||
| 588 | (Done, by trivially modifying next_frame and prev_frame.) | 551 | (Done, by trivially modifying next_frame and prev_frame.) |
| @@ -639,7 +602,7 @@ DIARY OF CHANGES | |||
| 639 | 602 | ||
| 640 | (Update^3: Not any more.) | 603 | (Update^3: Not any more.) |
| 641 | 604 | ||
| 642 | -- Make make-terminal-frame look up the `tty' and `tty-type' frame | 605 | -- Make make-terminal-frame look up the 'tty' and 'tty-type' frame |
| 643 | parameters from the currently selected terminal before the global | 606 | parameters from the currently selected terminal before the global |
| 644 | default. | 607 | default. |
| 645 | 608 | ||
| @@ -857,7 +820,7 @@ DIARY OF CHANGES | |||
| 857 | 820 | ||
| 858 | (Done, breaking interactive temacs.) | 821 | (Done, breaking interactive temacs.) |
| 859 | 822 | ||
| 860 | -- The command `emacsclient -t -e '(delete-frame)'' fails to exit. | 823 | -- The command "emacsclient -t -e '(delete-frame)'" fails to exit. |
| 861 | 824 | ||
| 862 | (Fixed.) | 825 | (Fixed.) |
| 863 | 826 | ||
| @@ -967,7 +930,7 @@ DIARY OF CHANGES | |||
| 967 | frame sets single_kboard). Update: the face problems are caused by | 930 | frame sets single_kboard). Update: the face problems are caused by |
| 968 | bugs in term.el, not in multi-tty. The lockup is caused by | 931 | bugs in term.el, not in multi-tty. The lockup is caused by |
| 969 | single_kboard mode, and is not easily resolvable. The best thing to | 932 | single_kboard mode, and is not easily resolvable. The best thing to |
| 970 | do is to simply refuse to create a tty frame of type `eterm'. | 933 | do is to simply refuse to create a tty frame of type 'eterm'. |
| 971 | 934 | ||
| 972 | (Fixed, changed emacsclient to check for TERM=eterm. The face | 935 | (Fixed, changed emacsclient to check for TERM=eterm. The face |
| 973 | complaints seem to be caused by bugs in term.el; they are not | 936 | complaints seem to be caused by bugs in term.el; they are not |
| @@ -976,14 +939,14 @@ DIARY OF CHANGES | |||
| 976 | -- Find out the best way to support suspending Emacs with multiple | 939 | -- Find out the best way to support suspending Emacs with multiple |
| 977 | ttys. My guess: disable it on the controlling tty, but from other | 940 | ttys. My guess: disable it on the controlling tty, but from other |
| 978 | ttys pass it on to emacsclient somehow. (It is (I hope) trivial to | 941 | ttys pass it on to emacsclient somehow. (It is (I hope) trivial to |
| 979 | extend emacsclient to handle suspend/resume. A `kill -STOP' almost | 942 | extend emacsclient to handle suspend/resume. A 'kill -STOP' almost |
| 980 | works right now.) | 943 | works right now.) |
| 981 | 944 | ||
| 982 | (Done. I needed to play with signal handling and the server | 945 | (Done. I needed to play with signal handling and the server |
| 983 | protocol a bit to make emacsclient behave as a normal UNIX program | 946 | protocol a bit to make emacsclient behave as a normal UNIX program |
| 984 | wrt foreground/background process groups.) | 947 | wrt foreground/background process groups.) |
| 985 | 948 | ||
| 986 | -- There is a flicker during the startup of `emacs -nw'; it's as if | 949 | -- There is a flicker during the startup of 'emacs -nw'; it's as if |
| 987 | the terminal is initialized, reset and then initialized again. | 950 | the terminal is initialized, reset and then initialized again. |
| 988 | Debug this. (Hint: narrow_foreground_group is called twice during | 951 | Debug this. (Hint: narrow_foreground_group is called twice during |
| 989 | startup.) | 952 | startup.) |
| @@ -1006,7 +969,7 @@ DIARY OF CHANGES | |||
| 1006 | 969 | ||
| 1007 | (It was an internal interface that may be changed when necessary.) | 970 | (It was an internal interface that may be changed when necessary.) |
| 1008 | 971 | ||
| 1009 | -- Change Lisp code not to (getenv "TERM"); use the `tty-type' frame | 972 | -- Change Lisp code not to (getenv "TERM"); use the 'tty-type' frame |
| 1010 | parameter or the frame-tty-type function instead. (M-x tags-search | 973 | parameter or the frame-tty-type function instead. (M-x tags-search |
| 1011 | "TERM" helps with this.) Update: Actually, all getenv invocations | 974 | "TERM" helps with this.) Update: Actually, all getenv invocations |
| 1012 | should be checked for multi-tty compatibility, and an interface | 975 | should be checked for multi-tty compatibility, and an interface |
| @@ -1016,7 +979,7 @@ DIARY OF CHANGES | |||
| 1016 | calls should be mostly left as they are.) | 979 | calls should be mostly left as they are.) |
| 1017 | 980 | ||
| 1018 | -- Add an elaborate mechanism for display-local variables. (There are | 981 | -- Add an elaborate mechanism for display-local variables. (There are |
| 1019 | already a few of these; search for `terminal-local' in the Elisp | 982 | already a few of these; search for 'terminal-local' in the Elisp |
| 1020 | manual.) | 983 | manual.) |
| 1021 | 984 | ||
| 1022 | (Not needed. Display-local variables could be emulated by | 985 | (Not needed. Display-local variables could be emulated by |
| @@ -1035,7 +998,7 @@ DIARY OF CHANGES | |||
| 1035 | emacsclient process for server tty frames.) | 998 | emacsclient process for server tty frames.) |
| 1036 | (Update: Not really; Vlocale_coding_system is still global.) | 999 | (Update: Not really; Vlocale_coding_system is still global.) |
| 1037 | 1000 | ||
| 1038 | -- Make `struct display' accessible to Lisp programs. Accessor functions: | 1001 | -- Make 'struct display' accessible to Lisp programs. Accessor functions: |
| 1039 | 1002 | ||
| 1040 | (displayp OBJECT): Returns t if OBJECT is a display. | 1003 | (displayp OBJECT): Returns t if OBJECT is a display. |
| 1041 | => Implemented as display-live-p. | 1004 | => Implemented as display-live-p. |
| @@ -1053,7 +1016,7 @@ DIARY OF CHANGES | |||
| 1053 | => Already implemented, see frames-on-display-list. | 1016 | => Already implemented, see frames-on-display-list. |
| 1054 | 1017 | ||
| 1055 | (display-type DISPLAY): Returns the type of DISPLAY, as a | 1018 | (display-type DISPLAY): Returns the type of DISPLAY, as a |
| 1056 | symbol. (See `framep'.) | 1019 | symbol. (See 'framep'.) |
| 1057 | => Implemented as display-live-p. | 1020 | => Implemented as display-live-p. |
| 1058 | 1021 | ||
| 1059 | (display-device DISPLAY): Returns the name of the device that | 1022 | (display-device DISPLAY): Returns the name of the device that |
| @@ -1085,20 +1048,8 @@ DIARY OF CHANGES | |||
| 1085 | 1048 | ||
| 1086 | (Done.) | 1049 | (Done.) |
| 1087 | 1050 | ||
| 1088 | -- Miles Bader suggests that C-x C-c on an emacsclient frame should | ||
| 1089 | only close the frame, not exit the entire Emacs session. Update: | ||
| 1090 | see above for a function that does this. Maybe this should be the | ||
| 1091 | new default? | ||
| 1092 | |||
| 1093 | (Done. This is the new default. No complaints so far.) | ||
| 1094 | |||
| 1095 | -- Clean up the frame-local variable system. I think it's ugly and | ||
| 1096 | error-prone. But maybe I just haven't yet fully understood it. | ||
| 1097 | |||
| 1098 | (Nothing to do. It doesn't seem ugly any more. It's rather clever.) | ||
| 1099 | |||
| 1100 | -- Support multiple character locales. A version of | 1051 | -- Support multiple character locales. A version of |
| 1101 | `set-locale-environment' needs to be written for setting up | 1052 | 'set-locale-environment' needs to be written for setting up |
| 1102 | display-local settings on ttys. I think calling | 1053 | display-local settings on ttys. I think calling |
| 1103 | set-display-table-and-terminal-coding-system and | 1054 | set-display-table-and-terminal-coding-system and |
| 1104 | set-keyboard-coding-system would be enough. The language | 1055 | set-keyboard-coding-system would be enough. The language |
| @@ -1111,21 +1062,9 @@ DIARY OF CHANGES | |||
| 1111 | them to tweak only frame-local settings, if possible. (They tend | 1062 | them to tweak only frame-local settings, if possible. (They tend |
| 1112 | to call define-key to set function key sequences a lot.) | 1063 | to call define-key to set function key sequences a lot.) |
| 1113 | 1064 | ||
| 1114 | (Done, by making `function-key-map' terminal-local (i.e., part of | 1065 | (Done, by making 'function-key-map' terminal-local (i.e., part of |
| 1115 | struct kboard). This has probably covered all the remaining problems.) | 1066 | struct kboard). This has probably covered all the remaining problems.) |
| 1116 | 1067 | ||
| 1117 | -- Make `function-key-map' and `key-translation-map' terminal-local. | ||
| 1118 | |||
| 1119 | (Done.) | ||
| 1120 | |||
| 1121 | -- Implement `terminal-local-value' and `set-terminal-local-value' to | ||
| 1122 | allow deterministic access to terminal local bindings. The | ||
| 1123 | encode-kb package can not set up `key-translation-map' without | ||
| 1124 | these. The terminal-local bindings seem to be independent of what | ||
| 1125 | frame is selected. | ||
| 1126 | |||
| 1127 | (Done.) | ||
| 1128 | |||
| 1129 | -- xt-mouse.el needs to be adapted for multi-tty. It currently | 1068 | -- xt-mouse.el needs to be adapted for multi-tty. It currently |
| 1130 | signals an error on kill-emacs under X, which prevents the user | 1069 | signals an error on kill-emacs under X, which prevents the user |
| 1131 | from exiting Emacs. (Reported by Mnemonikk on freenode.) | 1070 | from exiting Emacs. (Reported by Mnemonikk on freenode.) |
| @@ -1140,8 +1079,8 @@ DIARY OF CHANGES | |||
| 1140 | 1079 | ||
| 1141 | This only seems to affect displays that are of the same terminfo | 1080 | This only seems to affect displays that are of the same terminfo |
| 1142 | type as the selected one. Interestingly, in screen Emacs normally | 1081 | type as the selected one. Interestingly, in screen Emacs normally |
| 1143 | reports the up arrow key as `M-o A', but after the above SNAFU, it | 1082 | reports the up arrow key as 'M-o A', but after the above SNAFU, it |
| 1144 | complains about `M-[ a'. UNIX ttys are a complete mystery to me, | 1083 | complains about 'M-[ a'. UNIX ttys are a complete mystery to me, |
| 1145 | but it seems the reset-reinitialize cycle somehow leaves the | 1084 | but it seems the reset-reinitialize cycle somehow leaves the |
| 1146 | non-selected terminals in a different state than usual. I have no | 1085 | non-selected terminals in a different state than usual. I have no |
| 1147 | idea how this could happen. | 1086 | idea how this could happen. |
| @@ -1189,15 +1128,15 @@ DIARY OF CHANGES | |||
| 1189 | clear what binding is in effect in any given time. See if | 1128 | clear what binding is in effect in any given time. See if |
| 1190 | current_kboard (or at least the terminal-local bindings exported to | 1129 | current_kboard (or at least the terminal-local bindings exported to |
| 1191 | Lisp) might be changed to be tied to the selected frame instead. | 1130 | Lisp) might be changed to be tied to the selected frame instead. |
| 1192 | Currently, `function-key-map' and `key-translation-map' may be | 1131 | Currently, 'function-key-map' and 'key-translation-map' may be |
| 1193 | accessed reliably only using the hackish | 1132 | accessed reliably only using the hackish |
| 1194 | `(set-)terminal-local-value' functions. | 1133 | '(set-)terminal-local-value' functions. |
| 1195 | 1134 | ||
| 1196 | Perhaps there should be a difference between `last-command' &co. | 1135 | Perhaps there should be a difference between 'last-command' &co. |
| 1197 | and these more conventional configuration variables. | 1136 | and these more conventional configuration variables. |
| 1198 | (E.g. `symbol-value' would use current_kboard to access | 1137 | (E.g. 'symbol-value' would use current_kboard to access |
| 1199 | `last-command', but SELECTED_FRAME()->display->kboard to get the | 1138 | 'last-command', but SELECTED_FRAME()->display->kboard to get the |
| 1200 | value of `function-key-map'. | 1139 | value of 'function-key-map'. |
| 1201 | 1140 | ||
| 1202 | (Fixed in patch-434.) | 1141 | (Fixed in patch-434.) |
| 1203 | 1142 | ||
| @@ -1208,7 +1147,7 @@ DIARY OF CHANGES | |||
| 1208 | below" was the set-input-mode madness.) | 1147 | below" was the set-input-mode madness.) |
| 1209 | 1148 | ||
| 1210 | (Update: this bug was fixed for good in patch-449. It was tracked | 1149 | (Update: this bug was fixed for good in patch-449. It was tracked |
| 1211 | down to a bug in `read_key_sequence': it failed to reinitialize its | 1150 | down to a bug in 'read_key_sequence': it failed to reinitialize its |
| 1212 | local function-key-map/key-translation-map references when it | 1151 | local function-key-map/key-translation-map references when it |
| 1213 | switched keyboards. I don't understand why did this bug only | 1152 | switched keyboards. I don't understand why did this bug only |
| 1214 | appear on brand new frames, though!) | 1153 | appear on brand new frames, though!) |
| @@ -1220,35 +1159,35 @@ DIARY OF CHANGES | |||
| 1220 | -- Implement automatic forwarding of client environment variables to | 1159 | -- Implement automatic forwarding of client environment variables to |
| 1221 | forked processes, as discussed on the multi-tty list. Terminal | 1160 | forked processes, as discussed on the multi-tty list. Terminal |
| 1222 | parameters are now accessible in C code, so the biggest obstacle is | 1161 | parameters are now accessible in C code, so the biggest obstacle is |
| 1223 | gone. The `getenv_internal' and `child_setup' functions in | 1162 | gone. The 'getenv_internal' and 'child_setup' functions in |
| 1224 | callproc.c must be changed to support the following variable: | 1163 | callproc.c must be changed to support the following variable: |
| 1225 | 1164 | ||
| 1226 | terminal-local-environment-variables is a variable defined in ... | 1165 | terminal-local-environment-variables is a variable defined in ... |
| 1227 | 1166 | ||
| 1228 | Enable or disable terminal-local environment variables. | 1167 | Enable or disable terminal-local environment variables. |
| 1229 | 1168 | ||
| 1230 | If set to t, `getenv', `setenv' and subprocess creation | 1169 | If set to t, 'getenv', 'setenv' and subprocess creation |
| 1231 | functions use the environment variables of the emacsclient | 1170 | functions use the environment variables of the emacsclient |
| 1232 | process that created the selected frame, ignoring | 1171 | process that created the selected frame, ignoring |
| 1233 | `process-environment'. | 1172 | 'process-environment'. |
| 1234 | 1173 | ||
| 1235 | If set to nil, Emacs uses `process-environment' and ignores | 1174 | If set to nil, Emacs uses 'process-environment' and ignores |
| 1236 | the client environment. | 1175 | the client environment. |
| 1237 | 1176 | ||
| 1238 | Otherwise, `terminal-local-environment-variables' should be a | 1177 | Otherwise, 'terminal-local-environment-variables' should be a |
| 1239 | list of variable names (represented by Lisp strings) to look | 1178 | list of variable names (represented by Lisp strings) to look |
| 1240 | up in the client environment. The rest will come from | 1179 | up in the client environment. The rest will come from |
| 1241 | `process-environment'. | 1180 | 'process-environment'. |
| 1242 | 1181 | ||
| 1243 | (Implemented in patch-461; `terminal-getenv', `terminal-setenv' and | 1182 | (Implemented in patch-461; 'terminal-getenv', 'terminal-setenv' and |
| 1244 | `with-terminal-environment' are now replaced by extensions to | 1183 | 'with-terminal-environment' are now replaced by extensions to |
| 1245 | `getenv' and `setenv', and the new `local-environment-variables' | 1184 | 'getenv' and 'setenv', and the new 'local-environment-variables' |
| 1246 | facility. Yay!) | 1185 | facility. Yay!) |
| 1247 | 1186 | ||
| 1248 | (Updated in patch-465 to fix the semantics of let-binding | 1187 | (Updated in patch-465 to fix the semantics of let-binding |
| 1249 | `process-environment'. `process-environment' was changed to | 1188 | 'process-environment'. 'process-environment' was changed to |
| 1250 | override all local/global environment variables, and a new variable | 1189 | override all local/global environment variables, and a new variable |
| 1251 | `global-environment' was introduced to have `process-environment's | 1190 | 'global-environment' was introduced to have 'process-environment's |
| 1252 | old meaning.) | 1191 | old meaning.) |
| 1253 | 1192 | ||
| 1254 | (Updated in patch-466 to fix the case when two emacsclient sessions | 1193 | (Updated in patch-466 to fix the case when two emacsclient sessions |
| @@ -1256,27 +1195,27 @@ DIARY OF CHANGES | |||
| 1256 | environment lists are now stored as frame parameters, so the | 1195 | environment lists are now stored as frame parameters, so the |
| 1257 | C-level terminal parameters are not strictly necessary any more.) | 1196 | C-level terminal parameters are not strictly necessary any more.) |
| 1258 | 1197 | ||
| 1259 | -- `Fdelete_frame' is called from various critical places where it is | 1198 | -- 'Fdelete_frame' is called from various critical places where it is |
| 1260 | not acceptable for the frame deletion to fail, e.g. from | 1199 | not acceptable for the frame deletion to fail, e.g. from |
| 1261 | x_connection_closed after an X error. `Fdelete_frame' now protects | 1200 | x_connection_closed after an X error. 'Fdelete_frame' now protects |
| 1262 | against `delete-frame-functions' throwing an error and preventing a | 1201 | against 'delete-frame-functions' throwing an error and preventing a |
| 1263 | frame delete. (patch-475) | 1202 | frame delete. (patch-475) |
| 1264 | 1203 | ||
| 1265 | -- Fix set-input-mode for multi-tty. It's a truly horrible interface; | 1204 | -- Fix set-input-mode for multi-tty. It's a truly horrible interface; |
| 1266 | what if we'd blow it up into several separate functions (with a | 1205 | what if we'd blow it up into several separate functions (with a |
| 1267 | compatibility definition)? | 1206 | compatibility definition)? |
| 1268 | 1207 | ||
| 1269 | (Done. See `set-input-interrupt-mode', `set-output-flow-control', | 1208 | (Done. See 'set-input-interrupt-mode', 'set-output-flow-control', |
| 1270 | `set-input-meta-mode' and `set-quit-char'.) (patch-457) | 1209 | 'set-input-meta-mode' and 'set-quit-char'.) (patch-457) |
| 1271 | 1210 | ||
| 1272 | -- Let-binding `overriding-terminal-local-map' on a brand new frame | 1211 | -- Let-binding 'overriding-terminal-local-map' on a brand new frame |
| 1273 | does not seem to work correctly. (See `fancy-splash-screens'.) | 1212 | does not seem to work correctly. (See 'fancy-splash-screens'.) |
| 1274 | The keymap seems to be set up right, but events go to another | 1213 | The keymap seems to be set up right, but events go to another |
| 1275 | terminal. Or is it `unread-command-events' that gets Emacs | 1214 | terminal. Or is it 'unread-command-events' that gets Emacs |
| 1276 | confused? Investigate. | 1215 | confused? Investigate. |
| 1277 | 1216 | ||
| 1278 | (Emacs was confused because a process filter entered | 1217 | (Emacs was confused because a process filter entered |
| 1279 | `recursive-edit' while Emacs was reading input. I added support | 1218 | 'recursive-edit' while Emacs was reading input. I added support |
| 1280 | for this in the input system.) (patch-489) | 1219 | for this in the input system.) (patch-489) |
| 1281 | 1220 | ||
| 1282 | -- I smell something funny around pop_kboard's "deleted kboard" case. | 1221 | -- I smell something funny around pop_kboard's "deleted kboard" case. |
| @@ -1301,7 +1240,7 @@ DIARY OF CHANGES | |||
| 1301 | synchronously (with wait_reading_process_input), or asynchronously | 1240 | synchronously (with wait_reading_process_input), or asynchronously |
| 1302 | by SIGIO or polling (SIGALRM). C-g either sets the Vquit_flag, | 1241 | by SIGIO or polling (SIGALRM). C-g either sets the Vquit_flag, |
| 1303 | signals a 'quit condition (when immediate_quit), or throws to | 1242 | signals a 'quit condition (when immediate_quit), or throws to |
| 1304 | `getcjmp' when Emacs was waiting for input when the C-g event | 1243 | 'getcjmp' when Emacs was waiting for input when the C-g event |
| 1305 | arrived.) | 1244 | arrived.) |
| 1306 | 1245 | ||
| 1307 | -- Replace wrong_kboard_jmpbuf with a special return value of | 1246 | -- Replace wrong_kboard_jmpbuf with a special return value of |
| @@ -1310,7 +1249,7 @@ DIARY OF CHANGES | |||
| 1310 | 1249 | ||
| 1311 | (Done in patch-500.) | 1250 | (Done in patch-500.) |
| 1312 | 1251 | ||
| 1313 | -- `tool-bar-mode', `scroll-bar-mode', `menu-bar-mode' and | 1252 | -- 'tool-bar-mode', 'scroll-bar-mode', 'menu-bar-mode' and |
| 1314 | 'fringe-mode' are modes global to the entire Emacs session, not | 1253 | 'fringe-mode' are modes global to the entire Emacs session, not |
| 1315 | just a single frame or a single terminal. This means that their | 1254 | just a single frame or a single terminal. This means that their |
| 1316 | status sometimes differs from what's actually displayed on the | 1255 | status sometimes differs from what's actually displayed on the |
| @@ -1323,7 +1262,7 @@ DIARY OF CHANGES | |||
| 1323 | 1262 | ||
| 1324 | (Done in patch-537.) | 1263 | (Done in patch-537.) |
| 1325 | 1264 | ||
| 1326 | -- The `default-directory' variable should somehow be set to the | 1265 | -- The 'default-directory' variable should somehow be set to the |
| 1327 | cwd of the emacsclient process when the user runs emacsclient | 1266 | cwd of the emacsclient process when the user runs emacsclient |
| 1328 | without file arguments. Perhaps it is OK to just override the | 1267 | without file arguments. Perhaps it is OK to just override the |
| 1329 | directory of the *scratch* buffer. | 1268 | directory of the *scratch* buffer. |
| @@ -1335,9 +1274,9 @@ DIARY OF CHANGES | |||
| 1335 | frame parameter) is not filled with the correct background color. | 1274 | frame parameter) is not filled with the correct background color. |
| 1336 | 1275 | ||
| 1337 | It seems the border contents are drawn onto by the | 1276 | It seems the border contents are drawn onto by the |
| 1338 | update_single_window call in `x-show-tip'. After some debugging, I | 1277 | update_single_window call in 'x-show-tip'. After some debugging, I |
| 1339 | think the window's background color is not set up | 1278 | think the window's background color is not set up |
| 1340 | correctly---calling `x_clear_area' fills the specified area with | 1279 | correctly---calling 'x_clear_area' fills the specified area with |
| 1341 | black, not light yellow. | 1280 | black, not light yellow. |
| 1342 | 1281 | ||
| 1343 | (Done in patch-544. A background_pixel field was defined both in | 1282 | (Done in patch-544. A background_pixel field was defined both in |