From 5623cd033f823f06afa75739813066b13aa39598 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 11:44:31 +0200 Subject: [PATCH 01/47] Added lua/lazy-bootstrap.lua --- init.lua | 18 +++--------------- lua/lazy-bootstrap.lua | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 lua/lazy-bootstrap.lua diff --git a/init.lua b/init.lua index a7667ddcc63..16cc97768ad 100644 --- a/init.lua +++ b/init.lua @@ -37,27 +37,15 @@ I hope you enjoy your Neovim journey, P.S. You can delete this when you're done too. It's your config now :) --]] + -- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' --- Install package manager --- https://github.com/folke/lazy.nvim --- `:help lazy.nvim.txt` for more info -local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' -if not vim.loop.fs_stat(lazypath) then - vim.fn.system { - 'git', - 'clone', - '--filter=blob:none', - 'https://github.com/folke/lazy.nvim.git', - '--branch=stable', -- latest stable release - lazypath, - } -end -vim.opt.rtp:prepend(lazypath) +-- Install lazy plugin manager +require('lazy-bootstrap') -- NOTE: Here is where you install your plugins. -- You can configure plugins using the `config` key. diff --git a/lua/lazy-bootstrap.lua b/lua/lazy-bootstrap.lua new file mode 100644 index 00000000000..70aebf55ba8 --- /dev/null +++ b/lua/lazy-bootstrap.lua @@ -0,0 +1,17 @@ +-- [[ Bootstrap lazy plugin manager ]] +-- https://github.com/folke/lazy.nvim +-- `:help lazy.nvim.txt` for more info +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not vim.loop.fs_stat(lazypath) then + vim.fn.system { + 'git', + 'clone', + '--filter=blob:none', + 'https://github.com/folke/lazy.nvim.git', + '--branch=stable', -- latest stable release + lazypath, + } +end +vim.opt.rtp:prepend(lazypath) + +-- vim: ts=2 sts=2 sw=2 et From bc8966a42cd890c12c50935852d0bcf2cb002932 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 11:50:38 +0200 Subject: [PATCH 02/47] Added lua/lazy-plugins.lua --- init.lua | 172 +----------------------------------------- lua/lazy-plugins.lua | 173 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 175 insertions(+), 170 deletions(-) create mode 100644 lua/lazy-plugins.lua diff --git a/init.lua b/init.lua index 16cc97768ad..2c00435a6d7 100644 --- a/init.lua +++ b/init.lua @@ -47,176 +47,8 @@ vim.g.maplocalleader = ' ' -- Install lazy plugin manager require('lazy-bootstrap') --- NOTE: Here is where you install your plugins. --- You can configure plugins using the `config` key. --- --- You can also configure plugins after the setup call, --- as they will be available in your neovim runtime. -require('lazy').setup({ - -- NOTE: First, some plugins that don't require any configuration - - -- Git related plugins - 'tpope/vim-fugitive', - 'tpope/vim-rhubarb', - - -- Detect tabstop and shiftwidth automatically - 'tpope/vim-sleuth', - - -- NOTE: This is where your plugins related to LSP can be installed. - -- The configuration is done below. Search for lspconfig to find it below. - { - -- LSP Configuration & Plugins - 'neovim/nvim-lspconfig', - dependencies = { - -- Automatically install LSPs to stdpath for neovim - 'williamboman/mason.nvim', - 'williamboman/mason-lspconfig.nvim', - - -- Useful status updates for LSP - -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` - { 'j-hui/fidget.nvim', tag = 'legacy', opts = {} }, - - -- Additional lua configuration, makes nvim stuff amazing! - 'folke/neodev.nvim', - }, - }, - - { - -- Autocompletion - 'hrsh7th/nvim-cmp', - dependencies = { - -- Snippet Engine & its associated nvim-cmp source - 'L3MON4D3/LuaSnip', - 'saadparwaiz1/cmp_luasnip', - - -- Adds LSP completion capabilities - 'hrsh7th/cmp-nvim-lsp', - - -- Adds a number of user-friendly snippets - 'rafamadriz/friendly-snippets', - }, - }, - - -- Useful plugin to show you pending keybinds. - { 'folke/which-key.nvim', opts = {} }, - { - -- Adds git related signs to the gutter, as well as utilities for managing changes - 'lewis6991/gitsigns.nvim', - opts = { - -- See `:help gitsigns.txt` - signs = { - add = { text = '+' }, - change = { text = '~' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, - }, - on_attach = function(bufnr) - vim.keymap.set('n', 'hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) - - -- don't override the built-in and fugitive keymaps - local gs = package.loaded.gitsigns - vim.keymap.set({ 'n', 'v' }, ']c', function() - if vim.wo.diff then - return ']c' - end - vim.schedule(function() - gs.next_hunk() - end) - return '' - end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) - vim.keymap.set({ 'n', 'v' }, '[c', function() - if vim.wo.diff then - return '[c' - end - vim.schedule(function() - gs.prev_hunk() - end) - return '' - end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) - end, - }, - }, - - { - -- Theme inspired by Atom - 'navarasu/onedark.nvim', - priority = 1000, - config = function() - vim.cmd.colorscheme 'onedark' - end, - }, - - { - -- Set lualine as statusline - 'nvim-lualine/lualine.nvim', - -- See `:help lualine.txt` - opts = { - options = { - icons_enabled = false, - theme = 'onedark', - component_separators = '|', - section_separators = '', - }, - }, - }, - - { - -- Add indentation guides even on blank lines - 'lukas-reineke/indent-blankline.nvim', - -- Enable `lukas-reineke/indent-blankline.nvim` - -- See `:help ibl` - main = 'ibl', - opts = {}, - }, - - -- "gc" to comment visual regions/lines - { 'numToStr/Comment.nvim', opts = {} }, - - -- Fuzzy Finder (files, lsp, etc) - { - 'nvim-telescope/telescope.nvim', - branch = '0.1.x', - dependencies = { - 'nvim-lua/plenary.nvim', - -- Fuzzy Finder Algorithm which requires local dependencies to be built. - -- Only load if `make` is available. Make sure you have the system - -- requirements installed. - { - 'nvim-telescope/telescope-fzf-native.nvim', - -- NOTE: If you are having trouble with this installation, - -- refer to the README for telescope-fzf-native for more instructions. - build = 'make', - cond = function() - return vim.fn.executable 'make' == 1 - end, - }, - }, - }, - - { - -- Highlight, edit, and navigate code - 'nvim-treesitter/nvim-treesitter', - dependencies = { - 'nvim-treesitter/nvim-treesitter-textobjects', - }, - build = ':TSUpdate', - }, - - -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart - -- These are some example plugins that I've included in the kickstart repository. - -- Uncomment any of the lines below to enable them. - -- require 'kickstart.plugins.autoformat', - -- require 'kickstart.plugins.debug', - - -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` - -- You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping - -- up-to-date with whatever is in the kickstart repo. - -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- - -- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins - -- { import = 'custom.plugins' }, -}, {}) +-- Setup lazy plugin manager - configure plugins +require('lazy-plugins') -- [[ Setting options ]] -- See `:help vim.o` diff --git a/lua/lazy-plugins.lua b/lua/lazy-plugins.lua new file mode 100644 index 00000000000..03418e2a13b --- /dev/null +++ b/lua/lazy-plugins.lua @@ -0,0 +1,173 @@ +-- [[ Setup lazy plugin manager ]] +-- NOTE: Here is where you install your plugins. +-- You can configure plugins using the `config` key. +-- +-- You can also configure plugins after the setup call, +-- as they will be available in your neovim runtime. +require('lazy').setup({ + -- NOTE: First, some plugins that don't require any configuration + + -- Git related plugins + 'tpope/vim-fugitive', + 'tpope/vim-rhubarb', + + -- Detect tabstop and shiftwidth automatically + 'tpope/vim-sleuth', + + -- NOTE: This is where your plugins related to LSP can be installed. + -- The configuration is done below. Search for lspconfig to find it below. + { + -- LSP Configuration & Plugins + 'neovim/nvim-lspconfig', + dependencies = { + -- Automatically install LSPs to stdpath for neovim + 'williamboman/mason.nvim', + 'williamboman/mason-lspconfig.nvim', + + -- Useful status updates for LSP + -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` + { 'j-hui/fidget.nvim', tag = 'legacy', opts = {} }, + + -- Additional lua configuration, makes nvim stuff amazing! + 'folke/neodev.nvim', + }, + }, + + { + -- Autocompletion + 'hrsh7th/nvim-cmp', + dependencies = { + -- Snippet Engine & its associated nvim-cmp source + 'L3MON4D3/LuaSnip', + 'saadparwaiz1/cmp_luasnip', + + -- Adds LSP completion capabilities + 'hrsh7th/cmp-nvim-lsp', + + -- Adds a number of user-friendly snippets + 'rafamadriz/friendly-snippets', + }, + }, + + -- Useful plugin to show you pending keybinds. + { 'folke/which-key.nvim', opts = {} }, + { + -- Adds git related signs to the gutter, as well as utilities for managing changes + 'lewis6991/gitsigns.nvim', + opts = { + -- See `:help gitsigns.txt` + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + }, + on_attach = function(bufnr) + vim.keymap.set('n', 'hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) + + -- don't override the built-in and fugitive keymaps + local gs = package.loaded.gitsigns + vim.keymap.set({ 'n', 'v' }, ']c', function() + if vim.wo.diff then + return ']c' + end + vim.schedule(function() + gs.next_hunk() + end) + return '' + end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) + vim.keymap.set({ 'n', 'v' }, '[c', function() + if vim.wo.diff then + return '[c' + end + vim.schedule(function() + gs.prev_hunk() + end) + return '' + end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) + end, + }, + }, + + { + -- Theme inspired by Atom + 'navarasu/onedark.nvim', + priority = 1000, + config = function() + vim.cmd.colorscheme 'onedark' + end, + }, + + { + -- Set lualine as statusline + 'nvim-lualine/lualine.nvim', + -- See `:help lualine.txt` + opts = { + options = { + icons_enabled = false, + theme = 'onedark', + component_separators = '|', + section_separators = '', + }, + }, + }, + + { + -- Add indentation guides even on blank lines + 'lukas-reineke/indent-blankline.nvim', + -- Enable `lukas-reineke/indent-blankline.nvim` + -- See `:help ibl` + main = 'ibl', + opts = {}, + }, + + -- "gc" to comment visual regions/lines + { 'numToStr/Comment.nvim', opts = {} }, + + -- Fuzzy Finder (files, lsp, etc) + { + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + dependencies = { + 'nvim-lua/plenary.nvim', + -- Fuzzy Finder Algorithm which requires local dependencies to be built. + -- Only load if `make` is available. Make sure you have the system + -- requirements installed. + { + 'nvim-telescope/telescope-fzf-native.nvim', + -- NOTE: If you are having trouble with this installation, + -- refer to the README for telescope-fzf-native for more instructions. + build = 'make', + cond = function() + return vim.fn.executable 'make' == 1 + end, + }, + }, + }, + + { + -- Highlight, edit, and navigate code + 'nvim-treesitter/nvim-treesitter', + dependencies = { + 'nvim-treesitter/nvim-treesitter-textobjects', + }, + build = ':TSUpdate', + }, + + -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart + -- These are some example plugins that I've included in the kickstart repository. + -- Uncomment any of the lines below to enable them. + -- require 'kickstart.plugins.autoformat', + -- require 'kickstart.plugins.debug', + + -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` + -- You can use this folder to prevent any conflicts with this init.lua if you're interested in keeping + -- up-to-date with whatever is in the kickstart repo. + -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. + -- + -- For additional information see: https://github.com/folke/lazy.nvim#-structuring-your-plugins + -- { import = 'custom.plugins' }, +}, {}) + +-- vim: ts=2 sts=2 sw=2 et From 7070190fa9cd058159034dc700d48f316200f424 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:13:07 +0200 Subject: [PATCH 03/47] Added lua/options.lua --- init.lua | 42 ++---------------------------------------- lua/options.lua | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 40 deletions(-) create mode 100644 lua/options.lua diff --git a/init.lua b/init.lua index 2c00435a6d7..fa3cdfaf8b5 100644 --- a/init.lua +++ b/init.lua @@ -50,46 +50,8 @@ require('lazy-bootstrap') -- Setup lazy plugin manager - configure plugins require('lazy-plugins') --- [[ Setting options ]] --- See `:help vim.o` --- NOTE: You can change these options as you wish! - --- Set highlight on search -vim.o.hlsearch = false - --- Make line numbers default -vim.wo.number = true - --- Enable mouse mode -vim.o.mouse = 'a' - --- Sync clipboard between OS and Neovim. --- Remove this option if you want your OS clipboard to remain independent. --- See `:help 'clipboard'` -vim.o.clipboard = 'unnamedplus' - --- Enable break indent -vim.o.breakindent = true - --- Save undo history -vim.o.undofile = true - --- Case-insensitive searching UNLESS \C or capital in search -vim.o.ignorecase = true -vim.o.smartcase = true - --- Keep signcolumn on by default -vim.wo.signcolumn = 'yes' - --- Decrease update time -vim.o.updatetime = 250 -vim.o.timeoutlen = 300 - --- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' - --- NOTE: You should make sure your terminal supports this -vim.o.termguicolors = true +-- Set options +require('options') -- [[ Basic Keymaps ]] diff --git a/lua/options.lua b/lua/options.lua new file mode 100644 index 00000000000..a636e35549e --- /dev/null +++ b/lua/options.lua @@ -0,0 +1,42 @@ +-- [[ Setting options ]] +-- See `:help vim.o` +-- NOTE: You can change these options as you wish! + +-- Set highlight on search +vim.o.hlsearch = false + +-- Make line numbers default +vim.wo.number = true + +-- Enable mouse mode +vim.o.mouse = 'a' + +-- Sync clipboard between OS and Neovim. +-- Remove this option if you want your OS clipboard to remain independent. +-- See `:help 'clipboard'` +vim.o.clipboard = 'unnamedplus' + +-- Enable break indent +vim.o.breakindent = true + +-- Save undo history +vim.o.undofile = true + +-- Case-insensitive searching UNLESS \C or capital in search +vim.o.ignorecase = true +vim.o.smartcase = true + +-- Keep signcolumn on by default +vim.wo.signcolumn = 'yes' + +-- Decrease update time +vim.o.updatetime = 250 +vim.o.timeoutlen = 300 + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noselect' + +-- NOTE: You should make sure your terminal supports this +vim.o.termguicolors = true + +-- vim: ts=2 sts=2 sw=2 et From 79e010e68130a639be0cbfaf9db35f8e975897a9 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:16:17 +0200 Subject: [PATCH 04/47] Added lua/keymaps.lua --- init.lua | 28 ++-------------------------- lua/keymaps.lua | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 lua/keymaps.lua diff --git a/init.lua b/init.lua index fa3cdfaf8b5..d7c519f1dfe 100644 --- a/init.lua +++ b/init.lua @@ -53,26 +53,8 @@ require('lazy-plugins') -- Set options require('options') --- [[ Basic Keymaps ]] - --- Keymaps for better default experience --- See `:help vim.keymap.set()` -vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) - --- Remap for dealing with word wrap -vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) - --- [[ Highlight on yank ]] --- See `:help vim.highlight.on_yank()` -local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) -vim.api.nvim_create_autocmd('TextYankPost', { - callback = function() - vim.highlight.on_yank() - end, - group = highlight_group, - pattern = '*', -}) +-- Configure keymaps +require('keymaps') -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` @@ -178,12 +160,6 @@ vim.defer_fn(function() } end, 0) --- Diagnostic keymaps -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) - -- [[ Configure LSP ]] -- This function gets run when an LSP connects to a particular buffer. local on_attach = function(_, bufnr) diff --git a/lua/keymaps.lua b/lua/keymaps.lua new file mode 100644 index 00000000000..22d77965d18 --- /dev/null +++ b/lua/keymaps.lua @@ -0,0 +1,28 @@ +-- [[ Basic Keymaps ]] + +-- Keymaps for better default experience +-- See `:help vim.keymap.set()` +vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) + +-- Remap for dealing with word wrap +vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) + +-- [[ Highlight on yank ]] +-- See `:help vim.highlight.on_yank()` +local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) +vim.api.nvim_create_autocmd('TextYankPost', { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = '*', +}) + +-- Diagnostic keymaps +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) + +-- vim: ts=2 sts=2 sw=2 et From 7a354c714eb2b787a2370d89052cc9c9c514726c Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:24:25 +0200 Subject: [PATCH 05/47] Added lua/telescope-setup.lua --- init.lua | 36 ++---------------------------------- lua/telescope-setup.lua | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 34 deletions(-) create mode 100644 lua/telescope-setup.lua diff --git a/init.lua b/init.lua index d7c519f1dfe..81db1213d51 100644 --- a/init.lua +++ b/init.lua @@ -56,40 +56,8 @@ require('options') -- Configure keymaps require('keymaps') --- [[ Configure Telescope ]] --- See `:help telescope` and `:help telescope.setup()` -require('telescope').setup { - defaults = { - mappings = { - i = { - [''] = false, - [''] = false, - }, - }, - }, -} - --- Enable telescope fzf native, if installed -pcall(require('telescope').load_extension, 'fzf') - --- See `:help telescope.builtin` -vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) -vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) -vim.keymap.set('n', '/', function() - -- You can pass additional configuration to telescope to change theme, layout, etc. - require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { - winblend = 10, - previewer = false, - }) -end, { desc = '[/] Fuzzily search in current buffer' }) - -vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) -vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) -vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) -vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) -vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) -vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) -vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) +-- Configure Telescope (fuzzy finder) +require('telescope-setup') -- [[ Configure Treesitter ]] -- See `:help nvim-treesitter` diff --git a/lua/telescope-setup.lua b/lua/telescope-setup.lua new file mode 100644 index 00000000000..be340512ab4 --- /dev/null +++ b/lua/telescope-setup.lua @@ -0,0 +1,36 @@ +-- [[ Configure Telescope ]] +-- See `:help telescope` and `:help telescope.setup()` +require('telescope').setup { + defaults = { + mappings = { + i = { + [''] = false, + [''] = false, + }, + }, + }, +} + +-- Enable telescope fzf native, if installed +pcall(require('telescope').load_extension, 'fzf') + +-- See `:help telescope.builtin` +vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) +vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) +vim.keymap.set('n', '/', function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) +end, { desc = '[/] Fuzzily search in current buffer' }) + +vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) +vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) +vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) +vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) +vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) +vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) +vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) + +-- vim: ts=2 sts=2 sw=2 et From a13e1b0effb01f094d6100f48d82e582ab1ff852 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:27:28 +0200 Subject: [PATCH 06/47] Added lua/treesitter-setup.lua --- init.lua | 70 ++-------------------------------------- lua/treesitter-setup.lua | 70 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 68 deletions(-) create mode 100644 lua/treesitter-setup.lua diff --git a/init.lua b/init.lua index 81db1213d51..4dfc5606ffd 100644 --- a/init.lua +++ b/init.lua @@ -59,74 +59,8 @@ require('keymaps') -- Configure Telescope (fuzzy finder) require('telescope-setup') --- [[ Configure Treesitter ]] --- See `:help nvim-treesitter` --- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}' -vim.defer_fn(function() - require('nvim-treesitter.configs').setup { - -- Add languages to be installed here that you want installed for treesitter - ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' }, - - -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) - auto_install = false, - - highlight = { enable = true }, - indent = { enable = true }, - incremental_selection = { - enable = true, - keymaps = { - init_selection = '', - node_incremental = '', - scope_incremental = '', - node_decremental = '', - }, - }, - textobjects = { - select = { - enable = true, - lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ['aa'] = '@parameter.outer', - ['ia'] = '@parameter.inner', - ['af'] = '@function.outer', - ['if'] = '@function.inner', - ['ac'] = '@class.outer', - ['ic'] = '@class.inner', - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_next_start = { - [']m'] = '@function.outer', - [']]'] = '@class.outer', - }, - goto_next_end = { - [']M'] = '@function.outer', - [']['] = '@class.outer', - }, - goto_previous_start = { - ['[m'] = '@function.outer', - ['[['] = '@class.outer', - }, - goto_previous_end = { - ['[M'] = '@function.outer', - ['[]'] = '@class.outer', - }, - }, - swap = { - enable = true, - swap_next = { - ['a'] = '@parameter.inner', - }, - swap_previous = { - ['A'] = '@parameter.inner', - }, - }, - }, - } -end, 0) +-- Configure Treesitter (syntax parser for highlighting) +require('treesitter-setup') -- [[ Configure LSP ]] -- This function gets run when an LSP connects to a particular buffer. diff --git a/lua/treesitter-setup.lua b/lua/treesitter-setup.lua new file mode 100644 index 00000000000..78c84e420f3 --- /dev/null +++ b/lua/treesitter-setup.lua @@ -0,0 +1,70 @@ +-- [[ Configure Treesitter ]] +-- See `:help nvim-treesitter` +-- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}' +vim.defer_fn(function() + require('nvim-treesitter.configs').setup { + -- Add languages to be installed here that you want installed for treesitter + ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' }, + + -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) + auto_install = false, + + highlight = { enable = true }, + indent = { enable = true }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = '', + node_incremental = '', + scope_incremental = '', + node_decremental = '', + }, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ['aa'] = '@parameter.outer', + ['ia'] = '@parameter.inner', + ['af'] = '@function.outer', + ['if'] = '@function.inner', + ['ac'] = '@class.outer', + ['ic'] = '@class.inner', + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + [']m'] = '@function.outer', + [']]'] = '@class.outer', + }, + goto_next_end = { + [']M'] = '@function.outer', + [']['] = '@class.outer', + }, + goto_previous_start = { + ['[m'] = '@function.outer', + ['[['] = '@class.outer', + }, + goto_previous_end = { + ['[M'] = '@function.outer', + ['[]'] = '@class.outer', + }, + }, + swap = { + enable = true, + swap_next = { + ['a'] = '@parameter.inner', + }, + swap_previous = { + ['A'] = '@parameter.inner', + }, + }, + }, + } +end, 0) + +-- vim: ts=2 sts=2 sw=2 et From cff9b1339c70f23c7d0d8e4491f4a73c219b8e4f Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:31:11 +0200 Subject: [PATCH 07/47] Added lua/lsp-setup.lua --- init.lua | 111 +--------------------------------------------- lua/lsp-setup.lua | 111 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 109 deletions(-) create mode 100644 lua/lsp-setup.lua diff --git a/init.lua b/init.lua index 4dfc5606ffd..f2d37fe939e 100644 --- a/init.lua +++ b/init.lua @@ -62,115 +62,8 @@ require('telescope-setup') -- Configure Treesitter (syntax parser for highlighting) require('treesitter-setup') --- [[ Configure LSP ]] --- This function gets run when an LSP connects to a particular buffer. -local on_attach = function(_, bufnr) - -- NOTE: Remember that lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself - -- many times. - -- - -- In this case, we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. - local nmap = function(keys, func, desc) - if desc then - desc = 'LSP: ' .. desc - end - - vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) - end - - nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') - nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') - - nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') - nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') - nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') - nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') - nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') - - -- See `:help K` for why this keymap - nmap('K', vim.lsp.buf.hover, 'Hover Documentation') - nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') - - -- Lesser used LSP functionality - nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') - nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') - nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') - nmap('wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, '[W]orkspace [L]ist Folders') - - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - vim.lsp.buf.format() - end, { desc = 'Format current buffer with LSP' }) -end - --- document existing key chains -require('which-key').register { - ['c'] = { name = '[C]ode', _ = 'which_key_ignore' }, - ['d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, - ['g'] = { name = '[G]it', _ = 'which_key_ignore' }, - ['h'] = { name = 'More git', _ = 'which_key_ignore' }, - ['r'] = { name = '[R]ename', _ = 'which_key_ignore' }, - ['s'] = { name = '[S]earch', _ = 'which_key_ignore' }, - ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, -} - --- mason-lspconfig requires that these setup functions are called in this order --- before setting up the servers. -require('mason').setup() -require('mason-lspconfig').setup() - --- Enable the following language servers --- Feel free to add/remove any LSPs that you want here. They will automatically be installed. --- --- Add any additional override configuration in the following tables. They will be passed to --- the `settings` field of the server config. You must look up that documentation yourself. --- --- If you want to override the default filetypes that your language server will attach to you can --- define the property 'filetypes' to the map in question. -local servers = { - -- clangd = {}, - -- gopls = {}, - -- pyright = {}, - -- rust_analyzer = {}, - -- tsserver = {}, - -- html = { filetypes = { 'html', 'twig', 'hbs'} }, - - lua_ls = { - Lua = { - workspace = { checkThirdParty = false }, - telemetry = { enable = false }, - }, - }, -} - --- Setup neovim lua configuration -require('neodev').setup() - --- nvim-cmp supports additional completion capabilities, so broadcast that to servers -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) - --- Ensure the servers above are installed -local mason_lspconfig = require 'mason-lspconfig' - -mason_lspconfig.setup { - ensure_installed = vim.tbl_keys(servers), -} - -mason_lspconfig.setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - capabilities = capabilities, - on_attach = on_attach, - settings = servers[server_name], - filetypes = (servers[server_name] or {}).filetypes, - } - end, -} +-- Configure LSP (Language Server Protocol) +require('lsp-setup') -- [[ Configure nvim-cmp ]] -- See `:help cmp` diff --git a/lua/lsp-setup.lua b/lua/lsp-setup.lua new file mode 100644 index 00000000000..08f35efec60 --- /dev/null +++ b/lua/lsp-setup.lua @@ -0,0 +1,111 @@ +-- [[ Configure LSP ]] +-- This function gets run when an LSP connects to a particular buffer. +local on_attach = function(_, bufnr) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local nmap = function(keys, func, desc) + if desc then + desc = 'LSP: ' .. desc + end + + vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) + end + + nmap('rn', vim.lsp.buf.rename, '[R]e[n]ame') + nmap('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') + + nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') + nmap('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') + nmap('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') + + -- See `:help K` for why this keymap + nmap('K', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + + -- Lesser used LSP functionality + nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + nmap('wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') + nmap('wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') + nmap('wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, '[W]orkspace [L]ist Folders') + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, { desc = 'Format current buffer with LSP' }) +end + +-- document existing key chains +require('which-key').register { + ['c'] = { name = '[C]ode', _ = 'which_key_ignore' }, + ['d'] = { name = '[D]ocument', _ = 'which_key_ignore' }, + ['g'] = { name = '[G]it', _ = 'which_key_ignore' }, + ['h'] = { name = 'More git', _ = 'which_key_ignore' }, + ['r'] = { name = '[R]ename', _ = 'which_key_ignore' }, + ['s'] = { name = '[S]earch', _ = 'which_key_ignore' }, + ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, +} + +-- mason-lspconfig requires that these setup functions are called in this order +-- before setting up the servers. +require('mason').setup() +require('mason-lspconfig').setup() + +-- Enable the following language servers +-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. +-- +-- Add any additional override configuration in the following tables. They will be passed to +-- the `settings` field of the server config. You must look up that documentation yourself. +-- +-- If you want to override the default filetypes that your language server will attach to you can +-- define the property 'filetypes' to the map in question. +local servers = { + -- clangd = {}, + -- gopls = {}, + -- pyright = {}, + -- rust_analyzer = {}, + -- tsserver = {}, + -- html = { filetypes = { 'html', 'twig', 'hbs'} }, + + lua_ls = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, +} + +-- Setup neovim lua configuration +require('neodev').setup() + +-- nvim-cmp supports additional completion capabilities, so broadcast that to servers +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) + +-- Ensure the servers above are installed +local mason_lspconfig = require 'mason-lspconfig' + +mason_lspconfig.setup { + ensure_installed = vim.tbl_keys(servers), +} + +mason_lspconfig.setup_handlers { + function(server_name) + require('lspconfig')[server_name].setup { + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + filetypes = (servers[server_name] or {}).filetypes, + } + end, +} + +-- vim: ts=2 sts=2 sw=2 et From 3ab1c22507932078cad6e7dc00b952ba2532e59a Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 12:37:32 +0200 Subject: [PATCH 08/47] Added lua/cmp-setup.lua --- init.lua | 49 ++--------------------------------------------- lua/cmp-setup.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 47 deletions(-) create mode 100644 lua/cmp-setup.lua diff --git a/init.lua b/init.lua index f2d37fe939e..eb373d2d9c2 100644 --- a/init.lua +++ b/init.lua @@ -65,53 +65,8 @@ require('treesitter-setup') -- Configure LSP (Language Server Protocol) require('lsp-setup') --- [[ Configure nvim-cmp ]] --- See `:help cmp` -local cmp = require 'cmp' -local luasnip = require 'luasnip' -require('luasnip.loaders.from_vscode').lazy_load() -luasnip.config.setup {} - -cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { 'i', 's' }), - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - }, -} +-- Configure CMP (completion) +require('cmp-setup') -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/cmp-setup.lua b/lua/cmp-setup.lua new file mode 100644 index 00000000000..ce389e4f330 --- /dev/null +++ b/lua/cmp-setup.lua @@ -0,0 +1,49 @@ +-- [[ Configure nvim-cmp ]] +-- See `:help cmp` +local cmp = require 'cmp' +local luasnip = require 'luasnip' +require('luasnip.loaders.from_vscode').lazy_load() +luasnip.config.setup {} + +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, +} + +-- vim: ts=2 sts=2 sw=2 et From d6466a768b7d4c6e45dd685f1f42fcfd22f78694 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 11:32:25 +0200 Subject: [PATCH 09/47] Update README.md - remove single-file --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1f8e6f40476..666eba941ad 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ https://github.com/kdheepak/kickstart.nvim/assets/1813121/f3ff9a2b-c31f-44df-a4f A starting point for Neovim that is: * Small -* Single-file (with examples of moving to multi-file) * Documented * Modular From ae9617bcd2d7c7a2aa1830e08f3a9c03fa38c8fa Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 22 Oct 2023 11:32:25 +0200 Subject: [PATCH 10/47] Update README.md - kickstart-modular fork --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 666eba941ad..d554f2df7bf 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ -# kickstart.nvim +# kickstart-modular.nvim https://github.com/kdheepak/kickstart.nvim/assets/1813121/f3ff9a2b-c31f-44df-a4fa-8a0d7b17cf7b ### Introduction +*This is a fork of [nvim-lua/kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) that moves from a single file to a multi file configuration.* + A starting point for Neovim that is: * Small From 37d62823fdf229808f1b822b61ec6f0af9300d1f Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Tue, 7 Nov 2023 17:26:53 +0100 Subject: [PATCH 11/47] init.lua: update section comments to match upstream --- init.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/init.lua b/init.lua index eb373d2d9c2..6b9ebf53c5c 100644 --- a/init.lua +++ b/init.lua @@ -44,28 +44,32 @@ P.S. You can delete this when you're done too. It's your config now :) vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' --- Install lazy plugin manager +-- [[ Install `lazy.nvim` plugin manager ]] require('lazy-bootstrap') --- Setup lazy plugin manager - configure plugins +-- [[ Configure plugins ]] require('lazy-plugins') --- Set options +-- [[ Setting options ]] require('options') --- Configure keymaps +-- [[ Basic Keymaps ]] require('keymaps') --- Configure Telescope (fuzzy finder) +-- [[ Configure Telescope ]] +-- (fuzzy finder) require('telescope-setup') --- Configure Treesitter (syntax parser for highlighting) +-- [[ Configure Treesitter ]] +-- (syntax parser for highlighting) require('treesitter-setup') --- Configure LSP (Language Server Protocol) +-- [[ Configure LSP ]] +-- (Language Server Protocol) require('lsp-setup') --- Configure CMP (completion) +-- [[ Configure nvim-cmp ]] +-- (completion) require('cmp-setup') -- The line beneath this is called `modeline`. See `:help modeline` From cbaae1e97e433df731a7d3ddc60a32d4f00655c2 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Tue, 5 Dec 2023 10:28:02 +0100 Subject: [PATCH 12/47] Run stylua on init.lua --- init.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/init.lua b/init.lua index 6b9ebf53c5c..8ea3bd26e6c 100644 --- a/init.lua +++ b/init.lua @@ -45,32 +45,32 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- [[ Install `lazy.nvim` plugin manager ]] -require('lazy-bootstrap') +require 'lazy-bootstrap' -- [[ Configure plugins ]] -require('lazy-plugins') +require 'lazy-plugins' -- [[ Setting options ]] -require('options') +require 'options' -- [[ Basic Keymaps ]] -require('keymaps') +require 'keymaps' -- [[ Configure Telescope ]] -- (fuzzy finder) -require('telescope-setup') +require 'telescope-setup' -- [[ Configure Treesitter ]] -- (syntax parser for highlighting) -require('treesitter-setup') +require 'treesitter-setup' -- [[ Configure LSP ]] -- (Language Server Protocol) -require('lsp-setup') +require 'lsp-setup' -- [[ Configure nvim-cmp ]] -- (completion) -require('cmp-setup') +require 'cmp-setup' -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et From f6f5537a3a682b43ab8ea1862fea96e1e1ca5817 Mon Sep 17 00:00:00 2001 From: "Peter S. Jaglom" <145091604+pjaglom@users.noreply.github.com> Date: Fri, 22 Dec 2023 00:31:59 -0800 Subject: [PATCH 13/47] Minor changes to README to reflect the modular repo (#3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update README to reflect modular organization - Change install links to this repo instead of nvim-lua/kickstart.nvim - Change “Recommended Steps” repo link to reflect kickstart-modular.nvim.git - Change FAQ re: multiple files to reflect that we are in the modular repo, not the single file repo. --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 839a5cf4936..21b7a90225e 100644 --- a/README.md +++ b/README.md @@ -42,17 +42,17 @@ Clone kickstart.nvim: - on Linux and Mac ```sh -git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim +git clone https://github.com/dam9000/kickstart-modular.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim ``` - on Windows (cmd) ``` -git clone https://github.com/nvim-lua/kickstart.nvim.git %userprofile%\AppData\Local\nvim\ +git clone https://github.com/dam9000/kickstart-modular.nvim.git %userprofile%\AppData\Local\nvim\ ``` - on Windows (powershell) ``` -git clone https://github.com/nvim-lua/kickstart.nvim.git $env:USERPROFILE\AppData\Local\nvim\ +git clone https://github.com/dam9000/kickstart-modular.nvim.git $env:USERPROFILE\AppData\Local\nvim\ ``` @@ -77,7 +77,7 @@ nvim --headless "+Lazy! sync" +qa [Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo (so that you have your own copy that you can modify) and then installing you can install to your machine using the methods above. > **NOTE** -> Your fork's url will be something like this: `https://github.com//kickstart.nvim.git` +> Your fork's url will be something like this: `https://github.com//kickstart-modular.nvim.git` ### Configuration And Extension @@ -171,9 +171,10 @@ Each PR, especially those which increase the line count, should have a descripti * The main purpose of kickstart is to serve as a teaching tool and a reference configuration that someone can easily `git clone` as a basis for their own. As you progress in learning Neovim and Lua, you might consider splitting `init.lua` - into smaller parts. A fork of kickstart that does this while maintaining the exact - same functionality is available here: - * [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim) + into smaller parts. *This is the fork of the original project that splits the configuration into smaller parts.* + The original repo that maintains the exact + same functionality in a single `init.lua` file is available here: + * [kickstart.nvim](https://github.com/dam9000/kickstart-modular.nvim) * Discussions on this topic can be found here: * [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218) * [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473) From 49b21aeb12eff66eb44e992a29e1a58b2df4eca5 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Fri, 22 Dec 2023 09:44:57 +0100 Subject: [PATCH 14/47] README.md: removed some trailing spaces --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 21b7a90225e..3856d804b03 100644 --- a/README.md +++ b/README.md @@ -47,12 +47,12 @@ git clone https://github.com/dam9000/kickstart-modular.nvim.git "${XDG_CONFIG_HO - on Windows (cmd) ``` -git clone https://github.com/dam9000/kickstart-modular.nvim.git %userprofile%\AppData\Local\nvim\ +git clone https://github.com/dam9000/kickstart-modular.nvim.git %userprofile%\AppData\Local\nvim\ ``` - on Windows (powershell) ``` -git clone https://github.com/dam9000/kickstart-modular.nvim.git $env:USERPROFILE\AppData\Local\nvim\ +git clone https://github.com/dam9000/kickstart-modular.nvim.git $env:USERPROFILE\AppData\Local\nvim\ ``` @@ -171,7 +171,7 @@ Each PR, especially those which increase the line count, should have a descripti * The main purpose of kickstart is to serve as a teaching tool and a reference configuration that someone can easily `git clone` as a basis for their own. As you progress in learning Neovim and Lua, you might consider splitting `init.lua` - into smaller parts. *This is the fork of the original project that splits the configuration into smaller parts.* + into smaller parts. *This is the fork of the original project that splits the configuration into smaller parts.* The original repo that maintains the exact same functionality in a single `init.lua` file is available here: * [kickstart.nvim](https://github.com/dam9000/kickstart-modular.nvim) From 0be3fcfae9c7d34ffa0da1687a2d8713a69ec571 Mon Sep 17 00:00:00 2001 From: Vinit Neogi <20491952+vneogi199@users.noreply.github.com> Date: Sun, 31 Dec 2023 16:39:35 +0530 Subject: [PATCH 15/47] fix: incorrect reference to init.lua in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3856d804b03..19649973469 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ nvim --headless "+Lazy! sync" +qa * Inside of your copy, feel free to modify any file you like! It's your copy! * Feel free to change any of the default options in `init.lua` to better suit your needs. * For adding plugins, there are 3 primary options: - * Add new configuration in `lua/custom/plugins/*` files, which will be auto sourced using `lazy.nvim` (uncomment the line importing the `custom/plugins` directory in the `init.lua` file to enable this) + * Add new configuration in `lua/custom/plugins/*` files, which will be auto sourced using `lazy.nvim` (uncomment the line importing the `custom/plugins` directory in the `lua/lazy-plugins.lua` file to enable this) * Modify `init.lua` with additional plugins. * Include the `lua/kickstart/plugins/*` files in your configuration. From d17289318a358cfebf62f6c6a170b9833f190f30 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Mon, 26 Feb 2024 21:37:26 +0100 Subject: [PATCH 16/47] README.md: minor update to the modular fork note --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b61e91a44a9..448a996109d 100644 --- a/README.md +++ b/README.md @@ -177,7 +177,7 @@ return { into smaller parts. A fork of kickstart that does this while maintaining the exact same functionality is available here: * [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim) - *NOTE: This is the fork of the original project that splits the configuration into smaller parts.* + * *NOTE: This is the fork that splits the configuration into smaller parts.* The original repo with the single `init.lua` file is available here: * [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) * Discussions on this topic can be found here: From abdbfce0f8610e8661ccf27c1ba13b8134b78673 Mon Sep 17 00:00:00 2001 From: Ryan Nevius Date: Sat, 15 Feb 2025 04:23:31 +0100 Subject: [PATCH 17/47] chore(docs): Update README.md (#1344) Neovim has renamed the "linux64" binary to "linux-x86_64". --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index aa5f4fc8f1e..3cabe65606e 100644 --- a/README.md +++ b/README.md @@ -212,14 +212,14 @@ sudo apt update sudo apt install make gcc ripgrep unzip git xclip curl # Now we install nvim -curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz -sudo rm -rf /opt/nvim-linux64 -sudo mkdir -p /opt/nvim-linux64 -sudo chmod a+rX /opt/nvim-linux64 -sudo tar -C /opt -xzf nvim-linux64.tar.gz +curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz +sudo rm -rf /opt/nvim-linux-x86_64 +sudo mkdir -p /opt/nvim-linux-x86_64 +sudo chmod a+rX /opt/nvim-linux-x86_64 +sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz # make it available in /usr/local/bin, distro installs to /usr/bin -sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/ +sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/ ```
Fedora Install Steps From 71ad926ab18fed072b8a9af6a22c8cbb302e3257 Mon Sep 17 00:00:00 2001 From: bleacheda <60625523+bleacheda@users.noreply.github.com> Date: Sat, 15 Feb 2025 05:32:50 +0200 Subject: [PATCH 18/47] =?UTF-8?q?docs:=20clarify=20using=20opts=20=3D=20{}?= =?UTF-8?q?=20vs=20config=20=3D=20function()=20...=20require('plu=E2=80=A6?= =?UTF-8?q?=20(#1316)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: clarify using opts = {} vs config = function() ... require('plugin').setup({}) .. end The current documentation mentioning that using "require" is equivalent to using "opts" without detailing the use in the "config = function()" block seems inaccurate. Lower in the configuration the "config = function()" block is used without clarifying why it needed and what it does. This clarification may help new users understand the difference between the two, or how and where to place the "require" statement. * Update init.lua * remove whitespace --- init.lua | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/init.lua b/init.lua index 4eae8e7d95a..99c7c9cb0a9 100644 --- a/init.lua +++ b/init.lua @@ -234,12 +234,22 @@ require('lazy').setup({ -- with the first argument being the link and the following -- keys can be used to configure plugin behavior/loading/etc. -- - -- Use `opts = {}` to force a plugin to be loaded. + -- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded. -- + -- Alternatively, use `config = function() ... end` for full control over the configuration. + -- If you prefer to call `setup` explicitly, use: + -- { + -- 'lewis6991/gitsigns.nvim', + -- config = function() + -- require('gitsigns').setup({ + -- -- Your gitsigns configuration here + -- }) + -- end, + -- } + -- -- Here is a more advanced example where we pass configuration - -- options to `gitsigns.nvim`. This is equivalent to the following Lua: - -- require('gitsigns').setup({ ... }) + -- options to `gitsigns.nvim`. -- -- See `:help gitsigns` to understand what the configuration keys do { -- Adds git related signs to the gutter, as well as utilities for managing changes From 94f551b8039a3f6399d2ea3373c4774005ede4db Mon Sep 17 00:00:00 2001 From: Erlan Rangel Date: Fri, 14 Feb 2025 23:48:37 -0600 Subject: [PATCH 19/47] fix (#1319): gitsigns deprecated functions (#1321) - This commit change two functions that are marked as deprecated now: `gitsigns.stage_hunk` and `gitsigns.toggle_deleted` --- lua/kickstart/plugins/gitsigns.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/kickstart/plugins/gitsigns.lua b/lua/kickstart/plugins/gitsigns.lua index c269bc06e15..cbbd22d24fc 100644 --- a/lua/kickstart/plugins/gitsigns.lua +++ b/lua/kickstart/plugins/gitsigns.lua @@ -44,7 +44,7 @@ return { 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.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' }) + 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' }) @@ -54,7 +54,7 @@ return { 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.toggle_deleted, { desc = '[T]oggle git show [D]eleted' }) + map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) end, }, }, From d2c006819a5473f958276b028e16636f347df823 Mon Sep 17 00:00:00 2001 From: Chris Patti Date: Sun, 16 Feb 2025 22:37:44 -0500 Subject: [PATCH 20/47] Add a blurb about installing missing emoji on Ubuntu Right next to the nerdfonts blurb as requested. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3cabe65606e..92841110bf2 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ External Requirements: - Clipboard tool (xclip/xsel/win32yank or other depending on the platform) - A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons - if you have it set `vim.g.have_nerd_font` in `init.lua` to true +- Emoji fonts (Ubuntu only, and only if you want emoji!) `sudo apt install fonts-noto-color-emoji` - Language Setup: - If you want to write Typescript, you need `npm` - If you want to write Golang, you will need `go` From db78c0b217fd9525e2cbcbffd18abbbbddc75b2e Mon Sep 17 00:00:00 2001 From: Jonas Zeltner Date: Mon, 17 Feb 2025 04:42:19 +0100 Subject: [PATCH 21/47] fix: arguments for the `vim.lsp.Client.supports_method` method (#1356) --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 99c7c9cb0a9..7ef6120b7b4 100644 --- a/init.lua +++ b/init.lua @@ -564,7 +564,7 @@ require('lazy').setup({ -- -- 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(vim.lsp.protocol.Methods.textDocument_documentHighlight) then + if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { buffer = event.buf, @@ -591,7 +591,7 @@ require('lazy').setup({ -- code, if the language server you are using supports them -- -- This may be unwanted, since they displace some of your code - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then map('th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints') From 76e06fec5cf0aceaf06d50d1f934a8cfde3bc3df Mon Sep 17 00:00:00 2001 From: GeloCraft <115651305+gelocraft@users.noreply.github.com> Date: Tue, 18 Feb 2025 02:01:07 +0800 Subject: [PATCH 22/47] feat(diagnostic): add diagnostic config (#1335) Co-authored-by: gelocraft --- init.lua | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/init.lua b/init.lua index 7ef6120b7b4..d91174b5492 100644 --- a/init.lua +++ b/init.lua @@ -599,15 +599,34 @@ require('lazy').setup({ end, }) - -- Change diagnostic symbols in the sign column (gutter) - -- if vim.g.have_nerd_font then - -- local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' } - -- local diagnostic_signs = {} - -- for type, icon in pairs(signs) do - -- diagnostic_signs[vim.diagnostic.severity[type]] = icon - -- end - -- vim.diagnostic.config { signs = { text = diagnostic_signs } } - -- end + -- Diagnostic Config + -- See :help vim.diagnostic.Opts + vim.diagnostic.config { + severity_sort = true, + float = { border = 'rounded', source = 'if_many' }, + underline = { severity = vim.diagnostic.severity.ERROR }, + signs = vim.g.have_nerd_font and { + text = { + [vim.diagnostic.severity.ERROR] = '󰅚 ', + [vim.diagnostic.severity.WARN] = '󰀪 ', + [vim.diagnostic.severity.INFO] = '󰋽 ', + [vim.diagnostic.severity.HINT] = '󰌶 ', + }, + } or {}, + virtual_text = { + source = 'if_many', + spacing = 2, + format = function(diagnostic) + local diagnostic_message = { + [vim.diagnostic.severity.ERROR] = diagnostic.message, + [vim.diagnostic.severity.WARN] = diagnostic.message, + [vim.diagnostic.severity.INFO] = diagnostic.message, + [vim.diagnostic.severity.HINT] = diagnostic.message, + } + return diagnostic_message[diagnostic.severity] + end, + }, + } -- LSP servers and clients are able to communicate to each other what features they support. -- By default, Neovim doesn't support everything that is in the LSP specification. From ebca680deaf83b49f4b9f51f1f7d5823cd68ecfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20Guerra?= Date: Tue, 18 Feb 2025 01:10:48 +0100 Subject: [PATCH 23/47] perf: load tokyonight.nvim in the intended way (#1360) Fixes #1357 --- init.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index d91174b5492..b57a4b9b8a0 100644 --- a/init.lua +++ b/init.lua @@ -874,14 +874,18 @@ require('lazy').setup({ -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. 'folke/tokyonight.nvim', priority = 1000, -- Make sure to load this before all the other start plugins. - init = function() + config = function() + ---@diagnostic disable-next-line: missing-fields + require('tokyonight').setup { + styles = { + comments = { italic = false }, -- Disable italics in comments + }, + } + -- Load the colorscheme here. -- Like many other themes, this one has different styles, and you could load -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. vim.cmd.colorscheme 'tokyonight-night' - - -- You can configure highlights by doing something like: - vim.cmd.hi 'Comment gui=none' end, }, From 282cbb9c82138262bb8a5fe60573ba4626abe425 Mon Sep 17 00:00:00 2001 From: Rob Date: Tue, 18 Feb 2025 00:12:06 +0000 Subject: [PATCH 24/47] feat: add basic function signature help (#1358) * feat: add basic function signature help * Update init.lua Co-authored-by: makeworld <25111343+makew0rld@users.noreply.github.com> --------- Co-authored-by: makeworld <25111343+makew0rld@users.noreply.github.com> --- init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/init.lua b/init.lua index b57a4b9b8a0..de34808e02e 100644 --- a/init.lua +++ b/init.lua @@ -786,6 +786,8 @@ require('lazy').setup({ -- into multiple repos for maintenance purposes. 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-path', + 'hrsh7th/cmp-path', + 'htsh7th/cmp-nvim-lsp-signature-help', }, config = function() -- See `:help cmp` @@ -862,6 +864,7 @@ require('lazy').setup({ { name = 'nvim_lsp' }, { name = 'luasnip' }, { name = 'path' }, + { name = 'nvim_lsp_signature_help' }, }, } end, From 7c49ba1cb7fe761df7ec25d4cbb9d21c0f9552d3 Mon Sep 17 00:00:00 2001 From: Aryan Rajoria <57455619+aryan-rajoria@users.noreply.github.com> Date: Tue, 18 Feb 2025 00:05:15 -0500 Subject: [PATCH 25/47] Fix: fix the cmp-nvim-lsp-signature-help link (#1363) --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index de34808e02e..c8f2dc5b0f9 100644 --- a/init.lua +++ b/init.lua @@ -787,7 +787,7 @@ require('lazy').setup({ 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-path', 'hrsh7th/cmp-path', - 'htsh7th/cmp-nvim-lsp-signature-help', + 'hrsh7th/cmp-nvim-lsp-signature-help', }, config = function() -- See `:help cmp` From e64aa51ef29dfd17bf44711c697f00caff195165 Mon Sep 17 00:00:00 2001 From: Jonas Zeltner Date: Tue, 18 Feb 2025 17:15:13 +0100 Subject: [PATCH 26/47] fix: regression introduced in db78c0b217fd9525e2cbcbffd18abbbbddc75b2e (#1367) --- init.lua | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index c8f2dc5b0f9..22ee9e4878d 100644 --- a/init.lua +++ b/init.lua @@ -558,13 +558,26 @@ require('lazy').setup({ -- For example, in C this would take you to the header. map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + -- 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) + else + return client.supports_method(method, { bufnr = bufnr }) + 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(vim.lsp.protocol.Methods.textDocument_documentHighlight) then + 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' }, { buffer = event.buf, @@ -591,7 +604,7 @@ require('lazy').setup({ -- code, if the language server you are using supports them -- -- This may be unwanted, since they displace some of your code - if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then map('th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints') From ea60b2b01f3931cb0bb0ab746ccb65107a8c55cd Mon Sep 17 00:00:00 2001 From: Ari Pollak Date: Wed, 19 Feb 2025 09:38:58 -0500 Subject: [PATCH 27/47] Remove duplicate cmp-path (#1369) --- init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/init.lua b/init.lua index 22ee9e4878d..40c8f59d2ac 100644 --- a/init.lua +++ b/init.lua @@ -799,7 +799,6 @@ require('lazy').setup({ -- into multiple repos for maintenance purposes. 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-path', - 'hrsh7th/cmp-path', 'hrsh7th/cmp-nvim-lsp-signature-help', }, config = function() From 34e7d29aa7b6e95cf09d62baf4c9082db5b129c0 Mon Sep 17 00:00:00 2001 From: Chris Patti Date: Wed, 19 Feb 2025 09:40:16 -0500 Subject: [PATCH 28/47] Propsed fix for init.lua warnings as per https://github.com/nvim-lua/kickstart.nvim/issues/1305#issuecomment-2657770325 (#1354) --- init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/init.lua b/init.lua index 40c8f59d2ac..5cac3d14601 100644 --- a/init.lua +++ b/init.lua @@ -707,6 +707,8 @@ require('lazy').setup({ 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 {} From 38f4744e254af1b2ce5384d66d7c7da3b5f67106 Mon Sep 17 00:00:00 2001 From: Crypto-Spartan <29098151+Crypto-Spartan@users.noreply.github.com> Date: Wed, 12 Mar 2025 17:24:44 -0400 Subject: [PATCH 29/47] feat: add `vim.opt.confirm = true` (#1384) --- init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init.lua b/init.lua index 5cac3d14601..1427b6c7d5d 100644 --- a/init.lua +++ b/init.lua @@ -156,6 +156,11 @@ vim.opt.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. vim.opt.scrolloff = 10 +-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), +-- instead raise a dialog asking if you wish to save the current file(s) +-- See `:help 'confirm'` +vim.opt.confirm = true + -- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` From 2abcb39fae23eb08acf347ef8011365da9f311f9 Mon Sep 17 00:00:00 2001 From: Luca Saccarola <96259932+saccarosium@users.noreply.github.com> Date: Thu, 20 Mar 2025 23:16:35 +0100 Subject: [PATCH 30/47] fix: use correct github abmonition syntax (#1414) --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 92841110bf2..8ace8b9b22b 100644 --- a/README.md +++ b/README.md @@ -33,13 +33,13 @@ External Requirements: - If you want to write Golang, you will need `go` - etc. -> **NOTE** +> [!NOTE] > See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes > and quick install snippets ### Install Kickstart -> **NOTE** +> [!NOTE] > [Backup](#FAQ) your previous configuration (if any exists) Neovim's configurations are located under the following paths, depending on your OS: @@ -56,7 +56,7 @@ Neovim's configurations are located under the following paths, depending on your so that you have your own copy that you can modify, then install by cloning the fork to your machine using one of the commands below, depending on your OS. -> **NOTE** +> [!NOTE] > Your fork's URL will be something like this: > `https://github.com//kickstart.nvim.git` @@ -65,7 +65,8 @@ too - it's ignored in the kickstart repo to make maintenance easier, but it's [recommended to track it in version control](https://lazy.folke.io/usage/lockfile). #### Clone kickstart.nvim -> **NOTE** + +> [!NOTE] > If following the recommended step above (i.e., forking the repo), replace > `nvim-lua` with `` in the commands below From 5e2d7e184b9d097c683792a8e5daed50a395cb0b Mon Sep 17 00:00:00 2001 From: RulentWave <49258216+RulentWave@users.noreply.github.com> Date: Mon, 24 Mar 2025 15:33:53 -0400 Subject: [PATCH 31/47] changed Conform's format_on_save lambda so that buffers that match disable_filetypes return nil. This allows you to enable a formatter for langages in the disable_filetypes table to have a formatter that can be run manually with Leader-f but doesnt enable format_on_save for them (#1395) --- init.lua | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/init.lua b/init.lua index 1427b6c7d5d..fe030ddf249 100644 --- a/init.lua +++ b/init.lua @@ -749,16 +749,14 @@ require('lazy').setup({ -- 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 lsp_format_opt if disable_filetypes[vim.bo[bufnr].filetype] then - lsp_format_opt = 'never' + return nil else - lsp_format_opt = 'fallback' + return { + timeout_ms = 500, + lsp_format = 'fallback', + } end - return { - timeout_ms = 500, - lsp_format = lsp_format_opt, - } end, formatters_by_ft = { lua = { 'stylua' }, From e947649cb0ee5ac3c75593288df04d4f58359106 Mon Sep 17 00:00:00 2001 From: Sander Date: Mon, 24 Mar 2025 20:34:57 +0100 Subject: [PATCH 32/47] feat(keymap): move windows without `` (#1368) --- init.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/init.lua b/init.lua index fe030ddf249..cbf9ff65d67 100644 --- a/init.lua +++ b/init.lua @@ -194,6 +194,12 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the right win vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) +-- NOTE: Some terminals have coliding keymaps or are not able to send distinct keycodes +-- vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) +-- vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) +-- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) +-- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) + -- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` From 8a5a52f6470619b5408e63120d91b976dd08c618 Mon Sep 17 00:00:00 2001 From: dasvh Date: Wed, 9 Apr 2025 16:39:17 +0200 Subject: [PATCH 33/47] fix: minor misspellings (#1450) * fix: minor misspellings * revert change for `-Bbuild` --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index cbf9ff65d67..1f8d9c871a8 100644 --- a/init.lua +++ b/init.lua @@ -194,7 +194,7 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the right win vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) --- NOTE: Some terminals have coliding keymaps or are not able to send distinct keycodes +-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes -- vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) -- vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) -- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) From 1a5787bc573b35bd6a96ac998d46ff6460e534af Mon Sep 17 00:00:00 2001 From: "Theo P." <63016528+theopn@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:01:57 -0400 Subject: [PATCH 34/47] Change LSP Keybindings to Match the Default `gr` Bindings Introduced in Neovim 0.11 (#1427) * refactor: change LSP keybindings to the default gr bindings introduced in 0.11 * refactor: modify existing LSP functions to follow convention --- init.lua | 50 +++++++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/init.lua b/init.lua index 1f8d9c871a8..bafc666922b 100644 --- a/init.lua +++ b/init.lua @@ -336,11 +336,7 @@ require('lazy').setup({ -- Document existing key chains spec = { - { 'c', group = '[C]ode', mode = { 'n', 'x' } }, - { 'd', group = '[D]ocument' }, - { 'r', group = '[R]ename' }, { 's', group = '[S]earch' }, - { 'w', group = '[W]orkspace' }, { 't', group = '[T]oggle' }, { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, }, @@ -532,42 +528,42 @@ require('lazy').setup({ vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) end - -- Jump to the definition of the word under your cursor. - -- This is where a variable was first declared, or where a function is defined, etc. - -- To jump back, press . - map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + -- Rename the variable under your cursor. + -- Most Language Servers support renaming across files, etc. + map('grn', vim.lsp.buf.rename, '[R]e[n]ame') + + -- Execute a code action, usually your cursor needs to be on top of an error + -- or a suggestion from your LSP for this to activate. + map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' }) -- Find references for the word under your cursor. - map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') -- Jump to the implementation of the word under your cursor. -- Useful when your language has ways of declaring types without an actual implementation. - map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') + map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') - -- Jump to the type of the word under your cursor. - -- Useful when you're not sure what type a variable is and you want to see - -- the definition of its *type*, not where it was *defined*. - map('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') + -- Jump to the definition of the word under your cursor. + -- This is where a variable was first declared, or where a function is defined, etc. + -- To jump back, press . + map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + + -- WARN: This is not Goto Definition, this is Goto Declaration. + -- For example, in C this would take you to the header. + map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') -- Fuzzy find all the symbols in your current document. -- Symbols are things like variables, functions, types, etc. - map('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') + map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols') -- Fuzzy find all the symbols in your current workspace. -- Similar to document symbols, except searches over your entire project. - map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') - - -- Rename the variable under your cursor. - -- Most Language Servers support renaming across files, etc. - map('rn', vim.lsp.buf.rename, '[R]e[n]ame') - - -- Execute a code action, usually your cursor needs to be on top of an error - -- or a suggestion from your LSP for this to activate. - map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' }) + map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols') - -- WARN: This is not Goto Definition, this is Goto Declaration. - -- For example, in C this would take you to the header. - map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + -- Jump to the type of the word under your cursor. + -- Useful when you're not sure what type a variable is and you want to see + -- the definition of its *type*, not where it was *defined*. + 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 From 9929044f2432758bc0a7c3fab13414e49f316443 Mon Sep 17 00:00:00 2001 From: Dmytro Onypko Date: Wed, 9 Apr 2025 16:05:40 +0100 Subject: [PATCH 35/47] Remove Telescope `0.1` branch lock (#1448) --- init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/init.lua b/init.lua index bafc666922b..0b4bed8eb0b 100644 --- a/init.lua +++ b/init.lua @@ -353,7 +353,6 @@ require('lazy').setup({ { -- Fuzzy Finder (files, lsp, etc) 'nvim-telescope/telescope.nvim', event = 'VimEnter', - branch = '0.1.x', dependencies = { 'nvim-lua/plenary.nvim', { -- If encountering errors, see telescope-fzf-native README for installation instructions From d350db2449da40df003c40d440f909d74e2d4e70 Mon Sep 17 00:00:00 2001 From: Liam Dyer Date: Wed, 9 Apr 2025 17:25:57 -0400 Subject: [PATCH 36/47] feat: switch nvim-cmp for blink.cmp (#1426) --- init.lua | 164 ++++++++++++---------------- lua/kickstart/plugins/autopairs.lua | 10 +- 2 files changed, 73 insertions(+), 101 deletions(-) diff --git a/init.lua b/init.lua index 0b4bed8eb0b..776c6873ff6 100644 --- a/init.lua +++ b/init.lua @@ -481,8 +481,8 @@ require('lazy').setup({ -- Useful status updates for LSP. { 'j-hui/fidget.nvim', opts = {} }, - -- Allows extra capabilities provided by nvim-cmp - 'hrsh7th/cmp-nvim-lsp', + -- Allows extra capabilities provided by blink.cmp + 'saghen/blink.cmp', }, config = function() -- Brief aside: **What is LSP?** @@ -649,10 +649,9 @@ require('lazy').setup({ -- LSP servers and clients are able to communicate to each other what features they support. -- By default, Neovim doesn't support everything that is in the LSP specification. - -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. - -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers. - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities()) + -- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities. + -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers. + local capabilities = require('blink.cmp').get_lsp_capabilities() -- Enable the following language servers -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. @@ -771,12 +770,14 @@ require('lazy').setup({ }, { -- Autocompletion - 'hrsh7th/nvim-cmp', - event = 'InsertEnter', + 'saghen/blink.cmp', + event = 'VimEnter', + version = '1.*', dependencies = { - -- Snippet Engine & its associated nvim-cmp source + -- Snippet Engine { 'L3MON4D3/LuaSnip', + version = '2.*', build = (function() -- Build Step is needed for regex support in snippets. -- This step is not supported in many windows environments. @@ -797,95 +798,74 @@ require('lazy').setup({ -- end, -- }, }, + opts = {}, }, - 'saadparwaiz1/cmp_luasnip', - - -- Adds other completion capabilities. - -- nvim-cmp does not ship with all sources by default. They are split - -- into multiple repos for maintenance purposes. - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-path', - 'hrsh7th/cmp-nvim-lsp-signature-help', + 'folke/lazydev.nvim', }, - config = function() - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - luasnip.config.setup {} - - cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - completion = { completeopt = 'menu,menuone,noinsert' }, - - -- For an understanding of why these mappings were - -- chosen, you will need to read `:help ins-completion` + --- @module 'blink.cmp' + --- @type blink.cmp.Config + opts = { + keymap = { + -- 'default' (recommended) for mappings similar to built-in completions + -- to accept ([y]es) the completion. + -- This will auto-import if your LSP supports it. + -- This will expand snippets if the LSP sent a snippet. + -- 'super-tab' for tab to accept + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- For an understanding of why the 'default' preset is recommended, + -- you will need to read `:help ins-completion` -- -- No, but seriously. Please read `:help ins-completion`, it is really good! - mapping = cmp.mapping.preset.insert { - -- Select the [n]ext item - [''] = cmp.mapping.select_next_item(), - -- Select the [p]revious item - [''] = cmp.mapping.select_prev_item(), - - -- Scroll the documentation window [b]ack / [f]orward - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - - -- Accept ([y]es) the completion. - -- This will auto-import if your LSP supports it. - -- This will expand snippets if the LSP sent a snippet. - [''] = cmp.mapping.confirm { select = true }, - - -- If you prefer more traditional completion keymaps, - -- you can uncomment the following lines - --[''] = cmp.mapping.confirm { select = true }, - --[''] = cmp.mapping.select_next_item(), - --[''] = cmp.mapping.select_prev_item(), - - -- Manually trigger a completion from nvim-cmp. - -- Generally you don't need this, because nvim-cmp will display - -- completions whenever it has completion options available. - [''] = cmp.mapping.complete {}, - - -- Think of as moving to the right of your snippet expansion. - -- So if you have a snippet that's like: - -- function $name($args) - -- $body - -- end - -- - -- will move you to the right of each of the expansion locations. - -- is similar, except moving you backwards. - [''] = cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { 'i', 's' }), + -- + -- All presets have the following mappings: + -- /: move to right/left of your snippet expansion + -- : Open menu or open docs if already open + -- / or /: Select next/previous item + -- : Hide menu + -- : Toggle signature help + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + preset = 'default', - -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: - -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps - }, - sources = { - { - name = 'lazydev', - -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it - group_index = 0, - }, - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - { name = 'nvim_lsp_signature_help' }, + -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: + -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps + }, + + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = 'mono', + }, + + completion = { + -- By default, you may press `` to show the documentation. + -- Optionally, set `auto_show = true` to show the documentation after a delay. + documentation = { auto_show = false, auto_show_delay_ms = 500 }, + }, + + sources = { + default = { 'lsp', 'path', 'snippets', 'lazydev' }, + providers = { + lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 }, }, - } - end, + }, + + snippets = { preset = 'luasnip' }, + + -- Blink.cmp includes an optional, recommended rust fuzzy matcher, + -- which automatically downloads a prebuilt binary when enabled. + -- + -- By default, we use the Lua implementation instead, but you may enable + -- the rust implementation via `'prefer_rust_with_warning'` + -- + -- See :h blink-cmp-config-fuzzy for more information + fuzzy = { implementation = 'lua' }, + + -- Shows a signature help window while you type arguments for a function + signature = { enabled = true }, + }, }, { -- You can easily change to a different colorscheme. diff --git a/lua/kickstart/plugins/autopairs.lua b/lua/kickstart/plugins/autopairs.lua index 87a7e5ffa2e..386d392e7ad 100644 --- a/lua/kickstart/plugins/autopairs.lua +++ b/lua/kickstart/plugins/autopairs.lua @@ -4,13 +4,5 @@ return { 'windwp/nvim-autopairs', event = 'InsertEnter', - -- Optional dependency - dependencies = { 'hrsh7th/nvim-cmp' }, - config = function() - require('nvim-autopairs').setup {} - -- If you want to automatically add `(` after selecting a function or method - local cmp_autopairs = require 'nvim-autopairs.completion.cmp' - local cmp = require 'cmp' - cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) - end, + opts = {}, } From f8727376ad2dcfc7fb5850a80566760699d92508 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Tue, 15 Apr 2025 21:00:06 +0200 Subject: [PATCH 37/47] remove cmp.lua which was replaced with blink-cmp.lua --- lua/kickstart/plugins/cmp.lua | 120 ---------------------------------- 1 file changed, 120 deletions(-) delete mode 100644 lua/kickstart/plugins/cmp.lua diff --git a/lua/kickstart/plugins/cmp.lua b/lua/kickstart/plugins/cmp.lua deleted file mode 100644 index d5248488351..00000000000 --- a/lua/kickstart/plugins/cmp.lua +++ /dev/null @@ -1,120 +0,0 @@ -return { - { -- Autocompletion - 'hrsh7th/nvim-cmp', - event = 'InsertEnter', - dependencies = { - -- Snippet Engine & its associated nvim-cmp source - { - 'L3MON4D3/LuaSnip', - build = (function() - -- Build Step is needed for regex support in snippets. - -- This step is not supported in many windows environments. - -- Remove the below condition to re-enable on windows. - if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then - return - end - return 'make install_jsregexp' - end)(), - dependencies = { - -- `friendly-snippets` contains a variety of premade snippets. - -- See the README about individual language/framework/plugin snippets: - -- https://github.com/rafamadriz/friendly-snippets - -- { - -- 'rafamadriz/friendly-snippets', - -- config = function() - -- require('luasnip.loaders.from_vscode').lazy_load() - -- end, - -- }, - }, - }, - 'saadparwaiz1/cmp_luasnip', - - -- Adds other completion capabilities. - -- nvim-cmp does not ship with all sources by default. They are split - -- into multiple repos for maintenance purposes. - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-path', - 'hrsh7th/cmp-nvim-lsp-signature-help', - }, - config = function() - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - luasnip.config.setup {} - - cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - completion = { completeopt = 'menu,menuone,noinsert' }, - - -- For an understanding of why these mappings were - -- chosen, you will need to read `:help ins-completion` - -- - -- No, but seriously. Please read `:help ins-completion`, it is really good! - mapping = cmp.mapping.preset.insert { - -- Select the [n]ext item - [''] = cmp.mapping.select_next_item(), - -- Select the [p]revious item - [''] = cmp.mapping.select_prev_item(), - - -- Scroll the documentation window [b]ack / [f]orward - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - - -- Accept ([y]es) the completion. - -- This will auto-import if your LSP supports it. - -- This will expand snippets if the LSP sent a snippet. - [''] = cmp.mapping.confirm { select = true }, - - -- If you prefer more traditional completion keymaps, - -- you can uncomment the following lines - --[''] = cmp.mapping.confirm { select = true }, - --[''] = cmp.mapping.select_next_item(), - --[''] = cmp.mapping.select_prev_item(), - - -- Manually trigger a completion from nvim-cmp. - -- Generally you don't need this, because nvim-cmp will display - -- completions whenever it has completion options available. - [''] = cmp.mapping.complete {}, - - -- Think of as moving to the right of your snippet expansion. - -- So if you have a snippet that's like: - -- function $name($args) - -- $body - -- end - -- - -- will move you to the right of each of the expansion locations. - -- is similar, except moving you backwards. - [''] = cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { 'i', 's' }), - - -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: - -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps - }, - sources = { - { - name = 'lazydev', - -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it - group_index = 0, - }, - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - { name = 'nvim_lsp_signature_help' }, - }, - } - end, - }, -} --- vim: ts=2 sts=2 sw=2 et From 76cb865e4f3bd985fef9f209023d762eaa0f81e6 Mon Sep 17 00:00:00 2001 From: guru245 Date: Sat, 10 May 2025 08:41:44 +0900 Subject: [PATCH 38/47] Change to Mason's new address (#1516) --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index 776c6873ff6..0d0e8a81c3b 100644 --- a/init.lua +++ b/init.lua @@ -474,8 +474,8 @@ 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({})` - { 'williamboman/mason.nvim', opts = {} }, - 'williamboman/mason-lspconfig.nvim', + { 'mason-org/mason.nvim', opts = {} }, + 'mason-org/mason-lspconfig.nvim', 'WhoIsSethDaniel/mason-tool-installer.nvim', -- Useful status updates for LSP. From 2b2f0f8364bff6352790c4173c9da514dc009f36 Mon Sep 17 00:00:00 2001 From: guru245 Date: Sun, 11 May 2025 09:11:50 +0900 Subject: [PATCH 39/47] feat: switch vim-sleuth for guess-indent.nvim (#1512) --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 0d0e8a81c3b..6be82d59eb1 100644 --- a/init.lua +++ b/init.lua @@ -239,7 +239,7 @@ vim.opt.rtp:prepend(lazypath) -- NOTE: Here is where you install your plugins. require('lazy').setup({ -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). - 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically + 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically -- NOTE: Plugins can also be added by using a table, -- with the first argument being the link and the following From c92ea7ca97d88a5c6628daf7c7a75871c37a6c79 Mon Sep 17 00:00:00 2001 From: Ori Perry <48057913+oriori1703@users.noreply.github.com> Date: Sun, 11 May 2025 03:16:03 +0300 Subject: [PATCH 40/47] Replace vim.opt with vim.o (#1495) * Replace vim.opt with vim.o Because it offers a nicer interface and info on hover. For now leave vim.opt when using the table interface (until vim.o with tables is implemented) * Add type hint for vim.opt.rtp * Add a comment about using vim.opt instead of vim.o --- init.lua | 54 +++++++++++++++++++--------------- lua/kickstart/plugins/lint.lua | 2 +- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/init.lua b/init.lua index 6be82d59eb1..eb715025c30 100644 --- a/init.lua +++ b/init.lua @@ -94,72 +94,77 @@ vim.g.maplocalleader = ' ' vim.g.have_nerd_font = false -- [[ Setting options ]] --- See `:help vim.opt` +-- See `:help vim.o` -- NOTE: You can change these options as you wish! -- For more options, you can see `:help option-list` -- Make line numbers default -vim.opt.number = true +vim.o.number = true -- You can also add relative line numbers, to help with jumping. -- Experiment for yourself to see if you like it! --- vim.opt.relativenumber = true +-- vim.o.relativenumber = true -- Enable mouse mode, can be useful for resizing splits for example! -vim.opt.mouse = 'a' +vim.o.mouse = 'a' -- Don't show the mode, since it's already in the status line -vim.opt.showmode = false +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.opt.clipboard = 'unnamedplus' + vim.o.clipboard = 'unnamedplus' end) -- Enable break indent -vim.opt.breakindent = true +vim.o.breakindent = true -- Save undo history -vim.opt.undofile = true +vim.o.undofile = true -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term -vim.opt.ignorecase = true -vim.opt.smartcase = true +vim.o.ignorecase = true +vim.o.smartcase = true -- Keep signcolumn on by default -vim.opt.signcolumn = 'yes' +vim.o.signcolumn = 'yes' -- Decrease update time -vim.opt.updatetime = 250 +vim.o.updatetime = 250 -- Decrease mapped sequence wait time -vim.opt.timeoutlen = 300 +vim.o.timeoutlen = 300 -- Configure how new splits should be opened -vim.opt.splitright = true -vim.opt.splitbelow = true +vim.o.splitright = true +vim.o.splitbelow = true -- Sets how neovim will display certain whitespace characters in the editor. -- See `:help 'list'` -- and `:help 'listchars'` -vim.opt.list = true +-- +-- Notice listchars is set using `vim.opt` instead of `vim.o`. +-- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables. +-- See `:help lua-options` +-- and `:help lua-options-guide` +vim.o.list = true vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -- Preview substitutions live, as you type! -vim.opt.inccommand = 'split' +vim.o.inccommand = 'split' -- Show which line your cursor is on -vim.opt.cursorline = true +vim.o.cursorline = true -- Minimal number of screen lines to keep above and below the cursor. -vim.opt.scrolloff = 10 +vim.o.scrolloff = 10 -- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), -- instead raise a dialog asking if you wish to save the current file(s) -- See `:help 'confirm'` -vim.opt.confirm = true +vim.o.confirm = true -- [[ Basic Keymaps ]] -- See `:help vim.keymap.set()` @@ -223,8 +228,11 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then if vim.v.shell_error ~= 0 then error('Error cloning lazy.nvim:\n' .. out) end -end ---@diagnostic disable-next-line: undefined-field -vim.opt.rtp:prepend(lazypath) +end + +---@type vim.Option +local rtp = vim.opt.rtp +rtp:prepend(lazypath) -- [[ Configure and install plugins ]] -- @@ -295,7 +303,7 @@ require('lazy').setup({ event = 'VimEnter', -- Sets the loading event to 'VimEnter' opts = { -- delay between pressing a key and opening which-key (milliseconds) - -- this setting is independent of vim.opt.timeoutlen + -- this setting is independent of vim.o.timeoutlen delay = 0, icons = { -- set icon mappings to true if you have a Nerd Font diff --git a/lua/kickstart/plugins/lint.lua b/lua/kickstart/plugins/lint.lua index 907c6bf3e31..dec42f097c6 100644 --- a/lua/kickstart/plugins/lint.lua +++ b/lua/kickstart/plugins/lint.lua @@ -50,7 +50,7 @@ return { -- Only run the linter in buffers that you can modify in order to -- avoid superfluous noise, notably within the handy LSP pop-ups that -- describe the hovered symbol using Markdown. - if vim.opt_local.modifiable:get() then + if vim.bo.modifiable then lint.try_lint() end end, From fb73617653d2352e0c3f931a534c5f538a7eea2b Mon Sep 17 00:00:00 2001 From: pynappo Date: Sat, 10 May 2025 17:18:04 -0700 Subject: [PATCH 41/47] don't lazy-load neo-tree so netrw hijacking on startup works (#1489) --- lua/kickstart/plugins/neo-tree.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index bd4422695aa..c7067891df0 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -9,7 +9,7 @@ return { 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended 'MunifTanjim/nui.nvim', }, - cmd = 'Neotree', + lazy = false, keys = { { '\\', ':Neotree reveal', desc = 'NeoTree reveal', silent = true }, }, From f5a9f9cdc607068bb23647ac7e6ff650dc02e2c9 Mon Sep 17 00:00:00 2001 From: Damjan 9000 Date: Sun, 11 May 2025 02:23:54 +0200 Subject: [PATCH 42/47] README: mention fd-find in requirements (#1477) Fixes #1476 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ace8b9b22b..4113950550d 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ If you are experiencing issues, please make sure you have the latest versions. External Requirements: - Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`) -- [ripgrep](https://github.com/BurntSushi/ripgrep#installation) +- [ripgrep](https://github.com/BurntSushi/ripgrep#installation), + [fd-find](https://github.com/sharkdp/fd#installation) - Clipboard tool (xclip/xsel/win32yank or other depending on the platform) - A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons - if you have it set `vim.g.have_nerd_font` in `init.lua` to true From 6ba2408cdf5eb7a0e4b62c7d6fab63b64dd720f6 Mon Sep 17 00:00:00 2001 From: Omri Sarig Date: Sun, 11 May 2025 02:29:04 +0200 Subject: [PATCH 43/47] fix: rename vim.highlight.on_yank to vim.hl.on_yank (#1482) The functions of vim.highlight were renamed to vim.hl on commit 18b43c331d8a0ed87d7cbefe2a18543b8e4ad360 of neovim, which was applied with the release of nvim version 0.11. Now, the use of vim.highlight is deprecated, and instead, one should use vim.hl functions. In practice, vim.highlight is still working, however, asking for help for vim.highlight.on_yank fails (E149), while asking for help for vim.hl.on_yank works as expected. So, by updating the used function, a new user will have easier time looking getting the relevant help. Co-authored-by: Omri Sarig --- init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init.lua b/init.lua index eb715025c30..b98ffc6198a 100644 --- a/init.lua +++ b/init.lua @@ -210,12 +210,12 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the upper win -- Highlight when yanking (copying) text -- Try it with `yap` in normal mode --- See `:help vim.highlight.on_yank()` +-- See `:help vim.hl.on_yank()` vim.api.nvim_create_autocmd('TextYankPost', { desc = 'Highlight when yanking (copying) text', group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), callback = function() - vim.highlight.on_yank() + vim.hl.on_yank() end, }) From 61e8b304e55c428ec5fa66af7ea33917304ddd9c Mon Sep 17 00:00:00 2001 From: jaho5 Date: Sat, 17 May 2025 11:54:16 -0700 Subject: [PATCH 44/47] Update windows installation command --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54c36e26d42..d18e70ce63d 100644 --- a/README.md +++ b/README.md @@ -86,13 +86,13 @@ git clone https://github.com/dam9000/kickstart-modular.nvim.git "${XDG_CONFIG_HO If you're using `cmd.exe`: ``` -git clone https://github.com/dam9000/kickstart.nvim.git "%localappdata%\nvim" +git clone https://github.com/dam9000/kickstart-modular.nvim.git "%localappdata%\nvim" ``` If you're using `powershell.exe` ``` -git clone https://github.com/dam9000/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim" +git clone https://github.com/dam9000/kickstart-modular.nvim.git "${env:LOCALAPPDATA}\nvim" ```
From db38f9d6a8d49ac195468aac44c0715d7971c2da Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Sun, 18 May 2025 18:39:34 -0400 Subject: [PATCH 45/47] remove conflicting stuff --- lua/custom/plugins/blink.cmp.lua | 58 ------------------- lua/custom/plugins/conform.lua | 10 ---- lua/custom/plugins/diffview.lua | 3 - lua/custom/plugins/init.lua | 5 -- lua/custom/plugins/lspconfig.lua | 23 -------- .../plugins/nvim_treesitter_textobjects.lua | 27 --------- lua/custom/plugins/supermaven.lua.disabled | 6 -- lua/kickstart/plugins/conform.lua | 14 +++++ lua/kickstart/plugins/lspconfig.lua | 24 ++++++++ lua/lazy-plugins.lua | 10 ++-- 10 files changed, 43 insertions(+), 137 deletions(-) delete mode 100644 lua/custom/plugins/blink.cmp.lua delete mode 100644 lua/custom/plugins/diffview.lua delete mode 100644 lua/custom/plugins/init.lua delete mode 100644 lua/custom/plugins/nvim_treesitter_textobjects.lua delete mode 100644 lua/custom/plugins/supermaven.lua.disabled diff --git a/lua/custom/plugins/blink.cmp.lua b/lua/custom/plugins/blink.cmp.lua deleted file mode 100644 index 3798eab74fe..00000000000 --- a/lua/custom/plugins/blink.cmp.lua +++ /dev/null @@ -1,58 +0,0 @@ -return { - 'saghen/blink.cmp', - lazy = false, -- lazy loading handled internally - -- optional: provides snippets for the snippet source - dependencies = 'rafamadriz/friendly-snippets', - - -- use a release tag to download pre-built binaries - version = 'v0.*', - -- OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust - -- build = 'cargo build --release', - -- If you use nix, you can build from source using latest nightly rust with: - -- build = 'nix run .#build-plugin', - - ---@module 'blink.cmp' - ---@type blink.cmp.Config - opts = { - -- 'default' for mappings similar to built-in completion - -- 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate) - -- 'enter' for mappings similar to 'super-tab' but with 'enter' to accept - -- see the "default configuration" section below for full documentation on how to define - -- your own keymap. - keymap = { preset = 'default' }, - - appearance = { - -- Sets the fallback highlight groups to nvim-cmp's highlight groups - -- Useful for when your theme doesn't support blink.cmp - -- will be removed in a future release - -- use_nvim_cmp_as_default = true, - -- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- Adjusts spacing to ensure icons are aligned - nerd_font_variant = 'mono', - }, - - -- default list of enabled providers defined so that you can extend it - -- elsewhere in your config, without redefining it, via `opts_extend` - sources = { - default = { 'lsp', 'path', 'snippets', 'buffer', 'lazydev' }, - providers = { - -- dont show LuaLS require statements when lazydev has items - lsp = { fallbacks = { 'lazydev' } }, - lazydev = { name = 'LazyDev', module = 'lazydev.integrations.blink' }, - }, - }, - - completion = { - -- experimental auto-brackets support - accept = { auto_brackets = { enabled = true } }, - - documentation = { auto_show = true }, - }, - - -- experimental signature help support - signature = { enabled = true }, - }, - -- allows extending the enabled_providers array elsewhere in your config - -- without having to redefine it - opts_extend = { 'sources.defaults' }, -} diff --git a/lua/custom/plugins/conform.lua b/lua/custom/plugins/conform.lua index 846797601b2..8ffd0265aea 100644 --- a/lua/custom/plugins/conform.lua +++ b/lua/custom/plugins/conform.lua @@ -27,16 +27,6 @@ return { lsp_format_opt = 'fallback' end - -- Sort Tailwind CSS classes - local t_attached = vim.tbl_contains( - vim.tbl_map(function(c) - return c.name - end, vim.lsp.get_clients()), - 'tailwindcss' - ) - if t_attached and pcall(require, 'tailwind-tools') then - vim.cmd 'TailwindSort' - end return { timeout_ms = 1000, diff --git a/lua/custom/plugins/diffview.lua b/lua/custom/plugins/diffview.lua deleted file mode 100644 index eae0ef2ce0a..00000000000 --- a/lua/custom/plugins/diffview.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - 'sindrets/diffview.nvim', -} diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua deleted file mode 100644 index be0eb9d8d7a..00000000000 --- a/lua/custom/plugins/init.lua +++ /dev/null @@ -1,5 +0,0 @@ --- You can add your own plugins here or in other files in this directory! --- I promise not to create any merge conflicts in this directory :) --- --- See the kickstart.nvim README for more information -return {} diff --git a/lua/custom/plugins/lspconfig.lua b/lua/custom/plugins/lspconfig.lua index 49e4ff65d2a..f9be926f39f 100644 --- a/lua/custom/plugins/lspconfig.lua +++ b/lua/custom/plugins/lspconfig.lua @@ -184,29 +184,6 @@ return { }, }, - stimulus_ls = { - filetypes = { 'javascript' }, - }, - - tailwindcss = { - filetypes = { 'ruby' }, - settings = { - tailwindCSS = { - includeLanguages = { - ruby = 'html', - }, - experimental = { - classRegex = { - [[class= "([^"]*)"]], - [[class: "([^"]*)"]], - [[class= '([^']*)']], - [[class: '([^']*)']], - [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], - }, - }, - }, - }, - }, } -- Ensure the servers and tools above are installed diff --git a/lua/custom/plugins/nvim_treesitter_textobjects.lua b/lua/custom/plugins/nvim_treesitter_textobjects.lua deleted file mode 100644 index fc1671719a5..00000000000 --- a/lua/custom/plugins/nvim_treesitter_textobjects.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - 'nvim-treesitter/nvim-treesitter-textobjects', - lazy = true, - config = function() - require('nvim-treesitter.configs').setup { - textobjects = { - select = { - enable = true, - lookahead = true, - keymaps = { - ['af'] = { query = '@function.outer', desc = 'Select around a function' }, - ['if'] = { query = '@function.inner', desc = 'Select inside a function' }, - - ['ab'] = { query = '@block.outer', desc = 'Select around a block' }, - ['ib'] = { query = '@block.inner', desc = 'Select inside a block' }, - - ['ac'] = { query = '@call.outer', desc = 'Select around a call' }, - ['ic'] = { query = '@call.inner', desc = 'Select inside a call' }, - - ['a/'] = { query = '@comment.outer', desc = 'Select around a comment' }, - ['i/'] = { query = '@comment.inner', desc = 'Select inside a comment' }, - }, - }, - }, - } - end, -} diff --git a/lua/custom/plugins/supermaven.lua.disabled b/lua/custom/plugins/supermaven.lua.disabled deleted file mode 100644 index 75d8fedb60a..00000000000 --- a/lua/custom/plugins/supermaven.lua.disabled +++ /dev/null @@ -1,6 +0,0 @@ -return { - 'supermaven-inc/supermaven-nvim', - config = function() - require('supermaven-nvim').setup {} - end, -} diff --git a/lua/kickstart/plugins/conform.lua b/lua/kickstart/plugins/conform.lua index ca7c0c00b25..7412139986c 100644 --- a/lua/kickstart/plugins/conform.lua +++ b/lua/kickstart/plugins/conform.lua @@ -16,6 +16,20 @@ return { opts = { notify_on_error = false, format_on_save = function(bufnr) + -- Sort Tailwind CSS classes + local t_attached = vim.tbl_contains( + vim.tbl_map( + function(c) + return c.name + end, + vim.lsp.get_clients() + ), + 'tailwindcss' + ) + if t_attached and pcall(require, 'tailwind-tools') then + vim.cmd 'TailwindSort' + end + -- 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. diff --git a/lua/kickstart/plugins/lspconfig.lua b/lua/kickstart/plugins/lspconfig.lua index 6532757d872..92eb1e9b28e 100644 --- a/lua/kickstart/plugins/lspconfig.lua +++ b/lua/kickstart/plugins/lspconfig.lua @@ -235,6 +235,30 @@ return { }, }, }, + + stimulus_ls = { + filetypes = { 'javascript' }, + }, + + tailwindcss = { + filetypes = { 'ruby' }, + settings = { + tailwindCSS = { + includeLanguages = { + ruby = 'html', + }, + experimental = { + classRegex = { + [[class= "([^"]*)"]], + [[class: "([^"]*)"]], + [[class= '([^']*)']], + [[class: '([^']*)']], + [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], + }, + }, + }, + }, + }, } -- Ensure the servers and tools above are installed diff --git a/lua/lazy-plugins.lua b/lua/lazy-plugins.lua index 0a2b211af69..336cd55fdfe 100644 --- a/lua/lazy-plugins.lua +++ b/lua/lazy-plugins.lua @@ -52,11 +52,11 @@ 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.indent_line', - -- require 'kickstart.plugins.lint', - -- require 'kickstart.plugins.autopairs', - -- require 'kickstart.plugins.neo-tree', + require 'kickstart.plugins.debug', + require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.lint', + require 'kickstart.plugins.autopairs', + require 'kickstart.plugins.neo-tree', -- 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 d3f78db1039095725b9dde2917775e474075a262 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Sun, 18 May 2025 19:14:12 -0400 Subject: [PATCH 46/47] more changes --- init.lua | 9 +- lazy-lock.json | 11 +- lua/custom/plugins/lspconfig.lua | 222 ---------------------------- lua/custom/plugins/theme.lua | 15 -- lua/custom/plugins/themes.lua | 8 + lua/kickstart/plugins/lspconfig.lua | 36 ++--- lua/lazy-plugins.lua | 4 +- 7 files changed, 38 insertions(+), 267 deletions(-) delete mode 100644 lua/custom/plugins/lspconfig.lua delete mode 100644 lua/custom/plugins/theme.lua create mode 100644 lua/custom/plugins/themes.lua diff --git a/init.lua b/init.lua index c05750f9d55..6c6d42bd327 100644 --- a/init.lua +++ b/init.lua @@ -99,8 +99,11 @@ require 'options' -- [[ Basic Keymaps ]] require 'keymaps' +-- [[ Install `lazy.nvim` plugin manager ]] +require 'lazy-bootstrap' + +-- [[ Configure and install plugins ]] +require 'lazy-plugins' + -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et - --- NOTE: Anything below this is my custom config. -vim.opt.fillchars:append { diff = '╱' } diff --git a/lazy-lock.json b/lazy-lock.json index 6fd873b031c..334ac13a73f 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,14 +1,13 @@ { - "blink.cmp": { "branch": "main", "commit": "485c03400608cb6534bbf84da8c1c471fc4808c0" }, + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, "conform.nvim": { "branch": "master", "commit": "a4bb5d6c4ae6f32ab13114e62e70669fa67745b9" }, - "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "gitsigns.nvim": { "branch": "main", "commit": "39e0d1cd44eafed5f30c372e377ab1cb1781ec9f" }, + "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "luvit-meta": { "branch": "main", "commit": "1df30b60b1b4aecfebc785aa98943db6c6989716" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" }, "mason-tool-installer.nvim": { "branch": "main", "commit": "75d60a8f928decd8b38897f80849768b7c540a5b" }, @@ -29,7 +28,6 @@ "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" }, "nvim-treesitter-context": { "branch": "master", "commit": "5c48b8ba1b0b7b25feb6e34e7eb293ea893aedc4" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "b0debd5c424969b4baeabdc8f54db3036c691732" }, "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "openingh.nvim": { "branch": "main", "commit": "7cc8c897cb6b34d8ed28e99d95baccef609ed251" }, "oxocarbon.nvim": { "branch": "main", "commit": "004777819ba294423b638a35a75c9f0c7be758ed" }, @@ -38,8 +36,7 @@ "tailwind-tools": { "branch": "master", "commit": "999d314444073095494f5a36b90fdba3c432a457" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } } diff --git a/lua/custom/plugins/lspconfig.lua b/lua/custom/plugins/lspconfig.lua deleted file mode 100644 index f9be926f39f..00000000000 --- a/lua/custom/plugins/lspconfig.lua +++ /dev/null @@ -1,222 +0,0 @@ -return { - -- Main LSP Configuration - 'neovim/nvim-lspconfig', - dependencies = { - -- 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({})` - { 'williamboman/mason.nvim', opts = {} }, - 'williamboman/mason-lspconfig.nvim', - 'WhoIsSethDaniel/mason-tool-installer.nvim', - - -- Useful status updates for LSP. - -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` - { 'j-hui/fidget.nvim', opts = {} }, - - -- Allows extra capabilities provided by blink.cmp - 'saghen/blink.cmp', - }, - config = function() - -- Brief aside: **What is LSP?** - -- - -- LSP is an initialism you've probably heard, but might not understand what it is. - -- - -- LSP stands for Language Server Protocol. It's a protocol that helps editors - -- and language tooling communicate in a standardized fashion. - -- - -- In general, you have a "server" which is some tool built to understand a particular - -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers - -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone - -- processes that communicate with some "client" - in this case, Neovim! - -- - -- LSP provides Neovim with features like: - -- - Go to definition - -- - Find references - -- - Autocompletion - -- - Symbol Search - -- - and more! - -- - -- Thus, Language Servers are external tools that must be installed separately from - -- Neovim. This is where `mason` and related plugins come into play. - -- - -- If you're wondering about lsp vs treesitter, you can check out the wonderfully - -- and elegantly composed help section, `:help lsp-vs-treesitter` - - -- This function gets run when an LSP attaches to a particular buffer. - -- That is to say, every time a new file is opened that is associated with - -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this - -- function will be executed to configure the current buffer - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), - callback = function(event) - -- NOTE: Remember that Lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself. - -- - -- In this case, we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. - local map = function(keys, func, desc, mode) - mode = mode or 'n' - vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) - end - - -- Jump to the definition of the word under your cursor. - -- This is where a variable was first declared, or where a function is defined, etc. - -- To jump back, press . - map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') - - -- Find references for the word under your cursor. - map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') - - -- Jump to the implementation of the word under your cursor. - -- Useful when your language has ways of declaring types without an actual implementation. - map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') - - -- Jump to the type of the word under your cursor. - -- Useful when you're not sure what type a variable is and you want to see - -- the definition of its *type*, not where it was *defined*. - map('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') - - -- Fuzzy find all the symbols in your current document. - -- Symbols are things like variables, functions, types, etc. - map('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') - - -- Fuzzy find all the symbols in your current workspace. - -- Similar to document symbols, except searches over your entire project. - map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') - - -- Rename the variable under your cursor. - -- Most Language Servers support renaming across files, etc. - map('rn', vim.lsp.buf.rename, '[R]e[n]ame') - - -- Execute a code action, usually your cursor needs to be on top of an error - -- or a suggestion from your LSP for this to activate. - map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' }) - - -- WARN: This is not Goto Definition, this is Goto Declaration. - -- For example, in C this would take you to the header. - map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') - - -- 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(vim.lsp.protocol.Methods.textDocument_documentHighlight) then - local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) - vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.document_highlight, - }) - - vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.clear_references, - }) - - vim.api.nvim_create_autocmd('LspDetach', { - group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), - callback = function(event2) - vim.lsp.buf.clear_references() - vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf } - end, - }) - end - - -- The following code creates a keymap to toggle inlay hints in your - -- code, if the language server you are using supports them - -- - -- This may be unwanted, since they displace some of your code - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then - map('th', function() - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) - end, '[T]oggle Inlay [H]ints') - end - end, - }) - - -- Change diagnostic symbols in the sign column (gutter) - if vim.g.have_nerd_font then - local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' } - local diagnostic_signs = {} - for type, icon in pairs(signs) do - diagnostic_signs[vim.diagnostic.severity[type]] = icon - end - vim.diagnostic.config { signs = { text = diagnostic_signs } } - end - - -- LSP servers and clients are able to communicate to each other what features they support. - -- By default, Neovim doesn't support everything that is in the LSP specification. - -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. - -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers. - -- local capabilities = vim.lsp.protocol.make_client_capabilities() - -- capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities()) - - -- Enable the following language servers - -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. - -- - -- Add any additional override configuration in the following tables. Available keys are: - -- - cmd (table): Override the default command used to start the server - -- - filetypes (table): Override the default list of associated filetypes for the server - -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. - -- - 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 = { - gopls = { - analyses = { - shadow = true, - unusedvariable = true, - useany = true, - }, - staticcheck = true, - gofumpt = true, - }, - - lua_ls = { - settings = { - Lua = { - completion = { - callSnippet = 'Replace', - }, - }, - }, - }, - - } - - -- Ensure the servers and tools above are installed - -- - -- To check the current status of installed tools and/or manually install - -- other tools, you can run - -- :Mason - -- - -- You can press `g?` for help in this menu. - -- - -- `mason` had to be setup earlier: to configure its options see the - -- `dependencies` table for `nvim-lspconfig` above. - -- - -- You can add other tools here that you want Mason to install - -- for you, so that they are available from within Neovim. - local ensure_installed = vim.tbl_keys(servers or {}) - vim.list_extend(ensure_installed, { - 'stylua', -- Used to format Lua code - }) - require('mason-tool-installer').setup { ensure_installed = ensure_installed } - - require('mason-lspconfig').setup { - handlers = { - -- This function automatically sets up LSP servers installed with Mason. - 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 = require('blink.cmp').get_lsp_capabilities(server.capabilities) - require('lspconfig')[server_name].setup(server) - end, - }, - } - end, -} diff --git a/lua/custom/plugins/theme.lua b/lua/custom/plugins/theme.lua deleted file mode 100644 index 05cec165368..00000000000 --- a/lua/custom/plugins/theme.lua +++ /dev/null @@ -1,15 +0,0 @@ --- return { --- 'catppuccin/nvim', --- name = 'catppuccin', --- priority = 1000, --- init = function() --- vim.cmd.colorscheme 'catppuccin' --- end, --- } - -return { - 'nyoom-engineering/oxocarbon.nvim', - init = function() - vim.cmd.colorscheme 'oxocarbon' - end, -} diff --git a/lua/custom/plugins/themes.lua b/lua/custom/plugins/themes.lua new file mode 100644 index 00000000000..bf033f60e00 --- /dev/null +++ b/lua/custom/plugins/themes.lua @@ -0,0 +1,8 @@ +return { + { + 'nyoom-engineering/oxocarbon.nvim', + init = function() + vim.cmd.colorscheme 'oxocarbon' + end, + }, +} diff --git a/lua/kickstart/plugins/lspconfig.lua b/lua/kickstart/plugins/lspconfig.lua index 92eb1e9b28e..9f3e65de653 100644 --- a/lua/kickstart/plugins/lspconfig.lua +++ b/lua/kickstart/plugins/lspconfig.lua @@ -236,29 +236,29 @@ return { }, }, - stimulus_ls = { - filetypes = { 'javascript' }, - }, + stimulus_ls = { + filetypes = { 'javascript' }, + }, - tailwindcss = { - filetypes = { 'ruby' }, - settings = { - tailwindCSS = { - includeLanguages = { - ruby = 'html', - }, - experimental = { - classRegex = { - [[class= "([^"]*)"]], - [[class: "([^"]*)"]], - [[class= '([^']*)']], - [[class: '([^']*)']], - [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], + tailwindcss = { + filetypes = { 'ruby' }, + settings = { + tailwindCSS = { + includeLanguages = { + ruby = 'html', + }, + experimental = { + classRegex = { + [[class= "([^"]*)"]], + [[class: "([^"]*)"]], + [[class= '([^']*)']], + [[class: '([^']*)']], + [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], + }, }, }, }, }, - }, } -- Ensure the servers and tools above are installed diff --git a/lua/lazy-plugins.lua b/lua/lazy-plugins.lua index 336cd55fdfe..e8f6ae87b06 100644 --- a/lua/lazy-plugins.lua +++ b/lua/lazy-plugins.lua @@ -35,7 +35,7 @@ require('lazy').setup({ require 'kickstart/plugins/blink-cmp', - require 'kickstart/plugins/tokyonight', + -- require 'kickstart/plugins/tokyonight', require 'kickstart/plugins/todo-comments', @@ -62,7 +62,7 @@ require('lazy').setup({ -- This is the easiest way to modularize your config. -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- { import = 'custom.plugins' }, + { import = 'custom.plugins' }, -- -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` -- Or use telescope! From 6b6c1a7886ce536e010b5b3069f9744f7135ff61 Mon Sep 17 00:00:00 2001 From: Mohamed Hamza Date: Sun, 18 May 2025 22:11:08 -0400 Subject: [PATCH 47/47] more --- lazy-lock.json | 2 +- lua/custom/plugins/conform.lua | 47 ------------------- .../{tailwind.lua => tailwind-tools.lua} | 18 ++++++- lua/kickstart/plugins/conform.lua | 23 ++++----- lua/kickstart/plugins/lspconfig.lua | 19 +------- 5 files changed, 29 insertions(+), 80 deletions(-) delete mode 100644 lua/custom/plugins/conform.lua rename lua/custom/plugins/{tailwind.lua => tailwind-tools.lua} (51%) diff --git a/lazy-lock.json b/lazy-lock.json index 334ac13a73f..c53f4287cdd 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -33,7 +33,7 @@ "oxocarbon.nvim": { "branch": "main", "commit": "004777819ba294423b638a35a75c9f0c7be758ed" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "render-markdown.nvim": { "branch": "main", "commit": "a1b0988f5ab26698afb56b9c2f0525a4de1195c1" }, - "tailwind-tools": { "branch": "master", "commit": "999d314444073095494f5a36b90fdba3c432a457" }, + "tailwind-tools": { "branch": "master", "commit": "0c491f3405f439763af339bd36e44e0fe26a5cf7" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, diff --git a/lua/custom/plugins/conform.lua b/lua/custom/plugins/conform.lua deleted file mode 100644 index 8ffd0265aea..00000000000 --- a/lua/custom/plugins/conform.lua +++ /dev/null @@ -1,47 +0,0 @@ -return { - 'stevearc/conform.nvim', - event = { 'BufWritePre' }, - cmd = { 'ConformInfo' }, - keys = { - { - 'f', - function() - require('conform').format { async = true, lsp_format = 'fallback' } - end, - mode = '', - desc = '[F]ormat buffer', - }, - }, - opts = { - notify_on_error = false, - format_on_save = function(bufnr) - -- 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 lsp_format_opt - if disable_filetypes[vim.bo[bufnr].filetype] then - lsp_format_opt = 'never' - else - lsp_format_opt = 'fallback' - end - - - return { - timeout_ms = 1000, - lsp_format = lsp_format_opt, - } - end, - formatters_by_ft = { - lua = { 'stylua' }, - -- 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 }, - - go = { 'goimports' }, - }, - }, -} diff --git a/lua/custom/plugins/tailwind.lua b/lua/custom/plugins/tailwind-tools.lua similarity index 51% rename from lua/custom/plugins/tailwind.lua rename to lua/custom/plugins/tailwind-tools.lua index 6fbc26f4669..87757bb8f09 100644 --- a/lua/custom/plugins/tailwind.lua +++ b/lua/custom/plugins/tailwind-tools.lua @@ -1,5 +1,5 @@ return { - 'luckasRanarison/tailwind-tools.nvim', + 'mhamza15/tailwind-tools.nvim', name = 'tailwind-tools', build = ':UpdateRemotePlugins', dependencies = { @@ -7,6 +7,22 @@ return { 'nvim-telescope/telescope.nvim', -- optional }, opts = { + server = { + settings = { + includeLanguages = { + ruby = 'html', + }, + experimental = { + classRegex = { + [[class= "([^"]*)"]], + [[class: "([^"]*)"]], + [[class= '([^']*)']], + [[class: '([^']*)']], + [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], + }, + }, + }, + }, extension = { queries = { 'ruby' }, patterns = { diff --git a/lua/kickstart/plugins/conform.lua b/lua/kickstart/plugins/conform.lua index 7412139986c..b64abd8c70f 100644 --- a/lua/kickstart/plugins/conform.lua +++ b/lua/kickstart/plugins/conform.lua @@ -16,19 +16,16 @@ return { opts = { notify_on_error = false, format_on_save = function(bufnr) - -- Sort Tailwind CSS classes - local t_attached = vim.tbl_contains( - vim.tbl_map( - function(c) - return c.name - end, - vim.lsp.get_clients() - ), - 'tailwindcss' - ) - if t_attached and pcall(require, 'tailwind-tools') then - vim.cmd 'TailwindSort' - end + -- Sort Tailwind CSS classes + local t_attached = vim.tbl_contains( + vim.tbl_map(function(c) + return c.name + end, vim.lsp.get_clients()), + 'tailwindcss' + ) + if t_attached and pcall(require, 'tailwind-tools') then + vim.cmd 'TailwindSort' + end -- Disable "format_on_save lsp_fallback" for languages that don't -- have a well standardized coding style. You can add additional diff --git a/lua/kickstart/plugins/lspconfig.lua b/lua/kickstart/plugins/lspconfig.lua index 9f3e65de653..61ce537d213 100644 --- a/lua/kickstart/plugins/lspconfig.lua +++ b/lua/kickstart/plugins/lspconfig.lua @@ -16,8 +16,7 @@ return { -- Main LSP Configuration 'neovim/nvim-lspconfig', dependencies = { - -- 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. + -- 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-lspconfig.nvim', @@ -242,22 +241,6 @@ return { tailwindcss = { filetypes = { 'ruby' }, - settings = { - tailwindCSS = { - includeLanguages = { - ruby = 'html', - }, - experimental = { - classRegex = { - [[class= "([^"]*)"]], - [[class: "([^"]*)"]], - [[class= '([^']*)']], - [[class: '([^']*)']], - [[cn\(\s*"([^"]*)"\s*(?:,\s*([^)]*))?\s*\)]], - }, - }, - }, - }, }, }