|
|
|
@ -1,89 +1,3 @@
|
|
|
|
|
--[[
|
|
|
|
|
|
|
|
|
|
=====================================================================
|
|
|
|
|
==================== READ THIS BEFORE CONTINUING ====================
|
|
|
|
|
=====================================================================
|
|
|
|
|
======== .-----. ========
|
|
|
|
|
======== .----------------------. | === | ========
|
|
|
|
|
======== |.-""""""""""""""""""-.| |-----| ========
|
|
|
|
|
======== || || | === | ========
|
|
|
|
|
======== || KICKSTART.NVIM || |-----| ========
|
|
|
|
|
======== || || | === | ========
|
|
|
|
|
======== || || |-----| ========
|
|
|
|
|
======== ||:Tutor || |:::::| ========
|
|
|
|
|
======== |'-..................-'| |____o| ========
|
|
|
|
|
======== `"")----------------(""` ___________ ========
|
|
|
|
|
======== /::::::::::| |::::::::::\ \ no mouse \ ========
|
|
|
|
|
======== /:::========| |==hjkl==:::\ \ required \ ========
|
|
|
|
|
======== '""""""""""""' '""""""""""""' '""""""""""' ========
|
|
|
|
|
======== ========
|
|
|
|
|
=====================================================================
|
|
|
|
|
=====================================================================
|
|
|
|
|
|
|
|
|
|
What is Kickstart?
|
|
|
|
|
|
|
|
|
|
Kickstart.nvim is *not* a distribution.
|
|
|
|
|
|
|
|
|
|
Kickstart.nvim is a starting point for your own configuration.
|
|
|
|
|
The goal is that you can read every line of code, top-to-bottom, understand
|
|
|
|
|
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
|
|
|
|
|
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
|
|
|
|
|
a guide. One possible example which will only take 10-15 minutes:
|
|
|
|
|
- https://learnxinyminutes.com/docs/lua/
|
|
|
|
|
|
|
|
|
|
After understanding a bit more about Lua, you can use `:help lua-guide` as a
|
|
|
|
|
reference for how Neovim integrates Lua.
|
|
|
|
|
- :help lua-guide
|
|
|
|
|
- (or HTML version): https://neovim.io/doc/user/lua-guide.html
|
|
|
|
|
|
|
|
|
|
Kickstart Guide:
|
|
|
|
|
|
|
|
|
|
TODO: The very first thing you should do is to run the command `:Tutor` in Neovim.
|
|
|
|
|
|
|
|
|
|
If you don't know what this means, type the following:
|
|
|
|
|
- <escape key>
|
|
|
|
|
- :
|
|
|
|
|
- Tutor
|
|
|
|
|
- <enter key>
|
|
|
|
|
|
|
|
|
|
(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.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
MOST IMPORTANTLY, we provide a keymap "<space>sh" to [s]earch the [h]elp documentation,
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
NOTE: Look for lines like this
|
|
|
|
|
|
|
|
|
|
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 Neovim config.
|
|
|
|
|
|
|
|
|
|
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info.
|
|
|
|
|
|
|
|
|
|
I hope you enjoy your Neovim journey,
|
|
|
|
|
- TJ
|
|
|
|
|
|
|
|
|
|
P.S. You can delete this when you're done too. It's your config now! :)
|
|
|
|
|
--]]
|
|
|
|
|
|
|
|
|
|
-- Set <space> as the leader key
|
|
|
|
|
-- See `:help mapleader`
|
|
|
|
|
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
|
|
|
@ -91,7 +5,7 @@ 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 = false
|
|
|
|
|
vim.g.have_nerd_font = true
|
|
|
|
|
|
|
|
|
|
-- [[ Setting options ]]
|
|
|
|
|
-- See `:help vim.opt`
|
|
|
|
@ -102,7 +16,7 @@ vim.g.have_nerd_font = false
|
|
|
|
|
vim.opt.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.opt.relativenumber = true
|
|
|
|
|
|
|
|
|
|
-- Enable mouse mode, can be useful for resizing splits for example!
|
|
|
|
|
vim.opt.mouse = 'a'
|
|
|
|
@ -175,11 +89,8 @@ vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagn
|
|
|
|
|
-- or just use <C-\><C-n> to exit terminal mode
|
|
|
|
|
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>')
|
|
|
|
|
--NVIM Tree
|
|
|
|
|
vim.keymap.set('n', '<leader>e', '<cmd>NvimTreeToggle<CR>')
|
|
|
|
|
|
|
|
|
|
-- Keybinds to make split navigation easier.
|
|
|
|
|
-- Use CTRL+<hjkl> to switch between windows
|
|
|
|
@ -255,6 +166,17 @@ require('lazy').setup({
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'nvim-tree/nvim-tree.lua',
|
|
|
|
|
version = '*',
|
|
|
|
|
lazy = false,
|
|
|
|
|
dependencies = {
|
|
|
|
|
'nvim-tree/nvim-web-devicons',
|
|
|
|
|
},
|
|
|
|
|
config = function()
|
|
|
|
|
require('nvim-tree').setup {}
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
|
|
|
|
|
--
|
|
|
|
@ -274,46 +196,48 @@ require('lazy').setup({
|
|
|
|
|
{ -- Useful plugin to show you pending keybinds.
|
|
|
|
|
'folke/which-key.nvim',
|
|
|
|
|
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
|
|
|
|
|
opts = {
|
|
|
|
|
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 whick-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>',
|
|
|
|
|
config = function() -- This is the function that runs, AFTER loading
|
|
|
|
|
require('which-key').setup {
|
|
|
|
|
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 whick-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
|
|
|
|
|
spec = {
|
|
|
|
|
require('which-key').add {
|
|
|
|
|
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
|
|
|
|
|
{ '<leader>d', group = '[D]ocument' },
|
|
|
|
|
{ '<leader>r', group = '[R]ename' },
|
|
|
|
@ -321,8 +245,8 @@ require('lazy').setup({
|
|
|
|
|
{ '<leader>w', group = '[W]orkspace' },
|
|
|
|
|
{ '<leader>t', group = '[T]oggle' },
|
|
|
|
|
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
-- NOTE: Plugins can specify dependencies.
|
|
|
|
@ -605,9 +529,9 @@ require('lazy').setup({
|
|
|
|
|
-- - 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 = {},
|
|
|
|
|
clangd = {},
|
|
|
|
|
-- gopls = {},
|
|
|
|
|
-- pyright = {},
|
|
|
|
|
pyright = {},
|
|
|
|
|
-- rust_analyzer = {},
|
|
|
|
|
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
|
|
|
|
|
--
|
|
|
|
@ -647,6 +571,7 @@ require('lazy').setup({
|
|
|
|
|
local ensure_installed = vim.tbl_keys(servers or {})
|
|
|
|
|
vim.list_extend(ensure_installed, {
|
|
|
|
|
'stylua', -- Used to format Lua code
|
|
|
|
|
'clang-format',
|
|
|
|
|
})
|
|
|
|
|
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
|
|
|
|
|
|
|
|
@ -673,7 +598,7 @@ require('lazy').setup({
|
|
|
|
|
{
|
|
|
|
|
'<leader>f',
|
|
|
|
|
function()
|
|
|
|
|
require('conform').format { async = true, lsp_format = 'fallback' }
|
|
|
|
|
require('conform').format { async = true, lsp_fallback = true }
|
|
|
|
|
end,
|
|
|
|
|
mode = '',
|
|
|
|
|
desc = '[F]ormat buffer',
|
|
|
|
@ -686,15 +611,9 @@ require('lazy').setup({
|
|
|
|
|
-- have a well standardized coding style. You can add additional
|
|
|
|
|
-- languages here or re-enable it for the disabled ones.
|
|
|
|
|
local disable_filetypes = { c = true, cpp = true }
|
|
|
|
|
local lsp_format_opt
|
|
|
|
|
if disable_filetypes[vim.bo[bufnr].filetype] then
|
|
|
|
|
lsp_format_opt = 'never'
|
|
|
|
|
else
|
|
|
|
|
lsp_format_opt = 'fallback'
|
|
|
|
|
end
|
|
|
|
|
return {
|
|
|
|
|
timeout_ms = 500,
|
|
|
|
|
lsp_format = lsp_format_opt,
|
|
|
|
|
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
|
|
|
|
|
}
|
|
|
|
|
end,
|
|
|
|
|
formatters_by_ft = {
|
|
|
|
@ -779,9 +698,9 @@ require('lazy').setup({
|
|
|
|
|
|
|
|
|
|
-- If you prefer more traditional completion keymaps,
|
|
|
|
|
-- you can uncomment the following lines
|
|
|
|
|
--['<CR>'] = cmp.mapping.confirm { select = true },
|
|
|
|
|
--['<Tab>'] = cmp.mapping.select_next_item(),
|
|
|
|
|
--['<S-Tab>'] = cmp.mapping.select_prev_item(),
|
|
|
|
|
['<CR>'] = cmp.mapping.confirm { select = true },
|
|
|
|
|
['<Tab>'] = cmp.mapping.select_next_item(),
|
|
|
|
|
['<S-Tab>'] = cmp.mapping.select_prev_item(),
|
|
|
|
|
|
|
|
|
|
-- Manually trigger a completion from nvim-cmp.
|
|
|
|
|
-- Generally you don't need this, because nvim-cmp will display
|
|
|
|
|