# HG changeset patch # User Richard M. Stallman # Date 1153764130 0 # Node ID ee72501a64b4dd390d77b7d9eb0b2dafe587b984 # Parent 659c58677dff60dee3d32ce3c804039005c7112f (xml-parse-file): Clean up, and use with-temp-buffer. diff -r 659c58677dff -r ee72501a64b4 lisp/xml.el --- a/lisp/xml.el Mon Jul 24 17:59:15 2006 +0000 +++ b/lisp/xml.el Mon Jul 24 18:02:10 2006 +0000 @@ -165,22 +165,19 @@ Returns the top node with all its children. If PARSE-DTD is non-nil, the DTD is parsed rather than skipped. If PARSE-NS is non-nil, then QNAMES are expanded." - (let ((keep)) - (if (get-file-buffer file) - (progn - (set-buffer (get-file-buffer file)) - (setq keep (point))) - (let (auto-mode-alist) ; no need for xml-mode - (find-file file))) - - (let ((xml (xml-parse-region (point-min) - (point-max) - (current-buffer) - parse-dtd parse-ns))) - (if keep - (goto-char keep) - (kill-buffer (current-buffer))) - xml))) + (if (get-file-buffer file) + (with-current-buffer (get-file-buffer file) + (save-excursion + (xml-parse-region (point-min) + (point-max) + (current-buffer) + parse-dtd parse-ns))) + (with-temp-buffer + (insert-file-contents file) + (xml-parse-region (point-min) + (point-max) + (current-buffer) + parse-dtd parse-ns)))) (defvar xml-name-re)