70
|
1 ;;; Quail <-> EGG interface
|
|
2
|
|
3 (require 'quail)
|
|
4
|
|
5 (or (featurep 'egg)
|
|
6 (error "You don't have EGG feature."))
|
|
7
|
|
8 (defconst quail-mode-egg-map (make-keymap))
|
|
9 (set-keymap-parents quail-mode-egg-map (list quail-mode-map))
|
108
|
10 (define-key quail-mode-egg-map " " 'quail-henkan-region)
|
70
|
11
|
|
12 (defvar quail-henkan-start nil)
|
|
13 (make-variable-buffer-local 'quail-henkan-start)
|
|
14
|
|
15 (defvar quail-henkan-start-char ?◇)
|
|
16
|
|
17 (defconst quail-henkan-mode-map (make-keymap))
|
|
18 (set-keymap-parents quail-henkan-mode-map (list henkan-mode-map))
|
|
19
|
|
20 (substitute-key-definition 'self-insert-command
|
|
21 'quail-henkan-kakutei-and-self-insert
|
|
22 quail-henkan-mode-map)
|
|
23
|
|
24 (define-key quail-henkan-mode-map "\C-k" 'quail-henkan-kakutei)
|
|
25 (define-key quail-henkan-mode-map "\C-l" 'quail-henkan-kakutei)
|
|
26 (define-key quail-henkan-mode-map "\C-m" 'quail-henkan-kakutei)
|
|
27 (define-key quail-henkan-mode-map "\C-c" 'quail-henkan-quit)
|
|
28 (define-key quail-henkan-mode-map "\C-g" 'quail-henkan-quit)
|
|
29 (define-key quail-henkan-mode-map "\177" 'quail-henkan-quit)
|
108
|
30 (define-key quail-henkan-mode-map "\eg" 'quail-henkan-quit)
|
70
|
31
|
|
32 (defun quail-henkan-mark ()
|
|
33 "Set mark at the current position to indicate starting point of henkan."
|
|
34 (interactive)
|
|
35 (quail-delete-region)
|
|
36 (quail-init-state)
|
|
37 (setq quail-henkan-start (point-marker))
|
|
38 (insert quail-henkan-start-char))
|
|
39
|
|
40 (defun quail-henkan-region ()
|
|
41 (interactive)
|
|
42 (quail-delete-region)
|
|
43 (quail-init-state)
|
|
44 (if quail-henkan-start
|
|
45 (let ((pos (point-marker)))
|
|
46 (goto-char quail-henkan-start)
|
|
47 (if (and (= (following-char) quail-henkan-start-char)
|
|
48 (progn (delete-char 1)
|
|
49 (< quail-henkan-start pos)))
|
|
50 (let ((henkan-mode-map quail-henkan-mode-map))
|
|
51 (henkan-region quail-henkan-start pos))
|
|
52 (goto-char pos))
|
|
53 (setq quail-henkan-start nil))))
|
|
54
|
|
55 (defun quail-henkan-kakutei-and-self-insert ()
|
|
56 (interactive)
|
|
57 (setq unread-command-events (list last-command-event))
|
|
58 (quail-henkan-kakutei))
|
|
59
|
|
60 (defun quail-henkan-reset ()
|
|
61 (egg:bunsetu-attribute-off bunsetu-number)
|
|
62 (egg:henkan-attribute-off)
|
|
63 (goto-char egg:region-start)
|
|
64 (delete-region (- egg:region-start (length egg:henkan-open))
|
|
65 (+ egg:region-end (length egg:henkan-close)))
|
|
66 (set-marker egg:region-start nil)
|
|
67 (set-marker egg:region-end nil)
|
|
68 (setq quail-henkan-start nil)
|
|
69 (quail-init-state)
|
|
70 (use-local-map (quail-mode-map))
|
|
71 (egg:mode-line-display))
|
|
72
|
|
73 (defun quail-henkan-kakutei ()
|
|
74 (interactive)
|
|
75 (quail-henkan-reset)
|
|
76 (let ((i 0) (max (wnn-server-bunsetu-suu)))
|
|
77 (while (< i max)
|
|
78 (insert (car (wnn-server-bunsetu-kanji i )))
|
|
79 (if (not overwrite-mode)
|
|
80 (undo-boundary))
|
|
81 (setq i (1+ i))
|
|
82 ))
|
|
83 (wnn-server-hindo-update)
|
|
84 (egg:mode-line-display))
|
|
85
|
|
86 (defun quail-henkan-quit ()
|
|
87 (interactive)
|
|
88 (quail-henkan-reset)
|
|
89 (insert egg:kanji-kanabuff)
|
|
90 (wnn-server-henkan-quit)
|
|
91 (egg:mode-line-display))
|