diff --git a/tree-sitter/ChangeLog.md b/tree-sitter/ChangeLog.md index 9c1d9ef5..b6da8787 100644 --- a/tree-sitter/ChangeLog.md +++ b/tree-sitter/ChangeLog.md @@ -1,5 +1,6 @@ ### v0.9.0.4 +* Add binding to `ts_node_string`. * Add `isMissing` flag for nodes. * Add bindings for the edit API. diff --git a/tree-sitter/src/TreeSitter/Node.hs b/tree-sitter/src/TreeSitter/Node.hs index 063f3404..b81e0a80 100644 --- a/tree-sitter/src/TreeSitter/Node.hs +++ b/tree-sitter/src/TreeSitter/Node.hs @@ -7,6 +7,7 @@ module TreeSitter.Node , TSPoint(..) , TSNode(..) , FieldId(..) +, ts_node_string_p , ts_node_copy_child_nodes , ts_node_poke_p @@ -171,3 +172,4 @@ instance Monad Struct where foreign import ccall unsafe "src/bridge.c ts_node_copy_child_nodes" ts_node_copy_child_nodes :: Ptr TSNode -> Ptr Node -> IO () -- NB: this leaves the field name as NULL. foreign import ccall unsafe "src/bridge.c ts_node_poke_p" ts_node_poke_p :: Ptr TSNode -> Ptr Node -> IO () +foreign import ccall unsafe "src/bridge.c ts_node_string_p" ts_node_string_p :: Ptr Node -> IO CString diff --git a/tree-sitter/src/bridge.c b/tree-sitter/src/bridge.c index 8eb5a548..3a4f8605 100644 --- a/tree-sitter/src/bridge.c +++ b/tree-sitter/src/bridge.c @@ -125,3 +125,8 @@ uint32_t ts_tree_cursor_copy_child_nodes(TSTreeCursor *cursor, Node *outChildNod } return count; } + +char *ts_node_string_p(TSNode *self) { + assert(self != NULL); + return ts_node_string(*self); +}