dotfiles/lua/autocmds.lua
Gered aaca74819e maybe sort of better rust and cmake buffer keymaps
this has still got a bunch of annoying gotchas. both the cmake-tools
and rustaceanvim plugins are buggy and limited in extremely annoying
ways
2024-09-04 23:54:43 -04:00

56 lines
2.8 KiB
Lua

-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
local helper = require 'helper'
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.highlight.on_yank()
end,
})
-- Dynamically add Cargo / CMake project/file keymaps to a buffer when that buffer
-- is found to be part of a Cargo / CMake project.
vim.api.nvim_create_autocmd('BufEnter', {
group = vim.api.nvim_create_augroup('gered-bufenter-project-keymaps', { clear = true }),
callback = function()
local bufnr = vim.api.nvim_get_current_buf()
local function map(mode, lhs, rhs, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, lhs, rhs, opts)
end
if helper.in_cargo_project() then
map('n', '<leader>ra', '<Cmd>RustLsp codeAction<CR>', { desc = 'Rust: Code [A]ction' })
map('n', '<leader>rr', '<Cmd>RustLsp! runnables<CR>', { desc = 'Rust: [R]un Last Target' })
map('n', '<leader>rR', '<Cmd>RustLsp runnables<CR>', { desc = 'Rust: [R]unnables' })
map('n', '<leader>rd', '<Cmd>RustLsp! debuggables<CR>', { desc = 'Rust: [D]ebug Last Target' })
map('n', '<leader>rD', '<Cmd>RustLsp debuggables<CR>', { desc = 'Rust: [D]ebuggables' })
map('n', '<leader>rt', '<Cmd>RustLsp testables<CR>', { desc = 'Rust: [T]estables' })
map('n', '<leader>re', '<Cmd>RustLsp explainError<CR>', { desc = 'Rust: [E]xplain Error' })
map('n', '<leader>ri', '<Cmd>RustLsp renderDiagnostic<CR>', { desc = 'Rust: Show Next D[i]agnostic' })
map('n', '<leader>ro', '<Cmd>RustLsp openCargo<CR>', { desc = 'Rust: [O]pen Cargo.toml' })
end
if helper.in_cmake_project() then
map('n', '<leader>cc', '<Cmd>CMakeClean<CR>', { desc = 'CMake: [C]lean' })
map('n', '<leader>cg', '<Cmd>CMakeGenerate<CR>', { desc = 'CMake: [G]enerate' })
map('n', '<leader>cr', '<Cmd>CMakeRun<CR>', { desc = 'CMake: [R]un' })
map('n', '<leader>cd', '<Cmd>CMakeDebug<CR>', { desc = 'CMake: [D]ebug' })
map('n', '<leader>cb', '<Cmd>CMakeBuild<CR>', { desc = 'CMake: [B]uild' })
map('n', '<leader>cB', '<Cmd>CMakeSelectBuildTarget<CR>', { desc = 'CMake: Select [B]uild Target' })
map('n', '<leader>cp', '<Cmd>CMakeSelectBuildType<CR>', { desc = 'CMake: Select Build Ty[p]e' })
map('n', '<leader>cl', '<Cmd>CMakeSelectLaunchTarget<CR>', { desc = 'CMake: Select [L]aunch Target' })
map('n', '<leader>cS', '<Cmd>CMakeSettings<CR>', { desc = 'CMake: Project [S]ettings' })
map('n', '<leader>cs', '<Cmd>CMakeTargetSettings<CR>', { desc = 'CMake: Target [S]ettings' })
end
end,
})