44 Commits

Author SHA1 Message Date
869be617bf parrot: add F12 keymap to toggle chat 2025-12-10 09:50:27 +02:00
fddc6b8ee1 blink: enable friendly-snippets 2025-12-10 09:48:31 +02:00
70dfeab75c parrot: replace input with buffer instead of ui.input 2025-12-10 09:48:16 +02:00
7dad3514e0 parrot: update models 2025-12-10 09:48:04 +02:00
cd7f789302 fix C-l keybind 2025-12-10 09:38:27 +02:00
405ec5da4f remove vim-helm 2025-12-09 10:22:11 +02:00
788ef34c04 upgrade plugins 2025-12-09 10:21:56 +02:00
a44a75b745 Revert "upgrade nvim plugins"
This reverts commit 74e77ca34a.
2025-12-08 16:56:33 +02:00
74e77ca34a upgrade nvim plugins 2025-12-06 15:22:11 +02:00
a4a48adc08 upgrade blink, switch to C-n for completion 2025-12-06 15:19:33 +02:00
3dbb63738b fugitive keymaps 2025-12-03 12:45:48 +02:00
3c768051f5 json ftplugin 2025-12-03 12:44:21 +02:00
39b68e0d54 restructure snippets 2025-12-03 12:44:11 +02:00
24bb947547 advanced_grep: allow looking for directories or files 2025-11-04 10:25:00 +02:00
9d9934f133 add testing directory 2025-11-04 10:09:43 +02:00
7e7a4a5543 fix advanced search auto globbing feature 2025-11-04 10:02:32 +02:00
f38e7720e1 dadbod ui location, enable completion for mysql 2025-10-24 10:13:10 +03:00
0b756ba15f replace helm-ls configuration with the nvim 0.11 2025-10-24 10:12:46 +03:00
bd6f9a6279 replace selected text keymap 2025-10-24 10:11:40 +03:00
6abfea8c60 fix git filepattern for treesitter 2025-10-24 10:11:25 +03:00
0e4c1c54c4 https://github.com/neovim/neovim/issues/22696
remove diffopt to avoid bad experience in 3-way merges
2025-10-24 10:10:24 +03:00
42ca780fac parrot: reformat 2025-10-15 10:13:22 +03:00
89a49ccc5d nvim: explicitly set winborder to empty string for now 2025-10-15 10:13:05 +03:00
cd2434ca93 oil: restore border 2025-10-15 10:12:37 +03:00
fed56619b9 blink-cmp: upgrade to 1.7.0 2025-10-15 09:55:40 +03:00
03492410b0 telescope: refactor search panels and how they handle hidden files 2025-10-15 09:46:28 +03:00
c575f7b67e mini-pairs: remove 2025-10-13 17:42:58 +03:00
99707245a6 telescope: replace line_grep with advanced_grep 2025-10-13 17:42:48 +03:00
79a572e033 oil: formatting 2025-10-13 17:42:38 +03:00
2178d4f312 obsidian: disable legacy commands 2025-10-13 17:42:27 +03:00
d01d304a3e markdown: replace icons for headings 2025-10-13 17:42:15 +03:00
af9644740e harpoon: enable extensions 2025-10-13 17:42:04 +03:00
3cd2838ebf treesitter: update to the main branch (1.0) 2025-10-13 17:41:50 +03:00
ba7948b5c2 snippets: add fluxcd snippet 2025-10-13 17:37:31 +03:00
e5428a7eb3 add galaxy folders to telescope exclude list 2025-09-22 16:03:40 +03:00
d9deabce05 update parrot models 2025-09-22 16:03:33 +03:00
23b0bedf0e set wrap for markdown files 2025-09-22 16:03:22 +03:00
8335cbbaec update parrot 2025-09-03 15:03:27 +03:00
9a15e2a905 add Gcm command 2025-09-03 14:53:17 +03:00
da47eb3177 install tabby for a nicer tab names 2025-09-01 10:49:31 +03:00
8b74702fb4 configure neotree a bit more 2025-09-01 10:49:18 +03:00
4aa3e696b8 install dadbod and neotree 2025-09-01 10:23:03 +03:00
0ba639e806 add on_attach to the gitsigns to get keymaps I need 2025-08-28 14:30:35 +03:00
ca193e334a update plugins, install illuminate 2025-08-28 14:30:19 +03:00
32 changed files with 684 additions and 399 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
lua/testing

7
after/ftplugin/json.lua Normal file
View File

@@ -0,0 +1,7 @@
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.expandtab = true
vim.opt_local.conceallevel = 0

View File

@@ -1,2 +1,3 @@
vim.opt_local.conceallevel = 2
vim.opt.wrap = true

View File

@@ -1,44 +1,49 @@
{
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"blink-ripgrep.nvim": { "branch": "main", "commit": "65a3c6974fe310ee457f79b81ec72b64d0ec02f1" },
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
"blink-ripgrep.nvim": { "branch": "main", "commit": "64e26b597303d9ed175f8ed832df8328731b93cd" },
"blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"fidget.nvim": { "branch": "main", "commit": "4ec7bed6c86b671ddde03ca1b227343cfa3e65fa" },
"fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"fzf-lua": { "branch": "main", "commit": "5c40d45bb37ad6355b1e028daa127dfe22be6857" },
"gitsigns.nvim": { "branch": "main", "commit": "8270378ab83540b03d09c0194ba3e208f9d0cb72" },
"gruvbox.nvim": { "branch": "main", "commit": "58a2cda2e953a99e2f87c12b7fb4602da4e0709c" },
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" },
"hererocks": { "branch": "master", "commit": "f4cc0b16619b9d9d59c92636c5b5e7c06dc7c082" },
"fzf-lua": { "branch": "main", "commit": "43bda24f711e0c13428f16056002aebc20b38e04" },
"gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" },
"gruvbox.nvim": { "branch": "main", "commit": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437" },
"harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
"hererocks": { "branch": "master", "commit": "f540b58acb0952bc82f5465b3c45999d2fe39ece" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "844d247d998c2f9a6a3baad8bb9748edc55ce69f" },
"mason.nvim": { "branch": "main", "commit": "9e25c98d4826998460926f8c5c2284848d80ae89" },
"mini.pairs": { "branch": "main", "commit": "1e1ca3f60f58d4050bf814902b472eec9963a5dd" },
"none-ls.nvim": { "branch": "main", "commit": "46f2713c88a0b4e4bf134b59577659851ddd31cf" },
"lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "c55bd8a8fb191e24176c206a7af1dd51ce7276a5" },
"mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
"none-ls.nvim": { "branch": "main", "commit": "5abf61927023ea83031753504adb19630ba80eef" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lspconfig": { "branch": "master", "commit": "77d3fdfb3554632c7a3b101ded643d422de7626f" },
"nvim-navic": { "branch": "master", "commit": "f887d794a0f4594882814d7780980a949200a238" },
"nvim-lspconfig": { "branch": "master", "commit": "5bfcc89fd155b4ffc02d18ab3b7d19c2d4e246a7" },
"nvim-navic": { "branch": "master", "commit": "7d914a39a1ef8f4e22c2c4381abeef7c556f5a13" },
"nvim-sops": { "branch": "main", "commit": "cb2209562d00ef8c6c88bdec836d9edb8fbb96ef" },
"nvim-surround": { "branch": "main", "commit": "7a7a78a52219a3312c1fcabf880cea07a7956a5f" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-ufo": { "branch": "main", "commit": "80fe8215ba566df2fbf3bf4d25f59ff8f41bc0e1" },
"nvim-web-devicons": { "branch": "master", "commit": "3362099de3368aa620a8105b19ed04c2053e38c0" },
"obsidian.nvim": { "branch": "main", "commit": "705cc9b4f66eca1e54040ac819102e80a32896d3" },
"oil.nvim": { "branch": "master", "commit": "bbad9a76b2617ce1221d49619e4e4b659b3c61fc" },
"parrot.nvim": { "branch": "main", "commit": "0477748832812707e53db078d0180299a0c15d6c" },
"nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" },
"nvim-treesitter": { "branch": "main", "commit": "f47f549f74cea5d5f25a5205c9e127cd882f1d20" },
"nvim-ufo": { "branch": "main", "commit": "72d54c31079d38d8dfc5456131b1d0fb5c0264b0" },
"nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" },
"obsidian.nvim": { "branch": "main", "commit": "6939efc2c7145cf83644192c588eccd935b57826" },
"oil.nvim": { "branch": "master", "commit": "cbcb3f997f6f261c577b943ec94e4ef55108dd95" },
"parrot.nvim": { "branch": "main", "commit": "dcae923c7070431c8cb628b19594ab640168684c" },
"plenary": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"render-markdown.nvim": { "branch": "main", "commit": "5df2eab599e06c48d04ea7e89cbaa3cdb4e09538" },
"render-markdown.nvim": { "branch": "main", "commit": "b2b135347e299ffbf7f4123fb7811899b0c9f4b8" },
"search.nvim": { "branch": "main", "commit": "7b8f2315d031be73e14bc2d82386dfac15952614" },
"statuscol.nvim": { "branch": "main", "commit": "c46172d0911aa5d49ba5f39f4351d1bb7aa289cc" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"undotree": { "branch": "master", "commit": "28f2f54a34baff90ea6f4a735ef1813ad875c743" },
"tabby.nvim": { "branch": "main", "commit": "b3affa6db7eab80fca2a2db5b73b473144507039" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
"telescope.nvim": { "branch": "master", "commit": "e69b434b968a33815e2f02a5c7bd7b8dd4c7d4b2" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
"undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" },
"vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" },
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
"vim-dadbod-ui": { "branch": "master", "commit": "48c4f271da13d380592f4907e2d1d5558044e4e5" },
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" },
"vim-helm": { "branch": "master", "commit": "cc5ac22444332381f38084a6c7f023c25eef6201" }
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }
}

View File

@@ -3,6 +3,7 @@ local augroup = vim.api.nvim_create_augroup
local CrentistGroup = augroup('Crentist', {})
local OnSaveGroup = augroup('CrentistOnSave', {})
local CrentistTreeSitter = augroup('CrentistTreeSitter', {})
local builtin = require('telescope.builtin')
@@ -18,8 +19,8 @@ autocmd('LspAttach', {
vim.keymap.set("n", "<leader>vrr", function() builtin.lsp_references() end, opts)
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
vim.keymap.set("n", "[d", function() vim.diagnostic.jump({ count = 1 }) end, opts)
vim.keymap.set("n", "]d", function() vim.diagnostic.jump({ count = -1 }) end, opts)
vim.keymap.set("n", "<M-F>", function() vim.lsp.buf.format() end, opts)
end
})
@@ -49,11 +50,38 @@ autocmd({ 'BufWritePre' }, {
end,
})
autocmd({'FileType'}, {
autocmd({ 'FileType' }, {
group = CrentistGroup,
pattern = { 'json' },
callback = function (e)
vim.keymap.set("n", "<M-F>", function() vim.cmd('silent %!jq .') end, {buffer = e.buf})
callback = function(e)
vim.keymap.set("n", "<M-F>", function() vim.cmd('silent %!jq .') end, { buffer = e.buf })
end
})
autocmd({ 'FileType' }, {
group = CrentistTreeSitter,
pattern = {
'sh',
'javascript',
'typescript',
'python',
'go',
'terraform*',
'yaml',
'helm',
'tmux',
'lua',
'vim',
'vimdoc',
'latex',
'json',
'yaml*',
'git.+',
'make',
'markdown*',
},
callback = function(e)
vim.treesitter.start(e.buf)
end
})

View File

@@ -3,6 +3,6 @@ require("crentist.set")
require("crentist.lazy_init")
require("crentist.autocmd")
require("crentist.filetype")
require("crentist.luasnip")
require("crentist.snippets")
require("crentist.null-ls")

View File

@@ -7,7 +7,7 @@ return {
{ 'L3MON4D3/LuaSnip', version = 'v2.*' }
},
-- use a release tag to download pre-built binaries
version = 'v1.6.*',
version = 'v1.8.*',
---@module 'blink-cmp'
---@type blink.cmp.Config
@@ -35,12 +35,7 @@ return {
}
},
completion = { list = { selection = { preselect = false, auto_insert = true } } },
keymap = {
preset = 'enter',
['<Tab>'] = { 'select_next', 'snippet_forward', 'fallback' },
['<S-Tab>'] = { 'select_prev', 'snippet_backward', 'fallback' },
},
keymap = { preset = 'enter' },
appearance = {
use_nvim_cmp_as_default = true,
nerd_font_variant = 'mono'
@@ -48,6 +43,10 @@ return {
sources = {
default = { 'lazydev', 'lsp', 'snippets', 'ripgrep', 'path', 'buffer' },
per_filetype = {
sql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' },
mysql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' },
},
providers = {
lazydev = {
name = 'LazyDev',
@@ -88,6 +87,14 @@ return {
return items
end,
},
dadbod = {
name = 'Dadbod', module = 'vim_dadbod_completion.blink'
},
snippets = {
opts = {
friendly_snippets = true,
}
},
},
},

View File

@@ -0,0 +1,20 @@
return {
'kristijanhusak/vim-dadbod-ui',
dependencies = {
{ 'tpope/vim-dadbod', lazy = true },
{ 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true }, -- Optional
},
cmd = {
'DBUI',
'DBUIToggle',
'DBUIAddConnection',
'DBUIFindBuffer',
},
init = function()
-- Your DBUI configuration
vim.g.db_ui_use_nerd_fonts = 1
vim.g.db_ui_auto_execute_table_helpers = 1
vim.g.db_ui_win_position = 'left'
end,
}

View File

@@ -2,6 +2,9 @@ return {
'tpope/vim-fugitive',
config = function()
vim.keymap.set('n', "<leader>gs", vim.cmd.Git)
vim.keymap.set('n', "<leader><leader>gl", function () vim.cmd.Git({ 'pull' }) end)
vim.api.nvim_create_user_command('Gcm', function() vim.cmd.Git({ 'switch main' }) end, {})
local Crentist_Fugitive = vim.api.nvim_create_augroup('Crentist_Fugitive', {})
@@ -14,20 +17,16 @@ return {
return
end
local bufnr = vim.api.nvim_get_current_buf()
local opts = {buffer = bufnr, remap = false}
local SwitchToMainbufnr = vim.api.nvim_get_current_buf()
local opts = { buffer = bufnr, remap = false }
vim.keymap.set('n', "<leader>p", function()
vim.cmd.Git('push')
end, opts)
-- rebase always
vim.keymap.set('n', "<leader>P", function()
vim.cmd.Git({'pull', '--rebase'})
vim.cmd.Git({ 'pull', '--rebase' })
end, opts)
-- NOTE: It allows me to easily set the branch i am pushing and any tracking
-- needed if i did not set the branch up correctly
vim.keymap.set('n', "<leader>t", ":Git push -u origin ", opts);
end,
})
end

View File

@@ -1,11 +1,74 @@
return {
'lewis6991/gitsigns.nvim',
---@module 'gitsigns.config'
---@type Gitsigns.Config
opts = {
current_line_blame = true,
attach_to_untracked = true,
current_line_blame_opts = {
delay = 500,
ignore_whitespace = true,
virt_text_pos = 'right_align',
},
on_attach = function(bufnr)
local gitsigns = require('gitsigns')
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then
vim.cmd.normal({ ']c', bang = true })
else
gitsigns.nav_hunk('next')
end
end)
map('n', '[c', function()
if vim.wo.diff then
vim.cmd.normal({ '[c', bang = true })
else
gitsigns.nav_hunk('prev')
end
end)
-- Actions
map('n', '<leader>hs', gitsigns.stage_hunk)
map('n', '<leader>hr', gitsigns.reset_hunk)
map('v', '<leader>hs', function()
gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end)
map('v', '<leader>hr', function()
gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end)
map('n', '<leader>hS', gitsigns.stage_buffer)
map('n', '<leader>hR', gitsigns.reset_buffer)
map('n', '<leader>hp', gitsigns.preview_hunk)
map('n', '<leader>hi', gitsigns.preview_hunk_inline)
map('n', '<leader>hd', gitsigns.diffthis)
map('n', '<leader>hD', function()
gitsigns.diffthis('~')
end)
map('n', '<leader>hQ', function() gitsigns.setqflist('all') end)
map('n', '<leader>hq', gitsigns.setqflist)
-- Toggles
map('n', '<leader>tb', gitsigns.toggle_current_line_blame)
map('n', '<leader>tw', gitsigns.toggle_word_diff)
-- Text object
map({ 'o', 'x' }, 'ih', gitsigns.select_hunk)
end
}
}

View File

@@ -4,8 +4,13 @@ return {
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
local harpoon = require('harpoon')
local extensions = require('harpoon.extensions')
harpoon:setup()
harpoon:setup({
settings = { sync_on_ui_close = true }
})
harpoon:extend(extensions.builtins.navigate_with_number())
harpoon:extend(extensions.builtins.highlight_current_file())
-- basic telescope configuration
local conf = require('telescope.config').values

View File

@@ -0,0 +1,8 @@
return {
'RRethy/vim-illuminate',
config = function ()
local illuminate = require('illuminate')
illuminate.configure()
end
}

View File

@@ -8,7 +8,6 @@ return {
'L3MON4D3/LuaSnip',
'j-hui/fidget.nvim',
'rafamadriz/friendly-snippets',
{ 'towolf/vim-helm', ft = 'helm' },
{
'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files
@@ -78,27 +77,14 @@ return {
}
})
-- leave it until it works with lsp.config
lspconfig.helm_ls.setup {
vim.lsp.config('helm-ls', {
settings = {
['helm-ls'] = {
yamlls = {
enabled = false,
path = "yaml-language-server",
helmLint = { enabled = false },
yamlls = { enabled = false },
},
}
}
}
}
-- vim.lsp.config('helm-ls', {
-- settings = {
-- ['helm-ls'] = {
-- yamlls = {
-- path = "yaml-language-server",
-- enabled = false,
-- }
-- }
-- }
-- })
})
vim.lsp.config('terraformls', {
filetypes = { 'terraform', 'terraform-vars', 'tf' }

View File

@@ -17,7 +17,8 @@ return {
lightgray = '#504945',
inactivegray = '#7c6f64',
}
require('lualine').setup({
require('lualine').setup(
{
options = {
theme = {
normal = {

View File

@@ -6,6 +6,9 @@ return {
opts = {
completions = {
blink = { enabled = true }
},
heading = {
icons = { '󰬺 ', '󰬻 ', '󰬼 ', '󰬽 ', '󰬾 ', '󰬿 ' },
}
},
}

View File

@@ -0,0 +1,27 @@
return {
{
'nvim-neo-tree/neo-tree.nvim',
branch = 'v3.x',
dependencies = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-tree/nvim-web-devicons', -- optional, but recommended
},
lazy = false, -- neo-tree will lazily load itself
---@module 'neo-tree'
---@type neotree.Config
opts = {
filesystem = {
hijack_netrw_behavior = 'disabled',
filtered_items = {
hide_dotfiles = false,
never_show = {'.DS_Store'},
},
},
window = {
position = 'current',
}
},
}
}

View File

@@ -6,8 +6,8 @@ return {
'nvim-lua/plenary.nvim',
},
keys = {
{ '<leader>ot', '<cmd>ObsidianToday<CR>', desc = "Open today's daily note" },
{ '<leader>os', '<cmd>ObsidianQuickSwitch<CR>', desc = 'Search notes in my vault and switch to selected' },
{ '<leader>ot', '<cmd>Obsidian today<CR>', desc = "Open today's daily note" },
{ '<leader>os', '<cmd>Obsidian quick_switch<CR>', desc = 'Search notes in my vault and switch to selected' },
},
mappings = {
-- Overrides the 'gf' mapping to work on markdown/wiki links within your vault.
@@ -33,6 +33,7 @@ return {
},
},
opts = {
legacy_commands = false,
workspaces = {
{
name = 'tech-work-hobby',
@@ -51,7 +52,10 @@ return {
completion = {
blink = true,
nvim_cmp = false,
}
},
ui = {
enable = false,
},
},
}

View File

@@ -1,20 +1,28 @@
return {
'stevearc/oil.nvim',
-- Optional dependencies
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {},
config = function()
require('oil').setup({
opts = {
view_options = {
show_hidden = true,
},
float = {
border = 'rounded',
},
confirmation = {
border = 'rounded',
},
progress = {
border = 'rounded',
},
keymaps_help = {
border = 'rounded',
},
keymaps = {
['<C-h>'] = false,
['<C-j>'] = false,
['<C-k>'] = false,
['<C-l>'] = false,
}
})
end
},
}

View File

@@ -1,56 +0,0 @@
return {
'echasnovski/mini.pairs',
event = 'VeryLazy',
opts = {
modes = { insert = true, command = true, terminal = false },
-- skip autopair when next character is one of these
skip_next = [=[[%w%%%'%[%"%.%`%$]]=],
-- skip autopair when the cursor is inside these treesitter nodes
skip_ts = { "string" },
-- skip autopair when next character is closing pair
-- and there are more closing pairs than opening pairs
skip_unbalanced = true,
-- better deal with markdown code blocks
markdown = true,
},
config = function(_, opts)
local pairs = require("mini.pairs")
pairs.setup(opts)
local open = pairs.open
pairs.open = function(pair, neigh_pattern)
if vim.fn.getcmdline() ~= "" then
return open(pair, neigh_pattern)
end
local o, c = pair:sub(1, 1), pair:sub(2, 2)
local line = vim.api.nvim_get_current_line()
local cursor = vim.api.nvim_win_get_cursor(0)
local next = line:sub(cursor[2] + 1, cursor[2] + 1)
local before = line:sub(1, cursor[2])
if opts.markdown and o == "`" and vim.bo.filetype == "markdown" and before:match("^%s*``") then
return "`\n```" .. vim.api.nvim_replace_termcodes("<up>", true, true, true)
end
if opts.skip_next and next ~= "" and next:match(opts.skip_next) then
return o
end
if opts.skip_ts and #opts.skip_ts > 0 then
local ok, captures = pcall(vim.treesitter.get_captures_at_pos, 0, cursor[1] - 1,
math.max(cursor[2] - 1, 0))
for _, capture in ipairs(ok and captures or {}) do
if vim.tbl_contains(opts.skip_ts, capture.capture) then
return o
end
end
end
if opts.skip_unbalanced and next == c and c ~= o then
local _, count_open = line:gsub(vim.pesc(pair:sub(1, 1)), "")
local _, count_close = line:gsub(vim.pesc(pair:sub(2, 2)), "")
if count_close > count_open then
return o
end
end
return open(pair, neigh_pattern)
end
end,
}

View File

@@ -1,19 +1,19 @@
return {
'frankroeder/parrot.nvim',
version = "2.1.0",
version = '2.3.0',
dependencies = { 'ibhagwan/fzf-lua', 'nvim-lua/plenary.nvim' },
opts = {
providers = {
anthropic = {
name = "anthropic",
endpoint = "https://api.anthropic.com/v1/messages",
model_endpoint = "https://api.anthropic.com/v1/models",
api_key = { "/usr/local/bin/sops", "--config", "/dev/null", "-d", vim.fn.expand("$HOME") .. "/.claude-api" },
name = 'anthropic',
endpoint = 'https://api.anthropic.com/v1/messages',
model_endpoint = 'https://api.anthropic.com/v1/models',
api_key = { '/usr/local/bin/sops', "--config", "/dev/null", "-d", vim.fn.expand("$HOME") .. "/.claude-api" },
headers = function(self)
return {
["Content-Type"] = "application/json",
["x-api-key"] = self.api_key,
["anthropic-version"] = "2023-06-01",
['Content-Type'] = "application/json",
['x-api-key'] = self.api_key,
['anthropic-version'] = "2023-06-01",
}
end,
params = {
@@ -21,16 +21,14 @@ return {
command = { max_tokens = 4096 },
},
models = {
"claude-sonnet-4-20250514",
"claude-3-7-sonnet-20250219",
"claude-3-5-sonnet-20241022",
"claude-3-5-haiku-20241022",
'claude-opus-4-5-20251101',
'claude-haiku-4-5-20251001',
},
preprocess_payload = function(payload)
for _, message in ipairs(payload.messages) do
message.content = message.content:gsub("^%s*(.-)%s*$", "%1")
message.content = message.content:gsub('^%s*(.-)%s*$', "%1")
end
if payload.messages[1] and payload.messages[1].role == "system" then
if payload.messages[1] and payload.messages[1].role == 'system' then
-- remove the first message that serves as the system prompt as anthropic
-- expects the system prompt to be part of the API call body and not the messages
payload.system = payload.messages[1].content
@@ -39,7 +37,8 @@ return {
return payload
end,
}
}
},
user_input_ui = "buffer",
}
}

View File

@@ -0,0 +1,11 @@
-- I literally need this for Dadbod for a nicer name in tabs. I don't use tabs
-- in any other way
return {
'nanozuki/tabby.nvim',
---@module 'tabby'
---@type TabbyConfig
opts = {
-- configs...
},
}

View File

@@ -22,10 +22,7 @@ return {
telescope.setup({
defaults = {
vimgrep_arguments = vimgrep_arguments,
file_ignore_patterns = {
'node_modules',
'.git/'
}
file_ignore_patterns = { "^.git/" }
},
extensions = {
fzf = {}
@@ -43,8 +40,8 @@ return {
prev = '<S-Tab>'
},
tabs = {
{ name = 'Files', tele_func = builtin.find_files, tele_opts = { no_ignore = true, hidden = true } },
{ name = 'Grep', tele_func = builtin.live_grep },
{ name = 'Files', tele_func = builtin.find_files, tele_opts = { no_ignore = false, hidden = true, } },
{ name = 'Advanced Grep', tele_func = require('crentist.telescope.advanced_grep').advanced_grep },
{ name = 'Buffers', tele_func = builtin.buffers },
},
append_tabs = { -- append_tabs will add the provided tabs to the default ones
@@ -55,6 +52,21 @@ return {
return vim.fn.isdirectory('.git') == 1
end
},
{
'Stash',
builtin.git_stash,
available = function()
return vim.fn.isdirectory('.git') == 1
end
},
{
'All files',
builtin.find_files,
tele_opts = { no_ignore = true, hidden = true },
available = function()
return vim.fn.isdirectory('.git') == 1
end
}
},
})

View File

@@ -1,32 +1,50 @@
return {
'nvim-treesitter/nvim-treesitter',
branch='master',
branch = 'main',
lazy = false,
build = ":TSUpdate",
config = function()
require("nvim-treesitter.configs").setup({
-- A list of parser names, or "all" (the five listed parsers should always be installed)
ensure_installed = { "bash", "javascript", "typescript", "python", "go", "terraform", "hcl", "helm", "jq", "yaml", "tmux", "lua", "vim", "vimdoc" },
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
highlight = {
enable = true,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
},
})
local ts = require("nvim-treesitter")
local installed_parsers = {
"bash",
"javascript",
"typescript",
"python",
"go",
"terraform",
"hcl",
"helm",
"jq",
"yaml",
"tmux",
"lua",
"vim",
"vimdoc",
"latex",
"json",
"yaml",
"git_config",
"git_rebase",
"gitattributes",
"gitcommit",
"gitignore",
"make",
"markdown_inline",
"nginx",
"properties",
"ini",
"ssh_config",
"ssh_client_config",
"editorconfig",
"passwd",
"regex",
"sql",
"sqlite",
"toml",
"xml",
}
ts.setup()
ts.install(installed_parsers)
end
}

View File

@@ -1,128 +0,0 @@
-- luasnip.lua
local ls = require('luasnip')
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmt = require("luasnip.extras.fmt").fmt
vim.keymap.set({ "i", "s" }, "<C-l>", function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end, { desc = "Snippet next argument", silent = true })
--------------------
-- Snippets for LUA
--------------------
ls.add_snippets('lua', {
s({ name = 'LuaSnip Snippet', trig = 'snipf' },
fmt([[
s({ name='<name>', trig='<trig>'},
fmt(<template>,
{ <inputs> },
{ <opts> }
)
),
]], {
name = i(1, 'name'),
trig = i(2, 'trig'),
template = i(3, '[[]]'),
inputs = i(4, 'nodes'),
opts = i(5,
'opts')
},
{ delimiters = '<>' }
)
),
s({ name = 'Add snippets block', trig = 'add_snip' },
fmt([[
ls.add_snippets('<filetype>', {
<snippets>
})
]],
{ filetype = i(1, 'Filetype'), snippets = i(2, 'Snippets') },
{ delimiters = '<>' }
)
),
})
--------------------
-- Generic snippets
--------------------
local function com_string(_, snip, to_multiply)
local comment_string = vim.bo.commentstring
local repeats = snip.captures[1]
local result = comment_string:gsub("%%s", ""):gsub(" ", "")
if to_multiply then
return string.sub(
string.rep(result, repeats),
0,
repeats
)
end
return result
end
ls.add_snippets('all', {
s({ name = 'Comment block', trig = '#com(%d+)', regTrig = true },
fmt([[
{comment_block}
{comment} {comment_text}
{comment_block}
]],
{
comment_block = f(com_string, {}, { user_args = { true } }),
comment = f(com_string, {}, { user_args = { false } }),
comment_text = i(1,
'Comment')
}
)
),
})
--------------------
-- Terraform
--------------------
ls.add_snippets('terraform', {
s({ name = 'data_assume', trig = 'tf_assume' },
fmt([[
data "aws_iam_policy_document" "<name>" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["<service>.amazonaws.com"]
}
}
}
]],
{
name = i(1, 'assume'),
service = i(2, 'service')
},
{ delimiters = '<>' }
)
),
})
------------------------------
-- YAML
------------------------------
local yaml_schema_snippet = s(
{ name = 'yaml_schema', trig = 'yaml_schema' },
fmt([[
{comment} yaml-language-server: $schema={path}
]],
{
path = i(1, 'path'),
comment = f(com_string, {}, { user_args = { false } }),
}
)
)
ls.add_snippets('yaml', { yaml_schema_snippet })
ls.add_snippets('helm', { yaml_schema_snippet })

View File

@@ -2,6 +2,8 @@ vim.g.mapleader = " "
vim.keymap.set("n", "<leader>Pv", ":Oil .<CR>")
vim.keymap.set("n", "<leader>pv", ":Oil<CR>")
vim.keymap.set("n", "<leader>pt", ":Neotree .<CR>")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
@@ -30,6 +32,8 @@ vim.keymap.set("n", "Q", "<nop>")
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("n", "<leader>S", [[:%s/\<<C-r><C-a>\>/<C-r><C-a>/gI<Left><Left><Left>]])
vim.keymap.set("v", "<leader>s", [["vy:%s/\<<C-r>v\>/<C-r>v/gI<Left><Left><Left>]])
vim.keymap.set("n", "<C-s>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
vim.keymap.set("n", "<leader><leader>x", "<cmd>source %<CR>")
@@ -39,3 +43,5 @@ vim.keymap.set("v", "<leader>x", ":lua<CR>")
vim.keymap.set("n", "<C-M-j>", "<cmd>cnext<CR>")
vim.keymap.set("n", "<C-M-k>", "<cmd>cprev<CR>")
vim.keymap.set("n", "<F12>", "<cmd>PrtChatToggle<CR>")

View File

@@ -8,6 +8,8 @@ vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.o.winborder = ''
vim.opt.smartindent = true
vim.opt.wrap = false
@@ -30,3 +32,5 @@ vim.opt.updatetime = 50
vim.opt.colorcolumn = "80"
vim.opt.diffopt = 'internal,filler,closeoff,algorithm:histogram'

View File

@@ -0,0 +1,45 @@
local ls = require('luasnip')
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmt = require('luasnip.extras.fmt').fmt
vim.keymap.set({ 'i', 's' }, '<C-l>', function()
if ls.expand_or_jumpable() then
ls.expand_or_jump()
end
end, { desc = 'Snippet next argument', silent = true })
local function com_string(_, snip, to_multiply)
local comment_string = vim.bo.commentstring
local repeats = snip.captures[1]
local result = comment_string:gsub('%%s', ''):gsub(' ', '')
if to_multiply then
return string.sub(
string.rep(result, repeats),
0,
repeats
)
end
return result
end
ls.add_snippets('all', {
s({ name = 'Comment block', trig = '#com(%d+)', regTrig = true },
fmt([[
{comment_block}
{comment} {comment_text}
{comment_block}
]],
{
comment_block = f(com_string, {}, { user_args = { true } }),
comment = f(com_string, {}, { user_args = { false } }),
comment_text = i(1,
'Comment')
}
)
),
})

View File

@@ -0,0 +1,5 @@
require('crentist.snippets.common')
require('crentist.snippets.lua')
require('crentist.snippets.terraform')
require('crentist.snippets.yaml')

View File

@@ -0,0 +1,38 @@
local ls = require('luasnip')
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmt = require('luasnip.extras.fmt').fmt
ls.add_snippets('lua', {
s({ name = 'LuaSnip Snippet', trig = 'snipf' },
fmt([[
s({ name='<name>', trig='<trig>'},
fmt(<template>,
{ <inputs> },
{ <opts> }
)
),
]], {
name = i(1, 'name'),
trig = i(2, 'trig'),
template = i(3, '[[]]'),
inputs = i(4, 'nodes'),
opts = i(5,
'opts')
},
{ delimiters = '<>' }
)
),
s({ name = 'Add snippets block', trig = 'add_snip' },
fmt([[
ls.add_snippets('<filetype>', {
<snippets>
})
]],
{ filetype = i(1, 'Filetype'), snippets = i(2, 'Snippets') },
{ delimiters = '<>' }
)
),
})

View File

@@ -0,0 +1,29 @@
local ls = require('luasnip')
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmt = require('luasnip.extras.fmt').fmt
ls.add_snippets('terraform', {
s({ name = 'data_assume', trig = 'tf_assume' },
fmt([[
data "aws_iam_policy_document" "<name>" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["<service>.amazonaws.com"]
}
}
}
]],
{
name = i(1, 'assume'),
service = i(2, 'service')
},
{ delimiters = '<>' }
)
),
})

View File

@@ -0,0 +1,64 @@
local ls = require('luasnip')
local s = ls.snippet
local i = ls.insert_node
local f = ls.function_node
local fmt = require('luasnip.extras.fmt').fmt
------------------------------
-- YAML
------------------------------
local yaml_schema_snippet = s(
{ name = 'yaml_schema', trig = 'yaml_schema' },
fmt([[
{comment} yaml-language-server: $schema={path}
]],
{
path = i(1, 'path'),
comment = f(com_string, {}, { user_args = { false } }),
}
)
)
ls.add_snippets('yaml', { yaml_schema_snippet })
ls.add_snippets('helm', { yaml_schema_snippet })
local flux_cd_kustomization = s(
{ name = 'fluxcd_kustomization', trig = 'fluxkust' },
fmt([[
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: {name}
namespace: {namespace}
spec:
interval: {interval}
path: {path}
prune: true
sourceRef:
kind: GitRepository
name: {repository_name}
]],
{
name = i(1, 'name'),
namespace = i(2, 'flux-system'),
interval = i(3, '5m'),
path = i(4, 'path'),
repository_name = i(5, 'repository_name'),
}
)
)
ls.add_snippets('yaml', { flux_cd_kustomization })
local sleep_command = s(
{ name = 'sleep_command', trig = 'sleep' },
fmt([[
command:
- /bin/sh
- -c
- while true; do sleep 3600; done
]], {})
)
ls.add_snippets('yaml', { sleep_command })

View File

@@ -0,0 +1,64 @@
local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local make_entry = require("telescope.make_entry")
local conf = require("telescope.config").values
local M = {}
local advanced_grep = function(opts)
opts = opts or {}
opts.cwd = opts.cwd or vim.uv.cwd()
local finder = finders.new_async_job({
command_generator = function(prompt)
if not prompt or prompt == "" then
return nil
end
local pieces = vim.split(prompt, " ")
local args = { "rg" }
if pieces[1] then
table.insert(args, "-e")
table.insert(args, pieces[1])
end
if pieces[2] then
table.insert(args, "-g")
local input_glob = pieces[2]
local glob = input_glob
if not input_glob:find("*", 1, true) then
glob = "*" .. input_glob .. "*"
if input_glob:find("d:", 1, true) then
glob = "**/" .. glob .. "/**"
glob = glob:gsub("d:", "")
end
end
table.insert(args, glob)
end
return vim.iter({ args, { "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case" } })
:flatten()
:totable()
end,
entry_maker = make_entry.gen_from_vimgrep(opts),
cwd = opts.cwd,
})
pickers.new(opts, {
debounce = 100,
prompt_title = "Advanced Grep",
finder = finder,
previewer = conf.grep_previewer(opts),
sorter = require("telescope.sorters").empty(),
}):find()
end
M.advanced_grep = advanced_grep
return M