--vim:set ts=2 sw=2 et: --fix different locale settings when ssh'ing vim.o.encoding = 'utf-8' vim.o.syntax = 'on' --display all matching files when we tab complete vim.o.wildmenu = true --replace vertical split pipe character with space vim.o.fillchars = 'vert:|,fold: ' --Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable --delays and poor user experience. vim.o.updatetime = 300 vim.o.splitright = true vim.o.splitbelow = true --switch buffers without writing to file vim.o.hidden = true --fold indents vim.o.foldmethod = 'indent' --don't open folds when jumping over one with (, {, [[ or [{ vim.opt.foldopen = vim.opt.foldopen - { 'block' } --search down into subfolders --provides tab-completion for all file-related tasks vim.opt.path = vim.opt.path + { '**' } --line numbers vim.o.number = true --changes to current directory when creating new files vim.o.autochdir = true --higlhight search vim.o.hls = true --search as characters are entered vim.o.incsearch = true --line for linewrapping vim.o.colorcolumn = '80' --wrap text instead of being on one line vim.o.lbr = true --default Colors for CursorLine vim.o.cursorline = true vim.o.termguicolors = true vim.o.background = 'dark' vim.cmd('colorscheme space_vim_theme') --enable statusbar vim.o.laststatus = 2 vim.o.statusline = ' %F %m%r%w %= %{hostname()} %{strlen(&ft)?&ft:"none"} %{(&bomb?",BOM":"")} %{&ff} %l/%L %c %P' --open folds by default vim.cmd('autocmd Syntax * normal zR') --file specific formatting vim.cmd[[ autocmd Filetype python,bash,sh,java,php,json \ setlocal tabstop=4 softtabstop=4 shiftwidth=4 \ expandtab autoindent fileformat=unix ]] vim.cmd[[ autocmd Filetype css,scss,html,htmldjango,javascript,yaml \ setlocal tabstop=2 softtabstop=2 shiftwidth=2 \ expandtab autoindent ]] --color trailing spaces with red color vim.cmd('highlight ExtraWhitespace ctermbg=green guibg=green') vim.cmd('match ExtraWhitespace /s+$/') vim.cmd('autocmd BufWinEnter * match ExtraWhitespace /s+$/') vim.cmd('autocmd InsertEnter * match ExtraWhitespace /s+%#@ buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. local opts = { noremap=true, silent=true } --see `:help vim.lsp.*` for documentation on any of the below functions buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) end --enable some language servers with the additional completion capabilities --offered by nvim-cmp local servers = { 'pyright', } for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup { on_attach = on_attach, capabilities = capabilities, } end --nvim-cmp setup local cmp = require('cmp') cmp.setup { mapping = { [''] = 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.Replace, select = true, }, [''] = function(fallback) if cmp.visible() then cmp.select_next_item() else fallback() end end, [''] = function(fallback) if cmp.visible() then cmp.select_prev_item() else fallback() end end, }, sources = { { name = 'nvim_lsp' }, }, }