feat: vterm preview#2558
Conversation
|
Can this also replace chafa/viu/ueberzugpp? |
|
I tried but looks bad, builtin terminal don't seem support them well. require("fzf-lua").fzf_exec("seq 100", {
winopts = { preview = { winopts = { winbl = 0 } } },
previewer = {
_ctor = function()
local p = require("fzf-lua.previewer.builtin").buffer_or_file:extend()
function p:parse_entry(entry)
return {
cmd = {
"sh",
"-c",
-- "fd . --color=always $VIMRUNTIME | head -30",
-- "chafa $VIMRUNTIME/nvim.png",
"viu $VIMRUNTIME/neovim.ico",
},
}
end
return p
end,
},
}) |
|
|
27dbb99 to
e0b4281
Compare
Nice, so we can merge this soon with limit to nightly? |
e0b4281 to
428ed94
Compare
Most of time it work well even not on nightly. Also have some flicker issue when change current preview entry. |
a80d2c4 to
0c65f22
Compare
d0109f2 to
2e95f86
Compare
opts.previewer.nvim_server2 = { vterm = true, _ctor = require('fzf-lua.previewer').fzf.nvim_server }
opts.serverlist.previewer = 'nvim_server2'
fix(preview): avoid vterm flicker (set_buf before term_open/chan_send)
fix(preview): open_term for string[] content previewer
|
Terminal buffer cannot scroll from fzf win, maybe related to neovim/neovim#4895 (comment). This hack can make it work. vim.cmd([[hor below pedit tmp]])
local win = vim.fn.win_getid(vim.fn.winnr("j"))
local term_preview = function(cmd)
local newbuf = api.nvim_create_buf(false, true)
-- vim.api.nvim_buf_call(newbuf, function()
-- vim.fn.jobstart(cmd, {
-- term = true,
-- on_exit = function()
-- vim._with({ noautocmd = true }, function()
-- api.nvim_win_set_buf(win, newbuf)
-- end)
-- end,
-- })
-- end)
api.nvim_buf_call(newbuf, function()
vim.cmd([[noau 0r! ]] .. cmd)
-- api.nvim_create_autocmd("ChanOpen", {
-- buffer = newbuf,
-- once = true,
-- callback = function() end,
-- })
api.nvim_open_term(newbuf, {})
vim.schedule(function()
api.nvim_win_set_buf(win, newbuf)
end)
end)
end
local new = function()
term_preview("fd --color=always . " .. vim.env.VIMRUNTIME)
end
local scroll_down = function()
local curwin = api.nvim_get_current_win()
vim.api.nvim_set_current_win(win)
vim.defer_fn(function()
vim.api.nvim_feedkeys("�", "nt", false)
vim.defer_fn(function()
vim.api.nvim_set_current_win(curwin)
end, 30)
end, 30)
end
vim.keymap.set("n", "<c-j>", new)
vim.keymap.set("n", "<c-d>", scroll_down) |
stopinsert -> schedule -> scorll -> startinsert
2e95f86 to
4320be2
Compare
|
You marked this ready, shall I merge? |
sometime it don't seem correct, but should better than none
|
Yeah, I think it's ready for merge. |
So for now we keep it just as a backup previewer? |
|
Yes. Can switch by: |
|
Ty @phanen! |
No description provided.