From 735c3e2e0c1a612de2481242e0db19ab973ae269 Mon Sep 17 00:00:00 2001 From: Victor Timofei Date: Mon, 28 Nov 2022 23:52:27 +0200 Subject: [PATCH] Switch to Lua neovim configuration --- .config/nvim/after/plugin/color.lua | 5 + .config/nvim/coc-settings.json | 97 -------- .config/nvim/init.lua | 1 + .config/nvim/init.vim | 229 ------------------ .config/nvim/lua/vtimofei/cmp.lua | 26 ++ .config/nvim/lua/vtimofei/init.lua | 6 + .config/nvim/lua/vtimofei/lsp/gopls.lua | 17 ++ .config/nvim/lua/vtimofei/lsp/init.lua | 4 + .config/nvim/lua/vtimofei/lsp/remap.lua | 35 +++ .../nvim/lua/vtimofei/lsp/rust_analyzer.lua | 17 ++ .config/nvim/lua/vtimofei/lsp/sumneko_lua.lua | 17 ++ .config/nvim/lua/vtimofei/lsp/tsserver.lua | 18 ++ .config/nvim/lua/vtimofei/plugins.lua | 25 ++ .config/nvim/lua/vtimofei/remap.lua | 1 + .config/nvim/lua/vtimofei/set.lua | 17 ++ .config/nvim/lua/vtimofei/telescope.lua | 6 + .vimrc | 26 -- 17 files changed, 195 insertions(+), 352 deletions(-) create mode 100644 .config/nvim/after/plugin/color.lua delete mode 100644 .config/nvim/coc-settings.json create mode 100644 .config/nvim/init.lua delete mode 100644 .config/nvim/init.vim create mode 100644 .config/nvim/lua/vtimofei/cmp.lua create mode 100644 .config/nvim/lua/vtimofei/init.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/gopls.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/init.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/remap.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/rust_analyzer.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/sumneko_lua.lua create mode 100644 .config/nvim/lua/vtimofei/lsp/tsserver.lua create mode 100644 .config/nvim/lua/vtimofei/plugins.lua create mode 100644 .config/nvim/lua/vtimofei/remap.lua create mode 100644 .config/nvim/lua/vtimofei/set.lua create mode 100644 .config/nvim/lua/vtimofei/telescope.lua delete mode 100644 .vimrc diff --git a/.config/nvim/after/plugin/color.lua b/.config/nvim/after/plugin/color.lua new file mode 100644 index 0000000..5a577bc --- /dev/null +++ b/.config/nvim/after/plugin/color.lua @@ -0,0 +1,5 @@ +vim.g.tokyonight_transparent_sidebar = true +vim.g.tokyonight_transparent = true +vim.opt.background = "dark" + +vim.cmd("colorscheme tokyonight") diff --git a/.config/nvim/coc-settings.json b/.config/nvim/coc-settings.json deleted file mode 100644 index 4e85f0c..0000000 --- a/.config/nvim/coc-settings.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "languageserver": { - "golang": { - "command": "gopls", - "rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"], - "filetypes": ["go"] - }, - "ccls": { - "command": "ccls", - "filetypes": [ - "c", - "cpp", - "objc", - "objcpp" - ], - "rootPatterns": [ - ".ccls", - "compile_commands.json", - ".vim/", - ".git/", - ".hg/" - ], - "initializationOptions": { - "cache": { - "directory": "/tmp/ccls" - } - } - } -// "python": { -// "command": "python", -// "args": ["-mpyls", "-vv", "--log-file", "/tmp/lsp_python.log"], -// "trace.server": "verbose", -// "filetypes": ["python"], -// "settings": { -// "pyls": { -// "enable": true, -// "trace": { -// "server": "verbose" -// }, -// "commandPath": "", -// "configurationSources": ["pycodestyle"], -// "plugins": { -// "jedi_completion": { -// "enabled": true -// }, -// "jedi_hover": { -// "enabled": true -// }, -// "jedi_references": { -// "enabled": true -// }, -// "jedi_signature_help": { -// "enabled": true -// }, -// "jedi_symbols": { -// "enabled": true, -// "all_scopes": true -// }, -// "mccabe": { -// "enabled": true, -// "threshold": 15 -// }, -// "preload": { -// "enabled": true -// }, -// "pycodestyle": { -// "enabled": true -// }, -// "pydocstyle": { -// "enabled": false, -// "match": "(?!test_).*\\.py", -// "matchDir": "[^\\.].*" -// }, -// "pyflakes": { -// "enabled": true -// }, -// "rope_completion": { -// "enabled": true -// }, -// "yapf": { -// "enabled": true -// } -// } -// } -// } -// } - }, - - // explorer - "explorer.width": 30, - "explorer.keyMappings.global": { - "": ["expandable?", ["expanded?", "collapse", "expand"], "open"], - "v": "open:vsplit" - }, - "explorer.icon.enableNerdfont": true, - "explorer.previewAction.onHover": false -} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..919687f --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1 @@ +require("vtimofei") diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim deleted file mode 100644 index cbf1f36..0000000 --- a/.config/nvim/init.vim +++ /dev/null @@ -1,229 +0,0 @@ -" plugins -" -call plug#begin('~/.vim/plugged') - -Plug 'itchyny/lightline.vim' -Plug 'sonph/onehalf', { 'rtp': 'vim' } - -Plug 'tpope/vim-fugitive' - -" Colorschemes -Plug 'markvincze/panda-vim' -Plug 'NLKNguyen/papercolor-theme' - -" BQN -Plug 'mlochbaum/BQN', {'rtp': 'editors/vim'} - -Plug 'fatih/vim-go' -Plug 'neoclide/coc.nvim', {'branch': 'master', 'do': 'yarn install --frozen-lockfile'} - -" polyglot -Plug 'sheerun/vim-polyglot' - -" Typescript lsp -Plug 'neoclide/coc-tsserver' - -" treesitter -Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} - -" telescope -Plug 'nvim-lua/popup.nvim' -Plug 'nvim-lua/plenary.nvim' -Plug 'nvim-telescope/telescope.nvim' - -call plug#end() - -nnoremap -let mapleader=" " - -" colors -" -set t_Co=256 "required for urxvt -set background=dark "dark or light -colorscheme PaperColor - -let g:lightline = { - \ 'colorscheme': 'ayu_dark', - \ 'active': { - \ 'left': [ [ 'mode', 'paste' ], - \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ] - \ }, - \ 'component_function': { - \ 'gitbranch': 'FugitiveHead' - \ }, - \ } -" Hide insert(redundant because of lightline plugin) -set noshowmode - -" Clear the background in order to have opacity -hi Normal guibg=NONE ctermbg=NONE -hi NonText guibg=NONE ctermbg=NONE -hi clear SignColumn -hi clear LineNr - -" settings -" -filetype on "detect files based on type -filetype plugin on "when a file is edited its plugin file is loaded -filetype indent on "maintain indentention -set nu "enable line numbers -set relativenumber "relative line numbers -set colorcolumn=100 "display a colored column at 100 chars -highlight ColorColumn ctermbg=0 guibg=morning - -" ------------------------------------------------------------------------------------------------- -" treesitter settings -" -" ------------------------------------------------------------------------------------------------- - -" Syntax highlighting -lua <r update \| edit \| TSBufEnable highlight - -" ------------------------------------------------------------------------------------------------- -" telescope keymaps -" -" ------------------------------------------------------------------------------------------------- - -nnoremap ff Telescope find_files -nnoremap fg Telescope live_grep -nnoremap fb Telescope buffers -nnoremap fh Telescope help_tags - -" ------------------------------------------------------------------------------------------------- -" System clipboard keybinds (requires xclip on Linux systems to work) -" -" ------------------------------------------------------------------------------------------------- - -nnoremap p "+p -nnoremap y "+yy - -" ------------------------------------------------------------------------------------------------- -" coc.nvim scroll popup definition -" -" ------------------------------------------------------------------------------------------------- - -nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" -nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" -inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" -inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" - -" ------------------------------------------------------------------------------------------------- -" coc.nvim default settings -" -" ------------------------------------------------------------------------------------------------- - -" if hidden is not set, TextEdit might fail. -set hidden -" Better display for messages -set cmdheight=2 -" Smaller updatetime for CursorHold & CursorHoldI -set updatetime=300 -" don't give |ins-completion-menu| messages. -set shortmess+=c -" always show signcolumns -set signcolumn=yes - -" Use tab for trigger completion with characters ahead and navigate. -" Use command ':verbose imap ' to make sure tab is not mapped by other plugin. -inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() -inoremap pumvisible() ? "\" : "\" - -function! s:check_back_space() abort -let col = col('.') - 1 -return !col || getline('.')[col - 1] =~# '\s' -endfunction - -" Use to trigger completion. -inoremap coc#refresh() - -" Use `[c` and `]c` to navigate diagnostics -nmap [c (coc-diagnostic-prev) -nmap ]c (coc-diagnostic-next) - -" Remap keys for gotos -nmap gd (coc-definition) -nmap gy (coc-type-definition) -nmap gi (coc-implementation) -nmap gr (coc-references) - -" Use U to show documentation in preview window -nnoremap U :call show_documentation() - -" Remap for rename current word -nmap rn (coc-rename) - -" Remap for format selected region -vmap f (coc-format-selected) -nmap f (coc-format-selected) -" Show all diagnostics -nnoremap a :CocList diagnostics -" Manage extensions -nnoremap e :CocList extensions -" Show commands -nnoremap c :CocList commands -" Find symbol of current document -nnoremap o :CocList outline -" Search workspace symbols -nnoremap s :CocList -I symbols -" Do default action for next item. -nnoremap j :CocNext -" Do default action for previous item. -nnoremap k :CocPrev -" Resume latest coc list -" nnoremap p :CocListResume - -" disable vim-go :GoDef short cut (gd) -" this is handled by LanguageClient [LC] -let g:go_def_mapping_enabled = 0 - -" Explorer -nmap e :CocCommand explorer -nmap f :CocCommand explorer --preset floating -autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif - -" Prettier -command! -nargs=0 Prettier :CocCommand prettier.formatFile diff --git a/.config/nvim/lua/vtimofei/cmp.lua b/.config/nvim/lua/vtimofei/cmp.lua new file mode 100644 index 0000000..a8118b7 --- /dev/null +++ b/.config/nvim/lua/vtimofei/cmp.lua @@ -0,0 +1,26 @@ +vim.opt.completeopt = { "menu", "menuone", "noselect" } + +local cmp = require'cmp' + +cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + }) +}) diff --git a/.config/nvim/lua/vtimofei/init.lua b/.config/nvim/lua/vtimofei/init.lua new file mode 100644 index 0000000..8a0ddd5 --- /dev/null +++ b/.config/nvim/lua/vtimofei/init.lua @@ -0,0 +1,6 @@ +require("vtimofei.set") +require("vtimofei.remap") +require("vtimofei.cmp") +require("vtimofei.lsp") +require("vtimofei.plugins") +require("vtimofei.telescope") diff --git a/.config/nvim/lua/vtimofei/lsp/gopls.lua b/.config/nvim/lua/vtimofei/lsp/gopls.lua new file mode 100644 index 0000000..23d63b7 --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/gopls.lua @@ -0,0 +1,17 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local remap = require('vtimofei.lsp.remap') +local lsp_conf = require('lspconfig') + +lsp_conf.gopls.setup{ + capabilities = capabilities, + on_attach = function() + remap.hover() + remap.definition() + remap.type_definition() + remap.implementation() + remap.diagnostics_next() + remap.diagnostics_prev() + remap.rename() + remap.code_action() + end +} diff --git a/.config/nvim/lua/vtimofei/lsp/init.lua b/.config/nvim/lua/vtimofei/lsp/init.lua new file mode 100644 index 0000000..69afe0b --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/init.lua @@ -0,0 +1,4 @@ +require('vtimofei.lsp.gopls') +require('vtimofei.lsp.rust_analyzer') +require('vtimofei.lsp.sumneko_lua') +require('vtimofei.lsp.tsserver') diff --git a/.config/nvim/lua/vtimofei/lsp/remap.lua b/.config/nvim/lua/vtimofei/lsp/remap.lua new file mode 100644 index 0000000..e6aa5a8 --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/remap.lua @@ -0,0 +1,35 @@ +local M = {} + +M.hover = function() + vim.keymap.set("n", "K", vim.lsp.buf.hover, {buffer = 0}) +end + +M.definition = function() + vim.keymap.set("n", "gd", vim.lsp.buf.definition, {buffer = 0}) +end + +M.type_definition = function() + vim.keymap.set("n", "gt", vim.lsp.buf.type_definition, {buffer = 0}) +end + +M.implementation = function() + vim.keymap.set("n", "gi", vim.lsp.buf.implementation, {buffer = 0}) +end + +M.diagnostics_next = function() + vim.keymap.set("n", "dj", vim.diagnostic.goto_next, {buffer = 0}) +end + +M.diagnostics_prev = function() + vim.keymap.set("n", "dk", vim.diagnostic.goto_prev, {buffer = 0}) +end + +M.rename = function() + vim.keymap.set("n", "r", vim.lsp.buf.rename, {buffer = 0}) +end + +M.code_action = function() + vim.keymap.set("n", "ca", vim.lsp.buf.code_action, {buffer = 0}) +end + +return M diff --git a/.config/nvim/lua/vtimofei/lsp/rust_analyzer.lua b/.config/nvim/lua/vtimofei/lsp/rust_analyzer.lua new file mode 100644 index 0000000..188268f --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/rust_analyzer.lua @@ -0,0 +1,17 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local remap = require('vtimofei.lsp.remap') +local lsp_conf = require('lspconfig') + +lsp_conf.rust_analyzer.setup{ + capabilities = capabilities, + on_attach = function() + remap.hover() + remap.definition() + remap.type_definition() + remap.implementation() + remap.diagnostics_next() + remap.diagnostics_prev() + remap.rename() + remap.code_action() + end +} diff --git a/.config/nvim/lua/vtimofei/lsp/sumneko_lua.lua b/.config/nvim/lua/vtimofei/lsp/sumneko_lua.lua new file mode 100644 index 0000000..777e73a --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/sumneko_lua.lua @@ -0,0 +1,17 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local remap = require('vtimofei.lsp.remap') +local lsp_conf = require('lspconfig') + +lsp_conf.sumneko_lua.setup{ + capabilities = capabilities, + on_attach = function() + remap.hover() + remap.definition() + remap.type_definition() + remap.implementation() + remap.diagnostics_next() + remap.diagnostics_prev() + remap.rename() + remap.code_action() + end +} diff --git a/.config/nvim/lua/vtimofei/lsp/tsserver.lua b/.config/nvim/lua/vtimofei/lsp/tsserver.lua new file mode 100644 index 0000000..9054d91 --- /dev/null +++ b/.config/nvim/lua/vtimofei/lsp/tsserver.lua @@ -0,0 +1,18 @@ +local capabilities = require('cmp_nvim_lsp').default_capabilities() +local remap = require('vtimofei.lsp.remap') +local lsp_conf = require('lspconfig') + +lsp_conf.tsserver.setup{ + capabilities = capabilities, + on_attach = function() + print("loaded tsserver") + remap.hover() + remap.definition() + remap.type_definition() + remap.implementation() + remap.diagnostics_next() + remap.diagnostics_prev() + remap.rename() + remap.code_action() + end +} diff --git a/.config/nvim/lua/vtimofei/plugins.lua b/.config/nvim/lua/vtimofei/plugins.lua new file mode 100644 index 0000000..32be2b4 --- /dev/null +++ b/.config/nvim/lua/vtimofei/plugins.lua @@ -0,0 +1,25 @@ +vim.cmd [[packadd packer.nvim]] + +return require('packer').startup(function(use) + use 'wbthomason/packer.nvim' + use 'folke/tokyonight.nvim' + use 'neovim/nvim-lspconfig' + use 'nvim-lua/plenary.nvim' + use 'hrsh7th/nvim-cmp' + use 'hrsh7th/cmp-nvim-lsp' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/cmp-path' + use 'L3MON4D3/LuaSnip' + use 'saadparwaiz1/cmp_luasnip' + use { + 'nvim-treesitter/nvim-treesitter', + run = function() + local ts_update = require('nvim-treesitter.install').update({ with_sync = true }) + ts_update() + end, + } + use { + 'nvim-telescope/telescope.nvim', branch = '0.1.x', + requires = { {'nvim-lua/plenary.nvim'} } + } +end) diff --git a/.config/nvim/lua/vtimofei/remap.lua b/.config/nvim/lua/vtimofei/remap.lua new file mode 100644 index 0000000..133ccda --- /dev/null +++ b/.config/nvim/lua/vtimofei/remap.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "e", "Ex") diff --git a/.config/nvim/lua/vtimofei/set.lua b/.config/nvim/lua/vtimofei/set.lua new file mode 100644 index 0000000..a3beeb7 --- /dev/null +++ b/.config/nvim/lua/vtimofei/set.lua @@ -0,0 +1,17 @@ +vim.opt.guicursor = "" + +vim.opt.nu = true +vim.opt.relativenumber = true + +vim.opt.tabstop = 8 +vim.opt.softtabstop = 8 +vim.opt.shiftwidth = 8 +vim.opt.expandtab = true +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.g.mapleader = " " diff --git a/.config/nvim/lua/vtimofei/telescope.lua b/.config/nvim/lua/vtimofei/telescope.lua new file mode 100644 index 0000000..7b3471e --- /dev/null +++ b/.config/nvim/lua/vtimofei/telescope.lua @@ -0,0 +1,6 @@ +vim.keymap.set("n", "dl", "Telescope diagnostics") +vim.keymap.set("n", "tr", "Telescope lsp_references") +vim.keymap.set("n", "ti", "Telescope lsp_implementations") +vim.keymap.set("n", "fw", "Telescope live_grep") +vim.keymap.set("n", "ff", "Telescope find_files") +vim.keymap.set("n", "tc", "Telescope colorscheme") diff --git a/.vimrc b/.vimrc deleted file mode 100644 index 1dfcbee..0000000 --- a/.vimrc +++ /dev/null @@ -1,26 +0,0 @@ -" Enable syntax highlighting -syntax on - -" Need to set this also to see the current line number -set number -" Use relative line numbers -set relativenumber - -" Do not create swapfiles -set noswapfile - -set tabstop=3 softtabstop=3 -set expandtab -set smartindent - -" Do not wrap the line -set nowrap - -" View a colored column at 80 chars -set colorcolumn=80 -" Color of column -highlight ColorColumn ctermbg=0 guibg=lightgrey - -filetype plugin indent on -filetype detect -autocmd FileType make set noexpandtab