aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomIO <43716232+TomJo2000@users.noreply.github.com>2025-10-28 23:35:11 +0100
committerGitHub <noreply@github.com>2025-10-28 15:35:11 -0700
commit4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004 (patch)
tree7aacd21064459cc7ed3b14d962da372bc13bf86c
parentdocs: update configs.md (diff)
downloadnvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar.gz
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar.bz2
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar.lz
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar.xz
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.tar.zst
nvim-lspconfig-4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004.zip
fix(termux_language_server): broken `filetypes` field #4161
Problem: `termux_language_server`'s `filetypes` field is set to the non-existent `PKGBUILD` filetype, thus the LSP never attaches to a target buffer. Solution: Replace the `filetypes` field with a `root_dir` function matching the filename pattern suggested by upstream. https://termux-language-server.readthedocs.io/en/latest/resources/configure.html#neovim
-rw-r--r--lsp/termux_language_server.lua23
1 files changed, 21 insertions, 2 deletions
diff --git a/lsp/termux_language_server.lua b/lsp/termux_language_server.lua
index d8799fe4..608527a2 100644
--- a/lsp/termux_language_server.lua
+++ b/lsp/termux_language_server.lua
@@ -4,9 +4,28 @@
---
--- Language server for various bash scripts such as Arch PKGBUILD, Gentoo ebuild, Termux build.sh, etc.
+local util = require('lspconfig').util
+
---@type vim.lsp.Config
return {
cmd = { 'termux-language-server' },
- filetypes = { 'PKGBUILD' },
- root_markers = { '.git' },
+ root_dir = function(bufnr, on_dir)
+ local patterns = {
+ -- Termux
+ 'build.sh',
+ '*.subpackage.sh',
+ -- Arch/MSYS2
+ 'PKGBUILD',
+ 'makepkg.conf',
+ '*.install',
+ -- Gentoo
+ 'make.conf',
+ 'color.map',
+ '*.ebuild',
+ '*.eclass',
+ }
+ local fname = vim.api.nvim_buf_get_name(bufnr)
+ local match = util.root_pattern(patterns)(fname)
+ on_dir(match and (vim.fs.root(match, '.git') or match))
+ end,
}