{"id":51676029,"url":"https://github.com/anoopkcn/stitch.nvim","last_synced_at":"2026-07-15T06:03:12.616Z","repository":{"id":363601557,"uuid":"1264060846","full_name":"anoopkcn/stitch.nvim","owner":"anoopkcn","description":"Populate one grouped view from a project search, LSP references, or diagnostics, read/edit and push changes back to the buffers, and jump straight to any source line","archived":false,"fork":false,"pushed_at":"2026-06-09T15:34:14.000Z","size":91,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-09T16:25:42.871Z","etag":null,"topics":["grep","lsp","multibuffer","nvim","quickfix-list"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anoopkcn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-09T14:20:22.000Z","updated_at":"2026-06-09T15:51:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anoopkcn/stitch.nvim","commit_stats":null,"previous_names":["anoopkcn/stitch.nvim"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/anoopkcn/stitch.nvim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoopkcn%2Fstitch.nvim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoopkcn%2Fstitch.nvim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoopkcn%2Fstitch.nvim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoopkcn%2Fstitch.nvim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anoopkcn","download_url":"https://codeload.github.com/anoopkcn/stitch.nvim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoopkcn%2Fstitch.nvim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35493172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grep","lsp","multibuffer","nvim","quickfix-list"],"created_at":"2026-07-15T06:03:11.788Z","updated_at":"2026-07-15T06:03:12.607Z","avatar_url":"https://github.com/anoopkcn.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# stitch.nvim\n\nStitches are portions of text belonging to a file.\n\nView 'stitches' from many files in a single buffer and edit them as if they belong to a single buffer.\n\n- stitches can be search results, diffs, LSP references, diagnostics or quickfix results\n- read/edit and push changes back to the buffers, and jump straight to any source line.\n- expand or collapse context around a stitch\n\n![disply_img](https://github.com/user-attachments/assets/17e7b4f5-c7c5-4965-9015-9f1e415501a6)\n\n## Requirements\n\n- Neovim **0.12+** (developed against 0.12.x)\n- [ripgrep](https://github.com/BurntSushi/ripgrep) (`rg`) for the grep source\n\n## Install\n\nThe plugin works out of the box, no `setup()` call required.\n\n\n```lua\nvim.pack.add({\"https://github.com/anoopkcn/stitch.nvim\"})\n```\n\n## Usage\n\n```vim\n:Stitch grep \u003cpattern\u003e   \" project search (ripgrep)\n:Stitch references       \" all references to the symbol under the cursor\n:Stitch diagnostics      \" all project diagnostics\n:Stitch diff             \" working-tree changes (git or jj)\n:Stitch diff \u003crev\u003e       \" everything changed since \u003crev\u003e\n:Stitch qf               \" build a view from the current quickfix list\n:Stitch next             \" jump to the next stitch (loads the source buffer)\n:Stitch prev             \" jump to the previous stitch\n```\n\nOr from Lua:\n\n```lua\nrequire('stitch').grep('TODO')\nrequire('stitch').references()\nrequire('stitch').diagnostics()\nrequire('stitch').diff()         -- or .diff('main')\nrequire('stitch').from_qflist()\nrequire('stitch').next()         -- and .prev()\n```\n\n`next`/`prev` work from anywhere: they walk the stitches of the visible view\n(the most recently used one if several are open), load the stitch's source\nbuffer and land the cursor on its line and column, wrapping at the ends. The\nview's cursor advances with each step, so the walk continues from wherever\nyou last were in the view. Unlike `:cnext`, they follow the live view — line\nnumbers stay correct after edits.\n\nInside the view:\n\n| Key     | Action                                   |\n| ------- | ---------------------------------------- |\n| `\u003cCR\u003e`  | open the source file at the line/cursor  |\n| `gq`    | close the view                           |\n| `+`     | show more context around this stitch    |\n| `-`     | show less context around this stitch    |\n| `:w`    | write all edits back to their source files |\n\n`+`/`-` accept a count: `10+` reveals 10 lines at once.\n\nEach stitch shows its source line number in the gutter; each file is introduced\nby an underlined, dimmed `dir/name` header, aligned to the left edge.\nDiagnostics show their message as a trailing annotation.\n\n## Configuration\n\nDefaults:\n\n```lua\nrequire('stitch').setup({\n  window = 'split',  -- 'split' | 'vsplit' | 'tab' | 'current'\n  highlight = true,  -- syntax highlighting (Treesitter, regex syntax fallback)\n  context = 1,       -- initial source context lines above/below each match\n  context_step = 1,  -- lines added/removed per +/- press (a count overrides it)\n  max_results = 2000, -- cap on grep results (false disables the cap)\n  keys = {\n    jump = '\u003cCR\u003e',\n    close = 'gq',\n    expand = '+',\n    collapse = '-',\n  },\n})\n```\n\n### Highlight groups\n\n| Group                       | Default link |\n| --------------------------- | ------------ |\n| `StitchHeaderDir`     | `Comment` fg, underlined (the dimmed directory) |\n| `StitchHeaderName`    | `Comment` fg, underlined (the file name, dimmed too) |\n| `StitchLnum`          | blue-tinted fg (match line numbers, same blue as `StitchMatch`) |\n| `StitchContextLnum`   | `NonText`    |\n| `StitchMatch`         | translucent blue bg |\n| `StitchAnnotation`    | `Comment`    |\n| `StitchSeparator`     | `NonText` (the `⋮` block divider and inter-file spacing) |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoopkcn%2Fstitch.nvim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanoopkcn%2Fstitch.nvim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoopkcn%2Fstitch.nvim/lists"}