commit 0bc85806534afdfe44a64fbc2d5a4dd24148910a Author: Patrick Michl Date: Thu Sep 2 12:45:39 2021 +0200 my neovim conf ported to lua diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c84aa4a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +plugin/packer_compiled.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..2ed6ea0 --- /dev/null +++ b/init.lua @@ -0,0 +1,7 @@ +require 'plugins' + +vim.cmd('colorscheme space-vim-dark') + +require 'lsp' +require 'settings' +require 'keys' diff --git a/lua/keys.lua b/lua/keys.lua new file mode 100644 index 0000000..ccbe03f --- /dev/null +++ b/lua/keys.lua @@ -0,0 +1,22 @@ +local key = vim.api.nvim_set_keymap +local u = require('utils') + +vim.cmd([[autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif]]) +vim.cmd([[autocmd BufNewFile,BufRead *.md setlocal filetype=notes]]) + +key('n', ';', ':Files', {}) +key('', '', ':NERDTreeToggle', {}) + +-- LSP Key Config +local silent_opts = {silent = true} +key('n', '', ':lua vim.lsp.buf.definition()', silent_opts) +key('n', 'K', ':lua vim.lsp.buf.hover()', silent_opts) +key('n', 'gD', ':lua vim.lsp.buf.implementation()', silent_opts) +key('n', '', ':lua vim.lsp.buf.signature_help()', silent_opts) +key('n', '1gD', ':lua vim.lsp.buf.type_definition()', silent_opts) +key('n', 'gr', ':lua vim.lsp.buf.references()', silent_opts) +key('n', 'g0', ':lua vim.lsp.buf.document_symbol()', silent_opts) +key('n', 'gW', ':lua vim.lsp.buf.workspace_symbol()', silent_opts) +key('n', 'gd', ':lua vim.lsp.buf.definition()', silent_opts) +key('n', 'ga', ':lua vim.lsp.buf.code_action()', silent_opts) +key('n', 'ff', ':lua vim.lsp.buf.formatting()', silent_opts) diff --git a/lua/lsp.lua b/lua/lsp.lua new file mode 100644 index 0000000..fcd8ab1 --- /dev/null +++ b/lua/lsp.lua @@ -0,0 +1,69 @@ +local nvim_lsp = require'lspconfig' + +local function setup_servers() + require'lspinstall'.setup() + local servers = require'lspinstall'.installed_servers() + for _, lsp in pairs(servers) do + nvim_lsp[lsp].setup{} + end +end + +local opts = { + tools = { + autoSetHints = true, + hover_with_actions = true, + runnables = { + use_telescope = true + }, + inlay_hints = { + show_parameter_hints = false, + parameter_hints_prefix = "", + other_hints_prefix = "", + }, + }, + + -- all the opts to send to nvim-lspconfig + -- these override the defaults set by rust-tools.nvim + -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer + server = {}, -- rust-analyer options +} + +require('rust-tools').setup(opts) + +setup_servers() + +require'lspinstall'.post_install_hook = function () + setup_servers() + vim.cmd("bufdo e") +end + +local cmp = require'cmp' +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }) + }, + + -- Installed sources + sources = { + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + { name = 'path' }, + { name = 'buffer' }, + }, +}) diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 0000000..98e96e8 --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,45 @@ +vim.cmd([[autocmd BufWritePost plugins.lua source | PackerCompile]]) + +return require('packer').startup({function() + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + use 'vim-airline/vim-airline' + use 'scrooloose/nerdtree' + use 'Xuyuanp/nerdtree-git-plugin' + use 'liuchengxu/space-vim-dark' + + use 'tpope/vim-fugitive' + use 'tpope/vim-commentary' + use { 'tpope/vim-dispatch', opt = true, cmd = { 'Dispatch', 'Dispatch!' } } + use 'junegunn/fzf.vim' + use 'sheerun/vim-polyglot' + use 'honza/vim-snippets' + use 'szw/vim-tags' + use 'rodjek/vim-puppet' + use 'tpope/vim-rails' + use 'tpope/vim-haml' + use 'vim-scripts/bash-support.vim' + use "akinsho/nvim-toggleterm.lua" + use 'xolox/vim-notes' + use 'xolox/vim-misc' + use 'jremmen/vim-ripgrep' + use 'airblade/vim-gitgutter' + -- LSP Setup + use 'neovim/nvim-lspconfig' + use 'kabouzeid/nvim-lspinstall' + use 'hrsh7th/nvim-cmp' + use 'hrsh7th/cmp-nvim-lsp' + use 'hrsh7th/cmp-vsnip' + use 'hrsh7th/cmp-path' + use 'hrsh7th/cmp-buffer' + use 'simrat39/rust-tools.nvim' + use 'nvim-lua/popup.nvim' + use 'nvim-lua/plenary.nvim' + use 'nvim-telescope/telescope.nvim' +end, +config = { + display = { + open_fn = require('packer.util').float, + } +}}) diff --git a/lua/settings.lua b/lua/settings.lua new file mode 100644 index 0000000..d4e833d --- /dev/null +++ b/lua/settings.lua @@ -0,0 +1,26 @@ +local o = vim.o +local wo = vim.wo +local bo = vim.bo + +vim.cmd('syntax on') +vim.cmd('set number') +o.startofline = true +wo.cursorline = true + +o.updatetime = 300 +wo.signcolumn='yes' +o.showcmd = true + + +o.shell = 'bash' +o.mouse = 'a' + +o.smarttab = true +bo.tabstop = 2 +bo.shiftwidth = 2 +bo.expandtab = true + +wo.relativenumber = true + +vim.cmd('set completeopt=menuone,noinsert,noselect') +vim.cmd('set shortmess+=c') diff --git a/lua/utils.lua b/lua/utils.lua new file mode 100644 index 0000000..7c88756 --- /dev/null +++ b/lua/utils.lua @@ -0,0 +1,25 @@ +local M = {} + +function M.create_augroup(autocmds, name) + vim.cmd('augroup ' .. name) + vim.cmd('autocmd!') + for _, autocmd in ipairs(autocmds) do + vim.cmd('autocmd ' .. table.concat(autocmd, ' ')) + end + vim.cmd('augroup END') +end + +function M.create_function(body, name) + vim.cmd('function! ' .. name) + for _, line in ipairs(body) do + vim.cmd(line) + end + vim.cmd('endfunction') +end + +function _G.dump(...) + local objects = vim.tbl_map(vim.inspect, {...}) + print(unpack(objects)) +end + +return M