Yanıtlar:
Bu tamponu kullanıcı tarafından okunabilir olacak şekilde yeniden biçimlendirmek için işlevsellik zaten mevcut mu?
Tabii ki ve birçok seçeneğiniz var. Muhtemelen bunu kullanarak harici bir programa beslerdim:
C-x h C-u M-| xmllint --format - RET
Bu program ile birlikte geliyor libxml2
. Ayrıca kullanabilirsiniz tidy
. Komut satırı xml biçimlendirme araçlarının listesi: /programming/16090869/how-to-pretty-print-xml-from-the-command-line
Ayrıca bir arama yapabilir ve değiştirebilir ve daha sonra girinti yapabilirsiniz:
M-% > < RET > C-q C-j < RET ! C-M-\
Düzenli numara: Yukarıdaki dizeyi kopyalayıp M-:
( eval-expression
) şu şekilde yapıştırabilirsiniz :
(execute-kbd-macro (kbd "M-% > < RET > C-q C-j < RET ! C-M-\\"))
C-u
önektir.
Yerleşik sgml-mode
bunu yapmak için bir komut vardır: sgml-pretty-print
. İçindeyseniz önce nxml-mode
geçiş yapmanız gerekiyor gibi görünüyor sgml-mode
. Geçici olarak sgml moduna geçmek, güzel yazdırmayı çalıştırmak ve sonra nxml moduna geçmek için bir komut yazabilirsiniz.
Örneğin, isteğe bağlı olarak otomatik doldurma etkinken bölgeyi güzel bir şekilde yazdıracak bir komut aşağıdadır:
(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)))
bunu şu adrese yaz ~/.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))))
emacs'ı yeniden yükleyin, ardından M-x reformat-xml
kötü biçimlendirilmiş xml arabelleğini çağırmanız yeterlidir.
kaynak: https://davidcapello.com/blog/emacs/reformat-xml-on-emacs/
Yukarıdaki cevabın ipucunu takip ederek ve tidy
bir varyasyon yüklediğinizi varsayarsak :
`C-x h M-| tidy -quiet -xml -utf8 -indent -`
Bu, arabellek *Shell Command Output*
içeriğini doğrudan değiştirmek yerine yeni bir tampon açacaktır . Sonucu kontrol ettikten sonra, eski içerikleri yenisiyle değiştirin:
C-x h M-insert-buffer
muhtemelen önerilen varsayılanı seçin *Shell Command Output*
. Komutu daha sonra kullanmak üzere bir klavye makrosu ile kaydedebilirsiniz:
C-x ( C-x h M-| tidy -quiet -xml -utf8 -indent - C-x)
C-x C-k n pretty-xml
Bununla M-x pretty-xml
tamponu yeniden biçimlendirmek için çalıştırabilirsiniz .