diff options
Diffstat (limited to 'lua/warp.lua')
-rw-r--r-- | lua/warp.lua | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/lua/warp.lua b/lua/warp.lua index bda64fb..b5cb51c 100644 --- a/lua/warp.lua +++ b/lua/warp.lua @@ -42,6 +42,7 @@ M.open_vertical = function() line = line + 1 end vim.api.nvim_buf_set_lines(M.vert_buf, 0, -1, 0, M.vert_lines) + -- local curpos = vim.api.nvim_win_get_cursor(0) return new_panel(M.vert_buf, 0, 0, real_width, height); end @@ -61,22 +62,6 @@ M.open_horiz = function() max_width + 2, 1) end -M.filter_horiz_string = function(ch) - local new_horiz_line = '' - local i = 1 - - while i <= #M.horiz_line do - local curch = char_at(M.horiz_line, i - 1) - if curch == ch then - new_horiz_line = new_horiz_line .. char_at(M.horiz_line, i) - else - new_horiz_line = new_horiz_line .. ' ' - end - i = i + 1 - end - vim.api.nvim_buf_set_lines(M.horiz_bufnr, 0, -1, 0, {' ' .. new_horiz_line}) -end - M.filter_vert_text = function(ch) local new_vert_text = {} for _, t in pairs(M.vert_lines) do @@ -97,9 +82,13 @@ local function next_char() return vim.fn.nr2char(vim.fn.getchar()) end -M.run = function(strat_fn) - if not strat_fn then - strat_fn = require('warp.strategy.default').default_col_strategy +M.run = function(col_selector, win_selector) + if not col_selector then + col_selector = require('warp.strategy.grid').strategy + end + + if not win_selector then + win_selector = require('warp.win_selectors.current') end local current_pos = vim.api.nvim_win_get_cursor(0) @@ -113,6 +102,15 @@ M.run = function(strat_fn) vim.api.nvim_buf_delete(vim.api.nvim_win_get_buf(win), {force = true}) end + local jump_to_win = win_selector.select_win() + if not jump_to_win then + return + end + vim.cmd([[redraw!]]) + if jump_to_win ~= 0 then + vim.api.nvim_set_current_win(jump_to_win) + end + local read_row = function() w = M.open_vertical() local vch1 = next_char() @@ -136,9 +134,10 @@ M.run = function(strat_fn) if not r then return end - vim.api.nvim_win_set_cursor(0, {r, current_pos[2]}) + vim.cmd("normal! m'") + pcall(function() vim.api.nvim_win_set_cursor(0, {r, current_pos[2]}) end) - local strat = strat_fn() + local strat = col_selector() w = M.open_horiz() local disp = strat.display() if disp then |