Function: nxml-display-section
nxml-display-section is a byte-compiled function defined in
nxml-outln.el.gz.
Signature
(nxml-display-section LAST-POS SECTION-START-POS HEADING-START-POS PARENT-INDENT PARENT-OUTLINE-STATE HAD-CHILDREN TAG-QNAMES)
Source Code
;; Defined in /usr/src/emacs/lisp/nxml/nxml-outln.el.gz
(defun nxml-display-section (last-pos
section-start-pos
heading-start-pos
parent-indent
parent-outline-state
had-children
tag-qnames)
(let* ((section-start-pos-bol
(save-excursion
(goto-char section-start-pos)
(skip-chars-backward " \t")
(point)))
(outline-state (nxml-get-outline-state section-start-pos))
(newline-before-section-start-category
(cond ((and (not had-children) parent-outline-state)
'nxml-outline-display-ellipsis)
(outline-state 'nxml-outline-display-show)
(t nil))))
(nxml-outline-set-overlay (and parent-outline-state
'nxml-outline-display-hide)
last-pos
(1- section-start-pos-bol)
nil
t)
(if outline-state
(let* ((indent (if parent-indent
(+ parent-indent nxml-outline-child-indent)
(save-excursion
(goto-char section-start-pos)
(current-column))))
start-tag-overlay)
(nxml-outline-set-overlay newline-before-section-start-category
(1- section-start-pos-bol)
section-start-pos-bol
t)
(nxml-outline-set-overlay 'nxml-outline-display-hide
section-start-pos-bol
section-start-pos)
(setq start-tag-overlay
(nxml-outline-set-overlay 'nxml-outline-display-show
section-start-pos
(1+ section-start-pos)
t))
;; line motion commands don't work right if start-tag-overlay
;; covers multiple lines
(nxml-outline-set-overlay 'nxml-outline-display-hide
(1+ section-start-pos)
heading-start-pos)
(goto-char heading-start-pos)
(nxml-end-of-heading)
(nxml-outline-set-overlay 'nxml-outline-display-heading
heading-start-pos
(point))
(let* ((had-children
(nxml-outline-display-rest outline-state
indent
tag-qnames)))
(overlay-put start-tag-overlay
'display
(concat
;; indent
(make-string indent ?\ )
;; <
nxml-highlighted-less-than
;; + or - indicator
(cond ((not had-children)
nxml-highlighted-inactive-minus)
((eq outline-state 'hide-children)
(overlay-put start-tag-overlay
'category
'nxml-outline-display-hiding-tag)
nxml-highlighted-active-plus)
(t
(overlay-put start-tag-overlay
'category
'nxml-outline-display-showing-tag)
nxml-highlighted-active-minus))
;; qname
(nxml-highlighted-qname (car tag-qnames))
;; >
nxml-highlighted-greater-than))))
;; outline-state nil
(goto-char heading-start-pos)
(nxml-end-of-heading)
(nxml-outline-set-overlay newline-before-section-start-category
(1- section-start-pos-bol)
(point)
t)
(nxml-outline-display-rest outline-state
(and parent-indent
(+ parent-indent
nxml-outline-child-indent))
tag-qnames))))