211 lines
5.1 KiB
VimL
211 lines
5.1 KiB
VimL
set runtimepath=$XDG_CONFIG_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$XDG_CONFIG_HOME/after
|
|
set packpath=$XDG_CONFIG_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$XDG_CONFIG_HOME/after
|
|
|
|
set viminfo+='1000,n$XDG_CONFIG_HOME/vim/viminfo
|
|
|
|
" Set this to 1 to use ultisnips for snippet handling
|
|
let s:using_snippets = 0
|
|
|
|
" vim-plug: {{{
|
|
call plug#begin()
|
|
|
|
Plug 'preservim/nerdtree'
|
|
Plug 'OmniSharp/omnisharp-vim'
|
|
|
|
" Mappings, code-actions available flag and statusline integration
|
|
Plug 'nickspoons/vim-sharpenup'
|
|
|
|
" Linting/error highlighting
|
|
Plug 'dense-analysis/ale'
|
|
|
|
" Vim FZF integration, used as OmniSharp selector
|
|
Plug 'junegunn/fzf'
|
|
Plug 'junegunn/fzf.vim'
|
|
|
|
" Autocompletion
|
|
Plug 'prabirshrestha/asyncomplete.vim'
|
|
|
|
" Colorscheme
|
|
Plug 'gruvbox-community/gruvbox'
|
|
|
|
" Statusline
|
|
Plug 'itchyny/lightline.vim'
|
|
Plug 'shinchu/lightline-gruvbox.vim'
|
|
Plug 'maximbaz/lightline-ale'
|
|
|
|
" Snippet support
|
|
if s:using_snippets
|
|
Plug 'sirver/ultisnips'
|
|
endif
|
|
|
|
Plug 'ryanoasis/vim-devicons'
|
|
call plug#end()
|
|
" }}}
|
|
|
|
" Settings: {{{
|
|
filetype indent plugin on
|
|
if !exists('g:syntax_on') | syntax enable | endif
|
|
set encoding=utf-8
|
|
scriptencoding utf-8
|
|
|
|
set number
|
|
set relativenumber
|
|
set listchars=eol:↵,tab:>-,trail:•,extends:>,precedes:<,nbsp:_
|
|
set list
|
|
set cursorline
|
|
|
|
set completeopt=menuone,noinsert,noselect,popuphidden
|
|
set completepopup=highlight:Pmenu,border:off
|
|
|
|
set backspace=indent,eol,start
|
|
set shiftround
|
|
set shiftwidth=4
|
|
set softtabstop=-1
|
|
set tabstop=4
|
|
" set textwidth=80
|
|
set title
|
|
|
|
set hidden
|
|
set nofixendofline
|
|
set nostartofline
|
|
set splitbelow
|
|
set splitright
|
|
|
|
set hlsearch
|
|
set incsearch
|
|
set laststatus=2
|
|
set noruler
|
|
set noshowmode
|
|
set signcolumn=yes
|
|
|
|
set mouse=a
|
|
set updatetime=1000
|
|
" au VimEnter * NERDTree
|
|
map <C-s>:w<CR> " save on Ctrl-S
|
|
map <C-o> :NERDTreeToggle <CR>
|
|
" }}}
|
|
|
|
" Colors: {{{
|
|
augroup ColorschemePreferences
|
|
autocmd!
|
|
" These preferences clear some gruvbox background colours, allowing transparency
|
|
autocmd ColorScheme * highlight Normal ctermbg=NONE guibg=NONE
|
|
autocmd ColorScheme * highlight SignColumn ctermbg=NONE guibg=NONE
|
|
autocmd ColorScheme * highlight Todo ctermbg=NONE guibg=NONE
|
|
" Link ALE sign highlights to similar equivalents without background colours
|
|
autocmd ColorScheme * highlight link ALEErrorSign WarningMsg
|
|
autocmd ColorScheme * highlight link ALEWarningSign ModeMsg
|
|
autocmd ColorScheme * highlight link ALEInfoSign Identifier
|
|
augroup END
|
|
|
|
" Use truecolor in the terminal, when it is supported
|
|
if has('termguicolors')
|
|
" set termguicolors
|
|
endif
|
|
|
|
set background=dark
|
|
colorscheme gruvbox
|
|
" }}}
|
|
|
|
" ALE: {{{
|
|
let g:ale_sign_error = '•'
|
|
let g:ale_sign_warning = '•'
|
|
let g:ale_sign_info = '·'
|
|
let g:ale_sign_style_error = '·'
|
|
let g:ale_sign_style_warning = '·'
|
|
|
|
let g:ale_linters = { 'cs': ['OmniSharp'] }
|
|
" }}}
|
|
|
|
" Asyncomplete: {{{
|
|
let g:asyncomplete_auto_popup = 1
|
|
let g:asyncomplete_auto_completeopt = 0
|
|
" }}}
|
|
|
|
" Sharpenup: {{{
|
|
" All sharpenup mappings will begin with `<Space>os`, e.g. `<Space>osgd` for
|
|
" :OmniSharpGotoDefinition
|
|
let g:sharpenup_map_prefix = '<Space>os'
|
|
let g:OmniSharp_server_use_net6 = 1
|
|
|
|
let g:sharpenup_statusline_opts = { 'Text': '%s (%p/%P)' }
|
|
let g:sharpenup_statusline_opts.Highlight = 0
|
|
|
|
augroup OmniSharpIntegrations
|
|
autocmd!
|
|
autocmd User OmniSharpProjectUpdated,OmniSharpReady call lightline#update()
|
|
augroup END
|
|
" }}}
|
|
|
|
" Lightline: {{{
|
|
let g:lightline = {
|
|
\ 'colorscheme': 'gruvbox',
|
|
\ 'active': {
|
|
\ 'right': [
|
|
\ ['linter_checking', 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_ok'],
|
|
\ ['lineinfo'], ['percent'],
|
|
\ ['fileformat', 'fileencoding', 'filetype', 'sharpenup']
|
|
\ ]
|
|
\ },
|
|
\ 'inactive': {
|
|
\ 'right': [['lineinfo'], ['percent'], ['sharpenup']]
|
|
\ },
|
|
\ 'component': {
|
|
\ 'sharpenup': sharpenup#statusline#Build()
|
|
\ },
|
|
\ 'component_expand': {
|
|
\ 'linter_checking': 'lightline#ale#checking',
|
|
\ 'linter_infos': 'lightline#ale#infos',
|
|
\ 'linter_warnings': 'lightline#ale#warnings',
|
|
\ 'linter_errors': 'lightline#ale#errors',
|
|
\ 'linter_ok': 'lightline#ale#ok'
|
|
\ },
|
|
\ 'component_type': {
|
|
\ 'linter_checking': 'right',
|
|
\ 'linter_infos': 'right',
|
|
\ 'linter_warnings': 'warning',
|
|
\ 'linter_errors': 'error',
|
|
\ 'linter_ok': 'right'
|
|
\ }
|
|
\}
|
|
" Use unicode chars for ale indicators in the statusline
|
|
let g:lightline#ale#indicator_checking = "\uf110 "
|
|
let g:lightline#ale#indicator_infos = "\uf129 "
|
|
let g:lightline#ale#indicator_warnings = "\uf071 "
|
|
let g:lightline#ale#indicator_errors = "\uf05e "
|
|
let g:lightline#ale#indicator_ok = "\uf00c "
|
|
" }}}
|
|
|
|
" OmniSharp: {{{
|
|
let g:OmniSharp_popup_position = 'peek'
|
|
if has('nvim')
|
|
let g:OmniSharp_popup_options = {
|
|
\ 'winblend': 30,
|
|
\ 'winhl': 'Normal:Normal,FloatBorder:ModeMsg',
|
|
\ 'border': 'rounded'
|
|
\}
|
|
else
|
|
let g:OmniSharp_popup_options = {
|
|
\ 'highlight': 'Normal',
|
|
\ 'padding': [0],
|
|
\ 'border': [1],
|
|
\ 'borderchars': ['─', '│', '─', '│', '╭', '╮', '╯', '╰'],
|
|
\ 'borderhighlight': ['ModeMsg']
|
|
\}
|
|
endif
|
|
let g:OmniSharp_popup_mappings = {
|
|
\ 'sigNext': '<C-n>',
|
|
\ 'sigPrev': '<C-p>',
|
|
\ 'pageDown': ['<C-f>', '<PageDown>'],
|
|
\ 'pageUp': ['<C-b>', '<PageUp>']
|
|
\}
|
|
|
|
if s:using_snippets
|
|
let g:OmniSharp_want_snippet = 1
|
|
endif
|
|
|
|
let g:OmniSharp_highlight_groups = {
|
|
\ 'ExcludedCode': 'NonText'
|
|
\}
|
|
" }}}
|