Compare commits

..

81 Commits

Author SHA1 Message Date
Damjan 9000
77d74fac16 Add type hints to plugins that were extracted from init.lua
Based on:

    commit 177ff6148391742ccb7aaa93c05b95cd6fc853e2
    Author:     orip <oriori1703@gmail.com>
    AuthorDate: Sat Apr 26 14:35:04 2025 +0300

    Add type hints to plugin options where possible

    This could help beginners to get autocompletion, catch mistakes earlier,
    and allow them to skip the docs for simple configs.

    This is not perfect because a lot of the plugins type all of their keys
    as required, even though they have defaults, but this is good enough.
2026-03-15 20:24:45 +01:00
Damjan 9000
5ca301d91c Merge upstream: Fix stylua 2026-03-15 15:17:15 +01:00
Damjan 9000
08ea7f5ccd Merge upstream: Fix formating of plugins 2026-03-15 15:17:05 +01:00
Damjan 9000
df7fff5ac4 Merge upstream: Merge pull request #1928 from nathanzeng/fix-lsp-blink-dependency 2026-03-15 15:16:59 +01:00
Damjan 9000
65a9e8222c Merge upstream: Fix typo in the README 2026-03-15 15:16:45 +01:00
Damjan 9000
847e5d77db Merge upstream: Merge pull request #1925 from nathanzeng/which-key-gitsigns 2026-03-15 15:15:28 +01:00
Damjan 9000
c49c56d354 Merge upstream: Add underline for warnings 2026-03-15 13:15:38 +01:00
Damjan 9000
8f6b928ba7 Merge upstream: Format the dap keybinds 2026-03-15 13:15:29 +01:00
Damjan 9000
684b3a5c81 Merge upstream: Improve undofile comment 2026-03-15 13:15:20 +01:00
Damjan 9000
d77b3acc55 Merge upstream: Update the github actions 2026-03-15 13:15:13 +01:00
Damjan 9000
4dab72b75d Merge upstream: Don't extend lsp capabilities because blink does it internally 2026-03-15 13:15:04 +01:00
Damjan 9000
ad485aecd7 Merge upstream: Add treesitter indentation 2026-03-15 13:14:09 +01:00
Damjan 9000
b4b8219215 Merge upstream: Attach treesitter using language name instead of filetype 2026-03-15 13:13:50 +01:00
Damjan 9000
aa9b92c702 Merge upstream: Add installtion instructions for tree-sitter-cli to the README.md 2026-03-15 13:13:34 +01:00
Damjan 9000
7b8d833d50 Merge upstream: Merge pull request #1896 from giogt/fix-gitignore-lazylock-comment 2026-03-15 13:12:20 +01:00
Damjan 9000
ef648e33b7 Merge upstream: Add 'gr' group to which-keys 2026-03-15 13:12:05 +01:00
Damjan 9000
ffabc9f056 Merge upstream: Fix typo 2026-03-15 13:11:52 +01:00
Damjan 9000
a7771dbca1 Merge upstream: Merge pull request #1494 from oriori1703/feature/type-hints 2026-03-15 13:11:44 +01:00
Damjan 9000
50dd24610e Merge upstream: Clean up the lua_ls config 2026-03-15 13:11:12 +01:00
Damjan 9000
e22b470f4e Merge upstream: Re-add mason-lspconfig 2026-03-15 13:10:26 +01:00
Damjan 9000
ee1a773ca0 Merge upstream: fix: continue cleaning up docs and config 2026-03-15 12:17:14 +01:00
Damjan 9000
d0655cf9b7 Merge upstream: fix: trimming down config and updating stylua 2026-03-15 12:16:50 +01:00
Damjan 9000
729364e83c Merge upstream: feat(grep-string): works with visual selection too (#1605) 2026-03-15 12:16:34 +01:00
Damjan 9000
83f813e311 Merge upstream: docs: Document methods to get the latest neovim (#1626) 2026-03-15 12:16:10 +01:00
Damjan 9000
fd64e14fe8 Merge upstream: fix: simplify diagnostic config 2026-03-15 12:15:50 +01:00
Damjan 9000
33406a2dea Merge upstream: fix: update neovim min required version 2026-03-15 12:15:09 +01:00
Damjan 9000
a137651e8a Merge upstream: feat: move Telescope config to be contained by plugin (#1843) 2026-03-15 12:13:59 +01:00
Damjan 9000
89236e0f92 Merge upstream: chore: Add .DS_Store to .gitignore (#1637) 2026-03-15 12:13:53 +01:00
Damjan 9000
2f76a7ca80 Merge upstream: chore: fix help tag (#1671) 2026-03-15 12:13:45 +01:00
Damjan 9000
684d4b89ef Merge upstream: feat: add Telescope binding for searching through commands (#1675) 2026-03-15 12:13:33 +01:00
Damjan 9000
33be2a76fc Merge upstream: fix: remove deprecated methods 2026-03-15 12:13:18 +01:00
Damjan 9000
2a944fc471 Merge upstream: fix: call setup on guess indent 2026-03-15 12:13:05 +01:00
Damjan 9000
5a7a219940 Merge upstream: fix: adjust after 'mini.nvim' transfer to 'nvim-mini' org (#1713) 2026-03-15 12:12:28 +01:00
Damjan 9000
03f6661927 Merge upstream: fix: remove mason-lspconfig, we do not need it anymore 2026-03-15 12:11:44 +01:00
Damjan 9000
7a55e9d1fa Merge upstream: maybe: seeing if we can get away without lazydev and just doing simpler setup 2026-03-15 12:09:47 +01:00
Damjan 9000
113741c324 Merge upstream: fix: as far as i can tell i updated to the right tree sitter stuff 2026-03-15 12:09:34 +01:00
Damjan 9000
6038757ac3 Merge upstream: update: remove client_supports_method (#1810) 2026-03-15 12:09:11 +01:00
Damjan 9000
c9ec3175de Merge upstream: note: add info about why we ignore lazy-lock 2026-03-15 12:09:01 +01:00
Damjan 9000
e324e4ef81 Merge upstream: fix: update main module reference for nvim-treesitter (#1832) 2026-03-15 12:07:59 +01:00
Ori Perry
58170c7ae3 Fix stylua 2026-03-10 22:12:41 +02:00
Ori Perry
431cf2e881 Fix formating of plugins 2026-03-10 19:00:43 +02:00
Ori Perry
d132bd3e9f
Merge pull request #1928 from nathanzeng/fix-lsp-blink-dependency
Remove blink from nvim-lspconfig dependencies
2026-03-10 17:34:11 +02:00
Ori Perry
f7b74c7b83 Fix typo in the README 2026-03-10 15:18:41 +02:00
Ori Perry
b212fdb33f
Merge pull request #1925 from nathanzeng/which-key-gitsigns
Clarify gitsigns keymap for which-key
2026-03-10 15:17:46 +02:00
Nathan Zeng
d97de4f0ae Remove blink from nvim-lspconfig dependencies 2026-03-07 20:52:02 -08:00
Nathan Zeng
886f2bc076 Clarify gitsigns keymap for which-key 2026-03-06 19:18:40 -08:00
Ori Perry
dabce46993 Add underline for warnings 2026-02-28 13:48:43 +02:00
Ori Perry
7cc245ecaf Format the dap keybinds 2026-02-28 11:32:40 +02:00
Ori Perry
86f1ba26f2 Improve undofile comment 2026-02-28 11:31:21 +02:00
Ori Perry
9a3a2f9678 Update the github actions 2026-02-28 11:29:58 +02:00
Ori Perry
1f4c21f463 Don't extend lsp capabilities because blink does it internally 2026-02-27 23:27:25 +02:00
Ori Perry
4021496050 Add treesitter indentation 2026-02-27 22:56:57 +02:00
Ori Perry
a6dcf6874b Attach treesitter using language name instead of filetype 2026-02-27 21:36:39 +02:00
Ori Perry
966d5e94b1 Add installtion instructions for tree-sitter-cli to the README.md 2026-02-27 21:21:59 +02:00
Ori Perry
a4bbfdc3db
Merge pull request #1896 from giogt/fix-gitignore-lazylock-comment
Clarify comment in .gitignore for lazy-lock.json
2026-02-27 21:09:55 +02:00
Ori Perry
80b1ee1789 Add 'gr' group to which-keys
Adds 'gr' to which-keys documentation, so users can see that LSP actions are grouped after 'gr' key binds.

Co-authored-by: thiago-negri <evohunz@gmail.com>
2026-02-27 21:04:07 +02:00
Ori Perry
09ab9ae265 Fix typo 2026-02-27 20:55:53 +02:00
Ori Perry
afc734f993
Merge pull request #1494 from oriori1703/feature/type-hints
Add type hints to plugin options where possible
2026-02-27 20:51:08 +02:00
orip
177ff61483 Add type hints to plugin options where possible
This could help beginners to get autocompletion, catch mistakes earlier,
and allow them to skip the docs for simple configs.

This is not perfect because a lot of the plugins type all of their keys
as required, even though they have defaults, but this is good enough.
2026-02-27 20:43:08 +02:00
Ori Perry
b9f3965282 Clean up the lua_ls config 2026-02-27 20:12:40 +02:00
Ori Perry
1ba1789318 Re-add mason-lspconfig 2026-02-27 19:56:55 +02:00
giogt
df9436c0e5 Clarify comment in .gitignore for lazy-lock.json
The current comment in .gitignore for lazy-lock.json suggests to
uncomment it yourself, but you actually need to comment it instead.

This change modifies the comment to clarify the recommended approach for
kickstart users.
2026-02-22 23:28:15 +00:00
TJ DeVries
e79572c9e6 fix: continue cleaning up docs and config 2026-01-27 12:09:56 -05:00
TJ DeVries
7e54a4c5c8 fix: trimming down config and updating stylua 2026-01-27 12:00:59 -05:00
Francesc Elies
8c6b78c770
feat(grep-string): works with visual selection too (#1605) 2026-01-27 10:55:15 -05:00
Mithrandir2k18
560d9dc894
docs: Document methods to get the latest neovim (#1626) 2026-01-27 10:49:58 -05:00
TJ DeVries
21d5aabc22 fix: simplify diagnostic config 2026-01-27 10:49:00 -05:00
TJ DeVries
318bd3e65c fix: update neovim min required version 2026-01-27 10:42:05 -05:00
TJ DeVries
e87b7281ed
feat: move Telescope config to be contained by plugin (#1843)
* move telescope related lsp functions inside the telscope plugin declaration block

* explicitly enable telescope plugin, add some comments explainging why

* update comments with suggestions from @oriori1703

Co-authored-by: Ori Perry <48057913+oriori1703@users.noreply.github.com>

* fix formatting in accordance to stylua so that pipeline passes

---------

Co-authored-by: Philipp Szechenyi <philipp.szechenyi@cgm.com>
Co-authored-by: Philipp Szechenyi <45265588+szechp@users.noreply.github.com>
Co-authored-by: Ori Perry <48057913+oriori1703@users.noreply.github.com>
Co-authored-by: philipp <philipp@philipps-MacBook-Pro.local>
2026-01-27 10:33:53 -05:00
Cameron Cummings
88c65592ae
chore: Add .DS_Store to .gitignore (#1637) 2026-01-27 10:10:49 -05:00
Derrek
b15cca8d31
chore: fix help tag (#1671) 2026-01-27 10:09:58 -05:00
rheia475
8f479db123
feat: add Telescope binding for searching through commands (#1675) 2026-01-27 10:08:09 -05:00
TJ DeVries
35822809e6 fix: remove deprecated methods 2026-01-27 10:07:04 -05:00
TJ DeVries
b2af42acb3 fix: call setup on guess indent 2026-01-27 10:01:39 -05:00
Evgeni Chasnovski
c8e189ff78
fix: adjust after 'mini.nvim' transfer to 'nvim-mini' org (#1713) 2026-01-27 09:58:30 -05:00
TJ DeVries
ad246eb5dd fix: remove mason-lspconfig, we do not need it anymore 2026-01-27 09:55:59 -05:00
TJ DeVries
0c17d320bb maybe: seeing if we can get away without lazydev and just doing simpler setup 2026-01-27 09:52:00 -05:00
TJ DeVries
7ea937dbc5 fix: as far as i can tell i updated to the right tree sitter stuff 2026-01-27 09:29:57 -05:00
Yassine Zouggari
3ddda4a8b8
update: remove client_supports_method (#1810)
Neovim 0.11 is now stable
2026-01-27 09:19:51 -05:00
TJ DeVries
5740ddcf9c note: add info about why we ignore lazy-lock 2026-01-27 09:19:08 -05:00
Advin Suryavanshi
2d541c4140
fix: update main module reference for nvim-treesitter (#1832)
configs -> config in init.lua
2026-01-27 09:17:34 -05:00
25 changed files with 447 additions and 437 deletions

View File

@ -9,13 +9,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Code - name: Checkout Code
uses: actions/checkout@v2 uses: actions/checkout@v6
with: with:
ref: ${{ github.event.pull_request.head.sha }} ref: ${{ github.event.pull_request.head.sha }}
- name: Stylua Check - name: Stylua Check
uses: JohnnyMorganz/stylua-action@v3 uses: JohnnyMorganz/stylua-action@v4
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
version: latest version: latest
args: --check . args: --check .

6
.gitignore vendored
View File

@ -4,4 +4,10 @@ test.sh
nvim nvim
spell/ spell/
# 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
# For kickstart, it makes sense to leave it ignored.
lazy-lock.json lazy-lock.json
.DS_Store

View File

@ -4,3 +4,4 @@ indent_type = "Spaces"
indent_width = 2 indent_width = 2
quote_style = "AutoPreferSingle" quote_style = "AutoPreferSingle"
call_parentheses = "None" call_parentheses = "None"
collapse_simple_statement = "Always"

View File

@ -19,7 +19,14 @@ A starting point for Neovim that is:
Kickstart.nvim targets *only* the latest Kickstart.nvim targets *only* the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest ['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim. ['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
If you are experiencing issues, please make sure you have the latest versions. If you are experiencing issues, please make sure you have at least the latest
stable version. Most likely, you want to install neovim via a [package
manager](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package).
To check your neovim version, run `nvim --version` and make sure it is not
below the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) version. If
your chosen install method only gives you an outdated version of neovim, find
alternative [installation methods below](#alternative-neovim-installation-methods).
### Install External Dependencies ### Install External Dependencies
@ -27,6 +34,7 @@ External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`) - Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation), - [ripgrep](https://github.com/BurntSushi/ripgrep#installation),
[fd-find](https://github.com/sharkdp/fd#installation) [fd-find](https://github.com/sharkdp/fd#installation)
- [tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on the platform) - Clipboard tool (xclip/xsel/win32yank or other depending on the platform)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons - 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 - if you have it set `vim.g.have_nerd_font` in `init.lua` to true
@ -159,7 +167,7 @@ examples of adding popularly requested plugins.
Below you can find OS specific install instructions for Neovim and dependencies. Below you can find OS specific install instructions for Neovim and dependencies.
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step. After installing all the dependencies continue with the [Install Kickstart](#install-kickstart) step.
#### Windows Installation #### Windows Installation
@ -190,7 +198,7 @@ winget install --accept-source-agreements chocolatey.chocolatey
2. install all requirements using choco, exit the 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**: 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 choco install -y neovim git ripgrep wget fd unzip gzip mingw make tree-sitter
``` ```
</details> </details>
<details><summary>WSL (Windows Subsystem for Linux)</summary> <details><summary>WSL (Windows Subsystem for Linux)</summary>
@ -200,7 +208,7 @@ wsl --install
wsl wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip neovim
``` ```
</details> </details>
@ -210,14 +218,14 @@ sudo apt install make gcc ripgrep unzip git xclip neovim
``` ```
sudo add-apt-repository ppa:neovim-ppa/unstable -y sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip neovim
``` ```
</details> </details>
<details><summary>Debian Install Steps</summary> <details><summary>Debian Install Steps</summary>
``` ```
sudo apt update sudo apt update
sudo apt install make gcc ripgrep unzip git xclip curl sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip curl
# Now we install nvim # Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
@ -233,14 +241,88 @@ sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/
<details><summary>Fedora Install Steps</summary> <details><summary>Fedora Install Steps</summary>
``` ```
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim sudo dnf install -y gcc make git ripgrep fd-find tree-sitter-cli unzip neovim
``` ```
</details> </details>
<details><summary>Arch Install Steps</summary> <details><summary>Arch Install Steps</summary>
``` ```
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim sudo pacman -S --noconfirm --needed gcc make git ripgrep fd tree-sitter-cli unzip neovim
``` ```
</details> </details>
### Alternative neovim installation methods
For some systems it is not unexpected that the [package manager installation
method](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package)
recommended by neovim is significantly behind. If that is the case for you,
pick one of the following methods that are known to deliver fresh neovim versions very quickly.
They have been picked for their popularity and because they make installing and updating
neovim to the latest versions easy. You can also find more detail about the
available methods being discussed
[here](https://github.com/nvim-lua/kickstart.nvim/issues/1583).
<details><summary>Bob</summary>
[Bob](https://github.com/MordechaiHadad/bob) is a Neovim version manager for
all platforms. Simply install
[rustup](https://rust-lang.github.io/rustup/installation/other.html),
and run the following commands:
```bash
rustup default stable
rustup update stable
cargo install bob-nvim
bob use stable
```
</details>
<details><summary>Homebrew</summary>
[Homebrew](https://brew.sh) is a package manager popular on Mac and Linux.
Simply install using [`brew install`](https://formulae.brew.sh/formula/neovim).
</details>
<details><summary>Flatpak</summary>
Flatpak is a package manager for applications that allows developers to package their applications
just once to make it available on all Linux systems. Simply [install flatpak](https://flatpak.org/setup/)
and setup [flathub](https://flathub.org/setup) to [install neovim](https://flathub.org/apps/io.neovim.nvim).
</details>
<details><summary>asdf and mise-en-place</summary>
[asdf](https://asdf-vm.com/) and [mise](https://mise.jdx.dev/) are tool version managers,
mostly aimed towards project-specific tool versioning. However both support managing tools
globally in the user-space as well:
<details><summary>mise</summary>
[Install mise](https://mise.jdx.dev/getting-started.html), then run:
```bash
mise plugins install neovim
mise use neovim@stable
```
</details>
<details><summary>asdf</summary>
[Install asdf](https://asdf-vm.com/guide/getting-started.html), then run:
```bash
asdf plugin add neovim
asdf install neovim stable
asdf set neovim stable --home
asdf reshim neovim
```
</details>
</details>

View File

@ -2,4 +2,7 @@
-- I promise not to create any merge conflicts in this directory :) -- I promise not to create any merge conflicts in this directory :)
-- --
-- See the kickstart.nvim README for more information -- See the kickstart.nvim README for more information
---@module 'lazy'
---@type LazySpec
return {} return {}

View File

@ -5,7 +5,22 @@
-- See `:help hlsearch` -- See `:help hlsearch`
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>') vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
-- Diagnostic keymaps -- Diagnostic Config & Keymaps
-- See :help vim.diagnostic.Opts
vim.diagnostic.config {
update_in_insert = false,
severity_sort = true,
float = { border = 'rounded', source = 'if_many' },
underline = { severity = { min = vim.diagnostic.severity.WARN } },
-- Can switch between these as you prefer
virtual_text = true, -- Text shows up at the end of the line
virtual_lines = false, -- Text shows up underneath the line, with virtual lines
-- Auto open the float, so you can easily read the errors when jumping with `[d` and `]d`
jump = { float = true },
}
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
@ -46,9 +61,7 @@ vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper win
vim.api.nvim_create_autocmd('TextYankPost', { vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text', desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function() callback = function() vim.hl.on_yank() end,
vim.hl.on_yank()
end,
}) })
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@ -12,7 +12,7 @@ local check_version = function()
return return
end end
if vim.version.ge(vim.version(), '0.10-dev') then if vim.version.ge(vim.version(), '0.11') then
vim.health.ok(string.format("Neovim version is: '%s'", verstr)) vim.health.ok(string.format("Neovim version is: '%s'", verstr))
else else
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))

View File

@ -1,6 +1,8 @@
-- autopairs -- autopairs
-- https://github.com/windwp/nvim-autopairs -- https://github.com/windwp/nvim-autopairs
---@module 'lazy'
---@type LazySpec
return { return {
'windwp/nvim-autopairs', 'windwp/nvim-autopairs',
event = 'InsertEnter', event = 'InsertEnter',

View File

@ -1,3 +1,5 @@
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Autocompletion { -- Autocompletion
'saghen/blink.cmp', 'saghen/blink.cmp',
@ -12,9 +14,7 @@ return {
-- Build Step is needed for regex support in snippets. -- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments. -- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows. -- Remove the below condition to re-enable on windows.
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then return end
return
end
return 'make install_jsregexp' return 'make install_jsregexp'
end)(), end)(),
dependencies = { dependencies = {
@ -30,7 +30,6 @@ return {
}, },
opts = {}, opts = {},
}, },
'folke/lazydev.nvim',
}, },
---@module 'blink.cmp' ---@module 'blink.cmp'
---@type blink.cmp.Config ---@type blink.cmp.Config
@ -76,10 +75,7 @@ return {
}, },
sources = { sources = {
default = { 'lsp', 'path', 'snippets', 'lazydev' }, default = { 'lsp', 'path', 'snippets' },
providers = {
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
},
}, },
snippets = { preset = 'luasnip' }, snippets = { preset = 'luasnip' },

View File

@ -1,3 +1,5 @@
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Autoformat { -- Autoformat
'stevearc/conform.nvim', 'stevearc/conform.nvim',
@ -6,13 +8,13 @@ return {
keys = { keys = {
{ {
'<leader>f', '<leader>f',
function() function() require('conform').format { async = true, lsp_format = 'fallback' } end,
require('conform').format { async = true, lsp_format = 'fallback' }
end,
mode = '', mode = '',
desc = '[F]ormat buffer', desc = '[F]ormat buffer',
}, },
}, },
---@module 'conform'
---@type conform.setupOpts
opts = { opts = {
notify_on_error = false, notify_on_error = false,
format_on_save = function(bufnr) format_on_save = function(bufnr)

View File

@ -6,6 +6,8 @@
-- 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'
---@type LazySpec
return { return {
-- NOTE: Yes, you can install new plugins here! -- NOTE: Yes, you can install new plugins here!
'mfussenegger/nvim-dap', 'mfussenegger/nvim-dap',
@ -26,56 +28,14 @@ return {
}, },
keys = { 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' },
'<F5>', { '<F1>', function() require('dap').step_into() end, desc = 'Debug: Step Into' },
function() { '<F2>', function() require('dap').step_over() end, desc = 'Debug: Step Over' },
require('dap').continue() { '<F3>', function() require('dap').step_out() end, desc = 'Debug: Step Out' },
end, { '<leader>b', function() require('dap').toggle_breakpoint() end, desc = 'Debug: Toggle Breakpoint' },
desc = 'Debug: Start/Continue', { '<leader>B', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, desc = 'Debug: Set Breakpoint' },
},
{
'<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. -- 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.' },
'<F7>',
function()
require('dapui').toggle()
end,
desc = 'Debug: See last session result.',
},
}, },
config = function() config = function()
local dap = require 'dap' local dap = require 'dap'
@ -100,11 +60,13 @@ return {
-- Dap UI setup -- Dap UI setup
-- For more information, see |:help nvim-dap-ui| -- For more information, see |:help nvim-dap-ui|
---@diagnostic disable-next-line: missing-fields
dapui.setup { dapui.setup {
-- Set icons to characters that are more likely to work in every terminal. -- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :) -- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices. -- Don't feel like these are good choices.
icons = { expanded = '', collapsed = '', current_frame = '*' }, icons = { expanded = '', collapsed = '', current_frame = '*' },
---@diagnostic disable-next-line: missing-fields
controls = { controls = {
icons = { icons = {
pause = '', pause = '',

View File

@ -13,16 +13,21 @@
-- options to `gitsigns.nvim`. -- options to `gitsigns.nvim`.
-- --
-- See `:help gitsigns` to understand what the configuration keys do -- See `:help gitsigns` to understand what the configuration keys do
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
'lewis6991/gitsigns.nvim', 'lewis6991/gitsigns.nvim',
---@module 'gitsigns'
---@type Gitsigns.Config
---@diagnostic disable-next-line: missing-fields
opts = { opts = {
signs = { signs = {
add = { text = '+' }, add = { text = '+' }, ---@diagnostic disable-line: missing-fields
change = { text = '~' }, change = { text = '~' }, ---@diagnostic disable-line: missing-fields
delete = { text = '_' }, delete = { text = '_' }, ---@diagnostic disable-line: missing-fields
topdelete = { text = '' }, topdelete = { text = '' }, ---@diagnostic disable-line: missing-fields
changedelete = { text = '~' }, changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields
}, },
on_attach = function(bufnr) on_attach = function(bufnr)
local gitsigns = require 'gitsigns' local gitsigns = require 'gitsigns'
@ -52,12 +57,8 @@ return {
-- Actions -- Actions
-- visual mode -- visual mode
map('v', '<leader>hs', function() map('v', '<leader>hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } map('v', '<leader>hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
end, { desc = 'git [s]tage hunk' })
map('v', '<leader>hr', function()
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'git [r]eset hunk' })
-- normal mode -- normal mode
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) 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>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
@ -67,14 +68,11 @@ return {
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
map('n', '<leader>hD', function() map('n', '<leader>hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
gitsigns.diffthis '@'
end, { desc = 'git [D]iff against last commit' })
-- Toggles -- Toggles
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
end, end,
}, },
},
} }
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@ -1,9 +1,13 @@
-- Add indentation guides even on blank lines
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Add indentation guides even on blank lines
'lukas-reineke/indent-blankline.nvim', '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', main = 'ibl',
---@module 'ibl'
---@type ibl.config
opts = {}, opts = {},
},
} }

View File

@ -1,6 +1,8 @@
return { -- Linting
{ -- Linting ---@module 'lazy'
---@type LazySpec
return {
'mfussenegger/nvim-lint', 'mfussenegger/nvim-lint',
event = { 'BufReadPre', 'BufNewFile' }, event = { 'BufReadPre', 'BufNewFile' },
config = function() config = function()
@ -50,11 +52,8 @@ return {
-- Only run the linter in buffers that you can modify in order to -- Only run the linter in buffers that you can modify in order to
-- avoid superfluous noise, notably within the handy LSP pop-ups that -- avoid superfluous noise, notably within the handy LSP pop-ups that
-- describe the hovered symbol using Markdown. -- describe the hovered symbol using Markdown.
if vim.bo.modifiable then if vim.bo.modifiable then lint.try_lint() end
lint.try_lint()
end
end, end,
}) })
end, end,
},
} }

View File

@ -1,17 +1,7 @@
-- LSP Plugins -- LSP Plugins
---@module 'lazy'
---@type LazySpec
return { return {
{
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
-- used for completion, annotations and signatures of Neovim apis
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {
-- Load luvit types when the `vim.uv` word is found
{ path = '${3rd}/luv/library', words = { 'vim%.uv' } },
},
},
},
{ {
-- Main LSP Configuration -- Main LSP Configuration
'neovim/nvim-lspconfig', 'neovim/nvim-lspconfig',
@ -19,15 +9,19 @@ return {
-- Automatically install LSPs and related tools to stdpath for Neovim -- Automatically install LSPs and related tools to stdpath for Neovim
-- Mason must be loaded before its dependents so we need to set it up here. -- Mason must be loaded before its dependents so we need to set it up here.
-- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})`
{ 'mason-org/mason.nvim', opts = {} }, {
'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', 'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim', 'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP. -- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} }, { 'j-hui/fidget.nvim', opts = {} },
-- Allows extra capabilities provided by blink.cmp
'saghen/blink.cmp',
}, },
config = function() config = function()
-- Brief aside: **What is LSP?** -- Brief aside: **What is LSP?**
@ -80,55 +74,17 @@ return {
-- or a suggestion from your LSP for this to activate. -- or a suggestion from your LSP for this to activate.
map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' }) map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
-- Find references for the word under your cursor.
map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
-- WARN: This is not Goto Definition, this is Goto Declaration. -- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header. -- For example, in C this would take you to the header.
map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols')
-- Fuzzy find all the symbols in your current workspace.
-- Similar to document symbols, except searches over your entire project.
map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
-- Jump to the type of the word under your cursor.
-- Useful when you're not sure what type a variable is and you want to see
-- the definition of its *type*, not where it was *defined*.
map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
-- 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 -- The following two autocommands are used to highlight references of the
-- word under your cursor when your cursor rests there for a little while. -- word under your cursor when your cursor rests there for a little while.
-- See `:help CursorHold` for information about when this is executed -- See `:help CursorHold` for information about when this is executed
-- --
-- When you move your cursor, the highlights will be cleared (the second autocommand). -- 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) local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then if client and client:supports_method('textDocument/documentHighlight', event.buf) then
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
buffer = event.buf, buffer = event.buf,
@ -155,84 +111,56 @@ return {
-- code, if the language server you are using supports them -- code, if the language server you are using supports them
-- --
-- This may be unwanted, since they displace some of your code -- This may be unwanted, since they displace some of your code
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then if client and client:supports_method('textDocument/inlayHint', event.buf) then
map('<leader>th', function() 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')
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
end, '[T]oggle Inlay [H]ints')
end end
end, 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 blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
local capabilities = require('blink.cmp').get_lsp_capabilities()
-- Enable the following language servers -- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. -- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
-- -- See `:help lsp-config` for information about keys and how to configure
-- Add any additional override configuration in the following tables. Available keys are: ---@type table<string, vim.lsp.Config>
-- - cmd (table): Override the default command used to start the server
-- - filetypes (table): Override the default list of associated filetypes for the server
-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
-- - settings (table): Override the default settings passed when initializing the server.
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = { local servers = {
-- clangd = {}, -- clangd = {},
-- gopls = {}, -- gopls = {},
-- pyright = {}, -- pyright = {},
-- rust_analyzer = {}, -- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
-- --
-- Some languages (like typescript) have entire language plugins that can be useful: -- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim -- https://github.com/pmizio/typescript-tools.nvim
-- --
-- But for many setups, the LSP (`ts_ls`) will work just fine -- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {}, -- ts_ls = {},
--
stylua = {}, -- Used to format Lua code
-- Special Lua Config, as recommended by neovim help docs
lua_ls = { lua_ls = {
-- cmd = { ... }, on_init = function(client)
-- filetypes = { ... }, if client.workspace_folders then
-- capabilities = {}, local path = client.workspace_folders[1].name
if path ~= vim.fn.stdpath 'config' and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then return end
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT',
path = { 'lua/?.lua', 'lua/?/init.lua' },
},
workspace = {
checkThirdParty = false,
-- NOTE: this is a lot slower and will cause issues when working on your own configuration.
-- See https://github.com/neovim/nvim-lspconfig/issues/3189
library = vim.tbl_extend('force', vim.api.nvim_get_runtime_file('', true), {
'${3rd}/luv/library',
'${3rd}/busted/library',
}),
},
})
end,
settings = { settings = {
Lua = { Lua = {},
completion = {
callSnippet = 'Replace',
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
},
}, },
}, },
} }
@ -244,32 +172,17 @@ return {
-- :Mason -- :Mason
-- --
-- You can press `g?` for help in this menu. -- 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 {}) local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, { vim.list_extend(ensure_installed, {
'stylua', -- Used to format Lua code -- You can add other tools here that you want Mason to install
}) })
require('mason-tool-installer').setup { ensure_installed = ensure_installed } require('mason-tool-installer').setup { ensure_installed = ensure_installed }
require('mason-lspconfig').setup { for name, server in pairs(servers) do
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer) vim.lsp.config(name, server)
automatic_installation = false, vim.lsp.enable(name)
handlers = { end
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 ts_ls)
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
},
}
end, end,
}, },
} }

View File

@ -1,6 +1,8 @@
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Collection of various small independent plugins/modules { -- Collection of various small independent plugins/modules
'echasnovski/mini.nvim', 'nvim-mini/mini.nvim',
config = function() config = function()
-- Better Around/Inside textobjects -- Better Around/Inside textobjects
-- --
@ -28,12 +30,10 @@ return {
-- default behavior. For example, here we set the section for -- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN -- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field ---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function() statusline.section_location = function() return '%2l:%-2v' end
return '%2l:%-2v'
end
-- ... and there is more! -- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim -- Check out: https://github.com/nvim-mini/mini.nvim
end, end,
}, },
} }

View File

@ -1,6 +1,8 @@
-- 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'
---@type LazySpec
return { return {
'nvim-neo-tree/neo-tree.nvim', 'nvim-neo-tree/neo-tree.nvim',
version = '*', version = '*',
@ -13,6 +15,8 @@ return {
keys = { keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true }, { '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
}, },
---@module 'neo-tree'
---@type neotree.Config
opts = { opts = {
filesystem = { filesystem = {
window = { window = {

View File

@ -5,9 +5,21 @@
-- --
-- Use the `dependencies` key to specify the dependencies of a particular plugin -- Use the `dependencies` key to specify the dependencies of a particular plugin
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Fuzzy Finder (files, lsp, etc) { -- Fuzzy Finder (files, lsp, etc)
'nvim-telescope/telescope.nvim', 'nvim-telescope/telescope.nvim',
-- By default, Telescope is included and acts as your picker for everything.
-- If you would like to switch to a different picker (like snacks, or fzf-lua)
-- you can disable the Telescope plugin by setting enabled to false and enable
-- your replacement picker by requiring it explicitly (e.g. 'custom.plugins.snacks')
-- Note: If you customize your config for yourself,
-- its best to remove the Telescope plugin config entirely
-- instead of just disabling it here, to keep your config clean.
enabled = true,
event = 'VimEnter', event = 'VimEnter',
dependencies = { dependencies = {
'nvim-lua/plenary.nvim', 'nvim-lua/plenary.nvim',
@ -20,9 +32,7 @@ return {
-- `cond` is a condition used to determine whether this plugin should be -- `cond` is a condition used to determine whether this plugin should be
-- installed and loaded. -- installed and loaded.
cond = function() cond = function() return vim.fn.executable 'make' == 1 end,
return vim.fn.executable 'make' == 1
end,
}, },
{ 'nvim-telescope/telescope-ui-select.nvim' }, { 'nvim-telescope/telescope-ui-select.nvim' },
@ -62,9 +72,7 @@ return {
-- }, -- },
-- pickers = {} -- pickers = {}
extensions = { extensions = {
['ui-select'] = { ['ui-select'] = { require('telescope.themes').get_dropdown() },
require('telescope.themes').get_dropdown(),
},
}, },
} }
@ -78,14 +86,49 @@ return {
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) vim.keymap.set({ 'n', 'v' }, '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' }) vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
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' })
-- Slightly advanced example of overriding default behavior and theme -- This runs on LSP attach per buffer (see main LSP attach function in 'neovim/nvim-lspconfig' config for more info,
-- it is better explained there). This allows easily switching between pickers if you prefer using something else!
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('telescope-lsp-attach', { clear = true }),
callback = function(event)
local buf = event.buf
-- Find references for the word under your cursor.
vim.keymap.set('n', 'grr', builtin.lsp_references, { buffer = buf, desc = '[G]oto [R]eferences' })
-- Jump to the implementation of the word under your cursor.
-- Useful when your language has ways of declaring types without an actual implementation.
vim.keymap.set('n', 'gri', builtin.lsp_implementations, { buffer = buf, desc = '[G]oto [I]mplementation' })
-- Jump to the definition of the word under your cursor.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-t>.
vim.keymap.set('n', 'grd', builtin.lsp_definitions, { buffer = buf, desc = '[G]oto [D]efinition' })
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
vim.keymap.set('n', 'gO', builtin.lsp_document_symbols, { buffer = buf, desc = 'Open Document Symbols' })
-- Fuzzy find all the symbols in your current workspace.
-- Similar to document symbols, except searches over your entire project.
vim.keymap.set('n', 'gW', builtin.lsp_dynamic_workspace_symbols, { buffer = buf, desc = 'Open Workspace Symbols' })
-- Jump to the type of the word under your cursor.
-- Useful when you're not sure what type a variable is and you want to see
-- the definition of its *type*, not where it was *defined*.
vim.keymap.set('n', 'grt', builtin.lsp_type_definitions, { buffer = buf, desc = '[G]oto [T]ype Definition' })
end,
})
-- Override default behavior and theme when searching
vim.keymap.set('n', '<leader>/', function() vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to Telescope to change the theme, layout, etc. -- You can pass additional configuration to Telescope to change the theme, layout, etc.
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
@ -96,17 +139,20 @@ return {
-- It's also possible to pass additional configuration options. -- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys -- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set('n', '<leader>s/', function() vim.keymap.set(
'n',
'<leader>s/',
function()
builtin.live_grep { builtin.live_grep {
grep_open_files = true, grep_open_files = true,
prompt_title = 'Live Grep in Open Files', prompt_title = 'Live Grep in Open Files',
} }
end, { desc = '[S]earch [/] in Open Files' }) end,
{ desc = '[S]earch [/] in Open Files' }
)
-- Shortcut for searching your Neovim configuration files -- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<leader>sn', function() vim.keymap.set('n', '<leader>sn', function() builtin.find_files { cwd = vim.fn.stdpath 'config' } end, { desc = '[S]earch [N]eovim files' })
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[S]earch [N]eovim files' })
end, end,
}, },
} }

View File

@ -1,5 +1,15 @@
-- Highlight todo, notes, etc in comments -- Highlight todo, notes, etc in comments
---@module 'lazy'
---@type LazySpec
return { return {
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, {
'folke/todo-comments.nvim',
event = 'VimEnter',
dependencies = { 'nvim-lua/plenary.nvim' },
---@module 'todo-comments'
---@type TodoOptions
---@diagnostic disable-next-line: missing-fields
opts = { signs = false },
},
} }
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@ -1,3 +1,5 @@
---@module 'lazy'
---@type LazySpec
return { return {
{ -- You can easily change to a different colorscheme. { -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then -- Change the name of the colorscheme plugin below, and then

View File

@ -1,28 +1,37 @@
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Highlight, edit, and navigate code { -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter', 'nvim-treesitter/nvim-treesitter',
lazy = false,
build = ':TSUpdate', build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts branch = 'main',
-- [[ Configure Treesitter ]] See `:help nvim-treesitter` -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
opts = { config = function()
ensure_installed = { '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' }
-- Autoinstall languages that are not installed require('nvim-treesitter').install(parsers)
auto_install = true, vim.api.nvim_create_autocmd('FileType', {
highlight = { callback = function(args)
enable = true, local buf, filetype = args.buf, args.match
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
-- If you are experiencing weird indenting issues, add the language to local language = vim.treesitter.language.get_lang(filetype)
-- the list of additional_vim_regex_highlighting and disabled languages for indent. if not language then return end
additional_vim_regex_highlighting = { 'ruby' },
}, -- check if parser exists and load it
indent = { enable = true, disable = { 'ruby' } }, if not vim.treesitter.language.add(language) then return end
}, -- enables syntax highlighting and other treesitter features
-- There are additional nvim-treesitter modules that you can use to interact vim.treesitter.start(buf, language)
-- with nvim-treesitter. You should go explore a few and see what interests you:
-- -- enables treesitter based folds
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` -- for more info on folds see `:help folds`
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context -- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects -- vim.wo.foldmethod = 'expr'
-- enables treesitter based indentation
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end,
})
end,
}, },
} }
-- vim: ts=2 sts=2 sw=2 et -- vim: ts=2 sts=2 sw=2 et

View File

@ -12,56 +12,26 @@
-- Then, because we use the `opts` key (recommended), the configuration runs -- Then, because we use the `opts` key (recommended), the configuration runs
-- after the plugin has been loaded as `require(MODULE).setup(opts)`. -- after the plugin has been loaded as `require(MODULE).setup(opts)`.
---@module 'lazy'
---@type LazySpec
return { return {
{ -- Useful plugin to show you pending keybinds. { -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim', 'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter' event = 'VimEnter',
---@module 'which-key'
---@type wk.Opts
---@diagnostic disable-next-line: missing-fields
opts = { opts = {
-- delay between pressing a key and opening which-key (milliseconds) -- delay between pressing a key and opening which-key (milliseconds)
-- this setting is independent of vim.o.timeoutlen
delay = 0, delay = 0,
icons = { icons = { mappings = vim.g.have_nerd_font },
-- 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 -- Document existing key chains
spec = { spec = {
{ '<leader>s', group = '[S]earch' }, { '<leader>s', group = '[S]earch', mode = { 'n', 'v' } },
{ '<leader>t', group = '[T]oggle' }, { '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } }, { '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } }, -- Enable gitsigns recommended keymaps first
{ 'gr', group = 'LSP Actions', mode = { 'n' } },
}, },
}, },
}, },

View File

@ -4,9 +4,7 @@ local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).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 lazyrepo = 'https://github.com/folke/lazy.nvim.git'
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then if vim.v.shell_error ~= 0 then error('Error cloning lazy.nvim:\n' .. out) end
error('Error cloning lazy.nvim:\n' .. out)
end
end end
---@type vim.Option ---@type vim.Option

View File

@ -10,15 +10,8 @@
-- --
-- NOTE: Here is where you install your plugins. -- NOTE: Here is where you install your plugins.
require('lazy').setup({ require('lazy').setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). -- NOTE: Plugins can be added via a link or github org/name. To run setup automatically, use `opts = {}`
'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically { 'NMAC427/guess-indent.nvim', opts = {} },
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
-- keys can be used to configure plugin behavior/loading/etc.
--
-- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
--
-- modular approach: using `require 'path.name'` will -- modular approach: using `require 'path.name'` will
-- include a plugin definition from file lua/path/name.lua -- include a plugin definition from file lua/path/name.lua
@ -68,7 +61,7 @@ require('lazy').setup({
-- Or use telescope! -- Or use telescope!
-- In normal mode type `<space>sh` then write `lazy.nvim-plugin` -- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
-- you can continue same window with `<space>sr` which resumes last telescope search -- you can continue same window with `<space>sr` which resumes last telescope search
}, { }, { ---@diagnostic disable-line: missing-fields
ui = { ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the -- 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 -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table

View File

@ -19,14 +19,12 @@ vim.o.showmode = false
-- Schedule the setting after `UiEnter` because it can increase startup-time. -- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent. -- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'` -- See `:help 'clipboard'`
vim.schedule(function() vim.schedule(function() vim.o.clipboard = 'unnamedplus' end)
vim.o.clipboard = 'unnamedplus'
end)
-- Enable break indent -- Enable break indent
vim.o.breakindent = true vim.o.breakindent = true
-- Save undo history -- Enable undo/redo changes even after closing and reopening a file
vim.o.undofile = true vim.o.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
@ -53,7 +51,7 @@ vim.o.splitbelow = true
-- Notice listchars is set using `vim.opt` instead of `vim.o`. -- Notice listchars is set using `vim.opt` instead of `vim.o`.
-- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables. -- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables.
-- See `:help lua-options` -- See `:help lua-options`
-- and `:help lua-options-guide` -- and `:help lua-guide-options`
vim.o.list = true vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' } vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' }