fix: use api.nvim_buf_get_lines instead of fn.getbufoneline
This commit is contained in:
@@ -179,6 +179,7 @@ function M:process(data)
|
||||
self:fallback()
|
||||
return
|
||||
end
|
||||
-- vim.pretty_print(result)
|
||||
local opts = self.opts
|
||||
if opts.auto_play then
|
||||
(data.from == 'en' and data.str or result.definition[1]):play()
|
||||
|
@@ -2,11 +2,22 @@ local node = require('Trans').util.node
|
||||
local it, conjunction = node.item, node.conjunction
|
||||
local interval = (' '):rep(4)
|
||||
|
||||
local M = setmetatable({}, {
|
||||
__call = function(self, hover, result, name, order)
|
||||
order = order or hover.opts.order.default
|
||||
|
||||
local method = self.renderer[name]
|
||||
|
||||
for _, field in ipairs(order) do
|
||||
-- print(field)
|
||||
method[field](hover, result)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
---@alias TransHoverFormatter fun(hover:TransHover, result: TransResult)
|
||||
---@alias TransHoverRenderer table<string, TransHoverFormatter>
|
||||
|
||||
|
||||
---@type TransHoverRenderer
|
||||
local default = {
|
||||
str = function(hover, result)
|
||||
@@ -48,7 +59,7 @@ local default = {
|
||||
default.__index = default
|
||||
|
||||
---@type table<string, TransHoverRenderer>
|
||||
local renderer = setmetatable({}, {
|
||||
M.renderer = setmetatable({}, {
|
||||
__index = function(tbl, key)
|
||||
local status, method = pcall(require, 'Trans.frontend.hover.' .. key)
|
||||
if not status then
|
||||
@@ -60,17 +71,7 @@ local renderer = setmetatable({}, {
|
||||
end,
|
||||
})
|
||||
|
||||
-- FIXME :
|
||||
|
||||
|
||||
---@class TransHover
|
||||
---@field load fun(hover: TransHover, result: TransResult, name: string, order: string[])
|
||||
return function(hover, result, name, order)
|
||||
order = order or hover.opts.order.default
|
||||
|
||||
local method = renderer[name]
|
||||
|
||||
for _, field in ipairs(order) do
|
||||
method[field](hover, result)
|
||||
end
|
||||
end
|
||||
return M
|
||||
|
@@ -15,14 +15,12 @@ function M.tag(hover, result)
|
||||
local size = #tag
|
||||
|
||||
for i = 1, size, 3 do
|
||||
buffer:setline(
|
||||
it(
|
||||
interval .. tag[i] ..
|
||||
(tag[i + 1] and interval .. tag[i + 1] ..
|
||||
(tag[i + 2] and interval .. tag[i + 2] or '') or ''),
|
||||
'TransTag'
|
||||
)
|
||||
)
|
||||
buffer:setline(it(
|
||||
interval .. tag[i] ..
|
||||
(tag[i + 1] and interval .. tag[i + 1] ..
|
||||
(tag[i + 2] and interval .. tag[i + 2] or '') or ''),
|
||||
'TransTag'
|
||||
))
|
||||
end
|
||||
|
||||
buffer:setline('')
|
||||
@@ -63,6 +61,11 @@ end
|
||||
function M.title(hover, result)
|
||||
local title = result.title
|
||||
if not title then return end
|
||||
if type(title) == 'string' then
|
||||
hover.buffer:setline(it(title, 'TransWord'))
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
local icon = hover.opts.icon
|
||||
|
||||
|
@@ -1,14 +1,43 @@
|
||||
local node = require('Trans').util.node
|
||||
local it, t, f, co = node.item, node.text, node.format, node.conjunction
|
||||
|
||||
|
||||
---@type TransHoverRenderer
|
||||
local M = {}
|
||||
local interval = (' '):rep(4)
|
||||
|
||||
function M.web(hover, result)
|
||||
if not result.web then return end
|
||||
local buffer = hover.buffer
|
||||
buffer:setline(co('网络释义'))
|
||||
|
||||
|
||||
for _, w in ipairs(result.web) do
|
||||
buffer:setline(it(
|
||||
--- TODO :Better format style
|
||||
interval .. w.key .. interval .. table.concat(w.value, ' | '),
|
||||
'TransWeb'
|
||||
))
|
||||
end
|
||||
buffer:setline('')
|
||||
end
|
||||
|
||||
|
||||
function M.explains(hover, result)
|
||||
local explains = result.explains
|
||||
if not explains then return end
|
||||
local buffer = hover.buffer
|
||||
buffer:setline(co('基本释义'))
|
||||
|
||||
|
||||
for i = 1, #explains, 2 do
|
||||
buffer:setline(it(
|
||||
interval .. explains[i] ..
|
||||
(explains[i + 1] and interval .. explains[i + 1] or ''),
|
||||
'TransExplains'
|
||||
))
|
||||
end
|
||||
buffer:setline('')
|
||||
end
|
||||
|
||||
M.title = require('Trans').frontend.hover.offline.title
|
||||
|
||||
return M
|
||||
|
Reference in New Issue
Block a user