追記: 結局パッケージにしてしまった。。。 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