diff options
Diffstat (limited to 'script/provider')
-rw-r--r-- | script/provider/build-meta.lua | 12 | ||||
-rw-r--r-- | script/provider/provider.lua | 18 |
2 files changed, 18 insertions, 12 deletions
diff --git a/script/provider/build-meta.lua b/script/provider/build-meta.lua index 21390411..090b7b04 100644 --- a/script/provider/build-meta.lua +++ b/script/provider/build-meta.lua @@ -124,13 +124,9 @@ local function buildRootText(api) end ---@async ----@param name string +---@param path string ---@param api meta ----@return string -function m.build(name, api) - local encoding = config.get(nil, 'Lua.runtime.fileEncoding') - local fileDir = fs.path(METAPATH) / (name .. ' ' .. encoding) - fs.create_directories(fileDir) +function m.build(path, api) local files = util.multiTable(2, function () return { '---@meta' } @@ -149,10 +145,8 @@ function m.build(name, api) end for space, texts in pairs(files) do - util.saveFile((fileDir / (space .. '.lua')):string(), table.concat(texts, '\n\n')) + util.saveFile(path .. '/' .. space .. '.lua', table.concat(texts, '\n\n')) end - - return fileDir:string() end return m diff --git a/script/provider/provider.lua b/script/provider/provider.lua index a5255f44..eb1362eb 100644 --- a/script/provider/provider.lua +++ b/script/provider/provider.lua @@ -21,6 +21,7 @@ local furi = require 'file-uri' local inspect = require 'inspect' local markdown = require 'provider.markdown' local guide = require 'parser.guide' +local fs = require 'bee.filesystem' ---@async local function updateConfig(uri) @@ -1342,14 +1343,25 @@ m.register '$/api/report' { ---@async function (params) local buildMeta = require 'provider.build-meta' + local SDBMHash = require 'SDBMHash' await.close 'api/report' await.setID 'api/report' - local dir = buildMeta.build('default', params) + local name = params.name or 'default' + local uri = workspace.getFirstScope().uri + local hash = uri and ('%08x'):format(SDBMHash():hash(uri)) + local encoding = config.get(nil, 'Lua.runtime.fileEncoding') + local nameBuf = {} + nameBuf[#nameBuf+1] = name + nameBuf[#nameBuf+1] = hash + nameBuf[#nameBuf+1] = encoding + local fileDir = METAPATH .. '/' .. table.concat(nameBuf, ' ') + fs.create_directories(fs.path(fileDir)) + buildMeta.build(fileDir, params) client.setConfig { { - key = 'Lua.runtime.library', + key = 'Lua.workspace.library', action = 'add', - value = dir, + value = fileDir, } } end |