完善lsp配置

This commit is contained in:
a770 2025-05-11 16:41:03 +08:00
parent 3c19610c4d
commit ad1ae84e5f
6 changed files with 80 additions and 96 deletions

View file

@ -1,6 +1,4 @@
{
"blink-cmp-avante": { "branch": "master", "commit": "ddefb8de3cb1286ab39e0ccec0f32a45d03391f2" },
"blink-ripgrep.nvim": { "branch": "main", "commit": "bb081d7d828024be2814ccaccb9ee1d267be2987" },
"blink.cmp": { "branch": "main", "commit": "4f38ce99a472932d5776337f08f7a8180f1f571a" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "1bf070129c0b6f77cc23f6a2212dcdc868308c52" },
@ -24,6 +22,7 @@
"lazygit.nvim": { "branch": "main", "commit": "b9eae3badab982e71abab96d3ee1d258f0c07961" },
"llm.nvim": { "branch": "main", "commit": "0929c0a494b42b3df31c59dcd2f2663bda3730b4" },
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" },
"mason.nvim": { "branch": "main", "commit": "7c7318e8bae7e3536ef6b9e86b9e38e74f2e125e" },
"mini.nvim": { "branch": "stable", "commit": "0420076298c4457f200c2de468f65d080597a347" },
"multicursor.nvim": { "branch": "1.0", "commit": "0e00ce4c272e3191b5e07cab36bd49aa32fca675" },
@ -32,7 +31,7 @@
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
"nvim-lspconfig": { "branch": "master", "commit": "af4a9f5ce58763365999bfc558ddecd20d41f2b7" },
"nvim-lspconfig": { "branch": "master", "commit": "61e5109c8cf24807e4ae29813a3a82b31821dd45" },
"nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
"nvim-treesitter": { "branch": "master", "commit": "28d480e0624b259095e56f353ec911f9f2a0f404" },
"nvim-treesitter-context": { "branch": "master", "commit": "5c48b8ba1b0b7b25feb6e34e7eb293ea893aedc4" },
@ -41,7 +40,6 @@
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
"render-markdown.nvim": { "branch": "main", "commit": "935c2c70c296d87ed1bcce9ce667c239c9c982b5" },
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
"suda.vim": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" },
"symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" },

View file

@ -2,8 +2,7 @@ return {
"saghen/blink.cmp",
dependencies = {
"rafamadriz/friendly-snippets",
"Kaiser-Yang/blink-cmp-avante",
"mikavilpas/blink-ripgrep.nvim",
-- "Kaiser-Yang/blincmp-avante",
},
version = "*",
---@module 'blink.cmp'
@ -72,26 +71,15 @@ return {
-- 已定义启用的提供程序的默认列表,以便您可以扩展它
sources = {
default = {
"avante",
"buffer",
"ripgrep",
"lsp",
"path",
"snippets",
-- "avante",
},
providers = {
-- score_offset设置优先级数字越大优先级越高
avante = {
module = "blink-cmp-avante",
name = "Avante",
score_offset = 6,
},
buffer = { score_offset = 5 },
ripgrep = {
module = "blink-ripgrep",
name = "Ripgrep",
score_offset = 4,
},
path = { score_offset = 3 },
lsp = { score_offset = 2 },
snippets = { score_offset = 1 },
@ -104,6 +92,11 @@ return {
return 0
end,
},
-- avante = {
-- module = "blink-cmp-avante",
-- name = "Avante",
-- score_offset = 6,
-- },
},
},
},

View file

@ -13,7 +13,6 @@ return {
},
config = function(_, opts)
-- 初始化 mason.nvim 和 conform.nvim
require("mason").setup()
require("conform").setup(opts)
-- 辅助函数:从指定文件类型的配置中提取所有工具名称(去重)

View file

@ -1,91 +1,84 @@
return {
"neovim/nvim-lspconfig",
dependencies = {
{ "saghen/blink.cmp" },
{ "williamboman/mason.nvim" },
{
"MysticalDevil/inlay-hints.nvim",
event = "LspAttach",
config = function()
require("inlay-hints").setup()
end,
},
{ "mason-org/mason-lspconfig.nvim" },
{ "MysticalDevil/inlay-hints.nvim", event = "LspAttach" },
},
config = function()
-- 打算启用的语言服务列表
local servers = {
markdown = { "marksman" }, -- 任意标题<space>aw打开code action可以开头生成目录超链接可以链接到同一个git项目的其他markdown文件#指定标题<space>h可以预览
lua = { "lua_ls", "lua-language-server" }, -- Mason对应的安装名称是lua-language-server
rust = { "rust_analyzer", "rust-analyzer" },
python = { "pylsp", "python-lsp-server" },
-- golang={'gopls'},
}
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, opts) -- <space>h显示提示文档
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义的位置
vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- <space>rn变量重命名
vim.keymap.set("n", "<leader>aw", vim.lsp.buf.code_action, opts) -- <space>aw可以在出现警告或错误的地方打开建议的修复方法
-- 通过mason来自动安装语言服务器并启用
require("mason").setup({})
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls",
"marksman",
"rust_analyzer",
"pylsp",
-- "gopls",
},
automatic_enable = {
exclude = {
},
},
})
-- 快捷键的映射
vim.keymap.set("n", "<leader>h", vim.lsp.buf.hover, opts) -- <space>h显示提示文档
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义的位置
vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- <space>rn变量重命名
vim.keymap.set("n", "<leader>aw", vim.lsp.buf.code_action, opts) -- <space>aw可以在出现警告或错误的地方打开建议的修复方法
vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- <space>d浮动窗口显示所在行警告或错误信息
vim.keymap.set("n", "<leader>-", vim.diagnostic.goto_prev, opts) -- <space>-跳转到上一处警告或错误的地方
vim.keymap.set("n", "<leader>=", vim.diagnostic.goto_next, opts) -- <space>+跳转到下一处警告或错误的地方
vim.keymap.set("n", "<leader>-", vim.diagnostic.goto_prev, opts) -- <space>-跳转到上一处警告或错误的地方
vim.keymap.set("n", "<leader>=", vim.diagnostic.goto_next, opts) -- <space>+跳转到下一处警告或错误的地方
-- vim.keymap.set({ 'n', 'x' }, '<leader>f', function() vim.lsp.buf.format({ async = true }) end, opts) -- <space>f进行代码格式化
-- 通过mason来自动安装语言服务器可以在对应的代码运行LspIstall来安装可用的语言服务器
require("mason").setup({})
local mr = require("mason-registry")
local capabilities = require("blink.cmp").get_lsp_capabilities()
-- 诊断信息的图标
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = "",
[vim.diagnostic.severity.WARN] = "",
[vim.diagnostic.severity.HINT] = "",
[vim.diagnostic.severity.INFO] = "»",
},
},
})
-- cmp相关配置
local lspconfig = require("lspconfig")
for lang_group_name, server_names_arr in pairs(servers) do
-- 使用Mason批量安装语言服务器
local mason_name = server_names_arr[2] or server_names_arr[1] -- Second for Mason, or fallback to first
local p = mr.get_package(mason_name)
if p then -- Check if package actually exists in mason-registry
if not p:is_installed() then
vim.notify(
"Installing Mason package: " .. mason_name .. " (for language: " .. lang_group_name .. ")",
vim.log.levels.INFO
)
p:install() -- This is synchronous
vim.notify(mason_name .. " installed successfully.", vim.log.levels.INFO)
end
else
vim.notify("Mason package not found: " .. mason_name, vim.log.levels.WARN)
end
-- 批量激活语言服务
local lsp = server_names_arr[1] -- First element is for lspconfig
lspconfig[lsp].setup({
capabilities = capabilities, -- Use the memoized capabilities
settings = {
["gopls"] = {
hints = { -- gopls开启hints
rangeVariableTypes = true,
parameterNames = true,
constantValues = true,
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
functionTypeParameters = true,
},
-- 特定语言开启inlay-hints等自定义配置
require("inlay-hints").setup()
vim.lsp.config("lua_ls", {
settings = {
["Lua"] = {
hint = { -- Lua开启hints
enable = true, -- necessary
},
["Lua"] = {
hint = { -- Lua开启hints
enable = true, -- necessary
},
diagnostics = {
-- 忽略掉vim配置时一些全局变量语言服务器找不到的警告
globals = {
"vim",
"require",
"opts",
},
diagnostics = {
-- 忽略掉vim配置时一些全局变量语言服务器找不到的警告
globals = {
"vim",
"require",
"opts",
},
},
},
})
end
},
})
vim.lsp.config("gopls", {
settings = {
["gopls"] = {
hints = { -- gopls开启hints
rangeVariableTypes = true,
parameterNames = true,
constantValues = true,
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
functionTypeParameters = true,
},
},
},
})
end,
}

View file

@ -12,7 +12,9 @@
"prefix": "return",
"body": [
"return {",
"\t${1}",
"\t\"${1}\",",
"\tdependencies = {",
"\t},",
"\tconfig = function()",
"\t\t${2}",
"\tend",

View file

@ -1,4 +1,3 @@
{
"pri": {
"prefix": "pri",