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.
This commit is contained in:
David Ibia
2024-02-08 22:51:47 +01:00
parent bce7208644
commit a0d0658a16
2 changed files with 63 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
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,
})