aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/cedet
diff options
context:
space:
mode:
authorJoakim Verona2015-01-11 18:40:21 +0100
committerJoakim Verona2015-01-11 18:40:21 +0100
commitcc7cb20d6abc0f862e5513b24831bba0eaecaa5f (patch)
treeafc2fc05401504aa0c28699dc3bc155c5b0d7f58 /lisp/cedet
parentd972b504f30ff4300ba368940751e8736dddf0b4 (diff)
parent9a57bda31569294ecaf8138a06e5edda9c0d87e3 (diff)
downloademacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.tar.gz
emacs-cc7cb20d6abc0f862e5513b24831bba0eaecaa5f.zip
merge master, fix conflicts
Diffstat (limited to 'lisp/cedet')
-rw-r--r--lisp/cedet/ChangeLog49
-rw-r--r--lisp/cedet/ede.el10
-rw-r--r--lisp/cedet/ede/base.el21
-rw-r--r--lisp/cedet/ede/custom.el4
-rw-r--r--lisp/cedet/ede/proj.el2
-rw-r--r--lisp/cedet/ede/project-am.el8
-rw-r--r--lisp/cedet/ede/speedbar.el8
-rw-r--r--lisp/cedet/semantic.el87
-rw-r--r--lisp/cedet/semantic/bovine/make.el5
-rw-r--r--lisp/cedet/semantic/complete.el4
-rw-r--r--lisp/cedet/semantic/db-ebrowse.el2
-rw-r--r--lisp/cedet/semantic/db-el.el2
-rw-r--r--lisp/cedet/semantic/db-file.el3
-rw-r--r--lisp/cedet/semantic/db-find.el6
-rw-r--r--lisp/cedet/semantic/db-typecache.el2
-rw-r--r--lisp/cedet/semantic/db.el4
-rw-r--r--lisp/cedet/semantic/ede-grammar.el2
-rw-r--r--lisp/cedet/semantic/fw.el19
-rw-r--r--lisp/cedet/semantic/grammar.el9
-rw-r--r--lisp/cedet/semantic/scope.el4
-rw-r--r--lisp/cedet/srecode/compile.el8
-rw-r--r--lisp/cedet/srecode/fields.el2
-rw-r--r--lisp/cedet/srecode/insert.el10
-rw-r--r--lisp/cedet/srecode/map.el2
24 files changed, 168 insertions, 105 deletions
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 367ed9f41c8..5c958350ff0 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,52 @@
12015-01-07 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 Don't use <class> as a variable and don't assume that <class>-list-p is
4 automatically defined.
5
6 * ede/speedbar.el (ede-speedbar-compile-line)
7 (ede-speedbar-get-top-project-for-line):
8 * ede.el (ede-buffer-belongs-to-target-p)
9 (ede-buffer-belongs-to-project-p, ede-build-forms-menu)
10 (ede-add-project-to-global-list):
11 * semantic/db-typecache.el (semanticdb-get-typecache):
12 * semantic/db-file.el (semanticdb-load-database):
13 * semantic/db-el.el (semanticdb-elisp-sym->tag):
14 * semantic/db-ebrowse.el (semanticdb-ebrowse-load-helper):
15 * ede/project-am.el (project-am-preferred-target-type):
16 * ede/proj.el (ede-proj-load):
17 * ede/custom.el (ede-customize-current-target, ede-customize-target):
18 * semantic/ede-grammar.el ("semantic grammar"):
19 * semantic/scope.el (semantic-scope-reset-cache)
20 (semantic-calculate-scope):
21 * srecode/map.el (srecode-map-update-map):
22 * srecode/insert.el (srecode-insert-show-error-report)
23 (srecode-insert-method, srecode-insert-include-lookup)
24 (srecode-insert-method):
25 * srecode/fields.el (srecode-active-template-region):
26 * srecode/compile.el (srecode-flush-active-templates)
27 (srecode-compile-inserter): Don't use <class> as a variable.
28 Use `oref-default' for class slots.
29
30 * semantic/grammar.el (semantic-grammar-eldoc-last-data): New var.
31 (semantic-grammar-eldoc-get-macro-docstring): Use it instead of
32 eldoc-last-data.
33 * semantic/fw.el (semantic-exit-on-input): Use `declare'.
34 (semantic-throw-on-input): Use `with-current-buffer'.
35 * semantic/db.el (semanticdb-abstract-table-list): Define if not
36 pre-defined.
37 * semantic/db-find.el (semanticdb-find-tags-collector):
38 Use save-current-buffer.
39 (semanticdb-find-tags-collector): Don't use <class> as a variable.
40 * semantic/complete.el (semantic-complete-active-default)
41 (semantic-complete-current-matched-tag): Declare.
42 (semantic-complete-inline-custom-type): Don't use <class> as a variable.
43 * semantic/bovine/make.el (semantic-analyze-possible-completions):
44 Use with-current-buffer.
45 * semantic.el (semantic-parser-warnings): Declare.
46 * ede/base.el (ede-target-list): Define if not pre-defined.
47 (ede-with-projectfile): Prefer find-file-noselect over
48 save-window-excursion.
49
12014-12-22 Stefan Monnier <monnier@iro.umontreal.ca> 502014-12-22 Stefan Monnier <monnier@iro.umontreal.ca>
2 51
3 * srecode/srt-mode.el (srecode-macro-help): Use eieio-class-children. 52 * srecode/srt-mode.el (srecode-macro-help): Use eieio-class-children.
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index edf87f640cf..87cfb85b2c2 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -248,12 +248,12 @@ Argument LIST-O-O is the list of objects to choose from."
248 (let ((obj ede-object)) 248 (let ((obj ede-object))
249 (if (consp obj) 249 (if (consp obj)
250 (setq obj (car obj))) 250 (setq obj (car obj)))
251 (and obj (obj-of-class-p obj ede-target)))) 251 (and obj (obj-of-class-p obj 'ede-target))))
252 252
253(defun ede-buffer-belongs-to-project-p () 253(defun ede-buffer-belongs-to-project-p ()
254 "Return non-nil if this buffer belongs to at least one project." 254 "Return non-nil if this buffer belongs to at least one project."
255 (if (or (null ede-object) (consp ede-object)) nil 255 (if (or (null ede-object) (consp ede-object)) nil
256 (obj-of-class-p ede-object-project ede-project))) 256 (obj-of-class-p ede-object-project 'ede-project)))
257 257
258(defun ede-menu-obj-of-class-p (class) 258(defun ede-menu-obj-of-class-p (class)
259 "Return non-nil if some member of `ede-object' is a child of CLASS." 259 "Return non-nil if some member of `ede-object' is a child of CLASS."
@@ -281,7 +281,7 @@ Argument MENU-DEF is the menu definition to use."
281 ;; First, collect the build items from the project 281 ;; First, collect the build items from the project
282 (setq newmenu (append newmenu (ede-menu-items-build obj t))) 282 (setq newmenu (append newmenu (ede-menu-items-build obj t)))
283 ;; Second, declare the current target menu items 283 ;; Second, declare the current target menu items
284 (if (and ede-obj (ede-menu-obj-of-class-p ede-target)) 284 (if (and ede-obj (ede-menu-obj-of-class-p 'ede-target))
285 (while ede-obj 285 (while ede-obj
286 (setq newmenu (append newmenu 286 (setq newmenu (append newmenu
287 (ede-menu-items-build (car ede-obj) t)) 287 (ede-menu-items-build (car ede-obj) t))
@@ -1078,7 +1078,7 @@ On success, return the added project."
1078 (error "No project created to add to master list")) 1078 (error "No project created to add to master list"))
1079 (when (not (eieio-object-p proj)) 1079 (when (not (eieio-object-p proj))
1080 (error "Attempt to add non-object to master project list")) 1080 (error "Attempt to add non-object to master project list"))
1081 (when (not (obj-of-class-p proj ede-project-placeholder)) 1081 (when (not (obj-of-class-p proj 'ede-project-placeholder))
1082 (error "Attempt to add a non-project to the ede projects list")) 1082 (error "Attempt to add a non-project to the ede projects list"))
1083 (add-to-list 'ede-projects proj) 1083 (add-to-list 'ede-projects proj)
1084 proj) 1084 proj)
@@ -1099,6 +1099,8 @@ Flush the dead projects from the project cache."
1099 (ede-delete-project-from-global-list D)) 1099 (ede-delete-project-from-global-list D))
1100 )) 1100 ))
1101 1101
1102(defvar ede--disable-inode) ;Defined in ede/files.el.
1103
1102(defun ede-global-list-sanity-check () 1104(defun ede-global-list-sanity-check ()
1103 "Perform a sanity check to make sure there are no duplicate projects." 1105 "Perform a sanity check to make sure there are no duplicate projects."
1104 (interactive) 1106 (interactive)
diff --git a/lisp/cedet/ede/base.el b/lisp/cedet/ede/base.el
index 9f4fa45ff3a..ce7857b53a3 100644
--- a/lisp/cedet/ede/base.el
+++ b/lisp/cedet/ede/base.el
@@ -159,6 +159,9 @@ and querying them will cause the actual project to get loaded.")
159;; Projects can also affect how EDE works, by changing what appears in 159;; Projects can also affect how EDE works, by changing what appears in
160;; the EDE menu, or how some keys are bound. 160;; the EDE menu, or how some keys are bound.
161;; 161;;
162(unless (fboundp 'ede-target-list-p)
163 (cl-deftype ede-target-list () '(list-of ede-target)))
164
162(defclass ede-project (ede-project-placeholder) 165(defclass ede-project (ede-project-placeholder)
163 ((subproj :initform nil 166 ((subproj :initform nil
164 :type list 167 :type list
@@ -287,16 +290,18 @@ All specific project types must derive from this project."
287;; 290;;
288(defmacro ede-with-projectfile (obj &rest forms) 291(defmacro ede-with-projectfile (obj &rest forms)
289 "For the project in which OBJ resides, execute FORMS." 292 "For the project in which OBJ resides, execute FORMS."
290 `(save-window-excursion 293 (declare (indent 1))
291 (let* ((pf (if (obj-of-class-p ,obj ede-target) 294 (unless (symbolp obj)
292 (ede-target-parent ,obj) 295 (message "Beware! ede-with-projectfile's first arg is copied: %S" obj))
293 ,obj)) 296 `(let* ((pf (if (obj-of-class-p ,obj 'ede-target)
294 (dbka (get-file-buffer (oref pf file)))) 297 (ede-target-parent ,obj)
295 (if (not dbka) (find-file (oref pf file)) 298 ,obj))
296 (switch-to-buffer dbka)) 299 (dbka (get-file-buffer (oref pf file))))
300 (with-current-buffer
301 (if (not dbka) (find-file-noselect (oref pf file))
302 dbka)
297 ,@forms 303 ,@forms
298 (if (not dbka) (kill-buffer (current-buffer)))))) 304 (if (not dbka) (kill-buffer (current-buffer))))))
299(put 'ede-with-projectfile 'lisp-indent-function 1)
300 305
301;;; The EDE persistent cache. 306;;; The EDE persistent cache.
302;; 307;;
diff --git a/lisp/cedet/ede/custom.el b/lisp/cedet/ede/custom.el
index 3cc3a48c27a..a39b4880283 100644
--- a/lisp/cedet/ede/custom.el
+++ b/lisp/cedet/ede/custom.el
@@ -61,7 +61,7 @@
61 "Edit fields of the current target through EIEIO & Custom." 61 "Edit fields of the current target through EIEIO & Custom."
62 (interactive) 62 (interactive)
63 (require 'eieio-custom) 63 (require 'eieio-custom)
64 (if (not (obj-of-class-p ede-object ede-target)) 64 (if (not (obj-of-class-p ede-object 'ede-target))
65 (error "Current file is not part of a target")) 65 (error "Current file is not part of a target"))
66 (ede-customize-target ede-object)) 66 (ede-customize-target ede-object))
67 67
@@ -72,7 +72,7 @@
72 "Edit fields of the current target through EIEIO & Custom. 72 "Edit fields of the current target through EIEIO & Custom.
73OBJ is the target object to customize." 73OBJ is the target object to customize."
74 (require 'eieio-custom) 74 (require 'eieio-custom)
75 (if (and obj (not (obj-of-class-p obj ede-target))) 75 (if (and obj (not (obj-of-class-p obj 'ede-target)))
76 (error "No logical target to customize")) 76 (error "No logical target to customize"))
77 (ede-customize obj)) 77 (ede-customize obj))
78 78
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el
index 1ea16570467..fd789b3857d 100644
--- a/lisp/cedet/ede/proj.el
+++ b/lisp/cedet/ede/proj.el
@@ -297,7 +297,7 @@ for the tree being read in. If ROOTPROJ is nil, then assume that
297the PROJECT being read in is the root project." 297the PROJECT being read in is the root project."
298 (save-excursion 298 (save-excursion
299 (let ((ret (eieio-persistent-read (concat project "Project.ede") 299 (let ((ret (eieio-persistent-read (concat project "Project.ede")
300 ede-proj-project)) 300 'ede-proj-project))
301 (subdirs (directory-files project nil "[^.].*" nil))) 301 (subdirs (directory-files project nil "[^.].*" nil)))
302 (if (not (object-of-class-p ret 'ede-proj-project)) 302 (if (not (object-of-class-p ret 'ede-proj-project))
303 (error "Corrupt project file")) 303 (error "Corrupt project file"))
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 75fd195105f..d0ca8091c90 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -853,13 +853,13 @@ Argument FILE is the file to extract the end directory name from."
853(defun project-am-preferred-target-type (file) 853(defun project-am-preferred-target-type (file)
854 "For FILE, return the preferred type for that file." 854 "For FILE, return the preferred type for that file."
855 (cond ((string-match "\\.texi?\\(nfo\\)$" file) 855 (cond ((string-match "\\.texi?\\(nfo\\)$" file)
856 project-am-texinfo) 856 'project-am-texinfo)
857 ((string-match "\\.[0-9]$" file) 857 ((string-match "\\.[0-9]$" file)
858 project-am-man) 858 'project-am-man)
859 ((string-match "\\.el$" file) 859 ((string-match "\\.el$" file)
860 project-am-lisp) 860 'project-am-lisp)
861 (t 861 (t
862 project-am-program))) 862 'project-am-program)))
863 863
864(defmethod ede-buffer-header-file((this project-am-objectcode) buffer) 864(defmethod ede-buffer-header-file((this project-am-objectcode) buffer)
865 "There are no default header files." 865 "There are no default header files."
diff --git a/lisp/cedet/ede/speedbar.el b/lisp/cedet/ede/speedbar.el
index fc26ec948a2..e08562a3738 100644
--- a/lisp/cedet/ede/speedbar.el
+++ b/lisp/cedet/ede/speedbar.el
@@ -121,9 +121,9 @@ Argument DIR is the directory from which to derive the list of objects."
121 (let ((obj (eieio-speedbar-find-nearest-object))) 121 (let ((obj (eieio-speedbar-find-nearest-object)))
122 (if (not (eieio-object-p obj)) 122 (if (not (eieio-object-p obj))
123 nil 123 nil
124 (cond ((obj-of-class-p obj ede-project) 124 (cond ((obj-of-class-p obj 'ede-project)
125 (project-compile-project obj)) 125 (project-compile-project obj))
126 ((obj-of-class-p obj ede-target) 126 ((obj-of-class-p obj 'ede-target)
127 (project-compile-target obj)) 127 (project-compile-target obj))
128 (t (error "Error in speedbar structure")))))) 128 (t (error "Error in speedbar structure"))))))
129 129
@@ -133,9 +133,9 @@ Argument DIR is the directory from which to derive the list of objects."
133 (let ((obj (eieio-speedbar-find-nearest-object))) 133 (let ((obj (eieio-speedbar-find-nearest-object)))
134 (if (not (eieio-object-p obj)) 134 (if (not (eieio-object-p obj))
135 (error "Error in speedbar or ede structure") 135 (error "Error in speedbar or ede structure")
136 (if (obj-of-class-p obj ede-target) 136 (if (obj-of-class-p obj 'ede-target)
137 (setq obj (ede-target-parent obj))) 137 (setq obj (ede-target-parent obj)))
138 (if (obj-of-class-p obj ede-project) 138 (if (obj-of-class-p obj 'ede-project)
139 obj 139 obj
140 (error "Error in speedbar or ede structure"))))) 140 (error "Error in speedbar or ede structure")))))
141 141
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 7afe67b3207..81a97884554 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -573,6 +573,7 @@ string."
573;; The best way to call the parser from programs is via 573;; The best way to call the parser from programs is via
574;; `semantic-fetch-tags'. This, in turn, uses other internal 574;; `semantic-fetch-tags'. This, in turn, uses other internal
575;; API functions which plug-in parsers can take advantage of. 575;; API functions which plug-in parsers can take advantage of.
576(defvar semantic-parser-warnings)
576 577
577(defun semantic-fetch-tags () 578(defun semantic-fetch-tags ()
578 "Fetch semantic tags from the current buffer. 579 "Fetch semantic tags from the current buffer.
@@ -602,49 +603,49 @@ was marked unparseable, then do nothing, and return the cache."
602 (garbage-collect) 603 (garbage-collect)
603 (cond 604 (cond
604 605
605;;;; Try the incremental parser to do a fast update. 606 ;; Try the incremental parser to do a fast update.
606 ((semantic-parse-tree-needs-update-p) 607 ((semantic-parse-tree-needs-update-p)
607 (setq res (semantic-parse-changes)) 608 (setq res (semantic-parse-changes))
608 (if (semantic-parse-tree-needs-rebuild-p) 609 (if (semantic-parse-tree-needs-rebuild-p)
609 ;; If the partial reparse fails, jump to a full reparse. 610 ;; If the partial reparse fails, jump to a full reparse.
610 (semantic-fetch-tags) 611 (semantic-fetch-tags)
611 ;; Clear the cache of unmatched syntax tokens 612 ;; Clear the cache of unmatched syntax tokens
612 ;; 613 ;;
613 ;; NOTE TO SELF: 614 ;; NOTE TO SELF:
614 ;; 615 ;;
615 ;; Move this into the incremental parser. This is a bug. 616 ;; Move this into the incremental parser. This is a bug.
616 ;; 617 ;;
617 (semantic-clear-unmatched-syntax-cache) 618 (semantic-clear-unmatched-syntax-cache)
618 (run-hook-with-args ;; Let hooks know the updated tags 619 (run-hook-with-args ;; Let hooks know the updated tags
619 'semantic-after-partial-cache-change-hook res)) 620 'semantic-after-partial-cache-change-hook res))
620 (setq semantic--completion-cache nil)) 621 (setq semantic--completion-cache nil))
621 622
622;;;; Parse the whole system. 623 ;; Parse the whole system.
623 ((semantic-parse-tree-needs-rebuild-p) 624 ((semantic-parse-tree-needs-rebuild-p)
624 ;; Use Emacs's built-in progress-reporter (only interactive). 625 ;; Use Emacs's built-in progress-reporter (only interactive).
625 (if noninteractive 626 (if noninteractive
626 (setq res (semantic-parse-region (point-min) (point-max))) 627 (setq res (semantic-parse-region (point-min) (point-max)))
627 (let ((semantic--progress-reporter 628 (let ((semantic--progress-reporter
628 (and (>= (point-max) semantic-minimum-working-buffer-size) 629 (and (>= (point-max) semantic-minimum-working-buffer-size)
629 (eq semantic-working-type 'percent) 630 (eq semantic-working-type 'percent)
630 (make-progress-reporter 631 (make-progress-reporter
631 (semantic-parser-working-message (buffer-name)) 632 (semantic-parser-working-message (buffer-name))
632 0 100)))) 633 0 100))))
633 (setq res (semantic-parse-region (point-min) (point-max))) 634 (setq res (semantic-parse-region (point-min) (point-max)))
634 (if semantic--progress-reporter 635 (if semantic--progress-reporter
635 (progress-reporter-done semantic--progress-reporter)))) 636 (progress-reporter-done semantic--progress-reporter))))
636 637
637 ;; Clear the caches when we see there were no errors. 638 ;; Clear the caches when we see there were no errors.
638 ;; But preserve the unmatched syntax cache and warnings! 639 ;; But preserve the unmatched syntax cache and warnings!
639 (let (semantic-unmatched-syntax-cache 640 (let (semantic-unmatched-syntax-cache
640 semantic-unmatched-syntax-cache-check 641 semantic-unmatched-syntax-cache-check
641 semantic-parser-warnings) 642 semantic-parser-warnings)
642 (semantic-clear-toplevel-cache)) 643 (semantic-clear-toplevel-cache))
643 ;; Set up the new overlays 644 ;; Set up the new overlays
644 (semantic--tag-link-list-to-buffer res) 645 (semantic--tag-link-list-to-buffer res)
645 ;; Set up the cache with the new results 646 ;; Set up the cache with the new results
646 (semantic--set-buffer-cache res) 647 (semantic--set-buffer-cache res)
647 )))) 648 ))))
648 649
649 ;; Always return the current parse tree. 650 ;; Always return the current parse tree.
650 semantic--buffer-cache) 651 semantic--buffer-cache)
diff --git a/lisp/cedet/semantic/bovine/make.el b/lisp/cedet/semantic/bovine/make.el
index 6ba02ee2006..c001a4dab5f 100644
--- a/lisp/cedet/semantic/bovine/make.el
+++ b/lisp/cedet/semantic/bovine/make.el
@@ -178,9 +178,8 @@ This is the same as a regular prototype."
178 makefile-mode (context) 178 makefile-mode (context)
179 "Return a list of possible completions in a Makefile. 179 "Return a list of possible completions in a Makefile.
180Uses default implementation, and also gets a list of filenames." 180Uses default implementation, and also gets a list of filenames."
181 (save-excursion 181 (require 'semantic/analyze/complete)
182 (require 'semantic/analyze/complete) 182 (with-current-buffer (oref context buffer)
183 (set-buffer (oref context buffer))
184 (let* ((normal (semantic-analyze-possible-completions-default context)) 183 (let* ((normal (semantic-analyze-possible-completions-default context))
185 (classes (oref context :prefixclass)) 184 (classes (oref context :prefixclass))
186 (filetags nil)) 185 (filetags nil))
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index f1fbc7538c2..3f726ee56fd 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -188,6 +188,8 @@ Value should be a ... what?")
188 "Default history variable for any unhistoried prompt. 188 "Default history variable for any unhistoried prompt.
189Keeps STRINGS only in the history.") 189Keeps STRINGS only in the history.")
190 190
191(defvar semantic-complete-active-default)
192(defvar semantic-complete-current-matched-tag)
191 193
192(defun semantic-complete-read-tag-engine (collector displayor prompt 194(defun semantic-complete-read-tag-engine (collector displayor prompt
193 default-tag initial-input 195 default-tag initial-input
@@ -1871,7 +1873,7 @@ completion text in ghost text."
1871 (list 'const 1873 (list 'const
1872 :tag doc1 1874 :tag doc1
1873 C))) 1875 C)))
1874 (eieio-build-class-alist semantic-displayor-abstract t)) 1876 (eieio-build-class-alist 'semantic-displayor-abstract t))
1875 ) 1877 )
1876 "Possible options for inline completion displayors. 1878 "Possible options for inline completion displayors.
1877Use this to enable custom editing.") 1879Use this to enable custom editing.")
diff --git a/lisp/cedet/semantic/db-ebrowse.el b/lisp/cedet/semantic/db-ebrowse.el
index 6ed3cdb7eb5..2590dd1208d 100644
--- a/lisp/cedet/semantic/db-ebrowse.el
+++ b/lisp/cedet/semantic/db-ebrowse.el
@@ -192,7 +192,7 @@ is specified by `semanticdb-default-save-directory'."
192If DIRECTORY is found to be defunct, it won't load the DB, and will 192If DIRECTORY is found to be defunct, it won't load the DB, and will
193warn instead." 193warn instead."
194 (if (file-directory-p directory) 194 (if (file-directory-p directory)
195 (semanticdb-create-database semanticdb-project-database-ebrowse 195 (semanticdb-create-database 'semanticdb-project-database-ebrowse
196 directory) 196 directory)
197 (let* ((BF (semanticdb-ebrowse-file-for-directory directory)) 197 (let* ((BF (semanticdb-ebrowse-file-for-directory directory))
198 (BFL (concat BF "-load.el")) 198 (BFL (concat BF "-load.el"))
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index 8b988be77bb..be9ffe31b87 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -225,7 +225,7 @@ TOKTYPE is a hint to the type of tag desired."
225 (semantic-elisp-desymbolify 225 (semantic-elisp-desymbolify
226 ;; FIXME: This only gives the instance slots and ignores the 226 ;; FIXME: This only gives the instance slots and ignores the
227 ;; class-allocated slots. 227 ;; class-allocated slots.
228 (eieio--class-public-a (find-class semanticdb-project-database))) ;; slots ;FIXME: eieio-- 228 (eieio--class-public-a (find-class 'semanticdb-project-database))) ;; slots ;FIXME: eieio--
229 (semantic-elisp-desymbolify (eieio-class-parents sym)) ;; parents 229 (semantic-elisp-desymbolify (eieio-class-parents sym)) ;; parents
230 )) 230 ))
231 ((not toktype) 231 ((not toktype)
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index 5b76d851b1d..0360e0680e7 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -158,7 +158,8 @@ If DIRECTORY doesn't exist, create a new one."
158(defun semanticdb-load-database (filename) 158(defun semanticdb-load-database (filename)
159 "Load the database FILENAME." 159 "Load the database FILENAME."
160 (condition-case foo 160 (condition-case foo
161 (let* ((r (eieio-persistent-read filename semanticdb-project-database-file)) 161 (let* ((r (eieio-persistent-read filename
162 'semanticdb-project-database-file))
162 (c (semanticdb-get-database-tables r)) 163 (c (semanticdb-get-database-tables r))
163 (tv (oref r semantic-tag-version)) 164 (tv (oref r semantic-tag-version))
164 (fv (oref r semanticdb-version)) 165 (fv (oref r semanticdb-version))
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index 08a22fb3b85..dd36cc1a01e 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -1114,7 +1114,7 @@ for backward compatibility.
1114If optional argument BRUTISH is non-nil, then ignore include statements, 1114If optional argument BRUTISH is non-nil, then ignore include statements,
1115and search all tables in this project tree." 1115and search all tables in this project tree."
1116 (let (found match) 1116 (let (found match)
1117 (save-excursion 1117 (save-current-buffer
1118 ;; If path is a buffer, set ourselves up in that buffer 1118 ;; If path is a buffer, set ourselves up in that buffer
1119 ;; so that the override methods work correctly. 1119 ;; so that the override methods work correctly.
1120 (when (bufferp path) (set-buffer path)) 1120 (when (bufferp path) (set-buffer path))
@@ -1127,7 +1127,7 @@ and search all tables in this project tree."
1127 ;; databases and not associated with a file. 1127 ;; databases and not associated with a file.
1128 (unless (and find-file-match 1128 (unless (and find-file-match
1129 (obj-of-class-p 1129 (obj-of-class-p
1130 (car tableandtags) semanticdb-search-results-table)) 1130 (car tableandtags) 'semanticdb-search-results-table))
1131 (when (setq match (funcall function 1131 (when (setq match (funcall function
1132 (car tableandtags) (cdr tableandtags))) 1132 (car tableandtags) (cdr tableandtags)))
1133 (when find-file-match 1133 (when find-file-match
@@ -1144,7 +1144,7 @@ and search all tables in this project tree."
1144 ;; `semanticdb-search-results-table', since those are system 1144 ;; `semanticdb-search-results-table', since those are system
1145 ;; databases and not associated with a file. 1145 ;; databases and not associated with a file.
1146 (unless (and find-file-match 1146 (unless (and find-file-match
1147 (obj-of-class-p table semanticdb-search-results-table)) 1147 (obj-of-class-p table 'semanticdb-search-results-table))
1148 (when (and table (setq match (funcall function table nil))) 1148 (when (and table (setq match (funcall function table nil)))
1149 (semanticdb-find-log-activity table match) 1149 (semanticdb-find-log-activity table match)
1150 (when find-file-match 1150 (when find-file-match
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index eb00a57cddd..723b7bd28bc 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -180,7 +180,7 @@ If there is no table, create one, and fill it in."
180(defmethod semanticdb-get-typecache ((db semanticdb-project-database)) 180(defmethod semanticdb-get-typecache ((db semanticdb-project-database))
181 "Retrieve the typecache from the semantic database DB. 181 "Retrieve the typecache from the semantic database DB.
182If there is no table, create one, and fill it in." 182If there is no table, create one, and fill it in."
183 (semanticdb-cache-get db semanticdb-database-typecache) 183 (semanticdb-cache-get db 'semanticdb-database-typecache)
184 ) 184 )
185 185
186 186
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index 43e5e5b435b..b2c1252c502 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -330,6 +330,10 @@ Adds the number of tags in this file to the object print name."
330 330
331;;; DATABASE BASE CLASS 331;;; DATABASE BASE CLASS
332;; 332;;
333(unless (fboundp 'semanticdb-abstract-table-list-p)
334 (cl-deftype semanticdb-abstract-table-list ()
335 '(list-of semanticdb-abstract-table)))
336
333(defclass semanticdb-project-database (eieio-instance-tracker) 337(defclass semanticdb-project-database (eieio-instance-tracker)
334 ((tracking-symbol :initform semanticdb-database-list) 338 ((tracking-symbol :initform semanticdb-database-list)
335 (reference-directory :type string 339 (reference-directory :type string
diff --git a/lisp/cedet/semantic/ede-grammar.el b/lisp/cedet/semantic/ede-grammar.el
index dc3dfa7f55a..67f0cfeea6d 100644
--- a/lisp/cedet/semantic/ede-grammar.el
+++ b/lisp/cedet/semantic/ede-grammar.el
@@ -213,7 +213,7 @@ Argument THIS is the target that should insert stuff."
213;; "Target class for Emacs/Semantic grammar files." nil nil) 213;; "Target class for Emacs/Semantic grammar files." nil nil)
214 214
215(ede-proj-register-target "semantic grammar" 215(ede-proj-register-target "semantic grammar"
216 semantic-ede-proj-target-grammar) 216 'semantic-ede-proj-target-grammar)
217 217
218(provide 'semantic/ede-grammar) 218(provide 'semantic/ede-grammar)
219 219
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 56adf3a6e81..a0c36944d48 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -378,11 +378,11 @@ If FORMS includes a call to `semantic-throw-on-input', then
378if a user presses any key during execution, this form macro 378if a user presses any key during execution, this form macro
379will exit with the value passed to `semantic-throw-on-input'. 379will exit with the value passed to `semantic-throw-on-input'.
380If FORMS completes, then the return value is the same as `progn'." 380If FORMS completes, then the return value is the same as `progn'."
381 (declare (indent 1))
381 `(let ((semantic-current-input-throw-symbol ,symbol) 382 `(let ((semantic-current-input-throw-symbol ,symbol)
382 (semantic--on-input-start-marker (point-marker))) 383 (semantic--on-input-start-marker (point-marker)))
383 (catch ,symbol 384 (catch ,symbol
384 ,@forms))) 385 ,@forms)))
385(put 'semantic-exit-on-input 'lisp-indent-function 1)
386 386
387(defmacro semantic-throw-on-input (from) 387(defmacro semantic-throw-on-input (from)
388 "Exit with `throw' when in `semantic-exit-on-input' on user input. 388 "Exit with `throw' when in `semantic-exit-on-input' on user input.
@@ -391,15 +391,14 @@ to pass to `throw'. It is recommended to use the name of the function
391calling this one." 391calling this one."
392 `(when (and semantic-current-input-throw-symbol 392 `(when (and semantic-current-input-throw-symbol
393 (or (input-pending-p) 393 (or (input-pending-p)
394 (save-excursion 394 (with-current-buffer
395 ;; Timers might run during accept-process-output. 395 ;; Timers might run during accept-process-output.
396 ;; If they redisplay, point must be where the user 396 ;; If they redisplay, point must be where the user
397 ;; expects. (Bug#15045) 397 ;; expects. (Bug#15045)
398 (set-buffer (marker-buffer 398 (marker-buffer semantic--on-input-start-marker)
399 semantic--on-input-start-marker)) 399 (save-excursion
400 (goto-char (marker-position 400 (goto-char semantic--on-input-start-marker)
401 semantic--on-input-start-marker)) 401 (accept-process-output)))))
402 (accept-process-output))))
403 (throw semantic-current-input-throw-symbol ,from))) 402 (throw semantic-current-input-throw-symbol ,from)))
404 403
405 404
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index fc62b221665..7a92a12ed53 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -1665,13 +1665,14 @@ Select the buffer containing the tag's definition, and move point there."
1665(declare-function eldoc-get-fnsym-args-string "eldoc") 1665(declare-function eldoc-get-fnsym-args-string "eldoc")
1666(declare-function eldoc-get-var-docstring "eldoc") 1666(declare-function eldoc-get-var-docstring "eldoc")
1667 1667
1668(defvar semantic-grammar-eldoc-last-data (cons nil nil))
1669
1668(defun semantic-grammar-eldoc-get-macro-docstring (macro expander) 1670(defun semantic-grammar-eldoc-get-macro-docstring (macro expander)
1669 "Return a one-line docstring for the given grammar MACRO. 1671 "Return a one-line docstring for the given grammar MACRO.
1670EXPANDER is the name of the function that expands MACRO." 1672EXPANDER is the name of the function that expands MACRO."
1671 (require 'eldoc) 1673 (require 'eldoc)
1672 (if (and (eq expander (aref eldoc-last-data 0)) 1674 (if (eq expander (car semantic-grammar-eldoc-last-data))
1673 (eq 'function (aref eldoc-last-data 2))) 1675 (cdr semantic-grammar-eldoc-last-data)
1674 (aref eldoc-last-data 1)
1675 (let ((doc (help-split-fundoc (documentation expander t) expander))) 1676 (let ((doc (help-split-fundoc (documentation expander t) expander)))
1676 (cond 1677 (cond
1677 (doc 1678 (doc
@@ -1684,7 +1685,7 @@ EXPANDER is the name of the function that expands MACRO."
1684 (setq doc 1685 (setq doc
1685 (eldoc-docstring-format-sym-doc 1686 (eldoc-docstring-format-sym-doc
1686 macro (format "==> %s %s" expander doc) 'default)) 1687 macro (format "==> %s %s" expander doc) 'default))
1687 (eldoc-last-data-store expander doc 'function)) 1688 (setq semantic-grammar-eldoc-last-data (cons expander doc)))
1688 doc))) 1689 doc)))
1689 1690
1690(define-mode-local-override semantic-idle-summary-current-symbol-info 1691(define-mode-local-override semantic-idle-summary-current-symbol-info
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el
index 2c0dea20107..c56cbc3c126 100644
--- a/lisp/cedet/semantic/scope.el
+++ b/lisp/cedet/semantic/scope.el
@@ -134,7 +134,7 @@ Saves scoping information between runs of the analyzer.")
134 "Get the current cached scope, and reset it." 134 "Get the current cached scope, and reset it."
135 (when semanticdb-current-table 135 (when semanticdb-current-table
136 (let ((co (semanticdb-cache-get semanticdb-current-table 136 (let ((co (semanticdb-cache-get semanticdb-current-table
137 semantic-scope-cache))) 137 'semantic-scope-cache)))
138 (semantic-reset co)))) 138 (semantic-reset co))))
139 139
140(defmethod semantic-scope-set-typecache ((cache semantic-scope-cache) 140(defmethod semantic-scope-set-typecache ((cache semantic-scope-cache)
@@ -706,7 +706,7 @@ The class returned from the scope calculation is variable
706 (let* ((TAG (semantic-current-tag)) 706 (let* ((TAG (semantic-current-tag))
707 (scopecache 707 (scopecache
708 (semanticdb-cache-get semanticdb-current-table 708 (semanticdb-cache-get semanticdb-current-table
709 semantic-scope-cache)) 709 'semantic-scope-cache))
710 ) 710 )
711 (when (not (semantic-equivalent-tag-p TAG (oref scopecache tag))) 711 (when (not (semantic-equivalent-tag-p TAG (oref scopecache tag)))
712 (semantic-reset scopecache)) 712 (semantic-reset scopecache))
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index d899b42b1e1..782121ef5b5 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -87,10 +87,10 @@ for push, pop, and peek for the active template.")
87Useful if something goes wrong in SRecode, and the active template 87Useful if something goes wrong in SRecode, and the active template
88stack is broken." 88stack is broken."
89 (interactive) 89 (interactive)
90 (if (oref srecode-template active) 90 (if (oref-default 'srecode-template active)
91 (when (y-or-n-p (format "%d active templates. Flush? " 91 (when (y-or-n-p (format "%d active templates. Flush? "
92 (length (oref srecode-template active)))) 92 (length (oref-default 'srecode-template active))))
93 (oset-default srecode-template active nil)) 93 (oset-default 'srecode-template active nil))
94 (message "No active templates to flush.")) 94 (message "No active templates to flush."))
95 ) 95 )
96 96
@@ -514,7 +514,7 @@ to the inserter constructor."
514 ;;(message "Compile: %s %S" name props) 514 ;;(message "Compile: %s %S" name props)
515 (if (not key) 515 (if (not key)
516 (apply 'srecode-template-inserter-variable name props) 516 (apply 'srecode-template-inserter-variable name props)
517 (let ((classes (eieio-class-children srecode-template-inserter)) 517 (let ((classes (eieio-class-children 'srecode-template-inserter))
518 (new nil)) 518 (new nil))
519 ;; Loop over the various subclasses and 519 ;; Loop over the various subclasses and
520 ;; create the correct inserter. 520 ;; create the correct inserter.
diff --git a/lisp/cedet/srecode/fields.el b/lisp/cedet/srecode/fields.el
index 20852f78b41..f473a0d8261 100644
--- a/lisp/cedet/srecode/fields.el
+++ b/lisp/cedet/srecode/fields.el
@@ -237,7 +237,7 @@ If SET-TO is a string, then replace the text of OLAID wit SET-TO."
237 237
238(defsubst srecode-active-template-region () 238(defsubst srecode-active-template-region ()
239 "Return the active region for template fields." 239 "Return the active region for template fields."
240 (oref srecode-template-inserted-region active-region)) 240 (oref-default 'srecode-template-inserted-region active-region))
241 241
242(defun srecode-field-post-command () 242(defun srecode-field-post-command ()
243 "Srecode field handler in the post command hook." 243 "Srecode field handler in the post command hook."
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index f1f23bc6f1d..78ec1658859 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -211,7 +211,7 @@ insertions."
211 (propertize " (most recent at bottom)" 'face '(:slant italic)) 211 (propertize " (most recent at bottom)" 'face '(:slant italic))
212 ":\n") 212 ":\n")
213 (data-debug-insert-stuff-list 213 (data-debug-insert-stuff-list
214 (reverse (oref srecode-template active)) "> ") 214 (reverse (oref-default 'srecode-template active)) "> ")
215 ;; Show the current dictionary. 215 ;; Show the current dictionary.
216 (insert (propertize "Dictionary" 'face '(:weight bold)) "\n") 216 (insert (propertize "Dictionary" 'face '(:weight bold)) "\n")
217 (data-debug-insert-thing dictionary "" "> ") 217 (data-debug-insert-thing dictionary "" "> ")
@@ -396,7 +396,7 @@ Specify the :blank argument to enable this inserter.")
396 (pm (point-marker))) 396 (pm (point-marker)))
397 (when (and inbuff 397 (when (and inbuff
398 ;; Don't do this if we are not the active template. 398 ;; Don't do this if we are not the active template.
399 (= (length (oref srecode-template active)) 1)) 399 (= (length (oref-default 'srecode-template active)) 1))
400 400
401 (when (and (eq i t) inbuff (not (eq (oref sti where) 'begin))) 401 (when (and (eq i t) inbuff (not (eq (oref sti where) 'begin)))
402 (indent-according-to-mode) 402 (indent-according-to-mode)
@@ -773,7 +773,7 @@ generalized marker will do something else. See
773 ;; valid. Compare this to the actual template nesting depth and 773 ;; valid. Compare this to the actual template nesting depth and
774 ;; maybe use the override function which is stored in the cdr. 774 ;; maybe use the override function which is stored in the cdr.
775 (if (and srecode-template-inserter-point-override 775 (if (and srecode-template-inserter-point-override
776 (<= (length (oref srecode-template active)) 776 (<= (length (oref-default 'srecode-template active))
777 (car srecode-template-inserter-point-override))) 777 (car srecode-template-inserter-point-override)))
778 ;; Disable the old override while we do this. 778 ;; Disable the old override while we do this.
779 (let ((over (cdr srecode-template-inserter-point-override)) 779 (let ((over (cdr srecode-template-inserter-point-override))
@@ -943,7 +943,7 @@ this template instance."
943 ;; Calculate and store the discovered template 943 ;; Calculate and store the discovered template
944 (let ((tmpl (srecode-template-get-table (srecode-table) 944 (let ((tmpl (srecode-template-get-table (srecode-table)
945 templatenamepart)) 945 templatenamepart))
946 (active (oref srecode-template active)) 946 (active (oref-default 'srecode-template active))
947 ctxt) 947 ctxt)
948 (when (not tmpl) 948 (when (not tmpl)
949 ;; If it isn't just available, scan back through 949 ;; If it isn't just available, scan back through
@@ -1053,7 +1053,7 @@ template where a ^ inserter occurs."
1053 (lexical-let ((inserter1 sti)) 1053 (lexical-let ((inserter1 sti))
1054 (cons 1054 (cons
1055 ;; DEPTH 1055 ;; DEPTH
1056 (+ (length (oref srecode-template active)) 1) 1056 (+ (length (oref-default 'srecode-template active)) 1)
1057 ;; FUNCTION 1057 ;; FUNCTION
1058 (lambda (dict) 1058 (lambda (dict)
1059 (let ((srecode-template-inserter-point-override nil)) 1059 (let ((srecode-template-inserter-point-override nil))
diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el
index 7224d5942f6..cc0c4ae4427 100644
--- a/lisp/cedet/srecode/map.el
+++ b/lisp/cedet/srecode/map.el
@@ -298,7 +298,7 @@ if that file is NEW, otherwise assume the mode has not changed."
298 (when (not srecode-current-map) 298 (when (not srecode-current-map)
299 (condition-case nil 299 (condition-case nil
300 (setq srecode-current-map 300 (setq srecode-current-map
301 (eieio-persistent-read srecode-map-save-file srecode-map)) 301 (eieio-persistent-read srecode-map-save-file 'srecode-map))
302 (error 302 (error
303 ;; There was an error loading the old map. Create a new one. 303 ;; There was an error loading the old map. Create a new one.
304 (setq srecode-current-map 304 (setq srecode-current-map