Optional adapters and extensions for canola.nvim
  • Lua 99%
  • Nix 0.6%
  • Just 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Barrett Ruth 8681de4443
Some checks failed
quality / Lint (push) Successful in 2s
quality / Format (push) Failing after 5s
quality / Test (push) Successful in 2s
style: format the migration check
2026-09-26 15:55:29 -05:00
.forgejo ci: allow manual quality runs 2026-09-26 15:32:40 -05:00
doc fix: warn GitHub installs [skip ci] 2026-09-21 21:50:28 -05:00
lua style: format the migration check 2026-09-26 15:55:29 -05:00
plugin fix: warn GitHub installs [skip ci] 2026-09-21 21:50:28 -05: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
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: license under GPL-3.0 2026-09-21 19:38:02 -05:00
README.md docs: remove Forgejo banner [skip ci] 2026-09-21 21:55:15 -05: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 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