feat: add max_file_size preview limit and show_hidden_when_empty (#85)
* feat(preview): add `max_file_size` config to skip large file previews Problem: previewing large files (e.g. 500 MB logs, binaries) loads them into a buffer and can freeze or OOM Neovim. `disable_preview` only receives the filename, so users cannot gate on file size. Solution: add `preview_win.max_file_size` (number, MB, default 10). In `open_preview`, check `entry.meta.stat.size` and fall back to `vim.uv.fs_stat` when the cached stat is absent. If the file exceeds the limit and a preview window is already open, render "File too large to preview" in it; if not, emit a WARN notify and return early. The cursor-moved auto-update path only fires when a window already exists, so no flag threading is needed to distinguish explicit from implicit. Based on: stevearc/oil.nvim#213 * feat(view): add `show_hidden_when_empty` for hidden-only directories Problem: with `show_hidden = false`, a directory containing only dotfiles renders as just `..`, giving no indication that entries exist. Solution: add `view_options.show_hidden_when_empty` (boolean, default false). After the main filter loop in `render_buffer`, if the option is set and `#line_table <= 1`, iterate `entry_list` again and render any entry not matched by `is_always_hidden`, using `is_hidden = true` so they render with the dimmed hidden style. Based on: stevearc/oil.nvim#473 * docs(upstream): fix formatting * docs(upstream): update #213 and #473 with PR and commit links
This commit is contained in:
parent
a9a06b8f3b
commit
4a8d57a269
5 changed files with 62 additions and 3 deletions
|
|
@ -807,6 +807,21 @@ local function render_buffer(bufnr, opts)
|
|||
end
|
||||
end
|
||||
|
||||
if config.view_options.show_hidden_when_empty and #line_table <= 1 then
|
||||
for _, entry in ipairs(entry_list) do
|
||||
local name = entry[FIELD_NAME]
|
||||
local public_entry = util.export_entry(entry)
|
||||
if not config.view_options.is_always_hidden(name, bufnr, public_entry) then
|
||||
local cols = M.format_entry_cols(entry, column_defs, col_width, adapter, true, bufnr)
|
||||
table.insert(line_table, cols)
|
||||
if seek_after_render == name then
|
||||
seek_after_render_found = true
|
||||
jump_idx = #line_table
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local lines, highlights = util.render_table(line_table, col_width, col_align)
|
||||
|
||||
vim.bo[bufnr].modifiable = true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue