237 Commits

Author SHA1 Message Date
97c897fc41 treesitter fix 2026-04-10 10:34:31 +02:00
3924ec874d fixed cpp build path 2026-04-10 10:34:19 +02:00
ec12a493bc new and working cmake lsp 2026-04-10 10:33:56 +02:00
bd4b8d0888 new default theme is light mode 2026-03-04 13:12:23 +01:00
c9a2ff9699 added c/c++ debugging plugin that uses codelldb 2026-03-04 13:12:06 +01:00
bdfe1b0c64 only navigate with hjkl 2026-03-04 13:11:19 +01:00
2c43d15c7d unity plugin 2026-03-04 13:10:35 +01:00
f251b39d5a more columns for c/cpp code 2026-02-05 15:28:12 +01:00
4fcf6d7010 Update lua/kickstart/plugins/treesitter.lua 2026-01-29 15:57:15 +01:00
c1e234f1ac new harpoon keybinds 2026-01-08 20:59:02 +01:00
8a7cd58c74 updated clang format options 2025-12-31 16:58:27 +01:00
87cdec67a4 added cpp 2025-12-29 15:07:57 +01:00
43cc16d73a updated conform formatter to work with c 2025-12-29 15:07:35 +01:00
593752ff28 added plugins 2025-11-29 20:03:13 +01:00
bb0d2cf102 turned on neotree and changed theme 2025-11-21 19:58:14 +01:00
6846260101 updated config to disable lsp warning vim.lsp.config 2025-10-24 18:58:32 +02:00
c6f50bd626 added mason ensure installed packages 2025-09-24 09:38:50 +02:00
e84927ba57 working harpoon2 with telescope, keymap todo 2025-09-23 14:59:02 +02:00
6d402a0901 cpp tls update 2025-09-13 12:26:58 +02:00
d9807a35b5 added java tls 2025-09-12 15:02:47 +02:00
killeik
f2309053c7 Use the dot syntax for module paths 2025-06-14 23:07:22 +02:00
Damjan 9000
d2844a4163 Merge 'upstream': Update remaining Mason's old address 2025-06-08 20:45:42 +02:00
Carlos Calla Alarcón
3338d39206 Update remaining Mason's old address (#1530) 2025-05-22 17:10:04 -04:00
jaho5
61e8b304e5 Update windows installation command 2025-05-18 10:06:22 +02:00
Damjan 9000
726fabc5d5 Merge 'upstream': various changes 2025-05-10
- fix: rename vim.highlight.on_yank to vim.hl.on_yank
- README: mention fd-find in requirements
- don't lazy-load neo-tree so netrw hijacking on startup works
- Replace vim.opt with vim.o
- feat: switch vim-sleuth for guess-indent.nvim
- Change to Mason's new address
2025-05-12 12:14:27 +02:00
Omri Sarig
6ba2408cdf fix: rename vim.highlight.on_yank to vim.hl.on_yank (#1482)
The functions of vim.highlight were renamed to vim.hl on commit
18b43c331d8a0ed87d7cbefe2a18543b8e4ad360 of neovim, which was applied
with the release of nvim version 0.11.

Now, the use of vim.highlight is deprecated, and instead, one should
use vim.hl functions.
In practice, vim.highlight is still working, however, asking for help
for vim.highlight.on_yank fails (E149), while asking for help for
vim.hl.on_yank works as expected. So, by updating the used function, a
new user will have easier time looking getting the relevant help.

Co-authored-by: Omri Sarig <omri.sarig@prevas.dk>
2025-05-10 20:29:04 -04:00
Damjan 9000
f5a9f9cdc6 README: mention fd-find in requirements (#1477)
Fixes #1476
2025-05-10 20:23:54 -04:00
pynappo
fb73617653 don't lazy-load neo-tree so netrw hijacking on startup works (#1489) 2025-05-10 20:18:04 -04:00
Ori Perry
c92ea7ca97 Replace vim.opt with vim.o (#1495)
* Replace vim.opt with vim.o

Because it offers a nicer interface and info on hover.
For now leave vim.opt when using the table interface (until vim.o
with tables is implemented)

* Add type hint for vim.opt.rtp

* Add a comment about using vim.opt instead of vim.o
2025-05-10 20:16:03 -04:00
guru245
2b2f0f8364 feat: switch vim-sleuth for guess-indent.nvim (#1512) 2025-05-10 20:11:50 -04:00
guru245
76cb865e4f Change to Mason's new address (#1516) 2025-05-09 19:41:44 -04:00
Damjan 9000
f8727376ad remove cmp.lua which was replaced with blink-cmp.lua 2025-04-15 21:01:39 +02:00
Damjan 9000
b226b49545 Merge 'upstream': feat: switch nvim-cmp for blink.cmp 2025-04-15 18:14:59 +02:00
Liam Dyer
d350db2449 feat: switch nvim-cmp for blink.cmp (#1426) 2025-04-09 17:25:57 -04:00
Damjan 9000
f36056b307 Merge 'upstream': telescope branch, lsp keybindings, spelling
- Remove Telescope `0.1` branch lock
- Change LSP Keybindings to Match the Default `gr` Bindings Introduced in Neovim 0.11
- fix: minor misspellings
2025-04-09 19:14:49 +02:00
Dmytro Onypko
9929044f24 Remove Telescope 0.1 branch lock (#1448) 2025-04-09 11:05:40 -04:00
Theo P.
1a5787bc57 Change LSP Keybindings to Match the Default gr Bindings Introduced in Neovim 0.11 (#1427)
* refactor: change LSP keybindings to the default gr bindings introduced in 0.11

* refactor: modify existing LSP functions to follow  convention
2025-04-09 11:01:57 -04:00
dasvh
8a5a52f647 fix: minor misspellings (#1450)
* fix: minor misspellings

* revert change for `-Bbuild`
2025-04-09 10:39:17 -04:00
Damjan 9000
153ec746bd Merge 'upstream': move windows, conform format_on_save
- feat(keymap): move windows without `<C-w>`

- 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
2025-03-24 22:13:34 +01: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
Damjan 9000
e63bee4f10 Merge 'upstream': fix: use correct github abmonition syntax 2025-03-23 10:52:35 +01:00
Luca Saccarola
2abcb39fae fix: use correct github abmonition syntax (#1414) 2025-03-20 18:16:35 -04:00
Damjan 9000
891bdd8107 Merge 'upstream': feat: add vim.opt.confirm = true 2025-03-13 13:41:46 +01:00
Crypto-Spartan
38f4744e25 feat: add vim.opt.confirm = true (#1384) 2025-03-12 17:24:44 -04:00
Damjan 9000
af749bdb4b Merge 'upstream': various fixes
- Propsed fix for init.lua warnings
- Remove duplicate cmp-path
- fix: regression introduced in db78c0b217
- Fix: fix the cmp-nvim-lsp-signature-help link
- feat: add basic function signature help
- perf: load tokyonight.nvim in the intended way
2025-02-19 21:05:20 +01: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
Damjan 9000
15e019cf58 Merge 'upstream': feat(diagnostic): add diagnostic config 2025-02-17 20:25:23 +01: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
Damjan 9000
07778f6a5f Merge 'upstream': docs, gitsigns, emoji, lsp
- fix: arguments for the `vim.lsp.Client.supports_method` method
- Add a blurb about installing missing emoji on Ubuntu
- fix (#1319): gitsigns deprecated functions
- docs: clarify using opts = {} vs config = function() ... require('plu…
- chore(docs): Update README.md
2025-02-17 10:44:47 +01: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
Damjan 9000
a0a5e061a1 Merge 'upstream': luv, doc updates
- Use luals 3rd library for luv
- chore: fix typo in bug report issue template
- chore: remove redundant comment
2025-01-17 13:44:50 +01: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
Damjan 9000
e71cef802e Merge 'upstream': fix: prevent mason setup from being run twice 2025-01-08 17:21:27 +01: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
Damjan 9000
5f3310d942 Merge 'upstream': 3 misc commits
- Fix which-key delay settings
- chore: add pre-issue requirements
- Fix README.md grammar and  typos
2024-12-30 11:12:17 +01: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 (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
Damjan 9000
5d699a018e Merge 'upstream': make visual mode descriptions consistent with normal mode 2024-12-15 08:12:09 +01:00
Scott Swensen
de44f49101 fix(gitsigns): make visual mode descriptions consistent with normal mode (#1266) 2024-12-15 00:42:39 -05:00
Damjan 9000
7bd1384277 Merge 'upstream': fix typo opt -> opts 2024-12-13 10:29:00 +01: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
Damjan 9000
74b8749c09 Merge 'upstream': updated comments
- Use consistent syntax style for { ... } "pseudocode"
- fleis Tweak outdated comment about lazy's `config` key usage.
2024-12-12 17:35:40 +01: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
Damjan 9000
46093fe19d Merge 'upstream': diagnostic-signs, nvim-dap lazy, which-key typo
- fix: which-key comment typo
- Fix nvim-dap not lazy loading
- feat: Change to prepare for upcoming deprecation of configuring diagnostic-signs using sign_define()
2024-11-20 17:49:23 +01: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
Damjan 9000
ee40a0ed8b Merge 'upstream' 5 changes from 2024-10-30
* Remove two because there are more than two.
* Set breakpoint icons and their highlight colors
* Change diagnostic symbols if vim.g.have_nerd_font is true
* fix: lazy help tag on line 931
* Disable linting autocmd for readonly buffers
2024-10-31 18:56:10 +01: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
Damjan 9000
c0a254f0b8 Merge 'upstream' fix: update lazy uninstall information link 2024-09-24 17:48:44 +02:00
Bastien Traverse
4120893b8a fix: update lazy uninstall information link (#1148) 2024-09-24 11:06:14 -04:00
Damjan 9000
1695a1d3fc Merge 'upstream' feat: update references of tsserver to ts_ls 2024-09-10 22:34:43 +02:00
Nicolás Baquero
7201dc4801 feat: update references of tsserver to ts_ls (#1131) 2024-09-10 16:27:24 -04:00
Damjan 9000
3a01797417 Merge 'upstream' Fix the which-key spec issue caused by recent cleanup 2024-08-26 22:50:44 +02: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
Damjan 9000
7e11e8a26b Merge 'upstream' cleanup: refactor which-key configuration 2024-08-26 22:15:38 +02: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
Damjan 9000
7d83a27e60 Merge 'upstream' conform, readme, neo-tree silent
fix: remove deprecated opt for conform.nvim
Fix: updated the windows installation commands
Enable silent option for default neo-tree plugin keybinding
2024-08-26 14:52:02 +02: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
Damjan 9000
06929799f0 Merge 'upstream' Include visual mode in LSP code action keymap 2024-08-25 11:03:03 +02:00
Bayram Kazik
d452633b35 Include visual mode in LSP code action keymap (#1060) (#1064) 2024-08-24 17:31:43 -04:00
Damjan 9000
e9213469ba Merge 'upstream' refactor treesitter, which-key, uv/loop, update README
*  Ihsan Tonuzi refactor: update treesitter and which-key config
*  Michael L. Check for loop or uv for lazypath
*  Matt Gallagher Add note in README about lazy-lock.json
*  theoboldalex Update README.md
2024-08-23 14:22:13 +02: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
Damjan 9000
198460c421 Merge 'upstream' nvim-lspconfig cmp-nvim-lsp, treesitter prefer_git
Add explicit dependency of nvim-lspconfig on cmp-nvim-lsp
Remove treesitter prefer_git option
2024-07-31 21:09:37 +02:00
jstrot
1860184830 Add explicit dependency of nvim-lspconfig on cmp-nvim-lsp (#1042) 2024-07-29 20:02:37 -04:00
jstrot
bb9f84ca8f Remove treesitter prefer_git option (#1061)
- It's not safe and can corrupt other git repos
- nvim-treesiter maintainers consider `prefer_git` as deprecated and no
  longer needed.

See nvim-treesitter PR for details: https://github.com/nvim-treesitter/nvim-treesitter/pull/6959
2024-07-29 20:01:19 -04:00
Damjan 9000
0a274ab66c Merge 'upstream' refactor lazydev, defer clipboard
performance: defer clipboard because xsel and pbcopy can be slow
refactor: remove lazydev and luvit-meta as lsp dependencies
2024-07-29 20:17:53 +02:00
abeldekat
84cc12354d performance: defer clipboard because xsel and pbcopy can be slow (#1049) 2024-07-28 17:41:34 -04:00
Ihsan Tonuzi
fd66454c4a refactor: remove lazydev and luvit-meta as lsp dependencies (#1047) 2024-07-28 17:39:34 -04:00
Damjan 9000
5a2930fe62 Merge 'upstream' conform warning, redundant hlsearch
Modify conform comments to prevent deprecation warning when used
Remove redundant hlsearch option
2024-07-28 20:50:15 +02:00
Brandon Clark
1cef2325e0 Modify conform comments to prevent deprecation warning when used (#1057) 2024-07-28 12:43:08 -04:00
Arvin Verain
f00b2866de Remove redundant hlsearch option (#1058) 2024-07-28 12:39:54 -04:00
Damjan 9000
e1d6094136 Merge 'upstream' Neovim 0.10 updates and more
Merged commits from upstream:

Update comment about the toggle inlay hints keymap
lint: fix lsp warning in `vim.lsp.inlay_hint.is_enabled`
Update lazydev config to fix "Undefined field `fs_stat`" LSP error
Neovim 0.10 updates
Fix comment about mini.ai example
Make conform.nvim be lazy-loadable again
Update README.md | %userprofile%\appdata\local -> %localappdata%
Make debug lazy loadable
Remove redundant require
Fix neo-tree keymap description
fix: add required parsers from nvim-treesitter
2024-07-22 20:25:55 +02:00
Richard Macklin
56b9114bf2 Update comment about the toggle inlay hints keymap (#1041) 2024-07-22 13:00:35 -04:00
srdtrk
6f3fe35de3 lint: fix lsp warning in vim.lsp.inlay_hint.is_enabled (#947)
* fix: lsp warning

* review suggestion

Co-authored-by: Tom Kuson <mail@tjkuson.me>

---------

Co-authored-by: Tom Kuson <mail@tjkuson.me>
2024-07-21 22:21:21 -04:00
Richard Macklin
620732789b Update lazydev config to fix "Undefined field fs_stat" LSP error (#1040)
7513ec8a7d switched from neodev to
lazydev, but in the process it introduced an LSP error in `init.lua`,
which degrades the desired "first timer" experience of kickstart.nvim.

This commit follows the configuration suggested in
6184ebbbc8 (-installation)
which resolves the LSP error.
2024-07-21 22:08:09 -04:00
Vladislav Grechannik
7513ec8a7d Neovim 0.10 updates (#936)
* Neovim 0.10 updates

Provide the buffer for which to enable inlay hints

Co-authored-by: Matt Mirus <matt@mattmirus.com>

* refactor: replace vim.loop with vim.uv

* Upgrade folke/neodev (sunsetting) to folke/lazydev

* Update checkhealth for 0.10 release

---------

Co-authored-by: Matt Mirus <matt@mattmirus.com>
Co-authored-by: mrr11k <me+github@mrr11k.dev>
Co-authored-by: Seb Tomasini <sebt@qgates.com>
2024-07-21 20:35:07 -04:00
Richard Macklin
07a9f446a3 Fix comment about mini.ai example (#985)
This example wasn't using `'` so this makes more sense
2024-07-21 16:34:51 -04:00
Vladislav Grechannik
b36d84ddf0 Make conform.nvim be lazy-loadable again (#977)
The PR that disabled lazy loading (#818) was to fix plugin not being
loaded before write. This sets up lazy to load conform before write.
2024-07-21 16:34:17 -04:00
Artyom
c405d3fd4f Update README.md | %userprofile%\appdata\local -> %localappdata% (#963)
- Replace `%userprofile%\AppData\Local\nvim\` and `$env:USERPROFILE\AppData\Local\nvim` to `%localappdata%\nvim` and `$env:LOCALAPPDATA\nvim respectfully`
2024-07-21 16:33:26 -04:00
Vladislav Grechannik
4bbca64157 Make debug lazy loadable (#978) 2024-07-21 16:24:57 -04:00
Tom Kuson
1cdf6fb377 Remove redundant require (#959) 2024-07-21 16:22:44 -04:00
Damjan 9000
202910d3fa Fix neo-tree keymap description (#932)
The lazy.nvim keys parameter does not need the `desc` to
be inside a table in the way that vim.keymap.set() does.
With this fix the keymap description will be properly
shown for example in telescope keymap search
2024-07-21 16:22:10 -04:00
TJ DeVries
2df5137e59 fix: add required parsers from nvim-treesitter 2024-07-17 21:37:31 -04:00
Damjan 9000
a6442e8081 Merge 'upstream' fix(lazy): added error handling for bootstrap 2024-07-17 10:52:44 +02:00
Damjan 9000
64597b0077 Merge 'upstream' which-key v3 update 2024-07-17 10:47:54 +02:00
Folke Lemaitre
3e55ff1a83 fix(lazy): added error handling for bootstrap (#1001) 2024-07-16 12:06:47 -04:00
Vladislav Grechannik
f5c919558b which-key v3 update (#1022)
* which-key v3 update

* remove unneeded brackets from which-key registration
2024-07-16 12:05:40 -04:00
Damjan 9000
01a18a193d Merge 'upstream' debug.lua: Automatically set detached state as needed. 2024-05-10 20:28:56 +02:00
Per Malmberg
5aeddfdd5d Automatically set detached state as needed. (#925)
* Automatically set detached state as needed.

* Use vim.fn.has instead.

* Fix int vs bool.
2024-05-10 13:43:22 -04:00
Damjan 9000
bd53ce0190 Merge 'upstream' fix: debug.lua 2024-05-08 17:13:17 +02:00
Smig
b9bd02d55b fix: debug.lua (#918) 2024-05-08 10:55:49 -04:00
Damjan 9000
f28bfcd7ac Merge 'upstream' Add diff to treesitter's ensure_installed languages 2024-05-06 09:13:48 +02:00
Richard Macklin
f86f18f27a Add diff to treesitter's ensure_installed languages (#908) 2024-05-05 21:01:39 -04:00
Damjan 9000
9fb3891d63 Merge 'upstream' Move LspDetach handler near kickstart-lsp-highlight group 2024-05-03 00:11:56 +02:00
Damjan 9000
6f6f38a6b5 Move LspDetach handler near kickstart-lsp-highlight group (#900)
Moved to make sure the kickstart-lsp-highlight group exists when
the LspDetach handler is invoked. The LspDetach handler is used
to clean up any lsp highlights that were enabled by CursorHold
if the LSP is stopped or crashed.
2024-05-02 16:53:07 -04:00
Damjan 9000
60d893f8c5 Merge 'upstream' README: add clipboard tool dependency 2024-04-28 10:02:23 +02:00
Damjan 9000
b7d5cc8f42 README: add clipboard tool dependency (#886)
Fixes: #884
Neovim requires an external tool for proper system clipboard integration.
Some systems install this already by default:
- on Fedora xsel is already installed by default
- on Windows using the choko install the win32yank is alredy installed
This is not installed by default on ubuntu or debian so adding that
to the dependencies list and to the install instructions snippets.
2024-04-27 16:40:27 -04:00
Damjan 9000
77dbcfaaf7 Merge 'upstream' fix: highlight group clear on each attach, README 2024-04-22 23:48:46 +02:00
Adolfo Gante
8df3deb6fe Update README.md (#875)
Line 102. Placed 'also' before the 'includes'.

"That includes also examples of adding popularly requested plugins." ---> "That also includes examples of adding popularly requested plugins."
2024-04-22 17:15:42 -04:00
Francis Belanger
942b26184c fix: highlight group clear on each attach (#874) 2024-04-22 15:53:45 -04:00
Damjan 9000
b939e2f5a1 Merge 'upstream' Fix highlight errors when lsp crash or stop 2024-04-22 18:07:12 +02:00
Francis Belanger
81f270a704 Fix highlight errors when lsp crash or stop (#864)
* Fix highlight errors when lsp crash or stop

It adds a check wether the client is still available before
highlighting.

If the client is not there anymore it returns `true` to unregister the
autocommand

This fix the
`method textDocument/documentHighlight is not supported by any of the servers registered for the current buffer`
errors when doing a LspRestart or the server crashes

* Delete the highlight autocommands in the LspDetatch event

* Only delete autocmds for the current buffer with the group name

* Simplify clearing the autocommands

---------

Co-authored-by: Francis Belanger <francis.belanger@ubisoft.com>
2024-04-22 11:43:10 -04:00
Damjan 9000
74136a1db7 Merge 'upstream' Fix deprecation notice of inlay hints 2024-04-22 14:01:50 +02:00
Vladislav Grechannik
f92fb11d68 Fix deprecation notice of inlay hints (#873) 2024-04-22 07:27:13 -04:00
Damjan 9000
98134335b8 Merge 'upstream' example of the classic complete keymaps
- Add a commented out example of the classic complete keymaps.
- Minor improvements of debian install instructions.
2024-04-20 20:12:35 +02:00
Damjan 9000
2e68a2c253 Add a commented out example of the classic complete keymaps. Fixes #866 (#868) 2024-04-20 13:14:49 -04:00
Damjan 9000
9f5176fc2a Minor improvements of debian install instructions. Fixes #859 (#869) 2024-04-20 13:14:24 -04:00
Damjan 9000
77119da941 Merge 'upstream' Update README.md Debian install instructions 2024-04-20 18:03:57 +02:00
Evan Carroll
931ec5c226 Update README.md (#860)
Attempted fix for #859, provide reasonable Debian install instructions -- comment on GitHub issue with refinement.
2024-04-20 11:55:01 -04:00
Damjan 9000
b8b2e88521 Merge 'upstream' fix: restore Mason config timing for DAP startup 2024-04-20 14:05:56 +02:00
GameFuzzy
b07176aef6 fix: restore Mason config timing for DAP startup (again) (#865) 2024-04-19 13:50:42 -04:00
Damjan 9000
517da30837 Merge 'upstream' Add gitsigns recommended keymaps
Note, the upstream base gitsigns config and optional gitsigns plugin are merged
into the same plugin spec, so the gitsigns keymaps are enabled by default.
2024-04-18 11:11:37 +02:00
Damjan 9000
f5c9fe8e15 Add gitsigns recommended keymaps as an optional plugin (#858) 2024-04-17 21:00:39 -04:00
Damjan 9000
3d2daa7965 Merge 'upstream' Move plugin examples from README to optional plugin files 2024-04-17 23:08:09 +02:00
Damjan 9000
5e258d276f Move plugin examples from README to optional plugin files (#831)
* Move autopairs example from README to an optional plugin

* Move neo-tree example from README to an optional plugin
2024-04-17 15:25:54 -04:00
Damjan 9000
b6b33e61a4 Merge 'upstream' prefer_git, inlay hints
- add prefer_git to treesitter config
- Enable inlay hints for the supporting servers
2024-04-17 20:42:05 +02:00
Vladislav Grechannik
5540527fab Enable inlay hints for the supporting servers (#843) 2024-04-17 14:04:55 -04:00
Chris Patti
6d6b3f38c1 Fix: #847 - add prefer_git to treesitter config (#856) 2024-04-17 14:02:24 -04:00
Damjan 9000
c0ac446e58 Merge 'upstream' Comment about nerd font selection. 2024-04-17 16:33:32 +02:00
Damjan 9000
fabeb86d8b Comment about nerd font selection. Fixes #853 (#854) 2024-04-17 09:59:14 -04:00
Damjan 9000
478a830642 Merge 'upstream' README: Arch Install Steps 2024-04-16 17:36:56 +02:00
rdvm
e2bfa0c66f Arch, btw (#852)
* Arch, btw

* Add unzip

* Add unzip for Fedora and --needed arg for Arch
2024-04-16 11:29:27 -04:00
Damjan 9000
3348ec2bc7 Merge 'upstream' README: add git to ubuntu install 2024-04-09 19:11:04 +02:00
Viet
23773900d9 Update README (#832) 2024-04-08 16:13:22 -04:00
Damjan 9000
e0476d9d69 Merge 'upstream' Add a pull request template 2024-04-04 16:44:50 +02:00
Damjan 9000
c4363e4ad8 Add a pull request template (#825) 2024-04-04 10:31:37 -04:00
Damjan 9000
0ef9368800 Merge 'upstream' README: move backup and paths from external deps to install section 2024-04-01 17:46:48 +02:00
Damjan 9000
19afab1641 README: move backup and paths from external deps to install section (#819) 2024-04-01 10:36:32 -04:00
Damjan 9000
3d468e97cd Merge 'upstream' Don't lazy load conform plugin 2024-04-01 10:02:30 +02:00
Damjan 9000
d605b840a2 Don't lazy load conform plugin (#818) 2024-03-31 20:00:11 -04:00
Damjan 9000
2cd884a025 Merge 'upstream' Add a keymap space-f to format buffer using conform 2024-03-31 21:02:21 +02:00
Damjan 9000
1175f6d25a Add a keymap space-f to format buffer using conform (#817)
This works also for visual range selection
Copied from conform recipe:
https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md
2024-03-31 13:36:43 -04:00
Damjan 9000
dc9eb06f47 Merge 'upstream' Add luadoc in treesitter, instructions to quit lazy
- Add `'luadoc'`, to the `ensure_installed` of `nvim-treesitter/nvim-treesitter`
- Add instructions to quit :lazy
2024-03-28 09:57:19 +01:00
Chris Patti
93fde0556e Add instructions to quit :lazy. Fixes #761 2024-03-27 11:22:28 -04:00
Liu Qisheng
2877a60e00 fix #799 (#800)
Add `'luadoc'`, to the `ensure_installed` of `nvim-treesitter/nvim-treesitter`
2024-03-27 10:16:48 -04:00
Damjan 9000
a037d1d4d6 Merge branch 'upstream' README: wrap long lines 2024-03-22 09:47:09 +01:00
Damjan 9000
dbba54cfd8 README: wrap long lines (#784) 2024-03-21 15:47:55 -04:00
Damjan 9000
2860431c6d Merge 'upstream' Update README.md (reordering of recommended steps) 2024-03-20 20:40:11 +01:00
E
4c02e29e49 Update README.md (#781)
The recommended step of forking the repo coming sequentially after the step instructing users to clone the current repo doesn't make sense.

This commit orders the install instructions in a manner that's more logical.
2024-03-20 14:27:18 -04:00
Damjan 9000
01970d6888 Merge 'upstream' Add nvim-nio as dependency for nvim-dap-ui 2024-03-19 10:50:34 +01:00
José Miguel Sarasola
773e482d4b Add nvim-nio as dependency for nvim-dap-ui (#774)
It's a dependency now
2024-03-18 17:38:14 -04:00
Damjan 9000
d20d58c3e8 Merge 'upstream' Some suggestions and capitalised a few words 2024-03-18 18:50:47 +01:00
Togglebit
65a5ac404b Some suggestions and capitalised a few words (#771) 2024-03-18 13:35:53 -04:00
Damjan 9000
b59b1d2a3d Merge 'upstream' feat: add linter plugin, lua_ls config comment
- feat: add linter plugin
- assign table to filetype in lua_ls config comment
2024-03-18 17:43:59 +01:00
Fredrik Averpil
8e24ca32e3 feat: add linter plugin (#699) 2024-03-18 10:00:48 -04:00
Shane Crowley
b81115d002 assign table to filetype in lua_ls config comment (#770) 2024-03-18 09:57:48 -04:00
Damjan 9000
7829fe9d26 Merge 'upstream' README: additional install recipes for various OS 2024-03-17 21:36:24 +01:00
Damjan 9000
a222805c61 README: additional install recipes for various OS (#767) 2024-03-17 16:22:58 -04:00
Damjan 9000
1ac2734841 Merge 'upstream' conform: disable autoformat on save for specified filetypes 2024-03-15 22:10:28 +01:00
Damjan 9000
ea4335f5af conform: disable autoformat on save for specified filetypes (#694)
Provide a method to disable autoformat on save lsp fallback for
specified filetypes. By default disable for C/C++ as an example,
because it does not have a well standardized coding style.

Based on conform recipe:
https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md
2024-03-15 16:53:33 -04:00
stgpepper
da1271db4d Update README.md (#763)
Added file text to code block for consistency since the other plugin had file also inside code block.
2024-03-15 16:51:41 -04:00
Damjan 9000
55008e9c68 Merge 'upstream' timeoutlen, cmp scroll, friendly snippets, luasnip, ruby
Merged:
- fix: disable ts indenting for Ruby
- doc: add note about advanced luasnip features
- Move friendly snippets to dependencies of LuaSnip (#759)
- Add <C-b>/<C-f> cmp mapping to scroll cmp docs (#750)
- doc: add info about timeoutlen (#691)
2024-03-15 18:18:21 +01:00
TJ DeVries
7892c0c354 fix: disable ts indenting for Ruby
Tree-sitter indenting for ruby is pretty terrible.
But the fix requires a few steps, so showed those
and documented how you could do that for other languages
as well (with the tricky part being the
additional_vim_regex_highlighting trick)
2024-03-15 11:35:07 -04:00
TJ DeVries
5ac4b58f85 doc: add note about advanced luasnip features 2024-03-15 11:18:43 -04:00
Vladislav Grechannik
2f494e59ca Move friendly snippets to dependencies of LuaSnip (#759)
Co-authored-by: TJ DeVries <devries.timothyj@gmail.com>
2024-03-15 10:35:42 -04:00
Rafael Zasas
452e3a73cf Add <C-b>/<C-f> cmp mapping to scroll cmp docs (#750) 2024-03-15 10:12:41 -04:00
TLW
7715b7c2ee doc: add info about timeoutlen (#691)
Add separate comment for `timeoutlen` option
`timeoutlen` option was under unrelated comment with `updatetime` option.
2024-03-15 09:54:49 -04:00
Damjan 9000
f02070e076 Merge 'upstream' Added folke/neodev.nvim for proper nvim api completion and annotation 2024-03-12 23:40:44 +01:00
Chris Patti
b529bc3359 Revert "Use cmp-nvim-lua as nvim-cmp source for neovim Lua API (#696)" (#755)
This reverts commit d8a1dbc4b4.
2024-03-12 18:09:47 -04:00
James Karefylakis
d8a1dbc4b4 Use cmp-nvim-lua as nvim-cmp source for neovim Lua API (#696)
* Use cmp-nvim-lua as nvim-cmp source for neovim Lua API

* Move the dependency to a more suitable place
2024-03-12 17:12:35 -04:00
Damjan 9000
000a5c42b0 Added folke/neodev.nvim for proper nvim api completion and annotation (#754)
Fixes nvim-lua/kickstart.nvim#692

`neodev` configures Lua LSP for your Neovim config, runtime and plugins
used for completion, annotations and signatures of Neovim apis

With neodev, there's no more need to manually set lua_ls workspace
settings which don't seem to work properly anyway as currently nvim
api completion does not work.
2024-03-12 17:06:12 -04:00
Damjan 9000
7da09adddb Merge 'upstream' rename <C-t>, use opts for treesitter
- chore: rename <C-T> to <C-t> for consistency

- feat: allow treesitter defaults to be overwritten from custom directory
2024-03-12 01:13:38 +01:00
Chiller Dragon
cb1f16b8ca chore: rename <C-T> to <C-t> for consistency (#719) 2024-03-11 19:20:39 -04:00
Ryan Baumgardner
c0d6f98924 feat: allow treesitter defaults to be overwritten from custom directory (#732) 2024-03-11 19:18:45 -04:00
Damjan 9000
2238a5d191 Merge 'upstream' README.md: update neo-tree example - remove legacy setting 2024-03-11 23:01:01 +01:00
Damjan 9000
8de494fff2 README.md: update neo-tree example - remove legacy setting (#744) 2024-03-11 17:52:18 -04:00
Damjan 9000
8f85ac8a74 Merge 'upstream' use init for colorscheme 2024-03-10 11:35:10 +01:00
name.tar.xz
3cfccc01be use init for colorscheme (#715) 2024-03-09 15:25:08 -05:00
Damjan 9000
3b0a5bb641 Merge 'upstream/master' Fix typos and whatnot 2024-03-08 22:13:35 +01:00
Nora Ayesha
8fae6798b9 Fix typos and whatnot (#731) 2024-03-08 15:26:32 -05:00
Damjan 9000
56942efafb Merge 'upstream/master' Make the Nerd Font an optional requirement 2024-03-06 19:44:10 +01:00
Damjan 9000
66e2a5a425 Make the Nerd Font an optional requirement (#716) 2024-03-06 11:49:44 -05:00
Damjan 9000
586bdec3b9 Merge 'upstream/master' Add more detail to colorscheme comment 2024-03-06 11:16:26 +01:00
Ryan Winchester
f764b7bacd Add more detail to colorscheme comment (#713) 2024-03-05 20:19:06 -05:00
Damjan 9000
0ff7758cf4 Merge 'upstream/master' cursor location, trailing spaces, new youtube video
Change statusline location to LINE:COLUMN
chore: remove trailing spaces from readme
chore: link new installation youtube video
2024-03-04 17:02:12 +01:00
Chiller Dragon
b83b2b061c chore: link new installation youtube video (#678) 2024-03-04 08:47:45 -05:00
Chiller Dragon
a02abdb161 chore: remove trailing spaces from readme (#679) 2024-03-04 08:47:11 -05:00
Damjan 9000
c3127f1226 Change statusline location to LINE:COLUMN (#689) 2024-03-04 08:16:50 -05:00
Damjan 9000
09093d4d90 Merge 'upstream/master' fix: checkhealth reported nvim version 2024-03-04 10:59:37 +01:00
Damjan 9000
c9122e89e3 fix: checkhealth reported nvim version (#685) 2024-03-03 19:32:06 -05:00
Damjan 9000
de8986f7a8 Merge 'upstream/master' VimEnter, win install, custom/plugins note
fix: add note in readme for custom plugins
README.md: updated windows install instructions (#674)
feat: use VimEnter event instead of VeryLazy (#673)
2024-03-03 09:54:58 +01:00
TJ DeVries
e6710a461a fix: add note in readme for custom plugins 2024-03-03 03:13:16 -05:00
Damjan 9000
23fc4e59dc README.md: updated windows install instructions (#674) 2024-03-02 21:12:55 -05:00
Taulant Aliraj
b99af2d6a3 feat: use VimEnter event instead of VeryLazy (#673) 2024-03-02 21:07:58 -05:00
Damjan 9000
df166c3b8b Merge 'upstream/master' chore: fix typos 2024-03-01 23:11:08 +01:00
Nhan Luu
94a93643ab chore: fix typos (#666) 2024-03-01 16:07:34 -05:00
Damjan 9000
b650582c60 Merge 'upstream/master' fixup style, lua lsp snippets
fixup: updated some style stuff
feat: enable lua lsp snipppets
2024-03-01 11:09:32 +01:00
Anton Kastritskii
38828dcaf7 feat: enable lua lsp snipppets (#660) 2024-02-29 13:14:36 -05:00
TJ DeVries
b58666dd15 fixup: updated some style stuff 2024-02-29 12:08:01 -05:00
Damjan 9000
d6d745da33 Merge 'upstream/master' Change mini.statusline location format to LINE:COLUMN 2024-02-28 19:57:41 +01:00
Damjan 9000
465d6f25c2 Change mini.statusline location format to LINE:COLUMN (#659)
Default mini.statusline location format is:
  'cursor line | total lines │ cursor column | total columns'
2024-02-28 13:23:13 -05:00
Damjan 9000
54df2892e1 Merge 'upstream/master' add plugin specs docstring, remove lazy.nvim configuration (empty) table 2024-02-27 19:13:41 +01:00
brxxlstxrs
18b919c61e add plugin specs docstring, remove lazy.nvim configuration (empty) table (#652) 2024-02-27 13:08:37 -05:00
28 changed files with 1293 additions and 462 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. -->

8
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,8 @@
***************************************************************************
**NOTE**
Please verify that the `base repository` above has the intended destination!
Github by default opens Pull Requests against the parent of a forked repository.
If this is your personal fork and you didn't intend to open a PR for contribution
to the original project then adjust the `base repository` accordingly.
**************************************************************************

237
README.md
View File

@@ -23,29 +23,55 @@ If you are experiencing issues, please make sure you have the latest versions.
### Install External Dependencies
> **NOTE**
> [Backup](#FAQ) your previous configuration (if any exists)
External Requirements:
- 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)
- 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**
> See [Windows Installation](#Windows-Installation) to double check any additional Windows notes
> [!NOTE]
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
> and quick install snippets
### Install Kickstart
> [!NOTE]
> [Backup](#FAQ) your previous configuration (if any exists)
Neovim's configurations are located under the following paths, depending on your OS:
| OS | PATH |
| :- | :--- |
| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
| Windows (cmd)| `%userprofile%\AppData\Local\nvim\` |
| Windows (powershell)| `$env:USERPROFILE\AppData\Local\nvim\` |
| Windows (cmd)| `%localappdata%\nvim\` |
| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` |
Clone kickstart.nvim:
#### Recommended Step
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
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:
> `https://github.com/<your_github_username>/kickstart-modular.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]
> If following the recommended step above (i.e., forking the repo), replace
> `dam9000` with `<your_github_username>` in the commands below
<details><summary> Linux and Mac </summary>
@@ -60,13 +86,13 @@ git clone https://github.com/dam9000/kickstart-modular.nvim.git "${XDG_CONFIG_HO
If you're using `cmd.exe`:
```
git clone https://github.com/dam9000/kickstart-modular.nvim.git %userprofile%\AppData\Local\nvim\
git clone https://github.com/dam9000/kickstart-modular.nvim.git "%localappdata%\nvim"
```
If you're using `powershell.exe`
```
git clone https://github.com/dam9000/kickstart-modular.nvim.git $env:USERPROFILE\AppData\Local\nvim\
git clone https://github.com/dam9000/kickstart-modular.nvim.git "${env:LOCALAPPDATA}\nvim"
```
</details>
@@ -80,101 +106,46 @@ nvim
```
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
current plugin status.
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.
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
See [Effective Neovim: Instant IDE](https://youtu.be/stqUbv-5u2s), covering the
previous version. Note: The install via init.lua is outdated, please follow the
install instructions in this file instead. An updated video is coming soon.
### Recommended Steps
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
(so that you have your own copy that you can modify) and then installing you
can install to your machine using the methods above.
> **NOTE**
> Your fork's url will be something like this: `https://github.com/<your_github_username>/kickstart-modular.nvim.git`
#### Examples of adding popularly requested plugins
<details>
<summary>Adding autopairs</summary>
This will automatically install [windwp/nvim-autopairs](https://github.com/windwp/nvim-autopairs) and enable it on startup. For more information, see documentation for [lazy.nvim](https://github.com/folke/lazy.nvim).
In the file: `lua/custom/plugins/autopairs.lua`, add:
```lua
-- File: lua/custom/plugins/autopairs.lua
return {
"windwp/nvim-autopairs",
-- Optional dependency
dependencies = { 'hrsh7th/nvim-cmp' },
config = function()
require("nvim-autopairs").setup {}
-- If you want to automatically add `(` after selecting a function or method
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
local cmp = require('cmp')
cmp.event:on(
'confirm_done',
cmp_autopairs.on_confirm_done()
)
end,
}
```
</details>
<details>
<summary>Adding a file tree plugin</summary>
This will install the tree plugin and add the command `:Neotree` for you. You can explore the documentation at [neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim) for more information.
In the file: `lua/custom/plugins/filetree.lua`, add:
```lua
-- Unless you are still migrating, remove the deprecated commands from v1.x
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
return {
"nvim-neo-tree/neo-tree.nvim",
version = "*",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
"MunifTanjim/nui.nvim",
},
config = function ()
require('neo-tree').setup {}
end,
}
```
</details>
[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
### FAQ
* What should I do if I already have a pre-existing neovim configuration?
* You should back it up, then delete all files associated with it.
* This includes your existing init.lua and the neovim files in `~/.local` which can be deleted with `rm -rf ~/.local/share/nvim/`
* 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`
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` to maintain multiple configurations. For example you can install the kickstart configuration in `~/.config/nvim-kickstart` and create an alias:
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
to maintain multiple configurations. For example, you can install the kickstart
configuration in `~/.config/nvim-kickstart` and create an alias:
```
alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
```
When you run Neovim using `nvim-kickstart` alias it will use the alternative config directory and the matching local directory `~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim distribution that you would like to try out.
When you run Neovim using `nvim-kickstart` alias it will use the alternative
config directory and the matching local directory
`~/.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 `git clone` as a basis for their own.
configuration that someone can easily use to `git clone` as a basis for their own.
As you progress in learning Neovim and Lua, you might consider splitting `init.lua`
into smaller parts. A fork of kickstart that does this while maintaining the exact
into smaller parts. A fork of kickstart that does this while maintaining the
same functionality is available here:
* [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
* *NOTE: This is the fork that splits the configuration into smaller parts.*
@@ -184,16 +155,92 @@ return {
* [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
* [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
### Windows Installation
### Install Recipes
Installation may require installing build tools, and updating the run command for `telescope-fzf-native`
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.
#### Windows Installation
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
This requires:
- Install CMake, and the Microsoft C++ Build Tools on Windows
- Install CMake and the Microsoft C++ Build Tools on Windows
```lua
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
```
</details>
<details><summary>Windows with gcc/make using chocolatey</summary>
Alternatively, one can install gcc and make which don't require changing the config,
the easiest way is to use choco:
1. install [chocolatey](https://chocolatey.org/install)
either follow the instructions on the page or use winget,
run in cmd as **admin**:
```
winget install --accept-source-agreements chocolatey.chocolatey
```
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
```
</details>
<details><summary>WSL (Windows Subsystem for Linux)</summary>
```
wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
#### Linux Install
<details><summary>Ubuntu Install Steps</summary>
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
<details><summary>Debian Install Steps</summary>
```
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-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-linux-x86_64/bin/nvim /usr/local/bin/
```
</details>
<details><summary>Fedora Install Steps</summary>
```
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
```
</details>
<details><summary>Arch Install Steps</summary>
```
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
```
</details>

View File

@@ -29,7 +29,7 @@ What is Kickstart?
what your configuration is doing, and modify it to suit your needs.
Once you've done that, you can start exploring, configuring and tinkering to
make Neovim your own! That might mean leaving kickstart just the way it is for a while
make Neovim your own! That might mean leaving Kickstart just the way it is for a while
or immediately breaking it into modular pieces. It's up to you!
If you don't know anything about Lua, I recommend taking some time to read through
@@ -51,32 +51,32 @@ Kickstart Guide:
- Tutor
- <enter key>
(If you already know how the Neovim basics, you can skip this step)
(If you already know the Neovim basics, you can skip this step.)
Once you've completed that, you can continue working through **AND READING** the rest
of the kickstart init.lua
of the kickstart init.lua.
Next, run AND READ `:help`.
This will open up a help window with some basic information
about reading, navigating and searching the builtin help documentation.
This should be the first place you go to look when you're stuck or confused
with something. It's one of my favorite neovim features.
with something. It's one of my favorite Neovim features.
MOST IMPORTANTLY, we provide a keymap "<space>sh" to [s]earch the [h]elp documentation,
which is very useful when you're not sure exactly what you're looking for.
which is very useful when you're not exactly sure of what you're looking for.
I have left several `:help X` comments throughout the init.lua
These are hints about where to find more information about the relevant settings,
plugins or neovim features used in kickstart.
plugins or Neovim features used in Kickstart.
NOTE: Look for lines like this
Throughout the file. These are for you, the reader, to help understand what is happening.
Throughout the file. These are for you, the reader, to help you understand what is happening.
Feel free to delete them once you know what you're doing, but they should serve as a guide
for when you are first encountering a few different constructs in your nvim config.
for when you are first encountering a few different constructs in your Neovim config.
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info.
I hope you enjoy your Neovim journey,
- TJ
@@ -90,6 +90,14 @@ P.S. You can delete this when you're done too. It's your config now! :)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = true
vim.o.tabstop = 4 -- A TAB character looks like 4 spaces
vim.o.expandtab = true -- Pressing the TAB key will insert spaces instead of a TAB character
vim.o.softtabstop = 4 -- Number of spaces inserted instead of a TAB character
vim.o.shiftwidth = 4 -- Number of spaces inserted when indenting
-- [[ Setting options ]]
require 'options'

View File

@@ -0,0 +1,64 @@
return {
'ThePrimeagen/harpoon',
branch = 'harpoon2',
dependecies = { 'nvim-lua/plenary.nvim' },
config = function()
local harpoon = require 'harpoon'
harpoon:setup()
vim.keymap.set('n', '<leader>a', function()
harpoon:list():add()
end)
vim.keymap.set('n', '<leader>e', function()
harpoon.ui:toggle_quick_menu(harpoon:list())
end)
vim.keymap.set('n', '<leader>í', function()
harpoon:list():select(1)
end)
vim.keymap.set('n', '<leader>y', function()
harpoon:list():select(2)
end)
vim.keymap.set('n', '<leader>x', function()
harpoon:list():select(3)
end)
vim.keymap.set('n', '<leader>c', function()
harpoon:list():select(4)
end)
-- Toggle previous & next buffers stored within Harpoon list
vim.keymap.set('n', '<C-S-P>', function()
harpoon:list():prev()
end)
vim.keymap.set('n', '<C-S-N>', function()
harpoon:list():next()
end)
-- basic telescope configuration
local conf = require('telescope.config').values
local function toggle_telescope(harpoon_files)
local file_paths = {}
for _, item in ipairs(harpoon_files.items) do
table.insert(file_paths, item.value)
end
require('telescope.pickers')
.new({}, {
prompt_title = 'Harpoon',
finder = require('telescope.finders').new_table {
results = file_paths,
},
previewer = conf.file_previewer {},
sorter = conf.generic_sorter {},
})
:find()
end
vim.keymap.set('n', '<C-e>', function()
toggle_telescope(harpoon:list())
end, { desc = 'Open harpoon window' })
end,
--keymaps
}

View File

@@ -1,5 +0,0 @@
-- You can add your own plugins here or in other files in this directory!
-- I promise not to create any merge conflicts in this directory :)
--
-- See the kickstart.nvim README for more information
return {}

View File

@@ -0,0 +1,126 @@
return {
'walcht/neovim-unity',
ft = { 'cs' },
dependencies = { 'neovim/nvim-lspconfig' }, -- Ensure lspconfig is loaded first
config = function()
local function on_init_sln(client, target)
vim.notify('Initializing: ' .. target, vim.log.levels.INFO)
---@diagnostic disable-next-line: param-type-mismatch
client:notify('solution/open', {
solution = vim.uri_from_fname(target),
})
end
local function on_init_project(client, project_files)
vim.notify('Initializing: projects', vim.log.levels.INFO)
---@diagnostic disable-next-line: param-type-mismatch
client:notify('project/open', {
projects = vim.tbl_map(function(file)
return vim.uri_from_fname(file)
end, project_files),
})
end
local function project_root_dir_discovery(bufnr, cb)
local bufname = vim.api.nvim_buf_get_name(bufnr)
if not bufname:match('^' .. vim.fs.joinpath '/tmp/MetadataAsSource/') then
local root_dir = vim.fs.root(bufnr, function(fname, _)
return fname:match '%.sln$' ~= nil
end)
if not root_dir then
root_dir = vim.fs.root(bufnr, function(fname, _)
return fname:match '%.csproj$' ~= nil
end)
end
if root_dir then
cb(root_dir)
else
vim.notify('[C# LSP] failed to find root directory', vim.log.levels.ERROR)
end
end
end
local roslyn_handlers = {
['workspace/projectInitializationComplete'] = function(_, _, ctx)
vim.notify('Roslyn project initialization complete', vim.log.levels.INFO)
local buffers = vim.lsp.get_buffers_by_client_id(ctx.client_id)
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
for _, buf in ipairs(buffers) do
client:request(vim.lsp.protocol.Methods.textDocument_diagnostic, {
textDocument = vim.lsp.util.make_text_document_params(buf),
}, nil, buf)
end
end,
['workspace/_roslyn_projectNeedsRestore'] = function(_, result, ctx)
local client = assert(vim.lsp.get_client_by_id(ctx.client_id))
client:request('workspace/_roslyn_restore', result, function(err, response)
if err then
vim.notify(err.message, vim.log.levels.ERROR)
end
if response then
vim.notify('Restoring project...', vim.log.levels.INFO)
end
end)
return vim.NIL
end,
['razor/provideDynamicFileInfo'] = function(_, _, _)
-- Razor not supported
end,
}
local roslyn_ls_config = {
name = 'roslyn_ls',
offset_encoding = 'utf-8',
cmd = {
'dotnet',
'$HOME/.config/roslylsp/Microsoft.CodeAnalysis.LanguageServer.dll',
'--logLevel=Error',
'--extensionLogDirectory=' .. vim.fs.dirname(vim.lsp.get_log_path()),
'--stdio',
},
filetypes = { 'cs' },
handlers = roslyn_handlers,
root_dir = project_root_dir_discovery,
on_init = function(client)
local root_dir = client.config.root_dir
for entry, type in vim.fs.dir(root_dir) do
if type == 'file' and vim.endswith(entry, '.sln') then
on_init_sln(client, vim.fs.joinpath(root_dir, entry))
return
end
end
for entry, type in vim.fs.dir(root_dir) do
if type == 'file' and vim.endswith(entry, '.csproj') then
on_init_project(client, { vim.fs.joinpath(root_dir, entry) })
end
end
end,
capabilities = vim.lsp.protocol.make_client_capabilities(),
settings = {
['csharp|background_analysis'] = {
dotnet_analyzer_diagnostics_scope = 'fullSolution',
dotnet_compiler_diagnostics_scope = 'fullSolution',
},
['csharp|inlay_hints'] = {
csharp_enable_inlay_hints_for_types = true,
dotnet_enable_inlay_hints_for_parameters = true,
},
['csharp|completion'] = {
dotnet_show_name_completion_suggestions = true,
},
},
}
-- NOTE: 'vim.lsp.config' does not exist in standard Neovim.
-- We use an autocommand to start the LSP when a C# file opens.
vim.api.nvim_create_autocmd('FileType', {
pattern = 'cs',
callback = function()
vim.lsp.start(roslyn_ls_config)
end,
})
end,
}

View File

@@ -1,14 +1,11 @@
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
-- Set highlight on search, but clear on pressing <Esc> in normal mode
vim.opt.hlsearch = true
-- Clear highlights on search when pressing <Esc> in normal mode
-- See `:help hlsearch`
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
-- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
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
@@ -20,10 +17,10 @@ vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagn
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
-- TIP: Disable arrow keys in normal mode
-- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
-- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
-- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
-- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
-- Keybinds to make split navigation easier.
-- Use CTRL+<hjkl> to switch between windows
@@ -34,17 +31,25 @@ 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 colliding 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
-- See `:help lua-guide-autocommands`
vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { desc = 'Show Error/Diagnostic' })
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.highlight.on_yank()`
-- See `:help vim.hl.on_yank()`
vim.api.nvim_create_autocmd('TextYankPost', {
desc = 'Highlight when yanking (copying) text',
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
callback = function()
vim.highlight.on_yank()
vim.hl.on_yank()
end,
})

View File

@@ -6,15 +6,16 @@
--]]
local check_version = function()
if not vim.version.cmp then
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
local verstr = tostring(vim.version())
if not vim.version.ge then
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
return
end
if vim.version.cmp(vim.version(), { 0, 9, 4 }) >= 0 then
vim.health.ok(string.format("Neovim version is: '%s'", tostring(vim.version())))
if vim.version.ge(vim.version(), '0.10-dev') then
vim.health.ok(string.format("Neovim version is: '%s'", verstr))
else
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
end
end

View File

@@ -0,0 +1,8 @@
-- autopairs
-- https://github.com/windwp/nvim-autopairs
return {
'windwp/nvim-autopairs',
event = 'InsertEnter',
opts = {},
}

View File

@@ -0,0 +1,101 @@
return {
{ -- Autocompletion
'saghen/blink.cmp',
event = 'VimEnter',
version = '1.*',
dependencies = {
-- Snippet Engine
{
'L3MON4D3/LuaSnip',
version = '2.*',
build = (function()
-- Build Step is needed for regex support in snippets.
-- This step is not supported in many windows environments.
-- Remove the below condition to re-enable on windows.
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
return
end
return 'make install_jsregexp'
end)(),
dependencies = {
-- `friendly-snippets` contains a variety of premade snippets.
-- See the README about individual language/framework/plugin snippets:
-- https://github.com/rafamadriz/friendly-snippets
-- {
-- 'rafamadriz/friendly-snippets',
-- config = function()
-- require('luasnip.loaders.from_vscode').lazy_load()
-- end,
-- },
},
opts = {},
},
'folke/lazydev.nvim',
},
--- @module 'blink.cmp'
--- @type blink.cmp.Config
opts = {
keymap = {
-- 'default' (recommended) for mappings similar to built-in completions
-- <c-y> to accept ([y]es) the completion.
-- This will auto-import if your LSP supports it.
-- This will expand snippets if the LSP sent a snippet.
-- 'super-tab' for tab to accept
-- 'enter' for enter to accept
-- 'none' for no mappings
--
-- For an understanding of why the 'default' preset is recommended,
-- you will need to read `:help ins-completion`
--
-- No, but seriously. Please read `:help ins-completion`, it is really good!
--
-- All presets have the following mappings:
-- <tab>/<s-tab>: move to right/left of your snippet expansion
-- <c-space>: Open menu or open docs if already open
-- <c-n>/<c-p> or <up>/<down>: Select next/previous item
-- <c-e>: Hide menu
-- <c-k>: Toggle signature help
--
-- See :h blink-cmp-config-keymap for defining your own keymap
preset = 'default',
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
},
appearance = {
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = 'mono',
},
completion = {
-- By default, you may press `<c-space>` to show the documentation.
-- Optionally, set `auto_show = true` to show the documentation after a delay.
documentation = { auto_show = false, auto_show_delay_ms = 500 },
},
sources = {
default = { 'lsp', 'path', 'snippets', 'lazydev' },
providers = {
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
},
},
snippets = { preset = 'luasnip' },
-- Blink.cmp includes an optional, recommended rust fuzzy matcher,
-- which automatically downloads a prebuilt binary when enabled.
--
-- By default, we use the Lua implementation instead, but you may enable
-- the rust implementation via `'prefer_rust_with_warning'`
--
-- See :h blink-cmp-config-fuzzy for more information
fuzzy = { implementation = 'lua' },
-- Shows a signature help window while you type arguments for a function
signature = { enabled = true },
},
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,95 +0,0 @@
return {
{ -- Autocompletion
'hrsh7th/nvim-cmp',
event = 'InsertEnter',
dependencies = {
-- Snippet Engine & its associated nvim-cmp source
{
'L3MON4D3/LuaSnip',
build = (function()
-- Build Step is needed for regex support in snippets
-- This step is not supported in many windows environments
-- Remove the below condition to re-enable on windows
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
return
end
return 'make install_jsregexp'
end)(),
},
'saadparwaiz1/cmp_luasnip',
-- Adds other completion capabilities.
-- nvim-cmp does not ship with all sources by default. They are split
-- into multiple repos for maintenance purposes.
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-path',
-- If you want to add a bunch of pre-configured snippets,
-- you can use this plugin to help you. It even has snippets
-- for various frameworks/libraries/etc. but you will have to
-- set up the ones that are useful for you.
-- 'rafamadriz/friendly-snippets',
},
config = function()
-- See `:help cmp`
local cmp = require 'cmp'
local luasnip = require 'luasnip'
luasnip.config.setup {}
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
completion = { completeopt = 'menu,menuone,noinsert' },
-- For an understanding of why these mappings were
-- chosen, you will need to read `:help ins-completion`
--
-- No, but seriously. Please read `:help ins-completion`, it is really good!
mapping = cmp.mapping.preset.insert {
-- Select the [n]ext item
['<C-n>'] = cmp.mapping.select_next_item(),
-- Select the [p]revious item
['<C-p>'] = cmp.mapping.select_prev_item(),
-- Accept ([y]es) the completion.
-- This will auto-import if your LSP supports it.
-- This will expand snippets if the LSP sent a snippet.
['<C-y>'] = cmp.mapping.confirm { select = true },
-- Manually trigger a completion from nvim-cmp.
-- Generally you don't need this, because nvim-cmp will display
-- completions whenever it has completion options available.
['<C-Space>'] = cmp.mapping.complete {},
-- Think of <c-l> as moving to the right of your snippet expansion.
-- So if you have a snippet that's like:
-- function $name($args)
-- $body
-- end
--
-- <c-l> will move you to the right of each of the expansion locations.
-- <c-h> is similar, except moving you backwards.
['<C-l>'] = cmp.mapping(function()
if luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
end
end, { 'i', 's' }),
['<C-h>'] = cmp.mapping(function()
if luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
{ name = 'path' },
},
}
end,
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,20 +1,49 @@
return {
{ -- Autoformat
'stevearc/conform.nvim',
event = { 'BufWritePre' },
cmd = { 'ConformInfo' },
keys = {
{
'<leader>f',
function()
require('conform').format { async = true, lsp_format = 'fallback' }
end,
mode = '',
desc = '[F]ormat buffer',
},
},
opts = {
notify_on_error = false,
format_on_save = {
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 = false, cpp = false }
if disable_filetypes[vim.bo[bufnr].filetype] then
return nil
else
return {
timeout_ms = 500,
lsp_fallback = true,
},
lsp_format = 'fallback',
}
end
end,
formatters_by_ft = {
lua = { 'stylua' },
c = { 'clang-format' },
cpp = { 'clang-format' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
-- You can use a sub-list to tell conform to run *until* a formatter
-- is found.
-- javascript = { { "prettierd", "prettier" } },
-- You can use 'stop_after_first' to run the first available formatter from the list
-- javascript = { "prettierd", "prettier", stop_after_first = true },
},
formatters = {
['clang-format'] = {
-- This argument forces 4-space indentation directly in the command
prepend_args = { '--style={IndentWidth: 4, TabWidth: 4, UseTab: Never, AccessModifierOffset: -4, ColumnLimit: 220}' },
},
},
},
},

View File

@@ -14,21 +14,152 @@ return {
-- Creates a beautiful debugger UI
'rcarriga/nvim-dap-ui',
-- Required dependency for nvim-dap-ui
'nvim-neotest/nvim-nio',
-- Installs the debug adapters for you
'williamboman/mason.nvim',
'mason-org/mason.nvim',
'jay-babu/mason-nvim-dap.nvim',
-- Add your own debuggers here
'leoluz/nvim-dap-go',
},
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
{
'<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'
dap.adapters['rust-gdb'] = {
type = 'executable',
command = 'rust-gdb',
args = { '--interpreter=dap', '--eval-command', 'set print pretty on' },
}
dap.configurations.rust = {
{
name = 'Launch',
type = 'rust-gdb',
request = 'launch',
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
args = {}, -- provide arguments if needed
cwd = '${workspaceFolder}',
stopAtBeginningOfMainSubprogram = false,
},
{
name = 'Select and attach to process',
type = 'rust-gdb',
request = 'attach',
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
pid = function()
local name = vim.fn.input 'Executable name (filter): '
return require('dap.utils').pick_process { filter = name }
end,
cwd = '${workspaceFolder}',
},
{
name = 'Attach to gdbserver :1234',
type = 'rust-gdb',
request = 'attach',
target = 'localhost:1234',
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = '${workspaceFolder}',
},
}
dap.configurations.cpp = {
{
name = 'Auto-Debug Project (codelldb)',
type = 'codelldb',
request = 'launch',
program = function()
-- 1. Get the current working directory
local cwd = vim.fn.getcwd()
-- 2. Extract the name of the root folder (e.g., "SakuraVNE")
local project_name = vim.fn.fnamemodify(cwd, ':t')
-- 3. Construct your specific build path
local auto_path = cwd .. '/build/bin/Debug-Linux-x86_64/' .. project_name .. '/' .. project_name
-- 4. Check if it actually exists. If it does, run it instantly!
if vim.fn.filereadable(auto_path) == 1 then
return auto_path
end
-- 5. Fallback: If it couldn't find it, pop open an input box so you can type it manually
return vim.fn.input('Path to executable: ', cwd .. '/build/bin/Debug-Linux-x86_64/', 'file')
end,
cwd = '${workspaceFolder}',
stopOnEntry = false,
args = {}, -- Add command line arguments here if your engine ever needs them
},
}
-- Tell C to use the exact same configuration as C++
dap.configurations.c = dap.configurations.cpp
require('mason-nvim-dap').setup {
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_setup = true,
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
@@ -39,19 +170,10 @@ return {
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
'delve',
'codelldb',
},
}
-- Basic debugging keymaps, feel free to change to your liking!
vim.keymap.set('n', '<F5>', dap.continue, { desc = 'Debug: Start/Continue' })
vim.keymap.set('n', '<F1>', dap.step_into, { desc = 'Debug: Step Into' })
vim.keymap.set('n', '<F2>', dap.step_over, { desc = 'Debug: Step Over' })
vim.keymap.set('n', '<F3>', dap.step_out, { desc = 'Debug: Step Out' })
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' })
vim.keymap.set('n', '<leader>B', function()
dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
end, { desc = 'Debug: Set Breakpoint' })
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup {
@@ -74,14 +196,29 @@ return {
},
}
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
vim.keymap.set('n', '<F7>', dapui.toggle, { desc = 'Debug: See last session result.' })
-- 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
-- Install golang specific config
require('dap-go').setup()
require('dap-go').setup {
delve = {
-- On Windows delve must be run attached or it crashes.
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
detached = vim.fn.has 'win32' == 0,
},
}
end,
}

View File

@@ -1,6 +1,16 @@
-- 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
return {
@@ -14,6 +24,56 @@ return {
topdelete = { text = '' },
changedelete = { text = '~' },
},
on_attach = function(bufnr)
local gitsigns = require 'gitsigns'
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then
vim.cmd.normal { ']c', bang = true }
else
gitsigns.nav_hunk 'next'
end
end, { desc = 'Jump to next git [c]hange' })
map('n', '[c', function()
if vim.wo.diff then
vim.cmd.normal { '[c', bang = true }
else
gitsigns.nav_hunk 'prev'
end
end, { desc = 'Jump to previous git [c]hange' })
-- Actions
-- visual mode
map('v', '<leader>hs', function()
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
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
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.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' })
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
map('n', '<leader>hD', function()
gitsigns.diffthis '@'
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.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
end,
},
},
}

View File

@@ -1,9 +0,0 @@
return {
{ -- Add indentation guides even on blank lines
'lukas-reineke/indent-blankline.nvim',
-- Enable `lukas-reineke/indent-blankline.nvim`
-- See `:help ibl`
main = 'ibl',
opts = {},
},
}

View File

@@ -0,0 +1,60 @@
return {
{ -- Linting
'mfussenegger/nvim-lint',
event = { 'BufReadPre', 'BufNewFile' },
config = function()
local lint = require 'lint'
lint.linters_by_ft = {
markdown = { 'markdownlint' },
}
-- To allow other plugins to add linters to require('lint').linters_by_ft,
-- instead set linters_by_ft like this:
-- lint.linters_by_ft = lint.linters_by_ft or {}
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
--
-- However, note that this will enable a set of default linters,
-- which will cause errors unless these tools are available:
-- {
-- clojure = { "clj-kondo" },
-- dockerfile = { "hadolint" },
-- inko = { "inko" },
-- janet = { "janet" },
-- json = { "jsonlint" },
-- markdown = { "vale" },
-- rst = { "vale" },
-- ruby = { "ruby" },
-- terraform = { "tflint" },
-- text = { "vale" }
-- }
--
-- You can disable the default linters by setting their filetypes to nil:
-- lint.linters_by_ft['clojure'] = nil
-- lint.linters_by_ft['dockerfile'] = nil
-- lint.linters_by_ft['inko'] = nil
-- lint.linters_by_ft['janet'] = nil
-- lint.linters_by_ft['json'] = nil
-- lint.linters_by_ft['markdown'] = nil
-- lint.linters_by_ft['rst'] = nil
-- lint.linters_by_ft['ruby'] = nil
-- lint.linters_by_ft['terraform'] = nil
-- lint.linters_by_ft['text'] = nil
-- Create autocommand which carries out the actual linting
-- on the specified events.
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
group = lint_augroup,
callback = function()
-- Only run the linter in buffers that you can modify in order to
-- avoid superfluous noise, notably within the handy LSP pop-ups that
-- describe the hovered symbol using Markdown.
if vim.bo.modifiable then
lint.try_lint()
end
end,
})
end,
},
}

View File

@@ -1,26 +1,45 @@
-- LSP Plugins
return {
{ -- LSP Configuration & Plugins
{
-- `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
'neovim/nvim-lspconfig',
dependencies = {
-- Automatically install LSPs and related tools to stdpath for neovim
'williamboman/mason.nvim',
'williamboman/mason-lspconfig.nvim',
-- 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.
-- NOTE: `opts = {}` is the same as calling `require('mason').setup({})`
{ 'mason-org/mason.nvim', opts = {} },
'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
'nvim-java/nvim-java',
-- 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 blink.cmp
'saghen/blink.cmp',
},
config = function()
-- Brief Aside: **What is LSP?**
-- Brief aside: **What is LSP?**
--
-- LSP is an acronym you've probably heard, but might not understand what it is.
-- LSP is an initialism you've probably heard, but might not understand what it is.
--
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
-- and language tooling communicate in a standardized fashion.
--
-- In general, you have a "server" which is some tool built to understand a particular
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc). These Language Servers
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
-- processes that communicate with some "client" - in this case, Neovim!
--
@@ -35,7 +54,7 @@ return {
-- Neovim. This is where `mason` and related plugins come into play.
--
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
-- and elegantly composed help section, :help lsp-vs-treesitter
-- and elegantly composed help section, `:help lsp-vs-treesitter`
-- This function gets run when an LSP attaches to a particular buffer.
-- That is to say, every time a new file is opened that is associated with
@@ -44,56 +63,65 @@ return {
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
callback = function(event)
-- NOTE: Remember that lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself
-- many times.
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
-- to define small helper and utility functions so you don't have to repeat yourself.
--
-- 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.
-- This is where a variable was first declared, or where a function is defined, etc.
-- To jump back, press <C-T>.
map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
-- Rename the variable under your cursor.
-- Most Language Servers support renaming across files, etc.
map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
-- 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('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
-- Find references for the word under your cursor.
map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
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('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
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.
-- For example, in C this would take you to the header.
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('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
-- Fuzzy find all the symbols in your current document.
-- Symbols are things like variables, functions, types, etc.
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
-- Fuzzy find all the symbols in your current workspace
-- Similar to document symbols, except searches over your whole project.
map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-- Rename the variable under your cursor
-- Most Language Servers support renaming across files, etc.
map('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
-- 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')
-- Opens a popup that displays documentation about the word under your cursor
-- See `:help K` for why this keymap
map('K', vim.lsp.buf.hover, 'Hover Documentation')
-- 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.
@@ -101,26 +129,75 @@ return {
--
-- 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.server_capabilities.documentHighlightProvider 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,
group = highlight_augroup,
callback = vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
buffer = event.buf,
group = highlight_augroup,
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd('LspDetach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
end,
})
end
-- The following code creates a keymap to toggle inlay hints in your
-- 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(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')
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 nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
-- So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
-- 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
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
@@ -132,36 +209,27 @@ return {
-- - 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 = {
-- clangd = {},
-- gopls = {},
-- pyright = {},
-- rust_analyzer = {},
clangd = {},
gopls = {},
pyright = {},
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:
-- 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 = {
runtime = { version = 'LuaJIT' },
workspace = {
checkThirdParty = false,
-- Tells lua_ls where to find all the Lua files that you have loaded
-- for your neovim configuration.
library = {
'${3rd}/luv/library',
unpack(vim.api.nvim_get_runtime_file('', true)),
},
-- If lua_ls is really slow on your computer, you can try this instead:
-- library = { vim.env.VIMRUNTIME },
completion = {
callSnippet = 'Replace',
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
-- diagnostics = { disable = { 'missing-fields' } },
@@ -170,35 +238,111 @@ return {
},
}
--require('java').setup {
-- Your custom jdtls settings goes here
--}
vim.lsp.config['java'] = {}
--require('lspconfig').jdtls.setup {
-- Your custom nvim-java configuration goes here
--}
vim.lsp.config['jdtls'] = {}
-- The following loop will configure each server with the capabilities we defined above.
-- This will ensure that all servers have the same base configuration, but also
-- allow for server-specific overrides.
for server_name, server_config in pairs(servers) do
server_config.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server_config.capabilities or {})
--require('lspconfig')[server_name].setup(server_config)
vim.lsp.config(server_name, server_config)
end
vim.lsp.config['emmet-language-server'] = {
opts = {
filetypes = { 'css', 'eruby', 'html', 'javascript', 'javascriptreact', 'less', 'sass', 'scss', 'pug', 'typescriptreact' },
-- Read more about this options in the [vscode docs](https://code.visualstudio.com/docs/editor/emmet#_emmet-configuration).
-- **Note:** only the options listed in the table are supported.
init_options = {
---@type table<string, string>
includeLanguages = {},
--- @type string[]
excludeLanguages = {},
--- @type string[]
extensionsPath = {},
--- @type table<string, any> [Emmet Docs](https://docs.emmet.io/customization/preferences/)
preferences = {},
--- @type boolean Defaults to `true`
showAbbreviationSuggestions = true,
--- @type "always" | "never" Defaults to `"always"`
showExpandedAbbreviation = 'always',
--- @type boolean Defaults to `false`
showSuggestionsAsSnippets = false,
--- @type table<string, any> [Emmet Docs](https://docs.emmet.io/customization/syntax-profiles/)
syntaxProfiles = {},
--- @type table<string, string> [Emmet Docs](https://docs.emmet.io/customization/snippets/#variables)
variables = {},
},
},
}
-- 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
-- :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 {})
vim.list_extend(ensure_installed, {
'stylua', -- Used to format lua code
'stylua', -- Used to format Lua code
'arduino-language-server',
'bash-debug-adapter',
'bash-language-server',
'clang-format',
'clangd',
'cpplint',
'cpptools',
'css-lsp',
'css-variables-language-server',
'cssmodules-language-server',
'delve',
'emmet-language-server',
'goimports-reviser',
'neocmakelsp',
'golangci-lint',
'golangci-lint-langserver',
'gopls',
'gradle-language-server',
'html-lsp',
'htmlhint',
'htmx-lsp',
'hyprls',
'json-lsp',
'jsonlint',
'lemminx',
'lua-language-server',
'pyright',
'xmlformatter',
})
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 {}
require('lspconfig')[server_name].setup {
cmd = server.cmd,
settings = server.settings,
filetypes = server.filetypes,
-- 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)
capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}),
}
-- 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,
},
}

View File

@@ -5,8 +5,8 @@ return {
-- Better Around/Inside textobjects
--
-- Examples:
-- - va) - [V]isually select [A]round [)]parenthen
-- - yinq - [Y]ank [I]nside [N]ext [']quote
-- - va) - [V]isually select [A]round [)]paren
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
-- - ci' - [C]hange [I]nside [']quote
require('mini.ai').setup { n_lines = 500 }
@@ -20,7 +20,17 @@ return {
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
require('mini.statusline').setup()
local statusline = require 'mini.statusline'
-- set use_icons to true if you have a Nerd Font
statusline.setup { use_icons = vim.g.have_nerd_font }
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function()
return '%2l:%-2v'
end
-- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim

View File

@@ -0,0 +1,25 @@
-- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim
return {
'nvim-neo-tree/neo-tree.nvim',
version = '*',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
'MunifTanjim/nui.nvim',
},
lazy = false,
keys = {
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
},
opts = {
filesystem = {
window = {
mappings = {
['\\'] = 'close_window',
},
},
},
},
}

View File

@@ -8,11 +8,10 @@
return {
{ -- Fuzzy Finder (files, lsp, etc)
'nvim-telescope/telescope.nvim',
event = 'VeryLazy',
branch = '0.1.x',
event = 'VimEnter',
dependencies = {
'nvim-lua/plenary.nvim',
{ -- If encountering errors, see telescope-fzf-native README for install instructions
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
'nvim-telescope/telescope-fzf-native.nvim',
-- `build` is used to run some command when the plugin is installed/updated.
@@ -27,29 +26,27 @@ return {
},
{ 'nvim-telescope/telescope-ui-select.nvim' },
-- Useful for getting pretty icons, but requires special font.
-- If you already have a Nerd Font, or terminal set up with fallback fonts
-- you can enable this
-- { 'nvim-tree/nvim-web-devicons' }
-- Useful for getting pretty icons, but requires a Nerd Font.
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
},
config = function()
-- Telescope is a fuzzy finder that comes with a lot of different things that
-- it can fuzzy find! It's more than just a "file finder", it can search
-- many different aspects of Neovim, your workspace, LSP, and more!
--
-- The easiest way to use telescope, is to start by doing something like:
-- The easiest way to use Telescope, is to start by doing something like:
-- :Telescope help_tags
--
-- After running this command, a window will open up and you're able to
-- type in the prompt window. You'll see a list of help_tags options and
-- type in the prompt window. You'll see a list of `help_tags` options and
-- a corresponding preview of the help.
--
-- Two important keymaps to use while in telescope are:
-- Two important keymaps to use while in Telescope are:
-- - Insert mode: <c-/>
-- - Normal mode: ?
--
-- This opens a window that shows you all of the keymaps for the current
-- telescope picker. This is really useful to discover what Telescope can
-- Telescope picker. This is really useful to discover what Telescope can
-- do as well as how to actually do it!
-- [[ Configure Telescope ]]
@@ -71,7 +68,7 @@ return {
},
}
-- Enable telescope extensions, if they are installed
-- Enable Telescope extensions if they are installed
pcall(require('telescope').load_extension, 'fzf')
pcall(require('telescope').load_extension, 'ui-select')
@@ -90,14 +87,14 @@ return {
-- Slightly advanced example of overriding default behavior and theme
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change 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 {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
-- 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
vim.keymap.set('n', '<leader>s/', function()
builtin.live_grep {
@@ -106,7 +103,7 @@ return {
}
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()
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[S]earch [N]eovim files' })

View File

@@ -1,5 +1,5 @@
-- Highlight todo, notes, etc in comments
return {
{ 'folke/todo-comments.nvim', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,18 +1,23 @@
return {
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'folke/tokyonight.nvim',
lazy = false, -- make sure we load this during startup if it is your main colorscheme
priority = 1000, -- make sure to load this before all the other start plugins
priority = 1000, -- Make sure to load this before all the other start plugins.
config = function()
-- Load the colorscheme here
vim.cmd.colorscheme 'tokyonight-night'
---@diagnostic disable-next-line: missing-fields
require('tokyonight').setup {
styles = {
comments = { italic = false }, -- Disable italics in comments
},
}
-- You can configure highlights by doing something like
vim.cmd.hi 'Comment gui=none'
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme 'tokyonight-day'
end,
},
}

View File

@@ -1,26 +1,46 @@
return {
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
branch = 'main',
build = ':TSUpdate',
config = function()
main = 'nvim-treesitter.config', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
---@diagnostic disable-next-line: missing-fields
require('nvim-treesitter.configs').setup {
ensure_installed = { 'bash', 'c', 'html', 'lua', 'markdown', 'vim', 'vimdoc' },
opts = {
ensure_installed = {
'bash',
'c',
'diff',
'html',
'lua',
'luadoc',
'markdown',
'markdown_inline',
'query',
'vim',
'vimdoc',
'rust',
'go',
'html',
'javascript',
'python',
},
-- Autoinstall languages that are not installed
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
}
highlight = {
enable = true,
-- 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
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
additional_vim_regex_highlighting = { 'ruby' },
},
indent = { enable = true, disable = { 'ruby' } },
},
-- 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
-- - 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,
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,34 +1,69 @@
-- NOTE: Plugins can also be configured to run lua code when they are loaded.
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
--
-- This is often very useful to both group configuration, as well as handle
-- lazy loading plugins that don't need to be loaded immediately at startup.
--
-- For example, in the following configuration, we use:
-- event = 'VeryLazy'
-- event = 'VimEnter'
--
-- which loads which-key after all the UI elements are loaded. Events can be
-- normal autocommands events (:help autocomd-events).
-- 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)`.
return {
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VeryLazy', -- Sets the loading event to 'VeryLazy'
config = function() -- This is the function that runs, AFTER loading
require('which-key').setup()
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
-- this setting is independent of vim.o.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').register {
['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' },
['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
}
end,
spec = {
{ '<leader>s', group = '[S]earch' },
{ '<leader>t', group = '[T]oggle' },
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
},
},
},
}
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,10 +1,16 @@
-- [[ 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.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'
vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
end ---@diagnostic disable-next-line: undefined-field
vim.opt.rtp:prepend(lazypath)
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
if vim.v.shell_error ~= 0 then
error('Error cloning lazy.nvim:\n' .. out)
end
end
---@type vim.Option
local rtp = vim.opt.rtp
rtp:prepend(lazypath)
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -5,68 +5,90 @@
--
-- You can press `?` in this menu for help. Use `:q` to close the window
--
-- To update plugins, you can run
-- To update plugins you can run
-- :Lazy update
--
-- NOTE: Here is where you install your plugins.
require('lazy').setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically
-- 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 force a plugin to be loaded.
-- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
--
-- This is equivalent to:
-- require('Comment').setup({})
-- "gc" to comment visual regions/lines
{ 'numToStr/Comment.nvim', opts = {} },
-- modular approach: using `require 'path/name'` will
-- modular approach: using `require 'path.name'` will
-- include a plugin definition from file lua/path/name.lua
require 'kickstart/plugins/gitsigns',
require 'kickstart.plugins.gitsigns',
require 'kickstart/plugins/which-key',
require 'kickstart.plugins.which-key',
require 'kickstart/plugins/telescope',
require 'kickstart.plugins.telescope',
require 'kickstart/plugins/lspconfig',
require 'kickstart.plugins.lspconfig',
require 'kickstart/plugins/conform',
require 'kickstart.plugins.conform',
require 'kickstart/plugins/cmp',
require 'kickstart.plugins.blink-cmp',
require 'kickstart/plugins/tokyonight',
require 'kickstart.plugins.tokyonight',
require 'kickstart/plugins/todo-comments',
require 'kickstart.plugins.todo-comments',
require 'kickstart/plugins/mini',
require 'kickstart.plugins.mini',
require 'kickstart/plugins/treesitter',
require 'kickstart.plugins.treesitter',
-- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the
require 'kickstart.plugins.neo-tree',
-- 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
-- put them in the right spots if you want.
-- place them in the correct locations.
-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for kickstart
-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart
--
-- Here are some example plugins that I've included in the kickstart repository.
-- Here are some example plugins that I've included in the Kickstart repository.
-- Uncomment any of the lines below to enable them (you will need to restart nvim).
--
-- require 'kickstart.plugins.debug',
require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
require 'kickstart.plugins.autopairs',
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
--
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
-- For additional information see: :help lazy.nvim-lazy.nvim-structuring-your-plugins
-- { import = 'custom.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
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
icons = vim.g.have_nerd_font and {} or {
cmd = '',
config = '🛠',
event = '📅',
ft = '📂',
init = '',
keys = '🗝',
plugin = '🔌',
runtime = '💻',
require = '🌙',
source = '📄',
start = '🚀',
task = '📌',
lazy = '💤 ',
},
},
})
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -1,59 +1,74 @@
-- [[ Setting options ]]
-- See `:help vim.opt`
-- See `:help vim.o`
-- NOTE: You can change these options as you wish!
-- For more options, you can see `:help option-list`
-- Make line numbers default
vim.opt.number = true
-- You can also add relative line numbers, for help with jumping.
vim.o.number = true
-- You can also add relative line numbers, to help with jumping.
-- Experiment for yourself to see if you like it!
-- vim.opt.relativenumber = true
-- vim.o.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example!
vim.opt.mouse = 'a'
vim.o.mouse = 'a'
-- Don't show the mode, since it's already in status line
vim.opt.showmode = false
-- Don't show the mode, since it's already in the status line
vim.o.showmode = false
-- Sync clipboard between OS and Neovim.
-- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.opt.clipboard = 'unnamedplus'
vim.schedule(function()
vim.o.clipboard = 'unnamedplus'
end)
-- Enable break indent
vim.opt.breakindent = true
vim.o.breakindent = true
-- Save undo history
vim.opt.undofile = true
vim.o.undofile = true
-- Case-insensitive searching UNLESS \C or capital in search
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.o.ignorecase = true
vim.o.smartcase = true
-- Keep signcolumn on by default
vim.opt.signcolumn = 'yes'
vim.o.signcolumn = 'yes'
-- Decrease update time
vim.opt.updatetime = 250
vim.opt.timeoutlen = 300
vim.o.updatetime = 250
-- Decrease mapped sequence wait time
vim.o.timeoutlen = 300
-- Configure how new splits should be opened
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.o.splitright = true
vim.o.splitbelow = true
-- Sets how neovim will display certain whitespace in the editor.
-- See :help 'list'
-- and :help 'listchars'
vim.opt.list = true
-- Sets how neovim will display certain whitespace characters in the editor.
-- See `:help 'list'`
-- and `:help 'listchars'`
--
-- 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.
-- See `:help lua-options`
-- and `:help lua-options-guide`
vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' }
-- Preview substitutions live, as you type!
vim.opt.inccommand = 'split'
vim.o.inccommand = 'split'
-- Show which line your cursor is on
vim.opt.cursorline = true
vim.o.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 10
vim.o.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.o.confirm = true
-- vim: ts=2 sts=2 sw=2 et