mirror of
https://github.com/cap153/nvim.git
synced 2025-12-31 14:55:07 +08:00
完善lsp配置
This commit is contained in:
parent
3c19610c4d
commit
ad1ae84e5f
6 changed files with 80 additions and 96 deletions
|
|
@ -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" },
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ return {
|
|||
},
|
||||
config = function(_, opts)
|
||||
-- 初始化 mason.nvim 和 conform.nvim
|
||||
require("mason").setup()
|
||||
require("conform").setup(opts)
|
||||
|
||||
-- 辅助函数:从指定文件类型的配置中提取所有工具名称(去重)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,9 @@
|
|||
"prefix": "return",
|
||||
"body": [
|
||||
"return {",
|
||||
"\t${1}",
|
||||
"\t\"${1}\",",
|
||||
"\tdependencies = {",
|
||||
"\t},",
|
||||
"\tconfig = function()",
|
||||
"\t\t${2}",
|
||||
"\tend",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{
|
||||
"pri": {
|
||||
"prefix": "pri",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue