Hiroyuki Komatsu
komat****@taiya*****
2004年 8月 29日 (日) 19:13:07 JST
小松です。 返事が非常に遅くなりましてすみません。 次のリリースでの採用は、とりあえず保留とさせてください。 ただひらがな単位での編集は必須の機能だと考えていますので、 将来的には絶対につけます。 また大変申し訳ないのですが、prime.scm を結構書き換えてしまいましたので、 いただいたパッチも変更する必要があると思います。現状の prime.scm は <http://prime.sourceforge.jp/src/prime-2004-08-29.scm> です。 (define prime-editor-insert-char (lambda (line char) (prime-editor-set-left line (cons char (prime-editor-get-left line))))) (define prime-editor-backspace-char (lambda (line) (prime-editor-set-left line (cdr (prime-editor-get-left line))))) を変更してください。 At Fri, 06 Aug 2004 18:17:33 +0900, Masaki Yatsu wrote: > 本来であれば、 > * uim-primeにsuikyoをもたせる > or > * primeコマンドに文字削除機能をもたせる > のが正しいのでしょうか? Emacs 版のことなどを考えてると、prime コマンド側で用意した方が楽なのですが、 uim 側でプリエディット用の API を用意する方が筋はいいと思います。 とりあえずは、プリエディットを担当するライブラリを作成して (もしくは suikyo に持たせて)、それを prime サーバ経由で操作するようにしたいと 考えています。 -- 小松弘幸 ----------------------- http://taiyaki.org/ At Fri, 06 Aug 2004 18:17:33 +0900, Masaki Yatsu wrote: > > 谷津です。 > > なんか、やるべきじゃないことをやってる気はしますが……。 > > 本来であれば、 > * uim-primeにsuikyoをもたせる > or > * primeコマンドに文字削除機能をもたせる > のが正しいのでしょうか? > > とりあえず、前回のは「っ」が正しく処理されないので、改良しました。 > 今回は入力時点で「ん」と「っ」のキー入力を変更してしまっています。 > > (define prime-command-preedit-input > (lambda (context key key-state) > (let* ((sc (context-data context)) > (id (context-id context)) > (keystr (charcode->string key)) > (last-left-string (prime-context-left-string sc)) > (char-list)) > (prime-context-set-left-string! > sc (cons keystr last-left-string)) > (set! char-list (string-to-list (prime-preedit-get-string-label sc))) > (if (and (equal? (car char-list) keystr) > (>= (length char-list) 2)) > (cond > ((and (equal? (cadr char-list) "ん") > (not (equal? keystr "n"))) > (prime-context-set-left-string! > sc (cons keystr (cons "n" (cons "n" (cdr last-left-string)))))) > ((and (equal? (cadr char-list) "っ") > (not (equal? (car last-left-string) "u"))) > (prime-context-set-left-string! > sc (cons keystr > (cons "u" (cons "t" (cons "x" > (cdr last-left-string))))))))) > (prime-context-set-candidate-window! sc #f) ;FIXME:very dirty hack > (if (and > prime-preedit-immediate-commit? > (prime-context-immediate-commit sc)) > (begin > (im-commit id (string-list-concat > (prime-context-left-string sc))) > (prime-flush sc)))))) > > (define prime-command-preedit-backspace > (lambda (context key key-state) > (let* ((sc (context-data context)) > (preedit-char-list (string-to-list > (prime-preedit-get-string-label sc)))) > (letrec ((delete-backward > (lambda (char-list goal-char-list) > (cond > ((= (length goal-char-list) 0) > (prime-context-set-left-string! sc '())) > ((= (length char-list) (length goal-char-list)) > (if (equal? (car char-list) (car goal-char-list)) () > (delete-backward char-list (cdr goal-char-list)))) > (else > (begin > (prime-context-set-left-string! > sc (cdr (prime-context-left-string sc))) > (delete-backward > (string-to-list (prime-preedit-get-string-label sc)) > goal-char-list))))))) > (delete-backward preedit-char-list (cdr preedit-char-list))) > (prime-context-set-candidate-window! sc #f) ;FIXME:very dirty hack > ))) > > --- > 谷津真樹 (Masaki Yatsu) > mailto:yatsu****@yatsu***** > > > _______________________________________________ > Prime-dev mailing list > Prime****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/prime-dev