aboutsummaryrefslogtreecommitdiff
path: root/dot_config/nvim/doc.md
blob: 5e1456a0aab63e356bd57f71f25b3fac5877bacb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
---
title: Kickstart docs
author: Thomas Wells
---

# Purpose

Although the `kickstart.nvim` documentation will not be as useful outside of its original context, I am moving it here in the interest of maintaing a cleaner `init.lua`.

# Lazy
Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded.
Alternatively, use `config = function() ... end` for full control over the configuration.
Therefore, if you prefer to call `setup` explicitly, use:

```lua
{
   'lewis6991/gitsigns.nvim',
   config = function()
       require('gitsigns').setup({
           -- Your gitsigns configuration here
       })
   end,
}
```

Plugins can specify dependencies.
The dependencies are proper plugin specifications as well - anything you do for a plugin at the top level, you can do for a dependency.
Use the `dependencies` key to specify the dependencies of a particular plugin

# Telescope
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 learn Telescope is: `: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 a corresponding preview of the help.

Two important keymaps to use while in Telescope are:

- Insert mode: `<c-/>`
- Normal mode: `?`

More setup info can be found in `:help telescope.setup()`

# LSP
Brief aside: **What is LSP?**

LSP is an initialism you've probably heard, but might not understand.
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 (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone processes that communicate with some "client" - in this case, Neovim!

LSP provides Neovim with features like:

 - Go to definition
 - Find references
 - Autocompletion
 - Symbol Search
 - and more!

Thus, Language Servers are external tools that must be installed separately from 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`