You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

154 lines
3.8 KiB

local M = require('module'):new()
function M:boot()
self.opts = {
win = {
number = false,
list = false,
colorcolumn = "",
cursorline = false
},
buf = {
}
}
self.is_gui = false
self.is_visible = false
end
function M:run()
if (vim.fn.argc() == 0 or vim.fn.line2byte("$") ~= -1) then -- and not vim.opt.insertmode) then
self:show()
end
end
function M:gui()
local win = vim.api.nvim_get_current_win()
local buf = vim.api.nvim_get_current_buf()
self.is_gui = true
self.opts.win.list = vim.api.nvim_win_get_option(win, 'list')
if (self.is_visible) then
vim.api.nvim_win_set_option(win, 'list', false)
self:draw(buf)
end
end
function M:show()
local height = vim.api.nvim_get_option('lines') - 2
local width = vim.api.nvim_get_option('columns')
local lines = require('data/start')
if (#lines > height) then
return
end
for i=1,#lines do
if (#lines[i] > width) then
return
end
end
self.is_visible = true
local win = vim.api.nvim_get_current_win()
local buf = vim.api.nvim_create_buf(true, true)
self:draw(buf)
vim.api.nvim_buf_set_option(buf, "modified", false)
vim.api.nvim_buf_set_option(buf, "buflisted", false)
vim.api.nvim_buf_set_option(buf, "bufhidden", "wipe")
vim.api.nvim_buf_set_option(buf, "buftype", "nofile")
vim.api.nvim_buf_set_option(buf, "swapfile", false)
for k, v in pairs(self.opts.win) do
old_val = vim.api.nvim_win_get_option(win, k)
vim.api.nvim_win_set_option(win, k, v)
self.opts.win[k] = old_val
end
for k, v in pairs(self.opts.buf) do
old_val = vim.api.nvim_buf_get_option(buf, k)
vim.api.nvim_buf_set_option(buf, k, v)
self.opts.buf[k] = old_val
end
-- vim.api.nvim_win_set_option(win, "number", false)
-- vim.api.nvim_win_set_option(win, "list", false)
-- vim.api.nvim_win_set_option(win, "cursorline", false)
-- vim.api.nvim_win_set_option(win, "colorcolumn", "")
vim.api.nvim_set_current_buf(buf)
vim.api.nvim_create_autocmd("InsertEnter,WinEnter", {
pattern = "<buffer>",
callback = function()
vim.cmd("enew")
self:hide()
end
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "netrw",
callback = function()
self:hide()
end
})
end
function M:hide()
if (not self.is_visible) then
return
end
self.is_visible = false
local buf = vim.api.nvim_get_current_buf()
local win = vim.api.nvim_get_current_win()
vim.api.nvim_buf_set_option(buf, "modifiable", true)
vim.api.nvim_buf_set_option(buf, "buflisted", true)
vim.api.nvim_buf_set_option(buf, "buflisted", true)
-- vim.api.nvim_win_set_option(win, "number", nukevim.config.settings.settings.o.number or false)
-- vim.api.nvim_win_set_option(win, "colorcolumn", nukevim.config.settings.settings.o.cc or nukevim.config.settings.settings.o.colorcolumn or "")
-- vim.api.nvim_win_set_option(win, "cursorline", nukevim.config.settings.settings.o.cursorline or false)
-- if (self.is_gui) then
-- enable_list = nukevim.config.ui.gui.show_whitespace or nukevim.config.ui.tui.show_whitespace or false
-- else
-- enable_list = nukevim.config.ui.tui.show_whitespace or false
-- end
-- vim.api.nvim_win_set_option(win, "list", enable_list)
for k, v in pairs(self.opts.win) do
vim.api.nvim_win_set_option(win, k, v)
end
for k, v in pairs(self.opts.buf) do
vim.api.nvim_buf_set_option(buf, k, v)
end
end
function M:draw(buf)
local height = vim.api.nvim_get_option('lines') - 2
local width = vim.api.nvim_get_option('columns')
local lines = require('data/start')
for i=1,#lines do
lines[i] = self:center(lines[i])
end
vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines)
end
function M:center(string)
width = vim.api.nvim_get_option('columns')
string_length = #string
padding_length = (width - string_length) / 2 - 1
padding = ''
for i=1,padding_length do
padding = padding .. ' '
end
return padding .. string .. padding
end
return M