-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathview.lua
More file actions
61 lines (51 loc) · 2.34 KB
/
view.lua
File metadata and controls
61 lines (51 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
local config = require("java-deps.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(config.get_split_command())
-- resize to a % of the current window size
vim.cmd("vertical resize " .. config.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, "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", config.options.wrap)
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 ui.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, "JavaProjects")
vim.api.nvim_buf_set_option(self.bufnr, "filetype", "JavaProjects")
vim.api.nvim_buf_set_option(self.bufnr, "modifiable", false)
if config.options.show_numbers or config.options.show_relative_numbers then
vim.api.nvim_win_set_option(self.winnr, "nu", true)
end
if config.options.show_relative_numbers then
vim.api.nvim_win_set_option(self.winnr, "rnu", true)
end
end
function View:close()
vim.api.nvim_win_close(self.winnr, true)
self.winnr = nil
self.bufnr = nil
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