diff options
| author | TomIO <43716232+TomJo2000@users.noreply.github.com> | 2025-10-28 23:35:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-28 15:35:11 -0700 |
| commit | 4d9d9d9c5e66dd175e2168bfddcb9e1a5b589004 (patch) | |
| tree | 7aacd21064459cc7ed3b14d962da372bc13bf86c | |
| parent | docs: update configs.md (diff) | |
| download | nvim-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.lua | 23 |
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, } |
