]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix encoding with 'utf-8-auto'
authorEli Zaretskii <eliz@gnu.org>
Thu, 12 Jan 2023 14:36:35 +0000 (16:36 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 12 Jan 2023 14:36:35 +0000 (16:36 +0200)
* src/coding.c (encode_coding_utf_8): Fix encoding with
'utf-8-auto': it should produce BOM, per the documentation of
the :bom attribute.  (Bug#60750)

* lisp/international/mule.el (define-coding-system): Doc fix.

* test/src/coding-tests.el (coding-tests): Use
'with-coding-priority' instead of 'prefer-coding-system', as the
latter has global persistent effect and affects further tests.

lisp/international/mule.el
src/coding.c
test/src/coding-tests.el

index 4f6addea387a06527b3ad90800be7dd8bd789c8b..eddd7b6407a7ddfbc059bf219c4a81ca6a357dcf 100644 (file)
@@ -863,7 +863,8 @@ This attribute is meaningful only when `:coding-type' is `utf-16' or
 VALUE must be `big' or `little' specifying big-endian and
 little-endian respectively.  The default value is `big'.
 
-This attribute is meaningful only when `:coding-type' is `utf-16'.
+Changing this attribute is only meaningful when `:coding-type'
+is `utf-16'.
 
 `:ccl-decoder' (required if :coding-type is `ccl')
 
index 4e59f2b6a1b91321fe211d2538a9a7e9c35fc5e1..49dcd8634f3a16ff7bff3e5671e13ff2a6cecc13 100644 (file)
@@ -1431,7 +1431,7 @@ encode_coding_utf_8 (struct coding_system *coding)
   ptrdiff_t produced_chars = 0;
   int c;
 
-  if (CODING_UTF_8_BOM (coding) == utf_with_bom)
+  if (CODING_UTF_8_BOM (coding) != utf_without_bom)
     {
       ASSURE_DESTINATION (3);
       EMIT_THREE_BYTES (UTF_8_BOM_1, UTF_8_BOM_2, UTF_8_BOM_3);
index 6bd8d1ae6c4b4eb52df981855bea8e292fa5e90a..b27907027ba0d58f8cf6a71359770f2052fe38dc 100644 (file)
 
 (defun coding-tests (content-type write-coding read-coding detected-coding
                                   &optional translator)
-  (prefer-coding-system 'utf-8-auto)
-  (let ((filename (coding-tests-filename content-type write-coding)))
-    (with-temp-buffer
-      (let ((coding-system-for-read read-coding)
-           (contents (coding-tests-file-contents content-type))
-           (disable-ascii-optimization nil))
-       (if translator
-           (setq contents (funcall translator contents)))
-       (insert-file-contents filename)
-       (if (and (coding-system-equal buffer-file-coding-system detected-coding)
-                (string= (buffer-string) contents))
-           nil
-         (list buffer-file-coding-system
-               (string-to-list (buffer-string))
-               (string-to-list contents)))))))
+  (with-coding-priority '(utf-8-auto)
+    (let ((filename (coding-tests-filename content-type write-coding)))
+      (with-temp-buffer
+        (let ((coding-system-for-read read-coding)
+             (contents (coding-tests-file-contents content-type))
+             (disable-ascii-optimization nil))
+         (if translator
+             (setq contents (funcall translator contents)))
+         (insert-file-contents filename)
+         (if (and (coding-system-equal buffer-file-coding-system detected-coding)
+                  (string= (buffer-string) contents))
+             nil
+           (list buffer-file-coding-system
+                 (string-to-list (buffer-string))
+                 (string-to-list contents))))))))
 
 (ert-deftest ert-test-coding-ascii ()
   (unwind-protect