local api = vim.api local conf = require('Trans').conf local buffer = require('Trans.buffer')() local node = require("Trans.node") local t = node.text local it = node.item local f = node.format local engine_map = { baidu = '百度', youdao = '有道', iciba = 'iciba', offline = '本地', } local function set_tag_hl(name, status) -- local hl = conf.float.tag[status] -- m_window:set_hl(name, { -- fg = '#000000', -- bg = hl, -- }) -- m_window:set_hl(name .. 'round', { -- fg = hl, -- }) end local function set_title() -- local title = m_window:new_content() -- local github = ' https://github.com/JuanZoran/Trans.nvim' -- title:addline( -- title:center(it(github, '@text.uri')) -- ) -- local f = '%s(%d)' -- local tags = {} -- local load_tag = function(engine, index) -- set_tag_hl(engine, 'wait') -- local round = engine .. 'round' -- table.insert(tags, t( -- it('', round), -- it(f:format(engine_map[engine], index), engine), -- it('', round) -- )) -- end -- load_tag('offline', 1) -- title:addline(unpack(tags)) -- title:newline('') end local action = { quit = function() -- m_window:try_close() end, } local exist = function(str) return str and str ~= '' end local function process() -- TODO : -- local icon = conf.icon -- m_content:addline(m_content:format { -- nodes = { -- it(m_result.word, 'TransWord'), -- t( -- it('['), -- it(exist(m_result.phonetic) and m_result.phonetic or icon.notfound, 'TransPhonetic'), -- it(']') -- ), -- it(m_result.collins and icon.star:rep(m_result.collins) or icon.notfound, 'TransCollins'), -- it(m_result.oxford == 1 and icon.yes or icon.no) -- }, -- width = math.floor(m_window.width * 0.5) -- }) -- m_content:addline(it('该窗口还属于实验性功能 .... ')) end return function(word) buffer:init() -- TODO :online query -- local float = conf.float vim.notify([[ [注意]: float窗口目前还待开发 如果需要input查询功能, 请将窗口改成hover]]) -- local opt = { -- relative = 'editor', -- width = float.width, -- height = float.height, -- border = float.border, -- title = float.title, -- animation = float.animation, -- row = bit.rshift((vim.o.lines - float.height), 1), -- col = bit.rshift((vim.o.columns - float.width), 1), -- zindex = 20, -- } -- m_window = require('Trans.window')(true, opt) -- set_title() -- m_content = m_window:new_content() -- m_result = require('Trans.query.offline')(word) -- if m_result then -- set_tag_hl('offline', 'success') -- process() -- else -- set_tag_hl('offline', 'fail') -- end -- m_window:open() -- m_window:bufset('bufhidden', 'wipe') -- for act, key in pairs(float.keymap) do -- m_window:map(key, action[act]) -- end end