diff lisp/code-files.el @ 4641:a90b63846dc4

Set buffer-file-coding-system more sensibly with zero-length files. lisp/ChangeLog addition: 2009-06-07 Aidan Kehoe <kehoea@parhasard.net> * code-files.el (insert-file-contents): Autodetection may return undecided as a coding system. If the file was zero-length, this is kosher, and we should set buffer-file-coding-system to its default; if it is not zero-length, we still need to set b-f-c-s, but we warn that the autodetection fails. (Ignoring that for the user, autodetection failing is something very distinct from what we use it to mean here.) See http://mid.gmane.org/18986.53111.800393.660612@parhasard.net and the related thread.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 07 Jun 2009 16:47:04 +0100
parents 7a8c613ee283
children e4ed58cb0e5b
line wrap: on
line diff
--- a/lisp/code-files.el	Sat Jun 06 17:20:21 2009 +0100
+++ b/lisp/code-files.el	Sun Jun 07 16:47:04 2009 +0100
@@ -443,6 +443,13 @@
 			       filename visit err)
 	   (signal (car err) (cdr err))))
 	(setq coding-system used-codesys)
+        ;; If the file was zero-length, used-codesys is undecided. Set it to
+        ;; a more sane value. 
+        (when (eq 'undecided (coding-system-type coding-system))
+          (unless (zerop (buffer-size))
+            (warn "%s: autodetection failed: setting to default."
+                  (file-name-nondirectory (buffer-file-name))))
+          (setq coding-system (default-value 'buffer-file-coding-system)))
 	;; call any `post-read-conversion' for the coding system that
 	;; was used ...
 	(let ((func