+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).
+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):
;; 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
;;; 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.
;;; 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.
;;; 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.
;; 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"
(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))
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)
"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)))
(function nil)
(fntag nil)
arg fntagend argtag
- assign asstag
+ assign asstag newseq
)
;; Pattern for Analysis:
(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))))
)
;; 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)))))
\f
(defun semantic-adebug-analyze (&optional ctxt)
"Perform `semantic-analyze-current-context'.
;; 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:
;;
(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")
;; 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.")
;;; Code:
-(require 'semantic/lex)
-(eval-when-compile (require 'semantic/bovine))
-\f
+(require 'semantic)
+
;;; Prologue
;;
(defvar semantic-grammar-lex-c-char-re)
(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")
(require 'semantic/find)
(require 'semantic/db))
+(declare-function semantic-grammar-wy--install-parser
+ "semantic/gram-wy-fallback")
+
\f
;;;;
;;;; Set up lexer
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* (
)
"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."
;; 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")
(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)))
"Run data-debug on this mode's dictionary."
(interactive)
(require 'eieio-datadebug)
- (require 'semantic)
(require 'srecode/find)
(let* ((modesym major-mode)
(start (current-time))
;; 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
;;; Code:
(require 'srecode/dictionary)
-(require 'semantic/tag)
-
-(eval-when-compile
- (require 'semantic/find))
+(require 'semantic/find)
;;;###autoload
(defun srecode-semantic-handle-:java (dict)
;; 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'."
;;
(require 'eieio)
-(require 'button)
-(require 'help-mode)
(require 'find-func)
+(require 'speedbar)
+(require 'help-mode)
;;; Code:
;;;###autoload
;;; 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.")
)
)
-;;; 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
;;