Commit graph

681 commits

Author SHA1 Message Date
Barrett Ruth
b7ac06879a docs(upstream): triage stevearc/oil.nvim#396 as not actionable (#154)
Problem: upstream issue #396 requests custom preview renderers per
file type (images, PDFs, etc.).

Solution: mark as not actionable. The preview window is a normal
Neovim buffer — `BufReadCmd` autocmds already handle custom rendering
for any filetype across all of Neovim, not just oil. stevearc
explicitly declined adding a callback API for this.
2026-03-16 18:45:48 -04:00
Barrett Ruth
8cf9f4c447 docs: add paste-file-from-clipboard recipe (#156) (#153)
docs: add paste-file-from-clipboard recipe (stevearc/oil.nvim#156)

Problem: users on macOS want to copy a file in Finder and paste it
into an oil directory. The parser rejects absolute paths, but a
recipe-level solution avoids touching the mutation pipeline entirely.

Solution: add `oil-recipe-paste-file-from-clipboard` recipe that reads
the system clipboard, resolves it as a file path, and copies it into
the current oil directory via `vim.uv.fs_copyfile`.
2026-03-16 18:30:08 -04:00
Barrett Ruth
a574a09519 docs(upstream): mark stevearc/oil.nvim#303 as fixed (#152)
Problem: upstream issue #303 (preview in float window mode) is tracked
as open, but was implemented upstream in PR #403 (`59b3dab`) and is
already present in canola.

Solution: mark as fixed with reference to upstream PR #403 and the
`config.float.preview_split` config option it introduced.
2026-03-16 17:59:49 -04:00
Barrett Ruth
d4f76c8738 docs(upstream): consolidate move issues into #32 (#151)
docs(upstream): consolidate move issues #117, #289, #675, #707, #708 into #32

Problem: five upstream issues/PRs all describe the same feature —
moving files into new directories by editing the filename with path
separators — but were tracked separately.

Solution: update canola.nvim#32 with a proper description consolidating
all of them, and point all tracker entries at #32.
2026-03-16 17:57:43 -04:00
Barrett Ruth
9b4eea409e docs(upstream): consolidate session issues into #149 (#150)
docs(upstream): consolidate session issues #232, #664, #678 into #149

Problem: three upstream issues (#232, #664, #678) all stem from the
same root cause — `buftype='acwrite'` interacting poorly with session
save/restore.

Solution: create canola.nvim#149 to track session restore
compatibility and mark all three upstream issues as consolidated.
2026-03-16 17:44:51 -04:00
Barrett Ruth
e1ec8548a0 docs(upstream): fix swapped columns for #288, #726 (#148)
docs(upstream): fix swapped description/status columns for #288, #726

Problem: issues #288 and #726 had their justifications in the
description column instead of the status column, leaving the status
as bare `not actionable` with no reason.

Solution: move justifications into the status column and replace
descriptions with the actual upstream issue titles.
2026-03-16 17:35:24 -04:00
Barrett Ruth
34105f7c03 docs(upstream): triage stevearc/oil.nvim#349 as not actionable (#147)
Problem: upstream issue #349 requests a ranger-style Miller columns
layout. This is a fundamentally different navigation paradigm from
oil's buffer-as-filesystem model.

Solution: mark as not actionable and point to `mini.files`, which
stevearc himself recommended as the purpose-built alternative.
2026-03-16 17:27:17 -04:00
b5554e1289 doc: update install instructions 2026-03-16 15:57:35 -04:00
Barrett Ruth
adff65b377 feat(columns): per-character permission column highlights (#375) (#146)
Problem: the permissions column rendered as a monolithic unstyled
string, making it hard to scan `rwx` bits at a glance.

Solution: add per-character highlight groups for permission characters
following the `eza`/`lsd` convention. All groups link to standard
Neovim highlights so every colorscheme works out of the box.
2026-03-16 15:53:23 -04:00
Barrett Ruth
79a40b5feb docs: add highlight-opened-file recipe (#450) (#145)
Problem: users wanted a visual indicator on the originating file when
opening a directory listing from a file buffer.

Solution: add `oil-recipe-highlight-opened-file` recipe that uses
`OilReadPost` to flash an extmark highlight on the cursor entry for
1.5 seconds after render.
2026-03-16 15:21:40 -04:00
Barrett Ruth
2de3c0867a docs(upstream): consolidate #85 into #121 (#144)
Problem: upstream issue #85 (git status column) was still marked open.
This is tracked by our git integration issue #121.

Solution: mark as consolidated into #121, alongside the previously
consolidated #571.
2026-03-16 15:06:40 -04:00
Barrett Ruth
4ca0c511dd docs(upstream): consolidate #655, #667, #736 into #142 (#143)
Problem: three upstream requests (#655, #667, #736) all target the
same architectural change — rendering columns as extmark virtual text
instead of inline buffer text.

Solution: create canonical issue #142 and consolidate all three.
2026-03-16 14:56:13 -04:00
Barrett Ruth
115b1ca981 docs(upstream): cite git status extensions for #571 (#141) 2026-03-16 14:47:15 -04:00
Barrett Ruth
55c8789b2e docs(upstream): mark #571 not actionable (#140)
Problem: upstream issue #571 (callback before `highlight_filename`)
was still marked open. The underlying use case is per-directory git
status, which existing extensions already solve.

Solution: mark as not actionable.
2026-03-16 14:43:16 -04:00
Barrett Ruth
59d0109573 docs(upstream): mark #466 not actionable (#139)
Problem: upstream issue #466 (select into window on right) was still
marked open despite being trivially solvable with a custom action.

Solution: mark as not actionable. Users can write their own action
using `oil.select()` and window layout inspection.
2026-03-16 14:34:06 -04:00
Barrett Ruth
b69ce2d3fc docs(ssh): expand SSH adapter documentation (#525) (#138)
Problem: the `:help oil-adapter-ssh` section was only 10 lines covering
URL format and server requirements. Users had no guidance on how the
adapter works, how to configure `extra_scp_args`, or how to troubleshoot
connection issues.

Solution: expand the section with architecture overview (persistent SSH
connection, `scp` for file transfer, no local mount), configuration
(`extra_scp_args`, `~/.ssh/config`), limitations (no third-party plugin
integration, no cross-adapter moves), and troubleshooting tips.
2026-03-16 14:29:20 -04:00
Barrett Ruth
51ba7eee7a docs(upstream): mark #738 not actionable (#137)
Problem: upstream issue #738 (allow changing mtime/atime via time
column) was still marked open despite requiring disproportionate
implementation effort (reverse strftime parser, new mutator action
type, per-adapter `utime` support) with zero community demand.

Solution: mark as not actionable. Purpose-built tools like `touch -t`
already handle the underlying need.
2026-03-16 14:19:42 -04:00
Barrett Ruth
e016651abe fix(view): prevent backspace from deleting into prefix area (#135)
Problem: in insert mode, `<BS>`, `<C-h>`, `<C-w>`, and `<C-u>` could
delete backwards past the name column boundary into the icon/permissions/ID
prefix, corrupting the line and breaking the parser.

Solution: add buffer-local insert-mode expr keymaps that compute the name
column boundary (cached per line) and return no-op when the cursor is
already at or before it. `<C-u>` emits exactly enough `<BS>` keys to
delete back to the boundary, never past it.

Closes #133
2026-03-15 13:39:32 -04:00
Barrett Ruth
047bc0a94d docs(upstream): mark #479 not actionable (#134)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.

* docs(upstream): mark #416 fixed via cherry-picked #725

Problem: Issue #416 (case-sensitive keymap comparison preventing
remaps) was listed as `open` despite being fixed by the keymap
normalization in PR #725.

Solution: Mark as `fixed — cherry-picked (#725)`. The
`nvim_replace_termcodes` normalization in `config.lua` resolves
case variants like `<c-e>` and `<C-e>` to the same key.

* docs(upstream): mark #479 not actionable

Problem: Issue #479 (harpoon integration recipe) was listed as `open`
despite being a stale documentation request from 2024 with zero
engagement.

Solution: Mark as `not actionable — no demand, stale`.
2026-03-15 12:59:35 -04:00
Barrett Ruth
848a771689 docs(upstream): mark #416 fixed via cherry-picked #725 (#132)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.

* docs(upstream): mark #416 fixed via cherry-picked #725

Problem: Issue #416 (case-sensitive keymap comparison preventing
remaps) was listed as `open` despite being fixed by the keymap
normalization in PR #725.

Solution: Mark as `fixed — cherry-picked (#725)`. The
`nvim_replace_termcodes` normalization in `config.lua` resolves
case variants like `<c-e>` and `<C-e>` to the same key.
2026-03-15 12:57:44 -04:00
Barrett Ruth
8a8ca8ef94 docs(upstream): mark #449 not actionable (#131)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.
2026-03-15 12:54:54 -04:00
Barrett Ruth
b72b4b1319 docs(upstream): track #254 in canola.nvim#129 (#130)
Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.
2026-03-15 12:53:36 -04:00
Barrett Ruth
19c7ab9cee docs(upstream): mark #570 not actionable (#128)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.

* docs(upstream): consolidate owner/group issues into #126

Problem: Three upstream issues (#436, #599, #684) all request the same
feature — owner/group columns in the directory listing.

Solution: Create canonical tracking issue barrettruth/canola.nvim#126
and mark all three as `consolidated into #126`.

* docs(upstream): mark #570 not actionable

Problem: Issue #570 (`c0`/`d0` deletes concealed entry ID prefix,
causing rename to be parsed as delete+create) was listed as `open`.

Solution: Mark as `not actionable — blocked on Neovim extmark API`.
Neovim provides no mechanism to protect concealed extmark text from
operator-pending motions. The intended rename workflow uses `cw`/`ciw`
within the constrained cursor region.
2026-03-15 12:46:57 -04:00
Barrett Ruth
bb8439dea7 docs(upstream): consolidate owner/group issues into #126 (#127)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.

* docs(upstream): consolidate owner/group issues into #126

Problem: Three upstream issues (#436, #599, #684) all request the same
feature — owner/group columns in the directory listing.

Solution: Create canonical tracking issue barrettruth/canola.nvim#126
and mark all three as `consolidated into #126`.
2026-03-15 12:38:55 -04:00
Barrett Ruth
cfcedc8890 docs(upstream): mark #707 as duplicate of #117 (#125)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.
2026-03-15 12:32:46 -04:00
Barrett Ruth
ee55b6abef docs(upstream): mark #675 as duplicate of #117 (#124)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.
2026-03-15 12:29:24 -04:00
Barrett Ruth
1e290932b3 docs(upstream): mark #617 fixed via cherry-picked #618 (#123)
Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.
2026-03-15 12:29:06 -04:00
Barrett Ruth
022d2649e1 docs(upstream): mark #675 as duplicate of #117 (#122)
Problem: Issue #675 (move file into folder by renaming) is an exact
duplicate of #117, which is the original request with ~20 comments,
stevearc acknowledgment, and a linked POC PR #708.

Solution: Update `doc/upstream.md` to mark #675 as a duplicate of #117.
2026-03-15 11:03:11 -04:00
Barrett Ruth
42903b6beb refactor: revert canola namespace to oil and remove vim.g config (#120)
* refactor: revert module namespace from canola back to oil

Problem: the canola rename creates unnecessary friction for users
migrating from stevearc/oil.nvim — every `require('oil')` call and
config reference must change.

Solution: revert all module paths, URL schemes, autocmd groups,
highlight groups, and filetype names back to `oil`. The repo stays
`canola.nvim` for identity; the code is a drop-in replacement.

* refactor: remove `vim.g.oil` declarative config

Problem: the `vim.g.oil` configuration path was added prematurely.
It adds a second config entrypoint before the plugin has stabilized
enough to justify it.

Solution: remove `vim.g.oil` support from `plugin/oil.lua`,
`config.setup()`, docs, and tests. Users configure via
`require("oil").setup({})`.
2026-03-10 22:49:56 -04:00
Barrett Ruth
dedc95687b feat(api): add get_current_url() for adapter-agnostic URL access (#119)
Problem: `get_current_dir()` returns nil for non-local adapters (SSH,
S3, trash), leaving users with no public API to get the current
buffer's location.

Solution: add `get_current_url()` which returns the full canola URL
for any adapter, or nil if not in a canola buffer.

Based on: stevearc/oil.nvim#646
2026-03-10 22:21:52 -04:00
Barrett Ruth
4efb785e78 docs(upstream): mark #382 not actionable (#118)
docs(upstream): mark #382 not actionable (#482)

Problem: upstream issue #382 requests relative paths in the window
title, but this is already solved by the `get_win_title` callback
added in stevearc/oil.nvim#482.

Solution: mark the issue as not actionable in the tracker.
2026-03-10 22:21:42 -04:00
Barrett Ruth
dcd55b0ee5 docs(upstream): mark #431 as duplicate of #525 (#117)
Problem: upstream issue #431 (SSH adapter documentation) is a
duplicate of #525 which covers the same request with more detail.

Solution: mark as duplicate of #525.
2026-03-09 19:25:31 -04:00
Barrett Ruth
b0fe66c540 docs(upstream): mark #332 not actionable (#116)
Problem: upstream issue #332 (buffer not fixed to floating window via
ctrl-o jumplist) is unresolved in our tracker.

Solution: mark as not actionable. Cannot reproduce — ctrl-o in the
float navigates back through oil directories, does not escape to file
buffers. Reported on nvim 0.10.0-dev (2023).
2026-03-09 19:20:12 -04:00
Barrett Ruth
f47ddfea57 docs(upstream): mark #435 fixed (#115)
Problem: upstream issue #435 (LSP semantic token errors on preview)
is unresolved in our tracker.

Solution: mark as fixed. Upstream PR #467 (scratch buffer previews)
was merged Nov 2024 and is already in our codebase.
2026-03-09 19:08:39 -04:00
Barrett Ruth
84aeb50d2f docs(upstream): revert #623 to open (#114)
Problem: #623 was marked not actionable as a cross-plugin issue, but
oil's nonstandard buffer opening (`bufadd` + manual `buflisted` +
`vim.cmd.buffer()`) may be the root cause.

Solution: revert status to open for further investigation.
2026-03-09 19:05:18 -04:00
Barrett Ruth
e734343b3a docs(upstream): mark #200 not actionable (#113)
Problem: upstream issue #200 (highlights not working when opening a
file) is unresolved in our tracker.

Solution: mark as not actionable. Reported on nvim 0.9.4, no recent
reports, cannot reproduce on current versions.
2026-03-09 18:59:39 -04:00
Barrett Ruth
a35efa1d72 fix(ci): detect untracked upstream items regardless of number (#112)
Problem: the digest script filtered by `number > last_number`, so any
upstream item with a number below the highest tracked entry was silently
skipped.

Solution: collect the set of all tracked numbers from `doc/upstream.md`
and filter by `number not in tracked` instead. For merged PRs, also
filter by the fork's creation date via `GITHUB_REPOSITORY` to avoid
pulling in ancient pre-fork history.
2026-03-09 18:56:44 -04:00
Barrett Ruth
8a1039215b docs(upstream): mark #637 not actionable (#111)
Problem: upstream issue #637 (inconsistent symlink resolution) is
unresolved in our tracker.

Solution: mark as not actionable. Reporter confirmed the issue does
not reproduce on stable neovim (v0.11.2), only on nightly.
2026-03-09 18:45:22 -04:00
Barrett Ruth
f7235021cc docs(upstream): mark #636 not actionable (#110)
Problem: upstream issue #636 (Telescope picker opens file in wrong
split) is unresolved in our tracker.

Solution: mark as not actionable. Cannot reproduce with default
Telescope configuration — file correctly opens in the active canola
split. Likely user-specific Telescope config or window picker plugin.
2026-03-09 18:12:30 -04:00
Barrett Ruth
6e4faaf0c9 fix: make parent action a no-op at filesystem root (#109)
Problem: at the filesystem root (`/`), `actions.parent` triggers a
full `vim.cmd.edit()` and async re-render cycle even though the parent
of `/` is `/`.

Solution: in `canola.open()`, return early when `parent_url` equals
the current buffer name.

Closes #108.
2026-03-09 18:05:04 -04:00
Barrett Ruth
fa65479025 fix(select): redraw screen after buffer switch (#106)
* fix(select): redraw screen after buffer switch

Problem: `select` opens files inside a `vim.schedule_wrap` callback
from `normalize_url`. Scheduled `FileType` autocmds (e.g. treesitter
parsing) queue onto the same batch, blocking the screen update. The
oil buffer stays visible until the heavy work finishes.

Solution: call `vim.cmd.redraw()` after the buffer switch to flush
the screen before any queued scheduled callbacks run. Matches the
behavior of plain `:e`.

* docs(upstream): mark #699 fixed (#106)
2026-03-09 17:40:19 -04:00
Barrett Ruth
d2d1639a44 docs(upstream): mark #609 not actionable (#105)
docs(upstream): mark #609 not actionable (#105)

Problem: upstream issue #609 (cursor not placed on file when jumped
via Snacks.nvim picker) is confirmed Windows-only by multiple
reporters. stevearc cannot reproduce on Linux.

Solution: mark as not actionable in the upstream tracker.
2026-03-09 17:17:40 -04:00
Barrett Ruth
dd5b0143f5 docs(upstream): revert #736 to open (#104) 2026-03-08 19:12:32 -04:00
Barrett Ruth
226591c94b docs(upstream): mark #736 not actionable (#103) 2026-03-08 19:08:31 -04:00
Barrett Ruth
9a7dfbad6b docs(upstream): mark #685 not actionable (#102) 2026-03-08 19:08:17 -04:00
Barrett Ruth
5623e819e2 docs(upstream): mark #671 not actionable (#101) 2026-03-08 19:08:03 -04:00
Barrett Ruth
41cc97713b docs(upstream): mark #668 not actionable (#100) 2026-03-08 19:07:51 -04:00
Barrett Ruth
f0c35e14ed docs(upstream): mark #665 not actionable (#99) 2026-03-08 19:06:14 -04:00
Barrett Ruth
9bbdc90a58 docs(upstream): mark #294 not actionable (#98) 2026-03-08 19:05:58 -04:00
Barrett Ruth
245b0c9c1c docs(upstream): mark #276 not actionable (#97) 2026-03-08 19:05:37 -04:00