Atom: Script to atom-runner

macOS で Atom を使おうとしたら Script パッケージのアップデートが。
適用したらエラーで動かなくなった、なんじゃそりゃ。
バグ報告は上がっているようなので修正を待つとするか。

いや、ぶっちゃけ気に入らない所も多かったし別の手段も考えよう。
せっかくなので自作、も考えたけどアウトプットパネルはどうしよう?
Gedit みたいに標準では付いていないみたいだし、うーん。
もっとシンプルなパッケージを探して参考にしようかなと。

オススメのatomパッケージ7選 – Qiita

atom-runner というのを試しに入れてみた。
これは別 Pane を使って出力するようだ、なるほど。
そのおかげかパッケージもシンプルで素敵。

てゆーか、コイツは shebang どおりにスクリプトを実行してくれるヤン!
対応言語なんて shebang を書くなら設定不要、拡張子無しもイケる。
何だよ自分で作らなくてもいいジャン、こいつを今度から使うことにする。

ただデフォルトの状態だと何か表示が変、無駄な余白がある。
下側ピッチリに表示させたいんだけど。

Atom-Runner, Moving output pane to right side – support – Atom Discussion

こんなのを見つけた。
試してみると -4 に指定すれば下に出るようになるな。

#pane = panes[panes.length - 1][dirfunc](view)
pane = panes[panes.length - 4][dirfunc](view)

それとカレントディレクトリが全部ルート (/) になるんだが。
ファイルの場所を指定するには、新しいペインを表示する前に記憶すりゃいいかも。

  run: (selection) ->
    # add
    path = atom.workspace.getActivePaneItem()?.buffer?.file?.path
    @cwd = p.dirname(path)

##################################

    try
      '''dir = atom.project.getPaths()[0] || '.'
      try
        if not fs.statSync(dir).isDirectory()
          throw new Error("Bad dir")
      catch
        dir = p.dirname(dir)
      @child = spawn(cmd, args, cwd: dir)'''
      @child = spawn(cmd, args, {cwd: @cwd})

それと esc を押したら Pane も削除してほしいな。
https://flight-manual.atom.io/api/v1.41.0/Pane/
Pane.destroy() でペインは削除できるようだ。

  stopAndClose: ->
    {pane, view} = @runnerView()
    pane?.removeItem(view)
    pane?.destroy() # add
    @stop(view)

よし後は run:file を F5 に割り付けして。

理想どおりになったけどかなり改造してしまった。
Atom を使う人はプログラマーだからこんな改造はみんなできるよね。