2021-01-26 21:11:49 -05:00
|
|
|
|
;;; cyril-util.el --- utilities for Cyrillic scripts -*- lexical-binding: t; -*-
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
2022-01-01 02:45:51 -05:00
|
|
|
|
;; Copyright (C) 1997-1998, 2001-2022 Free Software Foundation, Inc.
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
|
|
|
|
;; Keywords: mule, multilingual, Cyrillic
|
|
|
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 04:29:13 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
1997-05-28 03:41:18 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 04:29:13 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
|
|
|
|
;; GNU Emacs 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
|
2017-09-13 15:52:52 -07:00
|
|
|
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
2001-07-15 19:53:53 +00:00
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
1997-05-28 03:41:18 +00:00
|
|
|
|
;;; Code:
|
|
|
|
|
|
2002-07-24 22:23:44 +00:00
|
|
|
|
;; Fixme: are the next two useful?
|
|
|
|
|
|
1998-08-02 01:06:57 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun cyrillic-encode-koi8-r-char (char)
|
|
|
|
|
"Return KOI8-R external character code of CHAR if appropriate."
|
2002-06-11 18:44:47 +00:00
|
|
|
|
(encode-char char 'koi8-r))
|
1998-08-02 01:06:57 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun cyrillic-encode-alternativnyj-char (char)
|
|
|
|
|
"Return ALTERNATIVNYJ external character code of CHAR if appropriate."
|
2002-06-11 18:44:47 +00:00
|
|
|
|
(encode-char char 'alternativnyj))
|
1998-08-02 01:06:57 +00:00
|
|
|
|
|
1997-08-01 17:09:45 +00:00
|
|
|
|
|
2002-02-07 17:48:41 +00:00
|
|
|
|
;; Display
|
1997-08-01 17:09:45 +00:00
|
|
|
|
|
|
|
|
|
;; Written by Valery Alexeev <valery@math.uga.edu>.
|
|
|
|
|
|
1997-08-05 01:10:07 +00:00
|
|
|
|
(defvar cyrillic-language-alist
|
2014-01-04 18:56:08 -08:00
|
|
|
|
(list '("Belarusian") '("Bulgarian") '("Macedonian")
|
1997-08-08 06:40:52 +00:00
|
|
|
|
'("Russian") '("Serbo-Croatian") '("Ukrainian"))
|
2002-02-07 17:48:41 +00:00
|
|
|
|
"List of known cyrillic languages.")
|
1997-08-05 01:10:07 +00:00
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
|
(defun standard-display-cyrillic-translit (&optional cyrillic-language)
|
2020-08-10 01:03:09 +02:00
|
|
|
|
"Display a Cyrillic buffer using a transliteration.
|
1997-08-01 17:09:45 +00:00
|
|
|
|
For readability, the table is slightly
|
|
|
|
|
different from the one used for the input method `cyrillic-translit'.
|
|
|
|
|
|
1997-08-05 01:10:07 +00:00
|
|
|
|
The argument is a string which specifies which language you are using;
|
1997-08-01 17:09:45 +00:00
|
|
|
|
that affects the choice of transliterations slightly.
|
2002-02-07 17:48:41 +00:00
|
|
|
|
Possible values are listed in `cyrillic-language-alist'.
|
1997-08-05 01:10:07 +00:00
|
|
|
|
If the argument is t, we use the default cyrillic transliteration.
|
1997-08-01 17:09:45 +00:00
|
|
|
|
If the argument is nil, we return the display table to its standard state."
|
1997-08-05 05:00:55 +00:00
|
|
|
|
(interactive
|
|
|
|
|
(list
|
|
|
|
|
(let* ((completion-ignore-case t))
|
|
|
|
|
(completing-read
|
2021-10-05 03:34:08 +02:00
|
|
|
|
(format-prompt "Cyrillic language" "nil")
|
1997-08-05 05:00:55 +00:00
|
|
|
|
cyrillic-language-alist nil t nil nil nil))))
|
|
|
|
|
|
|
|
|
|
(or standard-display-table
|
|
|
|
|
(setq standard-display-table (make-display-table)))
|
1997-08-05 01:10:07 +00:00
|
|
|
|
|
|
|
|
|
(if (equal cyrillic-language "")
|
|
|
|
|
(setq cyrillic-language nil))
|
|
|
|
|
|
1997-08-01 17:09:45 +00:00
|
|
|
|
(if (null cyrillic-language)
|
|
|
|
|
(setq standard-display-table (make-display-table))
|
Use UTF-8 for most files with non-ASCII characters.
* admin/notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
* etc/tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
Switch from iso-2022-7bit to utf-8.
* leim/quail/cyrillic.el, leim/quail/czech.el, leim/quail/ethiopic.el:
* leim/quail/greek.el, leim/quail/hanja.el, leim/quail/hanja3.el:
* leim/quail/hebrew.el, leim/quail/lao.el, leim/quail/lrt.el:
* leim/quail/slovak.el, leim/quail/symbol-ksc.el, leim/quail/thai.el:
* leim/quail/tibetan.el, leim/quail/viqr.el, leim/quail/vntelex.el:
* leim/quail/vnvni.el, leim/quail/welsh.el:
* lisp/international/latin1-disp.el, lisp/international/mule-util.el:
* lisp/language/cyril-util.el, lisp/language/european.el:
* lisp/language/ind-util.el, lisp/language/lao-util.el, lisp/language/thai.el:
* lisp/language/tibet-util.el, lisp/language/tibetan.el:
* lisp/language/viet-util.el:
Switch from iso-2022-7bit to utf-8 or (if needed) utf-8-emacs.
Fixes: debbugs:13936
2013-04-01 18:18:40 -07:00
|
|
|
|
(aset standard-display-table ?а [?a])
|
|
|
|
|
(aset standard-display-table ?б [?b])
|
|
|
|
|
(aset standard-display-table ?в [?v])
|
|
|
|
|
(aset standard-display-table ?г [?g])
|
|
|
|
|
(aset standard-display-table ?д [?d])
|
|
|
|
|
(aset standard-display-table ?е [?e])
|
|
|
|
|
(aset standard-display-table ?ё [?y ?o])
|
|
|
|
|
(aset standard-display-table ?ж [?z ?h])
|
|
|
|
|
(aset standard-display-table ?з [?z])
|
|
|
|
|
(aset standard-display-table ?и [?i])
|
|
|
|
|
(aset standard-display-table ?й [?j])
|
|
|
|
|
(aset standard-display-table ?к [?k])
|
|
|
|
|
(aset standard-display-table ?л [?l])
|
|
|
|
|
(aset standard-display-table ?м [?m])
|
|
|
|
|
(aset standard-display-table ?н [?n])
|
|
|
|
|
(aset standard-display-table ?о [?o])
|
|
|
|
|
(aset standard-display-table ?п [?p])
|
|
|
|
|
(aset standard-display-table ?р [?r])
|
|
|
|
|
(aset standard-display-table ?с [?s])
|
|
|
|
|
(aset standard-display-table ?т [?t])
|
|
|
|
|
(aset standard-display-table ?у [?u])
|
|
|
|
|
(aset standard-display-table ?ф [?f])
|
|
|
|
|
(aset standard-display-table ?х [?k ?h])
|
|
|
|
|
(aset standard-display-table ?ц [?t ?s])
|
|
|
|
|
(aset standard-display-table ?ч [?c ?h])
|
|
|
|
|
(aset standard-display-table ?ш [?s ?h])
|
|
|
|
|
(aset standard-display-table ?щ [?s ?c ?h])
|
|
|
|
|
(aset standard-display-table ?ъ [?~])
|
|
|
|
|
(aset standard-display-table ?ы [?y])
|
|
|
|
|
(aset standard-display-table ?ь [?'])
|
|
|
|
|
(aset standard-display-table ?э [?e ?'])
|
|
|
|
|
(aset standard-display-table ?ю [?y ?u])
|
|
|
|
|
(aset standard-display-table ?я [?y ?a])
|
|
|
|
|
|
|
|
|
|
(aset standard-display-table ?А [?A])
|
|
|
|
|
(aset standard-display-table ?Б [?B])
|
|
|
|
|
(aset standard-display-table ?В [?V])
|
|
|
|
|
(aset standard-display-table ?Г [?G])
|
|
|
|
|
(aset standard-display-table ?Д [?D])
|
|
|
|
|
(aset standard-display-table ?Е [?E])
|
|
|
|
|
(aset standard-display-table ?Ё [?Y ?o])
|
|
|
|
|
(aset standard-display-table ?Ж [?Z ?h])
|
|
|
|
|
(aset standard-display-table ?З [?Z])
|
|
|
|
|
(aset standard-display-table ?И [?I])
|
|
|
|
|
(aset standard-display-table ?Й [?J])
|
|
|
|
|
(aset standard-display-table ?К [?K])
|
|
|
|
|
(aset standard-display-table ?Л [?L])
|
|
|
|
|
(aset standard-display-table ?М [?M])
|
|
|
|
|
(aset standard-display-table ?Н [?N])
|
|
|
|
|
(aset standard-display-table ?О [?O])
|
|
|
|
|
(aset standard-display-table ?П [?P])
|
|
|
|
|
(aset standard-display-table ?Р [?R])
|
|
|
|
|
(aset standard-display-table ?С [?S])
|
|
|
|
|
(aset standard-display-table ?Т [?T])
|
|
|
|
|
(aset standard-display-table ?У [?U])
|
|
|
|
|
(aset standard-display-table ?Ф [?F])
|
|
|
|
|
(aset standard-display-table ?Х [?K ?h])
|
|
|
|
|
(aset standard-display-table ?Ц [?T ?s])
|
|
|
|
|
(aset standard-display-table ?Ч [?C ?h])
|
|
|
|
|
(aset standard-display-table ?Ш [?S ?h])
|
|
|
|
|
(aset standard-display-table ?Щ [?S ?c ?h])
|
|
|
|
|
(aset standard-display-table ?Ъ [?~])
|
|
|
|
|
(aset standard-display-table ?Ы [?Y])
|
|
|
|
|
(aset standard-display-table ?Ь [?'])
|
|
|
|
|
(aset standard-display-table ?Э [?E ?'])
|
|
|
|
|
(aset standard-display-table ?Ю [?Y ?u])
|
|
|
|
|
(aset standard-display-table ?Я [?Y ?a])
|
|
|
|
|
|
|
|
|
|
(aset standard-display-table ?є [?i ?e])
|
|
|
|
|
(aset standard-display-table ?ї [?i])
|
|
|
|
|
(aset standard-display-table ?ў [?u])
|
|
|
|
|
(aset standard-display-table ?ђ [?d ?j])
|
|
|
|
|
(aset standard-display-table ?ћ [?c ?h ?j])
|
|
|
|
|
(aset standard-display-table ?ѓ [?g ?j])
|
|
|
|
|
(aset standard-display-table ?ѕ [?s])
|
|
|
|
|
(aset standard-display-table ?ќ [?k])
|
|
|
|
|
(aset standard-display-table ?і [?i])
|
|
|
|
|
(aset standard-display-table ?ј [?j])
|
|
|
|
|
(aset standard-display-table ?љ [?l ?j])
|
|
|
|
|
(aset standard-display-table ?њ [?n ?j])
|
|
|
|
|
(aset standard-display-table ?џ [?d ?z])
|
2020-06-03 14:14:57 +03:00
|
|
|
|
(aset standard-display-table ?ґ [?g])
|
Use UTF-8 for most files with non-ASCII characters.
* admin/notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
* etc/tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
Switch from iso-2022-7bit to utf-8.
* leim/quail/cyrillic.el, leim/quail/czech.el, leim/quail/ethiopic.el:
* leim/quail/greek.el, leim/quail/hanja.el, leim/quail/hanja3.el:
* leim/quail/hebrew.el, leim/quail/lao.el, leim/quail/lrt.el:
* leim/quail/slovak.el, leim/quail/symbol-ksc.el, leim/quail/thai.el:
* leim/quail/tibetan.el, leim/quail/viqr.el, leim/quail/vntelex.el:
* leim/quail/vnvni.el, leim/quail/welsh.el:
* lisp/international/latin1-disp.el, lisp/international/mule-util.el:
* lisp/language/cyril-util.el, lisp/language/european.el:
* lisp/language/ind-util.el, lisp/language/lao-util.el, lisp/language/thai.el:
* lisp/language/tibet-util.el, lisp/language/tibetan.el:
* lisp/language/viet-util.el:
Switch from iso-2022-7bit to utf-8 or (if needed) utf-8-emacs.
Fixes: debbugs:13936
2013-04-01 18:18:40 -07:00
|
|
|
|
|
|
|
|
|
(aset standard-display-table ?Є [?Y ?e])
|
|
|
|
|
(aset standard-display-table ?Ї [?Y ?i])
|
|
|
|
|
(aset standard-display-table ?Ў [?U])
|
|
|
|
|
(aset standard-display-table ?Ђ [?D ?j])
|
|
|
|
|
(aset standard-display-table ?Ћ [?C ?h ?j])
|
|
|
|
|
(aset standard-display-table ?Ѓ [?G ?j])
|
|
|
|
|
(aset standard-display-table ?Ѕ [?S])
|
|
|
|
|
(aset standard-display-table ?Ќ [?K])
|
|
|
|
|
(aset standard-display-table ?І [?I])
|
|
|
|
|
(aset standard-display-table ?Ј [?J])
|
|
|
|
|
(aset standard-display-table ?Љ [?L ?j])
|
|
|
|
|
(aset standard-display-table ?Њ [?N ?j])
|
|
|
|
|
(aset standard-display-table ?Џ [?D ?j])
|
2020-06-03 14:14:57 +03:00
|
|
|
|
(aset standard-display-table ?Ґ [?G])
|
2002-02-07 17:48:41 +00:00
|
|
|
|
|
1997-08-05 01:10:07 +00:00
|
|
|
|
(when (equal cyrillic-language "Bulgarian")
|
Use UTF-8 for most files with non-ASCII characters.
* admin/notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
* etc/tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
Switch from iso-2022-7bit to utf-8.
* leim/quail/cyrillic.el, leim/quail/czech.el, leim/quail/ethiopic.el:
* leim/quail/greek.el, leim/quail/hanja.el, leim/quail/hanja3.el:
* leim/quail/hebrew.el, leim/quail/lao.el, leim/quail/lrt.el:
* leim/quail/slovak.el, leim/quail/symbol-ksc.el, leim/quail/thai.el:
* leim/quail/tibetan.el, leim/quail/viqr.el, leim/quail/vntelex.el:
* leim/quail/vnvni.el, leim/quail/welsh.el:
* lisp/international/latin1-disp.el, lisp/international/mule-util.el:
* lisp/language/cyril-util.el, lisp/language/european.el:
* lisp/language/ind-util.el, lisp/language/lao-util.el, lisp/language/thai.el:
* lisp/language/tibet-util.el, lisp/language/tibetan.el:
* lisp/language/viet-util.el:
Switch from iso-2022-7bit to utf-8 or (if needed) utf-8-emacs.
Fixes: debbugs:13936
2013-04-01 18:18:40 -07:00
|
|
|
|
(aset standard-display-table ?щ [?s ?h ?t])
|
|
|
|
|
(aset standard-display-table ?Щ [?S ?h ?t])
|
|
|
|
|
(aset standard-display-table ?ю [?i ?u])
|
|
|
|
|
(aset standard-display-table ?Ю [?I ?u])
|
|
|
|
|
(aset standard-display-table ?я [?i ?a])
|
|
|
|
|
(aset standard-display-table ?Я [?I ?a]))
|
2002-02-07 17:48:41 +00:00
|
|
|
|
|
|
|
|
|
(when (equal cyrillic-language "Ukrainian") ; based on the official
|
1997-08-01 17:09:45 +00:00
|
|
|
|
; transliteration table
|
Use UTF-8 for most files with non-ASCII characters.
* admin/notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
* etc/tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
Switch from iso-2022-7bit to utf-8.
* leim/quail/cyrillic.el, leim/quail/czech.el, leim/quail/ethiopic.el:
* leim/quail/greek.el, leim/quail/hanja.el, leim/quail/hanja3.el:
* leim/quail/hebrew.el, leim/quail/lao.el, leim/quail/lrt.el:
* leim/quail/slovak.el, leim/quail/symbol-ksc.el, leim/quail/thai.el:
* leim/quail/tibetan.el, leim/quail/viqr.el, leim/quail/vntelex.el:
* leim/quail/vnvni.el, leim/quail/welsh.el:
* lisp/international/latin1-disp.el, lisp/international/mule-util.el:
* lisp/language/cyril-util.el, lisp/language/european.el:
* lisp/language/ind-util.el, lisp/language/lao-util.el, lisp/language/thai.el:
* lisp/language/tibet-util.el, lisp/language/tibetan.el:
* lisp/language/viet-util.el:
Switch from iso-2022-7bit to utf-8 or (if needed) utf-8-emacs.
Fixes: debbugs:13936
2013-04-01 18:18:40 -07:00
|
|
|
|
(aset standard-display-table ?и [?y])
|
|
|
|
|
(aset standard-display-table ?И [?Y])
|
|
|
|
|
(aset standard-display-table ?й [?i])
|
|
|
|
|
(aset standard-display-table ?Й [?Y])
|
|
|
|
|
(aset standard-display-table ?ю [?i ?u])
|
2020-06-03 14:14:57 +03:00
|
|
|
|
(aset standard-display-table ?я [?i ?a])
|
|
|
|
|
(aset standard-display-table ?г [?h])
|
|
|
|
|
(aset standard-display-table ?Г [?H]))))
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
|
|
|
|
;;
|
1997-06-18 13:02:11 +00:00
|
|
|
|
(provide 'cyril-util)
|
1997-05-28 03:41:18 +00:00
|
|
|
|
|
1997-08-05 01:10:07 +00:00
|
|
|
|
;; Local Variables:
|
Use UTF-8 for most files with non-ASCII characters.
* admin/notes/unicode (etc/tutorials/TUTORIAL.ko, leim/quail/hanja.el)
(leim/quail/hanja3.el, leim/quail/symbol-ksc.el):
Now utf-8, not iso-2022-7bit. Also, files that contain non-UTF-8
characters are now encoded in utf-8-emacs, not iso-2022-7bit.
* etc/tutorials/TUTORIAL.ko, tutorials/TUTORIAL.th:
Switch from iso-2022-7bit to utf-8.
* leim/quail/cyrillic.el, leim/quail/czech.el, leim/quail/ethiopic.el:
* leim/quail/greek.el, leim/quail/hanja.el, leim/quail/hanja3.el:
* leim/quail/hebrew.el, leim/quail/lao.el, leim/quail/lrt.el:
* leim/quail/slovak.el, leim/quail/symbol-ksc.el, leim/quail/thai.el:
* leim/quail/tibetan.el, leim/quail/viqr.el, leim/quail/vntelex.el:
* leim/quail/vnvni.el, leim/quail/welsh.el:
* lisp/international/latin1-disp.el, lisp/international/mule-util.el:
* lisp/language/cyril-util.el, lisp/language/european.el:
* lisp/language/ind-util.el, lisp/language/lao-util.el, lisp/language/thai.el:
* lisp/language/tibet-util.el, lisp/language/tibetan.el:
* lisp/language/viet-util.el:
Switch from iso-2022-7bit to utf-8 or (if needed) utf-8-emacs.
Fixes: debbugs:13936
2013-04-01 18:18:40 -07:00
|
|
|
|
;; coding: utf-8
|
1997-08-05 01:10:07 +00:00
|
|
|
|
;; End:
|
2001-07-15 19:53:53 +00:00
|
|
|
|
|
|
|
|
|
;;; cyril-util.el ends here
|