Files
absolute-vim/lua/absolute/after/hologram.lua
David Ibia a0d0658a16 feat(hologram.lua): add support for hologram plugin to display and handle image previews in Neovim
This commit adds two new files: `hologram.lua` and `hologram.lua`.

The `hologram.lua` file contains the configuration for the `hologram.nvim` plugin. It is responsible for setting up the plugin and linking it to the `absolute.after.hologram` file.

The `hologram.lua` file contains the implementation for handling image previews using the `hologram` and `image` modules. It sets up autocmds to trigger the `handle_image_preview` function when entering or opening a buffer with an image file. The function creates a new image object and displays it for 5 seconds before deleting it. There is also a `handle_image_preview_close` function that is triggered when leaving or closing a buffer with an image file, but it is currently commented out.

These changes were made to enhance the functionality of Neovim by allowing users to preview images within the editor using the `hologram.nvim` plugin.
2024-02-08 22:51:47 +01:00

58 lines
1.5 KiB
Lua

local hologram = require("hologram")
local image = require("hologram.image")
-- Image should appear below this line, then disappear after 5 seconds
hologram.setup({
auto_display = true,
})
--[[
id: (number) autocommand id
event: (string) name of the triggered event |autocmd-events|
group: (number|nil) autocommand group id, if any
match: (string) expanded value of |<amatch>|
buf: (number) expanded value of |<abuf>|
file: (string) expanded value of |<afile>|
data: (any) arbitrary data passed |nvim_exec_autocmds()| ]]
local new_image = nil
local function handle_image_preview(arguments)
-- get the file path
local file = arguments.file
local buf = arguments.buf
--[[
print("Hologram activated")
print("File: " .. file) ]]
new_image = image:new(file, {}):display(5, 0, buf, {})
vim.defer_fn(function()
new_image:delete(0, { free = true })
end, 10000)
end
local function handle_image_preview_close()
-- Check if New Image is not nil explicitly
-- if new_image == nil then
-- return
-- end
--
-- new_image:delete(0, { free = true })
-- new_image = nil
end
local image_pattern = { "*.png", ".jpg", ".jpeg", ".gif" }
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
pattern = image_pattern,
callback = handle_image_preview,
})
vim.api.nvim_create_autocmd({ "BufLeave", "BufWinLeave" }, {
pattern = image_pattern,
callback = handle_image_preview_close,
})