Якщо вам потрібні лише сильні відступи без введення нових розривів рядків, ви можете застосувати indent-region
команду до всього буфера за допомогою таких натискань клавіш:
C-x h
C-M-\
Якщо вам також потрібно ввести розриви рядків, щоб теги відкриття та закриття були на окремих рядках, ви можете скористатися наступною дуже приємною функцією elisp, написаною Бенджаміном Феррарі . Я знайшов його у своєму блозі і сподіваюся, що це нормально для мене, щоб відтворити тут:
(defun bf-pretty-print-xml-region (begin end)
"Pretty format XML markup in region. You need to have nxml-mode
http://www.emacswiki.org/cgi-bin/wiki/NxmlMode installed to do
this. The function inserts linebreaks to separate tags that have
nothing but whitespace between them. It then indents the markup
by using nxml's indentation rules."
(interactive "r")
(save-excursion
(nxml-mode)
(goto-char begin)
(while (search-forward-regexp "\>[ \\t]*\<" nil t)
(backward-char) (insert "\n") (setq end (1+ end)))
(indent-region begin end))
(message "Ah, much better!"))
Це не покладається на зовнішній інструмент, такий як Tidy.
wrong type argument: stringp, nil