docs: add lazy-load example
This commit is contained in:
parent
a226c0de5f
commit
63efdd8547
21
README.md
21
README.md
@ -50,9 +50,28 @@ use {
|
||||
run = 'bash ./install.sh',
|
||||
requires = 'kharji/sqlite.lua',
|
||||
-- 如果你不需要任何配置的话, 可以直接按照下面的方式启动
|
||||
config = require'Trans'.setup{}
|
||||
config = require'Trans'.setup
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
**如果你想要使用Packer的惰性加载,这里有一个例子**
|
||||
```lua
|
||||
use {
|
||||
"JuanZoran/Trans.nvim",
|
||||
keys = {
|
||||
{ 'v', 'mm' }, -- 换成其他你想用的key即可
|
||||
{ 'n', 'mm' },
|
||||
},
|
||||
run = 'bash ./install.sh',
|
||||
config = function()
|
||||
require("Trans").setup {}
|
||||
vim.keymap.set("v", "mm", '<Esc><Cmd>TranslateSelectWord<CR>', { desc = ' Translate' })
|
||||
vim.keymap.set("n", "mm", "<Cmd>TranslateCursorWord<CR>", { desc = ' Translate' })
|
||||
end
|
||||
}
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
- `install.sh`
|
||||
- 使用了 `wget`下载词库, 安装请确保你的环境变量中存在wget
|
||||
|
@ -4,6 +4,7 @@ local api = vim.api
|
||||
local display = require("Trans").conf.display
|
||||
local icon = require("Trans").conf.icon
|
||||
local order = require("Trans").conf.order
|
||||
local auto_close = require("Trans").conf.auto_close
|
||||
|
||||
local hl = require("Trans.highlight").hlgroup
|
||||
|
||||
@ -14,7 +15,6 @@ local pos_info = {}
|
||||
|
||||
api.nvim_buf_set_option(buf, 'filetype', 'Trans')
|
||||
|
||||
|
||||
local function show_win(width, height)
|
||||
win = api.nvim_open_win(buf, false, {
|
||||
relative = 'cursor',
|
||||
@ -182,20 +182,23 @@ local function set_text(query_res)
|
||||
return width, #text
|
||||
end
|
||||
|
||||
local function hl_title()
|
||||
local hl_handler = {}
|
||||
|
||||
|
||||
hl_handler.title = function()
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.word, pos_info.title.line, 0, pos_info.title.word)
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.phonetic, pos_info.title.line, pos_info.title.word + 5,
|
||||
pos_info.title.word + 5 + pos_info.title.phonetic)
|
||||
end
|
||||
|
||||
local function hl_tag()
|
||||
hl_handler.tag = function()
|
||||
if pos_info.tag then
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.ref, pos_info.tag, 0, -1)
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.tag, pos_info.tag + 1, 0, -1)
|
||||
end
|
||||
end
|
||||
|
||||
local function hl_pos()
|
||||
hl_handler.pos = function()
|
||||
if pos_info.pos then
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.ref, pos_info.pos.line, 0, -1)
|
||||
for i = 1, pos_info.pos.content, 1 do
|
||||
@ -204,7 +207,7 @@ local function hl_pos()
|
||||
end
|
||||
end
|
||||
|
||||
local function hl_exchange()
|
||||
hl_handler.exchange = function()
|
||||
if pos_info.exchange then
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.ref, pos_info.exchange.line, 0, -1)
|
||||
for i = 1, pos_info.exchange.content, 1 do
|
||||
@ -213,14 +216,14 @@ local function hl_exchange()
|
||||
end
|
||||
end
|
||||
|
||||
local function hl_zh()
|
||||
hl_handler.zh = function()
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.ref, pos_info.zh.line, 0, -1)
|
||||
for i = 1, pos_info.zh.content, 1 do
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.zh, pos_info.zh.line + i, 0, -1)
|
||||
end
|
||||
end
|
||||
|
||||
local function hl_en()
|
||||
hl_handler.en = function()
|
||||
if pos_info.en then
|
||||
api.nvim_buf_add_highlight(buf, -1, hl.ref, pos_info.en.line, 0, -1)
|
||||
for i = 1, pos_info.en.content, 1 do
|
||||
@ -229,14 +232,6 @@ local function hl_en()
|
||||
end
|
||||
end
|
||||
|
||||
local hl_handler = {
|
||||
title = hl_title,
|
||||
tag = hl_tag,
|
||||
pos = hl_pos,
|
||||
exchange = hl_exchange,
|
||||
zh = hl_zh,
|
||||
en = hl_en,
|
||||
}
|
||||
|
||||
local function set_hl()
|
||||
for _, v in ipairs(order) do
|
||||
@ -258,7 +253,6 @@ local function get_visual_selection()
|
||||
return word
|
||||
end
|
||||
|
||||
|
||||
function M.query(mode)
|
||||
assert(buf > 0)
|
||||
local word = ''
|
||||
@ -278,6 +272,15 @@ function M.query(mode)
|
||||
set_hl()
|
||||
clear_tmp_info()
|
||||
end
|
||||
|
||||
if auto_close then
|
||||
api.nvim_create_autocmd(
|
||||
{ 'InsertEnter', 'CursorMoved', 'BufLeave', }, {
|
||||
buffer = 0,
|
||||
once = true,
|
||||
callback = M.close_win,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
function M.query_cursor()
|
||||
@ -295,4 +298,11 @@ function M.close_win()
|
||||
end
|
||||
end
|
||||
|
||||
-- function M.enter_win()
|
||||
-- if api.nvim_win_is_valid(win) then
|
||||
-- else
|
||||
-- error('current win is not valid')
|
||||
-- end
|
||||
-- end
|
||||
|
||||
return M
|
||||
|
@ -3,6 +3,7 @@ local M = {}
|
||||
|
||||
M.conf = require("Trans.conf")
|
||||
function M.setup(conf)
|
||||
conf = conf or {}
|
||||
if conf.display then
|
||||
conf.display = vim.tbl_extend('force', M.conf.display, conf.display)
|
||||
end
|
||||
|
@ -17,18 +17,6 @@ vim.api.nvim_create_autocmd('VimLeave', {
|
||||
end,
|
||||
})
|
||||
|
||||
-- TODO: set command to close preview window automatically
|
||||
local auto_close = require("Trans.conf").auto_close
|
||||
if auto_close then
|
||||
vim.api.nvim_create_autocmd(
|
||||
{ 'InsertEnter', 'CursorMoved', 'BufLeave', }, {
|
||||
group = group,
|
||||
pattern = '*',
|
||||
callback = require('Trans.display').close_win
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
-- vim.keymap.set('n', 'mm', '<cmd>TranslateCurosorWord<cr>')
|
||||
-- vim.keymap.set('v', 'mm', '<Esc><cmd>TranslateSelectWord<cr>')
|
||||
require("Trans.highlight").set_hl()
|
||||
|
Loading…
x
Reference in New Issue
Block a user