From 6f74961fc62564acecc5580232250037a4474eba Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 1 Mar 2026 20:52:19 +0000 Subject: [PATCH 1/7] Fix treesitter --- lua/plugins/treesitter.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua index 66edc49..e571173 100644 --- a/lua/plugins/treesitter.lua +++ b/lua/plugins/treesitter.lua @@ -2,7 +2,7 @@ return { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', - main = 'nvim-treesitter.configs', -- Sets main module to use for opts + -- main = 'nvim-treesitter.configs', -- Sets main module to use for opts -- [[ Configure Treesitter ]] See `:help nvim-treesitter` opts = { ensure_installed = { From faea500177cdef046322c35e15855223a731a14b Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 6 Mar 2026 17:02:36 +0000 Subject: [PATCH 2/7] Update files --- lua/autocmd.lua | 236 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 163 insertions(+), 73 deletions(-) diff --git a/lua/autocmd.lua b/lua/autocmd.lua index f556e15..f46b37f 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -35,85 +35,175 @@ 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, + }) -require('helpers').edit_cf('a', '/lua/autocmd.lua') + 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 + + -- 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 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 + 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 + end + end + return has_changes, base + end + + 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) + + 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 = config.force_add and " add -f -A" or " add -A" + os.execute(git_base .. add_cmd) + os.execute(git_base .. " commit -m " .. vim.fn.shellescape(msg)) + print("\nChanges committed.") + end + end + break + end + end + end, + }) + + + require('helpers').edit_cf('a', '/lua/autocmd.lua') From 40adefb70c64f39c21df86513ac07d4ad5f4e6a7 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 6 Mar 2026 17:05:20 +0000 Subject: [PATCH 3/7] Update files --- lua/autocmd.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/autocmd.lua b/lua/autocmd.lua index f46b37f..763138a 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -193,7 +193,7 @@ vim.api.nvim_create_autocmd('SwapExists', { if msg ~= "" then msg = "Update files" end - local add_cmd = config.force_add and " add -f -A" or " add -A" + local add_cmd = " add -A" os.execute(git_base .. add_cmd) os.execute(git_base .. " commit -m " .. vim.fn.shellescape(msg)) print("\nChanges committed.") From 894d2fcabf7335074cced2d9efa6713cc7aae1a0 Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 6 Mar 2026 17:06:16 +0000 Subject: [PATCH 4/7] Update files --- lua/autocmd.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/autocmd.lua b/lua/autocmd.lua index 763138a..df45ae6 100644 --- a/lua/autocmd.lua +++ b/lua/autocmd.lua @@ -196,6 +196,7 @@ vim.api.nvim_create_autocmd('SwapExists', { 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 From ba41c9a054a18d603e9b8a311160224d39d837ae Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 8 Mar 2026 20:48:24 +0000 Subject: [PATCH 5/7] Add pywal theme --- lua/plugins/color.lua | 30 +++++++++++++++++++----------- lua/plugins/pywal.lua | 3 +++ 2 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 lua/plugins/pywal.lua diff --git a/lua/plugins/color.lua b/lua/plugins/color.lua index 2950ac0..13ad4dd 100644 --- a/lua/plugins/color.lua +++ b/lua/plugins/color.lua @@ -4,19 +4,27 @@ return { -- change the command in the config to whatever the name of that colorscheme is. -- -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. - 'folke/tokyonight.nvim', + 'AlphaTechnolog/pywal.nvim', + dependencies = { + 'folke/tokyonight.nvim', + }, priority = 1000, -- Make sure to load this before all the other start plugins. config = function() - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup { - styles = { - comments = { italic = false }, -- Disable italics in comments - }, - } - -- Load the colorscheme here. - -- Like many other themes, this one has different styles, and you could load - -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'tokyonight-night' + -- Check if wal directory exists otherwise use tokyo + local handle = io.popen('ls -d $HOME/.cache/wal 2>/dev/null') + local result = handle:read('*a') + handle:close() + + if result == "" then + ---@diagnostic disable-next-line: missing-fields + require('tokyonight').setup(); + + vim.cmd.colorscheme 'tokyonight-night' + return + end + + require('pywal').setup(); + end, } diff --git a/lua/plugins/pywal.lua b/lua/plugins/pywal.lua new file mode 100644 index 0000000..7556fb2 --- /dev/null +++ b/lua/plugins/pywal.lua @@ -0,0 +1,3 @@ +return { + 'AlphaTechnolog/pywal.nvim', +} From e4a935de25210dfc4b3f987df5070706c61e9f14 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 8 Mar 2026 20:58:50 +0000 Subject: [PATCH 6/7] Use tokyo for fallback --- lua/plugins/color.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lua/plugins/color.lua b/lua/plugins/color.lua index 13ad4dd..56a124f 100644 --- a/lua/plugins/color.lua +++ b/lua/plugins/color.lua @@ -16,13 +16,10 @@ return { local result = handle:read('*a') handle:close() - if result == "" then - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup(); + ---@diagnostic disable-next-line: missing-fields + require('tokyonight').setup(); - vim.cmd.colorscheme 'tokyonight-night' - return - end + vim.cmd.colorscheme 'tokyonight-night' require('pywal').setup(); From 8d1278b84a1eaab528305bbe10703a73358ba4bd Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 9 Mar 2026 23:20:40 +0000 Subject: [PATCH 7/7] Fix pywal missing --- lua/plugins/color.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/plugins/color.lua b/lua/plugins/color.lua index 56a124f..3c034e6 100644 --- a/lua/plugins/color.lua +++ b/lua/plugins/color.lua @@ -10,18 +10,18 @@ return { }, priority = 1000, -- Make sure to load this before all the other start plugins. config = function() - - -- Check if wal directory exists otherwise use tokyo - local handle = io.popen('ls -d $HOME/.cache/wal 2>/dev/null') - local result = handle:read('*a') - handle:close() - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup(); + require('tokyonight').setup() vim.cmd.colorscheme 'tokyonight-night' - require('pywal').setup(); + -- Check if wal directory exists otherwise use tokyo + local handle = io.popen 'ls -d $HOME/.cache/wal 2>/dev/null' + local result = handle:read '*a' + handle:close() + if result ~= '' then + require('pywal').setup() + end end, }