-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.lua
More file actions
101 lines (89 loc) · 2.92 KB
/
init.lua
File metadata and controls
101 lines (89 loc) · 2.92 KB
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
-- init {{
vim.o.encoding = 'utf8'
local fn = vim.fn
local install_path = fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path)
end
vim.cmd([[
if !v:vim_did_enter && has('reltime')
let g:startuptime = reltime()
augroup vimrc-startuptime
autocmd! VimEnter * let g:startuptime = reltime(g:startuptime) | redraw | echomsg 'startuptime: ' . reltimestr(g:startuptime)
augroup END
endif
]])
vim.cmd([[
augroup vimrc
autocmd!
augroup END
]])
-- }}
require('plugins')
require('options')
require('keymaps')
require('gitsigns').setup {
keymaps = {noremap = false},
signs = {
add = {hl = "GitGutterAdd", text = "+"},
change = {hl = "GitGutterChange", text = "~"},
delete = {hl = "GitGutterDelete", text = "_"},
topdelete = {hl = "GitGutterDelete", text = "‾"},
changedelete = {hl = "GitGutterChange", text = "~"}
}
}
require('nvim-treesitter.configs').setup {
ensure_installed = "maintained",
highlight = {enable = true},
}
-- nvim-cmp
local cmp = require('cmp')
cmp.setup({
snippet = {
expand = function(args)
fn["vsnip#anonymous"](args.body)
end,
},
mapping = {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<TAB>'] = cmp.mapping.select_next_item(),
['<S-TAB>'] = cmp.mapping.select_prev_item(),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
})
},
sources = {
{name = "nvim_lsp"},
{name = 'nvim_lua'},
{name = 'buffer'},
{name = 'path'},
{name = 'vsnip'},
{name = 'emoji'},
{name = 'calc'},
}
})
-- LSP
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
-- Mappings.
local opts = {noremap=true, silent=true}
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', 'ga', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gf', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
buf_set_keymap('i', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
end
-- available server is
-- https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md
local nvim_lsp = require('lspconfig')
local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
local lsp_opts = {capabilities = capabilities, on_attach = on_attach, flags = {debounce_text_changes = 150}}
nvim_lsp.gopls.setup(lsp_opts)
nvim_lsp.terraformls.setup(lsp_opts)
nvim_lsp.yamlls.setup(lsp_opts)
nvim_lsp.vimls.setup(lsp_opts)