feat: Some LSP stuff

This commit is contained in:
Ahmad Ansori Palembani 2025-05-27 08:07:40 +07:00
parent 3cdde04427
commit 8c6f027a62
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
3 changed files with 52 additions and 21 deletions

View file

@ -0,0 +1,5 @@
{
"diagnostics": {
"globals": [ "vim" ]
}
}

View file

@ -1,21 +1,21 @@
{
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "1ef260eb4f54515fe121a2267b477efb054d108a" },
"nui.nvim": { "branch": "main", "commit": "8d5b0b568517935d3c84f257f272ef004d9f5a59" },
"lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "87888865fa1ce1928a25b9abbea8c8f7839bf522" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" },
"nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
"nvim-lspconfig": { "branch": "master", "commit": "94d0fec9135719e046903bbbbf8f39e3d3436d4e" },
"nvim-treesitter": { "branch": "master", "commit": "94ea4f436d2b59c80f02e293466c374584f03b8c" },
"nvim-web-devicons": { "branch": "master", "commit": "50b5b06bff13a9b4eab946de7c7033649a6618a1" },
"nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" },
"nvim-lspconfig": { "branch": "master", "commit": "d45702594afc661a9dfa95e96acf18c56006d4d9" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"oil.nvim": { "branch": "master", "commit": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
@ -24,5 +24,5 @@
"tree-sitter-htmldjango": { "branch": "master", "commit": "25e4212f593a59504682984720b9c0a8171f4585" },
"vim-commentary": { "branch": "master", "commit": "64a654ef4a20db1727938338310209b6a63f60c9" },
"vim-startuptime": { "branch": "master", "commit": "b6f0d93f6b8cf6eee0b4c94450198ba2d6a05ff6" },
"vim-wakatime": { "branch": "master", "commit": "e46d7c4f98ee0f40782008dd60cb2a79c377fb1d" }
"vim-wakatime": { "branch": "master", "commit": "f39c4a201ae350aaba713b59d4a4fdd88e0811aa" }
}

View file

@ -2,20 +2,22 @@ require("null.util").lazy_file()
return {
{
"williamboman/mason.nvim",
"mason-org/mason.nvim",
lazy = true,
config = function(_, opts)
config = function(_, _opts)
require("mason").setup()
end,
},
{
"williamboman/mason-lspconfig.nvim",
"mason-org/mason-lspconfig.nvim",
lazy = true,
dependencies = {
"williamboman/mason.nvim",
"mason-org/mason.nvim",
},
opts = {
ensure_installed = {
"ast_grep",
-- >> Kotlin
-- "kotlin_language_server",
-- << Kotlin
@ -26,7 +28,14 @@ return {
-- "ruff_lsp",
-- << Python
-- >> Jinja
"jinja_lsp",
-- << Jinja
-- >> Lua
"emmylua_ls",
"luau_lsp",
-- << Lua
},
automatic_installation = { exclude = { "rust_analyzer" } },
},
@ -38,7 +47,7 @@ return {
"neovim/nvim-lspconfig",
lazy = true,
dependencies = {
"williamboman/mason-lspconfig.nvim",
"mason-org/mason-lspconfig.nvim",
},
opts = function()
return {
@ -82,9 +91,25 @@ return {
lsp.pyright.setup({
capabilities = capabilities,
})
-- FIXME: Causing memleak, probably not compatible with Oil / neotree
-- lsp.kotlin_language_server.setup({
-- capabilities = capabilities,
-- })
lsp.emmylua_ls.setup({
capabilities = capabilities,
root_markers = {
".luarc.json",
"luarc.json",
".git",
"lazy-lock.json",
".emmyrc.json",
},
settings = {
workspace = {
library = vim.api.nvim_get_runtime_file("lua/*.lua", true),
},
},
})
lsp.rust_analyzer.setup({
capabilities = capabilities,
settings = {
@ -108,7 +133,7 @@ return {
"mfussenegger/nvim-lint",
event = { "LazyFile" },
dependencies = {
"williamboman/mason.nvim",
"mason-org/mason.nvim",
},
opts = function()
return {
@ -167,13 +192,14 @@ return {
end,
},
window = {
-- completion = cmp.config.window.bordered(),
completion = cmp.config.window.bordered(),
-- documentation = cmp.config.window.bordered(),
},
-- NOTE: fallback function (or the first parameter inside `cmp.mapping(function(fallback) {})`) sends a already mapped key.
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<A-Space>"] = cmp.mapping.complete(), -- Alt instead of Ctrl because Ctrl+Space is used by IME to switch between input method
["<C-e>"] = cmp.mapping.abort(),
["<CR>"] = cmp.mapping(function(fallback)
if cmp.visible() and not cmp.confirm() then
@ -188,7 +214,7 @@ return {
-- elseif has_words_before() then
-- cmp.complete()
else
fallback() -- The fallback function sends a already mapped key. In this case, it"s probably `<Tab>`.
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function()