.config/nvim/init.vim
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
call plug#begin() Plug 'junegunn/vim-easy-align' Plug 'neovim/nvim-lspconfig' Plug 'nvim-lua/plenary.nvim' " lua funcs i guess Plug 'vhyrro/neorg' Plug 'hrsh7th/nvim-compe' Plug 'ctrlpvim/ctrlp.vim' Plug 'cormacrelf/vim-colors-github' call plug#end() colorscheme github set termguicolors " required for truecolor support " idk, this resolved the following weirdness: " https://github.com/vim/vim/issues/2049 set mmp=2000 lua << EOF require'lspconfig'.gopls.setup{} require'lspconfig'.terraformls.setup{} require('neorg').setup { load = { ["core.defaults"] = {}, ["core.norg.concealer"] = {}, } } EOF " set keybinds for go LSP - warning: disgusting lua << EOF local nvim_lsp = require('lspconfig') -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end --Enable completion triggered by <c-x><c-o> buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- 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.declaration()<CR>', opts) 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', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts) buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts) buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts) buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts) buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts) buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts) buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts) buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts) buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts) end -- Use a loop to conveniently call 'setup' on multiple servers and -- map buffer local keybindings when the language server attaches local servers = { "gopls", "terraformls" } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach } end EOF " tabstops for my langs autocmd FileType sh setlocal et ts=4 sw=4 autocmd FileType go setlocal noet ts=4 sw=4 autocmd FileType python setlocal et ts=4 sw=4 autocmd FileType ruby setlocal et ts=2 sw=2 autocmd FileType terraform setlocal et ts=2 sw=2 autocmd FileType text setlocal tw=80 autocmd FileType html setlocal et ts=2 sw=2 autocmd FileType yaml setlocal et ts=2 sw=2 autocmd FileType mail setlocal noautoindent augroup filetypedetect autocmd BufRead,BufNewFile *mutt-* setfiletype mail augroup filetypedetect autocmd FileType markdown setlocal tw=80 et ts=2 sw=2 " terraform ft detection " vint: -ProhibitAutocmdWithNoGroup " By default, Vim associates .tf files with TinyFugue - tell it not to. silent! autocmd! filetypedetect BufRead,BufNewFile *.tf autocmd BufRead,BufNewFile *.hcl set filetype=hcl autocmd BufRead,BufNewFile .terraformrc,terraform.rc set filetype=hcl autocmd BufRead,BufNewFile *.tf,*.tfvars set filetype=terraform autocmd BufRead,BufNewFile *.tfstate,*.tfstate.backup set filetype=json " bindings let mapleader = "," nmap <leader>m Go<esc>:put =strftime(\"%Y-%m-%d\")<cr>o----------------<cr><esc>