Mercurial > emacs
diff README.multi-tty @ 83437:c415fd182aef
Enhance splash screens to work better with emacsclient.
* lisp/startup.el (fancy-splash-screens): Use
`overriding-terminal-local-map' to set up keymap. Install a
`delete-frame-functions' hook to catch `delete-frame' events. Ignore
`select-window' events to cope better with `focus-follows-mouse'.
Don't switch back to the original buffer if the splash frame has been
killed.
(normal-splash-screen): Don't let-bind `mode-line-format'; it changes
the global binding---setq it instead.
(display-splash-screen): Don't do anything if the splash screen is
already displayed elsewhere.
(fancy-splash-exit, fancy-splash-delete-frame): New functions.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-477
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Fri, 30 Dec 2005 05:30:57 +0000 |
parents | 76396de7f50a |
children | dc3a189e9e3a |
line wrap: on
line diff
--- a/README.multi-tty Fri Dec 30 05:29:31 2005 +0000 +++ b/README.multi-tty Fri Dec 30 05:30:57 2005 +0000 @@ -401,6 +401,31 @@ THINGS TO DO ------------ +** `delete-frame' events are handled by `special-event-map' + immediately when read by `read_char'. This is fine but it prevents + higher-level keymaps from binding that event to get notified of the + deleted frame. + + Sometimes it would be useful for Lisp code to be notified of frame + deletions after they have happened, usually because they want to + clean up after the deleted frame. Not all frame-local states can + be stored as a frame parameter. For example, + `display-splash-screen' uses `recursive-edit' with a special keymap + override to create its buffer---and it leads to all kinds of + nastiness if Emacs stays in this recursive edit mode after the + frame containing the splash screen is deleted. Basically, the + splash-screen implementation wants to throw out of the recursive + edit when the frame is deleted; however, it is not legal to throw + from `delete-frame-functions' because `delete-frame' must not fail. + (Introducing `delete-frame-after-functions' would not help either + because `delete-frame' may not fail at that time either.) + + Currently `fancy-splash-screens' installs a + `delete-frame-functions' hook that sets up a timer to exit the + recursive edit. This is an adequate solution, but it would perhaps + be better to have something like a `frame-deleted' event that could + be bound in the normal way. + ** Trouble: `setenv' doesn't actually set environment variables in the Emacs process. This defeats the purpose of the elaborate `server-with-environment' magic around the `tgetent' call in @@ -1377,5 +1402,12 @@ environment lists are now stored as frame parameters, so the C-level terminal parameters are not strictly necessary any more.) +-- `Fdelete_frame' is called from various critical places where it is + not acceptable for the frame deletion to fail, e.g. from + x_connection_closed after an X error. `Fdelete_frame' now protects + against `delete-frame-functions' throwing an error and preventing a + frame delete. (patch-475) + + ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d