diff options
author | Karl Heuer <[email protected]> | 1994-05-07 00:21:24 +0000 |
---|---|---|
committer | Karl Heuer <[email protected]> | 1994-05-07 00:21:24 +0000 |
commit | 6f2c86fa800bd2f327600c6d32ffe0387b3c5b16 (patch) | |
tree | 5646b3094f5172ee8b4dacdb52346bd269f26ca4 | |
parent | 80056f3da61bc4eae7bc6d899c5c6d38171b3d72 (diff) |
(precompute-menubar-bindings): New function, formerly in loadup.el.
(normal-top-level): Call it here, after loading user files.
(command-line-1): Or here, if displaying startup message.
-rw-r--r-- | lisp/startup.el | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/lisp/startup.el b/lisp/startup.el index c5f131e081..01a5101599 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -163,22 +163,37 @@ this variable, if non-nil; 2. `~/.emacs'; 3. `default.el'.") (delete (concat "PWD=" pwd) process-environment))))))) (setq default-directory (abbreviate-file-name default-directory)) - (unwind-protect - (command-line) - ;; Do this again, in case .emacs defined more abbreviations. - (setq default-directory (abbreviate-file-name default-directory)) - (run-hooks 'emacs-startup-hook) - (and term-setup-hook - (run-hooks 'term-setup-hook)) - ;; Modify the initial frame based on what .emacs puts into - ;; ...-frame-alist. - (if (fboundp 'frame-notice-user-settings) - (frame-notice-user-settings)) - ;; Now we know the user's default font, so add it to the menu. - (if (fboundp 'font-menu-add-default) - (font-menu-add-default)) - (and window-setup-hook - (run-hooks 'window-setup-hook))))) + (let ((menubar-bindings-done nil)) + (unwind-protect + (command-line) + ;; Do this again, in case .emacs defined more abbreviations. + (setq default-directory (abbreviate-file-name default-directory)) + (run-hooks 'emacs-startup-hook) + (and term-setup-hook + (run-hooks 'term-setup-hook)) + ;; Modify the initial frame based on what .emacs puts into + ;; ...-frame-alist. + (if (fboundp 'frame-notice-user-settings) + (frame-notice-user-settings)) + ;; Now we know the user's default font, so add it to the menu. + (if (fboundp 'font-menu-add-default) + (font-menu-add-default)) + (and window-setup-hook + (run-hooks 'window-setup-hook)) + (or menubar-bindings-done + (precompute-menubar-bindings)))))) + +;; Precompute the keyboard equivalents in the menu bar items. +(defun precompute-menubar-bindings () + (if (fboundp 'x-popup-menu) + (let ((submap (lookup-key global-map [menu-bar]))) + (while submap + (and (consp (car submap)) + (symbolp (car (car submap))) + (stringp (car-safe (cdr (car submap)))) + (keymapp (cdr (cdr (car submap)))) + (x-popup-menu nil (cdr (cdr (car submap))))) + (setq submap (cdr submap)))))) (defun command-line () (setq command-line-default-directory default-directory) @@ -422,6 +437,11 @@ GNU Emacs comes with ABSOLUTELY NO WARRANTY; type \\[describe-no-warranty] for f You may give out copies of Emacs; type \\[describe-copying] to see the conditions. Type \\[describe-distribution] for information on getting the latest version."))) (set-buffer-modified-p nil) + ;; Do this now to avoid an annoying delay if the user + ;; clicks the menu bar during the sit-for. + (sit-for 0) + (precompute-menubar-bindings) + (setq menubar-bindings-done t) (sit-for 120)) (save-excursion ;; In case the Emacs server has already selected |