X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mcharset.el;h=04281e588a46503580dc487fe21c099548fad217;hb=cc97e1054659c154d67b72fa9a19b0a511253377;hp=3b02f6c2dfdf1d4dad2f320d233cbe5a247d8055;hpb=e47c19a9f98b560818385fb4fd7dca6b14f36767;p=elisp%2Fapel.git diff --git a/mcharset.el b/mcharset.el index 3b02f6c..04281e5 100644 --- a/mcharset.el +++ b/mcharset.el @@ -1,8 +1,8 @@ ;;; mcharset.el --- MIME charset API -;; Copyright (C) 1997,1998 Free Software Foundation, Inc. +;; Copyright (C) 1997,1998,1999,2000 Free Software Foundation, Inc. -;; Author: MORIOKA Tomohiko +;; Author: MORIOKA Tomohiko ;; Keywords: emulation, compatibility, Mule ;; This file is part of APEL (A Portable Emacs Library). @@ -19,33 +19,45 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Code: (require 'poe) +(require 'pcustom) (cond ((featurep 'mule) - (cond ((featurep 'xemacs) - (require 'mcs-xm) - ) - ((>= emacs-major-version 20) - (require 'mcs-e20) - ) - (t - ;; for MULE 1.* and 2.* - (require 'mcs-om) - )) - ) + (if (>= emacs-major-version 20) + (require 'mcs-20) + ;; for MULE 1.* and 2.* + (require 'mcs-om))) ((boundp 'NEMACS) ;; for Nemacs and Nepoch - (require 'mcs-nemacs) - ) + (require 'mcs-nemacs)) (t - (require 'mcs-ltn1) - )) + (require 'mcs-ltn1))) +(defcustom default-mime-charset-for-write + (if (mime-charset-p 'utf-8) + 'utf-8 + default-mime-charset) + "Default value of MIME-charset for encoding. +It may be used when suitable MIME-charset is not found. +It must be symbol." + :group 'i18n + :type 'mime-charset) + +(defcustom default-mime-charset-detect-method-for-write + nil + "Function called when suitable MIME-charset is not found to encode. +It must be nil or function. +If it is nil, variable `default-mime-charset-for-write' is used. +If it is a function, interface must be (TYPE CHARSETS &rest ARGS). +CHARSETS is list of charset. +If TYPE is 'region, ARGS has START and END." + :group 'i18n + :type '(choice function (const nil))) (defun charsets-to-mime-charset (charsets) "Return MIME charset from list of charset CHARSETS. @@ -69,10 +81,29 @@ Return nil if suitable mime-charset is not found." (setq rest (cdr rest))) )))) +(defun find-mime-charset-by-charsets (charsets &optional mode &rest args) + "Like `charsets-to-mime-charset', but it does not return nil. + +When suitable mime-charset is not found and variable +`default-mime-charset-detect-method-for-write' is not nil, +`find-mime-charset-by-charsets' calls the variable as function and +return the return value of the function. +Interface of the function is (MODE CHARSETS &rest ARGS). + +When suitable mime-charset is not found and variable +`default-mime-charset-detect-method-for-write' is nil, +variable `default-mime-charset-for-write' is returned." + (or (charsets-to-mime-charset charsets) + (if default-mime-charset-detect-method-for-write + (apply default-mime-charset-detect-method-for-write + mode charsets args) + default-mime-charset-for-write))) + ;;; @ end ;;; -(provide 'mcharset) +(require 'product) +(product-provide (provide 'mcharset) (require 'apel-ver)) ;;; mcharset.el ends here