mirror of https://github.com/zpl-zak/nvimrc
167 lines
4.6 KiB
Lua
167 lines
4.6 KiB
Lua
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
|||
|
if not vim.loop.fs_stat(lazypath) then
|
|||
|
vim.fn.system {
|
|||
|
'git',
|
|||
|
'clone',
|
|||
|
'--filter=blob:none',
|
|||
|
'https://github.com/folke/lazy.nvim.git',
|
|||
|
'--branch=stable', -- latest stable release
|
|||
|
lazypath,
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
vim.opt.rtp:prepend(lazypath)
|
|||
|
|
|||
|
require('lazy').setup({
|
|||
|
-- Git related plugins
|
|||
|
'tpope/vim-fugitive',
|
|||
|
'tpope/vim-rhubarb',
|
|||
|
|
|||
|
-- Detect tabstop and shiftwidth automatically
|
|||
|
'tpope/vim-sleuth',
|
|||
|
|
|||
|
{ -- LSP Configuration & Plugins
|
|||
|
'neovim/nvim-lspconfig',
|
|||
|
dependencies = {
|
|||
|
{ 'williamboman/mason.nvim', config = true },
|
|||
|
'williamboman/mason-lspconfig.nvim',
|
|||
|
{ 'j-hui/fidget.nvim', opts = { }, tag = "legacy" },
|
|||
|
'folke/neodev.nvim',
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
{ -- Autocompletion
|
|||
|
'hrsh7th/nvim-cmp',
|
|||
|
dependencies = { 'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' },
|
|||
|
},
|
|||
|
|
|||
|
{ 'folke/which-key.nvim', opts = {} },
|
|||
|
{ -- Adds git releated signs to the gutter, as well as utilities for managing changes
|
|||
|
'lewis6991/gitsigns.nvim',
|
|||
|
opts = {
|
|||
|
-- See `:help gitsigns.txt`
|
|||
|
signs = {
|
|||
|
add = { text = '+' },
|
|||
|
change = { text = '~' },
|
|||
|
delete = { text = '_' },
|
|||
|
topdelete = { text = '‾' },
|
|||
|
changedelete = { text = '~' },
|
|||
|
},
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
{ -- Theme inspired by Atom
|
|||
|
'navarasu/onedark.nvim',
|
|||
|
priority = 1000,
|
|||
|
config = function()
|
|||
|
vim.cmd.colorscheme 'onedark'
|
|||
|
end,
|
|||
|
},
|
|||
|
|
|||
|
{ -- Set lualine as statusline
|
|||
|
'nvim-lualine/lualine.nvim',
|
|||
|
-- See `:help lualine.txt`
|
|||
|
opts = {
|
|||
|
options = {
|
|||
|
icons_enabled = true,
|
|||
|
theme = 'onedark',
|
|||
|
component_separators = '|',
|
|||
|
section_separators = '',
|
|||
|
},
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
{ -- Add indentation guides even on blank lines
|
|||
|
'lukas-reineke/indent-blankline.nvim',
|
|||
|
opts = {
|
|||
|
char = '┊',
|
|||
|
space_char_blankline = " ",
|
|||
|
show_current_context = true,
|
|||
|
show_current_context_start = false,
|
|||
|
show_trailing_blankline_indent = false,
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
{
|
|||
|
'simrat39/symbols-outline.nvim',
|
|||
|
highlight_hovered_item = true,
|
|||
|
show_guides = true,
|
|||
|
auto_preview = false,
|
|||
|
position = 'right',
|
|||
|
relative_width = true,
|
|||
|
width = 40,
|
|||
|
auto_close = false,
|
|||
|
show_numbers = true,
|
|||
|
show_relative_numbers = false,
|
|||
|
show_symbol_details = true,
|
|||
|
preview_bg_highlight = 'Pmenu',
|
|||
|
keymaps = {
|
|||
|
close = {"<Esc>", "q"},
|
|||
|
goto_location = "<Cr>",
|
|||
|
focus_location = "o",
|
|||
|
hover_symbol = "<C-space>",
|
|||
|
toggle_preview = "K",
|
|||
|
rename_symbol = "r",
|
|||
|
code_actions = "a",
|
|||
|
},
|
|||
|
lsp_blacklist = {},
|
|||
|
symbol_blacklist = {},
|
|||
|
symbols = {
|
|||
|
File = {icon = "", hl = "TSURI"},
|
|||
|
Module = {icon = "", hl = "TSNamespace"},
|
|||
|
Namespace = {icon = "", hl = "TSNamespace"},
|
|||
|
Package = {icon = "", hl = "TSNamespace"},
|
|||
|
Class = {icon = "𝓒", hl = "TSType"},
|
|||
|
Method = {icon = "ƒ", hl = "TSMethod"},
|
|||
|
Property = {icon = "", hl = "TSMethod"},
|
|||
|
Field = {icon = "", hl = "TSField"},
|
|||
|
Constructor = {icon = "", hl = "TSConstructor"},
|
|||
|
Enum = {icon = "ℰ", hl = "TSType"},
|
|||
|
Interface = {icon = "ﰮ", hl = "TSType"},
|
|||
|
Function = {icon = "λ", hl = "TSFunction"},
|
|||
|
Variable = {icon = "", hl = "TSConstant"},
|
|||
|
Constant = {icon = "", hl = "TSConstant"},
|
|||
|
String = {icon = "𝓐", hl = "TSString"},
|
|||
|
Number = {icon = "#", hl = "TSNumber"},
|
|||
|
Boolean = {icon = "⊨", hl = "TSBoolean"},
|
|||
|
Array = {icon = "", hl = "TSConstant"},
|
|||
|
Object = {icon = "⦿", hl = "TSType"},
|
|||
|
Key = {icon = "🔐", hl = "TSType"},
|
|||
|
Null = {icon = "NULL", hl = "TSType"},
|
|||
|
EnumMember = {icon = "", hl = "TSField"},
|
|||
|
Struct = {icon = "𝓢", hl = "TSType"},
|
|||
|
Event = {icon = "🗲", hl = "TSType"},
|
|||
|
Operator = {icon = "+", hl = "TSOperator"},
|
|||
|
TypeParameter = {icon = "𝙏", hl = "TSParameter"}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
-- "gc" to comment visual regions/lines
|
|||
|
{ 'numToStr/Comment.nvim', opts = {} },
|
|||
|
|
|||
|
-- Fuzzy Finder (files, lsp, etc)
|
|||
|
{ 'nvim-telescope/telescope.nvim', version = '*', dependencies = { 'nvim-lua/plenary.nvim' } },
|
|||
|
|
|||
|
{
|
|||
|
'nvim-telescope/telescope-fzf-native.nvim',
|
|||
|
build = 'make',
|
|||
|
cond = function()
|
|||
|
return vim.fn.executable 'make' == 1
|
|||
|
end,
|
|||
|
},
|
|||
|
|
|||
|
{ -- Highlight, edit, and navigate code
|
|||
|
'nvim-treesitter/nvim-treesitter',
|
|||
|
dependencies = {
|
|||
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
|||
|
},
|
|||
|
build = ":TSUpdate",
|
|||
|
},
|
|||
|
|
|||
|
{
|
|||
|
'dense-analysis/ale'
|
|||
|
},
|
|||
|
|
|||
|
{ import = 'zak.plugins' },
|
|||
|
}, {})
|