diff --git a/init.lua b/init.lua index 5cf7f97..7ea4257 100644 --- a/init.lua +++ b/init.lua @@ -187,10 +187,10 @@ vim.keymap.set('n', 'g#', 'g*', { desc = 'search forward for the identifier unde vim.keymap.set('n', 't', 'tabnew', { desc = 'Open new tab' }) -- Insert current date and time in format yyyy-mm-dd HH:MM -vim.keymap.set('n', 'id', function() +vim.keymap.set('n', 'did', function() local date = tostring(os.date '%Y-%m-%d %H:%M') -- get current date and time vim.api.nvim_put({ date }, 'c', true, true) -- put it below the current line -end, { desc = '[I]nsert current [d]ate and time' }) +end, { desc = '[D]ate and time' }) -- Yank to system clipboard with leader+y vim.keymap.set({ 'n', 'v' }, 'y', [["+y]], { desc = '[Y]ank to system clipboard' }) diff --git a/lsp/basedpyright.lua b/lsp/basedpyright.lua index cd0b3bf..69919b2 100644 --- a/lsp/basedpyright.lua +++ b/lsp/basedpyright.lua @@ -5,7 +5,7 @@ return { autoSearchPaths = true, diagnosticMode = 'openFilesOnly', useLibraryCodeForTypes = true, - typeCheckingMode = 'basic', + typeCheckingMode = 'standard', -- reportMissingTypeArgument = 'none', -- reportUnknownArgumentType = 'none', }, diff --git a/lua/plugins/avante.lua b/lua/plugins/avante.lua index a600794..c725f12 100644 --- a/lua/plugins/avante.lua +++ b/lua/plugins/avante.lua @@ -198,19 +198,19 @@ return { -- Additional keymaps for Avante vim.keymap.set({ 'n', 'v' }, 'aa', function() require('avante.api').ask() - end, { desc = '[A]vante [A]sk' }) + end) vim.keymap.set('n', 'ac', function() vim.cmd 'AvanteChat' - end, { desc = '[A]vante [C]hat' }) + end) vim.keymap.set('n', 'ar', function() require('avante.api').refresh() - end, { desc = '[A]vante [R]efresh' }) + end) vim.keymap.set('v', 'ae', function() require('avante.api').edit() - end, { desc = '[A]vante [E]dit' }) + end) -- Provider switcher that works with both ACP and regular providers vim.keymap.set('n', 'ap', function() @@ -241,7 +241,7 @@ return { vim.notify('Switched to provider: ' .. choice.name, vim.log.levels.INFO) end end) - end, { desc = '[A]vante [P]rovider switch' }) + end) -- Zen mode alias for terminal vim.api.nvim_create_user_command('AvanteZen', function() diff --git a/lua/plugins/claudecode.lua b/lua/plugins/claudecode.lua index fdb6ceb..ed5de21 100644 --- a/lua/plugins/claudecode.lua +++ b/lua/plugins/claudecode.lua @@ -29,6 +29,6 @@ return { }, keys = { -- Your keymaps here - { 'cs', 'ClaudeCodeSend', mode = 'v', desc = 'Send to [C]laude' }, + { 'da', 'ClaudeCodeSend', mode = 'v', desc = 'Send to Cl[a]ude' }, }, } diff --git a/lua/plugins/conform.lua b/lua/plugins/conform.lua index e86a00c..6f9f994 100644 --- a/lua/plugins/conform.lua +++ b/lua/plugins/conform.lua @@ -4,6 +4,21 @@ return { -- Autoformat event = { 'BufWritePre' }, cmd = { 'ConformInfo' }, keys = { + { + 'ef', + function() + if vim.g.disable_autoformat then + vim.g.disable_autoformat = false + vim.b.disable_autoformat = false + vim.notify('Format on save enabled') + else + vim.g.disable_autoformat = true + vim.notify('Format on save disabled') + end + end, + mode = '', + desc = '[F]ormat on save', + }, { 'f', function() diff --git a/lua/plugins/copilot.lua b/lua/plugins/copilot.lua index 73e4315..8b935e7 100644 --- a/lua/plugins/copilot.lua +++ b/lua/plugins/copilot.lua @@ -60,9 +60,9 @@ return { desc = 'Accept Copilot suggestion', }, { - 'C', + 'ec', toggle_copilot, - desc = '[C]opilot toggle', + desc = '[C]opilot', }, }, }, diff --git a/lua/plugins/hover.lua b/lua/plugins/hover.lua index c77cd4c..7e87109 100644 --- a/lua/plugins/hover.lua +++ b/lua/plugins/hover.lua @@ -7,7 +7,7 @@ return { { 'gK', desc = 'Hover select provider' }, { '', mode = 'n', desc = 'Hover previous source' }, { '', mode = 'n', desc = 'Hover next source' }, - { 'H', desc = 'Toggle [H]over' }, + { 'eh', desc = '[H]over' }, }, config = function() local hover = require 'hover' @@ -41,7 +41,7 @@ return { local hover_enabled = false vim.o.mousemoveevent = false - vim.keymap.set('n', 'H', function() + vim.keymap.set('n', 'eh', function() hover_enabled = not hover_enabled vim.o.mousemoveevent = hover_enabled if hover_enabled then @@ -50,7 +50,7 @@ return { pcall(vim.keymap.del, 'n', '') end vim.notify('Hover ' .. (hover_enabled and 'Enabled' or 'Disabled')) - end, { desc = 'Toggle [H]over' }) + end, { desc = '[H]over' }) vim.api.nvim_create_autocmd('CursorHold', { group = vim.api.nvim_create_augroup('hover_auto_open', { clear = true }), diff --git a/lua/plugins/neotest.lua b/lua/plugins/neotest.lua new file mode 100644 index 0000000..fe7a404 --- /dev/null +++ b/lua/plugins/neotest.lua @@ -0,0 +1,33 @@ +--- @type LazySpec | LazySpec[] +return { + 'nvim-neotest/neotest', + dependencies = { + 'nvim-neotest/nvim-nio', + 'nvim-lua/plenary.nvim', + 'antoinemadec/FixCursorHold.nvim', + 'nvim-treesitter/nvim-treesitter', + 'nvim-neotest/neotest-python', + }, + opts = { + adapters = { + ['neotest-python'] = { + runner = 'pytest', + args = { '--rootdir', 'tests' }, + }, + }, + }, + config = function(_, opts) + local adapters = {} + for name, config in pairs(opts.adapters or {}) do + table.insert(adapters, require(name)(config)) + end + opts.adapters = adapters + require('neotest').setup(opts) + end, + keys = { + { 'ctt', function() require('neotest').run.run() end, desc = '[T]est nearest' }, + { 'ctf', function() require('neotest').run.run(vim.fn.expand('%')) end, desc = '[T]est [F]ile' }, + { 'cts', function() require('neotest').summary.toggle() end, desc = '[T]est [S]ummary' }, + { 'cto', function() require('neotest').output_panel.toggle() end, desc = '[T]est [O]utput' }, + }, +} diff --git a/lua/plugins/nvim-lspconfig.lua b/lua/plugins/nvim-lspconfig.lua index 4f5755f..5b3c413 100644 --- a/lua/plugins/nvim-lspconfig.lua +++ b/lua/plugins/nvim-lspconfig.lua @@ -37,7 +37,7 @@ return { callback = function(event) local map = function(keys, func, desc, mode) mode = mode or 'n' - vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) + vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = desc }) end -- Jump to the definition of the word under your cursor. @@ -56,7 +56,7 @@ return { -- Jump to the type of the word under your cursor. -- Useful when you're not sure what type a variable is and you want to see -- the definition of its *type*, not where it was *defined*. - map('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') + map('cD', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') -- Fuzzy find all the symbols in your current document. -- Symbols are things like variables, functions, types, etc. @@ -64,11 +64,11 @@ return { -- Fuzzy find all the symbols in your current workspace. -- Similar to document symbols, except searches over your entire project. - map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + map('cw', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') -- Rename the variable under your cursor. -- Most Language Servers support renaming across files, etc. - map('rn', vim.lsp.buf.rename, '[R]e[n]ame') + map('cr', vim.lsp.buf.rename, '[R]ename') -- Execute a code action, usually your cursor needs to be on top of an error -- or a suggestion from your LSP for this to activate. @@ -121,9 +121,9 @@ return { -- -- This may be unwanted, since they displace some of your code if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then - map('ch', function() + map('ei', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) - end, '[C]ode Inlay [H]ints') + end, '[I]nlay hints') end end, }) diff --git a/lua/plugins/opencode.lua b/lua/plugins/opencode.lua index 5c2aaf6..4f89942 100644 --- a/lua/plugins/opencode.lua +++ b/lua/plugins/opencode.lua @@ -23,7 +23,7 @@ return { -- vim.keymap.set({ 'n', 'x' }, '', function() -- require('opencode').select() -- end, { desc = 'Execute opencode action…' }) - vim.keymap.set({ 'n', 't' }, '', function() + vim.keymap.set('n', 'do', function() require('opencode').toggle() end, { desc = '[O]pencode' }) @@ -45,5 +45,5 @@ return { -- vim.keymap.set('n', '+', '', { desc = 'Increment under cursor', noremap = true }) -- vim.keymap.set('n', '-', '', { desc = 'Decrement under cursor', noremap = true }) end, - keys = { '' }, + keys = { { 'do', desc = 'OpenCode' } }, } diff --git a/lua/plugins/render-markdown.lua b/lua/plugins/render-markdown.lua index 251ce99..8954f08 100644 --- a/lua/plugins/render-markdown.lua +++ b/lua/plugins/render-markdown.lua @@ -14,9 +14,9 @@ return { require('render-markdown').setup(opts) -- Optional: Toggle markdown rendering on/off - vim.keymap.set('n', 'mr', 'RenderMarkdown toggle', { desc = '[M]arkdown [R]ender toggle' }) + vim.keymap.set('n', 'em', 'RenderMarkdown toggle', { desc = '[M]arkdown render' }) end, keys = { - { 'mr', 'RenderMarkdown toggle', desc = '[M]arkdown [R]ender toggle' }, + { 'em', 'RenderMarkdown toggle', desc = '[M]arkdown render' }, }, } diff --git a/lua/plugins/toggleterm.lua b/lua/plugins/toggleterm.lua index a93ff35..d6aa217 100644 --- a/lua/plugins/toggleterm.lua +++ b/lua/plugins/toggleterm.lua @@ -13,10 +13,10 @@ return { close_on_exit = true, } -- Keymaps - vim.keymap.set('n', 't', 'ToggleTerm', { desc = 'Open [T]erminal' }) + vim.keymap.set('n', 'T', 'ToggleTerm', { desc = 'Open [T]erminal' }) end, keys = { - { 't', nil, desc = 'Open [T]erminal' }, + { 'T', nil, desc = 'Open [T]erminal' }, }, }, } diff --git a/lua/plugins/which-key.lua b/lua/plugins/which-key.lua index fccd0cd..664395c 100644 --- a/lua/plugins/which-key.lua +++ b/lua/plugins/which-key.lua @@ -24,15 +24,17 @@ return { -- Useful plugin to show you pending keybinds. -- Document existing key chains spec = { - { 'c', group = '[C]ode', mode = { 'n', 'x' } }, - { 'd', group = '[D]ocument' }, - { 'r', group = '[R]ename' }, - { 's', group = '[S]earch' }, - { 'w', group = '[W]orkspace' }, - { 'a', group = '[A]vante' }, - { 'i', group = '[I]nsert' }, - { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, - { 'S', group = '[S]ession' }, + { 'a', group = 'Avante' }, + { 'c', group = 'Code', mode = { 'n', 'x' } }, + { 'ct', group = 'Tests' }, + { 'd', group = 'Document' }, + { 'di', group = 'Insert' }, + { 'e', group = 'Editor' }, + { 'g', group = 'Git' }, + { 's', group = 'Search' }, + { 'S', group = 'Session' }, + { 'M', hidden = true }, + { 'N', hidden = true }, }, }, keys = {