broke out angular-language-server config to new lsp protocol

This commit is contained in:
Long Nguyen
2025-06-17 13:25:52 -05:00
parent 78b469f526
commit 1ebb91c639
5 changed files with 93 additions and 65 deletions
+1
View File
@@ -1 +1,2 @@
packer_compiled.lua packer_compiled.lua
lazy-lock.json
-46
View File
@@ -1,46 +0,0 @@
{
"LuaSnip": { "branch": "master", "commit": "faf3c94a44508cec1b961406d36cc65113ff3b98" },
"auto-session": { "branch": "main", "commit": "00334ee24b9a05001ad50221c8daffbeedaa0842" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"fzf": { "branch": "master", "commit": "d18c0bf6948b4707684fe77631aff26a17cbc4fa" },
"fzf-checkout.vim": { "branch": "master", "commit": "db0289a6c8e77b08a0150627733722fd07d5fa62" },
"fzf.vim": { "branch": "master", "commit": "3ed6ac56d03fff0389cd5b30dfd1e1f940fe91d0" },
"gitsigns.nvim": { "branch": "main", "commit": "8b729e489f1475615dc6c9737da917b3bc163605" },
"hop.nvim": { "branch": "master", "commit": "1a1eceafe54b5081eae4cb91c723abd1d450f34b" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lsp-zero.nvim": { "branch": "v1.x", "commit": "d4367a3726dbaa5c67f29c38b186c30d99e6b32c" },
"lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "d24b3f1612e53f9d54d866b16bedab51813f2bf1" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"none-ls.nvim": { "branch": "main", "commit": "db2a48b79cfcdab8baa5d3f37f21c78b6705c62e" },
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-fzf": { "branch": "master", "commit": "305aa90aeb8409b4bd2af1812a4b6e157ee93953" },
"nvim-fzf-commands": { "branch": "master", "commit": "52f9450cd69f462aa1ecc5dc3e05ef3b77840e4f" },
"nvim-lspconfig": { "branch": "master", "commit": "3ea99227e316c5028f57a4d86a1a7fd01dd876d0" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-context": { "branch": "master", "commit": "404502e607c3b309e405be9112c438c721153372" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"rnvimr": { "branch": "main", "commit": "57f7a8edd629791557d1315463d9fb2e411a45f1" },
"rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" },
"tailwind-tools": { "branch": "master", "commit": "fbe982901d4508b0dcd80e07addf0fcb6dab6c49" },
"tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
"vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
"vim-js": { "branch": "master", "commit": "35d9e2ef4d31618237463e3bdf4811b2f8a0dec5" },
"vim-jsx-improve": { "branch": "master", "commit": "b179bf9a3901ccc6afcaa3abc9c93bae450f3339" },
"vim-jsx-pretty": { "branch": "master", "commit": "6989f1663cc03d7da72b5ef1c03f87e6ddb70b41" },
"vim-razor": { "branch": "master", "commit": "305dd1db88c657c0c02effbee1a88048479bb0c4" },
"vim-snippets": { "branch": "master", "commit": "f0a3184d9f90b96b044d5914625a25c554d7f301" },
"yats.vim": { "branch": "master", "commit": "b325c449a2db4d9ee38aa441afa850a815982e8b" },
"zig.vim": { "branch": "master", "commit": "e55a7949561d34822b7cd2290819927b79825dcd" }
}
+57
View File
@@ -0,0 +1,57 @@
-- Angular requires a node_modules directory to probe for @angular/language-service and typescript
-- in order to use your projects configured versions.
local root_dir = vim.fn.getcwd()
local node_modules_dir = vim.fs.find("node_modules", { path = root_dir })[1]
local project_root = node_modules_dir and vim.fs.dirname(node_modules_dir) or "?"
local default_probe_dir = project_root and (project_root .. "/node_modules") or ""
local ngserver_exe = vim.fn.exepath("ngserver")
local ngserver_path = #(ngserver_exe or "") > 0 and vim.fs.dirname(vim.uv.fs_realpath(ngserver_exe)) or "?"
local extension_path = vim.fs.normalize(vim.fs.joinpath(ngserver_path, "../../../"))
-- angularls will get module by `require.resolve(PROBE_PATH, MODULE_NAME)` of nodejs
local ts_probe_dirs = vim.iter({ extension_path, default_probe_dir }):join(",")
local ng_probe_dirs = vim.iter({ extension_path, default_probe_dir })
:map(function(p)
return vim.fs.joinpath(p, "/@angular/language-server/node_modules")
end)
:join(",")
local function get_angular_core_version()
if not project_root then
return ""
end
local package_json = project_root .. "/package.json"
if not vim.uv.fs_stat(package_json) then
return ""
end
local contents = io.open(package_json):read("*a")
local json = vim.json.decode(contents)
if not json.dependencies then
return ""
end
local angular_core_version = json.dependencies["@angular/core"]
angular_core_version = angular_core_version and angular_core_version:match("%d+%.%d+%.%d+")
return angular_core_version
end
return {
cmd = {
"ngserver",
"--stdio",
"--tsProbeLocations",
ts_probe_dirs,
"--ngProbeLocations",
ng_probe_dirs,
"--angularCoreVersion",
get_angular_core_version(),
},
filetypes = { "typescript", "html", "typescriptreact", "typescript.tsx", "htmlangular" },
root_markers = { "angular.json", "nx.json" },
}
+2
View File
@@ -119,6 +119,8 @@ opt.foldlevelstart = 30
opt.mouse = "" opt.mouse = ""
opt.backupcopy = "yes" opt.backupcopy = "yes"
opt.winborder = "rounded"
vim.cmd([[au BufRead,BufNewFile .env.* set filetype=sh]]) vim.cmd([[au BufRead,BufNewFile .env.* set filetype=sh]])
vim.cmd([[au BufRead,BufNewFile Dockerfile.* set filetype=dockerfile]]) vim.cmd([[au BufRead,BufNewFile Dockerfile.* set filetype=dockerfile]])
--vim.cmd([[au BufRead,BufNewFile *.html set filetype=html]]) --vim.cmd([[au BufRead,BufNewFile *.html set filetype=html]])
+31 -17
View File
@@ -500,23 +500,6 @@ function M.lsp_zero()
lsp.configure("html", { filetypes = html_filetypes }) lsp.configure("html", { filetypes = html_filetypes })
lsp.configure("htmx", { filetypes = html_filetypes }) lsp.configure("htmx", { filetypes = html_filetypes })
require("mason-lspconfig").setup({
automatic_enable = {
"pyright",
"lua_ls",
"bashls",
"html",
"cssls",
"ts_ls",
"svelte",
"angularls",
"tailwindcss",
"templ",
"gopls",
"htmx",
},
})
lsp.on_attach(function(client, _) lsp.on_attach(function(client, _)
-- diagnostics for other lsp get messed up when formatting is enabled -- diagnostics for other lsp get messed up when formatting is enabled
client.server_capabilities.documentFormattingProvider = false client.server_capabilities.documentFormattingProvider = false
@@ -530,12 +513,43 @@ function M.lsp_zero()
end, end,
}) })
end end
local function filter_duplicates(array)
local unique = {}
for _, tableA in ipairs(array) do
local is_duplicate = false
for _, tableB in ipairs(unique) do
if vim.deep_equal(tableA, tableB) then
is_duplicate = true
break
end
end
if not is_duplicate then
table.insert(unique, tableA)
end
end
return unique
end
local function on_list(options)
options.items = filter_duplicates(options.items)
vim.fn.setqflist({}, " ", options)
vim.cmd("botright copen")
end
vim.keymap.set("n", "gr", function()
vim.lsp.log.error("GETTING REFERENCES")
vim.lsp.buf.references(nil, { on_list = on_list })
end, { noremap = true })
end) end)
-- (Optional) Configure lua language server for neovim -- (Optional) Configure lua language server for neovim
lsp.nvim_workspace() lsp.nvim_workspace()
lsp.setup() lsp.setup()
vim.lsp.log.error("SETTING UP LSP")
vim.lsp.enable("angular-language-server")
end end
function M.undotree() function M.undotree()