fix: more lsp info comment and fix backend opts error

This commit is contained in:
JuanZoran
2023-03-14 22:30:25 +08:00
parent dab105b27f
commit f47abd1691
15 changed files with 102 additions and 50 deletions

View File

@ -1,3 +1,9 @@
---@class Baidu: TransBackend
---@field uri string api uri
---@field salt string
---@field app_id string
---@field app_passwd string
---@field disable boolean
local M = {
uri = 'https://fanyi-api.baidu.com/api/trans/vip/translate',
salt = tostring(math.random(bit.lshift(1, 15))),
@ -6,6 +12,19 @@ local M = {
local Trans = require('Trans')
---@class BaiduQuery
---@field q string
---@field from string
---@field to string
---@field appid string
---@field salt string
---@field sign string
---Get content for query
---@param data TransData
---@return BaiduQuery
function M.get_content(data)
local tmp = M.app_id .. data.str .. M.salt .. M.app_passwd
local sign = Trans.util.md5.sumhexa(tmp)
@ -27,7 +46,9 @@ end
-- status = 200
-- }
---@overload fun(TransData): TransResult
---Query Using Baidu API
---@param data TransData
function M.query(data)
if M.disable then
data.result.baidu = false
@ -37,22 +58,23 @@ function M.query(data)
local handle = function(res)
local status, body = pcall(vim.json.decode, res.body)
if status and body then
local result = body.trans_result
if result then
-- TEST :whether multi result
assert(#result == 1)
result = result[1]
data.result.baidu = {
['title'] = result.src,
[data.from == 'en' and 'translation' or 'definition'] = result.dst,
}
return
end
if not status or not body then
data.result.baidu = false
data.trace = res
return
end
data.result.baidu = false
data.trace = res
local result = body.trans_result
if result then
-- TEST :whether multi result
assert(#result == 1)
result = result[1]
data.result.baidu = {
['title'] = result.src,
[data.from == 'en' and 'translation' or 'definition'] = result.dst,
}
end
end
@ -62,6 +84,8 @@ function M.query(data)
})
end
---@class TransBackend
---@field baidu Baidu
return M
-- -- NOTE :free tts:

View File

@ -1,8 +1,10 @@
---@class Offline: TransBackend
local M = {
no_wait = true,
name = 'offline',
}
local db = require 'sqlite.db'
vim.api.nvim_create_autocmd('VimLeavePre', {
once = true,
@ -13,6 +15,10 @@ vim.api.nvim_create_autocmd('VimLeavePre', {
end
})
---@param data any
---@return any
---@overload fun(TransData): TransResult
function M.query(data)
if data.is_word == false or data.from == 'zh' then return end
@ -48,6 +54,7 @@ local function exist(str)
return str and str ~= ''
end
---@type (fun(res):any)[]
local formatter = {
title = function(res)
local title = {
@ -152,6 +159,9 @@ local formatter = {
end,
}
---Formater for TransResul
---@param res TransResult
---@return TransResult
function M.formatter(res)
for field, func in pairs(formatter) do
res[field] = func(res)
@ -160,4 +170,5 @@ function M.formatter(res)
return res
end
return M