Problem: `select` with `close = false` was broken for floating oil windows. The float auto-close autocmd would always close the window when focus left, and there was no mechanism to preserve it. Solution: Add `oil_keep_open` window flag set when `close = false` is used on a float. The auto-close autocmd checks this flag before closing. On file select, focus returns to the original window behind the float so the file opens there, then focus restores to the float. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .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?
Simply change the plugin source from stevearc/oil.nvim to
barretruth/oil.nvim.
Before (stevearc/oil.nvim):
{
'stevearc/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').setup(opts)
end,
}
After (barrettruth/oil.nvim):
{
'barrettruth/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').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