mirror of
https://github.com/atom/atom.git
synced 2026-01-24 06:18:03 -05:00
`Gutter::decorateMarker` passes its `decorationParams` object through to `TextEditor::decorateMarker`. Rather than duplicate documentation and fall out-of-date (as was surfaced in #8920), link the `TextEditor::decorateMarker` as the canonical docs location.
90 lines
2.5 KiB
CoffeeScript
90 lines
2.5 KiB
CoffeeScript
{Emitter} = require 'event-kit'
|
|
|
|
DefaultPriority = -100
|
|
|
|
# Extended: Represents a gutter within a {TextEditor}.
|
|
#
|
|
# See {TextEditor::addGutter} for information on creating a gutter.
|
|
module.exports =
|
|
class Gutter
|
|
constructor: (gutterContainer, options) ->
|
|
@gutterContainer = gutterContainer
|
|
@name = options?.name
|
|
@priority = options?.priority ? DefaultPriority
|
|
@visible = options?.visible ? true
|
|
|
|
@emitter = new Emitter
|
|
|
|
###
|
|
Section: Gutter Destruction
|
|
###
|
|
|
|
# Essential: Destroys the gutter.
|
|
destroy: ->
|
|
if @name is 'line-number'
|
|
throw new Error('The line-number gutter cannot be destroyed.')
|
|
else
|
|
@gutterContainer.removeGutter(this)
|
|
@emitter.emit 'did-destroy'
|
|
@emitter.dispose()
|
|
|
|
###
|
|
Section: Event Subscription
|
|
###
|
|
|
|
# Essential: Calls your `callback` when the gutter's visibility changes.
|
|
#
|
|
# * `callback` {Function}
|
|
# * `gutter` The gutter whose visibility changed.
|
|
#
|
|
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
|
|
onDidChangeVisible: (callback) ->
|
|
@emitter.on 'did-change-visible', callback
|
|
|
|
# Essential: Calls your `callback` when the gutter is destroyed.
|
|
#
|
|
# * `callback` {Function}
|
|
#
|
|
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
|
|
onDidDestroy: (callback) ->
|
|
@emitter.on 'did-destroy', callback
|
|
|
|
###
|
|
Section: Visibility
|
|
###
|
|
|
|
# Essential: Hide the gutter.
|
|
hide: ->
|
|
if @visible
|
|
@visible = false
|
|
@emitter.emit 'did-change-visible', this
|
|
|
|
# Essential: Show the gutter.
|
|
show: ->
|
|
if not @visible
|
|
@visible = true
|
|
@emitter.emit 'did-change-visible', this
|
|
|
|
# Essential: Determine whether the gutter is visible.
|
|
#
|
|
# Returns a {Boolean}.
|
|
isVisible: ->
|
|
@visible
|
|
|
|
# Essential: Add a decoration that tracks a {Marker}. When the marker moves,
|
|
# is invalidated, or is destroyed, the decoration will be updated to reflect
|
|
# the marker's state.
|
|
#
|
|
# ## Arguments
|
|
#
|
|
# * `marker` A {Marker} you want this decoration to follow.
|
|
# * `decorationParams` An {Object} representing the decoration. It is passed
|
|
# to {TextEditor::decorateMarker} as its `decorationParams` and so supports
|
|
# all options documented there.
|
|
# * `type` __Caveat__: set to `'line-number'` if this is the line-number
|
|
# gutter, `'gutter'` otherwise. This cannot be overridden.
|
|
#
|
|
# Returns a {Decoration} object
|
|
decorateMarker: (marker, options) ->
|
|
@gutterContainer.addGutterDecoration(this, marker, options)
|