Compare commits

13 Commits

Author SHA1 Message Date
Chris
bd2349c1ba Merge branch 'main' of labs.scarif.space:chris/nvim 2026-03-31 14:15:49 +01:00
Chris
b4fd6c1988 Fixing treesitter 2026-03-31 14:15:12 +01:00
8d1278b84a Fix pywal missing 2026-03-09 23:20:40 +00:00
e4a935de25 Use tokyo for fallback 2026-03-08 20:58:50 +00:00
d8732c5e2e Update files 2026-03-08 20:50:10 +00:00
ba41c9a054 Add pywal theme 2026-03-08 20:48:24 +00:00
894d2fcabf Update files 2026-03-06 17:06:16 +00:00
40adefb70c Update files 2026-03-06 17:05:20 +00:00
faea500177 Update files 2026-03-06 17:02:36 +00:00
6f74961fc6 Fix treesitter 2026-03-01 20:52:19 +00:00
cc7139c2ff Add keymap to reload file 2026-02-22 20:02:46 +00:00
Chris
bac22a5657 Comment out annoying snippets 2026-02-19 09:04:46 +00:00
20d080e223 Stuff 2026-02-15 21:35:09 +00:00
8 changed files with 204 additions and 108 deletions

View File

@@ -30,7 +30,7 @@ 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,
}) })
@@ -116,4 +116,95 @@ vim.api.nvim_create_autocmd('BufWritePost', {
end, 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 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 = " 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
end
end
end,
})
require('helpers').edit_cf('a', '/lua/autocmd.lua') require('helpers').edit_cf('a', '/lua/autocmd.lua')

View File

@@ -257,6 +257,7 @@ vim.keymap.set('n', '<Leader>sGS', '<CMD>Telescope git_stash<CR>', { desc = 'Sea
vim.keymap.set('n', '<Leader>]', '<CMD>cnext<CR>', { desc = 'Next item in quickfix list' }) vim.keymap.set('n', '<Leader>]', '<CMD>cnext<CR>', { desc = 'Next item in quickfix list' })
vim.keymap.set('n', '<Leader>[', '<CMD>cprevious<CR>', { desc = 'Previous item in quickfix list' }) vim.keymap.set('n', '<Leader>[', '<CMD>cprevious<CR>', { desc = 'Previous item in quickfix list' })
vim.keymap.set('n', 'gd', '<CMD>Telescope lsp_definitions<CR>', { desc = 'Go to definition' }) vim.keymap.set('n', 'gd', '<CMD>Telescope lsp_definitions<CR>', { desc = 'Go to definition' })
vim.keymap.set('n', '<Leader>r', '<CMD>e!<CR>', { desc = 'Reload buffer' })
local function open_test() local function open_test()

View File

@@ -4,19 +4,24 @@ return {
-- change the command in the config to whatever the name of that colorscheme is. -- 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`. -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'AlphaTechnolog/pywal.nvim',
dependencies = {
'folke/tokyonight.nvim', 'folke/tokyonight.nvim',
},
priority = 1000, -- Make sure to load this before all the other start plugins. priority = 1000, -- Make sure to load this before all the other start plugins.
config = function() config = function()
---@diagnostic disable-next-line: missing-fields ---@diagnostic disable-next-line: missing-fields
require('tokyonight').setup { 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' 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
require('pywal').setup()
end
end, end,
} }

3
lua/plugins/pywal.lua Normal file
View File

@@ -0,0 +1,3 @@
return {
'AlphaTechnolog/pywal.nvim',
}

View File

@@ -1,11 +1,11 @@
-- Highlight, edit, and navigate code -- Highlight, edit, and navigate code
return { return {
'nvim-treesitter/nvim-treesitter', 'nvim-treesitter/nvim-treesitter',
branch = 'main',
build = ':TSUpdate', build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter` -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = { config = function()
ensure_installed = { local langs = {
'bash', 'bash',
'c', 'c',
'diff', 'diff',
@@ -17,22 +17,16 @@ return {
'query', 'query',
'vim', 'vim',
'vimdoc', 'vimdoc',
}, 'php',
-- Autoinstall languages that are not installed 'yaml',
auto_install = true, }
highlight = { require('nvim-treesitter').install(langs)
enable = true,
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. vim.api.nvim_create_autocmd('FileType', {
-- If you are experiencing weird indenting issues, add the language to pattern = langs,
-- the list of additional_vim_regex_highlighting and disabled languages for indent. callback = function()
additional_vim_regex_highlighting = { 'ruby' }, vim.treesitter.start()
}, end,
indent = { enable = true, disable = { 'ruby' } }, })
}, end,
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
} }

View File

@@ -257,10 +257,12 @@ function M.apply(cwd)
end end
last_applied = name last_applied = name
local setup = PROJECTS[name] or PROJECTS.default local setup = PROJECTS[name]
if type(setup) == 'function' then if type(setup) == 'function' then
setup(dir) setup(dir)
vim.notify(('Project config loaded: %s'):format(name), vim.log.levels.INFO, { title = 'projects.lua' }) vim.notify(('Project config loaded: %s'):format(name), vim.log.levels.INFO, { title = 'projects.lua' })
else
PROJECTS.default(dir)
end end
end end

View File

@@ -38,7 +38,7 @@ return {
) )
), ),
bs(atr('t ', 'this'), fmta('this.#~', { i(0) })), -- bs(atr('t ', 'this'), fmta('this.#~', { i(0) })),
s(etr('return ', 'Add semicolon after return'), fmta('return #~;', { i(0) })), s(etr('return ', 'Add semicolon after return'), fmta('return #~;', { i(0) })),
s(etr('rt ', 'return alias'), fmta('return #~;', { i(0) })), s(etr('rt ', 'return alias'), fmta('return #~;', { i(0) })),

View File

@@ -170,7 +170,7 @@ return {
) )
), ),
s(etr('return ', 'Add semicolon after return'), fmta('return #~;', { i(0) })), s(etr('return ', 'Add semicolon after return'), fmta('return #~;', { i(0) })),
s(atr(' use ', 'Add use to function'), fmta(' use (#~)', { i(0) })), -- s(atr(' use ', 'Add use to function'), fmta(' use (#~)', { i(0) })),
s(etr('rt ', 'return alias'), fmta('return #~;', { i(0) })), s(etr('rt ', 'return alias'), fmta('return #~;', { i(0) })),
bs(atr('fn ', 'Shorthand function block'), { bs(atr('fn ', 'Shorthand function block'), {
c(1, { c(1, {