LoginSignup
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-04

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

要注意

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2