(define-charset 129 'latin-iso8859-1
[1 96 1 0 ?A 1 "RHP of Latin-1" "RHP of Latin-1 (ISO 8859-1): ISO-IR-100"
"Right-Hand Part of Latin Alphabet 1 (ISO/IEC 8859-1): ISO-IR-100"])
(define-charset 130 'latin-iso8859-2
[1 96 1 0 ?B 1 "RHP of Latin-2" "RHP of Latin-2 (ISO 8859-2): ISO-IR-101"
"Right-Hand Part of Latin Alphabet 2 (ISO/IEC 8859-2): ISO-IR-101"])
(define-charset 131 'latin-iso8859-3
[1 96 1 0 ?C 1 "RHP of Latin-3" "RHP of Latin-3 (ISO 8859-3): ISO-IR-109"
"Right-Hand Part of Latin Alphabet 3 (ISO/IEC 8859-3): ISO-IR-109"])
(define-charset 132 'latin-iso8859-4
[1 96 1 0 ?D 1 "RHP of Latin-4" "RHP of Latin-4 (ISO 8859-4): ISO-IR-110"
"Right-Hand Part of Latin Alphabet 4 (ISO/IEC 8859-4): ISO-IR-110"])
(define-charset 133 'thai-tis620
[1 96 1 0 ?T 1 "RHP of TIS620" "RHP of Thai (TIS620): ISO-IR-166"
"Right-Hand Part of TIS620.2533 (Thai): ISO-IR-166"])
(define-charset 134 'greek-iso8859-7
[1 96 1 0 ?F 1 "RHP of ISO8859/7" "RHP of Greek (ISO 8859-7): ISO-IR-126"
"Right-Hand Part of Latin/Greek Alphabet (ISO/IEC 8859-7): ISO-IR-126"])
(define-charset 135 'arabic-iso8859-6
[1 96 1 1 ?G 1 "RHP of ISO8859/6" "RHP of Arabic (ISO 8859-6): ISO-IR-127"
"Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127"])
(define-charset 136 'hebrew-iso8859-8
[1 96 1 1 ?H 1 "RHP of ISO8859/8" "RHP of Hebrew (ISO 8859-8): ISO-IR-138"
"Right-Hand Part of Latin/Hebrew Alphabet (ISO/IEC 8859-8): ISO-IR-138"])
(define-charset 137 'katakana-jisx0201
[1 94 1 0 ?I 1 "JISX0201 Katakana" "Japanese Katakana (JISX0201.1976)"
"Katakana Part of JISX0201.1976"])
(define-charset 138 'latin-jisx0201
[1 94 1 0 ?J 0 "JISX0201 Roman" "Japanese Roman (JISX0201.1976)"
"Roman Part of JISX0201.1976"])
(define-charset 140 'cyrillic-iso8859-5
[1 96 1 0 ?L 1 "RHP of ISO8859/5" "RHP of Cyrillic (ISO 8859-5): ISO-IR-144"
"Right-Hand Part of Latin/Cyrillic Alphabet (ISO/IEC 8859-5): ISO-IR-144"])
(define-charset 141 'latin-iso8859-9
[1 96 1 0 ?M 1 "RHP of Latin-5" "RHP of Latin-5 (ISO 8859-9): ISO-IR-148"
"Right-Hand Part of Latin Alphabet 5 (ISO/IEC 8859-9): ISO-IR-148"])
(define-charset 142 'latin-iso8859-15
[1 96 1 0 ?b 1 "RHP of Latin-9" "RHP of Latin-9 (ISO 8859-15): ISO-IR-203"
"Right-Hand Part of Latin Alphabet 9 (ISO/IEC 8859-15): ISO-IR-203"])
(define-charset 143 'latin-iso8859-14
[1 96 1 0 ?_ 1 "RHP of Latin-8" "RHP of Latin-8 (ISO 8859-14)"
"Right-Hand Part of Latin Alphabet 8 (ISO/IEC 8859-14)"])
(define-charset 144 'japanese-jisx0208-1978
[2 94 2 0 ?@ 0 "JISX0208.1978" "JISX0208.1978 (Japanese): ISO-IR-42"
"JISX0208.1978 Japanese Kanji (so called \"old JIS\"): ISO-IR-42"])
(define-charset 145 'chinese-gb2312
[2 94 2 0 ?A 0 "GB2312" "GB2312: ISO-IR-58"
"GB2312 Chinese simplified: ISO-IR-58"])
(define-charset 146 'japanese-jisx0208
[2 94 2 0 ?B 0 "JISX0208" "JISX0208.1983/1990 (Japanese): ISO-IR-87"
"JISX0208.1983/1990 Japanese Kanji: ISO-IR-87"])
(define-charset 147 'korean-ksc5601
[2 94 2 0 ?C 0 "KSC5601" "KSC5601 (Korean): ISO-IR-149"
"KSC5601 Korean Hangul and Hanja: ISO-IR-149"])
(define-charset 148 'japanese-jisx0212
[2 94 2 0 ?D 0 "JISX0212" "JISX0212 (Japanese): ISO-IR-159"
"JISX0212 Japanese supplement: ISO-IR-159"])
(define-charset 149 'chinese-cns11643-1
[2 94 2 0 ?G 0 "CNS11643-1" "CNS11643-1 (Chinese traditional): ISO-IR-171"
"CNS11643 Plane 1 Chinese traditional: ISO-IR-171"])
(define-charset 150 'chinese-cns11643-2
[2 94 2 0 ?H 0 "CNS11643-2" "CNS11643-2 (Chinese traditional): ISO-IR-172"
"CNS11643 Plane 2 Chinese traditional: ISO-IR-172"])
(define-charset 151 'japanese-jisx0213-1
[2 94 2 0 ?O 0 "JISX0213-1" "JISX0213-1" "JISX0213 Plane 1 (Japanese)"])
(define-charset 152 'chinese-big5-1
[2 94 2 0 ?0 0 "Big5 (Level-1)" "Big5 (Level-1) A141-C67F"
"Frequently used part (A141-C67F) of Big5 (Chinese traditional)"])
(define-charset 153 'chinese-big5-2
[2 94 2 0 ?1 0 "Big5 (Level-2)" "Big5 (Level-2) C940-FEFE"
"Less frequently used part (C940-FEFE) of Big5 (Chinese traditional)"])
(define-charset 160 'chinese-sisheng
[1 94 1 0 ?0 0 "SiSheng" "SiSheng (PinYin/ZhuYin)"
"SiSheng characters for PinYin/ZhuYin"])
(define-charset 161 'ipa
[1 96 1 0 ?0 1 "IPA" "IPA" "IPA (International Phonetic Association)"])
(define-charset 162 'vietnamese-viscii-lower
[1 96 1 0 ?1 1 "VISCII lower" "VISCII lower-case" "VISCII1.1 lower-case"])
(define-charset 163 'vietnamese-viscii-upper
[1 96 1 0 ?2 1 "VISCII upper" "VISCII upper-case" "VISCII1.1 upper-case"])
(define-charset 164 'arabic-digit
[1 94 1 0 ?2 0 "Arabic digit" "Arabic digit" "Arabic digit"])
(define-charset 165 'arabic-1-column
[1 94 1 1 ?3 0 "Arabic 1-col" "Arabic 1-column" "Arabic 1-column"])
(define-charset 166 'ascii-right-to-left
[1 94 1 1 ?B 0 "rev ASCII" "ASCII with right-to-left direction"
"ASCII (left half of ISO 8859-1) with right-to-left direction"])
(define-charset 167 'lao
[1 94 1 0 ?1 0 "Lao" "Lao" "Lao characters (ISO10646 0E80..0EDF)"])
(define-charset 224 'arabic-2-column
[1 94 2 1 ?4 0 "Arabic 2-col" "Arabic 2-column" "Arabic 2-column"])
(define-charset 225 'indian-is13194
[1 94 2 0 ?5 1 "IS 13194" "Indian IS 13194"
"Generic Indian charset for data exchange with IS 13194"])
(define-charset 240 'indian-1-column
[2 94 1 0 ?6 0 "Indian 1-col" "Indian 1 Column"
"Indian charset for 2-column width glyphs"])
(define-charset 241 'tibetan-1-column
[2 94 1 0 ?8 0 "Tibetan 1-col" "Tibetan 1 column" "Tibetan 1 column glyph"])
(define-charset 242 'mule-unicode-2500-33ff
[2 96 1 0 ?2 0 "Unicode subset 2" "Unicode subset (U+2500..U+33FF)"
"Unicode characters of the range U+2500..U+33FF."])
(define-charset 243 'mule-unicode-e000-ffff
[2 96 1 0 ?3 0 "Unicode subset 3" "Unicode subset (U+E000+FFFF)"
"Unicode characters of the range U+E000..U+FFFF."])
(define-charset 244 'mule-unicode-0100-24ff
[2 96 1 0 ?1 0 "Unicode subset" "Unicode subset (U+0100..U+24FF)"
"Unicode characters of the range U+0100..U+24FF."])
(define-charset 245 'ethiopic
[2 94 2 0 ?3 0 "Ethiopic" "Ethiopic characters" "Ethiopic characters"])
(define-charset 246 'chinese-cns11643-3
[2 94 2 0 ?I 0 "CNS11643-3" "CNS11643-3 (Chinese traditional): ISO-IR-183"
"CNS11643 Plane 3 Chinese Traditional: ISO-IR-183"])
(define-charset 247 'chinese-cns11643-4
[2 94 2 0 ?J 0 "CNS11643-4" "CNS11643-4 (Chinese traditional): ISO-IR-184"
"CNS11643 Plane 4 Chinese Traditional: ISO-IR-184"])
(define-charset 248 'chinese-cns11643-5
[2 94 2 0 ?K 0 "CNS11643-5" "CNS11643-5 (Chinese traditional): ISO-IR-185"
"CNS11643 Plane 5 Chinese Traditional: ISO-IR-185"])
(define-charset 249 'chinese-cns11643-6
[2 94 2 0 ?L 0 "CNS11643-6" "CNS11643-6 (Chinese traditional): ISO-IR-186"
"CNS11643 Plane 6 Chinese Traditional: ISO-IR-186"])
(define-charset 250 'chinese-cns11643-7
[2 94 2 0 ?M 0 "CNS11643-7" "CNS11643-7 (Chinese traditional): ISO-IR-187"
"CNS11643 Plane 7 Chinese Traditional: ISO-IR-187"])
(define-charset 251 'indian-2-column
[2 94 2 0 ?5 0 "Indian 2-col" "Indian 2 Column"
"Indian charset for 2-column width glyphs"])
(define-charset 252 'tibetan
[2 94 2 0 ?7 0 "Tibetan 2-col" "Tibetan 2 column" "Tibetan characters"])
(define-charset 254 'japanese-jisx0213-2
[2 94 2 0 ?P 0 "JISX0213-2" "JISX0213-2" "JISX0213 Plane 2 (Japanese)"])
(setup-special-charsets)
(define-translation-table
'oldjis-newjis-jisroman-ascii
(list (cons (make-char 'japanese-jisx0208-1978)
(make-char 'japanese-jisx0208))
(cons (make-char 'latin-jisx0201) (make-char 'ascii))))
(aset (get 'oldjis-newjis-jisroman-ascii 'translation-table)
(make-char 'latin-jisx0201 92) (make-char 'latin-jisx0201 92))
(aset (get 'oldjis-newjis-jisroman-ascii 'translation-table)
(make-char 'latin-jisx0201 126) (make-char 'latin-jisx0201 126))
(setq standard-translation-table-for-decode
(get 'oldjis-newjis-jisroman-ascii 'translation-table))
(setq standard-translation-table-for-encode nil)
(put 'no-conversion 'coding-system
(vector nil ?= "Do no conversion.
When you visit a file with this coding, the file is read into a
unibyte buffer as is, thus each byte of a file is treated as a
character."
(list 'coding-category 'coding-category-binary
'alias-coding-systems '(no-conversion))
nil))
(put 'no-conversion 'eol-type 0)
(put 'coding-category-binary 'coding-systems '(no-conversion))
(setq coding-system-list '(no-conversion))
(setq coding-system-alist '(("no-conversion")))
(register-char-codings 'no-conversion t)
(define-coding-system-alias 'binary 'no-conversion)
(put 'undecided 'coding-system
(vector t ?- "No conversion on encoding, automatic conversion on decoding"
(list 'alias-coding-systems '(undecided)
'safe-charsets '(ascii))
nil))
(setq coding-system-list (cons 'undecided coding-system-list))
(setq coding-system-alist (cons '("undecided") coding-system-alist))
(put 'undecided 'eol-type
(make-subsidiary-coding-system 'undecided))
(define-coding-system-alias 'unix 'undecided-unix)
(define-coding-system-alias 'dos 'undecided-dos)
(define-coding-system-alias 'mac 'undecided-mac)
(make-coding-system
'emacs-mule 0 ?=
"Emacs internal format used in buffer and string.
Encoding text with this coding system produces the actual byte
sequence of the text in buffers and strings. An exception is made for
eight-bit-control characters. Each of them is encoded into a single
byte."
nil
'((safe-charsets . t)))
(make-coding-system
'raw-text 5 ?t
"Raw text, which means text contains random 8-bit codes.
Encoding text with this coding system produces the actual byte
sequence of the text in buffers and strings. An exception is made for
eight-bit-control characters. Each of them is encoded into a single
byte.
When you visit a file with this coding, the file is read into a
unibyte buffer as is (except for EOL format), thus each byte of a file
is treated as a character."
nil
'((safe-charsets . t)))
(make-coding-system
'iso-2022-7bit 2 ?J
"ISO 2022 based 7-bit encoding using only G0"
'((ascii t) nil nil nil
short ascii-eol ascii-cntl seven)
'((safe-charsets . t)
(composition . t)))
(make-coding-system
'iso-2022-7bit-ss2 2 ?$
"ISO 2022 based 7-bit encoding using SS2 for 96-charset"
'((ascii t) nil t nil
short ascii-eol ascii-cntl seven nil single-shift)
'((safe-charsets . t)
(composition . t)))
(make-coding-system
'iso-2022-7bit-lock 2 ?&
"ISO-2022 coding system using Locking-Shift for 96-charset"
'((ascii t) t nil nil
nil ascii-eol ascii-cntl seven locking-shift)
'((safe-charsets . t)
(composition . t)))
(define-coding-system-alias 'iso-2022-int-1 'iso-2022-7bit-lock)
(make-coding-system
'iso-2022-7bit-lock-ss2 2 ?i
"Mixture of ISO-2022-JP, ISO-2022-KR, and ISO-2022-CN"
'((ascii t)
(nil korean-ksc5601 chinese-gb2312 chinese-cns11643-1 t)
(nil chinese-cns11643-2)
(nil chinese-cns11643-3 chinese-cns11643-4 chinese-cns11643-5
chinese-cns11643-6 chinese-cns11643-7)
short ascii-eol ascii-cntl seven locking-shift single-shift nil nil nil
init-bol)
'((safe-charsets ascii japanese-jisx0208 japanese-jisx0208-1978 latin-jisx0201
korean-ksc5601 chinese-gb2312 chinese-cns11643-1
chinese-cns11643-2 chinese-cns11643-3 chinese-cns11643-4
chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7)
(composition . t)))
(define-coding-system-alias 'iso-2022-cjk 'iso-2022-7bit-lock-ss2)
(make-coding-system
'iso-2022-8bit-ss2 2 ?@
"ISO 2022 based 8-bit encoding using SS2 for 96-charset"
'((ascii t) nil t nil
nil ascii-eol ascii-cntl nil nil single-shift)
'((safe-charsets . t)
(composition . t)))
(make-coding-system
'compound-text 2 ?x
"Compound text based generic encoding for decoding unknown messages."
'((ascii t) (latin-iso8859-1 katakana-jisx0201 t) t t
nil ascii-eol ascii-cntl nil locking-shift single-shift nil nil nil
init-bol nil nil)
'((safe-charsets . t)
(mime-charset . x-ctext)
(composition . t)))
(define-coding-system-alias 'x-ctext 'compound-text)
(define-coding-system-alias 'ctext 'compound-text)
(make-coding-system
'ctext-no-compositions 2 ?x
"Compound text based generic encoding for decoding unknown messages.
Like `compound-text', but does not produce escape sequences for compositions."
'((ascii t) (latin-iso8859-1 katakana-jisx0201 t) t t
nil ascii-eol ascii-cntl nil locking-shift single-shift nil nil nil
init-bol nil nil)
'((safe-charsets . t)))
(defvar non-standard-icccm-encodings-alist
'(("ISO8859-15" . latin-iso8859-15)
("ISO8859-14" . latin-iso8859-14)
("KOI8-R" . koi8-r)
("BIG5-0" . big5))
"Alist of font charset names defined by XLFD, and the corresponding Emacs
charsets or coding systems.")
(defun ctext-post-read-conversion (len)
"Decode LEN characters encoded as Compound Text with Extended Segments."
(buffer-disable-undo) (narrow-to-region (point) (+ (point) len))
(save-match-data
(let ((pt (point-marker))
(oldpt (point-marker))
(newpt (make-marker))
(modified-p (buffer-modified-p))
(case-fold-search nil)
last-coding-system-used
encoding textlen chset)
(while (re-search-forward
"\\(\e\\)%/[0-4]\\([\200-\377][\200-\377]\\)\\([^\002]+\\)\002"
nil 'move)
(set-marker newpt (point))
(set-marker pt (match-beginning 0))
(setq encoding (match-string 3))
(setq textlen (- (+ (* (- (aref (match-string 2) 0) 128) 128)
(- (aref (match-string 2) 1) 128))
(1+ (length encoding))))
(setq
chset (cdr (assoc-ignore-case encoding
non-standard-icccm-encodings-alist)))
(cond ((null chset)
(goto-char (+ (point) textlen)))
((charsetp chset)
(replace-match
(concat "\\1"
(if (= 0 (charset-iso-graphic-plane chset))
(if (= 1 (charset-dimension chset)) "(" "$(")
(if (= 96 (charset-chars chset))
"-"
(if (= 1 (charset-dimension chset)) ")" "$)")))
(string (charset-iso-final-char chset)))
t)
(goto-char (+ (point) textlen)))
((coding-system-p chset)
(when (> pt oldpt)
(decode-coding-region oldpt pt 'ctext-no-compositions))
(delete-region pt newpt)
(set-marker newpt (+ newpt textlen))
(decode-coding-region pt newpt chset)
(goto-char newpt)
(set-marker oldpt newpt))))
(when (> (point) oldpt)
(decode-coding-region oldpt (point) 'ctext-no-compositions))
(set-buffer-multibyte t)
(set-buffer-modified-p modified-p)
(- (point-max) (point-min)))))
(defvar non-standard-designations-alist
'(("$(0" . (big5 "big5-0" 2))
("$(1" . (big5 "big5-0" 2))
("-V" . (t "iso8859-10" 1))
("-Y" . (t "iso8859-13" 1))
("-_" . (t "iso8859-14" 1))
("-b" . (t "iso8859-15" 1))
("-f" . (t "iso8859-16" 1)))
"Alist of ctext control sequences that introduce character sets which
are not in the list of approved ICCCM encodings, and the corresponding
coding system, identifier string, and number of octets per encoded
character.
Each element has the form (CTLSEQ . (ENCODING CHARSET NOCTETS)). CTLSEQ
is the control sequence (sans the leading ESC) that introduces the character
set in the text encoded by compound-text. ENCODING is a coding system
symbol; if it is t, it means that the ctext coding system already encodes
the text correctly, and only the leading control sequence needs to be altered.
If ENCODING is a coding system, we need to re-encode the text with that
coding system. CHARSET is the ICCCM name of the charset we need to put into
the leading control sequence. NOCTETS is the number of octets (bytes) that
encode each character in this charset. NOCTETS can be 0 (meaning the number
of octets per character is variable), 1, 2, 3, or 4.")
(defun ctext-pre-write-conversion (from to)
"Encode characters between FROM and TO as Compound Text w/Extended Segments."
(buffer-disable-undo) (narrow-to-region from to)
(encode-coding-region from to 'ctext-no-compositions)
(save-match-data
(goto-char (point-min))
(let ((newpt (make-marker))
(case-fold-search nil)
pt desig encode-info encoding chset noctets textlen)
(set-buffer-multibyte nil)
(while (re-search-forward "\e\\(\$([01]\\|-[VY_bf]\\)" nil 'move)
(setq desig (match-string 1)
pt (point-marker)
encode-info (cdr (assoc desig non-standard-designations-alist))
encoding (car encode-info)
chset (cadr encode-info)
noctets (car (cddr encode-info)))
(skip-chars-forward "^\e")
(set-marker newpt (point))
(cond
((eq encoding t) (setq textlen (+ (- newpt pt) (length chset) 1))
(replace-match (format "\e%%/%d%c%c%s"
noctets
(+ (/ textlen 128) 128)
(+ (% textlen 128) 128)
chset)
t t))
((coding-system-p encoding) (set-marker pt (match-beginning 0))
(decode-coding-region pt newpt 'ctext-no-compositions)
(set-buffer-multibyte t)
(encode-coding-region pt newpt encoding)
(set-buffer-multibyte nil)
(setq textlen (+ (- newpt pt) (length chset) 1))
(goto-char pt)
(insert (format "\e%%/%d%c%c%s"
noctets
(+ (/ textlen 128) 128)
(+ (% textlen 128) 128)
chset))))
(goto-char newpt))))
(set-buffer-multibyte t)
nil)
(make-coding-system
'compound-text-with-extensions 5 ?x
"Compound text encoding with ICCCM Extended Segment extensions.
This coding system should be used only for X selections. It is inappropriate
for decoding and encoding files, process I/O, etc."
nil
'((post-read-conversion . ctext-post-read-conversion)
(pre-write-conversion . ctext-pre-write-conversion)))
(define-coding-system-alias
'x-ctext-with-extensions 'compound-text-with-extensions)
(define-coding-system-alias
'ctext-with-extensions 'compound-text-with-extensions)
(make-coding-system
'iso-safe 2 ?-
"Convert all characters but ASCII to `?'."
'(ascii nil nil nil
nil ascii-eol ascii-cntl nil nil nil nil nil nil nil nil t)
'((safe-charsets ascii)))
(set-safe-terminal-coding-system-internal 'iso-safe)
(setq file-coding-system-alist
'(("\\.elc\\'" . (emacs-mule . emacs-mule))
("\\(\\`\\|/\\)loaddefs.el\\'" . (raw-text . raw-text-unix))
("\\.tar\\'" . (no-conversion . no-conversion))
("" . (undecided . nil))))
(setq coding-category-emacs-mule 'emacs-mule
coding-category-sjis 'japanese-shift-jis
coding-category-iso-7 'iso-2022-7bit
coding-category-iso-7-tight 'iso-2022-jp
coding-category-iso-8-1 'iso-latin-1
coding-category-iso-8-2 'iso-latin-1
coding-category-iso-7-else 'iso-2022-7bit-lock
coding-category-iso-8-else 'iso-2022-8bit-ss2
coding-category-ccl nil
coding-category-utf-8 'mule-utf-8
coding-category-utf-16-be nil
coding-category-utf-16-le nil
coding-category-big5 'chinese-big5
coding-category-raw-text 'raw-text
coding-category-binary 'no-conversion)
(set-coding-priority
'(coding-category-iso-8-1
coding-category-iso-8-2
coding-category-iso-7-tight
coding-category-iso-7
coding-category-iso-7-else
coding-category-iso-8-else
coding-category-emacs-mule
coding-category-raw-text
coding-category-sjis
coding-category-big5
coding-category-ccl
coding-category-binary
coding-category-utf-8
coding-category-utf-16-be
coding-category-utf-16-le))
(aset latin-extra-code-table ?\222 t)
(aset latin-extra-code-table ?\223 t)
(aset latin-extra-code-table ?\224 t)
(update-coding-systems-internal)