diff --git a/.github/README.md b/.github/README.md index c8a453f..6bb1dc8 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,6 +1,11 @@ > [!IMPORTANT] > 本人是colemak键位用户 +可以用下面命令来更新插件:(不指定插件名默认更新全部) + +* `:PackUpdate` 弹出界面让你审查,按 `:w` 确认 +* `:PackUpdate!` 跳过界面,直接后台拉取并更新 + 某些插件需要安装特定的软件才能正常使用,如果是arch用户可以使用`paru`或者`yay`安装,示例如下 ```bash diff --git a/lua/pack/configs/lspconfig.lua b/lua/pack/configs/lspconfig.lua index 873cc88..963a8d5 100644 --- a/lua/pack/configs/lspconfig.lua +++ b/lua/pack/configs/lspconfig.lua @@ -1,33 +1,47 @@ -- === LSP 核心配置 (Lspconfig + Mason) === if vim.g.vscode then return end --- 1. 环境探测:判断 CPU 架构,决定安装哪些 LSP +-- 环境探测:判断 CPU 架构,决定安装哪些 LSP local arch = jit and jit.arch or "" local is_arm = arch:match("arm") or arch:match("aarch64") local servers = { "lua_ls", "rust_analyzer", "pylsp", "denols", } if not is_arm then - vim.list_extend(servers, { "marksman", "svelte", "cssls", "html" }) + vim.list_extend(servers, { "marksman", "svelte", "cssls", "html" }) end --- 2. 插件配置清单 +-- 插件配置清单 local P = { name = "nvim-lspconfig", deps = { "mason.nvim", "mason-lspconfig.nvim", "inlay-hints.nvim" }, } --- 3. 懒加载触发器:当打开文件时触发 +-- === 全局快捷键映射 === +local opts = { noremap = true, silent = true } +vim.keymap.set("n", "h", vim.lsp.buf.hover, opts) -- h显示提示文档 +vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义 +vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- gD跳转到声明(例如c语言中的头文件中的原型、一个变量的extern声明) +vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置(例如一些自定义类型) +vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- rn变量重命名 +vim.keymap.set("n", "aw", vim.lsp.buf.code_action, opts) -- aw可以在出现警告或错误的地方打开建议的修复方法 +vim.keymap.set("n", "d", vim.diagnostic.open_float, opts) -- d浮动窗口显示所在行警告或错误信息 +vim.keymap.set("n", "-", vim.diagnostic.goto_prev, opts) -- -跳转到上一处警告或错误的地方 +vim.keymap.set("n", "=", vim.diagnostic.goto_next, opts) -- +跳转到下一处警告或错误的地方 +-- vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置,改用snacks +-- vim.keymap.set({ 'n', 'x' }, 'f', function() vim.lsp.buf.format({ async = true }) end, opts) -- f进行代码格式化 + +-- 懒加载触发器:当打开文件时触发 vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, { callback = function() PackUtils.load(P, function() - -- === A. 基础依赖初始化 (Mason) === + -- === 基础依赖初始化 (Mason) === require("mason").setup() require("mason-lspconfig").setup({ ensure_installed = servers, }) require("inlay-hints").setup() - -- === B. 全局诊断设置 === + -- === 全局诊断设置 === vim.diagnostic.config({ signs = { text = { @@ -39,21 +53,7 @@ vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, { }, }) - -- === C. 全局快捷键映射 === - -- local opts = { noremap = true, silent = true } - vim.keymap.set("n", "h", vim.lsp.buf.hover, opts) -- h显示提示文档 - vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -- gd跳转到定义 - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) -- gD跳转到声明(例如c语言中的头文件中的原型、一个变量的extern声明) - vim.keymap.set("n", "go", vim.lsp.buf.type_definition, opts) -- go跳转到变量类型定义的位置(例如一些自定义类型) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) -- rn变量重命名 - vim.keymap.set("n", "aw", vim.lsp.buf.code_action, opts) -- aw可以在出现警告或错误的地方打开建议的修复方法 - vim.keymap.set("n", "d", vim.diagnostic.open_float, opts) -- d浮动窗口显示所在行警告或错误信息 - vim.keymap.set("n", "-", vim.diagnostic.goto_prev, opts) -- -跳转到上一处警告或错误的地方 - vim.keymap.set("n", "=", vim.diagnostic.goto_next, opts) -- +跳转到下一处警告或错误的地方 - -- vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) -- gr跳转到引用了对应变量或函数的位置,改用snacks - -- vim.keymap.set({ 'n', 'x' }, 'f', function() vim.lsp.buf.format({ async = true }) end, opts) -- f进行代码格式化 - - -- === D. 特定 LSP 配置 (使用 Neovim 0.11+ vim.lsp.config 语法) === + -- === 特定 LSP 配置 (使用 Neovim 0.11+ vim.lsp.config 语法) === -- Python (pylsp) + uv 虚拟环境自适应 vim.lsp.config("pylsp", { diff --git a/lua/pack/plugins.lua b/lua/pack/plugins.lua index 58e8b03..3febd2d 100644 --- a/lua/pack/plugins.lua +++ b/lua/pack/plugins.lua @@ -82,19 +82,21 @@ local function get_plugin_names(arg_lead) return names end --- :PackUpdate 命令更新插件,不带参数更新全部 +-- :PackUpdate 命令更新插件,不带参数更新全部,默认显示审查界面(需按 :w 确认);可以加 ! 强制直接更新 vim.api.nvim_create_user_command("PackUpdate", function(opts) local targets = #opts.fargs > 0 and opts.fargs or nil + local force = opts.bang -- 如果输入了 PackUpdate! 则 opts.bang 为 true if targets then vim.notify("Checking updates for: " .. table.concat(targets, ", "), vim.log.levels.INFO) else vim.notify("Checking updates for all plugins...", vim.log.levels.INFO) end - vim.pack.update(targets) + vim.pack.update(targets, { force = force }) end, { - nargs = "*", -- 支持 0 到多个参数 - complete = get_plugin_names, -- 绑定补全函数,可以改用'packadd'不过补全列表会有一些非vim.pack管理的插件 - desc = "Update specified or all plugins", + nargs = "*", + bang = true, -- 声明支持 ! 符号 + complete = get_plugin_names, + desc = "Update plugins (use ! to skip confirmation)", }) -- :PackStatus 命令查看插件当前状态和版本 diff --git a/nvim-pack-lock.json b/nvim-pack-lock.json index 6ae0fd8..24c17d5 100644 --- a/nvim-pack-lock.json +++ b/nvim-pack-lock.json @@ -1,7 +1,7 @@ { "plugins": { "blink.cmp": { - "rev": "456d38d1cd3743926f329204c2340f3e7840aad6", + "rev": "c573a15a62bd0bfd4006ee0849b24f5404395500", "src": "https://github.com/saghen/blink.cmp" }, "bufferline.nvim": { @@ -65,7 +65,7 @@ "src": "https://github.com/windwp/nvim-autopairs" }, "nvim-lspconfig": { - "rev": "bedca8b426b2fee0ccac596d167d71bbe971253f", + "rev": "4b7fbaa239c5db6b36f424a4521ca9f1a401be33", "src": "https://github.com/neovim/nvim-lspconfig" }, "nvim-treesitter": { @@ -89,7 +89,7 @@ "src": "https://github.com/hedyhli/outline.nvim" }, "peek.nvim": { - "rev": "803815d18689b8f9e69d433b08ed767d7555128c", + "rev": "81365a4dee6f0314d1ab4f65b7f8aee804e741ed", "src": "https://github.com/cap153/peek.nvim" }, "plenary.nvim": {