;; -*- lexical-binding: t; -*- (use-package nxml-mode :straight (:type built-in) :defer t :config (defun xml-pretty-print () (interactive) (let ((start (if (region-active-p) (region-beginning) (point-min))) (end (if (region-active-p) (region-end) (point-max)))) (cond ((executable-find "tidy") (shell-command-on-region start end "tidy -wrap 88 -q -i -xml" nil t)) ((executable-find "xmllint") (shell-command-on-region start end "xmllint --format -" nil t)) (t (sgml-pretty-print start end))))) (general-def nxml-mode-map "C-M-\\" #'xml-pretty-print) (add-hook 'nxml-mode-hook #'hs-minor-mode) (add-to-list 'hs-special-modes-alist '(nxml-mode "\\|]*[^/]>" ;; regexp for end block "