追記: 結局パッケージにしてしまった。。。 https://atom.io/packages/hydrogen-helpers
Atom のパッケージ Hydrogen を使い始めた。
目的は JavaScript のお勉強を加速するために、サンプルコードスニペットを手早く理解するためだ。
これまで、理解の難しいコードは自作の transformer パッケージで Atom から直接実行していたが、 hydrogen を試してみようと思い立った。いちいち debug プリント( console.log ) 入れるのが辛くなってきた。
もともと、Vim を使っていた頃、vim-ruby-xmpfilter というのを作って使っていた( 単なる rcodetools/xmpfilter 自体の wrapper)
これとワークフローを実現したかった。
実現したい Workflow
- コードをセレクトする(from wiki, online book or blog post like pony poo)
- sandbox 的なエディタに貼り付ける
- 興味のある行にマークをつける( Jupyter の
cellを行末に挿入する ) - Jupyter kernel を restart(
restart-kernel) してから再評価run-all
Point
3.について
これ相当のコマンドは無い。気楽に cell マークをつけたり消したりしたった。
4.について
kernel を restart しないといけないのは、node-process を実行毎に共有しているので、let とか var とかしてると、全体を再評価 run-all した時に、 再宣言 になってしまって、怒られる(Identifier x has already been declared).
もちろん restart によるオーバーヘッドもあるけど、僕は全体をクリーンに毎回再評価出来る方が良い。お勉強目的の小さいコードでは特に。
Commands
init.coffee と keymap の例は以下の gist にある
要注意
hydrogen も Jupyter も数時間前に使い始めたばかりでよく分かっていない。
何か間違っていたら教えて欲しい。
kernel 再起動、再評価のコマンド hydrogenRestartKernelAndRunAll は単に2つのコマンドを
連続実行しているだけ、run-all 前に kernel の restart を待たないとダメなのですが、わからない(方法がない?)ので、単に setTimeout で delay させているだけ.
PCのスペックや評価するコード量等の要因により、適切な timeout 値は変わってきます。コピペする時は適宜変えてください。
GIFのキーストロークとコマンドがやってること
Gist の Keymap を前提として
-
cmd-mで line cell の toggle(なければつける、あれば消す) -
cmd-hで kernel の restart と 少し待ってから(1000ms の決め打ち) run-all.
最後に、基本的にこれが hydrogen のただしい使い方ではないので、まずは RADME を読もう。
セットアップ hydrogen for JavaScript
ijsinstall が分かり難かった。
pip install jupyter
npm -g install ijavascript
ijsinstall
jupyter kernelspec list # <- javascript が リストアップされてればOK
