diff --git a/init.vim b/init.vim index fe2f5e9..e63feac 100644 --- a/init.vim +++ b/init.vim @@ -12,7 +12,7 @@ Plug 'hrsh7th/nvim-cmp' Plug 'williamboman/mason.nvim' Plug 'williamboman/mason-lspconfig.nvim' Plug 'jose-elias-alvarez/null-ls.nvim' - +Plug 'dense-analysis/ale' " various plugins Plug 'akinsho/bufferline.nvim', { 'tag': 'v3.*' } @@ -104,6 +104,12 @@ nnoremap fb Telescope buffers nnoremap fh Telescope help_tags +let g:ale_set_balloons = 1 +let g:ale_linters = { +\ 'pyhon': ['bandit'], +\} +let g:ale_fixers = {'python': ['yapf']} + " general configs set modeline let g:sls_use_jinja_syntax = 1 diff --git a/lua/general.lua b/lua/general.lua index 29cecac..2e9ab7e 100644 --- a/lua/general.lua +++ b/lua/general.lua @@ -39,13 +39,66 @@ codewindow.setup({ }) codewindow.apply_default_keybinds() -require'lspconfig'.pyright.setup{} -require'lspconfig'.bashls.setup{} -require'lspconfig'.salt_ls.setup{} -require'lspconfig'.dockerls.setup{} -require'lspconfig'.kotlin_language_server.setup{} -require'lspconfig'.intelephense.setup{} -require'lspconfig'.eslint.setup{} + +-- setup nvim-lspconfig +-- Mappings. +-- See `:help vim.diagnostic.*` for documentation on any of the below functions +local opts = { noremap=true, silent=true } +vim.keymap.set('n', 'e', vim.diagnostic.open_float, opts) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) + +-- 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) + -- Enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + -- Mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + local bufopts = { noremap=true, silent=true, buffer=bufnr } + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + --vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) + vim.keymap.set('n', 'wl', function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, bufopts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) +end + +local capabilities = require('cmp_nvim_lsp').default_capabilities() + +require'lspconfig'.pyright.setup{ + on_attach = on_attach, + capabilities = capabilities, +} +require'lspconfig'.bashls.setup{ + on_attach = on_attach, +} +require'lspconfig'.salt_ls.setup{ + on_attach = on_attach, +} +require'lspconfig'.dockerls.setup{ + on_attach = on_attach, +} +require'lspconfig'.kotlin_language_server.setup{ + on_attach = on_attach, +} +require'lspconfig'.intelephense.setup{ + on_attach = on_attach, +} +require'lspconfig'.eslint.setup{ + on_attach = on_attach, +} -- load perl lsp require'lspconfig'.perlnavigator.setup{ @@ -57,9 +110,12 @@ require'lspconfig'.perlnavigator.setup{ perlcriticProfile = '', perlcriticEnabled = true, } - } + }, + on_attach = on_attach, + capabilities = capabilities, } + -- Set up nvim-cmp. local cmp = require'cmp'