mirror of
https://github.com/nvim-lua/kickstart.nvim.git
synced 2026-05-14 08:23:48 +00:00
Compare commits
8 Commits
c30806a03f
...
77ed7c9064
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77ed7c9064 | ||
|
|
d4bf13cefc | ||
|
|
c0493754ff | ||
|
|
c63a0878f1 | ||
|
|
9f74599d9f | ||
|
|
cd14662c99 | ||
|
|
6211a44f5c | ||
|
|
4b065ad2f7 |
4
.gitignore
vendored
4
.gitignore
vendored
@ -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
|
||||||
|
|||||||
44
README.md
44
README.md
@ -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,10 @@ 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 (`:write` applies updates, `:quit`
|
||||||
|
cancels them).
|
||||||
|
|
||||||
#### Read The Friendly Documentation
|
#### Read The Friendly Documentation
|
||||||
|
|
||||||
@ -146,7 +148,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.
|
||||||
@ -167,17 +170,36 @@ After installing all the dependencies continue with the [Install Kickstart](#ins
|
|||||||
#### Windows Installation
|
#### Windows Installation
|
||||||
|
|
||||||
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
|
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
|
||||||
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
|
Kickstart's default config is make-only for `telescope-fzf-native.nvim`.
|
||||||
|
If `make` is unavailable, the plugin is skipped.
|
||||||
|
|
||||||
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
|
Recommended: install `make` (see the chocolatey section below).
|
||||||
|
|
||||||
This requires:
|
If you want a CMake-only setup, customize `init.lua` in two places:
|
||||||
|
|
||||||
- Install CMake and the Microsoft C++ Build Tools on Windows
|
1. Include `telescope-fzf-native.nvim` when `cmake` is available:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
|
if vim.fn.executable 'make' == 1 or vim.fn.executable 'cmake' == 1 then
|
||||||
|
table.insert(plugins, gh 'nvim-telescope/telescope-fzf-native.nvim')
|
||||||
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
2. In the `PackChanged` hook, use CMake when `make` is unavailable:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
if name == 'telescope-fzf-native.nvim' then
|
||||||
|
if vim.fn.executable 'make' == 1 then
|
||||||
|
run_build(name, { 'make' }, ev.data.path)
|
||||||
|
elseif vim.fn.executable 'cmake' == 1 then
|
||||||
|
run_build(name, { 'cmake', '-S.', '-Bbuild', '-DCMAKE_BUILD_TYPE=Release' }, ev.data.path)
|
||||||
|
run_build(name, { 'cmake', '--build', 'build', '--config', 'Release', '--target', 'install' }, ev.data.path)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
See `telescope-fzf-native` documentation for [build details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation).
|
||||||
</details>
|
</details>
|
||||||
<details><summary>Windows with gcc/make using chocolatey</summary>
|
<details><summary>Windows with gcc/make using chocolatey</summary>
|
||||||
Alternatively, one can install gcc and make which don't require changing the config,
|
Alternatively, one can install gcc and make which don't require changing the config,
|
||||||
|
|||||||
574
init.lua
574
init.lua
@ -84,6 +84,14 @@ I hope you enjoy your Neovim journey,
|
|||||||
P.S. You can delete this when you're done too. It's your config now! :)
|
P.S. You can delete this when you're done too. It's your config now! :)
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 1: FOUNDATION
|
||||||
|
-- Core Neovim settings, leaders, options, basic keymaps, basic autocmds
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- Enable faster startup by caching compiled Lua modules
|
||||||
|
vim.loader.enable()
|
||||||
|
|
||||||
-- Set <space> as the leader key
|
-- Set <space> as the leader key
|
||||||
-- See `:help mapleader`
|
-- See `:help mapleader`
|
||||||
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
||||||
@ -172,7 +180,7 @@ vim.o.confirm = true
|
|||||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||||
|
|
||||||
-- Diagnostic Config & Keymaps
|
-- Diagnostic Config & Keymaps
|
||||||
-- See :help vim.diagnostic.Opts
|
-- See `:help vim.diagnostic.Opts`
|
||||||
vim.diagnostic.config {
|
vim.diagnostic.config {
|
||||||
update_in_insert = false,
|
update_in_insert = false,
|
||||||
severity_sort = true,
|
severity_sort = true,
|
||||||
@ -229,56 +237,116 @@ vim.api.nvim_create_autocmd('TextYankPost', {
|
|||||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
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 ]]
|
|
||||||
-- 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
|
end
|
||||||
|
|
||||||
---@type vim.Option
|
-- ============================================================
|
||||||
local rtp = vim.opt.rtp
|
-- SECTION 2: PLUGIN MANAGER
|
||||||
rtp:prepend(lazypath)
|
-- vim.pack, build hooks, install/update plugins, plugin specs
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Install plugins with `vim.pack` ]]
|
||||||
|
-- See `:help vim.pack`, `:help vim.pack-examples` or
|
||||||
|
-- the excellent blog post from the creator of mini.nvim https://echasnovski.com/blog/2026-03-13-a-guide-to-vim-pack
|
||||||
|
--
|
||||||
|
-- To inspect plugin state and pending updates, run
|
||||||
|
-- :lua vim.pack.update(nil, { offline = true })
|
||||||
|
--
|
||||||
|
-- To update plugins, run
|
||||||
|
-- :lua vim.pack.update()
|
||||||
|
|
||||||
-- [[ Configure and install plugins ]]
|
local function run_build(name, cmd, cwd)
|
||||||
--
|
local result = vim.system(cmd, { cwd = cwd }):wait()
|
||||||
-- To check the current status of your plugins, run
|
if result.code ~= 0 then
|
||||||
-- :Lazy
|
local stderr = result.stderr or ''
|
||||||
--
|
local stdout = result.stdout or ''
|
||||||
-- You can press `?` in this menu for help. Use `:q` to close the window
|
local output = stderr ~= '' and stderr or stdout
|
||||||
--
|
if output == '' then output = 'No output from build command.' end
|
||||||
-- To update plugins you can run
|
vim.notify(('Build failed for %s:\n%s'):format(name, output), vim.log.levels.ERROR)
|
||||||
-- :Lazy update
|
end
|
||||||
--
|
end
|
||||||
-- NOTE: Here is where you install your plugins.
|
|
||||||
require('lazy').setup({
|
|
||||||
-- NOTE: Plugins can be added via a link or github org/name. To run setup automatically, use `opts = {}`
|
|
||||||
{ 'NMAC427/guess-indent.nvim', opts = {} },
|
|
||||||
|
|
||||||
-- Alternatively, use `config = function() ... end` for full control over the configuration.
|
-- This autocommand runs after a plugin is installed or updated and
|
||||||
-- If you prefer to call `setup` explicitly, use:
|
-- runs the appropriate build command for that plugin if necessary.
|
||||||
-- {
|
|
||||||
-- 'lewis6991/gitsigns.nvim',
|
|
||||||
-- config = function()
|
|
||||||
-- require('gitsigns').setup({
|
|
||||||
-- -- Your gitsigns configuration here
|
|
||||||
-- })
|
|
||||||
-- end,
|
|
||||||
-- }
|
|
||||||
--
|
--
|
||||||
-- Here is a more advanced example where we pass configuration
|
-- See `:help vim.pack-events`
|
||||||
-- options to `gitsigns.nvim`.
|
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,
|
||||||
|
})
|
||||||
|
|
||||||
|
local gh = function(repo) return 'https://github.com/' .. repo end
|
||||||
|
|
||||||
|
---@type (string|vim.pack.Spec)[]
|
||||||
|
local plugins = {
|
||||||
|
-- You can specify plugins with a git URL. `vim.pack` then uses the default branch (usually `main` or `master`)
|
||||||
|
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',
|
||||||
|
-- You can also specify plugins with a version range for semver git tags
|
||||||
|
-- See `:help vim.version.range()` for more info
|
||||||
|
{ 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',
|
||||||
|
-- You can also specify a branch or a specific commit
|
||||||
|
{ 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
|
||||||
|
|
||||||
|
-- NOTE: Here is where the plugins are actually installed and added to the path
|
||||||
|
vim.pack.add(plugins)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 3: UI / CORE UX PLUGINS
|
||||||
|
-- guess-indent, gitsigns, which-key, colorscheme, todo-comments, mini modules
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Configure plugins ]]
|
||||||
|
-- For most plugins you need to call their `.setup()` to start them
|
||||||
--
|
--
|
||||||
-- See `:help gitsigns` to understand what the configuration keys do
|
-- For example, here is the simplest possible setup for `guess-indent.nvim`,
|
||||||
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
|
-- which will automatically detect and set your indentation settings based on the current file.
|
||||||
'lewis6991/gitsigns.nvim',
|
require('guess-indent').setup {}
|
||||||
---@module 'gitsigns'
|
|
||||||
---@type Gitsigns.Config
|
-- Here is a more advanced example that passes configuration options to `gitsigns.nvim`
|
||||||
---@diagnostic disable-next-line: missing-fields
|
--
|
||||||
opts = {
|
-- See `:help gitsigns` to understand what each configuration key does.
|
||||||
|
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||||
|
require('gitsigns').setup {
|
||||||
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
|
||||||
@ -286,34 +354,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.
|
-- Useful plugin to show you pending keybinds.
|
||||||
--
|
require('which-key').setup {
|
||||||
-- This is often very useful to both group configuration, as well as handle
|
-- Delay between pressing a key and opening which-key (milliseconds)
|
||||||
-- 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.
|
|
||||||
'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 = 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' } },
|
||||||
@ -321,52 +368,84 @@ 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.
|
-- [[ Colorscheme ]]
|
||||||
|
-- You can easily change to a different colorscheme.
|
||||||
|
-- Change the name of the colorscheme plugin below, and then
|
||||||
|
-- change the command under that to load whatever the name of that colorscheme is.
|
||||||
--
|
--
|
||||||
-- The dependencies are proper plugin specifications as well - anything
|
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
||||||
-- you do for a plugin at the top level, you can do for a dependency.
|
---@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'
|
||||||
|
|
||||||
|
-- Highlight todo, notes, etc in comments
|
||||||
|
require('todo-comments').setup { signs = false }
|
||||||
|
|
||||||
|
-- Collection of various small independent plugins/modules
|
||||||
|
|
||||||
|
-- Better Around/Inside textobjects
|
||||||
--
|
--
|
||||||
-- Use the `dependencies` key to specify the dependencies of a particular plugin
|
-- Examples:
|
||||||
|
-- - va) - [V]isually select [A]round [)]paren
|
||||||
{ -- Fuzzy Finder (files, lsp, etc)
|
-- - yiiq - [Y]ank [I]nside [I]+1 [Q]uote
|
||||||
'nvim-telescope/telescope.nvim',
|
-- - ci' - [C]hange [I]nside [']quote
|
||||||
-- By default, Telescope is included and acts as your picker for everything.
|
require('mini.ai').setup {
|
||||||
|
-- NOTE: Avoid conflicts with the built-in incremental selection mappings on Neovim>=0.12 (see `:help treesitter-incremental-selection`)
|
||||||
-- If you would like to switch to a different picker (like snacks, or fzf-lua)
|
mappings = {
|
||||||
-- you can disable the Telescope plugin by setting enabled to false and enable
|
around_next = 'aa',
|
||||||
-- your replacement picker by requiring it explicitly (e.g. 'custom.plugins.snacks')
|
inside_next = 'ii',
|
||||||
|
|
||||||
-- Note: If you customize your config for yourself,
|
|
||||||
-- it’s best to remove the Telescope plugin config entirely
|
|
||||||
-- 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' },
|
n_lines = 500,
|
||||||
|
}
|
||||||
|
|
||||||
-- Useful for getting pretty icons, but requires a Nerd Font.
|
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
||||||
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
|
--
|
||||||
},
|
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
||||||
config = function()
|
-- - sd' - [S]urround [D]elete [']quotes
|
||||||
|
-- - sr)' - [S]urround [R]eplace [)] [']
|
||||||
|
require('mini.surround').setup()
|
||||||
|
|
||||||
|
-- Simple and easy statusline.
|
||||||
|
-- You could remove this setup call if you don't like it,
|
||||||
|
-- and try some other statusline plugin
|
||||||
|
local statusline = require 'mini.statusline'
|
||||||
|
-- Set `use_icons` to true if you have a Nerd Font
|
||||||
|
statusline.setup { use_icons = vim.g.have_nerd_font }
|
||||||
|
|
||||||
|
-- You can configure sections in the statusline by overriding their
|
||||||
|
-- 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
|
||||||
|
|
||||||
|
-- ... and there is more!
|
||||||
|
-- Check out: https://github.com/nvim-mini/mini.nvim
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 4: SEARCH & NAVIGATION
|
||||||
|
-- Telescope setup, keymaps, LSP picker mappings
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Fuzzy Finder (files, lsp, etc) ]]
|
||||||
|
--
|
||||||
-- 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!
|
||||||
--
|
--
|
||||||
|
-- There are lots of other alternative pickers (like snacks.picker, or fzf-lua)
|
||||||
|
-- so feel free to experiment and see what you like!
|
||||||
|
--
|
||||||
-- The easiest way to use Telescope, is to start by doing something like:
|
-- The easiest way to use Telescope, is to start by doing something like:
|
||||||
-- :Telescope help_tags
|
-- :Telescope help_tags
|
||||||
--
|
--
|
||||||
@ -382,7 +461,6 @@ require('lazy').setup({
|
|||||||
-- Telescope picker. This is really useful to discover what Telescope can
|
-- Telescope picker. This is really useful to discover what Telescope can
|
||||||
-- do as well as how to actually do it!
|
-- do as well as how to actually do it!
|
||||||
|
|
||||||
-- [[ Configure Telescope ]]
|
|
||||||
-- See `:help telescope` and `:help telescope.setup()`
|
-- See `:help telescope` and `:help telescope.setup()`
|
||||||
require('telescope').setup {
|
require('telescope').setup {
|
||||||
-- You can put your default mappings / updates / etc. in here
|
-- You can put your default mappings / updates / etc. in here
|
||||||
@ -417,8 +495,8 @@ require('lazy').setup({
|
|||||||
vim.keymap.set('n', '<leader>sc', builtin.commands, { desc = '[S]earch [C]ommands' })
|
vim.keymap.set('n', '<leader>sc', builtin.commands, { desc = '[S]earch [C]ommands' })
|
||||||
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
|
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
|
||||||
|
|
||||||
-- This runs on LSP attach per buffer (see main LSP attach function in 'neovim/nvim-lspconfig' config for more info,
|
-- Add Telescope-based LSP pickers when an LSP attaches to a buffer.
|
||||||
-- it is better explained there). This allows easily switching between pickers if you prefer using something else!
|
-- If you later switch picker plugins, this is where to update these mappings.
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
group = vim.api.nvim_create_augroup('telescope-lsp-attach', { clear = true }),
|
group = vim.api.nvim_create_augroup('telescope-lsp-attach', { clear = true }),
|
||||||
callback = function(event)
|
callback = function(event)
|
||||||
@ -476,32 +554,14 @@ 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,
|
end
|
||||||
},
|
|
||||||
|
|
||||||
-- LSP Plugins
|
-- ============================================================
|
||||||
{
|
-- SECTION 5: LSP
|
||||||
-- Main LSP Configuration
|
-- LSP keymaps, server configuration, Mason tools installations
|
||||||
'neovim/nvim-lspconfig',
|
-- ============================================================
|
||||||
dependencies = {
|
do
|
||||||
-- Automatically install LSPs and related tools to stdpath for Neovim
|
-- [[ LSP Configuration ]]
|
||||||
-- 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',
|
|
||||||
---@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.
|
|
||||||
{ 'j-hui/fidget.nvim', opts = {} },
|
|
||||||
},
|
|
||||||
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.
|
||||||
@ -527,6 +587,9 @@ require('lazy').setup({
|
|||||||
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
|
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
|
||||||
-- and elegantly composed help section, `:help lsp-vs-treesitter`
|
-- and elegantly composed help section, `:help lsp-vs-treesitter`
|
||||||
|
|
||||||
|
-- Useful status updates for LSP.
|
||||||
|
require('fidget').setup {}
|
||||||
|
|
||||||
-- This function gets run when an LSP attaches to a particular buffer.
|
-- 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
|
-- 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
|
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
|
||||||
@ -648,6 +711,9 @@ require('lazy').setup({
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Automatically install LSPs and related tools to stdpath for Neovim
|
||||||
|
require('mason').setup {}
|
||||||
|
|
||||||
-- Ensure the servers and tools above are installed
|
-- Ensure the servers and tools above are installed
|
||||||
--
|
--
|
||||||
-- To check the current status of installed tools and/or manually install
|
-- To check the current status of installed tools and/or manually install
|
||||||
@ -666,24 +732,15 @@ require('lazy').setup({
|
|||||||
vim.lsp.config(name, server)
|
vim.lsp.config(name, server)
|
||||||
vim.lsp.enable(name)
|
vim.lsp.enable(name)
|
||||||
end
|
end
|
||||||
end,
|
end
|
||||||
},
|
|
||||||
|
|
||||||
{ -- Autoformat
|
-- ============================================================
|
||||||
'stevearc/conform.nvim',
|
-- SECTION 6: FORMATTING
|
||||||
event = { 'BufWritePre' },
|
-- conform.nvim setup and keymap
|
||||||
cmd = { 'ConformInfo' },
|
-- ============================================================
|
||||||
keys = {
|
do
|
||||||
{
|
-- [[ Formatting ]]
|
||||||
'<leader>f',
|
require('conform').setup {
|
||||||
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:
|
||||||
@ -709,42 +766,28 @@ 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' })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 7: AUTOCOMPLETE & SNIPPETS
|
||||||
|
-- blink.cmp and luasnip setup
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
|
-- [[ Snippet Engine ]]
|
||||||
|
require('luasnip').setup {}
|
||||||
|
|
||||||
{ -- Autocompletion
|
|
||||||
'saghen/blink.cmp',
|
|
||||||
event = 'VimEnter',
|
|
||||||
version = '1.*',
|
|
||||||
dependencies = {
|
|
||||||
-- 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,
|
|
||||||
-- },
|
-- [[ Autocomplete Engine ]]
|
||||||
},
|
require('blink.cmp').setup {
|
||||||
opts = {},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
---@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.
|
||||||
@ -797,119 +840,46 @@ require('lazy').setup({
|
|||||||
-- By default, we use the Lua implementation instead, but you may enable
|
-- By default, we use the Lua implementation instead, but you may enable
|
||||||
-- the rust implementation via `'prefer_rust_with_warning'`
|
-- the rust implementation via `'prefer_rust_with_warning'`
|
||||||
--
|
--
|
||||||
-- See :h blink-cmp-config-fuzzy for more information
|
-- See `:help blink-cmp-config-fuzzy` for more information
|
||||||
fuzzy = { implementation = 'lua' },
|
fuzzy = { implementation = 'lua' },
|
||||||
|
|
||||||
-- 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.
|
|
||||||
-- Change the name of the colorscheme plugin below, and then
|
|
||||||
-- 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`.
|
|
||||||
'folke/tokyonight.nvim',
|
|
||||||
priority = 1000, -- Make sure to load this before all the other start plugins.
|
|
||||||
config = function()
|
|
||||||
---@diagnostic disable-next-line: missing-fields
|
|
||||||
require('tokyonight').setup {
|
|
||||||
styles = {
|
|
||||||
comments = { italic = false }, -- Disable italics in comments
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
end
|
||||||
|
|
||||||
-- Load the colorscheme here.
|
-- ============================================================
|
||||||
-- Like many other themes, this one has different styles, and you could load
|
-- SECTION 8: TREESITTER
|
||||||
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
|
-- Parser installation, syntax highlighting, folds, indentation
|
||||||
vim.cmd.colorscheme 'tokyonight-night'
|
-- ============================================================
|
||||||
end,
|
do
|
||||||
},
|
-- [[ Configure Treesitter ]]
|
||||||
|
-- Used to highlight, edit, and navigate code
|
||||||
-- Highlight todo, notes, etc in comments
|
|
||||||
{
|
|
||||||
'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
|
|
||||||
'nvim-mini/mini.nvim',
|
|
||||||
config = function()
|
|
||||||
-- Better Around/Inside textobjects
|
|
||||||
--
|
--
|
||||||
-- Examples:
|
-- See `:help nvim-treesitter-intro`
|
||||||
-- - va) - [V]isually select [A]round [)]paren
|
|
||||||
-- - yinq - [Y]ank [I]nside [I]next [Q]uote
|
|
||||||
-- - ci' - [C]hange [I]nside [']quote
|
|
||||||
require('mini.ai').setup {
|
|
||||||
-- NOTE: Avoid conflicts with the built-in incremental selection mappings on Neovim>=0.12 (see `:help treesitter-incremental-selection`)
|
|
||||||
mappings = {
|
|
||||||
around_next = 'aa',
|
|
||||||
inside_next = 'ii',
|
|
||||||
},
|
|
||||||
n_lines = 500,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
-- Ensure basic parsers are installed
|
||||||
--
|
|
||||||
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
|
||||||
-- - sd' - [S]urround [D]elete [']quotes
|
|
||||||
-- - sr)' - [S]urround [R]eplace [)] [']
|
|
||||||
require('mini.surround').setup()
|
|
||||||
|
|
||||||
-- Simple and easy statusline.
|
|
||||||
-- You could remove this setup call if you don't like it,
|
|
||||||
-- and try some other statusline plugin
|
|
||||||
local statusline = require 'mini.statusline'
|
|
||||||
-- set use_icons to true if you have a Nerd Font
|
|
||||||
statusline.setup { use_icons = vim.g.have_nerd_font }
|
|
||||||
|
|
||||||
-- You can configure sections in the statusline by overriding their
|
|
||||||
-- 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
|
|
||||||
|
|
||||||
-- ... and there is more!
|
|
||||||
-- Check out: https://github.com/nvim-mini/mini.nvim
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{ -- Highlight, edit, and navigate code
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
lazy = false,
|
|
||||||
build = ':TSUpdate',
|
|
||||||
branch = 'main',
|
|
||||||
-- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
|
|
||||||
config = function()
|
|
||||||
-- 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)
|
||||||
|
|
||||||
---@param buf integer
|
---@param buf integer
|
||||||
---@param language string
|
---@param language string
|
||||||
local function treesitter_try_attach(buf, language)
|
local function treesitter_try_attach(buf, language)
|
||||||
-- check if parser exists and load it
|
-- Check if a parser exists and load it
|
||||||
if not vim.treesitter.language.add(language) then return end
|
if not vim.treesitter.language.add(language) then return end
|
||||||
-- enables syntax highlighting and other treesitter features
|
-- Enable syntax highlighting and other treesitter features
|
||||||
vim.treesitter.start(buf, language)
|
vim.treesitter.start(buf, language)
|
||||||
|
|
||||||
-- enables treesitter based folds
|
-- Enable treesitter based folds
|
||||||
-- for more info on folds see `:help folds`
|
-- For more info on folds see `:help folds`
|
||||||
-- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
-- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
|
||||||
-- vim.wo.foldmethod = 'expr'
|
-- vim.wo.foldmethod = 'expr'
|
||||||
|
|
||||||
-- check if treesitter indentation is available for this language, and if so enable it
|
-- Check if treesitter indentation is available for this language, and if so enable it
|
||||||
-- in case there is no indent query, the indentexpr will fallback to the vim's built in one
|
-- in case there is no indent query, the indentexpr will fallback to the vim's built in one
|
||||||
local has_indent_query = vim.treesitter.query.get(language, 'indents') ~= nil
|
local has_indent_query = vim.treesitter.query.get(language, 'indents') ~= nil
|
||||||
|
|
||||||
-- enables treesitter based indentation
|
-- Enable treesitter based indentation
|
||||||
if has_indent_query then vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end
|
if has_indent_query then vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -924,20 +894,24 @@ require('lazy').setup({
|
|||||||
local installed_parsers = require('nvim-treesitter').get_installed 'parsers'
|
local installed_parsers = require('nvim-treesitter').get_installed 'parsers'
|
||||||
|
|
||||||
if vim.tbl_contains(installed_parsers, language) then
|
if vim.tbl_contains(installed_parsers, language) then
|
||||||
-- enable the parser if it is installed
|
-- Enable the parser if it is already installed
|
||||||
treesitter_try_attach(buf, language)
|
treesitter_try_attach(buf, language)
|
||||||
elseif vim.tbl_contains(available_parsers, language) then
|
elseif vim.tbl_contains(available_parsers, language) then
|
||||||
-- if a parser is available in `nvim-treesitter` auto install it, and enable it after the installation is done
|
-- If a parser is available in `nvim-treesitter`, auto-install it and enable it after the installation is done
|
||||||
require('nvim-treesitter').install(language):await(function() treesitter_try_attach(buf, language) end)
|
require('nvim-treesitter').install(language):await(function() treesitter_try_attach(buf, language) end)
|
||||||
else
|
else
|
||||||
-- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter`
|
-- Try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter`
|
||||||
treesitter_try_attach(buf, language)
|
treesitter_try_attach(buf, language)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end,
|
end
|
||||||
},
|
|
||||||
|
|
||||||
|
-- ============================================================
|
||||||
|
-- SECTION 9: OPTIONAL EXAMPLES / NEXT STEPS
|
||||||
|
-- kickstart.plugins.* examples
|
||||||
|
-- ============================================================
|
||||||
|
do
|
||||||
-- 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
|
||||||
-- place them in the correct locations.
|
-- place them in the correct locations.
|
||||||
@ -947,44 +921,18 @@ 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'
|
||||||
--
|
end
|
||||||
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
|
||||||
-- Or use telescope!
|
|
||||||
-- 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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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))
|
||||||
|
|||||||
@ -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 = {},
|
|
||||||
}
|
|
||||||
|
|||||||
@ -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,
|
|
||||||
}
|
|
||||||
|
|||||||
@ -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,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 = {},
|
|
||||||
}
|
|
||||||
|
|||||||
@ -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,
|
|
||||||
}
|
|
||||||
|
|||||||
@ -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 {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user