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