From 3eb98641127c7dc03da9fc012136cbc2fbd8e929 Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Sun, 23 Jun 2024 05:27:09 -0500 Subject: [PATCH] refactor(nvim): improve mime open autocmd --- .../dots/.config/nvim/lua/core/autocmds.lua | 45 +++++++------------ 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/users/price/dots/.config/nvim/lua/core/autocmds.lua b/users/price/dots/.config/nvim/lua/core/autocmds.lua index 05a0e255..f7597e1f 100644 --- a/users/price/dots/.config/nvim/lua/core/autocmds.lua +++ b/users/price/dots/.config/nvim/lua/core/autocmds.lua @@ -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,