IDLの対話環境にTab補完を付ける

衛星データ解析とかに使われる言語のひとつに IDL (Interactive Data Language) というものがあります.
大気・宇宙物理系の研究分野ではそれなりにメジャーで,その高額なライセンス料(詳しい額は知らない)の割にはよく使われているみたいです.

IDLは基本的にはインタラクティブ環境での利用を主とする言語で,私もよくTerminaiでidlを起動して利用するわけですが,この環境,非常に使いづらいです.
Historyの上限は500程度で少なすぎる,上下カーソルキーでしかHistoryを辿れない,Tab補完は効かない.
普段Zshに慣れてしまっている私にとっては非常につらいです.

そういうわけで,この対話環境にTab補完機能を付けるGem,IDL-EREP (IDL Enhanced REPl) を書きました.

https://rubygems.org/gems/idl_erep
https://github.com/rinx/idl-erep

以下,READMEに沿って説明します.


Install

Gemのインストールを実行するだけでOKです.

$ gem install idl_erep

Usage

普段Terminalでidlコマンドを実行するのと同じように使います.

$ idl_erep

対話環境が起動するので,普段どおりに使います.
この環境ではTab補完に加え,さまざまなキーマップが使えます.
特に便利なのは,Ctrl + Rにより使えるHistory検索機能です.

Configurations

詳しくはREADMEに記述してありますが,$HOME以下に~/.idl_profileファイルを置くと,これをRubyスクリプトとして読み込み,デフォルト設定を上書きする形でさまざまなカスタマイズができます.

例えば,プロンプトの文字列を変更することやHistory件数の上限を変更することができます. また,さらに強力なのがTab補完の候補を生成する関数を追加することができる点です. これについてもREADMEに簡単な例を載せておりますので,こちらをご覧ください.


このように,IDL-EREPを用いるとIDLの対話環境を非常に柔軟に拡張することができます.

ただ,まだこのGemは開発中であり,まだまだ不備等があります.
何かお気づきの点やバグ,要望等ありましたらGitHub issuesまでご報告ください.
プルリクもお待ちしております.