Optional adapters and extensions for canola.nvim
  • Lua 99%
  • Nix 0.6%
  • Just 0.4%
Find a file
barrettruth 1b5ae93d81
All checks were successful
quality / Format (push) Successful in 10s
quality / Lint (push) Successful in 9s
quality / Test (push) Successful in 8s
ci(forgejo): switch runs-on from spark to canonical nix label
2026-05-01 12:28:28 +00:00
.forgejo ci(forgejo): switch runs-on from spark to canonical nix label 2026-05-01 12:28:28 +00:00
doc feat(canola-git): emit cache update event and keep raw path statuses (#53) 2026-04-22 13:08:35 -04:00
lua fix(canola-git): preserve git_status column width in clean repos (#54) 2026-04-22 13:14:23 -04:00
plugin fix: opt in to collection features by config presence (#49) 2026-04-20 16:16:53 -04:00
spec fix(canola-git): preserve git_status column width in clean repos (#54) 2026-04-22 13:14:23 -04:00
.busted initial commit 2026-03-19 18:01:30 -04:00
.editorconfig build: add missing boilerplate and split CI workflows 2026-03-20 00:31:11 -04:00
.gitignore build: add missing boilerplate and split CI workflows 2026-03-20 00:31:11 -04:00
.luarc.json fix(ci): align local LuaLS check with GitHub CI 2026-03-20 17:39:05 -04:00
.stylua.toml initial commit 2026-03-19 18:01:30 -04:00
.styluaignore build: add missing boilerplate and split CI workflows 2026-03-20 00:31:11 -04:00
biome.json ci: replace prettier with biome (#55) 2026-04-25 16:16:26 -04:00
canola-collection-scm-1.rockspec docs: minimal readme, rockspec copy_directories, luarocks workflow (#19) 2026-03-20 18:39:28 -04:00
flake.lock build(nix): use nixpkgs vimdoc-language-server (#50) 2026-04-20 17:30:08 -04:00
flake.nix ci: replace prettier with biome (#55) 2026-04-25 16:16:26 -04:00
justfile ci: replace prettier with biome (#55) 2026-04-25 16:16:26 -04:00
LICENSE chore: switch license to GPL 2026-05-01 11:16:55 +00:00
README.md fix: opt in to collection features by config presence (#49) 2026-04-20 16:16:53 -04:00
selene.toml build: add missing boilerplate and split CI workflows 2026-03-20 00:31:11 -04:00
vim.yaml build: add missing boilerplate and split CI workflows 2026-03-20 00:31:11 -04:00

canola-collection

Optional adapters and extensions for canola.nvim. Install only what you need — canola core ships with the local filesystem adapter only.

Component Description
canola-git Git-aware hiding + git_status column
canola-ssh Remote filesystem via SSH + SCP
canola-s3 AWS S3 via aws CLI
canola-ftp FTP/FTPS via curl
canola-trash OS-specific recycle bin
canola-resession Session restore via resession.nvim

Installation

Install with your package manager of choice or via luarocks:

luarocks install canola-collection

Components are opt-in. Define a component's vim.g.canola_* table before canola-collection loads to register it. Empty tables enable defaults. No setup() call needed.

Configuration

Each component has its own vim.g table. Define only the ones you want; empty tables enable defaults.

canola-git

Git-aware hidden file filtering and a git_status column. Tracked dotfiles (.gitignore, .github/) stay visible. Gitignored files disappear. Directories show the most severe status among their children.

Define vim.g.canola_git to enable canola-git. An empty table enables defaults.

vim.g.canola_git = {
  show = { untracked = true, ignored = false },
  format = 'compact', -- 'compact' | 'symbol' | 'porcelain'
}

Add the column to your canola config:

vim.g.canola = {
  columns = { 'git_status', 'icon' },
}

The cache refreshes automatically on mutations, focus changes, buffer entry, and :! shell commands. To refresh manually:

require('canola-git').invalidate()

canola-ssh

Browse remote filesystems via SSH. Uses SCP for file transfers.

Define vim.g.canola_ssh to enable SSH support. An empty table enables defaults.

vim.g.canola_ssh = {
  extra_args = {},
  border = nil,
  recursive = false,
  hosts = {
    ['nas.local'] = { extra_args = { '-O' } },
  },
}

Open with :edit canola-ssh://user@host/path/.

canola-s3

Browse AWS S3 buckets via the aws CLI.

Define vim.g.canola_s3 to enable S3 support. An empty table enables defaults.

vim.g.canola_s3 = {
  extra_args = {},
  recursive = false,
  buckets = {
    ['my-r2'] = { extra_args = { '--endpoint-url', 'https://...' } },
  },
}

Open with :edit canola-s3://bucket/prefix/.

canola-ftp

Browse FTP/FTPS servers via curl.

Define vim.g.canola_ftp to enable FTP/FTPS support. An empty table enables defaults.

vim.g.canola_ftp = {
  extra_args = {},
  recursive = false,
  hosts = {
    ['ftp.example.com'] = { extra_args = { '--insecure' } },
  },
}

Open with :edit canola-ftp://host/path/ or canola-ftps://host/path/.

canola-trash

OS-specific recycle bin (freedesktop, macOS, Windows). Define vim.g.canola_trash to enable it. An empty table enables defaults:

vim.g.canola_trash = {}

canola-resession

Session restore via resession.nvim:

require('resession').setup({
  extensions = { canola = {} },
})

Documentation

:help canola-collection

Acknowledgements