Personal tools
You are here: Home ブログ sugawara Categories java
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
jlineで日本語を使えるようにする。 sugawara 2009-12-10
五反田Emacsの資料 sugawara 2009-10-19
trac-ticket.el sugawara 2007-11-19
Emacs Lisp 勉強会(バッファとウィンドウ編) sugawara 2007-10-22
Categories
Emacs
勉強会
java
 
Document Actions

java

Up one level

Document Actions

jlineで日本語を使えるようにする。


つい最近会社のボスがLuceneに付いてくるlucliというコマンドラインツールで日本語が使えないとなげいてました。どうやらこれが使っているjlineというライブラリが日本語を通さないからみたいです。というわけで日本語を通すパッチを作ってみました。

jline(http://sourceforge.net/projects/jline/)はJavaで書かれたreadlineのようなライブラリです。これを使うとラインエディットしたり補完したりといったのをJavaで書けるようになるみたいです。

このパッチを当てるとjlineで日本語の入力ができるようになります。ただし、カーソルの移動まわりに手を入れていないので、日本語を入れてから前に戻ると半分ずつ戻ったりします。多分ConsoleReader#moveInternal()でバイト数と同じだけBACKSPACEを入れてあげれば直ると思うので誰か直してください。

パッチはjlineのHEADへのパッチなんで、gitなりcvsなりでHEADのソースコードを落としてから当てて下さい。

jarを作るときは以下のようにすれば作れます:

mvn package

ただしひとつ罠があって、ConsoleReaderTestのテストが通らないのでパッケージが作れません。src/jline/src/test/java/jline/ConsoleReaderTest.javaを適当な名前に変えるなりして無理矢理パッケージを作ってしまうのが良いと思います。

動作確認をするにはsrc/test/java/jline/example/Example.javaがあるので、以下のようにすれば試せます:

java -cp "target/classes/;target/test-classes/" jline.example.Example

最後にこのパッチが何をやっているかを簡単に説明しておきます。

  • WindowsTerminal.ReplayPrefixOneCharInputStreamがMS932に対応していなかった。
    • 対応させた。
  • WindowsTerminal.ReplayPrefixOneCharInputStream#read()がIMEからの入力を最初の1バイトしか読んでくれなかった。
    • nativeのreadByteを呼んでいなかったので呼べるようにした。

こんな感じです。

最後の最後に悲しいおしらせです。せっかくjlineを日本語対応させたにの、lucliで日本語を入れると勝手1文字ずつ空白に区切られてしまいました。

と思ったらanalyzerにCJKAnalyzerを指定してなかっただけでした。lucliを起動してから以下のようにすれば日本語で検索できるようです:

lucli> analyzer org.apache.lucene.analysis.cjk.CJKAnalyzer

lucli編につづかない。

jline-ime.patch jline-ime.patch
Size 2.9 kB - File type text/x-patch
Category(s)
java
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/sugawara/jline-ime/tbping

Re:jlineで日本語を使えるようにする。

Posted by Anonymous User at 2010-02-03 01:23
mvn package -Dmaven.test.skip=true
でテスト飛ばせますよ。

Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.