dest)
"Charset/coding system alist.")
+;;;Internal variable
+(defvar mm-charset-iso-8859-1-forced nil)
+
(defun mm-mule-charset-to-mime-charset (charset)
"Return the MIME charset corresponding to MULE CHARSET."
(let ((alist mm-mime-mule-charset-alist)
used as the line break code type of the coding system."
(when (stringp charset)
(setq charset (intern (downcase charset))))
+ (if (and mm-charset-iso-8859-1-forced
+ (eq charset 'iso-8859-1))
+ (setq charset mm-charset-iso-8859-1-forced))
(setq charset
(or (cdr (assq charset mm-charset-coding-system-alist))
charset))
(defsubst mm-enable-multibyte ()
"Enable multibyte in the current buffer."
(when (and (fboundp 'set-buffer-multibyte)
- (default-value enable-multibyte-characters))
+ (default-value 'enable-multibyte-characters))
(set-buffer-multibyte t)))
(defsubst mm-disable-multibyte ()
(multibyte (make-symbol "multibyte")))
`(if (not (boundp 'enable-multibyte-characters))
(with-temp-buffer ,@forms)
- (let ((,multibyte (default-value enable-multibyte-characters))
+ (let ((,multibyte (default-value 'enable-multibyte-characters))
,temp-buffer)
(unwind-protect
(progn
(get-buffer-create (generate-new-buffer-name " *temp*")))
(unwind-protect
(with-current-buffer ,temp-buffer
- (let (buffer-file-coding-system)
+ (let ((buffer-file-coding-system 'binary))
,@forms))
(and (buffer-name ,temp-buffer)
(kill-buffer ,temp-buffer))))
(put 'mm-with-unibyte-buffer 'lisp-indent-function 0)
(put 'mm-with-unibyte-buffer 'edebug-form-spec '(body))
+(defun mm-find-charset-region (b e)
+ "Return a list of charsets in the region."
+ (cond
+ ((and (boundp 'enable-multibyte-characters)
+ enable-multibyte-characters)
+ (find-charset-region b e))
+ ((not (boundp 'current-language-environment))
+ (save-excursion
+ (save-restriction
+ (narrow-to-region b e)
+ (goto-char (point-min))
+ (skip-chars-forward "\0-\177")
+ (if (eobp)
+ '(ascii)
+ ;;;!!!bogus
+ (list 'ascii 'latin-iso8859-1)))))
+ (t
+ ;; We are in a unibyte buffer, so we futz around a bit.
+ (save-excursion
+ (save-restriction
+ (narrow-to-region b e)
+ (goto-char (point-min))
+ (let ((entry (assoc (capitalize current-language-environment)
+ language-info-alist)))
+ (skip-chars-forward "\0-\177")
+ (if (eobp)
+ '(ascii)
+ (list 'ascii (car (last (assq 'charset entry)))))))))))
+
(provide 'mm-util)
;;; mm-util.el ends here