Mercurial > emacs
changeset 20162:dc6f12ef4d47
(find-safe-coding-system): New function.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 23 Oct 1997 12:05:45 +0000 |
parents | 0d9c6ccdc45c |
children | 5ff1329561b4 |
files | lisp/international/mule-util.el |
diffstat | 1 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/international/mule-util.el Thu Oct 23 12:05:45 1997 +0000 +++ b/lisp/international/mule-util.el Thu Oct 23 12:05:45 1997 +0000 @@ -287,6 +287,38 @@ (or (eq eol-type-1 eol-type-2) (and (vectorp eol-type-1) (vectorp eol-type-2))))))) +;;;###autoload +(defun find-safe-coding-system (from to) + "Return a list of proper coding systems to encode a text between FROM and TO. +All coding systems in the list can safely encode any multibyte characters +in the region. + +If the region contains no multibyte charcters, the returned list +contains a single element `undecided'. + +Kludgy feature: if FROM is a string, then that string is the target +for finding proper coding systems, and TO is ignored." + (let ((found (if (stringp from) + (find-charset-string from) + (find-charset-region from to))) + (l coding-system-list) + codings coding safe) + (if (and (= (length found) 1) + (eq 'ascii (car found))) + '(undecided) + (while l + (setq coding (car l) l (cdr l)) + (if (and (eq coding (coding-system-base coding)) + (setq safe (coding-system-get coding 'safe-charsets)) + (or (eq safe t) + (catch 'tag + (mapcar (function (lambda (x) + (if (not (memq x safe)) + (throw 'tag nil)))) + found)))) + (setq codings (cons coding codings)))) + codings))) + ;;; Composite charcater manipulations.