[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp/international mule-cmds.el
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] emacs/lisp/international mule-cmds.el |
Date: |
Tue, 27 Jan 2009 04:36:35 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Kenichi Handa <handa> 09/01/27 04:36:35
Modified files:
lisp/international: mule-cmds.el
Log message:
(canonicalize-coding-system-name)
(coding-system-from-name): New functions.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/international/mule-cmds.el?cvsroot=emacs&r1=1.355&r2=1.356
Patches:
Index: mule-cmds.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/mule-cmds.el,v
retrieving revision 1.355
retrieving revision 1.356
diff -u -b -r1.355 -r1.356
--- mule-cmds.el 24 Jan 2009 15:55:18 -0000 1.355
+++ mule-cmds.el 27 Jan 2009 04:36:35 -0000 1.356
@@ -243,6 +243,44 @@
(if coding coding 'undecided)
(if (numberp eol-type) (aref [unix dos mac] eol-type)))))
+;; Canonicalize the coding system name NAME by removing some prefixes
+;; and delimiter characters. Support function of
+;; coding-system-from-name.
+(defun canonicalize-coding-system-name (name)
+ (if (string-match "^iso[-_ ]?[0-9]" name)
+ ;; "iso-8859-1" -> "8859-1", "iso-2022-jp" ->"2022-jp"
+ (setq name (substring name (1- (match-end 0)))))
+ (let ((idx (string-match "[-_ /]" name)))
+ ;; Delete "-", "_", " ", "/" but do distinguish "16-be" and "16be".
+ (while idx
+ (if (and (>= idx 2)
+ (eq (string-match "16-[lb]e$" name (- idx 2))
+ (- idx 2)))
+ (setq idx (string-match "[-_ /]" name (match-end 0)))
+ (setq name (concat (substring name 0 idx) (substring name (1+ idx)))
+ idx (string-match "[-_ /]" name idx))))
+ name))
+
+(defun coding-system-from-name (name)
+ "Return a coding system whose name matches with NAME (string or symbol)."
+ (let (sym)
+ (if (stringp name) (setq sym (intern name))
+ (setq sym name name (symbol-name name)))
+ (if (coding-system-p sym)
+ sym
+ (let ((eol-type
+ (if (string-match "-\\(unix\\|dos\\|mac\\)$" name)
+ (prog1 (intern (match-string 1 name))
+ (setq name (substring name 0 (match-beginning 0)))))))
+ (setq name (canonicalize-coding-system-name (downcase name)))
+ (catch 'tag
+ (dolist (elt (coding-system-list))
+ (if (string= (canonicalize-coding-system-name (symbol-name elt))
+ name)
+ (throw 'tag (if eol-type (coding-system-change-eol-conversion
+ elt eol-type)
+ elt)))))))))
+
(defun toggle-enable-multibyte-characters (&optional arg)
"Change whether this buffer uses multibyte characters.
With ARG, use multibyte characters if the ARG is positive.