LunarVim/ftplugin/rust.lua

100 lines
3.5 KiB
Lua
Raw Normal View History

2021-07-04 07:44:55 +02:00
if O.lang.rust.rust_tools.active then
local opts = {
tools = { -- rust-tools options
-- automatically set inlay hints (type hints)
-- There is an issue due to which the hints are not applied on the first
-- opened file. For now, write to the file to trigger a reapplication of
-- the hints or just run :RustSetInlayHints.
2021-07-01 00:45:40 +02:00
-- default: true
2021-07-04 07:44:55 +02:00
autoSetHints = true,
2021-07-01 00:45:40 +02:00
2021-07-04 07:44:55 +02:00
-- whether to show hover actions inside the hover window
-- this overrides the default hover handler
2021-07-01 00:45:40 +02:00
-- default: true
2021-07-04 07:44:55 +02:00
hover_with_actions = true,
runnables = {
-- whether to use telescope for selection menu or not
-- default: true
use_telescope = true
-- rest of the opts are forwarded to telescope
},
inlay_hints = {
-- wheter to show parameter hints with the inlay hints or not
-- default: true
show_parameter_hints = true,
-- prefix for parameter hints
-- default: "<-"
parameter_hints_prefix = "<-",
-- prefix for all the other hints (type, chaining)
-- default: "=>"
other_hints_prefix = "=>",
-- whether to align to the lenght of the longest line in the file
max_len_align = false,
-- padding from the left if max_len_align is true
max_len_align_padding = 1,
-- whether to align to the extreme right or not
right_align = false,
-- padding from the right if right_align is true
right_align_padding = 7
},
hover_actions = {
-- the border that is used for the hover window
-- see vim.api.nvim_open_win()
border = {
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"},
{"", "FloatBorder"}, {"", "FloatBorder"}
}
}
2021-07-01 00:45:40 +02:00
},
2021-07-04 07:44:55 +02:00
-- all the opts to send to nvim-lspconfig
-- these override the defaults set by rust-tools.nvim
-- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer
server = {
cmd = {DATA_PATH .. "/lspinstall/rust/rust-analyzer"},
on_attach = require'lsp'.common_on_attach
} -- rust-analyser options
}
require('rust-tools').setup(opts)
else
2021-07-01 00:45:40 +02:00
2021-07-04 07:44:55 +02:00
require'lspconfig'.rust_analyzer.setup {
2021-07-01 00:45:40 +02:00
cmd = {DATA_PATH .. "/lspinstall/rust/rust-analyzer"},
2021-07-04 07:44:55 +02:00
on_attach = require'lsp'.common_on_attach,
filetypes = {"rust"},
root_dir = require'lspconfig.util'.root_pattern("Cargo.toml",
"rust-project.json")
}
2021-07-01 00:45:40 +02:00
2021-07-04 07:44:55 +02:00
end
2021-07-01 00:45:40 +02:00
2021-07-04 07:44:55 +02:00
-- TODO fix these mappings
2021-07-01 00:45:40 +02:00
vim.api.nvim_exec([[
autocmd Filetype rust nnoremap <leader>lm <Cmd>RustExpandMacro<CR>
autocmd Filetype rust nnoremap <leader>lH <Cmd>RustToggleInlayHints<CR>
autocmd Filetype rust nnoremap <leader>le <Cmd>RustRunnables<CR>
autocmd Filetype rust nnoremap <leader>lh <Cmd>RustHoverActions<CR>
]], true)
if O.lang.rust.autoformat then
require('lv-utils').define_augroups({
_rust_format = {
2021-07-01 04:09:18 +02:00
{'BufWritePre', '*.rs', 'lua vim.lsp.buf.formatting_sync(nil,1000)'}
2021-07-01 00:45:40 +02:00
}
})
end