From b3edb781e066a462ae2f3eec95136ac9d778b379 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 28 Oct 2010 00:05:00 -0700 Subject: [PATCH] Move ns-specific menu-bar code from term/ns-win.el to menu-bar.el. * lisp/term/ns-win.el (global-map, menu-bar-final-items, menu-bar-help-menu): Move menu-bar related settings to ../menu-bar.el. * lisp/menu-bar.el (global-map, menu-bar-final-items, menu-bar-help-menu): Move ns-specific settings here from term/ns-win.el. --- lisp/ChangeLog | 5 ++++ lisp/menu-bar.el | 71 +++++++++++++++++++++++++++++++++++++++-------------- lisp/term/ns-win.el | 42 ------------------------------- 3 files changed, 57 insertions(+), 61 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8ae264d36c2..922a9e6ee6e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2010-10-28 Glenn Morris + * term/ns-win.el (global-map, menu-bar-final-items, menu-bar-help-menu): + Move menu-bar related settings to ../menu-bar.el. + * menu-bar.el (global-map, menu-bar-final-items, menu-bar-help-menu): + Move ns-specific settings here from term/ns-win.el. + * simple.el (x-selection-owner-p): Remove unused declaration. 2010-10-28 Stefan Monnier diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 9d8e4749087..f75bbc5eb76 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -35,14 +35,33 @@ (define-key global-map [menu-bar] (make-sparse-keymap "menu-bar"))) (defvar menu-bar-help-menu (make-sparse-keymap "Help")) -;; Force Help item to come last, after the major mode's own items. -;; The symbol used to be called `help', but that gets confused with the -;; help key. -(setq menu-bar-final-items '(help-menu)) +(if (not (featurep 'ns)) + ;; Force Help item to come last, after the major mode's own items. + ;; The symbol used to be called `help', but that gets confused with the + ;; help key. + (setq menu-bar-final-items '(help-menu)) + (if (eq system-type 'darwin) + (setq menu-bar-final-items '(buffer services help-menu)) + (setq menu-bar-final-items '(buffer services hide-app quit)) + ;; Add standard top-level items to GNUstep menu. + (define-key global-map [menu-bar quit] + `(menu-item ,(purecopy "Quit") save-buffers-kill-emacs + :help ,(purecopy "Save unsaved buffers, then exit"))) + (define-key global-map [menu-bar hide-app] + `(menu-item ,(purecopy "Hide") ns-do-hide-emacs + :help ,(purecopy "Hide Emacs")))) + (define-key global-map [menu-bar services] ; set-up in ns-win + (cons (purecopy "Services") (make-sparse-keymap "Services")))) + +;; If running under GNUstep, "Help" is moved and renamed "Info" (see below). +(or (and (featurep 'ns) + (not (eq system-type 'darwin))) + (define-key global-map [menu-bar help-menu] + (cons (purecopy "Help") menu-bar-help-menu))) -(define-key global-map [menu-bar help-menu] (cons (purecopy "Help") menu-bar-help-menu)) (defvar menu-bar-tools-menu (make-sparse-keymap "Tools")) -(define-key global-map [menu-bar tools] (cons (purecopy "Tools") menu-bar-tools-menu)) +(define-key global-map [menu-bar tools] + (cons (purecopy "Tools") menu-bar-tools-menu)) ;; This definition is just to show what this looks like. ;; It gets modified in place when menu-bar-update-buffers is called. (defvar global-buffers-menu-map (make-sparse-keymap "Buffers")) @@ -52,9 +71,17 @@ (define-key global-map [menu-bar options] (cons (purecopy "Options") menu-bar-options-menu)) (defvar menu-bar-edit-menu (make-sparse-keymap "Edit")) -(define-key global-map [menu-bar edit] (cons (purecopy "Edit") menu-bar-edit-menu)) +(define-key global-map [menu-bar edit] + (cons (purecopy "Edit") menu-bar-edit-menu)) (defvar menu-bar-file-menu (make-sparse-keymap "File")) -(define-key global-map [menu-bar file] (cons (purecopy "File") menu-bar-file-menu)) +(define-key global-map [menu-bar file] + (cons (purecopy "File") menu-bar-file-menu)) + +;; Put "Help" menu at the front, called "Info". +(and (featurep 'ns) + (not (eq system-type 'darwin)) + (define-key global-map [menu-bar help-menu] + (cons (purecopy "Info") menu-bar-help-menu))) ;; This alias is for compatibility with 19.28 and before. (defvar menu-bar-files-menu menu-bar-file-menu) @@ -458,7 +485,6 @@ ,(purecopy "Delete the text in region between mark and current position"))) (defvar yank-menu (cons (purecopy "Select Yank") nil)) (fset 'yank-menu (cons 'keymap yank-menu)) -;; The ns differences here seem silly. (define-key menu-bar-edit-menu (if (featurep 'ns) [select-paste] [paste-from-menu]) ;; ns-win.el said: Change text to be more consistent with @@ -1028,47 +1054,47 @@ mail status in mode line")) (defvar menu-bar-showhide-tool-bar-menu (make-sparse-keymap "Tool-bar")) (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-left] - `(menu-item ,(purecopy "On the left") + `(menu-item ,(purecopy "On the left") menu-bar-showhide-tool-bar-menu-customize-enable-left :help ,(purecopy "Tool-bar at the left side") :visible (display-graphic-p) - :button - (:radio . (and tool-bar-mode + :button + (:radio . (and tool-bar-mode (eq (frame-parameter nil 'tool-bar-position) 'left))))) (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-right] - `(menu-item ,(purecopy "On the right") + `(menu-item ,(purecopy "On the right") menu-bar-showhide-tool-bar-menu-customize-enable-right :help ,(purecopy "Tool-bar at the right side") :visible (display-graphic-p) :button - (:radio . (and tool-bar-mode + (:radio . (and tool-bar-mode (eq (frame-parameter nil 'tool-bar-position) 'right))))) (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-bottom] - `(menu-item ,(purecopy "On the bottom") + `(menu-item ,(purecopy "On the bottom") menu-bar-showhide-tool-bar-menu-customize-enable-bottom :help ,(purecopy "Tool-bar at the bottom") :visible (display-graphic-p) :button - (:radio . (and tool-bar-mode + (:radio . (and tool-bar-mode (eq (frame-parameter nil 'tool-bar-position) 'bottom))))) (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-top] - `(menu-item ,(purecopy "On the top") + `(menu-item ,(purecopy "On the top") menu-bar-showhide-tool-bar-menu-customize-enable-top :help ,(purecopy "Tool-bar at the top") :visible (display-graphic-p) :button - (:radio . (and tool-bar-mode + (:radio . (and tool-bar-mode (eq (frame-parameter nil 'tool-bar-position) 'top))))) (define-key menu-bar-showhide-tool-bar-menu [showhide-tool-bar-none] - `(menu-item ,(purecopy "None") + `(menu-item ,(purecopy "None") menu-bar-showhide-tool-bar-menu-customize-disable :help ,(purecopy "Turn tool-bar off") :visible (display-graphic-p) @@ -1688,6 +1714,13 @@ key, a click, or a menu-item"))) `(menu-item ,(purecopy "Emacs Tutorial") help-with-tutorial :help ,(purecopy "Learn how to use Emacs"))) +;; In OS X it's in the app menu already. +;; FIXME? There already is an "About Emacs" (sans ...) entry in the Help menu. +(and (featurep 'ns) + (not (eq system-type 'darwin)) + (define-key menu-bar-help-menu [info-panel] + `(menu-item ,(purecopy "About Emacs...") ns-do-emacs-info-panel))) + (defun menu-bar-menu-frame-live-and-visible-p () "Return non-nil if the menu frame is alive and visible. The menu frame is the frame for which we are updating the menu." diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index e0dffa87251..24f70f9dee0 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -186,48 +186,6 @@ The properties returned may include `top', `left', `height', and `width'." (declare-function ns-do-applescript "nsfns.m" (script)) (defalias 'do-applescript 'ns-do-applescript) -;; Add a couple of menus and rearrange some others; easiest just to redo toplvl -;; Note keymap defns must be given last-to-first -(define-key global-map [menu-bar] (make-sparse-keymap "menu-bar")) - -(setq menu-bar-final-items - (cond ((eq system-type 'darwin) - '(buffer services help-menu)) - ;; Otherwise, GNUstep. - (t - '(buffer services hide-app quit)))) - -;; Add standard top-level items to GNUstep menu. -(unless (eq system-type 'darwin) - (define-key global-map [menu-bar quit] '("Quit" . save-buffers-kill-emacs)) - (define-key global-map [menu-bar hide-app] '("Hide" . ns-do-hide-emacs))) - -(define-key global-map [menu-bar services] - (cons "Services" (make-sparse-keymap "Services"))) -(define-key global-map [menu-bar buffer] - (cons "Buffers" global-buffers-menu-map)) -;; (cons "Buffers" (make-sparse-keymap "Buffers"))) -(define-key global-map [menu-bar tools] (cons "Tools" menu-bar-tools-menu)) -(define-key global-map [menu-bar options] (cons "Options" menu-bar-options-menu)) -(define-key global-map [menu-bar edit] (cons "Edit" menu-bar-edit-menu)) -(define-key global-map [menu-bar file] (cons "File" menu-bar-file-menu)) - -;; If running under GNUstep, rename "Help" to "Info" -(cond ((eq system-type 'darwin) - (define-key global-map [menu-bar help-menu] - (cons "Help" menu-bar-help-menu))) - (t - (let ((contents (reverse (cdr menu-bar-help-menu)))) - (setq menu-bar-help-menu - (append (list 'keymap) (cdr contents) (list "Info")))) - (define-key global-map [menu-bar help-menu] - (cons "Info" menu-bar-help-menu)))) - -(if (not (eq system-type 'darwin)) - ;; in OS X it's in the app menu already - (define-key menu-bar-help-menu [info-panel] - '("About Emacs..." . ns-do-emacs-info-panel))) - ;;;; Services (declare-function ns-perform-service "nsfns.m" (service send)) -- 2.11.4.GIT