Skip to content

Commit 1c6bafc

Browse files
committed
preview maven deps
1 parent 01b42eb commit 1c6bafc

File tree

4 files changed

+57
-34
lines changed

4 files changed

+57
-34
lines changed

lua/java-deps.lua

+6-4
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ local function setup_global_autocmd()
4444
})
4545
end
4646

47-
local function setup_buffer_autocmd(buf)
47+
local function setup_buffer_autocmd()
4848
if config.options.auto_preview then
4949
vim.api.nvim_create_autocmd("CursorHold", {
50-
buffer = buf,
50+
buffer = 0,
5151
callback = require("java-deps.preview").show,
5252
})
5353
else
5454
vim.api.nvim_create_autocmd("CursorMoved", {
55-
buffer = buf,
55+
buffer = 0,
5656
callback = require("java-deps.preview").close,
5757
})
5858
end
@@ -244,6 +244,8 @@ local function setup_keymaps(bufnr)
244244
map(config.options.keymaps.open_file, function()
245245
M._set_folded_or_open(true)
246246
end)
247+
-- preview symbol
248+
map(config.options.keymaps.toggle_preview, require("java-deps.preview").toggle)
247249
-- fold selection
248250
map(config.options.keymaps.fold, function()
249251
M._set_folded(true)
@@ -282,7 +284,7 @@ local function handler(response)
282284
})
283285

284286
setup_keymaps(M.view.bufnr)
285-
setup_buffer_autocmd(M.state.code_buf)
287+
setup_buffer_autocmd()
286288

287289
local items = parser.parse(response)
288290

lua/java-deps/config.lua

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ local M = {
99
relative_width = true,
1010
show_numbers = false,
1111
show_relative_numbers = false,
12+
preview_bg_highlight = "Pmenu",
13+
winblend = 0,
1214
request_timeout = 3000,
1315
autofold_depth = 0,
1416
fold_markers = { "", "" },
@@ -19,6 +21,7 @@ local M = {
1921
open_file = "o",
2022
close = { "<Esc>", "q" },
2123
show_help = "?",
24+
toggle_preview = "K",
2225
fold = "h",
2326
unfold = "l",
2427
fold_all = "W",
@@ -48,6 +51,9 @@ M.setup = function(config)
4851
end
4952
end
5053

54+
function M.has_numbers()
55+
return M.options.show_numbers or M.options.show_relative_numbers
56+
end
5157
local function has_value(tab, val)
5258
for _, value in ipairs(tab) do
5359
if value == val then

lua/java-deps/parser.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ local function parse_result(result, depth, hierarchy, parent)
2121

2222
local node = {
2323
entryKind = value.entryKind,
24-
mateData = value.mateData,
24+
metaData = value.metaData,
2525
handlerIdentifier = value.handlerIdentifier,
2626
kind = value.kind,
2727
uri = value.uri,

lua/java-deps/preview.lua

+44-29
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ end
5252

5353
local function get_hovered_node()
5454
local hovered_line = vim.api.nvim_win_get_cursor(jd.view.winnr)[1]
55-
local node = jd.state.outline_items[hovered_line]
55+
local node = jd.state.flattened_outline_items[hovered_line]
5656
return node
5757
end
5858

@@ -92,11 +92,9 @@ end
9292

9393
local function get_hover_params(node, winnr)
9494
local bufnr = vim.api.nvim_win_get_buf(winnr)
95-
local uri = vim.uri_from_bufnr(bufnr)
96-
95+
-- local uri = vim.uri_from_bufnr(bufnr)
9796
return {
98-
textDocument = { uri = uri },
99-
position = { line = node.line, character = node.character },
97+
node = node,
10098
bufnr = bufnr,
10199
}
102100
end
@@ -111,37 +109,54 @@ local function update_hover()
111109
return
112110
end
113111

114-
local provider = _G._java_deps_outline_current_provider
115-
local params = get_hover_params(node, jd.state.code_win)
116-
117-
provider.hover_info(params.bufnr, params, function(err, result)
118-
if err then
119-
print(vim.inspect(err))
112+
local content
113+
if node.metaData and node.metaData["maven.groupId"] then
114+
content = "```xml\n<dependency>\n"
115+
.. "\t<groupId>"
116+
.. node.metaData["maven.groupId"]
117+
.. "</groupId>\n"
118+
.. "\t<artifactId>"
119+
.. node.metaData["maven.artifactId"]
120+
.. "</artifactId>\n"
121+
.. "\t<version>"
122+
.. node.metaData["maven.version"]
123+
.. "</version>\n"
124+
125+
if node.metaData["maven.scope"] then
126+
content = content .. "\t<scope>" .. node.metaData["maven.scope"] .. "</scope>\n"
120127
end
121-
local markdown_lines = {}
122-
if result ~= nil then
123-
markdown_lines = vim.lsp.util.convert_input_to_markdown_lines(result.contents)
124-
end
125-
markdown_lines = vim.lsp.util.trim_empty_lines(markdown_lines)
126-
if vim.tbl_isempty(markdown_lines) then
127-
markdown_lines = { "###No info available!" }
128+
if node.metaData["maven.optionaldependency"] then
129+
content = content .. "\t<options>" .. node.metaData["maven.optionaldependency"] .. "</options>\n"
128130
end
131+
content = content .. "</dependency>\n```"
132+
else
133+
return
134+
end
129135

130-
markdown_lines = vim.lsp.util.stylize_markdown(state.hover_buf, markdown_lines, {})
136+
local mdstring = {
137+
{ kind = "markdown", value = content },
138+
{ kind = "markdown", value = "[" .. node.name .. "](" .. node.path .. ")" },
139+
}
140+
local markdown_lines = vim.lsp.util.convert_input_to_markdown_lines(mdstring)
141+
markdown_lines = vim.lsp.util.trim_empty_lines(markdown_lines)
142+
if vim.tbl_isempty(markdown_lines) then
143+
markdown_lines = { "###No info available!" }
144+
end
131145

132-
if state.hover_buf ~= nil then
133-
vim.api.nvim_buf_set_lines(state.hover_buf, 0, -1, 0, markdown_lines)
134-
end
135-
end)
146+
markdown_lines = vim.lsp.util.stylize_markdown(state.hover_buf, markdown_lines, {})
147+
148+
if state.hover_buf ~= nil then
149+
vim.api.nvim_buf_set_lines(state.hover_buf, 0, -1, 0, markdown_lines)
150+
end
136151
end
137152

138153
local function setup_hover_buf()
139154
if not has_code_win() then
140155
return
141156
end
142-
local code_buf = vim.api.nvim_win_get_buf(jd.state.code_win)
143-
local ft = vim.api.nvim_buf_get_option(code_buf, "filetype")
144-
vim.api.nvim_buf_set_option(state.hover_buf, "syntax", ft)
157+
-- local code_buf = vim.api.nvim_win_get_buf(jd.state.code_win)
158+
-- local ft = vim.api.nvim_buf_get_option(code_buf, "filetype")
159+
-- vim.api.nvim_buf_set_option(state.hover_buf, "syntax", "xml")
145160
vim.api.nvim_buf_set_option(state.hover_buf, "bufhidden", "delete")
146161
vim.api.nvim_win_set_option(state.hover_win, "wrap", true)
147162
vim.api.nvim_win_set_option(state.hover_win, "cursorline", false)
@@ -150,10 +165,10 @@ end
150165

151166
local function set_bg_hl()
152167
local winhi = "Normal:" .. config.options.preview_bg_highlight
153-
vim.api.nvim_win_set_option(state.preview_win, "winhighlight", winhi)
168+
-- vim.api.nvim_win_set_option(state.preview_win, "winhighlight", winhi)
154169
vim.api.nvim_win_set_option(state.hover_win, "winhighlight", winhi)
155170
local winblend = config.options.winblend
156-
vim.api.nvim_win_set_option(state.preview_win, "winblend", winblend)
171+
-- vim.api.nvim_win_set_option(state.preview_win, "winblend", winblend)
157172
vim.api.nvim_win_set_option(state.hover_win, "winblend", winblend)
158173
end
159174

@@ -213,7 +228,7 @@ function M.show()
213228
return
214229
end
215230

216-
show_preview()
231+
-- show_preview()
217232
show_hover()
218233
set_bg_hl()
219234
end

0 commit comments

Comments
 (0)