lsp redoification update

This commit is contained in:
RafayAhmad7548 2025-07-30 10:59:08 +05:00
parent 30542228ee
commit 1874df33b5
5 changed files with 164 additions and 194 deletions

View file

@ -80,6 +80,7 @@ vim.keymap.set('n', '<leader>sp', '<cmd>SessionSearch<CR>', { desc = 'search ses
-- INFO: LSP -- INFO: LSP
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = 'lsp hover' })
vim.keymap.set('n', 'L', vim.diagnostic.open_float, { desc = 'open floating diagnostic' }) vim.keymap.set('n', 'L', vim.diagnostic.open_float, { desc = 'open floating diagnostic' })
-- This function gets run when an LSP attaches to a particular buffer. -- This function gets run when an LSP attaches to a particular buffer.

View file

@ -42,6 +42,7 @@ vim.opt.fillchars:append({ eob = ' ' })
vim.opt.tabstop = 4 vim.opt.tabstop = 4
vim.opt.shiftwidth = 4 vim.opt.shiftwidth = 4
vim.o.winborder = 'rounded'
vim.opt.hlsearch = false vim.opt.hlsearch = false
vim.opt.wrap = false vim.opt.wrap = false

View file

@ -1,72 +0,0 @@
return {
'saghen/blink.cmp',
event = 'VimEnter',
version = '1.*',
dependencies = {
{
'L3MON4D3/LuaSnip',
version = '2.*',
build = (function()
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
return
end
return 'make install_jsregexp'
end)(),
dependencies = {
-- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets
-- {
-- 'rafamadriz/friendly-snippets',
-- config = function()
-- require('luasnip.loaders.from_vscode').lazy_load()
-- end,
-- },
},
opts = {},
},
'folke/lazydev.nvim',
},
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
keymap = {
preset = 'default',
['<Tab>'] = { 'select_and_accept', 'snippet_forward', 'fallback'},
['<S-Tab>'] = { 'snippet_backward', 'fallback'},
['I'] = { 'scroll_documentation_up', 'fallback' },
['K'] = { 'scroll_documentation_down', 'fallback' },
},
appearance = { nerd_font_variant = 'mono' },
completion = {
-- By default, you may press `<c-space>` to show the documentation.
-- Optionally, set `auto_show = true` to show the documentation after a delay.
documentation = { auto_show = false, auto_show_delay_ms = 500 },
},
sources = {
default = { 'lsp', 'path', 'snippets', 'lazydev' },
providers = {
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
},
},
snippets = { preset = 'luasnip' },
-- Blink.cmp includes an optional, recommended rust fuzzy matcher,
-- which automatically downloads a prebuilt binary when enabled.
--
-- By default, we use the Lua implementation instead, but you may enable
-- the rust implementation via `'prefer_rust_with_warning'`
--
-- See :h blink-cmp-config-fuzzy for more information
fuzzy = { implementation = 'lua' },
-- Shows a signature help window while you type arguments for a function
signature = { enabled = true },
},
}

View file

@ -25,7 +25,6 @@ require('lazy').setup({
require('config.plugins.git'), require('config.plugins.git'),
require('config.plugins.ui'), require('config.plugins.ui'),
-- require('config.plugins.telescope'), -- require('config.plugins.telescope'),
require('config.plugins.blinkcmp'),
require('config.plugins.languages.lsp'), require('config.plugins.languages.lsp'),
require('config.plugins.languages.treesitter'), require('config.plugins.languages.treesitter'),
require('config.plugins.harpoon'), require('config.plugins.harpoon'),

View file

@ -1,124 +1,165 @@
return { local servers = {
{ bashls = {},
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis clangd = {},
'folke/lazydev.nvim', rust_analyzer = {},
ft = 'lua', pyright = {},
opts = {
library = { emmet_language_server = {},
-- Load luvit types when the `vim.uv` word is found html = { filetypes = { 'html', 'htmldjango' }, },
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } }, cssls = {},
}, vtsls = {},
prismals = {},
-- kotlin_lsp = {},
lua_ls = {
settings = {
Lua = {
completion = {
callSnippet = 'Replace',
}, },
}, },
},
{ 'williamboman/mason.nvim', opts = {} }, },
}
{
'neovim/nvim-lspconfig', local ensure_installed = vim.tbl_keys(servers or {})
dependencies = {
'williamboman/mason.nvim', for server, config in pairs(servers) do
'williamboman/mason-lspconfig.nvim', vim.lsp.config(server, config)
end
-- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} }, return {
{
'saghen/blink.cmp', -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
}, -- used for completion, annotations and signatures of Neovim apis
config = function() 'folke/lazydev.nvim',
ft = 'lua',
vim.diagnostic.config { opts = {
severity_sort = true, library = {
float = { border = 'rounded', source = 'if_many' }, -- Load luvit types when the `vim.uv` word is found
underline = { severity = vim.diagnostic.severity.ERROR }, { path = '${3rd}/luv/library', words = { 'vim%.uv' } },
signs = vim.g.have_nerd_font and { },
text = { },
[vim.diagnostic.severity.ERROR] = '󰅚 ', },
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '󰋽 ', {
},
} or {}, 'saghen/blink.cmp',
virtual_text = { event = 'VimEnter',
source = 'if_many', version = '1.*',
spacing = 2, dependencies = {
format = function(diagnostic) {
local diagnostic_message = { 'L3MON4D3/LuaSnip',
[vim.diagnostic.severity.ERROR] = diagnostic.message, version = '2.*',
[vim.diagnostic.severity.WARN] = diagnostic.message, build = (function()
[vim.diagnostic.severity.INFO] = diagnostic.message, if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
[vim.diagnostic.severity.HINT] = diagnostic.message, return
} end
return diagnostic_message[diagnostic.severity] return 'make install_jsregexp'
end, end)(),
}, dependencies = {
} -- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
local capabilities = require('blink.cmp').get_lsp_capabilities() -- https://github.com/rafamadriz/friendly-snippets
local servers = { -- {
bashls = {}, -- 'rafamadriz/friendly-snippets',
-- config = function()
clangd = {}, -- require('luasnip.loaders.from_vscode').lazy_load()
rust_analyzer = {}, -- end,
pyright = {}, -- },
},
emmet_language_server = {}, opts = {},
html = { filetypes = { 'html', 'htmldjango' }, }, },
cssls = {}, 'folke/lazydev.nvim',
vtsls = {}, },
---@module 'blink.cmp'
prismals = {}, ---@type blink.cmp.Config
opts = {
-- kotlin_lsp = {}, keymap = {
preset = 'default',
-- kotlin_language_server = {
-- init_options = { ['<Tab>'] = { 'select_and_accept', 'snippet_forward', 'fallback'},
-- storagePath = vim.fn.stdpath('cache') .. '/kotlin_language_server', -- Explicit storage path ['<S-Tab>'] = { 'snippet_backward', 'fallback'},
-- }, ['I'] = { 'scroll_documentation_up', 'fallback' },
-- }, ['K'] = { 'scroll_documentation_down', 'fallback' },
-- -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs },
--
-- Some languages (like typescript) have entire language plugins that can be useful: appearance = { nerd_font_variant = 'mono' },
-- https://github.com/pmizio/typescript-tools.nvim
-- completion = {
-- But for many setups, the LSP (`ts_ls`) will work just fine -- By default, you may press `<c-space>` to show the documentation.
-- ts_ls = {}, -- Optionally, set `auto_show = true` to show the documentation after a delay.
-- documentation = { auto_show = false, auto_show_delay_ms = 500 },
},
lua_ls = {
-- cmd = { ... }, sources = {
-- filetypes = { ... }, default = { 'lsp', 'path', 'snippets', 'lazydev' },
-- capabilities = {}, providers = {
settings = { lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
Lua = { },
completion = { },
callSnippet = 'Replace',
}, snippets = { preset = 'luasnip' },
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } }, -- Blink.cmp includes an optional, recommended rust fuzzy matcher,
}, -- which automatically downloads a prebuilt binary when enabled.
}, --
}, -- By default, we use the Lua implementation instead, but you may enable
} -- the rust implementation via `'prefer_rust_with_warning'`
--
local ensure_installed = vim.tbl_keys(servers or {}) -- See :h blink-cmp-config-fuzzy for more information
fuzzy = { implementation = 'lua' },
require('mason-lspconfig').setup {
ensure_installed = ensure_installed, -- Shows a signature help window while you type arguments for a function
automatic_installation = false, signature = { enabled = true },
handlers = { },
function(server_name) },
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed {
-- by the server configuration above. Useful when disabling 'neovim/nvim-lspconfig',
-- certain features of an LSP (for example, turning off formatting for ts_ls) dependencies = {
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) -- Useful status updates for LSP.
require('lspconfig')[server_name].setup(server) { 'j-hui/fidget.nvim', opts = {} },
end, },
} config = function()
}
-- WARN: Temoraray workaround because of naming issue i.e. djlsp and django-template-server vim.diagnostic.config {
require('lspconfig').djlsp.setup({}) severity_sort = true,
end float = { border = 'rounded', source = 'if_many' },
underline = { severity = vim.diagnostic.severity.ERROR },
signs = vim.g.have_nerd_font and {
text = {
[vim.diagnostic.severity.ERROR] = '󰅚 ',
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '󰋽 ',
},
} or {},
virtual_text = {
source = 'if_many',
spacing = 2,
format = function(diagnostic)
local diagnostic_message = {
[vim.diagnostic.severity.ERROR] = diagnostic.message,
[vim.diagnostic.severity.WARN] = diagnostic.message,
[vim.diagnostic.severity.INFO] = diagnostic.message,
[vim.diagnostic.severity.HINT] = diagnostic.message,
}
return diagnostic_message[diagnostic.severity]
end,
},
}
end
},
{ 'mason-org/mason.nvim', opts = {} },
{
'mason-org/mason-lspconfig.nvim',
opts = { ensure_installed = ensure_installed }
}, },
} }