5
6

More than 5 years have passed since last update.

atomでカスタムOpenerを作って任意のViewを作る

Last updated at Posted at 2015-01-09

カスタムOpenerとは、Paneを生成する時にユーザーが定義した振る舞いをすることを指す。(実装を調べた結果僕がそう読んでるだけで、正しい呼び方は知らない)
デフォルトだとTextEditorになっている。Cmd+, の設定画面や、MarkdownPreviewのPreview側だと思うとわかりやすいかもしれない。

url = require 'url'
{View} = require 'atom-space-pen-views'
# ターゲットなるViewの実装。タブ名で使われるgetTitleを実装する必要がある。
class SimpleView extends View
  @content: ->
    @div 'hello!'
  getTitle: -> 'debugging'

# 呼び出し時のプロトコルがsimple://だったら↑のviewを返す
# openerが falsy な値を返すとこのopenerは無視され次のopenerに処理が移る…のだと思う
atom.workspace.addOpener (uriToOpen) ->
  {protocol, host, pathname} = url.parse(uriToOpen)
  return unless protocol is 'simple:' # simple: 以外を無視する
  new SimpleView

atom.workspce.open 'simple://foo' # 開く

今はfooという雑なメッセージを投げているけど、実際にはファイルパスを渡したりして任意のプレビューを作ったりするのに使えると思う

以上のことは markdown-preview を読んで学んだ

5
6
0

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
5
6