This commit is contained in:
Acid
2026-05-22 22:51:22 -04:00
parent d3682a4bf6
commit cd2851ae68
8 changed files with 212 additions and 64 deletions
+2
View File
@@ -8,3 +8,5 @@ sublime-text/Local/*
/sublime-text/Trash/* /sublime-text/Trash/*
nvim/autoload/plug.vim.old nvim/autoload/plug.vim.old
nvim/.luarc.json nvim/.luarc.json
.claude
CLAUDE*
+13 -12
View File
@@ -1,5 +1,5 @@
{ {
"LuaSnip": { "branch": "master", "commit": "a62e1083a3cfe8b6b206e7d3d33a51091df25357" }, "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" },
"barbar.nvim": { "branch": "master", "commit": "a4bef5b4fc1f064f2f673172252028eae18191c9" }, "barbar.nvim": { "branch": "master", "commit": "a4bef5b4fc1f064f2f673172252028eae18191c9" },
"buffer-vacuum": { "branch": "main", "commit": "917986d31cce6501c929ab6088c0887beff56b69" }, "buffer-vacuum": { "branch": "main", "commit": "917986d31cce6501c929ab6088c0887beff56b69" },
"catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" }, "catppuccin": { "branch": "main", "commit": "426dbebe06b5c69fd846ceb17b42e12f890aedf1" },
@@ -9,28 +9,29 @@
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
"go-tagger.nvim": { "branch": "master", "commit": "8fb11cdda459d2336c6312d9dfb2108f250b95e2" },
"harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
"indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"local-highlight.nvim": { "branch": "master", "commit": "dd8ae2ca26a5cfa17fb598864eacbe2df63938f3" }, "local-highlight.nvim": { "branch": "master", "commit": "dd8ae2ca26a5cfa17fb598864eacbe2df63938f3" },
"lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason.nvim": { "branch": "main", "commit": "cb8445f8ce85d957416c106b780efd51c6298f89" }, "mason.nvim": { "branch": "main", "commit": "bb639d4bf385a4d89f478b83af4d770be05ab7eb" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "84c75e7a7e443586f60508d12fc50f90d9aee14e" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "ebd66767191714e008ce73b769518a763ff31bdc" },
"none-ls-extras.nvim": { "branch": "main", "commit": "70ec8815cdf186223af04cc5a15bc8bdface0ef0" }, "none-ls-extras.nvim": { "branch": "main", "commit": "167f29529ff1438e673b1792a71aaf79ddd6c74f" },
"none-ls.nvim": { "branch": "main", "commit": "241ff8214b4ec051eb51e74a61ff729c0271b429" }, "none-ls.nvim": { "branch": "main", "commit": "f9d557ac7cd28a3a993b5ea49716498bd540b01f" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" }, "nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" },
"nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" },
"nvim-colorizer.lua": { "branch": "master", "commit": "5cfe7fffbd01e17b3c1e14af85d5febdef88bd8c" }, "nvim-colorizer.lua": { "branch": "master", "commit": "5cfe7fffbd01e17b3c1e14af85d5febdef88bd8c" },
"nvim-lspconfig": { "branch": "master", "commit": "31026a13eefb20681124706a79fc1df6bf11ab27" }, "nvim-lspconfig": { "branch": "master", "commit": "a4ed4e761c400849e8c9f8bda33e5083f890268c" },
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" }, "nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" }, "nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
"nvim-web-devicons": { "branch": "master", "commit": "4fc505ac7bd7692824a142e96e5f529c133862f8" }, "nvim-web-devicons": { "branch": "master", "commit": "0d7d35fa946837b8738b17c18d1faa1ac351e7f9" },
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" }, "oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "08783ec022e7ddefe0f12a16f1ac4968f55478b0" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "a798325b7f36acc62741d1029930a7b96d4dd4bf" },
"ruffer": { "branch": "plugin", "commit": "5248604605bf1039147f3f29dcd46aa296557e9c" }, "ruffer": { "branch": "plugin", "commit": "5248604605bf1039147f3f29dcd46aa296557e9c" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
@@ -40,7 +41,7 @@
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
"vim-dadbod-ui": { "branch": "master", "commit": "07e92e22114cc5b1ba4938d99897d85b58e20475" }, "vim-dadbod-ui": { "branch": "master", "commit": "07e92e22114cc5b1ba4938d99897d85b58e20475" },
"vim-devicons": { "branch": "master", "commit": "71f239af28b7214eebb60d4ea5bd040291fb7e33" }, "vim-devicons": { "branch": "master", "commit": "71f239af28b7214eebb60d4ea5bd040291fb7e33" },
"vim-floaterm": { "branch": "master", "commit": "0ab5eb8135dc884bc543a819ac7033c15e72a76b" }, "vim-floaterm": { "branch": "master", "commit": "bb4ba7952e906408e1f83b215f55ffe57efcade6" },
"vim-signature": { "branch": "master", "commit": "6bc3dd1294a22e897f0dcf8dd72b85f350e306bc" }, "vim-signature": { "branch": "master", "commit": "6bc3dd1294a22e897f0dcf8dd72b85f350e306bc" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" } "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }
} }
+36 -46
View File
@@ -181,7 +181,7 @@ null_ls.setup({
ruff_format, ruff_format,
}, },
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
if client.supports_method("textDocument/formatting") then -- run formatters on save if client:supports_method("textDocument/formatting") then -- run formatters on save
vim.api.nvim_create_autocmd("BufWritePre", { vim.api.nvim_create_autocmd("BufWritePre", {
buffer = bufnr, buffer = bufnr,
callback = function() callback = function()
@@ -193,49 +193,39 @@ null_ls.setup({
}) })
--"'''''''''''''''''''Tree sitter highlight'''''''''''''''''''''''''''''' --"'''''''''''''''''''Tree sitter highlight''''''''''''''''''''''''''''''
require("nvim-treesitter.configs").setup({ require("nvim-treesitter").install({ "lua", "bash", "python", "typescript", "javascript", "go" })
-- A list of parser names, or "all"
ensure_installed = { "lua", "bash", "python", "typescript", "javascript", "go" }, local ts_indent_langs = { "html", "javascript", "tsx", "go", "lua" }
sync_install = false, vim.api.nvim_create_autocmd("FileType", {
indent = { callback = function(ev)
enable = true, pcall(vim.treesitter.start)
disable = function(lang, bufnr) if vim.tbl_contains(ts_indent_langs, ev.match) then
local enabled_langs = { "html", "javascript", "tsx", "go" } -- Enable auto indent only for these languages vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
return not vim.tbl_contains(enabled_langs, lang) end
end, end,
},
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
["as"] = { query = "@local.scope", query_group = "locals", desc = "Select language scope" },
},
selection_modes = {
["@parameter.outer"] = "v", -- charwise
["@function.outer"] = "V", -- linewise
["@class.outer"] = "<c-v>", -- blockwise
},
include_surrounding_whitespace = false,
},
move = {
enable = true,
set_jumps = true,
goto_next_start = {
["<C-f>"] = "@function.outer", -- jump to next function
},
goto_previous_start = {
["<A-f>"] = "@function.outer", -- jump to previous function
},
},
},
}) })
require("nvim-treesitter-textobjects").setup({
select = {
lookahead = true,
selection_modes = {
["@parameter.outer"] = "v",
["@function.outer"] = "V",
["@class.outer"] = "<c-v>",
},
include_surrounding_whitespace = false,
},
move = { set_jumps = true },
})
local select = require("nvim-treesitter-textobjects.select")
local move = require("nvim-treesitter-textobjects.move")
vim.keymap.set({ "x", "o" }, "af", function() select.select_textobject("@function.outer", "textobjects") end)
vim.keymap.set({ "x", "o" }, "if", function() select.select_textobject("@function.inner", "textobjects") end)
vim.keymap.set({ "x", "o" }, "ac", function() select.select_textobject("@class.outer", "textobjects") end)
vim.keymap.set({ "x", "o" }, "ic", function() select.select_textobject("@class.inner", "textobjects") end)
vim.keymap.set({ "x", "o" }, "as", function() select.select_textobject("@local.scope", "locals") end)
vim.keymap.set({ "n", "x", "o" }, "<C-f>", function() move.goto_next_start("@function.outer", "textobjects") end)
vim.keymap.set({ "n", "x", "o" }, "<A-f>", function() move.goto_previous_start("@function.outer", "textobjects") end)
+28 -4
View File
@@ -68,9 +68,11 @@ local plugins = {
-- Treesitter -- Treesitter
{ {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
branch = "main",
lazy = false,
build = ":TSUpdate", build = ":TSUpdate",
}, },
{ "nvim-treesitter/nvim-treesitter-textobjects" }, { "nvim-treesitter/nvim-treesitter-textobjects", branch = "main" },
-- Mason package manager -- Mason package manager
{ {
@@ -102,9 +104,12 @@ local plugins = {
{ "tpope/vim-surround" }, { "tpope/vim-surround" },
-- Formatter/Linter integration -- Formatter/Linter integration
{ "nvimtools/none-ls.nvim", dependencies = { {
"nvimtools/none-ls-extras.nvim", "nvimtools/none-ls.nvim",
} }, dependencies = {
"nvimtools/none-ls-extras.nvim",
},
},
-- Treesitter auto-closing tags -- Treesitter auto-closing tags
{ "windwp/nvim-ts-autotag" }, { "windwp/nvim-ts-autotag" },
@@ -195,6 +200,25 @@ local plugins = {
vim.g.db_ui_use_nerd_fonts = 1 vim.g.db_ui_use_nerd_fonts = 1
end, end,
}, },
-- go-tagger
{
"romus204/go-tagger.nvim",
config = function()
require("go-tagger").setup({
skip_private = true,
casing = "camelCase",
tags = {
json = {
casing = "camelCase",
},
xml = {
casing = "snake_case",
},
},
})
end,
},
} }
local opts = {} local opts = {}
+38
View File
@@ -0,0 +1,38 @@
# Patches
Local fixes for archived or unmaintained plugins that won't receive upstream updates.
---
## nvim-treesitter-nvim012.patch
**Plugin:** nvim-treesitter
**Affects:** Neovim 0.12+
**File patched:** `lua/nvim-treesitter/query_predicates.lua`
### What it fixes
Neovim 0.12 removed the `all` option from `add_directive`/`add_predicate`.
Match callbacks now always receive `TSNode[]` arrays instead of a single `TSNode`.
nvim-treesitter was not updated for this (the master branch was archived in May 2025),
causing a crash whenever treesitter injection queries run (e.g. opening a markdown file):
```
attempt to call method 'range' (a nil value)
```
### How to apply
Run from the nvim-treesitter plugin directory:
```sh
cd ~/.local/share/nvim/lazy/nvim-treesitter
git apply ~/.config/nvim/patches/nvim-treesitter-nvim012.patch
```
Or with the system `patch` command:
```sh
cd ~/.local/share/nvim/lazy/nvim-treesitter
patch -p1 < ~/.config/nvim/patches/nvim-treesitter-nvim012.patch
```
@@ -0,0 +1,82 @@
From: local fix
Subject: Fix query_predicates for Neovim 0.12 TSNode[] match format
Neovim 0.12 removed the `all` option from add_directive/add_predicate.
Match callbacks now always receive TSNode[] (arrays) instead of a single
TSNode. nvim-treesitter assumed a single node; the nil-check passed
because arrays are truthy, then node:range() crashed on a plain table.
Add a first_node() helper and use it everywhere match[id] is accessed.
diff --git a/lua/nvim-treesitter/query_predicates.lua b/lua/nvim-treesitter/query_predicates.lua
index 7539170d..4fd7aef5 100644
--- a/lua/nvim-treesitter/query_predicates.lua
+++ b/lua/nvim-treesitter/query_predicates.lua
@@ -18,6 +18,13 @@ local non_filetype_match_injection_language_aliases = {
-- compatibility shim for breaking change on nightly/0.11
local opts = vim.fn.has "nvim-0.10" == 1 and { force = true, all = false } or true
+-- Neovim 0.12 dropped the `all` option: match values are now TSNode[] not TSNode
+local function first_node(match, id)
+ local n = match[id]
+ if type(n) == "table" then n = n[1] end
+ return n
+end
+
local function get_parser_from_markdown_info_string(injection_alias)
local match = vim.filetype.match { filename = "a." .. injection_alias }
return match or non_filetype_match_injection_language_aliases[injection_alias] or injection_alias
@@ -53,7 +60,7 @@ query.add_predicate("nth?", function(match, _pattern, _bufnr, pred)
return
end
- local node = match[pred[2]] ---@type TSNode
+ local node = first_node(match, pred[2]) ---@type TSNode
local n = tonumber(pred[3])
if node and node:parent() and node:parent():named_child_count() > n then
return node:parent():named_child(n) == node
@@ -74,7 +81,7 @@ query.add_predicate("is?", function(match, _pattern, bufnr, pred)
-- Avoid circular dependencies
local locals = require "nvim-treesitter.locals"
- local node = match[pred[2]]
+ local node = first_node(match, pred[2])
local types = { unpack(pred, 3) }
if not node then
@@ -96,7 +103,7 @@ query.add_predicate("kind-eq?", function(match, _pattern, _bufnr, pred)
return
end
- local node = match[pred[2]]
+ local node = first_node(match, pred[2])
local types = { unpack(pred, 3) }
if not node then
@@ -113,7 +120,7 @@ end, opts)
---@return boolean|nil
query.add_directive("set-lang-from-mimetype!", function(match, _, bufnr, pred, metadata)
local capture_id = pred[2]
- local node = match[capture_id]
+ local node = first_node(match, capture_id)
if not node then
return
end
@@ -134,7 +141,7 @@ end, opts)
---@return boolean|nil
query.add_directive("set-lang-from-info-string!", function(match, _, bufnr, pred, metadata)
local capture_id = pred[2]
- local node = match[capture_id]
+ local node = first_node(match, capture_id)
if not node then
return
end
@@ -154,7 +161,7 @@ query.add_directive("make-range!", function() end, opts)
---@return boolean|nil
query.add_directive("downcase!", function(match, _, bufnr, pred, metadata)
local id = pred[2]
- local node = match[id]
+ local node = first_node(match, id)
if not node then
return
end
+1
View File
@@ -24,6 +24,7 @@
"hyprland/workspaces": { "hyprland/workspaces": {
"on-click": "activate",
"format": " {icon} ", "format": " {icon} ",
"format-icons": { "format-icons": {
"1": " ", "1": " ",
+12 -2
View File
@@ -27,6 +27,8 @@ config.window_background_opacity = 0.92
config.use_fancy_tab_bar = false config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = false config.tab_bar_at_bottom = false
config.warn_about_missing_glyphs = false
-- Cursor -- Cursor
config.default_cursor_style = "BlinkingBlock" config.default_cursor_style = "BlinkingBlock"
config.cursor_blink_rate = 600 config.cursor_blink_rate = 600
@@ -47,8 +49,16 @@ config.keys = {
{ key = "U", mods = "CTRL|SHIFT", action = wezterm.action.AttachDomain("unix") }, { key = "U", mods = "CTRL|SHIFT", action = wezterm.action.AttachDomain("unix") },
-- splits -- splits
{ key = "h", mods = "ALT", action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, {
{ key = "5", mods = "ALT", action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }) }, key = "h",
mods = "ALT",
action = wezterm.action.SplitHorizontal({ domain = "CurrentPaneDomain" }),
},
{
key = "5",
mods = "ALT",
action = wezterm.action.SplitVertical({ domain = "CurrentPaneDomain" }),
},
{ key = "LeftArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Left") }, { key = "LeftArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Left") },
{ key = "RightArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Right") }, { key = "RightArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Right") },
{ key = "UpArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Up") }, { key = "UpArrow", mods = "ALT", action = wezterm.action.ActivatePaneDirection("Up") },