33--- @copyright 2025
44--- @diagnostic disable : undefined-global
55-- luacheck: ignore 111 113
6- local lfs = require ' lfs'
6+ local lfs = require ' texrocks. lfs'
77local argparse = require ' argparse'
88local T = require ' texcat.themes'
9- local TMTheme = require ' texcat.themes.tmtheme' .TMTheme
10- local TMLanguage = require ' texcat.syntaxes.tmlanguage' .TMLanguage
11- local Treesitter = require ' texcat.syntaxes.treesitter' .Treesitter
129local R = require ' texcat.renderer'
1310local Renderer = require ' texcat.renderer' .Renderer
1411local M = {
8178--- @param theme_names string[] theme names
8279function M .get_list (list_type , theme_type , syntax_type , theme_names , extensions_dir )
8380 local class
84- local theme
85- if theme_type == ' textmate' then
86- class = TMTheme
87- end
88- theme = class { extensions_dir = extensions_dir }
8981 local syntax
9082 if syntax_type == ' textmate' then
91- class = Treesitter
83+ class = require ' texcat.syntaxes.tmlanguage ' . TMLanguage
9284 elseif syntax_type == ' tree-sitter' then
93- class = TMLanguage
85+ class = require ' texcat.syntaxes.treesitter ' . Treesitter
9486 end
9587 syntax = class { id = 0 , extensions_dir = extensions_dir }
88+ local theme
89+ if theme_type == ' textmate' then
90+ class = require ' texcat.themes.tmtheme' .TMTheme
91+ end
92+ theme = class { extensions_dir = extensions_dir }
9693 local list
9794 if list_type == ' extensions_dirs' then
9895 list = table.concat (extensions_dir , " \n " )
9996 elseif list_type == ' themes' then
100- list = theme . list ()
97+ list = theme : list ()
10198 elseif list_type == ' syntaxes' then
102- list = syntax . list ()
99+ list = syntax : list ()
103100 elseif list_type == ' links' then
104101 list = T .list_links ()
105102 elseif list_type == ' colors' then
@@ -108,7 +105,7 @@ function M.get_list(list_type, theme_type, syntax_type, theme_names, extensions_
108105 theme = M .themes [theme_name ]
109106 if theme == nil then
110107 if theme_type == ' textmate' then
111- theme = TMTheme { extensions_dir = extensions_dir , name = theme_name }
108+ theme = class { extensions_dir = extensions_dir , name = theme_name }
112109 M .themes [theme_name ] = theme
113110 else
114111 return ' '
@@ -157,7 +154,7 @@ function M.render(cfg)
157154 -- theme
158155 local class
159156 if cfg .theme_type == ' textmate' then
160- class = TMTheme
157+ class = require ' texcat.themes.tmtheme ' . TMTheme
161158 end
162159 cfg .theme = cfg .theme or ' auto'
163160 -- no theme auto
@@ -182,9 +179,9 @@ function M.render(cfg)
182179
183180 -- syntax
184181 if cfg .syntax_type == ' textmate' then
185- class = TMLanguage
182+ class = require ' texcat.syntaxes.tmlanguage ' . TMLanguage
186183 elseif cfg .syntax_type == ' tree-sitter' then
187- class = Treesitter
184+ class = require ' texcat.syntaxes.treesitter ' . Treesitter
188185 end
189186 cfg .syntax = cfg .syntax or ' auto'
190187 -- no syntax auto
@@ -244,11 +241,7 @@ function M.output(out, filename)
244241 else
245242 local dir = filename :match (' (.*)/[^/]+$' )
246243 if dir then
247- if lfs .mkdirp then
248- lfs .mkdirp (dir )
249- else
250- lfs .mkdir (dir )
251- end
244+ lfs .mkdirp (dir )
252245 end
253246 local f = io.open (filename , ' w' )
254247 if f then
0 commit comments