From: Kenichi Handa Date: Thu, 22 May 2003 01:50:11 +0000 (+0000) Subject: (select-safe-coding-system): Try X-Git-Tag: ttn-vms-21-2-B4~10040 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a985cd2f2ae3027fdc4835a24a1ef992588ce455;p=emacs.git (select-safe-coding-system): Try default-buffer-file-coding-system too for automatic selection. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 04c8b488364..69f7c007df7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2003-05-22 Stefan Monnier + + * international/mule-cmds.el (select-safe-coding-system): Try + default-buffer-file-coding-system too for automatic selection. + 2003-05-21 Dave Love * descr-text.el (unicodedata-file): New. diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 9754ec00020..e9b769d9c12 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)