Skip to content

Commit 25663fc

Browse files
kylebarronpfitzseb
authored andcommitted
Support nested block comments (#155)
* Support nested block comments
1 parent 40cd93f commit 25663fc

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed

grammars/julia.cson

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,19 @@ repository:
8989
}
9090
]
9191
comment:
92+
patterns: [
93+
{include: '#comment_block'}
94+
{
95+
begin: "#"
96+
beginCaptures:
97+
"0":
98+
name: "punctuation.definition.comment.julia"
99+
end: "\\n"
100+
# match: "(?<!\\$)(#)(?!\\{).*$\\n?"
101+
name: "comment.line.number-sign.julia"
102+
}
103+
]
104+
comment_block:
92105
patterns: [
93106
{
94107
begin: "#="
@@ -100,15 +113,9 @@ repository:
100113
"0":
101114
name: "punctuation.definition.comment.end.julia"
102115
name: "comment.block.number-sign-equals.julia"
103-
}
104-
{
105-
begin: "#"
106-
beginCaptures:
107-
"0":
108-
name: "punctuation.definition.comment.julia"
109-
end: "\\n"
110-
# match: "(?<!\\$)(#)(?!\\{).*$\\n?"
111-
name: "comment.line.number-sign.julia"
116+
patterns: [
117+
{include: '#comment_block'}
118+
]
112119
}
113120
]
114121
function_call:

spec/julia-spec.coffee

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,16 @@ describe "Julia grammar", ->
376376
expect(tokens[0]).toEqual value: '#', scopes: ["source.julia", "comment.line.number-sign.julia", "punctuation.definition.comment.julia"]
377377
expect(tokens[1]).toEqual value: ' This is a comment', scopes: ["source.julia", "comment.line.number-sign.julia"]
378378

379+
it "tokenizes block comments", ->
380+
{tokens} = grammar.tokenizeLine('#= begin #= begin end =# end =#')
381+
expect(tokens[0]).toEqual value: "#=", scopes: ["source.julia", "comment.block.number-sign-equals.julia", "punctuation.definition.comment.begin.julia"]
382+
expect(tokens[1]).toEqual value: " begin ", scopes: ["source.julia", "comment.block.number-sign-equals.julia"]
383+
expect(tokens[2]).toEqual value: "#=", scopes: ["source.julia", "comment.block.number-sign-equals.julia", "comment.block.number-sign-equals.julia", "punctuation.definition.comment.begin.julia"]
384+
expect(tokens[3]).toEqual value: " begin end ", scopes: ["source.julia", "comment.block.number-sign-equals.julia", "comment.block.number-sign-equals.julia"]
385+
expect(tokens[4]).toEqual value: "=#", scopes: ["source.julia", "comment.block.number-sign-equals.julia", "comment.block.number-sign-equals.julia", "punctuation.definition.comment.end.julia"]
386+
expect(tokens[5]).toEqual value: " end ", scopes: ["source.julia", "comment.block.number-sign-equals.julia"]
387+
expect(tokens[6]).toEqual value: "=#", scopes: ["source.julia", "comment.block.number-sign-equals.julia", "punctuation.definition.comment.end.julia"]
388+
379389
it "tokenizes the pair assignment operator", ->
380390
{tokens} = grammar.tokenizeLine('Dict(x => x for x in y)')
381391
expect(tokens[0]).toEqual value: 'Dict', scopes: ["source.julia", "support.function.julia"]

0 commit comments

Comments
 (0)