{"id":51015971,"url":"https://github.com/antlis/telescope-gist","last_synced_at":"2026-06-21T10:30:56.519Z","repository":{"id":351671862,"uuid":"1211967618","full_name":"antlis/telescope-gist","owner":"antlis","description":"Telescope extension for managing GitHub Gists — list, preview with syntax highlighting, edit, delete, and create from inside Neovim","archived":false,"fork":false,"pushed_at":"2026-04-16T01:05:40.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T02:35:37.021Z","etag":null,"topics":["gists","github","lazyvim","neovim","neovim-plugin","telescope-extension"],"latest_commit_sha":null,"homepage":null,"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/antlis.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-04-15T23:50:20.000Z","updated_at":"2026-04-16T01:05:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/antlis/telescope-gist","commit_stats":null,"previous_names":["antlis/telescope-gist"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/antlis/telescope-gist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlis%2Ftelescope-gist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlis%2Ftelescope-gist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlis%2Ftelescope-gist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlis%2Ftelescope-gist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antlis","download_url":"https://codeload.github.com/antlis/telescope-gist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antlis%2Ftelescope-gist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34607126,"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-06-21T02:00:05.568Z","response_time":54,"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":["gists","github","lazyvim","neovim","neovim-plugin","telescope-extension"],"created_at":"2026-06-21T10:30:55.471Z","updated_at":"2026-06-21T10:30:56.504Z","avatar_url":"https://github.com/antlis.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# telescope-gist\n\nA [Telescope](https://github.com/nvim-telescope/telescope.nvim) extension for managing\nyour GitHub Gists from inside Neovim — built for [LazyVim](https://www.lazyvim.org/), works anywhere.\n\n## Why\n\nExisting options are incomplete:\n\n- `gh.nvim` ignores gists entirely.\n- `gist.nvim` can list/open but editing is clunky and delete is missing.\n- `telescope-github.nvim` shows gists with no syntax highlight in preview and is effectively unmaintained.\n\n`telescope-gist` aims to be the missing piece: a Telescope-native picker with **list, preview, open-and-edit, delete, create, and refresh** — all with a fast cache so it never feels slow.\n\n## Features\n\n- `:Telescope gist list` — picker with visibility, description, file count, relative date\n- Preview with **filetype-aware syntax highlighting**\n- `:GistCreate` — create a gist from the current buffer; supports visual selection (`:'\u003c,'\u003eGistCreate` or `\u003cleader\u003egn` in visual mode)\n- Picker actions:\n  - `\u003cCR\u003e` open gist for editing — one buffer per file for multi-file gists; `:w` PATCHes content back to GitHub\n  - `\u003cC-d\u003e` delete gist (with confirm)\n  - `\u003cC-n\u003e` new gist from current buffer\n  - `\u003cC-y\u003e` yank gist URL to clipboard\n  - `\u003cC-r\u003e` force-refresh cached list\n- **Two-layer cache** (memory + disk JSON, TTL 10 min) — picker opens instantly after first load, even across Neovim restarts\n\n## Requirements\n\n- Neovim 0.10+\n- [`gh`](https://cli.github.com/) CLI, authenticated via `gh auth login`\n- [`telescope.nvim`](https://github.com/nvim-telescope/telescope.nvim)\n- [`plenary.nvim`](https://github.com/nvim-lua/plenary.nvim) (transitively required by Telescope)\n\n## Installation\n\n### lazy.nvim / LazyVim\n\n```lua\n{\n  \"antlis/telescope-gist\",\n  dependencies = {\n    {\n      \"nvim-telescope/telescope.nvim\",\n      cmd = \"Telescope\",\n      dependencies = { \"nvim-lua/plenary.nvim\" },\n    },\n  },\n  config = function()\n    require(\"telescope-gist\").setup({})\n    require(\"telescope\").load_extension(\"gist\")\n  end,\n  keys = {\n    { \"\u003cleader\u003egG\", \"\u003ccmd\u003eTelescope gist list\u003ccr\u003e\", desc = \"Gist List\" },\n    { \"\u003cleader\u003egn\", \":GistCreate\u003cCR\u003e\", desc = \"Create Gist\", mode = { \"n\", \"v\" } },\n  },\n}\n```\n\n### packer.nvim\n\n```lua\nuse {\n  \"antlis/telescope-gist\",\n  requires = { \"nvim-telescope/telescope.nvim\", \"nvim-lua/plenary.nvim\" },\n  config = function()\n    require(\"telescope-gist\").setup({})\n    require(\"telescope\").load_extension(\"gist\")\n  end,\n}\n```\n\n### vim-plug\n\n```vim\nPlug 'nvim-lua/plenary.nvim'\nPlug 'nvim-telescope/telescope.nvim'\nPlug 'antlis/telescope-gist'\n```\n\nThen in your `init.lua`:\n\n```lua\nrequire(\"telescope-gist\").setup({})\nrequire(\"telescope\").load_extension(\"gist\")\n```\n\n### mini.deps\n\n```lua\nMiniDeps.add({\n  source = \"antlis/telescope-gist\",\n  depends = { \"nvim-telescope/telescope.nvim\", \"nvim-lua/plenary.nvim\" },\n})\nrequire(\"telescope-gist\").setup({})\nrequire(\"telescope\").load_extension(\"gist\")\n```\n\n### Manual / other managers\n\nClone the repo anywhere on your `runtimepath` and ensure `telescope.nvim` + `plenary.nvim` are installed. Then add to your config:\n\n```lua\nrequire(\"telescope-gist\").setup({})\nrequire(\"telescope\").load_extension(\"gist\")\n```\n\n## Configuration\n\n```lua\nrequire(\"telescope-gist\").setup({\n  limit = 100,                        -- gh gist list --limit\n  cache = {\n    enabled = true,\n    ttl_minutes = 10,\n    dir = vim.fn.stdpath(\"cache\") .. \"/telescope-gist\",\n  },\n  keymaps = {\n    open     = \"\u003cCR\u003e\",      -- opens for editing; :w pushes back via PATCH /gists/\u003cid\u003e\n    delete   = \"\u003cC-d\u003e\",\n    new      = \"\u003cC-n\u003e\",\n    yank_url = \"\u003cC-y\u003e\",\n    refresh  = \"\u003cC-r\u003e\",\n  },\n})\n```\n\n## Roadmap: data backend\n\nv0.1 uses the `gh` CLI as the data source — zero auth code, ships fast, and\nthe two-layer cache hides subprocess overhead.\n\nv0.2 will move to a **hybrid model**: keep `gh` for auth bootstrap (`gh auth token`)\nbut talk to the GitHub REST/GraphQL API directly via `plenary.curl`. Wins:\n\n- **ETag / `If-None-Match`** — cache validation in \u003c50ms with no payload transfer\n- Lower per-call latency (no subprocess spawn)\n- Single round-trip for list + first-file content (GraphQL)\n- Still no PAT prompts: token comes from the user's existing `gh` auth\n\nThe boundary lives entirely inside `lua/telescope-gist/gh.lua` — every other\nmodule already consumes a normalized shape that matches the REST API, so the\nswap is contained.\n\n## Architecture\n\n```\nlua/\n├── telescope/_extensions/gist.lua   -- Telescope extension entry point\n└── telescope-gist/\n    ├── init.lua          -- public API: setup(), list()\n    ├── config.lua        -- defaults + tbl_deep_extend merge\n    ├── gh.lua            -- async wrapper around `gh` CLI\n    ├── cache.lua         -- two-layer cache (memory + disk TTL)\n    ├── pickers.lua       -- Telescope picker construction\n    ├── previewer.lua     -- filetype-aware preview buffer\n    └── actions.lua       -- open / edit / delete / new / yank / refresh\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantlis%2Ftelescope-gist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantlis%2Ftelescope-gist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantlis%2Ftelescope-gist/lists"}