summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Engster <dengste@eml.cc>2012-10-25 22:13:16 +0200
committerDavid Engster <dengste@eml.cc>2012-10-25 22:13:16 +0200
commit3f2a848dbeb297cdadfc9dd3cff71bab24679b92 (patch)
tree3641e34f25caf6b5a6eca8537afdd24ee074c6a3
parentaaabfc8b2744aabe00b9fc97eaca59940b5afdeb (diff)
Merge CEDET upstream.
* emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression): Removed. This feature is already integrated in imenu. * emacs-lisp/eieio-opt.el: Remove require for `button' since it is always loaded. Require `speedbar' unconditionally. * semantic/analyze.el (semantic-analyze-dereference-alias): New function to dereference aliases. (semantic-analyze-current-context-default): Use it. * semantic/grammar.el (semantic-grammar-create-package): * srecode/compile.el (srecode-compile-templates): Throw a proper error if semantic-mode is not enabled (bug#9968). Compiler warning fixes: * semantic.el (semantic-elapsed-time): Make it a defsubst. * srecode/dictionary.el (srecode-adebug-dictionary): Remove require for `semantic'. * srecode/map.el: * srecode/insert.el: Declare functions from `data-debug'. * semantic/grammar.el: Require `help-fns'. Declare functions from `eldoc', which is required in function body. * srecode/java.el: * semantic/texi.el: * semantic/grammar-wy.el: * semantic/db-file.el: * semantic/db-el.el: * semantic/chart.el: Fix requires. * ede/locate.el: Remove useless requires. Declare functions instead and require in functions when needed.
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/cedet/ChangeLog33
-rw-r--r--lisp/cedet/ede/locate.el30
-rw-r--r--lisp/cedet/semantic.el2
-rw-r--r--lisp/cedet/semantic/analyze.el34
-rw-r--r--lisp/cedet/semantic/chart.el5
-rw-r--r--lisp/cedet/semantic/db-el.el7
-rw-r--r--lisp/cedet/semantic/db-file.el5
-rw-r--r--lisp/cedet/semantic/grammar-wy.el5
-rw-r--r--lisp/cedet/semantic/grammar.el12
-rw-r--r--lisp/cedet/semantic/texi.el10
-rw-r--r--lisp/cedet/srecode/compile.el2
-rw-r--r--lisp/cedet/srecode/dictionary.el1
-rw-r--r--lisp/cedet/srecode/insert.el4
-rw-r--r--lisp/cedet/srecode/java.el5
-rw-r--r--lisp/cedet/srecode/map.el3
-rw-r--r--lisp/emacs-lisp/eieio-opt.el8
-rw-r--r--lisp/emacs-lisp/eieio.el23
18 files changed, 124 insertions, 73 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ea75d3774a..188cd9ce94 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2012-10-25 David Engster <deng@randomsample.de>
+
+ * emacs-lisp/eieio.el (eieio-update-lisp-imenu-expression):
+ Removed. This feature is already integrated in imenu.
+
+ * emacs-lisp/eieio-opt.el: Remove require for `button' since it is
+ always loaded. Require `speedbar' unconditionally.
+
2012-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
* dired.el (dired-get-marked-files): Allow ! on . and .. (bug#12725).
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 7656248cac..6f2669e9fe 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,36 @@
+2012-10-25 David Engster <deng@randomsample.de>
+
+ * semantic/analyze.el (semantic-analyze-dereference-alias): New
+ function to dereference aliases.
+ (semantic-analyze-current-context-default): Use it.
+
+ * semantic/grammar.el (semantic-grammar-create-package):
+ * srecode/compile.el (srecode-compile-templates): Throw a proper
+ error if semantic-mode is not enabled (bug#9968).
+
+ Compiler warning fixes:
+
+ * semantic.el (semantic-elapsed-time): Make it a defsubst.
+
+ * srecode/dictionary.el (srecode-adebug-dictionary): Remove
+ require for `semantic'.
+
+ * srecode/map.el:
+ * srecode/insert.el: Declare functions from `data-debug'.
+
+ * semantic/grammar.el: Require `help-fns'. Declare functions from
+ `eldoc', which is required in function body.
+
+ * srecode/java.el:
+ * semantic/texi.el:
+ * semantic/grammar-wy.el:
+ * semantic/db-file.el:
+ * semantic/db-el.el:
+ * semantic/chart.el: Fix requires.
+
+ * ede/locate.el: Remove useless requires. Declare functions
+ instead and require in functions when needed.
+
2012-10-23 Stefan Monnier <monnier@iro.umontreal.ca>
* semantic/db-file.el (semanticdb-save-database-functions):
diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el
index c008f5fb94..03227907af 100644
--- a/lisp/cedet/ede/locate.el
+++ b/lisp/cedet/ede/locate.el
@@ -49,13 +49,7 @@
;; when it is available.
(require 'ede)
-(eval-when-compile (require 'data-debug)
- (require 'eieio-datadebug)
- (require 'cedet-global)
- (require 'cedet-idutils)
- (require 'cedet-cscope))
-
-(require 'locate)
+(eval-when-compile (require 'locate))
;;; Code:
(defcustom ede-locate-setup-options
@@ -214,6 +208,12 @@ that created this EDE locate object."
;;; GLOBAL
;;
+
+(declare-function cedet-gnu-global-version-check "cedet-global")
+(declare-function cedet-gnu-global-root "cedet-global")
+(declare-function cedet-gnu-global-expand-filename "cedet-global")
+(declare-function cedet-gnu-global-create/update-database "cedet-global")
+
(defclass ede-locate-global (ede-locate-base)
()
"EDE Locator using GNU Global.
@@ -260,6 +260,12 @@ that created this EDE locate object."
;;; IDUTILS
;;
+
+(declare-function cedet-idutils-version-check "cedet-idutils")
+(declare-function cedet-idutils-support-for-directory "cedet-idutils")
+(declare-function cedet-idutils-expand-filename "cedet-idutils")
+(declare-function cedet-idutils-create/update-database "cedet-idutils")
+
(defclass ede-locate-idutils (ede-locate-base)
()
"EDE Locator using IDUtils.
@@ -303,6 +309,12 @@ that created this EDE locate object."
;;; CSCOPE
;;
+
+(declare-function cedet-cscope-version-check "cedet-scope")
+(declare-function cedet-cscope-support-for-directory "cedet-scope")
+(declare-function cedet-cscope-expand-filename "cedet-cscope")
+(declare-function cedet-cscope-create/update-database "cedet-cscope")
+
(defclass ede-locate-cscope (ede-locate-base)
()
"EDE Locator using Cscope.
@@ -315,6 +327,7 @@ file name searching variable `cedet-cscope-file-command'.")
;; Get ourselves initialized.
(call-next-method)
;; Do the checks.
+ (require 'cedet-cscope)
(cedet-cscope-version-check)
(when (not (cedet-cscope-support-for-directory (oref loc root)))
(error "Cannot use Cscope in %s"
@@ -324,6 +337,7 @@ file name searching variable `cedet-cscope-file-command'.")
(defmethod ede-locate-ok-in-project :static ((loc ede-locate-cscope)
root)
"Is it ok to use this project type under ROOT."
+ (require 'cedet-cscope)
(cedet-cscope-version-check)
(when (cedet-cscope-support-for-directory root)
root))
@@ -334,11 +348,13 @@ file name searching variable `cedet-cscope-file-command'.")
Searches are done under the current root of the EDE project
that created this EDE locate object."
(let ((default-directory (oref loc root)))
+ (require 'cedet-cscope)
(cedet-cscope-expand-filename filesubstring)))
(defmethod ede-locate-create/update-root-database :STATIC
((loc ede-locate-cscope) root)
"Create or update the GNU Global database for the current project."
+ (require 'cedet-cscope)
(cedet-cscope-create/update-database root))
(provide 'ede/locate)
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 373864a43d..01d3206f66 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -382,7 +382,7 @@ to use Semantic, and `semantic-init-hook' is run."
"When non-nil, activate the interactive parsing debugger.
Do not set this yourself. Call `semantic-debug'.")
-(defun semantic-elapsed-time (start end)
+(defsubst semantic-elapsed-time (start end)
"Copied from elp.el. Was `elp-elapsed-time'.
Arguments START and END bound the time being calculated."
(float-time (time-subtract end start)))
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 63acc55534..d03c72a598 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -527,7 +527,7 @@ Returns an object based on symbol `semantic-analyze-context'."
(function nil)
(fntag nil)
arg fntagend argtag
- assign asstag
+ assign asstag newseq
)
;; Pattern for Analysis:
@@ -601,16 +601,26 @@ Returns an object based on symbol `semantic-analyze-context'."
(if debug-on-error
(catch 'unfindable
- ;; If debug on error is on, allow debugging in this fcn.
(setq prefix (semantic-analyze-find-tag-sequence
- prefix scope 'prefixtypes 'unfindable)))
+ prefix scope 'prefixtypes 'unfindable))
+ ;; If there's an alias, dereference it and analyze
+ ;; sequence again.
+ (when (setq newseq
+ (semantic-analyze-dereference-alias prefix))
+ (setq prefix (semantic-analyze-find-tag-sequence
+ newseq scope 'prefixtypes 'unfindable))))
;; Debug on error is off. Capture errors and move on
(condition-case err
;; NOTE: This line is duplicated in
;; semantic-analyzer-debug-global-symbol
;; You will need to update both places.
- (setq prefix (semantic-analyze-find-tag-sequence
- prefix scope 'prefixtypes))
+ (progn
+ (setq prefix (semantic-analyze-find-tag-sequence
+ prefix scope 'prefixtypes))
+ (when (setq newseq
+ (semantic-analyze-dereference-alias prefix))
+ (setq prefix (semantic-analyze-find-tag-sequence
+ newseq scope 'prefixtypes))))
(error (semantic-analyze-push-error err))))
)
@@ -679,6 +689,20 @@ Returns an object based on symbol `semantic-analyze-context'."
;; Return our context.
context-return))
+(defun semantic-analyze-dereference-alias (taglist)
+ "Dereference first tag in TAGLIST if it is an alias.
+Returns a sequence of names which can then be fed again into
+`semantic-analyze-find-tag-sequence'.
+Returns nil if no alias was found."
+ (when (eq (semantic-tag-get-attribute (car taglist) :kind) 'alias)
+ (let ((tagname
+ (semantic-analyze-split-name
+ (semantic-tag-name
+ (car (semantic-tag-get-attribute (car taglist) :members))))))
+ (append (if (listp tagname)
+ tagname
+ (list tagname))
+ (cdr taglist)))))
(defun semantic-adebug-analyze (&optional ctxt)
"Perform `semantic-analyze-current-context'.
diff --git a/lisp/cedet/semantic/chart.el b/lisp/cedet/semantic/chart.el
index c6b1347586..2c6f7344ac 100644
--- a/lisp/cedet/semantic/chart.el
+++ b/lisp/cedet/semantic/chart.el
@@ -26,12 +26,9 @@
;; the output of the semantic parser.
;;
-(require 'semantic)
(require 'chart)
(require 'semantic/db)
-(require 'semantic/tag)
-
-(eval-when-compile (require 'semantic/find))
+(require 'semantic/find)
;;; Code:
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el
index 281479045e..dbb3bfae34 100644
--- a/lisp/cedet/semantic/db-el.el
+++ b/lisp/cedet/semantic/db-el.el
@@ -31,12 +31,7 @@
;;
(require 'semantic/db)
-
-(eval-when-compile
- ;; For generic function searching.
- (require 'eieio)
- (require 'eieio-opt)
- (require 'eieio-base))
+(require 'eieio-opt)
(declare-function semantic-elisp-desymbolify "semantic/bovine/el")
(declare-function semantic-tag-similar-p "semantic/tag-ls")
diff --git a/lisp/cedet/semantic/db-file.el b/lisp/cedet/semantic/db-file.el
index 4f8e93dc39..905c62a89d 100644
--- a/lisp/cedet/semantic/db-file.el
+++ b/lisp/cedet/semantic/db-file.el
@@ -25,12 +25,9 @@
;; A set of semanticdb classes for persistently saving caches on disk.
;;
-(require 'semantic)
(require 'semantic/db)
(require 'cedet-files)
-
-(eval-when-compile
- (require 'data-debug))
+(require 'data-debug)
(defvar semanticdb-file-version semantic-version
"Version of semanticdb we are writing files to disk with.")
diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grammar-wy.el
index 8a33c8c8a1..a926f636b4 100644
--- a/lisp/cedet/semantic/grammar-wy.el
+++ b/lisp/cedet/semantic/grammar-wy.el
@@ -23,9 +23,8 @@
;;; Code:
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-
+(require 'semantic)
+
;;; Prologue
;;
(defvar semantic-grammar-lex-c-char-re)
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index b85396a79a..c0e7b8f903 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -35,6 +35,7 @@
(require 'semantic/format)
(require 'semantic/grammar-wy)
(require 'semantic/idle)
+(require 'help-fns)
(declare-function semantic-momentary-highlight-tag "semantic/decorate")
(declare-function semantic-analyze-context "semantic/analyze")
@@ -47,6 +48,9 @@
(require 'semantic/find)
(require 'semantic/db))
+(declare-function semantic-grammar-wy--install-parser
+ "semantic/gram-wy-fallback")
+
;;;;
;;;; Set up lexer
@@ -825,6 +829,8 @@ Does nothing if the Lisp code seems up to date.
If optional argument FORCE is non-nil, unconditionally re-generate the
Lisp code."
(interactive "P")
+ (unless (semantic-active-p)
+ (error "You have to activate semantic-mode to create a package."))
(setq force (or force current-prefix-arg))
(semantic-fetch-tags)
(let* (
@@ -1636,6 +1642,12 @@ Select the buffer containing the tag's definition, and move point there."
)
"Association of syntax elements, and the corresponding help.")
+(declare-function eldoc-function-argstring "eldoc")
+(declare-function eldoc-docstring-format-sym-doc "eldoc")
+(declare-function eldoc-last-data-store "eldoc")
+(declare-function eldoc-get-fnsym-args-string "eldoc")
+(declare-function eldoc-get-var-docstring "eldoc")
+
(defun semantic-grammar-eldoc-get-macro-docstring (macro expander)
"Return a one-line docstring for the given grammar MACRO.
EXPANDER is the name of the function that expands MACRO."
diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el
index 9380940282..d79e71bb26 100644
--- a/lisp/cedet/semantic/texi.el
+++ b/lisp/cedet/semantic/texi.el
@@ -26,17 +26,11 @@
;; parser plug-in is the function `semantic-texi-parse-region' that
;; overrides `semantic-parse-region'.
-(require 'semantic)
+(require 'semantic/db-find)
(require 'semantic/format)
+(require 'semantic/ctxt)
(require 'texinfo)
-(eval-when-compile
- (require 'semantic/db)
- (require 'semantic/db-find)
- (require 'semantic/ctxt)
- (require 'semantic/find)
- (require 'semantic/doc))
-
(defvar ede-minor-mode)
(declare-function lookup-words "ispell")
(declare-function ede-current-project "ede")
diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el
index 8a1291f8d7..8457e35abe 100644
--- a/lisp/cedet/srecode/compile.el
+++ b/lisp/cedet/srecode/compile.el
@@ -199,6 +199,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use."
(defun srecode-compile-templates ()
"Compile a semantic recode template file into a mode-local variable."
(interactive)
+ (unless (semantic-active-p)
+ (error "You have to activate semantic-mode to compile SRecode templates."))
(require 'srecode/insert)
(message "Compiling template %s..."
(file-name-nondirectory (buffer-file-name)))
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index 6262383c39..2b6bbb51ea 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -604,7 +604,6 @@ STATE is the current compiler state."
"Run data-debug on this mode's dictionary."
(interactive)
(require 'eieio-datadebug)
- (require 'semantic)
(require 'srecode/find)
(let* ((modesym major-mode)
(start (current-time))
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 726aa41cff..f099c0ca6e 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -195,6 +195,10 @@ Buffer based features related to change hooks is handled one level up."
;; area. Return value is not important.
))
+(declare-function data-debug-new-buffer "data-debug")
+(declare-function data-debug-insert-stuff-list "data-debug")
+(declare-function data-debug-insert-thing dictionary "data-debug")
+
(defun srecode-insert-show-error-report (dictionary format &rest args)
"Display an error report based on DICTIONARY, FORMAT and ARGS.
This is intended to diagnose problems with failed template
diff --git a/lisp/cedet/srecode/java.el b/lisp/cedet/srecode/java.el
index 3635a39d38..43e9273da7 100644
--- a/lisp/cedet/srecode/java.el
+++ b/lisp/cedet/srecode/java.el
@@ -26,10 +26,7 @@
;;; Code:
(require 'srecode/dictionary)
-(require 'semantic/tag)
-
-(eval-when-compile
- (require 'semantic/find))
+(require 'semantic/find)
;;;###autoload
(defun srecode-semantic-handle-:java (dict)
diff --git a/lisp/cedet/srecode/map.el b/lisp/cedet/srecode/map.el
index d6613ee1b0..7fb5c16a1f 100644
--- a/lisp/cedet/srecode/map.el
+++ b/lisp/cedet/srecode/map.el
@@ -215,7 +215,8 @@ Optional argument RESET forces a reset of the current map."
;; Eventually, I want to return many maps to search through.
(list srecode-current-map)))
-(eval-when-compile (require 'data-debug))
+(declare-function data-debug-new-buffer "data-debug")
+(declare-function data-debug-insert-stuff-list "data-debug")
(defun srecode-adebug-maps ()
"Run ADEBUG on the output of `srecode-get-maps'."
diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index 64b240b9d5..c8bdd7758f 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -29,9 +29,9 @@
;;
(require 'eieio)
-(require 'button)
-(require 'help-mode)
(require 'find-func)
+(require 'speedbar)
+(require 'help-mode)
;;; Code:
;;;###autoload
@@ -710,10 +710,6 @@ Arguments UNUSED are not used."
;;; SPEEDBAR SUPPORT
;;
-(eval-when-compile
- (condition-case nil
- (require 'speedbar)
- (error (message "Error loading speedbar... ignored"))))
(defvar eieio-class-speedbar-key-map nil
"Keymap used when working with a project in speedbar.")
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 608134bd54..3f7b49bde2 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -3049,29 +3049,6 @@ Optional argument NOESCAPE is passed to `prin1-to-string' when appropriate."
)
)
-;;; Interfacing with imenu in emacs lisp mode
-;; (Only if the expression is defined)
-;;
-(if (eval-when-compile (boundp 'lisp-imenu-generic-expression))
-(progn
-
-(defun eieio-update-lisp-imenu-expression ()
- "Examine `lisp-imenu-generic-expression' and modify it to find `defmethod'."
- (let ((exp lisp-imenu-generic-expression))
- (while exp
- ;; it's of the form '( ( title expr indx ) ... )
- (let* ((subcar (cdr (car exp)))
- (substr (car subcar)))
- (if (and (not (string-match "|method\\\\" substr))
- (string-match "|advice\\\\" substr))
- (setcar subcar
- (replace-match "|advice\\|method\\" t t substr 0))))
- (setq exp (cdr exp)))))
-
-(eieio-update-lisp-imenu-expression)
-
-))
-
;;; Autoloading some external symbols, and hooking into the help system
;;