-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit.lua
122 lines (108 loc) · 2.85 KB
/
init.lua
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
-- Auto-install lazy.nvim if not present
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(vim.env.LAZY or lazypath)
-- Minimal Neovim settings (listed alphebetically).
vim.opt.mouse = "a"
vim.opt.number = true
vim.opt.numberwidth = 3
vim.opt.relativenumber = true
vim.opt.shiftwidth = 2
vim.opt.softtabstop = 2
vim.opt.tabstop = 2
vim.opt.termguicolors = true
vim.opt.timeoutlen = 250
vim.g.mapleader = [[ ]]
vim.g.maplocalleader = [[ ]]
-- Lazy.nvim setup.
require('lazy').setup({
{'folke/tokyonight.nvim'},
{'williamboman/mason.nvim'},
{'williamboman/mason-lspconfig.nvim'},
{ -- LSP Support
'VonHeikemen/lsp-zero.nvim',
branch = 'v3.x',
lazy = true,
config = false,
keys = {
{"<leader>i", "<cmd>LspInfo<cr>", "Lsp Info"},
{"<leader>I", "<cmd>LspInstall<cr>", "Lsp Install"},
},
},
{ -- LSP Config
'neovim/nvim-lspconfig',
dependencies = {
{'hrsh7th/cmp-nvim-lsp'},
}
},
{ -- Autocompletion
'hrsh7th/nvim-cmp',
dependencies = {
{'L3MON4D3/LuaSnip'}
},
},
{ -- Use which-key to show lsp_zero default_keymaps
'folke/which-key.nvim',
event = "VeryLazy",
config = function()
require('which-key').setup(
{plugins = {spelling = true}}
)
end,
},
{ -- Vim/NeoVim/Tmux seamless navigation.
"christoomey/vim-tmux-navigator",
event = "VeryLazy",
keys = {
{"<c-h>", "<cmd>TmuxNavigateLeft<cr>", "Navigate Window Left"},
{"<c-j>", "<cmd>TmuxNavigateDown<cr>", "Navigate Window Down"},
{"<c-k>", "<cmd>TmuxNavigateUp<cr>", "Navigate Window Up"},
{"<c-l>", "<cmd>TmuxNavigateRight<cr>", "Navigate Window Right"},
},
},
{ -- File navigation
"nvim-neo-tree/neo-tree.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim"
},
keys = {
{"<c-n>", "<cmd>Neotree toggle<cr>"},
{"<leader>nf", "<cmd>Neotree focus<cr>"},
},
opts = function(_, opts)
opts.filesystem = {
bind_to_cwd = false,
follow_current_file = { enabled = true}
}
opts.window = { position = "right", }
end,
},
})
-- A plesant colorcheme.
vim.cmd.colorscheme("tokyonight-night")
-- Use lsp_zero to manage lsp attachments.
local lsp_zero = require('lsp-zero')
lsp_zero.on_attach(function(_, bufnr)
lsp_zero.default_keymaps({buffer = bufnr})
end)
-- Setup Mason and Mason-Config.
require('mason').setup({})
require('mason-lspconfig').setup({
handlers = {
lsp_zero.default_setup,
lua_ls = function()
local lua_opts = lsp_zero.nvim_lua_ls()
require('lspconfig').lua_ls.setup(lua_opts)
end,
},
})