diff --git a/.gitignore b/.gitignore
index 005b535b..d12a5c88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,9 @@ test.sh
nvim
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
+
+.DS_Store
diff --git a/.stylua.toml b/.stylua.toml
index 139e9397..edfa5067 100644
--- a/.stylua.toml
+++ b/.stylua.toml
@@ -4,3 +4,4 @@ indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
call_parentheses = "None"
+collapse_simple_statement = "Always"
diff --git a/README.md b/README.md
index 41139505..2b9e52da 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,14 @@ A starting point for Neovim that is:
Kickstart.nvim targets *only* the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
['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
@@ -154,7 +161,7 @@ examples of adding popularly requested plugins.
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
@@ -239,3 +246,77 @@ sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
```
+### 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).
+
+
+Bob
+
+[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
+```
+
+
+
+Homebrew
+
+[Homebrew](https://brew.sh) is a package manager popular on Mac and Linux.
+Simply install using [`brew install`](https://formulae.brew.sh/formula/neovim).
+
+
+
+Flatpak
+
+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).
+
+
+
+asdf and mise-en-place
+
+[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:
+
+mise
+
+[Install mise](https://mise.jdx.dev/getting-started.html), then run:
+
+```bash
+mise plugins install neovim
+mise use neovim@stable
+```
+
+
+
+asdf
+
+[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
+```
+
+
+
+
diff --git a/init.lua b/init.lua
index aac3449f..402f8c26 100644
--- a/init.lua
+++ b/init.lua
@@ -33,9 +33,7 @@ vim.o.showmode = false
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- See `:help 'clipboard'`
-vim.schedule(function()
- vim.o.clipboard = 'unnamedplus'
-end)
+vim.schedule(function() vim.o.clipboard = 'unnamedplus' end)
vim.o.breakindent = true -- Enable break indent
vim.o.undofile = true -- Save undo history
@@ -64,7 +62,7 @@ vim.o.splitbelow = 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`
+-- and `:help lua-guide-options`
vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
@@ -96,7 +94,22 @@ vim.o.confirm = true
-- See `:help hlsearch`
vim.keymap.set('n', '', 'nohlsearch')
--- Diagnostic keymaps
+-- Diagnostic Config & Keymaps
+-- See :help vim.diagnostic.Opts
+vim.diagnostic.config {
+ update_in_insert = false,
+ severity_sort = true,
+ float = { border = 'rounded', source = 'if_many' },
+ underline = { severity = vim.diagnostic.severity.ERROR },
+
+ -- Can switch between these as you prefer
+ virtual_text = true, -- Text shows up at the end of the line
+ virtual_lines = false, -- Teest shows up underneath the line, with virtual lines
+
+ -- Auto open the float, so you can easily read the errors when jumping with `[d` and `]d`
+ jump = { float = true },
+}
+
vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
@@ -139,9 +152,7 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the upper win
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.hl.on_yank()
- end,
+ callback = function() vim.hl.on_yank() end,
})
-- Terminal auto command
@@ -188,9 +199,7 @@ local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
- if vim.v.shell_error ~= 0 then
- error('Error cloning lazy.nvim:\n' .. out)
- end
+ if vim.v.shell_error ~= 0 then error('Error cloning lazy.nvim:\n' .. out) end
end
---@type vim.Option
@@ -245,51 +254,15 @@ require('lazy').setup({
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
- event = 'VimEnter', -- Sets the loading event to 'VimEnter'
+ event = 'VimEnter',
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
- -- this setting is independent of vim.o.timeoutlen
delay = 0,
- icons = {
- -- set icon mappings to true if you have a Nerd Font
- mappings = vim.g.have_nerd_font,
- -- If you are using a Nerd Font: set icons.keys to an empty table which will use the
- -- default which-key.nvim defined Nerd Font icons, otherwise define a string table
- keys = vim.g.have_nerd_font and {} or {
- Up = ' ',
- Down = ' ',
- Left = ' ',
- Right = ' ',
- C = ' ',
- M = ' ',
- D = ' ',
- S = ' ',
- CR = ' ',
- Esc = ' ',
- ScrollWheelDown = ' ',
- ScrollWheelUp = ' ',
- NL = ' ',
- BS = ' ',
- Space = ' ',
- Tab = ' ',
- F1 = '',
- F2 = '',
- F3 = '',
- F4 = '',
- F5 = '',
- F6 = '',
- F7 = '',
- F8 = '',
- F9 = '',
- F10 = '',
- F11 = '',
- F12 = '',
- },
- },
+ icons = { mappings = vim.g.have_nerd_font },
-- Document existing key chains
spec = {
- { 's', group = '[S]earch' },
+ { 's', group = '[S]earch', mode = { 'n', 'v' } },
{ 't', group = '[T]oggle' },
{ 'h', group = 'Git [H]unk', mode = { 'n', 'v' } },
},
diff --git a/lua/kickstart/health.lua b/lua/kickstart/health.lua
index b59d0864..ca684516 100644
--- a/lua/kickstart/health.lua
+++ b/lua/kickstart/health.lua
@@ -12,7 +12,7 @@ local check_version = function()
return
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))
else
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua
index 8e332bf2..1e3570f9 100644
--- a/lua/kickstart/plugins/debug.lua
+++ b/lua/kickstart/plugins/debug.lua
@@ -28,52 +28,38 @@ return {
-- Basic debugging keymaps, feel free to change to your liking!
{
'',
- function()
- require('dap').continue()
- end,
+ function() require('dap').continue() end,
desc = 'Debug: Start/Continue',
},
{
'',
- function()
- require('dap').step_into()
- end,
+ function() require('dap').step_into() end,
desc = 'Debug: Step Into',
},
{
'',
- function()
- require('dap').step_over()
- end,
+ function() require('dap').step_over() end,
desc = 'Debug: Step Over',
},
{
'',
- function()
- require('dap').step_out()
- end,
+ function() require('dap').step_out() end,
desc = 'Debug: Step Out',
},
{
'b',
- function()
- require('dap').toggle_breakpoint()
- end,
+ function() require('dap').toggle_breakpoint() end,
desc = 'Debug: Toggle Breakpoint',
},
{
'B',
- function()
- require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
- end,
+ 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.
{
'',
- function()
- require('dapui').toggle()
- end,
+ function() require('dapui').toggle() end,
desc = 'Debug: See last session result.',
},
},
diff --git a/lua/kickstart/plugins/gitsigns.lua b/lua/kickstart/plugins/gitsigns.lua
index cbbd22d2..777e470a 100644
--- a/lua/kickstart/plugins/gitsigns.lua
+++ b/lua/kickstart/plugins/gitsigns.lua
@@ -34,12 +34,8 @@ return {
-- Actions
-- visual mode
- map('v', 'hs', function()
- gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
- end, { desc = 'git [s]tage hunk' })
- map('v', 'hr', function()
- gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
- end, { desc = 'git [r]eset hunk' })
+ map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
+ map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
-- normal mode
map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
@@ -49,9 +45,7 @@ return {
map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
- map('n', 'hD', function()
- gitsigns.diffthis '@'
- end, { desc = 'git [D]iff against last commit' })
+ map('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
-- Toggles
map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
diff --git a/lua/kickstart/plugins/lint.lua b/lua/kickstart/plugins/lint.lua
index dec42f09..f8a73485 100644
--- a/lua/kickstart/plugins/lint.lua
+++ b/lua/kickstart/plugins/lint.lua
@@ -50,9 +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.bo.modifiable then
- lint.try_lint()
- end
+ if vim.bo.modifiable then lint.try_lint() end
end,
})
end,