Skip to content

Commit e0c16c1

Browse files
committed
feat(beta): render-markdown.nvim previewer integration
1 parent 175ddbb commit e0c16c1

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,8 @@ require'fzf-lua'.setup {
795795
-- Custom filetype autocmds aren't triggered on
796796
-- the preview buffer, define them here instead
797797
-- ext_ft_override = { ["ksql"] = "sql", ... },
798+
-- render_markdown.nvim integration, enabled by default for markdown
799+
render_markdown = { enable = true, filetypes = { ["markdown"] = true } },
798800
},
799801
-- Code Action previewers, default is "codeaction" (set via `lsp.code_actions.previewer`)
800802
-- "codeaction_native" uses fzf's native previewer, recommended when combined with git-delta

lua/fzf-lua/defaults.lua

+1
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ M.defaults = {
199199
treesitter = { enable = true, disable = {} },
200200
ueberzug_scaler = "cover",
201201
title_fnamemodify = function(s) return path.tail(s) end,
202+
render_markdown = { enable = true, filetypes = { ["markdown"] = true } },
202203
_ctor = previewers.builtin.buffer_or_file,
203204
},
204205
codeaction = {

lua/fzf-lua/previewer/builtin.lua

+23-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ function Previewer.base:new(o, opts, fzf_win)
2727
self.win = fzf_win
2828
self.delay = self.win.winopts.preview.delay or 100
2929
self.title = self.win.winopts.preview.title
30-
self.title_fnamemodify = o.title_fnamemodify
3130
self.title_pos = self.win.winopts.preview.title_pos
31+
self.title_fnamemodify = o.title_fnamemodify
32+
self.render_markdown = o.render_markdown
33+
self.render_markdown.filetypes = type(o.render_markdown.filetypes) == "table" and
34+
o.render_markdown.filetypes or {}
3235
self.winopts = self.win.winopts.preview.winopts
3336
self.syntax = default(o.syntax, true)
3437
self.syntax_delay = tonumber(default(o.syntax_delay, 0))
@@ -404,6 +407,7 @@ function Previewer.base:scroll(direction)
404407
vim.wo[preview_winid].cursorline = false
405408
end
406409
end
410+
self:update_render_markdown()
407411
self.win:update_scrollbar()
408412
end
409413

@@ -650,7 +654,8 @@ function Previewer.buffer_or_file:populate_preview_buf(entry_str)
650654
-- in case of an error display the stacktrace in the preview buffer
651655
local lines = vim.split(res, "\n") or { "null" }
652656
table.insert(lines, 1,
653-
string.format("lsp.util.%s failed for '%s':", utils.__HAS_NVIM_011 and "show_document" or "jump_to_location", entry.uri))
657+
string.format("lsp.util.%s failed for '%s':",
658+
utils.__HAS_NVIM_011 and "show_document" or "jump_to_location", entry.uri))
654659
table.insert(lines, 2, "")
655660
local tmpbuf = self:get_tmp_buffer()
656661
vim.api.nvim_buf_set_lines(tmpbuf, 0, -1, false, lines)
@@ -766,6 +771,20 @@ local ts_attach = function(bufnr, ft)
766771
end
767772
end
768773

774+
function Previewer.base:update_render_markdown(ft)
775+
local bufnr, winid = self.preview_bufnr, self.win.preview_winid
776+
ft = ft or vim.bo[bufnr].ft
777+
if not ft then return end
778+
if not package.loaded["render-markdown"]
779+
or not self.render_markdown.enable
780+
or not self.render_markdown.filetypes[ft]
781+
then
782+
return
783+
end
784+
vim.bo[bufnr].ft = ft
785+
require("render-markdown.core.ui").update(bufnr, winid, "FzfLua", true)
786+
end
787+
769788
function Previewer.buffer_or_file:do_syntax(entry)
770789
if not self.preview_bufnr then return end
771790
if not entry or not entry.path then return end
@@ -829,6 +848,8 @@ function Previewer.buffer_or_file:do_syntax(entry)
829848
end
830849
if not ts_enabled or not ts_success then
831850
pcall(function() vim.bo[bufnr].syntax = ft end)
851+
elseif ts_enabled and ts_success then
852+
self:update_render_markdown(ft)
832853
end
833854
end)()
834855
end

0 commit comments

Comments
 (0)