diff --git a/lua/autocmd.lua b/lua/autocmd.lua index df45ae6..e47fd39 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -18,12 +18,14 @@ vim.api.nvim_create_autocmd('FocusLost', { group = autosave_group, pattern = '*', command = 'silent! wa', -- Save all files when moving away from the window + nested = true, -- Allow other autocommands to run after this one }) vim.api.nvim_create_autocmd('InsertLeave', { group = autosave_group, pattern = '*', command = 'silent! wa', -- Save all files when leaving insert mode + nested = true, -- Allow other autocommands to run after this one }) vim.api.nvim_create_autocmd('SwapExists', { @@ -35,176 +37,177 @@ vim.api.nvim_create_autocmd('SwapExists', { }) -- vim.api.nvim_create_autocmd('TextChanged', { - -- group = autosave_group, - -- pattern = '*', - -- command = 'silent! wa', -- Save all files when text is changed - -- }) +-- group = autosave_group, +-- pattern = '*', +-- command = 'silent! wa', -- Save all files when text is changed +-- }) - vim.api.nvim_create_autocmd('User', { - pattern = 'OilActionsPost', - callback = function(event) - if event.data.actions.type == 'move' then - Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url) - end - end, - }) +vim.api.nvim_create_autocmd('User', { + pattern = 'OilActionsPost', + callback = function(event) + if event.data.actions.type == 'move' then + Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url) + end + end, +}) - local fidget_group = vim.api.nvim_create_augroup('CodeCompanionFidgetHooks', { clear = true }) +local fidget_group = vim.api.nvim_create_augroup('CodeCompanionFidgetHooks', { clear = true }) - vim.api.nvim_create_autocmd({ 'User' }, { - pattern = 'CodeCompanionRequestStarted', - group = fidget_group, - callback = function(event) - local FidgetHelper = require 'utils.fidget_helper' - -- Pass event instead of request if the callback receives the full event object - local handle = FidgetHelper:create_progress_handle(event) - FidgetHelper:store_progress_handle(event.data.id, handle) - end, - }) +vim.api.nvim_create_autocmd({ 'User' }, { + pattern = 'CodeCompanionRequestStarted', + group = fidget_group, + callback = function(event) + local FidgetHelper = require 'utils.fidget_helper' + -- Pass event instead of request if the callback receives the full event object + local handle = FidgetHelper:create_progress_handle(event) + FidgetHelper:store_progress_handle(event.data.id, handle) + end, +}) - vim.api.nvim_create_autocmd({ 'User' }, { - pattern = 'CodeCompanionRequestFinished', - group = fidget_group, - callback = function(event) - local FidgetHelper = require 'utils.fidget_helper' - local handle = FidgetHelper:pop_progress_handle(event.data.id) - if handle then - FidgetHelper:report_exit_status(handle, event) - handle:finish() - end - end, - }) +vim.api.nvim_create_autocmd({ 'User' }, { + pattern = 'CodeCompanionRequestFinished', + group = fidget_group, + callback = function(event) + local FidgetHelper = require 'utils.fidget_helper' + local handle = FidgetHelper:pop_progress_handle(event.data.id) + if handle then + FidgetHelper:report_exit_status(handle, event) + handle:finish() + end + 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', { - group = modes_group, - pattern = '*', - command = 'call feedkeys("\\")', - }) +local modes_group = vim.api.nvim_create_augroup('modes', { clear = true }) +vim.api.nvim_create_autocmd('FocusLost', { + group = modes_group, + pattern = '*', + command = 'call feedkeys("\\")', +}) - vim.api.nvim_create_autocmd('BufNewFile', { - group = modes_group, - pattern = '*', - command = 'call feedkeys("i")', - }) +vim.api.nvim_create_autocmd('BufNewFile', { + group = modes_group, + pattern = '*', + command = 'call feedkeys("i")', +}) - -- Reload LuaSnip snippets when saving files in the snippets directory - local snippets_dir = vim.fn.stdpath 'config' .. '/lua/snippets' - vim.api.nvim_create_autocmd('BufWritePost', { - pattern = snippets_dir .. '/*.json', -- Adjust the path to match your snippets directory - desc = 'Reload LuaSnip snippets on save', - callback = function() - require('luasnip.loaders.from_vscode').lazy_load { paths = { snippets_dir } } - vim.notify('Snippets reloaded!', vim.log.levels.INFO) - end, - }) +-- Reload LuaSnip snippets when saving files in the snippets directory +local snippets_dir = vim.fn.stdpath 'config' .. '/lua/snippets' +vim.api.nvim_create_autocmd('BufWritePost', { + pattern = snippets_dir .. '/*.json', -- Adjust the path to match your snippets directory + desc = 'Reload LuaSnip snippets on save', + callback = function() + require('luasnip.loaders.from_vscode').lazy_load { paths = { snippets_dir } } + vim.notify('Snippets reloaded!', vim.log.levels.INFO) + end, +}) - local configs = { - { - path = os.getenv("HOME") .. "/.config/nixos", - worktree = nil, - git_dir = nil, - track_untracked = false, - force_add = false - }, - { - path = os.getenv("HOME") .. "/.config/nvim", - worktree = nil, - git_dir = nil, - track_untracked = false, - force_add = false - }, - { - path = os.getenv("HOME"), - worktree = os.getenv("HOME"), - git_dir = os.getenv("HOME") .. "/.config/dotfiles/.git", - track_untracked = true, - force_add = true, -- Handles ignored files in dotfiles - include_dirs = { ".config", ".local/bin", ".local/share" } - } - } +local configs = { + { + path = os.getenv 'HOME' .. '/.config/nixos', + worktree = nil, + git_dir = nil, + track_untracked = false, + force_add = false, + }, + { + path = os.getenv 'HOME' .. '/.config/nvim', + worktree = nil, + git_dir = nil, + track_untracked = false, + force_add = false, + }, + { + path = os.getenv 'HOME', + worktree = os.getenv 'HOME', + git_dir = os.getenv 'HOME' .. '/.config/dotfiles/.git', + track_untracked = true, + force_add = true, -- Handles ignored files in dotfiles + include_dirs = { '.config', '.local/bin', '.local/share' }, + }, +} - local function get_git_status(config) - local base = "git" - if config.git_dir and config.worktree then - base = string.format("git --git-dir=%s --worktree=%s", config.git_dir, config.worktree) - end +local function get_git_status(config) + local base = 'git' + if config.git_dir and config.worktree then + base = string.format('git --git-dir=%s --worktree=%s', config.git_dir, config.worktree) + end - -- Check modified and untracked (including ignored if force_add is true) - local cmd = base .. " status --porcelain" - if config.force_add then cmd = cmd .. " --ignored" end + -- Check modified and untracked (including ignored if force_add is true) + local cmd = base .. ' status --porcelain' + if config.force_add then + cmd = cmd .. ' --ignored' + end - local handle = io.popen(cmd) - local result = handle:read("*a") - handle:close() + local handle = io.popen(cmd) + local result = handle:read '*a' + handle:close() - local has_changes = false - for line in result:gmatch("[^\r\n]+") do - local status = line:sub(1, 2) - local file = line:sub(4) + local has_changes = false + for line in result:gmatch '[^\r\n]+' do + local status = line:sub(1, 2) + local file = line:sub(4) - if status:match("[MAR]") then + if status:match '[MAR]' then + has_changes = true + elseif (status == '??' or status == '!!') and config.track_untracked then + if config.include_dirs then + for _, dir in ipairs(config.include_dirs) do + if file:sub(1, #dir) == dir then has_changes = true - elseif (status == "??" or status == "!!") and config.track_untracked then - if config.include_dirs then - for _, dir in ipairs(config.include_dirs) do - if file:sub(1, #dir) == dir then - has_changes = true - break - end - end - else - has_changes = true - end + break end end - return has_changes, base + else + has_changes = true end + end + end + return has_changes, base +end - vim.api.nvim_create_autocmd("VimLeavePre", { - callback = function() - local cwd = vim.fn.getcwd() +vim.api.nvim_create_autocmd('VimLeavePre', { + callback = function() + local cwd = vim.fn.getcwd() - for _, config in ipairs(configs) do - if cwd:sub(1, #config.path) == config.path then - local has_changes, git_base = get_git_status(config) + for _, config in ipairs(configs) do + if cwd:sub(1, #config.path) == config.path then + local has_changes, git_base = get_git_status(config) - if has_changes then - local confirm = vim.fn.confirm("Uncommitted changes in managed path. Commit?", "&Yes\n&No", 2) - if confirm == 1 then - local msg = vim.fn.input("Commit message: ", "chore: update files") - if msg ~= "" then - msg = "Update files" - end - local add_cmd = " add -A" - os.execute(git_base .. add_cmd) - os.execute(git_base .. " commit -m " .. vim.fn.shellescape(msg)) - os.execute(git_base .. " push") - print("\nChanges committed.") - end - end - break + if has_changes then + local confirm = vim.fn.confirm('Uncommitted changes in managed path. Commit?', '&Yes\n&No', 2) + if confirm == 1 then + local msg = vim.fn.input('Commit message: ', 'chore: update files') + if msg ~= '' then + msg = 'Update files' end + local add_cmd = ' add -A' + os.execute(git_base .. add_cmd) + os.execute(git_base .. ' commit -m ' .. vim.fn.shellescape(msg)) + os.execute(git_base .. ' push') + print '\nChanges committed.' end - end, - }) + end + break + end + end + end, +}) - - require('helpers').edit_cf('a', '/lua/autocmd.lua') +require('helpers').edit_cf('a', '/lua/autocmd.lua') diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index c54223f..f892d7c 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -115,6 +115,11 @@ return { }, } + vim.lsp.phpactor = { + cmd = { 'phpactor', 'language-server' }, + filetypes = { 'php' }, + } + -- Enable the following language servers -- -- Add any additional override configuration in the following tables. Available keys are: @@ -139,7 +144,7 @@ return { }, }, }, - phpactor = {}, + -- phpactor = {}, vtsls = { settings = { vtsls = { diff --git a/lua/projects.lua b/lua/projects.lua index 61e816a..c42bcb3 100644 --- a/lua/projects.lua +++ b/lua/projects.lua @@ -242,6 +242,21 @@ local PROJECTS = { laravel_makes() map('yrn ', '!cd frontend && yarn ', { desc = 'Run yarn script' }, 'c') map('pm', ':vendor/bin/sail composer migrate') + + vim.api.nvim_create_autocmd({ 'BufWritePost' }, { + pattern = { '*.php', '.env', '.graphql' }, + callback = function() + vim.fn.jobstart('vendor/bin/sail artisan octane:reload', { stdout_buffered = true }) + vim.fn.jobstart('vendor/bin/sail artisan horizon:terminate', { stdout_buffered = true }) + end, + }) + + vim.api.nvim_create_autocmd({ 'BufWritePost' }, { + pattern = { '.graphql' }, + callback = function() + vim.fn.jobstart('vendor/bin/sail artisan lighthouse:clear-cache', { stdout_buffered = true }) + end, + }) end, default = function() end,