# HG changeset patch # User Kenichi Handa # Date 1040125232 0 # Node ID c7299043f7f480d4494fbdb78f4aacb41f7cc9f4 # Parent 0b4aeb4594adb198ac6ad633e729440c52e30614 (universal-coding-system-argument): Bind coding-system-require-warning to t. (select-safe-coding-system): Handle t in the arg DEFAULT-CODING-SYSTEM specially. Use read-coding-system to read a coding-system to allow users to specify unsafe coding system on their risk. diff -r 0b4aeb4594ad -r c7299043f7f4 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Tue Dec 17 11:39:59 2002 +0000 +++ b/lisp/international/mule-cmds.el Tue Dec 17 11:40:32 2002 +0000 @@ -305,6 +305,7 @@ (let ((coding-system-for-read coding-system) (coding-system-for-write coding-system) + (coding-system-require-warning t) (current-prefix-arg prefix)) (message "") (call-interactively cmd)))) @@ -604,7 +605,10 @@ 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. +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. Optional 4th arg ACCEPT-DEFAULT-P, if non-nil, is a function to determine the acceptability of the silently selected coding system. @@ -624,36 +628,43 @@ (not (listp default-coding-system))) (setq default-coding-system (list default-coding-system))) - ;; Change elements of the list to (coding . base-coding). - (setq default-coding-system - (mapcar (function (lambda (x) (cons x (coding-system-base x)))) - default-coding-system)) + (let ((no-other-defaults nil)) + (if (eq (car default-coding-system) t) + (setq no-other-defaults t + default-coding-system (cdr default-coding-system))) + + ;; Change elements of the list to (coding . base-coding). + (setq default-coding-system + (mapcar (function (lambda (x) (cons x (coding-system-base x)))) + default-coding-system)) - ;; If buffer-file-coding-system is not nil nor undecided, append it - ;; to the defaults. - (if buffer-file-coding-system - (let ((base (coding-system-base buffer-file-coding-system))) - (or (eq base 'undecided) - (assq buffer-file-coding-system default-coding-system) - (rassq base default-coding-system) - (setq default-coding-system - (append default-coding-system - (list (cons buffer-file-coding-system base))))))) + (unless no-other-defaults + ;; If buffer-file-coding-system is not nil nor undecided, append it + ;; to the defaults. + (if buffer-file-coding-system + (let ((base (coding-system-base buffer-file-coding-system))) + (or (eq base 'undecided) + (assq buffer-file-coding-system default-coding-system) + (rassq base default-coding-system) + (setq default-coding-system + (append default-coding-system + (list (cons buffer-file-coding-system base))))))) - ;; 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))))) - (setq tail (cdr tail))) - (and (coding-system-p preferred) - (setq base (coding-system-base preferred)) - (coding-system-get preferred 'mime-charset) - (not (assq preferred default-coding-system)) - (not (rassq base default-coding-system)) - (setq default-coding-system - (append default-coding-system (list (cons preferred base)))))) + ;; 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))))) + (setq tail (cdr tail))) + (and (coding-system-p preferred) + (setq base (coding-system-base preferred)) + (coding-system-get preferred 'mime-charset) + (not (assq preferred default-coding-system)) + (not (rassq base default-coding-system)) + (setq default-coding-system + (append default-coding-system + (list (cons preferred base)))))))) (if select-safe-coding-system-accept-default-p (setq accept-default-p select-safe-coding-system-accept-default-p)) @@ -821,20 +832,19 @@ (mapcar (function (lambda (x) (princ " ") (princ x))) codings) (insert "\n") - (fill-region-as-paragraph pos (point))))) + (fill-region-as-paragraph pos (point))) + (insert "Or specify any other coding system +on your risk of loosing the problematic characters.\n"))) ;; Read a coding system. - (if safe - (setq codings (append safe codings))) - (let* ((safe-names (mapcar (lambda (x) (list (symbol-name x))) - codings)) - (name (completing-read - (format "Select coding system (default %s): " - (car codings)) - safe-names nil t nil nil - (car (car safe-names))))) - (setq last-coding-system-specified (intern name) - coding-system last-coding-system-specified))) + (setq default-coding-system (or (car safe) (car codings))) + (setq coding-system + (read-coding-system + (format "Select coding system (default %s): " + default-coding-system) + default-coding-system)) + (setq last-coding-system-specified coding-system)) + (kill-buffer "*Warning*") (set-window-configuration window-configuration)))