diff lisp/egg/egg-quail.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents
children 360340f9fd5f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/egg/egg-quail.el	Mon Aug 13 09:02:59 2007 +0200
@@ -0,0 +1,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))