Function: semantic-tag-write-one-tag
semantic-tag-write-one-tag is a byte-compiled function defined in
tag-write.el.gz.
Signature
(semantic-tag-write-one-tag TAG &optional INDENT)
Documentation
Write a single tag TAG to standard out.
INDENT is the amount of indentation to use for this tag.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/tag-write.el.gz
;;; Code:
(defun semantic-tag-write-one-tag (tag &optional indent)
"Write a single tag TAG to standard out.
INDENT is the amount of indentation to use for this tag."
(when (not (semantic-tag-p tag))
(signal 'wrong-type-argument (list tag 'semantic-tag-p)))
(when (not indent) (setq indent 0))
;(princ (make-string indent ? ))
(princ "(")
;; Base parts
(let ((name (semantic-tag-name tag))
(class (semantic-tag-class tag)))
(prin1 name)
(princ " ")
(princ (symbol-name class))
)
(let ((attr (semantic-tag-attributes tag))
)
;; Attributes
(cond ((not attr)
(princ " nil"))
((= (length attr) 2) ;; One item
(princ " (")
(semantic-tag-write-one-attribute attr indent)
(princ ")")
)
(t
;; More than one tag.
(princ "\n")
(princ (make-string (+ indent 3) ? ))
(princ "(")
(while attr
(semantic-tag-write-one-attribute attr (+ indent 4))
(setq attr (cdr (cdr attr)))
(when attr
(princ "\n")
(princ (make-string (+ indent 4) ? )))
)
(princ ")\n")
(princ (make-string (+ indent 3) ? ))
))
;; Properties - for now, always nil.
(let ((rs (semantic--tag-get-property tag 'reparse-symbol)))
(if (not rs)
(princ " nil")
;; Else, put in the property list.
(princ " (reparse-symbol ")
(princ (symbol-name rs))
(princ ")"))
))
;; Overlay
(if (semantic-tag-with-position-p tag)
(let ((bounds (semantic-tag-bounds tag)))
(princ " ")
(prin1 (apply #'vector bounds))
)
(princ " nil"))
;; End it.
(princ ")")
)