|
|
|
@ -1,27 +1,14 @@
|
|
|
|
|
--[[
|
|
|
|
|
/*
|
|
|
|
|
* IMPORTS
|
|
|
|
|
*/
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
local api = vim.api
|
|
|
|
|
local go = vim.go
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
/*
|
|
|
|
|
* MODULE
|
|
|
|
|
*/
|
|
|
|
|
--]]
|
|
|
|
|
--[[/* MODULE */]]
|
|
|
|
|
|
|
|
|
|
local Popup = require('libmodal/src/classes').new(
|
|
|
|
|
'libmodal-popup',
|
|
|
|
|
{config = {
|
|
|
|
|
anchor = 'SW',
|
|
|
|
|
col = go.columns - 1,
|
|
|
|
|
col = vim.go.columns - 1,
|
|
|
|
|
focusable = false,
|
|
|
|
|
height = 1,
|
|
|
|
|
relative = 'editor',
|
|
|
|
|
row = go.lines - go.cmdheight - 1,
|
|
|
|
|
row = vim.go.lines - vim.go.cmdheight - 1,
|
|
|
|
|
style = 'minimal',
|
|
|
|
|
width = 1
|
|
|
|
|
}}
|
|
|
|
@ -40,7 +27,7 @@ local Popup = require('libmodal/src/classes').new(
|
|
|
|
|
]]
|
|
|
|
|
----------------------------
|
|
|
|
|
local function valid(window)
|
|
|
|
|
return window and api.nvim_win_is_valid(window)
|
|
|
|
|
return window and vim.api.nvim_win_is_valid(window)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
@ -62,7 +49,7 @@ local _metaPopup = require('libmodal/src/classes').new(Popup.TYPE)
|
|
|
|
|
-------------------------------------
|
|
|
|
|
function _metaPopup:close(keepBuffer)
|
|
|
|
|
if valid(self.window) then
|
|
|
|
|
api.nvim_win_close(self.window, false)
|
|
|
|
|
vim.api.nvim_win_close(self.window, false)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
self.window = nil
|
|
|
|
@ -83,11 +70,11 @@ function _metaPopup:open(config)
|
|
|
|
|
if not config then config = Popup.config end
|
|
|
|
|
|
|
|
|
|
if valid(self.window) then
|
|
|
|
|
config = vim.tbl_extend('keep', config, api.nvim_win_get_config(self.window))
|
|
|
|
|
config = vim.tbl_extend('keep', config, vim.api.nvim_win_get_config(self.window))
|
|
|
|
|
self:close(true)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
self.window = api.nvim_open_win(self.buffer, false, config)
|
|
|
|
|
self.window = vim.api.nvim_open_win(self.buffer, false, config)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---------------------------------------
|
|
|
|
@ -114,22 +101,18 @@ function _metaPopup:refresh(inputBytes)
|
|
|
|
|
self._inputChars = chars
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
api.nvim_buf_set_lines(self.buffer, 0, 1, true, {
|
|
|
|
|
vim.api.nvim_buf_set_lines(self.buffer, 0, 1, true, {
|
|
|
|
|
table.concat(self._inputChars)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if not valid(self.window) or api.nvim_win_get_tabpage(self.window) ~= api.nvim_get_current_tabpage() then
|
|
|
|
|
if not valid(self.window) or vim.api.nvim_win_get_tabpage(self.window) ~= vim.api.nvim_get_current_tabpage() then
|
|
|
|
|
self:open()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
api.nvim_win_set_width(self.window, #self._inputChars)
|
|
|
|
|
vim.api.nvim_win_set_width(self.window, #self._inputChars)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
/*
|
|
|
|
|
* CLASS `Popup`
|
|
|
|
|
*/
|
|
|
|
|
--]]
|
|
|
|
|
--[[/* CLASS `Popup` */]]
|
|
|
|
|
|
|
|
|
|
--------------------
|
|
|
|
|
--[[ SUMMARY:
|
|
|
|
@ -140,11 +123,9 @@ end
|
|
|
|
|
]]
|
|
|
|
|
--------------------
|
|
|
|
|
function Popup.new(config)
|
|
|
|
|
local buf = api.nvim_create_buf(false, true)
|
|
|
|
|
|
|
|
|
|
local self = setmetatable(
|
|
|
|
|
{
|
|
|
|
|
buffer = buf,
|
|
|
|
|
buffer = vim.api.nvim_create_buf(false, true),
|
|
|
|
|
_inputChars = {},
|
|
|
|
|
},
|
|
|
|
|
_metaPopup
|
|
|
|
@ -155,10 +136,6 @@ function Popup.new(config)
|
|
|
|
|
return self
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
|
|
|
/*
|
|
|
|
|
* PUBLICIZE `Popup`
|
|
|
|
|
*/
|
|
|
|
|
--]]
|
|
|
|
|
--[[/* PUBLICIZE `Popup` */]]
|
|
|
|
|
|
|
|
|
|
return Popup
|
|
|
|
|