mirror of
https://github.com/ray-x/navigator.lua
synced 2024-11-17 15:26:03 +00:00
35 lines
1021 B
Lua
35 lines
1021 B
Lua
|
local lsp = vim.lsp
|
||
|
local util = lsp.util
|
||
|
local M = {}
|
||
|
function M.handler(_, result, ctx, config)
|
||
|
config = config or {}
|
||
|
config.focus_id = ctx.method
|
||
|
if not (result and result.contents) then
|
||
|
vim.notify('No information available')
|
||
|
return
|
||
|
end
|
||
|
local markdown_lines = util.convert_input_to_markdown_lines(result.contents)
|
||
|
markdown_lines = util.trim_empty_lines(markdown_lines)
|
||
|
if vim.tbl_isempty(markdown_lines) then
|
||
|
vim.notify('No information available')
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local opts = {}
|
||
|
opts.wrap = true -- wrapping by default
|
||
|
opts.stylize_markdown = true
|
||
|
opts.focus = true
|
||
|
|
||
|
local contents = lsp.util._trim(markdown_lines, opts)
|
||
|
|
||
|
-- applies the syntax and sets the lines to the buffer
|
||
|
local bufnr, winnr = util.open_floating_preview(markdown_lines, 'markdown', config)
|
||
|
|
||
|
vim.api.nvim_buf_set_option(bufnr, 'modifiable', true)
|
||
|
contents = lsp.util.stylize_markdown(bufnr, contents, opts)
|
||
|
vim.api.nvim_buf_set_option(bufnr, 'modifiable', false)
|
||
|
return bufnr, winnr
|
||
|
end
|
||
|
|
||
|
return M
|