<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nvim-lspconfig/lsp/ast_grep.lua, branch master</title>
<subtitle>[no description]</subtitle>
<id>http://git.sudomsg.com/mirror/nvim-lspconfig/atom/lsp/ast_grep.lua?h=master</id>
<link rel='self' href='http://git.sudomsg.com/mirror/nvim-lspconfig/atom/lsp/ast_grep.lua?h=master'/>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/'/>
<updated>2026-08-27T10:20:03Z</updated>
<entry>
<title>fix(ast_grep): attach to shell buffers #4514</title>
<updated>2026-08-27T10:20:03Z</updated>
<author>
<name>Étienne Robert</name>
<email>etiennerobert33@gmail.com</email>
</author>
<published>2026-08-27T10:20:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=a48a4580bee820aff938b074d9c7b3e2e0b3bbe8'/>
<id>urn:sha1:a48a4580bee820aff938b074d9c7b3e2e0b3bbe8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ast_grep): stop reuse_client from spawning duplicate lsp client #4480</title>
<updated>2026-07-20T23:28:16Z</updated>
<author>
<name>Geoffrey R Scheller</name>
<email>geoffrey@scheller.com</email>
</author>
<published>2026-07-20T23:28:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=98b0b8a52742afc9e2e2078e2e451f91beef1717'/>
<id>urn:sha1:98b0b8a52742afc9e2e2078e2e451f91beef1717</id>
<content type='text'>
Problem:
Old config set config.cmd_cwd = config.root_dir inside reuse_client
itself. On the first client's initial start, reuse_client is never
invoked (nothing exists yet to compare against), so cmd_cwd is never
set on it. On the second start attempt, the comparison
client.config.cmd_cwd == config.cmd_cwd evaluates nil == &lt;string&gt;,
which fails, and a second client spawns.

Solution:
Change reuse_client key-value pair to

  reuse_client = function(client, config)
    return client.name == config.name
      and client.config.root_dir == config.root_dir
  end,

Now the first spawned client is reused. Only one lua_ls client was
ever spawned. Only the `reuse_client` section looked fishy to me.</content>
</entry>
<entry>
<title>fix(ast_grep, ruby_lsp): check name in reuse_client #4408</title>
<updated>2026-04-28T22:22:38Z</updated>
<author>
<name>Sam Wight</name>
<email>samuelwight@gmail.com</email>
</author>
<published>2026-04-28T22:22:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=6419b36f50c42420cbbf1d3ffba573094cf414c8'/>
<id>urn:sha1:6419b36f50c42420cbbf1d3ffba573094cf414c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ast_grep): invalid filetypes #4253</title>
<updated>2025-12-22T19:20:19Z</updated>
<author>
<name>Charles Taylor</name>
<email>charlestaylor95@gmail.com</email>
</author>
<published>2025-12-22T19:20:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=32055d7b0f80e6c4a276c2af9b139662e115dd6a'/>
<id>urn:sha1:32055d7b0f80e6c4a276c2af9b139662e115dd6a</id>
<content type='text'>
Problem:

`csharp` is not a valid filetype in neovim. csharp files are of filetype `cs`.

You can see a warning by doing
```lua
vim.ls.enable({ "ast_grep"})
```

`:checkheatlh lsp` or `:LspInfo` shows this warning:
```
vim.lsp: Enabled Configurations
⚠️  WARNING Unknown filetype 'csharp' (Hint: filename extension != filetype).
```</content>
</entry>
<entry>
<title>feat(ast_grep): update filetypes #4106</title>
<updated>2025-09-30T22:50:19Z</updated>
<author>
<name>ergou</name>
<email>ma2808203259@hotmail.com</email>
</author>
<published>2025-09-30T22:50:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=421fa7fd60ce9ce12e4914d2917d2ac35c8596de'/>
<id>urn:sha1:421fa7fd60ce9ce12e4914d2917d2ac35c8596de</id>
<content type='text'>
* feat(ast_grep): update the filetypes

* revert: revert changes in side `lus/lspconfig/config` as deprecated</content>
</entry>
<entry>
<title>fix: separate type annotation from `@brief` docstring #4017</title>
<updated>2025-08-20T02:13:01Z</updated>
<author>
<name>Igor Lacerda</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-08-20T02:13:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=5a49a97f9d3de5c39a2b18d583035285b3640cb0'/>
<id>urn:sha1:5a49a97f9d3de5c39a2b18d583035285b3640cb0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: add type annotation for configs</title>
<updated>2025-08-19T02:39:23Z</updated>
<author>
<name>Igor</name>
<email>igorlfs@ufmg.br</email>
</author>
<published>2025-08-19T02:39:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=030a72f0aa4d56f9e8ff67921e6e3ffd0e97bf07'/>
<id>urn:sha1:030a72f0aa4d56f9e8ff67921e6e3ffd0e97bf07</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(ast_grep): support multiple workspaces #3866</title>
<updated>2025-05-26T15:30:38Z</updated>
<author>
<name>Alex Efros</name>
<email>powerman@powerman.name</email>
</author>
<published>2025-05-26T15:30:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=6c573c8000ec9ed57c7efb75de8fb16903909a3c'/>
<id>urn:sha1:6c573c8000ec9ed57c7efb75de8fb16903909a3c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ast_grep): workspace_required=true #3811</title>
<updated>2025-04-30T13:28:34Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-04-30T13:28:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=97d84127c7d70417085d40668ecde3a20d2e9118'/>
<id>urn:sha1:97d84127c7d70417085d40668ecde3a20d2e9118</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: cleanup</title>
<updated>2025-04-18T15:44:38Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-04-18T15:44:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=f8b5cbe6312b568def1f91d747e2cdb8984fdf2e'/>
<id>urn:sha1:f8b5cbe6312b568def1f91d747e2cdb8984fdf2e</id>
<content type='text'>
- brief should live at the top of each file
- fix indentation for some docs
</content>
</entry>
<entry>
<title>feat(ast_grep): update filetypes #3720</title>
<updated>2025-04-13T21:34:18Z</updated>
<author>
<name>Ahmed El Gabri</name>
<email>ahmed@gabri.me</email>
</author>
<published>2025-04-13T21:34:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=8e94b817e8dee625217162b387617b1a86cd6cfb'/>
<id>urn:sha1:8e94b817e8dee625217162b387617b1a86cd6cfb</id>
<content type='text'>
`ast-grep` supports JSX/TSX:
https://ast-grep.github.io/reference/languages.html#list-of-languages-with-built-in-support</content>
</entry>
<entry>
<title>fix(docs): docgen.lua reads from `lua/*.lua` #3708</title>
<updated>2025-04-13T02:40:01Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-04-13T02:40:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=ecb74c22b4a6c41162153f77e73d4ef645fedfa0'/>
<id>urn:sha1:ecb74c22b4a6c41162153f77e73d4ef645fedfa0</id>
<content type='text'>
Problem:
Since configs now live in `lsp/`, the docgen needs to be updated.

Solution:
Read the configs from `lsp/`. Parse the `@brief` docstring to get the
docs.</content>
</entry>
<entry>
<title>feat: migrate to vim.lsp.config #3659</title>
<updated>2025-04-12T22:15:43Z</updated>
<author>
<name>Lorenzo Bellina</name>
<email>59364991+TheRealLorenz@users.noreply.github.com</email>
</author>
<published>2025-04-12T22:15:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/nvim-lspconfig/commit/?id=81a570f58b2113cc2d538efae743ad38d6ab564f'/>
<id>urn:sha1:81a570f58b2113cc2d538efae743ad38d6ab564f</id>
<content type='text'>
Problem:
Nvim 0.11 has vim.lsp.config, which mostly replaces the legacy
nvim-lspconfig "framework".

Solution:
Migrate all configs to `lsp/*` variants. The old configs in
`lua/lspconfig/` are "frozen".

The new configs include these changes:
- `commands` field became raw calls to
  `vim.api.nvim_buf_create_user_command` inside `on_attach`.
- `root_dir` became:
  - `root_markers` whenever the file list was simple didn't need to mach `*`
  - if the logic was complicated, or needed to match something like
    '\*.c', it was defined as a vim.lsp.Config `root_dir` callback.
- `on_config_change` became `before_init`. I don't actually know if this
  is the correct approach, but looking around the documentation of
  `nvim-lspconfig` a saw that it was defined as the function that gets
  called as soon as the config have `root_dir`, and so I thought
  `before_init` might be the closest alternative.
- `docs.description` became a luadoc `@brief` docstring.
- `single_file_support = false`?

Co-authored-by: Aliou Diallo &lt;aliou@users.noreply.github.com&gt;
Co-authored-by: Justin M. Keyes &lt;justinkz@gmail.com&gt;</content>
</entry>
</feed>
