SyntaxEditor for WPF

The most robust syntax-highlighting code editor control for WPF... period

  • Bring a powerful Visual Studio-like code editing experience to your own applications
  • Includes all of the advanced features found in popular code editors
  • Syntax languages for most popular languages are available, or custom build your own to handle any proprietary language
SyntaxEditor
An IntelliPrompt completion list and description tip displayed while editing a C# document.

Syntax Highlighting

Syntax Highlighting

Highlighting styles can be completely customized by the end user for each code language. SyntaxEditor comes with syntax highlighting for over 25 languages.

Code Outlining (Folding)

Code Outlining (Folding)

The end user can collapse ranges of text defined by the language. A small adornment represents the collapsed text, and hovering over it shows the contained text.

Selection Modes

Selection Modes

While standard continuous selection mode is generally used, a special block selection mode is available that supports simultaneous editing of multiple lines.

Indicators

Indicators

Indicators are special 'tagged' regions of text that display a glyph in the indicator margin and optionally highlight the text range with special styles. Text range-based (e.g. breakpoint) and line-based (e.g. bookmarks) indicators are supported.

Adornments

Adornments

A powerful adornment layer system allows for any sort of custom UI elements (images, shapes, and even controls) to be added anywhere within the text area. Easily add squiggle lines, background highlights, or any other decoration to text.

Search (Find/Replace)

Search (Find/Replace)

A flexible search API is built into the control with the ability to highlight matches. End users can use incremental search to search without UI, or our search view control that has a ready-to-go find/replace user interface.


Word Wrap

Word Wrap

When word wrap is enabled, long lines will wrap at the editor view's edge to a new line so that all text can be visible without horizontal scrolling.

Single-Line Mode

Single-Line Mode

An optional single-line mode renders the control like a regular TextBox, but with all the syntax-highlighting, selection, IntelliPrompt, and other features that make SyntaxEditor great.

Split Views

Split Views

Split the editor into multiple resizable views so that different portions of the same document can be viewed and edited in the same editor control.


Undo and Redo

Edits to a document are tracked in undo and redo stacks, allowing an end user to backtrack to an earlier version of the document's text.

Block Indent/Outdent

Select multiple lines and press Tab to block indent them to the next tab stop, or Shift+Tab to outdent them.

Visible Whitespace

Tab and space characters can optionally be represented by glyphs that show which character generated whitespace.

Delimiters

Languages can easily support delimiter (bracket) highlighting and delimiter auto-completion.

Drag and Drop

Drag and drop text within the editor view, or externally to/from other applications where you can determine the drop's textual representation.

Margins

Line number, outlining, selection, ruler, and word wrap editor view margins ship with the control. Custom margins can be created as well.

Printing

Built-in dialogs support configurable document printing. Document title, line number, word wrap glyph, and page number margins are included.

Bi-Di Editing and IME

All text is edited in Unicode characters and bi-directional editing is fully supported. IME can be used to input extended character glyphs.


This product is fully-loaded with additional advanced features like over 100 edit actions, line modification marks, commenting/uncommenting, auto-case correct, current line highlighting, read-only regions, code block selection, mouse wheel zooming, clipboard operations, a default context menu, macro recording and playback, text statistics, export to HTML/RTF, and much more.

IntelliPrompt

IntelliPrompt UI features are an aid to the end user that support code completion and provide contextually-aware information about surrounding code.

Completion List

Completion List

Displays a number of auto-complete options for the end user to choose in response to Ctrl+Space. Features include description tips, filters, numerous matching algorithms, matched text highlights, and more.

Parameter Info

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.

Quick Info

Quick Info

Provides detailed information about what is at the current caret location or under the mouse. Use our mini-HTML markup language to apply rich formatting to the displayed text.

Code Snippet Selection

Code Snippet Selection

Shows a completion list for navigating through code snippet folders and selecting an applicable code snippet to insert. Code snippets use the same Visual Studio file format.

Code Snippet Templates

Code Snippet Templates

Each code snippet can declare multiple fields of text. When a code snippet template session is activated, the text is inserted and the end user can tab between the fields to edit their values.

Navigable Symbols

Navigable Symbols

Drop-downs positioned above the editor can show all available root symbols (generally types) and members within the selected root symbol. The selections update as the caret is moved in the editor.

Premium SyntaxEditor Language Add‑ons

Enhance the SyntaxEditor code-editing experience with features like parsing, syntax error reporting, automated code outlining, and IntelliPrompt.

These premium add-ons are sold separately from SyntaxEditor and control bundles.

Documents and Syntax Languages

Document change flow chart
When a text change creates a new document snapshot, the snapshot is lexed to update syntax highlighting, and can be parsed to produce an updated AST and report syntax errors.

Documents

Documents are edited by SyntaxEditor and provide access to the text being edited. Each document is associated with a syntax language that provides the control with editing feature configurations and logic.

Snapshots

The complete document text is available any time via snapshots, where each snapshot is an immutable versioned thread-safe copy of the text at the time it was created.

Lexers

Lexing is the process of scanning text and using logic or pattern-matching to break it up into meaningful tokens. These tokens drive syntax highlighting and are examined by a higher-level parser.

Parsers

Parsing can run in a worker thread and is the process of performing syntax and/or semantic analysis on a text, and outputing some sort of parse data, generally an AST (abstract syntax tree) and syntax error collection.


Syntax Languages

SyntaxEditor comes with over 25 open source syntax languages that feature syntax highlighting.

Assembly
Batch file
C
C#
C++
CSS
HTML
INI file
Java
JavaScript
Lua
Markdown
MSIL
Pascal
Perl
PHP
Powershell
Python
RTF
Ruby
SQL
VBScript
Visual Basic
XAML
XML

Need to support other code languages? No problem, you can custom develop syntax languages using all of SyntaxEditor's rich feature set.


LL(*) Parser Framework

The LL(*) Parser Framework is Actipro's own framework for constructing robust text parsers that work standalone or with code editor controls.

functionDeclaration.Production = @function + 
		identifier["name"] + 
		openParenthesis.OnErrorContinue() + 
		functionParameterList["params"].Optional() + 
		closeParenthesis.OnErrorContinue() + 
		block["block"].OnErrorContinue() 
		> Ast("FunctionDeclaration", 
			AstFrom("name"), 
			AstConditionalFrom("Parameters", "params"), 
			AstFrom("block"));

The framework features grammars that are written in C#/VB using EBNF-like notation, customizable AST construction, advanced error handling/reporting, easy code injection, a complete debugger UI, and much more.


Other Features

Code Fragments

Code Fragments

There can be situations where an end user should only see and edit the contents of a specific method or property, or perhaps only a certain statement or expression. Code fragments support this scenario, enabling full parsing and automated IntelliPrompt.

Language Designer

Language Designer

This application ships with SyntaxEditor and aids in the creation of syntax languages. It can perform code generation for a number of language features and even includes a debugger for grammars written using our LL(*) Parser Framework.

Windows Workflow Designer

Windows Workflow Designer

SyntaxEditor and its .NET Languages Add-on can be used as the expression editor within a rehosted Windows Workflow Designer instance, which allows for automated IntelliPrompt when editing variables in expressions. Learn more.

"SyntaxEditor is a state-of-the-art editor that is perfect for editing our custom scripting language. After only a few days of development, our new editor contained all the great features available in high-end code editors. I wish all our development could be so easy!"
Mario Pasquali - President and Co-founder, Ellisys

Controls

This product includes these UI controls, for use in applications built with the WPF platform:

EditorSearchView
NavigableSymbolSelector
SyntaxEditor
TextStylePreview

Explore Other WPF Controls

Next Steps

Free Evaluation

The best way to learn about our UI controls and their features is to download a free trial. This will allow you to see samples, documentation, and integrate them into your own apps.

Download Trial

Need Help?

Do you have any licensing or sales questions? Do you have a technical question while evaluating? Please contact us so that our friendly staff can assist you.

Contact Us

Licensing

When your app's development team is licensed, you can distribute an app using our royalty-free UI controls to anyone. Our purchase page helps you calculate the licensing to meet your needs.

Purchase Licenses


Online Documentation

All product documentation topics and a complete API reference are available for browsing on our web site.

View Documentation

GitHub Repository

Clone our open-source repository on GitHub for the full source of the WPF Controls sample projects and documentation topics.

View Repository

NuGet Packages

Install product NuGet packages from nuget.org into any project, and easily update when new versions are released.

View Packages