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 89ce57ce..187e36d9 100644
--- a/init.lua
+++ b/init.lua
@@ -210,9 +210,7 @@ vim.opt.expandtab = true
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
-vim.schedule(function()
- vim.o.clipboard = 'unnamedplus'
-end)
+vim.schedule(function() vim.o.clipboard = 'unnamedplus' end)
-- Enable break indent
vim.o.breakindent = true
@@ -311,9 +309,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,
})
-- [[ 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
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
@@ -469,9 +463,7 @@ require('lazy').setup({
-- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded.
- cond = function()
- return vim.fn.executable 'make' == 1
- end,
+ cond = function() return vim.fn.executable 'make' == 1 end,
},
{ 'nvim-telescope/telescope-ui-select.nvim' },
@@ -553,17 +545,20 @@ require('lazy').setup({
-- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys
- vim.keymap.set('n', 's/', function()
- builtin.live_grep {
- grep_open_files = true,
- prompt_title = 'Live Grep in Open Files',
- }
- end, { desc = '[S]earch [/] in Open Files' })
+ vim.keymap.set(
+ 'n',
+ 's/',
+ function()
+ builtin.live_grep {
+ grep_open_files = true,
+ prompt_title = 'Live Grep in Open Files',
+ }
+ end,
+ { desc = '[S]earch [/] in Open Files' }
+ )
-- Shortcut for searching your Neovim configuration files
- vim.keymap.set('n', 'sn', function()
- builtin.find_files { cwd = vim.fn.stdpath 'config' }
- end, { desc = '[S]earch [N]eovim files' })
+ vim.keymap.set('n', 'sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
end,
},
@@ -724,9 +719,7 @@ require('lazy').setup({
--
-- 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
- map('th', function()
- vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
- end, '[T]oggle Inlay [H]ints')
+ 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,
})
@@ -941,9 +934,7 @@ require('lazy').setup({
-- 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
+ if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then return end
return 'make install_jsregexp'
end)(),
dependencies = {
@@ -952,9 +943,7 @@ require('lazy').setup({
-- https://github.com/rafamadriz/friendly-snippets
{
'rafamadriz/friendly-snippets',
- config = function()
- require('luasnip.loaders.from_vscode').lazy_load()
- end,
+ config = function() require('luasnip.loaders.from_vscode').lazy_load() end,
},
},
opts = {},
@@ -1081,9 +1070,7 @@ require('lazy').setup({
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
- statusline.section_location = function()
- return '%2l:%-2v'
- end
+ statusline.section_location = function() return '%2l:%-2v' end
-- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim
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 dd9350cb..807eacc4 100644
--- a/lua/kickstart/plugins/debug.lua
+++ b/lua/kickstart/plugins/debug.lua
@@ -21,6 +21,45 @@ return {
'mfussenegger/nvim-dap-python',
'leoluz/nvim-dap-go',
},
+ keys = {
+ -- Basic debugging keymaps, feel free to change to your liking!
+ {
+ '',
+ function() require('dap').continue() end,
+ desc = 'Debug: Start/Continue',
+ },
+ {
+ '',
+ function() require('dap').step_into() end,
+ desc = 'Debug: Step Into',
+ },
+ {
+ '',
+ function() require('dap').step_over() end,
+ desc = 'Debug: Step Over',
+ },
+ {
+ '',
+ function() require('dap').step_out() end,
+ desc = 'Debug: Step Out',
+ },
+ {
+ 'b',
+ function() require('dap').toggle_breakpoint() end,
+ desc = 'Debug: Toggle Breakpoint',
+ },
+ {
+ '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.
+ {
+ '',
+ function() require('dapui').toggle() end,
+ desc = 'Debug: See last session result.',
+ },
+ },
config = function()
local dap = require 'dap'
local ui = require 'dapui'
@@ -43,13 +82,9 @@ return {
display_callback = function(variable)
local name = string.lower(variable.name)
local value = string.lower(variable.value)
- if name:match 'secret' or name:match 'api' or value:match 'secret' or value:match 'api' then
- return '*****'
- end
+ if name:match 'secret' or name:match 'api' or value:match 'secret' or value:match 'api' then return '*****' end
- if #variable.value > 15 then
- return ' ' .. string.sub(variable.value, 1, 15) .. '... '
- end
+ if #variable.value > 15 then return ' ' .. string.sub(variable.value, 1, 15) .. '... ' end
return ' ' .. variable.value
end,
@@ -101,9 +136,7 @@ return {
enrich_config = function(config, on_config)
-- If the configuration(s) in `launch.json` contains a `cargo` section
-- send the configuration off to the cargo_inspector.
- if config['cargo'] ~= nil then
- on_config(cargo_inspector(config))
- end
+ if config['cargo'] ~= nil then on_config(cargo_inspector(config)) end
end,
}
@@ -124,9 +157,7 @@ return {
name = 'Debug an Executable',
type = 'lldb',
request = 'launch',
- program = function()
- return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
- end,
+ program = function() return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end,
cwd = '${workspaceFolder}',
stopOnEntry = false,
},
@@ -155,9 +186,7 @@ return {
vim.keymap.set('n', 'gb', dap.run_to_cursor)
-- Eval var under cursor
- vim.keymap.set('n', '?', function()
- require('dapui').eval(nil, { enter = true })
- end)
+ vim.keymap.set('n', '?', function() require('dapui').eval(nil, { enter = true }) end)
vim.keymap.set('n', '', dap.continue)
vim.keymap.set('n', '', dap.step_into)
@@ -166,18 +195,10 @@ return {
vim.keymap.set('n', '', dap.step_back)
vim.keymap.set('n', '', dap.restart)
- dap.listeners.before.attach.dapui_config = function()
- ui.open()
- end
- dap.listeners.before.launch.dapui_config = function()
- 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
+ dap.listeners.before.attach.dapui_config = function() ui.open() end
+ dap.listeners.before.launch.dapui_config = function() 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()
end,
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,