From a26816c4223401ef94410fe7c34e6310d8c5a5dc Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 17 Jul 2025 10:26:38 -0400 Subject: [PATCH 01/46] sync --- init.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/init.lua b/init.lua index b98ffc6198a..59138226a2d 100644 --- a/init.lua +++ b/init.lua @@ -671,17 +671,17 @@ require('lazy').setup({ -- - settings (table): Override the default settings passed when initializing the server. -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ local servers = { - -- clangd = {}, - -- gopls = {}, - -- pyright = {}, - -- rust_analyzer = {}, + clangd = {}, + gopls = {}, + pyright = {}, + rust_analyzer = {}, -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs -- -- Some languages (like typescript) have entire language plugins that can be useful: -- https://github.com/pmizio/typescript-tools.nvim -- -- But for many setups, the LSP (`ts_ls`) will work just fine - -- ts_ls = {}, + ts_ls = {}, -- lua_ls = { From e1aee4bb951e063890cee6f03447cc029fdd2b78 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 24 Jul 2025 12:33:19 -0400 Subject: [PATCH 02/46] things --- init.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init.lua b/init.lua index 59138226a2d..0ab86bc19bf 100644 --- a/init.lua +++ b/init.lua @@ -437,6 +437,14 @@ require('lazy').setup({ vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) + vim.keymap.set('n', 'g', builtin.git_bcommits, { desc = '[Git]' }) + vim.keymap.set('n', 'gb', builtin.git_bcommits, { desc = '[Git] Buffer Commits' }) + vim.keymap.set('n', 'gr', builtin.git_bcommits_range, { desc = '[Git] Buffer Commits Range' }) + vim.keymap.set('n', 'gc', builtin.git_commits, { desc = '[Git] Commits' }) + vim.keymap.set('n', 'gf', builtin.git_files, { desc = '[Git] Files' }) + vim.keymap.set('n', 'gt', builtin.git_stash, { desc = '[Git] Stash' }) + vim.keymap.set('n', 'gs', builtin.git_status, { desc = '[Git] Status' }) + -- Slightly advanced example of overriding default behavior and theme vim.keymap.set('n', '/', function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. From 9bae26dd5a743378aaf8418d21aca6130e72a082 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 24 Jul 2025 12:52:44 -0400 Subject: [PATCH 03/46] init lua --- init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 0ab86bc19bf..6f40edf7694 100644 --- a/init.lua +++ b/init.lua @@ -437,9 +437,10 @@ require('lazy').setup({ vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) - vim.keymap.set('n', 'g', builtin.git_bcommits, { desc = '[Git]' }) - vim.keymap.set('n', 'gb', builtin.git_bcommits, { desc = '[Git] Buffer Commits' }) + vim.keymap.set('n', 'g', '', { desc = '[Git]' }) + vim.keymap.set('n', 'gl', builtin.git_bcommits, { desc = '[Git] Buffer Commits' }) vim.keymap.set('n', 'gr', builtin.git_bcommits_range, { desc = '[Git] Buffer Commits Range' }) + vim.keymap.set('n', 'gb', builtin.git_branches, { desc = '[Git] Branches' }) vim.keymap.set('n', 'gc', builtin.git_commits, { desc = '[Git] Commits' }) vim.keymap.set('n', 'gf', builtin.git_files, { desc = '[Git] Files' }) vim.keymap.set('n', 'gt', builtin.git_stash, { desc = '[Git] Stash' }) From 868feb4383b1c2fadd9caaaf3336991ca8e0ceb7 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 24 Jul 2025 13:08:32 -0400 Subject: [PATCH 04/46] gd --- init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.lua b/init.lua index 6f40edf7694..6817a0015ad 100644 --- a/init.lua +++ b/init.lua @@ -445,6 +445,11 @@ require('lazy').setup({ vim.keymap.set('n', 'gf', builtin.git_files, { desc = '[Git] Files' }) vim.keymap.set('n', 'gt', builtin.git_stash, { desc = '[Git] Stash' }) vim.keymap.set('n', 'gs', builtin.git_status, { desc = '[Git] Status' }) + vim.keymap.set('n', 'gm', function() + builtin.git_commits { + git_command = { 'git', 'log', '--oneline', '--decorate', 'main..HEAD' }, + } + end, { desc = '[Git] Commits ahead of main' }) -- Slightly advanced example of overriding default behavior and theme vim.keymap.set('n', '/', function() From e214fab6680fa2786b3081b1f28d1d3e37a10768 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 1 Aug 2025 15:08:03 -0400 Subject: [PATCH 05/46] add nvim-tree --- init.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 6817a0015ad..6ec61abc7f9 100644 --- a/init.lua +++ b/init.lua @@ -205,6 +205,18 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the upper win -- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) -- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) +-- Open terminal in horizontal split +vim.keymap.set('n', 'th', ':split | terminal', { desc = 'Terminal horizontal split' }) + +-- Open terminal in vertical split +vim.keymap.set('n', 'tv', ':vsplit | terminal', { desc = 'Terminal vertical split' }) + +-- Open terminal in new tab +vim.keymap.set('n', 'tt', ':tabnew | terminal', { desc = 'Terminal in new tab' }) + +-- Toggle terminal (requires a plugin like toggleterm.nvim) +vim.keymap.set('n', 'tf', ':ToggleTerm', { desc = 'Toggle floating terminal' }) + -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` @@ -475,7 +487,14 @@ require('lazy').setup({ end, { desc = '[S]earch [N]eovim files' }) end, }, - + { + 'nvim-tree/nvim-tree.lua', + dependencies = 'nvim-tree/nvim-web-devicons', + config = function() + require('nvim-tree').setup() + vim.keymap.set('n', 'x', ':NvimTreeToggle', { noremap = true, silent = true }) + end, + }, -- LSP Plugins { -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins From e224bba226dcbef16ca90de0f0a04bc260f0f7ac Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 4 Aug 2025 11:35:21 -0400 Subject: [PATCH 06/46] thangs --- init.lua | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/init.lua b/init.lua index 6ec61abc7f9..9c5c6601ede 100644 --- a/init.lua +++ b/init.lua @@ -487,14 +487,6 @@ require('lazy').setup({ end, { desc = '[S]earch [N]eovim files' }) end, }, - { - 'nvim-tree/nvim-tree.lua', - dependencies = 'nvim-tree/nvim-web-devicons', - config = function() - require('nvim-tree').setup() - vim.keymap.set('n', 'x', ':NvimTreeToggle', { noremap = true, silent = true }) - end, - }, -- LSP Plugins { -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins @@ -1010,7 +1002,8 @@ require('lazy').setup({ -- require 'kickstart.plugins.indent_line', -- require 'kickstart.plugins.lint', -- require 'kickstart.plugins.autopairs', - -- require 'kickstart.plugins.neo-tree', + require 'kickstart.plugins.neo-tree', + vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` From 81f2e7c7fdb6e9d707245fd2f6b784cc26aa6e08 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 4 Aug 2025 11:45:50 -0400 Subject: [PATCH 07/46] gitsigns --- init.lua | 59 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 8 deletions(-) diff --git a/init.lua b/init.lua index 9c5c6601ede..108166850e3 100644 --- a/init.lua +++ b/init.lua @@ -286,13 +286,56 @@ require('lazy').setup({ { -- Adds git related signs to the gutter, as well as utilities for managing changes 'lewis6991/gitsigns.nvim', opts = { - signs = { - add = { text = '+' }, - change = { text = '~' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, - }, + 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, { desc = 'Jump to next git [c]hange' }) + + map('n', '[c', function() + if vim.wo.diff then + vim.cmd.normal { '[c', bang = true } + else + gitsigns.nav_hunk 'prev' + end + end, { desc = 'Jump to previous git [c]hange' }) + + -- Actions + -- visual mode + map('v', 'hs', function() + gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'git [s]tage hunk' }) + map('v', 'hr', function() + gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'git [r]eset hunk' }) + -- normal mode + map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) + map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) + map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) + map('n', 'hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' }) + map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) + map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) + map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) + map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) + map('n', 'hD', function() + gitsigns.diffthis '@' + end, { desc = 'git [D]iff against last commit' }) + -- Toggles + map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) + map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) + end, }, }, @@ -1004,7 +1047,7 @@ require('lazy').setup({ -- require 'kickstart.plugins.autopairs', require 'kickstart.plugins.neo-tree', vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), - -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps + require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- This is the easiest way to modularize your config. From 47be0540ecdd95a1c3d943ba973443b45896fdd2 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 4 Aug 2025 22:49:05 -0400 Subject: [PATCH 08/46] thing --- init.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/init.lua b/init.lua index 108166850e3..696c5a0bc5e 100644 --- a/init.lua +++ b/init.lua @@ -338,7 +338,16 @@ require('lazy').setup({ end, }, }, - + { + 'nvim-neo-tree/neo-tree.nvim', + version = '*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'MunifTanjim/nui.nvim', + 'nvim-tree/nvim-web-devicons', + }, + lazy = false, + }, -- NOTE: Plugins can also be configured to run Lua code when they are loaded. -- -- This is often very useful to both group configuration, as well as handle @@ -751,7 +760,6 @@ require('lazy').setup({ -- But for many setups, the LSP (`ts_ls`) will work just fine ts_ls = {}, -- - lua_ls = { -- cmd = { ... }, -- filetypes = { ... }, @@ -1041,12 +1049,12 @@ require('lazy').setup({ -- Here are some example plugins that I've included in the Kickstart repository. -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- - -- require 'kickstart.plugins.debug', + require 'kickstart.plugins.debug', -- require 'kickstart.plugins.indent_line', - -- require 'kickstart.plugins.lint', + require 'kickstart.plugins.lint', -- require 'kickstart.plugins.autopairs', require 'kickstart.plugins.neo-tree', - vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), + vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` From 2bddc423c74f9a128bbc08060479b19ed0c9df0d Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 12 Aug 2025 19:45:04 -0400 Subject: [PATCH 09/46] neotree --- init.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 696c5a0bc5e..5748edd4f84 100644 --- a/init.lua +++ b/init.lua @@ -347,6 +347,17 @@ require('lazy').setup({ 'nvim-tree/nvim-web-devicons', }, lazy = false, + opts = { + filesystem = { + visible = true, + window = { + mappings = { + ['.'] = 'set_root', -- Set current directory as root + ['H'] = 'toggle_hidden', -- Toggle hidden files with 'H' + }, + }, + }, + }, }, -- NOTE: Plugins can also be configured to run Lua code when they are loaded. -- @@ -951,7 +962,6 @@ require('lazy').setup({ signature = { enabled = true }, }, }, - { -- You can easily change to a different colorscheme. -- Change the name of the colorscheme plugin below, and then -- change the command in the config to whatever the name of that colorscheme is. From ce74176b293cdeda500e420ed9665a3ed9729def Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 18 Aug 2025 17:14:00 -0400 Subject: [PATCH 10/46] lock and load --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 5748edd4f84..b7d71d2f163 100644 --- a/init.lua +++ b/init.lua @@ -349,7 +349,7 @@ require('lazy').setup({ lazy = false, opts = { filesystem = { - visible = true, + visible = false, window = { mappings = { ['.'] = 'set_root', -- Set current directory as root @@ -922,7 +922,7 @@ require('lazy').setup({ -- : Toggle signature help -- -- See :h blink-cmp-config-keymap for defining your own keymap - preset = 'default', + preset = 'super-tab', -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps From 2f469766cc5c34b63039f657d79d3ac25f91ab09 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 2 Sep 2025 16:36:56 -0400 Subject: [PATCH 11/46] update --- init.lua | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/init.lua b/init.lua index b7d71d2f163..855d9c6b57d 100644 --- a/init.lua +++ b/init.lua @@ -110,14 +110,6 @@ vim.o.mouse = 'a' -- Don't show the mode, since it's already in the status line vim.o.showmode = false --- Sync clipboard between OS and Neovim. --- Schedule the setting after `UiEnter` because it can increase startup-time. --- Remove this option if you want your OS clipboard to remain independent. --- See `:help 'clipboard'` -vim.schedule(function() - vim.o.clipboard = 'unnamedplus' -end) - -- Enable break indent vim.o.breakindent = true @@ -217,6 +209,10 @@ vim.keymap.set('n', 'tt', ':tabnew | terminal', { desc = 'Terminal i -- Toggle terminal (requires a plugin like toggleterm.nvim) vim.keymap.set('n', 'tf', ':ToggleTerm', { desc = 'Toggle floating terminal' }) +-- relative line number +vim.opt.number = true +vim.opt.relativenumber = true + -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` From 903b0c8b22ce040a372943de5b5d3c2a36862c1c Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 12 Sep 2025 06:43:28 -0400 Subject: [PATCH 12/46] blame --- init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/init.lua b/init.lua index 855d9c6b57d..17bc55476e3 100644 --- a/init.lua +++ b/init.lua @@ -324,6 +324,7 @@ require('lazy').setup({ map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) + map('n', 'Hb', gitsigns.blame_line, { desc = 'git [B]lame toggle' }) map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', 'hD', function() gitsigns.diffthis '@' From 37a2b56005731a56bda96de5e297420bd512c2f6 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 12 Sep 2025 06:45:15 -0400 Subject: [PATCH 13/46] blame --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 17bc55476e3..68743512147 100644 --- a/init.lua +++ b/init.lua @@ -324,7 +324,7 @@ require('lazy').setup({ map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) - map('n', 'Hb', gitsigns.blame_line, { desc = 'git [B]lame toggle' }) + map('n', 'Hb', gitsigns.blame, { desc = 'git [B]lame toggle' }) map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', 'hD', function() gitsigns.diffthis '@' From cd9f5a7eb11bb21807638e14b1829753bb2386bb Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 12 Sep 2025 06:46:29 -0400 Subject: [PATCH 14/46] blame --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 68743512147..9330662cce8 100644 --- a/init.lua +++ b/init.lua @@ -324,7 +324,7 @@ require('lazy').setup({ map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) - map('n', 'Hb', gitsigns.blame, { desc = 'git [B]lame toggle' }) + map('n', 'hB', gitsigns.blame, { desc = 'git [B]lame toggle' }) map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', 'hD', function() gitsigns.diffthis '@' From 3fb64a9be185cdc4b58fbc896d8c9eba5af4d6dd Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 19 Sep 2025 15:18:43 -0400 Subject: [PATCH 15/46] paste no yank --- init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/init.lua b/init.lua index 9330662cce8..b0008ac6e6f 100644 --- a/init.lua +++ b/init.lua @@ -213,6 +213,10 @@ vim.keymap.set('n', 'tf', ':ToggleTerm', { desc = 'Toggle floating t vim.opt.number = true vim.opt.relativenumber = true +-- paste does not yank in visual mode +-- Make Visual mode paste not clobber the default register +vim.keymap.set('x', 'p', '"_dP', { noremap = true, silent = true }) + -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` From 99decc9168086d595a06dbef46df39cbf88fd96c Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 8 Oct 2025 10:33:17 -0400 Subject: [PATCH 16/46] add --- lua/kickstart/plugins/neo-tree.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index c7067891df0..2d028336136 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -16,6 +16,7 @@ return { opts = { filesystem = { window = { + use_libuv_file_watcher = true, mappings = { ['\\'] = 'close_window', }, From 427af219d87c0126ad4cbdcd0989deaff84dfbe5 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 8 Oct 2025 10:46:59 -0400 Subject: [PATCH 17/46] add --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index b0008ac6e6f..3a2f8ba9d5c 100644 --- a/init.lua +++ b/init.lua @@ -1061,9 +1061,9 @@ require('lazy').setup({ -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.indent_line', require 'kickstart.plugins.lint', - -- require 'kickstart.plugins.autopairs', + require 'kickstart.plugins.autopairs', require 'kickstart.plugins.neo-tree', vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps From 5f7f4fae240397db14d4a7ba504d0bd6d9a09633 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 8 Oct 2025 11:00:42 -0400 Subject: [PATCH 18/46] add gopls --- init.lua | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 3a2f8ba9d5c..981b3acaf64 100644 --- a/init.lua +++ b/init.lua @@ -761,7 +761,59 @@ require('lazy').setup({ -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ local servers = { clangd = {}, - gopls = {}, + gopls = { + settings = { + gopls = { + -- Completion settings + completeUnimported = true, -- Suggest symbols from packages that are not yet imported + usePlaceholders = true, -- Insert argument placeholders for functions + deepCompletion = true, -- Include deep completions (e.g., struct fields) + matcher = 'Fuzzy', -- Matching algorithm for completions + linksInHover = true, -- Show documentation links in hover popups + + -- Static analysis and diagnostics + staticcheck = true, -- Enable additional static analysis checks + analyses = { + unusedparams = true, -- Detect unused function parameters + nilness = true, -- Detect nil pointer errors + unusedwrite = true, -- Detect assignments that are never read + shadow = true, -- Detect variable shadowing + }, + + -- Code lenses + codelenses = { + generate = true, -- Enable 'go generate' code lens + gc_details = true, -- Show memory details on functions + tidy = true, -- Enable 'go mod tidy' lens + test = true, -- Enable run/test lenses + }, + + -- Hover and signature help + hoverKind = 'FullDocumentation', -- Show full documentation in hover + usePlaceholders = true, -- Insert placeholders for function arguments + + -- Import management + gofumpt = true, -- Use `gofumpt` formatting style + completeUnimported = true, -- Suggest symbols from unimported packages + directoryFilters = { '-vendor' }, -- Exclude vendor directories from analysis + }, + }, + + -- Auto organize imports on save + on_attach = function(client, bufnr) + if client.name == 'gopls' then + vim.api.nvim_create_autocmd('BufWritePre', { + buffer = bufnr, + callback = function() + vim.lsp.buf.code_action { + context = { only = { 'source.organizeImports' } }, + apply = true, + } + end, + }) + end + end, + }, pyright = {}, rust_analyzer = {}, -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs From c81ec8776f4fea6289af619dabbbdda9c7e488ec Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 8 Oct 2025 11:11:29 -0400 Subject: [PATCH 19/46] trhing --- init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 981b3acaf64..56bb89b5a39 100644 --- a/init.lua +++ b/init.lua @@ -790,11 +790,9 @@ require('lazy').setup({ -- Hover and signature help hoverKind = 'FullDocumentation', -- Show full documentation in hover - usePlaceholders = true, -- Insert placeholders for function arguments -- Import management gofumpt = true, -- Use `gofumpt` formatting style - completeUnimported = true, -- Suggest symbols from unimported packages directoryFilters = { '-vendor' }, -- Exclude vendor directories from analysis }, }, @@ -806,7 +804,7 @@ require('lazy').setup({ buffer = bufnr, callback = function() vim.lsp.buf.code_action { - context = { only = { 'source.organizeImports' } }, + context = { diagnostics = {}, only = { 'source.organizeImports' } }, apply = true, } end, From a1f1968cb3bb67f08de191d7ad473942e95f71db Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 9 Oct 2025 14:33:19 -0400 Subject: [PATCH 20/46] ts configgy --- init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 56bb89b5a39..225a09fe534 100644 --- a/init.lua +++ b/init.lua @@ -820,7 +820,12 @@ require('lazy').setup({ -- https://github.com/pmizio/typescript-tools.nvim -- -- But for many setups, the LSP (`ts_ls`) will work just fine - ts_ls = {}, + ts_ls = { + settings = {}, + on_attach = function(client) + client.server_capabilities.documentFormattingProvider = false + end, + }, -- lua_ls = { -- cmd = { ... }, From 70d8b82df24ec76b40ba64509a0178048a802b5e Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 13 Oct 2025 13:54:00 -0400 Subject: [PATCH 21/46] more treesitting --- init.lua | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 225a09fe534..387b55662f0 100644 --- a/init.lua +++ b/init.lua @@ -1086,7 +1086,31 @@ require('lazy').setup({ main = 'nvim-treesitter.configs', -- Sets main module to use for opts -- [[ Configure Treesitter ]] See `:help nvim-treesitter` opts = { - ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, + ensure_installed = { + 'bash', + 'c', + 'diff', + 'html', + 'lua', + 'luadoc', + 'markdown', + 'markdown_inline', + 'query', + 'vim', + 'vimdoc', + 'go', + 'rust', + 'python', + 'json', + 'toml', + 'htlm', + 'css', + 'helm', + 'dockerfile', + 'bash', + 'yaml', + 'sql', + }, -- Autoinstall languages that are not installed auto_install = true, highlight = { From d2edadcbe145e94b923e402b2caacde1d0d19ba1 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 13 Oct 2025 14:04:51 -0400 Subject: [PATCH 22/46] fix --- init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/init.lua b/init.lua index 387b55662f0..6edfcb3c358 100644 --- a/init.lua +++ b/init.lua @@ -1103,7 +1103,6 @@ require('lazy').setup({ 'python', 'json', 'toml', - 'htlm', 'css', 'helm', 'dockerfile', From b44766ba67337aff75ca067ff58ff0b4619749ad Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 16 Oct 2025 22:35:33 -0400 Subject: [PATCH 23/46] yayaya --- init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/init.lua b/init.lua index 6edfcb3c358..33210d8ad57 100644 --- a/init.lua +++ b/init.lua @@ -824,6 +824,7 @@ require('lazy').setup({ settings = {}, on_attach = function(client) client.server_capabilities.documentFormattingProvider = false + client.server_capabilities.documentRangeFormattingProvider = false end, }, -- From c577052c67ef43186943c151108e2ebaf609298f Mon Sep 17 00:00:00 2001 From: Jordan Yono Date: Mon, 20 Oct 2025 06:24:52 -0400 Subject: [PATCH 24/46] nerd font --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 33210d8ad57..c92350377f3 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed and selected in the terminal -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.o` From 1c6512d2277411971c0294027ca73ab5cd0fd89d Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 21 Oct 2025 11:22:08 -0400 Subject: [PATCH 25/46] no write --- init.lua | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 33210d8ad57..44011ed07e1 100644 --- a/init.lua +++ b/init.lua @@ -825,6 +825,15 @@ require('lazy').setup({ on_attach = function(client) client.server_capabilities.documentFormattingProvider = false client.server_capabilities.documentRangeFormattingProvider = false + + -- Disable format on save for this buffer + vim.api.nvim_buf_set_option(bufnr, 'formatoptions', '') + vim.api.nvim_create_autocmd('BufWritePre', { + buffer = bufnr, + callback = function() + -- Do nothing, preventing format on save + end, + }) end, }, -- @@ -900,7 +909,15 @@ require('lazy').setup({ -- Disable "format_on_save lsp_fallback" for languages that don't -- have a well standardized coding style. You can add additional -- languages here or re-enable it for the disabled ones. - local disable_filetypes = { c = true, cpp = true } + local disable_filetypes = { + c = true, + cpp = true, + typescript = true, + typescriptreact = true, + javascript = true, + javascriptreact = true, + python = true, + } if disable_filetypes[vim.bo[bufnr].filetype] then return nil else From 6bd14e253713aba9aad85af3370460a47e023421 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 27 Oct 2025 23:28:56 -0400 Subject: [PATCH 26/46] updates --- init.lua | 21 ------------------ lua/custom/plugins/init.lua | 39 ++++++++++++++++++++++++++++++++- lua/kickstart/plugins/debug.lua | 20 ++++++++--------- 3 files changed, 48 insertions(+), 32 deletions(-) diff --git a/init.lua b/init.lua index efebc4f6c02..9f2870e4310 100644 --- a/init.lua +++ b/init.lua @@ -339,27 +339,6 @@ require('lazy').setup({ end, }, }, - { - 'nvim-neo-tree/neo-tree.nvim', - version = '*', - dependencies = { - 'nvim-lua/plenary.nvim', - 'MunifTanjim/nui.nvim', - 'nvim-tree/nvim-web-devicons', - }, - lazy = false, - opts = { - filesystem = { - visible = false, - window = { - mappings = { - ['.'] = 'set_root', -- Set current directory as root - ['H'] = 'toggle_hidden', -- Toggle hidden files with 'H' - }, - }, - }, - }, - }, -- NOTE: Plugins can also be configured to run Lua code when they are loaded. -- -- This is often very useful to both group configuration, as well as handle diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index be0eb9d8d7a..ff38bf7735f 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -2,4 +2,41 @@ -- I promise not to create any merge conflicts in this directory :) -- -- See the kickstart.nvim README for more information -return {} +return { + { + 'mistweaverco/kulala.nvim', + keys = { + { 'Rs', desc = 'Send request' }, + { 'Ra', desc = 'Send all requests' }, + { 'Rb', desc = 'Open scratchpad' }, + }, + ft = { 'http', 'rest' }, + opts = { + -- your configuration comes here + global_keymaps = false, + global_keymaps_prefix = 'R', + kulala_keymaps_prefix = '', + }, + }, + { + 'nvim-neo-tree/neo-tree.nvim', + version = '*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'MunifTanjim/nui.nvim', + 'nvim-tree/nvim-web-devicons', + }, + lazy = false, + opts = { + filesystem = { + visible = false, + window = { + mappings = { + ['.'] = 'set_root', -- Set current directory as root + ['H'] = 'toggle_hidden', -- Toggle hidden files with 'H' + }, + }, + }, + }, + }, +} diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 8e332bf2ff9..8ca03a0e074 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -121,16 +121,16 @@ return { } -- Change breakpoint icons - -- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' }) - -- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' }) - -- local breakpoint_icons = vim.g.have_nerd_font - -- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' } - -- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' } - -- for type, icon in pairs(breakpoint_icons) do - -- local tp = 'Dap' .. type - -- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak' - -- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl }) - -- end + vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' }) + vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' }) + local breakpoint_icons = vim.g.have_nerd_font + and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' } + or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' } + for type, icon in pairs(breakpoint_icons) do + local tp = 'Dap' .. type + local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak' + vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl }) + end dap.listeners.after.event_initialized['dapui_config'] = dapui.open dap.listeners.before.event_terminated['dapui_config'] = dapui.close From f3cadfaf0bc4c07163816dc57821fcfa3096b260 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Mon, 27 Oct 2025 23:59:54 -0400 Subject: [PATCH 27/46] woo --- init.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/init.lua b/init.lua index 9f2870e4310..deee96dca71 100644 --- a/init.lua +++ b/init.lua @@ -258,6 +258,49 @@ rtp:prepend(lazypath) -- -- NOTE: Here is where you install your plugins. require('lazy').setup({ + -- your other plugins + { + -- TODO Set to use ccurl + -- Official installation from mistweaverco/kulala.nvim + 'mistweaverco/kulala.nvim', + ft = { 'http', 'rest' }, -- Supports both .http and .rest files + + opts = { + -- By default global keymaps are disabled + -- Set to true to enable all built-in keymaps + global_keymaps = false, + }, + keys = { + -- Request execution + { 'kr', 'lua require("kulala").run()', desc = 'Kulala: Run request' }, + { 'ka', 'lua require("kulala").run_all()', desc = 'Kulala: Run all requests' }, + { 'kR', 'lua require("kulala").replay()', desc = 'Kulala: Replay last request' }, + + -- View & Inspection + { 'kt', 'lua require("kulala").toggle_view()', desc = 'Kulala: Toggle view' }, + { 'ki', 'lua require("kulala").inspect()', desc = 'Kulala: Inspect current request' }, + { 'ks', 'lua require("kulala").show_stats()', desc = 'Kulala: Show stats' }, + + -- Navigation + { 'kn', 'lua require("kulala").jump_next()', desc = 'Kulala: Jump to next request' }, + { 'kp', 'lua require("kulala").jump_prev()', desc = 'Kulala: Jump to previous request' }, + + -- Copy/Paste & Scratchpad + { 'kc', 'lua require("kulala").copy()', desc = 'Kulala: Copy as cURL' }, + { 'kC', 'lua require("kulala").from_curl()', desc = 'Kulala: Paste from cURL' }, + { 'kb', 'lua require("kulala").scratchpad()', desc = 'Kulala: Open scratchpad' }, + + -- Environment management + { 'ke', 'lua require("kulala").set_selected_env()', desc = 'Kulala: Select environment' }, + { 'kg', 'lua require("kulala").download_graphql_schema()', desc = 'Kulala: Download GraphQL schema' }, + + -- Utility + { 'kx', 'lua require("kulala").close()', desc = 'Kulala: Close' }, + { 'kD', 'lua require("kulala").clear_cached_files()', desc = 'Kulala: Clear cache' }, + }, + }, + + -- more plugins -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically @@ -1142,6 +1185,7 @@ require('lazy').setup({ require 'kickstart.plugins.neo-tree', vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps + require 'custom.plugins', -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- This is the easiest way to modularize your config. From a8a15331c908a40ad72112f7fa09b477b77a969d Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 4 Nov 2025 13:46:45 -0500 Subject: [PATCH 28/46] changes --- init.lua | 30 ++++++++++++++++++++++++------ lua/kickstart/plugins/debug.lua | 13 +++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/init.lua b/init.lua index deee96dca71..410e99451ae 100644 --- a/init.lua +++ b/init.lua @@ -791,28 +791,45 @@ require('lazy').setup({ usePlaceholders = true, -- Insert argument placeholders for functions deepCompletion = true, -- Include deep completions (e.g., struct fields) matcher = 'Fuzzy', -- Matching algorithm for completions + + -- Hover and signature help + hoverKind = 'FullDocumentation', -- Show full documentation in hover + linkTarget = 'pkg.go.dev', linksInHover = true, -- Show documentation links in hover popups + -- Static analysis and diagnostics -- Static analysis and diagnostics staticcheck = true, -- Enable additional static analysis checks analyses = { unusedparams = true, -- Detect unused function parameters - nilness = true, -- Detect nil pointer errors unusedwrite = true, -- Detect assignments that are never read + nilness = true, -- Detect nil pointer errors shadow = true, -- Detect variable shadowing + useany = true, -- Recommend using 'any' instead of 'interface{}' + unusedvariable = true, -- Detect unused variables + }, + + hints = { + assignVariableTypes = true, + compositeLiteralFields = true, + compositeLiteralTypes = true, + constantValues = true, + functionTypeParameters = true, + parameterNames = true, + rangeVariableTypes = true, }, -- Code lenses codelenses = { - generate = true, -- Enable 'go generate' code lens gc_details = true, -- Show memory details on functions + generate = true, -- Enable 'go generate' code lens + regenerate_cgo = true, -- Regenerate cgo definitions tidy = true, -- Enable 'go mod tidy' lens + upgrade_dependency = true, -- Upgrade dependencies + vendor = true, -- Vendor dependencies test = true, -- Enable run/test lenses }, - -- Hover and signature help - hoverKind = 'FullDocumentation', -- Show full documentation in hover - -- Import management gofumpt = true, -- Use `gofumpt` formatting style directoryFilters = { '-vendor' }, -- Exclude vendor directories from analysis @@ -1183,7 +1200,8 @@ require('lazy').setup({ require 'kickstart.plugins.lint', require 'kickstart.plugins.autopairs', require 'kickstart.plugins.neo-tree', - vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'Toggle NeoTree' }), + vim.keymap.set('n', 'x', 'Neotree toggle', { desc = 'NeoTree Toggle' }), + vim.keymap.set('n', 'z', 'Neotree reveal', { desc = 'NeoTree Reveal' }), require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps require 'custom.plugins', diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 8ca03a0e074..8d473ed33de 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -144,5 +144,18 @@ return { detached = vim.fn.has 'win32' == 0, }, } + dap.configurations.go = dap.configurations.go or {} + table.insert(dap.configurations.go, { + type = 'go', + name = 'Attach remote (localhost:2345)', + mode = 'remote', + request = 'attach', + -- Connect to the port, not PID + port = 2345, + host = '127.0.0.1', + substitutePath = { + { from = '${workspaceFolder}', to = vim.fn.getcwd() }, + }, + }) end, } From 357bbdb942893496c317ab518e9e73f4658e601f Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 20 Nov 2025 17:30:16 -0500 Subject: [PATCH 29/46] adding val --- init.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/init.lua b/init.lua index 410e99451ae..3a5bab6e8bb 100644 --- a/init.lua +++ b/init.lua @@ -571,6 +571,25 @@ require('lazy').setup({ vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) + + vim.keymap.set('n', 'shg', function() + builtin.live_grep { + prompt_title = 'Live Grep (All Files)', + -- This function adds the flags to the underlying grep command + additional_args = function(args) + return { '--hidden', '--no-ignore', '--no-ignore-parent' } + end, + } + end, { desc = '[S]earch [H]idden [G]rep)' }) + + vim.keymap.set('n', 'shf', function() + builtin.find_files { + prompt_title = 'Find All Files (Hidden + Ignored)', + hidden = true, -- Show hidden dotfiles + no_ignore = true, -- Ignore .gitignore rules + no_ignore_parent = true, -- Ignore .gitignore rules of all parents, too + } + end, { desc = 'Find All Files' }) end, }, -- LSP Plugins From b3b3270082d4dba840a86aa98a82618eb66f6563 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 20 Nov 2025 17:44:45 -0500 Subject: [PATCH 30/46] hidden greps --- init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 3a5bab6e8bb..63698e51427 100644 --- a/init.lua +++ b/init.lua @@ -577,7 +577,7 @@ require('lazy').setup({ prompt_title = 'Live Grep (All Files)', -- This function adds the flags to the underlying grep command additional_args = function(args) - return { '--hidden', '--no-ignore', '--no-ignore-parent' } + return { '--hidden', '--no-ignore', '--no-ignore-parent', '--glob=!**/.git/*' } end, } end, { desc = '[S]earch [H]idden [G]rep)' }) @@ -588,6 +588,7 @@ require('lazy').setup({ hidden = true, -- Show hidden dotfiles no_ignore = true, -- Ignore .gitignore rules no_ignore_parent = true, -- Ignore .gitignore rules of all parents, too + file_ignore_patterns = { '.git/' }, -- <--- Explicitly remove the .git folder } end, { desc = 'Find All Files' }) end, From 68a8adbc25a974110311695f647a1b315569e4bb Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 21 Nov 2025 15:28:32 -0500 Subject: [PATCH 31/46] move h to a --- init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 63698e51427..2cd3fd81638 100644 --- a/init.lua +++ b/init.lua @@ -572,7 +572,7 @@ require('lazy').setup({ builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) - vim.keymap.set('n', 'shg', function() + vim.keymap.set('n', 'sag', function() builtin.live_grep { prompt_title = 'Live Grep (All Files)', -- This function adds the flags to the underlying grep command @@ -580,9 +580,9 @@ require('lazy').setup({ return { '--hidden', '--no-ignore', '--no-ignore-parent', '--glob=!**/.git/*' } end, } - end, { desc = '[S]earch [H]idden [G]rep)' }) + end, { desc = '[S]earch [A]ll [G]rep)' }) - vim.keymap.set('n', 'shf', function() + vim.keymap.set('n', 'saf', function() builtin.find_files { prompt_title = 'Find All Files (Hidden + Ignored)', hidden = true, -- Show hidden dotfiles @@ -590,7 +590,7 @@ require('lazy').setup({ no_ignore_parent = true, -- Ignore .gitignore rules of all parents, too file_ignore_patterns = { '.git/' }, -- <--- Explicitly remove the .git folder } - end, { desc = 'Find All Files' }) + end, { desc = '[S]earch [A]ll [F]iles' }) end, }, -- LSP Plugins From fb6a5bb614fc7c09b0ed3ebce78cee0f0d7a1b09 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 21 Nov 2025 15:41:23 -0500 Subject: [PATCH 32/46] add sql-formatter --- init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/init.lua b/init.lua index 2cd3fd81638..be6eb211fcf 100644 --- a/init.lua +++ b/init.lua @@ -988,11 +988,17 @@ require('lazy').setup({ end, formatters_by_ft = { lua = { 'stylua' }, + sql = { 'sql-formatter' }, -- Conform can also run multiple formatters sequentially -- python = { "isort", "black" }, -- -- You can use 'stop_after_first' to run the first available formatter from the list -- javascript = { "prettierd", "prettier", stop_after_first = true }, + --formatters = { + ['sql-formatter'] = { + -- Change "postgresql" to "mysql", "mariadb", "bigquery", "sqlite", etc. + prepend_args = { '-l', 'postgresql' }, + }, }, }, }, From 1bd862e78b79aa350b64d6cd68f3291e854a07e7 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 21 Nov 2025 16:00:02 -0500 Subject: [PATCH 33/46] fixing formatter --- init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index be6eb211fcf..1affde17566 100644 --- a/init.lua +++ b/init.lua @@ -928,6 +928,7 @@ require('lazy').setup({ local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code + 'sql-formatter', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } @@ -995,8 +996,9 @@ require('lazy').setup({ -- You can use 'stop_after_first' to run the first available formatter from the list -- javascript = { "prettierd", "prettier", stop_after_first = true }, --formatters = { + }, + formatters = { ['sql-formatter'] = { - -- Change "postgresql" to "mysql", "mariadb", "bigquery", "sqlite", etc. prepend_args = { '-l', 'postgresql' }, }, }, From fea500cefbff2c8213aeef985b1476f2118bc8f9 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 21 Nov 2025 16:50:22 -0500 Subject: [PATCH 34/46] fix formatter --- init.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 1affde17566..e1d50cde864 100644 --- a/init.lua +++ b/init.lua @@ -989,17 +989,16 @@ require('lazy').setup({ end, formatters_by_ft = { lua = { 'stylua' }, - sql = { 'sql-formatter' }, + sql = { 'sql_formatter' }, -- Conform can also run multiple formatters sequentially -- python = { "isort", "black" }, -- -- You can use 'stop_after_first' to run the first available formatter from the list -- javascript = { "prettierd", "prettier", stop_after_first = true }, - --formatters = { }, formatters = { - ['sql-formatter'] = { - prepend_args = { '-l', 'postgresql' }, + ['sql_formatter'] = { + prepend_args = { '-l', 'postgresql', '-c', '{"useTabs": true}' }, }, }, }, From 819633aec189035d242551131aba86e7c1a8f0f6 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Sun, 23 Nov 2025 17:59:16 -0500 Subject: [PATCH 35/46] better naming --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index e1d50cde864..ed7c6a0e6a1 100644 --- a/init.lua +++ b/init.lua @@ -580,7 +580,7 @@ require('lazy').setup({ return { '--hidden', '--no-ignore', '--no-ignore-parent', '--glob=!**/.git/*' } end, } - end, { desc = '[S]earch [A]ll [G]rep)' }) + end, { desc = '[S]earch [A]ll Files [G]rep)' }) vim.keymap.set('n', 'saf', function() builtin.find_files { From 10c0f99c99247bad5858febf083308effc3ce5c4 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 16 Dec 2025 14:37:23 -0500 Subject: [PATCH 36/46] moar --- init.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/init.lua b/init.lua index ed7c6a0e6a1..beabe94ce32 100644 --- a/init.lua +++ b/init.lua @@ -929,6 +929,7 @@ require('lazy').setup({ vim.list_extend(ensure_installed, { 'stylua', -- Used to format Lua code 'sql-formatter', + 'prettier', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } @@ -977,6 +978,7 @@ require('lazy').setup({ javascript = true, javascriptreact = true, python = true, + sql = true, } if disable_filetypes[vim.bo[bufnr].filetype] then return nil @@ -1193,6 +1195,8 @@ require('lazy').setup({ 'bash', 'yaml', 'sql', + 'hcl', + 'terraform', }, -- Autoinstall languages that are not installed auto_install = true, @@ -1212,6 +1216,14 @@ require('lazy').setup({ -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects }, + { + 'towolf/vim-helm', + event = 'BufReadPre', + config = function() + -- This plugin automatically detects helm files (including .tpl) + -- and sets the filetype to "helm" instead of "yaml" + end, + }, -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the -- init.lua. If you want these files, they are in the repository, so you can just download them and From 7005b044de6aa0658f56bf515ebbfef9b068e00a Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 17 Dec 2025 09:47:04 -0500 Subject: [PATCH 37/46] links --- init.lua | 3 +++ lua/custom/git_links.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 lua/custom/git_links.lua diff --git a/init.lua b/init.lua index beabe94ce32..c29c9622465 100644 --- a/init.lua +++ b/init.lua @@ -231,6 +231,9 @@ vim.api.nvim_create_autocmd('TextYankPost', { end, }) +local custom_git = require './lua/custom/git_links' +vim.keymap.set({ 'n', 'v' }, 'go', custom_git.open_github, { desc = 'Open in GitHub' }) + -- [[ Install `lazy.nvim` plugin manager ]] -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' diff --git a/lua/custom/git_links.lua b/lua/custom/git_links.lua new file mode 100644 index 00000000000..001346c4086 --- /dev/null +++ b/lua/custom/git_links.lua @@ -0,0 +1,40 @@ +local M = {} + +M.open_github = function() + -- Get current file path relative to the git project root + local file_path = vim.fn.systemlist('git ls-files --full-name ' .. vim.fn.expand '%')[1] + if not file_path or file_path == '' then + print 'File not tracked by git.' + return + end + + -- Get remote URL and clean it up (handles HTTPS and SSH) + local remote = vim.fn.system('git config --get remote.origin.url'):gsub('\n', ''):gsub('%.git$', '') + if remote:match '^git@' then + remote = remote:gsub(':', '/'):gsub('git@', 'https://') + end + + -- Get current branch + local branch = vim.fn.system('git rev-parse --abbrev-ref HEAD'):gsub('\n', '') + + -- Get line numbers (handles single line or visual selection) + local line_start = vim.fn.line 'v' + local line_end = vim.fn.line '.' + if line_start > line_end then + line_start, line_end = line_end, line_start + end + + local line_anchor = 'L' .. line_end + if vim.fn.mode():match '[vV]' then + line_anchor = 'L' .. line_start .. '-L' .. line_end + end + + -- Build and open the URL + local url = string.format('%s/blob/%s/%s#%s', remote, branch, file_path, line_anchor) + + -- Linux only: using xdg-open in the background to avoid freezing Neovim + vim.fn.jobstart({ 'xdg-open', url }, { detach = true }) + print 'Opened in GitHub' +end + +return M From 9b06a7cb5cfcf8826278318e8d36e92189e7e52a Mon Sep 17 00:00:00 2001 From: jordanyono Date: Wed, 17 Dec 2025 12:18:31 -0500 Subject: [PATCH 38/46] gitty --- init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index c29c9622465..536bcae719e 100644 --- a/init.lua +++ b/init.lua @@ -231,8 +231,8 @@ vim.api.nvim_create_autocmd('TextYankPost', { end, }) -local custom_git = require './lua/custom/git_links' -vim.keymap.set({ 'n', 'v' }, 'go', custom_git.open_github, { desc = 'Open in GitHub' }) +local git_links = require 'custom.git_links' +vim.keymap.set({ 'n', 'v' }, 'go', git_links.open_github, { desc = 'Open in GitHub' }) -- [[ Install `lazy.nvim` plugin manager ]] -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info @@ -765,7 +765,8 @@ require('lazy').setup({ vim.diagnostic.config { severity_sort = true, float = { border = 'rounded', source = 'if_many' }, - underline = { severity = vim.diagnostic.severity.ERROR }, + -- underline = { severity = vim.diagnostic.severity.ERROR }, + underline = true, signs = vim.g.have_nerd_font and { text = { [vim.diagnostic.severity.ERROR] = '󰅚 ', From d54396f4780cbb96065ab34522a83d9da9cd9c6b Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 6 Feb 2026 12:17:04 -0500 Subject: [PATCH 39/46] autoread external --- init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init.lua b/init.lua index 536bcae719e..ecd531bb8e9 100644 --- a/init.lua +++ b/init.lua @@ -213,6 +213,9 @@ vim.keymap.set('n', 'tf', ':ToggleTerm', { desc = 'Toggle floating t vim.opt.number = true vim.opt.relativenumber = true +-- autoreload when external changes +vim.opt.autoread = true + -- paste does not yank in visual mode -- Make Visual mode paste not clobber the default register vim.keymap.set('x', 'p', '"_dP', { noremap = true, silent = true }) From 3236f481d7316cbbadc62bc8570badadcf96ea3f Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 26 Feb 2026 14:48:02 -0500 Subject: [PATCH 40/46] json fmt --- init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/init.lua b/init.lua index ecd531bb8e9..4143e2c18a2 100644 --- a/init.lua +++ b/init.lua @@ -999,6 +999,7 @@ require('lazy').setup({ formatters_by_ft = { lua = { 'stylua' }, sql = { 'sql_formatter' }, + json = { 'prettier' }, -- Conform can also run multiple formatters sequentially -- python = { "isort", "black" }, -- From f68d07c4e060cb93d000ef72f3200aee5b871c6c Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 5 Mar 2026 11:36:26 -0500 Subject: [PATCH 41/46] update --- init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 4143e2c18a2..bc886d19ea7 100644 --- a/init.lua +++ b/init.lua @@ -813,6 +813,9 @@ require('lazy').setup({ gopls = { settings = { gopls = { + buildFlags = { + '-tags=integration,small,medium,large', + }, -- Completion settings completeUnimported = true, -- Suggest symbols from packages that are not yet imported usePlaceholders = true, -- Insert argument placeholders for functions @@ -833,7 +836,6 @@ require('lazy').setup({ nilness = true, -- Detect nil pointer errors shadow = true, -- Detect variable shadowing useany = true, -- Recommend using 'any' instead of 'interface{}' - unusedvariable = true, -- Detect unused variables }, hints = { @@ -937,6 +939,7 @@ require('lazy').setup({ 'stylua', -- Used to format Lua code 'sql-formatter', 'prettier', + 'staticcheck', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } From c5e4e5cca7fa0b9fe19a2554ac5b1e1ca09173df Mon Sep 17 00:00:00 2001 From: jordanyono Date: Thu, 5 Mar 2026 16:08:46 -0500 Subject: [PATCH 42/46] tags --- init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/init.lua b/init.lua index bc886d19ea7..a88225f9840 100644 --- a/init.lua +++ b/init.lua @@ -814,7 +814,11 @@ require('lazy').setup({ settings = { gopls = { buildFlags = { - '-tags=integration,small,medium,large', + '-tags', + 'functional,integration,small,medium,large', + }, + env = { + GOFLAGS = '-tags=functional,integration,small,medium,large', }, -- Completion settings completeUnimported = true, -- Suggest symbols from packages that are not yet imported @@ -989,6 +993,7 @@ require('lazy').setup({ javascriptreact = true, python = true, sql = true, + json = true, } if disable_filetypes[vim.bo[bufnr].filetype] then return nil From 1df4c345f6c3a3f988679b1aa168b781f3e6bbff Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 17 Mar 2026 15:13:18 -0400 Subject: [PATCH 43/46] more lua --- init.lua | 156 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 140 insertions(+), 16 deletions(-) diff --git a/init.lua b/init.lua index a88225f9840..91fed44fa8d 100644 --- a/init.lua +++ b/init.lua @@ -835,13 +835,138 @@ require('lazy').setup({ -- Static analysis and diagnostics staticcheck = true, -- Enable additional static analysis checks analyses = { - unusedparams = true, -- Detect unused function parameters - unusedwrite = true, -- Detect assignments that are never read - nilness = true, -- Detect nil pointer errors - shadow = true, -- Detect variable shadowing - useany = true, -- Recommend using 'any' instead of 'interface{}' + -- ========================================== + -- 1. Core 'go vet' & gopls Specific Checks + -- ========================================== + asmdecl = true, + assign = true, + atomic = true, + atomicalign = true, + bools = true, + buildtag = true, + cgocall = true, + composites = true, + copylock = true, + defers = true, + directive = true, + errorsas = true, + framepointer = true, + httpresponse = true, + ifaceassert = true, + loopclosure = true, + lostcancel = true, + nilfunc = true, + printf = true, + shift = true, + sigchanyzer = true, + slog = true, + stdmethods = true, + stringintconv = true, + structtag = true, + testinggoroutine = true, + tests = true, + timeformat = true, + unmarshal = true, + unreachable = true, + unsafeptr = true, + unusedresult = true, + deepequalerrors = true, + embed = true, + fieldalignment = true, + fillreturns = true, + infertypeargs = true, + nilness = true, + nonewvars = true, + noresultvalues = true, + shadow = true, + simplifycompositelit = true, + simplifyrange = true, + simplifyslice = true, + sortslice = true, + stubmethods = true, + undeclaredname = true, + unusedparams = true, + unusedvariable = true, + unusedwrite = true, + useany = true, + + -- ========================================== + -- 2. S Series: Staticcheck Simplifications + -- ========================================== + S1000 = true, -- Use plain channel send or receive instead of single-case select + S1001 = true, -- Replace for loop with call to copy + S1002 = true, -- Omit comparison with boolean constant + S1003 = true, -- Replace call to strings.Index with strings.Contains + S1004 = true, -- Replace call to bytes.Compare with bytes.Equal + S1005 = true, -- Drop unnecessary use of the blank identifier + S1006 = true, -- Use 'for { ... }' for infinite loops + S1007 = true, -- Simplify regular expression by using raw string literal + S1008 = true, -- Simplify returning boolean expression + S1009 = true, -- Omit redundant nil check on slices, maps, and channels + S1010 = true, -- Omit default slice index + S1011 = true, -- Use a single append to concatenate two slices + S1012 = true, -- Replace time.Now().Sub(x) with time.Since(x) + S1016 = true, -- Use a type conversion instead of manually copying struct fields + S1017 = true, -- Replace manual trimming with strings.TrimPrefix + S1018 = true, -- Use 'copy' for sliding elements + S1019 = true, -- Simplify 'make' call by omitting redundant arguments + S1020 = true, -- Omit redundant nil check in type assertion + S1021 = true, -- Merge variable declaration and assignment + S1023 = true, -- Omit redundant control flow (e.g. return in void func) + S1024 = true, -- Replace x.Sub(time.Now()) with time.Until(x) + S1025 = true, -- Don't use fmt.Sprintf("%s", x) unnecessarily + S1028 = true, -- Simplify error construction with fmt.Errorf + S1029 = true, -- Range over string rather than running loop over bytes + S1030 = true, -- Use bytes.Buffer.String or bytes.Buffer.Bytes + S1031 = true, -- Omit redundant nil check around loop + S1032 = true, -- Use sort.Ints(x), sort.Float64s(x), and sort.Strings(x) + S1033 = true, -- Unnecessary guard around call to delete + S1034 = true, -- Use result of type assertion to simplify cases + S1035 = true, -- Redundant call to net/http.CanonicalHeaderKey + S1036 = true, -- Unnecessary guard around map access + S1037 = true, -- Elaborate sleep with time.Sleep + S1038 = true, -- Unnecessarily complex formatting directives + S1039 = true, -- Unnecessary use of fmt.Sprint + S1040 = true, -- Type assertion to current type + + -- ========================================== + -- 3. ST Series: Staticcheck Style Checks + -- ========================================== + ST1000 = true, -- Incorrect or missing package comment + ST1001 = true, -- Dot imports are discouraged + ST1003 = true, -- Poorly chosen identifier names (e.g. snake_case in Go) + ST1005 = true, -- Incorrectly formatted error string + ST1006 = true, -- Poorly chosen receiver name + ST1008 = true, -- A function's error value should be its last return value + ST1011 = true, -- Poorly chosen name for variable of type time.Duration + ST1012 = true, -- Poorly chosen name for error variable + ST1013 = true, -- Should use constants for HTTP error codes + ST1015 = true, -- A switch's default case should be the first or last case + ST1016 = true, -- Use consistent method receiver names + ST1017 = true, -- Don't use Yoda conditions + ST1018 = true, -- Avoid zero-width and control characters in string literals + ST1019 = true, -- Importing the same package multiple times + ST1020 = true, -- The documentation of an exported function should start with the function's name + ST1021 = true, -- The documentation of an exported type should start with type's name + ST1022 = true, -- The documentation of an exported variable/constant should start with variable's name + ST1023 = true, -- Redundant type in variable declaration + + -- ========================================== + -- 4. QF Series: Staticcheck Quick Fixes + -- ========================================== + QF1001 = true, -- Apply De Morgan's law + QF1002 = true, -- Convert untagged switch to tagged switch + QF1003 = true, -- Convert if/else-if chain to tagged switch + QF1004 = true, -- Use strings.ReplaceAll instead of strings.Replace + QF1005 = true, -- Expand call to math.Pow + QF1006 = true, -- Lift if+break into loop condition + QF1007 = true, -- Merge conditional assignment into variable declaration + QF1008 = true, -- Omit embedded fields from selector expression + QF1009 = true, -- Use time.Time.Equal instead of == + QF1010 = true, -- Convert slice of bytes to string when printing it + QF1011 = true, -- Omit redundant type from variable declaration + QF1012 = true, -- Use fmt.Fprintf(x, ...) instead of x.Write(fmt.Sprintf(...)) }, - hints = { assignVariableTypes = true, compositeLiteralFields = true, @@ -851,18 +976,17 @@ require('lazy').setup({ parameterNames = true, rangeVariableTypes = true, }, - - -- Code lenses codelenses = { - gc_details = true, -- Show memory details on functions - generate = true, -- Enable 'go generate' code lens - regenerate_cgo = true, -- Regenerate cgo definitions - tidy = true, -- Enable 'go mod tidy' lens - upgrade_dependency = true, -- Upgrade dependencies - vendor = true, -- Vendor dependencies - test = true, -- Enable run/test lenses + gc_details = true, -- Toggles the display of compiler optimization details (escape analysis, inlining) + generate = true, -- Injects a "run go generate" link above `//go:generate` comments + regenerate_cgo = true, -- Injects a link to regenerate C declarations above `import "C"` + run_govulncheck = true, -- (Legacy) Injects a link above `module` in go.mod to run vulnerability analysis + test = true, -- Injects "run test" and "debug test" links above `Test...` and `Benchmark...` functions + tidy = true, -- Injects a "run go mod tidy" link above the `module` directive in go.mod + upgrade_dependency = true, -- Injects links in go.mod to upgrade direct/transitive dependencies + vendor = true, -- Injects a "run go mod vendor" link in go.mod + vulncheck = true, -- (Modern) Injects a synchronous govulncheck link in go.mod }, - -- Import management gofumpt = true, -- Use `gofumpt` formatting style directoryFilters = { '-vendor' }, -- Exclude vendor directories from analysis From 4782828d2ff74863f324d83848d425b6c295cda4 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Tue, 17 Mar 2026 18:02:15 -0400 Subject: [PATCH 44/46] fix --- init.lua | 242 +++++++++++++++----------------- lua/kickstart/plugins/debug.lua | 1 + 2 files changed, 118 insertions(+), 125 deletions(-) diff --git a/init.lua b/init.lua index 91fed44fa8d..42b109257ce 100644 --- a/init.lua +++ b/init.lua @@ -619,7 +619,19 @@ require('lazy').setup({ -- Automatically install LSPs and related tools to stdpath for Neovim -- Mason must be loaded before its dependents so we need to set it up here. -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` - { 'mason-org/mason.nvim', opts = {} }, + { + 'mason-org/mason.nvim', + opts = { + ensure_installed = { + 'goimports', + 'gofumpt', + 'gomodifytags', + 'impl', + 'golangci-lint', + 'delve', + }, + }, + }, 'mason-org/mason-lspconfig.nvim', 'WhoIsSethDaniel/mason-tool-installer.nvim', @@ -710,10 +722,6 @@ require('lazy').setup({ map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition') -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10) - ---@param client vim.lsp.Client - ---@param method vim.lsp.protocol.Method - ---@param bufnr? integer some lsp support methods only in specific files - ---@return boolean local function client_supports_method(client, method, bufnr) if vim.fn.has 'nvim-0.11' == 1 then return client:supports_method(method, bufnr) @@ -722,12 +730,31 @@ require('lazy').setup({ end end + local client = vim.lsp.get_client_by_id(event.data.client_id) + + -- ========================================================================= + -- NEW: The gopls Semantic Tokens Workaround + -- ========================================================================= + if client and client.name == 'gopls' and not client.server_capabilities.semanticTokensProvider then + local semantic = client.config.capabilities.textDocument.semanticTokens + if semantic then + client.server_capabilities.semanticTokensProvider = { + full = true, + legend = { + tokenTypes = semantic.tokenTypes, + tokenModifiers = semantic.tokenModifiers, + }, + range = true, + } + end + end + -- ========================================================================= + -- The following two autocommands are used to highlight references of the -- word under your cursor when your cursor rests there for a little while. -- See `:help CursorHold` for information about when this is executed -- -- When you move your cursor, the highlights will be cleared (the second autocommand). - local client = vim.lsp.get_client_by_id(event.data.client_id) if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { @@ -810,34 +837,35 @@ require('lazy').setup({ -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ local servers = { clangd = {}, + + -- ========================================================================= + -- UPDATED: The unified "God Mode" gopls config + -- ========================================================================= gopls = { settings = { gopls = { + -- Use just ONE method for build flags to avoid conflicts buildFlags = { '-tags', 'functional,integration,small,medium,large', }, - env = { - GOFLAGS = '-tags=functional,integration,small,medium,large', - }, + -- Completion settings - completeUnimported = true, -- Suggest symbols from packages that are not yet imported - usePlaceholders = true, -- Insert argument placeholders for functions - deepCompletion = true, -- Include deep completions (e.g., struct fields) - matcher = 'Fuzzy', -- Matching algorithm for completions + completeUnimported = true, + usePlaceholders = true, + deepCompletion = true, + matcher = 'Fuzzy', -- Hover and signature help - hoverKind = 'FullDocumentation', -- Show full documentation in hover + hoverKind = 'FullDocumentation', linkTarget = 'pkg.go.dev', - linksInHover = true, -- Show documentation links in hover popups + linksInHover = true, -- Static analysis and diagnostics - -- Static analysis and diagnostics - staticcheck = true, -- Enable additional static analysis checks + staticcheck = true, -- THIS automatically runs the officially supported staticcheck suite + analyses = { - -- ========================================== - -- 1. Core 'go vet' & gopls Specific Checks - -- ========================================== + -- Only natively supported go vet / gopls checks go here asmdecl = true, assign = true, atomic = true, @@ -872,7 +900,6 @@ require('lazy').setup({ unusedresult = true, deepequalerrors = true, embed = true, - fieldalignment = true, fillreturns = true, infertypeargs = true, nilness = true, @@ -889,84 +916,8 @@ require('lazy').setup({ unusedvariable = true, unusedwrite = true, useany = true, - - -- ========================================== - -- 2. S Series: Staticcheck Simplifications - -- ========================================== - S1000 = true, -- Use plain channel send or receive instead of single-case select - S1001 = true, -- Replace for loop with call to copy - S1002 = true, -- Omit comparison with boolean constant - S1003 = true, -- Replace call to strings.Index with strings.Contains - S1004 = true, -- Replace call to bytes.Compare with bytes.Equal - S1005 = true, -- Drop unnecessary use of the blank identifier - S1006 = true, -- Use 'for { ... }' for infinite loops - S1007 = true, -- Simplify regular expression by using raw string literal - S1008 = true, -- Simplify returning boolean expression - S1009 = true, -- Omit redundant nil check on slices, maps, and channels - S1010 = true, -- Omit default slice index - S1011 = true, -- Use a single append to concatenate two slices - S1012 = true, -- Replace time.Now().Sub(x) with time.Since(x) - S1016 = true, -- Use a type conversion instead of manually copying struct fields - S1017 = true, -- Replace manual trimming with strings.TrimPrefix - S1018 = true, -- Use 'copy' for sliding elements - S1019 = true, -- Simplify 'make' call by omitting redundant arguments - S1020 = true, -- Omit redundant nil check in type assertion - S1021 = true, -- Merge variable declaration and assignment - S1023 = true, -- Omit redundant control flow (e.g. return in void func) - S1024 = true, -- Replace x.Sub(time.Now()) with time.Until(x) - S1025 = true, -- Don't use fmt.Sprintf("%s", x) unnecessarily - S1028 = true, -- Simplify error construction with fmt.Errorf - S1029 = true, -- Range over string rather than running loop over bytes - S1030 = true, -- Use bytes.Buffer.String or bytes.Buffer.Bytes - S1031 = true, -- Omit redundant nil check around loop - S1032 = true, -- Use sort.Ints(x), sort.Float64s(x), and sort.Strings(x) - S1033 = true, -- Unnecessary guard around call to delete - S1034 = true, -- Use result of type assertion to simplify cases - S1035 = true, -- Redundant call to net/http.CanonicalHeaderKey - S1036 = true, -- Unnecessary guard around map access - S1037 = true, -- Elaborate sleep with time.Sleep - S1038 = true, -- Unnecessarily complex formatting directives - S1039 = true, -- Unnecessary use of fmt.Sprint - S1040 = true, -- Type assertion to current type - - -- ========================================== - -- 3. ST Series: Staticcheck Style Checks - -- ========================================== - ST1000 = true, -- Incorrect or missing package comment - ST1001 = true, -- Dot imports are discouraged - ST1003 = true, -- Poorly chosen identifier names (e.g. snake_case in Go) - ST1005 = true, -- Incorrectly formatted error string - ST1006 = true, -- Poorly chosen receiver name - ST1008 = true, -- A function's error value should be its last return value - ST1011 = true, -- Poorly chosen name for variable of type time.Duration - ST1012 = true, -- Poorly chosen name for error variable - ST1013 = true, -- Should use constants for HTTP error codes - ST1015 = true, -- A switch's default case should be the first or last case - ST1016 = true, -- Use consistent method receiver names - ST1017 = true, -- Don't use Yoda conditions - ST1018 = true, -- Avoid zero-width and control characters in string literals - ST1019 = true, -- Importing the same package multiple times - ST1020 = true, -- The documentation of an exported function should start with the function's name - ST1021 = true, -- The documentation of an exported type should start with type's name - ST1022 = true, -- The documentation of an exported variable/constant should start with variable's name - ST1023 = true, -- Redundant type in variable declaration - - -- ========================================== - -- 4. QF Series: Staticcheck Quick Fixes - -- ========================================== - QF1001 = true, -- Apply De Morgan's law - QF1002 = true, -- Convert untagged switch to tagged switch - QF1003 = true, -- Convert if/else-if chain to tagged switch - QF1004 = true, -- Use strings.ReplaceAll instead of strings.Replace - QF1005 = true, -- Expand call to math.Pow - QF1006 = true, -- Lift if+break into loop condition - QF1007 = true, -- Merge conditional assignment into variable declaration - QF1008 = true, -- Omit embedded fields from selector expression - QF1009 = true, -- Use time.Time.Equal instead of == - QF1010 = true, -- Convert slice of bytes to string when printing it - QF1011 = true, -- Omit redundant type from variable declaration - QF1012 = true, -- Use fmt.Fprintf(x, ...) instead of x.Write(fmt.Sprintf(...)) }, + hints = { assignVariableTypes = true, compositeLiteralFields = true, @@ -976,24 +927,23 @@ require('lazy').setup({ parameterNames = true, rangeVariableTypes = true, }, + codelenses = { - gc_details = true, -- Toggles the display of compiler optimization details (escape analysis, inlining) - generate = true, -- Injects a "run go generate" link above `//go:generate` comments - regenerate_cgo = true, -- Injects a link to regenerate C declarations above `import "C"` - run_govulncheck = true, -- (Legacy) Injects a link above `module` in go.mod to run vulnerability analysis - test = true, -- Injects "run test" and "debug test" links above `Test...` and `Benchmark...` functions - tidy = true, -- Injects a "run go mod tidy" link above the `module` directive in go.mod - upgrade_dependency = true, -- Injects links in go.mod to upgrade direct/transitive dependencies - vendor = true, -- Injects a "run go mod vendor" link in go.mod - vulncheck = true, -- (Modern) Injects a synchronous govulncheck link in go.mod + gc_details = true, + generate = true, + regenerate_cgo = true, + test = true, + tidy = true, + upgrade_dependency = true, + vendor = true, + vulncheck = true, }, - -- Import management - gofumpt = true, -- Use `gofumpt` formatting style - directoryFilters = { '-vendor' }, -- Exclude vendor directories from analysis + + gofumpt = true, + directoryFilters = { '-vendor' }, }, }, - -- Auto organize imports on save on_attach = function(client, bufnr) if client.name == 'gopls' then vim.api.nvim_create_autocmd('BufWritePre', { @@ -1008,6 +958,8 @@ require('lazy').setup({ end end, }, + -- ========================================================================= + pyright = {}, rust_analyzer = {}, -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs @@ -1018,12 +970,12 @@ require('lazy').setup({ -- But for many setups, the LSP (`ts_ls`) will work just fine ts_ls = { settings = {}, - on_attach = function(client) + on_attach = function(client, bufnr) client.server_capabilities.documentFormattingProvider = false client.server_capabilities.documentRangeFormattingProvider = false -- Disable format on save for this buffer - vim.api.nvim_buf_set_option(bufnr, 'formatoptions', '') + vim.api.nvim_set_option_value('formatoptions', '', { buf = bufnr }) vim.api.nvim_create_autocmd('BufWritePre', { buffer = bufnr, callback = function() @@ -1032,7 +984,7 @@ require('lazy').setup({ }) end, }, - -- + lua_ls = { -- cmd = { ... }, -- filetypes = { ... }, @@ -1048,6 +1000,14 @@ require('lazy').setup({ }, }, } + -- + -- -- + -- -- FORCE GOPLS SETUP + -- -- + -- local gopls_config = servers.gopls + -- gopls_config.capabilities = vim.tbl_deep_extend('force', {}, capabilities, gopls_config.capabilities or {}) + -- require('lspconfig').gopls.setup(gopls_config) + -- -- Ensure the servers and tools above are installed -- @@ -1068,26 +1028,41 @@ require('lazy').setup({ 'sql-formatter', 'prettier', 'staticcheck', + 'goimports', + 'gofumpt', + 'gomodifytags', + 'impl', + 'golangci-lint', + 'delve', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } require('mason-lspconfig').setup { ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer) automatic_installation = false, - handlers = { - function(server_name) - local server = servers[server_name] or {} - -- This handles overriding only values explicitly passed - -- by the server configuration above. Useful when disabling - -- certain features of an LSP (for example, turning off formatting for ts_ls) - server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) - require('lspconfig')[server_name].setup(server) - end, - }, + -- We are removing the handlers block here to prevent Mason + -- from silently skipping unmanaged/globally-installed binaries. } + + -- Ensure lspconfig is loaded so defaults are populated in Nvim 0.11 + require 'lspconfig' + + -- Explicitly set up all servers defined in the servers table. + for server_name, server in pairs(servers) do + server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) + + if vim.fn.has 'nvim-0.11' == 1 then + -- Neovim 0.11+ native config API (prevents deprecation warning) + local def = vim.lsp.config[server_name] or {} + vim.lsp.config[server_name] = vim.tbl_deep_extend('force', def, server) + vim.lsp.enable(server_name) + else + -- Neovim 0.10 and earlier legacy API + require('lspconfig')[server_name].setup(server) + end + end end, }, - { -- Autoformat 'stevearc/conform.nvim', event = { 'BufWritePre' }, @@ -1325,6 +1300,9 @@ require('lazy').setup({ 'vim', 'vimdoc', 'go', + 'gomod', + 'gowork', + 'gosum', 'rust', 'python', 'json', @@ -1364,6 +1342,20 @@ require('lazy').setup({ -- and sets the filetype to "helm" instead of "yaml" end, }, + { + 'fredrikaverpil/neotest-golang', + }, + { + 'nvim-mini/mini.icons', + opts = { + file = { + ['.go-version'] = { glyph = '', hl = 'MiniIconsBlue' }, + }, + filetype = { + gotmpl = { glyph = '󰟓', hl = 'MiniIconsGrey' }, + }, + }, + }, -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the -- init.lua. If you want these files, they are in the repository, so you can just download them and diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 8d473ed33de..8c81d08c049 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -138,6 +138,7 @@ return { -- Install golang specific config require('dap-go').setup { + dap_configurations_from_gopls = false, delve = { -- On Windows delve must be run attached or it crashes. -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring From afdb4a3ae43b6f0abe72baceaf1de4025eefe952 Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 20 Mar 2026 13:45:01 -0400 Subject: [PATCH 45/46] fix --- init.lua | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/init.lua b/init.lua index 42b109257ce..482e36a7292 100644 --- a/init.lua +++ b/init.lua @@ -621,16 +621,7 @@ require('lazy').setup({ -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` { 'mason-org/mason.nvim', - opts = { - ensure_installed = { - 'goimports', - 'gofumpt', - 'gomodifytags', - 'impl', - 'golangci-lint', - 'delve', - }, - }, + opts = {}, }, 'mason-org/mason-lspconfig.nvim', 'WhoIsSethDaniel/mason-tool-installer.nvim', From ffa39ac7e4c96ac7fbf3cb4ef856fbfe7ca0090e Mon Sep 17 00:00:00 2001 From: jordanyono Date: Fri, 27 Mar 2026 12:20:25 -0400 Subject: [PATCH 46/46] things --- init.lua | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 482e36a7292..a9dfc5dc212 100644 --- a/init.lua +++ b/init.lua @@ -344,6 +344,17 @@ require('lazy').setup({ vim.keymap.set(mode, l, r, opts) end + -- Detect branch once per buffer attach + local primary_branch = 'main' + local handle = io.popen 'git branch --list main master' + if handle then + local result = handle:read '*a' + handle:close() + if not string.find(result, 'main') and string.find(result, 'master') then + primary_branch = 'master' + end + end + -- Navigation map('n', ']c', function() if vim.wo.diff then @@ -362,14 +373,13 @@ require('lazy').setup({ end, { desc = 'Jump to previous git [c]hange' }) -- Actions - -- visual mode map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' }) map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' }) - -- normal mode + map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) @@ -378,13 +388,20 @@ require('lazy').setup({ map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) map('n', 'hB', gitsigns.blame, { desc = 'git [B]lame toggle' }) + + -- Diff Mappings map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' }) + + map('n', 'hm', function() + gitsigns.diffthis(primary_branch) + end, { desc = 'git diff against [m]ain/master' }) + -- Toggles - map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) - map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) + map('n', 'ht', gitsigns.toggle_current_line_blame, { desc = '[t]oggle git show blame line' }) + map('n', 'hv', gitsigns.preview_hunk_inline, { desc = 'toggle git show deleted ([v]iew)' }) end, }, },