Switch to Lua neovim configuration

This commit is contained in:
Victor Timofei 2022-11-28 23:52:27 +02:00
parent 74582f6c92
commit 735c3e2e0c
Signed by: vtimofei
GPG Key ID: B790DCEBE281403A
17 changed files with 195 additions and 352 deletions

View File

@ -0,0 +1,5 @@
vim.g.tokyonight_transparent_sidebar = true
vim.g.tokyonight_transparent = true
vim.opt.background = "dark"
vim.cmd("colorscheme tokyonight")

View File

@ -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": {
"<cr>": ["expandable?", ["expanded?", "collapse", "expand"], "open"],
"v": "open:vsplit"
},
"explorer.icon.enableNerdfont": true,
"explorer.previewAction.onHover": false
}

1
.config/nvim/init.lua Normal file
View File

@ -0,0 +1 @@
require("vtimofei")

View File

@ -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 <SPACE> <Nop>
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 <<EOF
require'nvim-treesitter.configs'.setup {
highlight = {
enable = true,
custom_captures = {
-- Highlight the @foo.bar capture group with the "Identifier" highlight group.
["foo.bar"] = "Identifier",
},
},
}
EOF
" Incrementals selection
lua <<EOF
require'nvim-treesitter.configs'.setup {
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
}
EOF
" Indentation
lua <<EOF
require'nvim-treesitter.configs'.setup {
indent = {
enable = true
}
}
EOF
" Folding
set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()
" Reload file
nnoremap <leader>r <cmd>update \| edit \| TSBufEnable highlight<cr>
" -------------------------------------------------------------------------------------------------
" telescope keymaps
"
" -------------------------------------------------------------------------------------------------
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
" -------------------------------------------------------------------------------------------------
" System clipboard keybinds (requires xclip on Linux systems to work)
"
" -------------------------------------------------------------------------------------------------
nnoremap <leader>p "+p
nnoremap <leader>y "+yy
" -------------------------------------------------------------------------------------------------
" coc.nvim scroll popup definition
"
" -------------------------------------------------------------------------------------------------
nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
" -------------------------------------------------------------------------------------------------
" 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 <tab>' to make sure tab is not mapped by other plugin.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()
" Use `[c` and `]c` to navigate diagnostics
nmap <silent> [c <Plug>(coc-diagnostic-prev)
nmap <silent> ]c <Plug>(coc-diagnostic-next)
" Remap keys for gotos
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use U to show documentation in preview window
nnoremap <silent> U :call <SID>show_documentation()<CR>
" Remap for rename current word
nmap <leader>rn <Plug>(coc-rename)
" Remap for format selected region
vmap <leader>f <Plug>(coc-format-selected)
nmap <leader>f <Plug>(coc-format-selected)
" Show all diagnostics
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item.
nnoremap <silent> <space>j :<C-u>CocNext<CR>
" Do default action for previous item.
nnoremap <silent> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list
" nnoremap <silent> <space>p :<C-u>CocListResume<CR>
" disable vim-go :GoDef short cut (gd)
" this is handled by LanguageClient [LC]
let g:go_def_mapping_enabled = 0
" Explorer
nmap <space>e :CocCommand explorer<CR>
nmap <space>f :CocCommand explorer --preset floating<CR>
autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif
" Prettier
command! -nargs=0 Prettier :CocCommand prettier.formatFile

View File

@ -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({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
}, {
{ name = 'buffer' },
})
})

View File

@ -0,0 +1,6 @@
require("vtimofei.set")
require("vtimofei.remap")
require("vtimofei.cmp")
require("vtimofei.lsp")
require("vtimofei.plugins")
require("vtimofei.telescope")

View File

@ -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
}

View File

@ -0,0 +1,4 @@
require('vtimofei.lsp.gopls')
require('vtimofei.lsp.rust_analyzer')
require('vtimofei.lsp.sumneko_lua')
require('vtimofei.lsp.tsserver')

View File

@ -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", "<leader>dj", vim.diagnostic.goto_next, {buffer = 0})
end
M.diagnostics_prev = function()
vim.keymap.set("n", "<leader>dk", vim.diagnostic.goto_prev, {buffer = 0})
end
M.rename = function()
vim.keymap.set("n", "<leader>r", vim.lsp.buf.rename, {buffer = 0})
end
M.code_action = function()
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {buffer = 0})
end
return M

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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)

View File

@ -0,0 +1 @@
vim.keymap.set("n", "<leader>e", "<cmd>Ex<CR>")

View File

@ -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 = " "

View File

@ -0,0 +1,6 @@
vim.keymap.set("n", "<leader>dl", "<cmd>Telescope diagnostics<CR>")
vim.keymap.set("n", "<leader>tr", "<cmd>Telescope lsp_references<CR>")
vim.keymap.set("n", "<leader>ti", "<cmd>Telescope lsp_implementations<CR>")
vim.keymap.set("n", "<leader>fw", "<cmd>Telescope live_grep<CR>")
vim.keymap.set("n", "<leader>ff", "<cmd>Telescope find_files<CR>")
vim.keymap.set("n", "<leader>tc", "<cmd>Telescope colorscheme<CR>")

26
.vimrc
View File

@ -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