aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nimterop/setup.nim17
-rw-r--r--nimterop/treesitter/c.nim4
2 files changed, 16 insertions, 5 deletions
diff --git a/nimterop/setup.nim b/nimterop/setup.nim
index e50a5ef..2e436cb 100644
--- a/nimterop/setup.nim
+++ b/nimterop/setup.nim
@@ -4,7 +4,7 @@ import "."/[git, paths]
proc treesitterSetup*() =
gitPull("https://github.com/tree-sitter/tree-sitter/", incDir() / "treesitter", """
-lib/include/tree_sitter/api.h
+lib/include/*
lib/src/*
""")
@@ -13,12 +13,23 @@ lib/src/*
*.h
""")
- # TODO: does this work on windows? if not use `os.unixToNativePath`
let
- stack = incDir() / "treesitter/lib/src/stack.c"
+ tbase = incDir() / "treesitter/lib"
+ stack = tbase / "src/stack.c"
+ parser = tbase / "include/tree_sitter/parser.h"
+ tparser = parser.replace("parser", "tparser")
+ language = tbase / "src/language.h"
+ lexer = tbase / "src/lexer.h"
+ subtree = tbase / "src/subtree.h"
stack.writeFile(stack.readFile().replace("inline Stack", "Stack"))
+ # parser.h
+ mvFile(parser, tparser)
+ language.writeFile(language.readFile().replace("parser.h", "tparser.h"))
+ lexer.writeFile(lexer.readFile().replace("parser.h", "tparser.h"))
+ subtree.writeFile(subtree.readFile().replace("parser.h", "tparser.h"))
+
proc treesitterCSetup*() =
gitPull("https://github.com/tree-sitter/tree-sitter-c", incDir() / "treesitter_c", """
src/*.h
diff --git a/nimterop/treesitter/c.nim b/nimterop/treesitter/c.nim
index 86cb71a..a39ee65 100644
--- a/nimterop/treesitter/c.nim
+++ b/nimterop/treesitter/c.nim
@@ -7,10 +7,10 @@ static:
const srcDir = incDir() / "treesitter_c/src"
-{.passC: "-I$1" % srcDir.}
-
import "."/api
+{.passC: "-I$1" % srcDir.}
+
{.compile: srcDir / "parser.c".}
proc treeSitterC*(): ptr TSLanguage {.importc: "tree_sitter_c", header: srcDir / "api.h".}