mirror of
https://github.com/atom/atom.git
synced 2026-02-12 07:35:14 -05:00
Merge branch 'master' into ns-fix-editor-auto-height
# Conflicts: # src/text-editor.coffee
This commit is contained in:
@@ -102,6 +102,7 @@ class TextEditor extends Model
|
||||
|
||||
try
|
||||
state.tokenizedBuffer = TokenizedBuffer.deserialize(state.tokenizedBuffer, atomEnvironment)
|
||||
state.tabLength = state.tokenizedBuffer.getTabLength()
|
||||
catch error
|
||||
if error.syscall is 'read'
|
||||
return # Error reading the file, don't deserialize an editor for it
|
||||
@@ -128,7 +129,7 @@ class TextEditor extends Model
|
||||
@softWrapped, @decorationManager, @selectionsMarkerLayer, @buffer, suppressCursorCreation,
|
||||
@mini, @placeholderText, lineNumberGutterVisible, @largeFileMode, @clipboard,
|
||||
@assert, grammar, @showInvisibles, @autoHeight, @autoWidth, @scrollPastEnd, @editorWidthInChars,
|
||||
@tokenizedBuffer, @displayLayer, @invisibles, @showIndentGuide, @softWrapHangingIndentLength,
|
||||
@tokenizedBuffer, @displayLayer, @invisibles, @showIndentGuide,
|
||||
@softWrapped, @softWrapAtPreferredLineLength, @preferredLineLength
|
||||
} = params
|
||||
|
||||
@@ -154,7 +155,6 @@ class TextEditor extends Model
|
||||
@undoGroupingInterval ?= 300
|
||||
@nonWordCharacters ?= "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-…"
|
||||
@softWrapped ?= false
|
||||
@softWrapHangingIndentLength ?= 0
|
||||
@softWrapAtPreferredLineLength ?= false
|
||||
@preferredLineLength ?= 80
|
||||
|
||||
@@ -162,17 +162,24 @@ class TextEditor extends Model
|
||||
@tokenizedBuffer ?= new TokenizedBuffer({
|
||||
grammar, tabLength, @buffer, @largeFileMode, @assert
|
||||
})
|
||||
@displayLayer ?= @buffer.addDisplayLayer({
|
||||
|
||||
displayLayerParams = {
|
||||
invisibles: @getInvisibles(),
|
||||
softWrapColumn: @getSoftWrapColumn(),
|
||||
showIndentGuides: not @isMini() and @doesShowIndentGuide(),
|
||||
atomicSoftTabs: @hasAtomicSoftTabs(),
|
||||
tabLength: @getTabLength(),
|
||||
atomicSoftTabs: params.atomicSoftTabs ? true,
|
||||
tabLength: tabLength,
|
||||
ratioForCharacter: @ratioForCharacter.bind(this),
|
||||
isWrapBoundary: isWrapBoundary,
|
||||
foldCharacter: ZERO_WIDTH_NBSP,
|
||||
softWrapHangingIndent: @getSoftWrapHangingIndentLength()
|
||||
})
|
||||
softWrapHangingIndent: params.softWrapHangingIndentLength ? 0
|
||||
}
|
||||
|
||||
if @displayLayer?
|
||||
@displayLayer.reset(displayLayerParams)
|
||||
else
|
||||
@displayLayer = @buffer.addDisplayLayer(displayLayerParams)
|
||||
|
||||
@displayLayer.setTextDecorationLayer(@tokenizedBuffer)
|
||||
@defaultMarkerLayer = @displayLayer.addMarkerLayer()
|
||||
@selectionsMarkerLayer ?= @addMarkerLayer(maintainHistory: true, persistent: true)
|
||||
@@ -229,8 +236,7 @@ class TextEditor extends Model
|
||||
@softTabs = value
|
||||
|
||||
when 'atomicSoftTabs'
|
||||
if value isnt @atomicSoftTabs
|
||||
@atomicSoftTabs = value
|
||||
if value isnt @displayLayer.atomicSoftTabs
|
||||
displayLayerParams.atomicSoftTabs = value
|
||||
|
||||
when 'tabLength'
|
||||
@@ -245,8 +251,7 @@ class TextEditor extends Model
|
||||
@emitter.emit 'did-change-soft-wrapped', @isSoftWrapped()
|
||||
|
||||
when 'softWrapHangingIndentLength'
|
||||
if value isnt @softWrapHangingIndentLength
|
||||
@softWrapHangingIndentLength = value
|
||||
if value isnt @displayLayer.softWrapHangingIndent
|
||||
displayLayerParams.softWrapHangingIndent = value
|
||||
|
||||
when 'softWrapAtPreferredLineLength'
|
||||
@@ -351,11 +356,12 @@ class TextEditor extends Model
|
||||
firstVisibleScreenRow: @getFirstVisibleScreenRow()
|
||||
firstVisibleScreenColumn: @getFirstVisibleScreenColumn()
|
||||
|
||||
@id, @softTabs, @atomicSoftTabs, @tabLength, @softWrapped,
|
||||
@softWrapHangingIndentLength, @softWrapAtPreferredLineLength,
|
||||
@preferredLineLength, @mini, @editorWidthInChars, @width, @largeFileMode,
|
||||
@registered, @invisibles, @showInvisibles, @showIndentGuide, @autoHeight,
|
||||
@autoWidth
|
||||
atomicSoftTabs: @displayLayer.atomicSoftTabs
|
||||
softWrapHangingIndentLength: @displayLayer.softWrapHangingIndent
|
||||
|
||||
@id, @softTabs, @softWrapped, @softWrapAtPreferredLineLength,
|
||||
@preferredLineLength, @mini, @editorWidthInChars, @width, @largeFileMode,
|
||||
@registered, @invisibles, @showInvisibles, @showIndentGuide, @autoHeight, @autoWidth
|
||||
}
|
||||
|
||||
subscribeToBuffer: ->
|
||||
@@ -694,8 +700,9 @@ class TextEditor extends Model
|
||||
selectionsMarkerLayer = displayLayer.getMarkerLayer(@buffer.getMarkerLayer(@selectionsMarkerLayer.id).copy().id)
|
||||
softTabs = @getSoftTabs()
|
||||
new TextEditor({
|
||||
@buffer, selectionsMarkerLayer, @tabLength, softTabs,
|
||||
@buffer, selectionsMarkerLayer, softTabs,
|
||||
suppressCursorCreation: true,
|
||||
tabLength: @tokenizedBuffer.getTabLength(),
|
||||
@firstVisibleScreenRow, @firstVisibleScreenColumn,
|
||||
@clipboard, @assert, displayLayer, grammar: @getGrammar()
|
||||
})
|
||||
@@ -2817,7 +2824,7 @@ class TextEditor extends Model
|
||||
setSoftTabs: (@softTabs) -> @update({softTabs})
|
||||
|
||||
# Returns a {Boolean} indicating whether atomic soft tabs are enabled for this editor.
|
||||
hasAtomicSoftTabs: -> @atomicSoftTabs
|
||||
hasAtomicSoftTabs: -> @displayLayer.atomicSoftTabs
|
||||
|
||||
# Essential: Toggle soft tabs for this editor
|
||||
toggleSoftTabs: -> @setSoftTabs(not @getSoftTabs())
|
||||
@@ -2844,7 +2851,7 @@ class TextEditor extends Model
|
||||
|
||||
doesShowIndentGuide: -> @showIndentGuide and not @mini
|
||||
|
||||
getSoftWrapHangingIndentLength: -> @softWrapHangingIndentLength
|
||||
getSoftWrapHangingIndentLength: -> @displayLayer.softWrapHangingIndent
|
||||
|
||||
# Extended: Determine if the buffer uses hard or soft tabs.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user