commit: Update FSF address in permissions notice.
15 years, 8 months
Stephen Turnbull
changeset: 4630:64e5e393f15d
user: Stephen J. Turnbull <stephen(a)xemacs.org>
date: Wed Apr 01 20:07:33 2009 +0900
files: lisp/lisp-mnt.el
description:
Update FSF address in permissions notice.
diff -r a1dd514df5c6 -r 64e5e393f15d lisp/lisp-mnt.el
--- a/lisp/lisp-mnt.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/lisp-mnt.el Wed Apr 01 20:07:33 2009 +0900
@@ -24,8 +24,8 @@
;; You should have received a copy of the GNU General Public License
;; along with XEmacs; see the file COPYING. If not, write to the Free
-;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-;; 02111-1307, USA.
+;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Synched up with: FSF 20.2.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[AC web] Mercurial says "Not trusting file hgrc from untrusted user"
15 years, 8 months
Stephen J. Turnbull
APPROVE COMMIT web
Due to a recent upgrade of Mercurial on Alioth, your Mercurial may be
complaining about an untrusted hgrc. This is a good thing in general,
because any hgrc file can contain executable code. However, in this
context, it's mostly an annoyance. This patch describes the issue on
the web site, and how to quiet Mercurial (and get the benefits of the
hgrc file).
Thanks to Mike Sperber for tracking this down and explaining it to me.
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/ChangeLog,v
retrieving revision 1.285
diff -U0 -r1.285 ChangeLog
--- ChangeLog 15 Apr 2009 19:16:01 -0000 1.285
+++ ChangeLog 17 Apr 2009 13:02:37 -0000
@@ -0,0 +1,5 @@
+2009-04-17 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * index.content (News): Document Mercurial upgrade and untrusted
+ user issue.
+
Index: Develop/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Develop/ChangeLog,v
retrieving revision 1.111
diff -U0 -r1.111 ChangeLog
--- Develop/ChangeLog 24 Feb 2009 15:02:34 -0000 1.111
+++ Develop/ChangeLog 17 Apr 2009 13:02:38 -0000
@@ -0,0 +1,4 @@
+2009-04-17 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * hgaccess.content (trusted-users): Document issue.
+
Index: index.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/index.content,v
retrieving revision 1.189
diff -U0 -r1.189 index.content
--- index.content 15 Apr 2009 19:16:01 -0000 1.189
+++ index.content 17 Apr 2009 13:02:38 -0000
@@ -111,0 +112,8 @@
+ <dt><strong>2008-03-15</strong></dt>
+ <dd>
+ <p>Around this date, Debian upgraded Mercurial on Alioth (the
+ host for hg.xemacs.org), and tightened security somewhat.
+ <a href="Develop/hgaccess.html#trusted-users">How to tell
+ Mercurial to trust a developer.</a>
+ </p>
+ </dd>
Index: Develop/hgaccess.content
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Develop/hgaccess.content,v
retrieving revision 1.4
diff -U0 -r1.4 hgaccess.content
--- Develop/hgaccess.content 24 Jun 2008 07:03:05 -0000 1.4
+++ Develop/hgaccess.content 17 Apr 2009 13:02:38 -0000
@@ -11,0 +12,4 @@
+ <p>Debian has upgraded Mercurial, and security tightened somewhat.
+ <a href="#trusted-users">How to tell Mercurial to trust a
+ developer.</a></p>
+
@@ -40,0 +45,2 @@
+ <li><a href="#trusted-users">Trusting other users</a></li>
+
@@ -299,0 +306,32 @@
+
+ <h3><a name="trusted-users">Do you have the paranoia blues?</a></h3>
+
+ <p>
+ Recent versions of Mercurial have had their security
+ consciousness strengthened. Specifically, when another user has
+ committed an hgrc to the repository you're pulling from, you may
+ get a message that looks like
+ </p>
+
+ <pre> xml:space="preserve">
+remote: not trusting file hg/xemacs/xemacs/.hg/hgrc from untrusted user sperber-guest, group xemacs
+ </pre>
+
+ <p>
+ In theory, Mike could cause execution of arbitrary code on your
+ box. But hey, what's to worry: you're already running Dired and
+ EFS, aren't you? Mike could have pwnzered you long ago, right?
+ So if you find that comforting, and you'd like to trust Mike,
+ run his workspace hgrc file in your xemacs workspace(s), and
+ incidentally suppress the warning, you can add
+ </p>
+
+ <pre> xml:space="preserve">
+[trusted]
+users = sperber-guest
+ </pre>
+
+ <p>
+ to your ~/.hgrc <strong>on alioth.debian.org</strong>. For more
+ information, see the Mercurial documentation.
+ </p>
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] C support for full Common Lisp multiple values.
15 years, 8 months
Aidan Kehoe
This code runs but is not production-ready; see
http://mid.gmane.org/18912.40510.593475.645687@parhasard.net for my
motivation in posting it now. In particular, it needs tests, and it also
needs to add some code at the start of any byte-compiled files that use the
multiple value functionality to bomb out if the current XEmacs does not
support them. My thinking for the tests was to change #'floor and #'ceiling
to actually return the multiple values as specified by CL, and to look at
CLTL and the hyperspec for examples of what should be checked.
diff -r a1dd514df5c6 etc/gdbinit.in
--- a/etc/gdbinit.in Sun Mar 08 22:52:13 2009 +0200
+++ b/etc/gdbinit.in Sat Apr 11 14:34:47 2009 +0100
@@ -71,6 +71,8 @@
#endif
set $Lisp_Type_Int = -2
+set $Lisp_Type_Record = 0
+set $Lisp_Type_Char = 2
define decode_object
set $obj = (unsigned long) $arg0
@@ -80,7 +82,7 @@
set $type = $Lisp_Type_Int
else
set $type = $obj & dbg_typemask
- if $type == Lisp_Type_Char
+ if $type == $Lisp_Type_Char
set $val = ($obj & dbg_valmask) >> dbg_gctypebits
else
## It's a record pointer
@@ -88,7 +90,7 @@
end
end
- if $type == Lisp_Type_Record
+ if $type == $Lisp_Type_Record
set $lheader = ((struct lrecord_header *) $val)
set $lrecord_type = ($lheader->type)
set $imp = ((struct lrecord_implementation *) lrecord_implementations_table[(int) $lrecord_type])
@@ -115,7 +117,7 @@
if $type == $Lisp_Type_Int
echo int\n
else
- if $type == Lisp_Type_Char
+ if $type == $Lisp_Type_Char
echo char\n
else
printf "record type: %s\n", $imp->name
@@ -264,7 +266,7 @@
if $type == $Lisp_Type_Int
printf "Integer: %d\n", $val
else
- if $type == Lisp_Type_Char
+ if $type == $Lisp_Type_Char
if $val > 32 && $val < 128
printf "Char: %c\n", $val
else
@@ -393,6 +395,8 @@
else
if $lrecord_type == lrecord_type_subr
pptype Lisp_Subr
+ if $lrecord_type == lrecord_type_multiple_value
+ pptype multiple_value
else
if $lrecord_type == lrecord_type_symbol_value_buffer_local
pstructtype symbol_value_buffer_local
@@ -493,6 +497,7 @@
end
end
end
+ end
end
document pobj
diff -r a1dd514df5c6 lisp/byte-optimize.el
--- a/lisp/byte-optimize.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/byte-optimize.el Sat Apr 11 14:34:47 2009 +0100
@@ -1093,7 +1093,7 @@
(put 'nlistp 'byte-optimizer 'byte-compile-negation-optimizer)
(defun byte-optimize-funcall (form)
- ;; (funcall '(lambda ...) ...) ==> ((lambda ...) ...)
+ ;; (funcall #'(lambda ...) ...) ==> ((lambda ...) ...)
;; (funcall 'foo ...) ==> (foo ...)
(let ((fn (nth 1 form)))
(if (memq (car-safe fn) '(quote function))
diff -r a1dd514df5c6 lisp/bytecomp.el
--- a/lisp/bytecomp.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/bytecomp.el Sat Apr 11 14:34:47 2009 +0100
@@ -733,7 +733,10 @@
(byte-defop 176 nil byte-concatN)
(byte-defop 177 nil byte-insertN)
-;; unused: 178-181
+(byte-defop 178 1 byte-bind-multiple-value-limits)
+(byte-defop 179 -3 byte-multiple-value-list-internal)
+(byte-defop 180 0 byte-multiple-value-call)
+(byte-defop 181 -1 byte-throw)
;; these ops are new to v20
(byte-defop 182 -1 byte-member)
@@ -1718,9 +1721,7 @@
;; byte-compile-warning-types
;; byte-compile-warnings))
(byte-compile-force-escape-quoted byte-compile-force-escape-quoted)
- (byte-compile-using-dynamic nil)
- (byte-compile-using-escape-quoted nil)
- )
+ (byte-compile-using-dynamic nil))
(byte-compile-close-variables
(save-excursion
(setq byte-compile-outbuffer
@@ -3081,6 +3082,11 @@
(byte-defop-compiler (% byte-rem) 2)
(byte-defop-compiler aset 3)
+(byte-defop-compiler-1 bind-multiple-value-limits)
+(byte-defop-compiler multiple-value-list-internal)
+(byte-defop-compiler-1 multiple-value-call)
+(byte-defop-compiler throw)
+
(byte-defop-compiler-rmsfun member 2)
(byte-defop-compiler-rmsfun assq 2)
@@ -3099,11 +3105,14 @@
;;(byte-defop-compiler (mod byte-rem) 2)
-(defun byte-compile-subr-wrong-args (form n)
+(defun byte-compile-warn-wrong-args (form n)
(when (memq 'subr-callargs byte-compile-warnings)
(byte-compile-warn "%s called with %d arg%s, but requires %s"
(car form) (length (cdr form))
- (if (= 1 (length (cdr form))) "" "s") n))
+ (if (= 1 (length (cdr form))) "" "s") n)))
+
+(defun byte-compile-subr-wrong-args (form n)
+ (byte-compile-warn-wrong-args form n)
;; get run-time wrong-number-of-args error.
(byte-compile-normal-call form))
@@ -3638,6 +3647,9 @@
(byte-defop-compiler-1 inline byte-compile-progn)
(byte-defop-compiler-1 progn)
(byte-defop-compiler-1 prog1)
+(byte-defop-compiler-1 multiple-value-prog1)
+(byte-defop-compiler-1 values)
+(byte-defop-compiler-1 values-list)
(byte-defop-compiler-1 prog2)
(byte-defop-compiler-1 if)
(byte-defop-compiler-1 cond)
@@ -3657,13 +3669,36 @@
(defun byte-compile-prog1 (form)
(setq form (cdr form))
+ ;; #'prog1 never returns multiple values:
+ (byte-compile-form-do-effect (list 'values (pop form)))
+ (byte-compile-body form t))
+
+(defun byte-compile-multiple-value-prog1 (form)
+ (setq form (cdr form))
(byte-compile-form-do-effect (pop form))
(byte-compile-body form t))
+
+(defun byte-compile-values (form)
+ (if (and (= 2 (length form))
+ (byte-compile-constp (second form)))
+ (byte-compile-form-do-effect (second form))
+ (byte-compile-normal-call form)))
+
+(defun byte-compile-values-list (form)
+ (if (and (= 2 (length form))
+ (or (null (second form))
+ (and (consp (second form))
+ (eq (car (second form))
+ 'quote)
+ (not (symbolp (car-safe (cdr (second form))))))))
+ (byte-compile-form-do-effect (car-safe (cdr (second form))))
+ (byte-compile-normal-call form)))
(defun byte-compile-prog2 (form)
(setq form (cdr form))
(byte-compile-form (pop form) t)
- (byte-compile-form-do-effect (pop form))
+ ;; #'prog2 never returns multiple values:
+ (byte-compile-form-do-effect (list 'values (pop form)))
(byte-compile-body form t))
(defmacro byte-compile-goto-if (cond discard tag)
@@ -3949,6 +3984,56 @@
(byte-compile-body (cdr (cdr form)))
(byte-compile-out 'byte-temp-output-buffer-show 0))
+(defun byte-compile-multiple-value-call (form)
+ (if (< (length form) 2)
+ (progn
+ (byte-compile-warn-wrong-args form 1)
+ (byte-compile-normal-call
+ `(signal 'wrong-number-of-arguments '(,(car form)
+ ,(length (cdr form))))))
+ (setq form (cdr form))
+ (byte-compile-form (car form))
+ (byte-compile-push-constant 0)
+ (byte-compile-variable-ref 'byte-varref 'multiple-values-limit)
+ ;; bind-multiple-value-limits leaves two existing values on the stack,
+ ;; and pushes a new value, the specpdl_depth() at the time it was
+ ;; called.
+ (byte-compile-out 'byte-bind-multiple-value-limits 0)
+ (mapcar 'byte-compile-form (cdr form))
+ ;; Most of the other code puts this sort of value in the program stream,
+ ;; not pushing it on the stack.
+ (byte-compile-push-constant (+ 3 (length form)))
+ (byte-compile-out 'byte-multiple-value-call (+ 3 (length form)))))
+
+(defun byte-compile-multiple-value-list-internal (form)
+ (if (/= 4 (length form))
+ (progn
+ (byte-compile-warn-wrong-args form 3)
+ (byte-compile-normal-call
+ `(signal 'wrong-number-of-arguments '(,(car form)
+ ,(length (cdr form))))))
+ (byte-compile-form (nth 1 form))
+ (byte-compile-form (nth 2 form))
+ (byte-compile-out 'byte-bind-multiple-value-limits 0)
+ (byte-compile-form (nth 3 form))
+ (byte-compile-out (get (car form) 'byte-opcode) 0)))
+
+(defun byte-compile-throw (form)
+ ;; We can't use byte-compile-two-args for throw because in the event that
+ ;; the form does not have two args, it tries to #'funcall it expecting a
+ ;; runtime wrong-number-of-arguments error. Now that #'throw is a special
+ ;; form, it provokes an invalid-function error instead (or at least it
+ ;; should; there's a kludge around for the moment in eval.c that avoids
+ ;; that, but this file should not assume that that will always be there).
+ (if (/= 2 (length (cdr form)))
+ (progn
+ (byte-compile-warn-wrong-args form 2)
+ (byte-compile-normal-call
+ `(signal 'wrong-number-of-arguments '(,(car form)
+ ,(length (cdr form))))))
+ (byte-compile-form (nth 1 form)) ;; Push the arguments
+ (byte-compile-form (nth 2 form))
+ (byte-compile-out (get (car form) 'byte-opcode) 0)))
;;; top-level forms elsewhere
@@ -4112,6 +4197,8 @@
;; This is actually an unnecessary case, because there should be
;; no more opcodes behind byte-return.
(setq byte-compile-depth nil))
+ (byte-multiple-value-call
+ (setq byte-compile-depth (- byte-compile-depth offset)))
(t
(setq byte-compile-depth (+ byte-compile-depth
(or (aref byte-stack+-info
diff -r a1dd514df5c6 lisp/cl-compat.el
--- a/lisp/cl-compat.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/cl-compat.el Sat Apr 11 14:34:47 2009 +0100
@@ -59,52 +59,10 @@
(defun keyword-of (sym)
(or (keywordp sym) (keywordp (intern (format ":%s" sym)))))
-
-;;; Multiple values. Note that the new package uses a different
-;;; convention for multiple values. The following definitions
-;;; emulate the old convention; all function names have been changed
-;;; by capitalizing the first letter: Values, Multiple-value-*,
-;;; to avoid conflict with the new-style definitions in cl-macs.
-
-(put 'Multiple-value-bind 'lisp-indent-function 2)
-(put 'Multiple-value-setq 'lisp-indent-function 2)
-(put 'Multiple-value-call 'lisp-indent-function 1)
-(put 'Multiple-value-prog1 'lisp-indent-function 1)
-
-(defvar *mvalues-values* nil)
-
-(defun Values (&rest val-forms)
- (setq *mvalues-values* val-forms)
- (car val-forms))
-
-(defun Values-list (val-forms)
- (apply 'values val-forms))
-
-(defmacro Multiple-value-list (form)
- (list 'let* (list '(*mvalues-values* nil) (list '*mvalues-temp* form))
- '(or (and (eq *mvalues-temp* (car *mvalues-values*)) *mvalues-values*)
- (list *mvalues-temp*))))
-
-(defmacro Multiple-value-call (function &rest args)
- (list 'apply function
- (cons 'append
- (mapcar (function (lambda (x) (list 'Multiple-value-list x)))
- args))))
-
-(defmacro Multiple-value-bind (vars form &rest body)
- (list* 'multiple-value-bind vars (list 'Multiple-value-list form) body))
-
-(defmacro Multiple-value-setq (vars form)
- (list 'multiple-value-setq vars (list 'Multiple-value-list form)))
-
-(defmacro Multiple-value-prog1 (form &rest body)
- (list 'prog1 form (list* 'let '((*mvalues-values* nil)) body)))
-
-
;;; Routines for parsing keyword arguments.
(defun build-klist (arglist keys &optional allow-others)
- (let ((res (Multiple-value-call 'mapcar* 'cons (unzip-lists arglist))))
+ (let ((res (multiple-value-call 'mapcar* 'cons (unzip-lists arglist))))
(or allow-others
(let ((bad (set-difference (mapcar 'car res) keys)))
(if bad (error "Bad keywords: %s not in %s" bad keys))))
@@ -127,22 +85,22 @@
;;; Rounding functions with old-style multiple value returns.
-(defun cl-floor (a &optional b) (Values-list (floor* a b)))
-(defun cl-ceiling (a &optional b) (Values-list (ceiling* a b)))
-(defun cl-round (a &optional b) (Values-list (round* a b)))
-(defun cl-truncate (a &optional b) (Values-list (truncate* a b)))
+(defun cl-floor (a &optional b) (values-list (floor* a b)))
+(defun cl-ceiling (a &optional b) (values-list (ceiling* a b)))
+(defun cl-round (a &optional b) (values-list (round* a b)))
+(defun cl-truncate (a &optional b) (values-list (truncate* a b)))
(defun safe-idiv (a b)
(let* ((q (/ (abs a) (abs b)))
(s (* (signum a) (signum b))))
- (Values q (- a (* s q b)) s)))
+ (values q (- a (* s q b)) s)))
;; Internal routines.
(defun pair-with-newsyms (oldforms)
(let ((newsyms (mapcar (function (lambda (x) (gensym))) oldforms)))
- (Values (mapcar* 'list newsyms oldforms) newsyms)))
+ (values (mapcar* 'list newsyms oldforms) newsyms)))
(defun zip-lists (evens odds)
(mapcan 'list evens odds))
@@ -151,7 +109,7 @@
(let ((e nil) (o nil))
(while list
(setq e (cons (car list) e) o (cons (cadr list) o) list (cddr list)))
- (Values (nreverse e) (nreverse o))))
+ (values (nreverse e) (nreverse o))))
(defun reassemble-argslists (list)
(let ((n (apply 'min (mapcar 'length list))) (res nil))
diff -r a1dd514df5c6 lisp/cl-macs.el
--- a/lisp/cl-macs.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/cl-macs.el Sat Apr 11 14:34:47 2009 +0100
@@ -715,24 +715,30 @@
(defvar cl-active-block-names nil)
-(put 'cl-block-wrapper 'byte-compile 'cl-byte-compile-block)
-(defun cl-byte-compile-block (cl-form)
- (if (fboundp 'byte-compile-form-do-effect) ; Check for optimizing compiler
- (progn
- (let* ((cl-entry (cons (nth 1 (nth 1 (nth 1 cl-form))) nil))
- (cl-active-block-names (cons cl-entry cl-active-block-names))
- (cl-body (byte-compile-top-level
- (cons 'progn (cddr (nth 1 cl-form))))))
- (if (cdr cl-entry)
- (byte-compile-form (list 'catch (nth 1 (nth 1 cl-form)) cl-body))
- (byte-compile-form cl-body))))
- (byte-compile-form (nth 1 cl-form))))
+(put 'cl-block-wrapper 'byte-compile
+ #'(lambda (cl-form)
+ (if (/= (length cl-form) 2)
+ (byte-compile-warn-wrong-args cl-form 1))
-(put 'cl-block-throw 'byte-compile 'cl-byte-compile-throw)
-(defun cl-byte-compile-throw (cl-form)
- (let ((cl-found (assq (nth 1 (nth 1 cl-form)) cl-active-block-names)))
- (if cl-found (setcdr cl-found t)))
- (byte-compile-normal-call (cons 'throw (cdr cl-form))))
+ (if (fboundp 'byte-compile-form-do-effect) ; Check for optimizing
+ ; compiler
+ (progn
+ (let* ((cl-entry (cons (nth 1 (nth 1 (nth 1 cl-form))) nil))
+ (cl-active-block-names (cons cl-entry
+ cl-active-block-names))
+ (cl-body (byte-compile-top-level
+ (cons 'progn (cddr (nth 1 cl-form))))))
+ (if (cdr cl-entry)
+ (byte-compile-form (list 'catch (nth 1 (nth 1 cl-form))
+ cl-body))
+ (byte-compile-form cl-body))))
+ (byte-compile-form (nth 1 cl-form)))))
+
+(put 'cl-block-throw 'byte-compile
+ #'(lambda (cl-form)
+ (let ((cl-found (assq (nth 1 (nth 1 cl-form)) cl-active-block-names)))
+ (if cl-found (setcdr cl-found t)))
+ (byte-compile-throw (cons 'throw (cdr cl-form)))))
;;;###autoload
(defmacro return (&optional result)
@@ -1841,47 +1847,70 @@
(list 'function (cons 'lambda rest)))
(list 'quote func)))
-
-;;; Multiple values.
+;;; Multiple values. We support full Common Lisp conventions here.
;;;###autoload
-(defmacro multiple-value-bind (vars form &rest body)
- "(multiple-value-bind (SYM SYM...) FORM BODY): collect multiple return values.
-FORM must return a list; the BODY is then executed with the first N elements
-of this list bound (`let'-style) to each of the symbols SYM in turn. This
-is analogous to the Common Lisp `multiple-value-bind' macro, using lists to
-simulate true multiple return values. For compatibility, (values A B C) is
-a synonym for (list A B C)."
- (let ((temp (gensym)) (n -1))
- (list* 'let* (cons (list temp form)
- (mapcar #'(lambda (v)
- (list v (list 'nth (setq n (1+ n)) temp)))
- vars))
- body)))
+(defmacro multiple-value-bind (syms form &rest body)
+ "Collect and bind multiple return values.
+
+If FORM returns multiple values, each symbol in SYMS is bound to one of
+them, in order, and BODY is executed. If FORM returns fewer multiple values
+than there are SYMS, remaining SYMS are bound to nil. If FORM does
+not return multiple values, it is treated as returning one multiple value.
+
+Returns the value given by the last element of BODY."
+ (if (null syms)
+ `(progn ,form ,@body)
+ (if (= 1 (length syms))
+ ;; Code written to deal with other "implementations" of multiple
+ ;; values may have a one-element SYMS.
+ `(let ((,(car syms) ,form))
+ ,@body)
+ (let ((temp (gensym)))
+ `(let* ((,temp (multiple-value-list-internal 0 ,(length syms) ,form))
+ ,@(loop
+ for var in syms
+ collect `(,var (prog1 (car ,temp)
+ (setq ,temp (cdr ,temp))))))
+ ,@body)))))
;;;###autoload
-(defmacro multiple-value-setq (vars form)
- "(multiple-value-setq (SYM SYM...) FORM): collect multiple return values.
-FORM must return a list; the first N elements of this list are stored in
-each of the symbols SYM in turn. This is analogous to the Common Lisp
-`multiple-value-setq' macro, using lists to simulate true multiple return
-values. For compatibility, (values A B C) is a synonym for (list A B C)."
- (cond ((null vars) (list 'progn form nil))
- ((null (cdr vars)) (list 'setq (car vars) (list 'car form)))
- (t
- (let* ((temp (gensym)) (n 0))
- (list 'let (list (list temp form))
- (list 'prog1 (list 'setq (pop vars) (list 'car temp))
- (cons 'setq
- (apply 'nconc
- (mapcar
- #'(lambda (v)
- (list v (list
- 'nth
- (setq n (1+ n))
- temp)))
- vars)))))))))
+(defmacro multiple-value-setq (syms form)
+ "Collect and set multiple values.
+FORM should normally return multiple values; the first N values are stored
+in the symbols in SYMS in turn. If FORM returns fewer than N values, the
+remaining symbols have their values set to nil. FORM not returning multiple
+values is treated as FORM returning one multiple value, with other elements
+of SYMS initialized to nil.
+
+Returns the first of the multiple values given by FORM."
+ (if (null syms)
+ ;; Never return multiple values from multiple-value-setq:
+ (and form `(values ,form))
+ (if (= 1 (length syms))
+ `(setq ,(car syms) ,form)
+ (let ((temp (gensym)))
+ `(let* ((,temp (multiple-value-list-internal 0 ,(length syms) ,form)))
+ (setq ,@(loop
+ for sym in syms
+ nconc `(,sym (car-safe ,temp)
+ ,temp (cdr-safe ,temp))))
+ ,(car syms))))))
+
+;;;###autoload
+(defmacro multiple-value-list (form)
+ "Evaluate FORM and return a list of the multiple values it returned."
+ `(multiple-value-list-internal 0 multiple-values-limit ,form))
+
+;;;###autoload
+(defmacro nth-value (n form)
+ "Evaluate FORM and return the Nth multiple value it returned."
+ (if (integerp n)
+ `(car (multiple-value-list-internal ,n ,(1+ n) ,form))
+ (let ((temp (gensym)))
+ `(let ((,temp ,n))
+ (car (multiple-value-list-internal ,temp (1+ ,temp) ,form))))))
;;; Declarations.
diff -r a1dd514df5c6 lisp/cl.el
--- a/lisp/cl.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/cl.el Sat Apr 11 14:34:47 2009 +0100
@@ -209,48 +209,24 @@
;;; Blocks and exits.
-(defalias 'cl-block-wrapper 'identity)
+;; This used to be #'identity, but that didn't preserve multiple values in
+;; interpreted code. #'and isn't great either, there's no error on too many
+;; arguments passed to it when interpreted. Fortunately most of the places
+;; where cl-block-wrapper is called are generated from old, established
+;; macros, so too many arguments resulting from human error is unlikely; and
+;; the byte compile handler in cl-macs.el warns if more than one arg is
+;; passed to it.
+(defalias 'cl-block-wrapper 'and)
+
(defalias 'cl-block-throw 'throw)
+;;; XEmacs; multiple values are in eval.c and cl-macs.el.
-;;; Multiple values. True multiple values are not supported, or even
-;;; simulated. Instead, multiple-value-bind and friends simply expect
-;;; the target form to return the values as a list.
+;;; We no longer support `multiple-value-apply', which was ill-conceived to
+;;; start with, is not specified by Common Lisp, and which nothing uses,
+;;; according to Google Code Search, as of Sat Mar 14 23:31:35 GMT 2009.
-(defsubst values (&rest values)
- "Return multiple values, Common Lisp style.
-The arguments of `values' are the values
-that the containing function should return."
- values)
-
-(defsubst values-list (list)
- "Return multiple values, Common Lisp style, taken from a list.
-LIST specifies the list of values
-that the containing function should return."
- list)
-
-(defsubst multiple-value-list (expression)
- "Return a list of the multiple values produced by EXPRESSION.
-This handles multiple values in Common Lisp style, but it does not
-work right when EXPRESSION calls an ordinary Emacs Lisp function
-that returns just one value."
- expression)
-
-(defsubst multiple-value-apply (function expression)
- "Evaluate EXPRESSION to get multiple values and apply FUNCTION to them.
-This handles multiple values in Common Lisp style, but it does not work
-right when EXPRESSION calls an ordinary Emacs Lisp function that returns just
-one value."
- (apply function expression))
-
-(defalias 'multiple-value-call 'apply) ; only works for one arg
-
-(defsubst nth-value (n expression)
- "Evaluate EXPRESSION to get multiple values and return the Nth one.
-This handles multiple values in Common Lisp style, but it does not work
-right when EXPRESSION calls an ordinary Emacs Lisp function that returns just
-one value."
- (nth n expression))
+(make-obsolete 'multiple-value-apply 'multiple-value-call)
;;; Macros.
diff -r a1dd514df5c6 lisp/help.el
--- a/lisp/help.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/help.el Sat Apr 11 14:34:47 2009 +0100
@@ -1402,7 +1402,7 @@
(cond
((eq 'neither macro-p)
"")
- (macrop " macro")
+ (macro-p " macro")
(t " function"))))
string)))))
(cond ((or (stringp def) (vectorp def))
diff -r a1dd514df5c6 lisp/lisp-mode.el
--- a/lisp/lisp-mode.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/lisp-mode.el Sat Apr 11 14:34:47 2009 +0100
@@ -424,36 +424,54 @@
been treated noninteractively.
The printed messages are \"defvar treated as defconst\" and \"defcustom
- evaluation forced\". See `eval-interactive' for more details."
+evaluation forced\". See `eval-interactive' for more details."
:type 'boolean
:group 'lisp)
(defun eval-interactive (expr)
- "Like `eval' except that it transforms defvars to defconsts.
-The evaluation of defcustom forms is forced."
+ "Evaluate EXPR; pass back multiple values, transform defvars to defconsts.
+
+Always returns a list. The length of this list will be something other than
+one if the form returned multiple values. It will be zero if the form
+returned a single zero-length multiple value."
(cond ((and (eq (car-safe expr) 'defvar)
(> (length expr) 2))
- (eval (cons 'defconst (cdr expr)))
+ (setq expr (multiple-value-list (eval (cons 'defconst (cdr expr)))))
(when eval-interactive-verbose
(message "defvar treated as defconst")
(sit-for 1)
(message ""))
- (nth 1 expr))
+ expr)
((and (eq (car-safe expr) 'defcustom)
(> (length expr) 2)
(default-boundp (nth 1 expr)))
;; Force variable to be bound
- ;; #### defcustom might specify a different :set method.
- (set-default (nth 1 expr) (eval (nth 2 expr)))
+ (funcall
+ (or (plist-get expr :set) #'custom-set-default)
+ (nth 1 expr) (eval (nth 2 expr)))
;; And evaluate the defcustom
- (eval expr)
+ (setq expr (multiple-value-list (eval expr)))
(when eval-interactive-verbose
(message "defcustom evaluation forced")
(sit-for 1)
(message ""))
- (nth 1 expr))
+ expr)
(t
- (eval expr))))
+ (multiple-value-list (eval expr)))))
+
+(defun prin1-list-as-multiple-values (multiple-value-list &optional stream)
+ "Call `prin1' on each element of MULTIPLE-VALUE-LIST, separated by \" ;\\n\"
+
+If MULTIPLE-VALUE-LIST is zero-length, print the text
+\"#<zero length multiple value> ;\\n\". Always returns nil."
+ (loop for value in multiple-value-list
+ with seen-first = nil
+ do
+ (if seen-first
+ (princ " ;\n" stream)
+ (setq seen-first t))
+ (prin1 value stream)
+ finally (unless seen-first (princ "#<zero length multiple value> ;"))))
;; XEmacs change, based on Bob Weiner suggestion
(defun eval-last-sexp (eval-last-sexp-arg-internal) ;dynamic scoping wonderment
@@ -463,31 +481,32 @@
(let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t))
(opoint (point))
ignore-quotes)
- (prin1 (eval-interactive
- (letf (((syntax-table) emacs-lisp-mode-syntax-table))
- (save-excursion
- ;; If this sexp appears to be enclosed in `...' then
- ;; ignore the surrounding quotes.
- (setq ignore-quotes (or (eq (char-after) ?\')
- (eq (char-before) ?\')))
- (forward-sexp -1)
- ;; vladimir(a)cs.ualberta.ca 30-Jul-1997: skip ` in
- ;; `variable' so that the value is returned, not the
- ;; name.
- (if (and ignore-quotes
- (eq (char-after) ?\`))
- (forward-char))
- (save-restriction
- (narrow-to-region (point-min) opoint)
- (let ((expr (read (current-buffer))))
- (if (eq (car-safe expr) 'interactive)
- ;; If it's an (interactive ...) form, it's
- ;; more useful to show how an interactive call
- ;; would use it.
- `(call-interactively
- (lambda (&rest args)
- ,expr args))
- expr)))))))))
+ (prin1-list-as-multiple-values
+ (eval-interactive
+ (letf (((syntax-table) emacs-lisp-mode-syntax-table))
+ (save-excursion
+ ;; If this sexp appears to be enclosed in `...' then
+ ;; ignore the surrounding quotes.
+ (setq ignore-quotes (or (eq (char-after) ?\')
+ (eq (char-before) ?\')))
+ (forward-sexp -1)
+ ;; vladimir(a)cs.ualberta.ca 30-Jul-1997: skip ` in
+ ;; `variable' so that the value is returned, not the
+ ;; name.
+ (if (and ignore-quotes
+ (eq (char-after) ?\`))
+ (forward-char))
+ (save-restriction
+ (narrow-to-region (point-min) opoint)
+ (let ((expr (read (current-buffer))))
+ (if (eq (car-safe expr) 'interactive)
+ ;; If it's an (interactive ...) form, it's
+ ;; more useful to show how an interactive call
+ ;; would use it.
+ `(call-interactively
+ (lambda (&rest args)
+ ,expr args))
+ expr)))))))))
(defun eval-defun (eval-defun-arg-internal)
"Evaluate defun that point is in or before.
@@ -495,11 +514,12 @@
With argument, insert value in current buffer after the defun."
(interactive "P")
(let ((standard-output (if eval-defun-arg-internal (current-buffer) t)))
- (prin1 (eval-interactive (save-excursion
- (end-of-defun)
- (beginning-of-defun)
- (read (current-buffer)))))))
-
+ (prin1-list-as-multiple-values
+ (eval-interactive
+ (save-excursion
+ (end-of-defun)
+ (beginning-of-defun)
+ (read (current-buffer)))))))
(defun lisp-comment-indent ()
(if (looking-at "\\s<\\s<\\s<")
diff -r a1dd514df5c6 lisp/mouse.el
--- a/lisp/mouse.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/mouse.el Sat Apr 11 14:34:47 2009 +0100
@@ -278,18 +278,25 @@
(message "Regex \"%s\" not found" exp)
(ding nil 'quiet)))
(t (setq val (if (fboundp 'eval-interactive)
- (eval-interactive exp)
- (eval exp)))))
- (setq result-str (prin1-to-string val))
+ (eval-interactive exp)
+ (list (eval exp))))))
+ (setq result-str (mapconcat #'prin1-to-string val " ;\n"))
;; #### -- need better test
+ (message "does the result string have newline? %S"
+ (string-match "\n" result-str))
(if (and (not force-window)
- (<= (length result-str) (window-width (selected-window))))
+ (<= (length result-str) (window-width (selected-window)))
+ (not (string-match "\n" result-str)))
(message "%s" result-str)
(with-output-to-temp-buffer "*Mouse-Eval*"
- (if-fboundp 'pprint
- (pprint val)
- (prin1 val)))
- )))
+ (loop
+ for value in val
+ with seen-first = nil
+ do
+ (if seen-first
+ (princ " ;\n")
+ (setq seen-first t))
+ (cl-prettyprint value))))))
(defun mouse-line-length (event)
"Print the length of the line indicated by the pointer."
diff -r a1dd514df5c6 lisp/obsolete.el
--- a/lisp/obsolete.el Sun Mar 08 22:52:13 2009 +0200
+++ b/lisp/obsolete.el Sat Apr 11 14:34:47 2009 +0100
@@ -395,5 +395,18 @@
(make-obsolete 'function-called-at-point 'function-at-point)
+;; As of 21.5, #'throw is a special form. This makes bytecode using it
+;; compiled for 21.4 fail; making this function available works around that.
+(defun obsolete-throw (tag value)
+ "Ugly compatibility hack.
+
+See the implementation of #'funcall in eval.c. This should be removed once
+we no longer encounter bytecode from 21.4."
+ (throw tag value))
+
+(make-obsolete
+ 'obsolete-throw
+ "it says `obsolete' in the name, you know you shouldn't be using this.")
+
(provide 'obsolete)
;;; obsolete.el ends here
diff -r a1dd514df5c6 man/cl.texi
--- a/man/cl.texi Sun Mar 08 22:52:13 2009 +0200
+++ b/man/cl.texi Sat Apr 11 14:34:47 2009 +0100
@@ -249,9 +249,8 @@
There is another file, @file{cl-compat.el}, which defines some
routines from the older @file{cl.el} package that are no longer
present in the new package. This includes internal routines
-like @code{setelt} and @code{zip-lists}, deprecated features
-like @code{defkeyword}, and an emulation of the old-style
-multiple-values feature. @xref{Old CL Compatibility}.
+like @code{setelt} and @code{zip-lists}, and deprecated features
+like @code{defkeyword}. @xref{Old CL Compatibility}.
@node Installation, Naming Conventions, Organization, Overview
@section Installation
@@ -5345,14 +5344,6 @@
The @code{loop} macro is complete except that @code{loop-finish}
and type specifiers are unimplemented.
-The multiple-value return facility treats lists as multiple
-values, since Emacs Lisp cannot support multiple return values
-directly. The macros will be compatible with Common Lisp if
-@code{values} or @code{values-list} is always used to return to
-a @code{multiple-value-bind} or other multiple-value receiver;
-if @code{values} is used without @code{multiple-value-@dots{}}
-or vice-versa the effect will be different from Common Lisp.
-
Many Common Lisp declarations are ignored, and others match
the Common Lisp standard in concept but not in detail. For
example, local @code{special} declarations, which are purely
@@ -5376,14 +5367,6 @@
@noindent
Following is a list of all known incompatibilities between this package
and the older Quiroz @file{cl.el} package.
-
-This package's emulation of multiple return values in functions is
-incompatible with that of the older package. That package attempted
-to come as close as possible to true Common Lisp multiple return
-values; unfortunately, it could not be 100% reliable and so was prone
-to occasional surprises if used freely. This package uses a simpler
-method, namely replacing multiple values with lists of values, which
-is more predictable though more noticeably different from Common Lisp.
The @code{defkeyword} form and @code{keywordp} function are not
implemented in this package.
@@ -5448,19 +5431,6 @@
macro is not, however, and in any case it's best to change to
use the more natural keyword argument processing offered by
@code{defun*}.
-
-Multiple return values are treated differently by the two
-Common Lisp packages. The old package's method was more
-compatible with true Common Lisp, though it used heuristics
-that caused it to report spurious multiple return values in
-certain cases. The @code{cl-compat} package defines a set
-of multiple-value macros that are compatible with the old
-CL package; again, they are heuristic in nature, but they
-are guaranteed to work in any case where the old package's
-macros worked. To avoid name collision with the ``official''
-multiple-value facilities, the ones in @code{cl-compat} have
-capitalized names: @code{Values}, @code{Values-list},
-@code{Multiple-value-bind}, etc.
The functions @code{cl-floor}, @code{cl-ceiling}, @code{cl-truncate},
and @code{cl-round} are defined by @code{cl-compat} to use the
diff -r a1dd514df5c6 src/bytecode.c
--- a/src/bytecode.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/bytecode.c Sat Apr 11 14:34:47 2009 +0100
@@ -243,6 +243,12 @@
BlistN = 0257,
BconcatN = 0260,
BinsertN = 0261,
+
+ Bbind_multiple_value_limits = 0262, /* New in 21.5. */
+ Bmultiple_value_list_internal = 0263, /* New in 21.5. */
+ Bmultiple_value_call = 0264, /* New in 21.5. */
+ Bthrow = 0265, /* New in 21.5. */
+
Bmember = 0266, /* new in v20 */
Bassq = 0267, /* new in v20 */
@@ -653,15 +659,44 @@
/* Push x onto the execution stack. */
#define PUSH(x) (*++stack_ptr = (x))
-/* Pop a value off the execution stack. */
-#define POP (*stack_ptr--)
+/* Pop a value, which may be multiple, off the execution stack. */
+#define POP_WITH_MULTIPLE_VALUES (*stack_ptr--)
+
+/* Pop a value off the execution stack, treating multiple values as single. */
+#define POP (IGNORE_MULTIPLE_VALUES (POP_WITH_MULTIPLE_VALUES))
+
+#define DISCARD_PRESERVING_MULTIPLE_VALUES(n) (stack_ptr -= (n))
/* Discard n values from the execution stack. */
-#define DISCARD(n) (stack_ptr -= (n))
+#define DISCARD(n) do { \
+ if (1 != multiple_value_current_limit) \
+ { \
+ int i, en = n; \
+ for (i = 0; i < en; i++) \
+ { \
+ *stack_ptr = ignore_multiple_values (*stack_ptr); \
+ stack_ptr--; \
+ } \
+ } \
+ else \
+ { \
+ stack_ptr -= (n); \
+ } \
+ } while (0)
+
+/* Get the value, which may be multiple, at the top of the execution stack;
+ and leave it there. */
+#define TOP_WITH_MULTIPLE_VALUES (*stack_ptr)
+
+#define TOP_ADDRESS (stack_ptr)
/* Get the value which is at the top of the execution stack,
but don't pop it. */
-#define TOP (*stack_ptr)
+#define TOP (IGNORE_MULTIPLE_VALUES (TOP_WITH_MULTIPLE_VALUES))
+
+#define TOP_LVALUE (*stack_ptr)
+
+
/* See comment before the big switch in execute_optimized_program(). */
#define GCPRO_STACK (gcpro1.nvars = stack_ptr - stack_beg)
@@ -859,7 +894,8 @@
Fput (TOP, Qbyte_code_meter, make_int (XINT (val) + 1));
}
#endif
- TOP = Ffuncall (n + 1, &TOP);
+ TOP_LVALUE = TOP; /* Ignore multiple values. */
+ TOP_LVALUE = Ffuncall (n + 1, TOP_ADDRESS);
break;
case Bunbind:
@@ -960,7 +996,7 @@
if (specpdl_depth() != speccount)
invalid_byte_code ("unbalanced specbinding stack", Qunbound);
#endif
- return TOP;
+ return TOP_WITH_MULTIPLE_VALUES;
case Bdiscard:
DISCARD (1);
@@ -968,7 +1004,7 @@
case Bdup:
{
- Lisp_Object arg = TOP;
+ Lisp_Object arg = TOP_WITH_MULTIPLE_VALUES;
PUSH (arg);
break;
}
@@ -978,17 +1014,22 @@
break;
case Bcar:
- /* Fcar can GC via wrong_type_argument. */
- /* GCPRO_STACK; */
- TOP = CONSP (TOP) ? XCAR (TOP) : Fcar (TOP);
- break;
+ {
+ /* Fcar can GC via wrong_type_argument. */
+ /* GCPRO_STACK; */
+ Lisp_Object arg = TOP;
+ TOP_LVALUE = CONSP (arg) ? XCAR (arg) : Fcar (arg);
+ break;
+ }
case Bcdr:
- /* Fcdr can GC via wrong_type_argument. */
- /* GCPRO_STACK; */
- TOP = CONSP (TOP) ? XCDR (TOP) : Fcdr (TOP);
- break;
-
+ {
+ /* Fcdr can GC via wrong_type_argument. */
+ /* GCPRO_STACK; */
+ Lisp_Object arg = TOP;
+ TOP_LVALUE = CONSP (arg) ? XCDR (arg) : Fcdr (arg);
+ break;
+ }
case Bunbind_all:
/* To unbind back to the beginning of this frame. Not used yet,
@@ -1001,62 +1042,62 @@
Lisp_Object arg = POP;
/* Fcar and Fnthcdr can GC via wrong_type_argument. */
/* GCPRO_STACK; */
- TOP = Fcar (Fnthcdr (TOP, arg));
+ TOP_LVALUE = Fcar (Fnthcdr (TOP, arg));
break;
}
case Bsymbolp:
- TOP = SYMBOLP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = SYMBOLP (TOP) ? Qt : Qnil;
break;
case Bconsp:
- TOP = CONSP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = CONSP (TOP) ? Qt : Qnil;
break;
case Bstringp:
- TOP = STRINGP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = STRINGP (TOP) ? Qt : Qnil;
break;
case Blistp:
- TOP = LISTP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = LISTP (TOP) ? Qt : Qnil;
break;
case Bnumberp:
#ifdef WITH_NUMBER_TYPES
- TOP = NUMBERP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = NUMBERP (TOP) ? Qt : Qnil;
#else
- TOP = INT_OR_FLOATP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = INT_OR_FLOATP (TOP) ? Qt : Qnil;
#endif
break;
case Bintegerp:
#ifdef HAVE_BIGNUM
- TOP = INTEGERP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = INTEGERP (TOP) ? Qt : Qnil;
#else
- TOP = INTP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = INTP (TOP) ? Qt : Qnil;
#endif
break;
case Beq:
{
Lisp_Object arg = POP;
- TOP = EQ_WITH_EBOLA_NOTICE (TOP, arg) ? Qt : Qnil;
+ TOP_LVALUE = EQ_WITH_EBOLA_NOTICE (TOP, arg) ? Qt : Qnil;
break;
}
case Bnot:
- TOP = NILP (TOP) ? Qt : Qnil;
+ TOP_LVALUE = NILP (TOP) ? Qt : Qnil;
break;
case Bcons:
{
Lisp_Object arg = POP;
- TOP = Fcons (TOP, arg);
+ TOP_LVALUE = Fcons (TOP, arg);
break;
}
case Blist1:
- TOP = Fcons (TOP, Qnil);
+ TOP_LVALUE = Fcons (TOP, Qnil);
break;
@@ -1079,7 +1120,7 @@
DISCARD (1);
goto list_loop;
}
- TOP = list;
+ TOP_LVALUE = list;
break;
}
@@ -1097,101 +1138,107 @@
DISCARD (n - 1);
/* Apparently `concat' can GC; Fconcat GCPROs its arguments. */
/* GCPRO_STACK; */
- TOP = Fconcat (n, &TOP);
+ TOP_LVALUE = TOP; /* Ignore multiple values. */
+ TOP_LVALUE = Fconcat (n, TOP_ADDRESS);
break;
case Blength:
- TOP = Flength (TOP);
+ TOP_LVALUE = Flength (TOP);
break;
case Baset:
{
Lisp_Object arg2 = POP;
Lisp_Object arg1 = POP;
- TOP = Faset (TOP, arg1, arg2);
+ TOP_LVALUE = Faset (TOP, arg1, arg2);
break;
}
case Bsymbol_value:
/* Why does this need GCPRO_STACK? If not, remove others, too. */
/* GCPRO_STACK; */
- TOP = Fsymbol_value (TOP);
+ TOP_LVALUE = Fsymbol_value (TOP);
break;
case Bsymbol_function:
- TOP = Fsymbol_function (TOP);
+ TOP_LVALUE = Fsymbol_function (TOP);
break;
case Bget:
{
Lisp_Object arg = POP;
- TOP = Fget (TOP, arg, Qnil);
+ TOP_LVALUE = Fget (TOP, arg, Qnil);
break;
}
case Bsub1:
+ {
#ifdef HAVE_BIGNUM
- TOP = Fsub1 (TOP);
+ TOP_LVALUE = Fsub1 (TOP);
#else
- TOP = INTP (TOP) ? INT_MINUS1 (TOP) : Fsub1 (TOP);
+ Lisp_Object arg = TOP;
+ TOP_LVALUE = INTP (arg) ? INT_MINUS1 (arg) : Fsub1 (arg);
#endif
break;
-
+ }
case Badd1:
+ {
#ifdef HAVE_BIGNUM
- TOP = Fadd1 (TOP);
+ TOP_LVALUE = Fadd1 (TOP);
#else
- TOP = INTP (TOP) ? INT_PLUS1 (TOP) : Fadd1 (TOP);
+ Lisp_Object arg = TOP;
+ TOP_LVALUE = INTP (arg) ? INT_PLUS1 (arg) : Fadd1 (arg);
#endif
break;
-
+ }
case Beqlsign:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithcompare (TOP, arg) == 0 ? Qt : Qnil;
+ TOP_LVALUE = bytecode_arithcompare (TOP, arg) == 0 ? Qt : Qnil;
break;
}
case Bgtr:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithcompare (TOP, arg) > 0 ? Qt : Qnil;
+ TOP_LVALUE = bytecode_arithcompare (TOP, arg) > 0 ? Qt : Qnil;
break;
}
case Blss:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithcompare (TOP, arg) < 0 ? Qt : Qnil;
+ TOP_LVALUE = bytecode_arithcompare (TOP, arg) < 0 ? Qt : Qnil;
break;
}
case Bleq:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithcompare (TOP, arg) <= 0 ? Qt : Qnil;
+ TOP_LVALUE = bytecode_arithcompare (TOP, arg) <= 0 ? Qt : Qnil;
break;
}
case Bgeq:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithcompare (TOP, arg) >= 0 ? Qt : Qnil;
+ TOP_LVALUE = bytecode_arithcompare (TOP, arg) >= 0 ? Qt : Qnil;
break;
}
case Bnegate:
- TOP = bytecode_negate (TOP);
+ TOP_LVALUE = bytecode_negate (TOP);
break;
case Bnconc:
DISCARD (1);
/* nconc2 GCPROs before calling this. */
/* GCPRO_STACK; */
- TOP = bytecode_nconc2 (&TOP);
+ TOP_LVALUE = TOP; /* Ignore multiple values. */
+ TOP_LVALUE = bytecode_nconc2 (TOP_ADDRESS);
break;
case Bplus:
@@ -1199,9 +1246,9 @@
Lisp_Object arg2 = POP;
Lisp_Object arg1 = TOP;
#ifdef HAVE_BIGNUM
- TOP = bytecode_arithop (arg1, arg2, opcode);
+ TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode);
#else
- TOP = INTP (arg1) && INTP (arg2) ?
+ TOP_LVALUE = INTP (arg1) && INTP (arg2) ?
INT_PLUS (arg1, arg2) :
bytecode_arithop (arg1, arg2, opcode);
#endif
@@ -1213,9 +1260,9 @@
Lisp_Object arg2 = POP;
Lisp_Object arg1 = TOP;
#ifdef HAVE_BIGNUM
- TOP = bytecode_arithop (arg1, arg2, opcode);
+ TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode);
#else
- TOP = INTP (arg1) && INTP (arg2) ?
+ TOP_LVALUE = INTP (arg1) && INTP (arg2) ?
INT_MINUS (arg1, arg2) :
bytecode_arithop (arg1, arg2, opcode);
#endif
@@ -1228,7 +1275,7 @@
case Bmin:
{
Lisp_Object arg = POP;
- TOP = bytecode_arithop (TOP, arg, opcode);
+ TOP_LVALUE = bytecode_arithop (TOP, arg, opcode);
break;
}
@@ -1239,7 +1286,8 @@
case Binsert:
/* Says it can GC. */
/* GCPRO_STACK; */
- TOP = Finsert (1, &TOP);
+ TOP_LVALUE = TOP; /* Ignore multiple values. */
+ TOP_LVALUE = Finsert (1, TOP_ADDRESS);
break;
case BinsertN:
@@ -1247,20 +1295,21 @@
DISCARD (n - 1);
/* See Binsert. */
/* GCPRO_STACK; */
- TOP = Finsert (n, &TOP);
+ TOP_LVALUE = TOP; /* Ignore multiple values. */
+ TOP_LVALUE = Finsert (n, TOP_ADDRESS);
break;
case Baref:
{
Lisp_Object arg = POP;
- TOP = Faref (TOP, arg);
+ TOP_LVALUE = Faref (TOP, arg);
break;
}
case Bmemq:
{
Lisp_Object arg = POP;
- TOP = Fmemq (TOP, arg);
+ TOP_LVALUE = Fmemq (TOP, arg);
break;
}
@@ -1269,7 +1318,7 @@
Lisp_Object arg = POP;
/* Fset may call magic handlers */
/* GCPRO_STACK; */
- TOP = Fset (TOP, arg);
+ TOP_LVALUE = Fset (TOP, arg);
break;
}
@@ -1278,21 +1327,21 @@
Lisp_Object arg = POP;
/* Can QUIT, so can GC, right? */
/* GCPRO_STACK; */
- TOP = Fequal (TOP, arg);
+ TOP_LVALUE = Fequal (TOP, arg);
break;
}
case Bnthcdr:
{
Lisp_Object arg = POP;
- TOP = Fnthcdr (TOP, arg);
+ TOP_LVALUE = Fnthcdr (TOP, arg);
break;
}
case Belt:
{
Lisp_Object arg = POP;
- TOP = Felt (TOP, arg);
+ TOP_LVALUE = Felt (TOP, arg);
break;
}
@@ -1301,12 +1350,12 @@
Lisp_Object arg = POP;
/* Can QUIT, so can GC, right? */
/* GCPRO_STACK; */
- TOP = Fmember (TOP, arg);
+ TOP_LVALUE = Fmember (TOP, arg);
break;
}
case Bgoto_char:
- TOP = Fgoto_char (TOP, Qnil);
+ TOP_LVALUE = Fgoto_char (TOP, Qnil);
break;
case Bcurrent_buffer:
@@ -1321,7 +1370,7 @@
/* #### WAG: set-buffer may cause Fset's of buffer locals
Didn't prevent crash. :-( */
/* GCPRO_STACK; */
- TOP = Fset_buffer (TOP);
+ TOP_LVALUE = Fset_buffer (TOP);
break;
case Bpoint_max:
@@ -1337,41 +1386,41 @@
Lisp_Object arg = POP;
/* Can QUIT, so can GC, right? */
/* GCPRO_STACK; */
- TOP = Fskip_chars_forward (TOP, arg, Qnil);
+ TOP_LVALUE = Fskip_chars_forward (TOP, arg, Qnil);
break;
}
case Bassq:
{
Lisp_Object arg = POP;
- TOP = Fassq (TOP, arg);
+ TOP_LVALUE = Fassq (TOP, arg);
break;
}
case Bsetcar:
{
Lisp_Object arg = POP;
- TOP = Fsetcar (TOP, arg);
+ TOP_LVALUE = Fsetcar (TOP, arg);
break;
}
case Bsetcdr:
{
Lisp_Object arg = POP;
- TOP = Fsetcdr (TOP, arg);
+ TOP_LVALUE = Fsetcdr (TOP, arg);
break;
}
case Bnreverse:
- TOP = bytecode_nreverse (TOP);
+ TOP_LVALUE = bytecode_nreverse (TOP);
break;
case Bcar_safe:
- TOP = CONSP (TOP) ? XCAR (TOP) : Qnil;
+ TOP_LVALUE = CONSP (TOP) ? XCAR (TOP) : Qnil;
break;
case Bcdr_safe:
- TOP = CONSP (TOP) ? XCDR (TOP) : Qnil;
+ TOP_LVALUE = CONSP (TOP) ? XCDR (TOP) : Qnil;
break;
}
@@ -1390,6 +1439,8 @@
const Opbyte *UNUSED (program_ptr),
Opcode opcode)
{
+ REGISTER int n;
+
switch (opcode)
{
@@ -1403,7 +1454,7 @@
int count = specpdl_depth ();
record_unwind_protect (save_window_excursion_unwind,
call1 (Qcurrent_window_configuration, Qnil));
- TOP = Fprogn (TOP);
+ TOP_LVALUE = Fprogn (TOP);
unbind_to (count);
break;
}
@@ -1416,14 +1467,14 @@
case Bcatch:
{
Lisp_Object arg = POP;
- TOP = internal_catch (TOP, Feval, arg, 0, 0, 0);
+ TOP_LVALUE = internal_catch (TOP, Feval, arg, 0, 0, 0);
break;
}
case Bskip_chars_backward:
{
Lisp_Object arg = POP;
- TOP = Fskip_chars_backward (TOP, arg, Qnil);
+ TOP_LVALUE = Fskip_chars_backward (TOP, arg, Qnil);
break;
}
@@ -1435,7 +1486,7 @@
{
Lisp_Object arg2 = POP; /* handlers */
Lisp_Object arg1 = POP; /* bodyform */
- TOP = condition_case_3 (arg1, TOP, arg2);
+ TOP_LVALUE = condition_case_3 (arg1, TOP, arg2);
break;
}
@@ -1443,51 +1494,51 @@
{
Lisp_Object arg2 = POP;
Lisp_Object arg1 = POP;
- TOP = Fset_marker (TOP, arg1, arg2);
+ TOP_LVALUE = Fset_marker (TOP, arg1, arg2);
break;
}
case Brem:
{
Lisp_Object arg = POP;
- TOP = Frem (TOP, arg);
+ TOP_LVALUE = Frem (TOP, arg);
break;
}
case Bmatch_beginning:
- TOP = Fmatch_beginning (TOP);
+ TOP_LVALUE = Fmatch_beginning (TOP);
break;
case Bmatch_end:
- TOP = Fmatch_end (TOP);
+ TOP_LVALUE = Fmatch_end (TOP);
break;
case Bupcase:
- TOP = Fupcase (TOP, Qnil);
+ TOP_LVALUE = Fupcase (TOP, Qnil);
break;
case Bdowncase:
- TOP = Fdowncase (TOP, Qnil);
+ TOP_LVALUE = Fdowncase (TOP, Qnil);
break;
case Bfset:
{
Lisp_Object arg = POP;
- TOP = Ffset (TOP, arg);
+ TOP_LVALUE = Ffset (TOP, arg);
break;
}
case Bstring_equal:
{
Lisp_Object arg = POP;
- TOP = Fstring_equal (TOP, arg);
+ TOP_LVALUE = Fstring_equal (TOP, arg);
break;
}
case Bstring_lessp:
{
Lisp_Object arg = POP;
- TOP = Fstring_lessp (TOP, arg);
+ TOP_LVALUE = Fstring_lessp (TOP, arg);
break;
}
@@ -1495,7 +1546,7 @@
{
Lisp_Object arg2 = POP;
Lisp_Object arg1 = POP;
- TOP = Fsubstring (TOP, arg1, arg2);
+ TOP_LVALUE = Fsubstring (TOP, arg1, arg2);
break;
}
@@ -1504,11 +1555,11 @@
break;
case Bchar_after:
- TOP = Fchar_after (TOP, Qnil);
+ TOP_LVALUE = Fchar_after (TOP, Qnil);
break;
case Bindent_to:
- TOP = Findent_to (TOP, Qnil, Qnil);
+ TOP_LVALUE = Findent_to (TOP, Qnil, Qnil);
break;
case Bwiden:
@@ -1549,56 +1600,56 @@
break;
case Bforward_char:
- TOP = Fforward_char (TOP, Qnil);
+ TOP_LVALUE = Fforward_char (TOP, Qnil);
break;
case Bforward_word:
- TOP = Fforward_word (TOP, Qnil);
+ TOP_LVALUE = Fforward_word (TOP, Qnil);
break;
case Bforward_line:
- TOP = Fforward_line (TOP, Qnil);
+ TOP_LVALUE = Fforward_line (TOP, Qnil);
break;
case Bchar_syntax:
- TOP = Fchar_syntax (TOP, Qnil);
+ TOP_LVALUE = Fchar_syntax (TOP, Qnil);
break;
case Bbuffer_substring:
{
Lisp_Object arg = POP;
- TOP = Fbuffer_substring (TOP, arg, Qnil);
+ TOP_LVALUE = Fbuffer_substring (TOP, arg, Qnil);
break;
}
case Bdelete_region:
{
Lisp_Object arg = POP;
- TOP = Fdelete_region (TOP, arg, Qnil);
+ TOP_LVALUE = Fdelete_region (TOP, arg, Qnil);
break;
}
case Bnarrow_to_region:
{
Lisp_Object arg = POP;
- TOP = Fnarrow_to_region (TOP, arg, Qnil);
+ TOP_LVALUE = Fnarrow_to_region (TOP, arg, Qnil);
break;
}
case Bend_of_line:
- TOP = Fend_of_line (TOP, Qnil);
+ TOP_LVALUE = Fend_of_line (TOP, Qnil);
break;
case Btemp_output_buffer_setup:
temp_output_buffer_setup (TOP);
- TOP = Vstandard_output;
+ TOP_LVALUE = Vstandard_output;
break;
case Btemp_output_buffer_show:
{
Lisp_Object arg = POP;
temp_output_buffer_show (TOP, Qnil);
- TOP = arg;
+ TOP_LVALUE = arg;
/* GAG ME!! */
/* pop binding of standard-output */
unbind_to (specpdl_depth() - 1);
@@ -1608,36 +1659,76 @@
case Bold_eq:
{
Lisp_Object arg = POP;
- TOP = HACKEQ_UNSAFE (TOP, arg) ? Qt : Qnil;
+ TOP_LVALUE = HACKEQ_UNSAFE (TOP, arg) ? Qt : Qnil;
break;
}
case Bold_memq:
{
Lisp_Object arg = POP;
- TOP = Fold_memq (TOP, arg);
+ TOP_LVALUE = Fold_memq (TOP, arg);
break;
}
case Bold_equal:
{
Lisp_Object arg = POP;
- TOP = Fold_equal (TOP, arg);
+ TOP_LVALUE = Fold_equal (TOP, arg);
break;
}
case Bold_member:
{
Lisp_Object arg = POP;
- TOP = Fold_member (TOP, arg);
+ TOP_LVALUE = Fold_member (TOP, arg);
break;
}
case Bold_assq:
{
Lisp_Object arg = POP;
- TOP = Fold_assq (TOP, arg);
+ TOP_LVALUE = Fold_assq (TOP, arg);
break;
+ }
+
+ case Bbind_multiple_value_limits:
+ {
+ Lisp_Object upper = POP, first = TOP, speccount;
+
+ CHECK_NATNUM (upper);
+ CHECK_NATNUM (first);
+
+ speccount = make_int (bind_multiple_value_limits (XINT (first),
+ XINT (upper)));
+ PUSH (upper);
+ PUSH (speccount);
+ break;
+ }
+
+ case Bmultiple_value_call:
+ {
+ n = XINT (POP);
+ DISCARD_PRESERVING_MULTIPLE_VALUES (n - 1);
+ /* Discard multiple values for the first (function) argument: */
+ TOP_LVALUE = TOP;
+ TOP_LVALUE = multiple_value_call (n, TOP_ADDRESS);
+ break;
+ }
+
+ case Bmultiple_value_list_internal:
+ {
+ DISCARD_PRESERVING_MULTIPLE_VALUES (3);
+ TOP_LVALUE = multiple_value_list_internal (4, TOP_ADDRESS);
+ break;
+ }
+
+ case Bthrow:
+ {
+ Lisp_Object arg = POP_WITH_MULTIPLE_VALUES;
+
+ /* We never throw to a catch tag that is a multiple value: */
+ throw_or_bomb_out (TOP, arg, 0, Qnil, Qnil);
+ break;
}
default:
diff -r a1dd514df5c6 src/callint.c
--- a/src/callint.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/callint.c Sat Apr 11 14:34:47 2009 +0100
@@ -398,7 +398,7 @@
GCPRO3 (function, specs, input);
/* Compute the arg values using the user's expression. */
- specs = Feval (specs);
+ specs = IGNORE_MULTIPLE_VALUES (Feval (specs));
if (EQ (record_flag, Qlambda)) /* XEmacs addition */
{
UNGCPRO;
@@ -914,7 +914,7 @@
{
Lisp_Object tem = call1 (Qread_expression, PROMPT ());
/* visargs[argnum] = Fprin1_to_string (tem, Qnil); */
- args[argnum] = Feval (tem);
+ args[argnum] = IGNORE_MULTIPLE_VALUES (Feval (tem));
arg_from_tty = 1;
break;
}
diff -r a1dd514df5c6 src/device-x.c
--- a/src/device-x.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/device-x.c Sat Apr 11 14:34:47 2009 +0100
@@ -1280,7 +1280,8 @@
enqueue_magic_eval_event (io_error_delete_device, dev);
DEVICE_X_BEING_DELETED (d) = 1;
}
- Fthrow (Qtop_level, Qnil);
+
+ throw_or_bomb_out (Qtop_level, Qnil, 0, Qnil, Qnil);
RETURN_NOT_REACHED (0);
}
diff -r a1dd514df5c6 src/eval.c
--- a/src/eval.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/eval.c Sat Apr 11 14:34:47 2009 +0100
@@ -241,6 +241,16 @@
Lisp_Object Vpending_warnings, Vpending_warnings_tail;
Lisp_Object Qif;
+Lisp_Object Qthrow;
+Lisp_Object Qobsolete_throw;
+
+static int first_desired_multiple_value;
+/* Used outside this file, somewhat uncleanly, in the IGNORE_MULTIPLE_VALUES
+ macro: */
+int multiple_value_current_limit;
+
+Fixnum Vmultiple_values_limit;
+
/* Flags specifying which operations are currently inhibited. */
int inhibit_flags;
@@ -816,9 +826,11 @@
from interpreted code. The byte compiler turns them into bytecodes. */
DEFUN ("or", For, 0, UNEVALLED, 0, /*
-Eval args until one of them yields non-nil, then return that value.
-The remaining args are not evalled at all.
+Eval ARGS until one of them yields non-nil, then return that value.
+The remaining ARGS are not evalled at all.
If all args return nil, return nil.
+
+arguments: (&rest ARGS)
*/
(args))
{
@@ -827,7 +839,7 @@
LIST_LOOP_2 (arg, args)
{
- if (!NILP (val = Feval (arg)))
+ if (!NILP (IGNORE_MULTIPLE_VALUES (val = Feval (arg))))
return val;
}
@@ -835,9 +847,11 @@
}
DEFUN ("and", Fand, 0, UNEVALLED, 0, /*
-Eval args until one of them yields nil, then return nil.
-The remaining args are not evalled at all.
+Eval ARGS until one of them yields nil, then return nil.
+The remaining ARGS are not evalled at all.
If no arg yields nil, return the last arg's value.
+
+arguments: (&rest ARGS)
*/
(args))
{
@@ -846,18 +860,20 @@
LIST_LOOP_2 (arg, args)
{
- if (NILP (val = Feval (arg)))
- return val;
+ if (NILP (IGNORE_MULTIPLE_VALUES (val = Feval (arg))))
+ return val;
}
return val;
}
DEFUN ("if", Fif, 2, UNEVALLED, 0, /*
-\(if COND THEN ELSE...): if COND yields non-nil, do THEN, else do ELSE...
+If COND yields non-nil, do THEN, else do ELSE.
Returns the value of THEN or the value of the last of the ELSE's.
THEN must be one expression, but ELSE... can be zero or more expressions.
If COND yields nil, and there are no ELSE's, the value is nil.
+
+arguments: (COND THEN &rest ELSE)
*/
(args))
{
@@ -866,7 +882,7 @@
Lisp_Object then_form = XCAR (XCDR (args));
Lisp_Object else_forms = XCDR (XCDR (args));
- if (!NILP (Feval (condition)))
+ if (!NILP (IGNORE_MULTIPLE_VALUES (Feval (condition))))
return Feval (then_form);
else
return Fprogn (else_forms);
@@ -876,8 +892,10 @@
but it helps for bootstrapping to have them ALWAYS defined. */
DEFUN ("when", Fwhen, 1, MANY, 0, /*
-\(when COND BODY...): if COND yields non-nil, do BODY, else return nil.
+If COND yields non-nil, do BODY, else return nil.
BODY can be zero or more expressions. If BODY is nil, return nil.
+
+arguments: (COND &rest BODY)
*/
(int nargs, Lisp_Object *args))
{
@@ -895,8 +913,10 @@
}
DEFUN ("unless", Funless, 1, MANY, 0, /*
-\(unless COND BODY...): if COND yields nil, do BODY, else return nil.
+If COND yields nil, do BODY, else return nil.
BODY can be zero or more expressions. If BODY is nil, return nil.
+
+arguments: (COND &rest BODY)
*/
(int nargs, Lisp_Object *args))
{
@@ -906,7 +926,7 @@
}
DEFUN ("cond", Fcond, 0, UNEVALLED, 0, /*
-\(cond CLAUSES...): try each clause until one succeeds.
+Try each clause until one succeeds.
Each clause looks like (CONDITION BODY...). CONDITION is evaluated
and, if the value is non-nil, this clause succeeds:
then the expressions in BODY are evaluated and the last one's
@@ -914,6 +934,8 @@
If no clause succeeds, cond returns nil.
If a clause has one element, as in (CONDITION),
CONDITION's value if non-nil is returned from the cond-form.
+
+arguments: (&rest CLAUSES)
*/
(args))
{
@@ -923,7 +945,7 @@
LIST_LOOP_2 (clause, args)
{
CHECK_CONS (clause);
- if (!NILP (val = Feval (XCAR (clause))))
+ if (!NILP (IGNORE_MULTIPLE_VALUES (val = Feval (XCAR (clause)))))
{
if (!NILP (clause = XCDR (clause)))
{
@@ -938,7 +960,9 @@
}
DEFUN ("progn", Fprogn, 0, UNEVALLED, 0, /*
-\(progn BODY...): eval BODY forms sequentially and return value of last one.
+Eval BODY forms sequentially and return value of last one.
+
+arguments: (&rest BODY)
*/
(args))
{
@@ -963,17 +987,18 @@
DEFUN ("prog1", Fprog1, 1, UNEVALLED, 0, /*
Similar to `progn', but the value of the first form is returned.
-\(prog1 FIRST BODY...): All the arguments are evaluated sequentially.
-The value of FIRST is saved during evaluation of the remaining args,
-whose values are discarded.
-*/
- (args))
-{
- /* This function can GC */
+
+All the arguments are evaluated sequentially. The value of FIRST is saved
+during evaluation of the remaining args, whose values are discarded.
+
+arguments: (FIRST &rest BODY)
+*/
+ (args))
+{
Lisp_Object val;
- struct gcpro gcpro1;
-
- val = Feval (XCAR (args));
+ struct gcpro gcpro1;
+
+ val = IGNORE_MULTIPLE_VALUES (Feval (Fcar (args)));
GCPRO1 (val);
@@ -988,9 +1013,11 @@
DEFUN ("prog2", Fprog2, 2, UNEVALLED, 0, /*
Similar to `progn', but the value of the second form is returned.
-\(prog2 FIRST SECOND BODY...): All the arguments are evaluated sequentially.
-The value of SECOND is saved during evaluation of the remaining args,
-whose values are discarded.
+
+All the arguments are evaluated sequentially. The value of SECOND is saved
+during evaluation of the remaining args, whose values are discarded.
+
+arguments: (FIRST SECOND &rest BODY)
*/
(args))
{
@@ -1000,7 +1027,9 @@
Feval (XCAR (args));
args = XCDR (args);
- val = Feval (XCAR (args));
+
+ val = IGNORE_MULTIPLE_VALUES (Feval (XCAR (args)));
+
args = XCDR (args);
GCPRO1 (val);
@@ -1015,11 +1044,13 @@
}
DEFUN ("let*", FletX, 1, UNEVALLED, 0, /*
-\(let* VARLIST BODY...): bind variables according to VARLIST then eval BODY.
+Bind variables according to VARLIST then eval BODY.
The value of the last form in BODY is returned.
Each element of VARLIST is a symbol (which is bound to nil)
or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
Each VALUEFORM can refer to the symbols already bound by this VARLIST.
+
+arguments: (VARLIST &rest BODY)
*/
(args))
{
@@ -1043,7 +1074,7 @@
else
{
CHECK_CONS (tem);
- value = Feval (XCAR (tem));
+ value = IGNORE_MULTIPLE_VALUES (Feval (XCAR (tem)));
if (!NILP (XCDR (tem)))
sferror
("`let' bindings can have only one value-form", var);
@@ -1055,11 +1086,13 @@
}
DEFUN ("let", Flet, 1, UNEVALLED, 0, /*
-\(let VARLIST BODY...): bind variables according to VARLIST then eval BODY.
+Bind variables according to VARLIST then eval BODY.
The value of the last form in BODY is returned.
Each element of VARLIST is a symbol (which is bound to nil)
or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
All the VALUEFORMs are evalled before any symbols are bound.
+
+arguments: (VARLIST &rest BODY)
*/
(args))
{
@@ -1099,7 +1132,7 @@
else
{
CHECK_CONS (tem);
- *value = Feval (XCAR (tem));
+ *value = IGNORE_MULTIPLE_VALUES (Feval (XCAR (tem)));
gcpro1.nvars = idx;
if (!NILP (XCDR (tem)))
@@ -1124,9 +1157,11 @@
}
DEFUN ("while", Fwhile, 1, UNEVALLED, 0, /*
-\(while TEST BODY...): if TEST yields non-nil, eval BODY... and repeat.
+If TEST yields non-nil, eval BODY... and repeat.
The order of execution is thus TEST, BODY, TEST, BODY and so on
until TEST returns nil.
+
+arguments: (TEST &rest BODY)
*/
(args))
{
@@ -1134,7 +1169,7 @@
Lisp_Object test = XCAR (args);
Lisp_Object body = XCDR (args);
- while (!NILP (Feval (test)))
+ while (!NILP (IGNORE_MULTIPLE_VALUES (Feval (test))))
{
QUIT;
Fprogn (body);
@@ -1166,6 +1201,7 @@
GC_PROPERTY_LIST_LOOP_3 (symbol, val, args)
{
val = Feval (val);
+ val = IGNORE_MULTIPLE_VALUES (val);
Fset (symbol, val);
retval = val;
}
@@ -1255,7 +1291,7 @@
}
DEFUN ("defvar", Fdefvar, 1, UNEVALLED, 0, /*
-\(defvar SYMBOL INITVALUE DOCSTRING): define SYMBOL as a variable.
+Define SYMBOL as a variable.
You are not required to define a variable in order to use it,
but the definition can supply documentation and an initial value
in a way that tags can recognize.
@@ -1272,6 +1308,8 @@
If INITVALUE is missing, SYMBOL's value is not set.
In lisp-interaction-mode defvar is treated as defconst.
+
+arguments: (SYMBOL &optional INITVALUE DOCSTRING)
*/
(args))
{
@@ -1286,7 +1324,7 @@
{
struct gcpro gcpro1;
GCPRO1 (val);
- val = Feval (val);
+ val = IGNORE_MULTIPLE_VALUES (Feval (val));
Fset_default (sym, val);
UNGCPRO;
}
@@ -1310,8 +1348,7 @@
}
DEFUN ("defconst", Fdefconst, 2, UNEVALLED, 0, /*
-\(defconst SYMBOL INITVALUE DOCSTRING): define SYMBOL as a constant
-variable.
+Define SYMBOL as a constant variable.
The intent is that programs do not change this value, but users may.
Always sets the value of SYMBOL to the result of evalling INITVALUE.
If SYMBOL is buffer-local, its default value is what is set;
@@ -1325,6 +1362,8 @@
their own values for such variables before loading the library.
Since `defconst' unconditionally assigns the variable,
it would override the user's choice.
+
+arguments: (SYMBOL &optional INITVALUE DOCSTRING)
*/
(args))
{
@@ -1334,6 +1373,8 @@
struct gcpro gcpro1;
GCPRO1 (val);
+
+ val = IGNORE_MULTIPLE_VALUES (val);
Fset_default (sym, val);
@@ -1637,10 +1678,10 @@
LONGJMP (c->jmp, 1);
}
-static DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int,
+DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object, Lisp_Object, int,
Lisp_Object, Lisp_Object));
-static DOESNT_RETURN
+DOESNT_RETURN
throw_or_bomb_out (Lisp_Object tag, Lisp_Object val, int bomb_out_p,
Lisp_Object sig, Lisp_Object data)
{
@@ -1713,12 +1754,21 @@
condition_case_1). See below for more info.
*/
-DEFUN_NORETURN ("throw", Fthrow, 2, 2, 0, /*
+DEFUN_NORETURN ("throw", Fthrow, 2, UNEVALLED, 0, /*
Throw to the catch for TAG and return VALUE from it.
-Both TAG and VALUE are evalled. Tags are the same iff they are `eq'.
-*/
- (tag, value))
-{
+
+Both TAG and VALUE are evalled, and multiple values in VALUE will be passed
+back. Tags are the same if and only if they are `eq'.
+
+arguments: (TAG VALUE)
+*/
+ (args))
+{
+ Lisp_Object tag, value;
+ tag = IGNORE_MULTIPLE_VALUES (Feval (XCAR(args)));
+
+ value = Feval (XCAR (XCDR (args)));
+
throw_or_bomb_out (tag, value, 0, Qnil, Qnil); /* Doesn't return */
RETURN_NOT_REACHED (Qnil);
}
@@ -2334,7 +2384,8 @@
else if (EQ (handler_data, Qt))
{
UNGCPRO;
- return Fthrow (handlers, Fcons (error_symbol, data));
+ throw_or_bomb_out (handlers, Fcons (error_symbol, data),
+ 0, Qnil, Qnil);
}
/* `error' is used similarly to the way `t' is used, but in
addition it invokes the debugger if debug_on_error.
@@ -2353,7 +2404,7 @@
return return_from_signal (tem);
tem = Fcons (error_symbol, data);
- return Fthrow (handlers, tem);
+ throw_or_bomb_out (handlers, tem, 0, Qnil, Qnil);
}
else
{
@@ -2377,7 +2428,7 @@
/* Doesn't return */
tem = Fcons (Fcons (error_symbol, data), Fcdr (clause));
- return Fthrow (handlers, tem);
+ throw_or_bomb_out (handlers, tem, 0, Qnil, Qnil);
}
}
}
@@ -3639,7 +3690,7 @@
{
LIST_LOOP_2 (arg, original_args)
{
- *p++ = Feval (arg);
+ *p++ = IGNORE_MULTIPLE_VALUES (Feval (arg));
gcpro1.nvars++;
}
}
@@ -3670,7 +3721,7 @@
{
LIST_LOOP_2 (arg, original_args)
{
- *p++ = Feval (arg);
+ *p++ = IGNORE_MULTIPLE_VALUES (Feval (arg));
gcpro1.nvars++;
}
}
@@ -3703,7 +3754,7 @@
{
LIST_LOOP_2 (arg, original_args)
{
- *p++ = Feval (arg);
+ *p++ = IGNORE_MULTIPLE_VALUES (Feval (arg));
gcpro1.nvars++;
}
}
@@ -3752,7 +3803,7 @@
{
LIST_LOOP_2 (arg, original_args)
{
- *p++ = Feval (arg);
+ *p++ = IGNORE_MULTIPLE_VALUES (Feval (arg));
gcpro1.nvars++;
}
}
@@ -3932,6 +3983,12 @@
}
else if (max_args == UNEVALLED) /* Can't funcall a special form */
{
+ /* Ugh, ugh, ugh. */
+ if (EQ (fun, XSYMBOL_FUNCTION (Qthrow)))
+ {
+ args[0] = Qobsolete_throw;
+ goto retry;
+ }
goto invalid_function;
}
else
@@ -4212,7 +4269,6 @@
}
}
-
/* Apply lambda list FUN to the NARGS evaluated arguments in ARGS and
return the result of evaluation. */
@@ -4267,6 +4323,580 @@
invalid_function:
return signal_invalid_function_error (fun);
+}
+
+
+/* Multiple values.
+
+ A multiple value object is returned by #'values if:
+
+ -- The number of arguments to #'values is not one, and:
+ -- Some special form in the call stack is prepared to handle more than
+ one multiple value.
+
+ The return value of #'values-list is analogous to that of #'values.
+
+ The specific multiple values saved and returned depend on how many
+ multiple-values special forms in the stack are interested in; for
+ example, if #'multiple-value-call is somewhere in the call stack, all
+ values passed to #'values will be saved and returned. If an expansion of
+ #'multiple-value-setq with 10 SYMS is the only part of the call stack
+ interested in multiple values, then a maximum of ten multiple values will
+ be saved and returned.
+
+ (#'throw passes back multiple values in its VALUE argument; this is why
+ we can't just take the details of the most immediate
+ #'multiple-value-{whatever} call to work out which values to save, we
+ need to look at the whole stack, or, equivalently, the dynamic variables
+ we set to reflect the whole stack.)
+
+ The first value passed to #'values will always be saved, since that is
+ needed to convert a multiple value object into a single value object,
+ something that is normally necessary independent of how many functions in
+ the call stack are interested in multiple values.
+
+ However many values (for values of "however many" that are not one) are
+ saved and restored, the multiple value object knows how many arguments it
+ would contain were none to have been discarded, and will indicate this
+ on being printed from within GDB.
+
+ In lisp-interaction-mode, no multiple values should be discarded (unless
+ they need to be for the sake of the correctness of the program);
+ #'eval-interactive-with-multiple-value-list in lisp-mode.el wraps its
+ #'eval calls with #'multiple-value-list calls to avoid this. This means
+ that there is a small performance and memory penalty for code evaluated
+ in *scratch*; use M-: EXPRESSION RET if you really need to avoid
+ this. Lisp code execution that is not ultimately from hitting C-j in
+ *scratch*--that is, the vast vast majority of Lisp code execution--does
+ not have this penalty.
+
+ Probably the most important aspect of multiple values is stated with
+ admirable clarity by CLTL2:
+
+ "No matter how many values a form produces, if the form is an argument
+ form in a function call, then exactly one value (the first one) is
+ used."
+
+ This means that most contexts, most of the time, will never see multiple
+ values. There are important exceptions; search the web for that text in
+ quotation marks and read the related chapter. This code handles all of
+ them, to my knowledge. Aidan Kehoe, Mon Mar 16 00:17:39 GMT 2009. */
+
+static Lisp_Object
+make_multiple_value (Lisp_Object first_value, Elemcount count,
+ Elemcount first_desired, Elemcount upper_limit)
+{
+ Bytecount sizem;
+ struct multiple_value *mv;
+ Elemcount i, allocated_count;
+
+ assert (count != 1);
+
+ if (1 != upper_limit && (0 == first_desired))
+ {
+ /* We always allocate element zero, and that's taken into account when
+ working out allocated_count: */
+ first_desired = 1;
+ }
+
+ if (first_desired >= count)
+ {
+ /* We can't pass anything back that our caller is interested in. Only
+ allocate for the first argument. */
+ allocated_count = 1;
+ }
+ else
+ {
+ allocated_count = 1 + ((upper_limit > count ? count : upper_limit)
+ - first_desired);
+ }
+
+ sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (multiple_value,
+ Lisp_Object,
+ contents, allocated_count);
+ mv = (multiple_value *) BASIC_ALLOC_LCRECORD (sizem,
+ &lrecord_multiple_value);
+
+ mv->count = count;
+ mv->first_desired = first_desired;
+ mv->allocated_count = allocated_count;
+ mv->contents[0] = first_value;
+
+ for (i = first_desired; i < upper_limit && i < count; ++i)
+ {
+ mv->contents[1 + (i - first_desired)] = Qunbound;
+ }
+
+ return wrap_multiple_value (mv);
+}
+
+static void
+multiple_value_aset (Lisp_Object obj, Elemcount index, Lisp_Object value)
+{
+ struct multiple_value *mv = XMULTIPLE_VALUE (obj);
+ Elemcount first_desired = mv->first_desired;
+ Elemcount allocated_count = mv->allocated_count;
+
+ if (index != 0 &&
+ (index < first_desired || index >= (first_desired + allocated_count)))
+ {
+ args_out_of_range (make_int (first_desired),
+ make_int (first_desired + allocated_count));
+ }
+
+ mv->contents[index == 0 ? 0 : 1 + (index - first_desired)] = value;
+}
+
+Lisp_Object
+multiple_value_aref (Lisp_Object obj, Elemcount index)
+{
+ struct multiple_value *mv = XMULTIPLE_VALUE (obj);
+ Elemcount first_desired = mv->first_desired;
+ Elemcount allocated_count = mv->allocated_count;
+
+ if (index != 0 &&
+ (index < first_desired || index >= (first_desired + allocated_count)))
+ {
+ args_out_of_range (make_int (first_desired),
+ make_int (first_desired + allocated_count));
+ }
+
+ return mv->contents[index == 0 ? 0 : 1 + (index - first_desired)];
+}
+
+static void
+print_multiple_value (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
+{
+ struct multiple_value *mv = XMULTIPLE_VALUE (obj);
+ Elemcount first_desired = mv->first_desired;
+ Elemcount allocated_count = mv->allocated_count;
+ Elemcount count = mv->count, index;
+
+ if (print_readably)
+ {
+ printing_unreadable_object ("multiple values");
+ }
+
+ if (0 == count)
+ {
+ write_c_string (printcharfun, "#<zero-length multiple value>");
+ }
+
+ for (index = 0; index < count;)
+ {
+ if (index != 0 &&
+ (index < first_desired ||
+ index >= (first_desired + (allocated_count - 1))))
+ {
+ write_fmt_string (printcharfun, "#<discarded-multiple-value %d>",
+ index);
+ }
+ else
+ {
+ print_internal (multiple_value_aref (obj, index),
+ printcharfun, escapeflag);
+ }
+
+ ++index;
+
+ if (count > 1 && index < count)
+ {
+ write_c_string (printcharfun, " ;\n");
+ }
+ }
+}
+
+static Lisp_Object
+mark_multiple_value (Lisp_Object obj)
+{
+ struct multiple_value *mv = XMULTIPLE_VALUE (obj);
+ Elemcount index, allocated_count = mv->allocated_count;
+
+ for (index = 0; index < allocated_count; ++index)
+ {
+ mark_object (mv->contents[index]);
+ }
+
+ return Qnil;
+}
+
+static Bytecount
+size_multiple_value (const void *lheader)
+{
+ return FLEXIBLE_ARRAY_STRUCT_SIZEOF (struct multiple_value,
+ Lisp_Object, contents,
+ ((struct multiple_value *) lheader)->
+ allocated_count);
+}
+
+static const struct memory_description multiple_value_description[] = {
+ { XD_LONG, offsetof (struct multiple_value, count) },
+ { XD_ELEMCOUNT, offsetof (struct multiple_value, allocated_count) },
+ { XD_LONG, offsetof (struct multiple_value, first_desired) },
+ { XD_LISP_OBJECT_ARRAY, offsetof (struct multiple_value, contents),
+ XD_INDIRECT (1, 0) },
+ { XD_END }
+};
+
+DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("multiple-value", multiple_value,
+ 1, /*dumpable-flag*/
+ mark_multiple_value,
+ print_multiple_value, 0,
+ 0, /* No equal method. */
+ 0, /* No hash method. */
+ multiple_value_description,
+ size_multiple_value,
+ struct multiple_value);
+
+/* Given that FIRST and UPPER are the inclusive lower and exclusive upper
+ bounds for the multiple values we're interested in, modify (or don't) the
+ special variables used to indicate this to #'values and #'values-list.
+ Returns the specpdl_depth() value before any modification. */
+int
+bind_multiple_value_limits (int first, int upper)
+{
+ int result = specpdl_depth();
+
+ if (!(upper > first))
+ {
+ invalid_argument ("MULTIPLE-VALUE-UPPER-LIMIT must be greater than "
+ " FIRST-DESIRED-MULTIPLE-VALUE", Qunbound);
+ }
+
+ if (upper > Vmultiple_values_limit)
+ {
+ args_out_of_range (make_int (upper), make_int (Vmultiple_values_limit));
+ }
+
+ /* In the event that something back up the stack wants more multiple
+ values than we do, we need to keep its figures for
+ first_desired_multiple_value or multiple_value_current_limit both. It
+ may be that the form will throw past us.
+
+ If first_desired_multiple_value is zero, this means it hasn't ever been
+ bound, and any value we have for first is appropriate to use.
+
+ Zeroth element is always saved, no need to note that: */
+ if (0 == first)
+ {
+ first = 1;
+ }
+
+ if (0 == first_desired_multiple_value
+ || first < first_desired_multiple_value)
+ {
+ internal_bind_int (&first_desired_multiple_value, first);
+ }
+
+ if (upper > multiple_value_current_limit)
+ {
+ internal_bind_int (&multiple_value_current_limit, upper);
+ }
+
+ return result;
+}
+
+Lisp_Object
+multiple_value_call (int nargs, Lisp_Object *args)
+{
+ /* The argument order here is horrible: */
+ int i, speccount = XINT (args[3]);
+ Lisp_Object result = Qnil, head = Fcons (args[0], Qnil), list_offset;
+ struct gcpro gcpro1, gcpro2;
+ Lisp_Object apply_args[2];
+
+ GCPRO2 (head, result);
+ list_offset = head;
+
+ assert (!(MULTIPLE_VALUEP (args[0])));
+ CHECK_FUNCTION (args[0]);
+
+ /* Start at 4, to ignore the function, the speccount, and the arguments to
+ multiple-values-limit (which we don't discard because
+ #'multiple-value-list-internal needs them): */
+ for (i = 4; i < nargs; ++i)
+ {
+ result = args[i];
+ if (MULTIPLE_VALUEP (result))
+ {
+ Lisp_Object val;
+ Elemcount i, count = XMULTIPLE_VALUE_COUNT (result);
+
+ for (i = 0; i < count; i++)
+ {
+ val = multiple_value_aref (result, i);
+ assert (!UNBOUNDP (val));
+
+ XSETCDR (list_offset, Fcons (val, Qnil));
+ list_offset = XCDR (list_offset);
+ }
+ }
+ else
+ {
+ XSETCDR (list_offset, Fcons (result, Qnil));
+ list_offset = XCDR (list_offset);
+ }
+ }
+
+ apply_args [0] = XCAR (head);
+ apply_args [1] = XCDR (head);
+
+ unbind_to (speccount);
+
+ RETURN_UNGCPRO (Fapply (countof(apply_args), apply_args));
+}
+
+DEFUN ("multiple-value-call", Fmultiple_value_call, 1, UNEVALLED, 0, /*
+Call FUNCTION with arguments FORMS, using multiple values when returned.
+
+All of the (possibly multiple) values returned by each form in FORMS are
+gathered together, and given as arguments to FUNCTION; conceptually, this
+function is a version of `apply' that by-passes the multiple values
+infrastructure, treating multiple values as intercalated lists.
+
+arguments: (FUNCTION &rest FORMS)
+*/
+ (args))
+{
+ int listcount, i = 0, speccount;
+ Lisp_Object *constructed_args;
+ struct gcpro gcpro1;
+
+ GET_EXTERNAL_LIST_LENGTH (args, listcount);
+
+ constructed_args = alloca_array (Lisp_Object, listcount + 3);
+
+ /* Fcar so we error on non-cons: */
+ constructed_args[i] = IGNORE_MULTIPLE_VALUES (Feval (Fcar (args)));
+
+ GCPRO1 (*constructed_args);
+ gcpro1.nvars = ++i;
+
+ /* The argument order is horrible here. */
+ constructed_args[i] = make_int (0);
+ gcpro1.nvars = ++i;
+ constructed_args[i] = make_int (Vmultiple_values_limit);
+ gcpro1.nvars = ++i;
+
+ speccount = bind_multiple_value_limits (0, Vmultiple_values_limit);
+ constructed_args[i] = make_int (speccount);
+ gcpro1.nvars = ++i;
+
+ {
+ LIST_LOOP_2 (elt, XCDR (args))
+ {
+ constructed_args[i] = Feval (elt);
+ gcpro1.nvars = ++i;
+ }
+ }
+
+ RETURN_UNGCPRO (multiple_value_call (listcount + 3, constructed_args));
+}
+
+Lisp_Object
+multiple_value_list_internal (int nargs, Lisp_Object *args)
+{
+ int first = XINT (args[0]), upper = XINT (args[1]),
+ speccount = XINT(args[2]);
+ Lisp_Object result = Qnil;
+
+ assert (nargs == 4);
+
+ result = args[3];
+
+ unbind_to (speccount);
+
+ if (MULTIPLE_VALUEP (result))
+ {
+ Lisp_Object head = Fcons (Qnil, Qnil);
+ Lisp_Object list_offset = head, val;
+ Elemcount count = XMULTIPLE_VALUE_COUNT(result);
+
+ for (; first < upper && first < count; ++first)
+ {
+ val = multiple_value_aref (result, first);
+ assert (!UNBOUNDP (val));
+
+ XSETCDR (list_offset, Fcons (val, Qnil));
+ list_offset = XCDR (list_offset);
+ }
+
+ return XCDR (head);
+ }
+ else
+ {
+ if (first == 0)
+ {
+ return Fcons (result, Qnil);
+ }
+ else
+ {
+ return Qnil;
+ }
+ }
+}
+
+DEFUN ("multiple-value-list-internal", Fmultiple_value_list_internal, 3,
+ UNEVALLED, 0, /*
+Evaluate FORM. Return a list of multiple vals reflecting the other two args.
+
+Don't use this. Use `multiple-value-list', the macro specified by Common
+Lisp, instead.
+
+FIRST-DESIRED-MULTIPLE-VALUE is the first element in list of multiple values
+to pass back. MULTIPLE-VALUE-UPPER-LIMIT is the exclusive upper limit on
+the indexes within the values that may be passed back; this function will
+never return a list longer than MULTIPLE-VALUE-UPPER-LIMIT -
+FIRST-DESIRED-MULTIPLE-VALUE. It may return a list shorter than that, if
+`values' or `values-list' do not supply enough elements.
+
+arguments: (FIRST-DESIRED-MULTIPLE-VALUE MULTIPLE-VALUE-UPPER-LIMIT FORM)
+*/
+ (args))
+{
+ Lisp_Object argv[4];
+ int first, upper;
+ struct gcpro gcpro1;
+
+ argv[0] = IGNORE_MULTIPLE_VALUES (Feval (XCAR (args)));
+ CHECK_NATNUM (argv[0]);
+ first = XINT (argv[0]);
+
+ GCPRO1 (argv[0]);
+ gcpro1.nvars = 1;
+
+ args = XCDR (args);
+
+ argv[1] = IGNORE_MULTIPLE_VALUES (Feval (XCAR (args)));
+ CHECK_NATNUM (argv[1]);
+ upper = XINT (argv[1]);
+ gcpro1.nvars = 2;
+
+ /* The unintuitive order of things here is for the sake of the bytecode;
+ or perhaps for the sake of not requiring me to understand the byte
+ compiler any more than I do now. */
+ argv[2] = make_int (bind_multiple_value_limits (first, upper));
+ gcpro1.nvars = 3;
+ args = XCDR (args);
+
+ /* GCPROing in this function is not strictly necessary, this Feval is the
+ only point that may cons up data that is not immediately discarded, and
+ within it is the only point (in Fmultiple_value_list_internal and
+ multiple_value_list) that we can garbage collect. But I'm conservative,
+ and this function is called so rarely (only from interpreted code) that
+ it doesn't matter for performance. */
+ argv[3] = Feval (XCAR (args));
+ gcpro1.nvars = 4;
+
+ RETURN_UNGCPRO (multiple_value_list_internal (countof (argv), argv));
+}
+
+DEFUN ("multiple-value-prog1", Fmultiple_value_prog1, 1, UNEVALLED, 0, /*
+Similar to `prog1', but return any multiple values from the first form.
+`prog1' itself will never return multiple values.
+
+arguments: (FIRST &rest BODY)
+*/
+ (args))
+{
+ /* This function can GC */
+ Lisp_Object val;
+ struct gcpro gcpro1;
+
+ val = Feval (XCAR (args));
+
+ GCPRO1 (val);
+
+ {
+ LIST_LOOP_2 (form, XCDR (args))
+ Feval (form);
+ }
+
+ RETURN_UNGCPRO (val);
+}
+
+DEFUN ("values", Fvalues, 0, MANY, 0, /*
+Return all ARGS as multiple values.
+
+arguments: (&rest ARGS)
+*/
+ (int nargs, Lisp_Object *args))
+{
+ Lisp_Object result = Qnil;
+ int counting = 1;
+
+ /* Pathological cases, no need to cons up an object: */
+ if (1 == nargs || 1 == multiple_value_current_limit)
+ {
+ return nargs ? args[0] : Qnil;
+ }
+
+ /* If nargs is zero, this code is correct and desirable. With
+ #'multiple-value-call, we want zero-length multiple values in the
+ argument list to be discarded entirely, and we can't do this if we
+ transform them to nil. */
+ result = make_multiple_value (nargs ? args[0] : Qnil, nargs,
+ first_desired_multiple_value,
+ multiple_value_current_limit);
+
+ for (; counting < nargs; ++counting)
+ {
+ if (counting >= first_desired_multiple_value &&
+ counting < multiple_value_current_limit)
+ {
+ multiple_value_aset (result, counting, args[counting]);
+ }
+ }
+
+ return result;
+}
+
+DEFUN ("values-list", Fvalues_list, 1, 1, 0, /*
+Return all the elements of LIST as multiple values.
+*/
+ (list))
+{
+ Lisp_Object result = Qnil;
+ int counting = 1, listcount;
+
+ GET_EXTERNAL_LIST_LENGTH (list, listcount);
+
+ /* Pathological cases, no need to cons up an object: */
+ if (1 == listcount || 1 == multiple_value_current_limit)
+ {
+ return Fcar_safe (list);
+ }
+
+ result = make_multiple_value (Fcar_safe (list), listcount,
+ first_desired_multiple_value,
+ multiple_value_current_limit);
+
+ list = Fcdr_safe (list);
+
+ {
+ EXTERNAL_LIST_LOOP_2 (elt, list)
+ {
+ if (counting >= first_desired_multiple_value &&
+ counting < multiple_value_current_limit)
+ {
+ multiple_value_aset (result, counting, elt);
+ }
+ ++counting;
+ }
+ }
+
+ return result;
+}
+
+Lisp_Object
+values2 (Lisp_Object first, Lisp_Object second)
+{
+ Lisp_Object argv[2];
+
+ argv[0] = first;
+ argv[1] = second;
+
+ return Fvalues (countof (argv), argv);
}
@@ -4285,6 +4915,8 @@
To make a hook variable buffer-local, use `make-local-hook',
not `make-local-variable'.
+
+arguments: (&rest HOOKS)
*/
(int nargs, Lisp_Object *args))
{
@@ -4309,6 +4941,8 @@
To make a hook variable buffer-local, use `make-local-hook',
not `make-local-variable'.
+
+arguments: (HOOK &rest ARGS)
*/
(int nargs, Lisp_Object *args))
{
@@ -4325,6 +4959,8 @@
To make a hook variable buffer-local, use `make-local-hook',
not `make-local-variable'.
+
+arguments: (HOOK &rest ARGS)
*/
(int nargs, Lisp_Object *args))
{
@@ -4341,6 +4977,8 @@
To make a hook variable buffer-local, use `make-local-hook',
not `make-local-variable'.
+
+arguments: (HOOK &rest ARGS)
*/
(int nargs, Lisp_Object *args))
{
@@ -4934,7 +5572,7 @@
p->error_conditions = error_conditions;
p->data = data;
- Fthrow (p->catchtag, Qnil);
+ throw_or_bomb_out (p->catchtag, Qnil, 0, Qnil, Qnil);
RETURN_NOT_REACHED (Qnil);
}
@@ -6521,6 +7159,7 @@
syms_of_eval (void)
{
INIT_LRECORD_IMPLEMENTATION (subr);
+ INIT_LRECORD_IMPLEMENTATION (multiple_value);
DEFSYMBOL (Qinhibit_quit);
DEFSYMBOL (Qautoload);
@@ -6544,6 +7183,8 @@
DEFSYMBOL (Qrun_hooks);
DEFSYMBOL (Qfinalize_list);
DEFSYMBOL (Qif);
+ DEFSYMBOL (Qthrow);
+ DEFSYMBOL (Qobsolete_throw);
DEFSUBR (For);
DEFSUBR (Fand);
@@ -6577,6 +7218,11 @@
DEFSUBR (Fautoload);
DEFSUBR (Feval);
DEFSUBR (Fapply);
+ DEFSUBR (Fmultiple_value_call);
+ DEFSUBR (Fmultiple_value_list_internal);
+ DEFSUBR (Fmultiple_value_prog1);
+ DEFSUBR (Fvalues);
+ DEFSUBR (Fvalues_list);
DEFSUBR (Ffuncall);
DEFSUBR (Ffunctionp);
DEFSUBR (Ffunction_min_args);
@@ -6602,6 +7248,9 @@
debug_on_next_call = 0;
lisp_eval_depth = 0;
entering_debugger = 0;
+
+ first_desired_multiple_value = 0;
+ multiple_value_current_limit = 1;
}
void
@@ -6766,6 +7415,14 @@
*/ );
Vdebugger = Qnil;
+ DEFVAR_CONST_INT ("multiple-values-limit", &Vmultiple_values_limit /*
+The exclusive upper bound on the number of multiple values.
+
+This applies to `values', `values-list', `multiple-value-bind' and related
+macros and special forms.
+*/);
+ Vmultiple_values_limit = EMACS_INT_MAX > INT_MAX ? INT_MAX : EMACS_INT_MAX;
+
staticpro (&Vcatch_everything_tag);
Vcatch_everything_tag = make_opaque (OPAQUE_CLEAR, 0);
diff -r a1dd514df5c6 src/event-msw.c
--- a/src/event-msw.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/event-msw.c Sat Apr 11 14:34:47 2009 +0100
@@ -1769,7 +1769,7 @@
return Qnil;
GCPRO1 (obj);
- obj = Feval (XCAR (obj));
+ obj = IGNORE_MULTIPLE_VALUES (Feval (XCAR (obj)));
RETURN_UNGCPRO (obj);
}
diff -r a1dd514df5c6 src/event-stream.c
--- a/src/event-stream.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/event-stream.c Sat Apr 11 14:34:47 2009 +0100
@@ -843,7 +843,7 @@
call1 (Qcurrent_window_configuration, Qnil));
reset_key_echo (command_builder, 1);
- help = Feval (Vhelp_form);
+ help = IGNORE_MULTIPLE_VALUES (Feval (Vhelp_form));
if (STRINGP (help))
internal_with_output_to_temp_buffer (build_string ("*Help*"),
print_help, help, Qnil);
diff -r a1dd514df5c6 src/floatfns.c
--- a/src/floatfns.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/floatfns.c Sat Apr 11 14:34:47 2009 +0100
@@ -848,16 +848,45 @@
#endif /* ! HAVE_LOGB */
}
-DEFUN ("ceiling", Fceiling, 1, 1, 0, /*
-Return the smallest integer no less than NUMBER. (Round toward +inf.)
+DEFUN ("ceiling", Fceiling, 1, 2, 0, /*
+Return the smallest integer no less than NUMBER.
+
+With optional argument DIVISOR, return the smallest integer no less than
+NUMBER divided by DIVISOR.
+
+This function returns multiple values; see `multiple-value-call' and
+`multiple-value-bind'. The returned value is the remainder in the
+calculation.
*/
- (number))
+ (number, divisor))
{
+ Lisp_Object res0, original_number = number;
+
+ if (!NILP (divisor))
+ {
+ Lisp_Object quoargs[2];
+
+ if (!FLOATP (number))
+ {
+ CHECK_NUMBER (divisor);
+
+ promote_args (&number, &divisor);
+ quoargs[0] = divisor;
+ quoargs[1] = number;
+ number = Fquo (2, quoargs);
+ }
+ else
+ {
+
+ }
+ }
+
if (FLOATP (number))
{
double d;
IN_FLOAT ((d = ceil (XFLOAT_DATA (number))), "ceiling", number);
- return (float_to_int (d, "ceiling", number, Qunbound));
+ return values2 (float_to_int (d, "ceiling", number, Qunbound),
+ make_float (XFLOAT_DATA (number) - d));
}
#ifdef HAVE_BIGNUM
@@ -865,14 +894,23 @@
#else
if (INTP (number))
#endif
- return number;
+ return values2 (number, Qzero);
#ifdef HAVE_RATIO
if (RATIOP (number))
{
+ enum number_type nt;
bignum_ceil (scratch_bignum, XRATIO_NUMERATOR (number),
XRATIO_DENOMINATOR (number));
- return Fcanonicalize_number (make_bignum_bg (scratch_bignum));
+ res0 = make_bignum_bg (scratch_bignum);
+
+ nt = promote_args (&res0, &number);
+ assert (RATIO_T == nt);
+
+ ratio_sub (scratch_ratio, XRATIO_DATA (number), XRATIO_DATA (res0));
+
+ return values2 (Fcanonicalize_number (res0),
+ Fcanonicalize_number (make_ratio_rt (scratch_ratio)));
}
#endif
@@ -881,16 +919,24 @@
{
bigfloat_set_prec (scratch_bigfloat, XBIGFLOAT_GET_PREC (number));
bigfloat_ceil (scratch_bigfloat, XBIGFLOAT_DATA (number));
+
#ifdef HAVE_BIGNUM
bignum_set_bigfloat (scratch_bignum, scratch_bigfloat);
- return Fcanonicalize_number (make_bignum_bg (scratch_bignum));
+ res0 = make_bignum_bg (scratch_bignum);
#else
- return make_int ((EMACS_INT) bigfloat_to_long (scratch_bigfloat));
+ res0 = make_int ((EMACS_INT) bigfloat_to_long (scratch_bigfloat));
#endif /* HAVE_BIGNUM */
+ bigfloat_sub (scratch_bigfloat,
+ XBIGFLOAT_DATA (number),
+ scratch_bigfloat);
+
+ return
+ values2 (Fcanonicalize_number (res0),
+ Fcanonicalize_number (make_bigfloat_bf (scratch_bigfloat)));
}
#endif /* HAVE_BIGFLOAT */
- return Fceiling (wrong_type_argument (Qnumberp, number));
+ return Fceiling (wrong_type_argument (Qnumberp, original_number), divisor);
}
diff -r a1dd514df5c6 src/glade.c
--- a/src/glade.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/glade.c Sat Apr 11 14:34:47 2009 +0100
@@ -42,7 +42,8 @@
if (signal_data && signal_data[0])
{
- lisp_data = Feval (Fread (build_string (signal_data)));
+ lisp_data
+ = IGNORE_MULTIPLE_VALUES (Feval (Fread (build_string (signal_data))));
}
/* obj, name, func, cb_data, object_signal, after_p */
diff -r a1dd514df5c6 src/glyphs-widget.c
--- a/src/glyphs-widget.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/glyphs-widget.c Sat Apr 11 14:34:47 2009 +0100
@@ -222,7 +222,7 @@
glyph = XSYMBOL (glyph)->value;
if (CONSP (glyph))
- glyph = Feval (glyph);
+ glyph = IGNORE_MULTIPLE_VALUES (Feval (glyph));
/* Be really helpful to the user. */
if (VECTORP (glyph))
diff -r a1dd514df5c6 src/glyphs.c
--- a/src/glyphs.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/glyphs.c Sat Apr 11 14:34:47 2009 +0100
@@ -3079,7 +3079,7 @@
value = XCDR (cons);
CHECK_CONS (value);
value = XCAR (value);
- value = Feval (value);
+ value = IGNORE_MULTIPLE_VALUES (Feval (value));
if (NILP (value))
continue;
if (!STRINGP (value) && !COLOR_SPECIFIERP (value))
diff -r a1dd514df5c6 src/gui-x.c
--- a/src/gui-x.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/gui-x.c Sat Apr 11 14:34:47 2009 +0100
@@ -325,8 +325,9 @@
Lisp_Object wses_form = (form); \
(slot) = (NILP (wses_form) ? 0 : \
EQ (wses_form, Qt) ? 1 : \
- !NILP (in_display ? eval_within_redisplay (wses_form) \
- : Feval (wses_form))); \
+ !NILP (in_display ? \
+ IGNORE_MULTIPLE_VALUES (eval_within_redisplay (wses_form)) \
+ : IGNORE_MULTIPLE_VALUES (Feval (wses_form)))); \
} while (0)
#else
/* Treat the activep slot of the menu item as a boolean */
@@ -436,7 +437,7 @@
#endif /* HAVE_MENUBARS */
if (!STRINGP (pgui->name))
- pgui->name = Feval (pgui->name);
+ pgui->name = IGNORE_MULTIPLE_VALUES (Feval (pgui->name));
CHECK_STRING (pgui->name);
if (accel_p)
@@ -459,7 +460,7 @@
suffix2 = pgui->suffix;
else
{
- suffix2 = Feval (pgui->suffix);
+ suffix2 = IGNORE_MULTIPLE_VALUES (Feval (pgui->suffix));
CHECK_STRING (suffix2);
}
diff -r a1dd514df5c6 src/gui.c
--- a/src/gui.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/gui.c Sat Apr 11 14:34:47 2009 +0100
@@ -386,7 +386,6 @@
gui_item_value (Lisp_Object form)
{
/* This function can call Lisp. */
-
#ifndef ERROR_CHECK_DISPLAY
/* Shortcut to avoid evaluating Qt/Qnil each time; but don't do it when
error-checking so we catch unprotected eval within redisplay quicker */
@@ -395,7 +394,9 @@
if (EQ (form, Qt))
return 1;
#endif
- return !NILP (in_display ? eval_within_redisplay (form) : Feval (form));
+ return !NILP (in_display ?
+ IGNORE_MULTIPLE_VALUES (eval_within_redisplay (form))
+: IGNORE_MULTIPLE_VALUES (Feval (form)));
}
/*
@@ -511,6 +512,7 @@
if (!STRINGP (suffix))
{
suffix = Feval (suffix);
+ suffix = IGNORE_MULTIPLE_VALUES (suffix);
CHECK_STRING (suffix);
}
diff -r a1dd514df5c6 src/inline.c
--- a/src/inline.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/inline.c Sat Apr 11 14:34:47 2009 +0100
@@ -64,6 +64,7 @@
#include "process.h"
#include "rangetab.h"
#include "specifier.h"
+#include "symeval.h"
#include "syntax.h"
#include "window.h"
diff -r a1dd514df5c6 src/lisp.h
--- a/src/lisp.h Sun Mar 08 22:52:13 2009 +0200
+++ b/src/lisp.h Sat Apr 11 14:34:47 2009 +0100
@@ -4269,10 +4269,14 @@
EXFUN (Finteractive_p, 0);
EXFUN (Fprogn, UNEVALLED);
MODULE_API EXFUN (Fsignal, 2);
-MODULE_API EXFUN_NORETURN (Fthrow, 2);
+MODULE_API EXFUN_NORETURN (Fthrow, UNEVALLED);
MODULE_API EXFUN (Fcall_with_condition_handler, MANY);
EXFUN (Ffunction_max_args, 1);
EXFUN (Ffunction_min_args, 1);
+
+MODULE_API DECLARE_DOESNT_RETURN (throw_or_bomb_out (Lisp_Object,
+ Lisp_Object, int,
+ Lisp_Object, Lisp_Object));
MODULE_API DECLARE_DOESNT_RETURN (signal_error_1 (Lisp_Object, Lisp_Object));
void maybe_signal_error_1 (Lisp_Object, Lisp_Object, Lisp_Object,
diff -r a1dd514df5c6 src/lread.c
--- a/src/lread.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/lread.c Sat Apr 11 14:34:47 2009 +0100
@@ -372,7 +372,7 @@
Lisp_Object val;
GCPRO1 (reloc);
- val = Feval (XCDR (acons));
+ val = IGNORE_MULTIPLE_VALUES (Feval (XCDR (acons)));
UNGCPRO;
if (!NILP (val))
diff -r a1dd514df5c6 src/lrecord.h
--- a/src/lrecord.h Sun Mar 08 22:52:13 2009 +0200
+++ b/src/lrecord.h Sat Apr 11 14:34:47 2009 +0100
@@ -224,6 +224,7 @@
lrecord_type_max_symbol_value_magic = lrecord_type_symbol_value_buffer_local,
lrecord_type_symbol,
lrecord_type_subr,
+ lrecord_type_multiple_value,
lrecord_type_cons,
lrecord_type_vector,
lrecord_type_string,
diff -r a1dd514df5c6 src/macros.c
--- a/src/macros.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/macros.c Sat Apr 11 14:34:47 2009 +0100
@@ -197,7 +197,7 @@
with Qt to force an early exit. */
signal_error (Qinvalid_state, "junk in executing-macro", Qunbound);
- Fthrow (Qexecute_kbd_macro, Qt);
+ throw_or_bomb_out (Qexecute_kbd_macro, Qt, 0, Qnil, Qnil);
}
diff -r a1dd514df5c6 src/menubar-gtk.c
--- a/src/menubar-gtk.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/menubar-gtk.c Sat Apr 11 14:34:47 2009 +0100
@@ -666,13 +666,14 @@
if ((!NILP (config_tag)
&& NILP (Fmemq (config_tag, Vmenubar_configuration)))
- || (included_spec && NILP (Feval (include_p))))
+ || (included_spec &&
+ NILP (IGNORE_MULTIPLE_VALUES (Feval (include_p)))))
{
return (NULL);
}
if (active_spec)
- active_p = Feval (active_p);
+ active_p = IGNORE_MULTIPLE_VALUES (Feval (active_p));
gtk_widget_set_sensitive (GTK_WIDGET (menu_item), ! NILP (active_p));
}
@@ -853,7 +854,8 @@
#ifdef HAVE_MENUBARS
if ((!NILP (config_tag) && NILP (Fmemq (config_tag, Vmenubar_configuration)))
- || (included_spec && NILP (Feval (include_p))))
+ || (included_spec && NILP (IGNORE_MULTIPLE_VALUES (Feval (include_p)))))
+
{
/* the include specification says to ignore this item. */
return 0;
@@ -866,7 +868,8 @@
accel = menu_name_to_accelerator (XSTRING_DATA (name));
if (!NILP (suffix))
- suffix = Feval (suffix);
+ suffix = IGNORE_MULTIPLE_VALUES (Feval (suffix));
+
if (!separator_string_p (XSTRING_DATA (name)))
{
@@ -901,7 +904,7 @@
}
else
{
- selected_p = Feval (selected_p);
+ selected_p = IGNORE_MULTIPLE_VALUES (Feval (selected_p));
}
}
@@ -911,7 +914,7 @@
}
else
{
- active_p = Feval (active_p);
+ active_p = IGNORE_MULTIPLE_VALUES (Feval (active_p));
}
if (0 ||
diff -r a1dd514df5c6 src/menubar-msw.c
--- a/src/menubar-msw.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/menubar-msw.c Sat Apr 11 14:34:47 2009 +0100
@@ -326,7 +326,7 @@
}
if (!STRINGP (pgui_item->name))
- pgui_item->name = Feval (pgui_item->name);
+ pgui_item->name = IGNORE_MULTIPLE_VALUES (Feval (pgui_item->name));
if (!gui_item_active_p (gui_item))
item_info.fState = MFS_GRAYED;
diff -r a1dd514df5c6 src/print.c
--- a/src/print.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/print.c Sat Apr 11 14:34:48 2009 +0100
@@ -821,7 +821,7 @@
#endif
GCPRO2 (name, val);
- name = Feval (XCAR (args));
+ name = IGNORE_MULTIPLE_VALUES (Feval (XCAR (args)));
CHECK_STRING (name);
diff -r a1dd514df5c6 src/symbols.c
--- a/src/symbols.c Sun Mar 08 22:52:13 2009 +0200
+++ b/src/symbols.c Sat Apr 11 14:34:48 2009 +0100
@@ -2146,7 +2146,7 @@
GC_PROPERTY_LIST_LOOP_3 (symbol, val, args)
{
- val = Feval (val);
+ val = IGNORE_MULTIPLE_VALUES (Feval (val));
Fset_default (symbol, val);
retval = val;
}
diff -r a1dd514df5c6 src/symeval.h
--- a/src/symeval.h Sun Mar 08 22:52:13 2009 +0200
+++ b/src/symeval.h Sat Apr 11 14:34:48 2009 +0100
@@ -488,6 +488,82 @@
void flush_all_buffer_local_cache (void);
+struct multiple_value {
+ struct LCRECORD_HEADER header;
+ Elemcount count;
+ Elemcount allocated_count;
+ Elemcount first_desired;
+ Lisp_Object contents[1];
+};
+typedef struct multiple_value multiple_value;
+
+DECLARE_LRECORD (multiple_value, multiple_value);
+#define MULTIPLE_VALUEP(x) RECORDP (x, multiple_value)
+
+#define XMULTIPLE_VALUE(x) XRECORD (x, multiple_value, multiple_value)
+#define wrap_multiple_value(p) wrap_record (p, multiple_value)
+
+#define CHECK_MULTIPLE_VALUE(x) CHECK_RECORD (x, multiple_value)
+#define CONCHECK_MULTIPLE_VALUE(x) CONCHECK_RECORD (x, multiple_value)
+
+#define multiple_value_count(x) ((x)->count)
+#define multiple_value_allocated_count(x) ((x)->allocated_count)
+#define multiple_value_first_desired(x) ((x)->first_desired)
+#define multiple_value_contents(x) ((x)->contents)
+
+#define XMULTIPLE_VALUE_COUNT(x) multiple_value_count (XMULTIPLE_VALUE (x))
+#define XMULTIPLE_VALUE_ALLOCATED_COUNT(x) \
+ multiple_value_allocated_count (XMULTIPLE_VALUE (x))
+#define XMULTIPLE_VALUE_FIRST_DESIRED(x) \
+ multiple_value_first_desired (XMULTIPLE_VALUE(x))
+#define XMULTIPLE_VALUE_CONTENTS(x) multiple_value_contents (XMULTIPLE_VALUE(x))
+
+Lisp_Object multiple_value_call (int nargs, Lisp_Object *args);
+Lisp_Object multiple_value_list_internal (int nargs, Lisp_Object *args);
+
+/* It's slightly ugly to expose this here, but it does cut down the amount
+ of work the bytecode interpreter has to do substantially. */
+extern int multiple_value_current_limit;
+
+/* Bind the multiple value limits that #'values and #'values-list pay
+ attention to. Used by bytecode and interpreted code. */
+int bind_multiple_value_limits (int first, int upper);
+
+Lisp_Object multiple_value_aref (Lisp_Object, Elemcount);
+
+Lisp_Object values2 (Lisp_Object first, Lisp_Object second);
+
+DECLARE_INLINE_HEADER (
+Lisp_Object
+ignore_multiple_values (Lisp_Object obj)
+)
+{
+ return MULTIPLE_VALUEP (obj) ? multiple_value_aref (obj, 0) : obj;
+}
+
+#ifdef ERROR_CHECK_MULTIPLE_VALUES
+
+DECLARE_INLINE_HEADER (
+Lisp_Object
+ignore_multiple_values_1 (Lisp_Object obj)
+)
+{
+ if (1 == multiple_value_current_limit)
+ {
+ assert (!MULTIPLE_VALUEP (obj));
+ return obj;
+ }
+
+ return ignore_multiple_values (obj);
+}
+
+#define IGNORE_MULTIPLE_VALUES(X) ignore_multiple_values_1 (X)
+
+#else
+#define IGNORE_MULTIPLE_VALUES(X) (multiple_value_current_limit == 1 ? (X) \
+: ignore_multiple_values (X))
+#endif
+
END_C_DECLS
#endif /* INCLUDED_symeval_h_ */
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches
[PATCH] query-coding-region in C.
15 years, 8 months
Aidan Kehoe
It’s become clear to me that I won’t get the chance to bring this code to
the point where it a) is separated into distinct functional changes, such
that the small changes I made in passing are committed on their own b) is
sufficiently annotated with ChangeLogs and c) supports the Unicode and
default query-coding functionality (not complicated, just a matter of
porting the code from Lisp) before this summer. I don’t particularly
anticipate that anyone else will get to the work, but at least by posting it
here now I’m not actually hindering that.
diff -r 9c97a5a8c241 lisp/coding.el
--- a/lisp/coding.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/coding.el Sat Apr 11 14:35:00 2009 +0100
@@ -30,11 +30,8 @@
;;; Code:
-(globally-declare-fboundp
- '(coding-system-lock-shift
- coding-system-seven coding-system-charset charset-dimension))
-
-(defalias 'check-coding-system 'get-coding-system)
+;; check-coding-system is not a deprecated name:
+(fset 'check-coding-system (symbol-function 'get-coding-system))
(defun modify-coding-system-alist (target-type regexp coding-system)
"Modify one of look up tables for finding a coding system on I/O operation.
@@ -220,9 +217,10 @@
((and (not bom) le) 'utf-16-little-endian)
((and (not bom) (not le) 'utf-16)))))))
(big5 'big5)
- (iso2022 (cond ((coding-system-lock-shift coding-system)
+ (iso2022 (cond ((declare-fboundp
+ (coding-system-lock-shift coding-system))
'iso-lock-shift)
- ((coding-system-seven coding-system)
+ ((declare-fboundp (coding-system-seven coding-system))
'iso-7)
(t
(let ((dim 0)
@@ -232,15 +230,14 @@
(setq ccs (declare-fboundp
(coding-system-iso2022-charset
coding-system i)))
- (if (and ccs
- (> (charset-dimension ccs) dim))
- (setq dim (charset-dimension ccs))
- )
+ (with-fboundp 'charset-dimension
+ (if (and ccs
+ (> (charset-dimension ccs) dim))
+ (setq dim (charset-dimension ccs))))
(setq i (1+ i)))
(cond ((= dim 1) 'iso-8-1)
((= dim 2) 'iso-8-2)
- (t 'iso-8-designate))))))
- )))
+ (t 'iso-8-designate)))))))))
;;; Make certain variables equivalent to coding-system aliases:
@@ -270,15 +267,6 @@
(terminal terminal-coding-system)
(keyboard keyboard-coding-system)))
-(when (not (featurep 'mule))
- (define-coding-system-alias 'escape-quoted 'binary)
- ;; these are so that gnus and friends work when not mule
- (define-coding-system-alias 'iso-8859-1 'raw-text)
- ;; We're misrepresenting ourselves to the gnus code by saying we support
- ;; both.
- ; (define-coding-system-alias 'iso-8859-2 'raw-text)
- (define-coding-system-alias 'ctext 'raw-text))
-
(make-compatible-variable 'enable-multibyte-characters "Unimplemented")
;; Sure would be nice to be able to use defface here.
@@ -288,7 +276,7 @@
#s(hash-table test equal data ())
"A map from list of charsets to `skip-chars-forward' arguments for them.")
-(defsubst query-coding-clear-highlights (begin end &optional buffer-or-string)
+(defun query-coding-clear-highlights (begin end &optional buffer-or-string)
"Remove extent faces added by `query-coding-region' between BEGIN and END.
Optional argument BUFFER-OR-STRING is the buffer or string to use, and
@@ -404,68 +392,6 @@
(values nil ranges)
(values t nil))))))
-(defun query-coding-region (start end coding-system &optional buffer
- ignore-invalid-sequencesp errorp highlight)
- "Work out whether CODING-SYSTEM can losslessly encode a region.
-
-START and END are the beginning and end of the region to check.
-CODING-SYSTEM is the coding system to try.
-
-Optional argument BUFFER is the buffer to check, and defaults to the current
-buffer.
-
-IGNORE-INVALID-SEQUENCESP, also an optional argument, says to treat XEmacs
-characters which have an unambiguous encoded representation, despite being
-undefined in what they represent, as encodable. These chiefly arise with
-variable-length encodings like UTF-8 and UTF-16, where an invalid sequence
-is passed through to XEmacs as a sequence of characters with a defined
-correspondence to the octets on disk, but no non-error semantics; see the
-`invalid-sequence-coding-system' argument to `set-language-info'.
-
-They can also arise with fixed-length encodings like ISO 8859-7, where
-certain octets on disk have undefined values, and treating them as
-corresponding to the ISO 8859-1 characters with the same numerical values
-may lead to data that is not understood by other applications.
-
-Optional argument ERRORP says to signal a `text-conversion-error' if some
-character in the region cannot be encoded, and defaults to nil.
-
-Optional argument HIGHLIGHT says to display unencodable characters in the
-region using `query-coding-warning-face'. It defaults to nil.
-
-This function returns a list; the intention is that callers use
-`multiple-value-bind' or the related CL multiple value functions to deal
-with it. The first element is `t' if the region can be encoded using
-CODING-SYSTEM, or `nil' if not. The second element is `nil' if the region
-can be encoded using CODING-SYSTEM; otherwise, it is a range table
-describing the positions of the unencodable characters. Ranges that
-describe characters that would be ignored were IGNORE-INVALID-SEQUENCESP
-non-nil map to the symbol `invalid-sequence'; other ranges map to the symbol
-`unencodable'. If IGNORE-INVALID-SEQUENCESP is non-nil, all ranges will map
-to the symbol `unencodable'. See `make-range-table' for more details of
-range tables."
- (funcall (or (coding-system-get coding-system 'query-coding-function)
- #'default-query-coding-region)
- start end coding-system buffer ignore-invalid-sequencesp errorp
- highlight))
-
-(define-compiler-macro query-coding-region (start end coding-system
- &optional buffer
- ignore-invalid-sequencesp
- errorp highlight)
- `(funcall (or (coding-system-get ,coding-system 'query-coding-function)
- #'default-query-coding-region)
- ,start ,end ,coding-system ,@(append (when (or buffer
- ignore-invalid-sequencesp
- errorp highlight)
- (list buffer))
- (when (or ignore-invalid-sequencesp
- errorp highlight)
- (list ignore-invalid-sequencesp))
- (when (or errorp highlight)
- (list errorp))
- (when highlight (list highlight)))))
-
(defun query-coding-string (string coding-system &optional
ignore-invalid-sequencesp errorp highlight)
"Work out whether CODING-SYSTEM can losslessly encode STRING.
@@ -509,20 +435,21 @@
(query-coding-region (point-min) (point-max) coding-system
(current-buffer) ignore-invalid-sequencesp
errorp)
- (unless result
- (map-range-table
- #'(lambda (begin end value)
- ;; Sigh, string indices are zero-based, buffer offsets are
- ;; one-based.
- (remove-range-table begin end ranges)
- (put-range-table (decf begin) (decf end) value ranges)
- (when highlight
- (setq extent (make-extent begin end string))
- (set-extent-priority extent (+ mouse-highlight-priority 2))
- (set-extent-property extent 'duplicable t)
- (set-extent-face extent 'query-coding-warning-face)))
- ranges))
- (values result ranges))))
+ (unless result
+ (let ((original-ranges ranges))
+ (setq ranges (make-range-table))
+ (map-range-table
+ #'(lambda (begin end value)
+ ;; Sigh, string indices are zero-based, buffer offsets are
+ ;; one-based.
+ (put-range-table (decf begin) (decf end) value ranges)
+ (when highlight
+ (setq extent (make-extent begin end string))
+ (set-extent-priority extent (+ mouse-highlight-priority 2))
+ (set-extent-property extent 'duplicable t)
+ (set-extent-face extent 'query-coding-warning-face)))
+ original-ranges)))
+ (values result ranges))))
;; Function docstring and API are taken from GNU coding.c version 1.353, GPLv2.
(defun unencodable-char-position (start end coding-system
@@ -640,13 +567,42 @@
(when succeededp
(encode-coding-string char coding-system))))
-(unless (featurep 'mule)
+(if (featurep 'mule)
+ (progn
+ ;; Under Mule, we do much of the complicated coding system creation in
+ ;; Lisp and especially at compile time. We need some function
+ ;; definition for this function to be created in this file, but we can
+ ;; leave assigning the docstring to the autoload cookie
+ ;; handling later. Thankfully; that docstring is big.
+ (autoload 'make-coding-system "mule/make-coding-system")
+
+ ;; (During byte-compile before dumping, make-coding-system may already
+ ;; have been loaded, make sure not to overwrite the correct compiler
+ ;; macro:)
+ (when (eq 'autoload (car (symbol-function 'make-coding-system)))
+ ;; Make sure to pick up the correct compiler macro when compiling
+ ;; files:
+ (define-compiler-macro make-coding-system (&whole form name type
+ &optional description props)
+ (load (second (symbol-function 'make-coding-system)))
+ (funcall (get 'make-coding-system 'cl-compiler-macro)
+ form name description props))))
+
+ ;; Mule's not available;
+ (fset 'make-coding-system (symbol-function 'make-coding-system-internal))
+ (define-coding-system-alias 'escape-quoted 'binary)
+
+ ;; These are so that gnus and friends work when not mule:
+ (define-coding-system-alias 'iso-8859-1 'raw-text)
+ (define-coding-system-alias 'ctext 'raw-text)
+
;; If we're under non-Mule, every XEmacs character can be encoded
;; with every XEmacs coding system.
- (fset #'default-query-coding-region
+ (fset 'default-query-coding-region
#'(lambda (&rest ignored)
"Stub `query-coding-region' implementation. Always succeeds."
(values t nil)))
+ ;; And there's no need to have this bound.
(unintern 'default-query-coding-region-safe-charset-skip-chars-map))
;;; coding.el ends here
diff -r 9c97a5a8c241 lisp/help.el
--- a/lisp/help.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/help.el Sat Apr 11 14:35:00 2009 +0100
@@ -1192,9 +1192,12 @@
(let* ((doc (documentation function))
(args (and doc
(string-match
- "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'"
+ "[\n\t ]*\narguments: ?(\\([^)]*\\))\n?\\'"
doc)
- (match-string 1 doc))))
+ (match-string 1 doc)))
+ (args (and args (replace-in-string args
+ "[ ]*\\\\\n[ ]*"
+ " " t))))
;; If there are no arguments documented for the
;; subr, rather don't print anything.
(cond ((null args) t)
diff -r 9c97a5a8c241 lisp/mule/arabic.el
--- a/lisp/mule/arabic.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/arabic.el Sat Apr 11 14:35:00 2009 +0100
@@ -31,226 +31,226 @@
;; See iso-with-esc.el for commentary on the ISO standard Arabic character
;; set.
-(make-8-bit-coding-system
- 'iso-8859-6
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xAC ?\u060C) ;; ARABIC COMMA
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xBB ?\u061B) ;; ARABIC SEMICOLON
- (#xBF ?\u061F) ;; ARABIC QUESTION MARK
- (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
- (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
- (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
- (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
- (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
- (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
- (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
- (#xC8 ?\u0628) ;; ARABIC LETTER BEH
- (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
- (#xCA ?\u062A) ;; ARABIC LETTER TEH
- (#xCB ?\u062B) ;; ARABIC LETTER THEH
- (#xCC ?\u062C) ;; ARABIC LETTER JEEM
- (#xCD ?\u062D) ;; ARABIC LETTER HAH
- (#xCE ?\u062E) ;; ARABIC LETTER KHAH
- (#xCF ?\u062F) ;; ARABIC LETTER DAL
- (#xD0 ?\u0630) ;; ARABIC LETTER THAL
- (#xD1 ?\u0631) ;; ARABIC LETTER REH
- (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
- (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
- (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
- (#xD5 ?\u0635) ;; ARABIC LETTER SAD
- (#xD6 ?\u0636) ;; ARABIC LETTER DAD
- (#xD7 ?\u0637) ;; ARABIC LETTER TAH
- (#xD8 ?\u0638) ;; ARABIC LETTER ZAH
- (#xD9 ?\u0639) ;; ARABIC LETTER AIN
- (#xDA ?\u063A) ;; ARABIC LETTER GHAIN
- (#xE0 ?\u0640) ;; ARABIC TATWEEL
- (#xE1 ?\u0641) ;; ARABIC LETTER FEH
- (#xE2 ?\u0642) ;; ARABIC LETTER QAF
- (#xE3 ?\u0643) ;; ARABIC LETTER KAF
- (#xE4 ?\u0644) ;; ARABIC LETTER LAM
- (#xE5 ?\u0645) ;; ARABIC LETTER MEEM
- (#xE6 ?\u0646) ;; ARABIC LETTER NOON
- (#xE7 ?\u0647) ;; ARABIC LETTER HEH
- (#xE8 ?\u0648) ;; ARABIC LETTER WAW
- (#xE9 ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
- (#xEA ?\u064A) ;; ARABIC LETTER YEH
- (#xEB ?\u064B) ;; ARABIC FATHATAN
- (#xEC ?\u064C) ;; ARABIC DAMMATAN
- (#xED ?\u064D) ;; ARABIC KASRATAN
- (#xEE ?\u064E) ;; ARABIC FATHA
- (#xEF ?\u064F) ;; ARABIC DAMMA
- (#xF0 ?\u0650) ;; ARABIC KASRA
- (#xF1 ?\u0651) ;; ARABIC SHADDA
- (#xF2 ?\u0652)) ;; ARABIC SUKUN
- "ISO 8859-6 (Arabic)"
-'(mnemonic "ArISO"))
+(make-coding-system
+ 'iso-8859-6 'fixed-width "ISO 8859-6 (Arabic)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xAC ?\u060C) ;; ARABIC COMMA
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xBB ?\u061B) ;; ARABIC SEMICOLON
+ (#xBF ?\u061F) ;; ARABIC QUESTION MARK
+ (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
+ (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+ (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+ (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+ (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+ (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+ (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
+ (#xC8 ?\u0628) ;; ARABIC LETTER BEH
+ (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
+ (#xCA ?\u062A) ;; ARABIC LETTER TEH
+ (#xCB ?\u062B) ;; ARABIC LETTER THEH
+ (#xCC ?\u062C) ;; ARABIC LETTER JEEM
+ (#xCD ?\u062D) ;; ARABIC LETTER HAH
+ (#xCE ?\u062E) ;; ARABIC LETTER KHAH
+ (#xCF ?\u062F) ;; ARABIC LETTER DAL
+ (#xD0 ?\u0630) ;; ARABIC LETTER THAL
+ (#xD1 ?\u0631) ;; ARABIC LETTER REH
+ (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
+ (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
+ (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
+ (#xD5 ?\u0635) ;; ARABIC LETTER SAD
+ (#xD6 ?\u0636) ;; ARABIC LETTER DAD
+ (#xD7 ?\u0637) ;; ARABIC LETTER TAH
+ (#xD8 ?\u0638) ;; ARABIC LETTER ZAH
+ (#xD9 ?\u0639) ;; ARABIC LETTER AIN
+ (#xDA ?\u063A) ;; ARABIC LETTER GHAIN
+ (#xE0 ?\u0640) ;; ARABIC TATWEEL
+ (#xE1 ?\u0641) ;; ARABIC LETTER FEH
+ (#xE2 ?\u0642) ;; ARABIC LETTER QAF
+ (#xE3 ?\u0643) ;; ARABIC LETTER KAF
+ (#xE4 ?\u0644) ;; ARABIC LETTER LAM
+ (#xE5 ?\u0645) ;; ARABIC LETTER MEEM
+ (#xE6 ?\u0646) ;; ARABIC LETTER NOON
+ (#xE7 ?\u0647) ;; ARABIC LETTER HEH
+ (#xE8 ?\u0648) ;; ARABIC LETTER WAW
+ (#xE9 ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
+ (#xEA ?\u064A) ;; ARABIC LETTER YEH
+ (#xEB ?\u064B) ;; ARABIC FATHATAN
+ (#xEC ?\u064C) ;; ARABIC DAMMATAN
+ (#xED ?\u064D) ;; ARABIC KASRATAN
+ (#xEE ?\u064E) ;; ARABIC FATHA
+ (#xEF ?\u064F) ;; ARABIC DAMMA
+ (#xF0 ?\u0650) ;; ARABIC KASRA
+ (#xF1 ?\u0651) ;; ARABIC SHADDA
+ (#xF2 ?\u0652)) ;; ARABIC SUKUN
+ mnemonic "ArISO"))
-(make-8-bit-coding-system
- 'windows-1256
- '((#x80 ?\u20AC) ;; EURO SIGN
- (#x81 ?\u067E) ;; ARABIC LETTER PEH
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x88 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8A ?\u0679) ;; ARABIC LETTER TTEH
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u0152) ;; LATIN CAPITAL LIGATURE OE
- (#x8D ?\u0686) ;; ARABIC LETTER TCHEH
- (#x8E ?\u0698) ;; ARABIC LETTER JEH
- (#x8F ?\u0688) ;; ARABIC LETTER DDAL
- (#x90 ?\u06AF) ;; ARABIC LETTER GAF
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x98 ?\u06A9) ;; ARABIC LETTER KEHEH
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9A ?\u0691) ;; ARABIC LETTER RREH
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#x9C ?\u0153) ;; LATIN SMALL LIGATURE OE
- (#x9D ?\u200C) ;; ZERO WIDTH NON-JOINER
- (#x9E ?\u200D) ;; ZERO WIDTH JOINER
- (#x9F ?\u06BA) ;; ARABIC LETTER NOON GHUNNA
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u060C) ;; ARABIC COMMA
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u06BE) ;; ARABIC LETTER HEH DOACHASHMEE
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
- (#xBA ?\u061B) ;; ARABIC SEMICOLON
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
- (#xBF ?\u061F) ;; ARABIC QUESTION MARK
- (#xC0 ?\u06C1) ;; ARABIC LETTER HEH GOAL
- (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
- (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
- (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
- (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
- (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
- (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
- (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
- (#xC8 ?\u0628) ;; ARABIC LETTER BEH
- (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
- (#xCA ?\u062A) ;; ARABIC LETTER TEH
- (#xCB ?\u062B) ;; ARABIC LETTER THEH
- (#xCC ?\u062C) ;; ARABIC LETTER JEEM
- (#xCD ?\u062D) ;; ARABIC LETTER HAH
- (#xCE ?\u062E) ;; ARABIC LETTER KHAH
- (#xCF ?\u062F) ;; ARABIC LETTER DAL
- (#xD0 ?\u0630) ;; ARABIC LETTER THAL
- (#xD1 ?\u0631) ;; ARABIC LETTER REH
- (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
- (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
- (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
- (#xD5 ?\u0635) ;; ARABIC LETTER SAD
- (#xD6 ?\u0636) ;; ARABIC LETTER DAD
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u0637) ;; ARABIC LETTER TAH
- (#xD9 ?\u0638) ;; ARABIC LETTER ZAH
- (#xDA ?\u0639) ;; ARABIC LETTER AIN
- (#xDB ?\u063A) ;; ARABIC LETTER GHAIN
- (#xDC ?\u0640) ;; ARABIC TATWEEL
- (#xDD ?\u0641) ;; ARABIC LETTER FEH
- (#xDE ?\u0642) ;; ARABIC LETTER QAF
- (#xDF ?\u0643) ;; ARABIC LETTER KAF
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u0644) ;; ARABIC LETTER LAM
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u0645) ;; ARABIC LETTER MEEM
- (#xE4 ?\u0646) ;; ARABIC LETTER NOON
- (#xE5 ?\u0647) ;; ARABIC LETTER HEH
- (#xE6 ?\u0648) ;; ARABIC LETTER WAW
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
- (#xED ?\u064A) ;; ARABIC LETTER YEH
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u064B) ;; ARABIC FATHATAN
- (#xF1 ?\u064C) ;; ARABIC DAMMATAN
- (#xF2 ?\u064D) ;; ARABIC KASRATAN
- (#xF3 ?\u064E) ;; ARABIC FATHA
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u064F) ;; ARABIC DAMMA
- (#xF6 ?\u0650) ;; ARABIC KASRA
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u0651) ;; ARABIC SHADDA
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u0652) ;; ARABIC SUKUN
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK
- (#xFE ?\u200F) ;; RIGHT-TO-LEFT MARK
- (#xFF ?\u06D2));; ARABIC LETTER YEH BARREE
- "Windows-1256 (Arabic)"
- '(mnemonic "cp1256"
+(make-coding-system
+ 'windows-1256 'fixed-width "Windows-1256 (Arabic)"
+ '(unicode-map
+ ((#x80 ?\u20AC) ;; EURO SIGN
+ (#x81 ?\u067E) ;; ARABIC LETTER PEH
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x88 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8A ?\u0679) ;; ARABIC LETTER TTEH
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+ (#x8D ?\u0686) ;; ARABIC LETTER TCHEH
+ (#x8E ?\u0698) ;; ARABIC LETTER JEH
+ (#x8F ?\u0688) ;; ARABIC LETTER DDAL
+ (#x90 ?\u06AF) ;; ARABIC LETTER GAF
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x98 ?\u06A9) ;; ARABIC LETTER KEHEH
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9A ?\u0691) ;; ARABIC LETTER RREH
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#x9C ?\u0153) ;; LATIN SMALL LIGATURE OE
+ (#x9D ?\u200C) ;; ZERO WIDTH NON-JOINER
+ (#x9E ?\u200D) ;; ZERO WIDTH JOINER
+ (#x9F ?\u06BA) ;; ARABIC LETTER NOON GHUNNA
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u060C) ;; ARABIC COMMA
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u06BE) ;; ARABIC LETTER HEH DOACHASHMEE
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+ (#xBA ?\u061B) ;; ARABIC SEMICOLON
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
+ (#xBF ?\u061F) ;; ARABIC QUESTION MARK
+ (#xC0 ?\u06C1) ;; ARABIC LETTER HEH GOAL
+ (#xC1 ?\u0621) ;; ARABIC LETTER HAMZA
+ (#xC2 ?\u0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
+ (#xC3 ?\u0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
+ (#xC4 ?\u0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
+ (#xC5 ?\u0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
+ (#xC6 ?\u0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
+ (#xC7 ?\u0627) ;; ARABIC LETTER ALEF
+ (#xC8 ?\u0628) ;; ARABIC LETTER BEH
+ (#xC9 ?\u0629) ;; ARABIC LETTER TEH MARBUTA
+ (#xCA ?\u062A) ;; ARABIC LETTER TEH
+ (#xCB ?\u062B) ;; ARABIC LETTER THEH
+ (#xCC ?\u062C) ;; ARABIC LETTER JEEM
+ (#xCD ?\u062D) ;; ARABIC LETTER HAH
+ (#xCE ?\u062E) ;; ARABIC LETTER KHAH
+ (#xCF ?\u062F) ;; ARABIC LETTER DAL
+ (#xD0 ?\u0630) ;; ARABIC LETTER THAL
+ (#xD1 ?\u0631) ;; ARABIC LETTER REH
+ (#xD2 ?\u0632) ;; ARABIC LETTER ZAIN
+ (#xD3 ?\u0633) ;; ARABIC LETTER SEEN
+ (#xD4 ?\u0634) ;; ARABIC LETTER SHEEN
+ (#xD5 ?\u0635) ;; ARABIC LETTER SAD
+ (#xD6 ?\u0636) ;; ARABIC LETTER DAD
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u0637) ;; ARABIC LETTER TAH
+ (#xD9 ?\u0638) ;; ARABIC LETTER ZAH
+ (#xDA ?\u0639) ;; ARABIC LETTER AIN
+ (#xDB ?\u063A) ;; ARABIC LETTER GHAIN
+ (#xDC ?\u0640) ;; ARABIC TATWEEL
+ (#xDD ?\u0641) ;; ARABIC LETTER FEH
+ (#xDE ?\u0642) ;; ARABIC LETTER QAF
+ (#xDF ?\u0643) ;; ARABIC LETTER KAF
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u0644) ;; ARABIC LETTER LAM
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u0645) ;; ARABIC LETTER MEEM
+ (#xE4 ?\u0646) ;; ARABIC LETTER NOON
+ (#xE5 ?\u0647) ;; ARABIC LETTER HEH
+ (#xE6 ?\u0648) ;; ARABIC LETTER WAW
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u0649) ;; ARABIC LETTER ALEF MAKSURA
+ (#xED ?\u064A) ;; ARABIC LETTER YEH
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u064B) ;; ARABIC FATHATAN
+ (#xF1 ?\u064C) ;; ARABIC DAMMATAN
+ (#xF2 ?\u064D) ;; ARABIC KASRATAN
+ (#xF3 ?\u064E) ;; ARABIC FATHA
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u064F) ;; ARABIC DAMMA
+ (#xF6 ?\u0650) ;; ARABIC KASRA
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u0651) ;; ARABIC SHADDA
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u0652) ;; ARABIC SUKUN
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK
+ (#xFE ?\u200F) ;; RIGHT-TO-LEFT MARK
+ (#xFF ?\u06D2)) ;; ARABIC LETTER YEH BARREE
+ mnemonic "cp1256"
documentation
"This is the much Windows encoding for Arabic, much superior to the ISO
standard one."
diff -r 9c97a5a8c241 lisp/mule/cyrillic.el
--- a/lisp/mule/cyrillic.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/cyrillic.el Sat Apr 11 14:35:00 2009 +0100
@@ -106,138 +106,138 @@
(standard-syntax-table))
;; And create the coding system.
-(make-8-bit-coding-system
- 'iso-8859-5
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xA2 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
- (#xA3 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
- (#xA4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xA5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
- (#xA6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xA7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xA8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
- (#xA9 ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
- (#xAA ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
- (#xAB ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
- (#xAC ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xAF ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
- (#xB0 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xB1 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xB2 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xB3 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xB4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xB5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xB6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xB7 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xB8 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xB9 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xBA ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xBB ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xBC ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xBD ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xBE ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xBF ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xC0 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xC1 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xC2 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xC3 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xC4 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xC5 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xC6 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xC7 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xC8 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xC9 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xCA ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
- (#xCB ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xCC ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xCD ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xCE ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xCF ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xD0 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xD1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xD2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xD4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xD5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xD8 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xD9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xDA ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xDB ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xDC ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xDD ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xDE ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xDF ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xE0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xE1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xE2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xE3 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xE4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xE5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xE6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xE7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xE8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xE9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xEA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xEB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xEC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xED ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xEE ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xEF ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xF0 ?\u2116) ;; NUMERO SIGN
- (#xF1 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xF2 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
- (#xF3 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
- (#xF4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xF5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
- (#xF6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xF7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xF8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
- (#xF9 ?\u0459) ;; CYRILLIC SMALL LETTER LJE
- (#xFA ?\u045A) ;; CYRILLIC SMALL LETTER NJE
- (#xFB ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
- (#xFC ?\u045C) ;; CYRILLIC SMALL LETTER KJE
- (#xFD ?\u00A7) ;; SECTION SIGN
- (#xFE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xFF ?\u045F)) ;; CYRILLIC SMALL LETTER DZHE
- "ISO-8859-5 (Cyrillic)"
- '(mnemonic "ISO8/Cyr"
+(make-coding-system
+ 'iso-8859-5 'fixed-width "ISO-8859-5 (Cyrillic)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xA2 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+ (#xA3 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+ (#xA4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xA5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+ (#xA6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xA7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xA8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+ (#xA9 ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+ (#xAA ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+ (#xAB ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+ (#xAC ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xAF ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+ (#xB0 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xB1 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xB2 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xB3 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xB4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xB5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xB6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xB7 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xB8 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xB9 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xBA ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xBB ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xBC ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xBD ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xBE ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xBF ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xC0 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xC1 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xC2 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xC3 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xC4 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xC5 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xC6 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xC7 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xC8 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xC9 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xCA ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ (#xCB ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xCC ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xCD ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xCE ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xCF ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xD0 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xD1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xD2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xD4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xD5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xD8 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xD9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xDA ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xDB ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xDC ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xDD ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xDE ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xDF ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xE0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xE1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xE2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xE3 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xE4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xE5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xE6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xE7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xE8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xE9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xEA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xEB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xEC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xED ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xEE ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xEF ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xF0 ?\u2116) ;; NUMERO SIGN
+ (#xF1 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xF2 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+ (#xF3 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+ (#xF4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xF5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+ (#xF6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xF7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xF8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
+ (#xF9 ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+ (#xFA ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+ (#xFB ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+ (#xFC ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+ (#xFD ?\u00A7) ;; SECTION SIGN
+ (#xFE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xFF ?\u045F)) ;; CYRILLIC SMALL LETTER DZHE
+ mnemonic "ISO8/Cyr"
documentation "The ISO standard for encoding Cyrillic. Not used in practice.
See `koi8-r' and `windows-1251'. "
aliases (cyrillic-iso-8bit)))
@@ -257,144 +257,144 @@
'("Cyrillic"))
;; KOI8-R, the most common encoding for Cyrillic on Unix and Usenet.
-(make-8-bit-coding-system
- 'koi8-r
- '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
- (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
- (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
- (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
- (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
- (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
- (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
- (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
- (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- (#x8B ?\u2580) ;; UPPER HALF BLOCK
- (#x8C ?\u2584) ;; LOWER HALF BLOCK
- (#x8D ?\u2588) ;; FULL BLOCK
- (#x8E ?\u258C) ;; LEFT HALF BLOCK
- (#x8F ?\u2590) ;; RIGHT HALF BLOCK
- (#x90 ?\u2591) ;; LIGHT SHADE
- (#x91 ?\u2592) ;; MEDIUM SHADE
- (#x92 ?\u2593) ;; DARK SHADE
- (#x93 ?\u2320) ;; TOP HALF INTEGRAL
- (#x94 ?\u25A0) ;; BLACK SQUARE
- (#x95 ?\u2219) ;; BULLET OPERATOR
- (#x96 ?\u221A) ;; SQUARE ROOT
- (#x97 ?\u2248) ;; ALMOST EQUAL TO
- (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
- (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
- (#x9A ?\u00A0) ;; NO-BREAK SPACE
- (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
- (#x9C ?\u00B0) ;; DEGREE SIGN
- (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
- (#x9E ?\u00B7) ;; MIDDLE DOT
- (#x9F ?\u00F7) ;; DIVISION SIGN
- (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
- (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
- (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
- (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
- (#xA6 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
- (#xA7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
- (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
- (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
- (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
- (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
- (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
- (#xAD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
- (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
- (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
- (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
- (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
- (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB4 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
- (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
- (#xB6 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
- (#xB7 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
- (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
- (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
- (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
- (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
- (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
- (#xBD ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
- (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
- (#xBF ?\u00A9) ;; COPYRIGHT SIGN
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
- "KOI8-R (Код Обмена Информацией, 8 бит) for Russian and Bulgarian."
- '(mnemonic "KOI8"
+(make-coding-system
+ 'koi8-r 'fixed-width "KOI8-R (Cyrillic)"
+ '(unicode-map
+ ((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+ (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+ (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+ (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+ (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+ (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+ (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ (#x8B ?\u2580) ;; UPPER HALF BLOCK
+ (#x8C ?\u2584) ;; LOWER HALF BLOCK
+ (#x8D ?\u2588) ;; FULL BLOCK
+ (#x8E ?\u258C) ;; LEFT HALF BLOCK
+ (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+ (#x90 ?\u2591) ;; LIGHT SHADE
+ (#x91 ?\u2592) ;; MEDIUM SHADE
+ (#x92 ?\u2593) ;; DARK SHADE
+ (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+ (#x94 ?\u25A0) ;; BLACK SQUARE
+ (#x95 ?\u2219) ;; BULLET OPERATOR
+ (#x96 ?\u221A) ;; SQUARE ROOT
+ (#x97 ?\u2248) ;; ALMOST EQUAL TO
+ (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+ (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+ (#x9A ?\u00A0) ;; NO-BREAK SPACE
+ (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+ (#x9C ?\u00B0) ;; DEGREE SIGN
+ (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+ (#x9E ?\u00B7) ;; MIDDLE DOT
+ (#x9F ?\u00F7) ;; DIVISION SIGN
+ (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+ (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+ (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ (#xA6 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ (#xA7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+ (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+ (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ (#xAD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+ (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB4 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ (#xB6 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ (#xB7 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ (#xBD ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ mnemonic "KOI8"
documentation
- "This is the ASCII-compatible encoding documented in RFC 1341.
-КОИ8-Р is very common across the Cyrillic-using internet and in Unix
-implementations; it shares the useful property with the other КОИ8
-encodings that when the high bit is stripped, encoded text remains
-readable (Cyrillic characters get mapped to corresponding Roman
+ "This is Код Обмена Информацией, 8 бит, the ASCII-compatible encoding
+documented in RFC 1341. КОИ8-Р is very common across the Cyrillic-using
+internet and in Unix implementations; it shares the useful property with the
+other КОИ8 encodings that when the high bit is stripped, encoded text
+remains readable (Cyrillic characters get mapped to corresponding Roman
character of the opposite case). "
aliases (cyrillic-koi8 koi8 cp878)))
@@ -424,143 +424,143 @@
'("Cyrillic"))
;; KOI8-U, for Ukrainian.
-(make-8-bit-coding-system
- 'koi8-u
- '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
- (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
- (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
- (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
- (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
- (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
- (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
- (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
- (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- (#x8B ?\u2580) ;; UPPER HALF BLOCK
- (#x8C ?\u2584) ;; LOWER HALF BLOCK
- (#x8D ?\u2588) ;; FULL BLOCK
- (#x8E ?\u258C) ;; LEFT HALF BLOCK
- (#x8F ?\u2590) ;; RIGHT HALF BLOCK
- (#x90 ?\u2591) ;; LIGHT SHADE
- (#x91 ?\u2592) ;; MEDIUM SHADE
- (#x92 ?\u2593) ;; DARK SHADE
- (#x93 ?\u2320) ;; TOP HALF INTEGRAL
- (#x94 ?\u25A0) ;; BLACK SQUARE
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u221A) ;; SQUARE ROOT
- (#x97 ?\u2248) ;; ALMOST EQUAL TO
- (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
- (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
- (#x9A ?\u00A0) ;; NO-BREAK SPACE
- (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
- (#x9C ?\u00B0) ;; DEGREE SIGN
- (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
- (#x9E ?\u00B7) ;; MIDDLE DOT
- (#x9F ?\u00F7) ;; DIVISION SIGN
- (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
- (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
- (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
- (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
- (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
- (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
- (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
- (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
- (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
- (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
- (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
- (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
- (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
- (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
- (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
- (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
- (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
- (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
- (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
- (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
- (#xBF ?\u00A9) ;; COPYRIGHT SIGN
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
- "KOI8-U, for Ukrainian"
- '(mnemonic "КОИ8У"
+(make-coding-system
+ 'koi8-u 'fixed-width "KOI8-U, Ukrainian"
+ '(unicode-map
+ ((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+ (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+ (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+ (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+ (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+ (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+ (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ (#x8B ?\u2580) ;; UPPER HALF BLOCK
+ (#x8C ?\u2584) ;; LOWER HALF BLOCK
+ (#x8D ?\u2588) ;; FULL BLOCK
+ (#x8E ?\u258C) ;; LEFT HALF BLOCK
+ (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+ (#x90 ?\u2591) ;; LIGHT SHADE
+ (#x91 ?\u2592) ;; MEDIUM SHADE
+ (#x92 ?\u2593) ;; DARK SHADE
+ (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+ (#x94 ?\u25A0) ;; BLACK SQUARE
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u221A) ;; SQUARE ROOT
+ (#x97 ?\u2248) ;; ALMOST EQUAL TO
+ (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+ (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+ (#x9A ?\u00A0) ;; NO-BREAK SPACE
+ (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+ (#x9C ?\u00B0) ;; DEGREE SIGN
+ (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+ (#x9E ?\u00B7) ;; MIDDLE DOT
+ (#x9F ?\u00F7) ;; DIVISION SIGN
+ (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+ (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+ (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+ (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+ (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+ (#xAE ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+ (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ (#xBE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ mnemonic "КОИ8У"
documentation
"KOI8-U, a KOI-8-compatible encoding for Ukrainian, described in RFC2319.
This has GHE WITH UPTURN, BYELORUSSIAN-UKRAINIAN I, UKRAINIAN IE and
YI instead of some box-drawing characters. Russian in this encoding
-(without using box-drawing characters) is bit-for-bit compatible with
+\(without using box-drawing characters) is bit-for-bit compatible with
Russian in KOI8-R. "))
;; Case support, for the new characters.
@@ -584,142 +584,145 @@
. "Support for Ukrainian."))
'("Cyrillic"))
-(make-8-bit-coding-system
- 'windows-1251
- '((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
- (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x88 ?\u20AC) ;; EURO SIGN
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
- (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
- (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
- (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
- (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
- (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
- (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
- (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xA2 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xA3 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB3 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB4 ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xB9 ?\u2116) ;; NUMERO SIGN
- (#xBA ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u0458) ;; CYRILLIC SMALL LETTER JE
- (#xBD ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
- (#xBE ?\u0455) ;; CYRILLIC SMALL LETTER DZE
- (#xBF ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xC0 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xC1 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xC2 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xC3 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xC4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xC5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xC6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xC7 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xC8 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xC9 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xCA ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xCB ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xCC ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xCD ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xCE ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xCF ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xD0 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xD1 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xD2 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xD3 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xD4 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xD5 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xD6 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xD7 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xD8 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xD9 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xDA ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
- (#xDB ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xDC ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xDD ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xDE ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xDF ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xE0 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xE1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xE2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xE3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xE4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xE5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xE6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xE7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xE8 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xE9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xEA ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xEB ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xEC ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xED ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xEE ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xEF ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xF0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xF1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xF2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xF3 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xF4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xF5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xF6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xF7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xF8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xF9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xFA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xFB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xFC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xFD ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xFE ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xFF ?\u044F)) ;; CYRILLIC SMALL LETTER YA
- "Microsoft's Code Page 1251, for Russian, Bulgarian, Serbian and others. "
- '(mnemonic "CyrW"
+(make-coding-system
+ 'windows-1251 'fixed-width "Microsoft's CP1251, Cyrillic."
+ '(unicode-map
+ ((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+ (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x88 ?\u20AC) ;; EURO SIGN
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+ (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+ (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+ (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+ (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+ (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+ (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+ (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xA2 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xA3 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB3 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB4 ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xB9 ?\u2116) ;; NUMERO SIGN
+ (#xBA ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u0458) ;; CYRILLIC SMALL LETTER JE
+ (#xBD ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+ (#xBE ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+ (#xBF ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xC0 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xC1 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xC2 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xC3 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xC4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xC5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xC6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xC7 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xC8 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xC9 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xCA ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xCB ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xCC ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xCD ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xCE ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xCF ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xD0 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xD1 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xD2 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xD3 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xD4 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xD5 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xD6 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xD7 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xD8 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xD9 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xDA ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ (#xDB ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xDC ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xDD ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xDE ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xDF ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xE0 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xE1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xE2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xE3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xE4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xE5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xE6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xE7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xE8 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xE9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xEA ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xEB ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xEC ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xED ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xEE ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xEF ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xF0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xF1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xF2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xF3 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xF4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xF5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xF6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xF7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xF8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xF9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xFA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xFB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xFC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xFD ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xFE ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xFF ?\u044F)) ;; CYRILLIC SMALL LETTER YA
+ mnemonic "CyrW"
documentation
"This ASCII-compatible encoding is unfortunately not compatible at
the code point level with the KOI8 family of encodings, but it
provides several widely-used punctuation and quotation marks that
-KOI-8R and its relatives don't, and has become widely used. "
+KOI-8R and its relatives don't, and has become widely used.
+
+It support Russian, Bulgarian, Serbian and other languages written using
+Cyrillic script. "
aliases (cp1251)))
(set-language-info-alist
@@ -745,138 +748,138 @@
'("Cyrillic"))
;;; Alternativnyj
-(make-8-bit-coding-system
- 'alternativnyj
- '((#x80 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#x81 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#x82 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#x83 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#x84 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#x85 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#x86 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#x87 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#x88 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#x89 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#x8A ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#x8B ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#x8C ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#x8D ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#x8E ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#x8F ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#x90 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#x91 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#x92 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#x93 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#x94 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#x95 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#x96 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#x97 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#x98 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#x99 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#x9A ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
- (#x9B ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#x9C ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#x9D ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#x9E ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#x9F ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xA0 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xA1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xA2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xA3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xA4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xA5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xA6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xA7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xA8 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xA9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xAA ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xAB ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xAC ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xAD ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xAE ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xAF ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xB0 ?\u2591) ;; LIGHT SHADE
- (#xB1 ?\u2592) ;; MEDIUM SHADE
- (#xB2 ?\u2593) ;; DARK SHADE
- (#xB3 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
- (#xB4 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
- (#xB5 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
- (#xB6 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
- (#xB7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
- (#xB8 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
- (#xB9 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
- (#xBA ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
- (#xBB ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
- (#xBC ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
- (#xBD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
- (#xBE ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
- (#xBF ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
- (#xC0 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
- (#xC1 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
- (#xC2 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- (#xC3 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- (#xC4 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
- (#xC5 ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- (#xC6 ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
- (#xC7 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
- (#xC8 ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
- (#xC9 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
- (#xCA ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
- (#xCB ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
- (#xCC ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
- (#xCD ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
- (#xCE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
- (#xCF ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
- (#xD0 ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
- (#xD1 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
- (#xD2 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
- (#xD3 ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
- (#xD4 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
- (#xD5 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
- (#xD6 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
- (#xD7 ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
- (#xD8 ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
- (#xD9 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
- (#xDA ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
- (#xDB ?\u2588) ;; FULL BLOCK
- (#xDC ?\u2584) ;; LOWER HALF BLOCK
- (#xDD ?\u258C) ;; LEFT HALF BLOCK
- (#xDE ?\u2590) ;; RIGHT HALF BLOCK
- (#xDF ?\u2580) ;; UPPER HALF BLOCK
- (#xE0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xE1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xE2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xE3 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xE4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xE5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xE6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xE7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xE8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xE9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xEA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xEB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xEC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xED ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xEE ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xEF ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xF0 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xF1 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xF2 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xF3 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xF4 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xF5 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xF6 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xF7 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xF8 ?\u00B0) ;; DEGREE SIGN
- (#xF9 ?\u2022) ;; BULLET
- (#xFA ?\u00B7) ;; MIDDLE DOT
- (#xFB ?\u221A) ;; SQUARE ROOT
- (#xFC ?\u2116) ;; NUMERO SIGN
- (#xFD ?\u00A4) ;; CURRENCY SIGN
- (#xFE ?\u25A0) ;; BLACK SQUARE
- (#xFF ?\u00A0)) ;; NO-BREAK SPACE
- "Alternativnyj (Cyrillic). Microsoft's Code Page 966. "
- '(mnemonic "Cy.Alt"
+(make-coding-system
+ 'alternativnyj 'fixed-width "Microsoft's CP966, Cyrillic"
+ '(unicode-map
+ ((#x80 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#x81 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#x82 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#x83 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#x84 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#x85 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#x86 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#x87 ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#x88 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#x89 ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#x8A ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#x8B ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#x8C ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#x8D ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#x8E ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#x8F ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#x90 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#x91 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#x92 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#x93 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#x94 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#x95 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#x96 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#x97 ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#x98 ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#x99 ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#x9A ?\u042A) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ (#x9B ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#x9C ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#x9D ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#x9E ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#x9F ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xA0 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xA1 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xA2 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xA3 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xA4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xA5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xA6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xA7 ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xA8 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xA9 ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xAA ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xAB ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xAC ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xAD ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xAE ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xAF ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xB0 ?\u2591) ;; LIGHT SHADE
+ (#xB1 ?\u2592) ;; MEDIUM SHADE
+ (#xB2 ?\u2593) ;; DARK SHADE
+ (#xB3 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+ (#xB4 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ (#xB5 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ (#xB6 ?\u2562) ;; BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+ (#xB7 ?\u2556) ;; BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+ (#xB8 ?\u2555) ;; BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+ (#xB9 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ (#xBA ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+ (#xBB ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+ (#xBC ?\u255D) ;; BOX DRAWINGS DOUBLE UP AND LEFT
+ (#xBD ?\u255C) ;; BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+ (#xBE ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ (#xBF ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+ (#xC0 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+ (#xC1 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ (#xC2 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ (#xC3 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ (#xC4 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+ (#xC5 ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ (#xC6 ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ (#xC7 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ (#xC8 ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+ (#xC9 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ (#xCA ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ (#xCB ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ (#xCC ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ (#xCD ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+ (#xCE ?\u256C) ;; BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+ (#xCF ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ (#xD0 ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ (#xD1 ?\u2564) ;; BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+ (#xD2 ?\u2565) ;; BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+ (#xD3 ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ (#xD4 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ (#xD5 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ (#xD6 ?\u2553) ;; BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+ (#xD7 ?\u256B) ;; BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+ (#xD8 ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ (#xD9 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+ (#xDA ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+ (#xDB ?\u2588) ;; FULL BLOCK
+ (#xDC ?\u2584) ;; LOWER HALF BLOCK
+ (#xDD ?\u258C) ;; LEFT HALF BLOCK
+ (#xDE ?\u2590) ;; RIGHT HALF BLOCK
+ (#xDF ?\u2580) ;; UPPER HALF BLOCK
+ (#xE0 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xE1 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xE2 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xE3 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xE4 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xE5 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xE6 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xE7 ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xE8 ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xE9 ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xEA ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xEB ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xEC ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xED ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xEE ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xEF ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xF0 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xF1 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xF2 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xF3 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xF4 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xF5 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xF6 ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xF7 ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xF8 ?\u00B0) ;; DEGREE SIGN
+ (#xF9 ?\u2022) ;; BULLET
+ (#xFA ?\u00B7) ;; MIDDLE DOT
+ (#xFB ?\u221A) ;; SQUARE ROOT
+ (#xFC ?\u2116) ;; NUMERO SIGN
+ (#xFD ?\u00A4) ;; CURRENCY SIGN
+ (#xFE ?\u25A0) ;; BLACK SQUARE
+ (#xFF ?\u00A0)) ;; NO-BREAK SPACE
+ mnemonic "Cy.Alt"
aliases (cp866)))
(set-language-info-alist
@@ -892,257 +895,258 @@
(documentation . "Support for Cyrillic ALTERNATIVNYJ."))
'("Cyrillic"))
-(make-8-bit-coding-system
- 'koi8-ru
- '((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
- (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
- (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
- (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
- (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
- (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
- (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
- (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
- (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
- (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
- (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
- (#x8B ?\u2580) ;; UPPER HALF BLOCK
- (#x8C ?\u2584) ;; LOWER HALF BLOCK
- (#x8D ?\u2588) ;; FULL BLOCK
- (#x8E ?\u258C) ;; LEFT HALF BLOCK
- (#x8F ?\u2590) ;; RIGHT HALF BLOCK
- (#x90 ?\u2591) ;; LIGHT SHADE
- (#x91 ?\u2592) ;; MEDIUM SHADE
- (#x92 ?\u2593) ;; DARK SHADE
- (#x93 ?\u2320) ;; TOP HALF INTEGRAL
- (#x94 ?\u25A0) ;; BLACK SQUARE
- (#x95 ?\u2219) ;; BULLET OPERATOR
- (#x96 ?\u221A) ;; SQUARE ROOT
- (#x97 ?\u2248) ;; ALMOST EQUAL TO
- (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
- (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
- (#x9A ?\u00A0) ;; NO-BREAK SPACE
- (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
- (#x9C ?\u00B0) ;; DEGREE SIGN
- (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
- (#x9E ?\u00B7) ;; MIDDLE DOT
- (#x9F ?\u00F7) ;; DIVISION SIGN
- (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
- (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
- (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
- (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
- (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
- (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
- (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
- (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
- (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
- (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
- (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
- (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
- (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
- (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
- (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
- (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
- (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
- (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
- (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xBF ?\u00A9) ;; COPYRIGHT SIGN
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
- "KOI8-RU, a mostly-compatible superset of KOI8-R.
+(make-coding-system
+ 'koi8-ru 'fixed-width "КОИ-8 (Russian, Ukrainian)"
+ '(unicode-map
+ ((#x80 ?\u2500) ;; BOX DRAWINGS LIGHT HORIZONTAL
+ (#x81 ?\u2502) ;; BOX DRAWINGS LIGHT VERTICAL
+ (#x82 ?\u250C) ;; BOX DRAWINGS LIGHT DOWN AND RIGHT
+ (#x83 ?\u2510) ;; BOX DRAWINGS LIGHT DOWN AND LEFT
+ (#x84 ?\u2514) ;; BOX DRAWINGS LIGHT UP AND RIGHT
+ (#x85 ?\u2518) ;; BOX DRAWINGS LIGHT UP AND LEFT
+ (#x86 ?\u251C) ;; BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+ (#x87 ?\u2524) ;; BOX DRAWINGS LIGHT VERTICAL AND LEFT
+ (#x88 ?\u252C) ;; BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+ (#x89 ?\u2534) ;; BOX DRAWINGS LIGHT UP AND HORIZONTAL
+ (#x8A ?\u253C) ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+ (#x8B ?\u2580) ;; UPPER HALF BLOCK
+ (#x8C ?\u2584) ;; LOWER HALF BLOCK
+ (#x8D ?\u2588) ;; FULL BLOCK
+ (#x8E ?\u258C) ;; LEFT HALF BLOCK
+ (#x8F ?\u2590) ;; RIGHT HALF BLOCK
+ (#x90 ?\u2591) ;; LIGHT SHADE
+ (#x91 ?\u2592) ;; MEDIUM SHADE
+ (#x92 ?\u2593) ;; DARK SHADE
+ (#x93 ?\u2320) ;; TOP HALF INTEGRAL
+ (#x94 ?\u25A0) ;; BLACK SQUARE
+ (#x95 ?\u2219) ;; BULLET OPERATOR
+ (#x96 ?\u221A) ;; SQUARE ROOT
+ (#x97 ?\u2248) ;; ALMOST EQUAL TO
+ (#x98 ?\u2264) ;; LESS-THAN OR EQUAL TO
+ (#x99 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+ (#x9A ?\u00A0) ;; NO-BREAK SPACE
+ (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+ (#x9C ?\u00B0) ;; DEGREE SIGN
+ (#x9D ?\u00B2) ;; SUPERSCRIPT TWO
+ (#x9E ?\u00B7) ;; MIDDLE DOT
+ (#x9F ?\u00F7) ;; DIVISION SIGN
+ (#xA0 ?\u2550) ;; BOX DRAWINGS DOUBLE HORIZONTAL
+ (#xA1 ?\u2551) ;; BOX DRAWINGS DOUBLE VERTICAL
+ (#xA2 ?\u2552) ;; BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xA5 ?\u2554) ;; BOX DRAWINGS DOUBLE DOWN AND RIGHT
+ (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xA8 ?\u2557) ;; BOX DRAWINGS DOUBLE DOWN AND LEFT
+ (#xA9 ?\u2558) ;; BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+ (#xAA ?\u2559) ;; BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+ (#xAB ?\u255A) ;; BOX DRAWINGS DOUBLE UP AND RIGHT
+ (#xAC ?\u255B) ;; BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+ (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+ (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xAF ?\u255E) ;; BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+ (#xB0 ?\u255F) ;; BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+ (#xB1 ?\u2560) ;; BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+ (#xB2 ?\u2561) ;; BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xB5 ?\u2563) ;; BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+ (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xB8 ?\u2566) ;; BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+ (#xB9 ?\u2567) ;; BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+ (#xBA ?\u2568) ;; BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+ (#xBB ?\u2569) ;; BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+ (#xBC ?\u256A) ;; BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+ (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ mnemonic "РУ"
+ documentation "KOI8-RU, a mostly-compatible superset of KOI8-R.
Also known as Windows code page 21866; has Ukrainian and Belarussian support. "
- '(mnemonic "РУ"
aliases (cp21866)))
;; We should provide an input method and the corresponding language
;; environments for the next three coding systems.
-(make-8-bit-coding-system
- 'koi8-t
- '((#x80 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
- (#x81 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x83 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8A ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
- (#x8D ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
- (#x8E ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
- (#x90 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#xA1 ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
- (#xA2 ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB5 ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB9 ?\u2116) ;; NUMERO SIGN
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBF ?\u00A9) ;; COPYRIGHT SIGN
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
- "КОИ-8 for Tajik."
- '(mnemonic "ТҶ"
+(make-coding-system
+ 'koi8-t 'fixed-width "КОИ-8 for Tajik."
+ '(unicode-map
+ ((#x80 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
+ (#x81 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x83 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8A ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ (#x8D ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ (#x8E ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ (#x90 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#xA1 ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
+ (#xA2 ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB5 ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB9 ?\u2116) ;; NUMERO SIGN
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ mnemonic "ТҶ"
documentation
"Compatible in the alphabetic characters with KOI-8R for Russian,
this 8-bit Cyrillic coding system makes those characters available
@@ -1163,138 +1167,138 @@
(put-case-table-pair upper lower case-table))
;; Support fot the languages of the Caucasus.
-(make-8-bit-coding-system
- 'koi8-c
- '((#x80 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
- (#x81 ?\u0497) ;; CYRILLIC SMALL LETTER ZHE WITH DESCENDER
- (#x82 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
- (#x83 ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
- (#x84 ?\u04A3) ;; CYRILLIC SMALL LETTER EN WITH DESCENDER
- (#x85 ?\u04AF) ;; CYRILLIC SMALL LETTER STRAIGHT U
- (#x86 ?\u04B1) ;; CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
- (#x87 ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
- (#x88 ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
- (#x89 ?\u04B9) ;; CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
- (#x8A ?\u04BB) ;; CYRILLIC SMALL LETTER SHHA
- (#x8B ?\u2580) ;; UPPER HALF BLOCK
- (#x8C ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
- (#x8D ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
- (#x8E ?\u04E9) ;; CYRILLIC SMALL LETTER BARRED O
- (#x8F ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
- (#x90 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
- (#x91 ?\u0496) ;; CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
- (#x92 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
- (#x93 ?\u049C) ;; CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
- (#x94 ?\u04A2) ;; CYRILLIC CAPITAL LETTER EN WITH DESCENDER
- (#x95 ?\u04AE) ;; CYRILLIC CAPITAL LETTER STRAIGHT U
- (#x96 ?\u04B0) ;; CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
- (#x97 ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
- (#x98 ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
- (#x99 ?\u04B8) ;; CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
- (#x9A ?\u04BA) ;; CYRILLIC CAPITAL LETTER SHHA
- (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
- (#x9C ?\u04D8) ;; CYRILLIC CAPITAL LETTER SCHWA
- (#x9D ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
- (#x9E ?\u04E8) ;; CYRILLIC CAPITAL LETTER BARRED O
- (#x9F ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
- (#xA2 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
- (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
- (#xA9 ?\u0459) ;; CYRILLIC SMALL LETTER LJE
- (#xAA ?\u045A) ;; CYRILLIC SMALL LETTER NJE
- (#xAB ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
- (#xAC ?\u045C) ;; CYRILLIC SMALL LETTER KJE
- (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
- (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xAF ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
- (#xB0 ?\u2116) ;; NUMERO SIGN
- (#xB1 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
- (#xB2 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
- (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
- (#xB9 ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
- (#xBA ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
- (#xBB ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
- (#xBC ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
- (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xBF ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
- "KOI-8 for the Caucasus."
- '(documentation
+(make-coding-system
+ 'koi8-c 'fixed-width "KOI-8, Caucasus."
+ '(unicode-map
+ ((#x80 ?\u0493) ;; CYRILLIC SMALL LETTER GHE WITH STROKE
+ (#x81 ?\u0497) ;; CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ (#x82 ?\u049B) ;; CYRILLIC SMALL LETTER KA WITH DESCENDER
+ (#x83 ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ (#x84 ?\u04A3) ;; CYRILLIC SMALL LETTER EN WITH DESCENDER
+ (#x85 ?\u04AF) ;; CYRILLIC SMALL LETTER STRAIGHT U
+ (#x86 ?\u04B1) ;; CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ (#x87 ?\u04B3) ;; CYRILLIC SMALL LETTER HA WITH DESCENDER
+ (#x88 ?\u04B7) ;; CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ (#x89 ?\u04B9) ;; CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+ (#x8A ?\u04BB) ;; CYRILLIC SMALL LETTER SHHA
+ (#x8B ?\u2580) ;; UPPER HALF BLOCK
+ (#x8C ?\u049D) ;; CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ (#x8D ?\u04E3) ;; CYRILLIC SMALL LETTER I WITH MACRON
+ (#x8E ?\u04E9) ;; CYRILLIC SMALL LETTER BARRED O
+ (#x8F ?\u04EF) ;; CYRILLIC SMALL LETTER U WITH MACRON
+ (#x90 ?\u0492) ;; CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ (#x91 ?\u0496) ;; CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ (#x92 ?\u049A) ;; CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ (#x93 ?\u049C) ;; CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ (#x94 ?\u04A2) ;; CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ (#x95 ?\u04AE) ;; CYRILLIC CAPITAL LETTER STRAIGHT U
+ (#x96 ?\u04B0) ;; CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ (#x97 ?\u04B2) ;; CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ (#x98 ?\u04B6) ;; CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ (#x99 ?\u04B8) ;; CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ (#x9A ?\u04BA) ;; CYRILLIC CAPITAL LETTER SHHA
+ (#x9B ?\u2321) ;; BOTTOM HALF INTEGRAL
+ (#x9C ?\u04D8) ;; CYRILLIC CAPITAL LETTER SCHWA
+ (#x9D ?\u04E2) ;; CYRILLIC CAPITAL LETTER I WITH MACRON
+ (#x9E ?\u04E8) ;; CYRILLIC CAPITAL LETTER BARRED O
+ (#x9F ?\u04EE) ;; CYRILLIC CAPITAL LETTER U WITH MACRON
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+ (#xA2 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+ (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
+ (#xA9 ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+ (#xAA ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+ (#xAB ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+ (#xAC ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+ (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+ (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xAF ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+ (#xB0 ?\u2116) ;; NUMERO SIGN
+ (#xB1 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+ (#xB2 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+ (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+ (#xB9 ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+ (#xBA ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+ (#xBB ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+ (#xBC ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+ (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xBF ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ documentation
"Note that this does not support old Russian orthography;
for that, see koi8-o. "))
@@ -1315,138 +1319,138 @@
(put-case-table-pair upper lower case-table))
;; Archaic Russian support.
-(make-8-bit-coding-system
- 'koi8-o
- '((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
- (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
- (#x82 ?\u00B8) ;; CEDILLA
- (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u00A7) ;; SECTION SIGN
- (#x88 ?\u20AC) ;; EURO SIGN
- (#x89 ?\u00A8) ;; DIAERESIS
- (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
- (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
- (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
- (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
- (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x98 ?\u00A3) ;; POUND SIGN
- (#x99 ?\u00B7) ;; MIDDLE DOT
- (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
- (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
- (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
- (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0475) ;; CYRILLIC SMALL LETTER IZHITSA
- (#xA2 ?\u0463) ;; CYRILLIC SMALL LETTER YAT
- (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
- (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
- (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
- (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
- (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
- (#xA9 ?\u00AE) ;; REGISTERED SIGN
- (#xAA ?\u2122) ;; TRADE MARK SIGN
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u0473) ;; CYRILLIC SMALL LETTER FITA
- (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
- (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
- (#xAF ?\u00B4) ;; ACUTE ACCENT
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u0474) ;; CYRILLIC CAPITAL LETTER IZHITSA
- (#xB2 ?\u0462) ;; CYRILLIC CAPITAL LETTER YAT
- (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
- (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
- (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
- (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
- (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
- (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
- (#xB9 ?\u2116) ;; NUMERO SIGN
- (#xBA ?\u00A2) ;; CENT SIGN
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u0472) ;; CYRILLIC CAPITAL LETTER FITA
- (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
- (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
- (#xBF ?\u00A9) ;; COPYRIGHT SIGN
- (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
- (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
- (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
- (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
- (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
- (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
- (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
- (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
- (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
- (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
- (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
- (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
- (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
- (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
- (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
- (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
- (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
- (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
- (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
- (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
- (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
- (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
- (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
- (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
- (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
- (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
- (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
- (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
- (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
- (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
- (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
- (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
- (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
- (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
- (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
- (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
- (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
- (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
- (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
- (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
- (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
- (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
- (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
- (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
- (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
- (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
- (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
- (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
- (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
- (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
- (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
- (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
- (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
- (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
- (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
- (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
- (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
- (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
- (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
- (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
- (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
- (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
- (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
- (#xFF ?\u042A));; CYRILLIC CAPITAL LETTER HARD SIGN
- "KOI-8 for old-orthography Russian; also known as KOI-C."
- '(mnemonic "КО"
+(make-coding-system
+ 'koi8-o 'fixed-width "Old-orthography Russian"
+ '(unicode-map
+ ((#x80 ?\u0402) ;; CYRILLIC CAPITAL LETTER DJE
+ (#x81 ?\u0403) ;; CYRILLIC CAPITAL LETTER GJE
+ (#x82 ?\u00B8) ;; CEDILLA
+ (#x83 ?\u0453) ;; CYRILLIC SMALL LETTER GJE
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u00A7) ;; SECTION SIGN
+ (#x88 ?\u20AC) ;; EURO SIGN
+ (#x89 ?\u00A8) ;; DIAERESIS
+ (#x8A ?\u0409) ;; CYRILLIC CAPITAL LETTER LJE
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u040A) ;; CYRILLIC CAPITAL LETTER NJE
+ (#x8D ?\u040C) ;; CYRILLIC CAPITAL LETTER KJE
+ (#x8E ?\u040B) ;; CYRILLIC CAPITAL LETTER TSHE
+ (#x8F ?\u040F) ;; CYRILLIC CAPITAL LETTER DZHE
+ (#x90 ?\u0452) ;; CYRILLIC SMALL LETTER DJE
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x98 ?\u00A3) ;; POUND SIGN
+ (#x99 ?\u00B7) ;; MIDDLE DOT
+ (#x9A ?\u0459) ;; CYRILLIC SMALL LETTER LJE
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#x9C ?\u045A) ;; CYRILLIC SMALL LETTER NJE
+ (#x9D ?\u045C) ;; CYRILLIC SMALL LETTER KJE
+ (#x9E ?\u045B) ;; CYRILLIC SMALL LETTER TSHE
+ (#x9F ?\u045F) ;; CYRILLIC SMALL LETTER DZHE
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0475) ;; CYRILLIC SMALL LETTER IZHITSA
+ (#xA2 ?\u0463) ;; CYRILLIC SMALL LETTER YAT
+ (#xA3 ?\u0451) ;; CYRILLIC SMALL LETTER IO
+ (#xA4 ?\u0454) ;; CYRILLIC SMALL LETTER UKRAINIAN IE
+ (#xA5 ?\u0455) ;; CYRILLIC SMALL LETTER DZE
+ (#xA6 ?\u0456) ;; CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xA7 ?\u0457) ;; CYRILLIC SMALL LETTER YI
+ (#xA8 ?\u0458) ;; CYRILLIC SMALL LETTER JE
+ (#xA9 ?\u00AE) ;; REGISTERED SIGN
+ (#xAA ?\u2122) ;; TRADE MARK SIGN
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u0473) ;; CYRILLIC SMALL LETTER FITA
+ (#xAD ?\u0491) ;; CYRILLIC SMALL LETTER GHE WITH UPTURN
+ (#xAE ?\u045E) ;; CYRILLIC SMALL LETTER SHORT U
+ (#xAF ?\u00B4) ;; ACUTE ACCENT
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u0474) ;; CYRILLIC CAPITAL LETTER IZHITSA
+ (#xB2 ?\u0462) ;; CYRILLIC CAPITAL LETTER YAT
+ (#xB3 ?\u0401) ;; CYRILLIC CAPITAL LETTER IO
+ (#xB4 ?\u0404) ;; CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ (#xB5 ?\u0405) ;; CYRILLIC CAPITAL LETTER DZE
+ (#xB6 ?\u0406) ;; CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ (#xB7 ?\u0407) ;; CYRILLIC CAPITAL LETTER YI
+ (#xB8 ?\u0408) ;; CYRILLIC CAPITAL LETTER JE
+ (#xB9 ?\u2116) ;; NUMERO SIGN
+ (#xBA ?\u00A2) ;; CENT SIGN
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u0472) ;; CYRILLIC CAPITAL LETTER FITA
+ (#xBD ?\u0490) ;; CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ (#xBE ?\u040E) ;; CYRILLIC CAPITAL LETTER SHORT U
+ (#xBF ?\u00A9) ;; COPYRIGHT SIGN
+ (#xC0 ?\u044E) ;; CYRILLIC SMALL LETTER YU
+ (#xC1 ?\u0430) ;; CYRILLIC SMALL LETTER A
+ (#xC2 ?\u0431) ;; CYRILLIC SMALL LETTER BE
+ (#xC3 ?\u0446) ;; CYRILLIC SMALL LETTER TSE
+ (#xC4 ?\u0434) ;; CYRILLIC SMALL LETTER DE
+ (#xC5 ?\u0435) ;; CYRILLIC SMALL LETTER IE
+ (#xC6 ?\u0444) ;; CYRILLIC SMALL LETTER EF
+ (#xC7 ?\u0433) ;; CYRILLIC SMALL LETTER GHE
+ (#xC8 ?\u0445) ;; CYRILLIC SMALL LETTER HA
+ (#xC9 ?\u0438) ;; CYRILLIC SMALL LETTER I
+ (#xCA ?\u0439) ;; CYRILLIC SMALL LETTER SHORT I
+ (#xCB ?\u043A) ;; CYRILLIC SMALL LETTER KA
+ (#xCC ?\u043B) ;; CYRILLIC SMALL LETTER EL
+ (#xCD ?\u043C) ;; CYRILLIC SMALL LETTER EM
+ (#xCE ?\u043D) ;; CYRILLIC SMALL LETTER EN
+ (#xCF ?\u043E) ;; CYRILLIC SMALL LETTER O
+ (#xD0 ?\u043F) ;; CYRILLIC SMALL LETTER PE
+ (#xD1 ?\u044F) ;; CYRILLIC SMALL LETTER YA
+ (#xD2 ?\u0440) ;; CYRILLIC SMALL LETTER ER
+ (#xD3 ?\u0441) ;; CYRILLIC SMALL LETTER ES
+ (#xD4 ?\u0442) ;; CYRILLIC SMALL LETTER TE
+ (#xD5 ?\u0443) ;; CYRILLIC SMALL LETTER U
+ (#xD6 ?\u0436) ;; CYRILLIC SMALL LETTER ZHE
+ (#xD7 ?\u0432) ;; CYRILLIC SMALL LETTER VE
+ (#xD8 ?\u044C) ;; CYRILLIC SMALL LETTER SOFT SIGN
+ (#xD9 ?\u044B) ;; CYRILLIC SMALL LETTER YERU
+ (#xDA ?\u0437) ;; CYRILLIC SMALL LETTER ZE
+ (#xDB ?\u0448) ;; CYRILLIC SMALL LETTER SHA
+ (#xDC ?\u044D) ;; CYRILLIC SMALL LETTER E
+ (#xDD ?\u0449) ;; CYRILLIC SMALL LETTER SHCHA
+ (#xDE ?\u0447) ;; CYRILLIC SMALL LETTER CHE
+ (#xDF ?\u044A) ;; CYRILLIC SMALL LETTER HARD SIGN
+ (#xE0 ?\u042E) ;; CYRILLIC CAPITAL LETTER YU
+ (#xE1 ?\u0410) ;; CYRILLIC CAPITAL LETTER A
+ (#xE2 ?\u0411) ;; CYRILLIC CAPITAL LETTER BE
+ (#xE3 ?\u0426) ;; CYRILLIC CAPITAL LETTER TSE
+ (#xE4 ?\u0414) ;; CYRILLIC CAPITAL LETTER DE
+ (#xE5 ?\u0415) ;; CYRILLIC CAPITAL LETTER IE
+ (#xE6 ?\u0424) ;; CYRILLIC CAPITAL LETTER EF
+ (#xE7 ?\u0413) ;; CYRILLIC CAPITAL LETTER GHE
+ (#xE8 ?\u0425) ;; CYRILLIC CAPITAL LETTER HA
+ (#xE9 ?\u0418) ;; CYRILLIC CAPITAL LETTER I
+ (#xEA ?\u0419) ;; CYRILLIC CAPITAL LETTER SHORT I
+ (#xEB ?\u041A) ;; CYRILLIC CAPITAL LETTER KA
+ (#xEC ?\u041B) ;; CYRILLIC CAPITAL LETTER EL
+ (#xED ?\u041C) ;; CYRILLIC CAPITAL LETTER EM
+ (#xEE ?\u041D) ;; CYRILLIC CAPITAL LETTER EN
+ (#xEF ?\u041E) ;; CYRILLIC CAPITAL LETTER O
+ (#xF0 ?\u041F) ;; CYRILLIC CAPITAL LETTER PE
+ (#xF1 ?\u042F) ;; CYRILLIC CAPITAL LETTER YA
+ (#xF2 ?\u0420) ;; CYRILLIC CAPITAL LETTER ER
+ (#xF3 ?\u0421) ;; CYRILLIC CAPITAL LETTER ES
+ (#xF4 ?\u0422) ;; CYRILLIC CAPITAL LETTER TE
+ (#xF5 ?\u0423) ;; CYRILLIC CAPITAL LETTER U
+ (#xF6 ?\u0416) ;; CYRILLIC CAPITAL LETTER ZHE
+ (#xF7 ?\u0412) ;; CYRILLIC CAPITAL LETTER VE
+ (#xF8 ?\u042C) ;; CYRILLIC CAPITAL LETTER SOFT SIGN
+ (#xF9 ?\u042B) ;; CYRILLIC CAPITAL LETTER YERU
+ (#xFA ?\u0417) ;; CYRILLIC CAPITAL LETTER ZE
+ (#xFB ?\u0428) ;; CYRILLIC CAPITAL LETTER SHA
+ (#xFC ?\u042D) ;; CYRILLIC CAPITAL LETTER E
+ (#xFD ?\u0429) ;; CYRILLIC CAPITAL LETTER SHCHA
+ (#xFE ?\u0427) ;; CYRILLIC CAPITAL LETTER CHE
+ (#xFF ?\u042A)) ;; CYRILLIC CAPITAL LETTER HARD SIGN
+ mnemonic "КО"
documentation
"KOI-8 for old-orthography Russian; also known as KOI-C.
diff -r 9c97a5a8c241 lisp/mule/greek.el
--- a/lisp/mule/greek.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/greek.el Sat Apr 11 14:35:00 2009 +0100
@@ -118,254 +118,256 @@
(string (char-syntax (make-char 'latin-iso8859-1 latin-1)))
syntax-table))
-(make-8-bit-coding-system
- 'iso-8859-7
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#xA2 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u20AC) ;; EURO SIGN
- (#xA5 ?\u20AF) ;; DRACHMA SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u037A) ;; GREEK YPOGEGRAMMENI
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAF ?\u2015) ;; HORIZONTAL BAR
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u0384) ;; GREEK TONOS
- (#xB5 ?\u0385) ;; GREEK DIALYTIKA TONOS
- (#xB6 ?\u0386) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u0388) ;; GREEK CAPITAL LETTER EPSILON WITH TONOS
- (#xB9 ?\u0389) ;; GREEK CAPITAL LETTER ETA WITH TONOS
- (#xBA ?\u038A) ;; GREEK CAPITAL LETTER IOTA WITH TONOS
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u038C) ;; GREEK CAPITAL LETTER OMICRON WITH TONOS
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u038E) ;; GREEK CAPITAL LETTER UPSILON WITH TONOS
- (#xBF ?\u038F) ;; GREEK CAPITAL LETTER OMEGA WITH TONOS
- (#xC0 ?\u0390) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
- (#xC1 ?\u0391) ;; GREEK CAPITAL LETTER ALPHA
- (#xC2 ?\u0392) ;; GREEK CAPITAL LETTER BETA
- (#xC3 ?\u0393) ;; GREEK CAPITAL LETTER GAMMA
- (#xC4 ?\u0394) ;; GREEK CAPITAL LETTER DELTA
- (#xC5 ?\u0395) ;; GREEK CAPITAL LETTER EPSILON
- (#xC6 ?\u0396) ;; GREEK CAPITAL LETTER ZETA
- (#xC7 ?\u0397) ;; GREEK CAPITAL LETTER ETA
- (#xC8 ?\u0398) ;; GREEK CAPITAL LETTER THETA
- (#xC9 ?\u0399) ;; GREEK CAPITAL LETTER IOTA
- (#xCA ?\u039A) ;; GREEK CAPITAL LETTER KAPPA
- (#xCB ?\u039B) ;; GREEK CAPITAL LETTER LAMDA
- (#xCC ?\u039C) ;; GREEK CAPITAL LETTER MU
- (#xCD ?\u039D) ;; GREEK CAPITAL LETTER NU
- (#xCE ?\u039E) ;; GREEK CAPITAL LETTER XI
- (#xCF ?\u039F) ;; GREEK CAPITAL LETTER OMICRON
- (#xD0 ?\u03A0) ;; GREEK CAPITAL LETTER PI
- (#xD1 ?\u03A1) ;; GREEK CAPITAL LETTER RHO
- (#xD3 ?\u03A3) ;; GREEK CAPITAL LETTER SIGMA
- (#xD4 ?\u03A4) ;; GREEK CAPITAL LETTER TAU
- (#xD5 ?\u03A5) ;; GREEK CAPITAL LETTER UPSILON
- (#xD6 ?\u03A6) ;; GREEK CAPITAL LETTER PHI
- (#xD7 ?\u03A7) ;; GREEK CAPITAL LETTER CHI
- (#xD8 ?\u03A8) ;; GREEK CAPITAL LETTER PSI
- (#xD9 ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
- (#xDA ?\u03AA) ;; GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
- (#xDB ?\u03AB) ;; GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
- (#xDC ?\u03AC) ;; GREEK SMALL LETTER ALPHA WITH TONOS
- (#xDD ?\u03AD) ;; GREEK SMALL LETTER EPSILON WITH TONOS
- (#xDE ?\u03AE) ;; GREEK SMALL LETTER ETA WITH TONOS
- (#xDF ?\u03AF) ;; GREEK SMALL LETTER IOTA WITH TONOS
- (#xE0 ?\u03B0) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
- (#xE1 ?\u03B1) ;; GREEK SMALL LETTER ALPHA
- (#xE2 ?\u03B2) ;; GREEK SMALL LETTER BETA
- (#xE3 ?\u03B3) ;; GREEK SMALL LETTER GAMMA
- (#xE4 ?\u03B4) ;; GREEK SMALL LETTER DELTA
- (#xE5 ?\u03B5) ;; GREEK SMALL LETTER EPSILON
- (#xE6 ?\u03B6) ;; GREEK SMALL LETTER ZETA
- (#xE7 ?\u03B7) ;; GREEK SMALL LETTER ETA
- (#xE8 ?\u03B8) ;; GREEK SMALL LETTER THETA
- (#xE9 ?\u03B9) ;; GREEK SMALL LETTER IOTA
- (#xEA ?\u03BA) ;; GREEK SMALL LETTER KAPPA
- (#xEB ?\u03BB) ;; GREEK SMALL LETTER LAMDA
- (#xEC ?\u03BC) ;; GREEK SMALL LETTER MU
- (#xED ?\u03BD) ;; GREEK SMALL LETTER NU
- (#xEE ?\u03BE) ;; GREEK SMALL LETTER XI
- (#xEF ?\u03BF) ;; GREEK SMALL LETTER OMICRON
- (#xF0 ?\u03C0) ;; GREEK SMALL LETTER PI
- (#xF1 ?\u03C1) ;; GREEK SMALL LETTER RHO
- (#xF2 ?\u03C2) ;; GREEK SMALL LETTER FINAL SIGMA
- (#xF3 ?\u03C3) ;; GREEK SMALL LETTER SIGMA
- (#xF4 ?\u03C4) ;; GREEK SMALL LETTER TAU
- (#xF5 ?\u03C5) ;; GREEK SMALL LETTER UPSILON
- (#xF6 ?\u03C6) ;; GREEK SMALL LETTER PHI
- (#xF7 ?\u03C7) ;; GREEK SMALL LETTER CHI
- (#xF8 ?\u03C8) ;; GREEK SMALL LETTER PSI
- (#xF9 ?\u03C9) ;; GREEK SMALL LETTER OMEGA
- (#xFA ?\u03CA) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA
- (#xFB ?\u03CB) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA
- (#xFC ?\u03CC) ;; GREEK SMALL LETTER OMICRON WITH TONOS
- (#xFD ?\u03CD) ;; GREEK SMALL LETTER UPSILON WITH TONOS
- (#xFE ?\u03CE));; GREEK SMALL LETTER OMEGA WITH TONOS
- "ISO-8859-7 (Greek)"
- '(mnemonic "Grk"
+(make-coding-system
+ 'iso-8859-7 'fixed-width "ISO-8859-7 (Greek)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#xA2 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u20AC) ;; EURO SIGN
+ (#xA5 ?\u20AF) ;; DRACHMA SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u037A) ;; GREEK YPOGEGRAMMENI
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAF ?\u2015) ;; HORIZONTAL BAR
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u0384) ;; GREEK TONOS
+ (#xB5 ?\u0385) ;; GREEK DIALYTIKA TONOS
+ (#xB6 ?\u0386) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u0388) ;; GREEK CAPITAL LETTER EPSILON WITH TONOS
+ (#xB9 ?\u0389) ;; GREEK CAPITAL LETTER ETA WITH TONOS
+ (#xBA ?\u038A) ;; GREEK CAPITAL LETTER IOTA WITH TONOS
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u038C) ;; GREEK CAPITAL LETTER OMICRON WITH TONOS
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u038E) ;; GREEK CAPITAL LETTER UPSILON WITH TONOS
+ (#xBF ?\u038F) ;; GREEK CAPITAL LETTER OMEGA WITH TONOS
+ (#xC0 ?\u0390) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ (#xC1 ?\u0391) ;; GREEK CAPITAL LETTER ALPHA
+ (#xC2 ?\u0392) ;; GREEK CAPITAL LETTER BETA
+ (#xC3 ?\u0393) ;; GREEK CAPITAL LETTER GAMMA
+ (#xC4 ?\u0394) ;; GREEK CAPITAL LETTER DELTA
+ (#xC5 ?\u0395) ;; GREEK CAPITAL LETTER EPSILON
+ (#xC6 ?\u0396) ;; GREEK CAPITAL LETTER ZETA
+ (#xC7 ?\u0397) ;; GREEK CAPITAL LETTER ETA
+ (#xC8 ?\u0398) ;; GREEK CAPITAL LETTER THETA
+ (#xC9 ?\u0399) ;; GREEK CAPITAL LETTER IOTA
+ (#xCA ?\u039A) ;; GREEK CAPITAL LETTER KAPPA
+ (#xCB ?\u039B) ;; GREEK CAPITAL LETTER LAMDA
+ (#xCC ?\u039C) ;; GREEK CAPITAL LETTER MU
+ (#xCD ?\u039D) ;; GREEK CAPITAL LETTER NU
+ (#xCE ?\u039E) ;; GREEK CAPITAL LETTER XI
+ (#xCF ?\u039F) ;; GREEK CAPITAL LETTER OMICRON
+ (#xD0 ?\u03A0) ;; GREEK CAPITAL LETTER PI
+ (#xD1 ?\u03A1) ;; GREEK CAPITAL LETTER RHO
+ (#xD3 ?\u03A3) ;; GREEK CAPITAL LETTER SIGMA
+ (#xD4 ?\u03A4) ;; GREEK CAPITAL LETTER TAU
+ (#xD5 ?\u03A5) ;; GREEK CAPITAL LETTER UPSILON
+ (#xD6 ?\u03A6) ;; GREEK CAPITAL LETTER PHI
+ (#xD7 ?\u03A7) ;; GREEK CAPITAL LETTER CHI
+ (#xD8 ?\u03A8) ;; GREEK CAPITAL LETTER PSI
+ (#xD9 ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
+ (#xDA ?\u03AA) ;; GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ (#xDB ?\u03AB) ;; GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ (#xDC ?\u03AC) ;; GREEK SMALL LETTER ALPHA WITH TONOS
+ (#xDD ?\u03AD) ;; GREEK SMALL LETTER EPSILON WITH TONOS
+ (#xDE ?\u03AE) ;; GREEK SMALL LETTER ETA WITH TONOS
+ (#xDF ?\u03AF) ;; GREEK SMALL LETTER IOTA WITH TONOS
+ (#xE0 ?\u03B0) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ (#xE1 ?\u03B1) ;; GREEK SMALL LETTER ALPHA
+ (#xE2 ?\u03B2) ;; GREEK SMALL LETTER BETA
+ (#xE3 ?\u03B3) ;; GREEK SMALL LETTER GAMMA
+ (#xE4 ?\u03B4) ;; GREEK SMALL LETTER DELTA
+ (#xE5 ?\u03B5) ;; GREEK SMALL LETTER EPSILON
+ (#xE6 ?\u03B6) ;; GREEK SMALL LETTER ZETA
+ (#xE7 ?\u03B7) ;; GREEK SMALL LETTER ETA
+ (#xE8 ?\u03B8) ;; GREEK SMALL LETTER THETA
+ (#xE9 ?\u03B9) ;; GREEK SMALL LETTER IOTA
+ (#xEA ?\u03BA) ;; GREEK SMALL LETTER KAPPA
+ (#xEB ?\u03BB) ;; GREEK SMALL LETTER LAMDA
+ (#xEC ?\u03BC) ;; GREEK SMALL LETTER MU
+ (#xED ?\u03BD) ;; GREEK SMALL LETTER NU
+ (#xEE ?\u03BE) ;; GREEK SMALL LETTER XI
+ (#xEF ?\u03BF) ;; GREEK SMALL LETTER OMICRON
+ (#xF0 ?\u03C0) ;; GREEK SMALL LETTER PI
+ (#xF1 ?\u03C1) ;; GREEK SMALL LETTER RHO
+ (#xF2 ?\u03C2) ;; GREEK SMALL LETTER FINAL SIGMA
+ (#xF3 ?\u03C3) ;; GREEK SMALL LETTER SIGMA
+ (#xF4 ?\u03C4) ;; GREEK SMALL LETTER TAU
+ (#xF5 ?\u03C5) ;; GREEK SMALL LETTER UPSILON
+ (#xF6 ?\u03C6) ;; GREEK SMALL LETTER PHI
+ (#xF7 ?\u03C7) ;; GREEK SMALL LETTER CHI
+ (#xF8 ?\u03C8) ;; GREEK SMALL LETTER PSI
+ (#xF9 ?\u03C9) ;; GREEK SMALL LETTER OMEGA
+ (#xFA ?\u03CA) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ (#xFB ?\u03CB) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ (#xFC ?\u03CC) ;; GREEK SMALL LETTER OMICRON WITH TONOS
+ (#xFD ?\u03CD) ;; GREEK SMALL LETTER UPSILON WITH TONOS
+ (#xFE ?\u03CE)) ;; GREEK SMALL LETTER OMEGA WITH TONOS
+ mnemonic "Grk"
aliases (greek-iso-8bit)))
-(make-8-bit-coding-system
- 'windows-1253
- '((#x80 ?\u20AC) ;; EURO SIGN
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0385) ;; GREEK DIALYTIKA TONOS
- (#xA2 ?\u0386) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u2015) ;; HORIZONTAL BAR
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u0384) ;; GREEK TONOS
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u0388) ;; GREEK CAPITAL LETTER EPSILON WITH TONOS
- (#xB9 ?\u0389) ;; GREEK CAPITAL LETTER ETA WITH TONOS
- (#xBA ?\u038A) ;; GREEK CAPITAL LETTER IOTA WITH TONOS
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u038C) ;; GREEK CAPITAL LETTER OMICRON WITH TONOS
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u038E) ;; GREEK CAPITAL LETTER UPSILON WITH TONOS
- (#xBF ?\u038F) ;; GREEK CAPITAL LETTER OMEGA WITH TONOS
- (#xC0 ?\u0390) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
- (#xC1 ?\u0391) ;; GREEK CAPITAL LETTER ALPHA
- (#xC2 ?\u0392) ;; GREEK CAPITAL LETTER BETA
- (#xC3 ?\u0393) ;; GREEK CAPITAL LETTER GAMMA
- (#xC4 ?\u0394) ;; GREEK CAPITAL LETTER DELTA
- (#xC5 ?\u0395) ;; GREEK CAPITAL LETTER EPSILON
- (#xC6 ?\u0396) ;; GREEK CAPITAL LETTER ZETA
- (#xC7 ?\u0397) ;; GREEK CAPITAL LETTER ETA
- (#xC8 ?\u0398) ;; GREEK CAPITAL LETTER THETA
- (#xC9 ?\u0399) ;; GREEK CAPITAL LETTER IOTA
- (#xCA ?\u039A) ;; GREEK CAPITAL LETTER KAPPA
- (#xCB ?\u039B) ;; GREEK CAPITAL LETTER LAMDA
- (#xCC ?\u039C) ;; GREEK CAPITAL LETTER MU
- (#xCD ?\u039D) ;; GREEK CAPITAL LETTER NU
- (#xCE ?\u039E) ;; GREEK CAPITAL LETTER XI
- (#xCF ?\u039F) ;; GREEK CAPITAL LETTER OMICRON
- (#xD0 ?\u03A0) ;; GREEK CAPITAL LETTER PI
- (#xD1 ?\u03A1) ;; GREEK CAPITAL LETTER RHO
- (#xD3 ?\u03A3) ;; GREEK CAPITAL LETTER SIGMA
- (#xD4 ?\u03A4) ;; GREEK CAPITAL LETTER TAU
- (#xD5 ?\u03A5) ;; GREEK CAPITAL LETTER UPSILON
- (#xD6 ?\u03A6) ;; GREEK CAPITAL LETTER PHI
- (#xD7 ?\u03A7) ;; GREEK CAPITAL LETTER CHI
- (#xD8 ?\u03A8) ;; GREEK CAPITAL LETTER PSI
- (#xD9 ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
- (#xDA ?\u03AA) ;; GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
- (#xDB ?\u03AB) ;; GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
- (#xDC ?\u03AC) ;; GREEK SMALL LETTER ALPHA WITH TONOS
- (#xDD ?\u03AD) ;; GREEK SMALL LETTER EPSILON WITH TONOS
- (#xDE ?\u03AE) ;; GREEK SMALL LETTER ETA WITH TONOS
- (#xDF ?\u03AF) ;; GREEK SMALL LETTER IOTA WITH TONOS
- (#xE0 ?\u03B0) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
- (#xE1 ?\u03B1) ;; GREEK SMALL LETTER ALPHA
- (#xE2 ?\u03B2) ;; GREEK SMALL LETTER BETA
- (#xE3 ?\u03B3) ;; GREEK SMALL LETTER GAMMA
- (#xE4 ?\u03B4) ;; GREEK SMALL LETTER DELTA
- (#xE5 ?\u03B5) ;; GREEK SMALL LETTER EPSILON
- (#xE6 ?\u03B6) ;; GREEK SMALL LETTER ZETA
- (#xE7 ?\u03B7) ;; GREEK SMALL LETTER ETA
- (#xE8 ?\u03B8) ;; GREEK SMALL LETTER THETA
- (#xE9 ?\u03B9) ;; GREEK SMALL LETTER IOTA
- (#xEA ?\u03BA) ;; GREEK SMALL LETTER KAPPA
- (#xEB ?\u03BB) ;; GREEK SMALL LETTER LAMDA
- (#xEC ?\u03BC) ;; GREEK SMALL LETTER MU
- (#xED ?\u03BD) ;; GREEK SMALL LETTER NU
- (#xEE ?\u03BE) ;; GREEK SMALL LETTER XI
- (#xEF ?\u03BF) ;; GREEK SMALL LETTER OMICRON
- (#xF0 ?\u03C0) ;; GREEK SMALL LETTER PI
- (#xF1 ?\u03C1) ;; GREEK SMALL LETTER RHO
- (#xF2 ?\u03C2) ;; GREEK SMALL LETTER FINAL SIGMA
- (#xF3 ?\u03C3) ;; GREEK SMALL LETTER SIGMA
- (#xF4 ?\u03C4) ;; GREEK SMALL LETTER TAU
- (#xF5 ?\u03C5) ;; GREEK SMALL LETTER UPSILON
- (#xF6 ?\u03C6) ;; GREEK SMALL LETTER PHI
- (#xF7 ?\u03C7) ;; GREEK SMALL LETTER CHI
- (#xF8 ?\u03C8) ;; GREEK SMALL LETTER PSI
- (#xF9 ?\u03C9) ;; GREEK SMALL LETTER OMEGA
- (#xFA ?\u03CA) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA
- (#xFB ?\u03CB) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA
- (#xFC ?\u03CC) ;; GREEK SMALL LETTER OMICRON WITH TONOS
- (#xFD ?\u03CD) ;; GREEK SMALL LETTER UPSILON WITH TONOS
- (#xFE ?\u03CE)) ;; GREEK SMALL LETTER OMEGA WITH TONOS
- "Microsoft's Code Page 1253, for monotonic Greek. "
- '(mnemonic "GrkW"
+(make-coding-system
+ 'windows-1253 'fixed-width "Microsoft's CP1253"
+ '(unicode-map
+ ((#x80 ?\u20AC) ;; EURO SIGN
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0385) ;; GREEK DIALYTIKA TONOS
+ (#xA2 ?\u0386) ;; GREEK CAPITAL LETTER ALPHA WITH TONOS
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u2015) ;; HORIZONTAL BAR
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u0384) ;; GREEK TONOS
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u0388) ;; GREEK CAPITAL LETTER EPSILON WITH TONOS
+ (#xB9 ?\u0389) ;; GREEK CAPITAL LETTER ETA WITH TONOS
+ (#xBA ?\u038A) ;; GREEK CAPITAL LETTER IOTA WITH TONOS
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u038C) ;; GREEK CAPITAL LETTER OMICRON WITH TONOS
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u038E) ;; GREEK CAPITAL LETTER UPSILON WITH TONOS
+ (#xBF ?\u038F) ;; GREEK CAPITAL LETTER OMEGA WITH TONOS
+ (#xC0 ?\u0390) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ (#xC1 ?\u0391) ;; GREEK CAPITAL LETTER ALPHA
+ (#xC2 ?\u0392) ;; GREEK CAPITAL LETTER BETA
+ (#xC3 ?\u0393) ;; GREEK CAPITAL LETTER GAMMA
+ (#xC4 ?\u0394) ;; GREEK CAPITAL LETTER DELTA
+ (#xC5 ?\u0395) ;; GREEK CAPITAL LETTER EPSILON
+ (#xC6 ?\u0396) ;; GREEK CAPITAL LETTER ZETA
+ (#xC7 ?\u0397) ;; GREEK CAPITAL LETTER ETA
+ (#xC8 ?\u0398) ;; GREEK CAPITAL LETTER THETA
+ (#xC9 ?\u0399) ;; GREEK CAPITAL LETTER IOTA
+ (#xCA ?\u039A) ;; GREEK CAPITAL LETTER KAPPA
+ (#xCB ?\u039B) ;; GREEK CAPITAL LETTER LAMDA
+ (#xCC ?\u039C) ;; GREEK CAPITAL LETTER MU
+ (#xCD ?\u039D) ;; GREEK CAPITAL LETTER NU
+ (#xCE ?\u039E) ;; GREEK CAPITAL LETTER XI
+ (#xCF ?\u039F) ;; GREEK CAPITAL LETTER OMICRON
+ (#xD0 ?\u03A0) ;; GREEK CAPITAL LETTER PI
+ (#xD1 ?\u03A1) ;; GREEK CAPITAL LETTER RHO
+ (#xD3 ?\u03A3) ;; GREEK CAPITAL LETTER SIGMA
+ (#xD4 ?\u03A4) ;; GREEK CAPITAL LETTER TAU
+ (#xD5 ?\u03A5) ;; GREEK CAPITAL LETTER UPSILON
+ (#xD6 ?\u03A6) ;; GREEK CAPITAL LETTER PHI
+ (#xD7 ?\u03A7) ;; GREEK CAPITAL LETTER CHI
+ (#xD8 ?\u03A8) ;; GREEK CAPITAL LETTER PSI
+ (#xD9 ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
+ (#xDA ?\u03AA) ;; GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ (#xDB ?\u03AB) ;; GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ (#xDC ?\u03AC) ;; GREEK SMALL LETTER ALPHA WITH TONOS
+ (#xDD ?\u03AD) ;; GREEK SMALL LETTER EPSILON WITH TONOS
+ (#xDE ?\u03AE) ;; GREEK SMALL LETTER ETA WITH TONOS
+ (#xDF ?\u03AF) ;; GREEK SMALL LETTER IOTA WITH TONOS
+ (#xE0 ?\u03B0) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ (#xE1 ?\u03B1) ;; GREEK SMALL LETTER ALPHA
+ (#xE2 ?\u03B2) ;; GREEK SMALL LETTER BETA
+ (#xE3 ?\u03B3) ;; GREEK SMALL LETTER GAMMA
+ (#xE4 ?\u03B4) ;; GREEK SMALL LETTER DELTA
+ (#xE5 ?\u03B5) ;; GREEK SMALL LETTER EPSILON
+ (#xE6 ?\u03B6) ;; GREEK SMALL LETTER ZETA
+ (#xE7 ?\u03B7) ;; GREEK SMALL LETTER ETA
+ (#xE8 ?\u03B8) ;; GREEK SMALL LETTER THETA
+ (#xE9 ?\u03B9) ;; GREEK SMALL LETTER IOTA
+ (#xEA ?\u03BA) ;; GREEK SMALL LETTER KAPPA
+ (#xEB ?\u03BB) ;; GREEK SMALL LETTER LAMDA
+ (#xEC ?\u03BC) ;; GREEK SMALL LETTER MU
+ (#xED ?\u03BD) ;; GREEK SMALL LETTER NU
+ (#xEE ?\u03BE) ;; GREEK SMALL LETTER XI
+ (#xEF ?\u03BF) ;; GREEK SMALL LETTER OMICRON
+ (#xF0 ?\u03C0) ;; GREEK SMALL LETTER PI
+ (#xF1 ?\u03C1) ;; GREEK SMALL LETTER RHO
+ (#xF2 ?\u03C2) ;; GREEK SMALL LETTER FINAL SIGMA
+ (#xF3 ?\u03C3) ;; GREEK SMALL LETTER SIGMA
+ (#xF4 ?\u03C4) ;; GREEK SMALL LETTER TAU
+ (#xF5 ?\u03C5) ;; GREEK SMALL LETTER UPSILON
+ (#xF6 ?\u03C6) ;; GREEK SMALL LETTER PHI
+ (#xF7 ?\u03C7) ;; GREEK SMALL LETTER CHI
+ (#xF8 ?\u03C8) ;; GREEK SMALL LETTER PSI
+ (#xF9 ?\u03C9) ;; GREEK SMALL LETTER OMEGA
+ (#xFA ?\u03CA) ;; GREEK SMALL LETTER IOTA WITH DIALYTIKA
+ (#xFB ?\u03CB) ;; GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+ (#xFC ?\u03CC) ;; GREEK SMALL LETTER OMICRON WITH TONOS
+ (#xFD ?\u03CD) ;; GREEK SMALL LETTER UPSILON WITH TONOS
+ (#xFE ?\u03CE)) ;; GREEK SMALL LETTER OMEGA WITH TONOS
+ mnemonic "GrkW"
documentation
- "This ASCII-compatible encoding is slightly incompatibile with
+ "Microsoft's Code Page 1253, for monotonic Greek.
+
+This ASCII-compatible encoding is slightly incompatibile with
ISO-8859-7; it provides several widely-used punctuation marks in the C1
ISO-2022 area, which makes it incompatbile with the latter standard, but
that latter standard is not used in Greece, "
diff -r 9c97a5a8c241 lisp/mule/hebrew.el
--- a/lisp/mule/hebrew.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/hebrew.el Sat Apr 11 14:35:00 2009 +0100
@@ -48,102 +48,102 @@
(modify-syntax-entry (make-char 'hebrew-iso8859-8 32) "w") ; no-break space
-(make-8-bit-coding-system
- 'iso-8859-8
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u00D7) ;; MULTIPLICATION SIGN
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
- (#xBA ?\u00F7) ;; DIVISION SIGN
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
- (#xDF ?\u2017) ;; DOUBLE LOW LINE
- (#xE0 ?\u05D0) ;; HEBREW LETTER ALEF
- (#xE1 ?\u05D1) ;; HEBREW LETTER BET
- (#xE2 ?\u05D2) ;; HEBREW LETTER GIMEL
- (#xE3 ?\u05D3) ;; HEBREW LETTER DALET
- (#xE4 ?\u05D4) ;; HEBREW LETTER HE
- (#xE5 ?\u05D5) ;; HEBREW LETTER VAV
- (#xE6 ?\u05D6) ;; HEBREW LETTER ZAYIN
- (#xE7 ?\u05D7) ;; HEBREW LETTER HET
- (#xE8 ?\u05D8) ;; HEBREW LETTER TET
- (#xE9 ?\u05D9) ;; HEBREW LETTER YOD
- (#xEA ?\u05DA) ;; HEBREW LETTER FINAL KAF
- (#xEB ?\u05DB) ;; HEBREW LETTER KAF
- (#xEC ?\u05DC) ;; HEBREW LETTER LAMED
- (#xED ?\u05DD) ;; HEBREW LETTER FINAL MEM
- (#xEE ?\u05DE) ;; HEBREW LETTER MEM
- (#xEF ?\u05DF) ;; HEBREW LETTER FINAL NUN
- (#xF0 ?\u05E0) ;; HEBREW LETTER NUN
- (#xF1 ?\u05E1) ;; HEBREW LETTER SAMEKH
- (#xF2 ?\u05E2) ;; HEBREW LETTER AYIN
- (#xF3 ?\u05E3) ;; HEBREW LETTER FINAL PE
- (#xF4 ?\u05E4) ;; HEBREW LETTER PE
- (#xF5 ?\u05E5) ;; HEBREW LETTER FINAL TSADI
- (#xF6 ?\u05E6) ;; HEBREW LETTER TSADI
- (#xF7 ?\u05E7) ;; HEBREW LETTER QOF
- (#xF8 ?\u05E8) ;; HEBREW LETTER RESH
- (#xF9 ?\u05E9) ;; HEBREW LETTER SHIN
- (#xFA ?\u05EA) ;; HEBREW LETTER TAV
- (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK
- (#xFE ?\u200F)) ;; RIGHT-TO-LEFT MARK
- "ISO-8859-8 (Hebrew)"
- '(mnemonic "MIME/Hbrw"))
+(make-coding-system
+ 'iso-8859-8 'fixed-width "ISO-8859-8 (Hebrew)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+ (#xBA ?\u00F7) ;; DIVISION SIGN
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
+ (#xDF ?\u2017) ;; DOUBLE LOW LINE
+ (#xE0 ?\u05D0) ;; HEBREW LETTER ALEF
+ (#xE1 ?\u05D1) ;; HEBREW LETTER BET
+ (#xE2 ?\u05D2) ;; HEBREW LETTER GIMEL
+ (#xE3 ?\u05D3) ;; HEBREW LETTER DALET
+ (#xE4 ?\u05D4) ;; HEBREW LETTER HE
+ (#xE5 ?\u05D5) ;; HEBREW LETTER VAV
+ (#xE6 ?\u05D6) ;; HEBREW LETTER ZAYIN
+ (#xE7 ?\u05D7) ;; HEBREW LETTER HET
+ (#xE8 ?\u05D8) ;; HEBREW LETTER TET
+ (#xE9 ?\u05D9) ;; HEBREW LETTER YOD
+ (#xEA ?\u05DA) ;; HEBREW LETTER FINAL KAF
+ (#xEB ?\u05DB) ;; HEBREW LETTER KAF
+ (#xEC ?\u05DC) ;; HEBREW LETTER LAMED
+ (#xED ?\u05DD) ;; HEBREW LETTER FINAL MEM
+ (#xEE ?\u05DE) ;; HEBREW LETTER MEM
+ (#xEF ?\u05DF) ;; HEBREW LETTER FINAL NUN
+ (#xF0 ?\u05E0) ;; HEBREW LETTER NUN
+ (#xF1 ?\u05E1) ;; HEBREW LETTER SAMEKH
+ (#xF2 ?\u05E2) ;; HEBREW LETTER AYIN
+ (#xF3 ?\u05E3) ;; HEBREW LETTER FINAL PE
+ (#xF4 ?\u05E4) ;; HEBREW LETTER PE
+ (#xF5 ?\u05E5) ;; HEBREW LETTER FINAL TSADI
+ (#xF6 ?\u05E6) ;; HEBREW LETTER TSADI
+ (#xF7 ?\u05E7) ;; HEBREW LETTER QOF
+ (#xF8 ?\u05E8) ;; HEBREW LETTER RESH
+ (#xF9 ?\u05E9) ;; HEBREW LETTER SHIN
+ (#xFA ?\u05EA) ;; HEBREW LETTER TAV
+ (#xFD ?\u200E) ;; LEFT-TO-RIGHT MARK
+ (#xFE ?\u200F)) ;; RIGHT-TO-LEFT MARK
+ mnemonic "MIME/Hbrw"))
(make-coding-system
'ctext-hebrew 'iso2022
diff -r 9c97a5a8c241 lisp/mule/latin.el
--- a/lisp/mule/latin.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/latin.el Sat Apr 11 14:35:00 2009 +0100
@@ -124,270 +124,273 @@
(#xDD #xFD) ;; Y WITH ACUTE
(#xDE #xFE))) ;; T WITH CEDILLA
-(make-8-bit-coding-system
- 'iso-8859-2
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
- (#xA2 ?\u02D8) ;; BREVE
- (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u013D) ;; LATIN CAPITAL LETTER L WITH CARON
- (#xA6 ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
- (#xAB ?\u0164) ;; LATIN CAPITAL LETTER T WITH CARON
- (#xAC ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
- (#xB2 ?\u02DB) ;; OGONEK
- (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u013E) ;; LATIN SMALL LETTER L WITH CARON
- (#xB6 ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
- (#xB7 ?\u02C7) ;; CARON
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
- (#xBB ?\u0165) ;; LATIN SMALL LETTER T WITH CARON
- (#xBC ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
- (#xBD ?\u02DD) ;; DOUBLE ACUTE ACCENT
- (#xBE ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
- (#xC0 ?\u0154) ;; LATIN CAPITAL LETTER R WITH ACUTE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u0139) ;; LATIN CAPITAL LETTER L WITH ACUTE
- (#xC6 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u011A) ;; LATIN CAPITAL LETTER E WITH CARON
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u010E) ;; LATIN CAPITAL LETTER D WITH CARON
- (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
- (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
- (#xD2 ?\u0147) ;; LATIN CAPITAL LETTER N WITH CARON
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u0158) ;; LATIN CAPITAL LETTER R WITH CARON
- (#xD9 ?\u016E) ;; LATIN CAPITAL LETTER U WITH RING ABOVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u0162) ;; LATIN CAPITAL LETTER T WITH CEDILLA
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u0155) ;; LATIN SMALL LETTER R WITH ACUTE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u013A) ;; LATIN SMALL LETTER L WITH ACUTE
- (#xE6 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u011B) ;; LATIN SMALL LETTER E WITH CARON
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u010F) ;; LATIN SMALL LETTER D WITH CARON
- (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
- (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
- (#xF2 ?\u0148) ;; LATIN SMALL LETTER N WITH CARON
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u0159) ;; LATIN SMALL LETTER R WITH CARON
- (#xF9 ?\u016F) ;; LATIN SMALL LETTER U WITH RING ABOVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
- (#xFE ?\u0163) ;; LATIN SMALL LETTER T WITH CEDILLA
- (#xFF ?\u02D9)) ;; DOT ABOVE
- "ISO-8859-2 (Latin-2) for Central Europe.
+(make-coding-system
+ 'iso-8859-2 'fixed-width "ISO-8859-2 (Latin-2)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
+ (#xA2 ?\u02D8) ;; BREVE
+ (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u013D) ;; LATIN CAPITAL LETTER L WITH CARON
+ (#xA6 ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
+ (#xAB ?\u0164) ;; LATIN CAPITAL LETTER T WITH CARON
+ (#xAC ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
+ (#xB2 ?\u02DB) ;; OGONEK
+ (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u013E) ;; LATIN SMALL LETTER L WITH CARON
+ (#xB6 ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
+ (#xB7 ?\u02C7) ;; CARON
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
+ (#xBB ?\u0165) ;; LATIN SMALL LETTER T WITH CARON
+ (#xBC ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
+ (#xBD ?\u02DD) ;; DOUBLE ACUTE ACCENT
+ (#xBE ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
+ (#xC0 ?\u0154) ;; LATIN CAPITAL LETTER R WITH ACUTE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u0139) ;; LATIN CAPITAL LETTER L WITH ACUTE
+ (#xC6 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u011A) ;; LATIN CAPITAL LETTER E WITH CARON
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u010E) ;; LATIN CAPITAL LETTER D WITH CARON
+ (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
+ (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
+ (#xD2 ?\u0147) ;; LATIN CAPITAL LETTER N WITH CARON
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u0158) ;; LATIN CAPITAL LETTER R WITH CARON
+ (#xD9 ?\u016E) ;; LATIN CAPITAL LETTER U WITH RING ABOVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u0162) ;; LATIN CAPITAL LETTER T WITH CEDILLA
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u0155) ;; LATIN SMALL LETTER R WITH ACUTE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u013A) ;; LATIN SMALL LETTER L WITH ACUTE
+ (#xE6 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u011B) ;; LATIN SMALL LETTER E WITH CARON
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u010F) ;; LATIN SMALL LETTER D WITH CARON
+ (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
+ (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
+ (#xF2 ?\u0148) ;; LATIN SMALL LETTER N WITH CARON
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u0159) ;; LATIN SMALL LETTER R WITH CARON
+ (#xF9 ?\u016F) ;; LATIN SMALL LETTER U WITH RING ABOVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u0163) ;; LATIN SMALL LETTER T WITH CEDILLA
+ (#xFF ?\u02D9)) ;; DOT ABOVE
+ documentation "ISO-8859-2 (Latin-2) for Central Europe.
See also `windows-1250', and `iso-8859-1', which is compatible with Latin 2
when used to write German (or English, of course). "
- '(mnemonic "Latin 2"
+ mnemonic "Latin 2"
aliases (iso-latin-2 latin-2)))
-(make-8-bit-coding-system
- 'windows-1250
- '((#x80 ?\u20AC) ;; EURO SIGN
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8A ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
- (#x8D ?\u0164) ;; LATIN CAPITAL LETTER T WITH CARON
- (#x8E ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#x8F ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9A ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#x9C ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
- (#x9D ?\u0165) ;; LATIN SMALL LETTER T WITH CARON
- (#x9E ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#x9F ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u02C7) ;; CARON
- (#xA2 ?\u02D8) ;; BREVE
- (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u02DB) ;; OGONEK
- (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
- (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u013D) ;; LATIN CAPITAL LETTER L WITH CARON
- (#xBD ?\u02DD) ;; DOUBLE ACUTE ACCENT
- (#xBE ?\u013E) ;; LATIN SMALL LETTER L WITH CARON
- (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
- (#xC0 ?\u0154) ;; LATIN CAPITAL LETTER R WITH ACUTE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u0139) ;; LATIN CAPITAL LETTER L WITH ACUTE
- (#xC6 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u011A) ;; LATIN CAPITAL LETTER E WITH CARON
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u010E) ;; LATIN CAPITAL LETTER D WITH CARON
- (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
- (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
- (#xD2 ?\u0147) ;; LATIN CAPITAL LETTER N WITH CARON
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u0158) ;; LATIN CAPITAL LETTER R WITH CARON
- (#xD9 ?\u016E) ;; LATIN CAPITAL LETTER U WITH RING ABOVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u0162) ;; LATIN CAPITAL LETTER T WITH CEDILLA
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u0155) ;; LATIN SMALL LETTER R WITH ACUTE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u013A) ;; LATIN SMALL LETTER L WITH ACUTE
- (#xE6 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u011B) ;; LATIN SMALL LETTER E WITH CARON
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u010F) ;; LATIN SMALL LETTER D WITH CARON
- (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
- (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
- (#xF2 ?\u0148) ;; LATIN SMALL LETTER N WITH CARON
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u0159) ;; LATIN SMALL LETTER R WITH CARON
- (#xF9 ?\u016F) ;; LATIN SMALL LETTER U WITH RING ABOVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
- (#xFE ?\u0163) ;; LATIN SMALL LETTER T WITH CEDILLA
- (#xFF ?\u02D9)) ;; DOT ABOVE
- "CP 1250, Microsoft's encoding for Central Europe.
+(make-coding-system
+ 'windows-1250 'fixed-width "Microsoft's CP1250"
+ '(unicode-map
+ ((#x80 ?\u20AC) ;; EURO SIGN
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8A ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
+ (#x8D ?\u0164) ;; LATIN CAPITAL LETTER T WITH CARON
+ (#x8E ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#x8F ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9A ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#x9C ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
+ (#x9D ?\u0165) ;; LATIN SMALL LETTER T WITH CARON
+ (#x9E ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#x9F ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u02C7) ;; CARON
+ (#xA2 ?\u02D8) ;; BREVE
+ (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u02DB) ;; OGONEK
+ (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
+ (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u013D) ;; LATIN CAPITAL LETTER L WITH CARON
+ (#xBD ?\u02DD) ;; DOUBLE ACUTE ACCENT
+ (#xBE ?\u013E) ;; LATIN SMALL LETTER L WITH CARON
+ (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
+ (#xC0 ?\u0154) ;; LATIN CAPITAL LETTER R WITH ACUTE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u0139) ;; LATIN CAPITAL LETTER L WITH ACUTE
+ (#xC6 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u011A) ;; LATIN CAPITAL LETTER E WITH CARON
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u010E) ;; LATIN CAPITAL LETTER D WITH CARON
+ (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
+ (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
+ (#xD2 ?\u0147) ;; LATIN CAPITAL LETTER N WITH CARON
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u0158) ;; LATIN CAPITAL LETTER R WITH CARON
+ (#xD9 ?\u016E) ;; LATIN CAPITAL LETTER U WITH RING ABOVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u0162) ;; LATIN CAPITAL LETTER T WITH CEDILLA
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u0155) ;; LATIN SMALL LETTER R WITH ACUTE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u013A) ;; LATIN SMALL LETTER L WITH ACUTE
+ (#xE6 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u011B) ;; LATIN SMALL LETTER E WITH CARON
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u010F) ;; LATIN SMALL LETTER D WITH CARON
+ (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
+ (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
+ (#xF2 ?\u0148) ;; LATIN SMALL LETTER N WITH CARON
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u0159) ;; LATIN SMALL LETTER R WITH CARON
+ (#xF9 ?\u016F) ;; LATIN SMALL LETTER U WITH RING ABOVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u0163) ;; LATIN SMALL LETTER T WITH CEDILLA
+ (#xFF ?\u02D9)) ;; DOT ABOVE
+ documentation
+ "CP 1250, Microsoft's encoding for Central Europe.
See also `iso-8859-2' and `window-1252' for Western Europe. "
- '(mnemonic "CP1250"
+ mnemonic "CP1250"
aliases (cp1250)))
@@ -460,131 +463,131 @@
(#xDD #xFD) ;; U WITH BREVE
(#xDE #xFE))) ;; S WITH CIRCUMFLEX
-(make-8-bit-coding-system
- 'iso-8859-3
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0126) ;; LATIN CAPITAL LETTER H WITH STROKE
- (#xA2 ?\u02D8) ;; BREVE
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA6 ?\u0124) ;; LATIN CAPITAL LETTER H WITH CIRCUMFLEX
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u0130) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE
- (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
- (#xAB ?\u011E) ;; LATIN CAPITAL LETTER G WITH BREVE
- (#xAC ?\u0134) ;; LATIN CAPITAL LETTER J WITH CIRCUMFLEX
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u0127) ;; LATIN SMALL LETTER H WITH STROKE
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u0125) ;; LATIN SMALL LETTER H WITH CIRCUMFLEX
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
- (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
- (#xBB ?\u011F) ;; LATIN SMALL LETTER G WITH BREVE
- (#xBC ?\u0135) ;; LATIN SMALL LETTER J WITH CIRCUMFLEX
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u010A) ;; LATIN CAPITAL LETTER C WITH DOT ABOVE
- (#xC6 ?\u0108) ;; LATIN CAPITAL LETTER C WITH CIRCUMFLEX
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u0120) ;; LATIN CAPITAL LETTER G WITH DOT ABOVE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u011C) ;; LATIN CAPITAL LETTER G WITH CIRCUMFLEX
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u016C) ;; LATIN CAPITAL LETTER U WITH BREVE
- (#xDE ?\u015C) ;; LATIN CAPITAL LETTER S WITH CIRCUMFLEX
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u010B) ;; LATIN SMALL LETTER C WITH DOT ABOVE
- (#xE6 ?\u0109) ;; LATIN SMALL LETTER C WITH CIRCUMFLEX
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u0121) ;; LATIN SMALL LETTER G WITH DOT ABOVE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u011D) ;; LATIN SMALL LETTER G WITH CIRCUMFLEX
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u016D) ;; LATIN SMALL LETTER U WITH BREVE
- (#xFE ?\u015D) ;; LATIN SMALL LETTER S WITH CIRCUMFLEX
- (#xFF ?\u02D9)) ;; DOT ABOVE
- "ISO-8859-3 (Latin-3)"
- '(mnemonic "Latin 3"
+(make-coding-system
+ 'iso-8859-3 'fixed-width "ISO-8859-3 (Latin-3)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0126) ;; LATIN CAPITAL LETTER H WITH STROKE
+ (#xA2 ?\u02D8) ;; BREVE
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA6 ?\u0124) ;; LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u0130) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE
+ (#xAA ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
+ (#xAB ?\u011E) ;; LATIN CAPITAL LETTER G WITH BREVE
+ (#xAC ?\u0134) ;; LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u0127) ;; LATIN SMALL LETTER H WITH STROKE
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u0125) ;; LATIN SMALL LETTER H WITH CIRCUMFLEX
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
+ (#xBA ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
+ (#xBB ?\u011F) ;; LATIN SMALL LETTER G WITH BREVE
+ (#xBC ?\u0135) ;; LATIN SMALL LETTER J WITH CIRCUMFLEX
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u010A) ;; LATIN CAPITAL LETTER C WITH DOT ABOVE
+ (#xC6 ?\u0108) ;; LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u0120) ;; LATIN CAPITAL LETTER G WITH DOT ABOVE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u011C) ;; LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u016C) ;; LATIN CAPITAL LETTER U WITH BREVE
+ (#xDE ?\u015C) ;; LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u010B) ;; LATIN SMALL LETTER C WITH DOT ABOVE
+ (#xE6 ?\u0109) ;; LATIN SMALL LETTER C WITH CIRCUMFLEX
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u0121) ;; LATIN SMALL LETTER G WITH DOT ABOVE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u011D) ;; LATIN SMALL LETTER G WITH CIRCUMFLEX
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u016D) ;; LATIN SMALL LETTER U WITH BREVE
+ (#xFE ?\u015D) ;; LATIN SMALL LETTER S WITH CIRCUMFLEX
+ (#xFF ?\u02D9)) ;; DOT ABOVE
+ mnemonic "Latin 3"
documentation "Aimed at Turkish, Maltese and Esperanto. "
aliases (iso-latin-3 latin-3)))
@@ -660,138 +663,138 @@
(#xDD #xFD) ;; U WITH TILDE
(#xDE #xFE))) ;; U WITH MACRON
-(make-8-bit-coding-system
- 'iso-8859-4
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
- (#xA2 ?\u0138) ;; LATIN SMALL LETTER KRA
- (#xA3 ?\u0156) ;; LATIN CAPITAL LETTER R WITH CEDILLA
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u0128) ;; LATIN CAPITAL LETTER I WITH TILDE
- (#xA6 ?\u013B) ;; LATIN CAPITAL LETTER L WITH CEDILLA
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#xAA ?\u0112) ;; LATIN CAPITAL LETTER E WITH MACRON
- (#xAB ?\u0122) ;; LATIN CAPITAL LETTER G WITH CEDILLA
- (#xAC ?\u0166) ;; LATIN CAPITAL LETTER T WITH STROKE
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
- (#xB2 ?\u02DB) ;; OGONEK
- (#xB3 ?\u0157) ;; LATIN SMALL LETTER R WITH CEDILLA
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u0129) ;; LATIN SMALL LETTER I WITH TILDE
- (#xB6 ?\u013C) ;; LATIN SMALL LETTER L WITH CEDILLA
- (#xB7 ?\u02C7) ;; CARON
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#xBA ?\u0113) ;; LATIN SMALL LETTER E WITH MACRON
- (#xBB ?\u0123) ;; LATIN SMALL LETTER G WITH CEDILLA
- (#xBC ?\u0167) ;; LATIN SMALL LETTER T WITH STROKE
- (#xBD ?\u014A) ;; LATIN CAPITAL LETTER ENG
- (#xBE ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#xBF ?\u014B) ;; LATIN SMALL LETTER ENG
- (#xC0 ?\u0100) ;; LATIN CAPITAL LETTER A WITH MACRON
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u012E) ;; LATIN CAPITAL LETTER I WITH OGONEK
- (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u0116) ;; LATIN CAPITAL LETTER E WITH DOT ABOVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u012A) ;; LATIN CAPITAL LETTER I WITH MACRON
- (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
- (#xD1 ?\u0145) ;; LATIN CAPITAL LETTER N WITH CEDILLA
- (#xD2 ?\u014C) ;; LATIN CAPITAL LETTER O WITH MACRON
- (#xD3 ?\u0136) ;; LATIN CAPITAL LETTER K WITH CEDILLA
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xD9 ?\u0172) ;; LATIN CAPITAL LETTER U WITH OGONEK
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u0168) ;; LATIN CAPITAL LETTER U WITH TILDE
- (#xDE ?\u016A) ;; LATIN CAPITAL LETTER U WITH MACRON
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u0101) ;; LATIN SMALL LETTER A WITH MACRON
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u012F) ;; LATIN SMALL LETTER I WITH OGONEK
- (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u0117) ;; LATIN SMALL LETTER E WITH DOT ABOVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u012B) ;; LATIN SMALL LETTER I WITH MACRON
- (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
- (#xF1 ?\u0146) ;; LATIN SMALL LETTER N WITH CEDILLA
- (#xF2 ?\u014D) ;; LATIN SMALL LETTER O WITH MACRON
- (#xF3 ?\u0137) ;; LATIN SMALL LETTER K WITH CEDILLA
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xF9 ?\u0173) ;; LATIN SMALL LETTER U WITH OGONEK
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u0169) ;; LATIN SMALL LETTER U WITH TILDE
- (#xFE ?\u016B) ;; LATIN SMALL LETTER U WITH MACRON
- (#xFF ?\u02D9));; DOT ABOVE
- "ISO-8859-4 (Latin-4)"
- '(mnemonic "Latin 4"
+(make-coding-system
+ 'iso-8859-4 'fixed-width "ISO-8859-4 (Latin-4)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
+ (#xA2 ?\u0138) ;; LATIN SMALL LETTER KRA
+ (#xA3 ?\u0156) ;; LATIN CAPITAL LETTER R WITH CEDILLA
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u0128) ;; LATIN CAPITAL LETTER I WITH TILDE
+ (#xA6 ?\u013B) ;; LATIN CAPITAL LETTER L WITH CEDILLA
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#xAA ?\u0112) ;; LATIN CAPITAL LETTER E WITH MACRON
+ (#xAB ?\u0122) ;; LATIN CAPITAL LETTER G WITH CEDILLA
+ (#xAC ?\u0166) ;; LATIN CAPITAL LETTER T WITH STROKE
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
+ (#xB2 ?\u02DB) ;; OGONEK
+ (#xB3 ?\u0157) ;; LATIN SMALL LETTER R WITH CEDILLA
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u0129) ;; LATIN SMALL LETTER I WITH TILDE
+ (#xB6 ?\u013C) ;; LATIN SMALL LETTER L WITH CEDILLA
+ (#xB7 ?\u02C7) ;; CARON
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#xBA ?\u0113) ;; LATIN SMALL LETTER E WITH MACRON
+ (#xBB ?\u0123) ;; LATIN SMALL LETTER G WITH CEDILLA
+ (#xBC ?\u0167) ;; LATIN SMALL LETTER T WITH STROKE
+ (#xBD ?\u014A) ;; LATIN CAPITAL LETTER ENG
+ (#xBE ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#xBF ?\u014B) ;; LATIN SMALL LETTER ENG
+ (#xC0 ?\u0100) ;; LATIN CAPITAL LETTER A WITH MACRON
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u012E) ;; LATIN CAPITAL LETTER I WITH OGONEK
+ (#xC8 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u0116) ;; LATIN CAPITAL LETTER E WITH DOT ABOVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u012A) ;; LATIN CAPITAL LETTER I WITH MACRON
+ (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
+ (#xD1 ?\u0145) ;; LATIN CAPITAL LETTER N WITH CEDILLA
+ (#xD2 ?\u014C) ;; LATIN CAPITAL LETTER O WITH MACRON
+ (#xD3 ?\u0136) ;; LATIN CAPITAL LETTER K WITH CEDILLA
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xD9 ?\u0172) ;; LATIN CAPITAL LETTER U WITH OGONEK
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u0168) ;; LATIN CAPITAL LETTER U WITH TILDE
+ (#xDE ?\u016A) ;; LATIN CAPITAL LETTER U WITH MACRON
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u0101) ;; LATIN SMALL LETTER A WITH MACRON
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u012F) ;; LATIN SMALL LETTER I WITH OGONEK
+ (#xE8 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u0117) ;; LATIN SMALL LETTER E WITH DOT ABOVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u012B) ;; LATIN SMALL LETTER I WITH MACRON
+ (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
+ (#xF1 ?\u0146) ;; LATIN SMALL LETTER N WITH CEDILLA
+ (#xF2 ?\u014D) ;; LATIN SMALL LETTER O WITH MACRON
+ (#xF3 ?\u0137) ;; LATIN SMALL LETTER K WITH CEDILLA
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xF9 ?\u0173) ;; LATIN SMALL LETTER U WITH OGONEK
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u0169) ;; LATIN SMALL LETTER U WITH TILDE
+ (#xFE ?\u016B) ;; LATIN SMALL LETTER U WITH MACRON
+ (#xFF ?\u02D9)) ;; DOT ABOVE
+ mnemonic "Latin 4"
aliases (iso-latin-4 latin-4)
documentation "Obsolete coding system for the Baltic rim. "))
@@ -873,138 +876,138 @@
(#xDD #xFD) ;; Y WITH ACUTE
(#xDE #xFE))) ;; Y WITH CIRCUMFLEX
-(make-8-bit-coding-system
- 'iso-8859-14
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u1E02) ;; LATIN CAPITAL LETTER B WITH DOT ABOVE
- (#xA2 ?\u1E03) ;; LATIN SMALL LETTER B WITH DOT ABOVE
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u010A) ;; LATIN CAPITAL LETTER C WITH DOT ABOVE
- (#xA5 ?\u010B) ;; LATIN SMALL LETTER C WITH DOT ABOVE
- (#xA6 ?\u1E0A) ;; LATIN CAPITAL LETTER D WITH DOT ABOVE
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u1E80) ;; LATIN CAPITAL LETTER W WITH GRAVE
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u1E82) ;; LATIN CAPITAL LETTER W WITH ACUTE
- (#xAB ?\u1E0B) ;; LATIN SMALL LETTER D WITH DOT ABOVE
- (#xAC ?\u1EF2) ;; LATIN CAPITAL LETTER Y WITH GRAVE
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
- (#xB0 ?\u1E1E) ;; LATIN CAPITAL LETTER F WITH DOT ABOVE
- (#xB1 ?\u1E1F) ;; LATIN SMALL LETTER F WITH DOT ABOVE
- (#xB2 ?\u0120) ;; LATIN CAPITAL LETTER G WITH DOT ABOVE
- (#xB3 ?\u0121) ;; LATIN SMALL LETTER G WITH DOT ABOVE
- (#xB4 ?\u1E40) ;; LATIN CAPITAL LETTER M WITH DOT ABOVE
- (#xB5 ?\u1E41) ;; LATIN SMALL LETTER M WITH DOT ABOVE
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u1E56) ;; LATIN CAPITAL LETTER P WITH DOT ABOVE
- (#xB8 ?\u1E81) ;; LATIN SMALL LETTER W WITH GRAVE
- (#xB9 ?\u1E57) ;; LATIN SMALL LETTER P WITH DOT ABOVE
- (#xBA ?\u1E83) ;; LATIN SMALL LETTER W WITH ACUTE
- (#xBB ?\u1E60) ;; LATIN CAPITAL LETTER S WITH DOT ABOVE
- (#xBC ?\u1EF3) ;; LATIN SMALL LETTER Y WITH GRAVE
- (#xBD ?\u1E84) ;; LATIN CAPITAL LETTER W WITH DIAERESIS
- (#xBE ?\u1E85) ;; LATIN SMALL LETTER W WITH DIAERESIS
- (#xBF ?\u1E61) ;; LATIN SMALL LETTER S WITH DOT ABOVE
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD0 ?\u0174) ;; LATIN CAPITAL LETTER W WITH CIRCUMFLEX
- (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u1E6A) ;; LATIN CAPITAL LETTER T WITH DOT ABOVE
- (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u0176) ;; LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u0175) ;; LATIN SMALL LETTER W WITH CIRCUMFLEX
- (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u1E6B) ;; LATIN SMALL LETTER T WITH DOT ABOVE
- (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
- (#xFE ?\u0177) ;; LATIN SMALL LETTER Y WITH CIRCUMFLEX
- (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
- "ISO-8859-14 (Latin-8)"
- '(mnemonic "Latin 8"
+(make-coding-system
+ 'iso-8859-14 'fixed-width "ISO-8859-14 (Latin-8)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u1E02) ;; LATIN CAPITAL LETTER B WITH DOT ABOVE
+ (#xA2 ?\u1E03) ;; LATIN SMALL LETTER B WITH DOT ABOVE
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u010A) ;; LATIN CAPITAL LETTER C WITH DOT ABOVE
+ (#xA5 ?\u010B) ;; LATIN SMALL LETTER C WITH DOT ABOVE
+ (#xA6 ?\u1E0A) ;; LATIN CAPITAL LETTER D WITH DOT ABOVE
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u1E80) ;; LATIN CAPITAL LETTER W WITH GRAVE
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u1E82) ;; LATIN CAPITAL LETTER W WITH ACUTE
+ (#xAB ?\u1E0B) ;; LATIN SMALL LETTER D WITH DOT ABOVE
+ (#xAC ?\u1EF2) ;; LATIN CAPITAL LETTER Y WITH GRAVE
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
+ (#xB0 ?\u1E1E) ;; LATIN CAPITAL LETTER F WITH DOT ABOVE
+ (#xB1 ?\u1E1F) ;; LATIN SMALL LETTER F WITH DOT ABOVE
+ (#xB2 ?\u0120) ;; LATIN CAPITAL LETTER G WITH DOT ABOVE
+ (#xB3 ?\u0121) ;; LATIN SMALL LETTER G WITH DOT ABOVE
+ (#xB4 ?\u1E40) ;; LATIN CAPITAL LETTER M WITH DOT ABOVE
+ (#xB5 ?\u1E41) ;; LATIN SMALL LETTER M WITH DOT ABOVE
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u1E56) ;; LATIN CAPITAL LETTER P WITH DOT ABOVE
+ (#xB8 ?\u1E81) ;; LATIN SMALL LETTER W WITH GRAVE
+ (#xB9 ?\u1E57) ;; LATIN SMALL LETTER P WITH DOT ABOVE
+ (#xBA ?\u1E83) ;; LATIN SMALL LETTER W WITH ACUTE
+ (#xBB ?\u1E60) ;; LATIN CAPITAL LETTER S WITH DOT ABOVE
+ (#xBC ?\u1EF3) ;; LATIN SMALL LETTER Y WITH GRAVE
+ (#xBD ?\u1E84) ;; LATIN CAPITAL LETTER W WITH DIAERESIS
+ (#xBE ?\u1E85) ;; LATIN SMALL LETTER W WITH DIAERESIS
+ (#xBF ?\u1E61) ;; LATIN SMALL LETTER S WITH DOT ABOVE
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD0 ?\u0174) ;; LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u1E6A) ;; LATIN CAPITAL LETTER T WITH DOT ABOVE
+ (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u0176) ;; LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u0175) ;; LATIN SMALL LETTER W WITH CIRCUMFLEX
+ (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u1E6B) ;; LATIN SMALL LETTER T WITH DOT ABOVE
+ (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u0177) ;; LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ mnemonic "Latin 8"
aliases (iso-latin-8 latin-8)))
@@ -1079,138 +1082,140 @@
(#xDD #xFD) ;; Y WITH ACUTE
(#xDE #xFE))) ;; THORN
-(make-8-bit-coding-system
- 'iso-8859-15
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u20AC) ;; EURO SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
- (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u0152) ;; LATIN CAPITAL LIGATURE OE
- (#xBD ?\u0153) ;; LATIN SMALL LIGATURE OE
- (#xBE ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
- (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD0 ?\u00D0) ;; LATIN CAPITAL LETTER ETH
- (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u00DE) ;; LATIN CAPITAL LETTER THORN
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u00F0) ;; LATIN SMALL LETTER ETH
- (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
- (#xFE ?\u00FE) ;; LATIN SMALL LETTER THORN
- (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
- "ISO 4873 conforming 8-bit code (ASCII + Latin 9; aka Latin-1 with Euro)"
- '(mnemonic "Latin 9"
+(make-coding-system
+ 'iso-8859-15 'fixed-width "ISO-8859-15 (Latin-9"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u20AC) ;; EURO SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+ (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+ (#xBD ?\u0153) ;; LATIN SMALL LIGATURE OE
+ (#xBE ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
+ (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD0 ?\u00D0) ;; LATIN CAPITAL LETTER ETH
+ (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u00DE) ;; LATIN CAPITAL LETTER THORN
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u00F0) ;; LATIN SMALL LETTER ETH
+ (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u00FE) ;; LATIN SMALL LETTER THORN
+ (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ documentation "ISO 4873 conforming 8-bit code.
+(ASCII + Latin 9; aka Latin-1 with Euro)"
+ mnemonic "Latin 9"
aliases (iso-latin-9 latin-9 latin-0)))
;; end of ISO 8859-15.
@@ -1309,138 +1314,138 @@
(#xDE #xFE))) ;; T WITH COMMA BELOW
;; Add a coding system for ISO 8859-16.
-(make-8-bit-coding-system
- 'iso-8859-16
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
- (#xA2 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
- (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
- (#xA4 ?\u20AC) ;; EURO SIGN
- (#xA5 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#xA6 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u0218) ;; LATIN CAPITAL LETTER S WITH COMMA BELOW
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
- (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
- (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
- (#xB4 ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#xB5 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#xB9 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
- (#xBA ?\u0219) ;; LATIN SMALL LETTER S WITH COMMA BELOW
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u0152) ;; LATIN CAPITAL LIGATURE OE
- (#xBD ?\u0153) ;; LATIN SMALL LIGATURE OE
- (#xBE ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
- (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
- (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
- (#xD8 ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
- (#xDE ?\u021A) ;; LATIN CAPITAL LETTER T WITH COMMA BELOW
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
- (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
- (#xF8 ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
- (#xFE ?\u021B) ;; LATIN SMALL LETTER T WITH COMMA BELOW
- (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
- "ISO-8859-16 (Latin-10)"
- '(mnemonic "Latin 10"
+(make-coding-system
+ 'iso-8859-16 'fixed-width "ISO-8859-16 (Latin-10)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u0104) ;; LATIN CAPITAL LETTER A WITH OGONEK
+ (#xA2 ?\u0105) ;; LATIN SMALL LETTER A WITH OGONEK
+ (#xA3 ?\u0141) ;; LATIN CAPITAL LETTER L WITH STROKE
+ (#xA4 ?\u20AC) ;; EURO SIGN
+ (#xA5 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#xA6 ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u0218) ;; LATIN CAPITAL LETTER S WITH COMMA BELOW
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u0179) ;; LATIN CAPITAL LETTER Z WITH ACUTE
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u017A) ;; LATIN SMALL LETTER Z WITH ACUTE
+ (#xAF ?\u017B) ;; LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u010C) ;; LATIN CAPITAL LETTER C WITH CARON
+ (#xB3 ?\u0142) ;; LATIN SMALL LETTER L WITH STROKE
+ (#xB4 ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#xB5 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#xB9 ?\u010D) ;; LATIN SMALL LETTER C WITH CARON
+ (#xBA ?\u0219) ;; LATIN SMALL LETTER S WITH COMMA BELOW
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+ (#xBD ?\u0153) ;; LATIN SMALL LIGATURE OE
+ (#xBE ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
+ (#xBF ?\u017C) ;; LATIN SMALL LETTER Z WITH DOT ABOVE
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u0102) ;; LATIN CAPITAL LETTER A WITH BREVE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u0106) ;; LATIN CAPITAL LETTER C WITH ACUTE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD0 ?\u0110) ;; LATIN CAPITAL LETTER D WITH STROKE
+ (#xD1 ?\u0143) ;; LATIN CAPITAL LETTER N WITH ACUTE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u0150) ;; LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u015A) ;; LATIN CAPITAL LETTER S WITH ACUTE
+ (#xD8 ?\u0170) ;; LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u0118) ;; LATIN CAPITAL LETTER E WITH OGONEK
+ (#xDE ?\u021A) ;; LATIN CAPITAL LETTER T WITH COMMA BELOW
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u0103) ;; LATIN SMALL LETTER A WITH BREVE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u0107) ;; LATIN SMALL LETTER C WITH ACUTE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u0111) ;; LATIN SMALL LETTER D WITH STROKE
+ (#xF1 ?\u0144) ;; LATIN SMALL LETTER N WITH ACUTE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u0151) ;; LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u015B) ;; LATIN SMALL LETTER S WITH ACUTE
+ (#xF8 ?\u0171) ;; LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u0119) ;; LATIN SMALL LETTER E WITH OGONEK
+ (#xFE ?\u021B) ;; LATIN SMALL LETTER T WITH COMMA BELOW
+ (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ mnemonic "Latin 10"
aliases (iso-latin-10)))
;; end of ISO 8859-16.
@@ -1517,138 +1522,138 @@
(make-char 'latin-iso8859-9 #xfd)
?I (standard-case-table))
-(make-8-bit-coding-system
- 'iso-8859-9
- '((#x80 ?\u0080) ;; <control>
- (#x81 ?\u0081) ;; <control>
- (#x82 ?\u0082) ;; <control>
- (#x83 ?\u0083) ;; <control>
- (#x84 ?\u0084) ;; <control>
- (#x85 ?\u0085) ;; <control>
- (#x86 ?\u0086) ;; <control>
- (#x87 ?\u0087) ;; <control>
- (#x88 ?\u0088) ;; <control>
- (#x89 ?\u0089) ;; <control>
- (#x8A ?\u008A) ;; <control>
- (#x8B ?\u008B) ;; <control>
- (#x8C ?\u008C) ;; <control>
- (#x8D ?\u008D) ;; <control>
- (#x8E ?\u008E) ;; <control>
- (#x8F ?\u008F) ;; <control>
- (#x90 ?\u0090) ;; <control>
- (#x91 ?\u0091) ;; <control>
- (#x92 ?\u0092) ;; <control>
- (#x93 ?\u0093) ;; <control>
- (#x94 ?\u0094) ;; <control>
- (#x95 ?\u0095) ;; <control>
- (#x96 ?\u0096) ;; <control>
- (#x97 ?\u0097) ;; <control>
- (#x98 ?\u0098) ;; <control>
- (#x99 ?\u0099) ;; <control>
- (#x9A ?\u009A) ;; <control>
- (#x9B ?\u009B) ;; <control>
- (#x9C ?\u009C) ;; <control>
- (#x9D ?\u009D) ;; <control>
- (#x9E ?\u009E) ;; <control>
- (#x9F ?\u009F) ;; <control>
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
- (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
- (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD0 ?\u011E) ;; LATIN CAPITAL LETTER G WITH BREVE
- (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u0130) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE
- (#xDE ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u011F) ;; LATIN SMALL LETTER G WITH BREVE
- (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
- (#xFE ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
- (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
- "ISO-8859-9 (Latin-5)"
- '(mnemonic "Latin 5"
+(make-coding-system
+ 'iso-8859-9 'fixed-width "ISO-8859-9 (Latin-5)"
+ '(unicode-map
+ ((#x80 ?\u0080) ;; <control>
+ (#x81 ?\u0081) ;; <control>
+ (#x82 ?\u0082) ;; <control>
+ (#x83 ?\u0083) ;; <control>
+ (#x84 ?\u0084) ;; <control>
+ (#x85 ?\u0085) ;; <control>
+ (#x86 ?\u0086) ;; <control>
+ (#x87 ?\u0087) ;; <control>
+ (#x88 ?\u0088) ;; <control>
+ (#x89 ?\u0089) ;; <control>
+ (#x8A ?\u008A) ;; <control>
+ (#x8B ?\u008B) ;; <control>
+ (#x8C ?\u008C) ;; <control>
+ (#x8D ?\u008D) ;; <control>
+ (#x8E ?\u008E) ;; <control>
+ (#x8F ?\u008F) ;; <control>
+ (#x90 ?\u0090) ;; <control>
+ (#x91 ?\u0091) ;; <control>
+ (#x92 ?\u0092) ;; <control>
+ (#x93 ?\u0093) ;; <control>
+ (#x94 ?\u0094) ;; <control>
+ (#x95 ?\u0095) ;; <control>
+ (#x96 ?\u0096) ;; <control>
+ (#x97 ?\u0097) ;; <control>
+ (#x98 ?\u0098) ;; <control>
+ (#x99 ?\u0099) ;; <control>
+ (#x9A ?\u009A) ;; <control>
+ (#x9B ?\u009B) ;; <control>
+ (#x9C ?\u009C) ;; <control>
+ (#x9D ?\u009D) ;; <control>
+ (#x9E ?\u009E) ;; <control>
+ (#x9F ?\u009F) ;; <control>
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+ (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
+ (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD0 ?\u011E) ;; LATIN CAPITAL LETTER G WITH BREVE
+ (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u0130) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE
+ (#xDE ?\u015E) ;; LATIN CAPITAL LETTER S WITH CEDILLA
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u011F) ;; LATIN SMALL LETTER G WITH BREVE
+ (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
+ (#xFE ?\u015F) ;; LATIN SMALL LETTER S WITH CEDILLA
+ (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ mnemonic "Latin 5"
aliases (iso-latin-5 latin-5)))
;; end of ISO-8859-9
@@ -1734,8 +1739,7 @@
(invalid-sequence-coding-system ,(or invalid-sequence-coding-system
codesys))
(documentation . ,(if (listp supported-langs) (car supported-langs)
- (format "\
-Generic language environment for %s (%s)." nice-charset-1 nice-charset-2))))
+ (format "Generic language environment for %s (%s)." nice-charset-1 nice-charset-2))))
'("European"))
(loop for (name locale tutorial sample-text input-method) in langenvs
do
@@ -1752,8 +1756,7 @@
(tutorial-coding-system . ,codesys)))
,@(if sample-text `((sample-text . ,sample-text)))
(input-method . ,(or input-method default-input))
- (documentation . ,(format "\
-This language environment supports %s. " name)))
+ (documentation . ,(format "This language environment supports %s. " name)))
'("European"))))
;; The case table for Turkish is special:
@@ -1776,268 +1779,270 @@
;; Restore the normal case mappings for the characters.
(put-case-table-pair ?I ?i (standard-case-table))))
-(make-8-bit-coding-system
- 'macintosh
- '((#x80 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#x81 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#x82 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#x83 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#x84 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#x85 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#x86 ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#x87 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#x88 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#x89 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#x8A ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#x8B ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#x8C ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#x8D ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#x8E ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#x8F ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#x90 ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#x91 ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#x92 ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#x93 ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#x94 ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#x95 ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#x96 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#x97 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#x98 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#x99 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#x9A ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#x9B ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#x9C ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#x9D ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#x9E ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#x9F ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xA0 ?\u2020) ;; DAGGER
- (#xA1 ?\u00B0) ;; DEGREE SIGN
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A7) ;; SECTION SIGN
- (#xA5 ?\u2022) ;; BULLET
- (#xA6 ?\u00B6) ;; PILCROW SIGN
- (#xA7 ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xA8 ?\u00AE) ;; REGISTERED SIGN
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u2122) ;; TRADE MARK SIGN
- (#xAB ?\u00B4) ;; ACUTE ACCENT
- (#xAC ?\u00A8) ;; DIAERESIS
- (#xAD ?\u2260) ;; NOT EQUAL TO
- (#xAE ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xAF ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xB0 ?\u221E) ;; INFINITY
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u2264) ;; LESS-THAN OR EQUAL TO
- (#xB3 ?\u2265) ;; GREATER-THAN OR EQUAL TO
- (#xB4 ?\u00A5) ;; YEN SIGN
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u2202) ;; PARTIAL DIFFERENTIAL
- (#xB7 ?\u2211) ;; N-ARY SUMMATION
- (#xB8 ?\u220F) ;; N-ARY PRODUCT
- (#xB9 ?\u03C0) ;; GREEK SMALL LETTER PI
- (#xBA ?\u222B) ;; INTEGRAL
- (#xBB ?\u00AA) ;; FEMININE ORDINAL INDICATOR
- (#xBC ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
- (#xBD ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
- (#xBE ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xBF ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xC0 ?\u00BF) ;; INVERTED QUESTION MARK
- (#xC1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
- (#xC2 ?\u00AC) ;; NOT SIGN
- (#xC3 ?\u221A) ;; SQUARE ROOT
- (#xC4 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
- (#xC5 ?\u2248) ;; ALMOST EQUAL TO
- (#xC6 ?\u2206) ;; INCREMENT
- (#xC7 ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xC8 ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xC9 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#xCA ?\u00A0) ;; NO-BREAK SPACE
- (#xCB ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xCC ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xCD ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xCE ?\u0152) ;; LATIN CAPITAL LIGATURE OE
- (#xCF ?\u0153) ;; LATIN SMALL LIGATURE OE
- (#xD0 ?\u2013) ;; EN DASH
- (#xD1 ?\u2014) ;; EM DASH
- (#xD2 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#xD3 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#xD4 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#xD5 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#xD6 ?\u00F7) ;; DIVISION SIGN
- (#xD7 ?\u25CA) ;; LOZENGE
- (#xD8 ?\u00FF) ;; LATIN SMALL LETTER Y WITH DIAERESIS
- (#xD9 ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
- (#xDA ?\u2044) ;; FRACTION SLASH
- (#xDB ?\u20AC) ;; EURO SIGN
- (#xDC ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#xDD ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#xDE ?\uFB01) ;; LATIN SMALL LIGATURE FI
- (#xDF ?\uFB02) ;; LATIN SMALL LIGATURE FL
- (#xE0 ?\u2021) ;; DOUBLE DAGGER
- (#xE1 ?\u00B7) ;; MIDDLE DOT
- (#xE2 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#xE3 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#xE4 ?\u2030) ;; PER MILLE SIGN
- (#xE5 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xE6 ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xE7 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xE8 ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xE9 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xEA ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xEB ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xEC ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xED ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xEE ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xEF ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xF0 ?\uF8FF) ;; Apple logo
- (#xF1 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xF2 ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xF3 ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xF4 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xF5 ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
- (#xF6 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
- (#xF7 ?\u02DC) ;; SMALL TILDE
- (#xF8 ?\u00AF) ;; MACRON
- (#xF9 ?\u02D8) ;; BREVE
- (#xFA ?\u02D9) ;; DOT ABOVE
- (#xFB ?\u02DA) ;; RING ABOVE
- (#xFC ?\u00B8) ;; CEDILLA
- (#xFD ?\u02DD) ;; DOUBLE ACUTE ACCENT
- (#xFE ?\u02DB) ;; OGONEK
- (#xFF ?\u02C7)) ;; CARON
- "The Macintosh encoding for Western Europe and the Americas"
- '(mnemonic "MR"
- documentation "MacRoman, MIME name macintosh"
+(make-coding-system
+ 'macintosh 'fixed-width "MacRoman"
+ '(unicode-map
+ ((#x80 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#x81 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#x82 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#x83 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#x84 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#x85 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#x86 ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#x87 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#x88 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#x89 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#x8A ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#x8B ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#x8C ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#x8D ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#x8E ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#x8F ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#x90 ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#x91 ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#x92 ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#x93 ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#x94 ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#x95 ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#x96 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#x97 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#x98 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#x99 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#x9A ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#x9B ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#x9C ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#x9D ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#x9E ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#x9F ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xA0 ?\u2020) ;; DAGGER
+ (#xA1 ?\u00B0) ;; DEGREE SIGN
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A7) ;; SECTION SIGN
+ (#xA5 ?\u2022) ;; BULLET
+ (#xA6 ?\u00B6) ;; PILCROW SIGN
+ (#xA7 ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xA8 ?\u00AE) ;; REGISTERED SIGN
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u2122) ;; TRADE MARK SIGN
+ (#xAB ?\u00B4) ;; ACUTE ACCENT
+ (#xAC ?\u00A8) ;; DIAERESIS
+ (#xAD ?\u2260) ;; NOT EQUAL TO
+ (#xAE ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xAF ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xB0 ?\u221E) ;; INFINITY
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u2264) ;; LESS-THAN OR EQUAL TO
+ (#xB3 ?\u2265) ;; GREATER-THAN OR EQUAL TO
+ (#xB4 ?\u00A5) ;; YEN SIGN
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u2202) ;; PARTIAL DIFFERENTIAL
+ (#xB7 ?\u2211) ;; N-ARY SUMMATION
+ (#xB8 ?\u220F) ;; N-ARY PRODUCT
+ (#xB9 ?\u03C0) ;; GREEK SMALL LETTER PI
+ (#xBA ?\u222B) ;; INTEGRAL
+ (#xBB ?\u00AA) ;; FEMININE ORDINAL INDICATOR
+ (#xBC ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
+ (#xBD ?\u03A9) ;; GREEK CAPITAL LETTER OMEGA
+ (#xBE ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xBF ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xC0 ?\u00BF) ;; INVERTED QUESTION MARK
+ (#xC1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
+ (#xC2 ?\u00AC) ;; NOT SIGN
+ (#xC3 ?\u221A) ;; SQUARE ROOT
+ (#xC4 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
+ (#xC5 ?\u2248) ;; ALMOST EQUAL TO
+ (#xC6 ?\u2206) ;; INCREMENT
+ (#xC7 ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xC8 ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xC9 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#xCA ?\u00A0) ;; NO-BREAK SPACE
+ (#xCB ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xCC ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xCD ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xCE ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+ (#xCF ?\u0153) ;; LATIN SMALL LIGATURE OE
+ (#xD0 ?\u2013) ;; EN DASH
+ (#xD1 ?\u2014) ;; EM DASH
+ (#xD2 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#xD3 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#xD4 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#xD5 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#xD6 ?\u00F7) ;; DIVISION SIGN
+ (#xD7 ?\u25CA) ;; LOZENGE
+ (#xD8 ?\u00FF) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ (#xD9 ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
+ (#xDA ?\u2044) ;; FRACTION SLASH
+ (#xDB ?\u20AC) ;; EURO SIGN
+ (#xDC ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#xDD ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#xDE ?\uFB01) ;; LATIN SMALL LIGATURE FI
+ (#xDF ?\uFB02) ;; LATIN SMALL LIGATURE FL
+ (#xE0 ?\u2021) ;; DOUBLE DAGGER
+ (#xE1 ?\u00B7) ;; MIDDLE DOT
+ (#xE2 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#xE3 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#xE4 ?\u2030) ;; PER MILLE SIGN
+ (#xE5 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xE6 ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xE7 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xE8 ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xE9 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xEA ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xEB ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xEC ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xED ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xEE ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xEF ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xF0 ?\uF8FF) ;; Apple logo
+ (#xF1 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xF2 ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xF3 ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xF4 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xF5 ?\u0131) ;; LATIN SMALL LETTER DOTLESS I
+ (#xF6 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
+ (#xF7 ?\u02DC) ;; SMALL TILDE
+ (#xF8 ?\u00AF) ;; MACRON
+ (#xF9 ?\u02D8) ;; BREVE
+ (#xFA ?\u02D9) ;; DOT ABOVE
+ (#xFB ?\u02DA) ;; RING ABOVE
+ (#xFC ?\u00B8) ;; CEDILLA
+ (#xFD ?\u02DD) ;; DOUBLE ACUTE ACCENT
+ (#xFE ?\u02DB) ;; OGONEK
+ (#xFF ?\u02C7)) ;; CARON
+ mnemonic "MR"
+ documentation "The Macintosh encoding for Western Europe and the Americas"
aliases (cp10000 MacRoman)))
-(make-8-bit-coding-system
- 'windows-1252
- '((#x80 ?\u20AC) ;; EURO SIGN
- (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
- (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
- (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
- (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
- (#x86 ?\u2020) ;; DAGGER
- (#x87 ?\u2021) ;; DOUBLE DAGGER
- (#x88 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
- (#x89 ?\u2030) ;; PER MILLE SIGN
- (#x8A ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
- (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- (#x8C ?\u0152) ;; LATIN CAPITAL LIGATURE OE
- (#x8E ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
- (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
- (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
- (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
- (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
- (#x95 ?\u2022) ;; BULLET
- (#x96 ?\u2013) ;; EN DASH
- (#x97 ?\u2014) ;; EM DASH
- (#x98 ?\u02DC) ;; SMALL TILDE
- (#x99 ?\u2122) ;; TRADE MARK SIGN
- (#x9A ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
- (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- (#x9C ?\u0153) ;; LATIN SMALL LIGATURE OE
- (#x9E ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
- (#x9F ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
- (#xA0 ?\u00A0) ;; NO-BREAK SPACE
- (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
- (#xA2 ?\u00A2) ;; CENT SIGN
- (#xA3 ?\u00A3) ;; POUND SIGN
- (#xA4 ?\u00A4) ;; CURRENCY SIGN
- (#xA5 ?\u00A5) ;; YEN SIGN
- (#xA6 ?\u00A6) ;; BROKEN BAR
- (#xA7 ?\u00A7) ;; SECTION SIGN
- (#xA8 ?\u00A8) ;; DIAERESIS
- (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
- (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
- (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xAC ?\u00AC) ;; NOT SIGN
- (#xAD ?\u00AD) ;; SOFT HYPHEN
- (#xAE ?\u00AE) ;; REGISTERED SIGN
- (#xAF ?\u00AF) ;; MACRON
- (#xB0 ?\u00B0) ;; DEGREE SIGN
- (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
- (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
- (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
- (#xB4 ?\u00B4) ;; ACUTE ACCENT
- (#xB5 ?\u00B5) ;; MICRO SIGN
- (#xB6 ?\u00B6) ;; PILCROW SIGN
- (#xB7 ?\u00B7) ;; MIDDLE DOT
- (#xB8 ?\u00B8) ;; CEDILLA
- (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
- (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
- (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
- (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
- (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
- (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
- (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
- (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
- (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
- (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
- (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
- (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
- (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
- (#xD0 ?\u00D0) ;; LATIN CAPITAL LETTER ETH
- (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
- (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
- (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
- (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
- (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
- (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
- (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
- (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u00DE) ;; LATIN CAPITAL LETTER THORN
- (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
- (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
- (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
- (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
- (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
- (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
- (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
- (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
- (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
- (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
- (#xF0 ?\u00F0) ;; LATIN SMALL LETTER ETH
- (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
- (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
- (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
- (#xF7 ?\u00F7) ;; DIVISION SIGN
- (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
- (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
- (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
- (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
- (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
- (#xFE ?\u00FE) ;; LATIN SMALL LETTER THORN
- (#xFF ?\u00FF));; LATIN SMALL LETTER Y WITH DIAERESIS
- "Microsoft's extension of iso-8859-1 for Western Europe and the Americas. "
- '(mnemonic "cp1252"
+(make-coding-system
+ 'windows-1252 'fixed-width "Microsoft's CP1252"
+ '(unicode-map
+ ((#x80 ?\u20AC) ;; EURO SIGN
+ (#x82 ?\u201A) ;; SINGLE LOW-9 QUOTATION MARK
+ (#x83 ?\u0192) ;; LATIN SMALL LETTER F WITH HOOK
+ (#x84 ?\u201E) ;; DOUBLE LOW-9 QUOTATION MARK
+ (#x85 ?\u2026) ;; HORIZONTAL ELLIPSIS
+ (#x86 ?\u2020) ;; DAGGER
+ (#x87 ?\u2021) ;; DOUBLE DAGGER
+ (#x88 ?\u02C6) ;; MODIFIER LETTER CIRCUMFLEX ACCENT
+ (#x89 ?\u2030) ;; PER MILLE SIGN
+ (#x8A ?\u0160) ;; LATIN CAPITAL LETTER S WITH CARON
+ (#x8B ?\u2039) ;; SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ (#x8C ?\u0152) ;; LATIN CAPITAL LIGATURE OE
+ (#x8E ?\u017D) ;; LATIN CAPITAL LETTER Z WITH CARON
+ (#x91 ?\u2018) ;; LEFT SINGLE QUOTATION MARK
+ (#x92 ?\u2019) ;; RIGHT SINGLE QUOTATION MARK
+ (#x93 ?\u201C) ;; LEFT DOUBLE QUOTATION MARK
+ (#x94 ?\u201D) ;; RIGHT DOUBLE QUOTATION MARK
+ (#x95 ?\u2022) ;; BULLET
+ (#x96 ?\u2013) ;; EN DASH
+ (#x97 ?\u2014) ;; EM DASH
+ (#x98 ?\u02DC) ;; SMALL TILDE
+ (#x99 ?\u2122) ;; TRADE MARK SIGN
+ (#x9A ?\u0161) ;; LATIN SMALL LETTER S WITH CARON
+ (#x9B ?\u203A) ;; SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ (#x9C ?\u0153) ;; LATIN SMALL LIGATURE OE
+ (#x9E ?\u017E) ;; LATIN SMALL LETTER Z WITH CARON
+ (#x9F ?\u0178) ;; LATIN CAPITAL LETTER Y WITH DIAERESIS
+ (#xA0 ?\u00A0) ;; NO-BREAK SPACE
+ (#xA1 ?\u00A1) ;; INVERTED EXCLAMATION MARK
+ (#xA2 ?\u00A2) ;; CENT SIGN
+ (#xA3 ?\u00A3) ;; POUND SIGN
+ (#xA4 ?\u00A4) ;; CURRENCY SIGN
+ (#xA5 ?\u00A5) ;; YEN SIGN
+ (#xA6 ?\u00A6) ;; BROKEN BAR
+ (#xA7 ?\u00A7) ;; SECTION SIGN
+ (#xA8 ?\u00A8) ;; DIAERESIS
+ (#xA9 ?\u00A9) ;; COPYRIGHT SIGN
+ (#xAA ?\u00AA) ;; FEMININE ORDINAL INDICATOR
+ (#xAB ?\u00AB) ;; LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xAC ?\u00AC) ;; NOT SIGN
+ (#xAD ?\u00AD) ;; SOFT HYPHEN
+ (#xAE ?\u00AE) ;; REGISTERED SIGN
+ (#xAF ?\u00AF) ;; MACRON
+ (#xB0 ?\u00B0) ;; DEGREE SIGN
+ (#xB1 ?\u00B1) ;; PLUS-MINUS SIGN
+ (#xB2 ?\u00B2) ;; SUPERSCRIPT TWO
+ (#xB3 ?\u00B3) ;; SUPERSCRIPT THREE
+ (#xB4 ?\u00B4) ;; ACUTE ACCENT
+ (#xB5 ?\u00B5) ;; MICRO SIGN
+ (#xB6 ?\u00B6) ;; PILCROW SIGN
+ (#xB7 ?\u00B7) ;; MIDDLE DOT
+ (#xB8 ?\u00B8) ;; CEDILLA
+ (#xB9 ?\u00B9) ;; SUPERSCRIPT ONE
+ (#xBA ?\u00BA) ;; MASCULINE ORDINAL INDICATOR
+ (#xBB ?\u00BB) ;; RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ (#xBC ?\u00BC) ;; VULGAR FRACTION ONE QUARTER
+ (#xBD ?\u00BD) ;; VULGAR FRACTION ONE HALF
+ (#xBE ?\u00BE) ;; VULGAR FRACTION THREE QUARTERS
+ (#xBF ?\u00BF) ;; INVERTED QUESTION MARK
+ (#xC0 ?\u00C0) ;; LATIN CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; LATIN CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; LATIN CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u00C4) ;; LATIN CAPITAL LETTER A WITH DIAERESIS
+ (#xC5 ?\u00C5) ;; LATIN CAPITAL LETTER A WITH RING ABOVE
+ (#xC6 ?\u00C6) ;; LATIN CAPITAL LETTER AE
+ (#xC7 ?\u00C7) ;; LATIN CAPITAL LETTER C WITH CEDILLA
+ (#xC8 ?\u00C8) ;; LATIN CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; LATIN CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u00CB) ;; LATIN CAPITAL LETTER E WITH DIAERESIS
+ (#xCC ?\u00CC) ;; LATIN CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; LATIN CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u00CE) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ (#xCF ?\u00CF) ;; LATIN CAPITAL LETTER I WITH DIAERESIS
+ (#xD0 ?\u00D0) ;; LATIN CAPITAL LETTER ETH
+ (#xD1 ?\u00D1) ;; LATIN CAPITAL LETTER N WITH TILDE
+ (#xD2 ?\u00D2) ;; LATIN CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; LATIN CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u00D5) ;; LATIN CAPITAL LETTER O WITH TILDE
+ (#xD6 ?\u00D6) ;; LATIN CAPITAL LETTER O WITH DIAERESIS
+ (#xD7 ?\u00D7) ;; MULTIPLICATION SIGN
+ (#xD8 ?\u00D8) ;; LATIN CAPITAL LETTER O WITH STROKE
+ (#xD9 ?\u00D9) ;; LATIN CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; LATIN CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u00DB) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ (#xDC ?\u00DC) ;; LATIN CAPITAL LETTER U WITH DIAERESIS
+ (#xDD ?\u00DD) ;; LATIN CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u00DE) ;; LATIN CAPITAL LETTER THORN
+ (#xDF ?\u00DF) ;; LATIN SMALL LETTER SHARP S
+ (#xE0 ?\u00E0) ;; LATIN SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; LATIN SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; LATIN SMALL LETTER A WITH TILDE
+ (#xE4 ?\u00E4) ;; LATIN SMALL LETTER A WITH DIAERESIS
+ (#xE5 ?\u00E5) ;; LATIN SMALL LETTER A WITH RING ABOVE
+ (#xE6 ?\u00E6) ;; LATIN SMALL LETTER AE
+ (#xE7 ?\u00E7) ;; LATIN SMALL LETTER C WITH CEDILLA
+ (#xE8 ?\u00E8) ;; LATIN SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; LATIN SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u00EB) ;; LATIN SMALL LETTER E WITH DIAERESIS
+ (#xEC ?\u00EC) ;; LATIN SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; LATIN SMALL LETTER I WITH ACUTE
+ (#xEE ?\u00EE) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX
+ (#xEF ?\u00EF) ;; LATIN SMALL LETTER I WITH DIAERESIS
+ (#xF0 ?\u00F0) ;; LATIN SMALL LETTER ETH
+ (#xF1 ?\u00F1) ;; LATIN SMALL LETTER N WITH TILDE
+ (#xF2 ?\u00F2) ;; LATIN SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; LATIN SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; LATIN SMALL LETTER O WITH TILDE
+ (#xF6 ?\u00F6) ;; LATIN SMALL LETTER O WITH DIAERESIS
+ (#xF7 ?\u00F7) ;; DIVISION SIGN
+ (#xF8 ?\u00F8) ;; LATIN SMALL LETTER O WITH STROKE
+ (#xF9 ?\u00F9) ;; LATIN SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; LATIN SMALL LETTER U WITH ACUTE
+ (#xFB ?\u00FB) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX
+ (#xFC ?\u00FC) ;; LATIN SMALL LETTER U WITH DIAERESIS
+ (#xFD ?\u00FD) ;; LATIN SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u00FE) ;; LATIN SMALL LETTER THORN
+ (#xFF ?\u00FF)) ;; LATIN SMALL LETTER Y WITH DIAERESIS
+ documentation "Microsoft's extension of iso-8859-1 for Western Europe \
+and the Americas. "
+ mnemonic "cp1252"
aliases (cp1252)))
;; Provide language environments that prefer specific coding systems.
diff -r 9c97a5a8c241 lisp/mule/make-coding-system.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/mule/make-coding-system.el Sat Apr 11 14:35:00 2009 +0100
@@ -0,0 +1,985 @@
+;;; make-coding-system.el; Provides the #'make-coding-system function and
+;;; much of the implementation of the fixed-width coding system type.
+
+;; Copyright (C) 2009 Free Software Foundation
+
+;; Author: Aidan Kehoe
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(defvar fixed-width-private-use-start (decode-char 'ucs #xE000)
+ "Start of a 256 code private use area for fixed-width coding systems.
+
+This is used to ensure that distinct octets on disk for a given coding
+system map to distinct XEmacs characters, preventing a spurious changes when
+a file is read, not changed, and then written. ")
+
+(defun fixed-width-generate-helper (decode-table encode-table
+ encode-failure-octet)
+ "Helper function, `fixed-width-generate-encode-program-and-skip-chars-strings',
+which see.
+
+Deals with the case where ASCII and another character set can both be
+encoded unambiguously and completely into the coding-system; if this is so,
+returns a list comprised of such a ccl-program and the character set in
+question. If not, it returns a list with both entries nil."
+ (let ((tentative-encode-program-parts
+ (eval-when-compile
+ (let* ((vec-len 128)
+ (compiled
+ (append
+ (ccl-compile
+ `(1
+ (loop
+ (read-multibyte-character r0 r1)
+ (if (r0 == ,(charset-id 'ascii))
+ (write r1)
+ ((if (r0 == #xABAB)
+ ;; #xBFFE is a sentinel in the compiled
+ ;; program.
+ ((r0 = r1 & #x7F)
+ (write r0 ,(make-vector vec-len #xBFFE)))
+ ((mule-to-unicode r0 r1)
+ (if (r0 == #xFFFD)
+ (write #xBEEF)
+ ((lookup-integer encode-table-sym r0 r3)
+ (if r7
+ (write-multibyte-character r0 r3)
+ (write #xBEEF))))))))
+ (repeat)))) nil))
+ (first-part compiled)
+ (last-part
+ (member-if-not (lambda (entr) (eq #xBFFE entr))
+ (member-if
+ (lambda (entr) (eq #xBFFE entr))
+ first-part))))
+ (while compiled
+ (when (eq #xBFFE (cadr compiled))
+ (assert (= vec-len (search '(#xBFFE) (cdr compiled)
+ :test #'/=)) nil
+ "Strange ccl vector length")
+ (setcdr compiled nil))
+ (setq compiled (cdr compiled)))
+ ;; Is the generated code as we expect it to be?
+ (assert (and (memq #xABAB first-part)
+ (memq #xBEEF14 last-part))
+ nil
+ "This code assumes that the constant #xBEEF is #xBEEF14 in \
+compiled CCL code,\nand that the constant #xABAB is #xABAB. If that is
+not the case, and it appears not to be--that's why you're getting this
+message--it will not work. ")
+ (list first-part last-part vec-len))))
+ (charset-lower -1)
+ (charset-upper -1)
+ worth-trying known-charsets encode-program
+ other-charset-vector ucs)
+
+ (loop for char across decode-table
+ do (pushnew (char-charset char) known-charsets))
+ (setq known-charsets (delq 'ascii known-charsets))
+
+ (loop for known-charset in known-charsets
+ do
+ ;; This is not possible for two dimensional charsets.
+ (when (eq 1 (charset-dimension known-charset))
+ (if (eq 'control-1 known-charset)
+ (setq charset-lower 0
+ charset-upper 31)
+ ;; There should be a nicer way to get the limits here.
+ (condition-case args-out-of-range
+ (make-char known-charset #x100)
+ (args-out-of-range
+ (setq charset-lower (third args-out-of-range)
+ charset-upper (fourth args-out-of-range)))))
+ (loop
+ for i from charset-lower to charset-upper
+ always (and (setq ucs
+ (encode-char (make-char known-charset i) 'ucs))
+ (gethash ucs encode-table))
+ finally (setq worth-trying known-charset))
+
+ ;; Only trying this for one charset at a time, the first find.
+ (when worth-trying (return))
+
+ ;; Okay, this charset is not worth trying, Try the next.
+ (setq charset-lower -1
+ charset-upper -1
+ worth-trying nil)))
+
+ (when worth-trying
+ (setq other-charset-vector
+ (make-vector (third tentative-encode-program-parts)
+ encode-failure-octet))
+ (loop for i from charset-lower to charset-upper
+ do (aset other-charset-vector i
+ (gethash (encode-char (make-char worth-trying i)
+ 'ucs) encode-table)))
+ (setq encode-program
+ (nsublis
+ (list (cons #xABAB (charset-id worth-trying)))
+ (nconc
+ (copy-list (first
+ tentative-encode-program-parts))
+ (append other-charset-vector nil)
+ (copy-tree (second
+ tentative-encode-program-parts))))))
+ (values encode-program worth-trying)))
+
+(defun fixed-width-generate-encode-program-and-skip-chars-strings
+ (decode-table encode-table encode-failure-octet)
+ "Generate a CCL program to encode a 8-bit fixed-width charset.
+
+DECODE-TABLE must have 256 non-cons entries, and will be regarded as
+describing a map from the octet corresponding to an offset in the
+table to the that entry in the table. ENCODE-TABLE is a hash table
+map from unicode values to characters in the range [0,255].
+ENCODE-FAILURE-OCTET describes an integer between 0 and 255
+\(inclusive) to write in the event that a character cannot be encoded. "
+ (check-argument-type #'vectorp decode-table)
+ (check-argument-range (length decode-table) #x100 #x100)
+ (check-argument-type #'hash-table-p encode-table)
+ (check-argument-type #'integerp encode-failure-octet)
+ (check-argument-range encode-failure-octet #x00 #xFF)
+ (let ((encode-program nil)
+ (general-encode-program
+ (eval-when-compile
+ (let ((prog (append
+ (ccl-compile
+ `(1
+ (loop
+ (read-multibyte-character r0 r1)
+ (mule-to-unicode r0 r1)
+ (if (r0 == #xFFFD)
+ (write #xBEEF)
+ ((lookup-integer encode-table-sym r0 r3)
+ (if r7
+ (write-multibyte-character r0 r3)
+ (write #xBEEF))))
+ (repeat)))) nil)))
+ (assert (memq #xBEEF14 prog)
+ nil
+ "This code assumes that the constant #xBEEF is #xBEEF14 \
+in compiled CCL code.\nIf that is not the case, and it appears not to
+be--that's why you're getting this message--it will not work. ")
+ prog)))
+ (encode-program-with-ascii-optimisation
+ (eval-when-compile
+ (let ((prog (append
+ (ccl-compile
+ `(1
+ (loop
+ (read-multibyte-character r0 r1)
+ (if (r0 == ,(charset-id 'ascii))
+ (write r1)
+ ((mule-to-unicode r0 r1)
+ (if (r0 == #xFFFD)
+ (write #xBEEF)
+ ((lookup-integer encode-table-sym r0 r3)
+ (if r7
+ (write-multibyte-character r0 r3)
+ (write #xBEEF))))))
+ (repeat)))) nil)))
+ (assert (memq #xBEEF14 prog)
+ nil
+ "This code assumes that the constant #xBEEF is #xBEEF14 \
+in compiled CCL code.\nIf that is not the case, and it appears not to
+be--that's why you're getting this message--it will not work. ")
+ prog)))
+ (ascii-encodes-as-itself nil)
+ (control-1-encodes-as-itself t)
+ (invalid-sequence-code-point-start
+ (eval-when-compile
+ (char-to-unicode
+ (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3))))
+ further-char-set skip-chars invalid-sequences-skip-chars)
+
+ ;; Is this coding system ASCII-compatible? If so, we can avoid the hash
+ ;; table lookup for those characters.
+ (loop
+ for i from #x00 to #x7f
+ always (eq (int-to-char i) (gethash i encode-table))
+ finally (setq ascii-encodes-as-itself t))
+
+ ;; Note that this logic handles EBCDIC badly. For example, CP037,
+ ;; MIME name ebcdic-na, has the entire repertoire of ASCII and
+ ;; Latin 1, and thus a more optimal ccl encode program would check
+ ;; for those character sets and use tables. But for now, we do a
+ ;; hash table lookup for every character.
+ (if (null ascii-encodes-as-itself)
+ ;; General encode program. Pros; general and correct. Cons;
+ ;; slow, a hash table lookup + mule-unicode conversion is done
+ ;; for every character encoding.
+ (setq encode-program general-encode-program)
+ (multiple-value-setq
+ (encode-program further-char-set)
+ ;; Encode program with ascii-ascii mapping (based on a
+ ;; character's mule character set), and one other mule
+ ;; character set using table-based encoding, other
+ ;; character sets using hash table lookups.
+ ;; fixed-width-non-ascii-completely-coveredp only returns
+ ;; such a mapping if some non-ASCII charset with
+ ;; characters in decode-table is entirely covered by
+ ;; encode-table.
+ (fixed-width-generate-helper decode-table encode-table
+ encode-failure-octet))
+ (unless encode-program
+ ;; If fixed-width-non-ascii-completely-coveredp returned nil,
+ ;; but ASCII still encodes as itself, do one-to-one mapping
+ ;; for ASCII, and a hash table lookup for everything else.
+ (setq encode-program encode-program-with-ascii-optimisation)))
+
+ (setq encode-program
+ (nsublis
+ (list (cons #xBEEF14
+ (logior (lsh encode-failure-octet 8)
+ #x14)))
+ (copy-tree encode-program)))
+ (loop
+ for i from #x80 to #x9f
+ do (unless (= i (aref decode-table i))
+ (setq control-1-encodes-as-itself nil)
+ (return)))
+ (loop
+ for i from #x00 to #xFF
+ initially (setq skip-chars
+ (cond
+ ((and ascii-encodes-as-itself
+ control-1-encodes-as-itself further-char-set)
+ (concat "\x00-\x9f" (charset-skip-chars-string
+ further-char-set)))
+ ((and ascii-encodes-as-itself
+ control-1-encodes-as-itself)
+ "\x00-\x9f")
+ ((null ascii-encodes-as-itself)
+ (skip-chars-quote (apply #'string
+ (append decode-table nil))))
+ (further-char-set
+ (concat (charset-skip-chars-string 'ascii)
+ (charset-skip-chars-string further-char-set)))
+ (t
+ (charset-skip-chars-string 'ascii)))
+ invalid-sequences-skip-chars "")
+ with decoded-ucs = nil
+ with decoded = nil
+ with no-ascii-transparency-skip-chars-list =
+ (unless ascii-encodes-as-itself (append decode-table nil))
+ ;; Can't use #'match-string here, see:
+ ;; http://mid.gmane.org/18829.34118.709782.704574@parhasard.net
+ with skip-chars-test =
+ #'(lambda (skip-chars-string testing)
+ (with-temp-buffer
+ (insert testing)
+ (goto-char (point-min))
+ (skip-chars-forward skip-chars-string)
+ (= (point) (point-max))))
+ do
+ (setq decoded (aref decode-table i)
+ decoded-ucs (char-to-unicode decoded))
+ (cond
+ ((<= invalid-sequence-code-point-start decoded-ucs
+ (+ invalid-sequence-code-point-start #xFF))
+ (setq invalid-sequences-skip-chars
+ (concat (string decoded)
+ invalid-sequences-skip-chars))
+ (assert (not (funcall skip-chars-test skip-chars decoded))
+ "This char should only be skipped with \
+`invalid-sequences-skip-chars', not by `skip-chars'"))
+ ((not (funcall skip-chars-test skip-chars decoded))
+ (if ascii-encodes-as-itself
+ (setq skip-chars (concat skip-chars (string decoded)))
+ (push decoded no-ascii-transparency-skip-chars-list))))
+ finally (unless ascii-encodes-as-itself
+ (setq skip-chars
+ (skip-chars-quote
+ (apply #'string
+ no-ascii-transparency-skip-chars-list)))))
+ (values encode-program skip-chars invalid-sequences-skip-chars)))
+
+(defun fixed-width-create-decode-encode-tables (unicode-map)
+ "Return a list \(DECODE-TABLE ENCODE-TABLE) given UNICODE-MAP.
+UNICODE-MAP should be an alist mapping from integer octet values to
+characters with UCS code points; DECODE-TABLE will be a 256-element
+vector, and ENCODE-TABLE will be a hash table mapping from 256 numbers
+to 256 distinct characters. "
+ (check-argument-type #'listp unicode-map)
+ (let ((decode-table (make-vector 256 nil))
+ (encode-table (make-hash-table :size 256))
+ (private-use-start (encode-char fixed-width-private-use-start 'ucs))
+ (invalid-sequence-code-point-start
+ (eval-when-compile
+ (char-to-unicode
+ (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3))))
+ desired-ucs decode-table-entry)
+
+ (loop for (external internal)
+ in unicode-map
+ do
+ (aset decode-table external internal)
+ (assert (not (eq (encode-char internal 'ucs) -1))
+ nil
+ "Looks like you're creating a fixed-width coding system \
+in a dumped file, \nand you're either not providing a literal unicode map
+or PROPS. Don't do that; fixed-width coding systems rely on sensible
+Unicode mappings being available, which they are at compile time for
+dumped files (but this requires the mentioned literals), but not, for
+most of them, at run time. ")
+
+ (puthash (encode-char internal 'ucs)
+ ;; This is semantically an integer, but Dave Love's design
+ ;; for lookup-integer in CCL means we need to store it as a
+ ;; character.
+ (int-to-char external)
+ encode-table))
+
+ ;; Now, go through the decode table. For octet values above #x7f, if the
+ ;; decode table entry is nil, this means that they have an undefined
+ ;; mapping (= they map to XEmacs characters with keys in
+ ;; unicode-error-default-translation-table); for octet values below or
+ ;; equal to #x7f, it means that they map to ASCII.
+
+ ;; If any entry (whether below or above #x7f) in the decode-table
+ ;; already maps to some character with a key in
+ ;; unicode-error-default-translation-table, it is treated as an
+ ;; undefined octet by `query-coding-region'. That is, it is not
+ ;; necessary for an octet value to be above #x7f for this to happen.
+
+ (dotimes (i 256)
+ (setq decode-table-entry (aref decode-table i))
+ (if decode-table-entry
+ (when (get-char-table
+ decode-table-entry
+ unicode-error-default-translation-table)
+ ;; The caller is explicitly specifying that this octet
+ ;; corresponds to an invalid sequence on disk:
+ (assert (= (get-char-table
+ decode-table-entry
+ unicode-error-default-translation-table) i)
+ "Bad argument for a fixed-width coding system.
+If you're going to designate an octet with value below #x80 as invalid
+for this coding system, make sure to map it to the invalid sequence
+character corresponding to its octet value on disk. "))
+
+ ;; decode-table-entry is nil; either the octet is to be treated as
+ ;; contributing to an error sequence (when (> #x7f i)), or it should
+ ;; be attempted to treat it as ASCII-equivalent.
+ (setq desired-ucs (or (and (< i #x80) i)
+ (+ invalid-sequence-code-point-start i)))
+ (while (gethash desired-ucs encode-table)
+ (assert (not (< i #x80))
+ "UCS code point should not already be in encode-table!"
+ ;; There is one invalid sequence char per octet value;
+ ;; with fixed-width coding systems, it makes no sense
+ ;; for us to be multiply allocating them.
+ (gethash desired-ucs encode-table))
+ (setq desired-ucs (+ private-use-start desired-ucs)
+ private-use-start (+ private-use-start 1)))
+ (puthash desired-ucs (int-to-char i) encode-table)
+ (setq desired-ucs (if (> desired-ucs #xFF)
+ (unicode-to-char desired-ucs)
+ ;; So we get Latin-1 when run at dump time,
+ ;; instead of JIT-allocated characters.
+ (int-to-char desired-ucs)))
+ (aset decode-table i desired-ucs)))
+ (values decode-table encode-table)))
+
+(defun fixed-width-generate-decode-program (decode-table)
+ "Given DECODE-TABLE, generate a CCL program to decode an 8-bit charset.
+DECODE-TABLE must have 256 non-cons entries, and will be regarded as
+describing a map from the octet corresponding to an offset in the
+table to the that entry in the table. "
+ (check-argument-type #'vectorp decode-table)
+ (check-argument-range (length decode-table) #x100 #x100)
+ (let ((decode-program-parts
+ (eval-when-compile
+ (let* ((compiled
+ (append
+ (ccl-compile
+ `(3
+ ((read r0)
+ (loop
+ (write-read-repeat r0 ,(make-vector
+ 256 'sentinel)))))) nil))
+ (first-part compiled)
+ (last-part
+ (member-if-not #'symbolp
+ (member-if-not #'integerp first-part))))
+ ;; Chop off the sentinel sentinel sentinel [..] part.
+ (while compiled
+ (if (symbolp (cadr compiled))
+ (setcdr compiled nil))
+ (setq compiled (cdr compiled)))
+ (list first-part last-part)))))
+ (nconc
+ ;; copy-list needed, because the structure of the literal provided
+ ;; by our eval-when-compile hangs around.
+ (copy-list (first decode-program-parts))
+ (append decode-table nil)
+ (second decode-program-parts))))
+
+(defun fixed-width-choose-category (decode-table)
+ "Given DECODE-TABLE, return an appropriate coding category.
+DECODE-TABLE is a 256-entry vector describing the mapping from octets on
+disk to XEmacs characters for some fixed-width 8-bit coding system. "
+ (check-argument-type #'vectorp decode-table)
+ (check-argument-range (length decode-table) #x100 #x100)
+ (loop
+ named category
+ for i from #x80 to #x9F
+ do (unless (= i (aref decode-table i))
+ (return-from category 'no-conversion))
+ finally return 'iso-8-1))
+
+(defun fixed-width-rework-props-runtime (name props)
+ "Rework PROPS to a form understood by `make-coding-system-internal'.
+
+NAME must be a symbol, describing a fixed-width coding system that is
+about to be created. Much of the implementation of the fixed-width
+coding system is in Lisp, and this function allows us to rework the
+arguments that `make-coding-system-internal' sees accordingly.
+
+If you are calling this function from anywhere but
+`make-coding-system', you're probably doing something wrong."
+ (check-argument-type #'symbolp name)
+ (check-valid-plist props)
+ (let ((encode-failure-octet (or (plist-get props 'encode-failure-octet)
+ (char-to-int ?~)))
+ (unicode-map (plist-get props 'unicode-map))
+ (hash-table-sym (gentemp (format "%s-encode-table" name)))
+ encode-program decode-program decode-table encode-table skip-chars
+ invalid-sequences-skip-chars category)
+
+ (check-argument-range encode-failure-octet 0 #xFF)
+ ;; unicode-map must be a true list, and must be non-nil.
+ (check-argument-type #'true-list-p unicode-map)
+ (check-argument-type #'consp unicode-map)
+
+ ;; Don't pass on our extra data to make-coding-system-internal.
+ (setq props (plist-remprop props 'encode-failure-octet)
+ props (plist-remprop props 'unicode-map))
+
+ (multiple-value-setq
+ (decode-table encode-table)
+ (fixed-width-create-decode-encode-tables unicode-map))
+
+ ;; Register the decode-table.
+ (define-translation-hash-table hash-table-sym encode-table)
+
+ ;; Generate the programs and skip-chars strings.
+ (setq decode-program (fixed-width-generate-decode-program decode-table))
+ (multiple-value-setq
+ (encode-program skip-chars invalid-sequences-skip-chars)
+ (fixed-width-generate-encode-program-and-skip-chars-strings
+ decode-table encode-table encode-failure-octet))
+
+ (setq category (fixed-width-choose-category decode-table))
+
+ (unless (vectorp encode-program)
+ (setq encode-program
+ (apply #'vector
+ (nsublis (list (cons 'encode-table-sym hash-table-sym))
+ (copy-tree encode-program)))))
+ (unless (vectorp decode-program)
+ (setq decode-program
+ (apply #'vector decode-program)))
+
+ (loop for (symbol . value)
+ in `((decode . ,decode-program)
+ (encode . ,encode-program)
+ (from-unicode . ,encode-table)
+ (query-skip-chars . ,skip-chars)
+ (invalid-sequences-skip-chars . ,invalid-sequences-skip-chars)
+ (category . ,category))
+ with default = (gensym)
+ do
+ (unless (eq default (plist-get props symbol default))
+ (error
+ 'invalid-argument
+ "Explicit property not allowed for fixed-width coding systems"
+ symbol))
+ (setq props (nconc (list symbol value) props)))
+ props))
+
+;;;###autoload
+(defun make-coding-system (name type description props)
+ "Register symbol NAME as a coding system.
+
+TYPE describes the conversion method used and should be one of
+
+nil or `undecided'
+ Automatic conversion. XEmacs attempts to detect the coding system
+ used in the file.
+`chain'
+ Chain two or more coding systems together to make a combination coding
+ system.
+`no-conversion'
+ No conversion. Use this for binary files and such. On output,
+ graphic characters that are not in ASCII or Latin-1 will be
+ replaced by a ?. (For a no-conversion-encoded buffer, these
+ characters will only be present if you explicitly insert them.)
+`convert-eol'
+ Convert CRLF sequences or CR to LF.
+`shift-jis'
+ Shift-JIS (a Japanese encoding commonly used in PC operating systems).
+`unicode'
+ Any Unicode encoding (UCS-4, UTF-8, UTF-16, etc.).
+`mswindows-unicode-to-multibyte'
+ (MS Windows only) Converts from Windows Unicode to Windows Multibyte
+ (any code page encoding) upon encoding, and the other way upon decoding.
+`mswindows-multibyte'
+ Converts to or from Windows Multibyte (any code page encoding).
+ This is resolved into a chain of `mswindows-unicode' and
+ `mswindows-unicode-to-multibyte'.
+`iso2022'
+ Any ISO2022-compliant encoding. Among other things, this includes
+ JIS (the Japanese encoding commonly used for e-mail), EUC (the
+ standard Unix encoding for Japanese and other languages), and
+ Compound Text (the encoding used in X11). You can specify more
+ specific information about the conversion with the PROPS argument.
+`fixed-width'
+ A fixed-width eight bit encoding that is not necessarily compliant with
+ ISO 2022. This coding system assumes Unicode equivalency, that is,
+ that if two given XEmacs characters have the same Unicode mapping, they
+ will always map to the same octet on disk in the context of this coding
+ system
+`big5'
+ Big5 (the encoding commonly used for Mandarin Chinese in Taiwan).
+`ccl'
+ The conversion is performed using a user-written pseudo-code
+ program. CCL (Code Conversion Language) is the name of this
+ pseudo-code.
+`gzip'
+ GZIP compression format.
+`internal'
+ Write out or read in the raw contents of the memory representing
+ the buffer's text. This is primarily useful for debugging
+ purposes, and is only enabled when XEmacs has been compiled with
+ DEBUG_XEMACS defined (via the --debug configure option).
+ WARNING: Reading in a file using `internal' conversion can result
+ in an internal inconsistency in the memory representing a
+ buffer's text, which will produce unpredictable results and may
+ cause XEmacs to crash. Under normal circumstances you should
+ never use `internal' conversion.
+
+DESCRIPTION is a short English phrase describing the coding system,
+suitable for use as a menu item. (See also the `documentation' property
+below.)
+
+PROPS is a property list, describing the specific nature of the
+character set. Recognized properties are:
+
+`mnemonic'
+ String to be displayed in the modeline when this coding system is
+ active.
+
+`documentation'
+ Detailed documentation on the coding system.
+
+`aliases'
+ A list of aliases for the coding system. See
+ `define-coding-system-alias'.
+
+`eol-type'
+ End-of-line conversion to be used. It should be one of
+
+ nil
+ Automatically detect the end-of-line type (LF, CRLF,
+ or CR). Also generate subsidiary coding systems named
+ `NAME-unix', `NAME-dos', and `NAME-mac', that are
+ identical to this coding system but have an EOL-TYPE
+ value of `lf', `crlf', and `cr', respectively.
+ `lf'
+ The end of a line is marked externally using ASCII LF.
+ Since this is also the way that XEmacs represents an
+ end-of-line internally, specifying this option results
+ in no end-of-line conversion. This is the standard
+ format for Unix text files.
+ `crlf'
+ The end of a line is marked externally using ASCII
+ CRLF. This is the standard format for MS-DOS text
+ files.
+ `cr'
+ The end of a line is marked externally using ASCII CR.
+ This is the standard format for Macintosh text files.
+ t
+ Automatically detect the end-of-line type but do not
+ generate subsidiary coding systems. (This value is
+ converted to nil when stored internally, and
+ `coding-system-property' will return nil.)
+
+`post-read-conversion'
+ The value is a function to call after some text is inserted and
+ decoded by the coding system itself and before any functions in
+ `after-change-functions' are called. (#### Not actually true in
+ XEmacs. `after-change-functions' will be called twice if
+ `post-read-conversion' changes something.) The argument of this
+ function is the same as for a function in
+ `after-insert-file-functions', i.e. LENGTH of the text inserted,
+ with point at the head of the text to be decoded.
+
+`pre-write-conversion'
+ The value is a function to call after all functions in
+ `write-region-annotate-functions' and `buffer-file-format' are
+ called, and before the text is encoded by the coding system itself.
+ The arguments to this function are the same as those of a function
+ in `write-region-annotate-functions', i.e. FROM and TO, specifying
+ a region of text.
+
+The following properties are used by `default-query-coding-region',
+the default implementation of `query-coding-region'. This
+implementation and these properties are not used by the Unicode coding
+systems, nor by fixed-width coding systems.
+
+`safe-chars'
+ The value is a char table. If a character has non-nil value in it,
+ the character is safely supported by the coding system.
+ Under XEmacs, for the moment, this is used in addition to the
+ `safe-charsets' property. It does not override it as it does
+ under GNU Emacs. #### We need to consider if we should keep this
+ behaviour.
+
+`safe-charsets'
+ The value is a list of charsets safely supported by the coding
+ system. For coding systems based on ISO 2022, XEmacs may try to
+ encode characters outside these character sets, but outside of
+ East Asia and East Asian coding systems, it is unlikely that
+ consumers of the data will understand XEmacs' encoding.
+ The value t means that all XEmacs character sets handles are supported.
+
+The following properties are allowed for FSF compatibility but currently
+ignored:
+
+`translation-table-for-decode'
+ The value is a translation table to be applied on decoding. See
+ the function `make-translation-table' for the format of translation
+ table. This is not applicable to CCL-based coding systems.
+
+`translation-table-for-encode'
+ The value is a translation table to be applied on encoding. This is
+ not applicable to CCL-based coding systems.
+
+`mime-charset'
+ The value is a symbol of which name is `MIME-charset' parameter of
+ the coding system.
+
+`valid-codes' (meaningful only for a coding system based on CCL)
+ The value is a list to indicate valid byte ranges of the encoded
+ file. Each element of the list is an integer or a cons of integer.
+ In the former case, the integer value is a valid byte code. In the
+ latter case, the integers specifies the range of valid byte codes.
+
+The following additional property is recognized if TYPE is `convert-eol':
+
+`subtype'
+ One of `lf', `crlf', `cr' or nil (for autodetection). When decoding,
+ the corresponding sequence will be converted to LF. When encoding,
+ the opposite happens. This coding system converts characters to
+ characters.
+
+
+
+The following additional properties are recognized if TYPE is `iso2022':
+
+`charset-g0'
+`charset-g1'
+`charset-g2'
+`charset-g3'
+ The character set initially designated to the G0 - G3 registers.
+ The value should be one of
+
+ -- A charset object (designate that character set)
+ -- nil (do not ever use this register)
+ -- t (no character set is initially designated to
+ the register, but may be later on; this automatically
+ sets the corresponding `force-g*-on-output' property)
+
+`force-g0-on-output'
+`force-g1-on-output'
+`force-g2-on-output'
+`force-g2-on-output'
+ If non-nil, send an explicit designation sequence on output before
+ using the specified register.
+
+`short'
+ If non-nil, use the short forms \"ESC $ @\", \"ESC $ A\", and
+ \"ESC $ B\" on output in place of the full designation sequences
+ \"ESC $ ( @\", \"ESC $ ( A\", and \"ESC $ ( B\".
+
+`no-ascii-eol'
+ If non-nil, don't designate ASCII to G0 at each end of line on output.
+ Setting this to non-nil also suppresses other state-resetting that
+ normally happens at the end of a line.
+
+`no-ascii-cntl'
+ If non-nil, don't designate ASCII to G0 before control chars on output.
+
+`seven'
+ If non-nil, use 7-bit environment on output. Otherwise, use 8-bit
+ environment.
+
+`lock-shift'
+ If non-nil, use locking-shift (SO/SI) instead of single-shift
+ or designation by escape sequence.
+
+`no-iso6429'
+ If non-nil, don't use ISO6429's direction specification.
+
+`escape-quoted'
+ If non-nil, literal control characters that are the same as
+ the beginning of a recognized ISO2022 or ISO6429 escape sequence
+ (in particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E),
+ SS3 (0x8F), and CSI (0x9B)) are \"quoted\" with an escape character
+ so that they can be properly distinguished from an escape sequence.
+ (Note that doing this results in a non-portable encoding.) This
+ encoding flag is used for byte-compiled files. Note that ESC
+ is a good choice for a quoting character because there are no
+ escape sequences whose second byte is a character from the Control-0
+ or Control-1 character sets; this is explicitly disallowed by the
+ ISO2022 standard.
+
+`input-charset-conversion'
+ A list of conversion specifications, specifying conversion of
+ characters in one charset to another when decoding is performed.
+ Each specification is a list of two elements: the source charset,
+ and the destination charset.
+
+`output-charset-conversion'
+ A list of conversion specifications, specifying conversion of
+ characters in one charset to another when encoding is performed.
+ The form of each specification is the same as for
+ `input-charset-conversion'.
+
+The following additional properties are recognized if TYPE is
+`fixed-width':
+
+`unicode-map'
+ Required. A plist describing a map from octets in the coding system
+ NAME (as integers) to XEmacs characters. Those XEmacs characters will
+ be used explicitly on decoding, but for encoding (most relevantly, on
+ writing to disk) XEmacs characters that map to the same Unicode code
+ point will be unified. This means that the ISO-8859-? characters that
+ map to the same Unicode code point will not be distinct when written to
+ disk, which is normally what is intended; it also means that East Asian
+ Han characters from different XEmacs character sets will not be
+ distinct when written to disk, which is less often what is intended.
+
+ Any octets not mapped, and with values above #x7f, will be decoded into
+ XEmacs characters that reflect that their values are undefined. These
+ characters will be displayed in a language-environment-specific
+ way. See `unicode-error-default-translation-table' and the
+ `invalid-sequence-coding-system' argument to `set-language-info'.
+
+ These characters will normally be treated as invalid when checking
+ whether text can be encoded with `query-coding-region'--see the
+ IGNORE-INVALID-SEQUENCESP argument to that function to avoid this. It
+ is possible to specify that octets with values less than #x80 (or
+ indeed greater than it) be treated in this way, by specifying
+ explicitly that they correspond to the character mapping to that octet
+ in `unicode-error-default-translation-table'. Far fewer coding systems
+ override the ASCII mapping, though, so this is not the default.
+
+`encode-failure-octet'
+ An integer between 0 and 255 to write in place of XEmacs characters
+ that cannot be encoded, defaulting to the code for tilde `~'.
+
+The following additional properties are recognized (and required)
+if TYPE is `ccl':
+
+`decode'
+ CCL program used for decoding (converting to internal format).
+
+`encode'
+ CCL program used for encoding (converting to external format).
+
+
+The following additional properties are recognized if TYPE is `chain':
+
+`chain'
+ List of coding systems to be chained together, in decoding order.
+
+`canonicalize-after-coding'
+ Coding system to be returned by the detector routines in place of
+ this coding system.
+
+
+
+The following additional properties are recognized if TYPE is `unicode':
+
+`unicode-type'
+ One of `utf-16', `utf-8', `ucs-4', or `utf-7' (the latter is not
+ yet implemented). `utf-16' is the basic two-byte encoding;
+ `ucs-4' is the four-byte encoding; `utf-8' is an ASCII-compatible
+ variable-width 8-bit encoding; `utf-7' is a 7-bit encoding using
+ only characters that will safely pass through all mail gateways.
+ [[ This should be \"transformation format\". There should also be
+ `ucs-2' (or `bmp' -- no surrogates) and `utf-32' (range checked). ]]
+
+`little-endian'
+ If non-nil, `utf-16' and `ucs-4' will write out the groups of two
+ or four bytes little-endian instead of big-endian. This is required,
+ for example, under Windows.
+
+`need-bom'
+ If non-nil, a byte order mark (BOM, or Unicode FFFE) should be
+ written out at the beginning of the data. This serves both to
+ identify the endianness of the following data and to mark the
+ data as Unicode (at least, this is how Windows uses it).
+ [[ The correct term is \"signature\", since this technique may also
+ be used with UTF-8. That is the term used in the standard. ]]
+
+
+The following additional properties are recognized if TYPE is
+`mswindows-multibyte':
+
+`code-page'
+ Either a number (specifying a particular code page) or one of the
+ symbols `ansi', `oem', `mac', or `ebcdic', specifying the ANSI,
+ OEM, Macintosh, or EBCDIC code page associated with a particular
+ locale (given by the `locale' property). NOTE: EBCDIC code pages
+ only exist in Windows 2000 and later.
+
+`locale'
+ If `code-page' is a symbol, this specifies the locale whose code
+ page of the corresponding type should be used. This should be
+ one of the following: A cons of two strings, (LANGUAGE
+ . SUBLANGUAGE) (see `mswindows-set-current-locale'); a string (a
+ language; SUBLANG_DEFAULT, i.e. the default sublanguage, is
+ used); or one of the symbols `current', `user-default', or
+ `system-default', corresponding to the values of
+ `mswindows-current-locale', `mswindows-user-default-locale', or
+ `mswindows-system-default-locale', respectively.
+
+
+The following additional properties are recognized if TYPE is `undecided':
+\[[ Doesn't GNU use \"detect-*\" for the following two? ]]
+
+`do-eol'
+ Do EOL detection.
+
+`do-coding'
+ Do encoding detection.
+
+`coding-system'
+ If encoding detection is not done, use the specified coding system
+ to do decoding. This is used internally when implementing coding
+ systems with an EOL type that specifies autodetection (the default),
+ so that the detector routines return the proper subsidiary.
+
+
+
+The following additional property is recognized if TYPE is `gzip':
+
+`level'
+ Compression level: 0 through 9, or `default' (currently 6)."
+ (when (eq 'fixed-width type)
+ (setq props (fixed-width-rework-props-runtime name props)))
+ (make-coding-system-internal name type description props))
+
+(define-compiler-macro make-coding-system (&whole form name type
+ &optional description props)
+ (if (equal '(quote fixed-width) type)
+ (if (memq (car-safe props) '(quote eval-when-compile))
+ (let* ((props (if (eq 'eval-when-compile (car props))
+ (eval (cadr props))
+ (cadr props)))
+ (encode-failure-octet
+ (or (plist-get props 'encode-failure-octet) (char-to-int ?~)))
+ (unicode-map (plist-get props 'unicode-map))
+ (default-plist-entry (gensym))
+ encode-program decode-program
+ decode-table encode-table
+ skip-chars invalid-sequences-skip-chars category)
+
+ (check-argument-range encode-failure-octet 0 #xFF)
+ ;; unicode-map must be a true list, and must be non-nil.
+ (check-argument-type #'true-list-p unicode-map)
+ (check-argument-type #'consp unicode-map)
+
+ ;; Don't pass on our extra data to make-coding-system-internal.
+ (setq props (plist-remprop props 'encode-failure-octet)
+ props (plist-remprop props 'unicode-map))
+
+ (multiple-value-setq
+ (decode-table encode-table)
+ (fixed-width-create-decode-encode-tables unicode-map))
+
+ ;; Generate the decode and encode programs, and the skip-chars
+ ;; arguments.
+ (setq decode-program
+ (fixed-width-generate-decode-program decode-table)
+ category (fixed-width-choose-category decode-table))
+
+ (multiple-value-setq
+ (encode-program skip-chars invalid-sequences-skip-chars)
+ (fixed-width-generate-encode-program-and-skip-chars-strings
+ decode-table encode-table encode-failure-octet))
+
+ (unless (vectorp decode-program)
+ (setq decode-program
+ (apply #'vector decode-program)))
+
+ (unless (eq default-plist-entry (plist-get props 'encode
+ default-plist-entry))
+ (error
+ 'invalid-argument
+ "Explicit property not allowed for fixed-width coding system"
+ 'encode))
+ (loop for (symbol . value)
+ in `((decode . ,decode-program)
+ (from-unicode . ,encode-table)
+ (query-skip-chars . ,skip-chars)
+ (invalid-sequences-skip-chars .
+ ,invalid-sequences-skip-chars)
+ (category . ,category))
+ do
+ (unless (eq default-plist-entry (plist-get props symbol
+ default-plist-entry))
+ (error
+ 'invalid-argument
+ "Explicit property not allowed for \
+fixed-width coding systems"
+ symbol))
+ (setq props (nconc (list symbol value) props)))
+ `(let ((encode-table-sym (gentemp (format "%S-encode-table" ,name)))
+ (encode-table ,encode-table))
+ (define-translation-hash-table encode-table-sym encode-table)
+ (make-coding-system-internal
+ ,name ,type ,description
+ (nconc (list 'encode
+ (apply #'vector
+ (nsublis
+ (list (cons 'encode-table-sym
+ encode-table-sym))
+ ',encode-program)))
+ ',props))))
+ ;; The form does not use literals; call make-coding-system at
+ ;; run time.
+ form)
+ (if (byte-compile-constp type)
+ ;; This is not a fixed-width call; compile it to a form that 21.4
+ ;; can also understand.
+ `(funcall (or (and (fboundp 'make-coding-system-internal)
+ 'make-coding-system-internal)
+ 'make-coding-system)
+ ,@(cdr form))
+ ;; TYPE is not literal; work things out at runtime.
+ form)))
+
diff -r 9c97a5a8c241 lisp/mule/mule-coding.el
--- a/lisp/mule/mule-coding.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/mule-coding.el Sat Apr 11 14:35:00 2009 +0100
@@ -27,9 +27,6 @@
;;; Commentary:
;;; split off of mule.el and mostly moved to coding.el
-
-;; Needed for make-8-bit-coding-system.
-(eval-when-compile (require 'ccl))
;;; Code:
@@ -222,730 +219,16 @@
(put symbol 'translation-hash-table-id id)
id))
-(defvar make-8-bit-private-use-start (decode-char 'ucs #xE000)
- "Start of a 256 code private use area for make-8-bit-coding-system.
-
-This is used to ensure that distinct octets on disk for a given coding
-system map to distinct XEmacs characters, preventing a spurious changes when
-a file is read, not changed, and then written. ")
-
-(defun make-8-bit-generate-helper (decode-table encode-table
- encode-failure-octet)
- "Helper function, `make-8-bit-generate-encode-program-and-skip-chars-strings',
-which see.
-
-Deals with the case where ASCII and another character set can both be
-encoded unambiguously and completely into the coding-system; if this is so,
-returns a list comprised of such a ccl-program and the character set in
-question. If not, it returns a list with both entries nil."
- (let ((tentative-encode-program-parts
- (eval-when-compile
- (let* ((vec-len 128)
- (compiled
- (append
- (ccl-compile
- `(1
- (loop
- (read-multibyte-character r0 r1)
- (if (r0 == ,(charset-id 'ascii))
- (write r1)
- ((if (r0 == #xABAB)
- ;; #xBFFE is a sentinel in the compiled
- ;; program.
- ((r0 = r1 & #x7F)
- (write r0 ,(make-vector vec-len #xBFFE)))
- ((mule-to-unicode r0 r1)
- (if (r0 == #xFFFD)
- (write #xBEEF)
- ((lookup-integer encode-table-sym r0 r3)
- (if r7
- (write-multibyte-character r0 r3)
- (write #xBEEF))))))))
- (repeat)))) nil))
- (first-part compiled)
- (last-part
- (member-if-not (lambda (entr) (eq #xBFFE entr))
- (member-if
- (lambda (entr) (eq #xBFFE entr))
- first-part))))
- (while compiled
- (when (eq #xBFFE (cadr compiled))
- (assert (= vec-len (search '(#xBFFE) (cdr compiled)
- :test #'/=)) nil
- "Strange ccl vector length")
- (setcdr compiled nil))
- (setq compiled (cdr compiled)))
- ;; Is the generated code as we expect it to be?
- (assert (and (memq #xABAB first-part)
- (memq #xBEEF14 last-part))
- nil
- "This code assumes that the constant #xBEEF is #xBEEF14 in \
-compiled CCL code,\nand that the constant #xABAB is #xABAB. If that is
-not the case, and it appears not to be--that's why you're getting this
-message--it will not work. ")
- (list first-part last-part vec-len))))
- (charset-lower -1)
- (charset-upper -1)
- worth-trying known-charsets encode-program
- other-charset-vector ucs)
-
- (loop for char across decode-table
- do (pushnew (char-charset char) known-charsets))
- (setq known-charsets (delq 'ascii known-charsets))
-
- (loop for known-charset in known-charsets
- do
- ;; This is not possible for two dimensional charsets.
- (when (eq 1 (charset-dimension known-charset))
- (if (eq 'control-1 known-charset)
- (setq charset-lower 0
- charset-upper 31)
- ;; There should be a nicer way to get the limits here.
- (condition-case args-out-of-range
- (make-char known-charset #x100)
- (args-out-of-range
- (setq charset-lower (third args-out-of-range)
- charset-upper (fourth args-out-of-range)))))
- (loop
- for i from charset-lower to charset-upper
- always (and (setq ucs
- (encode-char (make-char known-charset i) 'ucs))
- (gethash ucs encode-table))
- finally (setq worth-trying known-charset))
-
- ;; Only trying this for one charset at a time, the first find.
- (when worth-trying (return))
-
- ;; Okay, this charset is not worth trying, Try the next.
- (setq charset-lower -1
- charset-upper -1
- worth-trying nil)))
-
- (when worth-trying
- (setq other-charset-vector
- (make-vector (third tentative-encode-program-parts)
- encode-failure-octet))
- (loop for i from charset-lower to charset-upper
- do (aset other-charset-vector i
- (gethash (encode-char (make-char worth-trying i)
- 'ucs) encode-table)))
- (setq encode-program
- (nsublis
- (list (cons #xABAB (charset-id worth-trying)))
- (nconc
- (copy-list (first
- tentative-encode-program-parts))
- (append other-charset-vector nil)
- (copy-tree (second
- tentative-encode-program-parts))))))
- (values encode-program worth-trying)))
-
-(defun make-8-bit-generate-encode-program-and-skip-chars-strings
- (decode-table encode-table encode-failure-octet)
- "Generate a CCL program to encode a 8-bit fixed-width charset.
-
-DECODE-TABLE must have 256 non-cons entries, and will be regarded as
-describing a map from the octet corresponding to an offset in the
-table to the that entry in the table. ENCODE-TABLE is a hash table
-map from unicode values to characters in the range [0,255].
-ENCODE-FAILURE-OCTET describes an integer between 0 and 255
-\(inclusive) to write in the event that a character cannot be encoded. "
- (check-argument-type #'vectorp decode-table)
- (check-argument-range (length decode-table) #x100 #x100)
- (check-argument-type #'hash-table-p encode-table)
- (check-argument-type #'integerp encode-failure-octet)
- (check-argument-range encode-failure-octet #x00 #xFF)
- (let ((encode-program nil)
- (general-encode-program
- (eval-when-compile
- (let ((prog (append
- (ccl-compile
- `(1
- (loop
- (read-multibyte-character r0 r1)
- (mule-to-unicode r0 r1)
- (if (r0 == #xFFFD)
- (write #xBEEF)
- ((lookup-integer encode-table-sym r0 r3)
- (if r7
- (write-multibyte-character r0 r3)
- (write #xBEEF))))
- (repeat)))) nil)))
- (assert (memq #xBEEF14 prog)
- nil
- "This code assumes that the constant #xBEEF is #xBEEF14 \
-in compiled CCL code.\nIf that is not the case, and it appears not to
-be--that's why you're getting this message--it will not work. ")
- prog)))
- (encode-program-with-ascii-optimisation
- (eval-when-compile
- (let ((prog (append
- (ccl-compile
- `(1
- (loop
- (read-multibyte-character r0 r1)
- (if (r0 == ,(charset-id 'ascii))
- (write r1)
- ((mule-to-unicode r0 r1)
- (if (r0 == #xFFFD)
- (write #xBEEF)
- ((lookup-integer encode-table-sym r0 r3)
- (if r7
- (write-multibyte-character r0 r3)
- (write #xBEEF))))))
- (repeat)))) nil)))
- (assert (memq #xBEEF14 prog)
- nil
- "This code assumes that the constant #xBEEF is #xBEEF14 \
-in compiled CCL code.\nIf that is not the case, and it appears not to
-be--that's why you're getting this message--it will not work. ")
- prog)))
- (ascii-encodes-as-itself nil)
- (control-1-encodes-as-itself t)
- (invalid-sequence-code-point-start
- (eval-when-compile
- (char-to-unicode
- (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3))))
- further-char-set skip-chars invalid-sequences-skip-chars)
-
- ;; Is this coding system ASCII-compatible? If so, we can avoid the hash
- ;; table lookup for those characters.
- (loop
- for i from #x00 to #x7f
- always (eq (int-to-char i) (gethash i encode-table))
- finally (setq ascii-encodes-as-itself t))
-
- ;; Note that this logic handles EBCDIC badly. For example, CP037,
- ;; MIME name ebcdic-na, has the entire repertoire of ASCII and
- ;; Latin 1, and thus a more optimal ccl encode program would check
- ;; for those character sets and use tables. But for now, we do a
- ;; hash table lookup for every character.
- (if (null ascii-encodes-as-itself)
- ;; General encode program. Pros; general and correct. Cons;
- ;; slow, a hash table lookup + mule-unicode conversion is done
- ;; for every character encoding.
- (setq encode-program general-encode-program)
- (multiple-value-setq
- (encode-program further-char-set)
- ;; Encode program with ascii-ascii mapping (based on a
- ;; character's mule character set), and one other mule
- ;; character set using table-based encoding, other
- ;; character sets using hash table lookups.
- ;; make-8-bit-non-ascii-completely-coveredp only returns
- ;; such a mapping if some non-ASCII charset with
- ;; characters in decode-table is entirely covered by
- ;; encode-table.
- (make-8-bit-generate-helper decode-table encode-table
- encode-failure-octet))
- (unless encode-program
- ;; If make-8-bit-non-ascii-completely-coveredp returned nil,
- ;; but ASCII still encodes as itself, do one-to-one mapping
- ;; for ASCII, and a hash table lookup for everything else.
- (setq encode-program encode-program-with-ascii-optimisation)))
-
- (setq encode-program
- (nsublis
- (list (cons #xBEEF14
- (logior (lsh encode-failure-octet 8)
- #x14)))
- (copy-tree encode-program)))
- (loop
- for i from #x80 to #x9f
- do (unless (= i (aref decode-table i))
- (setq control-1-encodes-as-itself nil)
- (return)))
- (loop
- for i from #x00 to #xFF
- initially (setq skip-chars
- (cond
- ((and ascii-encodes-as-itself
- control-1-encodes-as-itself further-char-set)
- (concat "\x00-\x9f" (charset-skip-chars-string
- further-char-set)))
- ((and ascii-encodes-as-itself
- control-1-encodes-as-itself)
- "\x00-\x9f")
- ((null ascii-encodes-as-itself)
- (skip-chars-quote (apply #'string
- (append decode-table nil))))
- (further-char-set
- (concat (charset-skip-chars-string 'ascii)
- (charset-skip-chars-string further-char-set)))
- (t
- (charset-skip-chars-string 'ascii)))
- invalid-sequences-skip-chars "")
- with decoded-ucs = nil
- with decoded = nil
- with no-ascii-transparency-skip-chars-list =
- (unless ascii-encodes-as-itself (append decode-table nil))
- ;; Can't use #'match-string here, see:
- ;; http://mid.gmane.org/18829.34118.709782.704574@parhasard.net
- with skip-chars-test =
- #'(lambda (skip-chars-string testing)
- (with-temp-buffer
- (insert testing)
- (goto-char (point-min))
- (skip-chars-forward skip-chars-string)
- (= (point) (point-max))))
- do
- (setq decoded (aref decode-table i)
- decoded-ucs (char-to-unicode decoded))
- (cond
- ((<= invalid-sequence-code-point-start decoded-ucs
- (+ invalid-sequence-code-point-start #xFF))
- (setq invalid-sequences-skip-chars
- (concat (string decoded)
- invalid-sequences-skip-chars))
- (assert (not (funcall skip-chars-test skip-chars decoded))
- "This char should only be skipped with \
-`invalid-sequences-skip-chars', not by `skip-chars'"))
- ((not (funcall skip-chars-test skip-chars decoded))
- (if ascii-encodes-as-itself
- (setq skip-chars (concat skip-chars (string decoded)))
- (push decoded no-ascii-transparency-skip-chars-list))))
- finally (unless ascii-encodes-as-itself
- (setq skip-chars
- (skip-chars-quote
- (apply #'string
- no-ascii-transparency-skip-chars-list)))))
- (values encode-program skip-chars invalid-sequences-skip-chars)))
-
-(defun make-8-bit-create-decode-encode-tables (unicode-map)
- "Return a list \(DECODE-TABLE ENCODE-TABLE) given UNICODE-MAP.
-UNICODE-MAP should be an alist mapping from integer octet values to
-characters with UCS code points; DECODE-TABLE will be a 256-element
-vector, and ENCODE-TABLE will be a hash table mapping from 256 numbers
-to 256 distinct characters. "
- (check-argument-type #'listp unicode-map)
- (let ((decode-table (make-vector 256 nil))
- (encode-table (make-hash-table :size 256))
- (private-use-start (encode-char make-8-bit-private-use-start 'ucs))
- (invalid-sequence-code-point-start
- (eval-when-compile
- (char-to-unicode
- (aref (decode-coding-string "\xd8\x00\x00\x00" 'utf-16-be) 3))))
- desired-ucs decode-table-entry)
-
- (loop for (external internal)
- in unicode-map
- do
- (aset decode-table external internal)
- (assert (not (eq (encode-char internal 'ucs) -1))
- nil
- "Looks like you're calling make-8-bit-coding-system in a \
-dumped file, \nand you're either not providing a literal UNICODE-MAP
-or PROPS. Don't do that; make-8-bit-coding-system relies on sensible
-Unicode mappings being available, which they are at compile time for
-dumped files (but this requires the mentioned literals), but not, for
-most of them, at run time. ")
-
- (puthash (encode-char internal 'ucs)
- ;; This is semantically an integer, but Dave Love's design
- ;; for lookup-integer in CCL means we need to store it as a
- ;; character.
- (int-to-char external)
- encode-table))
-
- ;; Now, go through the decode table. For octet values above #x7f, if the
- ;; decode table entry is nil, this means that they have an undefined
- ;; mapping (= they map to XEmacs characters with keys in
- ;; unicode-error-default-translation-table); for octet values below or
- ;; equal to #x7f, it means that they map to ASCII.
-
- ;; If any entry (whether below or above #x7f) in the decode-table
- ;; already maps to some character with a key in
- ;; unicode-error-default-translation-table, it is treated as an
- ;; undefined octet by `query-coding-region'. That is, it is not
- ;; necessary for an octet value to be above #x7f for this to happen.
-
- (dotimes (i 256)
- (setq decode-table-entry (aref decode-table i))
- (if decode-table-entry
- (when (get-char-table
- decode-table-entry
- unicode-error-default-translation-table)
- ;; The caller is explicitly specifying that this octet
- ;; corresponds to an invalid sequence on disk:
- (assert (= (get-char-table
- decode-table-entry
- unicode-error-default-translation-table) i)
- "Bad argument to `make-8-bit-coding-system'.
-If you're going to designate an octet with value below #x80 as invalid
-for this coding system, make sure to map it to the invalid sequence
-character corresponding to its octet value on disk. "))
-
- ;; decode-table-entry is nil; either the octet is to be treated as
- ;; contributing to an error sequence (when (> #x7f i)), or it should
- ;; be attempted to treat it as ASCII-equivalent.
- (setq desired-ucs (or (and (< i #x80) i)
- (+ invalid-sequence-code-point-start i)))
- (while (gethash desired-ucs encode-table)
- (assert (not (< i #x80))
- "UCS code point should not already be in encode-table!"
- ;; There is one invalid sequence char per octet value;
- ;; with eight-bit-fixed coding systems, it makes no sense
- ;; for us to be multiply allocating them.
- (gethash desired-ucs encode-table))
- (setq desired-ucs (+ private-use-start desired-ucs)
- private-use-start (+ private-use-start 1)))
- (puthash desired-ucs (int-to-char i) encode-table)
- (setq desired-ucs (if (> desired-ucs #xFF)
- (unicode-to-char desired-ucs)
- ;; So we get Latin-1 when run at dump time,
- ;; instead of JIT-allocated characters.
- (int-to-char desired-ucs)))
- (aset decode-table i desired-ucs)))
- (values decode-table encode-table)))
-
-(defun make-8-bit-generate-decode-program (decode-table)
- "Given DECODE-TABLE, generate a CCL program to decode an 8-bit charset.
-DECODE-TABLE must have 256 non-cons entries, and will be regarded as
-describing a map from the octet corresponding to an offset in the
-table to the that entry in the table. "
- (check-argument-type #'vectorp decode-table)
- (check-argument-range (length decode-table) #x100 #x100)
- (let ((decode-program-parts
- (eval-when-compile
- (let* ((compiled
- (append
- (ccl-compile
- `(3
- ((read r0)
- (loop
- (write-read-repeat r0 ,(make-vector
- 256 'sentinel)))))) nil))
- (first-part compiled)
- (last-part
- (member-if-not #'symbolp
- (member-if-not #'integerp first-part))))
- ;; Chop off the sentinel sentinel sentinel [..] part.
- (while compiled
- (if (symbolp (cadr compiled))
- (setcdr compiled nil))
- (setq compiled (cdr compiled)))
- (list first-part last-part)))))
- (nconc
- ;; copy-list needed, because the structure of the literal provided
- ;; by our eval-when-compile hangs around.
- (copy-list (first decode-program-parts))
- (append decode-table nil)
- (second decode-program-parts))))
-
-(defun make-8-bit-choose-category (decode-table)
- "Given DECODE-TABLE, return an appropriate coding category.
-DECODE-TABLE is a 256-entry vector describing the mapping from octets on
-disk to XEmacs characters for some fixed-width 8-bit coding system. "
- (check-argument-type #'vectorp decode-table)
- (check-argument-range (length decode-table) #x100 #x100)
- (loop
- named category
- for i from #x80 to #x9F
- do (unless (= i (aref decode-table i))
- (return-from category 'no-conversion))
- finally return 'iso-8-1))
-
-(defun 8-bit-fixed-query-coding-region (begin end coding-system &optional
- buffer ignore-invalid-sequencesp
- errorp highlightp)
- "The `query-coding-region' implementation for 8-bit-fixed coding systems.
-
-Uses the `8-bit-fixed-query-from-unicode' and `8-bit-fixed-query-skip-chars'
-coding system properties. The former is a hash table mapping from valid
-Unicode code points to on-disk octets in the coding system; the latter a set
-of characters as used by `skip-chars-forward'. Both of these properties are
-generated automatically by `make-8-bit-coding-system'.
-
-See that the documentation of `query-coding-region'; see also
-`make-8-bit-coding-system'. "
- (check-argument-type #'coding-system-p
- (setq coding-system (find-coding-system coding-system)))
- (check-argument-type #'integer-or-marker-p begin)
- (check-argument-type #'integer-or-marker-p end)
- (let ((from-unicode
- (or (coding-system-get coding-system '8-bit-fixed-query-from-unicode)
- (coding-system-get (coding-system-base coding-system)
- '8-bit-fixed-query-from-unicode)))
- (skip-chars-arg
- (or (coding-system-get coding-system '8-bit-fixed-query-skip-chars)
- (coding-system-get (coding-system-base coding-system)
- '8-bit-fixed-query-skip-chars)))
- (invalid-sequences-skip-chars
- (or (coding-system-get coding-system
- '8-bit-fixed-invalid-sequences-skip-chars)
- (coding-system-get (coding-system-base coding-system)
- '8-bit-fixed-invalid-sequences-skip-chars)))
- (ranges (make-range-table))
- (case-fold-search nil)
- char-after fail-range-start fail-range-end extent
- failed invalid-sequences-looking-at failed-reason
- previous-failed-reason)
- (check-type from-unicode hash-table)
- (check-type skip-chars-arg string)
- (check-type invalid-sequences-skip-chars string)
- (setq invalid-sequences-looking-at
- (if (equal "" invalid-sequences-skip-chars)
- ;; Regexp that will never match.
- #r".\{0,0\}"
- (concat "[" invalid-sequences-skip-chars "]")))
- (when ignore-invalid-sequencesp
- (setq skip-chars-arg
- (concat skip-chars-arg invalid-sequences-skip-chars)))
- (save-excursion
- (when highlightp
- (query-coding-clear-highlights begin end buffer))
- (goto-char begin buffer)
- (skip-chars-forward skip-chars-arg end buffer)
- (while (< (point buffer) end)
- (setq char-after (char-after (point buffer) buffer)
- fail-range-start (point buffer))
- (while (and
- (< (point buffer) end)
- (or (and
- (not (gethash (encode-char char-after 'ucs) from-unicode))
- (setq failed-reason 'unencodable))
- (and (not ignore-invalid-sequencesp)
- (looking-at invalid-sequences-looking-at buffer)
- (setq failed-reason 'invalid-sequence)))
- (or (null previous-failed-reason)
- (eq previous-failed-reason failed-reason)))
- (forward-char 1 buffer)
- (setq char-after (char-after (point buffer) buffer)
- failed t
- previous-failed-reason failed-reason))
- (if (= fail-range-start (point buffer))
- ;; The character can actually be encoded by the coding
- ;; system; check the characters past it.
- (forward-char 1 buffer)
- ;; The character actually failed.
- (when errorp
- (error 'text-conversion-error
- (format "Cannot encode %s using coding system"
- (buffer-substring fail-range-start (point buffer)
- buffer))
- (coding-system-name coding-system)))
- (assert (not (null previous-failed-reason)) t
- "previous-failed-reason should always be non-nil here")
- (put-range-table fail-range-start
- ;; If char-after is non-nil, we're not at
- ;; the end of the buffer.
- (setq fail-range-end (if char-after
- (point buffer)
- (point-max buffer)))
- previous-failed-reason ranges)
- (setq previous-failed-reason nil)
- (when highlightp
- (setq extent (make-extent fail-range-start fail-range-end buffer))
- (set-extent-priority extent (+ mouse-highlight-priority 2))
- (set-extent-face extent 'query-coding-warning-face))
- (skip-chars-forward skip-chars-arg end buffer)))
- (if failed
- (values nil ranges)
- (values t nil)))))
-
-(defun make-8-bit-coding-system (name unicode-map &optional description props)
- "Make and return a fixed-width 8-bit CCL coding system named NAME.
-NAME must be a symbol, and UNICODE-MAP a list.
-
-UNICODE-MAP is a plist describing a map from octets in the coding
-system NAME (as integers) to XEmacs characters. Those XEmacs
-characters will be used explicitly on decoding, but for encoding (most
-relevantly, on writing to disk) XEmacs characters that map to the same
-Unicode code point will be unified. This means that the ISO-8859-?
-characters that map to the same Unicode code point will not be
-distinct when written to disk, which is normally what is intended; it
-also means that East Asian Han characters from different XEmacs
-character sets will not be distinct when written to disk, which is
-less often what is intended.
-
-Any octets not mapped, and with values above #x7f, will be decoded into
-XEmacs characters that reflect that their values are undefined. These
-characters will be displayed in a language-environment-specific way. See
-`unicode-error-default-translation-table' and the
-`invalid-sequence-coding-system' argument to `set-language-info'.
-
-These characters will normally be treated as invalid when checking whether
-text can be encoded with `query-coding-region'--see the
-IGNORE-INVALID-SEQUENCESP argument to that function to avoid this. It is
-possible to specify that octets with values less than #x80 (or indeed
-greater than it) be treated in this way, by specifying explicitly that they
-correspond to the character mapping to that octet in
-`unicode-error-default-translation-table'. Far fewer coding systems
-override the ASCII mapping, though, so this is not the default.
-
-DESCRIPTION and PROPS are as in `make-coding-system', which see. This
-function also accepts two additional (optional) properties in PROPS;
-`aliases', giving a list of aliases to be initialized for this
-coding-system, and `encode-failure-octet', an integer between 0 and 256 to
-write in place of XEmacs characters that cannot be encoded, defaulting to
-the code for tilde `~'. "
- (check-argument-type #'symbolp name)
- (check-argument-type #'listp unicode-map)
- (check-argument-type #'stringp
- (or description
- (setq description
- (format "Coding system used for %s." name))))
- (check-valid-plist props)
- (let ((encode-failure-octet (or (plist-get props 'encode-failure-octet)
- (char-to-int ?~)))
- (aliases (plist-get props 'aliases))
- (hash-table-sym (gentemp (format "%s-encode-table" name)))
- encode-program decode-program result decode-table encode-table
- skip-chars invalid-sequences-skip-chars)
-
- ;; Some more sanity checking.
- (check-argument-range encode-failure-octet 0 #xFF)
- (check-argument-type #'listp aliases)
-
- ;; Don't pass on our extra data to make-coding-system.
- (setq props (plist-remprop props 'encode-failure-octet)
- props (plist-remprop props 'aliases))
-
- (multiple-value-setq
- (decode-table encode-table)
- (make-8-bit-create-decode-encode-tables unicode-map))
-
- ;; Register the decode-table.
- (define-translation-hash-table hash-table-sym encode-table)
-
- ;; Generate the programs and skip-chars strings.
- (setq decode-program (make-8-bit-generate-decode-program decode-table))
- (multiple-value-setq
- (encode-program skip-chars invalid-sequences-skip-chars)
- (make-8-bit-generate-encode-program-and-skip-chars-strings
- decode-table encode-table encode-failure-octet))
-
- (unless (vectorp encode-program)
- (setq encode-program
- (apply #'vector
- (nsublis (list (cons 'encode-table-sym hash-table-sym))
- (copy-tree encode-program)))))
- (unless (vectorp decode-program)
- (setq decode-program
- (apply #'vector decode-program)))
-
- ;; And now generate the actual coding system.
- (setq result
- (make-coding-system
- name 'ccl
- description
- (plist-put (plist-put props 'decode decode-program)
- 'encode encode-program)))
- (coding-system-put name '8-bit-fixed t)
- (coding-system-put name 'category
- (make-8-bit-choose-category decode-table))
- (coding-system-put name '8-bit-fixed-query-skip-chars
- skip-chars)
- (coding-system-put name '8-bit-fixed-invalid-sequences-skip-chars
- invalid-sequences-skip-chars)
- (coding-system-put name '8-bit-fixed-query-from-unicode encode-table)
- (coding-system-put name 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put (intern (format "%s-unix" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put (intern (format "%s-dos" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put (intern (format "%s-mac" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (loop for alias in aliases
- do (define-coding-system-alias alias name))
- result))
-
-(define-compiler-macro make-8-bit-coding-system (&whole form name unicode-map
- &optional description props)
- ;; We provide the compiler macro (= macro that is expanded only on
- ;; compilation, and that can punt to a runtime version of the
- ;; associate function if necessary) not for reasons of speed, though
- ;; it does speed up things at runtime a little, but because the
- ;; Unicode mappings are available at compile time in the dumped
- ;; files, but they are not available at run time for the vast
- ;; majority of them.
-
- (if (not (and (and (consp name) (eq (car name) 'quote))
- (and (consp unicode-map) (eq (car unicode-map) 'quote))
- (and (or (and (consp props) (eq (car props) 'quote))
- (null props)))))
- ;; The call does not use literals; do it at runtime.
- form
- (setq name (cadr name)
- unicode-map (cadr unicode-map)
- props (if props (cadr props)))
- (let ((encode-failure-octet
- (or (plist-get props 'encode-failure-octet) (char-to-int ?~)))
- (aliases (plist-get props 'aliases))
- encode-program decode-program
- decode-table encode-table
- skip-chars invalid-sequences-skip-chars)
-
- ;; Some sanity checking.
- (check-argument-range encode-failure-octet 0 #xFF)
- (check-argument-type #'listp aliases)
-
- ;; Don't pass on our extra data to make-coding-system.
- (setq props (plist-remprop props 'encode-failure-octet)
- props (plist-remprop props 'aliases))
-
- ;; Work out encode-table and decode-table
- (multiple-value-setq
- (decode-table encode-table)
- (make-8-bit-create-decode-encode-tables unicode-map))
-
- ;; Generate the decode and encode programs, and the skip-chars
- ;; arguments.
- (setq decode-program (make-8-bit-generate-decode-program decode-table))
- (multiple-value-setq
- (encode-program skip-chars invalid-sequences-skip-chars)
- (make-8-bit-generate-encode-program-and-skip-chars-strings
- decode-table encode-table encode-failure-octet))
-
- ;; And return the generated code.
- `(let ((encode-table-sym (gentemp (format "%s-encode-table" ',name)))
- (encode-table ,encode-table))
- (define-translation-hash-table encode-table-sym encode-table)
- (make-coding-system
- ',name 'ccl ,description
- (plist-put (plist-put ',props 'decode
- ,(apply #'vector decode-program))
- 'encode
- (apply #'vector
- (nsublis
- (list (cons
- 'encode-table-sym
- (symbol-value 'encode-table-sym)))
- ',encode-program))))
- (coding-system-put ',name '8-bit-fixed t)
- (coding-system-put ',name 'category
- ',(make-8-bit-choose-category decode-table))
- (coding-system-put ',name '8-bit-fixed-query-skip-chars
- ,skip-chars)
- (coding-system-put ',name '8-bit-fixed-invalid-sequences-skip-chars
- ,invalid-sequences-skip-chars)
- (coding-system-put ',name '8-bit-fixed-query-from-unicode encode-table)
- (coding-system-put ',name 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put ',(intern (format "%s-unix" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put ',(intern (format "%s-dos" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- (coding-system-put ',(intern (format "%s-mac" name))
- 'query-coding-function
- #'8-bit-fixed-query-coding-region)
- ,(macroexpand `(loop for alias in ',aliases
- do (define-coding-system-alias alias
- ',name)))
- (find-coding-system ',name)))))
-
;; Ideally this would be in latin.el, but code-init.el uses it.
-(make-8-bit-coding-system
+(make-coding-system
'iso-8859-1
- (loop
- for i from #x80 to #xff
- collect (list i (int-char i))) ;; Identical to Latin-1.
+ 'fixed-width
"ISO-8859-1 (Latin-1)"
- '(mnemonic "Latin 1"
- documentation "The most used encoding of Western Europe and the Americas."
- aliases (iso-latin-1 latin-1)))
+ (eval-when-compile
+ `(unicode-map
+ ,(loop
+ for i from #x80 to #xff
+ collect (list i (int-char i))) ;; Identical to Latin-1.
+ mnemonic "Latin 1"
+ documentation "The most used encoding of Western Europe and the Americas."
+ aliases (iso-latin-1 latin-1))))
diff -r 9c97a5a8c241 lisp/mule/thai-xtis.el
--- a/lisp/mule/thai-xtis.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/thai-xtis.el Sat Apr 11 14:35:00 2009 +0100
@@ -347,23 +347,15 @@
(repeat))))
(write-read-repeat r0))))))
-(if (featurep 'xemacs)
- (progn
- (make-coding-system
- 'tis-620 'ccl
- "TIS620 (Thai)"
- `(mnemonic "TIS620"
- decode ccl-decode-thai-xtis
- encode ccl-encode-thai-xtis
- safe-charsets (ascii thai-xtis)
- documentation "external=tis620, internal=thai-xtis"))
- (coding-system-put 'tis-620 'category 'iso-8-1))
- (make-coding-system
- 'tis-620 4 ?T "external=tis620, internal=thai-xtis"
- '(ccl-decode-thai-xtis . ccl-encode-thai-xtis)
- '((safe-charsets . t)))
- )
-
+(make-coding-system
+ 'tis-620 'ccl
+ "TIS620 (Thai)"
+ `(mnemonic "TIS620"
+ decode ccl-decode-thai-xtis
+ encode ccl-encode-thai-xtis
+ safe-charsets (ascii thai-xtis)
+ documentation "external=tis620, internal=thai-xtis"))
+(coding-system-put 'tis-620 'category 'iso-8-1)
(set-language-info-alist
"Thai-XTIS"
diff -r 9c97a5a8c241 lisp/mule/vietnamese.el
--- a/lisp/mule/vietnamese.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/mule/vietnamese.el Sat Apr 11 14:35:00 2009 +0100
@@ -64,144 +64,144 @@
(modify-category-entry 'vietnamese-viscii-lower ?v)
(modify-category-entry 'vietnamese-viscii-upper ?v)
-(make-8-bit-coding-system
- 'viscii
- '((#x02 ?\u1EB2) ;; CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
- (#x05 ?\u1EB4) ;; CAPITAL LETTER A WITH BREVE AND TILDE
- (#x06 ?\u1EAA) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
- (#x14 ?\u1EF6) ;; CAPITAL LETTER Y WITH HOOK ABOVE
- (#x19 ?\u1EF8) ;; CAPITAL LETTER Y WITH TILDE
- (#x1E ?\u1EF4) ;; CAPITAL LETTER Y WITH DOT BELOW
- (#x80 ?\u1EA0) ;; CAPITAL LETTER A WITH DOT BELOW
- (#x81 ?\u1EAE) ;; CAPITAL LETTER A WITH BREVE AND ACUTE
- (#x82 ?\u1EB0) ;; CAPITAL LETTER A WITH BREVE AND GRAVE
- (#x83 ?\u1EB6) ;; CAPITAL LETTER A WITH BREVE AND DOT BELOW
- (#x84 ?\u1EA4) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
- (#x85 ?\u1EA6) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
- (#x86 ?\u1EA8) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- (#x87 ?\u1EAC) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- (#x88 ?\u1EBC) ;; CAPITAL LETTER E WITH TILDE
- (#x89 ?\u1EB8) ;; CAPITAL LETTER E WITH DOT BELOW
- (#x8A ?\u1EBE) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
- (#x8B ?\u1EC0) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
- (#x8C ?\u1EC2) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- (#x8D ?\u1EC4) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
- (#x8E ?\u1EC6) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- (#x8F ?\u1ED0) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
- (#x90 ?\u1ED2) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
- (#x91 ?\u1ED4) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- (#x92 ?\u1ED6) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
- (#x93 ?\u1ED8) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- (#x94 ?\u1EE2) ;; CAPITAL LETTER O WITH HORN AND DOT BELOW
- (#x95 ?\u1EDA) ;; CAPITAL LETTER O WITH HORN AND ACUTE
- (#x96 ?\u1EDC) ;; CAPITAL LETTER O WITH HORN AND GRAVE
- (#x97 ?\u1EDE) ;; CAPITAL LETTER O WITH HORN AND HOOK ABOVE
- (#x98 ?\u1ECA) ;; CAPITAL LETTER I WITH DOT BELOW
- (#x99 ?\u1ECE) ;; CAPITAL LETTER O WITH HOOK ABOVE
- (#x9A ?\u1ECC) ;; CAPITAL LETTER O WITH DOT BELOW
- (#x9B ?\u1EC8) ;; CAPITAL LETTER I WITH HOOK ABOVE
- (#x9C ?\u1EE6) ;; CAPITAL LETTER U WITH HOOK ABOVE
- (#x9D ?\u0168) ;; CAPITAL LETTER U WITH TILDE
- (#x9E ?\u1EE4) ;; CAPITAL LETTER U WITH DOT BELOW
- (#x9F ?\u1EF2) ;; CAPITAL LETTER Y WITH GRAVE
- (#xA0 ?\u00D5) ;; CAPITAL LETTER O WITH TILDE
- (#xA1 ?\u1EAF) ;; SMALL LETTER A WITH BREVE AND ACUTE
- (#xA2 ?\u1EB1) ;; SMALL LETTER A WITH BREVE AND GRAVE
- (#xA3 ?\u1EB7) ;; SMALL LETTER A WITH BREVE AND DOT BELOW
- (#xA4 ?\u1EA5) ;; SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
- (#xA5 ?\u1EA7) ;; SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
- (#xA6 ?\u1EA8) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
- (#xA7 ?\u1EAD) ;; SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
- (#xA8 ?\u1EBD) ;; SMALL LETTER E WITH TILDE
- (#xA9 ?\u1EB9) ;; SMALL LETTER E WITH DOT BELOW
- (#xAA ?\u1EBF) ;; SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
- (#xAB ?\u1EC1) ;; SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
- (#xAC ?\u1EC3) ;; SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
- (#xAD ?\u1EC5) ;; SMALL LETTER E WITH CIRCUMFLEX AND TILDE
- (#xAE ?\u1EC7) ;; SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
- (#xAF ?\u1ED1) ;; SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
- (#xB0 ?\u1ED3) ;; SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
- (#xB1 ?\u1ED5) ;; SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
- (#xB2 ?\u1ED7) ;; SMALL LETTER O WITH CIRCUMFLEX AND TILDE
- (#xB3 ?\u1EE0) ;; CAPITAL LETTER O WITH HORN AND TILDE
- (#xB4 ?\u01A0) ;; CAPITAL LETTER O WITH HORN
- (#xB5 ?\u1ED9) ;; SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
- (#xB6 ?\u1EDD) ;; SMALL LETTER O WITH HORN AND GRAVE
- (#xB7 ?\u1EDF) ;; SMALL LETTER O WITH HORN AND HOOK ABOVE
- (#xB8 ?\u1ECB) ;; SMALL LETTER I WITH DOT BELOW
- (#xB9 ?\u1EF0) ;; CAPITAL LETTER U WITH HORN AND DOT BELOW
- (#xBA ?\u1EE8) ;; CAPITAL LETTER U WITH HORN AND ACUTE
- (#xBB ?\u1EEA) ;; CAPITAL LETTER U WITH HORN AND GRAVE
- (#xBC ?\u1EEC) ;; CAPITAL LETTER U WITH HORN AND HOOK ABOVE
- (#xBD ?\u01A1) ;; SMALL LETTER O WITH HORN
- (#xBE ?\u1EDB) ;; SMALL LETTER O WITH HORN AND ACUTE
- (#xBF ?\u01AF) ;; CAPITAL LETTER U WITH HORN
- (#xC0 ?\u00C0) ;; CAPITAL LETTER A WITH GRAVE
- (#xC1 ?\u00C1) ;; CAPITAL LETTER A WITH ACUTE
- (#xC2 ?\u00C2) ;; CAPITAL LETTER A WITH CIRCUMFLEX
- (#xC3 ?\u00C3) ;; CAPITAL LETTER A WITH TILDE
- (#xC4 ?\u1EA2) ;; CAPITAL LETTER A WITH HOOK ABOVE
- (#xC5 ?\u0102) ;; CAPITAL LETTER A WITH BREVE
- (#xC6 ?\u1EB3) ;; SMALL LETTER A WITH BREVE AND HOOK ABOVE
- (#xC7 ?\u1EB5) ;; SMALL LETTER A WITH BREVE AND TILDE
- (#xC8 ?\u00C8) ;; CAPITAL LETTER E WITH GRAVE
- (#xC9 ?\u00C9) ;; CAPITAL LETTER E WITH ACUTE
- (#xCA ?\u00CA) ;; CAPITAL LETTER E WITH CIRCUMFLEX
- (#xCB ?\u1EBA) ;; CAPITAL LETTER E WITH HOOK ABOVE
- (#xCC ?\u00CC) ;; CAPITAL LETTER I WITH GRAVE
- (#xCD ?\u00CD) ;; CAPITAL LETTER I WITH ACUTE
- (#xCE ?\u0128) ;; CAPITAL LETTER I WITH TILDE
- (#xCF ?\u1EF3) ;; SMALL LETTER Y WITH GRAVE
- (#xD0 ?\u0110) ;; CAPITAL LETTER D WITH STROKE
- (#xD1 ?\u1EE9) ;; SMALL LETTER U WITH HORN AND ACUTE
- (#xD2 ?\u00D2) ;; CAPITAL LETTER O WITH GRAVE
- (#xD3 ?\u00D3) ;; CAPITAL LETTER O WITH ACUTE
- (#xD4 ?\u00D4) ;; CAPITAL LETTER O WITH CIRCUMFLEX
- (#xD5 ?\u1EA1) ;; SMALL LETTER A WITH DOT BELOW
- (#xD6 ?\u1EF7) ;; SMALL LETTER Y WITH HOOK ABOVE
- (#xD7 ?\u1EEB) ;; SMALL LETTER U WITH HORN AND GRAVE
- (#xD8 ?\u1EED) ;; SMALL LETTER U WITH HORN AND HOOK ABOVE
- (#xD9 ?\u00D9) ;; CAPITAL LETTER U WITH GRAVE
- (#xDA ?\u00DA) ;; CAPITAL LETTER U WITH ACUTE
- (#xDB ?\u1EF9) ;; SMALL LETTER Y WITH TILDE
- (#xDC ?\u1EF5) ;; SMALL LETTER Y WITH DOT BELOW
- (#xDD ?\u00DD) ;; CAPITAL LETTER Y WITH ACUTE
- (#xDE ?\u1EE1) ;; SMALL LETTER O WITH HORN AND TILDE
- (#xDF ?\u01B0) ;; SMALL LETTER U WITH HORN
- (#xE0 ?\u00E0) ;; SMALL LETTER A WITH GRAVE
- (#xE1 ?\u00E1) ;; SMALL LETTER A WITH ACUTE
- (#xE2 ?\u00E2) ;; SMALL LETTER A WITH CIRCUMFLEX
- (#xE3 ?\u00E3) ;; SMALL LETTER A WITH TILDE
- (#xE4 ?\u1EA3) ;; SMALL LETTER A WITH HOOK ABOVE
- (#xE5 ?\u0103) ;; SMALL LETTER A WITH BREVE
- (#xE6 ?\u1EEF) ;; SMALL LETTER U WITH HORN AND TILDE
- (#xE7 ?\u1EAB) ;; SMALL LETTER A WITH CIRCUMFLEX AND TILDE
- (#xE8 ?\u00E8) ;; SMALL LETTER E WITH GRAVE
- (#xE9 ?\u00E9) ;; SMALL LETTER E WITH ACUTE
- (#xEA ?\u00EA) ;; SMALL LETTER E WITH CIRCUMFLEX
- (#xEB ?\u1EBB) ;; SMALL LETTER E WITH HOOK ABOVE
- (#xEC ?\u00EC) ;; SMALL LETTER I WITH GRAVE
- (#xED ?\u00ED) ;; SMALL LETTER I WITH ACUTE
- (#xEE ?\u0129) ;; SMALL LETTER I WITH TILDE
- (#xEF ?\u1EC9) ;; SMALL LETTER I WITH HOOK ABOVE
- (#xF0 ?\u0111) ;; SMALL LETTER D WITH STROKE
- (#xF1 ?\u1EF1) ;; SMALL LETTER U WITH HORN AND DOT BELOW
- (#xF2 ?\u00F2) ;; SMALL LETTER O WITH GRAVE
- (#xF3 ?\u00F3) ;; SMALL LETTER O WITH ACUTE
- (#xF4 ?\u00F4) ;; SMALL LETTER O WITH CIRCUMFLEX
- (#xF5 ?\u00F5) ;; SMALL LETTER O WITH TILDE
- (#xF6 ?\u1ECF) ;; SMALL LETTER O WITH HOOK ABOVE
- (#xF7 ?\u1ECD) ;; SMALL LETTER O WITH DOT BELOW
- (#xF8 ?\u1EE5) ;; SMALL LETTER U WITH DOT BELOW
- (#xF9 ?\u00F9) ;; SMALL LETTER U WITH GRAVE
- (#xFA ?\u00FA) ;; SMALL LETTER U WITH ACUTE
- (#xFB ?\u0169) ;; SMALL LETTER U WITH TILDE
- (#xFC ?\u1EE7) ;; SMALL LETTER U WITH HOOK ABOVE
- (#xFD ?\u00FD) ;; SMALL LETTER Y WITH ACUTE
- (#xFE ?\u1EE3) ;; SMALL LETTER O WITH HORN AND DOT BELOW
- (#xFF ?\u1EEE)) ;; CAPITAL LETTER U WITH HORN AND TILDE
- "VISCII 1.1 (Vietnamese)"
- '(mnemonic "VISCII"))
+(make-coding-system
+ 'viscii 'fixed-width "VISCII 1.1 (Vietnamese)"
+ '(unicode-map
+ ((#x02 ?\u1EB2) ;; CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ (#x05 ?\u1EB4) ;; CAPITAL LETTER A WITH BREVE AND TILDE
+ (#x06 ?\u1EAA) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ (#x14 ?\u1EF6) ;; CAPITAL LETTER Y WITH HOOK ABOVE
+ (#x19 ?\u1EF8) ;; CAPITAL LETTER Y WITH TILDE
+ (#x1E ?\u1EF4) ;; CAPITAL LETTER Y WITH DOT BELOW
+ (#x80 ?\u1EA0) ;; CAPITAL LETTER A WITH DOT BELOW
+ (#x81 ?\u1EAE) ;; CAPITAL LETTER A WITH BREVE AND ACUTE
+ (#x82 ?\u1EB0) ;; CAPITAL LETTER A WITH BREVE AND GRAVE
+ (#x83 ?\u1EB6) ;; CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ (#x84 ?\u1EA4) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ (#x85 ?\u1EA6) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ (#x86 ?\u1EA8) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ (#x87 ?\u1EAC) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ (#x88 ?\u1EBC) ;; CAPITAL LETTER E WITH TILDE
+ (#x89 ?\u1EB8) ;; CAPITAL LETTER E WITH DOT BELOW
+ (#x8A ?\u1EBE) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ (#x8B ?\u1EC0) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ (#x8C ?\u1EC2) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ (#x8D ?\u1EC4) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ (#x8E ?\u1EC6) ;; CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ (#x8F ?\u1ED0) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ (#x90 ?\u1ED2) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ (#x91 ?\u1ED4) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ (#x92 ?\u1ED6) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ (#x93 ?\u1ED8) ;; CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ (#x94 ?\u1EE2) ;; CAPITAL LETTER O WITH HORN AND DOT BELOW
+ (#x95 ?\u1EDA) ;; CAPITAL LETTER O WITH HORN AND ACUTE
+ (#x96 ?\u1EDC) ;; CAPITAL LETTER O WITH HORN AND GRAVE
+ (#x97 ?\u1EDE) ;; CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ (#x98 ?\u1ECA) ;; CAPITAL LETTER I WITH DOT BELOW
+ (#x99 ?\u1ECE) ;; CAPITAL LETTER O WITH HOOK ABOVE
+ (#x9A ?\u1ECC) ;; CAPITAL LETTER O WITH DOT BELOW
+ (#x9B ?\u1EC8) ;; CAPITAL LETTER I WITH HOOK ABOVE
+ (#x9C ?\u1EE6) ;; CAPITAL LETTER U WITH HOOK ABOVE
+ (#x9D ?\u0168) ;; CAPITAL LETTER U WITH TILDE
+ (#x9E ?\u1EE4) ;; CAPITAL LETTER U WITH DOT BELOW
+ (#x9F ?\u1EF2) ;; CAPITAL LETTER Y WITH GRAVE
+ (#xA0 ?\u00D5) ;; CAPITAL LETTER O WITH TILDE
+ (#xA1 ?\u1EAF) ;; SMALL LETTER A WITH BREVE AND ACUTE
+ (#xA2 ?\u1EB1) ;; SMALL LETTER A WITH BREVE AND GRAVE
+ (#xA3 ?\u1EB7) ;; SMALL LETTER A WITH BREVE AND DOT BELOW
+ (#xA4 ?\u1EA5) ;; SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ (#xA5 ?\u1EA7) ;; SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ (#xA6 ?\u1EA8) ;; CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ (#xA7 ?\u1EAD) ;; SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ (#xA8 ?\u1EBD) ;; SMALL LETTER E WITH TILDE
+ (#xA9 ?\u1EB9) ;; SMALL LETTER E WITH DOT BELOW
+ (#xAA ?\u1EBF) ;; SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ (#xAB ?\u1EC1) ;; SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ (#xAC ?\u1EC3) ;; SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ (#xAD ?\u1EC5) ;; SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ (#xAE ?\u1EC7) ;; SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ (#xAF ?\u1ED1) ;; SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ (#xB0 ?\u1ED3) ;; SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ (#xB1 ?\u1ED5) ;; SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ (#xB2 ?\u1ED7) ;; SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ (#xB3 ?\u1EE0) ;; CAPITAL LETTER O WITH HORN AND TILDE
+ (#xB4 ?\u01A0) ;; CAPITAL LETTER O WITH HORN
+ (#xB5 ?\u1ED9) ;; SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ (#xB6 ?\u1EDD) ;; SMALL LETTER O WITH HORN AND GRAVE
+ (#xB7 ?\u1EDF) ;; SMALL LETTER O WITH HORN AND HOOK ABOVE
+ (#xB8 ?\u1ECB) ;; SMALL LETTER I WITH DOT BELOW
+ (#xB9 ?\u1EF0) ;; CAPITAL LETTER U WITH HORN AND DOT BELOW
+ (#xBA ?\u1EE8) ;; CAPITAL LETTER U WITH HORN AND ACUTE
+ (#xBB ?\u1EEA) ;; CAPITAL LETTER U WITH HORN AND GRAVE
+ (#xBC ?\u1EEC) ;; CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ (#xBD ?\u01A1) ;; SMALL LETTER O WITH HORN
+ (#xBE ?\u1EDB) ;; SMALL LETTER O WITH HORN AND ACUTE
+ (#xBF ?\u01AF) ;; CAPITAL LETTER U WITH HORN
+ (#xC0 ?\u00C0) ;; CAPITAL LETTER A WITH GRAVE
+ (#xC1 ?\u00C1) ;; CAPITAL LETTER A WITH ACUTE
+ (#xC2 ?\u00C2) ;; CAPITAL LETTER A WITH CIRCUMFLEX
+ (#xC3 ?\u00C3) ;; CAPITAL LETTER A WITH TILDE
+ (#xC4 ?\u1EA2) ;; CAPITAL LETTER A WITH HOOK ABOVE
+ (#xC5 ?\u0102) ;; CAPITAL LETTER A WITH BREVE
+ (#xC6 ?\u1EB3) ;; SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ (#xC7 ?\u1EB5) ;; SMALL LETTER A WITH BREVE AND TILDE
+ (#xC8 ?\u00C8) ;; CAPITAL LETTER E WITH GRAVE
+ (#xC9 ?\u00C9) ;; CAPITAL LETTER E WITH ACUTE
+ (#xCA ?\u00CA) ;; CAPITAL LETTER E WITH CIRCUMFLEX
+ (#xCB ?\u1EBA) ;; CAPITAL LETTER E WITH HOOK ABOVE
+ (#xCC ?\u00CC) ;; CAPITAL LETTER I WITH GRAVE
+ (#xCD ?\u00CD) ;; CAPITAL LETTER I WITH ACUTE
+ (#xCE ?\u0128) ;; CAPITAL LETTER I WITH TILDE
+ (#xCF ?\u1EF3) ;; SMALL LETTER Y WITH GRAVE
+ (#xD0 ?\u0110) ;; CAPITAL LETTER D WITH STROKE
+ (#xD1 ?\u1EE9) ;; SMALL LETTER U WITH HORN AND ACUTE
+ (#xD2 ?\u00D2) ;; CAPITAL LETTER O WITH GRAVE
+ (#xD3 ?\u00D3) ;; CAPITAL LETTER O WITH ACUTE
+ (#xD4 ?\u00D4) ;; CAPITAL LETTER O WITH CIRCUMFLEX
+ (#xD5 ?\u1EA1) ;; SMALL LETTER A WITH DOT BELOW
+ (#xD6 ?\u1EF7) ;; SMALL LETTER Y WITH HOOK ABOVE
+ (#xD7 ?\u1EEB) ;; SMALL LETTER U WITH HORN AND GRAVE
+ (#xD8 ?\u1EED) ;; SMALL LETTER U WITH HORN AND HOOK ABOVE
+ (#xD9 ?\u00D9) ;; CAPITAL LETTER U WITH GRAVE
+ (#xDA ?\u00DA) ;; CAPITAL LETTER U WITH ACUTE
+ (#xDB ?\u1EF9) ;; SMALL LETTER Y WITH TILDE
+ (#xDC ?\u1EF5) ;; SMALL LETTER Y WITH DOT BELOW
+ (#xDD ?\u00DD) ;; CAPITAL LETTER Y WITH ACUTE
+ (#xDE ?\u1EE1) ;; SMALL LETTER O WITH HORN AND TILDE
+ (#xDF ?\u01B0) ;; SMALL LETTER U WITH HORN
+ (#xE0 ?\u00E0) ;; SMALL LETTER A WITH GRAVE
+ (#xE1 ?\u00E1) ;; SMALL LETTER A WITH ACUTE
+ (#xE2 ?\u00E2) ;; SMALL LETTER A WITH CIRCUMFLEX
+ (#xE3 ?\u00E3) ;; SMALL LETTER A WITH TILDE
+ (#xE4 ?\u1EA3) ;; SMALL LETTER A WITH HOOK ABOVE
+ (#xE5 ?\u0103) ;; SMALL LETTER A WITH BREVE
+ (#xE6 ?\u1EEF) ;; SMALL LETTER U WITH HORN AND TILDE
+ (#xE7 ?\u1EAB) ;; SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ (#xE8 ?\u00E8) ;; SMALL LETTER E WITH GRAVE
+ (#xE9 ?\u00E9) ;; SMALL LETTER E WITH ACUTE
+ (#xEA ?\u00EA) ;; SMALL LETTER E WITH CIRCUMFLEX
+ (#xEB ?\u1EBB) ;; SMALL LETTER E WITH HOOK ABOVE
+ (#xEC ?\u00EC) ;; SMALL LETTER I WITH GRAVE
+ (#xED ?\u00ED) ;; SMALL LETTER I WITH ACUTE
+ (#xEE ?\u0129) ;; SMALL LETTER I WITH TILDE
+ (#xEF ?\u1EC9) ;; SMALL LETTER I WITH HOOK ABOVE
+ (#xF0 ?\u0111) ;; SMALL LETTER D WITH STROKE
+ (#xF1 ?\u1EF1) ;; SMALL LETTER U WITH HORN AND DOT BELOW
+ (#xF2 ?\u00F2) ;; SMALL LETTER O WITH GRAVE
+ (#xF3 ?\u00F3) ;; SMALL LETTER O WITH ACUTE
+ (#xF4 ?\u00F4) ;; SMALL LETTER O WITH CIRCUMFLEX
+ (#xF5 ?\u00F5) ;; SMALL LETTER O WITH TILDE
+ (#xF6 ?\u1ECF) ;; SMALL LETTER O WITH HOOK ABOVE
+ (#xF7 ?\u1ECD) ;; SMALL LETTER O WITH DOT BELOW
+ (#xF8 ?\u1EE5) ;; SMALL LETTER U WITH DOT BELOW
+ (#xF9 ?\u00F9) ;; SMALL LETTER U WITH GRAVE
+ (#xFA ?\u00FA) ;; SMALL LETTER U WITH ACUTE
+ (#xFB ?\u0169) ;; SMALL LETTER U WITH TILDE
+ (#xFC ?\u1EE7) ;; SMALL LETTER U WITH HOOK ABOVE
+ (#xFD ?\u00FD) ;; SMALL LETTER Y WITH ACUTE
+ (#xFE ?\u1EE3) ;; SMALL LETTER O WITH HORN AND DOT BELOW
+ (#xFF ?\u1EEE)) ;; CAPITAL LETTER U WITH HORN AND TILDE
+ mnemonic "VISCII"))
(set-language-info-alist
"Vietnamese" '((charset vietnamese-viscii-lower vietnamese-viscii-upper)
diff -r 9c97a5a8c241 lisp/unicode.el
--- a/lisp/unicode.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/unicode.el Sat Apr 11 14:35:00 2009 +0100
@@ -164,6 +164,68 @@
latin-jisx0201 chinese-cns11643-3 chinese-cns11643-4
chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7)))))
+(defconst ccl-encode-to-ucs-2
+ (eval-when-compile
+ (let ((pre-existing
+ ;; This is the compiled CCL program from the assert
+ ;; below. Since this file is dumped and ccl.el isn't (and
+ ;; even when it was, it was dumped much later than this
+ ;; one), we can't compile the program at dump time. We can
+ ;; check at byte compile time that the program is as
+ ;; expected, though.
+ [1 16 131127 7 98872 65823 1307 5 -65536 65313 64833 1028
+ 147513 8 82009 255 22]))
+ (when (featurep 'mule)
+ ;; Check that the pre-existing constant reflects the intended
+ ;; CCL program.
+ (assert
+ (equal pre-existing
+ (ccl-compile
+ `(1
+ ( ;; mule-to-unicode's first argument is the
+ ;; charset ID, the second its first byte
+ ;; left shifted by 7 bits masked with its
+ ;; second byte.
+ (r1 = (r1 << 7))
+ (r1 = (r1 | r2))
+ (mule-to-unicode r0 r1)
+ (if (r0 & ,(lognot #xFFFF))
+ ;; Redisplay looks in r1 and r2 for the first
+ ;; and second bytes of the X11 font,
+ ;; respectively. For non-BMP characters we
+ ;; display U+FFFD.
+ ((r1 = #xFF)
+ (r2 = #xFD))
+ ((r1 = (r0 >> 8))
+ (r2 = (r0 & #xFF))))))))
+ nil
+ "The pre-compiled CCL program appears broken. "))
+ pre-existing))
+ "CCL program to transform Mule characters to UCS-2.")
+
+(when (featurep 'mule)
+ (put 'ccl-encode-to-ucs-2 'ccl-program-idx
+ (declare-fboundp
+ (register-ccl-program 'ccl-encode-to-ucs-2 ccl-encode-to-ucs-2))))
+
+(defun decode-char (quote-ucs code &optional restriction)
+ "FSF compatibility--return Mule character with Unicode codepoint CODE.
+The second argument must be 'ucs, the third argument is ignored. "
+ ;; We're prepared to accept invalid Unicode in unicode-to-char, but not in
+ ;; this function, which is the API that should actually be used, since
+ ;; it's available in GNU and in Mule-UCS.
+ (check-argument-range code #x0 #x10FFFF)
+ (assert (eq quote-ucs 'ucs) t
+ "Sorry, decode-char doesn't yet support anything but the UCS. ")
+ (unicode-to-char code))
+
+(defun encode-char (char quote-ucs &optional restriction)
+ "FSF compatibility--return the Unicode code point of CHAR.
+The second argument must be 'ucs, the third argument is ignored. "
+ (assert (eq quote-ucs 'ucs) t
+ "Sorry, encode-char doesn't yet support anything but the UCS. ")
+ (char-to-unicode char))
+
(make-coding-system
'utf-16 'unicode
"UTF-16"
@@ -308,68 +370,6 @@
unicode-type utf-8
little-endian t
need-bom t))
-
-(defun decode-char (quote-ucs code &optional restriction)
- "FSF compatibility--return Mule character with Unicode codepoint CODE.
-The second argument must be 'ucs, the third argument is ignored. "
- ;; We're prepared to accept invalid Unicode in unicode-to-char, but not in
- ;; this function, which is the API that should actually be used, since
- ;; it's available in GNU and in Mule-UCS.
- (check-argument-range code #x0 #x10FFFF)
- (assert (eq quote-ucs 'ucs) t
- "Sorry, decode-char doesn't yet support anything but the UCS. ")
- (unicode-to-char code))
-
-(defun encode-char (char quote-ucs &optional restriction)
- "FSF compatibility--return the Unicode code point of CHAR.
-The second argument must be 'ucs, the third argument is ignored. "
- (assert (eq quote-ucs 'ucs) t
- "Sorry, encode-char doesn't yet support anything but the UCS. ")
- (char-to-unicode char))
-
-(defconst ccl-encode-to-ucs-2
- (eval-when-compile
- (let ((pre-existing
- ;; This is the compiled CCL program from the assert
- ;; below. Since this file is dumped and ccl.el isn't (and
- ;; even when it was, it was dumped much later than this
- ;; one), we can't compile the program at dump time. We can
- ;; check at byte compile time that the program is as
- ;; expected, though.
- [1 16 131127 7 98872 65823 1307 5 -65536 65313 64833 1028
- 147513 8 82009 255 22]))
- (when (featurep 'mule)
- ;; Check that the pre-existing constant reflects the intended
- ;; CCL program.
- (assert
- (equal pre-existing
- (ccl-compile
- `(1
- ( ;; mule-to-unicode's first argument is the
- ;; charset ID, the second its first byte
- ;; left shifted by 7 bits masked with its
- ;; second byte.
- (r1 = (r1 << 7))
- (r1 = (r1 | r2))
- (mule-to-unicode r0 r1)
- (if (r0 & ,(lognot #xFFFF))
- ;; Redisplay looks in r1 and r2 for the first
- ;; and second bytes of the X11 font,
- ;; respectively. For non-BMP characters we
- ;; display U+FFFD.
- ((r1 = #xFF)
- (r2 = #xFD))
- ((r1 = (r0 >> 8))
- (r2 = (r0 & #xFF))))))))
- nil
- "The pre-compiled CCL program appears broken. "))
- pre-existing))
- "CCL program to transform Mule characters to UCS-2.")
-
-(when (featurep 'mule)
- (put 'ccl-encode-to-ucs-2 'ccl-program-idx
- (declare-fboundp
- (register-ccl-program 'ccl-encode-to-ucs-2 ccl-encode-to-ucs-2))))
;; Now, create jit-ucs-charset-0 entries for those characters in Windows
;; Glyph List 4 that would otherwise end up in East Asian character sets.
diff -r 9c97a5a8c241 lisp/update-elc.el
--- a/lisp/update-elc.el Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/update-elc.el Sat Apr 11 14:35:00 2009 +0100
@@ -122,9 +122,11 @@
Files in `additional-dump-dependencies' do not need to be listed here.")
(defvar additional-dump-dependencies
- '("loadup.el"
- "loadup-el.el"
- "update-elc.el")
+ (nconc '("loadup.el"
+ "loadup-el.el"
+ "update-elc.el")
+ (if (featurep 'mule)
+ '("mule/make-coding-system")))
"Lisp files that are not dumped but which the dump depends on.
If any of these files are changed, we need to redump.")
diff -r 9c97a5a8c241 src/extents.h
--- a/src/extents.h Wed Feb 11 15:30:59 2009 +0000
+++ b/src/extents.h Sat Apr 11 14:35:00 2009 +0100
@@ -147,6 +147,8 @@
extern int inside_undo;
extern int in_modeline_generation;
+extern Fixnum mouse_highlight_priority;
+
EXFUN (Fextent_at, 5);
EXFUN (Fextent_property, 3);
EXFUN (Fput_text_property, 5);
@@ -164,6 +166,9 @@
EXFUN (Fset_extent_endpoints, 4);
EXFUN (Fset_extent_parent, 2);
EXFUN (Fset_extent_property, 3);
+EXFUN (Fset_extent_priority, 2);
+EXFUN (Fset_extent_face, 2);
+EXFUN (Fmap_extents, 8);
enum extent_at_flag
{
diff -r 9c97a5a8c241 src/file-coding.c
--- a/src/file-coding.c Wed Feb 11 15:30:59 2009 +0000
+++ b/src/file-coding.c Sat Apr 11 14:35:00 2009 +0100
@@ -88,6 +88,10 @@
Lisp_Object Vcoding_system_for_read;
Lisp_Object Vcoding_system_for_write;
Lisp_Object Vfile_name_coding_system;
+
+Lisp_Object Qquery_coding_warning_face;
+Lisp_Object Qquery_coding_clear_highlights;
+Lisp_Object Qaliases;
#ifdef DEBUG_XEMACS
Lisp_Object Vdebug_coding_detection;
@@ -1030,7 +1034,7 @@
enum eol_type eol_wrapper = EOL_AUTODETECT;
struct coding_system_methods *meths;
Lisp_Object csobj;
- Lisp_Object defmnem = Qnil;
+ Lisp_Object defmnem = Qnil, aliases = Qnil;
if (NILP (type))
type = Qundecided;
@@ -1119,6 +1123,10 @@
CODING_SYSTEM_POST_READ_CONVERSION (cs) = value;
else if (EQ (key, Qpre_write_conversion))
CODING_SYSTEM_PRE_WRITE_CONVERSION (cs) = value;
+ else if (EQ (key, Qaliases))
+ {
+ aliases = value;
+ }
/* FSF compatibility */
else if (EQ (key, Qtranslation_table_for_decode))
;
@@ -1128,6 +1136,14 @@
CODING_SYSTEM_SAFE_CHARS (cs) = value;
else if (EQ (key, Qsafe_charsets))
CODING_SYSTEM_SAFE_CHARSETS (cs) = value;
+ else if (EQ (key, Qcategory))
+ {
+ Fput (name_or_existing, intern ("coding-system-property"),
+ Fplist_put (Fget (name_or_existing,
+ intern ("coding-system-property"),
+ Qnil),
+ Qcategory, value));
+ }
else if (EQ (key, Qmime_charset))
;
else if (EQ (key, Qvalid_codes))
@@ -1186,6 +1202,11 @@
csobj));
}
XCODING_SYSTEM_EOL_TYPE (csobj) = eol_wrapper;
+
+ {
+ EXTERNAL_LIST_LOOP_2 (alias, aliases)
+ Fdefine_coding_system_alias (alias, csobj);
+ }
}
return csobj;
@@ -1199,340 +1220,9 @@
return make_coding_system_1 (existing, prefix, type, description, props);
}
-DEFUN ("make-coding-system", Fmake_coding_system, 2, 4, 0, /*
-Register symbol NAME as a coding system.
-
-TYPE describes the conversion method used and should be one of
-
-nil or `undecided'
- Automatic conversion. XEmacs attempts to detect the coding system
- used in the file.
-`chain'
- Chain two or more coding systems together to make a combination coding
- system.
-`no-conversion'
- No conversion. Use this for binary files and such. On output,
- graphic characters that are not in ASCII or Latin-1 will be
- replaced by a ?. (For a no-conversion-encoded buffer, these
- characters will only be present if you explicitly insert them.)
-`convert-eol'
- Convert CRLF sequences or CR to LF.
-`shift-jis'
- Shift-JIS (a Japanese encoding commonly used in PC operating systems).
-`unicode'
- Any Unicode encoding (UCS-4, UTF-8, UTF-16, etc.).
-`mswindows-unicode-to-multibyte'
- (MS Windows only) Converts from Windows Unicode to Windows Multibyte
- (any code page encoding) upon encoding, and the other way upon decoding.
-`mswindows-multibyte'
- Converts to or from Windows Multibyte (any code page encoding).
- This is resolved into a chain of `mswindows-unicode' and
- `mswindows-unicode-to-multibyte'.
-`iso2022'
- Any ISO2022-compliant encoding. Among other things, this includes
- JIS (the Japanese encoding commonly used for e-mail), EUC (the
- standard Unix encoding for Japanese and other languages), and
- Compound Text (the encoding used in X11). You can specify more
- specific information about the conversion with the PROPS argument.
-`big5'
- Big5 (the encoding commonly used for Mandarin Chinese in Taiwan).
-`ccl'
- The conversion is performed using a user-written pseudo-code
- program. CCL (Code Conversion Language) is the name of this
- pseudo-code.
-`gzip'
- GZIP compression format.
-`internal'
- Write out or read in the raw contents of the memory representing
- the buffer's text. This is primarily useful for debugging
- purposes, and is only enabled when XEmacs has been compiled with
- DEBUG_XEMACS defined (via the --debug configure option).
- WARNING: Reading in a file using `internal' conversion can result
- in an internal inconsistency in the memory representing a
- buffer's text, which will produce unpredictable results and may
- cause XEmacs to crash. Under normal circumstances you should
- never use `internal' conversion.
-
-DESCRIPTION is a short English phrase describing the coding system,
-suitable for use as a menu item. (See also the `documentation' property
-below.)
-
-PROPS is a property list, describing the specific nature of the
-character set. Recognized properties are:
-
-`mnemonic'
- String to be displayed in the modeline when this coding system is
- active.
-
-`documentation'
- Detailed documentation on the coding system.
-
-`eol-type'
- End-of-line conversion to be used. It should be one of
-
- nil
- Automatically detect the end-of-line type (LF, CRLF,
- or CR). Also generate subsidiary coding systems named
- `NAME-unix', `NAME-dos', and `NAME-mac', that are
- identical to this coding system but have an EOL-TYPE
- value of `lf', `crlf', and `cr', respectively.
- `lf'
- The end of a line is marked externally using ASCII LF.
- Since this is also the way that XEmacs represents an
- end-of-line internally, specifying this option results
- in no end-of-line conversion. This is the standard
- format for Unix text files.
- `crlf'
- The end of a line is marked externally using ASCII
- CRLF. This is the standard format for MS-DOS text
- files.
- `cr'
- The end of a line is marked externally using ASCII CR.
- This is the standard format for Macintosh text files.
- t
- Automatically detect the end-of-line type but do not
- generate subsidiary coding systems. (This value is
- converted to nil when stored internally, and
- `coding-system-property' will return nil.)
-
-`post-read-conversion'
- The value is a function to call after some text is inserted and
- decoded by the coding system itself and before any functions in
- `after-change-functions' are called. (#### Not actually true in
- XEmacs. `after-change-functions' will be called twice if
- `post-read-conversion' changes something.) The argument of this
- function is the same as for a function in
- `after-insert-file-functions', i.e. LENGTH of the text inserted,
- with point at the head of the text to be decoded.
-
-`pre-write-conversion'
- The value is a function to call after all functions in
- `write-region-annotate-functions' and `buffer-file-format' are
- called, and before the text is encoded by the coding system itself.
- The arguments to this function are the same as those of a function
- in `write-region-annotate-functions', i.e. FROM and TO, specifying
- a region of text.
-
-
-
-The following properties are allowed for FSF compatibility but currently
-ignored:
-
-`translation-table-for-decode'
- The value is a translation table to be applied on decoding. See
- the function `make-translation-table' for the format of translation
- table. This is not applicable to CCL-based coding systems.
-
-`translation-table-for-encode'
- The value is a translation table to be applied on encoding. This is
- not applicable to CCL-based coding systems.
-
-`mime-charset'
- The value is a symbol of which name is `MIME-charset' parameter of
- the coding system.
-
-`valid-codes' (meaningful only for a coding system based on CCL)
- The value is a list to indicate valid byte ranges of the encoded
- file. Each element of the list is an integer or a cons of integer.
- In the former case, the integer value is a valid byte code. In the
- latter case, the integers specifies the range of valid byte codes.
-
-The following properties are used by `default-query-coding-region',
-the default implementation of `query-coding-region'. This
-implementation and these properties are not used by the Unicode coding
-systems, nor by those CCL coding systems created with
-`make-8-bit-coding-system'.
-
-`safe-chars'
- The value is a char table. If a character has non-nil value in it,
- the character is safely supported by the coding system.
- Under XEmacs, for the moment, this is used in addition to the
- `safe-charsets' property. It does not override it as it does
- under GNU Emacs. #### We need to consider if we should keep this
- behaviour.
-
-`safe-charsets'
- The value is a list of charsets safely supported by the coding
- system. For coding systems based on ISO 2022, XEmacs may try to
- encode characters outside these character sets, but outside of
- East Asia and East Asian coding systems, it is unlikely that
- consumers of the data will understand XEmacs' encoding.
- The value t means that all XEmacs character sets handles are supported.
-
-The following additional property is recognized if TYPE is `convert-eol':
-
-`subtype'
- One of `lf', `crlf', `cr' or nil (for autodetection). When decoding,
- the corresponding sequence will be converted to LF. When encoding,
- the opposite happens. This coding system converts characters to
- characters.
-
-
-
-The following additional properties are recognized if TYPE is `iso2022':
-
-`charset-g0'
-`charset-g1'
-`charset-g2'
-`charset-g3'
- The character set initially designated to the G0 - G3 registers.
- The value should be one of
-
- -- A charset object (designate that character set)
- -- nil (do not ever use this register)
- -- t (no character set is initially designated to
- the register, but may be later on; this automatically
- sets the corresponding `force-g*-on-output' property)
-
-`force-g0-on-output'
-`force-g1-on-output'
-`force-g2-on-output'
-`force-g2-on-output'
- If non-nil, send an explicit designation sequence on output before
- using the specified register.
-
-`short'
- If non-nil, use the short forms "ESC $ @", "ESC $ A", and
- "ESC $ B" on output in place of the full designation sequences
- "ESC $ ( @", "ESC $ ( A", and "ESC $ ( B".
-
-`no-ascii-eol'
- If non-nil, don't designate ASCII to G0 at each end of line on output.
- Setting this to non-nil also suppresses other state-resetting that
- normally happens at the end of a line.
-
-`no-ascii-cntl'
- If non-nil, don't designate ASCII to G0 before control chars on output.
-
-`seven'
- If non-nil, use 7-bit environment on output. Otherwise, use 8-bit
- environment.
-
-`lock-shift'
- If non-nil, use locking-shift (SO/SI) instead of single-shift
- or designation by escape sequence.
-
-`no-iso6429'
- If non-nil, don't use ISO6429's direction specification.
-
-`escape-quoted'
- If non-nil, literal control characters that are the same as
- the beginning of a recognized ISO2022 or ISO6429 escape sequence
- (in particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E),
- SS3 (0x8F), and CSI (0x9B)) are "quoted" with an escape character
- so that they can be properly distinguished from an escape sequence.
- (Note that doing this results in a non-portable encoding.) This
- encoding flag is used for byte-compiled files. Note that ESC
- is a good choice for a quoting character because there are no
- escape sequences whose second byte is a character from the Control-0
- or Control-1 character sets; this is explicitly disallowed by the
- ISO2022 standard.
-
-`input-charset-conversion'
- A list of conversion specifications, specifying conversion of
- characters in one charset to another when decoding is performed.
- Each specification is a list of two elements: the source charset,
- and the destination charset.
-
-`output-charset-conversion'
- A list of conversion specifications, specifying conversion of
- characters in one charset to another when encoding is performed.
- The form of each specification is the same as for
- `input-charset-conversion'.
-
-
-
-The following additional properties are recognized (and required)
-if TYPE is `ccl':
-
-`decode'
- CCL program used for decoding (converting to internal format).
-
-`encode'
- CCL program used for encoding (converting to external format).
-
-
-The following additional properties are recognized if TYPE is `chain':
-
-`chain'
- List of coding systems to be chained together, in decoding order.
-
-`canonicalize-after-coding'
- Coding system to be returned by the detector routines in place of
- this coding system.
-
-
-
-The following additional properties are recognized if TYPE is `unicode':
-
-`unicode-type'
- One of `utf-16', `utf-8', `ucs-4', or `utf-7' (the latter is not
- yet implemented). `utf-16' is the basic two-byte encoding;
- `ucs-4' is the four-byte encoding; `utf-8' is an ASCII-compatible
- variable-width 8-bit encoding; `utf-7' is a 7-bit encoding using
- only characters that will safely pass through all mail gateways.
- [[ This should be \"transformation format\". There should also be
- `ucs-2' (or `bmp' -- no surrogates) and `utf-32' (range checked). ]]
-
-`little-endian'
- If non-nil, `utf-16' and `ucs-4' will write out the groups of two
- or four bytes little-endian instead of big-endian. This is required,
- for example, under Windows.
-
-`need-bom'
- If non-nil, a byte order mark (BOM, or Unicode FFFE) should be
- written out at the beginning of the data. This serves both to
- identify the endianness of the following data and to mark the
- data as Unicode (at least, this is how Windows uses it).
- [[ The correct term is \"signature\", since this technique may also
- be used with UTF-8. That is the term used in the standard. ]]
-
-
-The following additional properties are recognized if TYPE is
-`mswindows-multibyte':
-
-`code-page'
- Either a number (specifying a particular code page) or one of the
- symbols `ansi', `oem', `mac', or `ebcdic', specifying the ANSI,
- OEM, Macintosh, or EBCDIC code page associated with a particular
- locale (given by the `locale' property). NOTE: EBCDIC code pages
- only exist in Windows 2000 and later.
-
-`locale'
- If `code-page' is a symbol, this specifies the locale whose code
- page of the corresponding type should be used. This should be
- one of the following: A cons of two strings, (LANGUAGE
- . SUBLANGUAGE) (see `mswindows-set-current-locale'); a string (a
- language; SUBLANG_DEFAULT, i.e. the default sublanguage, is
- used); or one of the symbols `current', `user-default', or
- `system-default', corresponding to the values of
- `mswindows-current-locale', `mswindows-user-default-locale', or
- `mswindows-system-default-locale', respectively.
-
-
-
-The following additional properties are recognized if TYPE is `undecided':
-\[[ Doesn't GNU use \"detect-*\" for the following two? ]]
-
-`do-eol'
- Do EOL detection.
-
-`do-coding'
- Do encoding detection.
-
-`coding-system'
- If encoding detection is not done, use the specified coding system
- to do decoding. This is used internally when implementing coding
- systems with an EOL type that specifies autodetection (the default),
- so that the detector routines return the proper subsidiary.
-
-
-
-The following additional property is recognized if TYPE is `gzip':
-
-`level'
- Compression level: 0 through 9, or `default' (currently 6).
-
+DEFUN ("make-coding-system-internal", Fmake_coding_system_internal, 2, 4, 0, /*
+See `make-coding-system'. This does much of the work of that function.
+Without Mule support, it does all the work of that function.
*/
(name, type, description, props))
{
@@ -2475,6 +2165,99 @@
CODING_ENCODE);
}
+DEFUN ("query-coding-region", Fquery_coding_region, 3, 7, 0, /*
+Work out whether CODING-SYSTEM can losslessly encode a region.
+
+START and END are the beginning and end of the region to check.
+CODING-SYSTEM is the coding system to try.
+
+Optional argument BUFFER is the buffer to check, and defaults to the current
+buffer.
+
+IGNORE-INVALID-SEQUENCESP, also an optional argument, says to treat XEmacs
+characters which have an unambiguous encoded representation, despite being
+undefined in what they represent, as encodable. These chiefly arise with
+variable-length encodings like UTF-8 and UTF-16, where an invalid sequence
+is passed through to XEmacs as a sequence of characters with a defined
+correspondence to the octets on disk, but no non-error semantics; see the
+`invalid-sequence-coding-system' argument to `set-language-info'.
+
+They can also arise with fixed-length encodings like ISO 8859-7, where
+certain octets on disk have undefined values, and treating them as
+corresponding to the ISO 8859-1 characters with the same numerical values
+may lead to data that is not understood by other applications.
+
+Optional argument ERRORP says to signal a `text-conversion-error' if some
+character in the region cannot be encoded, and defaults to nil.
+
+Optional argument HIGHLIGHT says to display unencodable characters in the
+region using `query-coding-warning-face'. It defaults to nil.
+
+This function returns a list; the intention is that callers use
+`multiple-value-bind' or the related CL multiple value functions to deal
+with it. The first element is `t' if the region can be encoded using
+CODING-SYSTEM, or `nil' if not. The second element is `nil' if the region
+can be encoded using CODING-SYSTEM; otherwise, it is a range table
+describing the positions of the unencodable characters. Ranges that
+describe characters that would be ignored were IGNORE-INVALID-SEQUENCESP
+non-nil map to the symbol `invalid-sequence'; other ranges map to the symbol
+`unencodable'. If IGNORE-INVALID-SEQUENCESP is non-nil, all ranges will map
+to the symbol `unencodable'. See `make-range-table' for more details of
+range tables.
+*/
+ (start, end, coding_system, buffer, ignore_invalid_sequencesp,
+ errorp, highlight))
+{
+ Charbpos b, e;
+ struct buffer *buf = decode_buffer (buffer, 1);
+ Lisp_Object result, first;
+ int flags = 0, speccount = specpdl_depth ();
+
+ coding_system = Fget_coding_system (coding_system);
+
+ get_buffer_range_char (buf, start, end, &b, &e, 0);
+
+ if (buf != current_buffer)
+ {
+ record_unwind_protect (save_current_buffer_restore, Fcurrent_buffer ());
+ set_buffer_internal (buf);
+ }
+
+ record_unwind_protect (save_excursion_restore, save_excursion_save ());
+
+ BUF_SET_PT (buf, b);
+
+ if (!NILP (ignore_invalid_sequencesp))
+ {
+ flags |= QUERY_METHOD_IGNORE_INVALID_SEQUENCES;
+ }
+
+ if (!NILP (errorp))
+ {
+ flags |= QUERY_METHOD_ERRORP;
+ }
+
+ if (!NILP (highlight))
+ {
+ flags |= QUERY_METHOD_HIGHLIGHT;
+ }
+
+ result = XCODESYSMETH_OR_GIVEN (coding_system, query,
+ (coding_system, buf, e, flags), Qunbound);
+
+ if (UNBOUNDP (result))
+ {
+ signal_error (Qtext_conversion_error,
+ "Coding system doesn't say what it can encode",
+ coding_system);
+ }
+
+ first = (NILP (result)) ? Qt : Qnil;
+
+ return unbind_to_1 (speccount, values2 (first, result));
+}
+
+
/************************************************************************/
/* Chain methods */
@@ -4550,7 +4333,7 @@
DEFSUBR (Fget_coding_system);
DEFSUBR (Fcoding_system_list);
DEFSUBR (Fcoding_system_name);
- DEFSUBR (Fmake_coding_system);
+ DEFSUBR (Fmake_coding_system_internal);
DEFSUBR (Fcopy_coding_system);
DEFSUBR (Fcoding_system_canonical_name_p);
DEFSUBR (Fcoding_system_alias_p);
@@ -4573,6 +4356,7 @@
DEFSUBR (Fdetect_coding_region);
DEFSUBR (Fdecode_coding_region);
DEFSUBR (Fencode_coding_region);
+ DEFSUBR (Fquery_coding_region);
DEFSYMBOL_MULTIWORD_PREDICATE (Qcoding_systemp);
DEFSYMBOL (Qno_conversion);
DEFSYMBOL (Qconvert_eol);
@@ -4620,6 +4404,10 @@
DEFSYMBOL (Qposix_charset_to_coding_system_hash);
DEFSYMBOL (Qescape_quoted);
+
+ DEFSYMBOL (Qquery_coding_warning_face);
+ DEFSYMBOL (Qquery_coding_clear_highlights);
+ DEFSYMBOL (Qaliases);
#ifdef HAVE_ZLIB
DEFSYMBOL (Qgzip);
@@ -4851,7 +4639,7 @@
void
complex_vars_of_file_coding (void)
{
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qconvert_eol_cr, Qconvert_eol,
build_msg_string ("Convert CR to LF"),
nconc2 (list6 (Qdocumentation,
@@ -4865,7 +4653,7 @@
to do so! */
list2 (Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qconvert_eol_lf, Qconvert_eol,
build_msg_string ("Convert LF to LF (do nothing)"),
nconc2 (list6 (Qdocumentation,
@@ -4878,7 +4666,7 @@
to do so! */
list2 (Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qconvert_eol_crlf, Qconvert_eol,
build_msg_string ("Convert CRLF to LF"),
nconc2 (list6 (Qdocumentation,
@@ -4892,7 +4680,7 @@
to do so! */
list2 (Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qconvert_eol_autodetect, Qconvert_eol,
build_msg_string ("Autodetect EOL type"),
nconc2 (list6 (Qdocumentation,
@@ -4905,7 +4693,7 @@
to do so! */
list2 (Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qundecided, Qundecided,
build_msg_string ("Undecided (auto-detect)"),
nconc2 (list4 (Qdocumentation,
@@ -4918,7 +4706,7 @@
though, I don't think.) */
Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(intern ("undecided-dos"), Qundecided,
build_msg_string ("Undecided (auto-detect) (CRLF)"),
nconc2 (list4 (Qdocumentation,
@@ -4928,7 +4716,7 @@
list4 (Qdo_coding, Qt,
Qeol_type, Qcrlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(intern ("undecided-unix"), Qundecided,
build_msg_string ("Undecided (auto-detect) (LF)"),
nconc2 (list4 (Qdocumentation,
@@ -4938,7 +4726,7 @@
list4 (Qdo_coding, Qt,
Qeol_type, Qlf)));
- Fmake_coding_system
+ Fmake_coding_system_internal
(intern ("undecided-mac"), Qundecided,
build_msg_string ("Undecided (auto-detect) (CR)"),
nconc2 (list4 (Qdocumentation,
@@ -4949,14 +4737,14 @@
Qeol_type, Qcr)));
/* Need to create this here or we're really screwed. */
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qraw_text, Qno_conversion,
build_msg_string ("Raw Text"),
list4 (Qdocumentation,
build_msg_string ("Raw text converts only line-break codes, and acts otherwise like `binary'."),
Qmnemonic, build_string ("Raw")));
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qbinary, Qno_conversion,
build_msg_string ("Binary"),
list6 (Qdocumentation,
diff -r 9c97a5a8c241 src/file-coding.h
--- a/src/file-coding.h Wed Feb 11 15:30:59 2009 +0000
+++ b/src/file-coding.h Sat Apr 11 14:35:00 2009 +0100
@@ -230,7 +230,8 @@
ccl_coding_system,
shift_jis_coding_system,
big5_coding_system,
- unicode_coding_system
+ unicode_coding_system,
+ fixed_width_coding_system
};
struct coding_system_methods
@@ -318,6 +319,26 @@
const unsigned char *src,
unsigned_char_dynarr *dst, Bytecount n);
+ /* Query method: Check whether the buffer text between point and END
+ can be encoded by this coding system. Returns
+ either nil (meaning the text can be encoded by the coding system) or a
+ range table object describing the stretches that the coding system
+ cannot encode.
+
+ Possible values for flags are below, search for
+ QUERY_METHOD_IGNORE_INVALID_SEQUENCES.
+
+ Coding systems are expected to be able to behave sensibly with all
+ possible octets on decoding, which is why this method is only available
+ for encoding. */
+ Lisp_Object (*query_method) (Lisp_Object coding_system, struct buffer *buf,
+ Charbpos end, int flags);
+
+ /* Same as the previous method, but this works in the context of
+ lstreams. (Where the data does need to be copied, unfortunately.) */
+ Lisp_Object (*query_lstream_method) (struct coding_stream *str,
+ const Ibyte *start, Bytecount n);
+
/* Coding mark method: Mark any Lisp objects in the type-specific data
attached to `struct coding_stream'. Optional. */
void (*mark_coding_stream_method) (struct coding_stream *str);
@@ -386,6 +407,22 @@
the coding system object. */
int coding_data_size;
};
+
+/* Values for flags, as passed to query_method. */
+
+#define QUERY_METHOD_IGNORE_INVALID_SEQUENCES 0x0001
+#define QUERY_METHOD_ERRORP 0x0002
+#define QUERY_METHOD_HIGHLIGHT 0x0004
+
+enum query_coding_failure_reasons
+ {
+ query_coding_succeeded = 0,
+ query_coding_unencodable = 1,
+ query_coding_invalid_sequence = 2
+ };
+
+extern Lisp_Object Qquery_coding_warning_face;
+extern Lisp_Object Qquery_coding_clear_highlights;
/***** Calling a coding-system method *****/
@@ -1029,6 +1066,7 @@
#ifdef MULE
DECLARE_CODING_SYSTEM_TYPE (iso2022);
DECLARE_CODING_SYSTEM_TYPE (ccl);
+DECLARE_CODING_SYSTEM_TYPE (fixed_width);
DECLARE_CODING_SYSTEM_TYPE (shift_jis);
DECLARE_CODING_SYSTEM_TYPE (big5);
#endif
diff -r 9c97a5a8c241 src/general-slots.h
--- a/src/general-slots.h Wed Feb 11 15:30:59 2009 +0000
+++ b/src/general-slots.h Sat Apr 11 14:35:00 2009 +0100
@@ -287,6 +287,8 @@
SYMBOL (Qtype);
SYMBOL (Qundecided);
SYMBOL (Qundefined);
+SYMBOL (Qunencodable);
+SYMBOL (Qinvalid_sequence);
SYMBOL (Qunimplemented);
SYMBOL (Qunicode_registries);
SYMBOL (Qunicode_type);
diff -r 9c97a5a8c241 src/intl-win32.c
--- a/src/intl-win32.c Wed Feb 11 15:30:59 2009 +0000
+++ b/src/intl-win32.c Sat Apr 11 14:35:00 2009 +0100
@@ -2349,7 +2349,7 @@
void
complex_vars_of_intl_win32 (void)
{
- Fmake_coding_system
+ Fmake_coding_system_internal
(Qmswindows_unicode, Qunicode,
build_msg_string ("MS Windows Unicode"),
nconc2 (list4 (Qdocumentation,
diff -r 9c97a5a8c241 src/lisp.h
--- a/src/lisp.h Wed Feb 11 15:30:59 2009 +0000
+++ b/src/lisp.h Sat Apr 11 14:35:00 2009 +0100
@@ -4625,7 +4625,7 @@
EXFUN (Fencode_shift_jis_char, 1);
EXFUN (Ffind_coding_system, 1);
EXFUN (Fget_coding_system, 1);
-EXFUN (Fmake_coding_system, 4);
+EXFUN (Fmake_coding_system_internal, 4);
EXFUN (Fset_coding_category_system, 2);
EXFUN (Fset_coding_priority_list, 1);
EXFUN (Fsubsidiary_coding_system, 2);
diff -r 9c97a5a8c241 src/mule-coding.c
--- a/src/mule-coding.c Wed Feb 11 15:30:59 2009 +0000
+++ b/src/mule-coding.c Sat Apr 11 14:35:00 2009 +0100
@@ -36,6 +36,10 @@
#include "charset.h"
#include "mule-ccl.h"
#include "file-coding.h"
+#include "elhash.h"
+#include "rangetab.h"
+#include "buffer.h"
+#include "extents.h"
Lisp_Object Qshift_jis, Qiso2022, Qbig5, Qccl;
@@ -47,6 +51,9 @@
Lisp_Object Qshort, Qno_ascii_eol, Qno_ascii_cntl, Qseven, Qlock_shift;
Lisp_Object Qiso_7, Qiso_8_designate, Qiso_8_1, Qiso_8_2, Qiso_lock_shift;
+
+Lisp_Object Qquery_coding_warning_face, Qfrom_unicode, Qquery_skip_chars,
+ Qinvalid_sequences_skip_chars, Qfixed_width, Qsucceeded;
/************************************************************************/
@@ -3388,6 +3395,500 @@
else
return Qunbound;
}
+
+/************************************************************************/
+/* FIXED_WIDTH methods */
+/************************************************************************/
+
+struct fixed_width_coding_system
+{
+ /* For a FIXED_WIDTH coding system, these specify the CCL programs
+ used for decoding (input) and encoding (output). */
+ Lisp_Object decode;
+ Lisp_Object encode;
+ Lisp_Object from_unicode;
+ Lisp_Object invalid_sequences_skip_chars;
+ Lisp_Object query_skip_chars;
+
+ /* This is not directly accessible from Lisp; it is a concatenation of the
+ previous two strings, used for simplicity of implementation. */
+ Lisp_Object invalid_and_query_skip_chars;
+};
+
+#define CODING_SYSTEM_FIXED_WIDTH_DECODE(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, fixed_width)->decode)
+#define CODING_SYSTEM_FIXED_WIDTH_ENCODE(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, fixed_width)->encode)
+#define CODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, fixed_width)->from_unicode)
+#define CODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, \
+ fixed_width)->invalid_sequences_skip_chars)
+#define CODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, fixed_width)->query_skip_chars)
+#define CODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_TYPE_DATA (codesys, \
+ fixed_width)->invalid_and_query_skip_chars)
+
+#define XCODING_SYSTEM_FIXED_WIDTH_DECODE(codesys) \
+ CODING_SYSTEM_FIXED_WIDTH_DECODE (XCODING_SYSTEM (codesys))
+#define XCODING_SYSTEM_FIXED_WIDTH_ENCODE(codesys) \
+ CODING_SYSTEM_FIXED_WIDTH_ENCODE (XCODING_SYSTEM (codesys))
+#define XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE(codesys) \
+ (CODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (XCODING_SYSTEM (codesys)))
+#define XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS \
+ (XCODING_SYSTEM (codesys)))
+#define XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (XCODING_SYSTEM (codesys)))
+#define XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS(codesys) \
+ (CODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS \
+ (XCODING_SYSTEM(codesys)))
+
+struct fixed_width_coding_stream
+{
+ /* state of the running CCL program */
+ struct ccl_program ccl;
+};
+
+static const struct memory_description
+fixed_width_coding_system_description[] = {
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system, decode) },
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system, encode) },
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system,
+ from_unicode) },
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system,
+ invalid_sequences_skip_chars) },
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system,
+ query_skip_chars) },
+ { XD_LISP_OBJECT, offsetof (struct fixed_width_coding_system,
+ invalid_and_query_skip_chars) },
+ { XD_END }
+};
+
+DEFINE_CODING_SYSTEM_TYPE_WITH_DATA (fixed_width);
+
+static void
+fixed_width_mark (Lisp_Object codesys)
+{
+ mark_object (XCODING_SYSTEM_FIXED_WIDTH_DECODE (codesys));
+ mark_object (XCODING_SYSTEM_FIXED_WIDTH_ENCODE (codesys));
+ mark_object (XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (codesys));
+ mark_object
+ (XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS (codesys));
+ mark_object (XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (codesys) );
+ mark_object
+ (XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS(codesys));
+}
+
+static Bytecount
+fixed_width_convert (struct coding_stream *str, const UExtbyte *src,
+ unsigned_char_dynarr *dst, Bytecount n)
+{
+ struct fixed_width_coding_stream *data =
+ CODING_STREAM_TYPE_DATA (str, fixed_width);
+ Bytecount orign = n;
+
+ data->ccl.last_block = str->eof;
+ /* When applying a CCL program to a stream, SRC must not be NULL -- this
+ is a special signal to the driver that read and write operations are
+ not allowed. The code does not actually look at what SRC points to if
+ N == 0. */
+ ccl_driver (&data->ccl, src ? src : (const unsigned char *) "",
+ dst, n, 0,
+ str->direction == CODING_DECODE ? CCL_MODE_DECODING :
+ CCL_MODE_ENCODING);
+ return orign;
+}
+
+static void
+fixed_width_init_coding_stream (struct coding_stream *str)
+{
+ struct fixed_width_coding_stream *data =
+ CODING_STREAM_TYPE_DATA (str, fixed_width);
+
+ setup_ccl_program (&data->ccl,
+ str->direction == CODING_DECODE ?
+ XCODING_SYSTEM_FIXED_WIDTH_DECODE (str->codesys) :
+ XCODING_SYSTEM_FIXED_WIDTH_ENCODE (str->codesys));
+}
+
+static void
+fixed_width_rewind_coding_stream (struct coding_stream *str)
+{
+ fixed_width_init_coding_stream (str);
+}
+
+static void
+fixed_width_init (Lisp_Object codesys)
+{
+ XCODING_SYSTEM_FIXED_WIDTH_DECODE (codesys) = Qnil;
+ XCODING_SYSTEM_FIXED_WIDTH_ENCODE (codesys) = Qnil;
+ XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (codesys) = Qnil;
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS (codesys) = Qnil;
+ XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (codesys) = Qnil;
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS(codesys) = Qnil;
+}
+
+static int
+fixed_width_putprop (Lisp_Object codesys, Lisp_Object key,
+ Lisp_Object value)
+{
+ struct ccl_program test_ccl;
+
+ if (EQ (key, Qdecode) || EQ (key, Qencode))
+ {
+ /* Check if the CCL infrastructure thinks this is a sane CCL
+ program: */
+ if (setup_ccl_program (&test_ccl, value) < 0)
+ {
+ invalid_argument ("Invalid CCL program", value);
+ }
+
+ if (EQ (key, Qdecode))
+ {
+ XCODING_SYSTEM_FIXED_WIDTH_DECODE (codesys) = value;
+ }
+ else
+ {
+ XCODING_SYSTEM_FIXED_WIDTH_ENCODE (codesys) = value;
+ }
+ }
+ else if (EQ (key, Qfrom_unicode))
+ {
+ CHECK_HASH_TABLE (value);
+ XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (codesys) = value;
+ }
+ else if (EQ (key, Qinvalid_sequences_skip_chars))
+ {
+ CHECK_STRING (value);
+
+ /* Make sure Lisp can't make our data inconsistent: */
+ value = Fcopy_sequence (value);
+
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS (codesys)
+ = value;
+
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS (codesys)
+ = concat2 (value,
+ XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (codesys));
+ }
+ else if (EQ (key, Qquery_skip_chars))
+ {
+ CHECK_STRING (value);
+
+ /* Make sure Lisp can't make our data inconsistent: */
+ value = Fcopy_sequence (value);
+
+ XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (codesys) = value;
+
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS (codesys)
+ = concat2 (value,
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS
+ (codesys));
+ }
+ else
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+static Lisp_Object
+fixed_width_getprop (Lisp_Object codesys, Lisp_Object prop)
+{
+ if (EQ (prop, Qdecode))
+ {
+ return XCODING_SYSTEM_FIXED_WIDTH_DECODE (codesys);
+ }
+ else if (EQ (prop, Qencode))
+ {
+ return XCODING_SYSTEM_FIXED_WIDTH_ENCODE (codesys);
+ }
+ else if (EQ (prop, Qfrom_unicode))
+ {
+ return XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (codesys);
+ }
+ else if (EQ (prop, Qinvalid_sequences_skip_chars))
+ {
+ /* Make sure Lisp can't make our data inconsistent: */
+ return
+ Fcopy_sequence
+ (XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS (codesys));
+ }
+ else if (EQ (prop, Qquery_skip_chars))
+ {
+ return
+ Fcopy_sequence (XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS (codesys));
+ }
+
+ return Qunbound;
+}
+
+static Lisp_Object Vfixed_width_query_ranges_cache;
+
+static Lisp_Object
+fixed_width_skip_chars_data_given_strings (Lisp_Object string,
+ Lisp_Object query_skip_chars,
+ Lisp_Object
+ invalid_sequences_skip_chars,
+ Binbyte *fastmap,
+ int fastmap_len)
+{
+ Lisp_Object result = Fgethash (string,
+ Vfixed_width_query_ranges_cache,
+ Qnil);
+ REGISTER Ibyte *p, *pend;
+ REGISTER Ichar c;
+
+ memset (fastmap, query_coding_unencodable, fastmap_len);
+
+ if (!NILP (result))
+ {
+ int i;
+ Lisp_Object ranged;
+ assert (RANGE_TABLEP (result));
+ for (i = 0; i < fastmap_len; ++i)
+ {
+ ranged = Fget_range_table (make_int (i), result, Qnil);
+
+ if (EQ (ranged, Qsucceeded))
+ {
+ fastmap [i] = query_coding_succeeded;
+ }
+ else if (EQ (ranged, Qinvalid_sequence))
+ {
+ fastmap [i] = query_coding_invalid_sequence;
+ }
+ }
+ return result;
+ }
+
+ result = Fmake_range_table (Qstart_closed_end_closed);
+
+ p = XSTRING_DATA (query_skip_chars);
+ pend = p + XSTRING_LENGTH (query_skip_chars);
+
+ while (p != pend)
+ {
+ c = itext_ichar (p);
+
+ INC_IBYTEPTR (p);
+
+ if (c == '\\')
+ {
+ if (p == pend) break;
+ c = itext_ichar (p);
+ INC_IBYTEPTR (p);
+ }
+
+ if (p != pend && *p == '-')
+ {
+ Ichar cend;
+
+ /* Skip over the dash. */
+ p++;
+ if (p == pend) break;
+ cend = itext_ichar (p);
+
+ Fput_range_table (make_int (c), make_int (cend), Qsucceeded,
+ result);
+
+ while (c <= cend && c < fastmap_len)
+ {
+ fastmap[c] = query_coding_succeeded;
+ c++;
+ }
+
+ INC_IBYTEPTR (p);
+ }
+ else
+ {
+ if (c < fastmap_len)
+ fastmap[c] = query_coding_succeeded;
+
+ Fput_range_table (make_int (c), make_int (c), Qsucceeded, result);
+ }
+ }
+
+
+ p = XSTRING_DATA (invalid_sequences_skip_chars);
+ pend = p + XSTRING_LENGTH (invalid_sequences_skip_chars);
+
+ while (p != pend)
+ {
+ c = itext_ichar (p);
+
+ INC_IBYTEPTR (p);
+
+ if (c == '\\')
+ {
+ if (p == pend) break;
+ c = itext_ichar (p);
+ INC_IBYTEPTR (p);
+ }
+
+ if (p != pend && *p == '-')
+ {
+ Ichar cend;
+
+ /* Skip over the dash. */
+ p++;
+ if (p == pend) break;
+ cend = itext_ichar (p);
+
+ Fput_range_table (make_int (c), make_int (cend), Qinvalid_sequence,
+ result);
+
+ while (c <= cend && c < fastmap_len)
+ {
+ fastmap[c] = query_coding_invalid_sequence;
+ c++;
+ }
+
+ INC_IBYTEPTR (p);
+ }
+ else
+ {
+ if (c < fastmap_len)
+ fastmap[c] = query_coding_invalid_sequence;
+
+ Fput_range_table (make_int (c), make_int (c), Qinvalid_sequence,
+ result);
+ }
+ }
+
+ Fputhash (string, result, Vfixed_width_query_ranges_cache);
+
+ return result;
+}
+
+static Lisp_Object
+fixed_width_query (Lisp_Object codesys, struct buffer *buf,
+ Charbpos end, int flags)
+{
+ Charbpos pos = BUF_PT (buf), fail_range_start, fail_range_end;
+ Charbpos pos_byte = BYTE_BUF_PT (buf);
+ Lisp_Object skip_chars_range_table, from_unicode, checked_unicode,
+ result = Qnil;
+ enum query_coding_failure_reasons failed_reason,
+ previous_failed_reason = query_coding_succeeded;
+ Binbyte fastmap[0xff];
+
+ from_unicode = XCODING_SYSTEM_FIXED_WIDTH_FROM_UNICODE (codesys);
+
+ skip_chars_range_table =
+ fixed_width_skip_chars_data_given_strings
+ ((flags & QUERY_METHOD_IGNORE_INVALID_SEQUENCES ?
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_AND_QUERY_SKIP_CHARS
+ (codesys) :
+ XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS(codesys)),
+ XCODING_SYSTEM_FIXED_WIDTH_QUERY_SKIP_CHARS(codesys),
+ (flags & QUERY_METHOD_IGNORE_INVALID_SEQUENCES ?
+ XCODING_SYSTEM_FIXED_WIDTH_INVALID_SEQUENCES_SKIP_CHARS
+ (codesys) : build_string("")),
+ fastmap, (int)(sizeof (fastmap)));
+
+ if (flags & QUERY_METHOD_HIGHLIGHT)
+ {
+ /* It's okay to call Lisp here, the only non-stack object we may have
+ allocated up to this point is skip_chars_range_table, and that's
+ reachable from its entry in Vfixed_width_query_ranges_cache. */
+ call3 (Qquery_coding_clear_highlights, make_int (pos), make_int (end),
+ wrap_buffer (buf));
+ }
+
+ while (pos < end)
+ {
+ Ichar ch = BYTE_BUF_FETCH_CHAR (buf, pos_byte);
+ if ((ch < (int) (sizeof(fastmap))) ?
+ (fastmap[ch] == query_coding_succeeded) :
+ (EQ (Qsucceeded, Fget_range_table (make_int (ch),
+ skip_chars_range_table, Qnil))))
+ {
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ }
+ else
+ {
+ fail_range_start = pos;
+ while ((pos < end) &&
+ ((!(flags & QUERY_METHOD_IGNORE_INVALID_SEQUENCES) &&
+ EQ (Qinvalid_sequence, Fget_range_table
+ (make_int (ch), skip_chars_range_table, Qnil))
+ && (failed_reason = query_coding_invalid_sequence))
+ || ((NILP ((checked_unicode =
+ Fgethash (Fchar_to_unicode (make_char (ch)),
+ from_unicode, Qnil))))
+ && (failed_reason = query_coding_unencodable)))
+ && (previous_failed_reason == query_coding_succeeded
+ || previous_failed_reason == failed_reason))
+ {
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ ch = BYTE_BUF_FETCH_CHAR (buf, pos_byte);
+ previous_failed_reason = failed_reason;
+ }
+
+ if (fail_range_start == pos)
+ {
+ /* The character can actually be encoded; move on. */
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ }
+ else
+ {
+ assert (previous_failed_reason == query_coding_invalid_sequence
+ || previous_failed_reason == query_coding_unencodable);
+
+ if (flags & QUERY_METHOD_ERRORP)
+ {
+ DECLARE_EISTRING (error_details);
+
+ eicpy_ascii (error_details, "Cannot encode ");
+ eicat_lstr (error_details,
+ make_string_from_buffer (buf, fail_range_start,
+ pos - fail_range_start));
+ eicat_ascii (error_details, " using coding system");
+
+ signal_error (Qtext_conversion_error,
+ (const CIbyte *)(eidata (error_details)),
+ XCODING_SYSTEM_NAME (codesys));
+ }
+
+ if (NILP (result))
+ {
+ result = Fmake_range_table (Qstart_open_end_closed);
+ }
+
+ fail_range_end = pos;
+
+ Fput_range_table (make_int (fail_range_start),
+ make_int (fail_range_end),
+ (previous_failed_reason
+ == query_coding_unencodable ?
+ Qunencodable : Qinvalid_sequence),
+ result);
+ previous_failed_reason = query_coding_succeeded;
+
+ if (flags & QUERY_METHOD_HIGHLIGHT)
+ {
+ Lisp_Object extent
+ = Fmake_extent (make_int (fail_range_start),
+ make_int (fail_range_end),
+ wrap_buffer (buf));
+
+ Fset_extent_priority
+ (extent, make_int (2 + mouse_highlight_priority));
+ Fset_extent_face (extent, Qquery_coding_warning_face);
+ }
+ }
+ }
+ }
+
+ return result;
+}
/************************************************************************/
@@ -3430,6 +3931,13 @@
DEFSYMBOL (Qiso_8_1);
DEFSYMBOL (Qiso_8_2);
DEFSYMBOL (Qiso_lock_shift);
+
+ DEFSYMBOL (Qquery_coding_warning_face);
+ DEFSYMBOL (Qfrom_unicode);
+ DEFSYMBOL (Qinvalid_sequences_skip_chars);
+ DEFSYMBOL (Qquery_skip_chars);
+ DEFSYMBOL (Qfixed_width);
+ DEFSYMBOL (Qsucceeded);
}
void
@@ -3465,6 +3973,17 @@
CODING_SYSTEM_HAS_METHOD (ccl, putprop);
CODING_SYSTEM_HAS_METHOD (ccl, getprop);
+ INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA (fixed_width,
+ "fixed-width-coding-system-p");
+ CODING_SYSTEM_HAS_METHOD (fixed_width, mark);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, convert);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, query);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, init);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, init_coding_stream);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, rewind_coding_stream);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, putprop);
+ CODING_SYSTEM_HAS_METHOD (fixed_width, getprop);
+
INITIALIZE_CODING_SYSTEM_TYPE (shift_jis, "shift-jis-coding-system-p");
CODING_SYSTEM_HAS_METHOD (shift_jis, convert);
@@ -3485,6 +4004,7 @@
{
REINITIALIZE_CODING_SYSTEM_TYPE (iso2022);
REINITIALIZE_CODING_SYSTEM_TYPE (ccl);
+ REINITIALIZE_CODING_SYSTEM_TYPE (fixed_width);
REINITIALIZE_CODING_SYSTEM_TYPE (shift_jis);
REINITIALIZE_CODING_SYSTEM_TYPE (big5);
}
@@ -3497,4 +4017,9 @@
void
vars_of_mule_coding (void)
{
-}
+ /* This needs to be HASH_TABLE_EQ, there's a corner case where
+ HASH_TABLE_EQUAL won't work. */
+ Vfixed_width_query_ranges_cache
+ = make_lisp_hash_table (32, HASH_TABLE_KEY_WEAK, HASH_TABLE_EQ);
+ staticpro (&Vfixed_width_query_ranges_cache);
+}
diff -r 9c97a5a8c241 src/symeval.h
--- a/src/symeval.h Wed Feb 11 15:30:59 2009 +0000
+++ b/src/symeval.h Sat Apr 11 14:35:00 2009 +0100
@@ -488,6 +488,8 @@
void flush_all_buffer_local_cache (void);
+#define values2 list2
+
END_C_DECLS
#endif /* INCLUDED_symeval_h_ */
diff -r 9c97a5a8c241 src/unicode.c
--- a/src/unicode.c Wed Feb 11 15:30:59 2009 +0000
+++ b/src/unicode.c Sat Apr 11 14:35:00 2009 +0100
@@ -2817,6 +2817,147 @@
write_c_string (printcharfun, ")");
}
+static Lisp_Object
+unicode_query (Lisp_Object codesys, struct buffer *buf,
+ Charbpos end, int flags)
+{
+ Charbpos pos = BUF_PT (buf), fail_range_start, fail_range_end;
+ Charbpos pos_byte = BYTE_BUF_PT (buf);
+ Lisp_Object skip_chars_range_table, result = Qnil;
+ enum query_coding_failure_reasons failed_reason,
+ previous_failed_reason = query_coding_succeeded;
+ Binbyte *fastmap;
+ int checked_unicode, invalid_lower_limit, invalid_upper_limit;
+
+ switch (XCODING_SYSTEM_UNICODE_TYPE (codesys))
+ {
+ case UNICODE_UTF_8:
+ invalid_lower_limit = UNICODE_ERROR_OCTET_RANGE_START + 0x80;
+ invalid_upper_limit = UNICODE_ERROR_OCTET_RANGE_START + 0xFF;
+ break;
+ case UNICODE_UTF_7:
+ /* #### Work out what to do here in reality, read the spec and decide
+ which octets are invalid. */
+ ABORT();
+ break;
+ default:
+ invalid_lower_limit = UNICODE_ERROR_OCTET_RANGE_START;
+ invalid_upper_limit = UNICODE_ERROR_OCTET_RANGE_START + 0xFF;
+ }
+
+ if (flags & QUERY_METHOD_HIGHLIGHT)
+ {
+ /* It's okay to call Lisp here, the only non-stack object we may have
+ allocated up to this point is skip_chars_range_table, and that's
+ reachable from its entry in Vfixed_width_query_ranges_cache. */
+ call3 (Qquery_coding_clear_highlights, make_int (pos), make_int (end),
+ wrap_buffer (buf));
+ }
+
+ if (flags & QUERY_METHOD_IGNORE_INVALID_SEQUENCES)
+ {
+ skip_chars_range_table = unicode_invalid_and_query_skip_chars;
+ fastmap = unicode_invalid_and_query_fastmap;
+ }
+ else
+ {
+ skip_chars_range_table = unicode_query_skip_chars;
+ fastmap = unicode_query_fastmap;
+ }
+
+ assert (countof(unicode_query_fastmap)
+ == countof (unicode_invalid_and_query_fastmap));
+
+ while (pos < end)
+ {
+ Ichar ch = BYTE_BUF_FETCH_CHAR (buf, pos_byte);
+ if ((ch < (int)countof(unicode_query_fastmap)) ?
+ (fastmap[ch] == query_coding_succeeded) :
+ (EQ (Qsucceeded, Fget_range_table (make_int (ch),
+ skip_chars_range_table, Qnil))))
+ {
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ }
+ else
+ {
+ fail_range_start = pos;
+ while ((pos < end) &&
+ ((checked_unicode = ichar_to_unicode (make_char (ch)),
+ -1 == checked_unicode
+ && (failed_reason = query_coding_unencodable))
+ || (!(flags & QUERY_METHOD_IGNORE_INVALID_SEQUENCES) &&
+ (invalid_lower_limit <= checked_unicode) &&
+ (checked_unicode <= invalid_upper_limit)
+ && (failed_reason = query_coding_invalid_sequence)))
+ && (previous_failed_reason == query_coding_succeeded
+ || previous_failed_reason == failed_reason))
+ {
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ ch = BYTE_BUF_FETCH_CHAR (buf, pos_byte);
+ previous_failed_reason = failed_reason;
+ }
+
+ if (fail_range_start == pos)
+ {
+ /* The character can actually be encoded; move on. */
+ pos++;
+ INC_BYTEBPOS (buf, pos_byte);
+ }
+ else
+ {
+ assert (previous_failed_reason == query_coding_invalid_sequence
+ || previous_failed_reason == query_coding_unencodable);
+
+ if (flags & QUERY_METHOD_ERRORP)
+ {
+ DECLARE_EISTRING (error_details);
+
+ eicpy_ascii (error_details, "Cannot encode ");
+ eicat_lstr (error_details,
+ make_string_from_buffer (buf, fail_range_start,
+ pos - fail_range_start));
+ eicat_ascii (error_details, " using coding system");
+
+ signal_error (Qtext_conversion_error,
+ (const CIbyte *)(eidata (error_details)),
+ XCODING_SYSTEM_NAME (codesys));
+ }
+
+ if (NILP (result))
+ {
+ result = Fmake_range_table (Qstart_open_end_closed);
+ }
+
+ fail_range_end = pos;
+
+ Fput_range_table (make_int (fail_range_start),
+ make_int (fail_range_end),
+ (previous_failed_reason
+ == query_coding_unencodable ?
+ Qunencodable : Qinvalid_sequence),
+ result);
+ previous_failed_reason = query_coding_succeeded;
+
+ if (flags & QUERY_METHOD_HIGHLIGHT)
+ {
+ Lisp_Object extent
+ = Fmake_extent (make_int (fail_range_start),
+ make_int (fail_range_end),
+ wrap_buffer (buf));
+
+ Fset_extent_priority
+ (extent, make_int (2 + mouse_highlight_priority));
+ Fset_extent_face (extent, Qquery_coding_warning_face);
+ }
+ }
+ }
+ }
+
+ return result;
+}
+
int
dfc_coding_system_is_unicode (
#ifdef WIN32_ANY
@@ -2889,6 +3030,7 @@
INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA (unicode, "unicode-coding-system-p");
CODING_SYSTEM_HAS_METHOD (unicode, print);
CODING_SYSTEM_HAS_METHOD (unicode, convert);
+ CODING_SYSTEM_HAS_METHOD (unicode, query);
CODING_SYSTEM_HAS_METHOD (unicode, init_coding_stream);
CODING_SYSTEM_HAS_METHOD (unicode, rewind_coding_stream);
CODING_SYSTEM_HAS_METHOD (unicode, putprop);
--
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches