C# layer
Table of ContentsClose
1. Description
This layer adds support for the C# language using the omnisharp-roslyn language server with either the omnisharp-emacs or the lsp-mode packages.
1.1. Features:
- Syntax checking with flycheck (when
syntax-checkinglayer is used) - Support for auto-completion (when
auto-completionlayer is used) - Refactoring
- Navigation to cross-references
- Inspecting types in metadata
2. Backends
There are two backends available for this layer, one based on the omnisharp-emacs
package and a new one based on lsp-mode (language server protocol) package.
Both backends use the omnisharp-roslyn server under the hood however different
features are available. The omnisharp backend might be more stable at this
moment (late 2019).
3. Install
To use this configuration layer, add it to your ~/.spacemacs. You will need to
add csharp to the existing dotspacemacs-configuration-layers list in this
file.
You can also choose between one of the two available backends by setting
the csharp-backend variable when configuring the layer:
omnisharp(the default), orlsp(testing)nil(to not use any language server)
To use the lsp backend, add `csharp' layer with csharp-backend variable set to 'lsp:
(csharp :variables csharp-backend 'lsp)
3.1. Omnisharp backend
Before you can work with C# files you will need to install the server by invoking
SPC m s i (or M-x omnisharp-install-server). Otherwise, if this fails for you, please see
omnisharp-emacs/doc/server-installation.md.
While the server will start automatically it may still be required for you to start
it manually using SPC m s s (or M-x omnisharp-start-omnisharp-server). It will
prompt a path to your .csproj or .sln file.
4. Caveats
- You should use
dotnetCLI tool from .NET Core download page or an IDE like Visual Studio or Xamarin Studio to manage solution and project files. - Debugging on command line is possible using SDB.
- There can be only one server running at the same time using the
omnisharpbackend. To switch to a different solution/project you need to invokeSPC m s SandSPC m s sto stop current server and start another one pointing to another solution/project. - LSP backend supports multiple concurrent language servers/projects loaded.
5. Key bindings for the omnisharp backend
The following key bindings are available when using the omnisharp backend.
LSP-backend uses key bindings that are common for all layers/languages using the lsp layer.
5.2. Helpers (documentation, info)
| Key binding | Description |
|---|---|
SPC m h t |
Get type information for symbol under cursor |
SPC m h T |
Get type information for symbol under cursor and put it into kill-ring |
5.3. Refactoring
| Key binding | Description |
|---|---|
SPC m r m |
Rename symbol under cursor |
SPC m r M |
Rename symbol under cursor interactively |
SPC m r r |
Refactor under cursor |
5.4. OmniSharp server interaction
| Key binding | Description |
|---|---|
SPC m s i |
Install OmniSharp server |
SPC m s r |
Reload the solution |
SPC m s s |
Start the OmniSharp server |
SPC m s S |
Stop the OmniSharp server |
5.5. Tests
| Key binding | Description |
|---|---|
SPC m t b |
Run tests in current buffer |
SPC m t t |
Run the last executed test again |
SPC m t t |
Run the test around point |