diff --git a/lua/autocmd.lua b/lua/autocmd.lua index 0a74044..6dab416 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -73,7 +73,10 @@ vim.api.nvim_create_autocmd('BufEnter', { for _, window in ipairs(windows) do local bufnr = vim.api.nvim_win_get_buf(window) - if vim.api.nvim_get_option_value('buflisted', { buf = bufnr }) or vim.api.nvim_get_option_value('filetype', { buf = bufnr }) == 'oil' then + local ft = vim.api.nvim_get_option_value('filetype', { buf = bufnr }) + if vim.api.nvim_get_option_value('buflisted', { buf = bufnr }) + or ft == 'oil' + or ft == 'snacks_dashboard' then return end end diff --git a/lua/keymap.lua b/lua/keymap.lua index bee604a..63d68e4 100644 --- a/lua/keymap.lua +++ b/lua/keymap.lua @@ -34,6 +34,9 @@ vim.keymap.set('n', '', 'L', { desc = 'Move window to the right' }) vim.keymap.set('n', '', 'J', { desc = 'Move window to the lower' }) vim.keymap.set('n', '', 'K', { desc = 'Move window to the upper' }) +vim.keymap.set('c', 'tn', 'tabnext', { desc = 'Next tab' }) +vim.keymap.set('c', 'tp', 'tabprevious', { desc = 'Previous tab' }) + -- Overriding CTRL mappings because some of them are stupid vim.keymap.set({ 'n', 'v', 'c', 'i' }, '', 'Git blame', { desc = 'Git blame' }) vim.keymap.set({ 'n', 'v', 'c', 'i' }, '', 'Telescope lsp_document_symbols', { desc = 'Show symbols in current document' }) @@ -104,9 +107,38 @@ vim.keymap.set('n', 'gsta', 'Git stash push', { desc = 'Git sta vim.keymap.set('n', 'gstA', 'Git stash apply', { desc = 'Git stash apply' }) vim.keymap.set('n', 'gstp', 'Git stash pop', { desc = 'Git stash pop' }) +-- Add keymaps for diff mode +vim.api.nvim_create_autocmd('BufEnter', { + callback = function() + if vim.wo.diff then + -- Keymaps for navigating hunks + vim.api.nvim_buf_set_keymap(0, 'n', '', ']c', { noremap = true, silent = true, desc = 'Next hunk in diff mode' }) + vim.api.nvim_buf_set_keymap(0, 'n', '', '[c', { noremap = true, silent = true, desc = 'Previous hunk in diff mode' }) + + -- Keymaps for resolving conflicts + vim.api.nvim_buf_set_keymap(0, 'n', 'dl', ':diffget LOCAL', { noremap = true, silent = true, desc = 'Get LOCAL changes' }) + vim.api.nvim_buf_set_keymap(0, 'n', 'dr', ':diffget REMOTE', { noremap = true, silent = true, desc = 'Get REMOTE changes' }) + end + end, +}) + -- AI mappings vim.keymap.set('v', 'ae', 'CodeCompanion', { desc = 'Edit selection with AI' }) vim.keymap.set('n', 'ac', 'CodeCompanionCmd', { desc = 'Run Neovim commands with AI' }) +vim.api.nvim_create_autocmd('FileType', { + pattern = 'codecompanion', + callback = function() + vim.keymap.set('i', '', '', { desc = 'Use shift enter to start a new line' }) + vim.keymap.set('n', '', 'G', { desc = 'Use enter in normal mode to go to the end of the chat' }) + + local models = { 'gpt-4o', 'gemini-2.5-pro', 'gemini-2.0-flash', 'claude-3.7-sonnet-thinking', 'o3-mini' } + -- Loop through models and create keymaps for each + for i, model in ipairs(models) do + vim.keymap.set('n', '', 'mzggj0WC' .. model .. '`z', { desc = 'Switch to ' .. model }) + vim.keymap.set('i', '', 'mzggj0WC' .. model .. '`zi', { desc = 'Switch to ' .. model }) + end + end, +}) -- Search mappings vim.keymap.set('n', 'sGb', 'Telescope git_branches', { desc = 'Search git branches' }) diff --git a/lua/plugins/blink.lua b/lua/plugins/blink.lua index f9d50d8..7ffe48f 100644 --- a/lua/plugins/blink.lua +++ b/lua/plugins/blink.lua @@ -50,7 +50,7 @@ return { completion = { -- By default, you may press `` to show the documentation. -- Optionally, set `auto_show = true` to show the documentation after a delay. - documentation = { auto_show = true, auto_show_delay_ms = 500 }, + documentation = { auto_show = true, auto_show_delay_ms = 200 }, }, sources = { diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index b6f6fa4..75ed5fe 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -1,5 +1,7 @@ require('helpers').edit_cf('pa', '/lua/plugins/codecompanion.lua') +vim.cmd [[cab cc CodeCompanion]] + return { 'olimorris/codecompanion.nvim', opts = function(_, opts) @@ -62,7 +64,7 @@ return { opts.strategies = { chat = { - adapter = 'gemini', + adapter = 'gpt', slash_commands = { codebase = require('vectorcode.integrations').codecompanion.chat.make_slash_command(), }, @@ -72,6 +74,11 @@ return { callback = require('vectorcode.integrations').codecompanion.chat.make_tool(), }, }, + keymaps = { + send = { + modes = { i = '' }, + }, + }, }, inline = { adapter = 'flash', diff --git a/lua/plugins/neotest.lua b/lua/plugins/neotest.lua index c89f8e7..3e1f3f9 100644 --- a/lua/plugins/neotest.lua +++ b/lua/plugins/neotest.lua @@ -1,21 +1,26 @@ return { - "nvim-neotest/neotest", + 'nvim-neotest/neotest', lazy = true, dependencies = { - "nvim-neotest/nvim-nio", - "nvim-lua/plenary.nvim", - "antoinemadec/FixCursorHold.nvim", - "nvim-treesitter/nvim-treesitter", + 'nvim-neotest/nvim-nio', + 'nvim-lua/plenary.nvim', + 'antoinemadec/FixCursorHold.nvim', + 'nvim-treesitter/nvim-treesitter', -- Adapters 'V13Axel/neotest-pest', -- "olimorris/neotest-phpunit", }, config = function() - require('neotest').setup({ + require('neotest').setup { adapters = { - require('neotest-pest'), + require 'neotest-pest' { + sail_enabled = function() + return false + end, + parallel = 10, + }, -- require('neotest-phpunit'), - } - }) - end + }, + } + end, } diff --git a/lua/snippets/php.json b/lua/snippets/php.json index 8b1cf74..0f9af03 100644 --- a/lua/snippets/php.json +++ b/lua/snippets/php.json @@ -13,5 +13,12 @@ "dump($0);" ], "description": "Dump variable" + }, + "Type dump function": { + "prefix": "dt", + "body": [ + "\\PhpStan\\dumpType($0);" + ], + "description": "Dump PHPStan type" } }