[NeoVim] Display PNGs directly in floating windows
This commit is contained in:
@@ -21,10 +21,34 @@
|
||||
:<S-Left> (fn [])}}
|
||||
:commands {:custom_open (fn [state]
|
||||
(let [node (state.tree:get_node)
|
||||
quoted_path (.. "'" (.. (node:get_id) "'"))]
|
||||
(exec [[:silent "!file -bL --mime" quoted_path "| grep -qv '^text\\|^inode' && xdg-open" quoted_path "&"]])
|
||||
(if (= vim.v.shell_error 1)
|
||||
((. (require :neo-tree.sources.filesystem.commands) :open) state))))}}
|
||||
path (node:get_id)
|
||||
quoted_path (.. "'" (.. path "'"))]
|
||||
(match (path:match "^.+%.(.+)$")
|
||||
"png" (let [bufnr (vim.api.nvim_create_buf false true)
|
||||
image (: (require :hologram.image) :new path {})
|
||||
max_width (- vim.o.columns 4)
|
||||
max_height (- vim.o.lines 2)
|
||||
tmp_width (math.min image.cols max_width)
|
||||
tmp_height (* image.rows (/ tmp_width image.cols))
|
||||
height (math.min tmp_height max_height)
|
||||
width (* image.cols (/ height image.rows))
|
||||
winnr (vim.api.nvim_open_win bufnr true {:relative "editor"
|
||||
:width (math.ceil width)
|
||||
:height (+ (math.ceil height) 1)
|
||||
:row 0
|
||||
:col 2})]
|
||||
(exec [[:setlocal "nonumber"]])
|
||||
(vim.api.nvim_buf_attach bufnr false {:on_detach (fn [_ bufnr]
|
||||
(image:delete bufnr {:free true}))})
|
||||
(image:display 1 0 bufnr {}))
|
||||
_ (do
|
||||
(exec [[:silent
|
||||
"!file -bL --mime" quoted_path
|
||||
"| grep -qv '^text\\|^inode' "
|
||||
"&& xdg-open" quoted_path
|
||||
"&"]])
|
||||
(if (= vim.v.shell_error 1)
|
||||
((. (require :neo-tree.sources.filesystem.commands) :open) state))))))}}
|
||||
:renderers {:directory [[:indent]
|
||||
[:icon]
|
||||
[:current_filter]
|
||||
|
||||
Reference in New Issue
Block a user