2016年6月11日土曜日

How do I do?

「あれ?今、何しようとしてたんだっけ?」という疑問が頭をよぎることがある。
それとは別に「ロボットにこういう処理をさせたいんだけど、どう書けば?」という疑問が頭をよぎることもある。
前者は現在の科学力ではいかんともしがたいが、後者については藁をもつかむ気持ちで試しておきたい手立てが無いわけでもない。

https://github.com/gleitz/howdoi

howdoiは、たまたま、……ホンのたまたま、お決まりのプログラム表現をド忘れしてしまった年寄りプログラマのためのツールである。
英文っぽく、やりたいことと今利用中のプログラム言語をパラメータとして与えると、インターネッツ(基本、StackOverflow)からなんとなくそれっぽいプログラムの断片を探し出してくれる……かもしれないツールである。


howdoi自体はコマンドラインからの実行を想定したものである。が、厨学二年生のためのエディタ、Vimから利用するためのプラグインも公開されている。

https://github.com/laurentgoudet/vim-howdoi
https://github.com/isovector/vim-howdoi

前者のURLは、外国のオッサンが作ったオリジナル。
その次のものは、そのオリジナルをまた別の外国のオッサンが魔改造したものだ。
オリジナルのvim-howdoiは、機能を利用するためのキー割当が固定で、かつその固定された割当が他のユーザが便利に使っている機能と被っていたのがイマイチとされていた。それを他のキー割当が可能になるように改造されたのである。

ここまでくれば至れり尽くせり……と思っていたが、私自身が利用するにはまだ足りなかった。

私はプログラム言語としてPythonをよく利用する。イチから書くときは最新バージョンのPython3系を利用するが、他方既存のツールはまだPython3に対応しておらず、1つ前のメジャーバージョンであるPython2系のままなのも多い。(こちらもこちらでセキュリティ維持他の理由でバージョンアップが続いている。だから、なかなか乗り換えが進まない)
howdoi自体はPython2, Python3どちらでも動作するが、問題はVim。
Python2系、Python3系、Vimは両方の環境と連携できるのだが、1回の起動で片方と連携してしまうと、もう片方とは連携できなくなる。複数のプラグインがそれぞれ片方のバージョンにしか対応していないと、後から適用した方がエラーになる。なった。困った。

vim-howdoiが利用しているPythonのバージョンは2だった。
Pythonバージョンを2に揃えてしまおうか……。
いや、ダメだ。自分で書いたプログラムは多くがPython3系だ。エディタの、かつオフィシャルでない付加機能のためだけに、それらを巻き戻すのは辛すぎる。
また、自宅PCから間借りしているVPSまで、複数の環境を持っていて、Vim自体の対応Pythonバージョンも様々だ。

改めて考えてみれば、howdoi自体はPython2, Python3の両方に対応している。しかも外部コマンドとして実行するので、VimのPythonインターフェースはそもそも不要だ。
結局、さらにもう一人の外国のオッサン、つまり自分でPython依存部分をVimScriptで書き直すことにした。

https://github.com/morinatsu/vim-howdoi/tree/repure

とりあえず動いてはいるようだ。
もうちょっと、元のvim-howdoiの挙動に近づけたいし、エラーハンドリングとかもやりたいなぁ。
そうしたら、fork元にPull Request送って、取り込んでもらいたいなぁ。

……と思ったら、このソフトウェア、公衆便所ライセンス(WTFPLv2 License)だ..... orz

0 件のコメント:

コメントを投稿