Function: rng-complete-tag
rng-complete-tag is a byte-compiled function defined in
rng-nxml.el.gz.
Signature
(rng-complete-tag LT-POS)
Source Code
;; Defined in /usr/src/emacs/lisp/nxml/rng-nxml.el.gz
(defun rng-complete-tag (lt-pos)
(let ((extra-strings
(when (and (= lt-pos (1- (point)))
rng-complete-end-tags-after-<
rng-open-elements
(not (eq (car rng-open-elements) t))
(or rng-collecting-text
(rng-match-save
(rng-match-end-tag))))
(list (concat "/"
(if (caar rng-open-elements)
(concat (caar rng-open-elements)
":"
(cdar rng-open-elements))
(cdar rng-open-elements)))))))
(when (save-excursion
(re-search-backward rng-in-start-tag-name-regex
lt-pos
t))
(and rng-collecting-text (rng-flush-text))
(let ((target-names (rng-match-possible-start-tag-names)))
`(,(1+ lt-pos)
,(save-excursion (skip-chars-forward "-[:alnum:]_.:") (point))
,(apply-partially #'rng-complete-qname-function
target-names nil extra-strings)
:exit-function
,(lambda (completion status)
(cond
((not (eq status 'finished)) nil)
((rng-qname-p completion)
(let ((name (rng-expand-qname completion
t
#'rng-start-tag-expand-recover)))
(when (and name
(rng-match-start-tag-open name)
(or (not (rng-match-start-tag-close))
;; need a namespace decl on the root element
(and (car name)
(not rng-open-elements))))
;; attributes are required
(insert " "))))
((member completion extra-strings)
(insert ">"))))
:company-kind ,(lambda (_) 'property))))))