Sold separately from SyntaxEditor and its containing bundles
The .NET Languages Add-on, combined with the SyntaxEditor control, brings an enhanced C# and Visual Basic code editing experience to your end users.
Automated completion lists and 'Ctrl+Space' auto-complete features are fully supported and available out-of-the-box. The context-sensitive completion data is populated with information from the reflection repository.
Automated parameter info tips show whenever typing an invocation, such as for a method call. The tips show detailed information about the invoked member along with details about the current argument being typed. In the case where the invoked member has multiple overloads, arrows show on the popup and allow toggling between all the available overloads.
Automated quick info tips show whenever the mouse is hovered over words such as identifiers. The quick info tips display detailed information about the related type, member, variable, etc. Similar to parameter info tips, all information is presented using rich text formatting.
IntelliPrompt code snippets provide a way to insert pre-defined fragments of text into the editor. A popup mechanism is included for selecting from available code snippets.
Each code snippet can declare multiple fields of text, and when a code snippet template session is activated in SyntaxEditor, the text is inserted and the end user can tab between the fields to edit their values.
Any code snippets designed for Visual Studio can be loaded into SyntaxEditor since the file formats are the same. Available code snippets appear in the 'Ctrl+Space' completion list.
A NavigableSymbolSelector control is included with SyntaxEditor that provides two side-by-side drop-downs similar to the type/member drop-downs above the code editor in Visual Studio. For the languages in this add-on, one drop-down shows all available type symbols, and the other shows all available member symbols within the currently selected type symbol.
As the caret in a bound SyntaxEditor instance is moved, the selections in the NavigableSymbolSelector update to indicate the enclosing symbols (types/members). The end user can also select a different symbol from the drop-downs to navigate directly to the related symbol declaration.
Syntax highlighting is included for both C# and VB, which makes it easier to visually distinguish things like keywords, strings, and comments while editing.
/// (C#) or
''' (VB) immediately before a type or member,
stub documentation comments will automatically be inserted.
As Enter is pressed within a documentation comment,
/// (C#) or
''' (VB) are auto-inserted on the next line for continuation of the comment.
A context-sensitive completion list of tags is displayed whenever typing a new start tag within documentation comments.
When typing a
> to close a start tag, the appropriate end tag is auto-inserted.
The C# and VB parsers are designed according to the latest official language specifications.
The language parsers output an AST (abstract syntax tree) for each document parsed. This tree consists of a node for every code construct in the document (type declaration, statement, expression, etc.). Over 130 distinct AST node classes are defined and used by both the C#/VB parsers so that regardless of which language is in use, the same AST format is returned in the parse results.
While the parser executes, it keeps track of any syntax errors that are found and reports these back in the parse data results. SyntaxEditor then renders squiggle lines under each error and provides quick info tips with information describing the error.
Automatic code outlining is performed based on the AST data generated by the parser. This means that only blocks such as type and member declarations are rendered as outlining nodes.
#Region ... #EndRegion blocks can be collapsed, and 'Collapse to Definitions' support is included.
The add-on manages reflection data for both .NET assemblies as well as source code files. All of this data, which consists of everything from namespaces down to member parameters, is stored in a common set of interfaces so that it may easily be queried and used by features like the resolver, thus helping to populate automated IntelliPrompt.
Built-in functionality can be called from menus/toolbars to comment and uncomment code lines.
Smart indenting occurs when the Enter key is pressed and determines how far to indent text on the next line based on the contents of the code that surrounds the caret.
For instance, characters such as
: have an effect on the smart indent level in C#.
A text formatter is included that can beautify C# and VB documents by properly indenting the code and normalizing whitespace.
Delimiter highlighting is included, meaning that as an end user moves the caret next to a delimiter, its matching delimiter is highlighted. Hotkeys allow for quickly moving or selecting to the matching delimiter.
When an open delimiter such as an open curly brace is typed, it's related close delimiter is automatically inserted after the caret. This feature improves typing productivity.
SyntaxEditor's code fragments feature allows an end user to edit a small fragment of code, but for parsing purposes, the document's text is pre-pended with hidden header text and post-pended with hidden footer text. When combined with the .NET Languages Add-on, this can be a very powerful feature since it enables scenarios for the end user to edit method bodies, or a single statement/expression. The best part is that automated IntelliPrompt and syntax error reporting still continue to work as expected!