Edited at

Atom hydrogen で、ruby-xmpfilter 的な workflow を実現する

More than 1 year has passed since last update.

追記: 結局パッケージにしてしまった。。。 https://atom.io/packages/hydrogen-helpers

hydrogen-helpers.gif

Atom のパッケージ Hydrogen を使い始めた。

目的は JavaScript のお勉強を加速するために、サンプルコードスニペットを手早く理解するためだ。

これまで、理解の難しいコードは自作の transformer パッケージで Atom から直接実行していたが、 hydrogen を試してみようと思い立った。いちいち debug プリント( console.log ) 入れるのが辛くなってきた。

もともと、Vim を使っていた頃、vim-ruby-xmpfilter というのを作って使っていた( 単なる rcodetools/xmpfilter 自体の wrapper)

これとワークフローを実現したかった。


実現したい Workflow


  1. コードをセレクトする(from wiki, online book or blog post like pony poo)

  2. sandbox 的なエディタに貼り付ける

  3. 興味のある行にマークをつける( Jupyter の cell を行末に挿入する )

  4. 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 にある

https://gist.github.com/t9md/e57172a18e6b75d0f9f1247a98a14922


要注意

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