Compare commits

..
1 Commits
Author SHA1 Message Date
chris 58753ae801 Spaces 2026-07-21 21:14:42 +01:00
+68 -68
View File
@@ -4,35 +4,35 @@
-- Highlight when yanking (copying) text -- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode -- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()` -- See `:help vim.highlight.on_yank()`
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd('TextYankPost', {
desc = "Highlight when yanking (copying) text", desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }), group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function() callback = function()
vim.highlight.on_yank() vim.highlight.on_yank()
end, end,
}) })
local autosave_group = vim.api.nvim_create_augroup("autosaving", { clear = true }) local autosave_group = vim.api.nvim_create_augroup('autosaving', { clear = true })
vim.api.nvim_create_autocmd("FocusLost", { vim.api.nvim_create_autocmd('FocusLost', {
group = autosave_group, group = autosave_group,
pattern = "*", pattern = '*',
command = "silent! wa", -- Save all files when moving away from the window command = 'silent! wa', -- Save all files when moving away from the window
nested = true, -- Allow other autocommands to run after this one nested = true, -- Allow other autocommands to run after this one
}) })
vim.api.nvim_create_autocmd("BufLeave", { vim.api.nvim_create_autocmd('BufLeave', {
group = autosave_group, group = autosave_group,
pattern = "*", pattern = '*',
command = "silent! wa", -- Save all files when switching buffers command = 'silent! wa', -- Save all files when switching buffers
nested = true, -- Allow other autocommands to run after this one nested = true, -- Allow other autocommands to run after this one
}) })
vim.api.nvim_create_autocmd("SwapExists", { vim.api.nvim_create_autocmd('SwapExists', {
desc = "Always choose to delete the swap file, files are saved automatically", desc = 'Always choose to delete the swap file, files are saved automatically',
group = vim.api.nvim_create_augroup("NoSwaps", { clear = true }), group = vim.api.nvim_create_augroup('NoSwaps', { clear = true }),
callback = function(args) callback = function(args)
vim.cmd("let v:swapchoice = 'd'") vim.cmd "let v:swapchoice = 'd'"
end, end,
}) })
@@ -42,33 +42,33 @@ vim.api.nvim_create_autocmd("SwapExists", {
-- command = 'silent! wa', -- Save all files when text is changed -- command = 'silent! wa', -- Save all files when text is changed
-- }) -- })
vim.api.nvim_create_autocmd("User", { vim.api.nvim_create_autocmd('User', {
pattern = "OilActionsPost", pattern = 'OilActionsPost',
callback = function(event) callback = function(event)
if event.data.actions.type == "move" then if event.data.actions.type == 'move' then
Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url) Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url)
end end
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" }, { vim.api.nvim_create_autocmd({ 'User' }, {
pattern = "CodeCompanionRequestStarted", pattern = 'CodeCompanionRequestStarted',
group = fidget_group, group = fidget_group,
callback = function(event) callback = function(event)
local FidgetHelper = require("utils.fidget_helper") local FidgetHelper = require 'utils.fidget_helper'
-- Pass event instead of request if the callback receives the full event object -- Pass event instead of request if the callback receives the full event object
local handle = FidgetHelper:create_progress_handle(event) local handle = FidgetHelper:create_progress_handle(event)
FidgetHelper:store_progress_handle(event.data.id, handle) FidgetHelper:store_progress_handle(event.data.id, handle)
end, end,
}) })
vim.api.nvim_create_autocmd({ "User" }, { vim.api.nvim_create_autocmd({ 'User' }, {
pattern = "CodeCompanionRequestFinished", pattern = 'CodeCompanionRequestFinished',
group = fidget_group, group = fidget_group,
callback = function(event) callback = function(event)
local FidgetHelper = require("utils.fidget_helper") 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 if handle then
FidgetHelper:report_exit_status(handle, event) FidgetHelper:report_exit_status(handle, event)
@@ -94,99 +94,99 @@ vim.api.nvim_create_autocmd({ "User" }, {
-- end, -- end,
-- }) -- })
vim.api.nvim_create_autocmd({ "BufWritePre" }, { vim.api.nvim_create_autocmd({ 'BufWritePre' }, {
pattern = { "*.lua" }, pattern = { '*.lua' },
callback = function(args) callback = function(args)
require("helpers").format_buffer("stylua", args.buf) require('helpers').format_buffer('stylua', args.buf)
end, end,
}) })
local modes_group = vim.api.nvim_create_augroup("modes", { clear = true }) local modes_group = vim.api.nvim_create_augroup('modes', { clear = true })
vim.api.nvim_create_autocmd("FocusLost", { vim.api.nvim_create_autocmd('FocusLost', {
group = modes_group, group = modes_group,
pattern = "*", pattern = '*',
command = 'call feedkeys("\\<Esc>")', command = 'call feedkeys("\\<Esc>")',
}) })
vim.api.nvim_create_autocmd("BufNewFile", { vim.api.nvim_create_autocmd('BufNewFile', {
group = modes_group, group = modes_group,
pattern = "*", pattern = '*',
command = 'call feedkeys("i")', command = 'call feedkeys("i")',
}) })
-- Reload LuaSnip snippets when saving files in the snippets directory -- Reload LuaSnip snippets when saving files in the snippets directory
local snippets_dir = vim.fn.stdpath("config") .. "/lua/snippets" local snippets_dir = vim.fn.stdpath 'config' .. '/lua/snippets'
vim.api.nvim_create_autocmd("BufWritePost", { vim.api.nvim_create_autocmd('BufWritePost', {
pattern = snippets_dir .. "/*.json", -- Adjust the path to match your snippets directory pattern = snippets_dir .. '/*.json', -- Adjust the path to match your snippets directory
desc = "Reload LuaSnip snippets on save", desc = 'Reload LuaSnip snippets on save',
callback = function() callback = function()
require("luasnip.loaders.from_vscode").lazy_load({ paths = { snippets_dir } }) require('luasnip.loaders.from_vscode').lazy_load { paths = { snippets_dir } }
vim.notify("Snippets reloaded!", vim.log.levels.INFO) vim.notify('Snippets reloaded!', vim.log.levels.INFO)
end, end,
}) })
-- Run shortcuts script when saving shortcut files -- Run shortcuts script when saving shortcut files
vim.api.nvim_create_autocmd("BufWritePost", { vim.api.nvim_create_autocmd('BufWritePost', {
pattern = { pattern = {
os.getenv("XDG_CONFIG_HOME") .. "/shell/bm-files", os.getenv 'XDG_CONFIG_HOME' .. '/shell/bm-files',
os.getenv("XDG_CONFIG_HOME") .. "/shell/bm-dirs", os.getenv 'XDG_CONFIG_HOME' .. '/shell/bm-dirs',
}, },
desc = "Run shortcuts script", desc = 'Run shortcuts script',
callback = function() callback = function()
os.execute("station-shortcuts") os.execute 'station-shortcuts'
vim.notify("Shortcuts updated!", vim.log.levels.INFO) vim.notify('Shortcuts updated!', vim.log.levels.INFO)
end, end,
}) })
local configs = { local configs = {
{ {
path = os.getenv("HOME") .. "/.config/nixos", path = os.getenv 'HOME' .. '/.config/nixos',
worktree = nil, worktree = nil,
git_dir = nil, git_dir = nil,
track_untracked = false, track_untracked = false,
force_add = false, force_add = false,
}, },
{ {
path = os.getenv("HOME") .. "/.config/nvim", path = os.getenv 'HOME' .. '/.config/nvim',
worktree = nil, worktree = nil,
git_dir = nil, git_dir = nil,
track_untracked = false, track_untracked = false,
force_add = false, force_add = false,
}, },
{ {
path = os.getenv("HOME"), path = os.getenv 'HOME',
worktree = os.getenv("HOME"), worktree = os.getenv 'HOME',
git_dir = os.getenv("HOME") .. "/.config/dotfiles/.git", git_dir = os.getenv 'HOME' .. '/.config/dotfiles/.git',
track_untracked = true, track_untracked = true,
force_add = true, -- Handles ignored files in dotfiles force_add = true, -- Handles ignored files in dotfiles
include_dirs = { ".config", ".local/bin", ".local/share" }, include_dirs = { '.config', '.local/bin', '.local/share' },
}, },
} }
local function get_git_status(config) local function get_git_status(config)
local base = "git" local base = 'git'
if config.git_dir and config.worktree then if config.git_dir and config.worktree then
base = string.format("git --git-dir=%s --worktree=%s", config.git_dir, config.worktree) base = string.format('git --git-dir=%s --worktree=%s', config.git_dir, config.worktree)
end end
-- Check modified and untracked (including ignored if force_add is true) -- Check modified and untracked (including ignored if force_add is true)
local cmd = base .. " status --porcelain" local cmd = base .. ' status --porcelain'
if config.force_add then if config.force_add then
cmd = cmd .. " --ignored" cmd = cmd .. ' --ignored'
end end
local handle = io.popen(cmd) local handle = io.popen(cmd)
local result = handle:read("*a") local result = handle:read '*a'
handle:close() handle:close()
local has_changes = false local has_changes = false
for line in result:gmatch("[^\r\n]+") do for line in result:gmatch '[^\r\n]+' do
local status = line:sub(1, 2) local status = line:sub(1, 2)
local file = line:sub(4) local file = line:sub(4)
if status:match("[MAR]") then if status:match '[MAR]' then
has_changes = true has_changes = true
elseif (status == "??" or status == "!!") and config.track_untracked then elseif (status == '??' or status == '!!') and config.track_untracked then
if config.include_dirs then if config.include_dirs then
for _, dir in ipairs(config.include_dirs) do for _, dir in ipairs(config.include_dirs) do
if file:sub(1, #dir) == dir then if file:sub(1, #dir) == dir then
@@ -202,7 +202,7 @@ local function get_git_status(config)
return has_changes, base return has_changes, base
end end
vim.api.nvim_create_autocmd("VimLeavePre", { vim.api.nvim_create_autocmd('VimLeavePre', {
callback = function() callback = function()
local cwd = vim.fn.getcwd() local cwd = vim.fn.getcwd()
@@ -211,17 +211,17 @@ vim.api.nvim_create_autocmd("VimLeavePre", {
local has_changes, git_base = get_git_status(config) local has_changes, git_base = get_git_status(config)
if has_changes then if has_changes then
local confirm = vim.fn.confirm("Uncommitted changes in managed path. Commit?", "&Yes\n&No", 2) local confirm = vim.fn.confirm('Uncommitted changes in managed path. Commit?', '&Yes\n&No', 2)
if confirm == 1 then if confirm == 1 then
local msg = vim.fn.input("Commit message: ", "chore: update files") local msg = vim.fn.input('Commit message: ', 'chore: update files')
if msg ~= "" then if msg ~= '' then
msg = "Update files" msg = 'Update files'
end end
local add_cmd = " add -A" local add_cmd = ' add -A'
os.execute(git_base .. add_cmd) os.execute(git_base .. add_cmd)
os.execute(git_base .. " commit -m " .. vim.fn.shellescape(msg)) os.execute(git_base .. ' commit -m ' .. vim.fn.shellescape(msg))
os.execute(git_base .. " push") os.execute(git_base .. ' push')
print("\nChanges committed.") print '\nChanges committed.'
end end
end end
break break
@@ -230,5 +230,5 @@ vim.api.nvim_create_autocmd("VimLeavePre", {
end, end,
}) })
require("helpers").edit_cf("a", "/lua/autocmd.lua") require('helpers').edit_cf('a', '/lua/autocmd.lua')