diff --git a/src/packages/gfm.tmbundle/Syntaxes/gfm.cson b/src/packages/gfm.tmbundle/Syntaxes/gfm.cson index 71756f91d..ad88e747f 100644 --- a/src/packages/gfm.tmbundle/Syntaxes/gfm.cson +++ b/src/packages/gfm.tmbundle/Syntaxes/gfm.cson @@ -9,20 +9,24 @@ ] 'patterns': [ { - 'match': '\\*\\*[^\\*]+\\*\\*' - 'name': 'markup.bold.gfm' + 'match': '(?:^|\\s)(\\*\\*[^\\*]+\\*\\*)' + 'captures': + '1': 'name': 'markup.bold.gfm' } { - 'match': '__[^_]+__' - 'name': 'markup.bold.gfm' + 'match': '(?:^|\\s)(__[^_]+__)' + 'captures': + '1': 'name': 'markup.bold.gfm' } { - 'match': '\\*[^\\*]+\\*' - 'name': 'markup.italic.gfm' + 'match': '(?:^|\\s)(\\*[^\\*]+\\*)' + 'captures': + '1': 'name': 'markup.italic.gfm' } { - 'match': '_[^_]+_' - 'name': 'markup.italic.gfm' + 'match': '(?:^|\\s)(_[^_]+_)' + 'captures': + '1': 'name': 'markup.italic.gfm' } { 'match': '^#{1,6}\\s+.+$' diff --git a/src/packages/gfm.tmbundle/spec/gfm-spec.coffee b/src/packages/gfm.tmbundle/spec/gfm-spec.coffee index 1ff79e62f..affdde95b 100644 --- a/src/packages/gfm.tmbundle/spec/gfm-spec.coffee +++ b/src/packages/gfm.tmbundle/spec/gfm-spec.coffee @@ -18,36 +18,52 @@ describe "GitHub Flavored Markdown grammar", -> expect(tokens[0]).toEqual value: "****", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is **bold** text") - expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: "**bold**", scopes: ["source.gfm", "markup.bold.gfm"] - expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] + expect(tokens[2]).toEqual value: "**bold**", scopes: ["source.gfm", "markup.bold.gfm"] + expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + + {tokens} = grammar.tokenizeLine("not**bold**") + expect(tokens[0]).toEqual value: "not**bold**", scopes: ["source.gfm"] it "tokenizes __bold__ text", -> {tokens} = grammar.tokenizeLine("____") expect(tokens[0]).toEqual value: "____", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is __bold__ text") - expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: "__bold__", scopes: ["source.gfm", "markup.bold.gfm"] - expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] + expect(tokens[2]).toEqual value: "__bold__", scopes: ["source.gfm", "markup.bold.gfm"] + expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + + {tokens} = grammar.tokenizeLine("not__bold__") + expect(tokens[0]).toEqual value: "not__bold__", scopes: ["source.gfm"] it "tokenizes *italic* text", -> {tokens} = grammar.tokenizeLine("**") expect(tokens[0]).toEqual value: "**", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is *italic* text") - expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: "*italic*", scopes: ["source.gfm", "markup.italic.gfm"] - expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] + expect(tokens[2]).toEqual value: "*italic*", scopes: ["source.gfm", "markup.italic.gfm"] + expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + + {tokens} = grammar.tokenizeLine("not*italic*") + expect(tokens[0]).toEqual value: "not*italic*", scopes: ["source.gfm"] it "tokenizes _italic_ text", -> {tokens} = grammar.tokenizeLine("__") expect(tokens[0]).toEqual value: "__", scopes: ["source.gfm"] {tokens} = grammar.tokenizeLine("this is _italic_ text") - expect(tokens[0]).toEqual value: "this is ", scopes: ["source.gfm"] - expect(tokens[1]).toEqual value: "_italic_", scopes: ["source.gfm", "markup.italic.gfm"] - expect(tokens[2]).toEqual value: " text", scopes: ["source.gfm"] + expect(tokens[0]).toEqual value: "this is", scopes: ["source.gfm"] + expect(tokens[1]).toEqual value: " ", scopes: ["source.gfm"] + expect(tokens[2]).toEqual value: "_italic_", scopes: ["source.gfm", "markup.italic.gfm"] + expect(tokens[3]).toEqual value: " text", scopes: ["source.gfm"] + + {tokens} = grammar.tokenizeLine("not_italic_") + expect(tokens[0]).toEqual value: "not_italic_", scopes: ["source.gfm"] it "tokenizes a ## Heading", -> {tokens} = grammar.tokenizeLine("# Heading 1")