update.
[elisp/emacs-canna.git] / canna.el
index bb02483..8c4e055 100644 (file)
--- a/canna.el
+++ b/canna.el
@@ -1,13 +1,12 @@
 ;;; canna.el --- Interface to the Canna input method.
 
 ;; Copyright (C) 1994 Akira Kon, NEC Corporation.
-;; Copyright (C) 1996,1997,1998 MORIOKA Tomohiko
+;; Copyright (C) 1996,1997,1998,2004 MORIOKA Tomohiko
 ;; Copyright (C) 1997 Stephen Turnbull
 
 ;; Author: Akira Kon <kon@d1.bs2.mt.nec.co.jp>
 ;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;;         Stephen Turnbull <turnbull@sk.tsukuba.ac.jp>
-;; Version: $Revision: 1.20 $
 ;; Keywords: Canna, Japanese, input method, mule, multilingual
 
 ;; This file is part of Emacs-Canna.
 ;; (defalias 'self-insert-internal 'self-insert-command)
 ;; end
 
-(defconst canna-version "Emacs-Canna 1.3")
+(defconst canna-version "Emacs-Canna 1.5")
 
 (defun canna-version ()
   "Display version of canna.el in mini-buffer."
   (interactive)
   (message (concat canna-version " ...")))
 
-(if (featurep 'xemacs)
-    (defun canna-self-insert-string (string)
-      (let ((len (length string))
-           (i 0)
-           ;; \e$BA^F~$NESCf$G\e(B blink \e$B$,5/$-$k$H$&$C$H$*$7$$$N$G!"\e(B
-           ;; \e$B0l;~E*$K\e(B blink \e$B$rM^;_$9$k!#\e(B
-           (blink-matching-paren nil))
-       (while (< i len)
-         (self-insert-internal (aref canna-kakutei-string i))
-         (setq i (1+ i))
-         )))
-  (defalias 'canna-self-insert-string 'insert)
+(defvar canna-self-insert-string-filter nil
+  "*\e$B3NDj;~$K8F$P$l$k%U%#%k%?!<4X?t$r;XDj$9$k$?$a$NJQ?t!#\e(B
+\e$B@_Dj$5$l$k%U%#%k%?!<4X?t$O#10z?t$N4X?t$G!"\e(B
+\e$B$=$N0z?t$K3NDjJ8;zNs$,EO$5$l$k!#\e(B
+\e$B$^$?!"%U%#%k%?!<4X?t$OJ8;zNs$rJV$5$J$1$l$P$J$i$J$$!#\e(B
+\e$B>e5-$N;HMQ$rK~$?$94X?t$NB>!"\e(Bnil \e$B$r;XDj$9$k$3$H$,$G$-!"\e(B
+\e$B$=$N>l9g$OL5JQ49$rI=$9!#\e(B")
+
+(cond
+ ((featurep 'xemacs)
+  (defun canna-self-insert-string (string)
+    (if (functionp canna-self-insert-string-filter)
+       (setq string (funcall canna-self-insert-string-filter string)))
+    (let ((len (length string))
+         (i 0)
+         ;; \e$BA^F~$NESCf$G\e(B blink \e$B$,5/$-$k$H$&$C$H$*$7$$$N$G!"\e(B
+         ;; \e$B0l;~E*$K\e(B blink \e$B$rM^;_$9$k!#\e(B
+         (blink-matching-paren nil))
+      (while (< i len)
+       (self-insert-internal (aref string i))
+       (setq i (1+ i)))))
   )
+ (t
+  ;; (defalias 'canna-self-insert-string 'insert)
+  (defun canna-self-insert-string (string)
+    (if canna-self-insert-string-filter
+       (setq string (funcall canna-self-insert-string-filter string)))
+    (insert string))
+  ))
 
 
 ;;; \e$B$+$s$J$NJQ?t\e(B
@@ -304,6 +319,8 @@ t \e$B$N;~$O%G%U%)%k%H$N?'$r;HMQ$9$k!#\e(B
        (define-key canna-mode-map [(control left)]  "\C-b")
        (define-key canna-mode-map [kanji]           " ")
        (define-key canna-mode-map [(control space)] [(control @)])
+       (define-key canna-mode-map [delete] "\C-?")
+       (define-key canna-mode-map [backspace] "\C-h")
        )
       (t
        (define-key canna-mode-map [up]      [?\C-p])