5757
5858--- @async
5959--- @param key string
60+ --- @param suri ? uri
6061--- @param results table[]
61- local function searchGlobalAndClass (key , results )
62+ local function searchGlobalAndClass (key , suri , results )
6263 for _ , global in pairs (vm .getAllGlobals ()) do
6364 local name = global :getCodeName ()
6465 if matchKey (key , name ) then
65- for _ , set in ipairs (global :getAllSets ()) do
66+ local sets
67+ if suri then
68+ sets = global :getSets (suri )
69+ else
70+ sets = global :getAllSets ()
71+ end
72+ for _ , set in ipairs (sets ) do
6673 local skind , ckind
6774 if set .type == ' doc.class' then
6875 skind = define .SymbolKind .Class
8895
8996--- @async
9097--- @param key string
98+ --- @param suri ? uri
9199--- @param results table[]
92- local function searchClassField (key , results )
100+ local function searchClassField (key , suri , results )
93101 local class , inField = key :match (' ^(.+)%.(.-)$' )
94102 if not class then
95103 return
@@ -98,11 +106,16 @@ local function searchClassField(key, results)
98106 if not global then
99107 return
100108 end
101- local set = global :getAllSets ()[1 ]
109+ local set
110+ if suri then
111+ set = global :getSets (suri )[1 ]
112+ else
113+ set = global :getAllSets ()[1 ]
114+ end
102115 if not set then
103116 return
104117 end
105- local suri = guide .getUri (set )
118+ suri = suri or guide .getUri (set )
106119 vm .getClassFields (suri , global , nil , false , function (field , isMark )
107120 if field .type == ' generic' then
108121 return
126139
127140--- @async
128141--- @param key string
142+ --- @param suri ? uri
129143--- @param results table[]
130- local function searchWords (key , results )
131- for uri in files .eachFile () do
144+ local function searchWords (key , suri , results )
145+ for uri in files .eachFile (suri ) do
132146 searchFile (uri , key , results )
133147 if # results > 1000 then
134148 break
@@ -138,13 +152,16 @@ local function searchWords(key, results)
138152end
139153
140154--- @async
141- return function (key , includeWords )
155+ --- @param key string
156+ --- @param suri ? uri
157+ --- @param includeWords ? boolean
158+ return function (key , suri , includeWords )
142159 local results = {}
143160
144- searchGlobalAndClass (key , results )
145- searchClassField (key , results )
161+ searchGlobalAndClass (key , suri , results )
162+ searchClassField (key , suri , results )
146163 if includeWords then
147- searchWords (key , results )
164+ searchWords (key , suri , results )
148165 end
149166
150167 return results
0 commit comments