mirror of
https://github.com/Iron-E/nvim-libmodal
synced 2024-11-10 13:10:29 +00:00
feat(Mode): self:switch
This commit is contained in:
parent
d5307b2a16
commit
68927a3b11
@ -138,6 +138,8 @@ function Mode:enter()
|
||||
end
|
||||
|
||||
--- exit this instance of the mode.
|
||||
--- WARN: does not interrupt the current mode to exit. It only flags that exit is desired for when control yields back
|
||||
--- to the mode.
|
||||
--- @return nil
|
||||
function Mode:exit()
|
||||
self.local_exit = true
|
||||
@ -191,6 +193,32 @@ function Mode:get_user_input()
|
||||
return true
|
||||
end
|
||||
|
||||
--- clears and then renders the virtual cursor
|
||||
--- @private
|
||||
function Mode:redraw_virtual_cursor()
|
||||
self:clear_virt_cursor()
|
||||
self:render_virt_cursor()
|
||||
end
|
||||
|
||||
--- render the virtual cursor using extmarks
|
||||
--- @private
|
||||
function Mode:render_virt_cursor()
|
||||
local line_nr, col_nr = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
line_nr = line_nr - 1 -- win_get_cursor returns +1 for our purpose
|
||||
vim.highlight.range(0, self.ns, 'Cursor', { line_nr, col_nr }, { line_nr, col_nr + 1 }, {})
|
||||
end
|
||||
|
||||
--- `enter` a `Mode` using the arguments given, and then flag the current mode to exit.
|
||||
--- @param ... unknown arguments to `Mode.new`
|
||||
--- @return nil
|
||||
--- @see libmodal.Mode.enter which `...` shares the layout of
|
||||
--- @see libmodal.Mode.exit
|
||||
function Mode:switch(...)
|
||||
local mode = Mode.new(...)
|
||||
mode:enter()
|
||||
self:exit()
|
||||
end
|
||||
|
||||
--- uninitialize variables from after exiting the mode.
|
||||
--- @private
|
||||
--- @return nil
|
||||
@ -216,21 +244,6 @@ function Mode:tear_down()
|
||||
utils.api.redraw()
|
||||
end
|
||||
|
||||
--- clears and then renders the virtual cursor
|
||||
--- @private
|
||||
function Mode:redraw_virtual_cursor()
|
||||
self:clear_virt_cursor()
|
||||
self:render_virt_cursor()
|
||||
end
|
||||
|
||||
--- render the virtual cursor using extmarks
|
||||
--- @private
|
||||
function Mode:render_virt_cursor()
|
||||
local line_nr, col_nr = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
line_nr = line_nr - 1 -- win_get_cursor returns +1 for our purpose
|
||||
vim.highlight.range(0, self.ns, 'Cursor', { line_nr, col_nr }, { line_nr, col_nr + 1 }, {})
|
||||
end
|
||||
|
||||
--- create a new mode.
|
||||
--- @private
|
||||
--- @param name string the name of the mode.
|
||||
|
Loading…
Reference in New Issue
Block a user