From 04bda33c102c64ecd36c6cbc146bc5f8450122a1 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 22 Sep 2015 09:43:36 -0600 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20use=20Serializable=20mixin=20in?= =?UTF-8?q?=20TextEditor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/text-editor-spec.coffee | 6 +++--- src/text-editor.coffee | 32 +++++++++++++++----------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index 402e04012..bef0c5948 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -31,7 +31,7 @@ describe "TextEditor", -> runs -> fs.mkdirSync(pathToOpen) - expect(editor1.testSerialization()).toBeUndefined() + expect(TextEditor.deserialize(editor1.serialize())).toBeUndefined() it "restores selections and folds based on markers in the buffer", -> editor.setSelectedBufferRange([[1, 2], [3, 4]]) @@ -39,7 +39,7 @@ describe "TextEditor", -> editor.foldBufferRow(4) expect(editor.isFoldedAtBufferRow(4)).toBeTruthy() - editor2 = editor.testSerialization() + editor2 = TextEditor.deserialize(editor.serialize()) expect(editor2.id).toBe editor.id expect(editor2.getBuffer().getPath()).toBe editor.getBuffer().getPath() @@ -52,7 +52,7 @@ describe "TextEditor", -> atom.config.set('editor.showInvisibles', true) previousInvisibles = editor.tokenizedLineForScreenRow(0).invisibles - editor2 = editor.testSerialization() + editor2 = TextEditor.deserialize(editor.serialize()) expect(previousInvisibles).toBeDefined() expect(editor2.displayBuffer.tokenizedLineForScreenRow(0).invisibles).toEqual previousInvisibles diff --git a/src/text-editor.coffee b/src/text-editor.coffee index aca76a4f7..8dce16439 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -1,6 +1,5 @@ _ = require 'underscore-plus' path = require 'path' -Serializable = require 'serializable' Grim = require 'grim' {CompositeDisposable, Emitter} = require 'event-kit' {Point, Range} = TextBuffer = require 'text-buffer' @@ -55,10 +54,8 @@ GutterContainer = require './gutter-container' # soft wraps and folds to ensure your code interacts with them correctly. module.exports = class TextEditor extends Model - Serializable.includeInto(this) atom.deserializers.add(this) - deserializing: false callDisplayBufferCreatedHook: false registerEditor: false buffer: null @@ -70,6 +67,19 @@ class TextEditor extends Model selectionFlashDuration: 500 gutterContainer: null + @deserialize: (state) -> + try + displayBuffer = DisplayBuffer.deserialize(state.displayBuffer) + catch error + if error.syscall is 'read' + return # Error reading the file, don't deserialize an editor for it + else + throw error + + state.displayBuffer = displayBuffer + state.registerEditor = true + new this(state) + constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, lineNumberGutterVisible, largeFileMode}={}) -> super @@ -113,26 +123,14 @@ class TextEditor extends Model atom.workspace?.editorAdded(this) if registerEditor - serializeParams: -> + serialize: -> + deserializer: 'TextEditor' id: @id softTabs: @softTabs scrollTop: @scrollTop scrollLeft: @scrollLeft displayBuffer: @displayBuffer.serialize() - deserializeParams: (params) -> - try - displayBuffer = DisplayBuffer.deserialize(params.displayBuffer) - catch error - if error.syscall is 'read' - return # Error reading the file, don't deserialize an editor for it - else - throw error - - params.displayBuffer = displayBuffer - params.registerEditor = true - params - subscribeToBuffer: -> @buffer.retain() @disposables.add @buffer.onDidChangePath =>