From 1aad2d6e20b8f2dac1a97ec89ba5dcae06c01569 Mon Sep 17 00:00:00 2001 From: Steve Walker <65963536+etherswangel@users.noreply.github.com> Date: Fri, 8 Nov 2024 20:47:20 +0800 Subject: [PATCH] feat: disable preview for large files --- README.md | 2 ++ doc/oil.txt | 2 ++ lua/oil/config.lua | 3 +++ lua/oil/init.lua | 5 +++++ 4 files changed, 12 insertions(+) diff --git a/README.md b/README.md index 6bf02823..47328a3e 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 = 100, }, -- Configuration for the floating action confirmation window confirmation = { diff --git a/doc/oil.txt b/doc/oil.txt index b4ebf1fd..f0f81d92 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 = 100, }, -- Configuration for the floating action confirmation window confirmation = { diff --git a/lua/oil/config.lua b/lua/oil/config.lua index 31e25f2a..76a45d7c 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 = 100, }, -- Configuration for the floating action confirmation window confirmation = { @@ -328,6 +330,7 @@ local M = {} ---@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? 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 600ccc5e..c04c81c5 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -452,6 +452,11 @@ M.open_preview = function(opts, callback) if not entry then return finish("Could not find entry under cursor") end + if entry.meta ~= nil or entry.meta.stat ~= nil then + if entry.meta.stat.size >= config.preview.max_file_size * 1e6 then + return finish("File over " .. config.preview.max_file_size .. "MB is too large to preview ") + end + end local entry_title = entry.name if entry.type == "directory" then entry_title = entry_title .. "/"