The ChameleonRichTextBox is a second-generation syntax highlighting control, the successor to two earlier works, one part of my CleanCode library and one that I found on the CodeProject web site. The table below provides a detailed feature comparison of all three, but in a nutshell:
The ChameleonRichTextBox is part of the CleanCode libraries available here. It uses a modified version of the kabwla/uri guy control as a base class. The source for this modified version is also available at my download site.
New With CleanCode version 0.9.28 (June 2009):
New With CleanCode version 0.9.27 (April 2009):
This illustration shows the 6 types of highlighting and macro capability.
Topic |
kabwla/uri guy SyntaxHighlightingTextBox |
CleanCode SyntaxHilightTextBox |
CleanCode ChameleonRichTextBox |
HIGHLIGHTING – |
GENERAL |
|
|
Enable/disable highlighting |
Yes |
Yes |
Yes |
Choice to hide or retain current highlighting when disabling further highlighting |
No |
No |
Yes |
Parses thoroughly |
No Ex: @abc/max(5,25) with no spaces fails. |
Yes |
Yes |
Auto-highlight fires only when user pauses typing |
No |
Yes |
Yes |
Font color selectable |
Yes |
No |
Yes |
Font family selectable |
No |
No |
Yes |
Font style selectable |
No |
No |
Yes |
HIGHLIGHTING – |
COMMENTS |
|
|
Highlight comments |
Yes |
Yes |
Yes |
Recognize block comments |
Yes |
Yes |
Yes |
Recognize end-of-line comments |
Yes |
Yes |
Yes |
Differentiate styles for block comments and end-of-line comments |
Yes |
No |
Yes |
HIGHLIGHTING – |
STRINGS |
|
|
Highlight strings |
Yes |
Yes |
Yes |
Recognize multiple delimiters for strings |
Yes |
Yes |
Yes |
Differentiate styles for different string delimiters |
Yes |
No |
Yes |
HIGHLIGHTING – |
VARIABLES |
|
|
Highlight variables |
Yes |
No |
Yes |
Recognize multiple delimiters for variables |
Yes |
Yes |
Yes |
Differentiate styles for different variables |
Yes |
No |
Yes |
Selectable convert-to-uppercase |
No |
No |
Yes |
Selectable convert-to-lowercase |
No |
No |
Yes |
Supports variable tokens where one is a subset of another (e.g. @@ and @) |
No |
NA |
Yes |
HIGHLIGHTING – |
KEYWORDS |
|
|
Highlight keywords |
Yes |
Yes |
Yes |
Recognize multiple delimiters for keywords |
Yes |
Yes |
Yes |
Differentiate styles for different keywords |
Yes |
No |
Yes |
Enable/disable case-sensitivity on matching |
Yes |
No |
Yes |
Selectable convert-to-uppercase |
No |
No |
Yes |
Selectable convert-to-lowercase |
No |
No |
Yes |
COMMAND COMPLETION |
|
|
|
Command completion |
Yes |
No |
Yes |
Enable/disable command completion |
Yes |
NA |
Yes |
Handles full range of key/mouse interaction |
No Up/down arrow only. |
NA |
Yes |
Allows multiple words |
No |
NA |
Yes |
Allows multiple lines |
No |
NA |
Yes |
Selectable convert-to-uppercase |
No |
NA |
Yes |
Selectable convert-to-lowercase |
No |
NA |
Yes |
Selectable convert-to-matching-case |
No |
NA |
Yes |
MACROS |
|
|
|
Macro substitution |
No |
No |
Yes |
Highlights place holders |
NA |
NA |
Yes |
Seek next place holder |
NA |
NA |
Yes |
USAGE / CUSTOMIZABILITY |
|
|
|
Configurable to new languages |
Yes |
Yes |
Yes |
Provides several SQL dialects ready to use |
No |
Yes |
Yes |
Easy to customize |
No Needs intricate manual coding plus XML file. |
No Needs subclassing plus simple manual coding. |
Yes (only needs an XML context file) |
Dynamic (runtime) language customization |
No |
No |
Yes (simply select a new context file) |
RESPONSE TIME |
|
|
|
Good response time for short text |
Yes |
Yes |
Yes |
Good response time for medium text |
Yes |
No Too much reliance on regexps. |
Yes |
Good response time for long text |
No Acts on every keystroke rather than only when user pauses. |
No Too much reliance on regexps. |
Yes |
TEXT HANDLING |
|
|
|
Search by text, wildcard, or regular expression |
No |
No |
Yes |
Replace by text, wildcard, or regular expression |
No |
No |
Yes |
Increase/decrease font size |
No |
Yes |
Yes |
Comment/uncomment region |
No |
Yes |
Yes |
Indent region left/right |
No |
Yes |
Yes |
Delete range by line boundaries |
No |
No |
Yes |
Returns selected text or all text |
No |
Yes |
Yes |
Undo/redo reset capability (allows, for example, restarting undo stack when loading a new file) |
No |
No |
Yes |
Undo/redo properly manipulates user typing only |
Yes |
No Highlighting actions themselves get on the undo stack. |
Yes |
TABS AND SPACES |
|
|
|
Toggle whether inserting a tab means a tab character or multiple spaces |
No |
Yes |
Yes |
Adjust number of spaces inserted for tab when in space-mode |
No |
No |
Yes |
MISCELLANEOUS |
|
|
|
Displays available commands |
No |
Yes |
Yes |
Displays summary of context |
No |
No |
Yes |
Context menu to manipulate properties |
No |
No |
Yes |
|
|
|
|
This quick reference chart shows the available user commands of the ChameleonRichTextBox: