From c0cbb596662c6dd2f2293e76db83c54685c733ef Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 12 Jul 2016 14:31:05 -0700 Subject: [PATCH] Don't use config in TokenizedBuffer --- spec/tokenized-buffer-spec.coffee | 52 ++++++++++++++++++++----------- src/text-editor.coffee | 8 ++--- src/tokenized-buffer.coffee | 22 ++----------- 3 files changed, 40 insertions(+), 42 deletions(-) diff --git a/spec/tokenized-buffer-spec.coffee b/spec/tokenized-buffer-spec.coffee index d11c93213..d7b66d3a6 100644 --- a/spec/tokenized-buffer-spec.coffee +++ b/spec/tokenized-buffer-spec.coffee @@ -34,7 +34,8 @@ describe "TokenizedBuffer", -> it "deserializes it searching among the buffers in the current project", -> tokenizedBufferA = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBufferB = TokenizedBuffer.deserialize( JSON.parse(JSON.stringify(tokenizedBufferA.serialize())), @@ -45,7 +46,8 @@ describe "TokenizedBuffer", -> it "does not serialize / deserialize the current grammar", -> tokenizedBufferA = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) autoSelectedGrammar = tokenizedBufferA.grammar @@ -63,7 +65,8 @@ describe "TokenizedBuffer", -> it "deserializes it searching among the buffers in the current project", -> tokenizedBufferA = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBufferB = TokenizedBuffer.deserialize( JSON.parse(JSON.stringify(tokenizedBufferA.serialize())), @@ -74,7 +77,8 @@ describe "TokenizedBuffer", -> it "deserializes the previously selected grammar as soon as it's added when not available in the grammar registry", -> tokenizedBufferA = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBufferA.setGrammar(atom.grammars.grammarForScopeName("source.js")) @@ -93,7 +97,8 @@ describe "TokenizedBuffer", -> it "deserializes the previously selected grammar on construction when available in the grammar registry", -> tokenizedBufferA = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBufferA.setGrammar(atom.grammars.grammarForScopeName("source.js")) @@ -108,7 +113,8 @@ describe "TokenizedBuffer", -> beforeEach -> buffer = atom.project.bufferForPathSync('sample.js') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) startTokenizing(tokenizedBuffer) @@ -122,7 +128,8 @@ describe "TokenizedBuffer", -> beforeEach -> buffer = atom.project.bufferForPathSync('sample.js') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) startTokenizing(tokenizedBuffer) tokenizedBuffer.onDidChange changeHandler = jasmine.createSpy('changeHandler') @@ -398,7 +405,8 @@ describe "TokenizedBuffer", -> runs -> buffer = atom.project.bufferForPathSync('sample-with-tabs.coffee') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) startTokenizing(tokenizedBuffer) @@ -474,7 +482,8 @@ describe "TokenizedBuffer", -> buffer = atom.project.bufferForPathSync() buffer.setText "
<%= User.find(2).full_name %>
" tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBuffer.setGrammar(atom.grammars.selectGrammar('test.erb')) fullyTokenize(tokenizedBuffer) @@ -498,7 +507,8 @@ describe "TokenizedBuffer", -> it "returns the correct token (regression)", -> buffer = atom.project.bufferForPathSync('sample.js') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) fullyTokenize(tokenizedBuffer) expect(tokenizedBuffer.tokenForPosition([1, 0]).scopes).toEqual ["source.js"] @@ -509,8 +519,8 @@ describe "TokenizedBuffer", -> beforeEach -> buffer = atom.project.bufferForPathSync('sample.js') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, - packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) fullyTokenize(tokenizedBuffer) @@ -531,7 +541,8 @@ describe "TokenizedBuffer", -> beforeEach -> buffer = atom.project.bufferForPathSync('sample.js') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) fullyTokenize(tokenizedBuffer) @@ -628,7 +639,8 @@ describe "TokenizedBuffer", -> buffer.insert [10, 0], " // multi-line\n // comment\n // block\n" buffer.insert [0, 0], "// multi-line\n// comment\n// block\n" tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) fullyTokenize(tokenizedBuffer) @@ -699,7 +711,8 @@ describe "TokenizedBuffer", -> buffer.setText('a\nb\nc') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizeCallback = jasmine.createSpy('onDidTokenize') tokenizedBuffer.onDidTokenize(tokenizeCallback) @@ -775,7 +788,8 @@ describe "TokenizedBuffer", -> it "iterates over the syntactic scope boundaries", -> buffer = new TextBuffer(text: "var foo = 1 /*\nhello*/var bar = 2\n") tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBuffer.setGrammar(atom.grammars.selectGrammar(".js")) fullyTokenize(tokenizedBuffer) @@ -830,7 +844,8 @@ describe "TokenizedBuffer", -> runs -> buffer = new TextBuffer(text: "# hello\n# world") tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBuffer.setGrammar(atom.grammars.selectGrammar(".coffee")) fullyTokenize(tokenizedBuffer) @@ -862,7 +877,8 @@ describe "TokenizedBuffer", -> buffer = new TextBuffer(text: 'start x\nend x\nx') tokenizedBuffer = new TokenizedBuffer({ - buffer, config: atom.config, grammarRegistry: atom.grammars, packageManager: atom.packages, assert: atom.assert + buffer, grammarRegistry: atom.grammars, packageManager: atom.packages, + assert: atom.assert, tabLength: 2, }) tokenizedBuffer.setGrammar(grammar) fullyTokenize(tokenizedBuffer) diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 67b7b256f..cc6860ef0 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -109,7 +109,6 @@ class TextEditor extends Model state.buffer = state.tokenizedBuffer.buffer state.displayLayer = state.buffer.getDisplayLayer(state.displayLayerId) ? state.buffer.addDisplayLayer() state.selectionsMarkerLayer = state.displayLayer.getMarkerLayer(state.selectionsMarkerLayerId) - state.config = atomEnvironment.config state.clipboard = atomEnvironment.clipboard state.grammarRegistry = atomEnvironment.grammars state.assert = atomEnvironment.assert.bind(atomEnvironment) @@ -125,12 +124,11 @@ class TextEditor extends Model { @softTabs, @firstVisibleScreenRow, @firstVisibleScreenColumn, initialLine, initialColumn, @tabLength, @softWrapped, @decorationManager, @selectionsMarkerLayer, @buffer, suppressCursorCreation, - @mini, @placeholderText, lineNumberGutterVisible, @largeFileMode, @config, @clipboard, @grammarRegistry, + @mini, @placeholderText, lineNumberGutterVisible, @largeFileMode, @clipboard, @grammarRegistry, @assert, grammar, @showInvisibles, @autoHeight, @scrollPastEnd, @editorWidthInChars, @tokenizedBuffer, @ignoreInvisibles, @displayLayer } = params - throw new Error("Must pass a config parameter when constructing TextEditors") unless @config? throw new Error("Must pass a clipboard parameter when constructing TextEditors") unless @clipboard? throw new Error("Must pass a grammarRegistry parameter when constructing TextEditors") unless @grammarRegistry? @@ -158,7 +156,7 @@ class TextEditor extends Model @buffer ?= new TextBuffer @tokenizedBuffer ?= new TokenizedBuffer({ - @tabLength, @buffer, @largeFileMode, @config, @grammarRegistry, @assert + @tabLength, @buffer, @largeFileMode, @grammarRegistry, @assert }) @displayLayer ?= @buffer.addDisplayLayer() @displayLayer.setTextDecorationLayer(@tokenizedBuffer) @@ -560,7 +558,7 @@ class TextEditor extends Model softTabs = @getSoftTabs() newEditor = new TextEditor({ @buffer, selectionsMarkerLayer, @tabLength, softTabs, - suppressCursorCreation: true, @config, + suppressCursorCreation: true, @firstVisibleScreenRow, @firstVisibleScreenColumn, @clipboard, @grammarRegistry, @assert, displayLayer }) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index ddc2b5646..79083a853 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -19,7 +19,6 @@ class TokenizedBuffer extends Model chunkSize: 50 invalidRows: null visible: false - configSettings: null changeCount: 0 @deserialize: (state, atomEnvironment) -> @@ -28,14 +27,13 @@ class TokenizedBuffer extends Model else # TODO: remove this fallback after everyone transitions to the latest version. state.buffer = atomEnvironment.project.bufferForPathSync(state.bufferPath) - state.config = atomEnvironment.config state.grammarRegistry = atomEnvironment.grammars state.assert = atomEnvironment.assert new this(state) constructor: (params) -> { - @buffer, @tabLength, @largeFileMode, @config, + @buffer, @tabLength, @largeFileMode, @grammarRegistry, @assert, grammarScopeName } = params @@ -116,16 +114,6 @@ class TokenizedBuffer extends Model @grammarUpdateDisposable = @grammar.onDidUpdate => @retokenizeLines() @disposables.add(@grammarUpdateDisposable) - @configSettings = {tabLength: @config.get('editor.tabLength', {scope: @rootScopeDescriptor})} - - if @configSubscriptions? - @configSubscriptions.dispose() - @disposables.remove(@configSubscriptions) - @configSubscriptions = new CompositeDisposable - @configSubscriptions.add @config.onDidChange 'editor.tabLength', {scope: @rootScopeDescriptor}, ({newValue}) => - @configSettings.tabLength = newValue - @disposables.add(@configSubscriptions) - @retokenizeLines() @emitter.emit 'did-change-grammar', grammar @@ -157,13 +145,9 @@ class TokenizedBuffer extends Model setVisible: (@visible) -> @tokenizeInBackground() if @visible - getTabLength: -> - @tabLength ? @configSettings.tabLength + getTabLength: -> @tabLength - setTabLength: (tabLength) -> - return if tabLength is @tabLength - - @tabLength = tabLength + setTabLength: (@tabLength) -> tokenizeInBackground: -> return if not @visible or @pendingChunk or not @isAlive()