Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit f579460

Browse files
committed
Give priority to strings in functions
Fixes #175
1 parent bc65a67 commit f579460

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

grammars/javascript.cson

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,9 @@
626626
{
627627
'include': '#function-params'
628628
}
629+
{
630+
'include': '#strings'
631+
}
629632
]
630633

631634
'end': '(\\))'

spec/javascript-spec.coffee

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ describe "Javascript grammar", ->
304304
expect(tokens[0]).toEqual value: 'yield', scopes: ['source.js', 'meta.control.yield.js', 'keyword.control.js']
305305
expect(tokens[2]).toEqual value: '*', scopes: ['source.js', 'meta.control.yield.js', 'storage.modifier.js']
306306

307-
it "doesn't confuse strings and functions (regression)", ->
307+
it "doesn't confuse strings and functions", ->
308308
{tokens} = grammar.tokenizeLine("'a'.b(':c(d)')")
309309

310310
expect(tokens[0]).toEqual value: "'", scopes: ['source.js', 'string.quoted.single.js', 'punctuation.definition.string.begin.js']
@@ -318,6 +318,15 @@ describe "Javascript grammar", ->
318318
expect(tokens[8]).toEqual value: "'", scopes: ['source.js', 'string.quoted.single.js', 'punctuation.definition.string.end.js']
319319
expect(tokens[9]).toEqual value: ")", scopes: ['source.js', 'meta.brace.round.js']
320320

321+
{tokens} = grammar.tokenizeLine('write("){");')
322+
expect(tokens[0]).toEqual value: 'write', scopes: ['source.js', 'meta.method.js', 'entity.name.function.js']
323+
expect(tokens[1]).toEqual value: '(', scopes: ['source.js', 'meta.method.js', 'punctuation.definition.parameters.begin.js']
324+
expect(tokens[2]).toEqual value: '"', scopes: ['source.js', 'meta.method.js', 'string.quoted.double.js', 'punctuation.definition.string.begin.js']
325+
expect(tokens[3]).toEqual value: '){', scopes: ['source.js', 'meta.method.js', 'string.quoted.double.js']
326+
expect(tokens[4]).toEqual value: '"', scopes: ['source.js', 'meta.method.js', 'string.quoted.double.js', 'punctuation.definition.string.end.js']
327+
expect(tokens[5]).toEqual value: ')', scopes: ['source.js', 'meta.method.js', 'punctuation.definition.parameters.end.js']
328+
expect(tokens[6]).toEqual value: ';', scopes: ['source.js', 'punctuation.terminator.statement.js']
329+
321330
describe "default: in a switch statement", ->
322331
it "tokenizes it as a keyword", ->
323332
{tokens} = grammar.tokenizeLine('default: ')

0 commit comments

Comments
 (0)