From edd666b845a73ec87f28271d221ee7a23be252d8 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Sat, 3 Oct 2015 08:58:05 -0600 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20use=20atom.config=20global=20in?= =?UTF-8?q?=20DisplayBuffer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/display-buffer-spec.coffee | 12 ++++++------ src/display-buffer.coffee | 29 +++++++++++++++-------------- src/text-editor.coffee | 4 ++-- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 7ed97f0d0..2778876f7 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -7,7 +7,7 @@ describe "DisplayBuffer", -> tabLength = 2 buffer = atom.project.bufferForPathSync('sample.js') - displayBuffer = new DisplayBuffer({buffer, tabLength}) + displayBuffer = new DisplayBuffer({buffer, tabLength, config: atom.config}) changeHandler = jasmine.createSpy 'changeHandler' displayBuffer.onDidChange changeHandler @@ -49,7 +49,7 @@ describe "DisplayBuffer", -> it "updates the display buffer prior to invoking change handlers registered on the buffer", -> buffer.onDidChange -> expect(displayBuffer2.tokenizedLineForScreenRow(0).text).toBe "testing" - displayBuffer2 = new DisplayBuffer({buffer, tabLength}) + displayBuffer2 = new DisplayBuffer({buffer, tabLength, config: atom.config}) buffer.setText("testing") describe "soft wrapping", -> @@ -232,7 +232,7 @@ describe "DisplayBuffer", -> describe "when a newline is inserted, deleted, and re-inserted at the end of a wrapped line (regression)", -> it "correctly renders the original wrapped line", -> buffer = atom.project.buildBufferSync(null, '') - displayBuffer = new DisplayBuffer({buffer, tabLength, editorWidthInChars: 30}) + displayBuffer = new DisplayBuffer({buffer, tabLength, editorWidthInChars: 30, config: atom.config}) displayBuffer.setSoftWrapped(true) buffer.insert([0, 0], "the quick brown fox jumps over the lazy dog.") @@ -294,7 +294,7 @@ describe "DisplayBuffer", -> displayBuffer.destroy() buffer.release() buffer = atom.project.bufferForPathSync('two-hundred.txt') - displayBuffer = new DisplayBuffer({buffer, tabLength}) + displayBuffer = new DisplayBuffer({buffer, tabLength, config: atom.config}) displayBuffer.onDidChange changeHandler describe "when folds are created and destroyed", -> @@ -408,7 +408,7 @@ describe "DisplayBuffer", -> describe "when there is another display buffer pointing to the same buffer", -> it "does not consider folds to be nested inside of folds from the other display buffer", -> - otherDisplayBuffer = new DisplayBuffer({buffer, tabLength}) + otherDisplayBuffer = new DisplayBuffer({buffer, tabLength, config: atom.config}) otherDisplayBuffer.createFold(1, 5) displayBuffer.createFold(2, 4) @@ -1154,7 +1154,7 @@ describe "DisplayBuffer", -> describe 'when there are multiple DisplayBuffers for a buffer', -> describe 'when a marker is created', -> it 'the second display buffer will not emit a marker-created event when the marker has been deleted in the first marker-created event', -> - displayBuffer2 = new DisplayBuffer({buffer, tabLength}) + displayBuffer2 = new DisplayBuffer({buffer, tabLength, config: atom.config}) displayBuffer.onDidCreateMarker markerCreated1 = jasmine.createSpy().andCallFake (marker) -> marker.destroy() displayBuffer2.onDidCreateMarker markerCreated2 = jasmine.createSpy() diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 27d1b44cf..d0776d5ca 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -27,11 +27,12 @@ class DisplayBuffer extends Model height: null width: null - @deserialize: (state) -> + @deserialize: (state, atomEnvironment) -> state.tokenizedBuffer = TokenizedBuffer.deserialize(state.tokenizedBuffer) + state.config = atomEnvironment.config new this(state) - constructor: ({tabLength, @editorWidthInChars, @tokenizedBuffer, buffer, ignoreInvisibles, @largeFileMode}={}) -> + constructor: ({tabLength, @editorWidthInChars, @tokenizedBuffer, buffer, ignoreInvisibles, @largeFileMode, @config}={}) -> super @emitter = new Emitter @@ -62,29 +63,29 @@ class DisplayBuffer extends Model oldConfigSettings = @configSettings @configSettings = - scrollPastEnd: atom.config.get('editor.scrollPastEnd', scope: scopeDescriptor) - softWrap: atom.config.get('editor.softWrap', scope: scopeDescriptor) - softWrapAtPreferredLineLength: atom.config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor) - softWrapHangingIndent: atom.config.get('editor.softWrapHangingIndent', scope: scopeDescriptor) - preferredLineLength: atom.config.get('editor.preferredLineLength', scope: scopeDescriptor) + scrollPastEnd: @config.get('editor.scrollPastEnd', scope: scopeDescriptor) + softWrap: @config.get('editor.softWrap', scope: scopeDescriptor) + softWrapAtPreferredLineLength: @config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor) + softWrapHangingIndent: @config.get('editor.softWrapHangingIndent', scope: scopeDescriptor) + preferredLineLength: @config.get('editor.preferredLineLength', scope: scopeDescriptor) - subscriptions.add atom.config.onDidChange 'editor.softWrap', scope: scopeDescriptor, ({newValue}) => + subscriptions.add @config.onDidChange 'editor.softWrap', scope: scopeDescriptor, ({newValue}) => @configSettings.softWrap = newValue @updateWrappedScreenLines() - subscriptions.add atom.config.onDidChange 'editor.softWrapHangingIndent', scope: scopeDescriptor, ({newValue}) => + subscriptions.add @config.onDidChange 'editor.softWrapHangingIndent', scope: scopeDescriptor, ({newValue}) => @configSettings.softWrapHangingIndent = newValue @updateWrappedScreenLines() - subscriptions.add atom.config.onDidChange 'editor.softWrapAtPreferredLineLength', scope: scopeDescriptor, ({newValue}) => + subscriptions.add @config.onDidChange 'editor.softWrapAtPreferredLineLength', scope: scopeDescriptor, ({newValue}) => @configSettings.softWrapAtPreferredLineLength = newValue @updateWrappedScreenLines() if @isSoftWrapped() - subscriptions.add atom.config.onDidChange 'editor.preferredLineLength', scope: scopeDescriptor, ({newValue}) => + subscriptions.add @config.onDidChange 'editor.preferredLineLength', scope: scopeDescriptor, ({newValue}) => @configSettings.preferredLineLength = newValue - @updateWrappedScreenLines() if @isSoftWrapped() and atom.config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor) + @updateWrappedScreenLines() if @isSoftWrapped() and @config.get('editor.softWrapAtPreferredLineLength', scope: scopeDescriptor) - subscriptions.add atom.config.observe 'editor.scrollPastEnd', scope: scopeDescriptor, (value) => + subscriptions.add @config.observe 'editor.scrollPastEnd', scope: scopeDescriptor, (value) => @configSettings.scrollPastEnd = value @updateWrappedScreenLines() if oldConfigSettings? and not _.isEqual(oldConfigSettings, @configSettings) @@ -98,7 +99,7 @@ class DisplayBuffer extends Model largeFileMode: @largeFileMode copy: -> - newDisplayBuffer = new DisplayBuffer({@buffer, tabLength: @getTabLength(), @largeFileMode}) + newDisplayBuffer = new DisplayBuffer({@buffer, tabLength: @getTabLength(), @largeFileMode, @config}) for marker in @findMarkers(displayBufferId: @id) marker.copy(displayBufferId: newDisplayBuffer.id) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 5befc3ce9..ab3e79d40 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -66,7 +66,7 @@ class TextEditor extends Model @deserialize: (state, atomEnvironment) -> try - displayBuffer = DisplayBuffer.deserialize(state.displayBuffer) + displayBuffer = DisplayBuffer.deserialize(state.displayBuffer, atomEnvironment) catch error if error.syscall is 'read' return # Error reading the file, don't deserialize an editor for it @@ -103,7 +103,7 @@ class TextEditor extends Model @selections = [] buffer ?= new TextBuffer - @displayBuffer ?= new DisplayBuffer({buffer, tabLength, softWrapped, ignoreInvisibles: @mini, largeFileMode}) + @displayBuffer ?= new DisplayBuffer({buffer, tabLength, softWrapped, ignoreInvisibles: @mini, largeFileMode, @config}) @buffer = @displayBuffer.buffer for marker in @findMarkers(@getSelectionMarkerAttributes())