diff --git a/lua/Trans/README.md b/lua/Trans/README.md index 07c161e..d59a4c2 100644 --- a/lua/Trans/README.md +++ b/lua/Trans/README.md @@ -13,3 +13,6 @@ - [x] Add Query FallBack - [ ] Check if str is a word - [ ] Unlimit width for sentence + + +- default_strategy can't deal with table correctly diff --git a/lua/Trans/core/window.lua b/lua/Trans/core/window.lua index 4a1b019..ac3a35c 100644 --- a/lua/Trans/core/window.lua +++ b/lua/Trans/core/window.lua @@ -69,7 +69,7 @@ end ---Expand window [width | height] value ---@param opts ----|{ field: string, to: integer} +---|{ field: 'width'|'height', to: integer} function window:smooth_expand(opts) local field = opts.field -- width | height local from = api['nvim_win_get_' .. field](self.winid) @@ -77,15 +77,13 @@ function window:smooth_expand(opts) if from == to then return end - local pause = Trans.util.pause local method = api['nvim_win_set_' .. field] - - local wrap = self:option 'wrap' - local interval = self.animation.interval + local wrap = self:option 'wrap' + self:set('wrap', false) + local interval = self.animation.interval or 12 for i = from + 1, to, (from < to and 1 or -1) do - self:set('wrap', false) method(self.winid, i) pause(interval) end diff --git a/lua/Trans/frontend/hover/init.lua b/lua/Trans/frontend/hover/init.lua index d1b22e2..9ccbc2e 100644 --- a/lua/Trans/frontend/hover/init.lua +++ b/lua/Trans/frontend/hover/init.lua @@ -168,22 +168,24 @@ end ---Defer function when process done function M:defer() - self.window:set('wrap', true) - self.buffer:set('modifiable', false) + Trans.util.main_loop(function() + self.window:set('wrap', true) + self.buffer:set('modifiable', false) - local auto_close_events = self.opts.auto_close_events - if not auto_close_events then return end + local auto_close_events = self.opts.auto_close_events + if not auto_close_events then return end - vim.api.nvim_create_autocmd(auto_close_events, { - callback = function(opts) - vim.defer_fn(function() - if not self.pin and vim.api.nvim_get_current_win() ~= self.window.winid then - pcall(vim.api.nvim_del_autocmd, opts.id) - self:destroy() - end - end, 0) - end, - }) + vim.api.nvim_create_autocmd(auto_close_events, { + callback = function(opts) + vim.defer_fn(function() + if not self.pin and vim.api.nvim_get_current_win() ~= self.window.winid then + pcall(vim.api.nvim_del_autocmd, opts.id) + self:destroy() + end + end, 0) + end, + }) + end) end ---Display Result in hover window @@ -221,7 +223,6 @@ function M:process(data) local window = self.window local lines = buffer:lines() - local valid = window and window:is_valid() local width = valid and