annotate leim/quail/hangul.el @ 105533:13b20c90218f

* lisp/bookmark.el (bookmark-bmenu-rename): Don't call bookmark-bmenu-list, since the list will have been rebuilt anyway. (Bug#4349)
author Karl Fogel <kfogel@red-bean.com>
date Fri, 09 Oct 2009 06:50:14 +0000
parents 940c90218b57
children 1d1d5d9bd884
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
1 ;;; hangul.el --- Korean Hangul input method
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
2
100962
73c906a67d3f Add missing copyright header.
Glenn Morris <rgm@gnu.org>
parents: 99486
diff changeset
3 ;; Copyright (C) 2008, 2009 Free Software Foundation, Inc.
73c906a67d3f Add missing copyright header.
Glenn Morris <rgm@gnu.org>
parents: 99486
diff changeset
4
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
5 ;; Author: Jihyun Cho <jihyun.jo@gmail.com>
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
6 ;; Keywords: multilingual, input method, Korean, Hangul
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
7
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
9
94710
4f1fd208c354 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79727
diff changeset
10 ;; GNU Emacs is free software: you can redistribute it and/or modify
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
94710
4f1fd208c354 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79727
diff changeset
12 ;; the Free Software Foundation, either version 3 of the License, or
4f1fd208c354 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79727
diff changeset
13 ;; (at your option) any later version.
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
14
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
19
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
94710
4f1fd208c354 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 79727
diff changeset
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
22
38453
519983161a46 Some fixes to follow lisp coding conventions and typo fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 37396
diff changeset
23 ;;; Commentary:
519983161a46 Some fixes to follow lisp coding conventions and typo fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 37396
diff changeset
24
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
25 ;; This file is to implement the following hangul automata:
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
26 ;; - Hangul 2-Bulsik input method
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
27 ;; - Hangul 3-Bulsik final input method
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
28 ;; - Hangul 3-Bulsik 390 input method
44421
84b09c068bb9 added comment
Jaeyoun Chung <jay@kldp.org>
parents: 42596
diff changeset
29
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
30 ;;; Code:
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
31
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
32 (require 'quail)
104580
940c90218b57 (top-level): Don't require cl at run-time.
Glenn Morris <rgm@gnu.org>
parents: 103537
diff changeset
33 (eval-when-compile (require 'cl)) ; for setf
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
34 (require 'hanja-util)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
35
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
36 ;; Hangul double Jamo table.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
37 ;; The format is an alist of JAMO-TYPE vs. DOUBLE-JAMO-TABLE.
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
38 ;;
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
39 ;; JAMO-TYPE is a symbol `cho' for Choseong, `jung' for Jungseong, and
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
40 ;; `jong' for Jongseong.
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
41 ;;
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
42 ;; DOUBLE-JAMO-TABLE is an alist of Jamo index vs. the vector of Jamo
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
43 ;; indies that can be combined with the car part.
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
44 ;;
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
45 ;; Jamo index is a relative index in `hangul Compatibility Jamo' area
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
46 ;; of the Unicode (i.e. 1 for U+3131).
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
47
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
48 (defconst hangul-djamo-table
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
49 '((cho . ((1 . [1]) ; Choseong
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
50 (7 . [7])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
51 (18 . [18])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
52 (21 . [21])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
53 (24 . [24])))
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
54 (jung . ((39 . [31 32 51]) ; Jungseong
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
55 (44 . [35 36 51])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
56 (49 . [51])))
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
57 (jong . ((1 . [1 21]) ; Jongseong
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
58 (4 . [24 30])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
59 (9 . [1 17 18 21 28 29 30])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
60 (18 . [18 21])
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
61 (21 . [21])))))
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
62
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
63 ;; Hangul 2-Bulsik keymap.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
64 ;; It converts an ASCII code A-Z, a-z, to the corresponding hangul
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
65 ;; Jamo index.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
66
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
67 (defconst hangul2-keymap
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
68 [17 48 26 23 7 9 30 39 33 35 31 51 49 44 32 36 18 1 4 21 37 29 24 28 43 27])
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
69
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
70 ;; Hangul 3-Bulsik final keymap. 3-Bulsik use full keyboard layout.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
71 ;; Therefore, we must map all printable ASCII codes (`!' to `~')
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
72 ;; to Hangul 3-Bulsik codes.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
73 ;; Other parts are the same as `hangul2-keymap'.
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
74 (defconst hangul3-keymap
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
75 [2 183 24 15 14 8220 120 39 126 8221 43 44 41 46 74 119 30 22 18 78 83
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
76 68 73 85 79 52 110 44 62 46 33 10 7 63 27 12 5 11 69 48 55 49 50 51
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
77 34 45 56 57 29 16 6 13 54 3 28 20 53 26 40 58 60 61 59 42 23 79 71
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
78 86 72 66 84 96 109 115 93 116 122 113 118 121 21 67 4 70 99 74 9 1
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
79 101 17 37 92 47 8251])
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
80
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
81 ;; Hangul 3-Bulsik 390 keymap.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
82 ;; The role is the same as `hangul3-keymap'.
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
83 (defconst hangul390-keymap
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
84 [24 34 35 36 37 38 120 40 41 42 43 44 45 46 73 119 30 22 18 77 82 67 72
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
85 84 78 58 110 50 61 51 63 64 7 33 11 10 27 2 47 39 56 52 53 54 49 48
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
86 57 62 29 68 6 59 55 16 28 20 60 26 91 92 93 94 95 96 23 78 70 85 71
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
87 65 83 90 109 115 87 116 122 113 118 121 21 66 4 69 99 73 9 1 101 17
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
88 123 124 125 126])
18673
751941736224 Initial revision
Kenichi Handa <handa@m17n.org>
parents:
diff changeset
89
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
90 (defvar hangul-im-keymap
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
91 (let ((map (make-sparse-keymap)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
92 (define-key map "\d" 'hangul-delete-backward-char)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
93 (define-key map [f9] 'hangul-to-hanja-conversion)
103464
16310e1456e8 (hangul-im-keymap): Add binding of key Hangul_Hanja.
Kenichi Handa <handa@m17n.org>
parents: 100962
diff changeset
94 (define-key map [Hangul_Hanja] 'hangul-to-hanja-conversion)
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
95 map)
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
96 "Keymap for Hangul method. It is used by all Hangul input methods.")
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
97
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
98 ;; Current input character buffer. Store separated hangul character.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
99 ;; The first and second are Choseong position.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
100 ;; The third and forth are Jungseong position.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
101 ;; The fifth and sixth are Jongseong position.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
102 ;; The second, forth and sixth are double Jamo position.
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
103 (defvar hangul-queue
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
104 (make-vector 6 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
105
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
106 (defsubst notzerop (number)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
107 (not (zerop number)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
108
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
109 (defsubst alphabetp (char)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
110 (or (and (>= char ?A) (<= char ?Z))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
111 (and (>= char ?a) (<= char ?z))))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
112
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
113 (defun hangul-character (cho jung jong)
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
114 "Convert CHO, JUNG, JONG to the precomposed `Hangul Syllables' character.
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
115 CHO, JUNG, JONG are relative indices in `Hangul Compatibility Jamo' of unicode.
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
116 Return a zero-length string if the conversion fails."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
117 (or
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
118 (decode-char
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
119 'ucs
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
120 (if (and (/= cho 0) (/= jung 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
121 (+ #xac00
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
122 (* 588
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
123 (- cho
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
124 (cond ((< cho 3) 1)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
125 ((< cho 5) 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
126 ((< cho 10) 4)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
127 ((< cho 20) 11)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
128 (t 12))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
129 (* 28 (- jung 31))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
130 (- jong
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
131 (cond ((< jong 8) 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
132 ((< jong 19) 1)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
133 ((< jong 25) 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
134 (t 3))))
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
135 (+ #x3130
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
136 (cond ((/= cho 0) cho)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
137 ((/= jung 0) jung)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
138 ((/= jong 0) jong)))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
139 ""))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
140
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
141 (defun hangul-insert-character (&rest queues)
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
142 "Insert characters generated from QUEUES.
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
143 Each queue has the same form as `hangul-queue'.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
144 Setup `quail-overlay' to the last character."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
145 (if (and mark-active transient-mark-mode)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
146 (progn
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
147 (delete-region (region-beginning) (region-end))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
148 (deactivate-mark)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
149 (quail-delete-region)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
150 (let ((first (car queues)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
151 (insert
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
152 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
153 (+ (aref first 0) (hangul-djamo 'cho (aref first 0) (aref first 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
154 (+ (aref first 2) (hangul-djamo 'jung (aref first 2) (aref first 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
155 (+ (aref first 4) (hangul-djamo 'jong (aref first 4) (aref first 5))))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
156 (move-overlay quail-overlay (overlay-start quail-overlay) (point))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
157 (dolist (queue (cdr queues))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
158 (insert
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
159 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
160 (+ (aref queue 0) (hangul-djamo 'cho (aref queue 0) (aref queue 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
161 (+ (aref queue 2) (hangul-djamo 'jung (aref queue 2) (aref queue 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
162 (+ (aref queue 4) (hangul-djamo 'jong (aref queue 4) (aref queue 5)))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
163 (move-overlay quail-overlay (1+ (overlay-start quail-overlay)) (point))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
164
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
165 (defun hangul-djamo (jamo char1 char2)
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
166 "Return the double Jamo index calculated from the arguments.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
167 JAMO is a type of Hangul Jamo; `cho', `jung', or `jong'.
99484
8cc7dbd8078f * quail/hangul.el (hangul-djamo): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 97416
diff changeset
168 CHAR1 and CHAR2 are Hangul Jamo indices.
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
169 Return nil if CHAR1 and CHAR2 can not be combined."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
170 (let* ((jamo (cdr (assoc jamo hangul-djamo-table)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
171 (char1 (cdr (assoc char1 jamo))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
172 (if char1
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
173 (let ((i (length char1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
174 (or (catch 'found
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
175 (while (> i 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
176 (if (= char2 (aref char1 (1- i)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
177 (throw 'found i))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
178 (setf i (1- i))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
179 0))
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
180 0)))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
181
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
182 (defsubst hangul2-input-method-jaum (char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
183 "Store Hangul Jamo indice CHAR in `hangul-queue'.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
184 It is a Hangul 2-Bulsik Jaum.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
185 This function processes a Hangul 2-Bulsik Jaum.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
186 The Hangul 2-Bulsik is composed of a Jaum and a Moum.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
187 The Jaum can be located in a Choseong position and a Jongseong position.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
188 Unless the function inserts CHAR to `hangul-queue',
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
189 commit current `hangul-queue' and then set a new `hangul-queue',
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
190 and insert CHAR to new `hangul-queue'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
191 (if (cond ((zerop (aref hangul-queue 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
192 (aset hangul-queue 0 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
193 ((and (zerop (aref hangul-queue 1))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
194 (zerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
195 (notzerop (hangul-djamo 'cho (aref hangul-queue 0) char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
196 (aset hangul-queue 1 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
197 ((and (zerop (aref hangul-queue 4))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
198 (notzerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
199 (/= char 8)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
200 (/= char 19)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
201 (/= char 25)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
202 (numberp
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
203 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
204 (+ (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
205 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
206 'cho
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
207 (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
208 (aref hangul-queue 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
209 (+ (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
210 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
211 'jung
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
212 (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
213 (aref hangul-queue 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
214 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
215 (aset hangul-queue 4 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
216 ((and (zerop (aref hangul-queue 5))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
217 (notzerop (hangul-djamo 'jong (aref hangul-queue 4) char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
218 (numberp
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
219 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
220 (+ (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
221 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
222 'cho
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
223 (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
224 (aref hangul-queue 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
225 (+ (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
226 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
227 'jung
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
228 (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
229 (aref hangul-queue 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
230 (+ (aref hangul-queue 4)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
231 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
232 'jong
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
233 (aref hangul-queue 4)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
234 char)))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
235 (aset hangul-queue 5 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
236 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
237 (hangul-insert-character hangul-queue
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
238 (setq hangul-queue (vector char 0 0 0 0 0)))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
239
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
240 (defsubst hangul2-input-method-moum (char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
241 "Store Hangul Jamo indice CHAR in `hangul-queue'.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
242 It is a Hangul 2-Bulsik Moum.
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
243 This function processes a Hangul 2-Bulsik Moum.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
244 The Moum can be located in a Jungseong position.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
245 Other parts are the same as a `hangul2-input-method-jaum'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
246 (if (cond ((zerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
247 (aset hangul-queue 2 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
248 ((and (zerop (aref hangul-queue 3))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
249 (zerop (aref hangul-queue 4))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
250 (notzerop (hangul-djamo 'jung (aref hangul-queue 2) char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
251 (aset hangul-queue 3 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
252 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
253 (let ((next-char (vector 0 0 char 0 0 0)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
254 (cond ((notzerop (aref hangul-queue 5))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
255 (aset next-char 0 (aref hangul-queue 5))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
256 (aset hangul-queue 5 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
257 ((notzerop (aref hangul-queue 4))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
258 (aset next-char 0 (aref hangul-queue 4))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
259 (aset hangul-queue 4 0)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
260 (hangul-insert-character hangul-queue
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
261 (setq hangul-queue next-char)))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
262
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
263 (defsubst hangul3-input-method-cho (char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
264 "Store Hangul Jamo indice CHAR in `hangul-queue'.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
265 It is a Hangul 3-Bulsik Choseong.
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
266 This function processes a Hangul 3-Bulsik Choseong.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
267 The Hangul 3-Bulsik is composed of a Choseong, a Jungseong and a Jongseong.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
268 The Choseong can be located in a Choseong position.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
269 Other parts are the same as a `hangul2-input-method-jaum'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
270 (if (cond ((and (zerop (aref hangul-queue 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
271 (zerop (aref hangul-queue 4)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
272 (aset hangul-queue 0 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
273 ((and (zerop (aref hangul-queue 1))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
274 (zerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
275 (notzerop (hangul-djamo 'cho (aref hangul-queue 0) char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
276 (aset hangul-queue 1 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
277 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
278 (hangul-insert-character hangul-queue
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
279 (setq hangul-queue (vector char 0 0 0 0 0)))))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
280
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
281 (defsubst hangul3-input-method-jung (char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
282 "Store Hangul Jamo indice CHAR in `hangul-queue'.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
283 It is a Hangul 3-Bulsik Jungseong.
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
284 This function processes a Hangul 3-Bulsik Jungseong.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
285 The Jungseong can be located in a Jungseong position.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
286 Other parts are the same as a `hangul3-input-method-cho'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
287 (if (cond ((and (zerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
288 (zerop (aref hangul-queue 4)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
289 (aset hangul-queue 2 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
290 ((and (zerop (aref hangul-queue 3))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
291 (notzerop (hangul-djamo 'jung (aref hangul-queue 2) char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
292 (aset hangul-queue 3 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
293 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
294 (hangul-insert-character hangul-queue
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
295 (setq hangul-queue (vector 0 0 char 0 0 0)))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
296
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
297 (defsubst hangul3-input-method-jong (char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
298 "Store Hangul Jamo indice CHAR in `hangul-queue'.
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
299 It is a Hangul 3-Bulsik Jongseong.
99486
17bd52e948f6 * quail/hangul.el (hangul-im-keymap, hangul-insert-character)
Juanma Barranquero <lekktu@gmail.com>
parents: 99484
diff changeset
300 This function processes a Hangul 3-Bulsik Jongseong.
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
301 The Jongseong can be located in a Jongseong position.
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
302 Other parts are the same as a `hangul3-input-method-cho'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
303 (if (cond ((and (zerop (aref hangul-queue 4))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
304 (notzerop (aref hangul-queue 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
305 (notzerop (aref hangul-queue 2))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
306 (numberp
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
307 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
308 (+ (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
309 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
310 'cho
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
311 (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
312 (aref hangul-queue 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
313 (+ (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
314 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
315 'jung
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
316 (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
317 (aref hangul-queue 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
318 char)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
319 (aset hangul-queue 4 char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
320 ((and (zerop (aref hangul-queue 5))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
321 (notzerop (hangul-djamo 'jong (aref hangul-queue 4) char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
322 (numberp
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
323 (hangul-character
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
324 (+ (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
325 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
326 'cho
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
327 (aref hangul-queue 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
328 (aref hangul-queue 1)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
329 (+ (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
330 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
331 'jung
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
332 (aref hangul-queue 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
333 (aref hangul-queue 3)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
334 (+ (aref hangul-queue 4)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
335 (hangul-djamo
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
336 'jong
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
337 (aref hangul-queue 4)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
338 char)))))
97416
434f2e8f84e9 (hangul3-input-method-jong): Fix array indexing bug.
Kenichi Handa <handa@m17n.org>
parents: 95637
diff changeset
339 (aset hangul-queue 5 char)))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
340 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
341 (if (zerop (apply '+ (append hangul-queue nil)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
342 (hangul-insert-character (setq hangul-queue (vector 0 0 0 0 char 0)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
343 (hangul-insert-character hangul-queue
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
344 (setq hangul-queue (vector 0 0 0 0 char 0))))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
345
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
346 (defun hangul-delete-backward-char ()
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
347 "Delete the previous hangul character by Jaso units."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
348 (interactive)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
349 (let ((i 5))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
350 (while (and (> i 0) (zerop (aref hangul-queue i)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
351 (setq i (1- i)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
352 (aset hangul-queue i 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
353 (if (notzerop (apply '+ (append hangul-queue nil)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
354 (hangul-insert-character hangul-queue)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
355 (delete-backward-char 1)))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
356
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
357 (defun hangul-to-hanja-conversion ()
103537
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
358 "Convert the previous hangul character to the corresponding hanja character.
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
359 When a Korean input method is off, convert the following hangul character."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
360 (interactive)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
361 (let ((echo-keystrokes 0)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
362 delete-func
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
363 hanja-character)
103537
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
364 (if (and (overlayp quail-overlay) (overlay-start quail-overlay))
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
365 (progn
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
366 (setq hanja-character (hangul-to-hanja-char (preceding-char)))
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
367 (setq delete-func (lambda () (delete-backward-char 1))))
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
368 (setq hanja-character (hangul-to-hanja-char (following-char)))
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
369 (setq delete-func (lambda () (delete-char 1))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
370 (when hanja-character
103537
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
371 (funcall delete-func)
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
372 (insert hanja-character)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
373 (setq hangul-queue (make-vector 6 0))
103537
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
374 (if (and (overlayp quail-overlay) (overlay-start quail-overlay))
74a0e28c79d9 (hangul-to-hanja-conversion): When it is called
Kenichi Handa <handa@m17n.org>
parents: 103464
diff changeset
375 (move-overlay quail-overlay (point) (point))))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
376
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
377 ;; Support function for `hangul2-input-method'. Actually, this
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
378 ;; function handles the Hangul 2-Bulsik. KEY is an entered key code
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
379 ;; used for looking up `hangul2-keymap'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
380 (defun hangul2-input-method-internal (key)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
381 (let ((char (+ (aref hangul2-keymap (1- (% key 32)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
382 (cond ((or (= key ?O) (= key ?P)) 2)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
383 ((or (= key ?E) (= key ?Q) (= key ?R)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
384 (= key ?T) (= key ?W)) 1)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
385 (t 0)))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
386 (if (< char 31)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
387 (hangul2-input-method-jaum char)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
388 (hangul2-input-method-moum char))))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
389
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
390 (defun hangul2-input-method (key)
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
391 "2-Bulsik input method."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
392 (if (or buffer-read-only (not (alphabetp key)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
393 (list key)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
394 (quail-setup-overlays nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
395 (let ((input-method-function nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
396 (echo-keystrokes 0)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
397 (help-char nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
398 (setq hangul-queue (make-vector 6 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
399 (hangul2-input-method-internal key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
400 (unwind-protect
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
401 (catch 'exit-input-loop
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
402 (while t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
403 (let* ((seq (read-key-sequence nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
404 (cmd (lookup-key hangul-im-keymap seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
405 key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
406 (cond ((and (stringp seq)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
407 (= 1 (length seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
408 (setq key (aref seq 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
409 (alphabetp key))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
410 (hangul2-input-method-internal key))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
411 ((commandp cmd)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
412 (call-interactively cmd))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
413 (t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
414 (setq unread-command-events (listify-key-sequence seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
415 (throw 'exit-input-loop nil))))))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
416 (quail-delete-overlays)))))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
417
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
418 ;; Support function for `hangul3-input-method'. Actually, this
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
419 ;; function handles the Hangul 3-Bulsik final. KEY is an entered key
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
420 ;; code used for looking up `hangul3-keymap'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
421 (defun hangul3-input-method-internal (key)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
422 (let ((char (aref hangul3-keymap (- key 33))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
423 (cond ((and (> char 92) (< char 123))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
424 (hangul3-input-method-cho (- char 92)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
425 ((and (> char 65) (< char 87))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
426 (hangul3-input-method-jung (- char 35)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
427 ((< char 31)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
428 (hangul3-input-method-jong char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
429 (t
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
430 (setq hangul-queue (make-vector 6 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
431 (insert (decode-char 'ucs char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
432 (move-overlay quail-overlay (point) (point))))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
433
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
434 (defun hangul3-input-method (key)
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
435 "3-Bulsik final input method."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
436 (if (or buffer-read-only (< key 33) (>= key 127))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
437 (list key)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
438 (quail-setup-overlays nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
439 (let ((input-method-function nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
440 (echo-keystrokes 0)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
441 (help-char nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
442 (setq hangul-queue (make-vector 6 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
443 (hangul3-input-method-internal key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
444 (unwind-protect
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
445 (catch 'exit-input-loop
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
446 (while t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
447 (let* ((seq (read-key-sequence nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
448 (cmd (lookup-key hangul-im-keymap seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
449 key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
450 (cond ((and (stringp seq)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
451 (= 1 (length seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
452 (setq key (aref seq 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
453 (and (>= key 33) (< key 127)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
454 (hangul3-input-method-internal key))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
455 ((commandp cmd)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
456 (call-interactively cmd))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
457 (t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
458 (setq unread-command-events (listify-key-sequence seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
459 (throw 'exit-input-loop nil))))))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
460 (quail-delete-overlays)))))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
461
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
462 ;; Support function for `hangul390-input-method'. Actually, this
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
463 ;; function handles the Hangul 3-Bulsik 390. KEY is an entered key
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
464 ;; code used for looking up `hangul390-keymap'."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
465 (defun hangul390-input-method-internal (key)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
466 (let ((char (aref hangul390-keymap (- key 33))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
467 (cond ((or (and (> char 86) (< char 91))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
468 (and (> char 96) (< char 123)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
469 (hangul3-input-method-cho (- char (if (< char 97) 86 92))))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
470 ((and (> char 64) (< char 86))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
471 (hangul3-input-method-jung (- char 34)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
472 ((< char 31)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
473 (hangul3-input-method-jong char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
474 (t
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
475 (setq hangul-queue (make-vector 6 0))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
476 (insert (decode-char 'ucs char))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
477 (move-overlay quail-overlay (point) (point))))))
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44421
diff changeset
478
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
479 (defun hangul390-input-method (key)
95582
4d17533ba12f Docstrings and comments improved.
Kenichi Handa <handa@m17n.org>
parents: 95514
diff changeset
480 "3-Bulsik 390 input method."
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
481 (if (or buffer-read-only (< key 33) (>= key 127))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
482 (list key)
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
483 (quail-setup-overlays nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
484 (let ((input-method-function nil)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
485 (echo-keystrokes 0)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
486 (help-char nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
487 (setq hangul-queue (make-vector 6 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
488 (hangul390-input-method-internal key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
489 (unwind-protect
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
490 (catch 'exit-input-loop
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
491 (while t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
492 (let* ((seq (read-key-sequence nil))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
493 (cmd (lookup-key hangul-im-keymap seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
494 key)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
495 (cond ((and (stringp seq)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
496 (= 1 (length seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
497 (setq key (aref seq 0))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
498 (and (>= key 33) (< key 127)))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
499 (hangul390-input-method-internal key))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
500 ((commandp cmd)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
501 (call-interactively cmd))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
502 (t
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
503 (setq unread-command-events (listify-key-sequence seq))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
504 (throw 'exit-input-loop nil))))))
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
505 (quail-delete-overlays)))))
38453
519983161a46 Some fixes to follow lisp coding conventions and typo fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 37396
diff changeset
506
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
507 ;; Text shown by describe-input-method. Set to a proper text by
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
508 ;; hangul-input-method-activate.
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
509 (defvar hangul-input-method-help-text nil)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
510 (make-variable-buffer-local 'hangul-input-method-help-text)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
511
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
512 (defun hangul-input-method-activate (input-method func help-text &rest args)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
513 "Activate Hangul input method INPUT-METHOD.
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
514 FUNC is a function to handle input key.
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
515 HELP-TEXT is a text set in `hangul-input-method-help-text'."
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
516 (setq inactivate-current-input-method-function 'hangul-input-method-inactivate
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
517 describe-current-input-method-function 'hangul-input-method-help
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
518 hangul-input-method-help-text help-text)
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
519 (quail-delete-overlays)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
520 (if (eq (selected-window) (minibuffer-window))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
521 (add-hook 'minibuffer-exit-hook 'quail-exit-from-minibuffer))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
522 (set (make-local-variable 'input-method-function) func))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
523
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
524 (defun hangul-input-method-inactivate ()
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
525 "Inactivate the current Hangul input method."
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
526 (interactive)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
527 (unwind-protect
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
528 (progn
95637
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
529 (quail-hide-guidance)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
530 (quail-delete-overlays)
572e23ede3f0 Docstrings improved.
Kenichi Handa <handa@m17n.org>
parents: 95582
diff changeset
531 (setq describe-current-input-method-function nil))
95500
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
532 (kill-local-variable 'input-method-function)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
533
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
534 (defun hangul-input-method-help ()
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
535 "Describe the current Hangul input method."
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
536 (interactive)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
537 (with-output-to-temp-buffer "*Help*"
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
538 (princ hangul-input-method-help-text)))
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
539
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
540 (provide 'hangul)
ad9123bca9ed Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 94710
diff changeset
541
95514
ad40a2d6712f Add arch tagline
Miles Bader <miles@gnu.org>
parents: 95500
diff changeset
542 ;; arch-tag: 26bc93fc-64ee-4fb1-b26d-22220d132dbe
38453
519983161a46 Some fixes to follow lisp coding conventions and typo fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 37396
diff changeset
543 ;;; hangul.el ends here