# HG changeset patch # User Kenichi Handa # Date 1053568106 0 # Node ID d59b2e15c4c77d587371af37b7d5cae12bd7e620 # Parent 8eb2d4a0fe7fb9e7f9ef389c7a93357a6a59dfd1 (select-safe-coding-system): Try default-buffer-file-coding-system too for automatic selection. diff -r 8eb2d4a0fe7f -r d59b2e15c4c7 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Wed May 21 22:28:54 2003 +0000 +++ b/lisp/international/mule-cmds.el Thu May 22 01:48:26 2003 +0000 @@ -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 @@ 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 @@ 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 @@ (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 @@ (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 @@ (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)