1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-02 20:30:05 +08:00

Change: fix csharp layer and update doc (#2935). (#3007)

This commit is contained in:
VyronLee 2019-08-23 07:59:05 +08:00 committed by Wang Shidong
parent cdca7e3648
commit 57fed587d3
3 changed files with 31 additions and 41 deletions

View File

@ -32,35 +32,21 @@
function! SpaceVim#layers#lang#csharp#plugins() abort
let plugins = []
call add(plugins, ['OmniSharp/omnisharp-vim', {'on_ft' : 'cs'}])
if has('nvim')
call add(plugins, ['autozimu/deoplete-omnisharp', {'on_ft' : 'cs'}])
else
call add(plugins, ['tpope/vim-dispatch', {'on_ft' : 'cs'}])
endif
call add(plugins, ['OmniSharp/omnisharp-vim', { 'on_ft' : 'cs' } ])
return plugins
endfunction
function! SpaceVim#layers#lang#csharp#set_variable(var) abort
if has_key(a:var, 'highlight_types')
let g:OmniSharp_highlight_types = a:var.highlight_types
endif
endfunction
function! SpaceVim#layers#lang#csharp#config() abort
" Get Code Issues and syntax errors
let g:syntastic_cs_checkers = ['syntax', 'semantic', 'issues']
augroup spacevim_csharp
autocmd!
if !has('nvim')
" Set autocomplete function to OmniSharp by default
autocmd FileType cs setlocal omnifunc=OmniSharp#Complete
endif
" Automatically add new cs files to the nearest project on save
autocmd BufWritePost *.cs call OmniSharp#AddToProject()
" Show type information automatically when the cursor stops moving
autocmd CursorHold *.cs call OmniSharp#TypeLookupWithoutDocumentation()
augroup END
autocmd FileType cs setlocal omnifunc=OmniSharp#Complete
call SpaceVim#mapping#space#regesit_lang_mappings('cs', function('s:language_specified_mappings'))
endfunction
@ -102,6 +88,18 @@ function! s:language_specified_mappings() abort
\ 'OmniSharpFindMembers',
\ 'find members in the current buffer', 1)
" Code action
let g:_spacevim_mappings_space.l.c = {'name' : '+Code action'}
call SpaceVim#mapping#space#langSPC('nmap', ['l', 'c', 'f'],
\ 'OmniSharpFixUsings',
\ 'Fix using', 1)
call SpaceVim#mapping#space#langSPC('nmap', ['l', 'c', 'a'],
\ 'OmniSharpGetCodeActions',
\ 'Contextual code actions', 1)
call SpaceVim#mapping#space#langSPC('nmap', ['l', 'c', 'c'],
\ 'OmniSharpGlobalCodeCheck',
\ 'Find all code errors/warnings for the current solution', 1)
" Server interaction
let g:_spacevim_mappings_space.l.s = {'name' : '+Server interaction'}
call SpaceVim#mapping#space#langSPC('nmap', ['l','s', 'r'],

View File

@ -113,6 +113,9 @@ call deoplete#custom#var('omni', 'input_patterns', {
\ ],
\})
" c#
call deoplete#custom#option('sources', {'cs': ['omnisharp']})
" public settings
call deoplete#custom#source('_', 'matchers', ['matcher_full_fuzzy'])
call deoplete#custom#source('file/include', 'matchers', ['matcher_head'])

View File

@ -21,33 +21,19 @@ This layer is for csharp development.
## Install
### Layer
To use this configuration layer, update custom configuration file with:
```toml
[[layers]]
name = "lang#csharp"
highlight_types = 0
```
### OmniSharp Server
You must build the *OmniSharp Server* before using this layer's features.
After all plugins installed, *cd* to the directory `$SPACEVIM_PLUGIN_BUNDLE_DIR/repos/github.com/OmniSharp/omnisharp-vim/server` (by default `$HOME/.cache/vimfiles/repos/github.com/OmniSharp/omnisharp-vim/server`, and then run
```
xbuild
```
for macOS and linux, or
```
msbuild
```
for Windows.
For more information, please read this [link](https://github.com/OmniSharp/omnisharp-vim#installation).
When opening a cs file at first time, it will popup a window and ask whether install the OmniSharp
server or not, enter 'Y' to confirm.
If you choose "coc" as your auto completion engine, you must run ":CocInstall coc-omnisharp"
to install the extension.
## Key bindings
@ -63,6 +49,9 @@ For more information, please read this [link](https://github.com/OmniSharp/omnis
| `SPC l g s` | find symbols |
| `SPC l g u` | find usages of symbol under cursor |
| `SPC l g m` | find members in the current buffer |
| `SPC l c f` | fix using |
| `SPC l c a` | contextual code actions |
| `SPC l c c` | find all code errors/warnings for the current solution|
| `SPC l s r` | reload the solution |
| `SPC l s s` | start the OmniSharp server |
| `SPC l s S` | stop the OmniSharp server |