Browse Source

org.el: Enhance menus

* lisp/org.el (org-menu-define): New function.
(org-mode): Use it to set up Org menus.
Bastien 1 year ago
parent
commit
328c9a1af3
1 changed files with 262 additions and 259 deletions
  1. 262 259
      lisp/org.el

+ 262 - 259
lisp/org.el

@@ -5000,6 +5000,8 @@ The following commands are available:
      (unless org-inhibit-startup-visibility-stuff (org-set-startup-visibility))
      (when org-startup-truncated (setq truncate-lines t))
      (when org-startup-indented (require 'org-indent) (org-indent-mode 1))))
+  ;; Set up Org menus
+  (org-menu-define)
   ;; Try to set `org-hide' face correctly.
   (let ((foreground (org-find-invisible-foreground)))
     (when foreground
@@ -18460,271 +18462,272 @@ an argument, unconditionally call `org-insert-heading'."
 				(t #'org-insert-heading)))))
 
 ;;; Menu entries
-
 (defsubst org-in-subtree-not-table-p ()
   "Are we in a subtree and not in a table?"
   (and (not (org-before-first-heading-p))
        (not (org-at-table-p))))
 
 ;; Define the Org mode menus
-(easy-menu-define org-tbl-menu org-mode-map "Tbl menu"
-  '("Tbl"
-    ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p)]
-    ["Next Field" org-cycle (org-at-table-p)]
-    ["Previous Field" org-shifttab (org-at-table-p)]
-    ["Next Row" org-return (org-at-table-p)]
-    "--"
-    ["Blank Field" org-table-blank-field (org-at-table-p)]
-    ["Edit Field" org-table-edit-field (org-at-table-p)]
-    ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
-    "--"
-    ("Column"
-     ["Move Column Left" org-metaleft (org-at-table-p)]
-     ["Move Column Right" org-metaright (org-at-table-p)]
-     ["Delete Column" org-shiftmetaleft (org-at-table-p)]
-     ["Insert Column" org-shiftmetaright (org-at-table-p)]
-     ["Shrink Column" org-table-toggle-column-width (org-at-table-p)])
-    ("Row"
-     ["Move Row Up" org-metaup (org-at-table-p)]
-     ["Move Row Down" org-metadown (org-at-table-p)]
-     ["Delete Row" org-shiftmetaup (org-at-table-p)]
-     ["Insert Row" org-shiftmetadown (org-at-table-p)]
-     ["Sort lines in region" org-table-sort-lines (org-at-table-p)]
-     "--"
-     ["Insert Hline" org-ctrl-c-minus (org-at-table-p)])
-    ("Rectangle"
-     ["Copy Rectangle" org-copy-special (org-at-table-p)]
-     ["Cut Rectangle" org-cut-special (org-at-table-p)]
-     ["Paste Rectangle" org-paste-special (org-at-table-p)]
-     ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
-    "--"
-    ("Calculate"
-     ["Set Column Formula" org-table-eval-formula (org-at-table-p)]
-     ["Set Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
-     ["Edit Formulas" org-edit-special (org-at-table-p)]
-     "--"
-     ["Recalculate line" org-table-recalculate (org-at-table-p)]
-     ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
-     ["Iterate all" (lambda () (interactive) (org-table-recalculate '(16))) :active (org-at-table-p) :keys "C-u C-u C-c *"]
-     "--"
-     ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
-     "--"
-     ["Sum Column/Rectangle" org-table-sum
-      (or (org-at-table-p) (org-region-active-p))]
-     ["Which Column?" org-table-current-column (org-at-table-p)])
-    ["Debug Formulas"
-     org-table-toggle-formula-debugger
-     :style toggle :selected (bound-and-true-p org-table-formula-debug)]
-    ["Show Col/Row Numbers"
-     org-table-toggle-coordinate-overlays
-     :style toggle
-     :selected (bound-and-true-p org-table-overlay-coordinates)]
-    "--"
-    ["Create" org-table-create (not (org-at-table-p))]
-    ["Convert Region" org-table-convert-region (not (org-at-table-p 'any))]
-    ["Import from File" org-table-import (not (org-at-table-p))]
-    ["Export to File" org-table-export (org-at-table-p)]
-    "--"
-    ["Create/Convert from/to table.el" org-table-create-with-table.el t]
-    "--"
-    ("Plot"
-     ["Ascii plot" orgtbl-ascii-plot :active (org-at-table-p) :keys "C-c \" a"]
-     ["Gnuplot" org-plot/gnuplot :active (org-at-table-p) :keys "C-c \" g"])))
-
-(easy-menu-define org-org-menu org-mode-map "Org menu"
-  '("Org"
-    ("Show/Hide"
-     ["Cycle Visibility" org-cycle :active (or (bobp) (outline-on-heading-p))]
-     ["Cycle Global Visibility" org-shifttab :active (not (org-at-table-p))]
-     ["Sparse Tree..." org-sparse-tree t]
-     ["Reveal Context" org-reveal t]
-     ["Show All" org-show-all t]
-     "--"
-     ["Subtree to indirect buffer" org-tree-to-indirect-buffer t])
-    "--"
-    ["New Heading" org-insert-heading t]
-    ("Navigate Headings"
-     ["Up" outline-up-heading t]
-     ["Next" outline-next-visible-heading t]
-     ["Previous" outline-previous-visible-heading t]
-     ["Next Same Level" outline-forward-same-level t]
-     ["Previous Same Level" outline-backward-same-level t]
-     "--"
-     ["Jump" org-goto t])
-    ("Edit Structure"
-     ["Refile Subtree" org-refile (org-in-subtree-not-table-p)]
-     "--"
-     ["Move Subtree Up" org-metaup (org-at-heading-p)]
-     ["Move Subtree Down" org-metadown (org-at-heading-p)]
-     "--"
-     ["Copy Subtree"  org-copy-special (org-in-subtree-not-table-p)]
-     ["Cut Subtree"  org-cut-special (org-in-subtree-not-table-p)]
-     ["Paste Subtree"  org-paste-special (not (org-at-table-p))]
-     "--"
-     ["Clone subtree, shift time" org-clone-subtree-with-time-shift t]
-     "--"
-     ["Copy visible text"  org-copy-visible t]
-     "--"
-     ["Promote Heading" org-metaleft (org-in-subtree-not-table-p)]
-     ["Promote Subtree" org-shiftmetaleft (org-in-subtree-not-table-p)]
-     ["Demote Heading"  org-metaright (org-in-subtree-not-table-p)]
-     ["Demote Subtree"  org-shiftmetaright (org-in-subtree-not-table-p)]
-     "--"
-     ["Sort Region/Children" org-sort t]
-     "--"
-     ["Convert to odd levels" org-convert-to-odd-levels t]
-     ["Convert to odd/even levels" org-convert-to-oddeven-levels t])
-    ("Editing"
-     ["Emphasis..." org-emphasize t]
-     ["Edit Source Example" org-edit-special t]
-     "--"
-     ["Footnote new/jump" org-footnote-action t]
-     ["Footnote extra" (org-footnote-action t) :active t :keys "C-u C-c C-x f"])
-    ("Archive"
-     ["Archive (default method)" org-archive-subtree-default (org-in-subtree-not-table-p)]
-     "--"
-     ["Move Subtree to Archive file" org-archive-subtree (org-in-subtree-not-table-p)]
-     ["Toggle ARCHIVE tag" org-toggle-archive-tag (org-in-subtree-not-table-p)]
-     ["Move subtree to Archive sibling" org-archive-to-archive-sibling (org-in-subtree-not-table-p)]
-     )
-    "--"
-    ("Hyperlinks"
-     ["Store Link (Global)" org-store-link t]
-     ["Find existing link to here" org-occur-link-in-agenda-files t]
-     ["Insert Link" org-insert-link t]
-     ["Follow Link" org-open-at-point t]
-     "--"
-     ["Next link" org-next-link t]
-     ["Previous link" org-previous-link t]
-     "--"
-     ["Descriptive Links"
-      org-toggle-link-display
-      :style radio
-      :selected org-descriptive-links
-      ]
-     ["Literal Links"
-      org-toggle-link-display
-      :style radio
-      :selected (not org-descriptive-links)])
-    "--"
-    ("TODO Lists"
-     ["TODO/DONE/-" org-todo t]
-     ("Select keyword"
-      ["Next keyword" org-shiftright (org-at-heading-p)]
-      ["Previous keyword" org-shiftleft (org-at-heading-p)]
-      ["Complete Keyword" pcomplete (assq :todo-keyword (org-context))]
-      ["Next keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-at-heading-p))]
-      ["Previous keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-at-heading-p))])
-     ["Show TODO Tree" org-show-todo-tree :active t :keys "C-c / t"]
-     ["Global TODO list" org-todo-list :active t :keys "\\[org-agenda] t"]
-     "--"
-     ["Enforce dependencies" (customize-variable 'org-enforce-todo-dependencies)
-      :selected org-enforce-todo-dependencies :style toggle :active t]
-     "Settings for tree at point"
-     ["Do Children sequentially" org-toggle-ordered-property :style radio
-      :selected (org-entry-get nil "ORDERED")
-      :active org-enforce-todo-dependencies :keys "C-c C-x o"]
-     ["Do Children parallel" org-toggle-ordered-property :style radio
-      :selected (not (org-entry-get nil "ORDERED"))
-      :active org-enforce-todo-dependencies :keys "C-c C-x o"]
-     "--"
-     ["Set Priority" org-priority t]
-     ["Priority Up" org-shiftup t]
-     ["Priority Down" org-shiftdown t]
-     "--"
-     ["Get news from all feeds" org-feed-update-all t]
-     ["Go to the inbox of a feed..." org-feed-goto-inbox t]
-     ["Customize feeds" (customize-variable 'org-feed-alist) t])
-    ("TAGS and Properties"
-     ["Set Tags" org-set-tags-command (not (org-before-first-heading-p))]
-     ["Change tag in region" org-change-tag-in-region (org-region-active-p)]
-     "--"
-     ["Set property" org-set-property (not (org-before-first-heading-p))]
-     ["Column view of properties" org-columns t]
-     ["Insert Column View DBlock" org-columns-insert-dblock t])
-    ("Dates and Scheduling"
-     ["Timestamp" org-time-stamp (not (org-before-first-heading-p))]
-     ["Timestamp (inactive)" org-time-stamp-inactive (not (org-before-first-heading-p))]
-     ("Change Date"
-      ["1 Day Later" org-shiftright (org-at-timestamp-p 'lax)]
-      ["1 Day Earlier" org-shiftleft (org-at-timestamp-p 'lax)]
-      ["1 ... Later" org-shiftup (org-at-timestamp-p 'lax)]
-      ["1 ... Earlier" org-shiftdown (org-at-timestamp-p 'lax)])
-     ["Compute Time Range" org-evaluate-time-range t]
-     ["Schedule Item" org-schedule (not (org-before-first-heading-p))]
-     ["Deadline" org-deadline (not (org-before-first-heading-p))]
-     "--"
-     ["Custom time format" org-toggle-time-stamp-overlays
-      :style radio :selected org-display-custom-times]
-     "--"
-     ["Goto Calendar" org-goto-calendar t]
-     ["Date from Calendar" org-date-from-calendar t]
-     "--"
-     ["Start/Restart Timer" org-timer-start t]
-     ["Pause/Continue Timer" org-timer-pause-or-continue t]
-     ["Stop Timer" org-timer-pause-or-continue :active t :keys "C-u C-c C-x ,"]
-     ["Insert Timer String" org-timer t]
-     ["Insert Timer Item" org-timer-item t])
-    ("Logging work"
-     ["Clock in" org-clock-in :active t :keys "C-c C-x C-i"]
-     ["Switch task" (lambda () (interactive) (org-clock-in '(4))) :active t :keys "C-u C-c C-x C-i"]
-     ["Clock out" org-clock-out t]
-     ["Clock cancel" org-clock-cancel t]
-     "--"
-     ["Mark as default task" org-clock-mark-default-task t]
-     ["Clock in, mark as default" (lambda () (interactive) (org-clock-in '(16))) :active t :keys "C-u C-u C-c C-x C-i"]
-     ["Goto running clock" org-clock-goto t]
-     "--"
-     ["Display times" org-clock-display t]
-     ["Create clock table" org-clock-report t]
-     "--"
-     ["Record DONE time"
-      (progn (setq org-log-done (not org-log-done))
-	     (message "Switching to %s will %s record a timestamp"
-		      (car org-done-keywords)
-		      (if org-log-done "automatically" "not")))
-      :style toggle :selected org-log-done])
-    "--"
-    ["Agenda Command..." org-agenda t]
-    ["Set Restriction Lock" org-agenda-set-restriction-lock t]
-    ("File List for Agenda")
-    ("Special views current file"
-     ["TODO Tree"  org-show-todo-tree t]
-     ["Check Deadlines" org-check-deadlines t]
-     ["Tags/Property tree" org-match-sparse-tree t])
-    "--"
-    ["Export/Publish..." org-export-dispatch t]
-    ("LaTeX"
-     ["Org CDLaTeX mode" org-cdlatex-mode :active (require 'cdlatex nil t)
-      :style toggle :selected org-cdlatex-mode]
-     ["Insert Environment" cdlatex-environment (fboundp 'cdlatex-environment)]
-     ["Insert math symbol" cdlatex-math-symbol (fboundp 'cdlatex-math-symbol)]
-     ["Modify math symbol" org-cdlatex-math-modify
-      (org-inside-LaTeX-fragment-p)]
-     ["Insert citation" org-reftex-citation t])
-    "--"
-    ("MobileOrg"
-     ["Push Files and Views" org-mobile-push t]
-     ["Get Captured and Flagged" org-mobile-pull t]
-     ["Find FLAGGED Tasks" (org-agenda nil "?") :active t :keys "\\[org-agenda] ?"]
-     "--"
-     ["Setup" (progn (require 'org-mobile) (customize-group 'org-mobile)) t])
-    "--"
-    ("Documentation"
-     ["Show Version" org-version t]
-     ["Info Documentation" org-info t]
-     ["Browse Org News" org-browse-news t])
-    ("Customize"
-     ["Browse Org Group" org-customize t]
-     "--"
-     ["Expand This Menu" org-create-customize-menu
-      (fboundp 'customize-menu-create)])
-    ["Send bug report" org-submit-bug-report t]
-    "--"
-    ("Refresh/Reload"
-     ["Refresh setup current buffer" org-mode-restart t]
-     ["Reload Org (after update)" org-reload t]
-     ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x !"])))
+(defun org-menu-define ()
+  "Define Org mode menus"
+  (easy-menu-define org-org-menu org-mode-map "Org menu"
+    `("Org"
+      ("Show/Hide"
+       ["Cycle Visibility" org-cycle :active (or (bobp) (outline-on-heading-p))]
+       ["Cycle Global Visibility" org-shifttab :active (not (org-at-table-p))]
+       ["Sparse Tree..." org-sparse-tree t]
+       ["Reveal Context" org-reveal t]
+       ["Show All" org-show-all t]
+       "--"
+       ["Subtree to indirect buffer" org-tree-to-indirect-buffer t])
+      "--"
+      ["New Heading" org-insert-heading t]
+      ("Navigate Headings"
+       ["Up" outline-up-heading t]
+       ["Next" outline-next-visible-heading t]
+       ["Previous" outline-previous-visible-heading t]
+       ["Next Same Level" outline-forward-same-level t]
+       ["Previous Same Level" outline-backward-same-level t]
+       "--"
+       ["Jump" org-goto t])
+      ("Edit Structure"
+       ["Refile Subtree" org-refile (org-in-subtree-not-table-p)]
+       "--"
+       ["Move Subtree Up" org-metaup (org-at-heading-p)]
+       ["Move Subtree Down" org-metadown (org-at-heading-p)]
+       "--"
+       ["Copy Subtree"  org-copy-special (org-in-subtree-not-table-p)]
+       ["Cut Subtree"  org-cut-special (org-in-subtree-not-table-p)]
+       ["Paste Subtree"  org-paste-special (not (org-at-table-p))]
+       "--"
+       ["Clone subtree, shift time" org-clone-subtree-with-time-shift t]
+       "--"
+       ["Copy visible text"  org-copy-visible t]
+       "--"
+       ["Promote Heading" org-metaleft (org-in-subtree-not-table-p)]
+       ["Promote Subtree" org-shiftmetaleft (org-in-subtree-not-table-p)]
+       ["Demote Heading"  org-metaright (org-in-subtree-not-table-p)]
+       ["Demote Subtree"  org-shiftmetaright (org-in-subtree-not-table-p)]
+       "--"
+       ["Sort Region/Children" org-sort t]
+       "--"
+       ["Convert to odd levels" org-convert-to-odd-levels t]
+       ["Convert to odd/even levels" org-convert-to-oddeven-levels t])
+      ("Editing"
+       ["Emphasis..." org-emphasize t]
+       ["Edit Source Example" org-edit-special t]
+       "--"
+       ["Footnote new/jump" org-footnote-action t]
+       ["Footnote extra" (org-footnote-action t) :active t :keys "C-u C-c C-x f"])
+      ("Archive"
+       ["Archive (default method)" org-archive-subtree-default (org-in-subtree-not-table-p)]
+       "--"
+       ["Move Subtree to Archive file" org-archive-subtree (org-in-subtree-not-table-p)]
+       ["Toggle ARCHIVE tag" org-toggle-archive-tag (org-in-subtree-not-table-p)]
+       ["Move subtree to Archive sibling" org-archive-to-archive-sibling (org-in-subtree-not-table-p)]
+       )
+      "--"
+      ("Hyperlinks"
+       ["Store Link (Global)" org-store-link t]
+       ["Find existing link to here" org-occur-link-in-agenda-files t]
+       ["Insert Link" org-insert-link t]
+       ["Follow Link" org-open-at-point t]
+       "--"
+       ["Next link" org-next-link t]
+       ["Previous link" org-previous-link t]
+       "--"
+       ["Descriptive Links"
+	org-toggle-link-display
+	:style radio
+	:selected org-descriptive-links
+	]
+       ["Literal Links"
+	org-toggle-link-display
+	:style radio
+	:selected (not org-descriptive-links)])
+      "--"
+      ("TODO Lists"
+       ["TODO/DONE/-" org-todo t]
+       ("Select keyword"
+	["Next keyword" org-shiftright (org-at-heading-p)]
+	["Previous keyword" org-shiftleft (org-at-heading-p)]
+	["Complete Keyword" pcomplete (assq :todo-keyword (org-context))]
+	["Next keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-at-heading-p))]
+	["Previous keyword set" org-shiftcontrolright (and (> (length org-todo-sets) 1) (org-at-heading-p))])
+       ["Show TODO Tree" org-show-todo-tree :active t :keys "C-c / t"]
+       ["Global TODO list" org-todo-list :active t :keys "\\[org-agenda] t"]
+       "--"
+       ["Enforce dependencies" (customize-variable 'org-enforce-todo-dependencies)
+	:selected org-enforce-todo-dependencies :style toggle :active t]
+       "Settings for tree at point"
+       ["Do Children sequentially" org-toggle-ordered-property :style radio
+	:selected (org-entry-get nil "ORDERED")
+	:active org-enforce-todo-dependencies :keys "C-c C-x o"]
+       ["Do Children parallel" org-toggle-ordered-property :style radio
+	:selected (not (org-entry-get nil "ORDERED"))
+	:active org-enforce-todo-dependencies :keys "C-c C-x o"]
+       "--"
+       ["Set Priority" org-priority t]
+       ["Priority Up" org-shiftup t]
+       ["Priority Down" org-shiftdown t]
+       "--"
+       ["Get news from all feeds" org-feed-update-all t]
+       ["Go to the inbox of a feed..." org-feed-goto-inbox t]
+       ["Customize feeds" (customize-variable 'org-feed-alist) t])
+      ("TAGS and Properties"
+       ["Set Tags" org-set-tags-command (not (org-before-first-heading-p))]
+       ["Change tag in region" org-change-tag-in-region (org-region-active-p)]
+       "--"
+       ["Set property" org-set-property (not (org-before-first-heading-p))]
+       ["Column view of properties" org-columns t]
+       ["Insert Column View DBlock" org-columns-insert-dblock t])
+      ("Dates and Scheduling"
+       ["Timestamp" org-time-stamp (not (org-before-first-heading-p))]
+       ["Timestamp (inactive)" org-time-stamp-inactive (not (org-before-first-heading-p))]
+       ("Change Date"
+	["1 Day Later" org-shiftright (org-at-timestamp-p 'lax)]
+	["1 Day Earlier" org-shiftleft (org-at-timestamp-p 'lax)]
+	["1 ... Later" org-shiftup (org-at-timestamp-p 'lax)]
+	["1 ... Earlier" org-shiftdown (org-at-timestamp-p 'lax)])
+       ["Compute Time Range" org-evaluate-time-range t]
+       ["Schedule Item" org-schedule (not (org-before-first-heading-p))]
+       ["Deadline" org-deadline (not (org-before-first-heading-p))]
+       "--"
+       ["Custom time format" org-toggle-time-stamp-overlays
+	:style radio :selected org-display-custom-times]
+       "--"
+       ["Goto Calendar" org-goto-calendar t]
+       ["Date from Calendar" org-date-from-calendar t]
+       "--"
+       ["Start/Restart Timer" org-timer-start t]
+       ["Pause/Continue Timer" org-timer-pause-or-continue t]
+       ["Stop Timer" org-timer-pause-or-continue :active t :keys "C-u C-c C-x ,"]
+       ["Insert Timer String" org-timer t]
+       ["Insert Timer Item" org-timer-item t])
+      ("Logging work"
+       ["Clock in" org-clock-in :active t :keys "C-c C-x C-i"]
+       ["Switch task" (lambda () (interactive) (org-clock-in '(4))) :active t :keys "C-u C-c C-x C-i"]
+       ["Clock out" org-clock-out t]
+       ["Clock cancel" org-clock-cancel t]
+       "--"
+       ["Mark as default task" org-clock-mark-default-task t]
+       ["Clock in, mark as default" (lambda () (interactive) (org-clock-in '(16))) :active t :keys "C-u C-u C-c C-x C-i"]
+       ["Goto running clock" org-clock-goto t]
+       "--"
+       ["Display times" org-clock-display t]
+       ["Create clock table" org-clock-report t]
+       "--"
+       ["Record DONE time"
+	(progn (setq org-log-done (not org-log-done))
+	       (message "Switching to %s will %s record a timestamp"
+			(car org-done-keywords)
+			(if org-log-done "automatically" "not")))
+	:style toggle :selected org-log-done])
+      "--"
+      ["Agenda Command..." org-agenda t]
+      ["Set Restriction Lock" org-agenda-set-restriction-lock t]
+      ("File List for Agenda")
+      ("Special views current file"
+       ["TODO Tree"  org-show-todo-tree t]
+       ["Check Deadlines" org-check-deadlines t]
+       ["Tags/Property tree" org-match-sparse-tree t])
+      "--"
+      ["Export/Publish..." org-export-dispatch t]
+      ("LaTeX"
+       ["Org CDLaTeX mode" org-cdlatex-mode :active (require 'cdlatex nil t)
+	:style toggle :selected org-cdlatex-mode]
+       ["Insert Environment" cdlatex-environment (fboundp 'cdlatex-environment)]
+       ["Insert math symbol" cdlatex-math-symbol (fboundp 'cdlatex-math-symbol)]
+       ["Modify math symbol" org-cdlatex-math-modify
+	(org-inside-LaTeX-fragment-p)]
+       ["Insert citation" org-reftex-citation t])
+      "--"
+      ,@(when (featurep 'org-mobile)
+	  '(("MobileOrg"
+	     ["Push Files and Views" org-mobile-push t]
+	     ["Get Captured and Flagged" org-mobile-pull t]
+	     ["Find FLAGGED Tasks" (org-agenda nil "?") :active t :keys "\\[org-agenda] ?"]
+	     "--"
+	     ["Setup" (customize-group 'org-mobile) t])
+	    "--"))
+      ("Documentation"
+       ["Show Version" org-version t]
+       ["Info Documentation" org-info t]
+       ["Browse Org News" org-browse-news t])
+      ("Customize"
+       ["Browse Org Group" org-customize t]
+       "--"
+       ["Expand This Menu" org-create-customize-menu
+	(fboundp 'customize-menu-create)])
+      ["Send bug report" org-submit-bug-report t]
+      "--"
+      ("Refresh/Reload"
+       ["Refresh setup current buffer" org-mode-restart t]
+       ["Reload Org (after update)" org-reload t]
+       ["Reload Org uncompiled" (org-reload t) :active t :keys "C-u C-c C-x !"])))
+  (easy-menu-define org-tbl-menu org-mode-map "Org Table menu"
+    '("Table"
+      ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p)]
+      ["Next Field" org-cycle (org-at-table-p)]
+      ["Previous Field" org-shifttab (org-at-table-p)]
+      ["Next Row" org-return (org-at-table-p)]
+      "--"
+      ["Blank Field" org-table-blank-field (org-at-table-p)]
+      ["Edit Field" org-table-edit-field (org-at-table-p)]
+      ["Copy Field from Above" org-table-copy-down (org-at-table-p)]
+      "--"
+      ("Column"
+       ["Move Column Left" org-metaleft (org-at-table-p)]
+       ["Move Column Right" org-metaright (org-at-table-p)]
+       ["Delete Column" org-shiftmetaleft (org-at-table-p)]
+       ["Insert Column" org-shiftmetaright (org-at-table-p)]
+       ["Shrink Column" org-table-toggle-column-width (org-at-table-p)])
+      ("Row"
+       ["Move Row Up" org-metaup (org-at-table-p)]
+       ["Move Row Down" org-metadown (org-at-table-p)]
+       ["Delete Row" org-shiftmetaup (org-at-table-p)]
+       ["Insert Row" org-shiftmetadown (org-at-table-p)]
+       ["Sort lines in region" org-table-sort-lines (org-at-table-p)]
+       "--"
+       ["Insert Hline" org-ctrl-c-minus (org-at-table-p)])
+      ("Rectangle"
+       ["Copy Rectangle" org-copy-special (org-at-table-p)]
+       ["Cut Rectangle" org-cut-special (org-at-table-p)]
+       ["Paste Rectangle" org-paste-special (org-at-table-p)]
+       ["Fill Rectangle" org-table-wrap-region (org-at-table-p)])
+      "--"
+      ("Calculate"
+       ["Set Column Formula" org-table-eval-formula (org-at-table-p)]
+       ["Set Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="]
+       ["Edit Formulas" org-edit-special (org-at-table-p)]
+       "--"
+       ["Recalculate line" org-table-recalculate (org-at-table-p)]
+       ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"]
+       ["Iterate all" (lambda () (interactive) (org-table-recalculate '(16))) :active (org-at-table-p) :keys "C-u C-u C-c *"]
+       "--"
+       ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)]
+       "--"
+       ["Sum Column/Rectangle" org-table-sum
+	(or (org-at-table-p) (org-region-active-p))]
+       ["Which Column?" org-table-current-column (org-at-table-p)])
+      ["Debug Formulas"
+       org-table-toggle-formula-debugger
+       :style toggle :selected (bound-and-true-p org-table-formula-debug)]
+      ["Show Col/Row Numbers"
+       org-table-toggle-coordinate-overlays
+       :style toggle
+       :selected (bound-and-true-p org-table-overlay-coordinates)]
+      "--"
+      ["Create" org-table-create (not (org-at-table-p))]
+      ["Convert Region" org-table-convert-region (not (org-at-table-p 'any))]
+      ["Import from File" org-table-import (not (org-at-table-p))]
+      ["Export to File" org-table-export (org-at-table-p)]
+      "--"
+      ["Create/Convert from/to table.el" org-table-create-with-table.el t]
+      "--"
+      ("Plot"
+       ["Ascii plot" orgtbl-ascii-plot :active (org-at-table-p) :keys "C-c \" a"]
+       ["Gnuplot" org-plot/gnuplot :active (org-at-table-p) :keys "C-c \" g"]))))
 
 (defun org-info (&optional node)
   "Read documentation for Org in the info system.