Если вам нужно только довольно отступы без введения каких-либо новых разрывов строк, можно применить команду indent-region
на весь буфер с этими нажатиями клавиша:
C-x h
C-M-\
Если вам также необходимо ввести разрывы строк, так что открывающие и закрывающие теги находятся на отдельных строках, вы можете использовать следующую очень приятную функцию elisp, написанную Benjamin Ferrari. Я нашел его на своем блоге и надеюсь, что это нормально для меня, чтобы воспроизвести его здесь:
(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"))
(indent-region begin end))
(message "Ah, much better!"))
Это не зависит от внешнего инструмента, как Tidy.
К концу 2013 года tidy.el Версия: 20111222.1756 не запускается на Emacs 24 с `` `неправильным аргументом типа: stringp, nil``` – keiw 2013-12-21 12:38:16
@keiw Это, вероятно, потому, что вы делаете это в буфере, у которого нет имени файла. Получил ту же ошибку и проследил ее по крайней мере на моей стороне. – Alf 2014-01-21 13:10:02