Mercurial > hg > xemacs-beta
comparison lisp/code-files.el @ 4647:e4ed58cb0e5b
Fix bugs with #'find-file, 0-length files, & coding-system-for-read specified.
src/ChangeLog addition:
2009-07-11 Aidan Kehoe <kehoea@parhasard.net>
* file-coding.c (undecided_canonicalize_after_coding):
If no data have been seen, or if
coding_stream_canonicalize_after_coding gives nil, pass back
str->codesys, which will be of type undecided (the same as the old
behaviour) but will reflect any CODESYS argument passed to
make_coding_input_stream. See also the change in lisp/code-files.el
lisp/ChangeLog addition:
2009-07-11 Aidan Kehoe <kehoea@parhasard.net>
* code-files.el (insert-file-contents):
Take advantage of more sensible behaviour from
#'insert-file-contents-internal, allowing us to actually follow
the documented coding system behaviour for nonexistent files (that
is, buffer-file-coding-system reflects coding-system-for-read &c.,
not becoming undecided for either zero-length or nonexistent
files).
tests/ChangeLog addition:
2009-07-11 Aidan Kehoe <kehoea@parhasard.net>
* automated/mule-tests.el:
Check for Richard Zidlicky's bug of
http://mid.gmane.org/20090602194123.GA5163@linux-m68k.org; also
check that supplying CODESYS to #'find-file is respected both for
nonexistent files and zero-length existing files.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 11 Jul 2009 16:33:35 +0100 |
parents | a90b63846dc4 |
children | 8905163c49c5 |
comparison
equal
deleted
inserted
replaced
4646:6c6bfdb80a0c | 4647:e4ed58cb0e5b |
---|---|
447 ;; a more sane value. | 447 ;; a more sane value. |
448 (when (eq 'undecided (coding-system-type coding-system)) | 448 (when (eq 'undecided (coding-system-type coding-system)) |
449 (unless (zerop (buffer-size)) | 449 (unless (zerop (buffer-size)) |
450 (warn "%s: autodetection failed: setting to default." | 450 (warn "%s: autodetection failed: setting to default." |
451 (file-name-nondirectory (buffer-file-name)))) | 451 (file-name-nondirectory (buffer-file-name)))) |
452 (setq coding-system (default-value 'buffer-file-coding-system))) | 452 (setq coding-system |
453 (or | |
454 ;; If this property is available, it will be a coding | |
455 ;; system that we can use to write a file (as opposed to | |
456 ;; the true undecided coding system, which trashes | |
457 ;; non-Latin-1 on writing). It might just be the value of | |
458 ;; coding-system passed to #'insert-file-contents-internal. | |
459 (coding-system-property coding-system 'coding-system) | |
460 ;; Otherwise, take the value normally specified by the | |
461 ;; language environment: | |
462 (default-value 'buffer-file-coding-system)))) | |
453 ;; call any `post-read-conversion' for the coding system that | 463 ;; call any `post-read-conversion' for the coding system that |
454 ;; was used ... | 464 ;; was used ... |
455 (let ((func | 465 (let ((func |
456 (coding-system-property coding-system 'post-read-conversion)) | 466 (coding-system-property coding-system 'post-read-conversion)) |
457 (endmark (make-marker))) | 467 (endmark (make-marker))) |