aboutsummaryrefslogtreecommitdiff
path: root/lua/startup/utils.lua
diff options
context:
space:
mode:
authormax397574 <[email protected]>2021-11-06 15:30:28 +0100
committermax397574 <[email protected]>2021-11-06 15:30:28 +0100
commitefee522aa5c5b29a19a7c07d4868130089e0fdb8 (patch)
tree845e3cf1df756cf5e14b6debc61bdf0d99e37742 /lua/startup/utils.lua
parentc4d9bb17d9f8b0bec9d30e4692e46dd5ef5df0ae (diff)
fix(cursor): 🐛if no valid lines go to first/last valid
Diffstat (limited to 'lua/startup/utils.lua')
-rw-r--r--lua/startup/utils.lua68
1 files changed, 57 insertions, 11 deletions
diff --git a/lua/startup/utils.lua b/lua/startup/utils.lua
index d4ec7ae..de686c9 100644
--- a/lua/startup/utils.lua
+++ b/lua/startup/utils.lua
@@ -128,19 +128,45 @@ end
local function move_up()
flag = true
- set_cursor(U.cursor_pos)
- local i = 1
+ local i
+ if new_cursor_pos[1] < U.cursor_pos[1] then
+ if new_cursor_pos[1] == 1 then
+ set_cursor(new_cursor_pos)
+ i = 1
+ while true do
+ if not bad_line() then
+ flag = false
+ return
+ end
+ set_cursor({new_cursor_pos[1]+i,column()})
+ i = i + 1
+ end
+ else
+ set_cursor(new_cursor_pos)
+ i = 0
+ end
+ else
+ set_cursor(U.cursor_pos)
+ i = 1
+ end
while true do
- set_cursor({U.cursor_pos[1]-i,column()})
+ set_cursor({new_cursor_pos[1]-i,column()})
if not bad_line() then
flag = false
return
end
i = i + 1
- if U.cursor_pos[1]-i == 1 then
- set_cursor(U.cursor_pos)
- flag = false
- return
+ if new_cursor_pos[1]-i <= 1 then
+ i = 1
+ set_cursor({1,column()})
+ while true do
+ if not bad_line() then
+ flag = false
+ return
+ end
+ set_cursor({new_cursor_pos[1]+i,column()})
+ i = i + 1
+ end
end
end
flag = false
@@ -149,16 +175,36 @@ end
local function move_down()
flag = true
- set_cursor(U.cursor_pos)
- local i = 1
+ local i
+ if new_cursor_pos[1] > U.cursor_pos[1] then
+ if new_cursor_pos[1] == vim.api.nvim_buf_line_count(0) then
+ set_cursor(new_cursor_pos)
+ i = 1
+ while true do
+ if not bad_line() then
+ flag = false
+ return
+ end
+ set_cursor({new_cursor_pos[1]-i,column()})
+ i = i + 1
+ end
+ i = 0
+ else
+ set_cursor(new_cursor_pos)
+ i = 0
+ end
+ else
+ set_cursor(U.cursor_pos)
+ i = 1
+ end
while true do
- set_cursor({U.cursor_pos[1]+i,column()})
+ set_cursor({new_cursor_pos[1]+i,column()})
if not bad_line() then
flag = false
return
end
i = i + 1
- if U.cursor_pos[1]+i == vim.api.nvim_buf_line_count(0) then
+ if new_cursor_pos[1]+i >= vim.api.nvim_buf_line_count(0) then
set_cursor(U.cursor_pos)
flag = false
return