From 2c14bc7ebd5a77cced5e7d7ee66274441a9f383f Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Tue, 6 Nov 2012 10:20:27 -0800 Subject: [PATCH] Optimize breakOutAtomicTokens --- spec/app/tokenized-buffer-spec.coffee | 4 ++-- src/app/token.coffee | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/spec/app/tokenized-buffer-spec.coffee b/spec/app/tokenized-buffer-spec.coffee index ed4fc833f..513074bd3 100644 --- a/spec/app/tokenized-buffer-spec.coffee +++ b/spec/app/tokenized-buffer-spec.coffee @@ -82,7 +82,7 @@ describe "TokenizedBuffer", -> # previous line 3 should be combined with input to form line 1 expect(tokenizedBuffer.lineForScreenRow(1).tokens[0]).toEqual(value: 'foo', scopes: ['source.js']) - expect(tokenizedBuffer.lineForScreenRow(1).tokens[7]).toEqual(value: '=', scopes: ['source.js', 'keyword.operator.js']) + expect(tokenizedBuffer.lineForScreenRow(1).tokens[6]).toEqual(value: '=', scopes: ['source.js', 'keyword.operator.js']) # lines below deleted regions should be shifted upward expect(tokenizedBuffer.lineForScreenRow(2).tokens[2]).toEqual(value: 'while', scopes: ['source.js', 'keyword.control.js']) @@ -123,7 +123,7 @@ describe "TokenizedBuffer", -> # previous line 2 is joined with quux() on line 4 expect(tokenizedBuffer.lineForScreenRow(4).tokens[0]).toEqual(value: 'quux', scopes: ['source.js']) - expect(tokenizedBuffer.lineForScreenRow(4).tokens[5]).toEqual(value: 'if', scopes: ['source.js', 'keyword.control.js']) + expect(tokenizedBuffer.lineForScreenRow(4).tokens[4]).toEqual(value: 'if', scopes: ['source.js', 'keyword.control.js']) # previous line 3 is pushed down to become line 5 expect(tokenizedBuffer.lineForScreenRow(5).tokens[4]).toEqual(value: '=', scopes: ['source.js', 'keyword.operator.js']) diff --git a/src/app/token.coffee b/src/app/token.coffee index 749b195aa..2803c5b80 100644 --- a/src/app/token.coffee +++ b/src/app/token.coffee @@ -23,6 +23,11 @@ class Token [new Token(value: value1, scopes: @scopes), new Token(value: value2, scopes: @scopes)] breakOutAtomicTokens: (tabLength, breakOutLeadingWhitespace) -> + if breakOutLeadingWhitespace + return [this] unless /^[ ]|\t/.test(@value) + else + return [this] unless /\t/.test(@value) + outputTokens = [] regex = new RegExp("([ ]{#{tabLength}})|(\t)|([^\t]+)", "g")