Problem: documentation was spread across four files (README.md,
doc/oil.txt, doc/api.md, doc/recipes.md) with duplication and gaps.
User events were undocumented, and adapter docs only lived in the
README.
Solution: expand doc/oil.txt with five new sections (introduction,
requirements, adapters, recipes, events) from existing content. Trim
README to a landing page pointing to :help oil. Delete doc/api.md
and doc/recipes.md since their content now lives in the helpdoc.
Closes: barrettruth/oil.nvim#6
Problem: the docgen workflow pushed directly to main, which is blocked
by repository rulesets. No token-based push from GitHub Actions can
bypass ruleset rules on personal repos.
Solution: replace the push step with a git diff --exit-code check that
fails if generated docs are out of date. Docs must now be committed by
the developer via make doc. Also regenerates docs to reflect batch 4
changes (close_float, OilFileIcon, OilExecutableHidden, recipe link).
Problem: hidden files are dimmed via OilHidden -> Comment, and there is
no clean way to make them look identical to visible entries. Clearing
OilHidden alone causes all hidden types to lose their type-specific
coloring.
Solution: add a recipe that iterates _get_highlights() and relinks
each Oil*Hidden group to its non-hidden base. The Lua pattern
"^(Oil.+)Hidden$" naturally skips OilHidden itself and automatically
covers any future entry types.
Resolves: stevearc/oil.nvim#578
Problem: files were always created with mode 0644 and directories
with 0755, hardcoded in fs.touch and uv.fs_mkdir. Users who need
different defaults (e.g. 0600 for security) had no config option.
Solution: add new_file_mode (default 420 = 0644) and new_dir_mode
(default 493 = 0755) config options, passed through to fs.touch and
uv.fs_mkdir in the files and mac trash adapters. The fs.touch
signature accepts an optional mode parameter with backwards
compatibility (detects function argument to support old callers).
Local cache directories (SSH, S3) continue using standard system
permissions rather than the user-configured mode.
Based on: stevearc/oil.nvim#537
Problem: files without standard extensions (e.g. scripts with
shebangs, Makefile, Dockerfile) got incorrect or default icons since
icon providers match by filename or extension only.
Solution: add use_slow_filetype_detection option to the icon column
config. When enabled, reads the first 16 lines of each file and
passes them to vim.filetype.match for content-based detection. The
detected filetype is forwarded to mini.icons or nvim-web-devicons as
a trailing parameter, preserving backwards compatibility with
existing icon provider implementations.
Based on: stevearc/oil.nvim#618
Problem: executable files were visually indistinguishable from regular
files in oil buffers.
Solution: add OilExecutable highlight group (linked to DiagnosticOk)
that detects executables via Unix permission bits (S_IXUSR|S_IXGRP|
S_IXOTH) and Windows executable extensions (.exe, .bat, .cmd, .com,
.ps1). Applied to both regular files and symlink targets.
Based on: stevearc/oil.nvim#698Closesstevearc/oil.nvim#679
Problem: third-party plugins like oil-git-status.nvim had no way to
know when an oil buffer was re-rendered after a filesystem change,
causing their decorations to be cleared with no signal to refresh.
Solution: emit a User OilReadPost autocmd after every successful
render_buffer_async call. Also document all oil user events
(OilEnter, OilReadPost, OilMutationComplete) in oil.txt since none
were previously documented.
Cherry-picked from: stevearc/oil.nvim#723
Problem: there was no example showing how to register and sort by a
custom column.
Solution: add a recipe demonstrating an "extension" column with
natural-order sorting.
Cherry-picked from: stevearc/oil.nvim#697
Problem: get_current_dir returns nil in several cases that were not
documented, causing confusion when used in keymaps that open pickers
like Telescope (#682). Also, posix_to_os_path could crash on Windows
when no drive letter is found.
Solution: expand get_current_dir docs to explain nil return cases, add
a Telescope recipe with nil guards, and add a defensive nil check in
posix_to_os_path.
Cherry-picked from: stevearc/oil.nvim#727
Problem: the old URL specifications.freedesktop.org/trash-spec/1.0/ is
dead and redirects or 404s.
Solution: update to the current URL trash/1.0/ in docs, source, and
the generation script.
Cherry-picked from: stevearc/oil.nvim#722
* feat: `toggle_float` now takes the same params as `open_float`
* docs: update `toggle_float` docs for `opts` and `cb` params
* fix: ensure cb is always called
---------
Co-authored-by: Steven Arcangeli <506791+stevearc@users.noreply.github.com>
* feat: add support for column text alignment
* refactor(util): replace rpad with pad_align
* refactor(columns): whitespace handling in parse_col
* refactor: small changes
* doc: add align option to doc generation
* refactor: replace lpad with pad_align
---------
Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>
* Added s3 support
* Save work
* Various bug fixes
* Minor cleanup
* Minor bug fixes
* Fix typo
* Update following feedback + minor bug fix
* Fix CI
* Cleanup and remove bucket entry_type
* Make suggested changes
* Better aws existence check
* Fix typo
* refactor: don't bother caching aws executable status
---------
Co-authored-by: Steven Arcangeli <506791+stevearc@users.noreply.github.com>
Neovim 0.11 introduced the winborder option, which serves the same purpose. By defaulting the border to nil, we will use whatever value the user has configured with winborder.
---------
Co-authored-by: Steven Arcangeli <506791+stevearc@users.noreply.github.com>
* feat: copy/paste to system clipboard on macOS
* stylua
* feat: copy/paste to system clipboard on linux
* force mime type
* fix string.gsub
* vim.uv or vim.loop
* fix stylua
* support gnome directly
* support wayland
* refactor: extract clipboard actions into separate file
* fix: copy/paste in KDE
* refactor: simplify file loading
* fix: copy/paste on x11
* fix: better error message when clipboard command not found
* fix: paste on mac
* fix: pasting in Gnome
* feat: support pasting multiple files
* feat: support copying multiple files to clipboard
---------
Co-authored-by: Steve Walker <65963536+etherswangel@users.noreply.github.com>
Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>
* feat: hidden highlights
* feat: OilHidden for hidden highlights instead of Comment
* fix: add the new combinatoric highlight groups
* perf: get rid of a call to is_hidden_file
* fix: tweak the default highlight group links
* fix: update function call in unit tests
---------
Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>
* Initial implementation of scratch based preview
* Fix call to buf is valid in loop
* Fixing call to be made only from the main event loop
* Improve handling of large files from @pkazmier
* Better error handling and simplifying the code
* Default to old behavior
* Add documentation
* Fix readfile
* Fix the configuration
* refactor: single config enum and load real buffer on BufEnter
* doc: regenerate documentation
---------
Co-authored-by: Steven Arcangeli <stevearc@stevearc.com>