Problem: the upstream tracker had duplicate entries across tables, fragile commit hash references, a 108-row flat table mixing all statuses, and inconsistent formatting. Solution: merge PR tables into one, split issues by status (fixed, resolved, open, not actionable), drop all commit hashes in favor of stable PR numbers, and eliminate duplication so each entry appears exactly once. |
||
|---|---|---|
| .github | ||
| doc | ||
| lua | ||
| perf | ||
| plugin | ||
| scripts | ||
| spec | ||
| syntax | ||
| .busted | ||
| .editorconfig | ||
| .gitignore | ||
| .luarc.json | ||
| .pre-commit-config.yaml | ||
| .prettierrc | ||
| .stylua.toml | ||
| .styluaignore | ||
| canola.nvim-scm-1.rockspec | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| selene.toml | ||
| vim.yaml | ||
canola.nvim
A refined oil.nvim — edit your filesystem like a buffer, with bug fixes and community PRs that haven't landed upstream.
Upstream tracker — full PR and issue triage against oil.nvim
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
- Neovim 0.10+
- (Optionally) any of the following icon providers:
Installation
Install with your package manager of choice or via luarocks:
luarocks install canola.nvim
Documentation
:help canola.nvim
FAQ
Q: How do I migrate from stevearc/oil.nvim?
Change the plugin source and replace setup() with vim.g.canola in init.
The configuration table is identical — only the entry point changes. For
example, with lazy.nvim:
Before (stevearc/oil.nvim):
{
'stevearc/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').setup(opts)
end,
}
After (barrettruth/canola.nvim):
{
'barrettruth/canola.nvim',
opts = { ... },
config = function(_, opts)
require('canola').setup(opts)
end,
}
init runs before the plugin loads; config runs after. oil.nvim reads
vim.g.canola at load time, so init is the correct hook. Do not use config,
opts, or lazy — oil.nvim loads itself when you open a directory.
Q: Why "canola"?
Canola oil! But...
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?
- stevearc/oil.nvim: the original
- mini.files: cross-directory filesystem-as-buffer with a column view
- vim-vinegar: the granddaddy of single-directory file browsing
- dirbuf.nvim: filesystem as buffer without cross-directory edits
- lir.nvim: vim-vinegar style with Neovim integration
- vim-dirvish: stable, simple directory browser