I defined two pseudo vectors for tree-sitter's parser and node and packaged a dynamic module for tree-sitter’s json language definition. I also wrapped a few tree-sitter functions just to test if everything works. Please have a look. I’m sure there are some problems because I mainly wrote by copy, paste and modifying from other code I found in Emacs source. To try out this patch, get tree-sitter from https://github.com/tree-sitter/tree-sitter.git , make and make install it. Then unzip json-module.zip to get the source of the json dynamic module. If my Makefile is correct, make'ing it should produce a tree-sitter-json.so. Then if you apply ts.patch, compile emacs, and run this snippet, you should get a string representation of the root node. (require 'tree-sitter-json) (tree-sitter-node-string (tree-sitter-parse "[1,2]" (tree-sitter-json))) Yuan