Skip to content

Commit

Permalink
add: completion of lua symbol references
Browse files Browse the repository at this point in the history
  • Loading branch information
carsakiller committed May 23, 2024
1 parent 36994ae commit 1f3a500
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion script/core/completion/completion.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2256,6 +2256,37 @@ local function tryluaDocOfFunction(doc, results, pad)
}
end

---Checks for a lua symbol reference in comment and returns an async callback if found
local function trySymbolReference(state, position, results)
local doc = getLuaDoc(state, position)
if not doc then
return
end

local line = doc.originalComment.text ---@type string
local col = select(2, guide.rowColOf(position)) - 2 ---@type integer

-- User will ask for completion at end of symbol name so we need to perform a reverse match to see if they are in a symbol reference
-- Matching in reverse allows the symbol to be of any length and we can still match all the way back to `](lua://` from right to left
local symbol = string.match(string.reverse(line), "%)?(.*)//:aul%(%]", #line - col)

if symbol then
-- flip it back the right way around
symbol = string.reverse(symbol)

---@async
return function ()
for _, match in ipairs(wssymbol(symbol)) do
results[#results+1] = {
label = match.name,
kind = define.CompletionItemKind.Class,
insertText = match.name
}
end
end
end
end

---@async
local function tryLuaDoc(state, position, results)
local doc = getLuaDoc(state, position)
Expand Down Expand Up @@ -2327,8 +2358,13 @@ end
---@async
local function tryCompletions(state, position, triggerCharacter, results)
if getComment(state, position) then
local callback = trySymbolReference(state, position, results)
if callback then
callback()
else
tryComment(state, position, results)
end
tryLuaDoc(state, position, results)
tryComment(state, position, results)
return
end
if postfix(state, position, results) then
Expand Down

0 comments on commit 1f3a500

Please sign in to comment.