--- apel-10.8-orig/ChangeLog 2013-10-03 18:17:05.176741628 +1000 +++ apel-10.8/ChangeLog 2013-10-03 18:16:54.442741731 +1000 @@ -1,3 +1,56 @@ +2013-07-05 Tatsuya Kinoshita + + * mcs-20.el: Really check whether the mule-vesion variable is defined. + +2013-07-04 Kazuhiro Ito + + * mcs-20.el: Check whether the mule-vesion variable is defined. + Cf. https://github.com/ikazuhiro/apel/commit/328c02e022340b36dd7e5f9250c7f86d2bafd793 + +2013-03-24 Kazuhiro Ito + + * mcs-20.el (mime-charset-to-coding-system): Display the message + and use charset name as coding system when + `mime-charset-coding-system-alist' indicates invalid coding + system. + +2012-09-07 Kazuhiro Ito + + * mcs-e20.el (coding-system-to-mime-charset): Coding system's + setting is preferred to mime-charset-coding-system-alist's value. + Detect MIME name from mime-charset-coding-system-alist's value + more permissively. + +2012-08-08 Kazuhiro Ito + + * poe.el (next-command-event): Fix that Emacs 21 and later were + treated as 'Emacs 19, 20.1 and 20.2'. + +2012-07-28 Kazuhiro Ito + + * mcs-e20.el (charsets-mime-charset-alist): Do not use + `iso-2022-jp-2'. + +2012-07-28 Kazuhiro Ito + + * mcs-20.el (detect-mime-charset-string): (Emacs23 and later) New + function. + (detect-mime-charset-region): Use it. + +2011-06-17 Kazuhiro Ito + + * mcs-20.el (detect-mime-charset-region): (Emacs23 and later) Do + not check whether `charsets-mime-charset-alist' contains non + charset symbol. + + * mcs-e20.el (charsets-mime-charset-alist): Remove non charset + symbol for Emacs 23 and later. + +2010-03-19 Kazuhiro Ito + + * mcs-20.el (detect-mime-charset-region): Do not care priority of + charsets on Emacs 23 and later. + 2011-07-17 David Maus * tinycustom.el (defcustom): Use new style backquotes. --- apel-10.8-orig/mcs-20.el 2005-07-06 12:08:52.000000000 +1000 +++ apel-10.8/mcs-20.el 2013-10-03 17:44:42.936760151 +1000 @@ -84,11 +84,13 @@ (if (stringp charset) (setq charset (intern (downcase charset))) ) - (let ((cs (assq charset mime-charset-coding-system-alist))) - (setq cs - (if cs - (cdr cs) - charset)) + (let ((cs (cdr (assq charset mime-charset-coding-system-alist)))) + (unless (or (null cs) (find-coding-system cs)) + (message + "Invalid coding system: %s. Confirm mime-charset-coding-system-alist." + cs) + (setq cs nil)) + (unless cs (setq cs charset)) (if lbt (setq cs (intern (format "%s-%s" cs (cond ((eq lbt 'CRLF) 'dos) @@ -96,12 +98,11 @@ ((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) - )))) + (or (find-coding-system cs) + (if mime-charset-to-coding-system-default-method + (funcall mime-charset-to-coding-system-default-method + charset lbt cs) + )))) (defalias 'mime-charset-p 'mime-charset-to-coding-system) @@ -209,6 +210,34 @@ (setq rest (cdr rest))) default-mime-charset-for-write))) ) + +((eval-when-compile (and (boundp 'mule-version) + (null (string< mule-version "6.0")))) +;; for Emacs 23 and later +(defun detect-mime-charset-string (string) + "Return MIME charset for STRING." + (let ((src (string-to-list string)) + tmp) + (setq tmp src) + ;; Uniquify the list of characters. + (while tmp + (setq tmp (setcdr tmp (delq (car tmp) (cdr tmp))))) + ;; Detect charset from the list of characters. + (catch 'found + (mapc (lambda (cons) + (catch 'next + (mapc (lambda (ch) (unless (char-charset ch (car cons)) + (throw 'next nil))) + src) + (throw 'found (cdr cons)))) + charsets-mime-charset-alist) + default-mime-charset-for-write))) + +(defsubst detect-mime-charset-region (start end) + "Return MIME charset for region between START and END." + (detect-mime-charset-string + (buffer-substring-no-properties start end)))) + (t ;; for legacy Mule (defun detect-mime-charset-region (start end) --- apel-10.8-orig/mcs-e20.el 2005-07-06 12:08:52.000000000 +1000 +++ apel-10.8/mcs-e20.el 2013-10-03 17:44:42.936760151 +1000 @@ -90,11 +90,15 @@ ((ascii korean-ksc5601) . euc-kr) ((ascii chinese-gb2312) . gb2312) ((ascii chinese-big5-1 chinese-big5-2) . big5) - ((ascii thai-tis620 composition) . tis-620) - ((ascii latin-iso8859-1 greek-iso8859-7 - latin-jisx0201 japanese-jisx0208-1978 - chinese-gb2312 japanese-jisx0208 - korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2) + ,(static-cond + ((null (string< mule-version "6.0")) + '((ascii thai-tis620) . tis-620)) + (t + '((ascii thai-tis620 composition) . tis-620))) + ;; ((ascii latin-iso8859-1 greek-iso8859-7 + ;; latin-jisx0201 japanese-jisx0208-1978 + ;; chinese-gb2312 japanese-jisx0208 + ;; korean-ksc5601 japanese-jisx0212) . iso-2022-jp-2) ;;((ascii latin-iso8859-1 greek-iso8859-7 ;; latin-jisx0201 japanese-jisx0208-1978 ;; chinese-gb2312 japanese-jisx0208 @@ -119,8 +123,16 @@ (defun coding-system-to-mime-charset (coding-system) "Convert CODING-SYSTEM to a MIME-charset. Return nil if corresponding MIME-charset is not found." - (or (car (rassq coding-system mime-charset-coding-system-alist)) - (coding-system-get coding-system 'mime-charset) + (or (coding-system-get coding-system 'mime-charset) + (let ((coding (coding-system-base coding-system)) + (alist mime-charset-coding-system-alist) + result) + (while alist + (if (eq (coding-system-base (cdar alist)) coding) + (setq result (caar alist) + alist nil) + (setq alist (cdr alist)))) + result) )) (defun-maybe-cond mime-charset-list () --- apel-10.8-orig/poe.el 2013-10-03 17:43:11.327761025 +1000 +++ apel-10.8/poe.el 2013-10-03 17:44:42.937760151 +1000 @@ -1996,8 +1996,9 @@ returned. If PROMPT is non-nil, it should be a string and will be displayed in the echo area while this function is waiting for an event." - ((and (>= emacs-major-version 20) - (>= emacs-minor-version 4)) + ((or (>= emacs-major-version 21) + (and (>= emacs-major-version 20) + (>= emacs-minor-version 4))) ;; Emacs 20.4 and later. (read-event prompt)) ; should specify 2nd arg? ((and (= emacs-major-version 20)