my dotz
1local use = require('packer').use
2require('packer').startup(function()
3 use 'wbthomason/packer.nvim' -- Package manager
4 use 'neovim/nvim-lspconfig' -- Configurations for Nvim LSP
5 use 'sainnhe/everforest' -- Colorscheme
6
7 -- Very powerful picker
8 use {
9 'nvim-telescope/telescope.nvim', tag = '0.1.1',
10 requires = {{
11 'nvim-lua/plenary.nvim',
12 'BurntSushi/ripgrep',
13 'nvim-treesitter/nvim-treesitter'
14 }}
15 }
16end)
17
18vim.cmd('colorscheme everforest') -- solarized, but green
19vim.cmd('set termguicolors') -- needed for truecolor support
20vim.cmd('set mmp=2000') -- resolves https://github.com/vim/vim/issues/2049
21
22---- mappings
23local builtin = require('telescope.builtin')
24local opts = { noremap=true, silent=true }
25-- telescope
26vim.keymap.set('n', '<space>ff', builtin.find_files, {})
27vim.keymap.set('n', '<space>fg', builtin.live_grep, {})
28vim.keymap.set('n', '<space>fb', builtin.buffers, {})
29vim.keymap.set('n', '<space>fh', builtin.help_tags, {})
30-- LSP
31vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
32vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
33vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
34vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
35vim.keymap.set('n', '<space>m', "Go<esc>:put =strftime('%Y-%m-%d')<cr>o============<cr>", opts)
36
37-- Use an on_attach function to only map the following keys
38-- after the language server attaches to the current buffer
39local on_attach = function(client, bufnr)
40 -- Enable completion triggered by <c-x><c-o>
41 vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
42
43 -- Mappings.
44 -- See `:help vim.lsp.*` for documentation on any of the below functions
45 local bufopts = { noremap=true, silent=true, buffer=bufnr }
46 vim.keymap.set('n', 'gd', builtin.lsp_definitions, bufopts)
47 vim.keymap.set('n', 'gi', builtin.lsp_implementations, bufopts)
48 vim.keymap.set('n', 'gr', builtin.lsp_references, bufopts)
49 vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
50 vim.keymap.set('n', '<C-k>', vim.lsp.buf.hover, bufopts)
51 vim.keymap.set('n', '<space>D', builtin.lsp_type_definitions, bufopts)
52 vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
53end
54
55vim.api.nvim_create_autocmd('BufWritePre', {
56 pattern = '*.go',
57 callback = function()
58 vim.lsp.buf.format()
59 vim.lsp.buf.code_action({ context = { only = { 'source.organizeImports' } }, apply = true })
60 end
61})
62
63---- golang
64require('lspconfig')['gopls'].setup{
65 on_attach = on_attach,
66}