Merge branch 'master' of github.com:jerensl/kickstart.nvim into update

Signed-off-by: Jerens Lensun <jerensslensun@gmail.com>
This commit is contained in:
Jerens Lensun 2026-02-16 17:22:34 +08:00
commit e345f703fe
8 changed files with 162 additions and 75 deletions

5
.gitignore vendored
View File

@ -4,4 +4,9 @@ test.sh
nvim nvim
spell/ spell/
# You can uncomment this yourself if you want to lock the lazy-lock.json,
# but for kickstart, it makes sense to leave it ignored.
lazy-lock.json lazy-lock.json
.DS_Store

View File

@ -4,3 +4,4 @@ indent_type = "Spaces"
indent_width = 2 indent_width = 2
quote_style = "AutoPreferSingle" quote_style = "AutoPreferSingle"
call_parentheses = "None" call_parentheses = "None"
collapse_simple_statement = "Always"

View File

@ -17,7 +17,14 @@ A starting point for Neovim that is:
Kickstart.nvim targets *only* the latest Kickstart.nvim targets *only* the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
If you are experiencing issues, please make sure you have the latest versions. If you are experiencing issues, please make sure you have at least the latest
stable version. Most likely, you want to install neovim via a [package
manager](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package).
To check your neovim version, run `nvim --version` and make sure it is not
below the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) version. If
your chosen install method only gives you an outdated version of neovim, find
alternative [installation methods below](#alternative-neovim-installation-methods).
### Install External Dependencies ### Install External Dependencies
@ -154,7 +161,7 @@ examples of adding popularly requested plugins.
Below you can find OS specific install instructions for Neovim and dependencies. Below you can find OS specific install instructions for Neovim and dependencies.
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step. After installing all the dependencies continue with the [Install Kickstart](#install-kickstart) step.
#### Windows Installation #### Windows Installation
@ -239,3 +246,77 @@ sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
``` ```
</details> </details>
### Alternative neovim installation methods
For some systems it is not unexpected that the [package manager installation
method](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package)
recommended by neovim is significantly behind. If that is the case for you,
pick one of the following methods that are known to deliver fresh neovim versions very quickly.
They have been picked for their popularity and because they make installing and updating
neovim to the latest versions easy. You can also find more detail about the
available methods being discussed
[here](https://github.com/nvim-lua/kickstart.nvim/issues/1583).
<details><summary>Bob</summary>
[Bob](https://github.com/MordechaiHadad/bob) is a Neovim version manager for
all plattforms. Simply install
[rustup](https://rust-lang.github.io/rustup/installation/other.html),
and run the following commands:
```bash
rustup default stable
rustup update stable
cargo install bob-nvim
bob use stable
```
</details>
<details><summary>Homebrew</summary>
[Homebrew](https://brew.sh) is a package manager popular on Mac and Linux.
Simply install using [`brew install`](https://formulae.brew.sh/formula/neovim).
</details>
<details><summary>Flatpak</summary>
Flatpak is a package manager for applications that allows developers to package their applications
just once to make it available on all Linux systems. Simply [install flatpak](https://flatpak.org/setup/)
and setup [flathub](https://flathub.org/setup) to [install neovim](https://flathub.org/apps/io.neovim.nvim).
</details>
<details><summary>asdf and mise-en-place</summary>
[asdf](https://asdf-vm.com/) and [mise](https://mise.jdx.dev/) are tool version managers,
mostly aimed towards project-specific tool versioning. However both support managing tools
globally in the user-space as well:
<details><summary>mise</summary>
[Install mise](https://mise.jdx.dev/getting-started.html), then run:
```bash
mise plugins install neovim
mise use neovim@stable
```
</details>
<details><summary>asdf</summary>
[Install asdf](https://asdf-vm.com/guide/getting-started.html), then run:
```bash
asdf plugin add neovim
asdf install neovim stable
asdf set neovim stable --home
asdf reshim neovim
```
</details>
</details>

View File

@ -210,9 +210,7 @@ vim.opt.expandtab = true
-- Schedule the setting after `UiEnter` because it can increase startup-time. -- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent. -- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'` -- See `:help 'clipboard'`
vim.schedule(function() vim.schedule(function() vim.o.clipboard = 'unnamedplus' end)
vim.o.clipboard = 'unnamedplus'
end)
-- Enable break indent -- Enable break indent
vim.o.breakindent = true vim.o.breakindent = true
@ -311,9 +309,7 @@ vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper win
vim.api.nvim_create_autocmd('TextYankPost', { vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text', desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function() callback = function() vim.hl.on_yank() end,
vim.hl.on_yank()
end,
}) })
-- [[ Install `lazy.nvim` plugin manager ]] -- [[ Install `lazy.nvim` plugin manager ]]
@ -322,9 +318,7 @@ local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git' local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then if vim.v.shell_error ~= 0 then error('Error cloning lazy.nvim:\n' .. out) end
error('Error cloning lazy.nvim:\n' .. out)
end
end end
---@type vim.Option ---@type vim.Option
@ -469,9 +463,7 @@ require('lazy').setup({
-- `cond` is a condition used to determine whether this plugin should be -- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded. -- installed and loaded.
cond = function() cond = function() return vim.fn.executable 'make' == 1 end,
return vim.fn.executable 'make' == 1
end,
}, },
{ 'nvim-telescope/telescope-ui-select.nvim' }, { 'nvim-telescope/telescope-ui-select.nvim' },
@ -553,17 +545,20 @@ require('lazy').setup({
-- It's also possible to pass additional configuration options. -- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys -- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set('n', '<leader>s/', function() vim.keymap.set(
'n',
'<leader>s/',
function()
builtin.live_grep { builtin.live_grep {
grep_open_files = true, grep_open_files = true,
prompt_title = 'Live Grep in Open Files', prompt_title = 'Live Grep in Open Files',
} }
end, { desc = '[S]earch [/] in Open Files' }) end,
{ desc = '[S]earch [/] in Open Files' }
)
-- Shortcut for searching your Neovim configuration files -- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<leader>sn', function() vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[S]earch [N]eovim files' })
end, end,
}, },
@ -724,9 +719,7 @@ require('lazy').setup({
-- --
-- This may be unwanted, since they displace some of your code -- This may be unwanted, since they displace some of your code
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
map('<leader>th', function() map('<leader>th', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) end, '[T]oggle Inlay [H]ints')
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
end, '[T]oggle Inlay [H]ints')
end end
end, end,
}) })
@ -941,9 +934,7 @@ require('lazy').setup({
-- Build Step is needed for regex support in snippets. -- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments. -- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows. -- Remove the below condition to re-enable on windows.
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then return end
return
end
return 'make install_jsregexp' return 'make install_jsregexp'
end)(), end)(),
dependencies = { dependencies = {
@ -952,9 +943,7 @@ require('lazy').setup({
-- https://github.com/rafamadriz/friendly-snippets -- https://github.com/rafamadriz/friendly-snippets
{ {
'rafamadriz/friendly-snippets', 'rafamadriz/friendly-snippets',
config = function() config = function() require('luasnip.loaders.from_vscode').lazy_load() end,
require('luasnip.loaders.from_vscode').lazy_load()
end,
}, },
}, },
opts = {}, opts = {},
@ -1081,9 +1070,7 @@ require('lazy').setup({
-- default behavior. For example, here we set the section for -- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN -- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field ---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function() statusline.section_location = function() return '%2l:%-2v' end
return '%2l:%-2v'
end
-- ... and there is more! -- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim -- Check out: https://github.com/echasnovski/mini.nvim

View File

@ -12,7 +12,7 @@ local check_version = function()
return return
end end
if vim.version.ge(vim.version(), '0.10-dev') then if vim.version.ge(vim.version(), '0.11') then
vim.health.ok(string.format("Neovim version is: '%s'", verstr)) vim.health.ok(string.format("Neovim version is: '%s'", verstr))
else else
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))

View File

@ -21,6 +21,45 @@ return {
'mfussenegger/nvim-dap-python', 'mfussenegger/nvim-dap-python',
'leoluz/nvim-dap-go', 'leoluz/nvim-dap-go',
}, },
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
{
'<F5>',
function() require('dap').continue() end,
desc = 'Debug: Start/Continue',
},
{
'<F1>',
function() require('dap').step_into() end,
desc = 'Debug: Step Into',
},
{
'<F2>',
function() require('dap').step_over() end,
desc = 'Debug: Step Over',
},
{
'<F3>',
function() require('dap').step_out() end,
desc = 'Debug: Step Out',
},
{
'<leader>b',
function() require('dap').toggle_breakpoint() end,
desc = 'Debug: Toggle Breakpoint',
},
{
'<leader>B',
function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end,
desc = 'Debug: Set Breakpoint',
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{
'<F7>',
function() require('dapui').toggle() end,
desc = 'Debug: See last session result.',
},
},
config = function() config = function()
local dap = require 'dap' local dap = require 'dap'
local ui = require 'dapui' local ui = require 'dapui'
@ -43,13 +82,9 @@ return {
display_callback = function(variable) display_callback = function(variable)
local name = string.lower(variable.name) local name = string.lower(variable.name)
local value = string.lower(variable.value) local value = string.lower(variable.value)
if name:match 'secret' or name:match 'api' or value:match 'secret' or value:match 'api' then if name:match 'secret' or name:match 'api' or value:match 'secret' or value:match 'api' then return '*****' end
return '*****'
end
if #variable.value > 15 then if #variable.value > 15 then return ' ' .. string.sub(variable.value, 1, 15) .. '... ' end
return ' ' .. string.sub(variable.value, 1, 15) .. '... '
end
return ' ' .. variable.value return ' ' .. variable.value
end, end,
@ -101,9 +136,7 @@ return {
enrich_config = function(config, on_config) enrich_config = function(config, on_config)
-- If the configuration(s) in `launch.json` contains a `cargo` section -- If the configuration(s) in `launch.json` contains a `cargo` section
-- send the configuration off to the cargo_inspector. -- send the configuration off to the cargo_inspector.
if config['cargo'] ~= nil then if config['cargo'] ~= nil then on_config(cargo_inspector(config)) end
on_config(cargo_inspector(config))
end
end, end,
} }
@ -124,9 +157,7 @@ return {
name = 'Debug an Executable', name = 'Debug an Executable',
type = 'lldb', type = 'lldb',
request = 'launch', request = 'launch',
program = function() program = function() return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end,
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = '${workspaceFolder}', cwd = '${workspaceFolder}',
stopOnEntry = false, stopOnEntry = false,
}, },
@ -155,9 +186,7 @@ return {
vim.keymap.set('n', '<space>gb', dap.run_to_cursor) vim.keymap.set('n', '<space>gb', dap.run_to_cursor)
-- Eval var under cursor -- Eval var under cursor
vim.keymap.set('n', '<space>?', function() vim.keymap.set('n', '<space>?', function() require('dapui').eval(nil, { enter = true }) end)
require('dapui').eval(nil, { enter = true })
end)
vim.keymap.set('n', '<F1>', dap.continue) vim.keymap.set('n', '<F1>', dap.continue)
vim.keymap.set('n', '<F2>', dap.step_into) vim.keymap.set('n', '<F2>', dap.step_into)
@ -166,18 +195,10 @@ return {
vim.keymap.set('n', '<F5>', dap.step_back) vim.keymap.set('n', '<F5>', dap.step_back)
vim.keymap.set('n', '<F13>', dap.restart) vim.keymap.set('n', '<F13>', dap.restart)
dap.listeners.before.attach.dapui_config = function() dap.listeners.before.attach.dapui_config = function() ui.open() end
ui.open() dap.listeners.before.launch.dapui_config = function() ui.open() end
end dap.listeners.before.event_terminated.dapui_config = function() ui.close() end
dap.listeners.before.launch.dapui_config = function() dap.listeners.before.event_exited.dapui_config = function() ui.close() end
ui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
ui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
ui.close()
end
require('dap-python').setup() require('dap-python').setup()
end, end,

View File

@ -34,12 +34,8 @@ return {
-- Actions -- Actions
-- visual mode -- visual mode
map('v', '<leader>hs', function() map('v', '<leader>hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } map('v', '<leader>hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
end, { desc = 'git [s]tage hunk' })
map('v', '<leader>hr', function()
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'git [r]eset hunk' })
-- normal mode -- normal mode
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
@ -49,9 +45,7 @@ return {
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
map('n', '<leader>hD', function() map('n', '<leader>hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
gitsigns.diffthis '@'
end, { desc = 'git [D]iff against last commit' })
-- Toggles -- Toggles
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })

View File

@ -50,9 +50,7 @@ return {
-- Only run the linter in buffers that you can modify in order to -- Only run the linter in buffers that you can modify in order to
-- avoid superfluous noise, notably within the handy LSP pop-ups that -- avoid superfluous noise, notably within the handy LSP pop-ups that
-- describe the hovered symbol using Markdown. -- describe the hovered symbol using Markdown.
if vim.bo.modifiable then if vim.bo.modifiable then lint.try_lint() end
lint.try_lint()
end
end, end,
}) })
end, end,