refactor(nvim): improve mime open autocmd
This commit is contained in:
parent
6d07d72121
commit
3eb9864112
@ -86,8 +86,8 @@ M.setup = function()
|
||||
|
||||
---@type string? The file extension if detected
|
||||
local extension = vim.fn.fnamemodify(path, ":e")
|
||||
---@type string? The filename if detected
|
||||
local filename = vim.fn.fnamemodify(path, ":t")
|
||||
---@type string The filename if detected
|
||||
local filename = vim.fn.fnamemodify(path, ":t") or "[Unknown Filename]"
|
||||
|
||||
---Open a given file path in a given program and remove the buffer for the file.
|
||||
---@param buf integer The buffer handle for the opening buffer
|
||||
@ -104,35 +104,22 @@ M.setup = function()
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end
|
||||
|
||||
local extension_callbacks = {
|
||||
["pdf"] = open_mime,
|
||||
["djvu"] = "pdf",
|
||||
["wav"] = open_mime,
|
||||
["png"] = open_mime,
|
||||
["jpg"] = "png",
|
||||
["docx"] = open_mime,
|
||||
["mp4"] = open_mime,
|
||||
["webm"] = open_mime,
|
||||
["pptx"] = open_mime,
|
||||
["gif"] = "mp4",
|
||||
local extensions = {
|
||||
"pdf",
|
||||
"djvu",
|
||||
"wav",
|
||||
"png",
|
||||
"jpg",
|
||||
"docx",
|
||||
"mp4",
|
||||
"webm",
|
||||
"pptx",
|
||||
"gif",
|
||||
}
|
||||
|
||||
---Get the extension callback for a given extension. Will do a recursive lookup if an extension callback is actually
|
||||
---of type string to get the correct extension
|
||||
---@param ext string A file extension. Example: `png`.
|
||||
---@return fun(bufnr: integer, path: string, filename: string?) extension_callback The extension callback to invoke, expects a buffer handle, file path, and filename.
|
||||
local function extension_lookup(ext)
|
||||
local callback = extension_callbacks[ext]
|
||||
if type(callback) == "string" then
|
||||
callback = extension_lookup(callback)
|
||||
end
|
||||
return callback
|
||||
end
|
||||
|
||||
if extension ~= nil and not extension:match("^%s*$") and intercept_file_open then
|
||||
local callback = extension_lookup(extension)
|
||||
if type(callback) == "function" then
|
||||
callback(bufnr, path, filename)
|
||||
if extension and not extension:match("^%s*$") and intercept_file_open then
|
||||
if vim.list_contains(extensions, extension) then
|
||||
open_mime(bufnr, path, filename)
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
Loading…
Reference in New Issue
Block a user