Réponses:
La fonctionnalité existe-t-elle déjà pour reformater ce tampon afin qu'il soit quelque peu lisible par l'utilisateur?
Bien sûr, et vous avez beaucoup d'options. Je le nourrirais probablement dans un programme externe en utilisant:
C-x h C-u M-| xmllint --format - RET
Ce programme est livré avec libxml2
. Vous pouvez également utiliser tidy
. Voici une liste d'outils de formatage xml en ligne de commande: /programming/16090869/how-to-pretty-print-xml-from-the-command-line
Vous pouvez également effectuer une recherche et remplacer puis indenter:
M-% > < RET > C-q C-j < RET ! C-M-\
Astuce: vous pouvez copier et coller la chaîne ci-dessus dans M-:
( eval-expression
) comme ceci:
(execute-kbd-macro (kbd "M-% > < RET > C-q C-j < RET ! C-M-\\"))
C-u
préfixe.
Le haut- sgml-mode
a une commande pour ce faire: sgml-pretty-print
. Si vous y êtes, nxml-mode
il semble que vous devez d' sgml-mode
abord passer à . Vous pouvez écrire une commande pour basculer temporairement en mode sgml, exécuter pretty-print, puis revenir en mode nxml.
Par exemple, voici une commande qui imprimera joliment la région, éventuellement avec le remplissage automatique activé:
(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)))
écrivez ceci dans votre ~/.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))))
rechargez emacs, puis appelez simplement M-x reformat-xml
le tampon xml mal formaté.
source: https://davidcapello.com/blog/emacs/reformat-xml-on-emacs/
En suivant l'indice de la réponse ci-dessus, et en supposant que vous avez tidy
installé une variante, cela pourrait être:
`C-x h M-| tidy -quiet -xml -utf8 -indent -`
Cela ouvrira un nouveau tampon *Shell Command Output*
au lieu de remplacer directement le contenu du tampon. Après avoir vérifié le résultat, remplacez l'ancien contenu par le nouveau par:
C-x h M-insert-buffer
choisissez la valeur par défaut suggérée qui sera probablement *Shell Command Output*
. Vous pouvez enregistrer la commande pour plus tard avec une macro clavier:
C-x ( C-x h M-| tidy -quiet -xml -utf8 -indent - C-x)
C-x C-k n pretty-xml
Avec cela, vous pouvez exécuter M-x pretty-xml
pour reformater le tampon.