Skip to content

Commit d0a99dd

Browse files
authored
Add Markdown Grammar (w/ Highlighting) (#42)
* Add Markdown Grammar * Add test cases
1 parent 9e7b7c4 commit d0a99dd

File tree

15 files changed

+238
-0
lines changed

15 files changed

+238
-0
lines changed

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
6CEC70FE29C3A85000B61C7A /* TreeSitterRegex in Frameworks */ = {isa = PBXBuildFile; productRef = 6CEC70FD29C3A85000B61C7A /* TreeSitterRegex */; };
4040
7DB18E9729FDC51C00F8EC00 /* TreeSitterScala in Frameworks */ = {isa = PBXBuildFile; productRef = 7DB18E9629FDC51C00F8EC00 /* TreeSitterScala */; };
4141
9D6DA3B8298F1A4600E69066 /* TreeSitterOCaml in Frameworks */ = {isa = PBXBuildFile; productRef = 9D6DA3B7298F1A4600E69066 /* TreeSitterOCaml */; };
42+
9DFDC3662A02D9BE0023B3BC /* TreeSitterMarkdown in Frameworks */ = {isa = PBXBuildFile; productRef = 9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */; };
4243
/* End PBXBuildFile section */
4344

4445
/* Begin PBXFileReference section */
@@ -52,6 +53,7 @@
5253
isa = PBXFrameworksBuildPhase;
5354
buildActionMask = 2147483647;
5455
files = (
56+
9DFDC3662A02D9BE0023B3BC /* TreeSitterMarkdown in Frameworks */,
5557
28B3F051290C36B1000CD04D /* TreeSitterPHP in Frameworks */,
5658
28B3F042290C365C000CD04D /* TreeSitterHaskell in Frameworks */,
5759
285BF67329AAA45B00641989 /* TreeSitterLua in Frameworks */,
@@ -190,6 +192,7 @@
190192
6CA62EA829F9D36700785B11 /* TreeSitterTS */,
191193
6CA62EAA29F9D36700785B11 /* TreeSitterTSX */,
192194
7DB18E9629FDC51C00F8EC00 /* TreeSitterScala */,
195+
9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */,
193196
);
194197
productName = "CodeLanguages-Container";
195198
productReference = 28B3F00C290C207D000CD04D /* CodeLanguages_Container.framework */;
@@ -250,6 +253,7 @@
250253
28AAB6AC29CA57D40087654B /* XCRemoteSwiftPackageReference "tree-sitter-dart" */,
251254
6CA62EA729F9D36700785B11 /* XCRemoteSwiftPackageReference "tree-sitter-typescript" */,
252255
7DB18E9529FDC51C00F8EC00 /* XCRemoteSwiftPackageReference "tree-sitter-scala" */,
256+
9DFDC3642A02D9BE0023B3BC /* XCRemoteSwiftPackageReference "tree-sitter-markdown" */,
253257
);
254258
productRefGroup = 28B3F00D290C207D000CD04D /* Products */;
255259
projectDirPath = "";
@@ -739,6 +743,14 @@
739743
kind = branch;
740744
};
741745
};
746+
9DFDC3642A02D9BE0023B3BC /* XCRemoteSwiftPackageReference "tree-sitter-markdown" */ = {
747+
isa = XCRemoteSwiftPackageReference;
748+
repositoryURL = "https://github.com/MDeiml/tree-sitter-markdown";
749+
requirement = {
750+
branch = split_parser;
751+
kind = branch;
752+
};
753+
};
742754
/* End XCRemoteSwiftPackageReference section */
743755

744756
/* Begin XCSwiftPackageProductDependency section */
@@ -897,6 +909,11 @@
897909
package = 9D6DA3B6298F1A4500E69066 /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */;
898910
productName = TreeSitterOCaml;
899911
};
912+
9DFDC3652A02D9BE0023B3BC /* TreeSitterMarkdown */ = {
913+
isa = XCSwiftPackageProductDependency;
914+
package = 9DFDC3642A02D9BE0023B3BC /* XCRemoteSwiftPackageReference "tree-sitter-markdown" */;
915+
productName = TreeSitterMarkdown;
916+
};
900917
/* End XCSwiftPackageProductDependency section */
901918
};
902919
rootObject = 28B3F003290C207D000CD04D /* Project object */;

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ extern TSLanguage *tree_sitter_javascript();
3939
extern TSLanguage *tree_sitter_json();
4040
extern TSLanguage *tree_sitter_kotlin();
4141
extern TSLanguage *tree_sitter_lua();
42+
extern TSLanguage *tree_sitter_markdown();
43+
extern TSLanguage *tree_sitter_markdown_inline();
4244
extern TSLanguage *tree_sitter_objc();
4345
extern TSLanguage *tree_sitter_ocaml();
4446
extern TSLanguage *tree_sitter_ocaml_interface();
1.58 MB
Binary file not shown.

Sources/CodeEditLanguages/CodeLanguage+Definitions.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public extension CodeLanguage {
2929
.jsx,
3030
.kotlin,
3131
.lua,
32+
.markdown,
33+
.markdownInline,
3234
.objc,
3335
.ocaml,
3436
.ocamlInterface,
@@ -179,6 +181,22 @@ public extension CodeLanguage {
179181
highlights: ["injections"]
180182
)
181183

184+
/// A language structure for `Markdown`
185+
static let markdown: CodeLanguage = .init(
186+
id: .markdown,
187+
tsName: "markdown",
188+
extensions: ["md", "mkd", "mkdn", "mdwn", "mdown", "markdown"],
189+
highlights: ["injections"]
190+
)
191+
192+
/// A language structure for `Markdown Inline`
193+
static let markdownInline: CodeLanguage = .init(
194+
id: .markdownInline,
195+
tsName: "markdown-inline",
196+
extensions: [],
197+
highlights: ["injections"]
198+
)
199+
182200
/// A language structure for `Objective C`
183201
static let objc: CodeLanguage = .init(
184202
id: .objc,

Sources/CodeEditLanguages/CodeLanguage.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ public struct CodeLanguage {
102102
return tree_sitter_kotlin()
103103
case .lua:
104104
return tree_sitter_lua()
105+
case .markdown:
106+
return tree_sitter_markdown()
107+
case .markdownInline:
108+
return tree_sitter_markdown_inline()
105109
case .objc:
106110
return tree_sitter_objc()
107111
case .ocaml:

Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
3737
- JSX
3838
- Kotlin
3939
- Lua
40+
- Markdown
4041
- Objective C
4142
- OCaml / OCaml Interface
4243
- PHP
@@ -88,6 +89,8 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
8889
- ``jsx``
8990
- ``kotlin``
9091
- ``lua``
92+
- ``markdown``
93+
- ``markdownInline``
9194
- ``objc``
9295
- ``php``
9396
- ``python``

Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ let query = TreeSitterModel.shared.swiftQuery
5050
- ``jsxQuery``
5151
- ``kotlinQuery``
5252
- ``luaQuery``
53+
- ``markdownQuery``
54+
- ``markdownInlineQuery``
5355
- ``objcQuery``
5456
- ``ocamlQuery``
5557
- ``ocamlInterfaceQuery``
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
;; From nvim-treesitter/nvim-treesitter
2+
[
3+
(code_span)
4+
(link_title)
5+
] @text.literal
6+
7+
[
8+
(emphasis_delimiter)
9+
(code_span_delimiter)
10+
] @punctuation.delimiter
11+
12+
(emphasis) @text.emphasis
13+
14+
(strong_emphasis) @text.strong
15+
16+
[
17+
(link_destination)
18+
(uri_autolink)
19+
] @text.uri
20+
21+
[
22+
(link_label)
23+
(link_text)
24+
(image_description)
25+
] @text.reference
26+
27+
[
28+
(backslash_escape)
29+
(hard_line_break)
30+
] @string.escape
31+
32+
; ")" not part of query because of
33+
; https://github.com/nvim-treesitter/nvim-treesitter/issues/2206
34+
; TODO: Find better fix for this
35+
(image ["!" "[" "]" "("] @punctuation.delimiter)
36+
(inline_link ["[" "]" "("] @punctuation.delimiter)
37+
(shortcut_link ["[" "]"] @punctuation.delimiter)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
((html_tag) @injection.content (#set! injection.language "html"))
2+
((latex_block) @injection.content (#set! injection.language "latex"))

0 commit comments

Comments
 (0)