nvim/ftplugin/rust.lua
Jeremie Fraeys 6c762c436a
Some checks failed
Luacheck / luacheck (push) Failing after 4s
StyLua / stylua (push) Failing after 2s
fix: endx typo in lsp-servers.lua
2026-02-08 15:08:04 -05:00

71 lines
2.3 KiB
Lua

-- Set buffer-local options for Rust files
vim.opt_local.expandtab = true -- Use spaces instead of tabs
vim.opt_local.autoindent = true -- Maintain indentation levels
vim.opt_local.smartindent = true -- Smart indentation
vim.opt_local.shiftwidth = 4 -- Indent width
vim.opt_local.tabstop = 4 -- Tab width
vim.opt_local.softtabstop = 4 -- Soft tab width for alignment
vim.opt_local.textwidth = 80 -- Maximum text width
vim.opt_local.colorcolumn = '80' -- Highlight column 80
vim.keymap.set('n', '<leader>Rf', '<CMD>Cargo run<CR>', { desc = 'Run/REPL: Run (Cargo)', noremap = true, buffer = 0 })
vim.keymap.set(
'n',
'<leader>Rb',
'<CMD>Cargo check<CR>',
{ desc = 'Run/REPL: Build/Check (Cargo)', noremap = true, buffer = 0 }
)
local dap = require('dap')
local rust_tools = require('rust-tools')
local mason_registry = require('mason-registry')
local function get_codelldb_paths()
local codelldb_package = mason_registry.get_package('codelldb')
if not codelldb_package:is_installed() then
vim.notify('codelldb is not installed. Please install it via mason.nvim.', vim.log.levels.ERROR)
return nil, nil
end
local codelldb_path = codelldb_package:get_install_path()
local adapter = codelldb_path .. '/extension/adapter/codelldb'
local lib = codelldb_path .. '/extension/lldb/lib/liblldb.so'
return adapter, lib
end
local codelldb_adapter, codelldb_lib = get_codelldb_paths()
if codelldb_adapter and codelldb_lib then
rust_tools.setup({
tools = {
autosethints = true,
inlay_hints = {
show_parameter_hints = true,
parameter_hints_prefix = '<- ',
other_hints_prefix = '=> ',
},
},
server = {
on_attach = function(_, bufnr)
vim.api.nvim_buf_set_keymap(
bufnr,
'n',
'<leader>dR',
'<cmd>RustDebuggables<CR>',
{ noremap = true, silent = true }
)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>RustHoverActions<CR>', { noremap = true, silent = true })
end,
},
dap = {
adapter = require('rust-tools.dap').get_codelldb_adapter(codelldb_adapter, codelldb_lib),
},
})
end
dap.configurations.rust = {
{
type = 'rust',
request = 'launch',
name = 'Launch Program',
program = '${workspaceFolder}/target/debug/${workspaceFolderBasename}',
},
}