[Anthy-dev 1204] Re: ESC key customize for vim + skk

Back to archive index

Etsushi Kato ekato****@ees*****
2004年 10月 15日 (金) 00:30:39 JST


On Thu, Oct 14, 2004 at 08:12:31PM +0900,
OHASHI Hideya <ohash****@kinke*****> wrote:

> 以下のページにあった「gvim+skkで<esc>を押すと英数モードになるようにする設
> 定」が Debian uim 0.4.4.1-2 でうまく動作しなかったので、修正しました。

どうもありがとうございす。そういえば、uim-0.4.4 からは .scm での
context の扱いが変更されているので、~/.uim をいじっている場合注意が必
要ですね。

> # できたら本流に取り込みたいと思っています。
> # vim 使いには必需品だと思うので。

そうですね。こんな感じでどうでしょう? ~/.uim に
(define skk-use-with-vi? #t) と記述すれば使えるようになります。あと、
wide-latin でも同様の挙動にしてみました。


Index: skk.scm
===================================================================
--- skk.scm	(revision 1478)
+++ skk.scm	(working copy)
@@ -60,6 +60,7 @@
 (define skk-egg-like-newline? #f)
 (define skk-commit-newline-explicitly? #f)  ;; turn into #t provided safe behavior
 (define skk-style 'skk-style-ddskk-like)
+(define skk-use-with-vi? #f)
 
 ;; key defs
 (define-key skk-latin-key? '("l" generic-off-key?))
@@ -86,6 +87,7 @@
 (define-key skk-special-midashi-key? '(">" "<" "?"))
 (define-key skk-conv-wide-latin-key? '("<Control>q" "<Control>Q"))
 (define-key skk-plain-space-key? " ")  ;; should not be changed
+(define-key skk-vi-escape-key? '("escape" "<Control>["))
 
 ;; style elements
 (define skk-preedit-attr-mode-mark #f)
@@ -617,6 +619,13 @@
 ;; experimental coding style. discussions are welcome -- YamaKen
 (define skk-proc-state-direct-no-preedit
   (lambda (key key-state sc rkc)
+    (if skk-use-with-vi?
+	(if (skk-vi-escape-key? key key-state)
+	    (begin
+	      (skk-context-set-state! sc 'skk-state-latin)
+	      (rk-flush rkc)
+	      (skk-update-mode sc)
+	      (skk-update-prop-label sc))))
     (cond
      ((or (skk-cancel-key? key key-state)
 	  (skk-backspace-key? key key-state)
@@ -1267,6 +1276,12 @@
 	   (w (or (ja-direct char)
 		  (ja-wide char)))
 	   (sc (skk-find-descendant-context c)))
+      (if skk-use-with-vi?
+	  (if (skk-vi-escape-key? key key-state)
+	      (begin
+		(skk-context-set-state! sc 'skk-state-latin)
+		(skk-update-mode sc)
+		(skk-update-prop-label sc))))
       (cond
        ((skk-on-key? key key-state)
 	(skk-flush sc)  ; implicitly reset to 'skk-state-direct


-- 
Etsushi Kato
ekato****@ees*****



Anthy-dev メーリングリストの案内
Back to archive index