+2013-06-28 Kenichi Handa <handa@gnu.org>
+
+ * international/mule.el (define-coding-system): New coding system
+ properties :inhibit-null-byte-detection,
+ :inhibit-iso-escape-detection, and :prefer-utf-8.
+ (set-buffer-file-coding-system): If :charset-list property of
+ CODING-SYSTEM is `emacs', do not check if CODING-SYSTEM is
+ appropriate for setting.
+
+ * international/mule-cmds.el (select-safe-coding-system): If
+ DEFAULT-CODING-SYSTEM is prefer-utf-8 and the buffer contains
+ multibyte characters, return utf-8 (or one of it's siblings).
+
+ * international/mule-conf.el (prefer-utf-8): New coding system.
+ (file-coding-system-alist): Use prefer-utf-8 as default for Elisp
+ files.
+
2013-06-22 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/package.el (package-el-version): Remove.
VALUE is a symbol representing the registered CCL program used for
encoding. This attribute has a meaning only when `:coding-type' is
-`ccl'."
+`ccl'.
+
+:inhibit-null-byte-detection
+
+VALUE non-nil means Emacs ignore null bytes on code detection.
+See the variable `inhibit-null-byte-detection'. This attribute
+has a meaning only when `:coding-type' is `undecided'.
+
+:inhibit-iso-escape-detection
+
+VALUE non-nil means Emacs ignores ISO-2022 escape sequences on
+code detection. See the variable `inhibit-iso-escape-detection'.
+This attribute has a meaning only when `:coding-type' is
+`undecided'.
+
+:prefer-utf-8
+
+VALUE non-nil means Emacs prefers UTF-8 on code detection for
+non-ASCII files. This attribute has a meaning only when
+`:coding-type' is `undecided'."
(let* ((common-attrs (mapcar 'list
'(:mnemonic
:coding-type
((eq coding-type 'ccl)
'(:ccl-decoder
:ccl-encoder
- :valids))))))
+ :valids))
+ ((eq coding-type 'undecided)
+ '(:inhibit-null-byte-detection
+ :inhibit-iso-escape-detection
+ :prefer-utf-8))))))
(dolist (slot common-attrs)
(setcdr slot (plist-get props (car slot))))
(if (and coding-system buffer-file-coding-system (null force))
(setq coding-system
(merge-coding-systems coding-system buffer-file-coding-system)))
- (when (called-interactively-p 'interactive)
+ (when (and (called-interactively-p 'interactive)
+ (not (memq 'emacs (coding-system-get coding-system
+ :charset-list))))
;; Check whether save would succeed, and jump to the offending char(s)
;; if not.
(let ((css (find-coding-systems-region (point-min) (point-max))))