Commit 82481502 authored by Chong Yidong's avatar Chong Yidong

* 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.
parent d91485a9
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.
......
......@@ -260,6 +260,30 @@ setup to use Semantic."
: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 @@ That is if it is dirty or if the current parse tree isn't up to date."
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 @@ Semantic mode.
(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))
......
......@@ -188,6 +188,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(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)
......
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