diff lisp/cedet/semantic/db-file.el @ 104441:902d22a2d922

cedet/semantic/db-debug.el: Don't require semantic/db-mode, since semanticdb-current-database and semanticdb-current-table are now in semantic/db.el. cedet/semantic/db-ebrowse.el: Don't require semantic/db-mode, since semanticdb-current-database and semanticdb-current-table are now in semantic/db.el. cedet/semantic/db-el.el: Require semantic/lex-spp. Require semantic/db instead of semantic/db-search. cedet/semantic/db-file.el: Declare inversion-test and data-debug-insert-thing. (semanticdb-load-database): Load inversion only if necessary. cedet/semantic/db-find.el: Autoload semanticdb-find-default-throttle. Defvar data-debug-thing-alist, and ede-current-project. Declare data-debug-insert-stuff-list, data-debug-insert-tag-list, semantic-scope-reset-cache, and semanticdb-typecache-notify-reset. Require semantic/tag-file, and semantic/sort. (semantic-reset): Require semantic/scope. (semanticdb-partial-synchronize): Require semantic/db-typecache. (semanticdb-find-table-for-include) Move up to avoid compiler warning. cedet/semantic/db-global.el: Declare data-debug-new-buffer and data-debug-insert-thing. (semanticdb-project-database-global) Move up to avoid compiler warning. cedet/semantic/db-javascript.el: Fix provide statement. Require semantic/db-find instead of semantic/db-search. cedet/semantic/db-mode.el: Declare semantic-lex-spp-set-dynamic-table. (semanticdb-current-database, semanticdb-current-table): Move into semantic/db.el cedet/semantic/db-ref.el: Require eieio, semantic/db, and semantic/util. Declare data-debug-new-buffer and data-debug-insert-object-slots. Defvar semantic-case-fold. Require semantic/find when compiling. cedet/semantic/db-typecache.el: Require semantic/tag-ls, semantic/analyze/fcn, and semantic/scope. Declare data-debug-insert-thing and data-debug-new-buffer. cedet/semantic/db.el (semanticdb-search-results-table): Move class definition here from semantic/db-search.el. (semanticdb-current-database, semanticdb-current-table) Move variable definitions here from semantic/db-mode.el.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 31 Aug 2009 00:45:41 +0000
parents 2e15afd37998
children e59328b6f117
line wrap: on
line diff
--- a/lisp/cedet/semantic/db-file.el	Mon Aug 31 00:13:42 2009 +0000
+++ b/lisp/cedet/semantic/db-file.el	Mon Aug 31 00:45:41 2009 +0000
@@ -1,4 +1,4 @@
-;;; db-file.el --- Save a semanticdb to a cache file.
+;;; semantic/db-file.el --- Save a semanticdb to a cache file.
 
 ;;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
 ;;; Free Software Foundation, Inc.
@@ -147,9 +147,11 @@
     db))
 
 ;;; File IO
+
+(declare-function inversion-test "inversion")
+
 (defun semanticdb-load-database (filename)
   "Load the database FILENAME."
-  (require 'inversion)
   (condition-case foo
       (let* ((r (eieio-persistent-read filename))
 	     (c (semanticdb-get-database-tables r))
@@ -160,23 +162,26 @@
 	(while c
 	  (oset (car c) parent-db r)
 	  (setq c (cdr c)))
-	(if (not (inversion-test 'semanticdb-file fv))
-	    (when (inversion-test 'semantic-tag tv)
-	      ;; Incompatible version.  Flush tables.
-	      (semanticdb-flush-database-tables r)
-	      ;; Reset the version to new version.
-	      (oset r semantic-tag-version semantic-tag-version)
-	      ;; Warn user
-	      (message "Semanticdb file is old.  Starting over for %s"
-		       filename)
-	      )
-	  ;; Version is not ok.  Flush whole system
-	  (message "semanticdb file is old.  Starting over for %s"
-		   filename)
-	  ;; This database is so old, we need to replace it.
-	  ;; We also need to delete it from the instance tracker.
-	  (delete-instance r)
-	  (setq r nil))
+	(unless (and (equal semanticdb-file-version fv)
+		     (equal semantic-tag-version tv))
+	  ;; Try not to load inversion unless we need it:
+	  (require 'inversion)
+	  (if (not (inversion-test 'semanticdb-file fv))
+	      (when (inversion-test 'semantic-tag tv)
+		;; Incompatible version.  Flush tables.
+		(semanticdb-flush-database-tables r)
+		;; Reset the version to new version.
+		(oset r semantic-tag-version semantic-tag-version)
+		;; Warn user
+		(message "Semanticdb file is old.  Starting over for %s"
+			 filename))
+	    ;; Version is not ok.  Flush whole system
+	    (message "semanticdb file is old.  Starting over for %s"
+		     filename)
+	    ;; This database is so old, we need to replace it.
+	    ;; We also need to delete it from the instance tracker.
+	    (delete-instance r)
+	    (setq r nil)))
 	r)
     (error (message "Cache Error: [%s] %s, Restart"
 		    filename foo)
@@ -262,6 +267,8 @@
 This variable is set to nil after the first error is encountered
 to prevent overload.")
 
+(declare-function data-debug-insert-thing "data-debug")
+
 (defmethod object-write ((obj semanticdb-table))
   "When writing a table, we have to make sure we deoverlay it first.
 Restore the overlays after writting.
@@ -435,4 +442,4 @@
 
 (provide 'semantic/db-file)
 
-;;; semanticdb-file.el ends here
+;;; semantic/db-file.el ends here