nvim: Add telescope to switch rust-analyzer target

This commit is contained in:
2024-03-13 15:34:57 +01:00
parent a24277188b
commit 74de1a4b69
3 changed files with 42 additions and 7 deletions

View File

@ -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 = {
@ -20,21 +24,25 @@ require("mason").setup({
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
})
local rt = require("rust-tools")
rt.setup({
rust_tools.setup({
server = {
on_attach = function(_, bufnr)
-- Hover actions
vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, { buffer = bufnr })
vim.keymap.set("n", "<C-space>", rust_tools.hover_actions.hover_actions, { buffer = bufnr })
-- Code action groups
vim.keymap.set("n", "<Leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
vim.keymap.set("n", "<Leader>a", rust_tools.code_action_group.code_action_group, { buffer = bufnr })
end,
settings = {
["rust-analyzer"] = {},
}
},
})

View File

@ -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

View File

@ -4,6 +4,7 @@ vim.keymap.set('n', '<leader>fg', telescope.live_grep, {})
vim.keymap.set('n', '<leader>fb', telescope.buffers, {})
vim.keymap.set('n', '<leader>fh', telescope.help_tags, {})
vim.keymap.set('n', '<leader>fs', telescope.treesitter, {}) -- find symbols
vim.keymap.set('n', '<leader>ft', pick_rust_target, {}) -- find symbols
vim.keymap.set('n', 'U', ":redo<Enter>", {})
vim.keymap.set('n', '<leader>p', ":b#<Enter>", {}) -- goto previous buffer