Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add white space and/or format code?

Tags:

roslyn

Given that I have created a symbol using SymbolFactory.CreateProperty, how would I add white space. Currently I get accessibility, modifiers, name, type etc. all stringed together when writing out document. Maybe I am writing it out wrong, or I need to add extra step to add white space? I use document.GetText() to write it out to console.

like image 307
epitka Avatar asked Oct 31 '13 15:10

epitka


2 Answers

Nope, that's what you expect. Generated nodes don't have whitespace, with the intent you'll process it once you're done.

There are two options:

  1. Call .NormalizeWhitespace() on the nodes. This is an aggressive formatter that is really only useful if you're generating code you don't intend to be consumed by a human -- it makes the output "valid" but blows away any existing formatting.
  2. Call Formatter.Format(), from Microsoft.CodeAnalysis.Formatting (part of the Microsoft.CodeAnalysis.Workspaces.Common package). This is the fancy formatter which will attempt to preserve existing whitespace and such, and will only update the nodes that need fixing. This is best if you're updating user code and you don't want to stomp on it.
like image 116
Jason Malinowski Avatar answered Oct 08 '22 17:10

Jason Malinowski


I had the same issue, and I found this to work the best:

node.WithTrailingTrivia(SyntaxFactory.Space)

where node is a SyntaxToken of any kind.

like image 37
Wish Avatar answered Oct 08 '22 17:10

Wish