Add Editor::onDidChangeSoftWrapped

This commit is contained in:
Nathan Sobo
2014-09-04 08:55:24 -06:00
committed by Ben Ogle
parent 965afc2c37
commit 3e260eea56
2 changed files with 19 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ _ = require 'underscore-plus'
guid = require 'guid'
Serializable = require 'serializable'
{Model} = require 'theorist'
{Emitter} = require 'event-kit'
{Point, Range} = require 'text-buffer'
TokenizedBuffer = require './tokenized-buffer'
RowMap = require './row-map'
@@ -40,6 +41,9 @@ class DisplayBuffer extends Model
constructor: ({tabLength, @editorWidthInChars, @tokenizedBuffer, buffer, @invisibles}={}) ->
super
@emitter = new Emitter
@softWrapped ?= atom.config.get('editor.softWrapped') ? false
@tokenizedBuffer ?= new TokenizedBuffer({tabLength, buffer, @invisibles})
@buffer = @tokenizedBuffer.buffer
@@ -58,16 +62,14 @@ class DisplayBuffer extends Model
@subscribe @buffer.onDidUpdateMarkers @handleBufferMarkersUpdated
@subscribe @buffer.onDidCreateMarker @handleBufferMarkerCreated
@subscribe @$softWrapped, (softWrapped) =>
@emit 'soft-wrap-changed', softWrapped
@updateWrappedScreenLines()
@subscribe atom.config.observe 'editor.preferredLineLength', callNow: false, =>
@updateWrappedScreenLines() if @isSoftWrapped() and atom.config.get('editor.softWrapAtPreferredLineLength')
@subscribe atom.config.observe 'editor.softWrapAtPreferredLineLength', callNow: false, =>
@updateWrappedScreenLines() if @isSoftWrapped()
@updateAllScreenLines()
serializeParams: ->
id: @id
softWrapped: @isSoftWrapped()
@@ -96,6 +98,9 @@ class DisplayBuffer extends Model
@rowMap = new RowMap
@updateScreenLines(0, @buffer.getLineCount(), null, suppressChangeEvent: true)
onDidChangeSoftWrapped: (callback) ->
@emitter.on 'did-change-soft-wrapped', callback
emitChanged: (eventProperties, refreshMarkers=true) ->
if refreshMarkers
@pauseMarkerObservers()
@@ -344,7 +349,13 @@ class DisplayBuffer extends Model
setInvisibles: (@invisibles) ->
@tokenizedBuffer.setInvisibles(@invisibles)
setSoftWrapped: (@softWrapped) -> @softWrapped
setSoftWrapped: (softWrapped) ->
if softWrapped isnt @softWrapped
@softWrapped = softWrapped
@updateWrappedScreenLines()
@emit 'soft-wrap-changed', @softWrapped
@emitter.emit 'did-change-soft-wrapped', @softWrapped
@softWrapped
isSoftWrapped: -> @softWrapped

View File

@@ -300,6 +300,9 @@ class Editor extends Model
onDidChangeModified: (callback) ->
@getBuffer().onDidChangeModified(callback)
onDidChangeSoftWrapped: (callback) ->
@displayBuffer.onDidChangeSoftWrapped(callback)
# Retrieves the current {TextBuffer}.
getBuffer: -> @buffer