1 ;;; cyril-util.el --- utilities for Cyrillic scripts
3 ;; Copyright (C) 1997-1998, 2001-2016 Free Software Foundation, Inc.
5 ;; Keywords: mule, multilingual, Cyrillic
7 ;; This file is part of GNU Emacs.
9 ;; GNU Emacs is free software: you can redistribute it and/or modify
10 ;; it under the terms of the GNU General Public License as published by
11 ;; the Free Software Foundation, either version 3 of the License, or
12 ;; (at your option) any later version.
14 ;; GNU Emacs is distributed in the hope that it will be useful,
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;; GNU General Public License for more details.
19 ;; You should have received a copy of the GNU General Public License
20 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
26 ;; Fixme: are the next two useful?
29 (defun cyrillic-encode-koi8-r-char (char)
30 "Return KOI8-R external character code of CHAR if appropriate."
31 (encode-char char 'koi8-r))
34 (defun cyrillic-encode-alternativnyj-char (char)
35 "Return ALTERNATIVNYJ external character code of CHAR if appropriate."
36 (encode-char char 'alternativnyj))
41 ;; Written by Valery Alexeev <valery@math.uga.edu>.
43 (defvar cyrillic-language-alist
44 (list '("Belarusian") '("Bulgarian") '("Macedonian")
45 '("Russian") '("Serbo-Croatian") '("Ukrainian"))
46 "List of known cyrillic languages.")
49 (defun standard-display-cyrillic-translit (&optional cyrillic-language)
50 "Display a cyrillic buffer using a transliteration.
51 For readability, the table is slightly
52 different from the one used for the input method `cyrillic-translit'.
54 The argument is a string which specifies which language you are using;
55 that affects the choice of transliterations slightly.
56 Possible values are listed in `cyrillic-language-alist'.
57 If the argument is t, we use the default cyrillic transliteration.
58 If the argument is nil, we return the display table to its standard state."
61 (let* ((completion-ignore-case t))
63 "Cyrillic language (default nil): "
64 cyrillic-language-alist nil t nil nil nil))))
66 (or standard-display-table
67 (setq standard-display-table (make-display-table)))
69 (if (equal cyrillic-language "")
70 (setq cyrillic-language nil))
72 (if (null cyrillic-language)
73 (setq standard-display-table (make-display-table))
74 (aset standard-display-table ?а [?a])
75 (aset standard-display-table ?б [?b])
76 (aset standard-display-table ?в [?v])
77 (aset standard-display-table ?г [?g])
78 (aset standard-display-table ?д [?d])
79 (aset standard-display-table ?е [?e])
80 (aset standard-display-table ?ё [?y ?o])
81 (aset standard-display-table ?ж [?z ?h])
82 (aset standard-display-table ?з [?z])
83 (aset standard-display-table ?и [?i])
84 (aset standard-display-table ?й [?j])
85 (aset standard-display-table ?к [?k])
86 (aset standard-display-table ?л [?l])
87 (aset standard-display-table ?м [?m])
88 (aset standard-display-table ?н [?n])
89 (aset standard-display-table ?о [?o])
90 (aset standard-display-table ?п [?p])
91 (aset standard-display-table ?р [?r])
92 (aset standard-display-table ?с [?s])
93 (aset standard-display-table ?т [?t])
94 (aset standard-display-table ?у [?u])
95 (aset standard-display-table ?ф [?f])
96 (aset standard-display-table ?х [?k ?h])
97 (aset standard-display-table ?ц [?t ?s])
98 (aset standard-display-table ?ч [?c ?h])
99 (aset standard-display-table ?ш [?s ?h])
100 (aset standard-display-table ?щ [?s ?c ?h])
101 (aset standard-display-table ?ъ [?~])
102 (aset standard-display-table ?ы [?y])
103 (aset standard-display-table ?ь [?'])
104 (aset standard-display-table ?э [?e ?'])
105 (aset standard-display-table ?ю [?y ?u])
106 (aset standard-display-table ?я [?y ?a])
108 (aset standard-display-table ?А [?A])
109 (aset standard-display-table ?Б [?B])
110 (aset standard-display-table ?В [?V])
111 (aset standard-display-table ?Г [?G])
112 (aset standard-display-table ?Д [?D])
113 (aset standard-display-table ?Е [?E])
114 (aset standard-display-table ?Ё [?Y ?o])
115 (aset standard-display-table ?Ж [?Z ?h])
116 (aset standard-display-table ?З [?Z])
117 (aset standard-display-table ?И [?I])
118 (aset standard-display-table ?Й [?J])
119 (aset standard-display-table ?К [?K])
120 (aset standard-display-table ?Л [?L])
121 (aset standard-display-table ?М [?M])
122 (aset standard-display-table ?Н [?N])
123 (aset standard-display-table ?О [?O])
124 (aset standard-display-table ?П [?P])
125 (aset standard-display-table ?Р [?R])
126 (aset standard-display-table ?С [?S])
127 (aset standard-display-table ?Т [?T])
128 (aset standard-display-table ?У [?U])
129 (aset standard-display-table ?Ф [?F])
130 (aset standard-display-table ?Х [?K ?h])
131 (aset standard-display-table ?Ц [?T ?s])
132 (aset standard-display-table ?Ч [?C ?h])
133 (aset standard-display-table ?Ш [?S ?h])
134 (aset standard-display-table ?Щ [?S ?c ?h])
135 (aset standard-display-table ?Ъ [?~])
136 (aset standard-display-table ?Ы [?Y])
137 (aset standard-display-table ?Ь [?'])
138 (aset standard-display-table ?Э [?E ?'])
139 (aset standard-display-table ?Ю [?Y ?u])
140 (aset standard-display-table ?Я [?Y ?a])
142 (aset standard-display-table ?є [?i ?e])
143 (aset standard-display-table ?ї [?i])
144 (aset standard-display-table ?ў [?u])
145 (aset standard-display-table ?ђ [?d ?j])
146 (aset standard-display-table ?ћ [?c ?h ?j])
147 (aset standard-display-table ?ѓ [?g ?j])
148 (aset standard-display-table ?ѕ [?s])
149 (aset standard-display-table ?ќ [?k])
150 (aset standard-display-table ?і [?i])
151 (aset standard-display-table ?ј [?j])
152 (aset standard-display-table ?љ [?l ?j])
153 (aset standard-display-table ?њ [?n ?j])
154 (aset standard-display-table ?џ [?d ?z])
156 (aset standard-display-table ?Є [?Y ?e])
157 (aset standard-display-table ?Ї [?Y ?i])
158 (aset standard-display-table ?Ў [?U])
159 (aset standard-display-table ?Ђ [?D ?j])
160 (aset standard-display-table ?Ћ [?C ?h ?j])
161 (aset standard-display-table ?Ѓ [?G ?j])
162 (aset standard-display-table ?Ѕ [?S])
163 (aset standard-display-table ?Ќ [?K])
164 (aset standard-display-table ?І [?I])
165 (aset standard-display-table ?Ј [?J])
166 (aset standard-display-table ?Љ [?L ?j])
167 (aset standard-display-table ?Њ [?N ?j])
168 (aset standard-display-table ?Џ [?D ?j])
170 (when (equal cyrillic-language "Bulgarian")
171 (aset standard-display-table ?щ [?s ?h ?t])
172 (aset standard-display-table ?Щ [?S ?h ?t])
173 (aset standard-display-table ?ю [?i ?u])
174 (aset standard-display-table ?Ю [?I ?u])
175 (aset standard-display-table ?я [?i ?a])
176 (aset standard-display-table ?Я [?I ?a]))
178 (when (equal cyrillic-language "Ukrainian") ; based on the official
179 ; transliteration table
180 (aset standard-display-table ?и [?y])
181 (aset standard-display-table ?И [?Y])
182 (aset standard-display-table ?й [?i])
183 (aset standard-display-table ?Й [?Y])
184 (aset standard-display-table ?ю [?i ?u])
185 (aset standard-display-table ?я [?i ?a]))))
188 (provide 'cyril-util)
194 ;;; cyril-util.el ends here