isi


石崎と申します。

じじいです(ほんとに)。昔、ミニコン(死語?)のSEをやってました。 趣味でschemeを触っております。仕事ではほとんどschemeとの関係がないんですけど、つい最近ちょっとだけgaucheのsxml.sxpathにお世話になりました。(2006/02/13 07:11:00 PST)


Readline パッケージについて

ここGauche:対話環境での入出力が発端です。gaucheでのreadlineの実装をちょっと使ってみましたので、報告します。
環境は、Mac OS X 10.3.9 + Gauche 0.8.6 + GNU Readline 4.3-26 です。

Gauche-readline

YOKOTA Hiroshiさんが開発しているGauche用GNU Readline拡張モジュール。入力テキストの履歴機能、関数名等の補完機能あり。gosh-rlという対話モード用スクリプトが付属している。

  1. Makefileの変更
    GNU Readlineをfinkでインストールしていた関係から、Makefileに-I /sw/include, -L /sw/lib を追加。また、共有ライブラリのリンケージのスイッチを -shared から -bundle に変更。
  2. make
  3. sudo make install

以上で完了、対話モード用スクリプトもインストールされるので、gosh-rl とたたけばすぐ使用可能。TerminalでのReadline機能と履歴機能は便利ですね。1行に複数のS式や複数行にまたがるS式の入力も問題無し。先頭のS式が複数行にまたがる場合は、次のようになります。...がプロンプトで表示されます。(実は、しばらく前のバージョンを試したことがあって、その時はこの...もgosh>と表示されたので、ちょっと使いずらいなあと思っていたのでした)

 bash$ gosh-rl
 gosh> (+ 1 2 3 4 5
 ... 6 7 8
 ... 9 10)
 55
 gosh>

Scheme Terminal Library 0.3

Gauche:Packagesにfindとgauche-ircが登録されていますが、このサイト http://www.synthcode.com/ で公開されているVT100制御、Readline機能等をサポートするパッケージ。全てscheme codeで実装されているため、Readline機能を使う際にGNU Readline等は不要。入力テキストの履歴機能、関数名等の補完機能あり。igoshという対話モード用スクリプトが付属している。

  1. ダウンロード
    igoshを動かすには上記サイトより、次の3つのファイルをダウンロードする。
  2. 修正
    以下の4つのファイルを修正する必要がありました。
  3. インストール
    Makefile があり make install ができるようになっているが、内容は install コマンドによる term/*.scm のコピーだけなのと、ディレクトリ名が間違っているのと、install が Mac OS X のものとはちょっと違っているようなので、使わなかった。
    各ソースはモジュールなので gauche の *load-path* にあるディレクトリに以下のような構造でコピーすればよい。

以上で完了。igosh はパスの通った適当なところに置いておく。igosh は入力したテキストの先頭のS式のみを処理するようです。先頭のS式の後ろのテキストは単純に捨てられる。複数行にわたるS式の入力は問題無し。こんな感じです。

 bash$ igosh
 gosh> (+ 1 2 3)  (foo bar
 6
 gosh> (+ 1 2 3 4 5
 6 7 8
 9 10)
 55
 gosh>

2つほど不具合に遭遇しました。(1)関数名の補完ができるのだけど、補完対象にない文字列を入力して補完させるとエラーとなる。(2)Mac OS X の Terminal で、カーソルが最下行にあるときの履歴表示で表示が乱れる。

もし日々利用するような事を考えるのならば、Gauche-readline がお勧めだと思います。2006/02/22 05:43:14 PST


Last modified : 2013/04/28 23:00:05 UTC