diff --git a/lua/autocmd.lua b/lua/autocmd.lua index 6dab416..8ad9f23 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -59,7 +59,7 @@ vim.api.nvim_create_autocmd({ 'User' }, { group = fidget_group, callback = function(event) local FidgetHelper = require 'utils.fidget_helper' - local handle = FidgetHelper:pop_progress_handle(event.data.id) + local handle = FidgetHelper:pop_progress_handle(event.data.id) if handle then FidgetHelper:report_exit_status(handle, event) handle:finish() @@ -67,22 +67,22 @@ vim.api.nvim_create_autocmd({ 'User' }, { end, }) -vim.api.nvim_create_autocmd('BufEnter', { - callback = function(event) - local windows = vim.api.nvim_list_wins() - - for _, window in ipairs(windows) do - local bufnr = vim.api.nvim_win_get_buf(window) - 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 - vim.cmd 'qa' - end, -}) +-- vim.api.nvim_create_autocmd('BufEnter', { +-- callback = function(event) +-- local windows = vim.api.nvim_list_wins() +-- +-- for _, window in ipairs(windows) do +-- local bufnr = vim.api.nvim_win_get_buf(window) +-- 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 +-- vim.cmd 'qa' +-- end, +-- }) local modes_group = vim.api.nvim_create_augroup('modes', { clear = true }) vim.api.nvim_create_autocmd('FocusLost', { diff --git a/lua/keymap.lua b/lua/keymap.lua index 63d68e4..0fc5815 100644 --- a/lua/keymap.lua +++ b/lua/keymap.lua @@ -34,8 +34,8 @@ 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' }) +vim.keymap.set('n', '.', 'tabnext', { desc = 'Next tab' }) +vim.keymap.set('n', ',', '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' }) @@ -98,6 +98,7 @@ vim.keymap.set('n', 'gp', 'Git push', { desc = 'Git push' }) vim.keymap.set('n', 'gup', 'Git pull --rebase', { desc = 'Git pull --rebase' }) vim.keymap.set('n', 'gsb', 'Git status', { desc = 'Git status' }) vim.keymap.set('n', 'gd', 'Git diff', { desc = 'Git diff' }) +vim.keymap.set('n', 'gf', 'Git fetch', { desc = 'Git fetch' }) vim.keymap.set('n', 'gdc', 'Git diff --cached', { desc = 'Git diff' }) vim.keymap.set('n', 'gl', 'Git log', { desc = 'Git log' }) vim.keymap.set('n', 'gun', 'Git reset -- %', { desc = 'Git unstage file' }) @@ -122,14 +123,18 @@ vim.api.nvim_create_autocmd('BufEnter', { 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' }) + vim.keymap.set('i', '', function () + require('codecompanion').last_chat():submit() + end, { buffer = true, desc = 'Use shift enter to start a new line' }) + vim.keymap.set('i', '', '', { buffer = true, desc = 'Use shift enter to start a new line' }) + vim.keymap.set('n', '', 'G', { buffer = true, 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 diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index 75ed5fe..c621425 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -74,11 +74,6 @@ return { callback = require('vectorcode.integrations').codecompanion.chat.make_tool(), }, }, - keymaps = { - send = { - modes = { i = '' }, - }, - }, }, inline = { adapter = 'flash', diff --git a/lua/plugins/debug.lua b/lua/plugins/debug.lua index 516a2ab..4c3e125 100644 --- a/lua/plugins/debug.lua +++ b/lua/plugins/debug.lua @@ -87,7 +87,28 @@ return { -- You can provide additional configuration to the handlers, -- see mason-nvim-dap README for more information - handlers = {}, + handlers = { + function(config) + require('mason-nvim-dap').default_setup(config) + end, + php = function(config) + config.configurations = { + { + type = 'php', + request = 'launch', + name = 'Listen for XDebug', + port = 9003, + log = true, + -- pathMappings = { + -- ['/var/www/html/'] = vim.fn.getcwd() .. '/', + -- }, + hostname = '0.0.0.0', + }, + } + + require('mason-nvim-dap').default_setup(config) + end, + }, -- You'll need to check that you have the required things installed -- online, please don't ask me how to install them :) @@ -110,9 +131,9 @@ return { name = 'Listen for XDebug', port = 9003, log = true, - pathMappings = { - ['/var/www/html/'] = vim.fn.getcwd() .. '/', - }, + -- pathMappings = { + -- ['/var/www/html/'] = vim.fn.getcwd() .. '/', + -- }, hostname = '0.0.0.0', }, } diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 129c5ae..cd45b00 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -236,6 +236,10 @@ return { languages = { 'vue' }, }, }, + preferences = { + importModuleSpecifierEnding = 'js', + importModuleSpecifierPreference = 'project-relative', + }, }, filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' }, }, @@ -250,6 +254,12 @@ return { on_attach = function(client, bufnr) client.server_capabilities.documentFormattingProvider = false end, + init_options = { + ['language_server_phpstan.enabled'] = false, + ['language_server_psalm.enabled'] = false, + ['language_server_php_cs_fixer.enabled'] = true, + ['language_server_php_cs_fixer.bin'] = '~/.composer/vendor/bin/php-cs-fixer', + }, }, } diff --git a/lua/plugins/neotest.lua b/lua/plugins/neotest.lua index 3e1f3f9..2cb15c2 100644 --- a/lua/plugins/neotest.lua +++ b/lua/plugins/neotest.lua @@ -1,3 +1,4 @@ +require('helpers').edit_cf('pt', '/lua/plugins/neotest.lua') return { 'nvim-neotest/neotest', lazy = true, diff --git a/lua/snippets/php.json b/lua/snippets/php.json index 0f9af03..03231a4 100644 --- a/lua/snippets/php.json +++ b/lua/snippets/php.json @@ -1,12 +1,4 @@ { - "Create doc block": { - "prefix": "/**", - "body": [ - "/**", - " * $0", - " */" - ] - }, "Dump function": { "prefix": "du", "body": [ @@ -20,5 +12,67 @@ "\\PhpStan\\dumpType($0);" ], "description": "Dump PHPStan type" + }, + "Test case": { + "prefix": "test", + "body": [ + "test($1, function () {", + " $0", + "});" + ], + "description": "Test case" + }, + "Create doc block": { + "prefix": "/**", + "body": [ + "/**", + " * $0", + " */" + ] + }, + "DocBlock property": { + "prefix": "@p", + "body": "@property $1 $$0", + "description": "DocBlock property" + }, + "DocBlock boolean property": { + "prefix": "@pb", + "body": "@property bool $$0", + "description": "DocBlock boolean property" + }, + "DocBlock string property": { + "prefix": "@ps", + "body": "@property string $$0", + "description": "DocBlock string property" + }, + "DocBlock int property": { + "prefix": "@pi", + "body": "@property int $$0", + "description": "DocBlock int property" + }, + "DocBlock Collection property": { + "prefix": "@pc", + "body": "@property \\Illuminate\\Support\\Collection $$0", + "description": "DocBlock int property" + }, + "DocBlock date property": { + "prefix": "@pd", + "body": "@property \\Illuminate\\Support\\Carbon $$0", + "description": "DocBlock date property" + }, + "DocBlock model properties": { + "prefix": "@pp", + "body": [ + "/**", + " * @property int $$id", + " * $1", + " * @property \\Illuminate\\Support\\Carbon $$created_at", + " * @property \\Illuminate\\Support\\Carbon $$updated_at", + " *", + " * Relationships", + " * $2", + " */" + ], + "description": "DocBlock model properties" } }