canola.nvim/README.md
Barrett Ruth b4ab166c39
build: modernize repository (#27)
* build: clean up gitignore and remove empty gitmodules

Problem: .gitignore contained 48 lines of C/shared-object boilerplate
irrelevant to a Lua Neovim plugin. .gitmodules was tracked but empty.

Solution: replace .gitignore with minimal entries covering only files
this project actually produces. Delete the vestigial .gitmodules.

* build: add editorconfig and prettierrc

Problem: no editor or formatter configuration, inconsistent with
cp.nvim and diffs.nvim conventions.

Solution: add .editorconfig (2-space Lua indent, utf-8, final newline)
and .prettierrc (prose wrap, 80 cols, single quotes, no semi) matching
the other repos.

* build: add Makefile for lint and test targets

Problem: .github/pre-commit calls `make fastlint` and .github/pre-push
calls `make lint && make test`, but no Makefile existed, so the git
hooks failed.

Solution: add Makefile with lint (stylua + selene), fastlint
(pre-commit), and test (luarocks test) targets.

* docs: add fork copyright to LICENSE

Problem: LICENSE only contained the original author's copyright notice.

Solution: add a second copyright line for the fork maintainer. MIT
requires retaining the original notice; adding a line for derivative
work is standard practice.

* ci: restructure workflows to quality/test/luarocks pattern

Problem: CI used a single tests.yml for linting, typechecking, and
testing. No conditional path filtering, no markdown format check, and
a stale mirror_upstream_prs.yml and duplicate luarocks.yml existed.

Solution: replace tests.yml with quality.yaml (stylua, selene,
lua-typecheck, prettier with dorny/paths-filter) and test.yaml
(nvim-busted, stable+nightly matrix). Update luarocks.yaml to
reference quality.yaml. Delete mirror_upstream_prs.yml and duplicate
luarocks.yml. Fix automation workflow sender check.

* build: rewrite issue templates

Problem: issue templates used upstream stevearc references, severity
dropdowns, outdated lazy.nvim bootstrap, and the .yml extension
inconsistent with other repos.

Solution: replace with .yaml templates matching cp.nvim/diffs.nvim
style. Bug report uses prerequisites checkboxes, checkhealth output,
modern lazy.nvim bootstrap with vim.g.oil pattern. Feature request
uses problem/solution/alternatives format. Add config.yaml to disable
blank issues and link discussions.

* docs: rewrite README

Problem: README contained upstream triage tables, severity dropdowns,
the old setup() pattern, a tree view question, and references to
stevearc/oil.nvim as the primary source.

Solution: full rewrite matching cp.nvim/diffs.nvim style with bold
tagline, features list, requirements, installation, documentation,
FAQ (lazy.nvim setup with vim.g.oil, migration guide, alternatives),
and acknowledgements crediting the original author.

* revert: remove Makefile

Problem: Makefile was added in b9279b5 but was previously deleted
intentionally.

Solution: remove it.
2026-02-22 16:06:31 -05:00

2.8 KiB

oil.nvim

A file explorer that lets you edit your filesystem like a buffer

Browse directories as normal Neovim buffers, then create, rename, move, copy, and delete files by editing the listing and saving. Cross-directory operations work seamlessly across local, SSH, S3, and trash adapters.

https://user-images.githubusercontent.com/506791/209727111-6b4a11f4-634a-4efa-9461-80e9717cea94.mp4

Features

  • Edit directory listings as normal buffers — mutations are derived by diffing
  • Cross-directory move, copy, and rename across any adapter
  • Adapters for local filesystem, SSH, S3, and OS trash
  • File preview in split or floating window
  • Configurable columns (icon, size, permissions, timestamps)
  • Executable file highlighting and filetype-aware icons
  • Floating window and split layouts

Requirements

Installation

Install with your package manager of choice or via luarocks:

luarocks install oil.nvim

Documentation

:help oil.nvim

FAQ

Q: How do I set up oil.nvim with lazy.nvim?

{
  'barrettruth/oil.nvim',
  init = function()
    vim.g.oil = {
      columns = { 'icon', 'size' },
      delete_to_trash = true,
    }
  end,
}

Do not use config, opts, or lazy — oil.nvim loads itself when you open a directory.

Q: How do I migrate from stevearc/oil.nvim?

Replace stevearc/oil.nvim with barrettruth/oil.nvim in your plugin manager and switch your setup() call to a vim.g.oil assignment in init. The configuration table is the same.

Q: Why "oil"?

From the vim-vinegar README, a quote by Drew Neil:

Split windows and the project drawer go together like oil and vinegar

Q: What are some alternatives?

Acknowledgements

oil.nvim was created by Steven Arcangeli. This fork is maintained by Barrett Ruth.