Skip to content
らっしー edited this page Oct 13, 2014 · 3 revisions

めもというのなのも

どういう仕組みなのか

  1. atom.workspace.eachEditor()でTextEditorViewを手に入れます。 TextEditorViewはテキストエディタ画面をHTMLレベルで管理しています。
  2. TextEditorViweにはTextEditorを持っているので、TextEditorView.getModel()で手に入れます。 TextEditorはテキストエディタとデータレベルで管理しています。
  3. TextEditorViewが持っているDisplayBufferをTextEditorView.displayBufferで手に入れます。 DisplayBufferは表示するデータの管理をしています。
  4. DisplayBuffeが持っているTokeninzedBufferをDdisplayBuffer.tokenizedBufferで手に入れます。 TokeninzedBufferはトークンレベル値での管理をしています。一行一行解析したTokenizedLineの配列を持っています。
  5. TokeninzedBufferで行のテキストをトークンに分解し、TokenizedLineを生成するメソッド二つ(buildPlaceholderTokenizedLineForRow, buildTokenizedTokenizedLineForRow)をハックします。

テクニック

TokenizedLineをnewする必要があるのですが、requireで引っ張って来る方法が見つからなかったので、オリジナルのメソッドで作成されるインスタンスtokenizedLineがあるので、tokenizedLine.proto.constructorで引っ張ってきたコンストラクタに対してnewしています。もっとスマートな方法を知っている人がいたら教えてください。

Clone this wiki locally