changeset 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 8cef85a39d2c
children 48b45a606961
files lisp/ChangeLog lisp/code-files.el
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Jun 06 17:20:21 2009 +0100
+++ b/lisp/ChangeLog	Sun Jun 07 16:47:04 2009 +0100
@@ -1,3 +1,16 @@
+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. 
+
 2009-06-06  Aidan Kehoe  <kehoea@parhasard.net>
 
 	* files.el (cd): 
--- 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