Commit be7ca044 authored by Kenichi Handa's avatar Kenichi Handa
Browse files


(coding-system-from-name): New functions.
parent f143d380
2009-01-27 Kenichi Handa <>
* NEWS: New function `coding-sytem-from-name'.
2009-01-25 Carsten Dominik <>
* refcards/orgcard.tex: New year and version number.
......@@ -243,6 +243,44 @@ how text is formatted automatically while decoding."
(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))))
(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)
(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))
(throw 'tag (if eol-type (coding-system-change-eol-conversion
elt eol-type)
(defun toggle-enable-multibyte-characters (&optional arg)
"Change whether this buffer uses multibyte characters.
With ARG, use multibyte characters if the ARG is positive.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment