From 6563b9b464bc998b14d0cd862feecc950cb87440 Mon Sep 17 00:00:00 2001 From: Wliu Date: Fri, 27 Jan 2017 13:44:47 -0500 Subject: [PATCH 1/2] Simplify single-line comment handling Fixes #485 --- grammars/javascript.cson | 19 +++++-------------- spec/javascript-spec.coffee | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/grammars/javascript.cson b/grammars/javascript.cson index 2663fdeb..8c31be89 100644 --- a/grammars/javascript.cson +++ b/grammars/javascript.cson @@ -2269,21 +2269,12 @@ 'name': 'comment.block.js' } { - 'begin': '(^[ \\t]+)?(?=//)' + 'begin': '//' 'beginCaptures': - '1': - 'name': 'punctuation.whitespace.comment.leading.js' - 'end': '(?!\\G)' - 'patterns': [ - { - 'begin': '//' - 'beginCaptures': - '0': - 'name': 'punctuation.definition.comment.js' - 'end': '\\n' - 'name': 'comment.line.double-slash.js' - } - ] + '0': + 'name': 'punctuation.definition.comment.js' + 'end': '$' + 'name': 'comment.line.double-slash.js' } ] 'switch_statement': diff --git a/spec/javascript-spec.coffee b/spec/javascript-spec.coffee index bd046fba..bf7fe994 100644 --- a/spec/javascript-spec.coffee +++ b/spec/javascript-spec.coffee @@ -833,6 +833,14 @@ describe "JavaScript grammar", -> expect(lines[2][2]).toEqual value: ' comment ', scopes: ['source.js', 'meta.import.js', 'comment.block.js'] expect(lines[2][3]).toEqual value: '*/', scopes: ['source.js', 'meta.import.js', 'comment.block.js', 'punctuation.definition.comment.js'] + # https://github.com/atom/language-javascript/issues/485 + lines = grammar.tokenizeLines ''' + import a from 'a'; // + import b from 'b'; + ''' + expect(lines[0][11]).toEqual value: '//', scopes: ['source.js', 'comment.line.double-slash.js', 'punctuation.definition.comment.js'] + expect(lines[1][0]).toEqual value: 'import', scopes: ['source.js', 'meta.import.js', 'keyword.control.js'] + describe "ES6 export", -> it "tokenizes named export", -> {tokens} = grammar.tokenizeLine('export var x = 0;') @@ -1715,6 +1723,14 @@ describe "JavaScript grammar", -> expect(tokens[15]).toEqual value: ')', scopes: ['source.js', 'meta.method-call.js', 'meta.arguments.js', 'punctuation.definition.arguments.end.bracket.round.js'] describe "comments", -> + it "tokenizes // comments", -> + {tokens} = grammar.tokenizeLine '//' + expect(tokens[0]).toEqual value: '//', scopes: ['source.js', 'comment.line.double-slash.js', 'punctuation.definition.comment.js'] + + {tokens} = grammar.tokenizeLine '// stuff' + expect(tokens[0]).toEqual value: '//', scopes: ['source.js', 'comment.line.double-slash.js', 'punctuation.definition.comment.js'] + expect(tokens[1]).toEqual value: ' stuff', scopes: ['source.js', 'comment.line.double-slash.js'] + it "tokenizes /* */ comments", -> {tokens} = grammar.tokenizeLine('/**/') expect(tokens[0]).toEqual value: '/*', scopes: ['source.js', 'comment.block.js', 'punctuation.definition.comment.js'] From a87481e741eaef0170181cf8f531ce04a35a92f6 Mon Sep 17 00:00:00 2001 From: Wliu Date: Fri, 27 Jan 2017 16:26:27 -0500 Subject: [PATCH 2/2] Fix broken spec --- spec/javascript-spec.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/javascript-spec.coffee b/spec/javascript-spec.coffee index bf7fe994..a44a08e4 100644 --- a/spec/javascript-spec.coffee +++ b/spec/javascript-spec.coffee @@ -835,10 +835,10 @@ describe "JavaScript grammar", -> # https://github.com/atom/language-javascript/issues/485 lines = grammar.tokenizeLines ''' - import a from 'a'; // - import b from 'b'; + import a from 'a' // + import b from 'b' ''' - expect(lines[0][11]).toEqual value: '//', scopes: ['source.js', 'comment.line.double-slash.js', 'punctuation.definition.comment.js'] + expect(lines[0][10]).toEqual value: '//', scopes: ['source.js', 'meta.import.js', 'comment.line.double-slash.js', 'punctuation.definition.comment.js'] expect(lines[1][0]).toEqual value: 'import', scopes: ['source.js', 'meta.import.js', 'keyword.control.js'] describe "ES6 export", ->