syntax on filetype plugin indent on " Plugins call plug#begin('~/.vim/plugged') Plug 'neovim/nvim-lspconfig' Plug 'neovim/nvim-lspconfig' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-cmdline' Plug 'hrsh7th/nvim-cmp' " For vsnip users. Plug 'hrsh7th/cmp-vsnip' Plug 'hrsh7th/vim-vsnip' Plug 'chriskempson/base16-vim' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} " We recommend updating the parsers on update Plug 'kaicataldo/material.vim', { 'branch': 'main' } Plug 'nvim-lua/popup.nvim' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' Plug 'itchyny/lightline.vim' Plug 'joshdick/onedark.vim' Plug 'rust-lang/rust.vim' call plug#end() lua require('init') " General vim configurations set relativenumber set colorcolumn=80 set updatetime=50 set tabstop=4 softtabstop=4 set expandtab set smartindent set completeopt=menu,menuone,noselect set noswapfile set nobackup set scrolloff=8 set signcolumn=yes set nowrap set nu set hidden set undodir=~/.config/nvim/undodir set undofile " Theme settings " https://github.com/kaicataldo/material.vim if (has('termguicolors')) set termguicolors endif let g:material_theme_style = 'darker' colorscheme material " Lsp configuration for multiple languages " Use and to navigate through popup menu inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Tree-sitter config lua require'nvim-treesitter.configs'.setup { highlight = { enable = true }, incremental_selection = { enable = true }, textobjects = { enable = true }} " keyboard shortcut options let mapleader = " " nnoremap n gt nnoremap m gT " Telescope shortcuts nnoremap ff Telescope find_files nnoremap fg Telescope live_grep nnoremap fb Telescope buffers nnoremap fh Telescope help_tags " nvim-cmp configurations lua <'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. [''] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close(), }), [''] = cmp.mapping.confirm({ select = true }), }, sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'vsnip' }, -- For vsnip users. }, { { name = 'buffer' }, }) }) -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline('/', { sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Setup lspconfig. local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) -- Replace with each lsp server you've enabled. local function config(_config) return vim.tbl_deep_extend("force", { capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities()), }, _config or {}) end require('lspconfig')['gopls'].setup {config()} require('lspconfig')['rust_analyzer'].setup {config()} require('lspconfig')['bashls'].setup{config()} require('lspconfig')['jsonls'].setup{config()} require('lspconfig')['clangd'].setup{config()} require('lspconfig')['jedi_language_server'].setup{config()} EOF