Created
February 5, 2019 20:01
-
-
Save jasonboukheir/a024c7631c02f99439c880f2d50e56a2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" OmniSharp won't work without this setting | |
filetype plugin on | |
" Set the type lookup function to use the preview window instead of echoing it | |
"let g:OmniSharp_typeLookupInPreview = 1 | |
" Timeout in seconds to wait for a response from the server | |
let g:OmniSharp_timeout = 5 | |
" Don't autoselect first omnicomplete option, show options even if there is only | |
" one (so the preview documentation is accessible). Remove 'preview' if you | |
" don't want to see any documentation whatsoever. | |
set completeopt=longest,menuone,preview | |
" Fetch full documentation during omnicomplete requests. | |
" There is a performance penalty with this (especially on Mono). | |
" By default, only Type/Method signatures are fetched. Full documentation can | |
" still be fetched when you need it with the :OmniSharpDocumentation command. | |
"let g:omnicomplete_fetch_full_documentation = 1 | |
" Set desired preview window height for viewing documentation. | |
" You might also want to look at the echodoc plugin. | |
set previewheight=5 | |
" Tell ALE to use OmniSharp for linting C# files, and no other linters. | |
let g:ale_linters = { 'cs': ['OmniSharp'] } | |
let g:OmniSharp_server_path = '/c/OmniSharp/omnisharp.http-win-x64/OmniSharp.exe' | |
let g:OmniSharp_translate_cygwin_wsl = 1 | |
" Fetch semantic type/interface/identifier names on BufEnter and highlight them | |
let g:OmniSharp_highlight_types = 1 | |
augroup omnisharp_commands | |
autocmd! | |
" Show type information automatically when the cursor stops moving | |
autocmd CursorHold *.cs call OmniSharp#TypeLookupWithoutDocumentation() | |
" Update the highlighting whenever leaving insert mode | |
autocmd InsertLeave *.cs call OmniSharp#HighlightBuffer() | |
" Alternatively, use a mapping to refresh highlighting for the current buffer | |
autocmd FileType cs nnoremap <buffer> <Leader>th :OmniSharpHighlightTypes<CR> | |
" The following commands are contextual, based on the cursor position. | |
autocmd FileType cs nnoremap <buffer> gd :OmniSharpGotoDefinition<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>fi :OmniSharpFindImplementations<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>fs :OmniSharpFindSymbol<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>fu :OmniSharpFindUsages<CR> | |
" Finds members in the current buffer | |
autocmd FileType cs nnoremap <buffer> <Leader>fm :OmniSharpFindMembers<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>fx :OmniSharpFixUsings<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>tt :OmniSharpTypeLookup<CR> | |
autocmd FileType cs nnoremap <buffer> <Leader>dc :OmniSharpDocumentation<CR> | |
autocmd FileType cs nnoremap <buffer> <C-\> :OmniSharpSignatureHelp<CR> | |
autocmd FileType cs inoremap <buffer> <C-\> <C-o>:OmniSharpSignatureHelp<CR> | |
" Navigate up and down by method/property/field | |
autocmd FileType cs nnoremap <buffer> <C-k> :OmniSharpNavigateUp<CR> | |
autocmd FileType cs nnoremap <buffer> <C-j> :OmniSharpNavigateDown<CR> | |
augroup END | |
" Contextual code actions (uses fzf, CtrlP or unite.vim when available) | |
nnoremap <Leader><Space> :OmniSharpGetCodeActions<CR> | |
" Run code actions with text selected in visual mode to extract method | |
xnoremap <Leader><Space> :call OmniSharp#GetCodeActions('visual')<CR> | |
" Rename with dialog | |
nnoremap <Leader>nm :OmniSharpRename<CR> | |
nnoremap <F2> :OmniSharpRename<CR> | |
" Rename without dialog - with cursor on the symbol to rename: `:Rename newname` | |
command! -nargs=1 Rename :call OmniSharp#RenameTo("<args>") | |
nnoremap <Leader>cf :OmniSharpCodeFormat<CR> | |
" Start the omnisharp server for the current solution | |
nnoremap <Leader>ss :OmniSharpStartServer<CR> | |
nnoremap <Leader>sp :OmniSharpStopServer<CR> | |
" Enable snippet completion | |
" let g:OmniSharp_want_snippet=1 | |
let g:OmniSharp_selector_ui = '' | |
" Set Code Actions Available flag | |
set updatetime=500 | |
sign define OmniSharpCodeActions text=💡 | |
augroup OSCountCodeActions | |
autocmd! | |
autocmd! FileType cs set signcolumn=yes | |
autocmd CursorHold *.cs call OSCountCodeActions() | |
augroup END | |
function! OSCountCodeActions() abort | |
if OmniSharp#CountCodeActions({-> execute('sign unplace 99')}) | |
let l = getpos('.')[1] | |
let f = expand('%:p') | |
execute ':sign place 99 line='.l.' name=OmniSharpCodeActions file='.f | |
endif | |
endfunction |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment