This is the first part of my work to get Mule-UCS interpreting
ISO-8859-{13,14,15,16}. This part can’t break anyone else’s build, but
Norbert will need to do some work to integrate the new package.
2005-02-08 Aidan Kehoe <kehoea(a)parhasard.net>
* latin-euro-standards: New package, refactored from latin-unity.
* latin-euro-latin10.el:
* latin-euro-latin7.el:
* latin-euro-latin8.el:
* latin-euro-latin9.el:
Refactored from latin-unity-latin{7,8,9,10}.el.
* Makefile:
* latin-euro-standards.el:
* latin-euro-standards.texi:
Created.
Index: packages/package-compile.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/package-compile.el,v
retrieving revision 1.65
diff -u -r1.65 package-compile.el
--- packages/package-compile.el 2004/03/23 17:45:05 1.65
+++ packages/package-compile.el 2005/02/08 22:13:41
@@ -205,6 +205,7 @@
;; mule-packages
("edict" . "mule-packages")
("egg-its" . "mule-packages")
+ ("latin-euro-standards" . "mule-packages")
("latin-unity" . "mule-packages")
("leim" . "mule-packages")
("locale" . "mule-packages")
Index: packages/mule-packages/latin-euro-standards/Makefile
===================================================================
RCS file: Makefile
diff -N Makefile
--- /dev/null Tue Feb 8 23:07:32 2005
+++ Makefile Tue Feb 8 23:07:36 2005
@@ -0,0 +1,36 @@
+# Makefile for latin-euro-standards
+
+# 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., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+VERSION = 1.0
+# XEmacs CVS version is canonical.
+AUTHOR_VERSION = $(VERSION)
+MAINTAINER = Aidan Kehoe <aidan(a)xemacs.org>
+PACKAGE = latin-euro-standards
+PKG_TYPE = regular
+REQUIRES = mule-base
+CATEGORY = mule
+
+STANDARD_DOCS = t
+
+ELCS = latin-euro-latin7.elc latin-euro-latin8.elc latin-euro-latin9.elc \
+ latin-euro-latin10.elc latin-euro-standards.elc
+
+EXTRA_DEPENDENCIES = $(ELCS)
+
+include ../../XEmacs.rules
Index: packages/mule-packages/latin-euro-standards/_pkg.el
===================================================================
RCS file: _pkg.el
diff -N _pkg.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ _pkg.el Tue Feb 8 23:07:36 2005
@@ -0,0 +1,5 @@
+;;;###autoload
+(package-provide 'latin-euro-standards
+ :version 1.0
+:author-version "1.0"
+ :type 'regular)
Index: packages/mule-packages/latin-euro-standards/auto-autoloads.el
===================================================================
RCS file: auto-autoloads.el
diff -N auto-autoloads.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ auto-autoloads.el Tue Feb 8 23:07:37 2005
@@ -0,0 +1,46 @@
+;;; DO NOT MODIFY THIS FILE
+(if (featurep 'latin-euro-standards-autoloads) (error "Already loaded"))
+
+;;;### (autoloads nil "_pkg" "latin-euro-standards/_pkg.el")
+
+(package-provide 'latin-euro-standards :version 1.0 :author-version "1.0" :type 'regular)
+
+;;;***
+
+;;;### (autoloads nil "latin-euro-latin10" "latin-euro-standards/latin-euro-latin10.el")
+
+(unless (find-charset 'latin-iso8859-16) (make-charset 'latin-iso8859-16 "ISO8859-16 (Latin 10)" (append (if (emacs-version>= 21 4) '(short-name "Latin-10" long-name "ISO8859-16 (Latin 10)") nil) '(registry "iso8859-16" dimension 1 columns 1 chars 96 final ?f graphic 1 direction l2r))) (require 'cl) (load "cl-macs" nil t) (loop for c from 64 to 127 do (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w")) (mapc (lambda (c) (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w")) '(161 162 163 166 168 170 172 174 175 179 180 181 184 185 186 188 189 190 191)))
+
+(unless (find-coding-system 'iso-8859-16) (make-coding-system 'iso-8859-16 'iso2022 "MIME ISO-8859-16" '(charset-g0 ascii charset-g1 latin-iso8859-16 charset-g2 t charset-g3 t mnemonic "MIME/Ltn-10")))
+
+(unless (assoc "Latin-10" language-info-alist) (defun setup-latin10-environment nil "Set up multilingual environment (MULE) for European Latin-10 users." (interactive) (set-language-environment "Latin-10")) (apply (function set-language-info-alist) (append (backquote ("Latin-10" ((charset ascii latin-iso8859-16) (coding-system iso-8859-16) (coding-priority iso-8859-16) (input-method . "latin-10-prefix") (sample-text \, (format "Hey, if you know Romanian, send sample encoded text (eg, using \"comma-below\"\ncharacters) to xemacs-beta(a)xemacs.org. Please use a MIME\napplication/octet-stream attachment if possible.")) (documentation . "This is a generic language environment for Latin-10 (ISO-8859-16). It\nsupports Romanian and most Western European languages.")))) (if (emacs-version>= 21 1 15) '(("European")) nil))))
+
+;;;***
+
+;;;### (autoloads nil "latin-euro-latin7" "latin-euro-standards/latin-euro-latin7.el")
+
+;;;***
+
+;;;### (autoloads nil "latin-euro-latin8" "latin-euro-standards/latin-euro-latin8.el")
+
+(unless (find-charset 'latin-iso8859-14) (make-charset 'latin-iso8859-14 "ISO8859-14 (Latin 8)" (append (if (emacs-version>= 21 4) '(short-name "Latin-8" long-name "ISO8859-16 (Latin 8)") nil) '(registry "iso8859-14" dimension 1 columns 1 chars 96 final ?_ graphic 1 direction l2r))) (require 'cl) (load "cl-macs" nil t) (loop for c from 32 to 127 do (modify-syntax-entry (make-char 'latin-iso8859-14 c) "w")) (mapc (lambda (c) (modify-syntax-entry (make-char 'latin-iso8859-14 c) "_")) '(163 167 169 173 174 182)))
+
+(unless (find-coding-system 'iso-8859-14) (make-coding-system 'iso-8859-14 'iso2022 "MIME ISO-8859-14" '(charset-g0 ascii charset-g1 latin-iso8859-14 charset-g2 t charset-g3 t mnemonic "MIME/Ltn-8")))
+
+(unless (assoc "Latin-8" language-info-alist) (defun setup-latin8-environment nil "Set up multilingual environment (MULE) for European Latin-8 users." (interactive) (set-language-environment "Latin-8")) (apply (function set-language-info-alist) (append (backquote ("Latin-8" ((charset ascii latin-iso8859-14) (coding-system iso-8859-14) (coding-priority iso-8859-14) (input-method . "latin-8-prefix") (sample-text \, (format "Hey, if you know a Celtic language, send sample encoded text (eg, using\n\"dot-above\" characters) to xemacs-beta(a)xemacs.org. Please use a MIME\napplication/octet-stream attachment if possible.")) (documentation . "This is a generic language environment for Latin-8 (ISO-8859-14). It\nsupports Celtic and most Western European languages.")))) (if (emacs-version>= 21 1 15) '(("European")) nil))))
+
+;;;***
+
+;;;### (autoloads nil "latin-euro-latin9" "latin-euro-standards/latin-euro-latin9.el")
+
+(unless (find-charset 'latin-iso8859-15) (make-charset 'latin-iso8859-15 "ISO8859-15 (Latin 9)" (append (if (emacs-version>= 21 4) '(short-name "Latin-9" long-name "ISO8859-15 (Latin 9)") nil) '(registry "iso8859-15" dimension 1 columns 1 chars 96 final ?b graphic 1 direction l2r))) (require 'cl) (load "cl-macs" nil t) (loop for c from 64 to 127 do (modify-syntax-entry (make-char 'latin-iso8859-15 c) "w")) (mapc (lambda (c) (modify-syntax-entry (make-char 'latin-iso8859-15 c) "w")) '(166 168 180 184 188 189 190)) (modify-syntax-entry (make-char 'latin-iso8859-15 32) "w") (modify-syntax-entry (make-char 'latin-iso8859-15 87) "_") (modify-syntax-entry (make-char 'latin-iso8859-15 119) "_"))
+
+(unless (find-coding-system 'iso-8859-15) (make-coding-system 'iso-8859-15 'iso2022 "MIME ISO-8859-15" '(charset-g0 ascii charset-g1 latin-iso8859-15 charset-g2 t charset-g3 t mnemonic "MIME/Ltn-9")))
+
+(unless (assoc "Latin-9" language-info-alist) (defun setup-latin9-environment nil "Set up multilingual environment (MULE) for European Latin-9 users." (interactive) (set-language-environment "Latin-9")) (apply (function set-language-info-alist) (append (backquote ("Latin-9" ((charset ascii latin-iso8859-15) (coding-system iso-8859-15) (coding-priority iso-8859-15) (input-method . "latin-9-prefix") (sample-text \, (format "Hello, Hej, Tere, Hei, Bonjour, Gr%c%c Gott, Ciao, %cHola!, my %c0.02" (make-char 'latin-iso8859-15 124) (make-char 'latin-iso8859-15 95) (make-char 'latin-iso8859-15 33) (make-char 'latin-iso8859-15 36))) (documentation . "This is a generic language environment for Latin-9 (ISO-8859-15). It\nsupports the Euro and the following languages:\n Danish, Dutch, English, Faeroese, Finnish, French, German, Icelandic,\n Irish, Italian, Norwegian, Portuguese, Spanish, and Swedish.\nWe also have a German specific language environment \"German\".")))) (if (emacs-vers!
ion>= 21 1 15) '(("European")) nil))))
+
+(flet ((define-keysym-as-char (keysym character) (unless (lookup-key global-map (vector keysym)) (define-key global-map (vector keysym) (function self-insert-command))) (unless (get keysym 'ascii-character) (put keysym 'ascii-character character))) (foo (k o) (define-keysym-as-char k (make-char 'latin-iso8859-15 o)))) (foo 'EuroSign 36) (foo 'Scaron 38) (foo 'scaron 40) (foo 'Zcaron 52) (foo 'zcaron 56) (foo 'OE 60) (foo 'oe 61) (foo 'Ydiaeresis 62))
+
+;;;***
+
+(provide 'latin-euro-standards-autoloads)
Index: packages/mule-packages/latin-euro-standards/custom-load.el
===================================================================
RCS file: custom-load.el
diff -N custom-load.el
Index: packages/mule-packages/latin-euro-standards/latin-euro-latin10.el
===================================================================
RCS file: latin-euro-latin10.el
diff -N latin-euro-latin10.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-latin10.el Tue Feb 8 23:07:37 2005
@@ -0,0 +1,108 @@
+;;; latin-euro-latin10.el --- Define language environment
+
+;; Copyright (C) 2002 Free Software Foundation, Inc
+
+;; Author: Stephen J. Turnbull
+;; Keywords: mule, charsets
+;; Created: 2002 October 24 (as latin-unity-latin10.el)
+;; Last-modified: 2005 February 7
+
+;; 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+
+;;; Commentary:
+
+;; Provides the latin-10 language environment, character set and coding
+;; system.
+
+;;; Code:
+
+;; define ISO-8859-16 for XEmacs 21.4 and earlier
+;;;###autoload
+(unless (find-charset 'latin-iso8859-16)
+ ;; Create character set
+ (make-charset
+ 'latin-iso8859-16 "ISO8859-16 (Latin 10)"
+ ;; sheesh, what we do for backward compatibility
+ ;; #### this test and the similar one below probably should be
+ ;; reformulated to use condition-case
+ (append (if (emacs-version>= 21 4)
+ '(short-name "Latin-10"
+ long-name "ISO8859-16 (Latin 10)")
+ nil)
+ '(registry "iso8859-16"
+ dimension 1
+ columns 1
+ chars 96
+ final ?f ; octet 06/06; cf ISO-IR 226
+ graphic 1
+ direction l2r)))
+ ;; For syntax of Latin-10 characters.
+ (require 'cl)
+ (load "cl-macs" nil t)
+ (loop for c from 64 to 127
+ do (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w"))
+ (mapc (lambda (c)
+ (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w"))
+ '(#xA1 #xA2 #xA3 #xA6 #xA8 #xAA #xAC #xAE #xAF
+ #xB3 #xB4 #xB5 #xB8 #xB9 #xBA #xBC #xBD #xBE #xBF))
+ )
+
+;;;###autoload
+(unless (find-coding-system 'iso-8859-16)
+ ;; Create coding system
+ (make-coding-system
+ 'iso-8859-16 'iso2022 "MIME ISO-8859-16"
+ '(charset-g0 ascii
+ charset-g1 latin-iso8859-16
+ charset-g2 t ; grrr
+ charset-g3 t ; grrr
+ mnemonic "MIME/Ltn-10")))
+
+;;;###autoload
+(unless (assoc "Latin-10" language-info-alist)
+ (defun setup-latin10-environment ()
+ "Set up multilingual environment (MULE) for European Latin-10 users."
+ (interactive)
+ (set-language-environment "Latin-10"))
+
+ ;; sheesh, what we do for backward compatibility
+ (apply #'set-language-info-alist
+ (append `("Latin-10"
+ ((charset ascii latin-iso8859-16)
+ (coding-system iso-8859-16)
+ (coding-priority iso-8859-16)
+ (input-method . "latin-10-prefix")
+ (sample-text
+ .
+ ;; #### OK, who knows some Romanian?
+ ,(format "\
+Hey, if you know Romanian, send sample encoded text (eg, using \"comma-below\"
+characters) to xemacs-beta(a)xemacs.org. Please use a MIME
+application/octet-stream attachment if possible."
+ ))
+ (documentation . "\
+This is a generic language environment for Latin-10 (ISO-8859-16). It
+supports Romanian and most Western European languages.")))
+ (if (emacs-version>= 21 1 15)
+ '(("European"))
+ nil))))
+
+(provide 'latin-euro-latin10)
+
+;;; end of latin-euro-latin10.el
Index: packages/mule-packages/latin-euro-standards/latin-euro-latin7.el
===================================================================
RCS file: latin-euro-latin7.el
diff -N latin-euro-latin7.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-latin7.el Tue Feb 8 23:07:37 2005
@@ -0,0 +1,131 @@
+;;; latin-euro-latin7.el --- Define language environment -*- coding: iso-2022-7 -*-
+
+;; Copyright (C) 2002 Free Software Foundation, Inc
+
+;; Author: Stephen J. Turnbull
+;; Keywords: mule, charsets
+;; Created: 2002 March 7 (as latin-unity-latin7.el)
+;; Last-modified: 2005 February 7
+
+;; 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+
+;;; Commentary:
+
+;; Provides the latin-7 language environment, character set, and coding
+;; system.
+
+;;; Code:
+
+;; define ISO-8859-13 for XEmacs 21.4 and earlier
+; don't ;;;###autoload
+(unless (find-charset 'latin-iso8859-13)
+ ;; Create character set
+ (make-charset
+ 'latin-iso8859-13 "ISO8859-13 (Latin 7)"
+ ;; sheesh, what we do for backward compatibility
+ ;; #### this test and the similar one below probably should be
+ ;; reformulated to use condition-case
+ (append (if (emacs-version>= 21 4)
+ '(short-name "Latin-7"
+ long-name "ISO8859-13 (Latin 7)")
+ nil)
+ '(registry "iso8859-13"
+ dimension 1
+ columns 1
+ chars 96
+ final ?Y
+ graphic 1
+ direction l2r)))
+ ;; For syntax of Latin-7 characters.
+ (require 'cl)
+ (load "cl-macs" nil t) ; howcum no #'provide?
+ (loop for c from 64 to 127 ; from ',A@(B' to ',A(B'
+ do (modify-syntax-entry (make-char 'latin-iso8859-13 c) "w"))
+ (mapc (lambda (c)
+ (modify-syntax-entry (make-char 'latin-iso8859-13 c) "w"))
+ '(#xA8 #xAA #xAF #xB8 #xBA #xBF))
+
+ (modify-syntax-entry (make-char 'latin-iso8859-13 32) "w") ; no-break space
+ (modify-syntax-entry (make-char 'latin-iso8859-13 87) "_") ; multiply
+ (modify-syntax-entry (make-char 'latin-iso8859-13 119) "_") ; divide
+ (modify-syntax-entry (make-char 'latin-iso8859-13 127) ".") ; right squote
+ )
+
+(defvar iso8859/13-case-table
+ (let ((table (copy-case-table (standard-case-table))))
+ (mapc (lambda (pair)
+ (put-case-table-pair (make-char 'latin-iso8859-13 (car pair))
+ (make-char 'latin-iso8859-13 (cdr pair))
+ table))
+ '((#xA8 . #xB8) (#xAA . #xBA) (#xAF . #xBF)))
+ (let ((i #xC0))
+ (while (< i #xDF)
+ (unless (= i #xD7)
+ (put-case-table-pair (make-char 'latin-iso8859-13 i)
+ (make-char 'latin-iso8859-13 (+ i #x20))
+ table))
+ (setq i (1+ i))))
+ table)
+ "Case table for Latin 7, right half of ISO 8859/13.")
+
+; don't ;;;###autoload
+(unless (find-coding-system 'iso-8859-13)
+ ;; Create coding system
+ (make-coding-system
+ 'iso-8859-13 'iso2022 "MIME ISO-8859-13"
+ '(charset-g0 ascii
+ charset-g1 latin-iso8859-13
+ charset-g2 t ; grrr
+ charset-g3 t ; grrr
+ mnemonic "MIME/Ltn-7")))
+
+; don't ;;;###autoload
+(unless (assoc "Latin-7" language-info-alist)
+ (defun setup-latin7-environment ()
+ "Set up multilingual environment (MULE) for Baltic Rim Latin-7 users."
+ (interactive)
+ (set-language-environment "Latin-7"))
+
+ ;; sheesh, what we do for backward compatibility
+ (apply #'set-language-info-alist
+ (append `("Latin-7"
+ ((charset ascii latin-iso8859-13)
+ (coding-system iso-8859-13)
+ (coding-priority iso-8859-13)
+ (input-method . "latin-7-prefix")
+ (sample-text
+ .
+ ,(format "\
+Hello, Hej, Tere, Hei, Bonjour, Gr%c%c Gott, Ciao, %cHola!"
+ ;; SMALL U WITH UMLAUT
+ (make-char 'latin-iso8859-13 #x7C)
+ ;; GERMAN SHARP S
+ (make-char 'latin-iso8859-13 #x5F)
+ ;; INVERTED EXCLAMATION MARK
+ (make-char 'latin-iso8859-13 #x21)))
+ (documentation . "\
+This is a generic language environment for Latin-7 (ISO-8859-13). It
+supports the Baltic Rim languages.")))
+ (if (emacs-version>= 21 1 15)
+ '(("Baltic Rim"))
+ nil))))
+
+(provide 'latin-euro-latin7)
+
+;;; end of latin-euro-latin7.el
Index: packages/mule-packages/latin-euro-standards/latin-euro-latin8.el
===================================================================
RCS file: latin-euro-latin8.el
diff -N latin-euro-latin8.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-latin8.el Tue Feb 8 23:07:37 2005
@@ -0,0 +1,106 @@
+;;; latin-euro-latin8.el --- Define language environment
+
+;; Copyright (C) 2002 Free Software Foundation, Inc
+
+;; Author: Stephen J. Turnbull
+;; Keywords: mule, charsets
+;; Created: 2002 October 24 (as latin-unity-latin8.el)
+;; Last-modified: 2005 February 7
+
+;; 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+
+;;; Commentary:
+
+;; Provides the latin-8 language environment, character set and coding
+;; system.
+
+;;; Code:
+
+;; define ISO-8859-14 for XEmacs 21.4 and earlier
+;;;###autoload
+(unless (find-charset 'latin-iso8859-14)
+ ;; Create character set
+ (make-charset
+ 'latin-iso8859-14 "ISO8859-14 (Latin 8)"
+ ;; sheesh, what we do for backward compatibility
+ ;; #### this test and the similar one below probably should be
+ ;; reformulated to use condition-case
+ (append (if (emacs-version>= 21 4)
+ '(short-name "Latin-8"
+ long-name "ISO8859-16 (Latin 8)")
+ nil)
+ '(registry "iso8859-14"
+ dimension 1
+ columns 1
+ chars 96
+ final ?_ ; octet 05/15; cf ISO-IR 199
+ graphic 1
+ direction l2r)))
+ ;; For syntax of Latin-8 characters.
+ (require 'cl)
+ (load "cl-macs" nil t)
+ (loop for c from 32 to 127
+ do (modify-syntax-entry (make-char 'latin-iso8859-14 c) "w"))
+ (mapc (lambda (c)
+ (modify-syntax-entry (make-char 'latin-iso8859-14 c) "_"))
+ '(#xA3 #xA7 #xA9 #xAD #xAE #xB6))
+ )
+
+;;;###autoload
+(unless (find-coding-system 'iso-8859-14)
+ ;; Create coding system
+ (make-coding-system
+ 'iso-8859-14 'iso2022 "MIME ISO-8859-14"
+ '(charset-g0 ascii
+ charset-g1 latin-iso8859-14
+ charset-g2 t ; grrr
+ charset-g3 t ; grrr
+ mnemonic "MIME/Ltn-8")))
+
+;;;###autoload
+(unless (assoc "Latin-8" language-info-alist)
+ (defun setup-latin8-environment ()
+ "Set up multilingual environment (MULE) for European Latin-8 users."
+ (interactive)
+ (set-language-environment "Latin-8"))
+
+ ;; sheesh, what we do for backward compatibility
+ (apply #'set-language-info-alist
+ (append `("Latin-8"
+ ((charset ascii latin-iso8859-14)
+ (coding-system iso-8859-14)
+ (coding-priority iso-8859-14)
+ (input-method . "latin-8-prefix")
+ (sample-text
+ .
+ ;; #### OK, who knows some Gaelic?
+ ,(format "\
+Hey, if you know a Celtic language, send sample encoded text (eg, using
+\"dot-above\" characters) to xemacs-beta(a)xemacs.org. Please use a MIME
+application/octet-stream attachment if possible."
+ ))
+ (documentation . "\
+This is a generic language environment for Latin-8 (ISO-8859-14). It
+supports Celtic and most Western European languages.")))
+ (if (emacs-version>= 21 1 15)
+ '(("European"))
+ nil))))
+
+(provide 'latin-euro-latin8)
+;;; end of latin-euro-latin8.el
Index: packages/mule-packages/latin-euro-standards/latin-euro-latin9.el
===================================================================
RCS file: latin-euro-latin9.el
diff -N latin-euro-latin9.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-latin9.el Tue Feb 8 23:07:38 2005
@@ -0,0 +1,139 @@
+;;; latin-euro-latin9.el --- Define language environment
+
+;; Copyright (C) 2002, 2003 Free Software Foundation, Inc
+
+;; Author: Stephen J. Turnbull
+;; Keywords: mule, charsets
+;; Created: 2002 March 7 (as latin-unity-latin9.el)
+;; Last-modified: 2005 February 7
+
+;; 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+
+;;; Commentary:
+
+;; Provides the latin-9 language environment, character set and coding
+;; system.
+
+;;; Code:
+
+;; define ISO-8859-15 for XEmacs 21.4 and earlier
+;;;###autoload
+(unless (find-charset 'latin-iso8859-15)
+ ;; Create character set
+ (make-charset
+ 'latin-iso8859-15 "ISO8859-15 (Latin 9)"
+ ;; sheesh, what we do for backward compatibility
+ ;; #### this test and the similar one below probably should be
+ ;; reformulated to use condition-case
+ (append (if (emacs-version>= 21 4)
+ '(short-name "Latin-9"
+ long-name "ISO8859-15 (Latin 9)")
+ nil)
+ '(registry "iso8859-15"
+ dimension 1
+ columns 1
+ chars 96
+ final ?b
+ graphic 1
+ direction l2r)))
+ ;; For syntax of Latin-9 characters.
+ (require 'cl)
+ (load "cl-macs" nil t) ; howcum no #'provide?
+ (loop for c from 64 to 127 ; from 'À' to 'ÿ'
+ do (modify-syntax-entry (make-char 'latin-iso8859-15 c) "w"))
+ (mapc (lambda (c)
+ (modify-syntax-entry (make-char 'latin-iso8859-15 c) "w"))
+ '(#xA6 #xA8 #xB4 #xB8 #xBC #xBD #xBE))
+
+ (modify-syntax-entry (make-char 'latin-iso8859-15 32) "w") ; no-break space
+ (modify-syntax-entry (make-char 'latin-iso8859-15 87) "_") ; multiply
+ (modify-syntax-entry (make-char 'latin-iso8859-15 119) "_") ; divide
+ )
+
+;;;###autoload
+(unless (find-coding-system 'iso-8859-15)
+ ;; Create coding system
+ (make-coding-system
+ 'iso-8859-15 'iso2022 "MIME ISO-8859-15"
+ '(charset-g0 ascii
+ charset-g1 latin-iso8859-15
+ charset-g2 t ; grrr
+ charset-g3 t ; grrr
+ mnemonic "MIME/Ltn-9")))
+
+;;;###autoload
+(unless (assoc "Latin-9" language-info-alist)
+ (defun setup-latin9-environment ()
+ "Set up multilingual environment (MULE) for European Latin-9 users."
+ (interactive)
+ (set-language-environment "Latin-9"))
+
+ ;; sheesh, what we do for backward compatibility
+ (apply #'set-language-info-alist
+ (append `("Latin-9"
+ ((charset ascii latin-iso8859-15)
+ (coding-system iso-8859-15)
+ (coding-priority iso-8859-15)
+ (input-method . "latin-9-prefix")
+ (sample-text
+ .
+ ,(format "\
+Hello, Hej, Tere, Hei, Bonjour, Gr%c%c Gott, Ciao, %cHola!, my %c0.02"
+ ;; SMALL U WITH UMLAUT
+ (make-char 'latin-iso8859-15 #x7C)
+ ;; GERMAN SHARP S
+ (make-char 'latin-iso8859-15 #x5F)
+ ;; INVERTED EXCLAMATION MARK
+ (make-char 'latin-iso8859-15 #x21)
+ ;; EURO SIGN
+ (make-char 'latin-iso8859-15 #x24)))
+ (documentation . "\
+This is a generic language environment for Latin-9 (ISO-8859-15). It
+supports the Euro and the following languages:
+ Danish, Dutch, English, Faeroese, Finnish, French, German, Icelandic,
+ Irish, Italian, Norwegian, Portuguese, Spanish, and Swedish.
+We also have a German specific language environment \"German\".")))
+ (if (emacs-version>= 21 1 15)
+ '(("European"))
+ nil))))
+
+;; #### move these to a separate file for keysyms
+;; These are all the ones not in Latin-1.
+
+;;;###autoload
+(flet ((define-keysym-as-char (keysym character)
+ (unless (lookup-key global-map (vector keysym))
+ (define-key global-map (vector keysym) #'self-insert-command))
+ (unless (get keysym 'ascii-character)
+ (put keysym 'ascii-character character)))
+ (foo (k o)
+ (define-keysym-as-char k (make-char 'latin-iso8859-15 o))))
+ (foo 'EuroSign #x24)
+ (foo 'Scaron #x26)
+ (foo 'scaron #x28)
+ (foo 'Zcaron #x34)
+ (foo 'zcaron #x38)
+ (foo 'OE #x3C)
+ (foo 'oe #x3D)
+ (foo 'Ydiaeresis #x3E))
+
+
+(provide 'latin-euro-latin9)
+
+;;; end of latin-euro-latin9.el
Index: packages/mule-packages/latin-euro-standards/latin-euro-standards.el
===================================================================
RCS file: latin-euro-standards.el
diff -N latin-euro-standards.el
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-standards.el Tue Feb 8 23:07:38 2005
@@ -0,0 +1,53 @@
+;;; latin-euro-standards.el -*- coding: iso-2022-7 -*-
+
+;; Copyright (C) 2002 Free Software Foundation, Inc
+
+;; Author: Aidan Kehoe
+;; Keywords: mule, charsets
+;; Created: 2005 February 7
+;; Last-modified: 2005 February 7
+
+;; 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., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; The latin-euro-standards package provides coding systems, Mule character
+;; sets, and language environments for the ISO-8859-13, -14, -15 and -16
+;; standard character encodings. Besides the Euro sign--whence the name of
+;; this package--among these encodings we have single-width directed
+;; quotation marks, handy if you're if you're in an environment where your
+;; TTY has a UTF-8 coding system which interprets these characters as
+;; single-width.
+
+;; These have been refactored out from the latin-unity package because it
+;; turns out that, to have Mule-UCS support the Euro sign, the simplest
+;; approach is to have these character sets available to it when
+;; byte-compiling. Since latin-unity already depends on mule-ucs, and since
+;; moving these character sets out from latin-unity and making it depend on
+;; them is pretty practical, we've moved them here, to avoid a nasty
+;; circular dependency.
+
+;;; Code:
+
+(require 'latin-euro-latin7)
+(require 'latin-euro-latin8)
+(require 'latin-euro-latin9)
+(require 'latin-euro-latin10)
+
+(provide 'latin-euro-standards)
+;; end of latin-euro-standards.el
\ No newline at end of file
Index: packages/mule-packages/latin-euro-standards/latin-euro-standards.texi
===================================================================
RCS file: latin-euro-standards.texi
diff -N latin-euro-standards.texi
--- /dev/null Tue Feb 8 23:07:32 2005
+++ latin-euro-standards.texi Tue Feb 8 23:07:39 2005
@@ -0,0 +1,286 @@
+\input texinfo @c -*-texinfo-*-
+
+@c Manual for the XEmacs latin-unity package.
+
+@c ** #### something uses these headers, find out how and explain here
+@c %**start of header
+@setfilename latin-euro-standards.info
+@settitle Recent ISO 8859 character encoding standards
+@setchapternewpage odd
+@c %**end of header
+
+@c Version values, for easy modification
+@set VERSION 1.0
+@set CREATED Monday, February 7, 2005
+@set UPDATED Monday, February 7, 2005
+
+@c ** Many people seem to prefer this footnote style.
+@footnotestyle end
+
+@direntry
+* latin-euro-standards:: Make recent ISO 8859 character
+encodings available to XEmacs.
+@end direntry
+
+@c ** It is often convenient to use a macro for names which have unusual
+@c ** spelling or formatting conventions.
+@c Macro to make formatting of the package name consistent.
+@macro pkgname
+@i{latin-euro-standards}
+@end macro
+
+@c Copying permissions, et al
+@c Note that this whole section is repeated thrice, once for the Info
+@c version, once for TeX, and once for HTML.
+@c Note that if you combine this document with others' work, you may
+@c need to change the permissions statement. Make sure you do so in all
+@c three places.
+@c #### Probably not the right place for HTML.
+@html
+This file is part of XEmacs. It documents the @pkgname{} package,
+which ensures that wherever possible representations of all Latin
+characters are drawn from the same 8-bit character set.
+
+Copyright @copyright{} 2005 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim or modified copies
+of this manual provided that the copyright notice above is preserved,
+and at least one of the numbered paragraphs below up to the phrase "End
+of permissions notice." is included, under the terms of any of the
+licenses enumerated below.
+
+1. The GNU General Public License, version 2 or any later version
+published by the Free Software Foundation, Inc. A copy of the GNU
+General Public License was included with your copy of XEmacs.
+Alternatively, you may request a copy from the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+2. The license used for XEmacs documentation (see the file
+man/xemacs/xemacs.texi distributed with XEmacs).
+
+3. The GNU Free Documentation License (available from the Free Software
+Foundation at the address above).
+
+End of permissions notice.
+
+Because the XEmacs documentation license and the GNU Free Documentation
+License are not free software licenses, and are mutually incompatible
+with each other and with the GNU General Public License, it is desirable
+that the permissions given here be preserved if possible. This normally
+requires that you write fresh text for any additions or modifications to
+this file, rather than copying code or comments from other sources. The
+exceptions are if you are sole copyright holder for the other source, or
+if you receive permission from the holders of the copyrights for the
+other sources.
+
+That is, if you merge code or comments from a file licensed to you only
+under the GNU General Public License you @emph{may not} distribute
+under the documentation licenses or with a dual license; such a
+combination may be distributed under the GNU General Public License
+@emph{only}. Similarly, if you copy text from a file licensed to you
+only under the XEmacs documentation license or the GNU Free
+Documentation License you may distribute the result @emph{only} under
+the appropriate license.
+@end html
+
+@ifinfo
+This file is part of XEmacs. It documents the @pkgname{} package,
+which ensures that wherever possible representations of all Latin
+characters are drawn from the same 8-bit character set.
+
+Copyright @copyright{} 2005 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim or modified copies
+of this manual provided that the copyright notice above is preserved,
+and at least one of the numbered paragraphs below up to the phrase "End
+of permissions notice." is included, under the terms of any of the
+licenses enumerated below.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+1. The GNU General Public License, version 2 or any later version
+published by the Free Software Foundation, Inc. A copy of the GNU
+General Public License was included with your copy of XEmacs.
+Alternatively, you may request a copy from the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+2. The license used for XEmacs documentation (see the file
+man/xemacs/xemacs.texi distributed with XEmacs).
+
+3. The GNU Free Documentation License (available from the Free Software
+Foundation at the address above).
+
+End of permissions notice.
+
+Because the XEmacs documentation license and the GNU Free Documentation
+License are not free software licenses, and are mutually incompatible
+with each other and with the GNU General Public License, it is desirable
+that the permissions given here be preserved if possible. This normally
+requires that you write fresh text for any additions or modifications to
+this file, rather than copying code or comments from other sources. The
+exceptions are if you are sole copyright holder for the other source, or
+if you receive permission from the holders of the copyrights for the
+other sources.
+
+That is, if you merge code or comments from a file licensed to you only
+under the GNU General Public License you @emph{may not} distribute
+under the documentation licenses or with a dual license; such a
+combination may be distributed under the GNU General Public License
+@emph{only}. Similarly, if you copy text from a file licensed to you
+only under the XEmacs documentation license or the GNU Free
+Documentation License you may distribute the result @emph{only} under
+the appropriate license.
+@end ifinfo
+
+@tex
+
+@titlepage
+@title Recent ISO 8859 character encodings
+@subtitle Last updated @value{UPDATED}
+
+@author Aidan Kehoe
+@page
+
+This file is part of XEmacs. It documents the @pkgname{} package,
+which ensures that wherever possible representations of all Latin
+characters are drawn from the same 8-bit character set.
+
+Copyright @copyright{} 2005 Free Software Foundation, Inc.
+
+@vskip 0pt plus 1filll
+Permission is granted to make and distribute verbatim or modified copies
+of this manual provided that the copyright notice above is preserved,
+and at least one of the numbered paragraphs below up to the phrase "End
+of permissions notice." is included, under the terms of any of the
+licenses enumerated below.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries a copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+1. The GNU General Public License, version 2 or any later version
+published by the Free Software Foundation, Inc. A copy of the GNU
+General Public License was included with your copy of XEmacs.
+Alternatively, you may request a copy from the Free Software Foundation,
+Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+2. The license used for XEmacs documentation (see the file
+man/xemacs/xemacs.texi distributed with XEmacs).
+
+3. The GNU Free Documentation License (available from the Free Software
+Foundation at the address above).
+
+End of permissions notice.
+
+Because the XEmacs documentation license and the GNU Free Documentation
+License are not free software licenses, and are mutually incompatible
+with each other and with the GNU General Public License, it is desirable
+that the permissions given here be preserved if possible. This normally
+requires that you write fresh text for any additions or modifications to
+this file, rather than copying code or comments from other sources. The
+exceptions are if you are sole copyright holder for the other source, or
+if you receive permission from the holders of the copyrights for the
+other sources.
+
+That is, if you merge code or comments from a file licensed to you only
+under the GNU General Public License you @emph{may not} distribute
+under the documentation licenses or with a dual license; such a
+combination may be distributed under the GNU General Public License
+@emph{only}. Similarly, if you copy text from a file licensed to you
+only under the XEmacs documentation license or the GNU Free
+Documentation License you may distribute the result @emph{only} under
+the appropriate license.
+
+@end titlepage
+@page
+
+@end tex
+
+@ifnottex
+@node Top, Copying, (dir), (dir)
+@top Recent ISO 8859 character encodings
+@end ifnottex
+
+This package provides several recent character encodings that have been
+standardized by ISO, the international organization for standardization,
+together with the associated Mule character sets and coding systems.
+
+It is intended to be used by the Mule-UCS (@pxref{Top,,, mule-ucs,
+Mule-UCS User Manual}) and Latin Unity (@pxref{Top,,, latin-unity,
+Latin Unity for Emacsen}) packages, and was, indeed, refactored out
+from the former.
+
+Each file provides a language environment named, e.g. @samp{Latin-7}, a
+coding system named @samp{iso-8859-13} (etc.) and a Mule character set
+named @samp{latin-iso8859-13} (again, etc.).
+
+@menu
+* Copying:: @pkgname{} copying conditions.
+* Standards:: Details of the relevant ISO character encodings.
+@end menu
+
+@node Copying, Standards, Top, Top
+@chapter @pkgname{} Copying Conditions
+
+@c ** CHECK THE COPYRIGHT DATE(S) AND HOLDER(S)!
+
+Copyright (C) 2005 Free Software Foundation, Inc.
+
+@pkgname{} 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.
+
+@pkgname{} 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+USA.
+
+@node Standards, , Copying, Top
+@chapter Standards
+
+@section Latin 7
+
+ISO 8859-13 dates from 1998, is the seventh Roman-alphabet standard of
+the ISO-8859 series, and is intended for use along the Baltic rim. It
+notably includes support for Latvian, something that wasn't available in
+its predecessor in North European support, ISO-8859-6.
+
+@section Latin 8
+
+ISO 8859-14 gives full support to Welsh and Gaelic---note that modern
+Irish Gaelic fits quite comfortably in ISO-8859-1, so in practical terms
+this is more likely to be used for Welsh and Scots Gaelic, if even
+then. It dates from 1998.
+
+@section Latin 9
+
+ISO 8859 15 dates from 1999, and is a mostly-compatible revision to ISO
+8859 1, replacing the disused CURRENCY SIGN with U+20AC, EURO SIGN, and
+making seven other changes to give better support to French and
+Finnish. It's most often encountered in Western European Usenet groups,
+in this author's experience.
+
+@section Latin 10, or ISO 8859-10
+
+This standard is from 2001, and gives better support to Romanian and
+some other languages than was widely available at that point. It also
+has single-width directed quotation marks, which are useful in a TTY
+environment where using the corresponding CNS characters within XEmacs
+would result in a miscalculation of column numbers and corresponding
+second-guessing and minor derangement when directed quotation marks are
+used.
+
Index: packages/mule-packages/latin-euro-standards/package-info.in
===================================================================
RCS file: package-info.in
diff -N package-info.in
--- /dev/null Tue Feb 8 23:07:32 2005
+++ package-info.in Tue Feb 8 23:07:39 2005
@@ -0,0 +1,20 @@
+(locale
+ (standards-version 1.1
+ version VERSION
+ author-version AUTHOR_VERSION
+ date DATE
+ build-date BUILD_DATE
+ maintainer MAINTAINER
+ distribution mule
+ priority high
+ category CATEGORY
+ dump nil
+ description
+ "MULE: Support for the Latin{7,8,9,10} character sets & coding systems."
+ filename FILENAME
+ md5sum MD5SUM
+ size SIZE
+ provides ()
+ requires (REQUIRES)
+ type regular
+))
--
“Ah come on now Ted, a Volkswagen with a mind of its own, driving all over
the place and going mad, if that’s not scary I don’t know what is.”