+2013-07-27 Eric Ludlam <zappo@gnu.org>
+
+ * lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap
+ debug message removing middle tag in semantic-edits-verbose-flag
+ check.
+
+2013-07-27 David Engster <deng@randomsample.de>
+
+ * semantic/bovine/el.el (semantic/db-el): New require.
+
+ * semantic/db-el.el (semanticdb-normalize-one-tag): It might be
+ that a symbol comes from a file but cannot be found in its table.
+ This happens for instance when a symbol was dynamically created
+ through a macro like `defstruct'. In this case, return the
+ original tag.
+ (semanticdb-elisp-sym->tag): Deal with autoloaded functions, where
+ the argument list is not available until the file is loaded.
+
2013-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
* data-debug.el, cedet-idutils.el: Neuter the "Version:" header.
(newtags (when tab (semanticdb-find-tags-by-name-method
tab (semantic-tag-name tag))))
(match nil))
- ;; Find the best match.
- (dolist (T newtags)
- (when (semantic-tag-similar-p T tag)
- (setq match T)))
- ;; Backup system.
- (when (not match)
- (setq match (car newtags)))
+ ;; We might not have a parsed tag in this file, because it
+ ;; might be generated through a macro like defstruct.
+ (if (null newtags)
+ (setq match tag)
+ ;; Find the best match.
+ (dolist (T newtags)
+ (when (semantic-tag-similar-p T tag)
+ (setq match T)))
+ ;; Backup system.
+ (when (not match)
+ (setq match (car newtags))))
;; Return it.
(when tab (cons tab match))))))
(when sym
(cond ((and (eq toktype 'function) (fboundp sym))
(require 'semantic/bovine/el)
- (semantic-tag-new-function
- (symbol-name sym)
- nil ;; return type
- (semantic-elisp-desymbolify
- (help-function-arglist sym)) ;; arg-list
- :user-visible-flag (condition-case nil
- (interactive-form sym)
- (error nil))
- ))
+ (let ((arglist (help-function-arglist sym)))
+ (when (not (listp arglist))
+ ;; Function might be autoloaded, in which case
+ ;; the arglist is not available yet.
+ (setq arglist nil))
+ (semantic-tag-new-function
+ (symbol-name sym)
+ nil ;; return type
+ (semantic-elisp-desymbolify arglist)
+ :user-visible-flag (condition-case nil
+ (interactive-form sym)
+ (error nil)))))
((and (eq toktype 'variable) (boundp sym))
(semantic-tag-new-variable
(symbol-name sym)
;; reparse
(semantic-parse-changes-failed "Splice-remove failed. Empty buffer?")
))
- (message "To Remove Middle Tag: (%s)"
- (semantic-format-tag-name first)))
+ (when semantic-edits-verbose-flag
+ (message "To Remove Middle Tag: (%s)"
+ (semantic-format-tag-name first))))
;; Find in the cache the preceding tag
(while (and cachestart (not (eq first (car (cdr cachestart)))))
(setq cachestart (cdr cachestart)))