# HG changeset patch # User Richard M. Stallman # Date 1020399811 0 # Node ID 5b1a8adeb6024b035f2d8a333c6c9b887026393f # Parent 83757531e45fe37b34d4d148785478591ba01011 (select-safe-coding-system): Don't offer coding systems that use locking shift. Ask for confirmation if chosen coding system disagrees with a `coding:' spec in the file. diff -r 83757531e45f -r 5b1a8adeb602 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Thu May 02 23:51:57 2002 +0000 +++ b/lisp/international/mule-cmds.el Fri May 03 04:23:31 2002 +0000 @@ -636,6 +636,16 @@ (setcar l mime-charset)) (setq l (cdr l)))) + ;; Don't offer variations with locking shift, which you + ;; basically never want. + (let (l) + (dolist (elt codings (setq codings (nreverse l))) + (unless (or (eq 'coding-category-iso-7-else + (coding-system-category elt)) + (eq 'coding-category-iso-8-else + (coding-system-category elt))) + (push elt l)))) + ;; Make sure the offending buffer is displayed. (or (stringp from) (pop-to-buffer bufname)) @@ -705,7 +715,23 @@ (if (eq coding-system t) (setq coding-system buffer-file-coding-system)) - coding-system)) + ;; Check we're not inconsistent with what `coding:' spec &c would + ;; give when file is re-read. + (unless (stringp from) + (let ((auto-cs (save-restriction + (widen) + (save-excursion + (goto-char (point-min)) + (set-auto-coding (or buffer-file-name "") + (buffer-size)))))) + (if (and auto-cs + (not (coding-system-equal (coding-system-base coding-system) + (coding-system-base auto-cs)))) + (unless (yes-or-no-p + (format "Selected encoding %s disagrees with \ +%s specified by file contents. Really save (else edit coding cookies \ +and try again)? " coding-system auto-cs)) + (error "Save aborted"))))) coding-system)) (setq select-safe-coding-system-function 'select-safe-coding-system)