mirror of
https://github.com/atom/atom.git
synced 2026-01-23 13:58:08 -05:00
[Gutter] Create a line-numbers Gutter on each TextEditor
This commit is contained in:
@@ -4244,12 +4244,22 @@ describe "TextEditor", ->
|
||||
waitsForPromise -> editor.checkoutHeadRevision()
|
||||
|
||||
describe 'gutters', ->
|
||||
describe 'the TextEditor constructor', ->
|
||||
it 'creates a line-number gutter', ->
|
||||
expect(editor.getGutters().length).toBe 1
|
||||
lineNumberGutter = editor.gutterWithName('line-number')
|
||||
expect(lineNumberGutter.name).toBe 'line-number'
|
||||
expect(lineNumberGutter.priority).toBe 0
|
||||
|
||||
describe '::addGutter', ->
|
||||
it 'can add a gutter', ->
|
||||
expect(editor.getGutters().length).toBe 0
|
||||
expect(editor.getGutters().length).toBe 1 # line-number gutter
|
||||
options =
|
||||
name: 'test-gutter'
|
||||
priority: 1
|
||||
gutter = editor.addGutter options
|
||||
expect(editor.getGutters().length).toBe 1
|
||||
expect(editor.getGutters()[0]).toBe gutter
|
||||
expect(editor.getGutters().length).toBe 2
|
||||
expect(editor.getGutters()[1]).toBe gutter
|
||||
|
||||
it "does not allow a custom gutter with the 'line-number' name.", ->
|
||||
expect(editor.addGutter.bind(editor, {name: 'line-number'})).toThrow()
|
||||
|
||||
@@ -75,7 +75,7 @@ class TextEditor extends Model
|
||||
'autoDecreaseIndentForBufferRow', 'toggleLineCommentForBufferRow', 'toggleLineCommentsForBufferRows',
|
||||
toProperty: 'languageMode'
|
||||
|
||||
constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, @lineNumberGutterVisible}) ->
|
||||
constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, lineNumberGutterVisible}) ->
|
||||
super
|
||||
|
||||
@emitter = new Emitter
|
||||
@@ -115,6 +115,10 @@ class TextEditor extends Model
|
||||
@emitter.emit 'did-change-scroll-left', scrollLeft
|
||||
|
||||
@gutterContainer = new GutterContainer
|
||||
@lineNumberGutter = @gutterContainer.addGutter
|
||||
name: 'line-number'
|
||||
priority: 0
|
||||
visible: lineNumberGutterVisible
|
||||
|
||||
atom.workspace?.editorAdded(this) if registerEditor
|
||||
|
||||
@@ -494,12 +498,15 @@ class TextEditor extends Model
|
||||
@emitter.on 'did-change-mini', callback
|
||||
|
||||
setLineNumberGutterVisible: (lineNumberGutterVisible) ->
|
||||
unless lineNumberGutterVisible is @lineNumberGutterVisible
|
||||
@lineNumberGutterVisible = lineNumberGutterVisible
|
||||
@emitter.emit 'did-change-line-number-gutter-visible', @lineNumberGutterVisible
|
||||
@lineNumberGutterVisible
|
||||
unless lineNumberGutterVisible is @lineNumberGutter.isVisible()
|
||||
if lineNumberGutterVisible
|
||||
@lineNumberGutter.show()
|
||||
else
|
||||
@lineNumberGutter.hide()
|
||||
@emitter.emit 'did-change-line-number-gutter-visible', @lineNumberGutter.isVisible()
|
||||
@lineNumberGutter.isVisible()
|
||||
|
||||
isLineNumberGutterVisible: -> @lineNumberGutterVisible ? true
|
||||
isLineNumberGutterVisible: -> @lineNumberGutter.isVisible()
|
||||
|
||||
onDidChangeLineNumberGutterVisible: (callback) ->
|
||||
@emitter.on 'did-change-line-number-gutter-visible', callback
|
||||
@@ -513,6 +520,10 @@ class TextEditor extends Model
|
||||
getGutters: ->
|
||||
@gutterContainer.getGutters()
|
||||
|
||||
# Public: Returns the {Gutter} with the given name, or null if it doesn't exist.
|
||||
gutterWithName: (name) ->
|
||||
@gutterContainer.gutterWithName name
|
||||
|
||||
# Set the number of characters that can be displayed horizontally in the
|
||||
# editor.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user