Mercurial > emacs
changeset 45082:5b1a8adeb602
(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.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 03 May 2002 04:23:31 +0000 |
parents | 83757531e45f |
children | 67007e5c6b03 |
files | lisp/international/mule-cmds.el |
diffstat | 1 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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)