Compare commits

..

49 Commits

Author SHA1 Message Date
Julian Raufelder 92ce45fbe4
Merge branch 'master' of github.com:nvim-lua/kickstart.nvim into new-main 2025-04-03 16:10:36 +02:00
Julian Raufelder ccc130d59a
Remove auto adding newline 2025-04-03 16:08:11 +02:00
Sander e947649cb0
feat(keymap): move windows without `<C-w>` (#1368) 2025-03-24 15:34:57 -04:00
RulentWave 5e2d7e184b
changed Conform's format_on_save lambda so that buffers that match disable_filetypes return nil. This allows you to enable a formatter for langages in the disable_filetypes table to have a formatter that can be run manually with Leader-f but doesnt enable format_on_save for them (#1395) 2025-03-24 15:33:53 -04:00
Luca Saccarola 2abcb39fae
fix: use correct github abmonition syntax (#1414) 2025-03-20 18:16:35 -04:00
Crypto-Spartan 38f4744e25
feat: add `vim.opt.confirm = true` (#1384) 2025-03-12 17:24:44 -04:00
Chris Patti 34e7d29aa7
Propsed fix for init.lua warnings as per https://github.com/nvim-lua/kickstart.nvim/issues/1305#issuecomment-2657770325 (#1354) 2025-02-19 09:40:16 -05:00
Ari Pollak ea60b2b01f
Remove duplicate cmp-path (#1369) 2025-02-19 09:38:58 -05:00
Jonas Zeltner e64aa51ef2
fix: regression introduced in db78c0b217 (#1367) 2025-02-18 11:15:13 -05:00
Aryan Rajoria 7c49ba1cb7
Fix: fix the cmp-nvim-lsp-signature-help link (#1363) 2025-02-18 00:05:15 -05:00
Rob 282cbb9c82
feat: add basic function signature help (#1358)
* feat: add basic function signature help

* Update init.lua

Co-authored-by: makeworld <25111343+makew0rld@users.noreply.github.com>

---------

Co-authored-by: makeworld <25111343+makew0rld@users.noreply.github.com>
2025-02-17 19:12:06 -05:00
Joaquín Guerra ebca680dea
perf: load tokyonight.nvim in the intended way (#1360)
Fixes #1357
2025-02-17 19:10:48 -05:00
GeloCraft 76e06fec5c
feat(diagnostic): add diagnostic config (#1335)
Co-authored-by: gelocraft <gelocraft@users.noreply.github.com>
2025-02-17 13:01:07 -05:00
Jonas Zeltner db78c0b217
fix: arguments for the `vim.lsp.Client.supports_method` method (#1356) 2025-02-16 22:42:19 -05:00
Chris Patti d2c006819a
Add a blurb about installing missing emoji on Ubuntu
Right next to the nerdfonts blurb as requested.
2025-02-16 22:37:44 -05:00
Erlan Rangel 94f551b803
fix (#1319): gitsigns deprecated functions (#1321)
- This commit change two functions that are marked as deprecated now:
`gitsigns.stage_hunk` and `gitsigns.toggle_deleted`
2025-02-15 00:48:37 -05:00
bleacheda 71ad926ab1
docs: clarify using opts = {} vs config = function() ... require('plu… (#1316)
* docs: clarify using opts = {} vs config = function() ... require('plugin').setup({}) .. end

The current documentation mentioning that using "require" is equivalent to using "opts" without detailing the use in the "config = function()" block seems inaccurate.
Lower in the configuration the "config = function()" block is used without clarifying why it needed and what it does.
This clarification may help new users understand the difference between the two, or how and where to place the "require" statement.

* Update init.lua

* remove whitespace
2025-02-14 22:32:50 -05:00
Ryan Nevius abdbfce0f8
chore(docs): Update README.md (#1344)
Neovim has renamed the "linux64" binary to "linux-x86_64".
2025-02-14 22:23:31 -05:00
Diorman Colmenares 5bdde24dfb
Use luals 3rd library for luv (#1303) 2025-01-15 14:38:26 -05:00
Nhan Luu ff89769e45
chore: fix typo in bug report issue template (#1306) 2025-01-15 14:37:36 -05:00
Nhan Luu f6abf682ff
chore: remove redundant comment (#1307) 2025-01-15 14:37:03 -05:00
Tomas Gareau db4867acb9
fix: prevent mason setup from being run twice (#1298)
* fix: prevent mason setup from being run twice

Addresses https://github.com/nvim-lua/kickstart.nvim/issues/1297

Currently, we're calling `require('mason').setup(...)` twice:
* once when setting it as a dependency of `nvim-lspconfig` (since we set
	`config = true`)
* once in the `config` function we define for `nvim-lspconfig`

Calling setup twice can cause issues with, e.g., setting the `PATH`
option: you might append Mason's bin dir in one setup call and prepend
it in the other.

We've kept the setup of `mason` in the `nvim-lspconfig` dependencies
table since leaving it to the `config` function caused some
plugin-loading-order related issues in the past. See:
* https://github.com/nvim-lua/kickstart.nvim/pull/210
* https://github.com/nvim-lua/kickstart.nvim/issues/554
* https://github.com/nvim-lua/kickstart.nvim/pull/555
* https://github.com/nvim-lua/kickstart.nvim/pull/865

* docs: tweak comments per review feedback
2025-01-07 10:44:29 -05:00
Ryan Jensen a8f539562a
Fix which-key delay settings (#1276)
The which-key plugin used to rely on vim.opt.timeoutlen, but it was
updated a few months ago to use its own opt.delay instead.

8ab96b38a2/NEWS.md?plain=1#L10

I set which-key's delay to 0 ms because it makes it feel snappy and
responsive! That way, we give new users a good first impression.
2024-12-29 12:04:10 -05:00
Ihsan Tonuzi 7ddaab3ffd
chore: add pre-issue requirements (#1288)
* chore: add pre-issue requirements

Based on #1285

* docs: add header about documentation

Based on #1285
2024-12-29 12:00:16 -05:00
George e84e187f3c
Fix README.md grammar and typos (#1291) 2024-12-29 11:39:47 -05:00
Scott Swensen de44f49101
fix(gitsigns): make visual mode descriptions consistent with normal mode (#1266) 2024-12-15 00:42:39 -05:00
ben fleis bcdb4cd252
Issue 1249 which key comments (#1263)
* Tweak outdated comment about lazy's `config` key usage.

Remove outdated comment describing use of `config` key, replacing with
corrected `opt` key note.

Fixes #1249

* fix typo opt -> opts

Fixes #1250
2024-12-12 16:26:20 -05:00
Artem Dragunov a2df3ea9eb
Use consistent syntax style for { ... } "pseudocode" (#1247)
```
require('gitsigns').setup({ ... })
```

This was the first occurrence

It may be nice to have the same style everywhere

Cosmetic change (just to make docs/comments even more perfect)
2024-12-12 10:51:58 -05:00
ben fleis 7bc9d19a4d
Tweak outdated comment about lazy's `config` key usage. (#1250)
Remove outdated comment describing use of `config` key, replacing with
corrected `opt` key note.

Fixes #1249
2024-12-12 10:50:55 -05:00
Miha 8d1ef972bc
fix: which-key comment typo (#1227) 2024-11-20 08:41:50 -05:00
Anjishnu Banerjee 9dfb1b230f
Fix nvim-dap not lazy loading (#1216)
* Fix nvim-dap not lazy loading

The keys property had local variables 'dap' and 'dap-ui' that used `require` and prevented all DAP related plugins from lazy-loading.
Fixed this by changing keys to a table and substituting the local variables with a lamba function

* Make debug keybind descriptions more consistent
2024-11-20 08:40:51 -05:00
gloomy-lemon-debatable e5dc5f6d1c
feat: Change to prepare for upcoming deprecation of configuring diagnostic-signs using sign_define() (#1232) 2024-11-20 08:37:22 -05:00
Will Winder 2ba39c6973
Remove two because there are more than two. (#1213) 2024-10-30 14:58:52 -04:00
gloomy-lemon-debatable be678aa341
Set breakpoint icons and their highlight colors (#1194)
* feat: Set breakpoint icons and their highlight colors

* docs: Delete reference URL (written in PR)
feat: "Break" and "Stop" arguments of vim.api.nvim_set_hl are changed because they are too common nouns
feat: Comment out changes regarding diagnostic symbols so that only those who want to change them can do so

---------

Co-authored-by: name <email>
2024-10-30 13:01:42 -04:00
gloomy-lemon-debatable d09d9bc6dc
Change diagnostic symbols if vim.g.have_nerd_font is true (#1195)
* feat: Change diagnostic symbols if vim.g.have_nerd_font is true

* feat: Comment out changes regarding diagnostic symbols so that only those who want to change them can do so

---------

Co-authored-by: name <email>
2024-10-30 11:50:27 -04:00
sam fb7f6a1c13
samarth-nagar fix: lazy help tag on line 931 (#1167)
* samarth-nagar fix: lazy help tag on line 931

found in issue #1152

* fixed white space

---------

Co-authored-by: sam <110125971+samarth-nagar@users.noreply.github.com>
2024-10-30 11:49:16 -04:00
Éric NICOLAS 5ed1bc38dc
Disable linting autocmd for readonly buffers (#1202)
* Disable linting autocmd for readonly buffers

This should avoid linting in buffers outside of the user's control,
having in mind especially the handy LSP pop-ups that describe your
hovered symbol using markdown.

Co-authored-by: Robin Gruyters <2082795+rgruyters@users.noreply.github.com>

* Justify guarding try_lint in readonly buffers

Co-authored-by: Robin Gruyters <2082795+rgruyters@users.noreply.github.com>

---------

Co-authored-by: Robin Gruyters <2082795+rgruyters@users.noreply.github.com>
2024-10-30 11:41:46 -04:00
Bastien Traverse 4120893b8a
fix: update lazy uninstall information link (#1148) 2024-09-24 11:06:14 -04:00
Nicolás Baquero 7201dc4801
feat: update references of tsserver to ts_ls (#1131) 2024-09-10 16:27:24 -04:00
Damjan 9000 a22976111e
Fix the which-key spec issue caused by recent cleanup (#1113)
The recent cleanup accidentally broke the leader key specs
because the spec block was in the wrong level of braces.
That resulted in which-key no longer showing the description
of the <leader> key chains such as [S]earch and others.
2024-08-26 16:43:59 -04:00
Ihsan Tonuzi 24d368f9ff
cleanup: refactor which-key configuration for cleaner setup (#1102)
- Moved `which-key` configuration from inline `config` to `opts` for better organization.
- Updated the key mappings setup to use `spec` for defining existing key chains.
- Removed deprecated or unnecessary comments and code.

This change aligns with updated `which-key` configuration practices, improving readability and maintainability as recommended by @VlaDexa in #1068.
2024-08-26 12:17:22 -04:00
Ihsan Tonuzi c76c323a7c
fix: remove deprecated opt for conform.nvim (#1070)
- changed lsp_fallback -> lsp_format
- updated format_on_save function to reflect change above
2024-08-25 23:28:26 -04:00
Harshit Pant e4a5300bdb
Fix: updated the windows installation commands (#1101)
* Update README.md

* Update README.md

* Fix: updated the windows installation commands
2024-08-25 23:27:46 -04:00
Bayram Kazik f49cc6c935
Enable silent option for default neo-tree plugin keybinding (#1108) 2024-08-25 23:23:17 -04:00
Bayram Kazik d452633b35
Include visual mode in LSP code action keymap (#1060) (#1064) 2024-08-24 17:31:43 -04:00
Ihsan Tonuzi ac78e7d9e7
refactor: update treesitter and which-key config (#1068) 2024-08-22 21:00:39 -04:00
Michael L. ce0c7340ff
Check for loop or uv for lazypath (#1095) 2024-08-22 16:56:33 -04:00
Matt Gallagher 554a054bf9
Add note in README about lazy-lock.json (#1090) 2024-08-22 16:53:57 -04:00
theoboldalex c1ae9092cb
Update README.md (#1091) 2024-08-22 16:49:25 -04:00
7 changed files with 283 additions and 112 deletions

View File

@ -9,6 +9,13 @@ assignees: ''
<!-- Any bug report not following this template will be immediately closed. Thanks -->
## Before Reporting an Issue
- I have read the kickstart.nvim README.md.
- I have read the appropriate plugin's documentation.
- I have searched that this issue has not been reported before.
- [ ] **By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.**
## Describe the bug
<!-- A clear and concise description of what the bug is. -->

View File

@ -24,21 +24,22 @@ If you are experiencing issues, please make sure you have the latest versions.
External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on platform)
- Clipboard tool (xclip/xsel/win32yank or other depending on the platform)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
- Emoji fonts (Ubuntu only, and only if you want emoji!) `sudo apt install fonts-noto-color-emoji`
- Language Setup:
- If want to write Typescript, you need `npm`
- If want to write Golang, you will need `go`
- If you want to write Typescript, you need `npm`
- If you want to write Golang, you will need `go`
- etc.
> **NOTE**
> [!NOTE]
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
> and quick install snippets
### Install Kickstart
> **NOTE**
> [!NOTE]
> [Backup](#FAQ) your previous configuration (if any exists)
Neovim's configurations are located under the following paths, depending on your OS:
@ -55,12 +56,17 @@ Neovim's configurations are located under the following paths, depending on your
so that you have your own copy that you can modify, then install by cloning the
fork to your machine using one of the commands below, depending on your OS.
> **NOTE**
> Your fork's url will be something like this:
> [!NOTE]
> Your fork's URL will be something like this:
> `https://github.com/<your_github_username>/kickstart.nvim.git`
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file
too - it's ignored in the kickstart repo to make maintenance easier, but it's
[recommended to track it in version control](https://lazy.folke.io/usage/lockfile).
#### Clone kickstart.nvim
> **NOTE**
> [!NOTE]
> If following the recommended step above (i.e., forking the repo), replace
> `nvim-lua` with `<your_github_username>` in the commands below
@ -77,13 +83,13 @@ git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HO
If you're using `cmd.exe`:
```
git clone https://github.com/nvim-lua/kickstart.nvim.git %localappdata%\nvim\
git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim"
```
If you're using `powershell.exe`
```
git clone https://github.com/nvim-lua/kickstart.nvim.git $env:LOCALAPPDATA\nvim\
git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim"
```
</details>
@ -97,12 +103,17 @@ nvim
```
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
current plugin status. Hit `q` to close the window.
the current plugin status. Hit `q` to close the window.
#### Read The Friendly Documentation
Read through the `init.lua` file in your configuration folder for more
information about extending and exploring Neovim. That also includes
examples of adding popularly requested plugins.
> [!NOTE]
> For more information about a particular plugin check its repository's documentation.
### Getting Started
@ -110,9 +121,9 @@ examples of adding popularly requested plugins.
### FAQ
* What should I do if I already have a pre-existing neovim configuration?
* What should I do if I already have a pre-existing Neovim configuration?
* You should back it up and then delete all associated files.
* This includes your existing init.lua and the neovim files in `~/.local`
* This includes your existing init.lua and the Neovim files in `~/.local`
which can be deleted with `rm -rf ~/.local/share/nvim/`
* Can I keep my existing configuration in parallel to kickstart?
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
@ -126,7 +137,7 @@ examples of adding popularly requested plugins.
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
distribution that you would like to try out.
* What if I want to "uninstall" this configuration:
* See [lazy.nvim uninstall](https://github.com/folke/lazy.nvim#-uninstalling) information
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information
* 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
configuration that someone can easily use to `git clone` as a basis for their own.
@ -170,7 +181,7 @@ run in cmd as **admin**:
winget install --accept-source-agreements chocolatey.chocolatey
```
2. install all requirements using choco, exit previous cmd and
2. install all requirements using choco, exit the previous cmd and
open a new one so that choco path is set, and run in cmd as **admin**:
```
choco install -y neovim git ripgrep wget fd unzip gzip mingw make
@ -203,14 +214,14 @@ sudo apt update
sudo apt install make gcc ripgrep unzip git xclip curl
# Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
sudo rm -rf /opt/nvim-linux64
sudo mkdir -p /opt/nvim-linux64
sudo chmod a+rX /opt/nvim-linux64
sudo tar -C /opt -xzf nvim-linux64.tar.gz
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
sudo rm -rf /opt/nvim-linux-x86_64
sudo mkdir -p /opt/nvim-linux-x86_64
sudo chmod a+rX /opt/nvim-linux-x86_64
sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz
# make it available in /usr/local/bin, distro installs to /usr/bin
sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/
sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/
```
</details>
<details><summary>Fedora Install Steps</summary>

225
init.lua
View File

@ -135,7 +135,6 @@ vim.opt.signcolumn = 'yes'
vim.opt.updatetime = 250
-- Decrease mapped sequence wait time
-- Displays which-key popup sooner
vim.opt.timeoutlen = 300
-- Configure how new splits should be opened
@ -157,6 +156,11 @@ vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 10
-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`),
-- instead raise a dialog asking if you wish to save the current file(s)
-- See `:help 'confirm'`
vim.opt.confirm = true
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
@ -190,6 +194,12 @@ vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right win
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
-- NOTE: Some terminals have coliding keymaps or are not able to send distinct keycodes
-- vim.keymap.set("n", "<C-S-h>", "<C-w>H", { desc = "Move window to the left" })
-- vim.keymap.set("n", "<C-S-l>", "<C-w>L", { desc = "Move window to the right" })
-- vim.keymap.set("n", "<C-S-j>", "<C-w>J", { desc = "Move window to the lower" })
-- vim.keymap.set("n", "<C-S-k>", "<C-w>K", { desc = "Move window to the upper" })
-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
@ -207,7 +217,7 @@ vim.api.nvim_create_autocmd('TextYankPost', {
-- [[ 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.fs_stat(lazypath) then
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then
@ -235,12 +245,22 @@ require('lazy').setup({
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to force a plugin to be loaded.
-- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
--
-- 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
-- options to `gitsigns.nvim`. This is equivalent to the following Lua:
-- require('gitsigns').setup({ ... })
-- options to `gitsigns.nvim`.
--
-- See `:help gitsigns` to understand what the configuration keys do
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
@ -328,27 +348,64 @@ require('lazy').setup({
-- 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 `config` key, the configuration only runs
-- after the plugin has been loaded:
-- config = function() ... end
-- 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', -- Sets the loading event to 'VimEnter'
config = function() -- This is the function that runs, AFTER loading
require('which-key').setup()
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
-- this setting is independent of vim.opt.timeoutlen
delay = 0,
icons = {
-- set icon mappings to true if you have a Nerd Font
mappings = vim.g.have_nerd_font,
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
-- default which-key.nvim defined Nerd Font icons, otherwise define a string table
keys = vim.g.have_nerd_font and {} or {
Up = '<Up> ',
Down = '<Down> ',
Left = '<Left> ',
Right = '<Right> ',
C = '<C-…> ',
M = '<M-…> ',
D = '<D-…> ',
S = '<S-…> ',
CR = '<CR> ',
Esc = '<Esc> ',
ScrollWheelDown = '<ScrollWheelDown> ',
ScrollWheelUp = '<ScrollWheelUp> ',
NL = '<NL> ',
BS = '<BS> ',
Space = '<Space> ',
Tab = '<Tab> ',
F1 = '<F1>',
F2 = '<F2>',
F3 = '<F3>',
F4 = '<F4>',
F5 = '<F5>',
F6 = '<F6>',
F7 = '<F7>',
F8 = '<F8>',
F9 = '<F9>',
F10 = '<F10>',
F11 = '<F11>',
F12 = '<F12>',
},
},
-- Document existing key chains
require('which-key').add {
{ '<leader>c', group = '[C]ode' },
spec = {
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
{ '<leader>d', group = '[D]ocument' },
{ '<leader>r', group = '[R]ename' },
{ '<leader>s', group = '[S]earch' },
{ '<leader>w', group = '[W]orkspace' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
}
end,
},
},
},
-- NOTE: Plugins can specify dependencies.
@ -480,22 +537,22 @@ require('lazy').setup({
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
{ 'Bilal2453/luvit-meta', lazy = true },
{
-- Main LSP Configuration
'neovim/nvim-lspconfig',
dependencies = {
-- Automatically install LSPs and related tools to stdpath for Neovim
{ 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants
-- 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({})`
{ 'williamboman/mason.nvim', opts = {} },
'williamboman/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP.
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ 'j-hui/fidget.nvim', opts = {} },
-- Allows extra capabilities provided by nvim-cmp
@ -539,8 +596,9 @@ require('lazy').setup({
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
local map = function(keys, func, desc)
vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
local map = function(keys, func, desc, mode)
mode = mode or 'n'
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
-- Jump to the definition of the word under your cursor.
@ -574,19 +632,32 @@ require('lazy').setup({
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
---@param client vim.lsp.Client
---@param method vim.lsp.protocol.Method
---@param bufnr? integer some lsp support methods only in specific files
---@return boolean
local function client_supports_method(client, method, bufnr)
if vim.fn.has 'nvim-0.11' == 1 then
return client:supports_method(method, bufnr)
else
return client.supports_method(method, { bufnr = bufnr })
end
end
-- The following two autocommands are used to highlight references of the
-- word under your cursor when your cursor rests there for a little while.
-- See `:help CursorHold` for information about when this is executed
--
-- When you move your cursor, the highlights will be cleared (the second autocommand).
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
buffer = event.buf,
@ -613,7 +684,7 @@ require('lazy').setup({
-- code, if the language server you are using supports them
--
-- This may be unwanted, since they displace some of your code
if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
map('<leader>th', function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
end, '[T]oggle Inlay [H]ints')
@ -621,6 +692,35 @@ require('lazy').setup({
end,
})
-- Diagnostic Config
-- See :help vim.diagnostic.Opts
vim.diagnostic.config {
severity_sort = true,
float = { border = 'rounded', source = 'if_many' },
underline = { severity = vim.diagnostic.severity.ERROR },
signs = vim.g.have_nerd_font and {
text = {
[vim.diagnostic.severity.ERROR] = '󰅚 ',
[vim.diagnostic.severity.WARN] = '󰀪 ',
[vim.diagnostic.severity.INFO] = '󰋽 ',
[vim.diagnostic.severity.HINT] = '󰌶 ',
},
} or {},
virtual_text = {
source = 'if_many',
spacing = 2,
format = function(diagnostic)
local diagnostic_message = {
[vim.diagnostic.severity.ERROR] = diagnostic.message,
[vim.diagnostic.severity.WARN] = diagnostic.message,
[vim.diagnostic.severity.INFO] = diagnostic.message,
[vim.diagnostic.severity.HINT] = diagnostic.message,
}
return diagnostic_message[diagnostic.severity]
end,
},
}
-- LSP servers and clients are able to communicate to each other what features they support.
-- By default, Neovim doesn't support everything that is in the LSP specification.
-- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
@ -647,13 +747,13 @@ require('lazy').setup({
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
-- But for many setups, the LSP (`tsserver`) will work just fine
-- tsserver = {},
-- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {},
--
lua_ls = {
-- cmd = {...},
-- filetypes = { ...},
-- cmd = { ... },
-- filetypes = { ... },
-- capabilities = {},
settings = {
Lua = {
@ -668,13 +768,16 @@ require('lazy').setup({
}
-- Ensure the servers and tools above are installed
-- To check the current status of installed tools and/or manually install
-- other tools, you can run
--
-- To check the current status of installed tools and/or manually install
-- other tools, you can run
-- :Mason
--
-- You can press `g?` for help in this menu.
require('mason').setup()
-- You can press `g?` for help in this menu.
--
-- `mason` had to be setup earlier: to configure its options see the
-- `dependencies` table for `nvim-lspconfig` above.
--
-- You can add other tools here that you want Mason to install
-- for you, so that they are available from within Neovim.
local ensure_installed = vim.tbl_keys(servers or {})
@ -684,12 +787,14 @@ require('lazy').setup({
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
require('mason-lspconfig').setup {
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
automatic_installation = false,
handlers = {
function(server_name)
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed
-- by the server configuration above. Useful when disabling
-- certain features of an LSP (for example, turning off formatting for tsserver)
-- certain features of an LSP (for example, turning off formatting for ts_ls)
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
@ -706,7 +811,7 @@ require('lazy').setup({
{
'<leader>f',
function()
require('conform').format { async = true, lsp_fallback = true }
require('conform').format { async = true, lsp_format = 'fallback' }
end,
mode = '',
desc = '[F]ormat buffer',
@ -714,16 +819,7 @@ require('lazy').setup({
},
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
-- Disable "format_on_save lsp_fallback" for languages that don't
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
return {
timeout_ms = 500,
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
}
end,
format_on_save = nil,
formatters_by_ft = {
lua = { 'stylua' },
-- Conform can also run multiple formatters sequentially
@ -770,6 +866,7 @@ require('lazy').setup({
-- into multiple repos for maintenance purposes.
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-path',
'hrsh7th/cmp-nvim-lsp-signature-help',
},
config = function()
-- See `:help cmp`
@ -846,6 +943,7 @@ require('lazy').setup({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'path' },
{ name = 'nvim_lsp_signature_help' },
},
}
end,
@ -858,7 +956,14 @@ require('lazy').setup({
-- 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.
init = function()
config = function()
---@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'.
@ -912,6 +1017,8 @@ require('lazy').setup({
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = {
'lua',
@ -948,19 +1055,12 @@ require('lazy').setup({
},
indent = { enable = true, disable = { 'ruby' } },
},
config = function(_, opts)
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
---@diagnostic disable-next-line: missing-fields
require('nvim-treesitter.configs').setup(opts)
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
end,
-- There are additional nvim-treesitter modules that you can use to interact
-- with nvim-treesitter. You should go explore a few and see what interests you:
--
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
},
-- live autocompletion for commands etc
{ 'gelguy/wilder.nvim', version = '*', config = function() end },
@ -1032,7 +1132,7 @@ require('lazy').setup({
-- tmux vim keybindings
'christoomey/vim-tmux-navigator',
-- The following two 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
-- place them in the correct locations.
@ -1052,8 +1152,12 @@ require('lazy').setup({
-- 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.
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
-- { import = 'custom.plugins' },
--
-- 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
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the
@ -1167,3 +1271,4 @@ vim.api.nvim_create_user_command('ThisIsYourCaptainSpeaking', 'let b:copilot_ena
require('neoclip').setup()
vim.api.nvim_set_keymap('n', '<leader>cc', ':Telescope neoclip<CR>', { noremap = true, silent = true })

View File

@ -24,28 +24,59 @@ return {
-- Add your own debuggers here
'leoluz/nvim-dap-go',
},
keys = function(_, keys)
local dap = require 'dap'
local dapui = require 'dapui'
return {
-- Basic debugging keymaps, feel free to change to your liking!
{ '<F5>', dap.continue, desc = 'Debug: Start/Continue' },
{ '<F1>', dap.step_into, desc = 'Debug: Step Into' },
{ '<F2>', dap.step_over, desc = 'Debug: Step Over' },
{ '<F3>', dap.step_out, desc = 'Debug: Step Out' },
{ '<leader>b', dap.toggle_breakpoint, desc = 'Debug: Toggle Breakpoint' },
{
'<leader>B',
function()
dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end,
desc = 'Debug: Set Breakpoint',
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{ '<F7>', dapui.toggle, desc = 'Debug: See last session result.' },
unpack(keys),
}
end,
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
{
'<F5>',
function()
require('dap').continue()
end,
desc = 'Debug: Start/Continue',
},
{
'<F1>',
function()
require('dap').step_into()
end,
desc = 'Debug: Step Into',
},
{
'<F2>',
function()
require('dap').step_over()
end,
desc = 'Debug: Step Over',
},
{
'<F3>',
function()
require('dap').step_out()
end,
desc = 'Debug: Step Out',
},
{
'<leader>b',
function()
require('dap').toggle_breakpoint()
end,
desc = 'Debug: Toggle Breakpoint',
},
{
'<leader>B',
function()
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end,
desc = 'Debug: Set Breakpoint',
},
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
{
'<F7>',
function()
require('dapui').toggle()
end,
desc = 'Debug: See last session result.',
},
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'
@ -89,6 +120,18 @@ return {
},
}
-- Change breakpoint icons
-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
-- local breakpoint_icons = vim.g.have_nerd_font
-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
-- for type, icon in pairs(breakpoint_icons) do
-- local tp = 'Dap' .. type
-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
-- end
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
dap.listeners.before.event_exited['dapui_config'] = dapui.close

View File

@ -36,15 +36,15 @@ return {
-- visual mode
map('v', '<leader>hs', function()
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'stage git hunk' })
end, { desc = 'git [s]tage hunk' })
map('v', '<leader>hr', function()
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'reset git hunk' })
end, { desc = 'git [r]eset hunk' })
-- normal mode
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
map('n', '<leader>hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' })
map('n', '<leader>hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' })
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
@ -54,7 +54,7 @@ return {
end, { desc = 'git [D]iff against last commit' })
-- Toggles
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
map('n', '<leader>tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' })
map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
end,
},
},

View File

@ -47,7 +47,12 @@ return {
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
group = lint_augroup,
callback = function()
lint.try_lint()
-- 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.opt_local.modifiable:get() then
lint.try_lint()
end
end,
})
end,

View File

@ -11,7 +11,7 @@ return {
},
cmd = 'Neotree',
keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal' },
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
},
opts = {
filesystem = {