Editor no longer references Renderer directly

This commit is contained in:
Nathan Sobo
2012-06-13 20:34:13 -06:00
parent 81d2e88c8a
commit 5135f3e066
3 changed files with 43 additions and 55 deletions

View File

@@ -31,10 +31,10 @@ class EditSession
autoIndent: true
softTabs: true
constructor: ({@buffer, @tabText, @autoIndent, @softTabs, softWrapColumn}) ->
constructor: ({@buffer, @tabText, @autoIndent, @softTabs, @softWrapColumn}) ->
@id = @constructor.idCounter++
@softTabs ?= true
@renderer = new Renderer(@buffer, { softWrapColumn, @tabText })
@renderer = new Renderer(@buffer, { @softWrapColumn, @tabText })
@languageMode = @renderer.languageMode
@cursors = []
@selections = []
@@ -72,19 +72,10 @@ class EditSession
setScrollLeft: (@scrollLeft) ->
getScrollLeft: -> @scrollLeft
setSoftWrapColumn: (softWrapColumn) -> @renderer.setSoftWrapColumn(softWrapColumn)
setSoftWrapColumn: (@softWrapColumn) -> @renderer.setSoftWrapColumn(@softWrapColumn)
setAutoIndent: (@autoIndent) ->
setSoftTabs: (@softTabs) ->
screenPositionForBufferPosition: (bufferPosition, options) ->
@renderer.screenPositionForBufferPosition(bufferPosition, options)
bufferPositionForScreenPosition: (screenPosition, options) ->
@renderer.bufferPositionForScreenPosition(screenPosition, options)
clipScreenPosition: (screenPosition, options) ->
@renderer.clipScreenPosition(screenPosition, options)
clipBufferPosition: (bufferPosition, options) ->
{ row, column } = Point.fromObject(bufferPosition)
row = 0 if row < 0
@@ -94,21 +85,25 @@ class EditSession
new Point(row, column)
getEofBufferPosition: ->
@buffer.getEofPosition()
bufferRangeForBufferRow: (row) ->
@buffer.rangeForRow(row)
lineForBufferRow: (row) ->
@buffer.lineForRow(row)
scanInRange: (args...) ->
@buffer.scanInRange(args...)
backwardsScanInRange: (args...) ->
@buffer.backwardsScanInRange(args...)
getEofBufferPosition: -> @buffer.getEofPosition()
bufferRangeForBufferRow: (row) -> @buffer.rangeForRow(row)
lineForBufferRow: (row) -> @buffer.lineForRow(row)
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)
insertText: (text) ->
@mutateSelectedText (selection) -> selection.insertText(text)
@@ -186,8 +181,11 @@ class EditSession
@renderer.foldAll()
toggleFold: ->
row = @renderer.bufferPositionForScreenPosition(@getCursorScreenPosition()).row
@renderer.toggleFoldAtBufferRow(row)
bufferRow = @bufferPositionForScreenPosition(@getCursorScreenPosition()).row
@toggleFoldAtBufferRow(bufferRow)
toggleFoldAtBufferRow: (bufferRow) ->
@renderer.toggleFoldAtBufferRow(bufferRow)
createFold: (startRow, endRow) ->
@renderer.createFold(startRow, endRow)
@@ -222,12 +220,6 @@ class EditSession
fn(selection) for selection in selections
@buffer.endUndoBatch(@getSelectedBufferRanges())
lineForScreenRow: (row) ->
@renderer.lineForRow(row)
stateForScreenRow: (screenRow) ->
@renderer.stateForScreenRow(screenRow)
getCursors: -> new Array(@cursors...)
getCursor: (index=0) ->

View File

@@ -1,7 +1,6 @@
{View, $$} = require 'space-pen'
Buffer = require 'buffer'
Gutter = require 'gutter'
Renderer = require 'renderer'
Point = require 'point'
Range = require 'range'
EditSession = require 'edit-session'
@@ -41,7 +40,6 @@ class Editor extends View
cursorViews: null
selectionViews: null
buffer: null
renderer: null
autoIndent: true
lineCache: null
isFocused: false
@@ -219,17 +217,17 @@ class Editor extends View
softWrapColumn ?= @calcSoftWrapColumn()
@activeEditSession.setSoftWrapColumn(softWrapColumn) if softWrapColumn
linesForScreenRows: (start, end) -> @renderer.linesForRows(start, end)
screenLineCount: -> @renderer.lineCount()
maxScreenLineLength: -> @renderer.maxLineLength()
getLastScreenRow: -> @renderer.getLastRow()
clipScreenPosition: (screenPosition, options={}) -> @renderer.clipScreenPosition(screenPosition, options)
screenPositionForBufferPosition: (position, options) -> @renderer.screenPositionForBufferPosition(position, options)
bufferPositionForScreenPosition: (position, options) -> @renderer.bufferPositionForScreenPosition(position, options)
screenRangeForBufferRange: (range) -> @renderer.screenRangeForBufferRange(range)
bufferRangeForScreenRange: (range) -> @renderer.bufferRangeForScreenRange(range)
bufferRowsForScreenRows: (startRow, endRow) -> @renderer.bufferRowsForScreenRows(startRow, endRow)
stateForScreenRow: (row) -> @renderer.stateForScreenRow(row)
linesForScreenRows: (start, end) -> @activeEditSession.linesForScreenRows(start, end)
screenLineCount: -> @activeEditSession.screenLineCount()
maxScreenLineLength: -> @activeEditSession.maxScreenLineLength()
getLastScreenRow: -> @activeEditSession.getLastScreenRow()
clipScreenPosition: (screenPosition, options={}) -> @activeEditSession.clipScreenPosition(screenPosition, options)
screenPositionForBufferPosition: (position, options) -> @activeEditSession.screenPositionForBufferPosition(position, options)
bufferPositionForScreenPosition: (position, options) -> @activeEditSession.bufferPositionForScreenPosition(position, options)
screenRangeForBufferRange: (range) -> @activeEditSession.screenRangeForBufferRange(range)
bufferRangeForScreenRange: (range) -> @activeEditSession.bufferRangeForScreenRange(range)
bufferRowsForScreenRows: (startRow, endRow) -> @activeEditSession.bufferRowsForScreenRows(startRow, endRow)
stateForScreenRow: (row) -> @activeEditSession.stateForScreenRow(row)
setText: (text) -> @buffer.setText(text)
getText: -> @buffer.getText()
@@ -383,7 +381,6 @@ class Editor extends View
@buffer.on "path-change.editor#{@id}", => @trigger 'editor-path-change'
@trigger 'editor-path-change'
@renderer = @activeEditSession.renderer
@renderWhenAttached()
scrollTop: (scrollTop, options) ->
@@ -737,7 +734,7 @@ class Editor extends View
buildLineElements: (startRow, endRow) ->
charWidth = @charWidth
charHeight = @charHeight
lines = @renderer.linesForRows(startRow, endRow)
lines = @activeEditSession.linesForScreenRows(startRow, endRow)
activeEditSession = @activeEditSession
$$ ->
@@ -794,9 +791,8 @@ class Editor extends View
element = @lineCache[screenRow - @firstRenderedScreenRow]
$(element)
logLines: (start, end) ->
@renderer.logLines(start, end)
logScreenLines: (start, end) ->
@activeEditSession.logScreenLines(start, end)
toggleLineCommentsInSelection: ->
@activeEditSession.toggleLineCommentsInSelection()