Migrate to vim.pack

This commit is contained in:
orip 2026-04-20 01:26:12 +03:00
parent 6211a44f5c
commit cd14662c99
11 changed files with 864 additions and 1020 deletions

4
.gitignore vendored
View File

@ -6,9 +6,9 @@ nvim
spell/ spell/
# In your personal fork, you likely want to comment this, since it's recommended to track # In your personal fork, you likely want to comment this, since it's recommended to track
# lazy-lock.json in version control - see https://lazy.folke.io/usage/lockfile # nvim-pack-lock.json in version control - see :help vim.pack-lockfile
# For the official `nvim-lua/kickstart.nvim` git repository, we leave it ignored to avoid unneeded # For the official `nvim-lua/kickstart.nvim` git repository, we leave it ignored to avoid unneeded
# merge conflicts. # merge conflicts.
lazy-lock.json nvim-pack-lock.json
.DS_Store .DS_Store

View File

@ -69,9 +69,9 @@ fork to your machine using one of the commands below, depending on your OS.
> Your fork's URL will be something like this: > Your fork's URL will be something like this:
> `https://github.com/<your_github_username>/kickstart.nvim.git` > `https://github.com/<your_github_username>/kickstart.nvim.git`
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file You likely want to remove `nvim-pack-lock.json` from your fork's `.gitignore`
too - it's ignored in the kickstart repo to make maintenance easier, but it's file too - it's ignored in the kickstart repo to make maintenance easier, but
[recommended to track it in version control](https://lazy.folke.io/usage/lockfile). it's recommended to track it in version control (see `:help vim.pack-lockfile`).
#### Clone kickstart.nvim #### Clone kickstart.nvim
@ -111,8 +111,9 @@ Start Neovim
nvim nvim
``` ```
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view That's it! `vim.pack` will install all the plugins from your config. Use
the current plugin status. Hit `q` to close the window. `:lua vim.pack.update(nil, { offline = true })` to inspect plugin state and
`:lua vim.pack.update()` to fetch updates.
#### Read The Friendly Documentation #### Read The Friendly Documentation
@ -146,7 +147,8 @@ examples of adding popularly requested plugins.
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim `~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
distribution that you would like to try out. distribution that you would like to try out.
* What if I want to "uninstall" this configuration: * What if I want to "uninstall" this configuration:
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information * Remove your config directory and local data directory (for example,
`~/.config/nvim` and `~/.local/share/nvim`).
* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files? * Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files?
* The main purpose of kickstart is to serve as a teaching tool and a reference * The main purpose of kickstart is to serve as a teaching tool and a reference
configuration that someone can easily use to `git clone` as a basis for their own. configuration that someone can easily use to `git clone` as a basis for their own.

339
init.lua
View File

@ -230,56 +230,89 @@ vim.api.nvim_create_autocmd('TextYankPost', {
callback = function() vim.hl.on_yank() end, callback = function() vim.hl.on_yank() end,
}) })
-- [[ Install `lazy.nvim` plugin manager ]] -- [[ Configure and install plugins with `vim.pack` ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
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
end
---@type vim.Option
local rtp = vim.opt.rtp
rtp:prepend(lazypath)
-- [[ Configure and install plugins ]]
-- --
-- To check the current status of your plugins, run -- To inspect plugin state and pending updates, run
-- :Lazy -- :lua vim.pack.update(nil, { offline = true })
-- --
-- You can press `?` in this menu for help. Use `:q` to close the window -- To update plugins, run
-- -- :lua vim.pack.update()
-- To update plugins you can run
-- :Lazy update
-- --
-- NOTE: Here is where you install your plugins. -- NOTE: Here is where you install your plugins.
require('lazy').setup({ local gh = function(repo) return 'https://github.com/' .. repo end
-- NOTE: Plugins can be added via a link or github org/name. To run setup automatically, use `opts = {}`
{ 'NMAC427/guess-indent.nvim', opts = {} }, local run_build = function(name, cmd, cwd)
local result = vim.system(cmd, { cwd = cwd }):wait()
if result.code ~= 0 then
local stderr = result.stderr or ''
local stdout = result.stdout or ''
local output = stderr ~= '' and stderr or stdout
if output == '' then output = 'No output from build command.' end
vim.notify(('Build failed for %s:\n%s'):format(name, output), vim.log.levels.ERROR)
end
end
vim.api.nvim_create_autocmd('PackChanged', {
callback = function(ev)
local name = ev.data.spec.name
local kind = ev.data.kind
if kind ~= 'install' and kind ~= 'update' then return end
if name == 'telescope-fzf-native.nvim' and vim.fn.executable 'make' == 1 then
run_build(name, { 'make' }, ev.data.path)
return
end
if name == 'LuaSnip' then
if vim.fn.has 'win32' ~= 1 and vim.fn.executable 'make' == 1 then run_build(name, { 'make', 'install_jsregexp' }, ev.data.path) end
return
end
if name == 'nvim-treesitter' then
if not ev.data.active then vim.cmd.packadd 'nvim-treesitter' end
vim.cmd 'TSUpdate'
return
end
end,
})
---@type (string|vim.pack.Spec)[]
local plugins = {
gh 'NMAC427/guess-indent.nvim',
gh 'lewis6991/gitsigns.nvim',
gh 'folke/which-key.nvim',
gh 'nvim-lua/plenary.nvim',
gh 'nvim-telescope/telescope.nvim',
gh 'nvim-telescope/telescope-ui-select.nvim',
gh 'neovim/nvim-lspconfig',
gh 'mason-org/mason.nvim',
gh 'mason-org/mason-lspconfig.nvim',
gh 'WhoIsSethDaniel/mason-tool-installer.nvim',
gh 'j-hui/fidget.nvim',
gh 'stevearc/conform.nvim',
{ src = gh 'saghen/blink.cmp', version = vim.version.range '1.*' },
{ src = gh 'L3MON4D3/LuaSnip', version = vim.version.range '2.*' },
gh 'folke/tokyonight.nvim',
gh 'folke/todo-comments.nvim',
gh 'nvim-mini/mini.nvim',
{ src = gh 'nvim-treesitter/nvim-treesitter', version = 'main' },
}
if vim.fn.executable 'make' == 1 then table.insert(plugins, gh 'nvim-telescope/telescope-fzf-native.nvim') end
-- Useful for getting pretty icons, but requires a Nerd Font.
if vim.g.have_nerd_font then table.insert(plugins, gh 'nvim-tree/nvim-web-devicons') end
vim.pack.add(plugins)
require('guess-indent').setup {}
-- 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 -- Here is a more advanced example where we pass configuration
-- options to `gitsigns.nvim`. -- options to `gitsigns.nvim`.
-- --
-- See `:help gitsigns` to understand what the configuration keys do -- See `:help gitsigns` to understand what the configuration keys do
-- Adds git related signs to the gutter, as well as utilities for managing changes -- Adds git related signs to the gutter, as well as utilities for managing changes
{ require('gitsigns').setup {
'lewis6991/gitsigns.nvim',
---@module 'gitsigns'
---@type Gitsigns.Config
---@diagnostic disable-next-line: missing-fields
opts = {
signs = { signs = {
add = { text = '+' }, ---@diagnostic disable-line: missing-fields add = { text = '+' }, ---@diagnostic disable-line: missing-fields
change = { text = '~' }, ---@diagnostic disable-line: missing-fields change = { text = '~' }, ---@diagnostic disable-line: missing-fields
@ -287,35 +320,13 @@ require('lazy').setup({
topdelete = { text = '' }, ---@diagnostic disable-line: missing-fields topdelete = { text = '' }, ---@diagnostic disable-line: missing-fields
changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields
}, },
}, }
},
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
--
-- This is often very useful to both group configuration, as well as handle
-- lazy loading plugins that don't need to be loaded immediately at startup.
--
-- For example, in the following configuration, we use:
-- event = 'VimEnter'
--
-- which loads which-key before all the UI elements are loaded. Events can be
-- normal autocommands events (`:help autocmd-events`).
--
-- Then, because we use the `opts` key (recommended), the configuration runs
-- after the plugin has been loaded as `require(MODULE).setup(opts)`.
--
-- Useful plugin to show you pending keybinds. -- Useful plugin to show you pending keybinds.
{ require('which-key').setup {
'folke/which-key.nvim',
event = 'VimEnter',
---@module 'which-key'
---@type wk.Opts
---@diagnostic disable-next-line: missing-fields
opts = {
-- delay between pressing a key and opening which-key (milliseconds) -- delay between pressing a key and opening which-key (milliseconds)
delay = 0, delay = 0,
icons = { mappings = vim.g.have_nerd_font }, icons = { mappings = vim.g.have_nerd_font },
-- Document existing key chains -- Document existing key chains
spec = { spec = {
{ '<leader>s', group = '[S]earch', mode = { 'n', 'v' } }, { '<leader>s', group = '[S]earch', mode = { 'n', 'v' } },
@ -323,21 +334,13 @@ require('lazy').setup({
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } }, -- Enable gitsigns recommended keymaps first { '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } }, -- Enable gitsigns recommended keymaps first
{ 'gr', group = 'LSP Actions', mode = { 'n' } }, { 'gr', group = 'LSP Actions', mode = { 'n' } },
}, },
}, }
},
-- NOTE: Plugins can specify dependencies.
--
-- The dependencies are proper plugin specifications as well - anything
-- you do for a plugin at the top level, you can do for a dependency.
--
-- Use the `dependencies` key to specify the dependencies of a particular plugin
--
-- Fuzzy Finder (files, lsp, etc) -- Fuzzy Finder (files, lsp, etc)
{ --
'nvim-telescope/telescope.nvim',
-- By default, Telescope is included and acts as your picker for everything. -- By default, Telescope is included and acts as your picker for everything.
-- # TODO: Rework this docstring
--
-- If you would like to switch to a different picker (like snacks, or fzf-lua) -- If you would like to switch to a different picker (like snacks, or fzf-lua)
-- you can disable the Telescope plugin by setting enabled to false and enable -- you can disable the Telescope plugin by setting enabled to false and enable
-- your replacement picker by requiring it explicitly (e.g. 'custom.plugins.snacks') -- your replacement picker by requiring it explicitly (e.g. 'custom.plugins.snacks')
@ -345,28 +348,7 @@ require('lazy').setup({
-- Note: If you customize your config for yourself, -- Note: If you customize your config for yourself,
-- its best to remove the Telescope plugin config entirely -- its best to remove the Telescope plugin config entirely
-- instead of just disabling it here, to keep your config clean. -- instead of just disabling it here, to keep your config clean.
enabled = true, --
event = 'VimEnter',
dependencies = {
'nvim-lua/plenary.nvim',
-- If encountering errors, see telescope-fzf-native README for installation instructions
{
'nvim-telescope/telescope-fzf-native.nvim',
-- `build` is used to run some command when the plugin is installed/updated.
-- This is only run then, not every time Neovim starts up.
build = 'make',
-- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded.
cond = function() return vim.fn.executable 'make' == 1 end,
},
{ 'nvim-telescope/telescope-ui-select.nvim' },
-- Useful for getting pretty icons, but requires a Nerd Font.
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that -- Telescope is a fuzzy finder that comes with a lot of different things that
-- it can fuzzy find! It's more than just a "file finder", it can search -- it can fuzzy find! It's more than just a "file finder", it can search
-- many different aspects of Neovim, your workspace, LSP, and more! -- many different aspects of Neovim, your workspace, LSP, and more!
@ -480,32 +462,16 @@ require('lazy').setup({
-- Shortcut for searching your Neovim configuration files -- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' }) vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
end,
},
-- LSP Plugins -- LSP Plugins
{
-- Main LSP Configuration
'neovim/nvim-lspconfig',
dependencies = {
-- Automatically install LSPs and related tools to stdpath for Neovim -- 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. -- 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({})` require('mason').setup {}
{
'mason-org/mason.nvim',
---@module 'mason.settings'
---@type MasonSettings
---@diagnostic disable-next-line: missing-fields
opts = {},
},
-- Maps LSP server names between nvim-lspconfig and Mason package names.
'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP. -- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} }, require('fidget').setup {}
},
config = function()
-- Brief aside: **What is LSP?** -- Brief aside: **What is LSP?**
-- --
-- LSP is an initialism you've probably heard, but might not understand what it is. -- LSP is an initialism you've probably heard, but might not understand what it is.
@ -670,25 +636,9 @@ require('lazy').setup({
vim.lsp.config(name, server) vim.lsp.config(name, server)
vim.lsp.enable(name) vim.lsp.enable(name)
end end
end,
},
-- Autoformat -- Autoformat
{ require('conform').setup {
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function() require('conform').format { async = true } end,
mode = '',
desc = '[F]ormat buffer',
},
},
---@module 'conform'
---@type conform.setupOpts
opts = {
notify_on_error = false, notify_on_error = false,
format_on_save = function(bufnr) format_on_save = function(bufnr)
-- You can specify filetypes to autoformat on save here: -- You can specify filetypes to autoformat on save here:
@ -714,43 +664,22 @@ require('lazy').setup({
-- You can use 'stop_after_first' to run the first available formatter from the list -- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true }, -- javascript = { "prettierd", "prettier", stop_after_first = true },
}, },
}, }
},
vim.keymap.set({ 'n', 'v' }, '<leader>f', function() require('conform').format { async = true } end, { desc = '[F]ormat buffer' })
-- Autocompletion
{
'saghen/blink.cmp',
event = 'VimEnter',
version = '1.*',
dependencies = {
-- Snippet Engine -- 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.
-- 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. -- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets: -- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets -- https://github.com/rafamadriz/friendly-snippets
-- { --
-- 'rafamadriz/friendly-snippets', -- vim.pack.add { gh 'rafamadriz/friendly-snippets' }
-- config = function()
-- require('luasnip.loaders.from_vscode').lazy_load() -- require('luasnip.loaders.from_vscode').lazy_load()
-- end, require('luasnip').setup {}
-- },
}, -- Autocompletion
opts = {}, require('blink.cmp').setup {
},
},
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
keymap = { keymap = {
-- 'default' (recommended) for mappings similar to built-in completions -- 'default' (recommended) for mappings similar to built-in completions
-- <c-y> to accept ([y]es) the completion. -- <c-y> to accept ([y]es) the completion.
@ -808,18 +737,13 @@ require('lazy').setup({
-- Shows a signature help window while you type arguments for a function -- Shows a signature help window while you type arguments for a function
signature = { enabled = true }, signature = { enabled = true },
}, }
},
{
-- You can easily change to a different colorscheme. -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then -- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is. -- change the command in the config to whatever the name of that colorscheme is.
-- --
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. -- 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.
config = function()
---@diagnostic disable-next-line: missing-fields ---@diagnostic disable-next-line: missing-fields
require('tokyonight').setup { require('tokyonight').setup {
styles = { styles = {
@ -831,24 +755,12 @@ require('lazy').setup({
-- Like many other themes, this one has different styles, and you could load -- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme 'tokyonight-night' vim.cmd.colorscheme 'tokyonight-night'
end,
},
-- Highlight todo, notes, etc in comments -- Highlight todo, notes, etc in comments
{ require('todo-comments').setup { signs = false }
'folke/todo-comments.nvim',
event = 'VimEnter',
dependencies = { 'nvim-lua/plenary.nvim' },
---@module 'todo-comments'
---@type TodoOptions
---@diagnostic disable-next-line: missing-fields
opts = { signs = false },
},
-- Collection of various small independent plugins/modules -- Collection of various small independent plugins/modules
{
'nvim-mini/mini.nvim',
config = function()
-- Better Around/Inside textobjects -- Better Around/Inside textobjects
-- --
-- Examples: -- Examples:
@ -886,17 +798,10 @@ require('lazy').setup({
-- ... and there is more! -- ... and there is more!
-- Check out: https://github.com/nvim-mini/mini.nvim -- Check out: https://github.com/nvim-mini/mini.nvim
end,
},
-- Highlight, edit, and navigate code -- Highlight, edit, and navigate code
{
'nvim-treesitter/nvim-treesitter',
lazy = false,
build = ':TSUpdate',
branch = 'main',
-- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro` -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
config = function()
-- ensure basic parser are installed -- ensure basic parser are installed
local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' } local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
require('nvim-treesitter').install(parsers) require('nvim-treesitter').install(parsers)
@ -944,8 +849,6 @@ require('lazy').setup({
end end
end, end,
}) })
end,
},
-- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the
-- init.lua. If you want these files, they are in the repository, so you can just download them and -- init.lua. If you want these files, they are in the repository, so you can just download them and
@ -956,44 +859,20 @@ require('lazy').setup({
-- Here are some example plugins that I've included in the Kickstart repository. -- 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). -- Uncomment any of the lines below to enable them (you will need to restart nvim).
-- --
-- require 'kickstart.plugins.debug', -- require 'kickstart.plugins.debug'
-- require 'kickstart.plugins.indent_line', -- require 'kickstart.plugins.indent_line'
-- require 'kickstart.plugins.lint', -- require 'kickstart.plugins.lint'
-- require 'kickstart.plugins.autopairs', -- require 'kickstart.plugins.autopairs'
-- require 'kickstart.plugins.neo-tree', -- require 'kickstart.plugins.neo-tree'
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommended keymaps -- require 'kickstart.plugins.gitsigns' -- adds gitsigns recommended keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- NOTE: You can add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- 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. -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
-- { import = 'custom.plugins' }, -- require 'custom.plugins'
-- --
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` -- For additional information with loading, sourcing and examples see `:help vim.pack`
-- Or use telescope! -- and `:help vim.pack-examples`
-- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
-- you can continue same window with `<space>sr` which resumes last telescope search
}, { ---@diagnostic disable-line: missing-fields
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
icons = vim.g.have_nerd_font and {} or {
cmd = '',
config = '🛠',
event = '📅',
ft = '📂',
init = '',
keys = '🗝',
plugin = '🔌',
runtime = '💻',
require = '🌙',
source = '📄',
start = '🚀',
task = '📌',
lazy = '💤 ',
},
},
})
-- The line beneath this is called `modeline`. See `:help modeline` -- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@ -3,6 +3,11 @@
-- --
-- See the kickstart.nvim README for more information -- See the kickstart.nvim README for more information
---@module 'lazy' -- Iterate over all Lua files in the plugins directory and load them
---@type LazySpec local plugins_dir = vim.fn.stdpath 'config' .. '/lua/custom/plugins'
return {} for _, file in ipairs(vim.fn.readdir(plugins_dir)) do
if file:match '%.lua$' and file ~= 'init.lua' then
local module = file:gsub('%.lua$', '')
require('custom.plugins.' .. module)
end
end

View File

@ -12,7 +12,7 @@ local check_version = function()
return return
end end
if vim.version.ge(vim.version(), '0.11') then if vim.version.ge(vim.version(), '0.12') 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

@ -1,10 +1,5 @@
-- autopairs -- autopairs
-- https://github.com/windwp/nvim-autopairs -- https://github.com/windwp/nvim-autopairs
---@module 'lazy' vim.pack.add { 'https://github.com/windwp/nvim-autopairs' }
---@type LazySpec require('nvim-autopairs').setup {}
return {
'windwp/nvim-autopairs',
event = 'InsertEnter',
opts = {},
}

View File

@ -6,38 +6,25 @@
-- be extended to other languages as well. That's why it's called -- be extended to other languages as well. That's why it's called
-- kickstart.nvim and not kitchen-sink.nvim ;) -- kickstart.nvim and not kitchen-sink.nvim ;)
---@module 'lazy' vim.pack.add {
---@type LazySpec 'https://github.com/mfussenegger/nvim-dap',
return { 'https://github.com/rcarriga/nvim-dap-ui',
-- NOTE: Yes, you can install new plugins here! 'https://github.com/nvim-neotest/nvim-nio',
'mfussenegger/nvim-dap', 'https://github.com/mason-org/mason.nvim',
-- NOTE: And you can specify dependencies as well 'https://github.com/jay-babu/mason-nvim-dap.nvim',
dependencies = { 'https://github.com/leoluz/nvim-dap-go',
-- Creates a beautiful debugger UI }
'rcarriga/nvim-dap-ui',
-- Required dependency for nvim-dap-ui
'nvim-neotest/nvim-nio',
-- Installs the debug adapters for you
'mason-org/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
-- Add your own debuggers here
'leoluz/nvim-dap-go',
},
keys = {
-- Basic debugging keymaps, feel free to change to your liking! -- Basic debugging keymaps, feel free to change to your liking!
{ '<F5>', function() require('dap').continue() end, desc = 'Debug: Start/Continue' }, vim.keymap.set('n', '<F5>', function() require('dap').continue() end, { desc = 'Debug: Start/Continue' })
{ '<F1>', function() require('dap').step_into() end, desc = 'Debug: Step Into' }, vim.keymap.set('n', '<F1>', function() require('dap').step_into() end, { desc = 'Debug: Step Into' })
{ '<F2>', function() require('dap').step_over() end, desc = 'Debug: Step Over' }, vim.keymap.set('n', '<F2>', function() require('dap').step_over() end, { desc = 'Debug: Step Over' })
{ '<F3>', function() require('dap').step_out() end, desc = 'Debug: Step Out' }, vim.keymap.set('n', '<F3>', function() require('dap').step_out() end, { desc = 'Debug: Step Out' })
{ '<leader>b', function() require('dap').toggle_breakpoint() end, desc = 'Debug: Toggle Breakpoint' }, vim.keymap.set('n', '<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' }, vim.keymap.set('n', '<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. -- 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.' }, vim.keymap.set('n', '<F7>', function() require('dapui').toggle() end, { desc = 'Debug: See last session result.' })
},
config = function()
local dap = require 'dap' local dap = require 'dap'
local dapui = require 'dapui' local dapui = require 'dapui'
@ -106,5 +93,3 @@ return {
detached = vim.fn.has 'win32' == 0, detached = vim.fn.has 'win32' == 0,
}, },
} }
end,
}

View File

@ -2,14 +2,9 @@
-- NOTE: gitsigns is already included in init.lua but contains only the base -- NOTE: gitsigns is already included in init.lua but contains only the base
-- config. This will add also the recommended keymaps. -- config. This will add also the recommended keymaps.
---@module 'lazy' vim.pack.add { 'https://github.com/lewis6991/gitsigns.nvim' }
---@type LazySpec
return { require('gitsigns').setup {
'lewis6991/gitsigns.nvim',
---@module 'gitsigns'
---@type Gitsigns.Config
---@diagnostic disable-next-line: missing-fields
opts = {
on_attach = function(bufnr) on_attach = function(bufnr)
local gitsigns = require 'gitsigns' local gitsigns = require 'gitsigns'
@ -59,5 +54,4 @@ return {
-- Text object -- Text object
map({ 'o', 'x' }, 'ih', gitsigns.select_hunk) map({ 'o', 'x' }, 'ih', gitsigns.select_hunk)
end, end,
},
} }

View File

@ -1,13 +1,6 @@
-- Add indentation guides even on blank lines -- Add indentation guides even on blank lines
---@module 'lazy'
---@type LazySpec
return {
'lukas-reineke/indent-blankline.nvim',
-- Enable `lukas-reineke/indent-blankline.nvim` -- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help ibl` -- See `:help ibl`
main = 'ibl', vim.pack.add { 'https://github.com/lukas-reineke/indent-blankline.nvim' }
---@module 'ibl' require('ibl').setup {}
---@type ibl.config
opts = {},
}

View File

@ -1,11 +1,7 @@
-- Linting -- Linting
---@module 'lazy' vim.pack.add { 'https://github.com/mfussenegger/nvim-lint' }
---@type LazySpec
return {
'mfussenegger/nvim-lint',
event = { 'BufReadPre', 'BufNewFile' },
config = function()
local lint = require 'lint' local lint = require 'lint'
lint.linters_by_ft = { lint.linters_by_ft = {
markdown = { 'markdownlint' }, -- Make sure to install `markdownlint` via mason / npm markdown = { 'markdownlint' }, -- Make sure to install `markdownlint` via mason / npm
@ -55,5 +51,3 @@ return {
if vim.bo.modifiable then lint.try_lint() end if vim.bo.modifiable then lint.try_lint() end
end, end,
}) })
end,
}

View File

@ -1,23 +1,21 @@
-- Neo-tree is a Neovim plugin to browse the file system -- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim -- https://github.com/nvim-neo-tree/neo-tree.nvim
---@module 'lazy' local plugins = {
---@type LazySpec { src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vim.version.range '*' },
return { 'https://github.com/nvim-lua/plenary.nvim',
'nvim-neo-tree/neo-tree.nvim', 'https://github.com/MunifTanjim/nui.nvim',
version = '*', }
dependencies = {
'nvim-lua/plenary.nvim', if vim.g.have_nerd_font then
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended table.insert(plugins, 'https://github.com/nvim-tree/nvim-web-devicons') -- not strictly required, but recommended
'MunifTanjim/nui.nvim', end
},
lazy = false, vim.pack.add(plugins)
keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true }, vim.keymap.set('n', '\\', '<Cmd>Neotree reveal<CR>', { desc = 'NeoTree reveal', silent = true })
},
---@module 'neo-tree' require('neo-tree').setup {
---@type neotree.Config
opts = {
filesystem = { filesystem = {
window = { window = {
mappings = { mappings = {
@ -25,5 +23,4 @@ return {
}, },
}, },
}, },
},
} }