ぼくがかんがえたさいこうのエディタ
LingrでShougoさんの熱い思いを聞いて、ちょっと前に紙に書いたメモを思い出したので電子化してみる。
EmacsやVimよりもすごいエディタ、というのはどんなんだろうか、と考えてこんなのになった。
エディタ用スクリプト言語
エディタのスクリプトとなる言語はなんでもいいことにする。
というのはどういうことかというと、
エディタが実行するのは中間言語であって、
他のそれぞれの言語ごとにバインディング*1が用意されている。
で、コンパイルしてしまえば、Perlでも、Pythonでも、Rubyでも、
Vimスクリプトでも、Emacs Lispでも、全てプラグインとして使える。
コンパイルはPythonみたいにコンパイルされたバイトコードが
存在しないか古かったらコンパイルする。
どの言語かの判別はshebangみたいに
先頭になんかくっつけとけばいいんじゃないかな?
ParrotとかLLVMとかそのための土台は揃ってきてる。
これに限らず、今、古い資産をどうやって生かすかって技術が重要になってきてると思う。
関係ないけど.vimrcとかプラグインとかを
コンパイルしてディレクトリに置くだけで
同じ環境になったらうれしい。
エディタがそのレベルに達するまで
.vimrcを後生大事に持ちつづけるのもすごいと思うけど、そうなったらうれしい。
プラグイン/アドオン マネージャ
Firefoxのアドオンマネージャ + cpan + auto-install.el + Weave + ...
つまり以下のような感じ。
- インストール
- 削除
- アップデート
- 依存関係を辿ってインストール
- 便利なライブラリがあればプラグインを開発しようという人が増える!
- プラグインのテスト環境
- 設定のバックアップ
- 設定の共有
- 「共有」ってサーバー*2へのpushとpull両方できるといいよね
- ReadItLaterがpushを暗黙に行うので分かりにくいんだよなどうでもいいけど
パッケージ管理マネージャとかについてはよく分かってないので、
それについて調べればもっと「これは便利」みたいなのがあるかもしれない。
ドキュメント
重要。
- perldoc
- :help
- man、
優れたドキュメントがあるところには優れたソフトウェアがある(はず)。
PHPはドキュメントすごいしソフトウェアすごい。
PHP自体にはちょっと残念なところもある。
けどドキュメントでカバーすればそれは仕様。
割と本気で感心してたり。
マルチスレッド
VimやEmacsで目下の課題の一つがこのマルチスレッド対応。
どっちも非同期のスクリプト実行ができないのはもったいない。
EmacsでもVimでもできなくはない。
でもかなり難しいし不完全。
コードのメンテナンス的な意味でも限界がある(らしい)。
追記:以下はShougoさんによるとEmacsでは無理らしいです。
*3追記2:Emacsでの事情をブコメでid:tomoyaさんに教えていただきました。
ただ、Emacsではどうか知らないけど、
Vimスクリプトはlibcall()という関数を使ってC関数を呼ぶことができる。
それを使って非同期実行を可能にするという目的のvimprocというものが現在制作中だったり。
あとJavaScriptのsetInterval()やsetTimeout()みたいに
タイマー的な機能があるといいよねということで
メーリングリストでリクエストされたらしい。
最近vim_devとvim_use見てないので詳しくは分からないけど。
あとマルチスレッド化は今後重要になっていくのか、
それとも古い資産との相性がいい
コルーチンによる擬似スレッド*4が重要になるのか、
まだまだ分からないところ。