aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/lua
diff options
context:
space:
mode:
Diffstat (limited to 'config/nvim/lua')
-rw-r--r--config/nvim/lua/mappings.lua8
-rw-r--r--config/nvim/lua/plugins.lua190
2 files changed, 186 insertions, 12 deletions
diff --git a/config/nvim/lua/mappings.lua b/config/nvim/lua/mappings.lua
index ef4df4b..50c57e2 100644
--- a/config/nvim/lua/mappings.lua
+++ b/config/nvim/lua/mappings.lua
@@ -7,6 +7,9 @@ map('n', '<leader>sc', '<cmd>source $MYVIMRC<cr>', {}) -- source vimrc
map('n', '<leader>;', 'mqA;<esc>`q', {}) -- put semicolon at the end of line
map('n', 'cu', 'ct_', {}) -- common change until
map('n', '<leader>ss', '<cmd>setlocal spell!<cr>', {}) -- toggle spelling check
+map('n', '<leader>]', '<C-]>', {}) -- toggle spelling check
+map('n', '<leader>t', '<C-t>', {}) -- toggle spelling check
+
-- split navigation
map('n', '<C-j>', '<C-w><C-j>', {})
@@ -47,7 +50,6 @@ vim.cmd [[ autocmd FileType python nmap <leader>bd mq:g/^\s*breakpoint()$/d<cr>`
vim.cmd [[ autocmd FileType python nmap <leader>ba mqobreakpoint()<esc>`q ]]
-- pluggins
-
map('x', 'ga', '<cmd>EasyAlign<cr>', {})
map('n', 'ga', '<cmd>EasyAlign<cr>', {})
@@ -55,7 +57,3 @@ map('n', '<leader>l', '<cmd>SidewaysRight<cr>', {})
map('n', '<leader>h', '<cmd>SidewaysLeft<cr>', {})
map('n', '<leader>w', '<cmd>ArgWrap<cr>', {})
-
-map('n', '<C-p>', '<cmd>Telescope git_files<cr>', {})
-map('n', '<f2>', '<cmd>Telescope help_tags<cr>', {})
-map('n', '<leader>;', '<cmd>Telescope commands<cr>', {})
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)