Files
dotfiles/neovim/.config/nvim/lua/daniil/utils.lua

44 lines
1.2 KiB
Lua

local M = {}
---@return number width, number height
function M.get_terminal_size()
local width = vim.o.columns
local height = vim.o.lines
return width, height
end
---@param width number width in percentage of screen width (0.75, 0.5, etc)
---@param height number height in percentage of screen height (0.75, 0.5, etc)
---@return number buffer, number window
function M.create_floating_window_in_center(width, height)
local bufnr = vim.api.nvim_create_buf(false, true) -- not listed, scratch buffer
local max_width, max_height = M.get_terminal_size()
local win_width = math.floor(max_width * width)
local win_height = math.floor(max_height * height)
local winnr = vim.api.nvim_open_win(bufnr, true, {
relative = "editor",
width = win_width,
height = win_height,
row = (max_height - win_height) / 2,
col = (max_width - win_width) / 2,
focusable = true,
style = "minimal",
})
return bufnr, winnr
end
---@param bufnr number
---@param content string
function M.set_buffer_text(bufnr, content)
local lines = {}
for s in content:gmatch("[^\r\n]+") do
table.insert(lines, s)
end
vim.api.nvim_buf_set_lines(bufnr, 0, vim.tbl_count(lines), false, lines)
end
return M