Not logged in
Resend Validation E-mail
Code Writer App
The most robust syntax-highlighting code editor control for WinForms... period
.NET 3.5 or later
Source Code Available
Bundled in WinForms Studio
WinForms Blog Entries
More WinForms Controls
Help topics cover all controls and product features in detail.
Full-source demos and QuickStarts are included.
Configure the product using Visual Studio designer enhancements.
SyntaxEditor is a syntax-highlighting code editor control that allows you to bring a Visual Studio-like code editing experience into your own applications.
You'll find a wealth of editing and visualization features right out of the box.
Highlighting styles can be completely customized by the end user for each code language.
Advanced Editing Capabilities
SyntaxEditor has all the advanced editing capabilities you'd expect to find in a premium code editor, such as:
Unlimited undo/redo, with operation grouping
Line modification marks
Up to four split views
Block (rectangular) selection
Current line highlighting
Default context menu
Macro recording and playback
Unicode editing support
Input method editor (IME) support
Word wrap, line modification marks, block selection, visible whitespace, and a bookmark
The completion list popup is used to display a number of code completion options to the end user,
IntelliPrompt parameter info displays helpful popup hints about an invocation that is being typed, and its parameters.
Multiple invocation overloads can be displayed in a single popup, using arrow keys to toggle between them.
They support our mini-HTML markup language that applies rich formatting to the displayed text.
Parameter info displayed for a VB Console.WriteLine call
Quick info tips can be used to give more information about what is at the current caret location or under the mouse.
Just like parameter info, they support our special markup language.
Quick info displayed for an XML attribute
A code snippet is a fragment of code or text that you can store in an Visual Studio-compatible XML file and reuse at a later time.
When a code snippet is activated, it inserts its text into SyntaxEditor.
Selecting a code snippet to activate
If any fields are declared in the code snippet, they are highlighted within the inserted code.
This allows the end-user to easily identify what data needs to be entered to complete the code snippet.
If more than one field use the same declaration, then the secondary fields are flagged as dependent on the primary field for the declaration.
They automatically update whenever the text in the primary field is updated.
Editing the fields of an activated code snippet
The IntelliPrompt smart tags flag text characters with a small box that appears underneath the text.
Whenever the mouse hovers over the box, a larger box containing an icon and a drop-down arrow is displayed,
along with a tooltip if tooltip text is provided.
Clicking on the popup triggers an event in which you can respond by displaying a dialog or a menu.
A smart tag popup opened, following a paste
Code Outlining (Folding)
SyntaxEditor has complete support for code outlining, also known as code folding.
Syntax languages can automatically choose where to create outlining nodes (based on tokens, AST's, etc.) or the end user can choose to create outlining nodes via selected text.
When a node is collapsed, a customizable text adornment denotes where the collapsed node is.
Hover the mouse over the adornment to see the collapsed node's text.
SyntaxEditor showing automatic code outlining of CSS code
The outlining margin renders the outlining node hierarchy and allows for easy toggling of outlining node expansion.
Span indicators are indicators that apply to a range of text.
Spelling errors (indicated by wavy lines) and breakpoints are excellent examples.
Span indicators flow and can resize with text as it is modified.
They can render the contained text using alternate foreground and backgrounds, draw custom marks, and render a glyph in the indicator margin.
Demonstration of some span and line indicators
Line indicators, such as bookmarks, apply to a single document line and can render a glyph in the indicator margin.
They track with a specific document line so if lines are inserted above the line with a line indicator, the line indicator is moved down with its designated line.
When the caret is next to a defined bracket, such as parenthesis or curly braces, highlights can render the bracket and its matching bracket.
Hotkey commands are available to jump or select to the matching bracket.
Single-Line Edit Mode
SyntaxEditor supports a single-line mode that renders just like a regular TextBox.
This enables you to have a simple TextBox but with all the syntax-highlighting, selection, IntelliPrompt and other features that make SyntaxEditor great for editing code.
A SyntaxEditor in single-line edit mode, editing a HTML snippet
While the SyntaxEditor editor views have numerous built-in margins (indicator, line number, outlining, etc.),
SyntaxEditor offers an extensibility point where a custom margin can be added to editor views.
Documents and Languages
They basically encapsulate all functionality for a particular code language that is being used within a SyntaxEditor control.
This is everything from various types of parsing all the way to simpler features like determining word breaks or performing line commenting.
Custom language definition can easily be created, thereby making it possible to build a code editor for any proprietary language.
While SyntaxEditor's flexible dynamic language definitions allow for nearly any language to be defined, sometimes it is necessary for more than a single language to be used.
An ASP.NET language would most likely have HTML as a root language with tokens that can transition into ASP.NET, CSS, JScript, and VBScript languages on the fly.
SyntaxEditor fully supports transitions between parent languages to child languages.
This feature allows you to support the complicated language switching requirements of modern web languages and code generation templates.
Lexers and Parsers
Lexing is the process of scanning text and breaking it up into meaningful tokens that can be examined by a higher-level parser,
and used to drive syntax highlighting features in the editor. Regular expression-based and hand written lexers are supported.
Parsing is the process of performing syntax and/or semantic analysis on a text, and outputing some sort of parse data, generally an AST.
SyntaxEditor supports the automated calling of parsers via worker threads following text changes.
Any custom or third-party parser can be called and used with SyntaxEditor.
Code fragment editing is useful in situations such as where you want an end user to only see and edit the contents of a specific method or property,
or perhaps only a certain statement or expression. When using any language that has a parser, this type of editing is easily achieved with SyntaxEditor.
Automated IntelliPrompt features for the language continue to function normally too.
Code fragment editing is achieved by setting a header and footer text property on the document.
Neither the header nor footer are visible to the end user but for parsing purposes, they are pre- and post-pended to the document's text being edited by the end user.
This allows for a complete, valid document to be parsed, even though the end user is only modifying a portion of it.
A parser generator is a tool that takes a language grammar that you define and builds a code-based parser from that.
The parser is intended to be used in the semantic parsing stage of the of the document modification parsing sequence.
SyntaxEditor includes a parser generator than can be used to help support features like AST construction and syntax error reporting.
The SyntaxEditor parser generator builds a top-down parser that uses LL(k) and outputs code that is easy to read like a recursive descent parser.
Export to HTML and RTF
SyntaxEditor has built-in functionality for exporting syntax-highlighted text content to a string or file in HTML and/or RTF formats.
Text statistics are a powerful feature that provide statistics about text in a document.
By default, there are numerous text statistics available such as line, sentence, word, character counts, and even readability scores.
Languages can choose to customize the statistics by supplying additional ones like commented-line counts, etc.
General Search Functionality
All of the standard find/replace options are available, such as match case, match whole word, search up,
multiple search pattern providers (regular expressions, wildcards, etc.), scope options, etc.
Regular expression searches return captures and support substitutions.
A find/replace dialog is included with SyntaxEditor that provides all the functionality you'd find in an IDE.
The display of various Print and Print Preview dialogs is as easy as a simple method call.
SyntaxEditor includes a number of settings that affect printouts only, and not the editor views.
A WYSIWYG print preview dialog
SyntaxEditor comes packaged with a FontDropDownList control that can be used on an Options dialog to select a non-Symbol Font for use in a SyntaxEditor.
The FontDropDownList control filters out any symbol fonts such as WingDings and shows any fixed-width fonts in bold type.
FontDropDownList and TextStylePreview controls
SyntaxEditor also includes a TextStylePreview control that can be used on an Options dialog to demonstate text style settings to an end user.
The TextStylePreview control supports the display of foreground color, background color, font, border around text, wave lines, and more.
It can display exactly how a highlighting style affects text.
Code Writer App
Log in to add comments
Related clip arts and images