feat: reduce bugs
This commit is contained in:
parent
a57a6e47ab
commit
32eeae88d4
@ -1,61 +0,0 @@
|
||||
local M = {}
|
||||
local conf = require("Trans.conf.loader").loaded_conf.style.window
|
||||
local type_check = require("Trans.util.debug").type_check
|
||||
|
||||
-- FIXME
|
||||
|
||||
local get_float_opts = function(float_conf)
|
||||
type_check {
|
||||
float_conf = { float_conf, 'table' },
|
||||
}
|
||||
local columns = vim.o.columns
|
||||
local height = vim.o.lines - vim.o.cmdheight - float_conf.top_offset
|
||||
local width = math.floor(columns * float_conf.relative_width)
|
||||
|
||||
return {
|
||||
relative = 'editor',
|
||||
col = math.floor((columns - width) / 2), -- 两侧的宽度
|
||||
row = float_conf.top_offset,
|
||||
title = 'Trans',
|
||||
title_pos = 'center',
|
||||
style = 'minimal',
|
||||
width = width,
|
||||
height = height,
|
||||
border = float_conf.border,
|
||||
zindex = 50,
|
||||
}
|
||||
end
|
||||
|
||||
local get_cursor_opts = function(cursor_conf)
|
||||
type_check {
|
||||
cursor_conf = { cursor_conf, 'table' },
|
||||
}
|
||||
local opts = {
|
||||
relative = 'cursor',
|
||||
col = 2,
|
||||
row = 2,
|
||||
title = 'Trans',
|
||||
title_pos = 'center',
|
||||
style = 'minimal',
|
||||
border = cursor_conf.border,
|
||||
-- TODO keymap to convert style to Float
|
||||
focusable = false,
|
||||
zindex = 100,
|
||||
}
|
||||
if cursor_conf.style == 'fixed' then
|
||||
opts.width = cursor_conf.width
|
||||
opts.height = cursor_conf.height
|
||||
elseif cursor_conf.style == 'relative' then
|
||||
opts.width = (cursor_conf.width > 0 and conf.width < conf.max_width) and conf.width or conf.max_width
|
||||
opts.height = (cursor_conf.height > 0 and conf.height < conf.max_height) and conf.height or conf.max_height
|
||||
else
|
||||
error('unknown style!')
|
||||
end
|
||||
return opts
|
||||
end
|
||||
|
||||
M.float_opts = get_float_opts(conf.float)
|
||||
|
||||
M.cursor_opts = get_cursor_opts(conf.cursor)
|
||||
|
||||
return M
|
@ -2,6 +2,6 @@ local M = {}
|
||||
|
||||
M.process = require('Trans.core.process')
|
||||
M.query = require('Trans.core.query')
|
||||
M.show_win = require('Trans.core.show_win')
|
||||
-- M.show_win = require('Trans.core.show_win')
|
||||
|
||||
return M
|
||||
|
@ -1,54 +0,0 @@
|
||||
local type_check = require("Trans.util.debug").type_check
|
||||
|
||||
-- local win_opts = {
|
||||
-- winhl = 'Normal:TransWinNormal, FloatBorder:TransWinBorder'
|
||||
-- }
|
||||
|
||||
local function caculate_format(height, width)
|
||||
local col = math.floor((vim.o.lines - height - vim.o.cmdheight) / 2)
|
||||
local row = math.floor((vim.o.columns - width) / 2)
|
||||
return row, col
|
||||
end
|
||||
|
||||
|
||||
local function show_win(opts)
|
||||
type_check {
|
||||
opts = { opts, 'table' },
|
||||
win = { opts.win, 'table' },
|
||||
border = { opts.border, 'string' },
|
||||
highlight = { opts.highlight, 'table', true },
|
||||
}
|
||||
|
||||
local is_float = opts.style == 'float'
|
||||
local win_opts = {
|
||||
relative = opts.style == 'float' and 'editor' or 'cursor',
|
||||
width = opts.width,
|
||||
height = opts.height,
|
||||
style = 'minimal',
|
||||
border = opts.border,
|
||||
title = 'Trans',
|
||||
title_pos = 'center',
|
||||
focusable = true,
|
||||
zindex = 100,
|
||||
}
|
||||
if is_float then
|
||||
win_opts.row, win_opts.col = caculate_format(win_opts.height, win_opts.width)
|
||||
else
|
||||
win_opts.row = 2
|
||||
win_opts.col = 2
|
||||
end
|
||||
|
||||
local winid = vim.api.nvim_open_win(bufnr, is_float, win_opts)
|
||||
|
||||
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, opts.lines)
|
||||
|
||||
for line, l_hl in ipairs(opts.highlight) do
|
||||
for i, hl in ipairs(l_hl) do
|
||||
vim.api.nvim_buf_add_highlight(bufnr, line, hl.name, i, hl._start, hl._end)
|
||||
end
|
||||
end
|
||||
|
||||
return bufnr, winid
|
||||
end
|
||||
|
||||
return show_win
|
Loading…
x
Reference in New Issue
Block a user