Skip to content

Commit 5012f07

Browse files
committed
Avoid scoping leading lists with .empty-lines
Partially related to #11.
1 parent 99759d4 commit 5012f07

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

grammars/muse.cson

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ patterns: [{
55
# Skip blank lines
66
name: "meta.blank-lines.muse"
77
begin: "\\A\\s*$"
8-
end: "^(?=\\S)"
8+
end: "(?=^\\s*\\S)"
99
},{
1010
# Prologue (directive lines)
1111
name: "meta.prologue.muse"
@@ -15,7 +15,7 @@ patterns: [{
1515
},{
1616
# Remainder of document
1717
name: "meta.document.muse"
18-
begin: "^(?=[^\\s#]|\\s+#)"
18+
begin: "^(?=[^\\s#]|\\s+\\S)"
1919
end: "(?=A)B"
2020
patterns: [include: "#main"]
2121
}]
@@ -306,7 +306,7 @@ repository:
306306
list:
307307
name: "markup.list.muse"
308308
begin: "^(\\s+)(?=-|(?:\\d+|[a-z]+|[A-Z]+)\\.)"
309-
end: "^(?!\\1)(?!\\s*$)"
309+
end: "(?=^(?!\\1)(?!\\s*$))"
310310
beginCaptures:
311311
1: name: "punctuation.whitespace.leading.muse"
312312
patterns: [{

spec/muse-spec.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,18 @@ describe("Muse grammar", () => {
7575
expect(tokens[5]).to.eql({value: "**", scopes: [...baseScopes, "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"]});
7676
expect(tokens[6]).to.eql({value: " qul", scopes: [...baseScopes]});
7777
});
78+
79+
it("stops skipping blank-lines when encountering a list", () => {
80+
const lines = muse.tokenizeLines("\n - list\n");
81+
const baseScopes = ["text.muse", "meta.document.muse", "markup.list.muse"];
82+
expect(lines[0][0]).to.eql({value: "", scopes: ["text.muse", "meta.blank-lines.muse"]});
83+
expect(lines[1][0]).to.eql({value: " ", scopes: [...baseScopes, "punctuation.whitespace.leading.muse"]});
84+
expect(lines[1][1]).to.eql({value: "-", scopes: [...baseScopes, "keyword.operator.list.unnumbered.marker.muse"]});
85+
expect(lines[1][2]).to.eql({value: " ", scopes: [...baseScopes]});
86+
expect(lines[1][3]).to.eql({value: "list", scopes: [...baseScopes]});
87+
expect(lines[1][4]).to.eql({value: "", scopes: [...baseScopes]});
88+
expect(lines[2][0]).to.eql({value: "", scopes: [...baseScopes]});
89+
});
7890
});
7991

8092
describe("Fixture highlighting", function(){

0 commit comments

Comments
 (0)