Mercurial > hg > xemacs-beta
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