aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKenichi Handa <[email protected]>2003-05-22 01:50:11 +0000
committerKenichi Handa <[email protected]>2003-05-22 01:50:11 +0000
commita985cd2f2ae3027fdc4835a24a1ef992588ce455 (patch)
tree9c92ba8ac628935c5d2c6d5e200ee66a0fed9067 /lisp
parentc67de8bae7a302efad1db433de6fc455c6602d62 (diff)
(select-safe-coding-system): Try
default-buffer-file-coding-system too for automatic selection.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/international/mule-cmds.el36
2 files changed, 28 insertions, 13 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 04c8b48836..69f7c007df 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2003-05-22 Stefan Monnier <[email protected]>
+
+ * international/mule-cmds.el (select-safe-coding-system): Try
+ default-buffer-file-coding-system too for automatic selection.
+
2003-05-21 Dave Love <[email protected]>
* descr-text.el (unicodedata-file): New.
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 9754ec0002..e9b769d9c1 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -1,5 +1,5 @@
;;; mule-cmds.el --- commands for mulitilingual environment
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+;; Copyright (C) 1995, 2003 Electrotechnical Laboratory, JAPAN.
;; Licensed to the Free Software Foundation.
;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
@@ -631,7 +631,8 @@ The candidates of coding systems which can safely encode a text
between FROM and TO are shown in a popup window. Among them, the most
proper one is suggested as the default.
-The list of `buffer-file-coding-system' of the current buffer and the
+The list of `buffer-file-coding-system' of the current buffer,
+the `default-buffer-file-coding-system', and the
most preferred coding system (if it corresponds to a MIME charset) is
treated as the default coding system list. Among them, the first one
that safely encodes the text is normally selected silently and
@@ -648,8 +649,8 @@ Optional 3rd arg DEFAULT-CODING-SYSTEM specifies a coding system or a
list of coding systems to be prepended to the default coding system
list. However, if DEFAULT-CODING-SYSTEM is a list and the first
element is t, the cdr part is used as the defualt coding system list,
-i.e. `buffer-file-coding-system' and the most prepended coding system
-is not used.
+i.e. `buffer-file-coding-system', `default-buffer-file-coding-system',
+and the most preferred coding system are not used.
Optional 4th arg ACCEPT-DEFAULT-P, if non-nil, is a function to
determine the acceptability of the silently selected coding system.
@@ -679,6 +680,9 @@ and TO is ignored."
(mapcar (function (lambda (x) (cons x (coding-system-base x))))
default-coding-system))
+ ;; From now on, the list of defaults is reversed.
+ (setq default-coding-system (nreverse default-coding-system))
+
(unless no-other-defaults
;; If buffer-file-coding-system is not nil nor undecided, append it
;; to the defaults.
@@ -686,24 +690,30 @@ and TO is ignored."
(let ((base (coding-system-base buffer-file-coding-system)))
(or (eq base 'undecided)
(rassq base default-coding-system)
- (setq default-coding-system
- (append default-coding-system
- (list (cons buffer-file-coding-system base)))))))
+ (push (cons buffer-file-coding-system base)
+ default-coding-system))))
+
+ ;; If default-buffer-file-coding-system is not nil nor undecided,
+ ;; append it to the defaults.
+ (if default-buffer-file-coding-system
+ (let ((base (coding-system-base default-buffer-file-coding-system)))
+ (or (eq base 'undecided)
+ (rassq base default-coding-system)
+ (push (cons default-buffer-file-coding-system base)
+ default-coding-system))))
;; If the most preferred coding system has the property mime-charset,
;; append it to the defaults.
(let ((tail coding-category-list)
preferred base)
- (while (and tail
- (not (setq preferred (symbol-value (car tail)))))
+ (while (and tail (not (setq preferred (symbol-value (car tail)))))
(setq tail (cdr tail)))
(and (coding-system-p preferred)
(setq base (coding-system-base preferred))
(coding-system-get preferred 'mime-charset)
(not (rassq base default-coding-system))
- (setq default-coding-system
- (append default-coding-system
- (list (cons preferred base))))))))
+ (push (cons preferred base)
+ default-coding-system)))))
(if select-safe-coding-system-accept-default-p
(setq accept-default-p select-safe-coding-system-accept-default-p))
@@ -724,7 +734,7 @@ and TO is ignored."
(push (car elt) safe))
(push (car elt) unsafe)))
(if safe
- (setq coding-system (car (last safe)))))
+ (setq coding-system (car safe))))
;; If all the defaults failed, ask a user.
(when (not coding-system)