annotate lisp/international/kkc.el @ 110938:17bbe431e616

New interface for choosing Custom themes. * lisp/cus-edit.el (custom--initialize-widget-variables): New function. (Custom-mode): Use it. * lisp/cus-face.el (custom-theme-set-faces): Remove dead code. Obey custom--inhibit-theme-enable. * lisp/cus-theme.el (describe-theme, customize-themes) (custom-theme-save): New commands. (custom-new-theme-mode-map): Bind C-x C-s. (custom-new-theme-mode): Use custom--initialize-widget-variables. (customize-create-theme): New optional arg THEME. (custom-theme-revert): Use it. (custom-theme-visit-theme): Remove dead code. (custom-theme-merge-theme): Use custom-available-themes. (custom-theme-write): Make interactive. (custom-theme-write): Use custom-theme-name-valid-p. (describe-theme-1, custom-theme-choose-revert) (custom-theme-checkbox-toggle, custom-theme-selections-toggle): New funs. (custom-theme-allow-multiple-selections): New option. (custom-theme-choose-mode): New major mode. * lisp/custom.el (custom-theme-set-variables): Remove dead code. Obey custom--inhibit-theme-enable. (custom--inhibit-theme-enable): New var. (provide-theme): Obey it. (load-theme): Replace load with manual read/eval, in order to check for correctness. Use custom-theme-name-valid-p. (custom-theme-name-valid-p): New function. (custom-available-themes): Use it. * lisp/help-mode.el (help-theme-def, help-theme-edit): New buttons.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 11 Oct 2010 23:10:21 -0400
parents 7c4da622f181
children 417b1e4d63cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
36683
b82a6fbaae16 Add coding: iso-2022-7bit tag.
Kenichi Handa <handa@m17n.org>
parents: 31218
diff changeset
1 ;;; kkc.el --- Kana Kanji converter -*- coding: iso-2022-7bit; -*-
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
110494
7c4da622f181 Remove leading `*' from docs of some defcustoms etc.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3 ;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
7c4da622f181 Remove leading `*' from docs of some defcustoms etc.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
4 ;; 2008, 2009, 2010 Free Software Foundation, Inc.
74605
6ee41fdd69ff Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents: 74544
diff changeset
5 ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106257
diff changeset
6 ;; 2005, 2006, 2007, 2008, 2009, 2010
62274
c36561fe0657 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
7 ;; National Institute of Advanced Industrial Science and Technology (AIST)
c36561fe0657 Fix copyrights.
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
8 ;; Registration Number H14PRO021
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9
106257
9fb8147177ab * international/isearch-x.el, international/ja-dic-cnv.el,
Kevin Ryde <user42@zip.com.au>
parents: 100908
diff changeset
10 ;; Keywords: i18n, mule, multilingual, Japanese
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13
94664
889bc336b89b Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
94664
889bc336b89b Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
889bc336b89b Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
17 ;; (at your option) any later version.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 ;; GNU General Public License for more details.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
94664
889bc336b89b Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29 ;; These routines provide a simple and easy-to-use converter from
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30 ;; Kana-string to Kana-Kanji-mixed-string. This converter (here after
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31 ;; KKC) uses a SKK dictionary to get information how to convert
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32 ;; Kana-string. Since KKC can't be fully automated, we need an
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 ;; interaction with a user to decide the correct conversion. For
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
34 ;; that, we provide KKC major mode.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
35
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
36 ;;; Code:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
37
31165
6c51a4e8bf88 Remove SKK from Keywords. Require ja-dic-utl instead of skkdic-utl.
Kenichi Handa <handa@m17n.org>
parents: 30256
diff changeset
38 (require 'ja-dic-utl)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 (defvar kkc-input-method-title "漢"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41 "String denoting KKC input method.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
42 This string is shown at mode line when users are in KKC mode.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
43
98863
545889edd043 (kkc-init-file-name): Run file names that begin with a period thru
Eli Zaretskii <eliz@gnu.org>
parents: 94664
diff changeset
44 (defvar kkc-init-file-name (convert-standard-filename "~/.kkcrc")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 "Name of a file which contains user's initial setup code for KKC.")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 ;; A flag to control a file specified by `kkc-init-file-name'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 ;; The value nil means the file is not yet consulted.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
49 ;; The value t means the file has already been consulted but there's
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 ;; no need of updating it yet.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 ;; Any other value means that we must update the file before exiting Emacs.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52 (defvar kkc-init-file-flag nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54 ;; Cash data for `kkc-lookup-key'. This may be initialized by loading
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 ;; a file specified by `kkc-init-file-name'. If any elements are
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 ;; modified, the data is written out to the file when exiting Emacs.
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
57 (defvar kkc-lookup-cache nil)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
58
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
59 ;; Tag symbol of `kkc-lookup-cache'.
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
60 (defconst kkc-lookup-cache-tag 'kkc-lookup-cache-2)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 (defun kkc-save-init-file ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63 "Save initial setup code for KKC to a file specified by `kkc-init-file-name'"
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
64 (if (and kkc-init-file-flag
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
65 (not (eq kkc-init-file-flag t)))
37016
7472ec46ab91 (kkc-save-init-file): Locally bind print-length to nil.
Kenichi Handa <handa@m17n.org>
parents: 36683
diff changeset
66 (let ((coding-system-for-write 'iso-2022-7bit)
7472ec46ab91 (kkc-save-init-file): Locally bind print-length to nil.
Kenichi Handa <handa@m17n.org>
parents: 36683
diff changeset
67 (print-length nil))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
68 (write-region (format "(setq kkc-lookup-cache '%S)\n" kkc-lookup-cache)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
69 nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70 kkc-init-file-name))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
72 ;; Sequence of characters to be used for indexes for shown list. The
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
73 ;; Nth character is for the Nth conversion in the list currently shown.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
74 (defvar kkc-show-conversion-list-index-chars
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
75 "1234567890")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
76
23032
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
77 (defun kkc-help ()
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
78 "Show key bindings available while converting by KKC."
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
79 (interactive)
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
80 (with-output-to-temp-buffer "*Help*"
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
81 (princ (substitute-command-keys "\\{kkc-keymap}"))))
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
82
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
83 (defvar kkc-keymap
23032
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
84 (let ((map (make-sparse-keymap))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
85 (len (length kkc-show-conversion-list-index-chars))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86 (i 0))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
87 (while (< i len)
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
88 (define-key map
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
89 (char-to-string (aref kkc-show-conversion-list-index-chars i))
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
90 'kkc-select-from-list)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91 (setq i (1+ i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
92 (define-key map " " 'kkc-next)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
93 (define-key map "\r" 'kkc-terminate)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
94 (define-key map "\C-@" 'kkc-first-char-only)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
95 (define-key map "\C-n" 'kkc-next)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
96 (define-key map "\C-p" 'kkc-prev)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
97 (define-key map "\C-i" 'kkc-shorter)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
98 (define-key map "\C-o" 'kkc-longer)
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
99 (define-key map "I" 'kkc-shorter-conversion)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
100 (define-key map "O" 'kkc-longer-phrase)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
101 (define-key map "\C-c" 'kkc-cancel)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
102 (define-key map "\C-?" 'kkc-cancel)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
103 (define-key map "\C-f" 'kkc-next-phrase)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 (define-key map "K" 'kkc-katakana)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
105 (define-key map "H" 'kkc-hiragana)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
106 (define-key map "l" 'kkc-show-conversion-list-or-next-group)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
107 (define-key map "L" 'kkc-show-conversion-list-or-prev-group)
20638
c3360a392ae4 Change "?\C-\ " to "?\C- " because "\ " is changed
Kenichi Handa <handa@m17n.org>
parents: 19931
diff changeset
108 (define-key map [?\C- ] 'kkc-first-char-only)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
109 (define-key map [delete] 'kkc-cancel)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
110 (define-key map [return] 'kkc-terminate)
23032
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
111 (define-key map "\C-h" 'kkc-help)
19869
3c4025f3be8f (kkc-mode-map): Bind meta-prefix-char to a
Kenichi Handa <handa@m17n.org>
parents: 19406
diff changeset
112 map)
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
113 "Keymap for KKC (Kana Kanji Converter).")
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
114
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
115 ;;; Internal variables used in KKC.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
116
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
117 ;; The current Kana string to be converted.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
118 (defvar kkc-original-kana nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
119
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
120 ;; The current key sequence (vector of Kana characters) generated from
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
121 ;; `kkc-original-kana'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
122 (defvar kkc-current-key nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
123
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
124 ;; List of the current conversions for `kkc-current-key'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
125 (defvar kkc-current-conversions nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
126
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
127 ;; Vector of the same length as `kkc-current-conversion'. The first
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128 ;; element is a vector of:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129 ;; o index number of the first conversion shown previously,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130 ;; o index number of a conversion next of the last one shown previously,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 ;; o the shown string itself.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 ;; The remaining elements are widths (including columns for index
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133 ;; numbers) of conversions stored in the same order as in
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
134 ;; `kkc-current-conversion'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
135 (defvar kkc-current-conversions-width nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
136
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
137 (defcustom kkc-show-conversion-list-count 4
110494
7c4da622f181 Remove leading `*' from docs of some defcustoms etc.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
138 "Count of successive `kkc-next' or `kkc-prev' to show conversion list.
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
139 When you type SPC or C-p successively this count while using the input
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
140 method `japanese', the conversion candidates are shown in the echo
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
141 area while indicating the current selection by `<N>'."
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
142 :group 'mule
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
143 :type 'integer)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
144
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
145 ;; Count of successive invocations of `kkc-next'.
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
146 (defvar kkc-next-count nil)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
147
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
148 ;; Count of successive invocations of `kkc-prev'.
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
149 (defvar kkc-prev-count nil)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
150
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
151 ;; Provided that `kkc-current-key' is [A B C D E F G H I], the current
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
152 ;; conversion target is [A B C D E F], and the sequence of which
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
153 ;; conversion is found is [A B C D]:
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
154 ;;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
155 ;; A B C D E F G H I
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
156 ;; kkc-overlay-head (black): |<--------->|
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
157 ;; kkc-overlay-tail (underline): |<------->|
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
158 ;; kkc-length-head: |<--------->|
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
159 ;; kkc-length-converted: |<----->|
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
160 ;;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
161 (defvar kkc-overlay-head nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162 (defvar kkc-overlay-tail nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 (defvar kkc-length-head nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164 (defvar kkc-length-converted nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 ;; Cursor type (`box' or `bar') of the current frame.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 (defvar kkc-cursor-type nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168
31165
6c51a4e8bf88 Remove SKK from Keywords. Require ja-dic-utl instead of skkdic-utl.
Kenichi Handa <handa@m17n.org>
parents: 30256
diff changeset
169 ;; Lookup Japanese dictionary to set list of conversions in
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170 ;; kkc-current-conversions for key sequence kkc-current-key of length
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 ;; LEN. If no conversion is found in the dictionary, don't change
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172 ;; kkc-current-conversions and return nil.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38414
diff changeset
173 ;; Postfixes are handled only if POSTFIX is non-nil.
18644
69c91eee7ba1 (kkc-region): Call skkdic-lookup-key with
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
174 (defun kkc-lookup-key (len &optional postfix prefer-noun)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 ;; At first, prepare cache data if any.
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
176 (unless kkc-init-file-flag
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
177 (setq kkc-init-file-flag t
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
178 kkc-lookup-cache nil)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
179 (add-hook 'kill-emacs-hook 'kkc-save-init-file)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
180 (if (file-readable-p kkc-init-file-name)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
181 (condition-case nil
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
182 (load-file kkc-init-file-name)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
183 (kkc-error "Invalid data in %s" kkc-init-file-name))))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
184 (or (and (nested-alist-p kkc-lookup-cache)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
185 (eq (car kkc-lookup-cache) kkc-lookup-cache-tag))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
186 (setq kkc-lookup-cache (list kkc-lookup-cache-tag)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
187 kkc-init-file-flag 'kkc-lookup-cache))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 (let ((entry (lookup-nested-alist kkc-current-key kkc-lookup-cache len 0 t)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
189 (if (consp (car entry))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
190 (setq kkc-length-converted len
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
191 kkc-current-conversions-width nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192 kkc-current-conversions (car entry))
18644
69c91eee7ba1 (kkc-region): Call skkdic-lookup-key with
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
193 (setq entry (skkdic-lookup-key kkc-current-key len postfix prefer-noun))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 (if entry
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
196 (setq kkc-length-converted len
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
197 kkc-current-conversions-width nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
198 kkc-current-conversions (cons 1 entry))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
199 (if postfix
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 ;; Store this conversions in the cache.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
201 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
202 (set-nested-alist kkc-current-key kkc-current-conversions
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
203 kkc-lookup-cache kkc-length-converted)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
204 (setq kkc-init-file-flag 'kkc-lookup-cache)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
205 t)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 (if (= len 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
207 (setq kkc-length-converted 1
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 kkc-current-conversions-width nil
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209 kkc-current-conversions (cons 0 nil)))))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
210
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
211 (put 'kkc-error 'error-conditions '(kkc-error error))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
212 (defun kkc-error (&rest args)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
213 (signal 'kkc-error (apply 'format args)))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
214
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
215 (defvar kkc-converting nil)
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
216
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
217 ;;;###autoload
30256
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
218 (defvar kkc-after-update-conversion-functions nil
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
219 "Functions to run after a conversion is selected in `japanese' input method.
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
220 With this input method, a user can select a proper conversion from
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
221 candidate list. Each time he changes the selection, functions in this
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
222 list are called with two arguments; starting and ending buffer
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
223 positions that contains the current selection.")
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
224
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
225 ;;;###autoload
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
226 (defun kkc-region (from to)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227 "Convert Kana string in the current region to Kanji-Kana mixed string.
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
228 Users can select a desirable conversion interactively.
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
229 When called from a program, expects two arguments,
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
230 positions FROM and TO (integers or markers) specifying the target region.
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
231 When it returns, the point is at the tail of the selected conversion,
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
232 and the return value is the length of the conversion."
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
233 (interactive "r")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
234 (setq kkc-original-kana (buffer-substring from to))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
235 (goto-char from)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
236
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
237 ;; Setup overlays.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
238 (if (overlayp kkc-overlay-head)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
239 (move-overlay kkc-overlay-head from to)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
240 (setq kkc-overlay-head (make-overlay from to nil nil t))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
241 (overlay-put kkc-overlay-head 'face 'highlight))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
242 (if (overlayp kkc-overlay-tail)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
243 (move-overlay kkc-overlay-tail to to)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
244 (setq kkc-overlay-tail (make-overlay to to nil nil t))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
245 (overlay-put kkc-overlay-tail 'face 'underline))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
246
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
247 (setq kkc-current-key (string-to-vector kkc-original-kana))
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
248 (setq kkc-length-head (length kkc-current-key))
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
249 (setq kkc-length-converted 0)
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
250
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
251 (unwind-protect
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
252 ;; At first convert the region to the first candidate.
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
253 (let ((current-input-method-title kkc-input-method-title)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
254 (input-method-function nil)
29146
ded7fa3de6db (kkc-region): Don't change modified-p of
Kenichi Handa <handa@m17n.org>
parents: 23196
diff changeset
255 (modified-p (buffer-modified-p))
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
256 (first t))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
257 (while (not (kkc-lookup-key kkc-length-head nil first))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
258 (setq kkc-length-head (1- kkc-length-head)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
259 first nil))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
260 (goto-char to)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
261 (kkc-update-conversion 'all)
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
262 (setq kkc-next-count 1 kkc-prev-count 0)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
263 (if (and (>= kkc-next-count kkc-show-conversion-list-count)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
264 (>= (length kkc-current-conversions) 3))
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
265 (kkc-show-conversion-list-or-next-group))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
266
23196
30beacf88b75 Doc fixes.
Karl Heuer <kwzh@gnu.org>
parents: 23032
diff changeset
267 ;; Then, ask users to select a desirable conversion.
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
268 (force-mode-line-update)
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
269 (setq kkc-converting t)
31218
6828c3827297 (kkc-region): Hide "... loaded" message.
Kenichi Handa <handa@m17n.org>
parents: 31165
diff changeset
270 ;; Hide "... loaded" message.
6828c3827297 (kkc-region): Hide "... loaded" message.
Kenichi Handa <handa@m17n.org>
parents: 31165
diff changeset
271 (message nil)
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
272 (while kkc-converting
29146
ded7fa3de6db (kkc-region): Don't change modified-p of
Kenichi Handa <handa@m17n.org>
parents: 23196
diff changeset
273 (set-buffer-modified-p modified-p)
22919
95d147bbdce0 (kkc-region): Don't bind echo-keystrokes.
Kenichi Handa <handa@m17n.org>
parents: 22888
diff changeset
274 (let* ((overriding-terminal-local-map kkc-keymap)
23032
d5a1574f7fb8 (kkc-help): New function.
Kenichi Handa <handa@m17n.org>
parents: 22919
diff changeset
275 (help-char nil)
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
276 (keyseq (read-key-sequence nil))
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
277 (cmd (lookup-key kkc-keymap keyseq)))
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
278 (if (commandp cmd)
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
279 (condition-case err
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
280 (progn
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
281 (cond ((eq cmd 'kkc-next)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
282 (setq kkc-next-count (1+ kkc-next-count)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
283 kkc-prev-count 0))
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
284 ((eq cmd 'kkc-prev)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
285 (setq kkc-prev-count (1+ kkc-prev-count)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
286 kkc-next-count 0))
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
287 (t
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
288 (setq kkc-next-count 0 kkc-prev-count 0)))
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
289 (call-interactively cmd))
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
290 (kkc-error (message "%s" (cdr err)) (beep)))
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
291 ;; KEYSEQ is not defined in KKC keymap.
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
292 ;; Let's put the event back.
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
293 (setq unread-input-method-events
73437
150187028263 (kkc-region): When a key sequence is not
Kenichi Handa <handa@m17n.org>
parents: 64085
diff changeset
294 (append (string-to-list (this-single-command-raw-keys))
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
295 unread-input-method-events))
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
296 (kkc-terminate))))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
297
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
298 (force-mode-line-update)
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
299 (goto-char (overlay-end kkc-overlay-tail))
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
300 (- (overlay-start kkc-overlay-head) from))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
301 (delete-overlay kkc-overlay-head)
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
302 (delete-overlay kkc-overlay-tail)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
303
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
304 (defun kkc-terminate ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
305 "Exit from KKC mode by fixing the current conversion."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
306 (interactive)
22794
9ace35333789 (kkc-region): Handled the case that
Kenichi Handa <handa@m17n.org>
parents: 22779
diff changeset
307 (goto-char (overlay-end kkc-overlay-tail))
9ace35333789 (kkc-region): Handled the case that
Kenichi Handa <handa@m17n.org>
parents: 22779
diff changeset
308 (move-overlay kkc-overlay-head (point) (point))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
309 (setq kkc-converting nil))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
310
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
311 (defun kkc-cancel ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
312 "Exit from KKC mode by canceling any conversions."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
313 (interactive)
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
314 (goto-char (overlay-start kkc-overlay-head))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
315 (delete-region (overlay-start kkc-overlay-head)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316 (overlay-end kkc-overlay-tail))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 (insert kkc-original-kana)
22794
9ace35333789 (kkc-region): Handled the case that
Kenichi Handa <handa@m17n.org>
parents: 22779
diff changeset
318 (setq kkc-converting nil))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
319
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320 (defun kkc-first-char-only ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 "Select only the first character currently converted."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323 (goto-char (overlay-start kkc-overlay-head))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324 (forward-char 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 (delete-region (point) (overlay-end kkc-overlay-tail))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
326 (kkc-terminate))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
327
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
328 (defun kkc-next ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
329 "Select the next candidate of conversion."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
330 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
331 (let ((idx (1+ (car kkc-current-conversions))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
332 (if (< idx 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333 (setq idx 1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
334 (if (>= idx (length kkc-current-conversions))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
335 (setq idx 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
336 (setcar kkc-current-conversions idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
337 (if (> idx 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
338 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
339 (set-nested-alist kkc-current-key kkc-current-conversions
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
340 kkc-lookup-cache kkc-length-converted)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
341 (setq kkc-init-file-flag 'kkc-lookup-cache)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
342 (if (or kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
343 (>= kkc-next-count kkc-show-conversion-list-count))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
344 (kkc-show-conversion-list-update))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
345 (kkc-update-conversion)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
346
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
347 (defun kkc-prev ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
348 "Select the previous candidate of conversion."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
349 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
350 (let ((idx (1- (car kkc-current-conversions))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
351 (if (< idx 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
352 (setq idx (1- (length kkc-current-conversions))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
353 (setcar kkc-current-conversions idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
354 (if (> idx 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
355 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
356 (set-nested-alist kkc-current-key kkc-current-conversions
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
357 kkc-lookup-cache kkc-length-converted)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
358 (setq kkc-init-file-flag 'kkc-lookup-cache)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
359 (if (or kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
360 (>= kkc-prev-count kkc-show-conversion-list-count))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
361 (kkc-show-conversion-list-update))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
362 (kkc-update-conversion)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
363
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
364 (defun kkc-select-from-list ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
365 "Select one candidate from the list currently shown in echo area."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 (let (idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
368 (if kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
369 (let ((len (length kkc-show-conversion-list-index-chars))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
370 (maxlen (- (aref (aref kkc-current-conversions-width 0) 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
371 (aref (aref kkc-current-conversions-width 0) 0)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
372 (i 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
373 (if (> len maxlen)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
374 (setq len maxlen))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
375 (while (< i len)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
376 (if (= (aref kkc-show-conversion-list-index-chars i)
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
377 last-input-event)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
378 (setq idx i i len)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
379 (setq i (1+ i))))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
380 (if idx
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
381 (progn
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
382 (setcar kkc-current-conversions
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
383 (+ (aref (aref kkc-current-conversions-width 0) 0) idx))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
384 (kkc-show-conversion-list-update)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385 (kkc-update-conversion))
22766
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
386 (setq unread-input-method-events
a83818674920 (kkc-show-conversion-list-index-chars):
Kenichi Handa <handa@m17n.org>
parents: 20638
diff changeset
387 (cons last-input-event unread-input-method-events))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
388 (kkc-terminate))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
389
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
390 (defun kkc-katakana ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 "Convert to Katakana."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
393 (setcar kkc-current-conversions -1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
394 (kkc-update-conversion 'all))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
395
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
396 (defun kkc-hiragana ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
397 "Convert to hiragana."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
398 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
399 (setcar kkc-current-conversions 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
400 (kkc-update-conversion))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
401
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
402 (defun kkc-shorter ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
403 "Make the Kana string to be converted shorter."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
404 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
405 (if (<= kkc-length-head 1)
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
406 (kkc-error "Can't be shorter"))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
407 (setq kkc-length-head (1- kkc-length-head))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
408 (if (> kkc-length-converted kkc-length-head)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
409 (let ((len kkc-length-head))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
410 (setq kkc-length-converted 0)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
411 (while (not (kkc-lookup-key len))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
412 (setq len (1- len)))))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
413 (kkc-update-conversion 'all))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
414
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
415 (defun kkc-longer ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
416 "Make the Kana string to be converted longer."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
417 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
418 (if (>= kkc-length-head (length kkc-current-key))
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
419 (kkc-error "Can't be longer"))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
420 (setq kkc-length-head (1+ kkc-length-head))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
421 ;; This time, try also entries with postfixes.
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
422 (kkc-lookup-key kkc-length-head 'postfix)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
423 (kkc-update-conversion 'all))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
424
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
425 (defun kkc-shorter-conversion ()
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
426 "Make the Kana string to be converted shorter."
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
427 (interactive)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
428 (if (<= kkc-length-converted 1)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
429 (kkc-error "Can't be shorter"))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
430 (let ((len (1- kkc-length-converted)))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
431 (setq kkc-length-converted 0)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
432 (while (not (kkc-lookup-key len))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
433 (setq len (1- len))))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
434 (kkc-update-conversion 'all))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
435
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
436 (defun kkc-longer-phrase ()
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
437 "Make the current phrase (BUNSETSU) longer without looking up dictionary."
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
438 (interactive)
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
439 (if (>= kkc-length-head (length kkc-current-key))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
440 (kkc-error "Can't be longer"))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
441 (setq kkc-length-head (1+ kkc-length-head))
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
442 (kkc-update-conversion 'all))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
443
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
444 (defun kkc-next-phrase ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
445 "Fix the currently converted string and try to convert the remaining string."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
446 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
447 (if (>= kkc-length-head (length kkc-current-key))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
448 (kkc-terminate)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
449 (setq kkc-length-head (- (length kkc-current-key) kkc-length-head))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
450 (goto-char (overlay-end kkc-overlay-head))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
451 (while (and (< (point) (overlay-end kkc-overlay-tail))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
452 (looking-at "\\CH"))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
453 (goto-char (match-end 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
454 (setq kkc-length-head (1- kkc-length-head)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
455 (if (= kkc-length-head 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
456 (kkc-terminate)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
457 (let ((newkey (make-vector kkc-length-head 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
458 (idx (- (length kkc-current-key) kkc-length-head))
18644
69c91eee7ba1 (kkc-region): Call skkdic-lookup-key with
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
459 (len kkc-length-head)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
460 (i 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
461 ;; For the moment, (setq kkc-original-kana (concat newkey))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
462 ;; doesn't work.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
463 (setq kkc-original-kana "")
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
464 (while (< i kkc-length-head)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
465 (aset newkey i (aref kkc-current-key (+ idx i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
466 (setq kkc-original-kana
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
467 (concat kkc-original-kana (char-to-string (aref newkey i))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
468 (setq i (1+ i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
469 (setq kkc-current-key newkey)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
470 (setq kkc-length-converted 0)
18644
69c91eee7ba1 (kkc-region): Call skkdic-lookup-key with
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
471 (while (and (not (kkc-lookup-key kkc-length-head nil
69c91eee7ba1 (kkc-region): Call skkdic-lookup-key with
Kenichi Handa <handa@m17n.org>
parents: 18377
diff changeset
472 (< kkc-length-head len)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
473 (> kkc-length-head 1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
474 (setq kkc-length-head (1- kkc-length-head)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
475 (let ((pos (point))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
476 (tail (overlay-end kkc-overlay-tail)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
477 (move-overlay kkc-overlay-head pos tail)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
478 (move-overlay kkc-overlay-tail tail tail))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
479 (kkc-update-conversion 'all)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
480
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
481 ;; We'll show users a list of available conversions in echo area with
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
482 ;; index numbers so that users can select one conversion with the
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
483 ;; number.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
484
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
485 ;; Set `kkc-current-conversions-width'.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
486 (defun kkc-setup-current-conversions-width ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
487 (let ((convs (cdr kkc-current-conversions))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
488 (len (length kkc-current-conversions))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
489 (idx 1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
490 (setq kkc-current-conversions-width (make-vector len nil))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
491 ;; To tell `kkc-show-conversion-list-update' to generate
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
492 ;; message from scratch.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
493 (aset kkc-current-conversions-width 0 (vector len -2 nil))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
494 ;; Fill the remaining slots.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
495 (while convs
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
496 (aset kkc-current-conversions-width idx
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
497 (+ (string-width (car convs)) 4))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
498 (setq convs (cdr convs)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
499 idx (1+ idx)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
500
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
501 (defun kkc-show-conversion-list-or-next-group ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
502 "Show list of available conversions in echo area with index numbers.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
503 If the list is already shown, show the next group of conversions,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
504 and change the current conversion to the first one in the group."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
505 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
506 (if (< (length kkc-current-conversions) 3)
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
507 (kkc-error "No alternative"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
508 (if kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
509 (let ((next-idx (aref (aref kkc-current-conversions-width 0) 1)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
510 (if (< next-idx (length kkc-current-conversions-width))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
511 (setcar kkc-current-conversions next-idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
512 (setcar kkc-current-conversions 1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
513 (kkc-show-conversion-list-update)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
514 (kkc-update-conversion))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
515 (kkc-setup-current-conversions-width)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
516 (kkc-show-conversion-list-update)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
517
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
518 (defun kkc-show-conversion-list-or-prev-group ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
519 "Show list of available conversions in echo area with index numbers.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
520 If the list is already shown, show the previous group of conversions,
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
521 and change the current conversion to the last one in the group."
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
522 (interactive)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
523 (if (< (length kkc-current-conversions) 3)
22888
5bfe86125303 (kkc-lookup-cache): Initialize it to nil.
Kenichi Handa <handa@m17n.org>
parents: 22816
diff changeset
524 (kkc-error "No alternative"))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
525 (if kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
526 (let ((this-idx (aref (aref kkc-current-conversions-width 0) 0)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
527 (if (> this-idx 1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
528 (setcar kkc-current-conversions (1- this-idx))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
529 (setcar kkc-current-conversions
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
530 (1- (length kkc-current-conversions-width))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
531 (kkc-show-conversion-list-update)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
532 (kkc-update-conversion))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
533 (kkc-setup-current-conversions-width)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
534 (kkc-show-conversion-list-update)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
535
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
536 ;; Update the conversion list shown in echo area.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
537 (defun kkc-show-conversion-list-update ()
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
538 (or kkc-current-conversions-width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
539 (kkc-setup-current-conversions-width))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
540 (let* ((current-idx (car kkc-current-conversions))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
541 (first-slot (aref kkc-current-conversions-width 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
542 (this-idx (aref first-slot 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
543 (next-idx (aref first-slot 1))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
544 (msg (aref first-slot 2)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
545 (if (< current-idx this-idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
546 ;; The currently selected conversion is before the list shown
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
547 ;; previously. We must start calculation of message width
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
548 ;; from the start again.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
549 (setq this-idx 1 msg nil)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
550 (if (>= current-idx next-idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
551 ;; The currently selected conversion is after the list shown
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
552 ;; previously. We start calculation of message width from
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
553 ;; the conversion next of TO.
51959
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
554 (setq this-idx next-idx msg nil)))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
555 (if (not msg)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
556 (let ((len (length kkc-current-conversions))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
557 (max-width (window-width (minibuffer-window)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
558 (width-table kkc-current-conversions-width)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
559 (width 0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
560 (idx this-idx)
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
561 (max-items (length kkc-show-conversion-list-index-chars))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
562 l)
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
563 ;; Set THIS-IDX to the first index of conversion to be shown
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
564 ;; in MSG, and reflect it in kkc-current-conversions-width.
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
565 (while (<= idx current-idx)
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
566 (if (and (<= (+ width (aref width-table idx)) max-width)
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
567 (< (- idx this-idx) max-items))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
568 (setq width (+ width (aref width-table idx)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
569 (setq this-idx idx width (aref width-table idx)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
570 (setq idx (1+ idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
571 l (cdr l)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
572 (aset first-slot 0 this-idx)
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
573 ;; Set NEXT-IDX to the next index of the last conversion
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
574 ;; shown in MSG, and reflect it in
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
575 ;; kkc-current-conversions-width.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
576 (while (and (< idx len)
22816
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
577 (<= (+ width (aref width-table idx)) max-width)
8f9d4edebbdd (kkc-region): Unwind-protect the conversion
Kenichi Handa <handa@m17n.org>
parents: 22794
diff changeset
578 (< (- idx this-idx) max-items))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
579 (setq width (+ width (aref width-table idx))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
580 idx (1+ idx)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
581 l (cdr l)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
582 (aset first-slot 1 (setq next-idx idx))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
583 (setq l (nthcdr this-idx kkc-current-conversions))
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
584 (setq msg (format " %c %s"
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
585 (aref kkc-show-conversion-list-index-chars 0)
51959
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
586 (propertize (car l)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
587 'kkc-conversion-index this-idx))
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
588 idx (1+ this-idx)
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
589 l (cdr l))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
590 (while (< idx next-idx)
30251
9a4962f4ea62 (kkc-show-conversion-list-count): Customize it.
Kenichi Handa <handa@m17n.org>
parents: 29146
diff changeset
591 (setq msg (format "%s %c %s"
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
592 msg
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
593 (aref kkc-show-conversion-list-index-chars
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
594 (- idx this-idx))
51959
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
595 (propertize (car l)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
596 'kkc-conversion-index idx))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
597 idx (1+ idx)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
598 l (cdr l)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
599 (aset first-slot 2 msg)))
51959
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
600
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
601 ;; Highlight the current conversion.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
602 (if (> current-idx 0)
51959
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
603 (let ((pos 3)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
604 (limit (length msg)))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
605 (remove-text-properties 0 (length msg) '(face nil) msg)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
606 (while (not (eq (get-text-property pos 'kkc-conversion-index msg)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
607 current-idx))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
608 (setq pos (next-single-property-change pos 'kkc-conversion-index
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
609 msg limit)))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
610 (put-text-property pos (next-single-property-change
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
611 pos 'kkc-conversion-index msg limit)
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
612 'face 'highlight msg)))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
613 (let ((message-log-max nil))
cfbd08e9b444 (kkc-show-conversion-list-update):
Kenichi Handa <handa@m17n.org>
parents: 49598
diff changeset
614 (message "%s" msg))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
615
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
616 ;; Update the conversion area with the latest conversion selected.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
617 ;; ALL if non nil means to update the whole area, else update only
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
618 ;; inside quail-overlay-head.
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
619
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
620 (defun kkc-update-conversion (&optional all)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
621 (goto-char (overlay-start kkc-overlay-head))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
622 (cond ((= (car kkc-current-conversions) 0) ; Hiragana
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
623 (let ((i 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
624 (while (< i kkc-length-converted)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
625 (insert (aref kkc-current-key i))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
626 (setq i (1+ i)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
627 ((= (car kkc-current-conversions) -1) ; Katakana
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
628 (let ((i 0))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
629 (while (< i kkc-length-converted)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
630 (insert (japanese-katakana (aref kkc-current-key i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
631 (setq i (1+ i)))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
632 (t
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
633 (insert (nth (car kkc-current-conversions) kkc-current-conversions))))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
634 (delete-region (point) (overlay-start kkc-overlay-tail))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
635 (if all
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
636 (let ((len (length kkc-current-key))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
637 (i kkc-length-converted))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
638 (delete-region (overlay-start kkc-overlay-tail)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
639 (overlay-end kkc-overlay-head))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
640 (while (< i kkc-length-head)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
641 (if (= (car kkc-current-conversions) -1)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
642 (insert (japanese-katakana (aref kkc-current-key i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
643 (insert (aref kkc-current-key i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
644 (setq i (1+ i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
645 (let ((pos (point)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
646 (while (< i len)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
647 (insert (aref kkc-current-key i))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
648 (setq i (1+ i)))
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
649 (move-overlay kkc-overlay-head
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
650 (overlay-start kkc-overlay-head) pos)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
651 (delete-region (point) (overlay-end kkc-overlay-tail)))))
30256
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
652 (unwind-protect
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
653 (run-hook-with-args 'kkc-after-update-conversion-functions
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
654 (overlay-start kkc-overlay-head)
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
655 (overlay-end kkc-overlay-head))
e4b4bca5087a (kkc-after-update-conversion-functions): New variable.
Kenichi Handa <handa@m17n.org>
parents: 30251
diff changeset
656 (goto-char (overlay-end kkc-overlay-tail))))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
657
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
658 ;;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
659 (provide 'kkc)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
660
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79709
diff changeset
661 ;; arch-tag: 3cbfd56e-74e6-4f60-bb46-ba7c2d366fbf
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37016
diff changeset
662 ;;; kkc.el ends here