view lisp/mule/iso-with-esc.el @ 4645:f2a991ff6db0

Do not #'split-path on nil #'getenv result. <877hz7lzrt.fsf@yahoo.com.cn>
author Jerry James <james@xemacs.org>
date Mon, 29 Jun 2009 08:20:47 -0600
parents 1d74a1d115ee
children a67bfb29dd8b
line wrap: on
line source

;;; iso-with-esc.el --
;;; Provision of the hateful and never widely implemented Latin, Greek and
;;; Cyrillic variable-length ISO 2022 coding systems that passed for Latin
;;; 2, Latin 10, (etc) support in XEmacs for so long.
;;                      
;; Copyright (C) 2006 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:

;; It is not particularly reasonable that iso-latin-1-with-esc has a
;; value of t for the safe-charsets property. We discourage its use,
;; though, and this behaviour is compatible with GNU.

;;;###autoload
(define-coding-system-alias 'iso-latin-1-with-esc 'iso-2022-8)

;;;###autoload
(make-coding-system
 'iso-latin-2-with-esc 'iso2022 "ISO-8859-2 (Latin-2)"
 '(charset-g0 ascii
   charset-g1 latin-iso8859-2
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii latin-iso8859-2)
   mnemonic "MIME/Ltn-2"))

;;;###autoload
(make-coding-system
 'iso-latin-3-with-esc 'iso2022 "ISO-8859-3 (Latin-3)"
 '(charset-g0 ascii
   charset-g1 latin-iso8859-3
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii latin-iso8859-3)
   mnemonic "MIME/Ltn-3"))

;;;###autoload
(make-coding-system
 'iso-latin-4-with-esc 'iso2022 "ISO-8859-4 (Latin-4)"
 '(charset-g0 ascii
   charset-g1 latin-iso8859-4
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii latin-iso8859-4)
   mnemonic "MIME/Ltn-4"))

;;;###autoload
(make-coding-system
 'iso-latin-9-with-esc 'iso2022
  "ISO 4873 conforming 8-bit code (ASCII + Latin 9; aka Latin-1 with Euro)"
  '(mnemonic "MIME/Ltn-9"		; bletch
    safe-charsets (ascii latin-iso8859-15)
    eol-type nil
    charset-g0 ascii
    charset-g1 latin-iso8859-15
    charset-g2 t
    charset-g3 t))

;;;###autoload
(make-coding-system
 'iso-latin-5-with-esc 'iso2022 "ISO-8859-9 (Latin-5)"
 '(charset-g0 ascii
   charset-g1 latin-iso8859-9
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii latin-iso8859-9)
   mnemonic "MIME/Ltn-5"))

;;;###autoload
(make-coding-system
 'cyrillic-iso-8bit-with-esc 'iso2022
 "ISO-8859-5 (Cyrillic)"
 '(charset-g0 ascii
   charset-g1 cyrillic-iso8859-5
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii cyrillic-iso8859-5)
   mnemonic "ISO8/Cyr"))

;;;###autoload
(make-coding-system
 'hebrew-iso-8bit-with-esc 'iso2022
 "ISO-8859-8 (Hebrew)"
 '(charset-g0 ascii
   charset-g1 hebrew-iso8859-8
   charset-g2 t
  charset-g3 t
   no-iso6429 t
   safe-charsets (ascii hebrew-iso8859-8)
   mnemonic "MIME/Hbrw"))

;;;###autoload
(make-coding-system
 'greek-iso-8bit-with-esc 'iso2022 "MIME ISO-8859-7"
 '(charset-g0 ascii
   charset-g1 greek-iso8859-7
   charset-g2 t
   charset-g3 t
   safe-charsets (ascii greek-iso8859-7)
   mnemonic "Grk"))

;; ISO 8859-6 is such a useless character set that it seems a waste of
;; codespace to dump it. Let me count the ways: 
;; 
;; 1. It doesn't support Persian or Urdu, let alone Sinhalese, despite
;;    plenty of unallocated code points.
;;
;; 2. It doesn't encode all the vowel diacritics (the Harakaat) despite that
;;    they are necessary, even for the Arabs, for basic things like
;;    dictionary entries, children's books, and occasional disambiguation.
;;
;; 3. The Arabs don't use it, they use Windows-1256, which also supports
;;    Persian, at least, as well as the French characters necessary in
;;    Lebanon and North Africa.

(make-charset
 'arabic-iso8859-6 
 "Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127"
 '(dimension 1
   registry "ISO8859-6"
   chars 96
   columns 1
   direction r2l
   final ?G
   graphic 1
   short-name "RHP of ISO8859/6"
   long-name "RHP of Arabic (ISO 8859-6): ISO-IR-127"))

(loop
  for (iso8859-6 unicode)
  in '((#xA0 #x00A0) ;; NO-BREAK SPACE
       (#xA4 #x00A4) ;; CURRENCY SIGN
       (#xAC #x060C) ;; ARABIC COMMA
       (#xAD #x00AD) ;; SOFT HYPHEN
       (#xBB #x061B) ;; ARABIC SEMICOLON
       (#xBF #x061F) ;; ARABIC QUESTION MARK
       (#xC1 #x0621) ;; ARABIC LETTER HAMZA
       (#xC2 #x0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE
       (#xC3 #x0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE
       (#xC4 #x0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE
       (#xC5 #x0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW
       (#xC6 #x0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE
       (#xC7 #x0627) ;; ARABIC LETTER ALEF
       (#xC8 #x0628) ;; ARABIC LETTER BEH
       (#xC9 #x0629) ;; ARABIC LETTER TEH MARBUTA
       (#xCA #x062A) ;; ARABIC LETTER TEH
       (#xCB #x062B) ;; ARABIC LETTER THEH
       (#xCC #x062C) ;; ARABIC LETTER JEEM
       (#xCD #x062D) ;; ARABIC LETTER HAH
       (#xCE #x062E) ;; ARABIC LETTER KHAH
       (#xCF #x062F) ;; ARABIC LETTER DAL
       (#xD0 #x0630) ;; ARABIC LETTER THAL
       (#xD1 #x0631) ;; ARABIC LETTER REH
       (#xD2 #x0632) ;; ARABIC LETTER ZAIN
       (#xD3 #x0633) ;; ARABIC LETTER SEEN
       (#xD4 #x0634) ;; ARABIC LETTER SHEEN
       (#xD5 #x0635) ;; ARABIC LETTER SAD
       (#xD6 #x0636) ;; ARABIC LETTER DAD
       (#xD7 #x0637) ;; ARABIC LETTER TAH
       (#xD8 #x0638) ;; ARABIC LETTER ZAH
       (#xD9 #x0639) ;; ARABIC LETTER AIN
       (#xDA #x063A) ;; ARABIC LETTER GHAIN
       (#xE0 #x0640) ;; ARABIC TATWEEL
       (#xE1 #x0641) ;; ARABIC LETTER FEH
       (#xE2 #x0642) ;; ARABIC LETTER QAF
       (#xE3 #x0643) ;; ARABIC LETTER KAF
       (#xE4 #x0644) ;; ARABIC LETTER LAM
       (#xE5 #x0645) ;; ARABIC LETTER MEEM
       (#xE6 #x0646) ;; ARABIC LETTER NOON
       (#xE7 #x0647) ;; ARABIC LETTER HEH
       (#xE8 #x0648) ;; ARABIC LETTER WAW
       (#xE9 #x0649) ;; ARABIC LETTER ALEF MAKSURA
       (#xEA #x064A) ;; ARABIC LETTER YEH
       (#xEB #x064B) ;; ARABIC FATHATAN
       (#xEC #x064C) ;; ARABIC DAMMATAN
       (#xED #x064D) ;; ARABIC KASRATAN
       (#xEE #x064E) ;; ARABIC FATHA
       (#xEF #x064F) ;; ARABIC DAMMA
       (#xF0 #x0650) ;; ARABIC KASRA
       (#xF1 #x0651) ;; ARABIC SHADDA
       (#xF2 #x0652));; ARABIC SUKUN
  do (set-unicode-conversion (make-char 'arabic-iso8859-6 iso8859-6)
                             unicode))

;;;###autoload
(make-coding-system
 'arabic-iso-8bit-with-esc 'iso2022  ;; GNU's iso-8859-6 is
                                     ;; iso2022-compatible.
 "ISO-8859-6 (Arabic)"
 '(charset-g0 ascii
   charset-g1 arabic-iso8859-6
   charset-g2 t
   charset-g3 t
   no-iso6429 t
   safe-charsets (ascii arabic-iso8859-6)
   mnemonic "MIME/Arbc"))