47726
|
1 ;;; internal.el --- support for PC internal terminal -*- coding: raw-text; no-byte-compile: t -*-
|
5444
|
2
|
64701
|
3 ;; Copyright (C) 1993, 1994, 1998, 1999, 2001, 2002, 2003, 2004,
|
79718
|
4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
5444
|
5
|
|
6 ;; Author: Morten Welinder <terra@diku.dk>
|
|
7
|
|
8 ;; This file is part of GNU Emacs.
|
|
9
|
|
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
|
|
11 ;; it under the terms of the GNU General Public License as published by
|
78226
|
12 ;; the Free Software Foundation; either version 3, or (at your option)
|
5444
|
13 ;; any later version.
|
|
14
|
|
15 ;; GNU Emacs is distributed in the hope that it will be useful,
|
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18 ;; GNU General Public License for more details.
|
|
19
|
|
20 ;; You should have received a copy of the GNU General Public License
|
14170
|
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
|
64084
|
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
23 ;; Boston, MA 02110-1301, USA.
|
14170
|
24
|
38436
|
25 ;;; Commentary:
|
|
26
|
14170
|
27 ;;; Code:
|
|
28
|
5444
|
29 ;; ---------------------------------------------------------------------------
|
|
30 ;; keyboard setup -- that's simple!
|
|
31 (set-input-mode nil nil 0)
|
83394
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
32 (define-key local-function-key-map [backspace] "\177") ; Normal behaviour for BS
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
33 (define-key local-function-key-map [delete] "\C-d") ; ... and Delete
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
34 (define-key local-function-key-map [tab] [?\t])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
35 (define-key local-function-key-map [linefeed] [?\n])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
36 (define-key local-function-key-map [clear] [11])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
37 (define-key local-function-key-map [return] [13])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
38 (define-key local-function-key-map [escape] [?\e])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
39 (define-key local-function-key-map [M-backspace] [?\M-\d])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
40 (define-key local-function-key-map [M-delete] [?\M-d])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
41 (define-key local-function-key-map [M-tab] [?\M-\t])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
42 (define-key local-function-key-map [M-linefeed] [?\M-\n])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
43 (define-key local-function-key-map [M-clear] [?\M-\013])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
44 (define-key local-function-key-map [M-return] [?\M-\015])
|
7d093d9d4479
Fix semantics of terminal-local variables. Remove `terminal-local-value' hack.
Karoly Lorentey <lorentey@elte.hu>
diff
changeset
|
45 (define-key local-function-key-map [M-escape] [?\M-\e]))
|
5444
|
46 (put 'backspace 'ascii-character 127)
|
|
47 (put 'delete 'ascii-character 127)
|
|
48 (put 'tab 'ascii-character ?\t)
|
|
49 (put 'linefeed 'ascii-character ?\n)
|
|
50 (put 'clear 'ascii-character 12)
|
|
51 (put 'return 'ascii-character 13)
|
|
52 (put 'escape 'ascii-character ?\e)
|
23918
|
53
|
|
54 ;; ----------------------------------------------------------------------
|
|
55 ;; DOS display setup
|
|
56 ;; =================
|
|
57 ;;
|
|
58 ;; DOS can only support a single font. On most systems (with the
|
|
59 ;; possible exception of Far Eastern DOS versions), this means that
|
|
60 ;; two character sets are available at any given time: the ASCII
|
|
61 ;; charset, and a single national charset, usually mapped to codes
|
|
62 ;; above 128 (i.e., with 8th bit set). Which national charset is
|
|
63 ;; supported depends on the codepage loaded by the system when it
|
|
64 ;; boots; usually, this codepage cannot be changed without
|
|
65 ;; rebooting.
|
|
66 ;;
|
|
67 ;; Since each codepage can usually display character of a single
|
|
68 ;; MULE charset, Emacs can display a single MULE charset with the
|
|
69 ;; glyphs of the current codepage. The mapping from DOS codepages
|
|
70 ;; to MULE charsets is established by the charset property of the
|
|
71 ;; cpNNN-decode-table variables in codepage.el, which also
|
|
72 ;; defines translation tables for each such pair, and a bunch of
|
|
73 ;; functions to generate coding systems that use those translation
|
|
74 ;; tables to convert codepage-encoded text to the appropriate MULE
|
|
75 ;; charset and back. When Emacs starts on DOS, it automatically
|
|
76 ;; sets its default coding systems for file I/O and terminal output
|
|
77 ;; according to the currend DOS codepage, given by the
|
|
78 ;; `dos-codepage' variable.
|
|
79 ;;
|
|
80 ;; This leaves us with the problem of displaying character sets
|
|
81 ;; other than the one which maps directly into the current codepage.
|
|
82 ;; The following functions and variables handle this nuisance by
|
|
83 ;; defining a display table where each character that doesn't have a
|
|
84 ;; glyph in some codepage is mapped to a string which represents it.
|
|
85 ;; For example, a small c with cedilla is mapped to the string
|
|
86 ;; "{,c}" (the braces serve as a sign that this is a single
|
|
87 ;; character). A nice feature of the display tables is that Emacs
|
|
88 ;; knows that the string represents a single character, and thus
|
|
89 ;; cursor motion works as you'd expect: a single `C-f' moves past
|
|
90 ;; the entire string which represents a single character.
|
|
91 ;; ----------------------------------------------------------------------
|
|
92
|
|
93 (defvar IT-character-translations
|
|
94 '(
|
|
95 (latin-iso8859-1
|
|
96 . [255 "!I" "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)"
|
|
97 "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3"
|
|
98 "'" "u" ".P" "^." "'," "^1" "_o" ">>" "1/4" "1/2"
|
|
99 "3/4" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C"
|
28837
|
100 "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "-D" "~N"
|
23918
|
101 "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^"
|
28837
|
102 "\"U" "Y'" "-P" "ss" "`a" "a'" "a^" "~a" "\"a" "ao"
|
23918
|
103 "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i"
|
28837
|
104 "-d" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u"
|
|
105 "u'" "u^" "\"u" "y'" "-p" "\"y"]
|
23918
|
106 )
|
|
107 (latin-iso8859-2
|
|
108 . [255 "A;" "'(" "/L" "$$" "L<" "S'" "SE" "\"" "S<"
|
|
109 ",S" "T<" "Z'" "--" "Z<" "Z^." "^o" "a;" "';" "/l"
|
|
110 "'" "l<" "s'" "'<" "'," "s<" ",s" "t<" "z'" "'"
|
|
111 "z<" "z^." "R'" "A'" "A^" "A(" "\"A" "L'" "C'" ",C"
|
|
112 "C<" "E'" "E;" "E:" "E<" "I'" "I^" "D<" "/D" "N'"
|
|
113 "N<" "O'" "O^" "O''" "\"O" "*x" "R<" "U^0" "U'" "U''"
|
|
114 "\"U" "Y'" ",T" "ss" "r'" "a'" "a^" "a(" "\"a" "l'"
|
|
115 "c'" ",c" "c<" "e'" "e;" "\"e" "e<" "i'" "i^" "d<"
|
|
116 "/d" "n'" "n<" "o'" "o^" "o''" "\"o" "-:" "r<" "u^0"
|
|
117 "u'" "u''" "\"u" "y'" ",t" "'."]
|
|
118 )
|
|
119 (latin-iso8859-3
|
|
120 . [255 "/H" "'(" "Pd" "$$" " " "H^" "SE" "\"" "I^."
|
|
121 ",S" "G(" "J^" "--" " " "Z^." "^o" "/h" "^2" "^3"
|
|
122 "'" "u" "h^" "." "'," "i^." ",s" "g(" "j^" "1/2"
|
|
123 " " "z^." "`A" "A'" "A^" " " "\"A" "C^." "C^" ",C"
|
|
124 "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" " " "~N"
|
|
125 "`O" "O'" "O^" "G^." "\"O" "*x" "G^" "`U" "U'" "U^"
|
|
126 "\"U" "U(" "S^" "ss" "`a" "a'" "a^" " " "\"a" "c^."
|
|
127 "c^" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i"
|
|
128 " " "~n" "`o" "o'" "o^" "g^." "\"o" "-:" "g^" "`u"
|
|
129 "u'" "u^" "\"u" "u(" "s^" "^."]
|
|
130 )
|
|
131 (latin-iso8859-4
|
|
132 . [255 "A;" "kk" ",R" "$$" "?I" ",L" "SE" "\"" "S<"
|
|
133 "E-" ",G" "/T" "--" "Z<" "'-" "^o" "a;" "';" ",r"
|
|
134 "'" "~i" ",l" "'<" "'," "s<" "e-" ",g" "/t" "NG"
|
|
135 "z<" "ng" "A-" "A'" "A^" "~A" "\"A" "Ao" "AE" "I;"
|
|
136 "C<" "E'" "E;" "\"E" "E^." "I'" "I^" "I-" "/D" ",N"
|
|
137 "O-" ",K" "O^" "~O" "\"O" "*x" "/O" "U;" "U'" "U^"
|
|
138 "\"U" "~U" "U-" "ss" "a-" "a'" "a^" "~a" "\"a" "ao"
|
|
139 "ae" "i;" "c<" "e'" "e;" "\"e" "e^." "i'" "i^" "i-"
|
|
140 "/d" ",n" "o-" ",k" "o^" "~o" "\"o" "-:" "/o" "u;"
|
|
141 "u'" "u^" "\"u" "~u" "u-" "^."]
|
|
142 )
|
|
143 (cyrillic-iso8859-5
|
|
144 . [255 "\"E" "Dj" "Gj" "IE" "Dz" "Ii" "Ji" "JE" "Lj"
|
|
145 "Nj" "Ts" "Kj" 240 "V%" "Dzh" 65 "B=" 66 226
|
|
146 68 69 "Z%" 51 85 "J=" 75 "L=" 77 72
|
|
147 79 "P=" 80 67 84 89 232 88 "C=" "C%"
|
|
148 "S%" "Sc" "=\"" "Y=" "%\"" "Ee" "Yu" "Ya" 97 98
|
|
149 "v=" "g=" 103 101 "z%" "z=" 117 "j=" 107 "l="
|
|
150 "m=" "n=" 111 110 112 99 "t=" 121 "f=" 120
|
|
151 "c=" "c%" "s%" "sc" "='" "y=" "%'" "ee" "yu" "ya"
|
|
152 "N0" "\"e" "dj" "gj" "ie" "dz" "ii" "ji" "je" "lj"
|
|
153 "nj" "ts" "kj" 21 "v%" "dzh"]
|
|
154 )
|
|
155 (arabic-iso8859-6
|
|
156 . [255 nil nil nil "$$" nil nil nil nil nil
|
|
157 nil nil ",+" "--" nil nil nil nil nil nil
|
|
158 nil nil nil nil nil nil nil ";+" nil nil
|
|
159 nil "?+" nil "H'" "aM" "aH" "wH" "ah" "yH"
|
|
160 "a+" "b+" "tm" "t+" "tk" "g+" "hk" "x+" "d+" "dk"
|
|
161 "r+" "z+" "s+" "sn" "c+" "dd" "tj" "zH" "e+" "i+"
|
|
162 nil nil nil nil nil "++" "f+" "q+" "k+" "l+"
|
|
163 "m+" "n+" "h+" "w+" "j+" "y+" ":+" "\"+" "=+" "/+"
|
|
164 "'+" "1+" "3+" "0+" nil nil nil nil nil nil
|
|
165 nil nil nil nil nil nil nil]
|
|
166 )
|
|
167 (greek-iso8859-7
|
|
168 . [255 "9'" "'9" "Pd" nil nil "|" "SE" "\"" "(c)"
|
|
169 nil "<<" "~" "--" nil "-M" "^o" "+-" "^2" "^3"
|
28830
|
170 "'" "'%" "'A" "^." "'E" "'H" "'I" ">>" "'O" "1/2"
|
|
171 "'Y" "W%" "i3" 65 66 "G*" "D*" 69 90 72
|
|
172 "TH" 73 74 "L*" 77 78 "C*" 79 "P*" 80
|
|
173 nil "S*" 84 89 "F*" 88 "Q*" "W*" "\"I" "\"Y"
|
23918
|
174 "a%" "e%" "y%" "i%" "u3" "a*" "b*" "g*" "d*" "e*"
|
28830
|
175 "z*" "y*" "h*" "i*" 107 "l*" "m*" "n*" "c*" 111
|
|
176 "p*" "r*" "*s" "s*" "t*" 117 "f*" "x*" "q*" "w*"
|
|
177 "\"i" "\"u" "'o" "'u" "'w" nil]
|
23918
|
178 )
|
38947
|
179 ;; Note: some of the characters undefined according to ISO 8859-8
|
|
180 ;; in the ranges 190..220 and 250..255 are replaced with SI 1311-1
|
|
181 ;; points (Niqud) and bidi formatting characters
|
23918
|
182 (hebrew-iso8859-8
|
|
183 . [255 nil "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)"
|
|
184 "*x" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3"
|
|
185 "'" "u" ".P" "^." "'," "^1" "-:" ">>" "1/4" "1/2"
|
38947
|
186 "3/4" nil ":'" "v:" "-:" "-':" ".'" ".." "v'" "-'"
|
41884
|
187 "-," "`." nil "\\." "(.)" "|'" "`-" "`=" "||" nil
|
38947
|
188 nil "::" nil nil nil nil nil nil nil "LRO"
|
|
189 "RLO" "PDF" nil "=2" "A+" "B+" "G+" "D+" "H+" "W+"
|
23918
|
190 "Z+" "X+" "Tj" "J+" "K%" "K+" "L+" "M%" "M+" "N%"
|
|
191 "N+" "S+" "E+" "P%" "P+" "Zj" "ZJ" "Q+" "R+" "Sh"
|
38947
|
192 "T+" "LRE" "RLE" "LRM" "RLM" nil]
|
23918
|
193 )
|
|
194 (latin-iso8859-9
|
|
195 . [255 "!I" "|c" "Pd" "$$" "Ye" "|" "SE" "\"" "(c)"
|
|
196 "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3"
|
|
197 "'" "u" ".P" "^." "'," "^1" "_o" ">>" "1/4" "1/2"
|
|
198 "3/4" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C"
|
|
199 "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "G(" "~N"
|
|
200 "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^"
|
|
201 "\"U" "I^." ",S" "ss" "`a" "a'" "a^" "~a" "\"a" "ao"
|
28830
|
202 "ae" ",c" "`e" "e'" "e<" "\"e" "e^." "i'" "i^" "i-"
|
23918
|
203 "g(" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u"
|
28830
|
204 "u'" "u^" "\"u" "i." ",s" "\"y"]
|
|
205 )
|
|
206 (latin-iso8859-14
|
28920
|
207 . [255 "B`" "b`" "Pd" "C`" "c`" "D`" "SE" "`W" "(c)"
|
|
208 "W'" "d`" "`Y" "--" "(R)" "\"Y" "F`" "f`" "G`" "g`"
|
|
209 "M`" "m`" ".P" "P`" "`w" "p`" "w'" "S`" "`y" "\"W"
|
|
210 "\"w" "s`" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C"
|
28830
|
211 "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "W^" "~N"
|
|
212 "`O" "O'" "O^" "~O" "\"O" "T`" "/O" "`U" "U'" "U^"
|
|
213 "\"U" "Y'" "Y^" "ss" "`a" "a'" "a^" "~a" "\"a" "ao"
|
|
214 "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i"
|
28920
|
215 "w^" "~n" "`o" "o'" "o^" "~o" "\"o" "t`" "/o" "`u"
|
28830
|
216 "u'" "u^" "\"u" "y'" "y^" "\"y"]
|
|
217 )
|
|
218 (latin-iso8859-15
|
28837
|
219 . [255 "!I" "|c" "Pd" "E=" "Ye" "S<" "SE" "s<" "(c)"
|
28920
|
220 "_a" "<<" "~" "--" "(R)" "'-" "^o" "+-" "^2" "^3"
|
28830
|
221 "Z<" "u" ".P" "^." "z<" "^1" "_o" ">>" "OE" "oe"
|
|
222 "\"Y" "?I" "`A" "A'" "A^" "~A" "\"A" "Ao" "AE" ",C"
|
28837
|
223 "`E" "E'" "E^" "\"E" "`I" "I'" "I^" "\"I" "-D" "~N"
|
28830
|
224 "`O" "O'" "O^" "~O" "\"O" "*x" "/O" "`U" "U'" "U^"
|
28920
|
225 "\"U" "Y'" "|P" "ss" "`a" "a'" "a^" "~a" "\"a" "ao"
|
28830
|
226 "ae" ",c" "`e" "e'" "e^" "\"e" "`i" "i'" "i^" "\"i"
|
28837
|
227 "-d" "~n" "`o" "o'" "o^" "~o" "\"o" "-:" "/o" "`u"
|
28920
|
228 "u'" "u^" "\"u" "y'" "|p" "\"y"]
|
23918
|
229 )
|
|
230 )
|
|
231 "An alist of MULE ISO-8859 character sets and the strings that
|
|
232 should be used to represent the characters from each set on a DOS
|
|
233 terminal which does not have corresponding glyphs built into the
|
|
234 installed codepage.")
|
|
235
|
|
236 (defun IT-display-table-setup (codepage &optional table)
|
24845
|
237 "Set up display table TABLE for a DOS terminal which supports
|
|
238 glyphs built into the codepage CODEPAGE.
|
23918
|
239
|
|
240 If TABLE is nil or omitted, `standard-display-table' is used."
|
|
241 (let* ((surrogates IT-character-translations)
|
|
242 (disp-tab (or table standard-display-table))
|
|
243 (built-in-set (cp-charset-for-codepage codepage))
|
|
244 (offset (cp-offset-for-codepage codepage))
|
|
245 (cp-decoder
|
|
246 (symbol-value (intern-soft (format "%s-decode-table" codepage))))
|
|
247 (cp-decoder-len (length cp-decoder))
|
|
248 (c offset)
|
|
249 association chset)
|
|
250 ;; Undo the effects of previous call (where they may have used
|
|
251 ;; a different codepage) by reverting the display table for the
|
|
252 ;; built-in charset to its pristine shape.
|
26515
|
253 (while (< c 256)
|
23918
|
254 (aset disp-tab (make-char built-in-set c) nil)
|
|
255 (setq c (1+ c)))
|
|
256 (while surrogates
|
|
257 (setq association (car surrogates))
|
|
258 (setq chset (car association))
|
|
259 (let* ((vector (cdr association))
|
|
260 (veclen (length vector))
|
|
261 (i 0)
|
|
262 glyph)
|
|
263 (while (< i veclen)
|
|
264 (setq glyph (aref vector i))
|
38947
|
265 (or glyph (setq glyph dos-unsupported-char-glyph))
|
|
266 (if (or (not (equal chset built-in-set))
|
|
267 (>= i cp-decoder-len)
|
|
268 (null (aref cp-decoder i)))
|
23918
|
269 (aset disp-tab (make-char chset (+ i (logand offset 127)))
|
|
270 (vconcat
|
|
271 (if (numberp glyph)
|
|
272 (char-to-string glyph)
|
|
273 (if (> (length glyph) 1) (concat "{" glyph "}")
|
|
274 glyph)))))
|
|
275 (setq i (1+ i))))
|
24845
|
276 (setq surrogates (cdr surrogates)))))
|
23918
|
277
|
37969
|
278 (defvar IT-unicode-translations
|
|
279 '(
|
|
280 (mule-unicode-0100-24ff ; charset
|
|
281 256 ; base
|
|
282 256 563 ; first, last
|
|
283 [ "A-" "a-" "A(" "a(" "A;" "a;" "C'" "c'" "C>" "c>" ; Latin Extended-A
|
|
284 "C." "c." "C<" "c<" "D<" "d<" "D/" "d/" "E-" "e-"
|
|
285 "E(" "e(" "E." "e." "E;" "e;" "E<" "e<" "G>" "g>"
|
|
286 "G(" "g(" "G." "g." "G," "g," "H>" "h>" "H/" "h/"
|
|
287 "I~" "i~" "I-" "i-" "I(" "i(" "I;" "i;" "I." "i."
|
|
288 "IJ" "ij" "J>" "j>" "K," "k," "kk" "L'" "l'" "L,"
|
|
289 "l," "L<" "l<" "L." "l." "L/" "l/" "N'" "n'" "N,"
|
|
290 "n," "N<" "n<" "'n" "NG" "ng" "O-" "o-" "O(" "o("
|
|
291 "O\"" "o\"" "OE" "oe" "R'" "r'" "R," "r," "R<" "r<"
|
|
292 "S'" "s'" "S>" "s>" "S," "s," "S<" "s<" "T," "t,"
|
|
293 "T<" "t<" "T/" "t/" "U~" "u~" "U-" "u-" "U(" "u("
|
|
294 "U0" "u0" "U\"" "u\"" "U;" "u;" "W>" "w>" "Y>" "y>"
|
|
295 "Y:" "Z'" "z'" "Z." "z." "Z<" "z<" "s1" ; 017f
|
|
296 "b/" "B2" "=B" "=b" "B6" "b6" "!C" "C2" "c2" "-D" ;Lat. Extended-B
|
|
297 "D2" "=D" "=d" "!d" "!E" "-E" "Eps" "F2" "f2" "G2"
|
|
298 "V0" "hv" "io" "-I" "K2" "k2" "-l" "la-" "!M" "2N"
|
|
299 "n_" "-O" "O9" "o9" "OI" "oi" "P2" "p2" "'R" "!S"
|
|
300 "!s" "Esh" "!esh" "t~" "T2" "t2" "T~" "U9" "u9" "Ups"
|
|
301 "V2" "Y2" "y2" "Z/" "z/" "ED" "!ED" "!ed" "ed;" "2/"
|
|
302 "5-" "_5-" "ts" "wn" "|_" "||" "|=" "!_" "DZ<" "Dz<"
|
|
303 "dz<" "LJ3" "Lj3" "lj3" "NJ3" "Nj3" "nj3" "A<" "a<" "I<"
|
|
304 "i<" "O<" "o<" "U<" "u<" "U:-" "u:-" "U:'" "u:'" "U:<"
|
|
305 "u:<" "U:!" "u:!" "e1" "A:-" "a:-" "A.-" "a.-" "AE-" "ae-"
|
|
306 "G/" "g/" "G<" "g<" "K<" "k<" "O;" "o;" "O1" "o1"
|
|
307 "EZ" "ez" "j<" "DZ3" "Dz3" "dz3" "G'" "g'" "Hv" "Wn"
|
|
308 "N`" "n`" "AA'" "aa'" "AE'" "ae'" "O/'" "o/'" "A!!" "a!!"
|
|
309 "A)" "a)" "E!!" "e!!" "E)" "e)" "I!!" "i!!" "I)" "i)"
|
|
310 "O!!" "o!!" "O)" "o)" "R!!" "r!!" "R)" "r)" "U!!" "u!!"
|
|
311 "U)" "u)" ",S" ",s" ",T" ",t" "'3" "'3_" "H<" "h<"
|
|
312 nil nil "8" "8_" "Z2" "z2" "A." "a." "E," "e,"
|
|
313 "O:-" "o:-" "O~-" "o~-" "O." "o." "O.-" "o.-" "Y-" "y-"] ; 0x233
|
|
314
|
|
315 )
|
|
316
|
|
317 (mule-unicode-0100-24ff ; charset
|
|
318 256 ; base
|
|
319 884 1123 ; first, last
|
|
320 [ "'" "," nil nil nil nil "j3" nil nil nil ; Greek
|
|
321 "?;" nil nil nil nil nil "'*" "'%" "A%" ".*"
|
|
322 "E%" "Y%" "I%" nil "O%" nil "U%" "W%" "i3" "A*"
|
|
323 "B*" "G*" "D*" "E*" "Z*" "H*" "Th*" "I*" "K*" "L*"
|
|
324 "M*" "N*" "C*" "O*" "P*" "R*" nil "S*" "T*" "U*"
|
|
325 "F*" "X*" "Q*" "W*" "J*" "V*" "a%" "e%" "y%" "i%"
|
|
326 "u3" "a*" "b*" "g*" "d*" "e*" "z*" "h*" "th*" "i*"
|
|
327 "k*" "l*" "m*" "n*" "c*" "o*" "p*" "r*" "*s" "s*"
|
|
328 "t*" "u*" "f*" "x*" "q*" "w*" "j*" "v*" "o%" "u%"
|
|
329 "w%" nil "b3" "th%" "U2*" "'U2*" "U:2*" "ph*" "pi*" "ka*"
|
|
330 nil nil "Sti" "sti" "Dig" "dig" "Kop" "kop" "Sam" "sam"
|
|
331 "She" "she" "Fei" "fei" "Khe" "khe" "Hor" "hor" "Gan" "gan"
|
|
332 "Shi" "shi" "Dei" "dei" "ka*" "rh*" "ls*" "yo*" nil nil
|
|
333 nil nil nil nil nil nil nil nil nil nil
|
|
334 "IE'" "E:" "D%" "G%" "IE" "DS" "II" "YI" "J%" "LJ" ; Cyrillic
|
|
335 "NJ" "Ts" "KJ" "`I=" "V%" "DZ" 65 "B=" 66 "G="
|
|
336 68 69 "Z%" 51 85 "J=" 75 "L=" 77 72
|
|
337 79 "P=" 80 67 84 89 "F=" 88 "C=" "C%"
|
|
338 "S%" "Sc" "=\"" "Y=" "%\"" "Ee" "JU" "JA" 97 "b="
|
|
339 98 "g=" 103 101 "z%" "z=" 117 "j=" 107 "l="
|
|
340 109 "n=" 111 "p=" 112 99 "t=" 121 "f=" 120
|
|
341 "c=" "c%" "s%" "sc" "='" "y=" "%'" "ee" "ju" "ja"
|
|
342 "ie'" "e:" "d%" "g%" "ie" "ds" "ii" "yi" "j%" "lj"
|
|
343 "nj" "ts" "kj" "v%" "`i=" "dz" "OM=" "om=" "Y3" "y3"] ; 0x463
|
|
344 )
|
|
345
|
|
346 (mule-unicode-0100-24ff ; charset
|
|
347 256 ; base
|
38947
|
348 1454 1645 ; first, last
|
|
349 [ nil nil ":'" "v:" "-:" "-':" ".'" ".." "v'" "-'"
|
|
350 "-," "`." nil "\\." "(.)" "|'" "`-" nil "||" nil
|
|
351 nil "::" nil nil nil nil nil nil nil nil
|
|
352 nil nil nil nil
|
|
353 "A+" "B+" "G+" "D+" "H+" "W+" "Z+" "X+" "Tj" "J+" ; Hebrew
|
37969
|
354 "K%" "K+" "L+" "M%" "M+" "N%" "N+" "S+" "E+" "P%"
|
|
355 "P+" "Zj" "ZJ" "Q+" "R+" "Sh" "T+" nil nil nil
|
|
356 nil nil "WW+" "WJ+" "JJ+" "'+" "\"+" nil nil nil
|
|
357 nil nil nil nil nil nil nil nil nil nil
|
|
358 nil nil nil nil nil nil nil nil nil nil
|
|
359 ",+" nil nil nil nil nil nil nil nil nil ; Arabic
|
|
360 nil nil nil nil nil ";+" nil nil nil "?+"
|
|
361 nil "H'" "aM" "aH" "wH" "ah" "yH" "a+" "b+" "tm"
|
|
362 "t+" "tk" "g+" "hk" "x+" "d+" "dk" "r+" "z+" "s+"
|
|
363 "sn" "c+" "dd" "tj" "zH" "e+" "i+" nil nil nil
|
|
364 nil nil "++" "f+" "q+" "k+" "l+" "m+" "n+" "h+"
|
|
365 "w+" "j+" "y+" ":+" "\"+" "=+" "/+" "'+" "1+" "3+"
|
|
366 "0+" nil nil nil nil nil nil nil nil nil
|
|
367 nil nil nil nil "0a" "1a" "2a" "3a" "4a" "5a"
|
|
368 "6a" "7a" "8a" "9a" "a%" "a." "a," "a*" ]
|
|
369 )
|
|
370
|
|
371 (mule-unicode-0100-24ff ; charset
|
|
372 256 ; base
|
|
373 7680 9450 ; first, last
|
|
374 [ "A-0" "a-0" "B." "b." "B-." "b-." "B_" "b_" "C,'" "c,'" ; Lat Ext Add
|
|
375 "D." "d." "D-." "d-." "D_" "d_" "D," "d," "D->" "d->"
|
|
376 "E-!" "e-!" "E-'" "e-'" "E->" "e->" "E-?" "e-?" "E,(" "e,("
|
|
377 "F." "f." "G-" "g-" "H." "h." "H-." "h-." "H:" "h:"
|
|
378 "H," "h," "H-(" "h-(" "I-?" "i-?" "I:'" "i:'" "K'" "k'"
|
|
379 "K-." "k-." "K_" "k_" "L-." "l-." "_L-." "_l-." "L_" "l_"
|
|
380 "L->" "l->" "M'" "m'" "M." "m." "M-." "m-." "N." "n."
|
|
381 "N-." "n-." "N_" "n_" "N->" "n->" "O?'" "o?'" "O?:" "o?:"
|
|
382 "O-!" "o-!" "O-'" "o-'" "P'" "p'" "P." "p." "R." "r."
|
|
383 "R-." "r-." "_R-." "_r-." "R_" "r_" "S." "s." "S-." "s-."
|
|
384 "S'." "s'." "S<." "s<." ".S-." ".s-." "T." "t." "T-." "t-."
|
|
385 "T_" "t_" "T->" "t->" "U_:" "u_:" "U-?" "u-?" "U->" "u->"
|
|
386 "U?'" "u?'" "U-:" "u-:" "V?" "v?" "V-." "v-." "W!" "w!"
|
|
387 "W'" "w'" "W:" "w:" "W." "w." "W-." "w-." "X." "x."
|
|
388 "X:" "x:" "Y." "y." "Z>" "z>" "Z-." "z-." "Z_" "z_"
|
|
389 "h_" "t:" "w0" "y0" "a))" "s1." nil nil nil nil
|
|
390 "A-." "a-." "A2" "a2" "A>'" "a>'" "A>!" "a>!" "A>2" "a>2"
|
|
391 "A>~" "a>~" ".A>" ".a>" "A('" "a('" "A(!" "a(!" "A(2" "a(2"
|
|
392 "A(~" "a(~" ".A(" ".a(" "E-." "e-." "E2" "e2" "E~" "e~"
|
|
393 "E>'" "e>'" "E>!" "e>!" "E>2" "e>2" "E>~" "e>~" ".E>" ".e>"
|
|
394 "I2" "i2" "I-." "i-." "O-." "o-." "O2" "o2" "O>'" "o>'"
|
|
395 "O>!" "o>!" "O>2" "o>2" "O>~" "o>~" ".O>" ".o>" "O9'" "o9'"
|
|
396 "O9!" "o9!" "O92" "o92" "O9~" "o9~" ".O9" ".o9" "U-." "u-."
|
|
397 "U2" "u2" "U9'" "u9'" "U9!" "u9!" "U92" "u92" "U9~" "u9~"
|
|
398 ".U9" ".u9" "Y!" "y!" "Y-." "y-." "Y2" "y2" "Y~" "y~"
|
|
399 nil nil nil nil nil nil "a*," "a*;" nil nil ; Greek Ext (0x1f00)
|
|
400 nil nil nil nil "A*," "A*;" nil nil nil nil
|
|
401 nil nil "e*," "e*;" nil nil nil nil nil nil
|
|
402 "E*," "E*;" nil nil nil nil nil nil "y*," "y*;"
|
|
403 nil nil nil nil nil nil "Y*," "Y*;" nil nil
|
|
404 nil nil nil nil "i*," "i*;" nil nil nil nil
|
|
405 nil nil "I*," "I*;" nil nil nil nil nil nil
|
|
406 "o*," "o*;" nil nil nil nil nil nil "O*," "O*;"
|
|
407 nil nil nil nil nil nil "u*," "u*;" nil nil
|
|
408 nil nil nil nil nil "U*;" nil nil nil nil
|
|
409 nil nil "w*," "w*;" nil nil nil nil nil nil
|
|
410 "W*," "W*;" nil nil nil nil nil nil "a*!" "a*'"
|
|
411 "e*!" "e*'" "y*!" "y*'" "i*!" "i*'" "o*!" "o*'" "u*!" "u*'"
|
|
412 "w*!" "w*'" nil nil nil nil nil nil nil nil
|
|
413 nil nil nil nil nil nil nil nil nil nil
|
|
414 nil nil nil nil nil nil nil nil nil nil
|
|
415 nil nil nil nil nil nil nil nil nil nil
|
|
416 nil nil nil nil nil nil nil nil nil nil
|
|
417 nil nil "a*(" "a*-" nil "a*j" nil nil "a*~" nil
|
|
418 "A*(" "A*-" "A*!" "A*'" "A*J" ")*" "J3" ",," "?*" "?:"
|
|
419 nil "y*j" nil nil "y*?" nil "E*!" "E*'" "Y*!" "Y*'"
|
|
420 "Y*J" ",!" ",'" "?," "i*(" "i*-" nil nil nil nil
|
|
421 "i*?" nil "I*(" "I*-" "I*!" "I*'" nil ";!" ";'" "?;"
|
|
422 "u*(" "u*-" nil nil "r*," "r*;" "u*?" nil "U*(" "U*-"
|
|
423 "U*!" "U*'" "R*;" "!:" ":'" "!*" nil nil nil "w*j"
|
|
424 nil nil "w*?" nil "O*!" "O*'" "W*!" "W*'" "W*J" "/*"
|
|
425 ";;" nil nil nil "1N" "1M" "3M" "4M" "6M" nil ; Gen Punct
|
|
426 nil "1T" "1H" nil nil nil "LRM" "RLM" "-1" nil
|
38534
|
427 nil "--" "---" "===" "!2" "=2" "6`" "'9" ".9" "9'"
|
37969
|
428 "``" "''" ":9" "9``" "/-" "/=" "sb" "3b" nil ".."
|
|
429 "..." ".-" "LSep" "PSep" "LR[" "RL[" "PDF" "LRO" "RLO" 255
|
|
430 "%o" "%oo" "'" "''" "\"'" "`" "``" "```" ".^" "<,"
|
|
431 ",>" ":X" "!!" "?!" "'-" nil nil nil nil "-b"
|
|
432 "/f" nil nil nil nil nil nil nil nil nil
|
|
433 nil nil nil nil nil nil nil nil nil nil
|
|
434 nil nil nil nil nil nil nil nil nil nil
|
|
435 nil nil nil nil nil nil nil nil nil nil
|
|
436 nil nil nil nil "^0" nil nil nil "^4" "^5"
|
|
437 "^6" "^7" "^8" "^9" "^+" "^-" "^=" "^(" "^)" "^n"
|
|
438 "_0" "_1" "_2" "_3" "_4" "_5" "_6" "_7" "_8" "_9"
|
|
439 "_+" "_-" "_=" "_(" "_)" nil nil nil nil nil
|
|
440 nil nil nil nil nil nil nil nil nil nil
|
|
441 nil nil nil nil nil "Ff" "Li" nil nil "Pt"
|
|
442 nil "W=" "NIS" nil "E=" nil nil nil nil nil
|
|
443 nil nil nil nil nil nil nil nil nil nil
|
|
444 nil nil nil nil nil nil nil nil nil nil
|
|
445 nil nil nil nil nil nil nil nil nil nil
|
|
446 nil nil nil nil nil nil nil nil nil nil
|
|
447 nil nil nil nil nil nil nil nil nil nil
|
|
448 nil nil nil nil nil nil nil nil nil nil
|
|
449 nil nil nil nil nil nil nil nil nil nil
|
|
450 nil nil nil nil nil nil nil nil "a/c" "a/s"
|
|
451 nil "oC" nil "c/o" "c/u" "=e" nil "oF" nil nil
|
|
452 nil nil "-h" "=h" nil nil nil nil nil nil
|
|
453 "N0" "PO" nil nil nil nil "Re" nil "Rx" nil
|
|
454 "SM" "TEL" "TM" nil nil nil "Om" nil nil nil
|
|
455 "oK" "AO" nil nil "Est" nil nil nil nil nil
|
|
456 nil "Aleph" "Bet" "Gimel" "Dalet" "=i=" nil nil nil nil
|
|
457 nil nil nil nil nil nil nil nil nil nil
|
|
458 nil nil nil nil nil nil nil nil nil nil
|
|
459 nil "1/3" "2/3" "1/5" "2/5" "3/5" "4/5" "1/6" "5/6" "1/8"
|
|
460 "3/8" "5/8" "7/8" "1/" ".I" "II" "III" "IV" ".V" "VI"
|
|
461 "VII" "VIII" "IX" "X" "XI" "XII" ".L" ".C" ".D" ".M"
|
|
462 ".i" "ii" "iii" "iv" ".v" "vi" "vii" "viii" "ix" ".x"
|
|
463 "xi" ".l" ".c" ".d" ".m" "CD" "DD" "CoD" "CI" nil
|
|
464 nil nil nil nil nil nil nil nil nil nil
|
|
465 nil "<-" "|^" "->" "|v" "<->" "v|^" "^\\" "/^" "\\v"
|
|
466 "v/" "<-/" "/->" "<~" "~>" "<<-" "|^^" "->>" "|vv" "<-<"
|
|
467 ">->" "<-|" "_|^" "|->" "-|v" "_v|^" "<-?" "?->" "<-o" "o->"
|
|
468 "<~>" "<-/>" nil nil nil nil nil nil nil nil
|
|
469 nil nil nil nil nil nil nil nil nil nil
|
|
470 nil nil nil nil nil nil nil nil nil nil
|
|
471 nil nil nil "<=/" "<=/>" "/=>" "<=" "||^" "=>" "||v"
|
|
472 "<=>" "v||^" "^\\\\" "//^" "\\\\v" "v//" "<-=" "=->" nil nil
|
|
473 nil nil "<.." ":^" "..>" ":v" nil nil "<::" "::^"
|
|
474 "::>" "::v" nil nil nil nil nil nil nil nil
|
|
475 nil nil nil nil nil nil nil nil nil nil
|
|
476 nil nil nil nil "FA" "C." "dP" "TE" "~TE" "/0"
|
|
477 "DE" "NB" "(-" "~(-" "e-" "-)" "~-)" "-e" "QED" "*P"
|
|
478 nil "+Z" "--" "-+" ".+" "./" ".\\" "*-" "Ob" "Sb"
|
|
479 "SQR" "CBR" nil "0(" "00" "-L" "-V" nil nil ".|"
|
|
480 "~.|" "||" "/||" "AND" "OR" "(U" ")U" "In" "DI" nil
|
|
481 "Io" nil nil nil nil nil ".:" ":." ":R" "::"
|
|
482 ".-." "-:" ":-:" ":~:" "?~" "~?" "??" nil nil "/~"
|
|
483 "-~" "~-" "/~-" "~=" "~/=" "/~=" "~~" "/~~" nil nil
|
|
484 "=?" ")(" "v^" "^_" ".=" "=;" ".=." nil ":=" "=:"
|
|
485 nil "=o" "=)" "=^" "=v" "*=" "=<>" "=df" nil "?="
|
|
486 "!=" "-=" "!-=" "==" "=<" ">=" nil nil nil nil
|
|
487 "<<" ">>" "()" "/)(" "!<" "!>" nil nil nil nil
|
|
488 nil nil nil nil nil nil "<'" "`>" "=<'" "`>="
|
|
489 "~<'" "`>~" "/<'" "/`>" "(C" ")C" "/(C" "/)C" "(_" ")_"
|
|
490 "/(_" "/)_" nil nil nil nil nil nil nil nil
|
|
491 nil nil nil "0+" "0-" "0x" "0/" "0." "0o" "0*"
|
|
492 "0=" "0_" nil nil nil nil "|T" "T|" "-T" "_T"
|
|
493 nil nil nil nil nil nil nil nil nil nil
|
|
494 nil nil nil nil nil nil nil nil nil "-,-"
|
|
495 nil "XOR" "NAND" "NOR" nil nil nil nil nil nil
|
|
496 nil nil nil nil nil nil nil nil nil nil
|
|
497 nil nil nil nil nil nil nil nil "<." ".>"
|
|
498 "<<<" ">>>" nil nil nil nil nil nil nil nil
|
|
499 nil nil nil nil nil nil nil nil nil nil
|
|
500 nil nil ":3" "..." nil nil nil nil nil nil
|
|
501 nil nil nil nil nil nil nil nil nil nil
|
|
502 nil nil "Eh" nil nil nil nil nil "<7" ">7"
|
|
503 "7<" "7>" nil nil nil nil "~I" nil "(A" nil
|
|
504 nil "TR" nil "=||" "88" nil nil nil nil nil
|
|
505 nil nil "Iu" "Il" nil nil "-^-" "-`-" "D->" nil
|
|
506 nil "</" "/>" "<-D" nil nil nil nil nil nil
|
|
507 nil nil nil nil nil nil nil nil nil nil
|
|
508 nil nil nil nil nil nil nil nil nil nil
|
|
509 nil nil nil nil nil nil nil nil nil nil
|
|
510 nil nil nil nil nil nil nil nil nil nil
|
|
511 nil nil nil nil nil nil nil nil nil nil
|
|
512 nil nil nil nil nil nil nil nil nil nil
|
|
513 nil nil nil nil nil nil nil nil nil nil
|
|
514 nil nil nil nil nil nil nil nil nil nil
|
|
515 nil nil nil nil nil nil nil nil nil nil
|
|
516 nil nil nil nil nil nil nil nil nil nil
|
|
517 nil nil nil nil nil nil nil nil nil nil
|
|
518 nil nil nil nil nil nil nil nil nil nil
|
|
519 nil nil nil nil nil nil nil nil nil nil
|
|
520 nil nil nil nil nil nil nil nil nil nil
|
|
521 nil nil nil nil nil nil nil nil nil nil
|
|
522 nil nil nil nil nil nil nil nil nil nil
|
|
523 nil nil nil nil nil nil nil nil nil nil
|
|
524 nil nil nil nil nil nil nil nil nil nil
|
|
525 nil nil nil nil nil nil nil nil nil nil
|
|
526 nil nil nil nil nil nil nil nil nil nil
|
|
527 nil nil nil nil nil nil "NUL" "SOH" "STX" "ETX"
|
|
528 "EOT" "ENQ" "ACK" "BEL" "BS" "HT" "LF" "VT" "FF" "CR"
|
|
529 "SS" "SI" "DLE" "DC1" "DC2" "DC3" "DC4" "NAK" "SYN" "ETB"
|
|
530 "CAN" "EM" "SUB" "ESC" "FS" "GS" "RS" "US" "SP" "DEL"
|
|
531 "b/" ",_," "NL" nil "?^" nil nil nil nil nil
|
|
532 nil nil nil nil nil nil nil nil nil nil
|
|
533 nil nil nil nil nil nil nil nil nil nil
|
|
534 nil nil nil nil nil nil nil nil nil nil
|
|
535 nil nil nil nil nil nil nil nil nil nil
|
|
536 nil nil nil nil nil nil nil nil nil nil
|
|
537 nil nil "1-o" "2-o" "3-o" "4-o" "5-o" "6-o" "7-o" "8-o"
|
|
538 "9-o" "10-o" "11-o" "12-o" "13-o" "14-o" "15-o" "16-o" "17-o" "18-o"
|
|
539 "19-o" "20-o" "(1)" "(2)" "(3)" "(4)" "(5)" "(6)" "(7)" "(8)"
|
|
540 "(9)" "(10)" "(11)" "(12)" "(13)" "(14)" "(15)" "(16)" "(17)" "(18)"
|
|
541 "(19)" "(20)" "1." "2." "3." "4." "5." "6." "7." "8."
|
|
542 "9." "10." "11." "12." "13." "14." "15." "16." "17." "18."
|
|
543 "19." "20." "(a)" "(b)" "(c)" "(d)" "(e)" "(f)" "(g)" "(h)"
|
|
544 "(i)" "(j)" "(k)" "(l)" "(m)" "(n)" "(o)" "(p)" "(q)" "(r)"
|
|
545 "(s)" "(t)" "(u)" "(v)" "(w)" "(x)" "(y)" "(z)" "A-o" "B-o"
|
|
546 "C-o" "D-o" "E-o" "F-o" "G-o" "H-o" "I-o" "J-o" "K-o" "L-o"
|
|
547 "M-o" "N-o" "O-o" "P-o" "Q-o" "R-o" "S-o" "T-o" "U-o" "V-o"
|
|
548 "W-o" "X-o" "Y-o" "Z-o" "a-o" "b-o" "c-o" "d-o" "e-o" "f-o"
|
|
549 "g-o" "h-o" "i-o" "j-o" "k-o" "l-o" "m-o" "n-o" "o-o" "p-o"
|
|
550 "q-o" "r-o" "s-o" "t-o" "u-o" "v-o" "w-o" "x-o" "y-o" "z-o"
|
|
551 "0-o" ]
|
|
552 )
|
|
553 )
|
|
554
|
|
555 "A list of mule-unicode-* character sets and the strings that
|
|
556 should be used to represent the characters from each set on a DOS
|
|
557 terminal which does not have corresponding glyphs built into the
|
|
558 installed codepage.")
|
|
559
|
|
560 (defun IT-setup-unicode-display (&optional table)
|
|
561 "Set up display table TABLE for displaying mule-unicode-* characters
|
|
562 on a DOS terminal. If TABLE is nil or omitted, `standard-display-table'
|
|
563 is used."
|
|
564 (interactive)
|
|
565 (let ((disp-tab (or table standard-display-table))
|
|
566 (tail IT-unicode-translations)
|
|
567 translation)
|
|
568 (while tail
|
|
569 (setq translation (car tail) tail (cdr tail))
|
|
570 (let* ((chset (car translation))
|
|
571 (base (nth 1 translation))
|
|
572 (first (nth 2 translation))
|
|
573 (last (nth 3 translation))
|
|
574 (table (nth 4 translation))
|
|
575 (i 0)
|
|
576 (this (- first base))
|
|
577 glyph)
|
|
578 (while (<= i (- last first))
|
|
579 (setq glyph (aref table i))
|
38947
|
580 (or glyph (setq glyph dos-unsupported-char-glyph))
|
|
581 (aset disp-tab (make-char chset
|
|
582 (+ (/ this 96) 32)
|
|
583 (+ (% this 96) 32))
|
|
584 (vconcat
|
|
585 (if (numberp glyph)
|
|
586 (char-to-string glyph)
|
|
587 (if (> (length glyph) 1) (concat "{" glyph "}")
|
|
588 glyph))))
|
37969
|
589 (setq i (1+ i) this (1+ this)))))))
|
|
590
|
24563
|
591 (defun dos-cpNNN-setup (codepage)
|
|
592 "Set up the MULE environment using the DOS codepage CODEPAGE.
|
23918
|
593
|
24563
|
594 This function creates the coding system cpNNN (where NNN is the value
|
|
595 of the argument CODEPAGE), and then uses this coding system to set up
|
|
596 display tables, and the language environment options as appropriate."
|
|
597 (let* ((cp (format "cp%s" codepage))
|
23918
|
598 (charset (cp-charset-for-codepage cp))
|
|
599 (offset (cp-offset-for-codepage cp)))
|
|
600 (cp-make-coding-systems-for-codepage cp charset offset)
|
|
601 ;; This is done by set-language-environment.
|
|
602 ;;(setq nonascii-translation-table
|
|
603 ;; (symbol-value (intern (concat cp "-nonascii-translation-table"))))
|
|
604 (set-language-environment (cp-language-for-codepage cp))
|
|
605 (set-default-coding-systems (intern (concat cp "-dos")))
|
24261
|
606 (set-selection-coding-system (intern (concat cp "-dos")))
|
23918
|
607 (set-terminal-coding-system
|
|
608 (setq default-terminal-coding-system (intern (concat cp
|
|
609 "-unix"))))
|
|
610 (IT-display-table-setup cp)
|
42300
|
611 ;; It's time: too many input methods in leim/quail produce
|
|
612 ;; Unicode characters. Let the user see them.
|
|
613 (IT-setup-unicode-display)
|
24162
|
614 (prefer-coding-system (intern (concat cp "-dos")))
|
24490
|
615 (if default-enable-multibyte-characters
|
|
616 ;; We want this in multibyte version only, since unibyte version
|
|
617 ;; should not convert non-ASCII characters at all.
|
|
618 (setq unibyte-display-via-language-environment t)
|
|
619 ;; Let the unibyte version behave as Emacs 19 did. In particular,
|
|
620 ;; let it use and display native codepage-specific glyphs for
|
|
621 ;; non-ASCII characters. For this to work correctly, we need to
|
|
622 ;; establish the correspondence between lower-case letters and their
|
|
623 ;; upper-case brethren, as appropriate for the codepage in use. The
|
|
624 ;; code below makes this happen.
|
|
625 ;; (In the multibyte mode, the appropriate tables are prepared
|
|
626 ;; elsewhere, since multibyte Emacs uses normal MULE character sets,
|
|
627 ;; which are supported on all platforms.)
|
|
628 (let* ((i 128)
|
|
629 (modify (function
|
49599
|
630 (lambda (ch sy)
|
24490
|
631 (modify-syntax-entry ch sy text-mode-syntax-table)
|
|
632 (if (boundp 'tex-mode-syntax-table)
|
|
633 (modify-syntax-entry ch sy tex-mode-syntax-table))
|
|
634 (modify-syntax-entry ch sy (standard-syntax-table))
|
|
635 )))
|
|
636 (table (standard-case-table))
|
|
637 ;; The following are strings of letters, first lower then
|
|
638 ;; upper case. This will look funny on terminals which
|
|
639 ;; display other code pages. In particular, what is
|
|
640 ;; displayed as blanks or triangles are not what they
|
30537
31765e95b970
Fix a typo in a comment. Reported by Michel de Ruiter <Michel@smr.nl>.
Eli Zaretskii <eliz@gnu.org>
diff
changeset
|
641 ;; look like at all! (Use `C-x =' to see what they
|
24490
|
642 ;; really are.)
|
|
643 (chars
|
|
644 (cond
|
24563
|
645 ((= codepage 850)
|
24490
|
646 "����������氍�������沺������磚���蝪��Y跋�Iiぅ佰艾")
|
24563
|
647 ((= codepage 865)
|
24490
|
648 "�������A��A��E�E�E�I�I�I���O���O�U�U�Y���A�I�O�Uぅ")
|
|
649 ;; default is 437
|
|
650 (t "�������A��A��E�E�E�I�I�I���O���O�U�U�Y�A�I�O�Uぅ"))))
|
|
651
|
|
652 (while (< i 256)
|
|
653 (funcall modify i "_")
|
|
654 (setq i (1+ i)))
|
|
655
|
|
656 (setq i 0)
|
|
657 (while (< i (length chars))
|
|
658 (let ((ch1 (aref chars i))
|
|
659 (ch2 (aref chars (1+ i))))
|
|
660 (if (> ch2 127)
|
|
661 (set-case-syntax-pair ch2 ch1 table))
|
|
662 (setq i (+ i 2))))
|
|
663 (save-excursion
|
|
664 (mapcar (lambda (b) (set-buffer b) (set-case-table table))
|
|
665 (buffer-list)))
|
|
666 (set-standard-case-table table)))
|
23918
|
667 ;; Some codepages have sporadic support for Latin-1, Greek, and
|
|
668 ;; symbol glyphs, which don't belong to their native character
|
|
669 ;; set. It's a nuisance to have all those glyphs here, for all
|
|
670 ;; the codepages (for starters, I don't even have references for
|
|
671 ;; all the codepages). So I provide a hook for those who want to
|
|
672 ;; squeeze every bit of support out of their terminal/font.
|
|
673 (run-hooks 'dos-codepage-setup-hook)
|
|
674 ))
|
|
675
|
24563
|
676 (defvar cjk-codepages-alist
|
28807
|
677 '((932 "Japanese" japanese-shift-jis)
|
|
678 (950 "Chinese-BIG5" cn-big5)
|
|
679 (936 "Chinese-GB" cn-gb-2312)
|
|
680 (949 "Korean" euc-kr))
|
24563
|
681 "An alist of Far-Eastern codepages and the names of the associated
|
|
682 language and supported coding system.")
|
|
683
|
|
684 (defun dos-codepage-setup ()
|
|
685 "Set up the MULE environment as appropriate for the installed DOS codepage.
|
|
686
|
|
687 This function sets coding systems, display tables, and the language
|
|
688 environment options as appropriate for the current value of `dos-codepage'.
|
|
689
|
|
690 This function is automatically run at startup via the `term-setup-hook'
|
|
691 list. You can (and should) also run it whenever the value of
|
|
692 `dos-codepage' changes."
|
|
693 (interactive)
|
|
694 (let* ((desc (cdr (assq dos-codepage cjk-codepages-alist)))
|
|
695 (lang (car desc))
|
|
696 (coding (car (cdr desc)))
|
|
697 coding-dos coding-unix)
|
|
698 (if (null desc)
|
|
699 (dos-cpNNN-setup dos-codepage)
|
|
700 ;; We've got one of the Far-Eastern codepages which support
|
|
701 ;; MULE native coding systems directly.
|
|
702 (setq coding-dos (intern (format "%s-dos" coding))
|
|
703 coding-unix (intern (format "%s-unix" coding)))
|
28807
|
704 (set-language-environment lang)
|
24563
|
705 (set-selection-coding-system coding-dos)
|
|
706 (setq file-name-coding-system coding-unix)
|
|
707 (set-terminal-coding-system
|
|
708 (setq default-terminal-coding-system coding-unix))
|
|
709 ;; Assume they support non-ASCII Latin characters like the IBM
|
|
710 ;; codepage 437 does.
|
|
711 (IT-display-table-setup "cp437")
|
42300
|
712 ;; It's time: too many input methods in leim/quail produce
|
|
713 ;; Unicode characters. Let the user see them.
|
|
714 (IT-setup-unicode-display)
|
24563
|
715 (prefer-coding-system coding-dos)
|
|
716 (if default-enable-multibyte-characters
|
|
717 (setq unibyte-display-via-language-environment t))
|
|
718 )))
|
|
719
|
23918
|
720 ;; We want to delay the terminal and other codepage-related setup
|
|
721 ;; until after the terminal is set and user's .emacs is processed,
|
|
722 ;; because people might define their `dos-codepage-setup-hook' there.
|
|
723 (add-hook 'term-setup-hook 'dos-codepage-setup)
|
|
724
|
|
725 ;; In multibyte mode, we want unibyte buffers to be displayed using
|
|
726 ;; the terminal coding system, so that they display correctly on the
|
|
727 ;; DOS terminal; in unibyte mode we want to see all 8-bit characters
|
|
728 ;; verbatim. In both cases, we want the entire range of 8-bit
|
|
729 ;; characters to arrive at our display code verbatim.
|
24448
|
730 (standard-display-8bit 127 255)
|
23918
|
731
|
93975
|
732 ;; arch-tag: eea04c06-7311-4b5a-b531-3c1be1b070af
|
17517
|
733 ;;; internal.el ends here
|