changeset: 4647:e4ed58cb0e5b
tag: tip
user: Aidan Kehoe <kehoea(a)parhasard.net>
date: Sat Jul 11 16:33:35 2009 +0100
files: lisp/ChangeLog lisp/code-files.el src/ChangeLog src/file-coding.c
tests/ChangeLog tests/automated/mule-tests.el
description:
Fix bugs with #'find-file, 0-length files, & coding-system-for-read specified.
src/ChangeLog addition:
2009-07-11 Aidan Kehoe <kehoea(a)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(a)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(a)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.
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b lisp/ChangeLog
--- a/lisp/ChangeLog Wed Jul 01 16:42:11 2009 -0600
+++ b/lisp/ChangeLog Sat Jul 11 16:33:35 2009 +0100
@@ -1,3 +1,13 @@
+2009-07-11 Aidan Kehoe <kehoea(a)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).
+
2009-06-20 It's me FKtPp ;) <m_pupil(a)yahoo.com.cn>
* files.el (cd): Do not #'split-path on nil #'getenv result; Make
sure the cd-path value is a list.
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b lisp/code-files.el
--- a/lisp/code-files.el Wed Jul 01 16:42:11 2009 -0600
+++ b/lisp/code-files.el Sat Jul 11 16:33:35 2009 +0100
@@ -449,7 +449,17 @@
(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)))
+ (setq coding-system
+ (or
+ ;; If this property is available, it will be a coding
+ ;; system that we can use to write a file (as opposed to
+ ;; the true undecided coding system, which trashes
+ ;; non-Latin-1 on writing). It might just be the value of
+ ;; coding-system passed to #'insert-file-contents-internal.
+ (coding-system-property coding-system 'coding-system)
+ ;; Otherwise, take the value normally specified by the
+ ;; language environment:
+ (default-value 'buffer-file-coding-system))))
;; call any `post-read-conversion' for the coding system that
;; was used ...
(let ((func
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b src/ChangeLog
--- a/src/ChangeLog Wed Jul 01 16:42:11 2009 -0600
+++ b/src/ChangeLog Sat Jul 11 16:33:35 2009 +0100
@@ -1,3 +1,12 @@
+2009-07-11 Aidan Kehoe <kehoea(a)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
+
2009-06-09 Jerry James <james(a)xemacs.org>
* glyphs-eimage.c (jpeg_instantiate):
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b src/file-coding.c
--- a/src/file-coding.c Wed Jul 01 16:42:11 2009 -0600
+++ b/src/file-coding.c Sat Jul 11 16:33:35 2009 +0100
@@ -4078,12 +4078,12 @@
return str->codesys;
if (!data->c.initted)
- return Fget_coding_system (Qundecided);
+ return str->codesys;
ret = coding_stream_canonicalize_after_coding
(XLSTREAM (data->c.lstreams[0]));
if (NILP (ret))
- ret = Fget_coding_system (Qundecided);
+ ret = str->codesys;
if (XCODING_SYSTEM_EOL_TYPE (ret) != EOL_AUTODETECT)
return ret;
eolret = coding_stream_canonicalize_after_coding
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b tests/ChangeLog
--- a/tests/ChangeLog Wed Jul 01 16:42:11 2009 -0600
+++ b/tests/ChangeLog Sat Jul 11 16:33:35 2009 +0100
@@ -1,3 +1,11 @@
+2009-07-11 Aidan Kehoe <kehoea(a)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.
+
2009-05-18 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.29 "garbanzo" is released.
diff -r 6c6bfdb80a0c -r e4ed58cb0e5b tests/automated/mule-tests.el
--- a/tests/automated/mule-tests.el Wed Jul 01 16:42:11 2009 -0600
+++ b/tests/automated/mule-tests.el Sat Jul 11 16:33:35 2009 +0100
@@ -141,6 +141,26 @@
(kill-buffer nil))
(delete-file test-file-name))
+(let ((existing-file-name
+ (make-temp-file (expand-file-name "k7lCS2Mg" (temp-directory))))
+ (nonexistent-file-name
+ (make-temp-name (temp-directory))))
+ (find-file existing-file-name)
+ (Assert (not (eq 'undecided
+ (coding-system-type buffer-file-coding-system))))
+ (kill-buffer nil)
+ (dolist (coding-system '(utf-8 windows-1251 macintosh big5))
+ (when (find-coding-system coding-system)
+ (find-file existing-file-name coding-system)
+ (Assert (eq (find-coding-system coding-system)
+ buffer-file-coding-system))
+ (kill-buffer nil)
+ (find-file nonexistent-file-name coding-system)
+ (Assert (eq (find-coding-system coding-system)
+ buffer-file-coding-system))
+ (kill-buffer nil)))
+ (delete-file existing-file-name))
+
;;-----------------------------------------------------------------
;; Test string modification functions that modify the length of a char.
;;-----------------------------------------------------------------
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches