1+ --- a class to wrap treesitter parsers and queries
2+ --- @module texcat.syntaxes.treesitter
3+ --- @copyright 2025
14local lfs = require ' lfs'
25local ltreesitter = require ' ltreesitter'
36local T = require ' texcat.themes'
@@ -72,24 +75,6 @@ function M.filter_query(code)
7275 return code
7376end
7477
75- --- @param treesitter table ?
76- --- @return table treesitter
77- function M .Treesitter :new (treesitter )
78- treesitter = treesitter or {}
79- treesitter .name = treesitter .name or ' lua'
80- treesitter .extensions_dir = treesitter .extensions_dir or T .get_extensions_dir ()
81- treesitter .parser = treesitter .parser or M .require (treesitter .name , treesitter .extensions_dir )
82- treesitter .query = treesitter .query or M .get_syntax (treesitter .parser , treesitter .name , treesitter .extensions_dir )
83- setmetatable (treesitter , {
84- __index = self
85- })
86- return treesitter
87- end
88-
89- setmetatable (M .Treesitter , {
90- __call = M .Treesitter .new
91- })
92-
9378--- add child scopes to color map
9479--- @param color_map color_map
9580--- @param captures capture[]
11499--- @param color_map color_map
115100--- @return capture[] captures
116101function M .filter_captures (captures , color_map )
117- --- @type capture[]
118102 local new_captures = {}
119103 for _ , capture in ipairs (captures ) do
120104 if color_map [capture .scope ] then
@@ -141,7 +125,6 @@ function M.cut_captures(captures, len)
141125 end
142126 end
143127 --- @alias range { start_index : integer , end_index : integer , scope : string , len : integer }
144- --- @type range[]
145128 local ranges = {}
146129 for i = 1 , # indices - 1 do
147130 table.insert (ranges , { start_index = indices [i ], end_index = indices [i + 1 ] - 1 , scope = ' source' , len = len })
@@ -162,6 +145,26 @@ function M.cut_captures(captures, len)
162145 return ranges
163146end
164147
148+ --- @type Treesitter
149+
150+ --- @param treesitter table ?
151+ --- @return table treesitter
152+ function M .Treesitter :new (treesitter )
153+ treesitter = treesitter or {}
154+ treesitter .name = treesitter .name or ' lua'
155+ treesitter .extensions_dir = treesitter .extensions_dir or T .get_extensions_dir ()
156+ treesitter .parser = treesitter .parser or M .require (treesitter .name , treesitter .extensions_dir )
157+ treesitter .query = treesitter .query or M .get_syntax (treesitter .parser , treesitter .name , treesitter .extensions_dir )
158+ setmetatable (treesitter , {
159+ __index = self
160+ })
161+ return treesitter
162+ end
163+
164+ setmetatable (M .Treesitter , {
165+ __call = M .Treesitter .new
166+ })
167+
165168--- capture text as captures according to theme
166169--- @param text string
167170--- @param theme table
0 commit comments