emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/startup.el,v


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] Changes to emacs/lisp/startup.el,v
Date: Mon, 25 Dec 2006 08:18:09 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     YAMAMOTO Mitsuharu <mituharu>   06/12/25 08:18:09

Index: startup.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/startup.el,v
retrieving revision 1.423
retrieving revision 1.424
diff -u -b -r1.423 -r1.424
--- startup.el  14 Dec 2006 15:16:52 -0000      1.423
+++ startup.el  25 Dec 2006 08:18:09 -0000      1.424
@@ -1205,6 +1205,7 @@
 (defvar fancy-splash-help-echo nil)
 (defvar fancy-splash-stop-time nil)
 (defvar fancy-splash-outer-buffer nil)
+(defvar fancy-splash-last-input-event nil)
 
 (defun fancy-splash-insert (&rest args)
   "Insert text into the current buffer, with faces.
@@ -1359,6 +1360,14 @@
     (push last-command-event unread-command-events))
   (throw 'exit nil))
 
+(defun fancy-splash-special-event-action ()
+  "Save the last event and stop displaying the splash screen buffer.
+This is an internal function used to turn off the splash screen after
+the user caused an input event that is bound in `special-event-map'"
+  (interactive)
+  (setq fancy-splash-last-input-event last-input-event)
+  (throw 'exit nil))
+
 
 (defun fancy-splash-screens (&optional hide-on-input)
   "Display fancy splash screens when Emacs starts."
@@ -1368,6 +1377,7 @@
            splash-buffer
            (old-minor-mode-map-alist minor-mode-map-alist)
            (old-emulation-mode-map-alists emulation-mode-map-alists)
+           (old-special-event-map special-event-map)
            (frame (fancy-splash-frame))
            timer)
        (save-selected-window
@@ -1383,6 +1393,20 @@
                  (define-key map [t] 'fancy-splash-default-action)
                  (define-key map [mouse-movement] 'ignore)
                  (define-key map [mode-line t] 'ignore)
+                 ;; Temporarily bind special events to
+                 ;; fancy-splash-special-event-action so as to stop
+                 ;; displaying splash screens with such events.
+                 ;; Otherwise, drag-n-drop into splash screens may
+                 ;; leave us in recursive editing with invisible
+                 ;; cursors for a while.
+                 (setq special-event-map (make-sparse-keymap))
+                 (map-keymap
+                  (lambda (key def)
+                    (define-key special-event-map (vector key)
+                      (if (eq def 'ignore)
+                          'ignore
+                        'fancy-splash-special-event-action)))
+                  old-special-event-map)
                  (setq display-hourglass nil
                        minor-mode-map-alist nil
                        emulation-mode-map-alists nil
@@ -1399,8 +1423,15 @@
              (cancel-timer timer)
              (setq display-hourglass old-hourglass
                    minor-mode-map-alist old-minor-mode-map-alist
-                   emulation-mode-map-alists old-emulation-mode-map-alists)
-             (kill-buffer splash-buffer)))))
+                   emulation-mode-map-alists old-emulation-mode-map-alists
+                   special-event-map old-special-event-map)
+             (kill-buffer splash-buffer)
+             (when fancy-splash-last-input-event
+               (setq last-input-event fancy-splash-last-input-event
+                     fancy-splash-last-input-event nil)
+               (command-execute (lookup-key special-event-map
+                                            (vector last-input-event))
+                                nil (vector last-input-event) t))))))
     ;; If hide-on-input is nil, don't hide the buffer on input.
     (if (or (window-minibuffer-p)
            (window-dedicated-p (selected-window)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]