aboutsummaryrefslogtreecommitdiffstats
path: root/README.multi-tty
diff options
context:
space:
mode:
authorKaroly Lorentey <[email protected]>2005-12-30 05:30:57 +0000
committerKaroly Lorentey <[email protected]>2005-12-30 05:30:57 +0000
commit526039df1cd827ba428597b42046fe2b28d170c7 (patch)
tree119e146d30382190cfff6e3ee02375a26a0ee84a /README.multi-tty
parent4a0e3f08607bbe80ad9dee2c441286f6ad695d0a (diff)
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: [email protected]/emacs--multi-tty--0--patch-477
Diffstat (limited to 'README.multi-tty')
-rw-r--r--README.multi-tty32
1 files changed, 32 insertions, 0 deletions
diff --git a/README.multi-tty b/README.multi-tty
index f1a0cde7df..de9b53b04e 100644
--- a/README.multi-tty
+++ b/README.multi-tty
@@ -401,6 +401,31 @@ is probably not very interesting for anyone else.)
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 @@ DIARY OF CHANGES
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