;; Keep this only so long as we have obsolete fcns.
(require 'semantic/fw)
+(require 'semantic/lex)
+
+(declare-function semantic-current-tag "semantic/find")
+(declare-function semantic-find-first-tag-by-name "semantic/find")
+(declare-function semantic-ctxt-current-mode "semantic/ctxt")
+(declare-function semantic-analyze-split-name "semantic/analyze/fcn")
+(declare-function semantic-fetch-tags "semantic")
+(declare-function semantic-clear-toplevel-cache "semantic")
+(declare-function semantic-documentation-for-tag "semantic/doc")
+(declare-function semantic-format-tag-prototype "semantic/format")
+(declare-function semantic-format-tag-summarize "semantic/format")
+(declare-function semantic-format-tag-name "semantic/format")
(defconst semantic-tag-version semantic-version
"Version string of semantic tags made with this code.")
If point is inside TAG bounds, return the major mode active at point.
Return the major mode active at beginning of TAG otherwise.
See also the function `semantic-ctxt-current-mode'."
+ (require 'semantic/find)
(or tag (setq tag (semantic-current-tag)))
(or (semantic--tag-get-property tag :mode)
(let ((buffer (semantic-tag-buffer tag))
(semantic--tag-get-property tag :filename))))
\f
;;; Tag tests and comparisons.
-;;
-;;;###autoload
(defsubst semantic-tag-p (tag)
"Return non-nil if TAG is most likely a semantic tag."
(condition-case nil
"Find the superclass NAME in the list of SUPERS.
If a simple search doesn't do it, try splitting up the names
in SUPERS."
+ (require 'semantic/find)
(let ((stag nil))
(setq stag (semantic-find-first-tag-by-name name supers))
(when (not stag)
+ (require 'semantic/analyze/fcn)
(dolist (S supers)
(let* ((sname (semantic-tag-name S))
(splitparts (semantic-analyze-split-name sname))
"Return the class of tag TAG is an alias."
(semantic-tag-get-attribute tag :aliasclass))
-;;;###autoload
(define-overloadable-function semantic-tag-alias-definition (tag)
"Return the definition TAG is an alias.
The returned value is a tag of the class that
;;; Language Specific Tag access via overload
;;
-;;;###autoload
(define-overloadable-function semantic-tag-components (tag)
"Return a list of components for TAG.
A Component is a part of TAG which itself may be a TAG.
(semantic-tag-function-arguments tag))
(t nil)))
-;;;###autoload
(define-overloadable-function semantic-tag-components-with-overlays (tag)
"Return the list of top level components belonging to TAG.
Children are any sub-tags which contain overlays.
(defun semantic--tag-unlink-cache-from-buffer ()
"Convert all tags in the current cache to use overlay proxys.
This function is for internal use only."
+ (require 'semantic)
(semantic--tag-unlink-list-from-buffer
;; @todo- use fetch-tags-fast?
(semantic-fetch-tags)))
(defun semantic--tag-link-cache-to-buffer ()
"Convert all tags in the current cache to use overlays.
This function is for internal use only."
+ (require 'semantic)
(condition-case nil
;; In this unique case, we cannot call the usual toplevel fn.
;; because we don't want a reparse, we want the old overlays.
"Return a copy of TAG as a foreign tag, or nil if it can't be done.
TAG defaults to the tag at point in current buffer.
See also `semantic-foreign-tag-p'."
+ (require 'semantic/doc)
(or tag (setq tag (semantic-current-tag)))
(when (semantic-tag-p tag)
(let ((ftag (semantic-tag-copy tag nil t))
ftag))))
;; High level obtain/insert foreign tag overloads
-;;
-;;;###autoload
(define-overloadable-function semantic-obtain-foreign-tag (&optional tag)
"Obtain a foreign tag from TAG.
TAG defaults to the tag at point in current buffer.
and attempts to insert a prototype/function call."
;; Long term goal: Have a mechanism for a tempo-like template insert
;; for the given tag.
+ (require 'semantic/format)
(insert (semantic-format-tag-prototype foreign-tag)))
-;;;###autoload
(define-overloadable-function semantic-insert-foreign-tag (foreign-tag)
"Insert FOREIGN-TAG into the current buffer.
Signal an error if FOREIGN-TAG is not a valid foreign tag.
This function is overridable with the symbol `insert-foreign-tag'."
+ (require 'semantic/format)
(semantic-foreign-tag-check foreign-tag)
(:override)
(message (semantic-format-tag-summarize foreign-tag)))
(define-mode-local-override semantic-insert-foreign-tag
log-edit-mode (foreign-tag)
"Insert foreign tags into log-edit mode."
+ (require 'semantic/format)
(insert (concat "(" (semantic-format-tag-name foreign-tag) "): ")))
(define-mode-local-override semantic-insert-foreign-tag
change-log-mode (foreign-tag)
"Insert foreign tags into log-edit mode."
+ (require 'semantic/format)
(insert (concat "(" (semantic-format-tag-name foreign-tag) "): ")))
\f