diff options
| author | Chong Yidong | 2009-09-27 17:50:53 +0000 |
|---|---|---|
| committer | Chong Yidong | 2009-09-27 17:50:53 +0000 |
| commit | 715f35a55d79aa04ed337f601082079d0b5a357f (patch) | |
| tree | cad52aa6f6c79b3cda0ca93e2a82eb6d1607a735 | |
| parent | 78f9c78d2d49d6acfa1a018c9cba82dcb12975b0 (diff) | |
| download | emacs-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/ChangeLog | 11 | ||||
| -rw-r--r-- | lisp/cedet/cedet.el | 43 | ||||
| -rw-r--r-- | lisp/cedet/ede.el | 183 | ||||
| -rw-r--r-- | lisp/cedet/semantic.el | 236 |
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 @@ | |||
| 1 | 2009-09-27 Chong Yidong <cyd@stupidchicken.com> | 1 | 2009-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 | |||
| 12 | 2009-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. | ||
| 86 | This 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. |
| 786 | If this file is contained, or could be contained in an EDE | 785 | With non-nil argument ARG, enable EDE minor mode if ARG is |
| 787 | controlled project, then this mode should be active. | 786 | positive; otherwise, disable it. |
| 788 | 787 | ||
| 789 | With argument ARG positive, turn on the mode. Negative, turn off the | 788 | If this file is contained, or could be contained in an EDE |
| 790 | mode. nil means to toggle the mode." | 789 | controlled project, then this mode is activated automatically |
| 791 | (interactive "P") | 790 | provided `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. |
| 832 | If ARG is negative, disable. Toggle otherwise." | 827 | With non-nil argument ARG, enable global EDE mode if ARG is |
| 833 | (interactive "P") | 828 | positive; otherwise, disable it. |
| 834 | (if (not arg) | 829 | |
| 835 | (if (member 'ede-turn-on-hook find-file-hook) | 830 | This global minor mode enables `ede-minor-mode' in all buffers in |
| 836 | (global-ede-mode -1) | 831 | an 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." | |||
| 830 | Throw away all the old tags, and recreate the tag database." | 831 | Throw 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. |