MAJOR: Project rename and preparation for v1.0.0
I hope I haven't missed any for the renames!
This commit is contained in:
75
lua/outline/view.lua
Normal file
75
lua/outline/view.lua
Normal file
@@ -0,0 +1,75 @@
|
||||
local cfg = require('outline.config')
|
||||
|
||||
local View = {}
|
||||
|
||||
function View:new()
|
||||
return setmetatable({ bufnr = nil, winnr = nil }, { __index = View })
|
||||
end
|
||||
|
||||
---creates the outline window and sets it up
|
||||
function View:setup_view()
|
||||
-- create a scratch unlisted buffer
|
||||
self.bufnr = vim.api.nvim_create_buf(false, true)
|
||||
|
||||
-- delete buffer when window is closed / buffer is hidden
|
||||
vim.api.nvim_buf_set_option(self.bufnr, 'bufhidden', 'delete')
|
||||
-- create a split
|
||||
vim.cmd(cfg.get_split_command())
|
||||
-- resize to a % of the current window size
|
||||
vim.cmd('vertical resize ' .. cfg.get_window_width())
|
||||
|
||||
-- get current (outline) window and attach our buffer to it
|
||||
self.winnr = vim.api.nvim_get_current_win()
|
||||
vim.api.nvim_win_set_buf(self.winnr, self.bufnr)
|
||||
|
||||
-- window stuff
|
||||
vim.api.nvim_win_set_option(self.winnr, 'spell', false)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'signcolumn', 'no')
|
||||
vim.api.nvim_win_set_option(self.winnr, 'foldcolumn', '0')
|
||||
vim.api.nvim_win_set_option(self.winnr, 'number', false)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'relativenumber', false)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'winfixwidth', true)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'list', false)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'wrap', cfg.o.outline_window.wrap)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'winhl', cfg.o.outline_window.winhl)
|
||||
vim.api.nvim_win_set_option(self.winnr, 'linebreak', true) -- only has effect when wrap=true
|
||||
vim.api.nvim_win_set_option(self.winnr, 'breakindent', true) -- only has effect when wrap=true
|
||||
-- Would be nice to use guides.markers.vertical as part of showbreak to keep
|
||||
-- continuity of the tree UI, but there's currently no way to style the
|
||||
-- color, apart from globally overriding hl-NonText, which will potentially
|
||||
-- mess with other theme/user settings. So just use empty spaces for now.
|
||||
vim.api.nvim_win_set_option(self.winnr, 'showbreak', ' ') -- only has effect when wrap=true.
|
||||
-- buffer stuff
|
||||
vim.api.nvim_buf_set_name(self.bufnr, 'OUTLINE')
|
||||
vim.api.nvim_buf_set_option(self.bufnr, 'filetype', 'Outline')
|
||||
vim.api.nvim_buf_set_option(self.bufnr, 'modifiable', false)
|
||||
|
||||
if cfg.o.outline_window.show_numbers or cfg.o.outline_window.show_relative_numbers then
|
||||
vim.api.nvim_win_set_option(self.winnr, 'nu', true)
|
||||
end
|
||||
|
||||
if cfg.o.outline_window.show_relative_numbers then
|
||||
vim.api.nvim_win_set_option(self.winnr, 'rnu', true)
|
||||
end
|
||||
|
||||
if cfg.o.outline_window.show_cursorline then
|
||||
vim.api.nvim_win_set_option(self.winnr, 'cursorline', true)
|
||||
end
|
||||
end
|
||||
|
||||
function View:close()
|
||||
if self.winnr then
|
||||
vim.api.nvim_win_close(self.winnr, true)
|
||||
self.winnr = nil
|
||||
self.bufnr = nil
|
||||
end
|
||||
end
|
||||
|
||||
function View:is_open()
|
||||
return self.winnr
|
||||
and self.bufnr
|
||||
and vim.api.nvim_buf_is_valid(self.bufnr)
|
||||
and vim.api.nvim_win_is_valid(self.winnr)
|
||||
end
|
||||
|
||||
return View
|
||||
Reference in New Issue
Block a user