uimの更新とuim-tutcode(交ぜ書き対応版)
uimパッケージを更新するたびに(というほど頻度が高いわけではないが)uim-tutcodeの状況を確認するわけだが、今回も交ぜ書き対応版にはなっていなかった。trunkにだけ入っているようなので今回もuim-tutcode-20070510で上書きする形にしておいた——いや、おとなしく更新前の状態のままにしておけば良かったのだが(dpkg-divertしているわけだし)、ちょっと色気を出してtrunkからコードを取ってきたりしてしまったのが悪かった。作業をしている中で、uimの設定を変えてしまい交ぜ書き変換ができない状態になり、しかも設定を変えてしまったことに気付かなかったため、なんとか交ぜ書き変換ができるまでに復旧するのにずいぶん手間をとられてしまった。結局、交ぜ書き変換を開始するキーバインドが変わってしまっていただけだったのだが。
この件とは別にsvnのlogを見ていたら、以前ここに書いていた問題への対応が行われているのに気付いておどろいた。あのときは時間もない上にうまく表現できそうにないのでどうともしなかったのだが、きちんと報告すれば良かったな。
tc2とemacs22
emacs22にしたらisearchが使えなくなった。どうもtc2が提供しているisearchがまずいみたい。こう、かなあ?
--- tc-is20.el.orig 2007-09-13 15:14:41.000000000 +0900
+++ tc-is20.el 2007-09-13 15:11:59.000000000 +0900
@@ -132,9 +132,9 @@
(if isearch-success
nil
;; Ding if failed this time after succeeding last time.
- (and (nth 3 (car isearch-cmds))
+ (and (isearch-success-state (car isearch-cmds))
(ding))
- (goto-char (nth 2 (car isearch-cmds)))))
+ (goto-char (isearch-point-state (car isearch-cmds)))))
(defun isearch-printing-char ()
"Add this ordinary printing character to the search string and search."
--- tc-sysdep.el.orig 2003-12-23 20:38:43.000000000 +0900
+++ tc-sysdep.el 2007-09-13 15:09:10.000000000 +0900
@@ -229,5 +229,5 @@
;;; Fix incompatibilities between 18 and 19.
;;;
-(if (string-match "^\\(19\\|2[01]\\)" emacs-version)
+(if (string-match "^\\(19\\|2[012]\\)" emacs-version)
(progn
(defun tcode-redo-command (ch)
PRIME + T-Code再び
久々にIRCで小松くんみ見かけたので、交ぜ書き変換ができなくなっちゃったよーというのを聞いてみた。今のところLANG=ja_JP.UTF-8でprimeを起動するとダメというのが一つ。あと、uimが0.4.1じゃないとダメ。パッケージ分割の関係でなかなかdebが入ってこないのだけど、PRIMEに限っては0.3.9の環境に最新のprime.scmをコピーしてくれば良いとのこと。実際それでうまく動くようになった。というか、すごく快適になった。
が、いくつかひっかかる点が。ひとつは入力中にEnterキーを押すと、表示上では改行するけどアプリケーションには改行が渡らないらしい。あと、何かのタイミングで日本語を入力できなくなってしまう。こちらはしぼりきれていない。日本語入力をオン→オフ→オンすれば再び入力できるようにはなるのだけど。あと、えーと、「(」などASCIIの一文字を(二ストロークで)入力した場合にストロークが完了しているのに表示が「*」のままで、次に何か入力したときにようやく「(」が現れるというのがあった。
PRIME + T-Code
RCがとれたバージョンがリリースされた。ここからprime-0.7.6、prime-dict-0.6.7、prime-el-1.3.1を取ってきて関係ソフトウェアとともにインストールすればOK。T-Codeで利用するときには~/.prime/Custom_prime.rbにPRIME_ENV['typing_method'] = 'tcode'と書けばよい。
ついでにキー入力と文字のマップを拡張(Try-Codeとか)するならば、同じく~/.prime/Custom_prime.rbにPRIME_ENV['suikyo_tables'] = ['tcode', PRIME_USER_DIR + '/my-table']のような記述を加え、~/.prime/my-tableに拡張部分のマップを書いておく。独自のキーマップ(きゅうりとか)を使っている人も、似たようなやり方でPRIMEをカスタマイズできると思う。
PRIME + T-Code
PRIMEではT-Codeサポートがかなり良くなってきていて、もちろんtc2などからの移行を考えるのであれば慣れの問題はあるのだけど、日常的に使っていけそうな気配がしてきている。何より作者の小松くんが、T-Codeのようなマイナーな問題にも根気強くしかも迅速に対応をしてくれるのがありがたい。
現時点でT-Code向けの環境を作るとするとprime-0.7.6-rc2、prime-el-1.3.1-rc2、prime-dict-0.6.6、suikyo-1.3.0と、MELL、Ruby、Sary、Sary-Rubyが必要になる。Debian/sidならmell、sukyo-elisp、libsuikyo-ruby1.8、ruby1.8、libsary-ruby1.8をそのまま使うことができる。prime、prime-elもパッケージがあるのだけど、それらは安定版でちょっと古いので、これれらについては手でインストールするなりなんなりする。インストール方法はPRIMEのホームページにある通り。
T-Codeのために必要となる設定はPRIMEサーバの設定ファイルである~/.prime/Custom_prime.rbにPRIME_ENV['typing_method'] = 'tcode'と書くだけ。prime-elの設定は特に必要ない*1。以上が完了したらホームページに書いてあるような動作確認をした上でEmacsを起動し、C-x C-m C-\してjapanese-primeを選ぶ。そうするとPRIMEでの入力が可能となっているはずだ。
ただし、この状態では、たとえば「か」という入力から「確定」を得ることはできない(「かくてい」、「確てい」、「かく定」という入力から「確定」を得ることはできる)。また「のまない」から「飲まない」を得ることができない。この二つのことをできるようにするには、primeに以下のような変更を加えるとよい。
--- lib/prime.rb 28 Jan 2004 08:34:56 -0000 1.2.2.16
+++ lib/prime.rb 28 Jan 2004 12:08:54 -0000
@@ -146,13 +146,17 @@
end
def lookup_direct (string)
+ results_prefix = lookup_prefix(string) # XXX(A)
results_expansion = lookup_expansion(string)
results_mixed = lookup_mixed(string)
+ results_japanese = lookup_japanese(string) # XXX(B)
results_overall = lookup_overall(string)
result = PrimeWordList::merge_with_label(@context,
+ results_prefix[0, 3], # XXX(A)
results_expansion,
results_mixed,
+ results_japanese, # XXX(B)
results_overall)
return result
end
(A)の部分が前者(読みに対する前方一致で変換候補を探す)に対応し、(B)の部分が後者(活用を考えて変換候補を探す)に対応する。もしも前者を不要と思えば(A)の部分は加えないか、コメントアウトしておけばよい。
追記: 「3.」のようなストロークで問題があった。MLで報告したところ、さっそく修正が入った。とりあえず前述のバージョンに関してはこのような変更を加えておくとよいとのこと。
追記(2004-01-29): prime-0.7.6-rc3、prime-el-1.3.1-rc3で上の交ぜ書きの問題と「3.」の問題が解決された。交ぜ書きの問題は(B)が加えられる形になっているので、もし必要ならさらに(A)を足すとよい(が、個人的には(A)はなくてもよいだろうと思っている)。
*1 prime-elはPRIMEサーバから入力メソッドを聞き出して、自動的に調整してくれる。
PRIMEでT-Code 1
PRIMEでT-Code入力が可能になってきたとのこと。うれしい。素晴しい。
T-Code(tc2)のTT/Try-Code拡張
安宅さんのページからパッチ(tc-2.3.1.2.patch.gz)をもらってきてTry-Codeから試してみる。[tcode-ml:2487]にあるように、(aset tcode-key-translation-rule-table 0 40)をlisp/try-tbl.elに加える必要があった。
習得が必要であるから現時点で私が利用できる拡張機能はごくわずかなのだが、なかなかよさそうだ。
ただしskkinputで使うときにはTry-Codeにならないようなのが残念。コードを加えるなりなんなりすればよいのだろうけど、ちょっと見ただけではよく分からないし、十分に時間をとることもできない。
tc2のご紹介
rectickとttyrecを使ってtc2とT-Codeのデモを作ってみた。以前作ったデモでは実際の入力の様子がわかりにくかったが、今度のはrectickのおかげでキー入力の様子までわかるようになった。
デモの終わりでローマ字入力しているのは「T-Codeモードにし忘れた」時に、どういう文字列が見られるのかを示そようとしたためなのだけど、意識してこれをやろうとするのが意外と難しかった。というのはT-Codeモードを切った段階で指の動きがローマ字入力になってしまうためで、たとえば「こんなふうに」と入力しようとしていたとすると、このデモでは「ufndlgrsydkg」とタイプする様子を見せるべきなのだが普通に「konna」とタイプしてまった。
ちなみに以前のデモは2001-05-18に収録したらしい。二年半たったのだが進歩が見られない…。


