Commit a2095e2e authored by Chong Yidong's avatar Chong Yidong

* cedet/ede/system.el (ede-upload-html-documentation)

(ede-upload-distribution, ede-edit-web-page)
(ede-web-browse-home): Autoload.

* cedet/ede/proj-elisp.el: Add autoload for
semantic-ede-proj-target-grammar.

* cedet/semantic.el (navigate-menu): Show menu items only if
semantic-mode is enabled.

* cedet/ede.el: Remove comments.

* cedet/cedet.el (cedet-menu-map): Minor doc fix.

* cedet/semantic/grammar.el:
* cedet/semantic/grammar-wy.el:
* cedet/semantic/ede-grammar.el: New files.

* cedet/semantic/db-mode.el (global-semanticdb-minor-mode): Define
using define-minor-mode, so that the usual mode variable exists.
parent 715f35a5
2009-09-27 Chong Yidong <cyd@stupidchicken.com>
* cedet/ede/system.el (ede-upload-html-documentation)
(ede-upload-distribution, ede-edit-web-page)
(ede-web-browse-home): Autoload.
* cedet/ede/proj-elisp.el: Add autoload for
semantic-ede-proj-target-grammar.
* cedet/semantic.el (navigate-menu): Show menu items only if
semantic-mode is enabled.
* cedet/ede.el: Remove comments.
* cedet/cedet.el (cedet-menu-map): Minor doc fix.
* cedet/semantic/grammar.el:
* cedet/semantic/grammar-wy.el:
* cedet/semantic/ede-grammar.el: New files.
* cedet/semantic/db-mode.el (global-semanticdb-minor-mode): Define
using define-minor-mode, so that the usual mode variable exists.
2009-09-27 Chong Yidong <cyd@stupidchicken.com>
* cedet/ede.el (global-ede-mode-map): Move menu to
......
......@@ -65,12 +65,12 @@
(define-key map [global-semantic-idle-scheduler-mode] 'undefined)
(define-key map [semantic-menu-separator] '("--"))
(define-key map [semantic-mode]
'(menu-item "Enable parsers (Semantic)" semantic-mode
'(menu-item "Enable Parsers (Semantic)" semantic-mode
:help "Enable language parsers (Semantic)"
:visible (not (bound-and-true-p semantic-mode))))
(define-key map [cedet-menu-separator] 'undefined)
(define-key map [ede-mode]
'(menu-item "Enable Projects (EDE)" global-ede-mode
'(menu-item "Enable Project Support (EDE)" global-ede-mode
:help "Enable the Emacs Development Environment (EDE)"
:visible (not (bound-and-true-p global-ede-mode))))
(define-key map [ede-menu-separator] '("--"))
......
......@@ -1981,18 +1981,6 @@ Display the results as a debug list."
;; (def-edebug-spec ede-with-projectfile
;; (form def-body))))
;; (autoload 'ede-web-browse-home "ede-system" t
;; "Web browse this project's home page.")
;; (autoload 'ede-edit-web-page "ede-system" t
;; "Edit the web site for this project.")
;; (autoload 'ede-upload-distribution "ede-system" t
;; "Upload the dist for this project to the upload site.")
;; (autoload 'ede-upload-html-documentation "ede-system" t
;; "Upload auto-generated HTML to the web site.")
(provide 'ede)
;; Include this last because it depends on ede.
......
......@@ -29,6 +29,8 @@
(require 'ede/pmake)
(require 'ede/pconf)
(autoload 'semantic-ede-proj-target-grammar "semantic/ede-grammar")
;;; Code:
(defclass ede-proj-target-elisp (ede-proj-target-makefile)
((menu :initform nil)
......
......@@ -31,7 +31,8 @@
;;; Code:
;;; Web/FTP site node.
;;
;;;###autoload
(defun ede-web-browse-home ()
"Browse the home page of the current project."
(interactive)
......@@ -44,7 +45,7 @@
(browse-url home)
))
;;;###autoload
(defun ede-edit-web-page ()
"Edit the web site for this project."
(interactive)
......@@ -62,7 +63,7 @@
(error "No project file found")))
(find-file endfile)))
;;;###autoload
(defun ede-upload-distribution ()
"Upload the current distribution to the correct location.
Use /user@ftp.site.com: file names for FTP sites.
......@@ -95,6 +96,7 @@ Download tramp, and use /r:machine: for names on remote sites w/out FTP access."
(message "Done uploading files...")
)
;;;###autoload
(defun ede-upload-html-documentation ()
"Upload the current distributions documentation as HTML.
Use /user@ftp.site.com: file names for FTP sites.
......
......@@ -934,42 +934,47 @@ Throw away all the old tags, and recreate the tag database."
;; Top level menu items:
(define-key cedet-menu-map [semantic-force-refresh]
'(menu-item "Reparse Buffer" semantic-force-refresh
:help "Force a full reparse of the current buffer."))
:help "Force a full reparse of the current buffer."
:visible semantic-mode))
(define-key cedet-menu-map [semantic-edit-menu]
(cons "Edit Tags" edit-menu))
`(menu-item "Edit Tags" ,edit-menu
:visible semantic-mode))
(define-key cedet-menu-map [navigate-menu]
(cons "Navigate Tags" navigate-menu))
`(menu-item "Navigate Tags" ,navigate-menu
:visible semantic-mode))
(define-key cedet-menu-map [semantic-options-separator]
'("--"))
(define-key cedet-menu-map [global-semantic-highlight-func-mode]
(menu-bar-make-mm-toggle
global-semantic-highlight-func-mode
"Highlight Current Function"
"Highlight the tag at point"))
'(menu-item "Highlight Current Function" global-semantic-highlight-func-mode
:help "Highlight the tag at point"
:visible semantic-mode
:button (:toggle . global-semantic-highlight-func-mode)))
(define-key cedet-menu-map [global-semantic-decoration-mode]
(menu-bar-make-mm-toggle
global-semantic-decoration-mode
"Decorate Tags"
"Decorate tags based on various attributes"))
'(menu-item "Decorate Tags" global-semantic-decoration-mode
:help "Decorate tags based on tag attributes"
:visible semantic-mode
:button (:toggle . (bound-and-true-p
global-semantic-decoration-mode))))
(define-key cedet-menu-map [global-semantic-idle-completions-mode]
(menu-bar-make-mm-toggle
global-semantic-idle-completions-mode
"Show Tag Completions"
"Show tag completions when idle"))
'(menu-item "Show Tag Completions" global-semantic-idle-completions-mode
:help "Show tag completions when idle"
:visible semantic-mode
:button (:toggle . global-semantic-idle-completions-mode)))
(define-key cedet-menu-map [global-semantic-idle-summary-mode]
(menu-bar-make-mm-toggle
global-semantic-idle-summary-mode
"Show Tag Summaries"
"Show tag summaries when idle"))
'(menu-item "Show Tag Summaries" global-semantic-idle-summary-mode
:help "Show tag summaries when idle"
:visible semantic-mode
:button (:toggle . global-semantic-idle-summary-mode)))
(define-key cedet-menu-map [global-semanticdb-minor-mode]
'(menu-item "Semantic Database" global-semanticdb-minor-mode
:help "Store tag information in a database"
:button (:toggle . (semanticdb-minor-mode-p))))
:visible semantic-mode
:button (:toggle . global-semanticdb-minor-mode)))
(define-key cedet-menu-map [global-semantic-idle-scheduler-mode]
(menu-bar-make-mm-toggle
global-semantic-idle-scheduler-mode
"Reparse When Idle"
"Keep a buffer's parse tree up to date when idle"))
'(menu-item "Reparse When Idle" global-semantic-idle-scheduler-mode
:help "Keep a buffer's parse tree up to date when idle"
:visible semantic-mode
:button (:toggle . global-semantic-idle-scheduler-mode)))
(define-key cedet-menu-map [ede-menu-separator] 'undefined)
(define-key cedet-menu-map [cedet-menu-separator] 'undefined)
(define-key cedet-menu-map [semantic-menu-separator] '("--")))
......@@ -1064,7 +1069,6 @@ Semantic mode.
(remove-hook 'html-mode-hook 'semantic-default-html-setup)
;; FIXME: handle semanticdb-load-ebrowse-caches
(dolist (mode semantic-submode-list)
(if (and (boundp mode) (eval mode))
(funcall mode -1)))))
......
......@@ -37,26 +37,6 @@
(declare-function semantic-lex-spp-set-dynamic-table "semantic/lex-spp")
(defcustom semanticdb-global-mode nil
"*If non-nil enable the use of `semanticdb-minor-mode'."
:group 'semantic
:type 'boolean
:require 'semantic/db
:initialize 'custom-initialize-default
:set (lambda (sym val)
(global-semanticdb-minor-mode (if val 1 -1))
(custom-set-default sym val)))
(defcustom semanticdb-mode-hook nil
"Hook run whenever `global-semanticdb-minor-mode' is run.
Use `semanticdb-minor-mode-p' to determine if the mode has been turned
on or off."
:group 'semanticdb
:type 'hook)
(semantic-varalias-obsolete 'semanticdb-mode-hooks
'semanticdb-mode-hook)
;;; Start/Stop database use
;;
(defvar semanticdb-hooks
......@@ -80,32 +60,27 @@ on or off."
(symbol-value (car (cdr (car semanticdb-hooks))))))
;;;###autoload
(defun global-semanticdb-minor-mode (&optional arg)
"Toggle the use of `semanticdb-minor-mode'.
If ARG is positive, enable, if it is negative, disable.
If ARG is nil, then toggle."
(interactive "P")
(if (not arg)
(if (semanticdb-minor-mode-p)
(setq arg -1)
(setq arg 1)))
(let ((fn 'add-hook)
(h semanticdb-hooks)
(changed nil))
(if (< arg 0)
(setq changed semanticdb-global-mode
semanticdb-global-mode nil
fn 'remove-hook)
(setq changed (not semanticdb-global-mode)
semanticdb-global-mode t))
;(message "ARG = %d" arg)
(when changed
(while h
(funcall fn (car (cdr (car h))) (car (car h)))
(setq h (cdr h)))
;; Call a hook
(run-hooks 'semanticdb-mode-hook))
))
(define-minor-mode global-semanticdb-minor-mode
"Toggle Semantic DB mode.
With ARG, turn Semantic DB mode on if ARG is positive, off otherwise.
In Semantic DB mode, Semantic parsers store results in a
database, which can be saved for future Emacs sessions."
:global t
:group 'semantic
(if global-semanticdb-minor-mode
;; Enable
(dolist (elt semanticdb-hooks)
(add-hook (cadr elt) (car elt)))
;; Disable
(dolist (elt semanticdb-hooks)
(add-hook (cadr elt) (car elt)))))
(defvaralias 'semanticdb-mode-hook 'global-semanticdb-minor-mode-hook)
(defvaralias 'semanticdb-global-mode 'global-semanticdb-minor-mode)
(semantic-varalias-obsolete 'semanticdb-mode-hooks
'global-semanticdb-minor-mode-hook)
(defun semanticdb-toggle-global-mode ()
"Toggle use of the Semantic Database feature.
......
;;; semantic/ede-grammar.el --- EDE support for Semantic Grammar Files
;;; Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Keywords: project, make
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; Handle .by or .wy files.
(require 'semantic)
(require 'ede/proj)
(require 'ede/pmake)
(require 'ede/pconf)
(require 'ede/proj-elisp)
(require 'semantic/grammar)
;;; Code:
(defclass semantic-ede-proj-target-grammar (ede-proj-target-makefile)
((menu :initform nil)
(keybindings :initform nil)
(phony :initform t)
(sourcetype :initform
(semantic-ede-source-grammar-wisent
semantic-ede-source-grammar-bovine
))
(availablecompilers :initform
(semantic-ede-grammar-compiler-wisent
semantic-ede-grammar-compiler-bovine
))
)
"This target consists of a group of grammar files.
A grammar target consists of grammar files that build Emacs Lisp programs for
parsing different languages.")
(defvar semantic-ede-source-grammar-wisent
(ede-sourcecode "semantic-ede-grammar-source-wisent"
:name "Wisent Grammar"
:sourcepattern "\\.wy$"
)
"Semantic Grammar source code definition for wisent.")
(defclass semantic-ede-grammar-compiler-class (ede-compiler)
nil
"Specialized compiler for semantic grammars.")
(defvar semantic-ede-grammar-compiler-wisent
(semantic-ede-grammar-compiler-class
"ede-emacs-wisent-compiler"
:name "emacs"
:variables '(("EMACS" . "emacs"))
:commands
'(
"@echo \"(add-to-list 'load-path nil)\" > grammar-make-script"
"@for loadpath in . ${LOADPATH}; do \\"
" echo \"(add-to-list 'load-path \\\"$$loadpath\\\")\" >> grammar-make-script; \\"
"done;"
"@echo \"(require 'semantic-load)\" >> grammar-make-script"
"@echo \"(require 'semantic-grammar)\" >> grammar-make-script"
;; "@echo \"(setq debug-on-error t)\" >> grammar-make-script"
"\"$(EMACS)\" -batch --no-site-file -l grammar-make-script -f semantic-grammar-batch-build-packages $^"
)
;; :autoconf '("AM_PATH_LISPDIR")
:sourcetype '(semantic-ede-source-grammar-wisent)
:objectextention "-wy.elc"
)
"Compile Emacs Lisp programs.")
(defvar semantic-ede-source-grammar-bovine
(ede-sourcecode "semantic-ede-grammar-source-bovine"
:name "Bovine Grammar"
:sourcepattern "\\.by$"
)
"Semantic Grammar source code definition for the bovinator.")
(defvar semantic-ede-grammar-compiler-bovine
(semantic-ede-grammar-compiler-class
"ede-emacs-wisent-compiler"
:name "emacs"
:variables '(("EMACS" . "emacs"))
:commands
'(
"@echo \"(add-to-list 'load-path nil)\" > grammar-make-script"
"@for loadpath in . ${LOADPATH}; do \\"
" echo \"(add-to-list 'load-path \\\"$$loadpath\\\")\" >> grammar-make-script; \\"
"done;"
"@echo \"(require 'semantic-load)\" >> grammar-make-script"
"@echo \"(require 'semantic-grammar)\" >> grammar-make-script"
;; "@echo \"(setq debug-on-error t)\" >> grammar-make-script"
"\"$(EMACS)\" -batch --no-site-file -l grammar-make-script -f semantic-grammar-batch-build-packages $^"
)
;; :autoconf '("AM_PATH_LISPDIR")
:sourcetype '(semantic-ede-source-grammar-bovine)
:objectextention "-by.elc"
)
"Compile Emacs Lisp programs.")
;;; Target options.
(defmethod ede-buffer-mine ((this semantic-ede-proj-target-grammar) buffer)
"Return t if object THIS lays claim to the file in BUFFER.
Lays claim to all -by.el, and -wy.el files."
;; We need to be a little more careful than this, but at the moment it
;; is common to have only one target of this class per directory.
(if (string-match "-[bw]y\\.elc?$" (buffer-file-name buffer))
t
(call-next-method) ; The usual thing.
))
(defmethod project-compile-target ((obj semantic-ede-proj-target-grammar))
"Compile all sources in a Lisp target OBJ."
(let* ((cb (current-buffer))
(proj (ede-target-parent obj))
(default-directory (oref proj directory)))
(mapc (lambda (src)
(save-excursion
(set-buffer (find-file-noselect src))
(save-excursion
(semantic-grammar-create-package))
(save-buffer)
(let ((cf (concat (semantic-grammar-package) ".el")))
(if (or (not (file-exists-p cf))
(file-newer-than-file-p src cf))
(byte-compile-file cf)))))
(oref obj source)))
(message "All Semantic Grammar sources are up to date in %s" (object-name obj)))
;;; Makefile generation functions
;;
(defmethod ede-proj-makefile-sourcevar ((this semantic-ede-proj-target-grammar))
"Return the variable name for THIS's sources."
(cond ((ede-proj-automake-p)
(error "No Automake support for Semantic Grammars"))
(t (concat (ede-pmake-varname this) "_SEMANTIC_GRAMMAR"))))
(defmethod ede-proj-makefile-insert-variables :AFTER ((this semantic-ede-proj-target-grammar))
"Insert variables needed by target THIS."
(ede-proj-makefile-insert-loadpath-items
(ede-proj-elisp-packages-to-loadpath
(list "eieio" "semantic" "inversion" "ede")))
;; eieio for object system needed in ede
;; semantic because it is
;; Inversion for versioning system.
;; ede for project regeneration
(ede-pmake-insert-variable-shared
(concat (ede-pmake-varname this) "_SEMANTIC_GRAMMAR_EL")
(insert
(mapconcat (lambda (src)
(save-excursion
(set-buffer (find-file-noselect src))
(concat (semantic-grammar-package) ".el")))
(oref this source)
" ")))
)
(defmethod ede-proj-makefile-insert-rules ((this semantic-ede-proj-target-grammar))
"Insert rules needed by THIS target."
;; Add in some dependencies.
;; (mapc (lambda (src)
;; (let ((nm (file-name-sans-extension src)))
;; (insert nm "-wy.el: " src "\n"
;; nm "-wy.elc: " nm "-wy.el\n\n")
;; ))
;; (oref this source))
;; Call the normal insertion of rules.
(call-next-method)
)
(defmethod ede-proj-makefile-insert-dist-dependencies ((this semantic-ede-proj-target-grammar))
"Insert dist dependencies, or intermediate targets.
This makes sure that all grammar lisp files are created before the dist
runs, so they are always up to date.
Argument THIS is the target that should insert stuff."
(call-next-method)
(insert " $(" (ede-pmake-varname this) "_SEMANTIC_GRAMMAR_EL)")
)
;; (autoload 'ede-proj-target-elisp "ede/proj-elisp"
;; "Target class for Emacs/Semantic grammar files." nil nil)
(ede-proj-register-target "semantic grammar"
semantic-ede-proj-target-grammar)
(provide 'semantic/ede-grammar)
;;; semantic/ede-grammar.el ends here
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment