New neovim config

main
Guus van Meerveld 1 year ago
parent a3a3cb4f6b
commit 1974cf5808
Signed by: Guusvanmeerveld
GPG Key ID: 2BA7D7912771966E

@ -0,0 +1,6 @@
require("user.settings")
require("user.keybinds")
require("user.plugins")
vim.cmd.colorscheme('gruvbox-material')

@ -0,0 +1,29 @@
{
"anderson.vim": { "branch": "master", "commit": "77823ba30631fc1d12f443de1eeff97e9c299fdf" },
"barbar.nvim": { "branch": "master", "commit": "b2956f1a3cb8a8e1b6cd4d3f678cc40abdb5ec92" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"fzf": { "branch": "master", "commit": "3364d4d147ade148d8e5dd67609e46f0ef6c50fc" },
"fzf.vim": { "branch": "master", "commit": "dc71692255b62d1f67dc55c8e51ab1aa467b1d46" },
"gruvbox": { "branch": "master", "commit": "bf2885a95efdad7bd5e4794dd0213917770d79b7" },
"gruvbox-material": { "branch": "master", "commit": "a0dc84816b913e9afcf6b8a5ade304bfb47a6f65" },
"lazy.nvim": { "branch": "main", "commit": "8d18ef44e769e98a8dc974ca85275de1d8cc7c04" },
"lspkind.nvim": { "branch": "master", "commit": "c68b3a003483cf382428a43035079f78474cd11e" },
"lualine.nvim": { "branch": "master", "commit": "e99d733e0213ceb8f548ae6551b04ae32e590c80" },
"nvim-cmp": { "branch": "main", "commit": "01f697a68905f9dcae70960a9eb013695a17f9a2" },
"nvim-lspconfig": { "branch": "master", "commit": "95b7a69bc6da2a6a740584ea3c555e5327638b7d" },
"nvim-tree.lua": { "branch": "master", "commit": "362ecbeed69fae91a287004619decadcb6f7c113" },
"nvim-treesitter": { "branch": "master", "commit": "e9fb90da020d08bda2a616324a64921fde3236f6" },
"nvim-web-devicons": { "branch": "master", "commit": "c2c2317f356c8b7da0252f5da758f71bb60bb6b2" },
"onedark.vim": { "branch": "main", "commit": "b6b5ffe31a195a3077338d7a506b905e4a51590f" },
"rust-tools.nvim": { "branch": "master", "commit": "71d2cf67b5ed120a0e31b2c8adb210dd2834242f" },
"trouble.nvim": { "branch": "main", "commit": "67337644e38144b444d026b0df2dc5fa0038930f" },
"vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" },
"vim-eunuch": { "branch": "master", "commit": "291ef1f8c8996ca7715df1032a35a27b12d7b5cf" },
"vim-fugitive": { "branch": "master", "commit": "fa33145cc12003005b92d7e536025ed5833b9c4f" },
"vim-gitgutter": { "branch": "master", "commit": "edb607cc4b329099da825c028c53b1264dbd2350" },
"vim-project": { "branch": "master", "commit": "faa35e670c916ce8fbcc0fd9ce32a18e1f545989" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-visual-multi": { "branch": "master", "commit": "724bd53adfbaf32e129b001658b45d4c5c29ca1a" }
}

@ -0,0 +1,50 @@
local Plugin = {'hrsh7th/nvim-cmp'}
Plugin.dependencies = {
{'hrsh7th/cmp-nvim-lsp'},
{'hrsh7th/cmp-path'},
{'hrsh7th/cmp-buffer'},
{'onsails/lspkind.nvim'}
}
function Plugin.config()
local cmp = require('cmp')
local lspkind = require('lspkind')
cmp.setup({
-- preselect = cmp.PreselectMode.None,
mapping = {
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-n>"] = cmp.mapping.select_next_item(),
-- Add tab support
["<S-Tab>"] = cmp.mapping.select_prev_item(),
["<Tab>"] = cmp.mapping.select_next_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Insert,
select = true,
})
},
formatting = {
format = lspkind.cmp_format {
with_text = true,
menu = {
buffer = "[buf]",
nvim_lsp = "[LSP]",
path = "[path]",
},
},
},
sources = {
{ name = "nvim_lsp" },
{ name = "path" },
{ name = "buffer" },
}
})
end
return Plugin

@ -0,0 +1,8 @@
local Plugins = {
{'sainnhe/gruvbox-material'},
{'morhetz/gruvbox'},
{'joshdick/onedark.vim'},
{'tlhr/anderson.vim'}
}
return Plugins

@ -0,0 +1,9 @@
local Plugin = {'tpope/vim-commentary'}
function Plugin.init()
local bind = vim.keymap.set
bind({'n', 'v'}, '<leader>/', ':Commentary<CR>')
end
return Plugin

@ -0,0 +1,3 @@
local Plugin = {'tpope/vim-eunuch'}
return Plugin

@ -0,0 +1,7 @@
local Plugin = {'tpope/vim-fugitive'}
-- function Plugin.init()
-- end
return Plugin

@ -0,0 +1,14 @@
local Plugin = {'junegunn/fzf.vim'}
Plugin.dependencies = {
{'junegunn/fzf'}
}
function Plugin.init()
local bind = vim.keymap.set
bind({'n', 'v'},'<leader>f', ':Files<CR>')
bind({'n', 'v'},'<leader>r', ':Rg<CR>')
end
return Plugin

@ -0,0 +1,3 @@
Plugin = {'airblade/vim-gitgutter'}
return Plugin

@ -0,0 +1,9 @@
local Plugin = {'nvim-lualine/lualine.nvim'}
function Plugin.config()
local lualine = require('lualine')
lualine.setup()
end
return Plugin

@ -0,0 +1,98 @@
local Plugin = {'neovim/nvim-lspconfig'}
function Plugin.init()
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<C-x>', 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', '<C-z>', vim.diagnostic.setloclist, opts)
end
function Plugin.config()
local nvim_lsp = require 'lspconfig'
local on_attach = function(client)
-- Enable completion triggered by <c-x><c-o>
-- 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 }
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', '<C-k>', vim.lsp.buf.signature_help, bufopts)
-- vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
-- vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
-- vim.keymap.set('n', '<space>wl', function()
-- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
-- end, bufopts)
-- vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
-- vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
-- vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<leader>g', function() vim.lsp.buf.format { async = true } end, bufopts)
end
local lsp_flags = {
-- This is the default in Nvim 0.7+
debounce_text_changes = 150,
}
nvim_lsp.anakin_language_server.setup({
on_attach = on_attach,
flags = lsp_flags,
})
nvim_lsp.csharp_ls.setup({
on_attach = on_attach,
flags = lsp_flags,
})
nvim_lsp.jdtls.setup({
on_attach = on_attach,
flags = lsp_flags
})
nvim_lsp.tsserver.setup({
on_attach = on_attach,
flags = lsp_flags,
})
nvim_lsp.lua_ls.setup({
on_attach = on_attach,
flags = lsp_flags,
})
nvim_lsp.rust_analyzer.setup({
on_attach=on_attach,
flags = lsp_flags,
settings = {
["rust-analyzer"] = {
-- checkOnSave = {
-- command = "clippy"
-- },
imports = {
granularity = {
group = "module",
},
prefix = "self",
},
cargo = {
autoreload = true,
buildScripts = {
enable = true,
},
},
procMacro = {
enable = true
},
}
}
})
end
return Plugin

@ -0,0 +1,11 @@
local Plugin = {'leafOfTree/vim-project'}
function Plugin.init()
local bind = vim.keymap.set
bind('n', '<leader>o', ':ProjectList<CR>')
end
return Plugin

@ -0,0 +1,18 @@
local Plugin = { 'simrat39/rust-tools.nvim' }
function Plugin.config()
local rt = require('rust-tools')
-- rt.setup({
-- tools = {
-- inlay_hints = {
-- auto = true,
-- show_parameter_hints = false,
-- parameter_hints_prefix = "",
-- other_hints_prefix = "",
-- },
-- }
-- })
end
return Plugin

@ -0,0 +1,7 @@
local Plugin = {'tpope/vim-surround'}
-- function Plugin.init()
-- local bind = vim.keymap.set
return Plugin

@ -0,0 +1,18 @@
local Plugin = {'romgrk/barbar.nvim'}
Plugin.dependencies = {
{'nvim-tree/nvim-web-devicons'}
}
function Plugin.init()
local bind = vim.keymap.set
local opts = {
silent = true
}
bind('n', '<leader>y', ':BufferPrevious<CR>', opts)
bind('n', '<leader>u', ':BufferNext<CR>', opts)
end
return Plugin

@ -0,0 +1,88 @@
local Plugin = {'nvim-tree/nvim-tree.lua'}
Plugin.dependencies = {
{'nvim-tree/nvim-web-devicons'}
}
function Plugin.config()
local tree = require('nvim-tree')
local api = require('nvim-tree.api')
local on_attach = function(bufnr)
local opts = function(desc)
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
end
vim.keymap.set('n', '<C-]>', api.tree.change_root_to_node, opts('CD'))
vim.keymap.set('n', '<C-e>', api.node.open.replace_tree_buffer, opts('Open: In Place'))
vim.keymap.set('n', '<C-k>', api.node.show_info_popup, opts('Info'))
vim.keymap.set('n', '<C-r>', api.fs.rename_sub, opts('Rename: Omit Filename'))
vim.keymap.set('n', '<C-t>', api.node.open.tab, opts('Open: New Tab'))
vim.keymap.set('n', '<C-v>', api.node.open.vertical, opts('Open: Vertical Split'))
vim.keymap.set('n', '<C-x>', api.node.open.horizontal, opts('Open: Horizontal Split'))
vim.keymap.set('n', '<BS>', api.node.navigate.parent_close, opts('Close Directory'))
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('Open'))
vim.keymap.set('n', '<Tab>', api.node.open.preview, opts('Open Preview'))
vim.keymap.set('n', '>', api.node.navigate.sibling.next, opts('Next Sibling'))
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts('Previous Sibling'))
vim.keymap.set('n', '.', api.node.run.cmd, opts('Run Command'))
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts('Up'))
vim.keymap.set('n', 'a', api.fs.create, opts('Create'))
vim.keymap.set('n', 'bmv', api.marks.bulk.move, opts('Move Bookmarked'))
vim.keymap.set('n', 'B', api.tree.toggle_no_buffer_filter, opts('Toggle No Buffer'))
vim.keymap.set('n', 'c', api.fs.copy.node, opts('Copy'))
vim.keymap.set('n', 'C', api.tree.toggle_git_clean_filter, opts('Toggle Git Clean'))
vim.keymap.set('n', '[c', api.node.navigate.git.prev, opts('Prev Git'))
vim.keymap.set('n', ']c', api.node.navigate.git.next, opts('Next Git'))
vim.keymap.set('n', 'd', api.fs.remove, opts('Delete'))
vim.keymap.set('n', 'D', api.fs.trash, opts('Trash'))
vim.keymap.set('n', 'E', api.tree.expand_all, opts('Expand All'))
vim.keymap.set('n', 'e', api.fs.rename_basename, opts('Rename: Basename'))
vim.keymap.set('n', ']e', api.node.navigate.diagnostics.next, opts('Next Diagnostic'))
vim.keymap.set('n', '[e', api.node.navigate.diagnostics.prev, opts('Prev Diagnostic'))
vim.keymap.set('n', 'F', api.live_filter.clear, opts('Clean Filter'))
vim.keymap.set('n', 'f', api.live_filter.start, opts('Filter'))
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Dotfiles'))
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Git Ignore'))
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling'))
vim.keymap.set('n', 'm', api.marks.toggle, opts('Toggle Bookmark'))
vim.keymap.set('n', 'o', api.node.open.edit, opts('Open'))
vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts('Open: No Window Picker'))
vim.keymap.set('n', 'p', api.fs.paste, opts('Paste'))
vim.keymap.set('n', 'P', api.node.navigate.parent, opts('Parent Directory'))
vim.keymap.set('n', 'q', api.tree.close, opts('Close'))
vim.keymap.set('n', 'r', api.fs.rename, opts('Rename'))
vim.keymap.set('n', 'R', api.tree.reload, opts('Refresh'))
vim.keymap.set('n', 's', api.node.run.system, opts('Run System'))
vim.keymap.set('n', 'S', api.tree.search_node, opts('Search'))
vim.keymap.set('n', 'U', api.tree.toggle_custom_filter, opts('Toggle Hidden'))
vim.keymap.set('n', 'W', api.tree.collapse_all, opts('Collapse'))
vim.keymap.set('n', 'x', api.fs.cut, opts('Cut'))
vim.keymap.set('n', 'y', api.fs.copy.filename, opts('Copy Name'))
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts('Copy Relative Path'))
vim.keymap.set('n', '<2-LeftMouse>', api.node.open.edit, opts('Open'))
vim.keymap.set('n', '<2-RightMouse>', api.tree.change_root_to_node, opts('CD'))
end
tree.setup({
on_attach = on_attach,
renderer = {
group_empty = true
}
})
end
function Plugin.init()
local bind = vim.keymap.set
bind('n', '<leader>e', ':NvimTreeToggle<CR>')
end
return Plugin

@ -0,0 +1,17 @@
Plugin = {'nvim-treesitter/nvim-treesitter'}
function Plugin.config()
local treesitter = require('nvim-treesitter.configs')
treesitter.setup({
ensure_installed = {"lua", "c", "rust"},
sync_install = false,
auto_install = true,
highlight = {
enable = false
}
})
end
return Plugin

@ -0,0 +1,9 @@
local Plugin = {'folke/trouble.nvim'}
function Plugin.config()
local trouble = require('trouble')
trouble.setup()
end
return Plugin

@ -0,0 +1,3 @@
local Plugin = {'mg979/vim-visual-multi'}
return Plugin

@ -0,0 +1,23 @@
vim.keymap.set('n', '<leader>s', '<cmd>write<cr>')
vim.keymap.set('n', '<leader>q', '<cmd>quit<cr>')
vim.keymap.set({'n', 'x'}, 'cp', '"+y')
vim.keymap.set({'n', 'x'}, 'cv', '"+p')
vim.keymap.set({'n', 'x'}, 'x', '"_x')
vim.keymap.set('n', '<leader>a', ':keepjumps normal! ggVG<cr>')
vim.keymap.set('n', '<leader>t', ':belowright split | resize 12 | terminal<CR>')
function _G.ReloadConfig()
for name,_ in pairs(package.loaded) do
if name:match('^cnull') then
package.loaded[name] = nil
end
end
dofile(vim.env.MYVIMRC)
end
vim.api.nvim_set_keymap('n', '<Leader>vs', '<Cmd>lua ReloadConfig()<CR>', { silent = true, noremap = true })
vim.cmd('command! ReloadConfig lua ReloadConfig()')

@ -0,0 +1,28 @@
local lazy = {}
lazy.path = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
function lazy.install(path)
if not vim.loop.fs_stat(path) then
print('Installing lazy.nvim....')
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable', -- latest stable release
path,
})
end
end
function lazy.setup(plugins)
lazy.install(lazy.path)
vim.opt.rtp:prepend(lazy.path)
require('lazy').setup(plugins, lazy.opts)
end
lazy.setup({
{import = 'plugins'}
})

@ -0,0 +1,14 @@
vim.opt.mouse = 'a'
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.hlsearch = false
vim.opt.wrap = true
vim.opt.breakindent = true
vim.opt.tabstop = 2
vim.opt.shiftwidth = 2
vim.opt.expandtab = false
vim.opt.relativenumber = true
vim.g.mapleader = ' '
vim.opt.termguicolors = true