[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#24978: 25.1; Bad interaction between nxml-auto-insert-xml-declaratio

From: Heinz Rommerskirchen
Subject: bug#24978: 25.1; Bad interaction between nxml-auto-insert-xml-declaration-flag and archive-extract
Date: Mon, 21 Nov 2016 14:41:24 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0

If the variable nxml-auto-insert-xml-declaration-flag is set, an XML
declaration is inserted into non-empty XML files inside a zip archive.

To reproduce this bug create the valid XML file foo.xml containing
=== start foo.xml ===
<?xml version="1.0" encoding="utf-8"?>
=== end foo.xml ===
and pack it into a zip-archive:
$ zip -m bar.zip foo.xml
Now start "emacs -Q", evaluate
"(setq nxml-auto-insert-xml-declaration-flag 't)" in the *scratch*
buffer, visit bar.zip with C-x C-f, and press Enter on the entry
"foo.xml". foo.xml will be opened and an additional XML declaration is
inserted into the buffer rendering the file invalid and marking the
buffer as modified.

The following simple patch solved the problem for me.

=== start patch ====
--- nxml-mode-from-25.1.el      2016-11-20 19:45:43.339427354 +0100
+++ nxml-mode.el        2016-11-20 19:48:26.009625534 +0100
@@ -566,7 +566,8 @@
   ;; hook. The hook also had the drawback of overriding explicit user
   ;; instruction to save as some encoding other than utf-8.
   ;;(add-hook 'write-contents-hooks 'nxml-prepare-to-save)
-  (when (not (and (buffer-file-name) (file-exists-p (buffer-file-name))))
+  (when (and (not (and (buffer-file-name) (file-exists-p (buffer-file-name))))
+             (not archive-superior-buffer))
     (when (and nxml-default-buffer-file-coding-system
               (not (local-variable-p 'buffer-file-coding-system)))
       (setq buffer-file-coding-system nxml-default-buffer-file-coding-system))
=== end patch ===

Dr. Heinrich Rommerskirchen
Prof.-Schmid-Str. 41
82140 Olching

Tel. +49 8142 28787

Email heinz@h-rommerskirchen.de

reply via email to

[Prev in Thread] Current Thread [Next in Thread]