From 5e981f9a8cd75eb6f49756e188411037b82b8045 Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Sat, 1 Nov 2025 13:41:53 +0100 Subject: [PATCH 1/3] feat(snacks): `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. --- lua/lazyvim/config/init.lua | 4 +++- lua/lazyvim/plugins/extras/editor/snacks_picker.lua | 6 +++++- lua/lazyvim/plugins/extras/util/octo.lua | 10 ++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 5e56a073..628e1099 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -34,7 +34,9 @@ local defaults = { dots = "󰇘", }, ft = { - octo = "", + octo = " ", + gh = " ", + ["markdown.gh"] = " ", }, dap = { Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, diff --git a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua index 48eea01a..6220bfdf 100644 --- a/lua/lazyvim/plugins/extras/editor/snacks_picker.lua +++ b/lua/lazyvim/plugins/extras/editor/snacks_picker.lua @@ -73,9 +73,13 @@ return { { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, -- git { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (hunks)" }, - { "gD", function() Snacks.picker.git_diff({ base = "origin" }) end, desc = "Git Diff (origin)" }, + { "gD", function() Snacks.picker.git_diff({ base = "origin", group = true }) end, desc = "Git Diff (origin)" }, { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, + { "gi", function() Snacks.picker.gh_issue() end, desc = "GitHub Issues (open)" }, + { "gI", function() Snacks.picker.gh_issue({ state = "all" }) end, desc = "GitHub Issues (all)" }, + { "gp", function() Snacks.picker.gh_pr() end, desc = "GitHub Pull Requests (open)" }, + { "gP", function() Snacks.picker.gh_pr({ state = "all" }) end, desc = "GitHub Pull Requests (all)" }, -- Grep { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, { "sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, diff --git a/lua/lazyvim/plugins/extras/util/octo.lua b/lua/lazyvim/plugins/extras/util/octo.lua index d3316f5e..5637b8fd 100644 --- a/lua/lazyvim/plugins/extras/util/octo.lua +++ b/lua/lazyvim/plugins/extras/util/octo.lua @@ -3,6 +3,16 @@ return { -- depends on the git extra for highlighting and auto-completion of github issues/prs { import = "lazyvim.plugins.extras.lang.git" }, + { + "folke/snacks.nvim", + keys = { -- disable conflicting keymaps + { "gi", false }, + { "gI", false }, + { "gp", false }, + { "gP", false }, + }, + }, + -- Octo { "pwntester/octo.nvim", From 28db03f958d58dfff3c647ce28fdc1cb88ac158d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 13:44:04 +0100 Subject: [PATCH 2/3] chore(main): release 15.13.0 :robot: I have created a release *beep* *boop* --- ## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01) ### Features * **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045)) ### Bug Fixes * **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ lua/lazyvim/config/init.lua | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 350a6875..27277755 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "15.12.2" + ".": "15.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d81a5b74..24045345 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01) + + +### Features + +* **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045)) + + +### Bug Fixes + +* **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe)) + ## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26) diff --git a/lua/lazyvim/config/init.lua b/lua/lazyvim/config/init.lua index 628e1099..562a0687 100644 --- a/lua/lazyvim/config/init.lua +++ b/lua/lazyvim/config/init.lua @@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util") ---@class LazyVimConfig: LazyVimOptions local M = {} -M.version = "15.12.2" -- x-release-please-version +M.version = "15.13.0" -- x-release-please-version LazyVim.config = M ---@class LazyVimOptions From 42c9f7152b9bd1a4f739b115390370c208dc2a55 Mon Sep 17 00:00:00 2001 From: Thomas Vandal Date: Mon, 3 Nov 2025 01:51:07 -0500 Subject: [PATCH 3/3] feat(treesitter): support query table in treesitter-textobjects mappings (#6736) ## Description `treesitter-textobjects` mappings accept a table query (for the "move" mappings, at least, I haven't checked the others). Currently, in LazyVim, using a table causes an error due to the assumption that `query` is a string in the `config` function that creates the keymap description. This PR adds a simple loop to gather the queries from a table and join them with "or" in the description. Here is an example config and the resulting error. Everything works as expected with the PR and string (single) queries still behave as expected. ```lua { "nvim-treesitter/nvim-treesitter-textobjects", opts = { move = { keys = { goto_next_start = { ["]j"] = { "@function.outer", "@class.outer" } }, goto_next_end = { ["]J"] = { "@function.outer", "@class.outer" } }, goto_previous_start = { ["[j"] = { "@function.outer", "@class.outer" } }, goto_previous_end = { ["[J"] = { "@function.outer", "@class.outer" } }, }, }, }, } ``` ```lua Failed to run `config` for nvim-treesitter-textobjects ...vim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174: attempt to call method 'gsub' (a nil value) # stacktrace: - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:174 - vim/shared.lua:0 _in_ **tbl_map** - repos/nvim-local/opt/LazyVim/lua/lazyvim/plugins/treesitter.lua:197 _in_ **config** ``` ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines. --- lua/lazyvim/plugins/treesitter.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/treesitter.lua b/lua/lazyvim/plugins/treesitter.lua index 7fee6c38..4497ff1c 100644 --- a/lua/lazyvim/plugins/treesitter.lua +++ b/lua/lazyvim/plugins/treesitter.lua @@ -171,8 +171,14 @@ return { for method, keymaps in pairs(moves) do for key, query in pairs(keymaps) do - local desc = query:gsub("@", ""):gsub("%..*", "") - desc = desc:sub(1, 1):upper() .. desc:sub(2) + local queries = type(query) == "table" and query or { query } + local parts = {} + for _, q in ipairs(queries) do + local part = q:gsub("@", ""):gsub("%..*", "") + part = part:sub(1, 1):upper() .. part:sub(2) + table.insert(parts, part) + end + local desc = table.concat(parts, " or ") desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start") if not (vim.wo.diff and key:find("[cC]")) then