From d568672b40d05dbe515cb74459986bdf5d48e086 Mon Sep 17 00:00:00 2001 From: max397574 Date: Wed, 20 Oct 2021 20:16:01 +0200 Subject: =?UTF-8?q?feat(utils):=20=E2=9C=A8added=20function=20to=20positio?= =?UTF-8?q?n=20cursor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/startup/utils.lua | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'lua/startup/utils.lua') diff --git a/lua/startup/utils.lua b/lua/startup/utils.lua index d62c413..0734a38 100644 --- a/lua/startup/utils.lua +++ b/lua/startup/utils.lua @@ -6,6 +6,8 @@ local colors = { tools_fg = "#009900", } +U.cursor_pos = vim.api.nvim_win_get_cursor(0) + function U.spaces(amount) return string.rep(" ", amount) end @@ -54,6 +56,70 @@ function U.get_oldfiles_directory(amount) return oldfiles end +-- BUG: check if cursor could get out of bounds +function U.reposition_cursor() + if vim.o.filetype ~= "startup" then + return + end + local column = math.floor(vim.o.columns / 2) + print "U.cursor_pos:" + dump(U.cursor_pos) + local new_cursor_pos = vim.api.nvim_win_get_cursor(0) + if + vim.trim(vim.api.nvim_get_current_line()) ~= "" + and new_cursor_pos[2] == column + then + print "returned" + return + elseif + vim.trim(vim.api.nvim_get_current_line()) ~= "" + and new_cursor_pos[2] > column + and new_cursor_pos[1] == U.cursor_pos[1] + then + local i = 1 + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] + i, column }) + while vim.trim(vim.api.nvim_get_current_line()) == "" do + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] + i, column }) + i = i + 1 + end + elseif + vim.trim(vim.api.nvim_get_current_line()) ~= "" + and new_cursor_pos[2] < column + and new_cursor_pos[1] == U.cursor_pos[1] + then + local i = 1 + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] - i, column }) + while vim.trim(vim.api.nvim_get_current_line()) == "" do + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] - i, column }) + i = i + 1 + end + elseif + vim.trim(vim.api.nvim_get_current_line()) == "" + and new_cursor_pos[1] < U.cursor_pos[1] + then + local i = 1 + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] - i, column }) + while vim.trim(vim.api.nvim_get_current_line()) == "" do + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] - i, column }) + i = i + 1 + end + elseif + vim.trim(vim.api.nvim_get_current_line()) == "" + and new_cursor_pos[1] > U.cursor_pos[1] + then + local i = 1 + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] + i, column }) + while vim.trim(vim.api.nvim_get_current_line()) == "" do + vim.api.nvim_win_set_cursor(0, { new_cursor_pos[1] + i, column }) + i = i + 1 + end + end + + U.cursor_pos = vim.api.nvim_win_get_cursor(0) + print "new_cursor_pos:" + dump(new_cursor_pos) +end + function U.longest_line(lines) local longest = 0 for _, line in ipairs(lines) do -- cgit v1.2.3