Jeśli potrzebujesz tylko ładnych wcięć bez wprowadzania nowych podziałów linii, możesz zastosować indent-region
polecenie do całego bufora za pomocą tych naciśnięć klawiszy:
C-x h
C-M-\
Jeśli chcesz również wprowadzić podziały wierszy, aby znaczniki otwierające i zamykające znajdowały się w osobnych wierszach, możesz użyć następującej bardzo ładnej funkcji elisp, napisanej przez Benjamina Ferrariego . Znalazłem go na jego blogu i mam nadzieję, że mogę go tutaj odtworzyć:
(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!"))
Nie polega to na zewnętrznym narzędziu, takim jak Tidy.
wrong type argument: stringp, nil