No description
Find a file
Barrett Ruth 2b4f47a7dc
ci: add weekly upstream digest workflow
Problem: new upstream issues and PRs slip through because there's no
mechanism to surface them — manual polling of stevearc/oil.nvim is
required and easy to forget.

Solution: add a Monday 9am UTC scheduled workflow that reads the
highest stevearc/oil.nvim number from doc/upstream.md, fetches merged
PRs and new open issues/PRs above that threshold via the gh CLI, and
creates a structured digest issue in barrettruth/canola.nvim. No issue
is created when there's nothing new. Falls back to a 30-day window if
doc/upstream.md can't be parsed.
2026-03-03 14:13:50 -05:00
.github ci: add weekly upstream digest workflow 2026-03-03 14:13:50 -05:00
doc fix(dic): format 2026-02-22 22:09:02 -05:00
lua fix(icons): use nonicons hl groups 2026-03-02 20:21:47 -05:00
perf build: replace luacheck with selene, add nix devshell and pre-commit (#20) 2026-02-21 23:52:27 -05:00
plugin build: replace luacheck with selene, add nix devshell and pre-commit (#20) 2026-02-21 23:52:27 -05:00
spec fix(test): resolve busted migration test isolation issues (#25) 2026-02-22 15:39:20 -05:00
syntax feat: new adapter for S3 buckets (#677) 2025-11-30 12:41:37 -08:00
.busted build: migrate test framework from plenary to busted 2026-02-22 00:26:54 -05:00
.editorconfig build: modernize repository (#27) 2026-02-22 16:06:31 -05:00
.gitignore build: modernize repository (#27) 2026-02-22 16:06:31 -05:00
.luarc.json fix(ci): switch typecheck action to stevearc/nvim-typecheck-action (#26) 2026-02-22 16:14:10 -05:00
.pre-commit-config.yaml build: replace luacheck with selene, add nix devshell and pre-commit (#20) 2026-02-21 23:52:27 -05:00
.prettierrc build: modernize repository (#27) 2026-02-22 16:06:31 -05:00
.stylua.toml build: replace luacheck with selene, add nix devshell and pre-commit (#20) 2026-02-21 23:52:27 -05:00
canola.nvim-scm-1.rockspec docs: rename repository from oil.nvim to canola.nvim 2026-02-22 22:01:34 -05:00
flake.lock build: replace luacheck with selene, add nix devshell and pre-commit (#20) 2026-02-21 23:52:27 -05:00
flake.nix build: migrate test framework from plenary to busted 2026-02-22 00:26:54 -05:00
LICENSE build: modernize repository (#27) 2026-02-22 16:06:31 -05:00
README.md fix(doc): improve phrasing 2026-02-22 22:07:07 -05:00
selene.toml ci: migrate to nix 2026-02-23 18:13:51 -05:00
vim.yaml ci: add bit luajit global 2026-02-23 18:18:35 -05:00

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

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.oil 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',
  init = function()
    vim.g.oil = { ... }
  end,
}

init runs before the plugin loads; config runs after. oil.nvim reads vim.g.oil 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 "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

canola.nvim is a fork of oil.nvim, created by Steven Arcangeli. Maintained by Barrett Ruth.