summaryrefslogtreecommitdiff
path: root/lua/warp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/warp.lua')
-rw-r--r--lua/warp.lua41
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