Jawaban:
Apakah fungsionalitas sudah ada untuk memformat ulang buffer ini agar terbaca oleh pengguna?
Tentu saja, dan Anda punya banyak pilihan. Saya mungkin akan memasukkannya ke program eksternal menggunakan:
C-x h C-u M-| xmllint --format - RET
Program ini dilengkapi dengan libxml2
. Anda juga bisa menggunakannya tidy
. Berikut daftar alat pemformatan xml commandline: /programming/16090869/how-to-pretty-print-xml-from-the-command-line
Anda juga bisa melakukan pencarian dan ganti lalu indentasi:
M-% > < RET > C-q C-j < RET ! C-M-\
Trik rapi: Anda dapat menyalin dan menempelkan string di atas ke M-:
( eval-expression
) seperti ini:
(execute-kbd-macro (kbd "M-% > < RET > C-q C-j < RET ! C-M-\\"))
C-u
awalan.
Built-in yang sgml-mode
memiliki perintah untuk melakukan hal ini: sgml-pretty-print
. Jika Anda berada di nxml-mode
dalamnya sepertinya Anda perlu beralih ke yang sgml-mode
pertama. Anda bisa menulis perintah untuk sementara beralih ke mode sgml, menjalankan pretty-print, lalu beralih kembali ke mode nxml.
Sebagai contoh, berikut adalah perintah yang akan cukup mencetak wilayah, opsional dengan pengisian otomatis diaktifkan:
(defun xml-pretty-print (beg end &optional arg)
"Reformat the region between BEG and END.
With optional ARG, also auto-fill."
(interactive "*r\nP")
(let ((fill (or (bound-and-true-p auto-fill-function) -1)))
(sgml-mode)
(when arg (auto-fill-mode))
(sgml-pretty-print beg end)
(nxml-mode)
(auto-fill-mode fill)))
tulis ini ke Anda ~/.emacs.d/init.el
:
(require 'sgml-mode)
(defun ninrod/reformat-xml ()
(interactive)
(save-excursion
(sgml-pretty-print (point-min) (point-max))
(indent-region (point-min) (point-max))))
muat ulang emacs, lalu panggil M-x reformat-xml
buffer xml yang diformat dengan buruk.
sumber: https://davidcapello.com/blog/emacs/reformat-xml-on-emacs/
Mengikuti petunjuk dari jawaban di atas, dan dengan asumsi Anda telah tidy
menginstal variasi dapat menjadi:
`C-x h M-| tidy -quiet -xml -utf8 -indent -`
Ini akan membuka buffer baru *Shell Command Output*
alih-alih secara langsung mengganti konten buffer. Setelah memeriksa hasilnya, ganti konten lama dengan yang baru dengan:
C-x h M-insert-buffer
pilih default yang disarankan yang mungkin akan menjadi *Shell Command Output*
. Anda dapat menyimpan perintah untuk nanti dengan keyboard makro:
C-x ( C-x h M-| tidy -quiet -xml -utf8 -indent - C-x)
C-x C-k n pretty-xml
Dengan ini, Anda dapat menjalankan M-x pretty-xml
untuk memformat ulang buffer.