mirror of
https://github.com/atom/atom.git
synced 2026-02-07 05:05:02 -05:00
Rename Renderer -> DisplayBuffer
The idea is that the DisplayBuffer serves a similar role to the Buffer, except that it's holding content in an arrangement that's optimized for display.
This commit is contained in:
@@ -9,7 +9,7 @@ ScreenLine = require 'screen-line'
|
||||
Token = require 'token'
|
||||
|
||||
module.exports =
|
||||
class Renderer
|
||||
class DisplayBuffer
|
||||
@idCounter: 1
|
||||
lineMap: null
|
||||
languageMode: null
|
||||
@@ -25,7 +25,7 @@ class Renderer
|
||||
@foldsById = {}
|
||||
@buildLineMap()
|
||||
@languageMode.on 'change', (e) => @lastLanguageModeChangeEvent = e
|
||||
@buffer.on "change.renderer#{@id}", (e) => @handleBufferChange(e)
|
||||
@buffer.on "change.displayBuffer#{@id}", (e) => @handleBufferChange(e)
|
||||
|
||||
buildLineMap: ->
|
||||
@lineMap = new LineMap
|
||||
@@ -252,9 +252,9 @@ class Renderer
|
||||
|
||||
destroy: ->
|
||||
@languageMode.destroy()
|
||||
@buffer.off ".renderer#{@id}"
|
||||
@buffer.off ".displayBuffer#{@id}"
|
||||
|
||||
logLines: (start, end) ->
|
||||
@lineMap.logLines(start, end)
|
||||
|
||||
_.extend Renderer.prototype, EventEmitter
|
||||
_.extend DisplayBuffer.prototype, EventEmitter
|
||||
@@ -1,6 +1,6 @@
|
||||
Point = require 'point'
|
||||
Buffer = require 'buffer'
|
||||
Renderer = require 'renderer'
|
||||
DisplayBuffer = require 'display-buffer'
|
||||
Cursor = require 'cursor'
|
||||
Selection = require 'selection'
|
||||
EventEmitter = require 'event-emitter'
|
||||
@@ -25,7 +25,7 @@ class EditSession
|
||||
|
||||
scrollTop: 0
|
||||
scrollLeft: 0
|
||||
renderer: null
|
||||
displayBuffer: null
|
||||
cursors: null
|
||||
selections: null
|
||||
autoIndent: true
|
||||
@@ -34,8 +34,8 @@ class EditSession
|
||||
constructor: ({@buffer, @tabText, @autoIndent, @softTabs, @softWrapColumn}) ->
|
||||
@id = @constructor.idCounter++
|
||||
@softTabs ?= true
|
||||
@renderer = new Renderer(@buffer, { @softWrapColumn, @tabText })
|
||||
@languageMode = @renderer.languageMode
|
||||
@displayBuffer = new DisplayBuffer(@buffer, { @softWrapColumn, @tabText })
|
||||
@languageMode = @displayBuffer.languageMode
|
||||
@cursors = []
|
||||
@selections = []
|
||||
@addCursorAtScreenPosition([0, 0])
|
||||
@@ -44,14 +44,14 @@ class EditSession
|
||||
for selection in @getSelections()
|
||||
selection.handleBufferChange(e)
|
||||
|
||||
@renderer.on "change.edit-session-#{@id}", (e) =>
|
||||
@displayBuffer.on "change.edit-session-#{@id}", (e) =>
|
||||
@trigger 'screen-lines-change', e
|
||||
@moveCursors (cursor) -> cursor.refreshScreenPosition() unless e.bufferChanged
|
||||
|
||||
destroy: ->
|
||||
@buffer.off ".edit-session-#{@id}"
|
||||
@renderer.off ".edit-session-#{@id}"
|
||||
@renderer.destroy()
|
||||
@displayBuffer.off ".edit-session-#{@id}"
|
||||
@displayBuffer.destroy()
|
||||
|
||||
serialize: ->
|
||||
buffer: @buffer.serialize()
|
||||
@@ -72,7 +72,7 @@ class EditSession
|
||||
setScrollLeft: (@scrollLeft) ->
|
||||
getScrollLeft: -> @scrollLeft
|
||||
|
||||
setSoftWrapColumn: (@softWrapColumn) -> @renderer.setSoftWrapColumn(@softWrapColumn)
|
||||
setSoftWrapColumn: (@softWrapColumn) -> @displayBuffer.setSoftWrapColumn(@softWrapColumn)
|
||||
setAutoIndent: (@autoIndent) ->
|
||||
setSoftTabs: (@softTabs) ->
|
||||
|
||||
@@ -91,19 +91,19 @@ class EditSession
|
||||
scanInRange: (args...) -> @buffer.scanInRange(args...)
|
||||
backwardsScanInRange: (args...) -> @buffer.backwardsScanInRange(args...)
|
||||
|
||||
screenPositionForBufferPosition: (bufferPosition, options) -> @renderer.screenPositionForBufferPosition(bufferPosition, options)
|
||||
bufferPositionForScreenPosition: (screenPosition, options) -> @renderer.bufferPositionForScreenPosition(screenPosition, options)
|
||||
screenRangeForBufferRange: (range) -> @renderer.screenRangeForBufferRange(range)
|
||||
bufferRangeForScreenRange: (range) -> @renderer.bufferRangeForScreenRange(range)
|
||||
clipScreenPosition: (screenPosition, options) -> @renderer.clipScreenPosition(screenPosition, options)
|
||||
lineForScreenRow: (row) -> @renderer.lineForRow(row)
|
||||
linesForScreenRows: (start, end) -> @renderer.linesForRows(start, end)
|
||||
stateForScreenRow: (screenRow) -> @renderer.stateForScreenRow(screenRow)
|
||||
screenLineCount: -> @renderer.lineCount()
|
||||
maxScreenLineLength: -> @renderer.maxLineLength()
|
||||
getLastScreenRow: -> @renderer.getLastRow()
|
||||
bufferRowsForScreenRows: (startRow, endRow) -> @renderer.bufferRowsForScreenRows(startRow, endRow)
|
||||
logScreenLines: (start, end) -> @renderer.logLines(start, end)
|
||||
screenPositionForBufferPosition: (bufferPosition, options) -> @displayBuffer.screenPositionForBufferPosition(bufferPosition, options)
|
||||
bufferPositionForScreenPosition: (screenPosition, options) -> @displayBuffer.bufferPositionForScreenPosition(screenPosition, options)
|
||||
screenRangeForBufferRange: (range) -> @displayBuffer.screenRangeForBufferRange(range)
|
||||
bufferRangeForScreenRange: (range) -> @displayBuffer.bufferRangeForScreenRange(range)
|
||||
clipScreenPosition: (screenPosition, options) -> @displayBuffer.clipScreenPosition(screenPosition, options)
|
||||
lineForScreenRow: (row) -> @displayBuffer.lineForRow(row)
|
||||
linesForScreenRows: (start, end) -> @displayBuffer.linesForRows(start, end)
|
||||
stateForScreenRow: (screenRow) -> @displayBuffer.stateForScreenRow(screenRow)
|
||||
screenLineCount: -> @displayBuffer.lineCount()
|
||||
maxScreenLineLength: -> @displayBuffer.maxLineLength()
|
||||
getLastScreenRow: -> @displayBuffer.getLastRow()
|
||||
bufferRowsForScreenRows: (startRow, endRow) -> @displayBuffer.bufferRowsForScreenRows(startRow, endRow)
|
||||
logScreenLines: (start, end) -> @displayBuffer.logLines(start, end)
|
||||
|
||||
insertText: (text) ->
|
||||
@mutateSelectedText (selection) -> selection.insertText(text)
|
||||
@@ -178,26 +178,26 @@ class EditSession
|
||||
selection.fold() for selection in @getSelections()
|
||||
|
||||
foldAll: ->
|
||||
@renderer.foldAll()
|
||||
@displayBuffer.foldAll()
|
||||
|
||||
toggleFold: ->
|
||||
bufferRow = @bufferPositionForScreenPosition(@getCursorScreenPosition()).row
|
||||
@toggleFoldAtBufferRow(bufferRow)
|
||||
|
||||
toggleFoldAtBufferRow: (bufferRow) ->
|
||||
@renderer.toggleFoldAtBufferRow(bufferRow)
|
||||
@displayBuffer.toggleFoldAtBufferRow(bufferRow)
|
||||
|
||||
createFold: (startRow, endRow) ->
|
||||
@renderer.createFold(startRow, endRow)
|
||||
@displayBuffer.createFold(startRow, endRow)
|
||||
|
||||
destroyFoldsContainingBufferRow: (bufferRow) ->
|
||||
@renderer.destroyFoldsContainingBufferRow(bufferRow)
|
||||
@displayBuffer.destroyFoldsContainingBufferRow(bufferRow)
|
||||
|
||||
unfoldCurrentRow: (row) ->
|
||||
@renderer.largestFoldForBufferRow(@getLastCursor().getCurrentBufferRow())?.destroy()
|
||||
@displayBuffer.largestFoldForBufferRow(@getLastCursor().getCurrentBufferRow())?.destroy()
|
||||
|
||||
destroyFold: (foldId) ->
|
||||
fold = @renderer.foldsById[foldId]
|
||||
fold = @displayBuffer.foldsById[foldId]
|
||||
fold.destroy()
|
||||
@setCursorBufferPosition([fold.startRow, 0])
|
||||
|
||||
|
||||
@@ -569,7 +569,7 @@ class Editor extends View
|
||||
@setScrollPositionFromActiveEditSession()
|
||||
|
||||
@renderLines()
|
||||
@activeEditSession.on 'screen-lines-change', (e) => @handleRendererChange(e)
|
||||
@activeEditSession.on 'screen-lines-change', (e) => @handleDisplayBufferChange(e)
|
||||
|
||||
getCursorView: (index) ->
|
||||
index ?= @cursorViews.length - 1
|
||||
@@ -690,7 +690,7 @@ class Editor extends View
|
||||
getLastVisibleScreenRow: ->
|
||||
Math.ceil((@scrollTop() + @scrollView.height()) / @lineHeight) - 1
|
||||
|
||||
handleRendererChange: (e) ->
|
||||
handleDisplayBufferChange: (e) ->
|
||||
oldScreenRange = e.oldRange
|
||||
newScreenRange = e.newRange
|
||||
|
||||
|
||||
@@ -5,15 +5,15 @@ module.exports =
|
||||
class Fold
|
||||
@idCounter: 1
|
||||
|
||||
renderer: null
|
||||
displayBuffer: null
|
||||
startRow: null
|
||||
endRow: null
|
||||
|
||||
constructor: (@renderer, @startRow, @endRow) ->
|
||||
constructor: (@displayBuffer, @startRow, @endRow) ->
|
||||
@id = @constructor.idCounter++
|
||||
|
||||
destroy: ->
|
||||
@renderer.destroyFold(this)
|
||||
@displayBuffer.destroyFold(this)
|
||||
|
||||
inspect: ->
|
||||
"Fold(#{@startRow}, #{@endRow})"
|
||||
@@ -28,15 +28,15 @@ class Fold
|
||||
oldStartRow = @startRow
|
||||
|
||||
if @isContainedByRange(event.oldRange)
|
||||
@renderer.unregisterFold(@startRow, this)
|
||||
@displayBuffer.unregisterFold(@startRow, this)
|
||||
return
|
||||
|
||||
@updateStartRow(event)
|
||||
@updateEndRow(event)
|
||||
|
||||
if @startRow != oldStartRow
|
||||
@renderer.unregisterFold(oldStartRow, this)
|
||||
@renderer.registerFold(this)
|
||||
@displayBuffer.unregisterFold(oldStartRow, this)
|
||||
@displayBuffer.registerFold(this)
|
||||
|
||||
isContainedByRange: (range) ->
|
||||
range.start.row <= @startRow and @endRow <= range.end.row
|
||||
|
||||
Reference in New Issue
Block a user