[Gutter] Create a line-numbers Gutter on each TextEditor

This commit is contained in:
Jess Lin
2015-02-03 08:50:10 -08:00
parent 20d3c07bf5
commit eb321a64c1
2 changed files with 30 additions and 9 deletions

View File

@@ -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()

View File

@@ -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.
#