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
This commit is contained in:
parent
68bc8119a4
commit
aaca74819e
|
@ -1,18 +0,0 @@
|
|||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
|
||||
local function map(mode, lhs, rhs, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
opts.silent = true
|
||||
vim.keymap.set(mode, lhs, rhs, opts)
|
||||
end
|
||||
|
||||
map('n', '<leader>ra', '<Cmd>RustLsp codeAction<CR>', { desc = 'Code [A]ction' })
|
||||
map('n', '<leader>rr', '<Cmd>RustLsp! runnables<CR>', { desc = '[R]un' })
|
||||
map('n', '<leader>rR', '<Cmd>RustLsp runnables<CR>', { desc = '[R]unnables' })
|
||||
map('n', '<leader>rd', '<Cmd>RustLsp! debuggables<CR>', { desc = '[D]ebug' })
|
||||
map('n', '<leader>rD', '<Cmd>RustLsp debuggables<CR>', { desc = '[D]ebuggables' })
|
||||
map('n', '<leader>rt', '<Cmd>RustLsp testables<CR>', { desc = '[T]estables' })
|
||||
map('n', '<leader>re', '<Cmd>RustLsp explainError<CR>', { desc = '[E]xplain Error' })
|
||||
map('n', '<leader>ri', '<Cmd>RustLsp renderDiagnostic<CR>', { desc = 'Show Next D[i]agnostic' })
|
||||
map('n', '<leader>ro', '<Cmd>RustLsp openCargo<CR>', { desc = '[O]pen Cargo.toml' })
|
2
init.lua
2
init.lua
|
@ -25,8 +25,8 @@ vim.g.have_nerd_font = true
|
|||
|
||||
require 'options'
|
||||
require 'keymaps'
|
||||
require 'lazy-bootstrap'
|
||||
require 'autocmds'
|
||||
require 'lazy-bootstrap'
|
||||
require 'lazy-plugins'
|
||||
|
||||
require 'helper/health'
|
||||
|
|
|
@ -1,18 +1,55 @@
|
|||
-- TODO: why does this cmake-tools autocmd ONLY work when it is here and not
|
||||
-- when it is inside that plugin's `config` function? that `config`
|
||||
-- function pattern seems to work with a bunch of other plugins' autocmds ... ?
|
||||
-- [[ Basic Autocommands ]]
|
||||
-- See `:help lua-guide-autocommands`
|
||||
|
||||
vim.api.nvim_create_autocmd('User', {
|
||||
pattern = 'CMakeToolsEnterProject',
|
||||
callback = function(event)
|
||||
local map = function(keys, func, desc, mode)
|
||||
mode = mode or 'n'
|
||||
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'CMake: ' .. desc })
|
||||
end
|
||||
local helper = require 'helper'
|
||||
|
||||
map('<leader>cc', '<Cmd>CMakeClean<CR>', '[C]lean')
|
||||
map('<leader>cg', '<Cmd>CMakeGenerate<CR>', '[G]enerate')
|
||||
map('<leader>cr', '<Cmd>CMakeRun<CR>', '[R]un')
|
||||
map('<leader>cd', '<Cmd>CMakeDebug<CR>', '[D]ebug')
|
||||
-- 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,
|
||||
})
|
||||
|
|
19
lua/helper/init.lua
Normal file
19
lua/helper/init.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
local M = {}
|
||||
|
||||
function M.get_cmake_project_file()
|
||||
return vim.fn.findfile('CMakeLists.txt', '.;')
|
||||
end
|
||||
|
||||
function M.in_cmake_project()
|
||||
return M.get_cmake_project_file() ~= ''
|
||||
end
|
||||
|
||||
function M.get_cargo_project_file()
|
||||
return vim.fn.findfile('Cargo.toml', '.;')
|
||||
end
|
||||
|
||||
function M.in_cargo_project()
|
||||
return M.get_cargo_project_file() ~= ''
|
||||
end
|
||||
|
||||
return M
|
|
@ -32,18 +32,4 @@ vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right win
|
|||
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
|
||||
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
|
||||
|
||||
-- [[ Basic Autocommands ]]
|
||||
-- See `:help lua-guide-autocommands`
|
||||
|
||||
-- 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,
|
||||
})
|
||||
|
||||
-- vim: ts=2 sts=2 sw=2 et
|
||||
|
|
Loading…
Reference in a new issue