]> code.delx.au - gnu-emacs/blob - lisp/language/ethiopic.el
Make functions setup-LANGUAGE-environment
[gnu-emacs] / lisp / language / ethiopic.el
1 ;;; ethiopic.el --- Support for Ethiopic
2
3 ;; Copyright (C) 1995 Free Software Foundation, Inc.
4 ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
5
6 ;; Keywords: multilingual, Ethiopic
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
12 ;; the Free Software Foundation; either version 2, or (at your option)
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
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 ;; Boston, MA 02111-1307, USA.
24
25 ;; Author: TAKAHASHI Naoto <ntakahas@etl.go.jp>
26
27 ;;; Code:
28
29 (define-ccl-program ccl-encode-ethio-font
30 '(0
31 ;; In: R0:ethiopic (not checked)
32 ;; R1:position code 1
33 ;; R2:position code 2
34 ;; Out: R1:font code point 1
35 ;; R2:font code point 2
36 ((r1 -= 33)
37 (r2 -= 33)
38 (r1 *= 94)
39 (r2 += r1)
40 (if (r2 < 256)
41 (r1 = ?\x12)
42 (if (r2 < 448)
43 ((r1 = ?\x13) (r2 -= 256))
44 ((r1 = ?\xfd) (r2 -= 208))
45 ))))
46 "CCL program to encode an Ehitopic code to code point of Ehitopic font.")
47
48 (setq font-ccl-encoder-alist
49 (cons (cons "ethiopic" ccl-encode-ethio-font) font-ccl-encoder-alist))
50
51 (register-input-method
52 "Ethiopic" '("quail-ethio" quail-use-package "quail/ethiopic"))
53
54 (defun setup-ethiopic-environment ()
55 "Setup multilingual environment for Ethiopic."
56 (interactive)
57 (setq primary-language "Ethiopic")
58
59 (setq default-input-method '("Ethiopic" . "quail-ethio"))
60
61 ;;
62 ;; key bindings
63 ;;
64 (define-key global-map [f4] 'sera-to-fidel-buffer)
65 (define-key global-map [S-f4] 'sera-to-fidel-region)
66 (define-key global-map [C-f4] 'sera-to-fidel-marker)
67 (define-key global-map [f5] 'fidel-to-sera-buffer)
68 (define-key global-map [S-f5] 'fidel-to-sera-region)
69 (define-key global-map [C-f5] 'fidel-to-sera-marker)
70 (define-key global-map [f6] 'ethio-modify-vowel)
71 (define-key global-map [f7] 'ethio-replace-space)
72 (define-key global-map [f8] 'ethio-input-special-character)
73 (define-key global-map [S-f2] 'ethio-replace-space) ; as requested
74
75 (add-hook
76 'rmail-mode-hook
77 '(lambda ()
78 (define-key rmail-mode-map [C-f4] 'sera-to-fidel-mail)
79 (define-key rmail-mode-map [C-f5] 'fidel-to-sera-mail)))
80
81 (add-hook
82 'mail-mode-hook
83 '(lambda ()
84 (define-key mail-mode-map [C-f4] 'sera-to-fidel-mail)
85 (define-key mail-mode-map [C-f5] 'fidel-to-sera-mail)))
86 )
87
88 (defun describe-ethiopic-support ()
89 "Describe how Emacs supports Ethiopic."
90 (interactive)
91 (describe-language-support-internal "Ethiopic"))
92
93 (set-language-info-alist
94 "Ethiopic" '((setup-function . setup-ethiopic-environment)
95 (describe-function . describe-ethiopic-support)
96 (charset . (ethiopic))
97 (sample-text . "\e$(3$O#U!.\e(B")
98 (documentation . nil)))
99
100 ;;; ethiopic.el ends here