droped none-ls

This commit is contained in:
sankalp committed 2024-08-26 08:30:21 +05:45
1 parent c3d41436a1
commit 847238c1bc
17 files changed
+590 -604

No files matched your search

+81 -87
View File
@@ -1,90 +1,84 @@
local cmp = require('cmp')
local luasnip = require('luasnip')
require('luasnip/loaders/from_vscode').lazy_load()
local cmp = require("cmp")
local luasnip = require("luasnip")
local lspkind = require("lspkind")
require("luasnip/loaders/from_vscode").lazy_load()
cmp.setup({
completion = {
keyword_length = 1,
completeopt = 'menu,menuone',
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
formatting = {
fields = { 'kind', 'abbr', 'menu' },
format = function(entry, vim_item)
local kind = require('lspkind').cmp_format({ mode = 'symbol_text', maxwidth = 50 })(entry, vim_item)
local strings = vim.split(kind.kind, '%s', { trimempty = true })
kind.kind = ' ' .. (strings[1] or '') .. ' '
kind.menu = ' (' .. (strings[2] or '') .. ')'
return kind
end,
},
snippet = { -- configure how nvim-cmp interacts with snippet engine
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = {
['<C-k>'] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(),
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-1), { 'i', 'c' }),
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(1), { 'i', 'c' }),
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-d>'] = cmp.mapping.scroll_docs(4),
['<C-y>'] = cmp.config.disable,
['<C-c>'] = cmp.mapping({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
['<CR>'] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
}),
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
},
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'cmdline' },
},
}),
cmp.setup.cmdline('/', {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' },
},
}),
-- sources for autocompletion
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' }, -- snippets
{ name = 'buffer' }, -- text within current buffer
{ name = 'path' }, -- file system paths
{ name = 'codeium' }, -- AI for autocompletion
-- { name = "nvim_lsp_signature_help" },
-- { name = "calc" }, --for maths calculations
},
completion = {
completeopt = "menu,menuone,preview,noselect",
},
window = { -- making ui stuff for completion bordered
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
-- configure lspkind for vs-code like pictograms in completion menu
formatting = {
format = lspkind.cmp_format({
maxwidth = 50,
ellipsis_char = "...",
}),
},
snippet = { -- configure how nvim-cmp interacts with snippet engine
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = {
["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
["<C-y>"] = cmp.config.disable,
["<C-c>"] = cmp.mapping({ -- close completion window
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expandable() then
luasnip.expand()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
},
cmp.setup.cmdline(":", {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = "cmdline" },
},
}),
-- cmp.setup.cmdline("/", {
-- mapping = cmp.mapping.preset.cmdline(),
-- sources = {
-- { name = "buffer" },
-- },
-- }),
-- sources for autocompletion
sources = {
{ name = "nvim_lsp" },
{ name = "nvim_lsp_signature_help" }, -- parameter hints
{ name = "luasnip" }, -- snippets
{ name = "buffer" }, -- text within current buffer
{ name = "path" }, -- file system paths
{ name = "codeium" }, -- AI for autocompletion
-- { name = "calc" }, --for maths calculations
},
})
+55 -106
View File
@@ -1,7 +1,8 @@
local lspconfig = require("lspconfig")
-- import cmp-nvim-lsp plugin
local cmp_nvim_lsp = require("cmp_nvim_lsp")
-- import mason_lspconfig plugin
local mason_lspconfig = require("mason-lspconfig")
local keymap = vim.keymap -- for conciseness
vim.api.nvim_create_autocmd("LspAttach", {
@@ -18,6 +19,14 @@ vim.api.nvim_create_autocmd("LspAttach", {
opts.desc = "Go to declaration"
keymap.set("n", "lD", vim.lsp.buf.declaration, opts) -- go to declaration
opts.desc = "Inlay hint"
keymap.set(
"n",
"<leader>lh",
"<cmd>lua vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())<CR>",
opts
)
opts.desc = "Show LSP definitions"
keymap.set("n", "ld", "<cmd>Telescope lsp_definitions<CR>", opts) -- show lsp definitions
@@ -28,10 +37,10 @@ vim.api.nvim_create_autocmd("LspAttach", {
keymap.set("n", "lt", "<cmd>Telescope lsp_type_definitions<CR>", opts) -- show lsp type definitions
opts.desc = "See available code actions"
keymap.set({ "n", "v" }, "<leader>la", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
opts.desc = "Smart rename"
keymap.set("n", "<leader>mr", vim.lsp.buf.rename, opts) -- smart rename
keymap.set("n", "<leader>mR", vim.lsp.buf.rename, opts) -- smart rename
opts.desc = "Show buffer diagnostics"
keymap.set("n", "<leader>lD", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file
@@ -50,111 +59,51 @@ vim.api.nvim_create_autocmd("LspAttach", {
-- used to enable autocompletion (assign to every lsp server config)
local capabilities = cmp_nvim_lsp.default_capabilities()
-- configure matlab server
lspconfig["clangd"].setup({
capabilities = capabilities,
})
-- configure bash server
lspconfig["bashls"].setup({
capabilities = capabilities,
})
-- configure html server
lspconfig["html"].setup({
capabilities = capabilities,
})
-- configure typescript server with plugin
lspconfig["tsserver"].setup({
capabilities = capabilities,
})
-- Change the Diagnostic symbols in the sign column (gutter)
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
-- configure css server
lspconfig["cssls"].setup({
capabilities = capabilities,
})
mason_lspconfig.setup_handlers({
-- default handler for installed servers
function(server_name)
lspconfig[server_name].setup({
capabilities = capabilities,
})
end,
-- configure tailwindcss server
lspconfig["tailwindcss"].setup({
capabilities = capabilities,
})
-- configure svelte server
lspconfig["svelte"].setup({
capabilities = capabilities,
on_attach = function(client, bufnr)
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = { "*.js", "*.ts" },
callback = function(ctx)
if client.name == "svelte" then
client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.file })
end
end,
["lua_ls"] = function()
-- configure lua server (with special settings)
lspconfig["lua_ls"].setup({
capabilities = capabilities,
settings = {
Lua = {
-- make the language server recognize "vim" global
diagnostics = {
globals = { "vim" },
},
hint = { enable = true },
completion = {
callSnippet = "Replace",
},
},
},
})
end,
["basedpyright"] = function()
-- configure pyright server (with special settings)
lspconfig["basedpyright"].setup({
capabilities = capabilities,
settings = {
python = {
hint = { enable = true },
},
},
handlers = {
["textDocument/publishDiagnostics"] = function() end,
},
})
end,
})
-- configure prisma orm server
lspconfig["prismals"].setup({
capabilities = capabilities,
})
-- configure emmet language server
lspconfig["emmet_ls"].setup({
capabilities = capabilities,
filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" },
})
-- configure python server
lspconfig["pyright"].setup({
capabilities = capabilities,
})
-- configure lua server (with special settings)
lspconfig["lua_ls"].setup({
capabilities = capabilities,
settings = { -- custom settings for lua
Lua = {
-- make the language server recognize "vim" global
diagnostics = {
globals = { "vim" },
},
workspace = {
-- make language server aware of runtime files
library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.stdpath("config") .. "/lua"] = true,
},
},
},
},
})
local x = vim.diagnostic.severity
local config = {
-- Enable virtual text
virtual_text = { -- or false for disable
prefix = "", -- ■  󰊠
suffix = "",
format = function(diagnostic)
local prefix = "󰊠 "
local suffix = " "
-- return full message with custom prefix & suffix
return prefix .. diagnostic.message .. suffix
end,
},
update_in_insert = true,
signs = { text = { [x.ERROR] = "", [x.WARN] = "", [x.HINT] = "󰌵", [x.INFO] = "" } },
underline = false,
severity_sort = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = "",
},
}
vim.diagnostic.config(config)
-- add borders to lsp info window
require("lspconfig.ui.windows").default_options.border = "single"
+32 -38
View File
@@ -1,48 +1,42 @@
local mason = require("mason")
local mason_lspconfig = require("mason-lspconfig")
local mason_tool_installer = require("mason-tool-installer")
local mason = require('mason')
local mason_lspconfig = require('mason-lspconfig')
local mason_tool_installer = require('mason-tool-installer')
-- enable mason and configure icons
mason.setup({
automatic_installation = true,
ui = {
border = "rounded",
icons = {
package_installed = "✓",
package_pending = "➜",
package_uninstalled = "✗",
},
},
automatic_installation = true,
ui = {
border = 'rounded',
icons = {
package_installed = '✓',
package_pending = '➜',
package_uninstalled = '✗',
},
},
})
mason_lspconfig.setup({
-- list of servers for mason to install
ensure_installed = {
"tsserver",
"html",
"cssls",
"tailwindcss",
"svelte",
"lua_ls",
"pyright",
"jdtls",
"bashls",
"jsonls",
"clangd",
"emmet_ls",
"prismals",
},
-- list of servers for mason to install
ensure_installed = {
'tsserver',
'lua_ls',
'basedpyright',
'jdtls',
'bashls',
'jsonls',
'clangd',
},
})
mason_tool_installer.setup({
ensure_installed = {
"prettier", -- prettier formatter
"biome", -- js formatter
"stylua", -- lua formatter
"black", -- python formatter
"isort", -- python formatter
"clang-format", -- c/c++ formatter
"pylint",
"eslint_d",
},
ensure_installed = {
'prettier', -- prettier formatter
'stylua', -- lua formatter
'black', -- python formatter
'isort', -- python formatter
'clang-format', -- c/c++ formatter
'ruff', -- python linter
'mypy', -- type checking
'eslint_d', --js linter
},
})
+49 -48
View File
@@ -1,63 +1,64 @@
local mason_null_ls = require("mason-null-ls")
local mason_null_ls = require('mason-null-ls')
local null_ls = require("null-ls")
local null_ls = require('null-ls')
local null_ls_utils = require("null-ls.utils")
local null_ls_utils = require('null-ls.utils')
mason_null_ls.setup({
ensure_installed = {
"prettier", -- prettier formatter
"biome", -- js formatter
"clang-format", -- c/c++ formatter
"stylua", -- lua formatter
"black", -- python formatter
"pylint", -- python linter
"google-java-format", -- java formatter
-- "eslint_d", -- js linter
},
ensure_installed = {
'prettier', -- prettier formatter
'clang-format', -- c/c++ formatter
'stylua', -- lua formatter
'black', -- python formatter
'pylint', -- python linter
'google-java-format', -- java formatter
-- "eslint_d", -- js linter
},
})
-- for conciseness
local formatting = null_ls.builtins.formatting -- to setup formatters
local diagnostics = null_ls.builtins.diagnostics -- to setup linters
local hover = null_ls.builtins.hover
-- to setup format on save
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local augroup = vim.api.nvim_create_augroup('LspFormatting', {})
-- configure null_ls
null_ls.setup({
root_dir = null_ls_utils.root_pattern(".null-ls-root", "Makefile", ".git", "package.json"),
sources = {
formatting.prettier, -- js/ts formatter
formatting.stylua, -- lua formatter
formatting.isort,
formatting.black,
formatting.clang_format,
formatting.google_java_format,
diagnostics.pylint,
-- diagnostics.eslint_d.with({ -- js/ts linter
-- condition = function(utils)
-- return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs
-- end,
-- }),
},
-- configure format on save
on_attach = function(current_client, bufnr)
if current_client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
filter = function(client)
-- only use null-ls for formatting instead of lsp server
return client.name == "null-ls"
end,
bufnr = bufnr,
})
end,
})
end
end,
root_dir = null_ls_utils.root_pattern('.null-ls-root', 'Makefile', '.git', 'package.json'),
sources = {
formatting.prettier, -- js/ts formatter
formatting.stylua, -- lua formatter
formatting.isort,
formatting.black,
formatting.clang_format,
formatting.google_java_format,
diagnostics.pylint,
hover.printenv,
-- diagnostics.eslint_d.with({ -- js/ts linter
-- condition = function(utils)
-- return utils.root_has_file({ ".eslintrc.js", ".eslintrc.cjs" }) -- only enable if root has .eslintrc.js or .eslintrc.cjs
-- end,
-- }),
},
-- configure format on save
on_attach = function(current_client, bufnr)
if current_client.supports_method('textDocument/formatting') then
vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
vim.api.nvim_create_autocmd('BufWritePre', {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
filter = function(client)
-- only use null-ls for formatting instead of lsp server
return client.name == 'null-ls'
end,
bufnr = bufnr,
})
end,
})
end
end,
})