From fc3668ba82eaf57e61add3b4919303ed1ed5d30b Mon Sep 17 00:00:00 2001 From: kody Date: Mon, 15 Dec 2025 16:08:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(rust):=20=E6=B7=BB=E5=8A=A0rust=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lazy-lock.json | 1 + lua/plugins/init.lua | 1 + lua/plugins/lsp/conform.lua | 1 - lua/plugins/rustaceanvim.lua | 47 ++++++++++++++++++++++++++++++++++++ lua/plugins/treesitter.lua | 1 - 5 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 lua/plugins/rustaceanvim.lua diff --git a/lazy-lock.json b/lazy-lock.json index 10608d5..03e6dd0 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -33,6 +33,7 @@ "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, + "rustaceanvim": { "branch": "master", "commit": "bc8c4b8f7606d5b7c067cd8369e25c1a7ff77bd0" }, "telescope.nvim": { "branch": "master", "commit": "e69b434b968a33815e2f02a5c7bd7b8dd4c7d4b2" }, "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" } } diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 66db44c..be42f85 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -25,6 +25,7 @@ require("lazy").setup({ require("plugins.comment"), require("plugins.project"), require("plugins.runner"), + require("plugins.rustaceanvim"), -- LSP require("plugins.lsp.mason"), require("plugins.lsp.lspconfig"), diff --git a/lua/plugins/lsp/conform.lua b/lua/plugins/lsp/conform.lua index 3c6e030..fbe132b 100644 --- a/lua/plugins/lsp/conform.lua +++ b/lua/plugins/lsp/conform.lua @@ -94,7 +94,6 @@ return { rustfmt = { command = "rustfmt", - args = { "--emit=stdout" }, stdin = true, }, }, diff --git a/lua/plugins/rustaceanvim.lua b/lua/plugins/rustaceanvim.lua new file mode 100644 index 0000000..bcd2e99 --- /dev/null +++ b/lua/plugins/rustaceanvim.lua @@ -0,0 +1,47 @@ +return { + "mrcjkb/rustaceanvim", + version = "^3", -- 推荐使用稳定版本 + ft = { "rust" }, + dependencies = { + "mfussenegger/nvim-dap", -- 依赖已有的 DAP 框架 + "rcarriga/nvim-dap-ui", + }, + config = function() + vim.g.rustaceanvim = { + server = { + on_attach = function(client, bufnr) + -- 保持与现有 LSP 快捷键一致 + local opts = { buffer = bufnr, desc = "Rust LSP 操作" } + vim.keymap.set("n", "gd", "lua vim.lsp.buf.definition()", opts) + vim.keymap.set("n", "K", "lua vim.lsp.buf.hover()", opts) + vim.keymap.set("n", "rn", "lua vim.lsp.buf.rename()", opts) + end, + }, + dap = { + adapter = { + type = "executable", + command = "lldb-vscode", -- 需要安装 lldb-vscode + name = "lldb", + }, + }, + } + + -- 调试快捷键(与现有 DAP 快捷键保持一致) + local opts = { noremap = true, silent = true, buffer = 0 } + vim.keymap.set("n", "", function() + require("dap").continue() + end, opts) + vim.keymap.set("n", "", function() + require("dap").step_over() + end, opts) + vim.keymap.set("n", "", function() + require("dap").step_into() + end, opts) + vim.keymap.set("n", "", function() + require("dap").step_out() + end, opts) + vim.keymap.set("n", "b", function() + require("dap").toggle_breakpoint() + end, opts) + end, +} diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua index 490b0c7..6186ba9 100644 --- a/lua/plugins/treesitter.lua +++ b/lua/plugins/treesitter.lua @@ -5,7 +5,6 @@ return { require("nvim-treesitter.configs").setup({ ensure_installed = { "c", - "c++", "vim", "lua", "javascript",