Mercurial > emacs
changeset 105441:457c7a0ec078
* cedet/semantic.el (semantic-new-buffer-setup-functions): New
option.
(semantic-new-buffer-fcn): Call parser setup functions here.
(semantic-mode): Don't call parser setup functions here, it's done
in semantic-new-buffer-fcn now.
* cedet/srecode/compile.el (srecode-compile-file): Call
semantic-new-buffer-fcn if the buffer has not been parsed.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 04 Oct 2009 19:22:09 +0000 |
parents | bec7f10791da |
children | 96247a7ec10d |
files | lisp/ChangeLog lisp/cedet/semantic.el lisp/cedet/srecode/compile.el |
diffstat | 3 files changed, 43 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Oct 04 19:00:54 2009 +0000 +++ b/lisp/ChangeLog Sun Oct 04 19:22:09 2009 +0000 @@ -1,3 +1,14 @@ +2009-10-04 Chong Yidong <cyd@stupidchicken.com> + + * cedet/semantic.el (semantic-new-buffer-setup-functions): New + option. + (semantic-new-buffer-fcn): Call parser setup functions here. + (semantic-mode): Don't call parser setup functions here, it's done + in semantic-new-buffer-fcn now. + + * cedet/srecode/compile.el (srecode-compile-file): Call + semantic-new-buffer-fcn if the buffer has not been parsed. + 2009-10-04 Chong Yidong <cyd@stupidchicken.com> * cedet/ede/pmake.el (ede-pmake-insert-variable-once): Delete.
--- a/lisp/cedet/semantic.el Sun Oct 04 19:00:54 2009 +0000 +++ b/lisp/cedet/semantic.el Sun Oct 04 19:22:09 2009 +0000 @@ -260,6 +260,30 @@ :group 'semantic :type 'hook) +(defcustom semantic-new-buffer-setup-functions + '((js-mode . wisent-javascript-setup-parser) + (java-mode . wisent-java-default-setup) + (scheme-mode . semantic-default-scheme-setup) + (c-mode . semantic-default-c-setup) + (c++-mode . semantic-default-c-setup) + (html-mode . semantic-default-html-setup) + (srecode-template-mode . srecode-template-setup-parser) + (makefile-automake-mode . semantic-default-make-setup) + (makefile-gmake-mode . semantic-default-make-setup) + (makefile-makepp-mode . semantic-default-make-setup) + (makefile-bsdmake-mode . semantic-default-make-setup) + (makefile-imake-mode . semantic-default-make-setup) + (makefile-mode . semantic-default-make-setup)) + "Alist of functions to call to set up Semantic parsing in the buffer. +Each element has the form (MODE . FN), where MODE is a value of +`major-mode' for the buffer and FN is the corresponding function +to call, with no arguments, to set up the parser. + +These functions are called by `semantic-new-buffer-fcn', before +`semantic-inhibit-functions'." + :group 'semantic + :type '(alist :key-type symbol :value-type function)) + (defvar semantic-init-hook nil "Hook run when a buffer is initialized with a parsing table.") @@ -299,6 +323,11 @@ If the major mode is ready for Semantic, and no `semantic-inhibit-functions' disabled it, the current buffer is setup to use Semantic, and `semantic-init-hook' is run." + ;; In upstream Semantic, the parser setup functions are called from + ;; mode hooks. In the version bundled with Emacs, we do it here. + (let ((entry (assq major-mode semantic-new-buffer-setup-functions))) + (when entry + (funcall (cdr entry)))) ;; Do stuff if semantic was activated by a mode hook in this buffer, ;; and not afterwards disabled. (when (and semantic--parse-table @@ -1046,30 +1075,9 @@ (file-exists-p semanticdb-default-system-save-directory)) (require 'semantic/db-ebrowse) (semanticdb-load-ebrowse-caches))) - (add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn) - ;; Add mode-local hooks - (add-hook 'js-mode-hook 'wisent-javascript-setup-parser) - (add-hook 'ecmascript-mode-hook 'wisent-javascript-setup-parser) - (add-hook 'java-mode-hook 'wisent-java-default-setup) - (add-hook 'scheme-mode-hook 'semantic-default-scheme-setup) - (add-hook 'makefile-mode-hook 'semantic-default-make-setup) - (add-hook 'c-mode-hook 'semantic-default-c-setup) - (add-hook 'c++-mode-hook 'semantic-default-c-setup) - (add-hook 'html-mode-hook 'semantic-default-html-setup) - (add-hook 'html-mode-hook 'semantic-default-html-setup) - (add-hook 'srecode-template-mode-hook 'srecode-template-setup-parser)) + (add-hook 'mode-local-init-hook 'semantic-new-buffer-fcn)) ;; Disable all Semantic features. (remove-hook 'mode-local-init-hook 'semantic-new-buffer-fcn) - (remove-hook 'js-mode-hook 'wisent-javascript-setup-parser) - (remove-hook 'ecmascript-mode-hook 'wisent-javascript-setup-parser) - (remove-hook 'java-mode-hook 'wisent-java-default-setup) - (remove-hook 'scheme-mode-hook 'semantic-default-scheme-setup) - (remove-hook 'makefile-mode-hook 'semantic-default-make-setup) - (remove-hook 'c-mode-hook 'semantic-default-c-setup) - (remove-hook 'c++-mode-hook 'semantic-default-c-setup) - (remove-hook 'html-mode-hook 'semantic-default-html-setup) - (remove-hook 'srecode-template-mode-hook 'srecode-template-setup-parser) - ;; FIXME: handle semanticdb-load-ebrowse-caches (dolist (mode semantic-submode-list) (if (and (boundp mode) (eval mode))
--- a/lisp/cedet/srecode/compile.el Sun Oct 04 19:00:54 2009 +0000 +++ b/lisp/cedet/srecode/compile.el Sun Oct 04 19:22:09 2009 +0000 @@ -188,6 +188,8 @@ (set-buffer (semantic-find-file-noselect fname)) (set-buffer peb)) ;; Do the compile. + (unless (semantic-active-p) + (semantic-new-buffer-fcn)) (srecode-compile-templates) ;; Trash the buffer if we had to read it in. (if (not peb)