1+ highlight (" connotate" , " reserved" )
2+ highlight (" derives" , " reserved" )
3+ highlight (" variable" , " reserved" )
4+ highlight (" synchronised" , " reserved" )
5+ highlight (" unsynchronised" , " reserved" )
6+ highlight (" constant" , " reserved" )
7+ highlight (" mutable" , " reserved" )
8+ highlight (" volatile" , " reserved" )
9+ highlight (" stable" , " reserved" )
10+ highlight (" independent" , " reserved" )
11+ highlight (" depdendent" , " reserved" )
12+ highlight (" invariable" , " reserved" )
13+ highlight (" void" , " reserved" )
14+ highlight (" ratify" , " reserved" )
15+ highlight (" subroutine" , " reserved" )
16+ highlight (" ?" , " reserved" )
17+ highlight (" transient" , " reserved" )
18+ highlight (" classification" , " reserved" )
19+ highlight (" extemporize" , " reserved" )
20+ highlight (" aforementioned" , " variable" )
21+ highlight (" epitomise" , " reserved" )
22+ highlight (" stipulate" , " reserved" )
23+ highlight (" otherwise" , " reserved" )
24+ highlight (" compeer" , " reserved" )
25+ highlight (" towards" , " reserved" )
26+ highlight (" within" , " reserved" )
27+ highlight (" nonfulfillment" , " reserved" )
28+
29+ highlight (" neither" , " binary" )
30+ highlight (" both" , " binary" )
31+ highlight (" maybe" , " binary" )
32+ highlight (" trueish" , " binary" )
33+ highlight (" falseish" , " binary" )
34+ highlight (" depends" , " binary" )
35+ highlight (" complicated" , " binary" )
36+ --
37+ highlight (" var" , " reserved" )
38+ highlight (" let" , " reserved" )
39+ highlight (" const" , " reserved" )
40+ highlight (" new" , " reserved" )
41+
42+ highlight (" while" , " reserved" )
43+ highlight (" for" , " reserved" )
44+
45+ highlight (" if" , " reserved" )
46+ highlight (" else" , " reserved" )
47+ highlight (" try" , " reserved" )
48+ highlight (" catch" , " reserved" )
49+
50+ highlight (" extends" , " reserved" )
51+ highlight (" typeof" , " reserved" )
52+ highlight (" void" , " reserved" )
53+
54+ highlight (" in" , " reserved" )
55+ highlight (" of" , " reserved" )
56+ highlight (" with" , " reserved" )
57+
58+ highlight (" import" , " reserved" )
59+ highlight (" finally" , " reserved" )
60+ highlight (" delete" , " reserved" )
61+
62+ highlight (" class" , " reserved" )
63+ highlight (" function" , " reserved" )
64+ highlight (" return" , " reserved" )
65+ highlight (" export" , " reserved" )
66+ highlight (" async" , " reserved" )
67+ highlight (" await" , " reserved" )
68+ highlight (" throw" , " reserved" )
69+ highlight (" continue" , " reserved" )
70+ highlight (" break" , " reserved" )
71+ highlight (" yield" , " reserved" )
72+
73+ highlight (" instanceof" , " reserved" )
74+ highlight (" typeof" , " reserved" )
75+ highlight (" switch" , " reserved" )
76+ highlight (" case" , " reserved" )
77+ highlight (" default" , " reserved" )
78+ highlight (" do" , " reserved" )
79+
80+ highlight (" false" , " binary" )
81+ highlight (" true" , " binary" )
82+ highlight (" null" , " binary" )
83+ highlight (" undefined" , " binary" )
84+
85+ highlight (" +" , " operator" )
86+ highlight (" -" , " operator" )
87+ highlight (" /" , " operator" )
88+ highlight (" *" , " operator" )
89+ highlight (" +=" , " operator" )
90+ highlight (" -=" , " operator" )
91+ highlight (" /=" , " operator" )
92+ highlight (" *=" , " operator" )
93+ highlight (" <" , " operator" )
94+ highlight (" >" , " operator" )
95+ highlight (" <=" , " operator" )
96+ highlight (" >=" , " operator" )
97+ highlight (" %" , " operator" )
98+ highlight (" ==" , " operator" )
99+ highlight (" ===" , " operator" )
100+ highlight (" !=" , " operator" )
101+ highlight (" !==" , " operator" )
102+
103+ highlight (" {" , " binary" )
104+ highlight (" }" , " binary" )
105+ highlight (" [" , " binary" )
106+ highlight (" ]" , " binary" )
107+
108+ highlight (" this" , " variable" )
109+
110+ highlight_region (" \" " , " \" " , " string" , true )
111+ highlight_region (" '" , " '" , " string" , true )
112+ highlight_region (" `" , " `" , " string" )
113+ highlight_region (" /*" , " */" , " comments" )
114+ highlight_region (" //" , " " , " comments" , true )
115+
116+ --- comments
117+ add_comment (" yap yap yap yap yap" )
118+ add_comment (" its the funny language 🗣️🗣️🗣️🗣️🗣️🗣️🗣️🗣️🗣️🗣️‼️‼️💥💥💥🤯" )
119+ add_comment (" typescript better 💀💀💀" )
120+ add_comment (" lil bro ain't onto something" )
121+
122+ --- autocomplete
123+
124+ function detect_functions (content )
125+ local functionNames = {}
126+
127+ local lines = {}
128+ for line in content :gmatch (" [^\r\n ]+" ) do
129+ table.insert (lines , line )
130+ end
131+
132+ for _ , line in ipairs (lines ) do
133+ local trimmedLine = trim (line )
134+
135+ -- Look for function, async function, subroutine, or ? (class) function definitions
136+ if trimmedLine :find (" function " ) or
137+ trimmedLine :find (" async " ) or
138+ trimmedLine :find (" subroutine " ) or
139+ trimmedLine :find (" %w%s?" ) then
140+ local functionName =
141+ string.match (trimmedLine :gsub (" {" , " " ), " %w+%s+%?" ) or
142+ string.match (trimmedLine :gsub (" {" , " " ), " %.?function%s+(.-)%s*%(" ) or
143+ string.match (trimmedLine :gsub (" {" , " " ), " %.?subroutine%s+(.-)%s*%(" ) or
144+ string.match (trimmedLine :gsub (" {" , " " ), " %.?async%s+(.-)%s*%(" )
145+
146+ if functionName :find (" ?" ) then
147+ functionName = functionName .gsub (functionName , " ?" , " " )
148+ functionName = trim (functionName )
149+ end
150+
151+ table.insert (functionNames , functionName )
152+ end
153+ end
154+
155+ return functionNames
156+ end
157+
158+ function detect_variables (content )
159+ local variable_names = {
160+ " global" ,
161+ " process" ,
162+ " console" ,
163+ " Buffer" ,
164+ " __dirname" ,
165+ " __filename" ,
166+ " module" ,
167+ " exports"
168+ }
169+ local lines = content :gmatch (" [^\r\n ]+" )
170+
171+ for line in lines do
172+ local is_yap = trim (line ):find (" variable " )
173+ if is_yap or trim (line ):find (" let " ) or trim (line ):find (" var " ) or trim (line ):find (" const " ) then
174+ local parts = splitstr (line , " =" )
175+ if # parts > 0 then
176+ local variable_name = trim (splitstr (trim (parts [1 ]), " " )[2 ])
177+
178+ if is_yap then
179+ variable_name = splitstr (trim (parts [1 ]), " " )[4 ]
180+ variable_name = variable_name :gsub (" [^a-zA-Z]" , " " )
181+ end
182+ table.insert (variable_names , variable_name )
183+ end
184+ end
185+ end
186+
187+ return variable_names
188+ end
0 commit comments