diff options
| author | Charles Cabergs <charles.cabergs@colruytgroup.com> | 2021-12-06 07:55:34 +0100 |
|---|---|---|
| committer | Charles Cabergs <charles.cabergs@colruytgroup.com> | 2021-12-06 07:55:34 +0100 |
| commit | 00fd5bbb537c368ccfc85ba29823e4d616c45d17 (patch) | |
| tree | f3de1450a4452390f91ce5716e0acd485981972d /config/nvim/lua/plugins.lua | |
| parent | 268427ca0a213f756ce73732592484c1d215fbbc (diff) | |
| parent | 4adc57a365aa52ff5d4509fb6b09fc54878d9342 (diff) | |
| download | dotfiles-00fd5bbb537c368ccfc85ba29823e4d616c45d17.tar.gz dotfiles-00fd5bbb537c368ccfc85ba29823e4d616c45d17.tar.bz2 dotfiles-00fd5bbb537c368ccfc85ba29823e4d616c45d17.zip | |
Merge branch 'master' of cacharle.xyz:/srv/git/dotfiles
Diffstat (limited to 'config/nvim/lua/plugins.lua')
| -rw-r--r-- | config/nvim/lua/plugins.lua | 190 |
1 files changed, 183 insertions, 7 deletions
diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index 1d5d0b4..34b878d 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -1,26 +1,142 @@ -vim.cmd [[packadd packer.nvim]] +vim.cmd [[ packadd packer.nvim ]] return require('packer').startup(function() use 'wbthomason/packer.nvim' -- plugin manager (can manage itself) - use 'terrortylor/nvim-comment' -- comments use 'junegunn/vim-easy-align' -- align use 'AndrewRadev/sideways.vim' -- Move arguments sideways use 'FooSoft/vim-argwrap' -- Put arguments on multiple lines use 'tpope/vim-eunuch' -- basic commands on current file (Rename/Remove) use 'romainl/vim-cool' -- only highlight search matches when searching - use 'neovim/nvim-lspconfig' -- nvim lsp configuration + -- nvim lsp configuration + use { + 'neovim/nvim-lspconfig', + ft = {'rust', 'python', 'c', 'cpp', 'lua'}, + config = function() + local on_attach = function(client, bufnr) + local opts = { noremap = true, silent = true } + local map = function(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + map('n', '<leader>[', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) + map('n', '<leader>]', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) + map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) + map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts) + map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts) + map('n', '<leader>q', '<cmd>Telescope lsp_workspace_diagnostics<CR>', opts) + map('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) + end + local lspconfig = require('lspconfig') + lspconfig.clangd.setup { on_attach = on_attach } + -- need python-lsp-server and pyls-flake8 + lspconfig.pylsp.setup { on_attach = on_attach } + -- rust_analyzer + lspconfig.rust_analyzer.setup { on_attach = on_attach } + -- package lua-language-server on ArchLinux + lspconfig.sumneko_lua.setup { + on_attach = on_attach , + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';'), + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + }, + }, + } + }, + } + vim.diagnostic.config { + signs = false, + update_in_insert = false, + } + end, + } + + -- rust lsp (needs rust-analyser) + use { + 'simrat39/rust-tools.nvim', + requires = {'neovim/nvim-lspconfig'}, + ft = {'rust'}, + config = function() + require('rust-tools').setup {} + vim.diagnostic.config { + signs = false, + update_in_insert = false, + } + end + } + + -- comment text objects + use { + 'numToStr/Comment.nvim', + config = function() + require('Comment').setup() + end + } -- color scheme - use {'ellisonleao/gruvbox.nvim', requires = {'rktjmp/lush.nvim'}} + use { + 'ellisonleao/gruvbox.nvim', + requires = {'rktjmp/lush.nvim'}, + config = function() + vim.opt.termguicolors = true + vim.opt.background = "dark" + vim.cmd [[ colorscheme gruvbox ]] + vim.g.gruvbox_italic = 1 + vim.g.gruvbox_bold = 1 + vim.g.gruvbox_termcolors = 256 + vim.g.gruvbox_contrast_dark = 'medium' + vim.g.gruvbox_contrast_light = 'hard' + vim.g.gruvbox_invert_selection = 0 + end + } -- status line use { 'nvim-lualine/lualine.nvim', - requires = {'kyazdani42/nvim-web-devicons', opt = true} + requires = {'kyazdani42/nvim-web-devicons', opt = true}, + config = function() + require('lualine').setup { + options = { + theme = 'gruvbox', + icons_enabled = true, + section_separators = '', + component_separators = '' + } + } + end } -- better syntax highlight for everything use { 'nvim-treesitter/nvim-treesitter', - run = ':TSUpdate' + run = ':TSUpdate', + config = function() + require('nvim-treesitter.configs').setup { + highlight = { + enable = true + }, + -- indent = { enable = true }, + -- TODO: could be neat + -- incremental_selection = { + -- enable = true, + -- keymaps = { + -- init_selection = "gnn", + -- node_incremental = "grn", + -- scope_incremental = "grc", + -- node_decremental = "grm", + -- } + -- } + } + vim.cmd [[ highlight link pythonTSKeywordOperator Keyword ]] + end } -- fuzzy finder (replace fzf.vim or ctrlp.vim) use { @@ -28,6 +144,66 @@ return require('packer').startup(function() requires = { {'nvim-lua/plenary.nvim'}, {'kyazdani42/nvim-web-devicons', opt = true}, - } + }, + config = function() + local actions = require('telescope.actions') + require('telescope').setup { + defaults = { + mappings = { + i = { + ['<C-j>'] = actions.move_selection_next, + ['<C-k>'] = actions.move_selection_previous, + ['<esc>'] = actions.close, + ['kj'] = actions.close, + } + }, + } + } + local map = vim.api.nvim_set_keymap + map('n', '<C-p>', '<cmd>Telescope git_files<cr>', {}) + map('n', '<leader>H', '<cmd>Telescope help_tags<cr>', {}) + map('n', '<leader>;', '<cmd>Telescope commands<cr>', {}) + end + + } + -- todos,fix,etc.. highlight and list + use { + 'folke/todo-comments.nvim', + requires = 'nvim-lua/plenary.nvim', + config = function() + require('todo-comments').setup { + signs = false + } + end + } + + -- remote files and lsp + use { + 'chipsenkbeil/distant.nvim', + config = function() + require('distant').setup { + ['*'] = require('distant.settings').chip_default() + } + end, + run = ':DistantInstall' } + + -- jupyter kernel in nvim (with images, needs ueberzug) + use { + 'dccsillag/magma-nvim', + -- ft = { 'python' }, -- doesn't work + run = ':UpdateRemotePlugins', + config = function() + local map = vim.api.nvim_set_keymap + map('n', '<leader>m', "nvim_exec('MagmaEvaluateOperator', v:true)", { expr = true}) + map('n', '<leader>mm', '<cmd>MagmaEvaluateLine<CR>', {}) + map('x', '<leader>m', '<cmd><C-u>MagmaEvaluateVisual<CR>', {}) + map('n', '<leader>mc', '<cmd>MagmaReevaluateCell<CR>', {}) + map('n', '<leader>md', '<cmd>MagmaDelete<CR>', {}) + map('n', '<leader>mo', '<cmd>MagmaShowOutput<CR>', {}) + end + } + + use { 'nvim-treesitter/playground', opt = true, cmd = { 'TSPlaygroundToggle' } } + -- use { '~/git/argwrap.nvim', opt = true } end) |
