Function: allout-reindent-body
allout-reindent-body is a byte-compiled function defined in
allout.el.gz.
Signature
(allout-reindent-body OLD-DEPTH NEW-DEPTH &optional NUMBER)
Documentation
Reindent body lines which were indented at OLD-DEPTH to NEW-DEPTH.
Optional arg NUMBER indicates numbering is being added, and it must be accommodated.
Note that refill of indented paragraphs is not done.
Source Code
;; Defined in /usr/src/emacs/lisp/allout.el.gz
;;;_ > allout-reindent-body (old-depth new-depth &optional number)
(defun allout-reindent-body (old-depth new-depth &optional _number)
"Reindent body lines which were indented at OLD-DEPTH to NEW-DEPTH.
Optional arg NUMBER indicates numbering is being added, and it must
be accommodated.
Note that refill of indented paragraphs is not done."
(save-excursion
(allout-end-of-prefix)
(let* ((new-margin (current-column))
excess old-indent-begin old-indent-end
;; We want the column where the header-prefix text started
;; *before* the prefix was changed, so we infer it relative
;; to the new margin and the shift in depth:
(old-margin (+ old-depth (- new-margin new-depth))))
;; Process lines up to (but excluding) next topic header:
(allout-unprotected
(save-match-data
(while
(and (re-search-forward "\n\\(\\s-*\\)"
nil
t)
;; Register the indent data, before we reset the
;; match data with a subsequent `looking-at':
(setq old-indent-begin (match-beginning 1)
old-indent-end (match-end 1))
(not (looking-at allout-regexp)))
(if (> 0 (setq excess (- (- old-indent-end old-indent-begin)
old-margin)))
;; Text starts left of old margin -- don't adjust:
nil
;; Text was hanging at or right of old left margin --
;; reindent it, preserving its existing indentation
;; beyond the old margin:
(delete-region old-indent-begin old-indent-end)
(indent-to (+ new-margin excess (current-column))))))))))