Remove non-free old and crusty clearcase pkg
[packages] / mule-packages / egg-its / egg-quail.el
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))
10 (define-key quail-mode-egg-map " " 'quail-henkan-region)
11
12 (defvar quail-henkan-start nil)
13 (make-variable-buffer-local 'quail-henkan-start)
14
15 (defvar quail-henkan-start-char ?\e$B!~\e(B)
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)
30 (define-key quail-henkan-mode-map "\eg" 'quail-henkan-quit)
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))