aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2009-09-27 17:50:53 +0000
committerChong Yidong2009-09-27 17:50:53 +0000
commit715f35a55d79aa04ed337f601082079d0b5a357f (patch)
treecad52aa6f6c79b3cda0ca93e2a82eb6d1607a735
parent78f9c78d2d49d6acfa1a018c9cba82dcb12975b0 (diff)
downloademacs-715f35a55d79aa04ed337f601082079d0b5a357f.tar.gz
emacs-715f35a55d79aa04ed337f601082079d0b5a357f.zip
* cedet/ede.el (global-ede-mode-map): Move menu to
global-ede-mode-map. (ede-minor-mode, global-ede-mode): Use define-minor-mode. * cedet/semantic.el (semantic-mode-map): Use cedet-menu-map. * cedet/cedet.el (cedet-menu-map): New var. Don't require Semantic etc.
-rw-r--r--lisp/ChangeLog11
-rw-r--r--lisp/cedet/cedet.el43
-rw-r--r--lisp/cedet/ede.el183
-rw-r--r--lisp/cedet/semantic.el236
4 files changed, 260 insertions, 213 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fd0fd6afb12..43f36484ab8 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,16 @@
12009-09-27 Chong Yidong <cyd@stupidchicken.com> 12009-09-27 Chong Yidong <cyd@stupidchicken.com>
2 2
3 * cedet/ede.el (global-ede-mode-map): Move menu to
4 global-ede-mode-map.
5 (ede-minor-mode, global-ede-mode): Use define-minor-mode.
6
7 * cedet/semantic.el (semantic-mode-map): Use cedet-menu-map.
8
9 * cedet/cedet.el (cedet-menu-map): New var. Don't require
10 Semantic etc.
11
122009-09-27 Chong Yidong <cyd@stupidchicken.com>
13
3 * cedet/semantic/symref/list.el: Require semantic/complete. 14 * cedet/semantic/symref/list.el: Require semantic/complete.
4 (semantic-symref-symbol): Use 15 (semantic-symref-symbol): Use
5 semantic-complete-read-tag-buffer-deep. 16 semantic-complete-read-tag-buffer-deep.
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el
index 3f901722123..8dcbfd6a414 100644
--- a/lisp/cedet/cedet.el
+++ b/lisp/cedet/cedet.el
@@ -34,15 +34,11 @@
34(eval-when-compile 34(eval-when-compile
35 (require 'cl)) 35 (require 'cl))
36 36
37(declare-function inversion-find-version "inversion")
38
37(defconst cedet-version "1.0pre7" 39(defconst cedet-version "1.0pre7"
38 "Current version of CEDET.") 40 "Current version of CEDET.")
39 41
40(require 'eieio)
41(require 'semantic)
42(require 'srecode)
43(require 'ede)
44(require 'speedbar)
45
46(defconst cedet-packages 42(defconst cedet-packages
47 `( 43 `(
48 ;;PACKAGE MIN-VERSION 44 ;;PACKAGE MIN-VERSION
@@ -54,7 +50,40 @@
54 (speedbar "1.0.3")) 50 (speedbar "1.0.3"))
55 "Table of CEDET packages to install.") 51 "Table of CEDET packages to install.")
56 52
57(declare-function inversion-find-version "inversion") 53(defvar cedet-menu-map ;(make-sparse-keymap "CEDET menu")
54 (let ((map (make-sparse-keymap "CEDET menu")))
55 (define-key map [semantic-force-refresh] 'undefined)
56 (define-key map [semantic-edit-menu] 'undefined)
57 (define-key map [navigate-menu] 'undefined)
58 (define-key map [semantic-options-separator] 'undefined)
59 (define-key map [global-semantic-highlight-func-mode] 'undefined)
60 (define-key map [global-semantic-highlight-func-mode] 'undefined)
61 (define-key map [global-semantic-decoration-mode] 'undefined)
62 (define-key map [global-semantic-idle-completions-mode] 'undefined)
63 (define-key map [global-semantic-idle-summary-mode] 'undefined)
64 (define-key map [global-semanticdb-minor-mode] 'undefined)
65 (define-key map [global-semantic-idle-scheduler-mode] 'undefined)
66 (define-key map [semantic-menu-separator] '("--"))
67 (define-key map [semantic-mode]
68 '(menu-item "Enable parsers (Semantic)" semantic-mode
69 :help "Enable language parsers (Semantic)"
70 :visible (not (bound-and-true-p semantic-mode))))
71 (define-key map [cedet-menu-separator] 'undefined)
72 (define-key map [ede-mode]
73 '(menu-item "Enable Projects (EDE)" global-ede-mode
74 :help "Enable the Emacs Development Environment (EDE)"
75 :visible (not (bound-and-true-p global-ede-mode))))
76 (define-key map [ede-menu-separator] '("--"))
77 (define-key map [ede-find-file] 'undefined)
78 (define-key map [ede-speedbar] 'undefined)
79 (define-key map [ede] 'undefined)
80 (define-key map [ede-new] 'undefined)
81 (define-key map [ede-target-options] 'undefined)
82 (define-key map [ede-project-options] 'undefined)
83 (define-key map [ede-build-forms-menu] 'undefined)
84 map)
85 "Menu keymap for the CEDET package.
86This is used by `semantic-mode' and `global-ede-mode'.")
58 87
59(defun cedet-version () 88(defun cedet-version ()
60 "Display all active versions of CEDET and Dependant packages. 89 "Display all active versions of CEDET and Dependant packages.
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 48ff9760711..8240961c257 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -39,6 +39,7 @@
39;; 39;;
40;; (global-ede-mode t) 40;; (global-ede-mode t)
41 41
42(require 'cedet)
42(require 'eieio) 43(require 'eieio)
43(require 'eieio-speedbar) 44(require 'eieio-speedbar)
44(require 'ede/source) 45(require 'ede/source)
@@ -549,14 +550,7 @@ Argument LIST-O-O is the list of objects to choose from."
549 550
550;;; Menu and Keymap 551;;; Menu and Keymap
551 552
552(defvar ede-minor-mode nil 553(defvar ede-minor-mode-map
553 "Non-nil in EDE controlled buffers.")
554(make-variable-buffer-local 'ede-minor-mode)
555
556;; We don't want to waste space. There is a menu after all.
557(add-to-list 'minor-mode-alist '(ede-minor-mode ""))
558
559(defvar ede-minor-keymap
560 (let ((map (make-sparse-keymap)) 554 (let ((map (make-sparse-keymap))
561 (pmap (make-sparse-keymap))) 555 (pmap (make-sparse-keymap)))
562 (define-key pmap "e" 'ede-edit-file-target) 556 (define-key pmap "e" 'ede-edit-file-target)
@@ -576,32 +570,37 @@ Argument LIST-O-O is the list of objects to choose from."
576 map) 570 map)
577 "Keymap used in project minor mode.") 571 "Keymap used in project minor mode.")
578 572
579(if ede-minor-keymap 573(defvar global-ede-mode-map
580 (progn 574 (let ((map (make-sparse-keymap)))
581 (easy-menu-define 575 (define-key map [menu-bar cedet-menu]
582 ede-minor-menu ede-minor-keymap "Project Minor Mode Menu" 576 (cons "Development" cedet-menu-map))
583 '("Project" 577 map)
584 ( "Build" :filter ede-build-forms-menu ) 578 "Keymap used in `global-ede-mode'")
585 ( "Project Options" :filter ede-project-forms-menu ) 579
586 ( "Target Options" :filter ede-target-forms-menu ) 580;; Activate the EDE items in cedet-menu-map
587 [ "Create Project" ede-new (not ede-object) ] 581
588 [ "Load a project" ede t ] 582(define-key cedet-menu-map [ede-find-file]
589;; [ "Select Active Target" 'undefined nil ] 583 '(menu-item "Find File in Project..." ede-find-file :enable ede-object))
590;; [ "Remove Project" 'undefined nil ] 584(define-key cedet-menu-map [ede-speedbar]
591 "---" 585 '(menu-item "View Project Tree" ede-speedbar :enable ede-object))
592 [ "Find File in Project..." ede-find-file t ] 586(define-key cedet-menu-map [ede]
593 ( "Customize" :filter ede-customize-forms-menu ) 587 '(menu-item "Load Project" ede))
594 [ "View Project Tree" ede-speedbar t ] 588(define-key cedet-menu-map [ede-new]
595 )) 589 '(menu-item "Create Project" ede-new
596 )) 590 :enable (not ede-object)))
597 591(define-key cedet-menu-map [ede-target-options]
598;; Allow re-insertion of a new keymap 592 '(menu-item "Target Options" ede-target-options
599(let ((a (assoc 'ede-minor-mode minor-mode-map-alist))) 593 :filter ede-target-forms-menu))
600 (if a 594(define-key cedet-menu-map [ede-project-options]
601 (setcdr a ede-minor-keymap) 595 '(menu-item "Project Options" ede-project-options
602 (add-to-list 'minor-mode-map-alist 596 :filter ede-project-forms-menu))
603 (cons 'ede-minor-mode ede-minor-keymap)) 597(define-key cedet-menu-map [ede-build-forms-menu]
604 )) 598 '(menu-item "Build Project" ede-build-forms-menu
599 :filter ede-build-forms-menu
600 :enable ede-object))
601(define-key cedet-menu-map [semantic-menu-separator] 'undefined)
602(define-key cedet-menu-map [cedet-menu-separator] 'undefined)
603(define-key cedet-menu-map [ede-menu-separator] '("--"))
605 604
606(defun ede-menu-obj-of-class-p (class) 605(defun ede-menu-obj-of-class-p (class)
607 "Return non-nil if some member of `ede-object' is a child of CLASS." 606 "Return non-nil if some member of `ede-object' is a child of CLASS."
@@ -781,40 +780,36 @@ To be used in hook functions."
781 (eq major-mode 'vc-dired-mode)) 780 (eq major-mode 'vc-dired-mode))
782 (ede-minor-mode 1))) 781 (ede-minor-mode 1)))
783 782
784(defun ede-minor-mode (&optional arg) 783(define-minor-mode ede-minor-mode
785 "Project minor mode. 784 "Toggle EDE (Emacs Development Environment) minor mode.
786If this file is contained, or could be contained in an EDE 785With non-nil argument ARG, enable EDE minor mode if ARG is
787controlled project, then this mode should be active. 786positive; otherwise, disable it.
788 787
789With argument ARG positive, turn on the mode. Negative, turn off the 788If this file is contained, or could be contained in an EDE
790mode. nil means to toggle the mode." 789controlled project, then this mode is activated automatically
791 (interactive "P") 790provided `global-ede-mode' is enabled."
792 (if (or (eq major-mode 'dired-mode) 791 :group 'ede
793 (eq major-mode 'vc-dired-mode)) 792 (cond ((or (eq major-mode 'dired-mode)
794 (ede-dired-minor-mode arg) 793 (eq major-mode 'vc-dired-mode))
795 (progn 794 (ede-dired-minor-mode (if ede-minor-mode 1 -1)))
796 (setq ede-minor-mode 795 (ede-minor-mode
797 (not (or (and (null arg) ede-minor-mode) 796 (if (and (not ede-constructing)
798 (<= (prefix-numeric-value arg) 0)))) 797 (ede-directory-project-p default-directory t))
799 (if (and ede-minor-mode (not ede-constructing) 798 (let* ((ROOT nil)
800 (ede-directory-project-p default-directory t)) 799 (proj (ede-directory-get-open-project default-directory
801 (let* ((ROOT nil) 800 'ROOT)))
802 (proj (ede-directory-get-open-project default-directory 801 (when (not proj)
803 'ROOT))) 802 ;; @todo - this could be wasteful.
804 (when (not proj) 803 (setq proj (ede-load-project-file default-directory 'ROOT)))
805 ;; @todo - this could be wasteful. 804 (setq ede-object-project proj)
806 (setq proj (ede-load-project-file default-directory 'ROOT))) 805 (setq ede-object-root-project
807 806 (or ROOT (ede-project-root proj)))
808 (setq ede-object-project proj) 807 (setq ede-object (ede-buffer-object))
809 (setq ede-object-root-project 808 (if (and (not ede-object) ede-object-project)
810 (or ROOT (ede-project-root proj))) 809 (ede-auto-add-to-target))
811 (setq ede-object (ede-buffer-object)) 810 (ede-apply-target-options))
812 (if (and (not ede-object) ede-object-project) 811 ;; If we fail to have a project here, turn it back off.
813 (ede-auto-add-to-target)) 812 (ede-minor-mode -1)))))
814 (ede-apply-target-options))
815 ;; If we fail to have a project here, turn it back off.
816 (if (not (interactive-p))
817 (setq ede-minor-mode nil))))))
818 813
819(defun ede-reset-all-buffers (onoff) 814(defun ede-reset-all-buffers (onoff)
820 "Reset all the buffers due to change in EDE. 815 "Reset all the buffers due to change in EDE.
@@ -827,31 +822,35 @@ ONOFF indicates enabling or disabling the mode."
827 (setq b (cdr b))))) 822 (setq b (cdr b)))))
828 823
829;;;###autoload 824;;;###autoload
830(defun global-ede-mode (arg) 825(define-minor-mode global-ede-mode
831 "Turn on variable `ede-minor-mode' mode when ARG is positive. 826 "Toggle global EDE (Emacs Development Environment) mode.
832If ARG is negative, disable. Toggle otherwise." 827With non-nil argument ARG, enable global EDE mode if ARG is
833 (interactive "P") 828positive; otherwise, disable it.
834 (if (not arg) 829
835 (if (member 'ede-turn-on-hook find-file-hook) 830This global minor mode enables `ede-minor-mode' in all buffers in
836 (global-ede-mode -1) 831an EDE controlled project."
837 (global-ede-mode 1)) 832 :global t
838 (if (or (eq arg t) (> arg 0)) 833 :group 'ede
839 (progn 834 (if global-ede-mode
840 (add-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p) 835 ;; Turn on global-ede-mode
841 (add-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil) 836 (progn
842 (add-hook 'ecb-source-path-functions 'ede-ecb-project-paths) 837 (add-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p)
843 (add-hook 'find-file-hook 'ede-turn-on-hook) 838 (add-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil)
844 (add-hook 'dired-mode-hook 'ede-turn-on-hook) 839 (add-hook 'ecb-source-path-functions 'ede-ecb-project-paths)
845 (add-hook 'kill-emacs-hook 'ede-save-cache) 840 (add-hook 'find-file-hook 'ede-turn-on-hook)
846 (ede-load-cache)) 841 (add-hook 'dired-mode-hook 'ede-turn-on-hook)
847 (remove-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p) 842 (add-hook 'kill-emacs-hook 'ede-save-cache)
848 (remove-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil) 843 (ede-load-cache)
849 (remove-hook 'ecb-source-path-functions 'ede-ecb-project-paths) 844 (ede-reset-all-buffers 1))
850 (remove-hook 'find-file-hook 'ede-turn-on-hook) 845 ;; Turn off global-ede-mode
851 (remove-hook 'dired-mode-hook 'ede-turn-on-hook) 846 (remove-hook 'semanticdb-project-predicate-functions 'ede-directory-project-p)
852 (remove-hook 'kill-emacs-hook 'ede-save-cache) 847 (remove-hook 'semanticdb-project-root-functions 'ede-toplevel-project-or-nil)
853 (ede-save-cache)) 848 (remove-hook 'ecb-source-path-functions 'ede-ecb-project-paths)
854 (ede-reset-all-buffers arg))) 849 (remove-hook 'find-file-hook 'ede-turn-on-hook)
850 (remove-hook 'dired-mode-hook 'ede-turn-on-hook)
851 (remove-hook 'kill-emacs-hook 'ede-save-cache)
852 (ede-save-cache)
853 (ede-reset-all-buffers -1)))
855 854
856(defvar ede-ignored-file-alist 855(defvar ede-ignored-file-alist
857 '( "\\.cvsignore$" 856 '( "\\.cvsignore$"
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index cb0ac623d54..81214b4b63f 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -30,6 +30,7 @@
30;; designed to handle typical functional and object oriented languages. 30;; designed to handle typical functional and object oriented languages.
31 31
32(require 'assoc) 32(require 'assoc)
33(require 'cedet)
33(require 'semantic/tag) 34(require 'semantic/tag)
34(require 'semantic/lex) 35(require 'semantic/lex)
35 36
@@ -830,121 +831,12 @@ a START and END part."
830Throw away all the old tags, and recreate the tag database." 831Throw away all the old tags, and recreate the tag database."
831 (interactive) 832 (interactive)
832 (semantic-clear-toplevel-cache) 833 (semantic-clear-toplevel-cache)
833 (semantic-fetch-tags)) 834 (semantic-fetch-tags)
835 (message "Buffer reparsed."))
834 836
835(defvar semantic-mode-map 837(defvar semantic-mode-map
836 (let ((map (make-sparse-keymap)) 838 (let ((map (make-sparse-keymap)))
837 (menu (make-sparse-keymap "Semantic"))
838 (navigate-menu (make-sparse-keymap "Navigate Tags"))
839 (edit-menu (make-sparse-keymap "Edit Tags")))
840
841 (define-key edit-menu [semantic-analyze-possible-completions]
842 '(menu-item "List Completions" semantic-analyze-possible-completions
843 :help "Display a list of completions for the tag at point"))
844 (define-key edit-menu [semantic-complete-analyze-inline]
845 '(menu-item "Complete Tag Inline" semantic-complete-analyze-inline
846 :help "Display inline completion for the tag at point"))
847 (define-key edit-menu [semantic-completion-separator]
848 '("--"))
849 (define-key edit-menu [senator-transpose-tags-down]
850 '(menu-item "Transpose Tags Down" senator-transpose-tags-down
851 :active (semantic-current-tag)
852 :help "Transpose the current tag and the next tag"))
853 (define-key edit-menu [senator-transpose-tags-up]
854 '(menu-item "Transpose Tags Up" senator-transpose-tags-up
855 :active (semantic-current-tag)
856 :help "Transpose the current tag and the previous tag"))
857 (define-key edit-menu [semantic-edit-separator]
858 '("--"))
859 (define-key edit-menu [senator-yank-tag]
860 '(menu-item "Yank Tag" senator-yank-tag
861 :active (not (ring-empty-p senator-tag-ring))
862 :help "Yank the head of the tag ring into the buffer"))
863 (define-key edit-menu [senator-copy-tag-to-register]
864 '(menu-item "Copy Tag To Register" senator-copy-tag-to-register
865 :active (semantic-current-tag)
866 :help "Yank the head of the tag ring into the buffer"))
867 (define-key edit-menu [senator-copy-tag]
868 '(menu-item "Copy Tag" senator-copy-tag
869 :active (semantic-current-tag)
870 :help "Copy the current tag to the tag ring"))
871 (define-key edit-menu [senator-kill-tag]
872 '(menu-item "Kill Tag" senator-kill-tag
873 :active (semantic-current-tag)
874 :help "Kill the current tag, and copy it to the tag ring"))
875
876 (define-key navigate-menu [senator-narrow-to-defun]
877 '(menu-item "Narrow to Tag" senator-narrow-to-defun
878 :active (semantic-current-tag)
879 :help "Narrow the buffer to the bounds of the current tag"))
880 (define-key navigate-menu [semantic-narrow-to-defun-separator]
881 '("--"))
882 (define-key navigate-menu [semantic-symref-symbol]
883 '(menu-item "Find Tag References..." semantic-symref-symbol
884 :help "Read a tag and list the references to it"))
885 (define-key navigate-menu [semantic-complete-jump]
886 '(menu-item "Find Tag Globally..." semantic-complete-jump
887 :help "Read a tag name and find it in the current project"))
888 (define-key navigate-menu [semantic-complete-jump-local]
889 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
890 :help "Read a tag name and find it in this buffer"))
891 (define-key navigate-menu [semantic-navigation-separator]
892 '("--"))
893 (define-key navigate-menu [senator-go-to-up-reference]
894 '(menu-item "Parent Tag" senator-go-to-up-reference
895 :help "Navigate up one reference by tag."))
896 (define-key navigate-menu [senator-next-tag]
897 '(menu-item "Next Tag" senator-next-tag
898 :help "Go to the next tag"))
899 (define-key navigate-menu [senator-previous-tag]
900 '(menu-item "Previous Tag" senator-previous-tag
901 :help "Go to the previous tag"))
902
903 (define-key menu [semantic-force-refresh]
904 '(menu-item "Reparse Buffer" semantic-force-refresh
905 :help "Force a full reparse of the current buffer."))
906 (define-key menu [semantic-refresh-separator]
907 '("--"))
908 (define-key menu [edit-menu]
909 (cons "Edit Tags" edit-menu))
910 (define-key menu [navigate-menu]
911 (cons "Navigate Tags" navigate-menu))
912 (define-key menu [semantic-options-separator]
913 '("--"))
914 (define-key menu [global-semantic-highlight-func-mode]
915 (menu-bar-make-mm-toggle
916 global-semantic-highlight-func-mode
917 "Highlight Current Function"
918 "Highlight the tag at point"))
919 (define-key menu [global-semantic-decoration-mode]
920 (menu-bar-make-mm-toggle
921 global-semantic-decoration-mode
922 "Decorate Tags"
923 "Decorate tags based on various attributes"))
924 (define-key menu [global-semantic-idle-completions-mode]
925 (menu-bar-make-mm-toggle
926 global-semantic-idle-completions-mode
927 "Show Tag Completions"
928 "Show tag completions when idle"))
929 (define-key menu [global-semantic-idle-summary-mode]
930 (menu-bar-make-mm-toggle
931 global-semantic-idle-summary-mode
932 "Show Tag Summaries"
933 "Show tag summaries when idle"))
934 (define-key menu [global-semanticdb-minor-mode]
935 '(menu-item "Semantic Database" global-semanticdb-minor-mode
936 :help "Store tag information in a database"
937 :button (:toggle . (semanticdb-minor-mode-p))))
938 (define-key menu [global-semantic-idle-scheduler-mode]
939 (menu-bar-make-mm-toggle
940 global-semantic-idle-scheduler-mode
941 "Reparse When Idle"
942 "Keep a buffer's parse tree up to date when idle"))
943 (define-key map [menu-bar semantic]
944 (cons "Development" menu))
945
946 ;; Key bindings: 839 ;; Key bindings:
947
948 ;; (define-key km "f" 'senator-search-set-tag-class-filter) 840 ;; (define-key km "f" 'senator-search-set-tag-class-filter)
949 ;; (define-key km "i" 'senator-isearch-toggle-semantic-mode) 841 ;; (define-key km "i" 'senator-isearch-toggle-semantic-mode)
950 (define-key map "\C-c,j" 'semantic-complete-jump-local) 842 (define-key map "\C-c,j" 'semantic-complete-jump-local)
@@ -962,13 +854,129 @@ Throw away all the old tags, and recreate the tag database."
962 (define-key map [?\C-c ?, up] 'senator-transpose-tags-up) 854 (define-key map [?\C-c ?, up] 'senator-transpose-tags-up)
963 (define-key map [?\C-c ?, down] 'senator-transpose-tags-down) 855 (define-key map [?\C-c ?, down] 'senator-transpose-tags-down)
964 (define-key map "\C-c,l" 'semantic-analyze-possible-completions) 856 (define-key map "\C-c,l" 'semantic-analyze-possible-completions)
857 ;; This hack avoids showing the CEDET menu twice if ede-minor-mode
858 ;; and Semantic are both enabled. Is there a better way?
859 (define-key map [menu-bar cedet-menu]
860 (list 'menu-item "Development" cedet-menu-map
861 :enable (quote (not (bound-and-true-p global-ede-mode)))))
965 ;; (define-key km "-" 'senator-fold-tag) 862 ;; (define-key km "-" 'senator-fold-tag)
966 ;; (define-key km "+" 'senator-unfold-tag) 863 ;; (define-key km "+" 'senator-unfold-tag)
967 map)) 864 map))
968 865
866;; Activate the Semantic items in cedet-menu-map
867(let ((navigate-menu (make-sparse-keymap "Navigate Tags"))
868 (edit-menu (make-sparse-keymap "Edit Tags")))
869
870 ;; Edit Tags submenu:
871 (define-key edit-menu [semantic-analyze-possible-completions]
872 '(menu-item "List Completions" semantic-analyze-possible-completions
873 :help "Display a list of completions for the tag at point"))
874 (define-key edit-menu [semantic-complete-analyze-inline]
875 '(menu-item "Complete Tag Inline" semantic-complete-analyze-inline
876 :help "Display inline completion for the tag at point"))
877 (define-key edit-menu [semantic-completion-separator]
878 '("--"))
879 (define-key edit-menu [senator-transpose-tags-down]
880 '(menu-item "Transpose Tags Down" senator-transpose-tags-down
881 :active (semantic-current-tag)
882 :help "Transpose the current tag and the next tag"))
883 (define-key edit-menu [senator-transpose-tags-up]
884 '(menu-item "Transpose Tags Up" senator-transpose-tags-up
885 :active (semantic-current-tag)
886 :help "Transpose the current tag and the previous tag"))
887 (define-key edit-menu [semantic-edit-separator]
888 '("--"))
889 (define-key edit-menu [senator-yank-tag]
890 '(menu-item "Yank Tag" senator-yank-tag
891 :active (not (ring-empty-p senator-tag-ring))
892 :help "Yank the head of the tag ring into the buffer"))
893 (define-key edit-menu [senator-copy-tag-to-register]
894 '(menu-item "Copy Tag To Register" senator-copy-tag-to-register
895 :active (semantic-current-tag)
896 :help "Yank the head of the tag ring into the buffer"))
897 (define-key edit-menu [senator-copy-tag]
898 '(menu-item "Copy Tag" senator-copy-tag
899 :active (semantic-current-tag)
900 :help "Copy the current tag to the tag ring"))
901 (define-key edit-menu [senator-kill-tag]
902 '(menu-item "Kill Tag" senator-kill-tag
903 :active (semantic-current-tag)
904 :help "Kill the current tag, and copy it to the tag ring"))
905
906 ;; Navigate Tags submenu:
907 (define-key navigate-menu [senator-narrow-to-defun]
908 '(menu-item "Narrow to Tag" senator-narrow-to-defun
909 :active (semantic-current-tag)
910 :help "Narrow the buffer to the bounds of the current tag"))
911 (define-key navigate-menu [semantic-narrow-to-defun-separator]
912 '("--"))
913 (define-key navigate-menu [semantic-symref-symbol]
914 '(menu-item "Find Tag References..." semantic-symref-symbol
915 :help "Read a tag and list the references to it"))
916 (define-key navigate-menu [semantic-complete-jump]
917 '(menu-item "Find Tag Globally..." semantic-complete-jump
918 :help "Read a tag name and find it in the current project"))
919 (define-key navigate-menu [semantic-complete-jump-local]
920 '(menu-item "Find Tag in This Buffer..." semantic-complete-jump-local
921 :help "Read a tag name and find it in this buffer"))
922 (define-key navigate-menu [semantic-navigation-separator]
923 '("--"))
924 (define-key navigate-menu [senator-go-to-up-reference]
925 '(menu-item "Parent Tag" senator-go-to-up-reference
926 :help "Navigate up one reference by tag."))
927 (define-key navigate-menu [senator-next-tag]
928 '(menu-item "Next Tag" senator-next-tag
929 :help "Go to the next tag"))
930 (define-key navigate-menu [senator-previous-tag]
931 '(menu-item "Previous Tag" senator-previous-tag
932 :help "Go to the previous tag"))
933
934 ;; Top level menu items:
935 (define-key cedet-menu-map [semantic-force-refresh]
936 '(menu-item "Reparse Buffer" semantic-force-refresh
937 :help "Force a full reparse of the current buffer."))
938 (define-key cedet-menu-map [semantic-edit-menu]
939 (cons "Edit Tags" edit-menu))
940 (define-key cedet-menu-map [navigate-menu]
941 (cons "Navigate Tags" navigate-menu))
942 (define-key cedet-menu-map [semantic-options-separator]
943 '("--"))
944 (define-key cedet-menu-map [global-semantic-highlight-func-mode]
945 (menu-bar-make-mm-toggle
946 global-semantic-highlight-func-mode
947 "Highlight Current Function"
948 "Highlight the tag at point"))
949 (define-key cedet-menu-map [global-semantic-decoration-mode]
950 (menu-bar-make-mm-toggle
951 global-semantic-decoration-mode
952 "Decorate Tags"
953 "Decorate tags based on various attributes"))
954 (define-key cedet-menu-map [global-semantic-idle-completions-mode]
955 (menu-bar-make-mm-toggle
956 global-semantic-idle-completions-mode
957 "Show Tag Completions"
958 "Show tag completions when idle"))
959 (define-key cedet-menu-map [global-semantic-idle-summary-mode]
960 (menu-bar-make-mm-toggle
961 global-semantic-idle-summary-mode
962 "Show Tag Summaries"
963 "Show tag summaries when idle"))
964 (define-key cedet-menu-map [global-semanticdb-minor-mode]
965 '(menu-item "Semantic Database" global-semanticdb-minor-mode
966 :help "Store tag information in a database"
967 :button (:toggle . (semanticdb-minor-mode-p))))
968 (define-key cedet-menu-map [global-semantic-idle-scheduler-mode]
969 (menu-bar-make-mm-toggle
970 global-semantic-idle-scheduler-mode
971 "Reparse When Idle"
972 "Keep a buffer's parse tree up to date when idle"))
973 (define-key cedet-menu-map [ede-menu-separator] 'undefined)
974 (define-key cedet-menu-map [cedet-menu-separator] 'undefined)
975 (define-key cedet-menu-map [semantic-menu-separator] '("--")))
976
969;; The `semantic-mode' command, in conjuction with the 977;; The `semantic-mode' command, in conjuction with the
970;; `semantic-default-submodes' variable, are used to collectively 978;; `semantic-default-submodes' variable, toggles Semantic's various
971;; toggle Semantic's various auxilliary minor modes. 979;; auxilliary minor modes.
972 980
973(defvar semantic-load-system-cache-loaded nil 981(defvar semantic-load-system-cache-loaded nil
974 "Non nil when the Semantic system caches have been loaded. 982 "Non nil when the Semantic system caches have been loaded.