|
|
|
@ -90,14 +90,29 @@ 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 = false
|
|
|
|
|
-- Set to true if you have a Nerd Font installed
|
|
|
|
|
vim.g.have_nerd_font = true
|
|
|
|
|
|
|
|
|
|
-- disable netrw at the very start of your init.lua
|
|
|
|
|
vim.g.loaded_netrw = 1
|
|
|
|
|
vim.g.loaded_netrwPlugin = 1
|
|
|
|
|
|
|
|
|
|
-- [[ Setting options ]]
|
|
|
|
|
-- See `:help vim.opt`
|
|
|
|
|
-- NOTE: You can change these options as you wish!
|
|
|
|
|
-- For more options, you can see `:help option-list`
|
|
|
|
|
|
|
|
|
|
-- Set options
|
|
|
|
|
vim.opt.expandtab = true -- Use spaces instead of tabs
|
|
|
|
|
vim.opt.tabstop = 4 -- Number of spaces tabs count for
|
|
|
|
|
vim.opt.shiftwidth = 4 -- Number of spaces to use for autoindent
|
|
|
|
|
vim.opt.softtabstop = 4 -- Number of spaces a <Tab> counts for in insert mode
|
|
|
|
|
|
|
|
|
|
-- optionally enable 24-bit colour
|
|
|
|
|
vim.opt.termguicolors = true
|
|
|
|
|
|
|
|
|
|
-- Make backspace work as expected
|
|
|
|
|
vim.opt.backspace = { 'indent', 'eol', 'start' }
|
|
|
|
|
|
|
|
|
|
-- Make line numbers default
|
|
|
|
|
vim.opt.number = true
|
|
|
|
|
-- You can also add relative line numbers, to help with jumping.
|
|
|
|
@ -236,6 +251,45 @@ require('lazy').setup({
|
|
|
|
|
--
|
|
|
|
|
-- This is equivalent to:
|
|
|
|
|
-- require('Comment').setup({})
|
|
|
|
|
-- {
|
|
|
|
|
-- 'github/copilot.vim',
|
|
|
|
|
-- version = '*',
|
|
|
|
|
-- config = function()
|
|
|
|
|
-- require('copilot.vim').setup {}
|
|
|
|
|
-- end,
|
|
|
|
|
-- opts = {},
|
|
|
|
|
-- },
|
|
|
|
|
{
|
|
|
|
|
'zbirenbaum/copilot.lua',
|
|
|
|
|
cmd = 'Copilot',
|
|
|
|
|
event = 'InsertEnter',
|
|
|
|
|
config = function()
|
|
|
|
|
require('copilot').setup {}
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'nvim-tree/nvim-tree.lua',
|
|
|
|
|
version = '*',
|
|
|
|
|
lazy = false,
|
|
|
|
|
dependencies = {},
|
|
|
|
|
config = function()
|
|
|
|
|
require('nvim-tree').setup {}
|
|
|
|
|
end,
|
|
|
|
|
opts = {
|
|
|
|
|
sort = {
|
|
|
|
|
sorter = 'case_sensitive',
|
|
|
|
|
},
|
|
|
|
|
view = {
|
|
|
|
|
width = 30,
|
|
|
|
|
},
|
|
|
|
|
renderer = {
|
|
|
|
|
group_empty = true,
|
|
|
|
|
},
|
|
|
|
|
filters = {
|
|
|
|
|
dotfiles = true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
-- "gc" to comment visual regions/lines
|
|
|
|
|
{ 'numToStr/Comment.nvim', opts = {} },
|
|
|
|
@ -286,13 +340,7 @@ require('lazy').setup({
|
|
|
|
|
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
|
|
|
|
|
['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
|
|
|
|
|
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
|
|
|
|
|
['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' },
|
|
|
|
|
['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' },
|
|
|
|
|
}
|
|
|
|
|
-- visual mode
|
|
|
|
|
require('which-key').register({
|
|
|
|
|
['<leader>h'] = { 'Git [H]unk' },
|
|
|
|
|
}, { mode = 'v' })
|
|
|
|
|
end,
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
@ -412,7 +460,7 @@ require('lazy').setup({
|
|
|
|
|
'neovim/nvim-lspconfig',
|
|
|
|
|
dependencies = {
|
|
|
|
|
-- Automatically install LSPs and related tools to stdpath for Neovim
|
|
|
|
|
{ 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants
|
|
|
|
|
'williamboman/mason.nvim',
|
|
|
|
|
'williamboman/mason-lspconfig.nvim',
|
|
|
|
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
|
|
|
|
|
|
|
|
@ -514,37 +562,16 @@ require('lazy').setup({
|
|
|
|
|
-- 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
|
|
|
|
|
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,
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- The following autocommand is used to enable 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.server_capabilities.inlayHintProvider and vim.lsp.inlay_hint then
|
|
|
|
|
map('<leader>th', function()
|
|
|
|
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
|
|
|
|
|
end, '[T]oggle Inlay [H]ints')
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
vim.api.nvim_create_autocmd('LspDetach', {
|
|
|
|
|
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
|
|
|
|
|
callback = function(event)
|
|
|
|
|
vim.lsp.buf.clear_references()
|
|
|
|
|
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event.buf }
|
|
|
|
|
end,
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@ -565,10 +592,14 @@ 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 = {
|
|
|
|
|
capabilities = {
|
|
|
|
|
offsetEncoding = { 'utf-16' },
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
-- gopls = {},
|
|
|
|
|
-- pyright = {},
|
|
|
|
|
-- rust_analyzer = {},
|
|
|
|
|
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:
|
|
|
|
@ -652,6 +683,8 @@ require('lazy').setup({
|
|
|
|
|
end,
|
|
|
|
|
formatters_by_ft = {
|
|
|
|
|
lua = { 'stylua' },
|
|
|
|
|
c = { 'clang-format' },
|
|
|
|
|
cpp = { 'clang-format' },
|
|
|
|
|
-- Conform can also run multiple formatters sequentially
|
|
|
|
|
-- python = { "isort", "black" },
|
|
|
|
|
--
|
|
|
|
@ -718,9 +751,9 @@ require('lazy').setup({
|
|
|
|
|
-- 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(),
|
|
|
|
|
['<tab>'] = cmp.mapping.select_next_item(),
|
|
|
|
|
-- Select the [p]revious item
|
|
|
|
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
|
|
|
|
['<S-tab>'] = cmp.mapping.select_prev_item(),
|
|
|
|
|
|
|
|
|
|
-- Scroll the documentation window [b]ack / [f]orward
|
|
|
|
|
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
|
|
|
@ -729,13 +762,7 @@ require('lazy').setup({
|
|
|
|
|
-- 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 },
|
|
|
|
|
|
|
|
|
|
-- 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 },
|
|
|
|
|
|
|
|
|
|
-- Manually trigger a completion from nvim-cmp.
|
|
|
|
|
-- Generally you don't need this, because nvim-cmp will display
|
|
|
|
@ -850,8 +877,6 @@ require('lazy').setup({
|
|
|
|
|
config = function(_, opts)
|
|
|
|
|
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
|
|
|
|
|
|
|
|
|
-- Prefer git instead of curl in order to improve connectivity in some environments
|
|
|
|
|
require('nvim-treesitter.install').prefer_git = true
|
|
|
|
|
---@diagnostic disable-next-line: missing-fields
|
|
|
|
|
require('nvim-treesitter.configs').setup(opts)
|
|
|
|
|
|
|
|
|
@ -876,9 +901,6 @@ require('lazy').setup({
|
|
|
|
|
-- require 'kickstart.plugins.debug',
|
|
|
|
|
-- require 'kickstart.plugins.indent_line',
|
|
|
|
|
-- require 'kickstart.plugins.lint',
|
|
|
|
|
-- require 'kickstart.plugins.autopairs',
|
|
|
|
|
-- require 'kickstart.plugins.neo-tree',
|
|
|
|
|
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
|
|
|
|
|
|
|
|
|
|
-- 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.
|
|
|
|
|