From c23fe08e0546d9efc242e19f0d829efa7e7b2743 Mon Sep 17 00:00:00 2001 From: Steve Walker <65963536+stevalkr@users.noreply.github.com> Date: Wed, 13 Nov 2024 00:24:39 +0800 Subject: [PATCH] feat: disable preview for large files (#511) * feat: disable preview for large files fix: update oil.PreviewWindowConfig * refactor: remove unnecessary shim in config.lua * refactor: revert changes to shim --------- Co-authored-by: Steve Walker <65963536+etherswangel@users.noreply.github.com> Co-authored-by: Steven Arcangeli <506791+stevearc@users.noreply.github.com> --- README.md | 2 ++ doc/oil.txt | 2 ++ lua/oil/config.lua | 4 ++++ lua/oil/init.lua | 7 +++++++ 4 files changed, 15 insertions(+) diff --git a/README.md b/README.md index 6bf0282..79b9636 100644 --- a/README.md +++ b/README.md @@ -271,6 +271,8 @@ require("oil").setup({ preview_win = { -- Whether the preview window is automatically updated when the cursor is moved update_on_cursor_moved = true, + -- Maximum file size in megabytes to preview + max_file_size_mb = 100, }, -- Configuration for the floating action confirmation window confirmation = { diff --git a/doc/oil.txt b/doc/oil.txt index b4ebf1f..3283036 100644 --- a/doc/oil.txt +++ b/doc/oil.txt @@ -156,6 +156,8 @@ CONFIG *oil-confi preview_win = { -- Whether the preview window is automatically updated when the cursor is moved update_on_cursor_moved = true, + -- Maximum file size in megabytes to preview + max_file_size_mb = 100, }, -- Configuration for the floating action confirmation window confirmation = { diff --git a/lua/oil/config.lua b/lua/oil/config.lua index 31e25f2..17874b7 100644 --- a/lua/oil/config.lua +++ b/lua/oil/config.lua @@ -141,6 +141,8 @@ local default_config = { preview_win = { -- Whether the preview window is automatically updated when the cursor is moved update_on_cursor_moved = true, + -- Maximum file size in megabytes to preview + max_file_size_mb = 100, }, -- Configuration for the floating action confirmation window confirmation = { @@ -323,11 +325,13 @@ local M = {} ---@class (exact) oil.PreviewWindowConfig ---@field update_on_cursor_moved boolean +---@field max_file_size_mb number ---@class (exact) oil.ConfirmationWindowConfig : oil.WindowConfig ---@class (exact) oil.SetupPreviewWindowConfig ---@field update_on_cursor_moved? boolean Whether the preview window is automatically updated when the cursor is moved +---@field max_file_size_mb? number Maximum file size in megabytes to preview ---@class (exact) oil.SetupConfirmationWindowConfig : oil.SetupWindowConfig diff --git a/lua/oil/init.lua b/lua/oil/init.lua index 600ccc5..69f9780 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -452,6 +452,13 @@ M.open_preview = function(opts, callback) if not entry then return finish("Could not find entry under cursor") end + if entry.meta ~= nil and entry.meta.stat ~= nil then + if entry.meta.stat.size >= config.preview_win.max_file_size_mb * 1e6 then + return finish( + "File over " .. config.preview_win.max_file_size_mb .. "MB is too large to preview" + ) + end + end local entry_title = entry.name if entry.type == "directory" then entry_title = entry_title .. "/"