X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mcs-20.el;h=77911a46d2dc79f3987f9864dd50199645764b40;hb=78e351c21917b8499d9ea9cd97d2b0f4097b189f;hp=e608ac3ee2d566b751637f4473df28a6b0e19ae9;hpb=ede37f9f4d11a6ee072e3093871f6fda2f314ffc;p=elisp%2Fapel.git diff --git a/mcs-20.el b/mcs-20.el index e608ac3..77911a4 100644 --- a/mcs-20.el +++ b/mcs-20.el @@ -1,6 +1,6 @@ ;;; mcs-20.el --- MIME charset implementation for Emacs 20 and XEmacs/mule -;; Copyright (C) 1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. ;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule @@ -30,7 +30,7 @@ ;;; Code: (require 'poem) -(require 'custom) +(require 'pcustom) (eval-when-compile (require 'wid-edit)) @@ -43,6 +43,9 @@ (gb2312 . cn-gb-2312) (cn-gb . cn-gb-2312) (iso-2022-jp-2 . iso-2022-7bit-ss2) + (tis-620 . tis620) + (windows-874 . tis-620) + (cp874 . tis-620) (x-ctext . ctext) (unknown . undecided) (x-unknown . undecided) @@ -61,7 +64,15 @@ MIME CHARSET and CODING-SYSTEM must be symbol." :group 'i18n :type '(repeat (cons symbol coding-system))) -(defsubst mime-charset-to-coding-system (charset &optional lbt) +(defcustom mime-charset-to-coding-system-default-method + nil + "Function called when suitable coding-system is not found from MIME-charset. +It must be nil or function. +If it is a function, interface must be (CHARSET LBT CODING-SYSTEM)." + :group 'i18n + :type '(choice function (const nil))) + +(defun mime-charset-to-coding-system (charset &optional lbt) "Return coding-system corresponding with CHARSET. CHARSET is a symbol whose name is MIME charset. If optional argument LBT (`CRLF', `LF', `CR', `unix', `dos' or `mac') @@ -69,20 +80,24 @@ is specified, it is used as line break code type of coding-system." (if (stringp charset) (setq charset (intern (downcase charset))) ) - (let ((ret (assq charset mime-charset-coding-system-alist))) - (if ret - (setq charset (cdr ret)) - )) - (if lbt - (setq charset (intern (format "%s-%s" charset - (cond ((eq lbt 'CRLF) 'dos) - ((eq lbt 'LF) 'unix) - ((eq lbt 'CR) 'mac) - (t lbt))))) - ) - (if (find-coding-system charset) - charset - )) + (let ((cs (assq charset mime-charset-coding-system-alist))) + (setq cs + (if cs + (cdr cs) + charset)) + (if lbt + (setq cs (intern (format "%s-%s" cs + (cond ((eq lbt 'CRLF) 'dos) + ((eq lbt 'LF) 'unix) + ((eq lbt 'CR) 'mac) + (t lbt))))) + ) + (if (find-coding-system cs) + cs + (if mime-charset-to-coding-system-default-method + (funcall mime-charset-to-coding-system-default-method + charset lbt cs) + )))) (defvar widget-mime-charset-prompt-value-history nil "History of input to `widget-mime-charset-prompt-value'.") @@ -123,9 +138,10 @@ It must be symbol." :group 'i18n :type 'mime-charset) -(defsubst detect-mime-charset-region (start end) +(defun detect-mime-charset-region (start end) "Return MIME charset for region between START and END." - (charsets-to-mime-charset (find-charset-region start end))) + (find-mime-charset-by-charsets (find-charset-region start end) + 'region start end)) (defun write-region-as-mime-charset (charset start end filename &optional append visit lockname) @@ -139,6 +155,7 @@ It must be symbol." ;;; @ end ;;; -(provide 'mcs-20) +(require 'product) +(product-provide (provide 'mcs-20) (require 'apel-ver)) ;;; mcs-20.el ends here