diff --git a/tree/.config/nvim/init.lua b/tree/.config/nvim/init.lua index cc5917c..f334308 100644 --- a/tree/.config/nvim/init.lua +++ b/tree/.config/nvim/init.lua @@ -4,10 +4,14 @@ vim.g.localleader = "\\" require('plugins') require('vars') require('opts') +require('fns') require('keys') require('theme') require('statusline') +local lspconfig = require("lspconfig") +local rust_tools = require("rust-tools") + -- Mason Setup require("mason").setup({ ui = { @@ -17,24 +21,28 @@ require("mason").setup({ package_uninstalled = "", }, }, - ensure_installed = { "pylsp", "rust_analyzer" }, + ensure_installed = { "pylsp", "rust_analyzer" }, }) require("mason-lspconfig").setup() -require("lspconfig").pylsp.setup {} +lspconfig.pylsp.setup {} +lspconfig.rust_analyzer.setup {} require("auto-save").setup({ - enabled = false + enabled = false }) -local rt = require("rust-tools") -rt.setup({ + +rust_tools.setup({ server = { on_attach = function(_, bufnr) -- Hover actions - vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) + vim.keymap.set("n", "", rust_tools.hover_actions.hover_actions, { buffer = bufnr }) -- Code action groups - vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) + vim.keymap.set("n", "a", rust_tools.code_action_group.code_action_group, { buffer = bufnr }) end, + settings = { + ["rust-analyzer"] = {}, + } }, }) diff --git a/tree/.config/nvim/lua/fns.lua b/tree/.config/nvim/lua/fns.lua new file mode 100644 index 0000000..60d521b --- /dev/null +++ b/tree/.config/nvim/lua/fns.lua @@ -0,0 +1,26 @@ +-- change rust-analyzer target +set_rust_target = function(target) + print("rust-analyzer.cargo.target = " .. target) + require("rust-tools").setup({ + server = { settings = { ["rust-analyzer"] = { cargo = { target = target } } } }, + }) +end + +-- a custom telescope picker for changing rust-analyzer target +pick_rust_target = function(opts) + opts = opts or {} + require("telescope.pickers").new(opts, { + prompt_title = "rustup target list --installed", + finder = require("telescope.finders").new_oneshot_job({ "rustup", "target", "list", "--installed" }, opts ), + sorter = require("telescope.config").values.generic_sorter(opts), + attach_mappings = function(prompt_bufnr, map) + local actions = require("telescope.actions") + actions.select_default:replace(function() + actions.close(prompt_bufnr) + local selection = require("telescope.actions.state").get_selected_entry() + set_rust_target(selection[1]) + end) + return true + end, + }):find() +end diff --git a/tree/.config/nvim/lua/keys.lua b/tree/.config/nvim/lua/keys.lua index ca07e77..cf5fbab 100644 --- a/tree/.config/nvim/lua/keys.lua +++ b/tree/.config/nvim/lua/keys.lua @@ -4,6 +4,7 @@ vim.keymap.set('n', 'fg', telescope.live_grep, {}) vim.keymap.set('n', 'fb', telescope.buffers, {}) vim.keymap.set('n', 'fh', telescope.help_tags, {}) vim.keymap.set('n', 'fs', telescope.treesitter, {}) -- find symbols +vim.keymap.set('n', 'ft', pick_rust_target, {}) -- find symbols vim.keymap.set('n', 'U', ":redo", {}) vim.keymap.set('n', 'p', ":b#", {}) -- goto previous buffer