summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2024-03-14 17:28:13 +0000
committerJosh Rahm <rahm@google.com>2024-03-14 17:28:13 +0000
commit3273549e2e997767c6d6c347bde9e590d8c182cd (patch)
tree30c73137fc020373b302e681cbaddfd66250dba8
parent0b8f5ede2d37ad302f9a892b7bc099cb3bdfaca0 (diff)
downloadnvim-warp-3273549e2e997767c6d6c347bde9e590d8c182cd.tar.gz
nvim-warp-3273549e2e997767c6d6c347bde9e590d8c182cd.tar.bz2
nvim-warp-3273549e2e997767c6d6c347bde9e590d8c182cd.zip
Change warp to vary the width if virtualedit is enabled.
-rw-r--r--lua/warp/col_selectors/grid.lua13
-rw-r--r--lua/warp/util.lua12
2 files changed, 22 insertions, 3 deletions
diff --git a/lua/warp/col_selectors/grid.lua b/lua/warp/col_selectors/grid.lua
index ce99b96..7ad5847 100644
--- a/lua/warp/col_selectors/grid.lua
+++ b/lua/warp/col_selectors/grid.lua
@@ -44,7 +44,18 @@ M.strategy = function()
display = function()
local curpos = vim.api.nvim_win_get_cursor(0)
local line_at = vim.fn.getline(curpos[1])
- local unfiltered = big_line:sub(1, #line_at + 1)
+ local current_win = vim.api.nvim_get_current_win();
+ local wininfo = vim.fn.getwininfo(current_win)[1]
+
+ local width = wininfo.width - wininfo.textoff
+ if vim.o.virtualedit ~= 'all' then
+ width = math.min(#line_at + 1, width)
+ end
+ if vim.o.virtualedit == 'onemore' then
+ width = width + 1
+ end
+
+ local unfiltered = big_line:sub(1, width)
local line = unfiltered
if filter then
diff --git a/lua/warp/util.lua b/lua/warp/util.lua
index 4f1858e..7030e59 100644
--- a/lua/warp/util.lua
+++ b/lua/warp/util.lua
@@ -29,11 +29,19 @@ M.open_horiz = function()
local horiz_bufnr = vim.api.nvim_create_buf(0, 1)
local line_at = vim.fn.getline(curpos[1])
- local max_width = math.min(width, #line_at + 1)
+
+ local max_width = math.min(
+ width, #line_at + 1 + (vim.o.virtualedit == 'onemore' and 1 or 0))
+ if vim.o.virtualedit == 'all' then
+ max_width = width
+ end
return {
buf = horiz_bufnr,
- panel = M.new_panel(horiz_bufnr, curpos[1] - topline + 1, width_of_garbage - 1,
+ panel = M.new_panel(
+ horiz_bufnr,
+ curpos[1] - topline + 1,
+ width_of_garbage - 1,
max_width + 2, 1)
}
end