LoginSignup
2
3

More than 5 years have passed since last update.

[ATOM] 自作packageからRangeを指定して開いてるファイルの行を装飾したいけど、常に1行目しか変化しない課題を解決する

Last updated at Posted at 2015-06-27

環境

  • OS X Yosemite 10.10.3
  • Atom 1.0.0
  • 中の人=CoffeeScript初心者。自作package初挑戦なので大絶賛修行中でっす。

概要

自作packageの開発中、表題の事象に直面しました。例えば次のようなコードがあった場合、

ore.coffee
  getEditor: ->
    atom.workspace.getActiveTextEditor()

  createDecoration: ->
    range = new Range([9, 0], [10, 0])
    marker = @getEditor().markBufferRange(range, invalidate: 'never')
    @getEditor().decorateMarker(marker, type: 'line', class: 'myClass')

アクティブなエディタの9行目にmyClassが適用されることを期待したのですが、実際はrangeの値に関係なく1行目にのみ適用されます。

原因

変数rangeはAtom API Rangeのインスタンスだと思っていたのですが、なんと中身はネイティブのRangeになっており、start, endが効いていませんでした。

解決方法

前述のore.coffeeの先頭に以下の行を追加します。

ore.coffee
{ Range } = require 'atom'

余談

  • 最初はconsole.log(foo)などと書いてDeveloper ToolsのConsoleでデバッグしていたのですが、同じくDeveloper ToolsのSourcesでブレークポイント&ステップ実行、変数のウォッチができるのを知って効率がアップしました。
2
3
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
2
3