5 Achegas e9017fa9be ... 469c77dd0e

Autor SHA1 Mensaxe Data
  Thomas Dy 469c77dd0e nixpkgs/neovim: use nixpkgs lsp packages hai 1 mes
  Thomas Dy d89df1ea1a nixpkgs/neovim: update plugins and treesitter hai 1 mes
  Thomas Dy e7ea95e90b nixpkgs/neovim: update flake.lock (neovim 12) hai 2 meses
  Thomas Dy 065c624a88 nixpkgs/neovim: cleanup old patches hai 2 meses
  Thomas Dy a12f128ada nixpkgs/elvish: add Ctrl-W binding for location hai 3 meses

+ 19 - 0
.config/nixpkgs/elvish/elvish-mode-bindings.patch

@@ -0,0 +1,19 @@
+diff --git a/pkg/cli/modes/mode.go b/pkg/cli/modes/mode.go
+index c1def4f5..0ce3ce69 100644
+--- a/pkg/cli/modes/mode.go
++++ b/pkg/cli/modes/mode.go
+@@ -17,9 +17,13 @@ var ErrFocusedWidgetNotCodeArea = errors.New("focused widget is not a code area"
+ // FocusedCodeArea returns a CodeArea widget if the currently focused widget is
+ // a CodeArea. Otherwise it returns the error ErrFocusedWidgetNotCodeArea.
+ func FocusedCodeArea(a cli.App) (tk.CodeArea, error) {
+-	if w, ok := a.FocusedWidget().(tk.CodeArea); ok {
++	widget := a.FocusedWidget()
++	if w, ok := widget.(tk.CodeArea); ok {
+ 		return w, nil
+ 	}
++	if w, ok := widget.(tk.ComboBox); ok {
++		return w.CodeArea(), nil
++	}
+ 	return nil, ErrFocusedWidgetNotCodeArea
+ }
+ 

+ 2 - 0
.config/nixpkgs/elvish/flake.nix

@@ -24,6 +24,8 @@
 
           subPackages = [ "cmd/elvish" ];
 
+          patches = [ ./elvish-mode-bindings.patch ];
+
           vendorHash = "sha256-eCA+vdAFOiCUSrapB6vcL3aF/0MuK3Vx6P2vuDdk9v8=";
         };
       in {

+ 1 - 0
.config/nixpkgs/elvish/lib/config.elv

@@ -29,6 +29,7 @@ if (has-external delta) {
 use readline-binding
 set edit:completion:binding[Ctrl-W] = $edit:close-mode~
 set edit:completion:binding[Tab] = $edit:completion:accept~
+set edit:location:binding[Ctrl-W] = $edit:kill-word-left~
 
 var max-len = 30
 

+ 4 - 0
.config/nixpkgs/neovim/config/lua/user/plugins/editing.lua

@@ -31,6 +31,10 @@ local spec_treesitter = require('mini.ai').gen_spec.treesitter
 MiniAi.setup({
   -- only consider the current location
   search_method = 'cover',
+  mappings = {
+    around_next = '',
+    inside_next = '',
+  },
   custom_textobjects = {
     ['.'] = spec_treesitter({
       a = '@call.outer',

+ 16 - 29
.config/nixpkgs/neovim/config/lua/user/plugins/treesitter.lua

@@ -1,37 +1,24 @@
--- Use Treesitter for syntax highlighting
-require('nvim-treesitter.configs').setup({
-  highlight = {
-    enable = true,
-  },
-  indent = {
-    enable = true,
-  },
-  incremental_selection = {
-    enable = true,
-    keymaps = {
-      init_selection = ']t',
-      node_incremental = ']t',
-      node_decremental = '[t',
-    },
-  },
-  textobjects = {
-    swap = {
-      enable = true,
-      swap_next = {
-        ['>,'] = '@parameter.inner',
-      },
-      swap_previous = {
-        ['<,'] = '@parameter.inner',
-      },
-    },
-  },
-})
+-- treesitter indent
+vim.o.indentexpr = "v:lua.require('nvim-treesitter.indent').get_indent(v:num)"
 
 -- set foldexpr to use treesitter
 vim.o.foldmethod = 'expr'
-vim.o.foldexpr = 'nvim_treesitter#foldexpr()'
+vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
 vim.o.foldenable = false
 
+-- incremental selection
+vim.keymap.set('n', ']t', 'van', { remap = true })
+vim.keymap.set('v', ']t', 'an', { remap = true })
+vim.keymap.set('v', '[t', 'in', { remap = true })
+
+-- swapping textobjects
+vim.keymap.set('n', '>,', function()
+  require('nvim-treesitter-textobjects.swap').swap_next '@parameter.inner'
+end)
+vim.keymap.set('n', '<,', function()
+  require('nvim-treesitter-textobjects.swap').swap_previous '@parameter.inner'
+end)
+
 -- Treesitter context
 require('treesitter-context').setup({
   enable = true,

+ 24 - 21
.config/nixpkgs/neovim/flake.lock

@@ -9,11 +9,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1767539980,
-        "narHash": "sha256-HJaj9wi0FZB9vvHpeQFeDZAth5Qi3QrlFJJiiqGl5/8=",
+        "lastModified": 1775669094,
+        "narHash": "sha256-YnzqnXrvjU7Z4N0NIUF2CBe471zM3wvs5Fx63NzG4LY=",
         "owner": "Saghen",
         "repo": "blink.cmp",
-        "rev": "6a4914ca987453464a7dfc7fc237a992adb567d0",
+        "rev": "456d38d1cd3743926f329204c2340f3e7840aad6",
         "type": "github"
       },
       "original": {
@@ -31,11 +31,11 @@
         "rust-analyzer-src": "rust-analyzer-src"
       },
       "locked": {
-        "lastModified": 1761028747,
-        "narHash": "sha256-UqCbRuqnsVURCB0hLZL9SwFNDNftIE1Zxj7Ykf1aRj4=",
+        "lastModified": 1770102568,
+        "narHash": "sha256-VYwA9FmakKJ3zLfAd7bdj9xIB9PzfISLoYh6eZl+EuQ=",
         "owner": "nix-community",
         "repo": "fenix",
-        "rev": "1dd37dd710195936f675eb0d36cf284806f99a94",
+        "rev": "592daa37b5a3175c61541329b64d6c1972303bc1",
         "type": "github"
       },
       "original": {
@@ -49,11 +49,11 @@
         "nixpkgs-lib": "nixpkgs-lib"
       },
       "locked": {
-        "lastModified": 1733312601,
-        "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
+        "lastModified": 1769996383,
+        "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
         "owner": "hercules-ci",
         "repo": "flake-parts",
-        "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
+        "rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
         "type": "github"
       },
       "original": {
@@ -82,11 +82,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1767364772,
-        "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
+        "lastModified": 1775763530,
+        "narHash": "sha256-BuTK9z1QEwWPOIakQ1gCN4pa4VwVJpfptYCviy2uOGc=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
+        "rev": "b0188973b4b2a5b6bdba8b65381d6cd09a533da0",
         "type": "github"
       },
       "original": {
@@ -98,14 +98,17 @@
     },
     "nixpkgs-lib": {
       "locked": {
-        "lastModified": 1733096140,
-        "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=",
-        "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
+        "lastModified": 1769909678,
+        "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
+        "owner": "nix-community",
+        "repo": "nixpkgs.lib",
+        "rev": "72716169fe93074c333e8d0173151350670b824c",
+        "type": "github"
       },
       "original": {
-        "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz"
+        "owner": "nix-community",
+        "repo": "nixpkgs.lib",
+        "type": "github"
       }
     },
     "root": {
@@ -118,11 +121,11 @@
     "rust-analyzer-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1760976639,
-        "narHash": "sha256-v+teOfOLbR9UFLuaMfbsd/L5ckJBcQJyeFj23V3lz8g=",
+        "lastModified": 1770026591,
+        "narHash": "sha256-VZlloygYDmozJwbZZkCSNpiPhNdOW/AA0b6LmNBZ3xU=",
         "owner": "rust-lang",
         "repo": "rust-analyzer",
-        "rev": "4a305f565ab964caf22dc72980a44b2970a9c2f1",
+        "rev": "74eca73f3b0a41b80228b8e499c7547cc8b2effa",
         "type": "github"
       },
       "original": {

+ 0 - 1
.config/nixpkgs/neovim/flake.nix

@@ -16,7 +16,6 @@
         pkgs = import nixpkgs {
           inherit system;
           overlays = [(final: prev: {
-            node-lsp = final.callPackage ./node-lsp {};
             blink-cmp = blink-cmp.packages.${system}.blink-cmp;
           })];
         };

+ 0 - 105
.config/nixpkgs/neovim/neovim-32619.patch

@@ -1,105 +0,0 @@
-diff --git a/runtime/lua/vim/treesitter/highlighter.lua b/runtime/lua/vim/treesitter/highlighter.lua
-index db4475e7e4..766f5f5416 100644
---- a/runtime/lua/vim/treesitter/highlighter.lua
-+++ b/runtime/lua/vim/treesitter/highlighter.lua
-@@ -52,11 +52,14 @@ function TSHighlighterQuery:query()
-   return self._query
- end
- 
-+---@alias MarkInfo { start_line: integer, start_col: integer, opts: vim.api.keyset.set_extmark }
-+
- ---@class (private) vim.treesitter.highlighter.State
- ---@field tstree TSTree
- ---@field next_row integer
- ---@field iter vim.treesitter.highlighter.Iter?
- ---@field highlighter_query vim.treesitter.highlighter.Query
-+---@field prev_marks MarkInfo[]
- 
- ---@nodoc
- ---@class vim.treesitter.highlighter
-@@ -220,6 +223,7 @@ function TSHighlighter:prepare_highlight_states(win, srow, erow)
-       next_row = 0,
-       iter = nil,
-       highlighter_query = hl_query,
-+      prev_marks = {},
-     })
-   end)
- end
-@@ -311,6 +315,35 @@ local function get_spell(capture_name)
-   return nil, 0
- end
- 
-+---Adds the mark to the buffer, clipped by the line.
-+---Queues the remainder if the mark continues after the line.
-+---@param m MarkInfo
-+---@param buf integer
-+---@param line integer
-+---@param next_marks MarkInfo[]
-+local function add_mark(m, buf, line, next_marks)
-+  local cur_start_l = m.start_line
-+  local cur_start_c = m.start_col
-+  if cur_start_l < line then
-+    cur_start_l = line
-+    cur_start_c = 0
-+  end
-+
-+  local cur_opts = m.opts
-+  if cur_opts.end_line >= line + 1 then
-+    cur_opts = vim.deepcopy(cur_opts, true)
-+    cur_opts.end_line = line + 1
-+    cur_opts.end_col = 0
-+    table.insert(next_marks, m)
-+  end
-+
-+  local empty = cur_opts.end_line < cur_start_l
-+    or (cur_opts.end_line == cur_start_l and cur_opts.end_col <= cur_start_c)
-+  if cur_start_l <= line and not empty then
-+    api.nvim_buf_set_extmark(buf, ns, cur_start_l, cur_start_c, cur_opts)
-+  end
-+end
-+
- ---@param self vim.treesitter.highlighter
- ---@param win integer
- ---@param buf integer
-@@ -328,6 +361,12 @@ local function on_line_impl(self, win, buf, line, on_spell, on_conceal)
-       return
-     end
- 
-+    local next_marks = {}
-+
-+    for _, mark in ipairs(state.prev_marks) do
-+      add_mark(mark, buf, line, next_marks)
-+    end
-+
-     if state.iter == nil or state.next_row < line then
-       -- Mainly used to skip over folds
- 
-@@ -367,7 +406,7 @@ local function on_line_impl(self, win, buf, line, on_spell, on_conceal)
-         local url = get_url(match, buf, capture, metadata)
- 
-         if hl and end_row >= line and not on_conceal and (not on_spell or spell ~= nil) then
--          api.nvim_buf_set_extmark(buf, ns, start_row, start_col, {
-+          local opts = {
-             end_line = end_row,
-             end_col = end_col,
-             hl_group = hl,
-@@ -376,7 +415,9 @@ local function on_line_impl(self, win, buf, line, on_spell, on_conceal)
-             conceal = conceal,
-             spell = spell,
-             url = url,
--          })
-+          }
-+          local mark = { start_line = start_row, start_col = start_col, opts = opts }
-+          add_mark(mark, buf, line, next_marks)
-         end
- 
-         if
-@@ -395,6 +436,8 @@ local function on_line_impl(self, win, buf, line, on_spell, on_conceal)
-         state.next_row = start_row
-       end
-     end
-+
-+    state.prev_marks = next_marks
-   end)
- end
- 

+ 0 - 60
.config/nixpkgs/neovim/neovim-34946.patch

@@ -1,60 +0,0 @@
-From cad0c71adc30ca4d358cec3146495b340b2e068e Mon Sep 17 00:00:00 2001
-From: Tronikel <contactdonatas@gmail.com>
-Date: Tue, 15 Jul 2025 18:18:50 +0300
-Subject: [PATCH] fix: close floating preview window correctly
-
----
- runtime/lua/vim/lsp/util.lua | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
-index db221ddc6889e6..28d00d6cd307f2 100644
---- a/runtime/lua/vim/lsp/util.lua
-+++ b/runtime/lua/vim/lsp/util.lua
-@@ -1418,9 +1418,10 @@ end
- ---
- ---@param events table list of events
- ---@param winnr integer window id of preview window
-----@param bufnrs table list of buffers where the preview window will remain visible
-+---@param floating_bufnr integer floating preview buffer
-+---@param bufnr integer buffer that opened the floating preview buffer
- ---@see autocmd-events
--local function close_preview_autocmd(events, winnr, bufnrs)
-+local function close_preview_autocmd(events, winnr, floating_bufnr, bufnr)
-   local augroup = api.nvim_create_augroup('nvim.preview_window_' .. winnr, {
-     clear = true,
-   })
-@@ -1429,13 +1430,13 @@ local function close_preview_autocmd(events, winnr, bufnrs)
-   -- the floating window buffer or the buffer that spawned it
-   api.nvim_create_autocmd('BufLeave', {
-     group = augroup,
--    buffer = bufnrs[1],
-+    buffer = bufnr,
-     callback = function()
-       vim.schedule(function()
-         -- When jumping to the quickfix window from the preview window,
-         -- do not close the preview window.
-         if api.nvim_get_option_value('filetype', { buf = 0 }) ~= 'qf' then
--          close_preview_window(winnr, bufnrs)
-+          close_preview_window(winnr, { floating_bufnr, bufnr })
-         end
-       end)
-     end,
-@@ -1444,7 +1445,7 @@ local function close_preview_autocmd(events, winnr, bufnrs)
-   if #events > 0 then
-     api.nvim_create_autocmd(events, {
-       group = augroup,
--      buffer = bufnrs[2],
-+      buffer = bufnr,
-       callback = function()
-         close_preview_window(winnr)
-       end,
-@@ -1690,7 +1691,7 @@ function M.open_floating_preview(contents, syntax, opts)
-       '<cmd>bdelete<cr>',
-       { silent = true, noremap = true, nowait = true }
-     )
--    close_preview_autocmd(opts.close_events, floating_winnr, { floating_bufnr, bufnr })
-+    close_preview_autocmd(opts.close_events, floating_winnr, floating_bufnr, bufnr)
- 
-     -- save focus_id
-     if opts.focus_id then

+ 8 - 3
.config/nixpkgs/neovim/neovim.nix

@@ -8,7 +8,10 @@
 , fd
 , ripgrep
 , html-tidy
-, node-lsp
+, typescript
+, bash-language-server
+, typescript-language-server
+, vscode-langservers-extracted
 , blink-cmp
 , fetchFromGitHub
 , fetchpatch
@@ -29,7 +32,7 @@ let
     if [ -x "./node_modules/.bin/tsc" ]; then
       exec ./node_modules/.bin/tsc "$@"
     else
-      exec ${node-lsp}/lib/node_modules/.bin/tsc "$@"
+      exec ${typescript}/bin/tsc "$@"
     fi
   '';
 
@@ -37,7 +40,9 @@ let
     fd
     ripgrep
     html-tidy
-    node-lsp
+    bash-language-server
+    typescript-language-server
+    vscode-langservers-extracted
     tsc
   ];
 

+ 0 - 22
.config/nixpkgs/neovim/node-lsp/default.nix

@@ -1,22 +0,0 @@
-{ buildNpmPackage }:
-
-buildNpmPackage {
-  pname = "node-lsp";
-  version = "0.0.0";
-
-  src = ./.;
-
-  dontNpmBuild = true;
-
-  installPhase = ''
-    mkdir -p "$out/lib"
-    cp -r node_modules "$out/lib"
-
-    mkdir -p "$out/bin"
-    ln -s "$out/lib/node_modules/.bin/bash-language-server" "$out/bin"
-    ln -s "$out/lib/node_modules/.bin/typescript-language-server" "$out/bin"
-    ln -s "$out/lib/node_modules/.bin/vscode-eslint-language-server" "$out/bin"
-  '';
-
-  npmDepsHash = "sha256-E548GngJMmVA28RjUsmsn/yoBPMXr75NJq3b/i4fuMU=";
-}

+ 0 - 812
.config/nixpkgs/neovim/node-lsp/package-lock.json

@@ -1,812 +0,0 @@
-{
-  "name": "node-lsp",
-  "version": "0.0.0",
-  "lockfileVersion": 3,
-  "requires": true,
-  "packages": {
-    "": {
-      "name": "node-lsp",
-      "version": "0.0.0",
-      "dependencies": {
-        "bash-language-server": "^5.6.0",
-        "typescript": "^5.8.3",
-        "typescript-language-server": "^4.3.4",
-        "vscode-langservers-extracted": "4.8.0"
-      }
-    },
-    "node_modules/@mixmark-io/domino": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz",
-      "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==",
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
-      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.stat": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
-      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      },
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/@one-ini/wasm": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.2.0.tgz",
-      "integrity": "sha512-n+L/BvrwKUn7q5O3wHGo+CJZAqfewh38+37sk+eBzv/39lM9pPgPRd4sOZRvSRzo0ukLxzyXso4WlGj2oKZ5hA==",
-      "license": "MIT"
-    },
-    "node_modules/@vscode/l10n": {
-      "version": "0.0.18",
-      "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
-      "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==",
-      "license": "MIT"
-    },
-    "node_modules/balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-      "license": "MIT"
-    },
-    "node_modules/bash-language-server": {
-      "version": "5.6.0",
-      "resolved": "https://registry.npmjs.org/bash-language-server/-/bash-language-server-5.6.0.tgz",
-      "integrity": "sha512-DCuV+/BZAAozsp5blvi6jDnU/ZDaTpJpWM0zqwGjnirfqv7iBsMK32xOze/jipxU0PUZ6CBUKgRUMKI7Kk70Lg==",
-      "license": "MIT",
-      "dependencies": {
-        "editorconfig": "2.0.1",
-        "fast-glob": "3.3.3",
-        "fuzzy-search": "3.2.1",
-        "node-fetch": "2.7.0",
-        "turndown": "7.2.0",
-        "vscode-languageserver": "8.0.2",
-        "vscode-languageserver-textdocument": "1.0.12",
-        "web-tree-sitter": "0.24.5",
-        "zod": "3.24.2"
-      },
-      "bin": {
-        "bash-language-server": "out/cli.js"
-      },
-      "engines": {
-        "node": ">=16"
-      }
-    },
-    "node_modules/boolbase": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
-      "license": "ISC"
-    },
-    "node_modules/brace-expansion": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
-      "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/braces": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
-      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-      "license": "MIT",
-      "dependencies": {
-        "fill-range": "^7.1.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/commander": {
-      "version": "13.1.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
-      "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/core-js": {
-      "version": "3.45.1",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz",
-      "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/core-js"
-      }
-    },
-    "node_modules/css-select": {
-      "version": "5.2.2",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
-      "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0",
-        "css-what": "^6.1.0",
-        "domhandler": "^5.0.2",
-        "domutils": "^3.0.1",
-        "nth-check": "^2.0.1"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/css-what": {
-      "version": "6.2.2",
-      "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
-      "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">= 6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/fb55"
-      }
-    },
-    "node_modules/dom-serializer": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
-      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
-      "license": "MIT",
-      "dependencies": {
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.2",
-        "entities": "^4.2.0"
-      },
-      "funding": {
-        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
-      }
-    },
-    "node_modules/domelementtype": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
-      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/fb55"
-        }
-      ],
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/domhandler": {
-      "version": "5.0.3",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
-      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "domelementtype": "^2.3.0"
-      },
-      "engines": {
-        "node": ">= 4"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domhandler?sponsor=1"
-      }
-    },
-    "node_modules/domutils": {
-      "version": "3.2.2",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
-      "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "dom-serializer": "^2.0.0",
-        "domelementtype": "^2.3.0",
-        "domhandler": "^5.0.3"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/domutils?sponsor=1"
-      }
-    },
-    "node_modules/editorconfig": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-2.0.1.tgz",
-      "integrity": "sha512-jMVc7LbF/M13cSpBiVWGut+qhIyOddIhSXPAntMSboEigGFGaQmBow9ZrVog0VT2K89qm0cyGHa7FRhcOqP8hA==",
-      "license": "MIT",
-      "dependencies": {
-        "@one-ini/wasm": "0.2.0",
-        "commander": "^13.1.0",
-        "minimatch": "10.0.1",
-        "semver": "^7.7.1"
-      },
-      "bin": {
-        "editorconfig": "bin/editorconfig"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/entities": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
-      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
-      "license": "BSD-2-Clause",
-      "engines": {
-        "node": ">=0.12"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/entities?sponsor=1"
-      }
-    },
-    "node_modules/fast-glob": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-      "license": "MIT",
-      "dependencies": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.8"
-      },
-      "engines": {
-        "node": ">=8.6.0"
-      }
-    },
-    "node_modules/fastq": {
-      "version": "1.19.1",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
-      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
-      "license": "ISC",
-      "dependencies": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "node_modules/fill-range": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
-      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-      "license": "MIT",
-      "dependencies": {
-        "to-regex-range": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fuzzy-search": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/fuzzy-search/-/fuzzy-search-3.2.1.tgz",
-      "integrity": "sha512-vAcPiyomt1ioKAsAL2uxSABHJ4Ju/e4UeDM+g1OlR0vV4YhLGMNsdLNvZTpEDY4JCSt0E4hASCNM5t2ETtsbyg==",
-      "license": "ISC"
-    },
-    "node_modules/glob-parent": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-      "license": "ISC",
-      "dependencies": {
-        "is-glob": "^4.0.1"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
-    "node_modules/he": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-      "license": "MIT",
-      "bin": {
-        "he": "bin/he"
-      }
-    },
-    "node_modules/is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-glob": {
-      "version": "4.0.3",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
-      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-      "license": "MIT",
-      "dependencies": {
-        "is-extglob": "^2.1.1"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/jsonc-parser": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
-      "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
-      "license": "MIT"
-    },
-    "node_modules/merge2": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 8"
-      }
-    },
-    "node_modules/micromatch": {
-      "version": "4.0.8",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
-      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-      "license": "MIT",
-      "dependencies": {
-        "braces": "^3.0.3",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=8.6"
-      }
-    },
-    "node_modules/minimatch": {
-      "version": "10.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
-      "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": "20 || >=22"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/node-fetch": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
-      "license": "MIT",
-      "dependencies": {
-        "whatwg-url": "^5.0.0"
-      },
-      "engines": {
-        "node": "4.x || >=6.0.0"
-      },
-      "peerDependencies": {
-        "encoding": "^0.1.0"
-      },
-      "peerDependenciesMeta": {
-        "encoding": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/node-html-parser": {
-      "version": "6.1.13",
-      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
-      "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
-      "license": "MIT",
-      "dependencies": {
-        "css-select": "^5.1.0",
-        "he": "1.2.0"
-      }
-    },
-    "node_modules/nth-check": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
-      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
-      "license": "BSD-2-Clause",
-      "dependencies": {
-        "boolbase": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/fb55/nth-check?sponsor=1"
-      }
-    },
-    "node_modules/picomatch": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8.6"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT"
-    },
-    "node_modules/regenerator-runtime": {
-      "version": "0.13.11",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
-      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
-      "license": "MIT"
-    },
-    "node_modules/request-light": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz",
-      "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==",
-      "license": "MIT"
-    },
-    "node_modules/reusify": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
-      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
-      "license": "MIT",
-      "engines": {
-        "iojs": ">=1.0.0",
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
-      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross"
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross"
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "node_modules/semver": {
-      "version": "7.7.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
-      "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/to-regex-range": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-      "license": "MIT",
-      "dependencies": {
-        "is-number": "^7.0.0"
-      },
-      "engines": {
-        "node": ">=8.0"
-      }
-    },
-    "node_modules/tr46": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
-      "license": "MIT"
-    },
-    "node_modules/turndown": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz",
-      "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==",
-      "license": "MIT",
-      "dependencies": {
-        "@mixmark-io/domino": "^2.2.0"
-      }
-    },
-    "node_modules/typescript": {
-      "version": "5.9.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
-      "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
-      "license": "Apache-2.0",
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=14.17"
-      }
-    },
-    "node_modules/typescript-language-server": {
-      "version": "4.4.0",
-      "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.4.0.tgz",
-      "integrity": "sha512-enWhplhHX7PA0q+IcKHBMpTQh9I2Bmb3L45rwnkATHMsZ7YLduyyCdOmVUWJSYZfkWaBMiKwi/e2FQo4xsKeWw==",
-      "license": "Apache-2.0",
-      "bin": {
-        "typescript-language-server": "lib/cli.mjs"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/vscode-css-languageservice": {
-      "version": "6.3.7",
-      "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.7.tgz",
-      "integrity": "sha512-5TmXHKllPzfkPhW4UE9sODV3E0bIOJPOk+EERKllf2SmAczjfTmYeq5txco+N3jpF8KIZ6loj/JptpHBQuVQRA==",
-      "license": "MIT",
-      "dependencies": {
-        "@vscode/l10n": "^0.0.18",
-        "vscode-languageserver-textdocument": "^1.0.12",
-        "vscode-languageserver-types": "3.17.5",
-        "vscode-uri": "^3.1.0"
-      }
-    },
-    "node_modules/vscode-html-languageservice": {
-      "version": "5.5.1",
-      "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.5.1.tgz",
-      "integrity": "sha512-/ZdEtsZ3OiFSyL00kmmu7crFV9KwWR+MgpzjsxO60DQH7sIfHZM892C/E4iDd11EKocr+NYuvOA4Y7uc3QzLEA==",
-      "license": "MIT",
-      "dependencies": {
-        "@vscode/l10n": "^0.0.18",
-        "vscode-languageserver-textdocument": "^1.0.12",
-        "vscode-languageserver-types": "^3.17.5",
-        "vscode-uri": "^3.1.0"
-      }
-    },
-    "node_modules/vscode-json-languageservice": {
-      "version": "5.6.1",
-      "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.6.1.tgz",
-      "integrity": "sha512-IQIURBF2VMKBdWcMunbHSI3G2WmJ9H7613E1hRxIXX7YsAPSdBxnEiIUrTnsSW/3fk+QW1kfsvSigqgAFYIYtg==",
-      "license": "MIT",
-      "dependencies": {
-        "@vscode/l10n": "^0.0.18",
-        "jsonc-parser": "^3.3.1",
-        "vscode-languageserver-textdocument": "^1.0.12",
-        "vscode-languageserver-types": "^3.17.5",
-        "vscode-uri": "^3.1.0"
-      }
-    },
-    "node_modules/vscode-jsonrpc": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz",
-      "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/vscode-langservers-extracted": {
-      "version": "4.8.0",
-      "resolved": "https://registry.npmjs.org/vscode-langservers-extracted/-/vscode-langservers-extracted-4.8.0.tgz",
-      "integrity": "sha512-kWqVdmdcf9Ez1P3hZpvCHomxVqrdK2awwZkezSW3SuXLX0kXS4x8WoA0GkF54SA0CiXtJWszaFpQghUNVlepuQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@vscode/l10n": "^0.0.16",
-        "core-js": "^3.20.1",
-        "jsonc-parser": "^3.2.0",
-        "regenerator-runtime": "^0.13.9",
-        "request-light": "^0.7.0",
-        "typescript": "^4.0.5",
-        "vscode-css-languageservice": "^6.2.10",
-        "vscode-html-languageservice": "^5.1.0",
-        "vscode-json-languageservice": "^5.3.7",
-        "vscode-languageserver": "^9.0.1",
-        "vscode-languageserver-textdocument": "^1.0.11",
-        "vscode-languageserver-types": "^3.17.5",
-        "vscode-markdown-languageservice": "^0.4.0-alpha.7",
-        "vscode-nls": "^5.2.0",
-        "vscode-uri": "^3.0.8"
-      },
-      "bin": {
-        "vscode-css-language-server": "bin/vscode-css-language-server",
-        "vscode-eslint-language-server": "bin/vscode-eslint-language-server",
-        "vscode-html-language-server": "bin/vscode-html-language-server",
-        "vscode-json-language-server": "bin/vscode-json-language-server",
-        "vscode-markdown-language-server": "bin/vscode-markdown-language-server"
-      }
-    },
-    "node_modules/vscode-langservers-extracted/node_modules/@vscode/l10n": {
-      "version": "0.0.16",
-      "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.16.tgz",
-      "integrity": "sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-langservers-extracted/node_modules/typescript": {
-      "version": "4.9.5",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
-      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "license": "Apache-2.0",
-      "bin": {
-        "tsc": "bin/tsc",
-        "tsserver": "bin/tsserver"
-      },
-      "engines": {
-        "node": ">=4.2.0"
-      }
-    },
-    "node_modules/vscode-langservers-extracted/node_modules/vscode-jsonrpc": {
-      "version": "8.2.0",
-      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
-      "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.0.0"
-      }
-    },
-    "node_modules/vscode-langservers-extracted/node_modules/vscode-languageserver": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
-      "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-languageserver-protocol": "3.17.5"
-      },
-      "bin": {
-        "installServerIntoExtension": "bin/installServerIntoExtension"
-      }
-    },
-    "node_modules/vscode-langservers-extracted/node_modules/vscode-languageserver-protocol": {
-      "version": "3.17.5",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
-      "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-jsonrpc": "8.2.0",
-        "vscode-languageserver-types": "3.17.5"
-      }
-    },
-    "node_modules/vscode-languageserver": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.2.tgz",
-      "integrity": "sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-languageserver-protocol": "3.17.2"
-      },
-      "bin": {
-        "installServerIntoExtension": "bin/installServerIntoExtension"
-      }
-    },
-    "node_modules/vscode-languageserver-protocol": {
-      "version": "3.17.2",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz",
-      "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==",
-      "license": "MIT",
-      "dependencies": {
-        "vscode-jsonrpc": "8.0.2",
-        "vscode-languageserver-types": "3.17.2"
-      }
-    },
-    "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
-      "version": "3.17.2",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz",
-      "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-languageserver-textdocument": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
-      "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-languageserver-types": {
-      "version": "3.17.5",
-      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
-      "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-markdown-languageservice": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.4.0.tgz",
-      "integrity": "sha512-3C8pZlC0ofHEYmWwHgenxL6//XrpkrgyytrqNpMlft46q9uBxSUfcXtEGt7wIDNLWsvmgqPqHBwEnBFtLwrWFA==",
-      "license": "MIT",
-      "dependencies": {
-        "@vscode/l10n": "^0.0.10",
-        "node-html-parser": "^6.1.5",
-        "picomatch": "^2.3.1",
-        "vscode-languageserver-textdocument": "^1.0.8",
-        "vscode-languageserver-types": "^3.17.3",
-        "vscode-uri": "^3.0.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/vscode-markdown-languageservice/node_modules/@vscode/l10n": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.10.tgz",
-      "integrity": "sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-nls": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
-      "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
-      "license": "MIT"
-    },
-    "node_modules/vscode-uri": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz",
-      "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==",
-      "license": "MIT"
-    },
-    "node_modules/web-tree-sitter": {
-      "version": "0.24.5",
-      "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.24.5.tgz",
-      "integrity": "sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w==",
-      "license": "MIT"
-    },
-    "node_modules/webidl-conversions": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
-      "license": "BSD-2-Clause"
-    },
-    "node_modules/whatwg-url": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
-      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-      "license": "MIT",
-      "dependencies": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      }
-    },
-    "node_modules/zod": {
-      "version": "3.24.2",
-      "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz",
-      "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/colinhacks"
-      }
-    }
-  }
-}

+ 0 - 10
.config/nixpkgs/neovim/node-lsp/package.json

@@ -1,10 +0,0 @@
-{
-  "name": "node-lsp",
-  "version": "0.0.0",
-  "dependencies": {
-    "bash-language-server": "^5.6.0",
-    "vscode-langservers-extracted": "4.8.0",
-    "typescript": "^5.8.3",
-    "typescript-language-server": "^4.3.4"
-  }
-}

+ 9 - 3
.config/nixpkgs/neovim/plugins/default.nix

@@ -16,10 +16,16 @@ let
         # try to fix indentation in JS
         ./treesitter-ecma.patch
       ];
-    };
+      installPhase = ''
+        mkdir $out
+        cp -r runtime/queries $out/queries
+
+        mkdir $out/plugin
+        cp plugin/query_predicates.lua $out/plugin
 
-    "mistweaverco/kulala.nvim" = {
-      patches = [ ./kulala-treesitter.patch ];
+        mkdir -p $out/lua/nvim-treesitter
+        cp lua/nvim-treesitter/indent.lua $out/lua/nvim-treesitter
+      '';
     };
 
     "FourierTransformer/tinytoml" = {

+ 0 - 16
.config/nixpkgs/neovim/plugins/kulala-treesitter.patch

@@ -1,16 +0,0 @@
-diff --git a/lua/kulala/config/init.lua b/lua/kulala/config/init.lua
-index f680379..6a81674 100644
---- a/lua/kulala/config/init.lua
-+++ b/lua/kulala/config/init.lua
-@@ -116,6 +116,11 @@ local function setup_treesitter_master()
- end
- 
- local function set_kulala_parser()
-+  if vim.treesitter.language.add("kulala_http") then
-+    vim.treesitter.language.register("kulala_http", { "http", "rest" })
-+    return
-+  end
-+
-   local parsers = vim.F.npcall(require, "nvim-treesitter.parsers")
- 
-   if not parsers then

+ 30 - 30
.config/nixpkgs/neovim/plugins/sources.json

@@ -4,8 +4,8 @@
     "sha256": "0wqxdjgplf04nq428ialw1w03f8nh5vb629a17vl5gc9gf3zfanq"
   },
   "tpope/vim-fugitive": {
-    "rev": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4",
-    "sha256": "1fk02wb2g52lqxxp1gx551bbv7nmambwjiqfgcp4ypn2n4wnhzxv"
+    "rev": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0",
+    "sha256": "023i21g547qafvskpyhpw7a2fnj626fi242cils9i3ykmmg8wx5x"
   },
   "tpope/vim-rhubarb": {
     "rev": "5496d7c94581c4c9ad7430357449bb57fc59f501",
@@ -16,44 +16,44 @@
     "sha256": "1yvpk0cnsx1b1q2wp52fv4mj71w8ssz4dcbbdix65m8qna6d0m9h"
   },
   "Wansmer/treesj": {
-    "rev": "925b506eadd9b465e6e577bb684d86e9863a2e21",
-    "sha256": "1sdrvdq1fhx4g3yy50cfylj1wii09dx1mmxpm98nm2k73hildwf3"
+    "rev": "26bc2a8432ba3ea79ed6aa346fba780a3d372570",
+    "sha256": "11zksl1xc71ykyd2gcfy3xyzm4s3144mk9ym2jv5vh0fglxz9ymc"
   },
   "nvim-telescope/telescope.nvim": {
-    "rev": "b4da76be54691e854d3e0e02c36b0245f945c2c7",
-    "sha256": "161qlx099ymi62qsd89srda605ynks1sswx3djamrwqp3dxb9596"
+    "rev": "f7c673b8e46e8f233ff581d3624a517d33a7e264",
+    "sha256": "1hkc4nfn5bmw2rx1sndp4w7y169xdks4d6pb7chl6kbq4zq2cxvn"
   },
   "nvim-telescope/telescope-fzf-native.nvim": {
-    "rev": "1f08ed60cafc8f6168b72b80be2b2ea149813e55",
-    "sha256": "137a05qwbpcrcrfj4az7dwx5a43yyfib4crx1hi8bhjx9j5gqav7"
+    "rev": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c",
+    "sha256": "04x1zhfq24qglhfv3rk3s2j6arysxq27czvpm4w037386bi0q48a"
   },
   "nvim-lua/plenary.nvim": {
-    "rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
-    "sha256": "1kg043h7dqcrqqgg8pp6hsldx7jdhlh8qwad2kkckia191xgnjgm"
+    "rev": "74b06c6c75e4eeb3108ec01852001636d85a932b",
+    "sha256": "1bms9ihcz2gsk88mr00izxn7sjl1lfc62mk0fy54z20g756c8iwy"
   },
   "echasnovski/mini.nvim": {
-    "rev": "7bbafa4691147bc8b74a51986b957daca14c1876",
-    "sha256": "1lkv9gq0qhq76x1mvpxj80rcw4ln8vcwr2yq1i8ghpamy0dz9ah3"
+    "rev": "69b7433355664cf76898eb86a12a019f39bd86d1",
+    "sha256": "06wixch3hpbwrhhn1n34av5wjd4vk39pz8kcqzgcadq7yds0k2ly"
   },
   "neovim/nvim-lspconfig": {
-    "rev": "3e89e4973d784e1c966517e528b3a30395403fa7",
-    "sha256": "0gbvjd6gs89248p67s00asqdizdj126rf25cq4ckq80w62ws5lvi"
+    "rev": "c588db330592fa477a70d2fee6ba20a57194bdc3",
+    "sha256": "047rnm95mvw80w66dd959v7jlbqjfi29bxsf496l5lgip4fpv1nn"
   },
   "nvim-treesitter/nvim-treesitter-textobjects": {
-    "rev": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c",
-    "sha256": "0pp8s0wljwhc93jp47ad4pigqm8q7v173374c1vpydhx09qwl4ga"
+    "rev": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e",
+    "sha256": "03dbmmc1s63ygm11mn27sx3bg43ygcy12c40kdbc3giha8953skw"
   },
   "sainnhe/sonokai": {
-    "rev": "45481a54f9e44b8b9d89509df514b86bbf22aa07",
-    "sha256": "07f4inv3i7pqj654y8pmc1q7jxw5cf28nvq4jhgh6wpzby1d5z40"
+    "rev": "b023c5280b16fe2366f5e779d8d2756b3e5ee9c3",
+    "sha256": "1xvcldv5ywzzs4xrld6qa45pi0dl7mb3q5mkhnjw98rblplqplvl"
   },
   "LnL7/vim-nix": {
     "rev": "7235c7ce2cea530cb6b59bc3e46d4bfe917d15c8",
     "sha256": "109narpbw9kbih7ai49p1zw7j2bj7nzpk3n02z80jcbgb48zqs8y"
   },
   "nvim-treesitter/nvim-treesitter": {
-    "rev": "42fc28ba918343ebfd5565147a42a26580579482",
-    "sha256": "1ck1qslxwi18qxrga68blvk1dg9j4jn65xiw8snq5pk06waksnq9"
+    "rev": "4916d6592ede8c07973490d9322f187e07dfefac",
+    "sha256": "0wgwbxi6h99fsp901xysm0424lhgrh9fq1nlck02m53qbfs7l11x"
   },
   "bfredl/nvim-luadev": {
     "optional": true,
@@ -61,29 +61,29 @@
     "sha256": "0pvb25bdmx4hxs3g7pkdqfjg3qpnr9p5szzbqqwaw3lbdnbyykzy"
   },
   "nvim-treesitter/nvim-treesitter-context": {
-    "rev": "66a9b5fa9e806918b5fe3dba00c6cce7e230abd2",
-    "sha256": "1bj1i7a9lmqamdkf9nirkx6jhcis23n2k23nbzblxybchaqj9ylf"
+    "rev": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636",
+    "sha256": "1l93ni1rnsaizklh7k321izvfsjzdbh5wvzl8q7kvy1wjs43x2ib"
   },
   "mistweaverco/kulala.nvim": {
     "optional": true,
-    "rev": "3e81123652a72a2717f9916d6f2b52c2ae6f7e96",
-    "sha256": "0xa30qzghpxikdjqac9x783sdzmzq7zb7ywhzwrkbwl3yf2y4l9c"
+    "rev": "6656c9d332735ca6a27725e0fb45a1715c4372d9",
+    "sha256": "0dasjrryw4zgwh3iv599rkdify8ckqsyivm8h5c2355lwl8a9vkv"
   },
   "aaronik/treewalker.nvim": {
-    "rev": "4b268cdd9d9b4bc6b06760dcf883734de84bfcd3",
-    "sha256": "0pzzz0a72vnssdypisb4s8v55llx21gzzww51xadsbfah1c3nkcj"
+    "rev": "53ca7205a0016c06d4e5b390e968587001ab73e3",
+    "sha256": "0pr74w9qm0j46bb42p56yr30189k32yn210zppkhyz0nh6j8yacm"
   },
   "tpope/vim-rsi": {
     "rev": "45540637ead22f011e8215f1c90142e49d946a54",
     "sha256": "0vr5mlna5f60dmhk4ims7g0ikqw15h21hr619xii1069ggddqr9v"
   },
   "FourierTransformer/tinytoml": {
-    "rev": "8fc9acf778eea141a36b7b42f55fcb6689fcfd3f",
-    "sha256": "1np8gymhlvklf45f9961ksxkm0nz3ppwkxcjaw8qxzr2fgd3kq9j"
+    "rev": "d4da3e173c6f7bd632a68e7b607231c85946b877",
+    "sha256": "0kccr2lalsw27g0lhsib98qvpbqni7knvny7zk4a912y1c0vhb7k"
   },
   "mawkler/demicolon.nvim": {
-    "rev": "7cd3587c4f4d22cb645c3a2b5ca93ec08012d23f",
-    "sha256": "1b5a4lgcwfyv4hdg44r38fiscvc6xgsy6qiq9zk9jb0qd4x28ym4"
+    "rev": "a9ca137474b3a02e1d6ac48bfdb1985172e2ec9a",
+    "sha256": "0fyrhf3zhh320l2ks4aywd91h9ffng7y3w101lc7i5pn0k4dsfwc"
   },
   "nvim-telescope/telescope-ui-select.nvim": {
     "rev": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2",

+ 6 - 6
.config/nixpkgs/neovim/plugins/treesitter-ecma.patch

@@ -1,13 +1,13 @@
-diff --git a/queries/ecma/indents.scm b/queries/ecma/indents.scm
-index d5674167..dcfd2ad6 100644
---- a/queries/ecma/indents.scm
-+++ b/queries/ecma/indents.scm
+diff --git a/runtime/queries/ecma/indents.scm b/runtime/queries/ecma/indents.scm
+index b613426e..ed7b3bfc 100644
+--- a/runtime/queries/ecma/indents.scm
++++ b/runtime/queries/ecma/indents.scm
 @@ -37,7 +37,7 @@
  
  (variable_declarator
    value: (_) @_value
--  (#not-kind-eq? @_value "arrow_function" "call_expression" "function")) @indent.begin
-+  (#not-kind-eq? @_value "arrow_function" "function")) @indent.begin
+-  (#not-kind-eq? @_value "arrow_function" "call_expression")) @indent.begin
++  (#not-kind-eq? @_value "arrow_function")) @indent.begin
  
  (arguments
    ")" @indent.end)

+ 3 - 3
.config/nixpkgs/neovim/plugins/treesitter-jsx.patch

@@ -1,7 +1,7 @@
-diff --git a/queries/jsx/highlights.scm b/queries/jsx/highlights.scm
+diff --git a/runtime/queries/jsx/highlights.scm b/runtime/queries/jsx/highlights.scm
 index 0615d253..17dfc4d3 100644
---- a/queries/jsx/highlights.scm
-+++ b/queries/jsx/highlights.scm
+--- a/runtime/queries/jsx/highlights.scm
++++ b/runtime/queries/jsx/highlights.scm
 @@ -66,90 +66,6 @@
  
  (html_character_reference) @character.special

+ 16 - 0
.config/nixpkgs/neovim/treesitter/default.nix

@@ -7,6 +7,7 @@ let
       nameParts = builtins.split "/" (spec.repo or "tree-sitter/tree-sitter-${name}");
       owner = builtins.head nameParts;
       repo = builtins.elemAt nameParts 2;
+      filetypes = spec.filetypes or [name];
 
       grammar = tree-sitter.buildGrammar ({
         language = name;
@@ -19,11 +20,18 @@ let
       } // lib.optionalAttrs (builtins.hasAttr "path" spec) {
         location = spec.path;
       });
+
+      initLua = ''
+        vim.treesitter.language.register('${name}', { ${lib.concatMapStringsSep ", " (filetype: "'${filetype}'") filetypes} })
+      '';
     in
     runCommand "tree-sitter-${name}" {
       passthru = {
         inherit grammar;
       };
+
+      inherit initLua;
+      passAsFile = [ "initLua" ];
     } ''
       mkdir -p $out/parser
       ln -s ${grammar}/parser $out/parser/${name}.so
@@ -33,6 +41,14 @@ let
           ln -s ${grammar}/queries $out/queries
         fi
       ''}
+
+      mkdir -p $out/plugin
+      cp "$initLuaPath" $out/plugin/init.lua
+
+      mkdir -p $out/after/ftplugin
+      ${lib.concatMapStringsSep "\n" (filetype: ''
+        echo 'vim.treesitter.start()' > $out/after/ftplugin/${filetype}.lua
+      '') filetypes}
     '';
 in
 builtins.mapAttrs buildTreesitterPlugin grammars

+ 37 - 33
.config/nixpkgs/neovim/treesitter/grammars.json

@@ -1,11 +1,12 @@
 {
   "bash": {
-    "rev": "0c46d792d54c536be5ff7eb18eb95c70fccdb232",
-    "sha256": "1jaq1v9ln6ivgcyzxwynjspwyddw2pq8bic56lrzhb4bj0ba0d9q"
+    "rev": "a06c2e4415e9bc0346c6b86d401879ffb44058f7",
+    "sha256": "0qglzigcy2sizpvpd3qik9lnnmh85dkhz5jl2aiias9p74p3bm1q",
+    "filetypes": ["bash", "sh"]
   },
   "css": {
-    "rev": "6e327db434fec0ee90f006697782e43ec855adf5",
-    "sha256": "19qwqr29r6ysnsljhlv1pa7k83c8mp01787j6v83pkva77sgnzbs"
+    "rev": "dda5cfc5722c429eaba1c910ca32c2c0c5bb1a3f",
+    "sha256": "1qcl9j8hpmdz9hhwzg4byhs5z7ja3lq1fg5yxij3h5dy4h9jfnwc"
   },
   "elvish": {
     "repo": "elves/tree-sitter-elvish",
@@ -18,42 +19,45 @@
     "sha256": "1wwkdnx9wff6haqnsn8zbw5rgs2v0qnc9hid5vkhs8n42fiviwsg"
   },
   "go": {
-    "rev": "5e73f476efafe5c768eda19bbe877f188ded6144",
-    "sha256": "1b6xgh3j6khywslxbdvjnqk66lznzhbp9ykbxi5470nc8fv5s09y"
+    "rev": "2346a3ab1bb3857b48b29d779a1ef9799a248cd7",
+    "sha256": "1bb1clm4nh8srgrvchdsd8l805qs2qy9fhcjj9xifcxnz4rx69vy"
   },
   "javascript": {
-    "rev": "6fbef40512dcd9f0a61ce03a4c9ae7597b36ab5c",
-    "sha256": "0ss65ssys8m6g6pmy1k7dg5yiz0njl1am7ycs85hd0by244c7l2z"
+    "rev": "58404d8cf191d69f2674a8fd507bd5776f46cb11",
+    "sha256": "0grm51ap493kc5xp8hwrbmbd27a2f27igmysshqa3kzagqsx7xpr",
+    "filetypes": ["javascript", "javascriptreact"]
   },
   "json": {
-    "rev": "46aa487b3ade14b7b05ef92507fdaa3915a662a3",
-    "sha256": "0sy186nvqhvy78zmk12kbjyfgpbw3q9kk4j8xc71wciqncx81imk"
+    "rev": "001c28d7a29832b06b0e831ec77845553c89b56d",
+    "sha256": "1dv8gijrcj3hdj8pvlqwhbjq64c9pc8ry6bg8q5xllmwwwvxnj3i",
+    "filetypes": ["json", "jsonc"]
   },
   "lua": {
-    "repo": "MunifTanjim/tree-sitter-lua",
-    "rev": "db16e76558122e834ee214c8dc755b4a3edc82a9",
-    "sha256": "0q78bfq24cz8ds0q73fqvrss63j0ci5bmk8ziqk5zw77a2m5g5xq"
+    "repo": "tree-sitter-grammars/tree-sitter-lua",
+    "rev": "10fe0054734eec83049514ea2e718b2a56acd0c9",
+    "sha256": "1mhlwpj4ajqajgjw99l9xhiqnyg9hwn7zdgvdw037vk3k8vrldjp"
   },
   "markdown": {
-    "repo": "MDeiml/tree-sitter-markdown",
+    "repo": "tree-sitter-grammars/tree-sitter-markdown",
     "path": "tree-sitter-markdown",
-    "rev": "413285231ce8fa8b11e7074bbe265b48aa7277f9",
-    "sha256": "0r8jlmyr1bnyqqipmpmxxw4qw81c9n0l29xdfkz2n2zmjqps5v9r"
+    "rev": "f969cd3ae3f9fbd4e43205431d0ae286014c05b5",
+    "sha256": "0vz9r1dbbdj8vwf45izmbajhjbl98ww2dvlk1faqy33kx7plsiar"
   },
   "nix": {
     "repo": "nix-community/tree-sitter-nix",
-    "rev": "cfc53fd287d23ab7281440a8526c73542984669b",
-    "sha256": "0bmalpgvfcz1zd72wq43r5qvhj3dqqp7zn9kfb6bs0valrxagaks"
+    "rev": "eabf96807ea4ab6d6c7f09b671a88cd483542840",
+    "sha256": "15ir69lwns7f6i1frhhkl334qjsrw52bwxi1shjiyjg48mvq2a3i"
   },
   "ruby": {
-    "rev": "89bd7a8e5450cb6a942418a619d30469f259e5d6",
-    "sha256": "0mwijxk6a1kqnvvqaxkpya8s4m4pygd0kfrz045aq6ijlk1nm0zk"
+    "rev": "ad907a69da0c8a4f7a943a7fe012712208da6dee",
+    "sha256": "1n7pz8f4nmba1dwxl229cg84c9a24hy9z7380vpcpmd7m4821h15"
   },
   "tsx": {
     "repo": "tree-sitter/tree-sitter-typescript",
     "path": "tsx",
     "rev": "75b3874edb2dc714fb1fd77a32013d0f8699989f",
-    "sha256": "1sq3c11m9yjsr696m32bcwaz772kqdhpq0sy96jbgwqq38h3lhq3"
+    "sha256": "1sq3c11m9yjsr696m32bcwaz772kqdhpq0sy96jbgwqq38h3lhq3",
+    "filetypes": ["typescriptreact"]
   },
   "typescript": {
     "path": "typescript",
@@ -61,33 +65,33 @@
     "sha256": "1sq3c11m9yjsr696m32bcwaz772kqdhpq0sy96jbgwqq38h3lhq3"
   },
   "jsdoc": {
-    "rev": "a417db5dbdd869fccb6a8b75ec04459e1d4ccd2c",
-    "sha256": "0li1shmlbwng2l369w4v3bg36xw3n3lkmvfqkycdbx27mv6y1hih"
+    "rev": "658d18dcdddb75c760363faa4963427a7c6b52db",
+    "sha256": "1qrgan1xpj717qmwdbgb3lqjgffyhsw0qxhjwhdhqfv2lgkw4cn6"
   },
   "vimdoc": {
     "repo": "neovim/tree-sitter-vimdoc",
-    "rev": "2694c3d27e2ca98a0ccde72f33887394300d524e",
-    "sha256": "0dmb889sryrgd34gm66f2jm7l9crshv7c2fr50yk9x4xva2cw08c"
+    "rev": "f061895a0eff1d5b90e4fb60d21d87be3267031a",
+    "sha256": "18f1dr3j79axg6yqrvm0fc2w4cil403al9xifc4h4vkkp6hg6y9b"
   },
   "java": {
-    "rev": "a7db5227ec40fcfe94489559d8c9bc7c8181e25a",
-    "sha256": "171aywx1cv7krldwdxyfhlbl69kx54yq4kdrkwm7rwrbqcqbknkw"
+    "rev": "e10607b45ff745f5f876bfa3e94fbcc6b44bdc11",
+    "sha256": "00w4d34rgl52blkx7x1jz4cj9d272ncljicjgdyvbchy1m2qg1jy"
   },
   "query": {
     "repo": "tree-sitter-grammars/tree-sitter-query",
-    "rev": "930202c2a80965a7a9ca018b5b2a08b25dfa7f12",
-    "sha256": "0274iz2z55m29yk56lmb7sans2k6hpd0nzgrznfx3jwr8dm2jw5r"
+    "rev": "fc5409c6820dd5e02b0b0a309d3da2bfcde2db17",
+    "sha256": "0p9zwir4ngzkaazbvckd4c97826vr776cqs96zzm7kblgqf4qmz7"
   },
   "groovy": {
     "repo": "murtaza64/tree-sitter-groovy",
-    "rev": "86911590a8e46d71301c66468e5620d9faa5b6af",
-    "sha256": "0vbsg5xkdja6xyp8nm7g9fs4ndaq3qz6lq8vk9c7l2znw6bb17gb"
+    "rev": "deb0dcf8c4544f07564060f6e9b9f6e4b0bfc27d",
+    "sha256": "05q6q713c1yp4y7dcmq1z957n01fp1s3c2mdhxpcg0idhv0xmcy7"
   },
   "kulala_http": {
     "repo": "mistweaverco/kulala.nvim",
     "branch": "main",
     "path": "lua/tree-sitter",
-    "rev": "3e81123652a72a2717f9916d6f2b52c2ae6f7e96",
-    "sha256": "0xa30qzghpxikdjqac9x783sdzmzq7zb7ywhzwrkbwl3yf2y4l9c"
+    "rev": "6656c9d332735ca6a27725e0fb45a1715c4372d9",
+    "sha256": "0dasjrryw4zgwh3iv599rkdify8ckqsyivm8h5c2355lwl8a9vkv"
   }
 }

+ 2 - 13
.config/nixpkgs/neovim/treesitter/update-treesitter.sh

@@ -3,16 +3,8 @@
 
 set -euo pipefail
 
-treesitter_rev=$(jq -r '.["nvim-treesitter/nvim-treesitter"].rev' ../plugins/sources.json)
-
-lockfile=$(curl -L -sf "https://github.com/nvim-treesitter/nvim-treesitter/raw/$treesitter_rev/lockfile.json")
-
 grammars=$(< grammars.json)
 
-get_revision() {
-  jq -r ".$1.revision" <<<"$lockfile"
-}
-
 q() {
   jq -r "$@" <<<"$grammars"
 }
@@ -24,13 +16,10 @@ u() {
 update_grammar() {
   name=$1
   repo=$(q --arg name "$name" '.[$name].repo // "tree-sitter/tree-sitter-\($name)"')
+  branch=$(q -e --arg name "$name" '.[$name].branch // "HEAD"')
 
   echo "Updating $name" >&2
-
-  revision=$(get_revision "$name")
-  if branch=$(q -e --arg name "$name" '.[$name].branch'); then
-    revision=$(git ls-remote "https://github.com/$repo" "$branch" | cut -b -40)
-  fi
+  revision=$(git ls-remote "https://github.com/$repo" "$branch" | cut -b -40)
   sha256=$(nix-prefetch-url --unpack "https://github.com/$repo/archive/$revision.tar.gz")
 
   u --arg name "$name" --arg rev "$revision" --arg sha256 "$sha256" '