Actipro Software LLC
SyntaxEditor Software Component Product
Copyright (c) 2001-2009 Actipro Software LLC. All rights reserved.
SyntaxEditor .NET Control
Current Version: SyntaxEditor 4.0.0281, WinUICore 1.0.0101
Last Updated: 3/13/2009
Release History
Redistributable Files:
For .NET 2.0 and later: ActiproSoftware.SyntaxEditor.Net20.dll, ActiproSoftware.WinUICore.Net20.dll, ActiproSoftware.Shared.Net20.dll
Additional Redistributable Files (if you own the .NET languages add-on):
For .NET 2.0 and later: ActiproSoftware.SyntaxEditor.Addons.DotNet.Net20.dll
Additional Redistributable Files (if you own the web languages add-on):
For .NET 2.0 and later: ActiproSoftware.SyntaxEditor.Addons.Web.Net20.dll
Requirements:
.NET framework v2.0 or later
Overview
Thank you for downloading the SyntaxEditor .NET control from Actipro Software.
SyntaxEditor is a powerful editing control, similar to a multi-line TextBox,
which syntax highlights text and provides an amazing number of state-of-the-art
features for code editing. SyntaxEditor is modeled after the code editor in
VS.NET and provides nearly all of its functionality. Custom language definitions
can be developed and distributed with your applications.
Licensing
The product you've downloaded or copied is fully functional version of the product.
If the product is marked as an Evaluation Release, you are placed under the terms of
the Evaluation License (see EULA.html).
Under this Evaluation License, you may only use the product for evaluation purposes
for a period of 21 days, after which you must either remove all files associated with
the product or purchase a Single Developer License for each individual developer on
a project that uses the product.
Under the terms of the Evaluation License, you may not distribute any of the
files associated with the control. In order to distribute files marked as Redistributable, you must purchase a Single Developer License.
In the Evaluation Release of the control, a popup About window is displayed whenever
the control is instantiated.
This is removed upon the purchase of a Single Developer License.
Purchasing a Single Developer License
Single Developer Licenses for the control may be purchased securely on-line using any major credit card at:
https://www.ActiproSoftware.com/Purchase/DotNet/Order.aspx.
Each Single Developer License allows a single developer to work with the control beyond
the Evaluation Period and enables them to distribute any of the files marked as Redistributable royalty-free.
Each individual developer on a project using a component requires a separate license,
whether they directly use the component or not!
This means "one license for EVERY developer on the project", NOT "one license per developer using the component."
After all, your entire project benefits by using the component.
Discount volume licenses and site licenses are also available.
Installation
To install and run a test application for the product:
- Unzip the downloaded .ZIP file to any folder.
- Read and agree to the End-User License Agreement (in EULA.html).
- Run the Setup application to install the product.
- Load a sample solution for the product into Visual Studio .NET.
- Execute the solution.
Assembly Locations
The redistributable assemblies are installed to several locations.
-
The ActiproSoftware.SyntaxEditor.Net20.dll,
ActiproSoftware.SyntaxEditor.Addons.DotNet.Net20.dll, and
ActiproSoftware.SyntaxEditor.Addons.Web.Net20.dll
assemblies are installed to the [Drive]:\Program Files\Actipro Software\WindowsForms\SyntaxEditor\[Version]\ folder.
-
The ActiproSoftware.WinUICore.Net20.dll assembly is installed to the
[Drive]:\Program Files\Common Files\Actipro Software\WindowsForms\WinUICore\[Version]\ folder.
-
The ActiproSoftware.Shared.Net20.dll assembly is installed to the
[Drive]:\Program Files\Common Files\Actipro Software\WindowsForms\Shared\[Version]\ folder.
Reusing the Product / Adding Toolbox Item(s) for the Product
To reuse the product elsewhere, follow these steps:
- In Visual Studio .NET, click the Tools/Choose ToolBox Items command.
- On the window that opens, click on the .NET Framework Components tab.
- Click the Browse button and select the assemblies installed by the setup package file (generally into a C:\Program Files\Actipro Software\[ProductName]\[Version]\ folder).
- Ensure that the controls and components included in the assemblies appear in the list and are checked.
- Press the OK button.
- The checked controls and components should appear in the Toolbox.
Deploying Your Application
To deploy an application that uses this product, simply copy the redistributable assemblies mentioned above to the same folder as
your application's executable. Nothing else needs to be deployed.
Your license information will be compiled into your application by Visual Studio.
For more information on licensing, such as how it works and how to set it up, please read the detailed
Licensing FAQ page on our support site.
Documentation
Complete documentation is available in the Documentation.chm HTML Help file.
We also recommend looking at the source code of provided test solution(s) since they make use of
much of the product's functionality.
Support
Actipro Software has set up discussion forums specifically for suggestions and support requests for our
.NET components. You can find these discussion forums in our support site.
We strongly urge you to post messages there.
Other .NET Components
For information about other Actipro Software .NET components, please visit
http://www.ActiproSoftware.com/Products/DotNet/.
Actipro Software LLC
For more information about Actipro Software, please visit
http://www.ActiproSoftware.com/.
Bullet Key:
- Indicates a normal addition or change.
- Indicates a breaking change in the object model.
3/13/2009 - Version 4.0.0281
SyntaxEditor Control
- Added code to ensure the CodeSnippetDeactivated event fired even when a code snippet with no fields was activated.
- Updated how SemanticParserServiceRequest generates its parse hash key for a file request.
- Fixed a bug where alternate font sizes used for CollapsibleTextStyle were not properly rendered.
- Fixed a bug where doing a line selection over a collapsed outlining node could cause the selection to render incorrectly.
- Fixed a bug where indenting a block selection with the caret at column 0 on the last line wouldn't indent the last line.
.NET Languages Add-on
- Moved all error messages to string resources.
- Improved the code for outlining #Regions in VB.
- Fixed a bug where documentation comments may not be properly located for members that contained nullable type parameters.
- Fixed a bug where some .NET framework assembly documentation may not be located properly.
- Fixed a bug with the parsing of VB named arguments.
- Fixed a bug dealing with the Turkish 'i' issue.
Web Languages Add-on
- Fixed a bug where the validation errors didn't offset properly when Document.HeaderText was used.
Miscellaneous
- Updated the WinUICore/Shared libraries.
12/9/2008 - Version 4.0.0280
SyntaxEditor Control
- Updated the context menu item text to be localizable.
- Updated the TextRange.IntersectsWith method to return true when one TextRange lies completely within the other.
- Updated the Grammar Designer so that it won't generate AST node private field names that conflict with C# keywords.
- Fixed an exception that could be thrown when calling SpanIndicatorLayer.Clear in a certain scenario.
.NET Languages Add-on
- Improved indexer IntelliPrompt support in VB.
- Fixed a bug where 64-bit systems may not always find XML documentation for some assemblies.
- Fixed a bug where VB wasn't flagging hex and octal numbers as such.
Web Languages Add-on
- Added IntelliPrompt support for attribute values defined using a restriction in a union.
- Improved IntelliPrompt resolution when dealing with xs:any nodes.
- Updated validation routines so that if an XmlSchemaResolver.DefaultNamespace is specified, schema validation will still work as expected.
- Fixed a bug where XSD documentation that contained escaped characters may not show correctly in a certain scenario.
Miscellaneous
- Converted source projects to Visual Studio 2008 and dropped .NET 1.1 build support.
- Added Visual Studio 2008 sample projects and dropped VS 2003 sample projects.
- Updated the WinUICore/Shared libraries.
10/13/2008 - Version 4.0.0277
SyntaxEditor Control
- Adjusted the code for determining how far to scroll for mouse wheel turns.
- Added an overload for the SyntaxEditor.Print method to determine whether PrintDialog.UseEXDialog should be set.
- Fixed a bug in the EditorView.PositionToOffset code when dealing with collapsed outlining nodes.
- Fixed a bug introduced in the outdent code in the previous maintenance release.
- Fixed a bug where the right side of a selection border could be drawn incorrectly.
.NET Languages Add-on
- Updated IntelliPrompt to work better when accessing static members and constants inside of a type declaration but outside of a member.
- Made some minor improvements in IntelliPrompt for implicitly declared variables.
- Improved how IntelliPrompt processes EditorBrowsable(Never).
- Updated C# #region folding code.
- Updated VB source code parsing so all classes are considered partial since VB is less strict on the use of the partial keyword.
- Added the AssemblyCodeRepository.Refresh method, which can be used to refresh the existing contents of cached assembly data if an assembly is rebuilt with the same name/version.
- Fixed a type resolutio bug introduced in the previous maintenance release.
- Fixed a bug where child namespaces of imported namespaces wouldn't show up in the member list.
- Fixed a bug with the C# parsing of element initializers.
- Fixed a bug with the VB semantic parsing of LINQ group-by operators.
- Fixed a bug with the GetInterfaces method for partial types.
- Fixed a bug with how array initializers were parsed and added the ObjectCreationExpression.IsArray property.
Miscellaneous
- Updated the WinUICore/Shared libraries.
9/8/2008 - Version 4.0.0276
SyntaxEditor Control
- Updated the EditorView.CanDelete and CanPaste properties so they return false if the selection is read-only.
- Updated the logic in the indent and outdent code.
- Updated the AstNodeBase.HasStartOffset property to better handle the use of header text in a document.
- Updated the member list description tip click processing.
- Updated parameter info display location code.
.NET Languages Add-on
- Added IntelliPrompt support for anonymous types in C# and VB.
- Made major improvements with IntelliPrompt for extension methods and LINQ support.
- Improved the IntelliPrompt capabilities for implicitly typed variables in VB.
- Updated the security and path settings for the reflection Assembly loading code.
- Updated the TypeMemberDropDownList population code.
- Fixed a bug where comment AST nodes weren't always placed on the correct parent node when at the end of a block.
- Fixed a bug with the parsing of stackalloc initializers in C#.
- Fixed a bug where PointerMemberAccess didn't have the correct node type assigned.
- Fixed a bug where generic extension methods from assemblies may not show in IntelliPrompt.
- Fixed a bug where the documentation comments for C# interface declarations weren't being stored correctly.
- Fixed a bug where implicit TypeReferences could have their parent node changed incorrectly.
7/15/2008 - Version 4.0.0275
SyntaxEditor Control
- Added the ITextBufferReader.IsAtStart property.
- Added the SemanticParseEventArgs and SemanticParseEventHandler classes.
- Updated the CutCopyDragWithHtml option to properly copy text to the clipboard that conforms to CF_HTML format.
- Updated code for the member list description to to align to the top of the current item instead of vertically centering next to it.
- Updated the member list description tip to use the same MaximumWidth as that specified in IntelliPromptQuickInfo.MaximumWidth.
- Added the IntelliPromptMemberList.UpdateDescriptionTip method that will immediately update the description tip for the selected item, useful in cases where a description tip is updated after a link click within it.
- Tweaked the quick info code to allow the SyntaxEditorViewMouseHover event to fire when the mouse is over the same token if the selection was changed.
- Fixed a bug in regards to code fragments not always parsing header text correctly due to an offset issue.
- Fixed a bug where the member list description tip may not initially show for the first item in the list once it has been fully selected.
- Fixed a bug where look-behinds in lexical patterns weren't always executing properly when the parsed text was in Document.HeaderText.
- Fixed a bug where calls to EditorView.ReplaceSelectedText with a reselect flag may not reselect properly if the text contained carriage returns.
- Updated the AstNodeBase class so that end offset tracking better handles negative offsets caused by Document.HeaderText usage. Now EndOffset will be StartOffset - 1 when there is no end offset. Before, a value of -1 was considered no end offset.
.NET Languages Add-on
- Made some major improvements in terms of type construction for IntelliPrompt when working with generic methods.
- Improved IntelliPrompt support when working with both normal and generic delegates.
- Added IntelliPrompt support for construction expressions (new StringBuilder().).
- Began enabling some IntelliPrompt functionality when working with lambda expressions.
- Added the SourceProjectContent.SemanticParseComplete event, which fires when semantic parsing completes for a source request.
- Added the AssemblyCodeRepository.AppDomainCreated event, allowing for additional ties in to help resolve assemblies. Added the AppDomainEventArgs and AppDomainEventHandler classes.
- Updated all C# type declarations to default to Internal access when no access modifier is specified.
- Updated VB Modules to default to Friend access when no access modifier is specified.
- Updated all other VB type and member declarations to default to Public access when no access modifier is specified.
- Updated the TypeMemberDropDownList so that when the attached SyntaxEditor's Document or language is changed, it will update.
- Updated the DotNetProjectResolver.AddExternalReferenceForSystemAssembly method so that it will also search the v3.0 and v3.5 reference assembly folders.
- Fixed a bug where C# statements like 'foreach' which declare variables and could have child statements without a block wouldn't show IntelliPrompt on the declared variables.
- Fixed a bug where the InterfacePropertyDeclaration.GetAccessor value wasn't being stored properly.
- Fixed a bug in the VB language where calling ReDim on a member access expression could generate a semantic error.
- Fixed a bug in the VB language where member list invocations for a With statement expression may not show.
- Fixed a bug where exception variables declared in Catch clauses weren't providing IntelliPrompt.
- Fixed a bug where the use of namespace aliases in a base type specification could throw an exception.
- Fixed a bug where IntelliPrompt for constructed types defined in an assembly didn't always appear correctly.
- Added a DotNetProject resolver parameter to IProjectContent.GetExtensionMethods.
- Replaced the CatchClause.TypeReference and VariableName properties with the VariableDeclarator property.
Web Languages Add-on
- Improved context building code.
- Added the XmlSyntaxLanguage.FormattingOptions property, with a related XmlFormattingOptions class, which has a NormalizeTagWhitespace option.
Miscellaneous
- Updated the WinUICore/Shared libraries.
4/9/2008 - Version 4.0.0274
SyntaxEditor Control
- Tweaked the parser generator in relation to the usage of clear first set addition conditions.
- Backed out some code added in build 272 to aid C++ key processing because it broke command key processing in other applications like in WPF.
- Improved the code where auto-replace checking determines word breaks.
- Fixed a bug where a line indicator on the last line of the document would move down when enter was pressed at the end of the document.
- Fixed a repainting bug with selection in a single-line mode scenario.
- Fixed a minor repainting bug with current line highlighting when the word wrap mode was changed.
.NET Languages Add-on
- Improved IntelliPrompt display for generic methods.
- Fixed a bug where member lists for generic indexer return values may not populate correctly.
- Fixed a bug where the loading of assembly reflection info could infinitely recurse in a special scenario where parameters had circular references.
- Fixed a bug in the VB language where modifiers could be assigned incorrectly to members.
3/19/2008 - Version 4.0.0273
.NET Languages Add-on
- Added IntelliPrompt support for extension methods, a new feature in C# 3.0 and VB 9.0.
- Added the DotNetProjectResolver.GetExtensionMethods and IProjectContent.GetExtensionMethods methods.
- Added the IsExtension and IsEditorBrowsableNever properties to IDomType and IDomMember.
- Greatly improved support for IntelliPrompt on delegates.
- Added functionality to not show member list items for types and members that have an EditorBrowsableAttribute(Never) assigned.
- Removed the MethodDeclaration.IsExtensionMethod and now use the IsExtension property in its place.
- Updated the documentation loading code to look in locations that contain .NET 3.0 and 3.5 system assemblies.
- Fixed a couple minor bugs related to resolving constructed generic types for IntelliPrompt.
3/11/2008 - Version 4.0.0272
SyntaxEditor Control
- Added the FontDropDownList.ExcludeVariableWidthFonts property, which controls whether variable-width fonts should be excluded from the drop-down list.
- Added the FontDropDownList.UsePreviewInItemRendering property, which controls whether items in the drop-down list preview the represented font.
- Added the SyntaxEditor.AutoReplacePerforming event that fires before an auto-replace occurs, allowing you to update the entry as needed.
- Changed SyntaxEditor so that it won't trap Esc keypresses if there is no selection.
- Tweaked a couple comment patterns in the dynamic language definitions.
- Updated the FindReplaceForm so that it updates the UI from the options again when it is made visible.
- Updated SyntaxEditor so that it better accepts keys when used in a native C++ dialog.
- Updated the member list so that it will complete when Tab is pressed and SyntaxEditor.AcceptsTab is false.
- Updated the find/replace code so that after doing a replace through a selection, the old selection is restored.
- Fixed a bug where current line highlighting may not redraw when there was a selection and arrow keys were used to move the caret up/down.
- Fixed a bug where the indentation of a block selection over a collapsed outlining node could throw an exception.
.NET Languages Add-on
- Implemented IntelliPrompt for constructed generic type instances.
- Updated the member list so that when displaying within a nested type, it will show the static members of any parent types.
- Fixed a bug where doing a Dim var New As Type wouldn't assign the type properly for IntelliPrompt.
Web Languages Add-on
- Updated the XmlSchemaResolver to better resolve referenced element and attribute data.
2/1/2008 - Version 4.0.0271
SyntaxEditor Control
- Added some code to better handle access to methods when the Document is disposed.
.NET Languages Add-on
- Tweaked the C# semantic parser.
- Updated the DotNetProjectResolver so that if a CachePath (required for proper functionality) is not specified, it will write to a child folder in the user's temp folder.
- Fixed a bug where Mid expressions were causing semantic errors.
- Fixed a bug where generic types being used as return types for operators and indexers could cause a semantic error.
Web Languages Add-on
- Added support for member lists of element values when the element uses a simple enumeration type.
- Added a "Missing required whitespace." syntax error when there is no space betwee an attribute value and the next attribute name.
- Tweaked the context building code to better handle when the caret is right in between a start/end tag.
1/15/2008 - Version 4.0.0270
SyntaxEditor Control
- Added a setter to the AutoReplaceEventArgs.AutoReplaceEntry property.
- Added the EditCommand.CanExecute method.
- Fixed a bug where the updating of the IntelliPromptMemberList.Font property wouldn't update the height of the items in a certain scenario.
- Fixed a bug where the quick info tip for a collapsed node created manually might show incorrect information.
- Fixed a bug where the collapsed node text for a manually-created outlining node could include extra space if the node starts with a tab.
- Fixed a bug where when deleting the text at the start of an outlining node, the end of the outlining node may be adjusted to an incorrect offset.
- Fixed a bug where an indicator glyph may not be drawn in the indicator margin for a span indicator that has been word wrapped.
- Fixed a bug where an exception may occur in a certain scenario where SyntaxEditor is being disposed.
- Fixed a bug where a couple span indicator types were being assigned the wrong name (used for debugging).
- Fixed a bug where opening a CodeSnippetFolder with the headers-only option was not passing that option to any child folders as well.
- Fixed a bug where positioning the caret programmatically after regions in a large document that are collapsed by outlining in a worker thread could show the caret past the end of document.
.NET Languages Add-on
- Enhanced the C# language to parse the C# 3.0 (.NET 3.5) specification.
- Enhanced the Visual Basic language to parse the VB 9.0 (.NET 3.5) specification.
- Added the MethodDeclaration.IsExtensionMethod property.
- Added the ObjectCreationExpression.Initializer property.
- Added the Ascending, By, Descending, Equals, From, Group, Into, Join, Lambda, Let, On, OrderBy, Select, Where, Var fields to the CSharpTokenID class, and added related lexical parsing.
- Added the Aggregate, Ascending, By, Descending, Distinct, Equals, From, GetXmlNamespace, Group, Into, Join, Order, QuestionMark, Skip, Take, TripleDot, Where, XmlLiteral, XmlAttribute fields to the VBTokenID class, and added related lexical parsing.
- Added the GetXmlNamespaceExpression, LambdaExpression and ObjectCollectionInitializerExpression classes.
- Added the MemberAccess enumeration.
- Added the AggregateQueryOperator, CollectionRangeVariableDeclaration, DistinctQueryOperator, FromQueryOperator, GroupQueryOperator, JoinQueryOperator, LetQueryOperator, OrderByQueryOperator, Ordering, OrderDirection, QueryExpression, SelectQueryOperator, SkipQueryOperator, SkipWhileQueryOperator, TakeQueryOperator, TakeWhileQueryOperator, and WhereQueryOperator types to support an AST representation of query expressions.
- Added a number of new values to the DotNetNodeType enumeration to support new AST types.
- Added the LiteralType.Xml value.
- Added the OperatorType.XmlDescendant value.
- Added the CompilationUnit.OptionInfer property.
- Combined ArrayCreationExpression into ObjectCreationExpression by adding the ObjectCreationExpression.ArrayRank property. Removed the DotNetNodeType.ArrayCreationExpression value.
- Combined ArrayInitializer into ObjectCollectionInitializerExpression. Removed the DotNetNodeType.ArrayInitializer value.
- Added support for Unicode character escape sequences in C# identifiers.
- Added logic to the reflection assembly-loading code so that if an assembly is not found in the GAC (like a System .NET 1.0 assembly), it will look for newer .NET versions of the same System assembly.
- Updated the SourceProjectContent.LoadForCode method (also called by LoadForFile) so that it will convert the code to line-feed only line terminators, thereby ensuring that the offsets in the AST match the offsets of the same text when loaded in a SyntaxEditor Document.
- Updated SourceProjectContent.LoadForCode and LoadForFile so that they return the parse hash key of the SemanticParserService request that was created.
- Tweaked some code for processing assemblies that have no location.
- Tweaked the handling of void* references in the C# semantic parser.
- Improved type name recognition in the C# semantic parser.
- Improved the recognition qualifications of the get, set, add and remove keywords in the C# lexical parser.
- Fixed a bug in the C# and VB languages where numeric literals with .ToString() after could cause a syntax error.
- Fixed a bug in the C# language where the use of a right shift operator could cause a syntax error.
- Fixed a bug in the C# language where the use of a nullable type in a generic type argument could cause a syntax error.
- Fixed a bug in the C# language where the use of pointers in a variable declaration could cause a syntax error.
- Fixed a bug in the C# language where stackalloc declarations could cause a syntax error.
- Fixed a bug in the C# language where generic types passed to typeof could cause a syntax error.
- Fixed a bug in the C# language where the local declaration of a generic type array could cause a syntax error.
- Fixed a bug in the C# language where the use of void* and other pointers in certain scenarios could cause a syntax error.
- Fixed a bug in the C# language where the use of attributes on an interface get/set accessor could cause a syntax error.
- Fixed a bug in the C# language where the definition of explicit generic interface members in a class could cause a syntax error.
- Fixed a bug in the C# language where certain syntax could flag a ? as part of a nullable type instead of a ternary operator.
- Fixed a bug in the VB language where using statements could display a syntax error incorrectly.
- Fixed a bug in the VB language where array parameters could display a syntax error incorrectly.
- Fixed a bug in the VB language where named attribute arguments could display a syntax error incorrectly.
- Fixed a bug in the VB language where the parsing of integers followed by a floating point type character could cause a syntax error.
- Fixed a bug in the VB language where the invocation of a member without parenthesis could cause a syntax error.
- Fixed a bug in the VB language where the invocation of an external method without an alias could cause a syntax error.
- Fixed a bug in the VB language where several option statements were requiring on/off values to be supplied.
Web Languages Add-on
- Tweaked the XML language lexical parser in regards to open attribute values.
- Tweaked the XML formatting code.
- Adjusted the member list initialization range code for attribute values.
- Fixed a bug where the element member list may display elements from another namespace even if it hasn't been referenced via xmlns:[prefix].
Miscellaneous
- Changed evaluation period to 21 days and removed nag popups within design mode.
- Updated the WinUICore/Shared libraries.
10/24/2007 - Version 4.0.0262
SyntaxEditor Control
- Added the KeyChar and CancelKeyPress properties to the AutoReplaceEventArgs class, which is used in the SyntaxEditor.AutoReplacePerformed event.
- Added code to ensure the caret remained at the start of a collapsed outlining node when the collapsed text was double-clicked to expand the node.
- Tweaked the word wrap code.
- Tweaked the regular expression engine's word boundary check code.
- Tweaked the output of the parser generator in regards to non-terminal additional expression output.
- Updated the parser generator to throw a descriptive exception message if IsNonTerminal is called, referencing an undefined non-terminal.
- Fixed a bug in the parser generator where IsNonTerminal expansion may not occur on a custom condition for an alternation option.
- Fixed a bug where the use of the Insert Code Snippet member list could cause the regular member list to no longer display description tips.
- Fixed a bug where mouse wheel scrolling may not work when used with a high-resolution mouse in Vista.
Web Languages Add-on
- Fixed a bug where referenced global elements in an XSD might not display documentation correctly.
9/27/2007 - Version 4.0.0261
SyntaxEditor Control
- Changed the ContextMenuRequested event so that it fires before the core Win32 code intercepts the context menu message. This allows for proper dynamic updating of the context menu before Windows displays it.
- Updated the default SyntaxEditor context menu display code so that it will not automatically occur if there is a ContextMenuStrip set.
- Tweaked the member list's processing of matching items.
- Fixed a bug where when switching to a word wrap mode, the editor might not scroll all the way left.
- Fixed a bug with span indicators where when there were multiple span indicators on a line, one or more could disappear when a new line was inserted in a certain scenario.
.NET Languages Add-on
- Fixed a bug in the VB language where variable declarations with As New weren't storing an initializer in the resulting AST node.
- Fixed a bug with the use of multiple indexers in a row where the latter indexers weren't being resolved correctly.
Web Languages Add-on
- Tweaked the code for the insertion of namespace prefixes from a member list.
9/7/2007 - Version 4.0.0260
SyntaxEditor Control
- Tweaked the member list's processing of matching items when CaseSensitiveMatch is set to true.
- Fixed a bug introduced in a previous maintenance release where letters typed in sequence would not be combined into a single undo modification.
- Fixed a bug where text selection using the mouse could horizontally scroll the editor when word wrap mode was on.
- Updated the dynamic XML language so that single quoted attribute values are permitted.
.NET Languages Add-on
- Tweaked the lexical parsers on the C# and VB languages.
- Fixed a bug where an exception could be thrown if using the C# or VB language but no DotNetProjectResolver was in place.
Web Languages Add-on
- Added the virtual XmlSchemaResolver.GetDocumentation method, which can be overridden to customize the documentation used for quick info of various schema objects. It uses markup formatting and may also provide documentation for schema objects that have none in the XSD.
- Updated the XML lexical parser so that single quoted attribute values are permitted.
- Fixed a bug where validation error span indicators could be in the wrong location in a certain scenario.
8/23/2007 - Version 4.0.0259
SyntaxEditor Control
- Added overloads to the Document.GetSubstringAsHtml, GetTextAsHtml, and SaveFileAsHtml methods that accept a custom title to place in the HTML.
- Tweaked the Simple language to have better error recovery for when function productions don't match correctly.
- Fixed a bug where an exception could be thrown if the SyntaxEditor control was resized after it was disposed.
- Fixed a bug introduced in the previous maintenance release where when pressing the up arrow key, the caret might skip over a blank line.
.NET Languages Add-on
- Improved standard module support in the VB language so that member lists, quick info, and parameter info work properly for members in standard modules.
Web Languages Add-on
- Tweaked the code that determines whether an XML element can have content or not.
8/13/2007 - Version 4.0.0258
SyntaxEditor Control
- Added code to the SyntaxEditor control so that if its Visible property is set to false then it will hide any displayed IntelliPrompt popups.
- Added code to the SyntaxEditor control to catch ObjectDisposedExceptions that could be raised during an Invoke from the SemanticParserService worker thread.
- Updated the member list so that if AcceptsTab is false and the editor loses focus, the member list will abort.
- Updated the member list's GetItemReflectionForAssemblyNamespacesAndTypes method to skip over public classes that have Type.IsVisible = false in .NET 2.0 or later.
- Changed the undo/redo code so that when an undo or redo operation occurs, both stacks are properly updated before the selection changed event fires.
- Added the SemanticParserService.HasPendingRequest method, which returns whether the serivce has a pending request with the specified hash key.
- Added a performance enhancement related to the Simple language's PerformAutomaticOutlining implementation, which will show up especially in large documents.
- Tweaked how font descents are calculated when using multiple fonts.
- Updated code in OutliningNode.CollapseDescendants and ExpandDescendants to perform much faster when there are a lot of child nodes.
- Fixed a bug in AstNodeBase where HasEndOffset might return false if the node is located in the Document.HeaderText region during semantic parsing.
- Fixed a bug where an exception could be thrown in a certain document modification scenario when using span indicators that change fonts.
- Fixed a bug where a span indicator that ended right before a blank line could draw incorrectly.
- Fixed a bug in the EditorViewFindReplace class where the search start offset wasn't being set properly.
- Fixed a bug in the move and select up commands when dealing with word wrapped lines.
- Updated the WinUICore/Shared libraries.
.NET Languages Add-on
- Added a performance enhancement related to the language's PerformAutomaticOutlining implementation, which will show up especially in large documents.
- Fixed a bug where inherited interfaces wouldn't always include the proper members in a member list.
- Fixed an attribute semantic grammar syntax bug in the C# language.
- Fixed a bug where jagged array types weren't being reflected correctly from assembly references.
- Fixed a bug where types that used multiple pointers weren't being reflected correctly from assembly references.
Web Languages Add-on
- Added code so that when typing a > on a start tag for an element that cannot contain content, a / is auto-inserted before the >.
- Added the XmlSchemaResolver.DtdSupportEnabled property, which when enabled switches the resolver to use a DTD specified in the XML for validation. Note that no automated IntelliPrompt is supported based on a DTD.
- Added the XmlSchemaResolver.DtdPath property, which can be used when DtdSupportEnabled is true to designate the path where the DTD files are found.
- Added a performance enhancement related to the language's PerformAutomaticOutlining implementation, which will show up especially in large documents.
- Updated the XML lexer so that entities with Ӓ syntax are properly recognized.
- Fixed a bug where the display of an attribute value member list might not work if there was whitespace in between the attribute name and the equal sign.
- Changed the Element.Key property so that it includes the element name in square brackets. This can be used as a key for passing to OutliningNode.CollapseDescendants.
- Changed how the XML is loaded for validation to better handle XML that is specified with UTF-16 encoding.
- Updated the validation routines to allow for DTD loading.
7/17/2007 - Version 4.0.0257
SyntaxEditor Control
- Added some code to help prevent object disposed errors when semantic parsing from a worker thread completes after a SyntaxEditor is disposed.
- Fixed a bug where if the member list was already visible and Show is called to build an updated list, the proper item that should be selected based on the offset range was not being selected.
.NET Languages Add-on
- Fixed a bug where the TypeMemberDropDownList could throw an invalid DropDownWidth exception in a certain scenario.
Web Languages Add-on
- Changed the Element.NamespaceDeclarations property to be a HybridDictionary instead of StringDictionary. This was done to ensure that the keys are case sensitive, since StringDictionary keys are not.
- Changed the XmlContext.NamespacePrefixes property to be a HybridDictionary instead of StringDictionary. This was done to ensure that the keys are case sensitive, since StringDictionary keys are not.
- Tweaked the grammar handling of XML processing instructions.
- Fixed a bug in the XML language smart indent where it could indent one level too much when pressing Enter within a block tag.
7/11/2007 - Version 4.0.0256
SyntaxEditor Control
- Added the IntelliPromptQuickInfo.GetQuickInfoForSyntaxHighlightedTextRange method that returns quick info formatting for a syntax-highlighted range of text in the current document.
- Changed the core view text replacement method so that it always wraps modifications in an undo group. Thus any smart indent is applied into the same group as the modification that initiated it.
- Fixed an exception that could fire in the parser generator when generating an error message in a certain scenario.
- Fixed an exception that could fire when switching from manual outlining to automatic outlining in a certain scenario.
- Updated the SyntaxLanguage.ErrorDisplayEnabled functionality so that if there are more than one semantic parser syntax error that occurs on the same text range, they will all appear in the mouseover tooltip for the syntax error span indicator.
Web Languages Add-on
- Added smart indent capabilities to the XML language.
- Added the XmlContextElement.Attributes property, which lists the attributes in the element. The keys are the attribute namespace prefix and name, and the values are of type XmlContextAttribute.
- Added the QualifiedName property to the XmlContextElement and XmlContextAttribute classes.
- Added the XmlSyntaxLanguage.EndTagQuickInfoMode property, which controls when to display quick info for end tags.
- Added the XmlEndTagQuickInfoMode enumeration.
7/2/2007 - Version 4.0.0255
SyntaxEditor Control
- Updated the dynamic JScript language to allow for regular expression literal syntax.
- Tweaked several keywords in the dynamic SQL language.
- Adjusted how the member list functions when redisplayed while already visible.
- Fixed a bug where when SyntaxEditor.WhitespaceLineEndsVisible was true, a line end glyph was being drawn at the end of the document.
- Fixed a bug where editor view buttons were visible in printouts and print preview mode.
.NET Languages Add-on
- Updated the C# language so that it uses a case sensitive search to resolve contextual items such as type/member names.
- Added the DotNetContext.IsLanguageCaseSensitive property.
- Tweaked context resolution so that C# uses case sensitive lookups and VB handles case insensitivity better in certain areas.
- Fixed a bug where VB exponentiation operators weren't being parsed correctly.
- Fixed a bug where VB For Each statements were requiring an expression after the Next keyword in order for them to be parsed correctly.
- Fixed a bug where VB ReDim clauses weren't being parsed correctly.
- Fixed a bug where loading an assembly for reflection that contained a parameter in a method with a null name could throw an exception.
Web Languages Add-on
- Added the W3C XHTML XSD file to the XML Reflection QuickStart, so that it demos an HTML editor.
- Updated the attribute member list so that it will not show attributes that are already inserted into the element.
- Changed the document formatting code to properly indent tags when multiple tags appear on the same line.
- Tweaked the context determination code when typing an attribute name.
- Adjusted the schema resolver to not insert an xmlns attribute when completing a root element member list if the namespace is the same as the XmlSchemaResolver.DefaultNamespace.
- Fixed a bug where attributes were showing syntax errors when there was no text specified in the quoted value.
- Fixed a bug where attributes that should have namespace prefixes were not showing the prefixes in the member list.
- Fixed a bug where redisplaying a member list (via Ctrl+Space) that filters down to no items while a member list is already displayed throws an exception when a key is typed.
- Fixed a bug where loading the XmlSyntaxLanguage in the designer would cause an exception.
- Fixed a bug where the XML schema validation was only showing up to one error message per tag.
6/20/2007 - Version 4.0.0253
SyntaxEditor Control
- Added the SyntaxEditor.ScrollToCaretOnSelectAll property which governs whether the editor will scroll to the end of the document when doing a select all.
- Added the SyntaxEditor.DragDropTextReselectEnabled property, which controls whether dropped text is reselected.
- Added an RecursiveDescentSemanticParser.TokenIs overload that takes an array of token IDs to check for.
- Updated the Find and Replace method in EditorViewFindReplace so that they reselect the original selected text when Search in Selection is used and the search passes the start offset.
- Updated the EditorViewFindReplace.ReplaceAll code so that reselects the selected text when Search in Selection is used.
- Tweaked the regular expression parsing code.
- Fixed a bug where pressing Home or Shift+Home in the middle of a line with only whitespace should only move the caret to the start of the line.
- Fixed a bug where switching out one large Document in a SyntaxEditor with a smaller Document could throw an exception in a certain scenario.
- Fixed a bug where making a document modification that would expand a collapsed node might not update the vertical scrollbar maximum correctly.
.NET Languages Add-on
- Fixed a bug where interface type variables wouldn't display Object members in their member lists.
- Fixed a bug in the error recovery for If statements in the VB language.
Web Languages Add-on
- Updated root element tag member list so that the proper xmlns attribute is automatically inserted.
- Fixed a bug where a space after an attribute name and before an = was marked as a syntax error.
- Fixed a bug where using the XmlSchemaResolver.DefaultNamespace could override an xmlns that was specified in code.
6/11/2007 - Version 4.0.0252
Web Languages Add-on
- Updated the XML Reflection QuickStart to have a button for loading an XSD for XML schemas.
- Fixed a bug where when examining a schema element's attributes, the schema resolver was looking at the pre-compilation attribute collection instead of the post-compilation one.
- Fixed a bug where typing a colon (for a namespace delimiter) while the member list was displayed would dismiss the list and insert an extra colon.
- Fixed a bug where the proper context wasn't being returned when in an empty document.
- Fixed a bug where pressing Ctrl+Space at the end of an XML start tag name wouldn't show the element member list.
6/8/2007 - Version 4.0.0251
SyntaxEditor Control
- Added the virtual SyntaxLanguage.OnSyntaxEditorSelectionChanged method, allowing for the processing of selection changes from within a language.
- Added a Document.TrimTrailingWhitespace method overload that accepts a TextRange.
- Added the ability to set the LexicalPatternGroup.Tag property from a dynamic language XML definition via the new Tag attribute.
- Added the ILexicalPatternTokenLexicalParseData interface.
- Added a number of public static properties to CharClass which correspond to built-in dynamic language macros.
- Updated the SemanticParserServiceRequest to handle a scenario where if a Document was disposed before delayed semantic parsing started on it, it could throw and exception.
- Fixed a bug where the Document.LoadFile method was returning the wrong line terminator when loading a file.
- Fixed a bug where the mergable lexical parser wasn't always setting the correct document end token based on the current language.
- Fixed a bug in the mergable lexical parser where ILexicalScope.AncestorEndScopeCheckEnabled property settings of false weren't always properly handled in multi-language scenarios.
- Fixed a bug in the parser generator with handling expression additional conditions in a certain scenario.
- Fixed a bug where doing a print operation while UnicodeEnabled was false could throw an exception.
- Fixed a bug where swapping a large Document in a SyntaxEditor to small Document with automatic outlining enabled could throw an exception in a certain scenario.
- Updated the Shared/WinUICore libraries.
Web Languages Add-on
- RTM release of the web languages add-on.
- Added the XmlSchemaResolver.LoadSchemaSet method that loads a SchemaSet (multiple XSDs).
- Improved the context building code.
5/17/2007 - Version 4.0.0250
SyntaxEditor Control
- Updated drag/drop code so that when the mouse is dragging text and is near the edge of the text area, it will scroll.
- Updated drag/drop code so that when text is dropped, it remains selected.
- Added the SelectInsertedText value to the DocumentModificationOptions enumeration.
- Changed the SyntaxEditorHitTestResult.DocumentLine property so that it returns null if the hit test is after the last non-virtual display line.
- Added the FindDescendant method to the IAstNode interface and AstNodeBase class.
- Added the IntelliPromptSmartTag.IsPopupDisplayed property and updated the smart tag logic for auto-hide, and hiding the drop-down arrow accordingly.
- Changed the tabify/untabify lines and convert tabs to spaces and spaces to tabs commands so that they reselect the affected lines after performing their conversion.
- Changed TokenBase.ParseDataEquals to be abstract instead of virtual. This will force custom token classes to provide an appropriate implementation of the method.
- Fixed a bug where typing at the end of the line in word wrap mode could sometimes inappropriately scroll the text horizontally.
- Fixed a bug where calling code in a DocumentModifiedChanged event handler that performs a layout of the SyntaxEditor control could throw an exception.
- Fixed a bug where the line modification mark ranges could become corrupt in a certain scenario.
- Changed the install location of the assemblies in the Program Files folders to be under a platform (WindowsForms) folder.
- Updated the Shared/WinUICore libraries.
.NET Languages Add-on
- Fixed a bug where typing a . within a verbatim string literal would display a member list.
- Fixed a bug in the C# language with type parameter constraints.
- Fixed a bug where moving the caret to a delegate declaration could raise an exception in the TypeMemberDropDownList control.
- Fixed a bug where reflection data for nested type arrays was stored incorrectly.
Web Languages Add-on
- Made a number of enhancements when determining context for IntelliPrompt operations, thus really speeding up typing when working in larger XML files.
- Added format document functionality to the XML language via the XmlSyntaxLanguage.FormatDocument method.
- Updated the XML Reflection QuickStart to demo the new format document functionality.
- Added namespace prefixes to the element member lists when appropriate.
- Improved XML validation procedures.
- Updated the XML Reflection QuickStart to not show the document outline if the document is larger than a certain size.
- Added documentation topics for the XML add-on.
5/1/2007 - Version 4.0.0249
SyntaxEditor Control
- Added the IntelliPromptMemberList.CompleteOnSingleClickEnabled property, which will complete the member list when an item is single-clicked if the property is enabled.
- Updated the parser generator so that it generates ID base constants for non-abstract AST nodes.
- Moved the IntelliPromptMemberListPreFilterEventArgs class and the IntelliPromptMemberListPreFilterEventHandler delegate from the .NET Languages Add-on to the main SyntaxEditor assembly, so that any advanced language implementation can use them.
- Changed the IntelliPromptMemberListPreFilterEventArgs.Context property to be an object instead of a DotNetContext.
- Fixed a bug introduced in a previous build where replacing all the text of an indicator that should be able to expand on boundaries would remove the indicator.
.NET Languages Add-on
- Made major changes so that array types are now displayed properly in the user interface and IntelliPrompt handles them appropriately, including proper array item access results.
- Added the Clone method to the IDomType interface.
- Added the PointerLevel property to the IDomTypeReference interface.
- Added the ArrayItem value to DotNetContextItemType enumeration.
- Renamed the IDomTypeReference.ArrayRank property to ArrayRanks and changed its return type to int[]. Updated all classes that implement IDomTypeReference.
- Renamed the ArrayRedimClause.ArrayRank property to ArrayRanks and changed its return type to int[];
- Altered code so that language native type shortcut names are now used in the type/member drop-down list and document outline treeview.
- Updated the type/member drop-down list so that it will display in the language (C#/VB) of the CompilationUnit that populated it.
- Fixed a bug where typing documentation comments at the end of a document could throw an exception in a certain scenario.
- Fixed a bug where instance members on the return type of a static member weren't being resolved correctly.
Web Languages Add-on
- Added two AddSchema method overloads and an AddSchemaFile method to the XmlSchemaResolver class. The Add variations are different than the Load variations in that they don't clear the schema set first.
- Added the XmlSyntaxLanguage.SchemaValidationEnabled property, allowing for XSD validation of XML (.NET 2.0 and later only). Syntax error indicators will now appear under invalid XML per the loaded XSD.
- Updated the XML Reflection QuickStart so that it displays a list of syntax and XSD validation errors.
- Added the XmlSchemaResolver.DefaultNamespace property, which allows a default namespace to be set in situations where you don't want to require an xmlns attribute to be added to the root element.
- Added CDATA to the tag member list when within another element.
- Added member list pre-filtering capabilities to the XmlSyntaxLanguage class via the new OnSyntaxEditorIntelliPromptMemberListPreFilter method and SyntaxEditorIntelliPromptMemberListPreFilter event.
- Updated the mismatched token descriptions when displayed in syntax error messages.
4/19/2007 - Version 4.0.0248
SyntaxEditor Control
- Fixed a bug in the semantic parser service that would always wait the full delay time when calling WaitForParse. Fixing this bug has sped up any language that uses WaitForParse, including making a big difference in IntelliPrompt display in the .NET Languages Add-on.
- Tweaked how the selection changes when two SyntaxEditors are editing the same document.
- Tweaked how various commands track which view caused a modification.
- Updated the VB sample project's CodeFragmentsForm to demo the advanced VB language instead of C#.
.NET Languages Add-on
- Added the DotNetProjectResolver.GetQuickInfo method, allowing for retrieval of quick info markup based on a DotNetContext.
- Added the DotNetSyntaxLanguage.LanguageType property, which returns a DotNetLanguage enum value.
- Fixed a bug where quick info might be displayed for a base method's documentation comments instead of an overridden method's comments.
- Fixed a bug in C# where jagged array declarations were marked as a syntax error.
- Fixed a bug in C# where generic interface method implementation declarations were marked as a syntax error.
- Fixed a bug in VB when typing a Handles expression that could throw an exception.
- Fixed a bug where hovering over a token when no DotNetProjectResolver was assigned to the Document could throw an exception in a certain scenario.
4/13/2007 - Version 4.0.0247
SyntaxEditor Control
- Added the SourceProjectContent.GetCompilationUnits method that returns the ICompilationUnits that are currently loaded for reflection.
- Added the SourceProjectContent.GetSourceKeys method that returns the source keys of the compilation units that are currently loaded for reflection.
- Added a dynamic language definition for PowerShell.
- Added code to auto-hide a visible smart tag popup button if the mouse has not been over it for the number milliseconds specified by the new IntelliPromptSmartTag.AutoHideTimeout property.
- Added the OnSyntaxEditorIntelliPromptMemberListClosing and OnSyntaxEditorIntelliPromptMemberListClosed methods to the SyntaxLanguage class.
- Added the IntelliPromptMemberList.IsSelectionVirtual property.
- Changed regions in the dynamic C# language so that the text that appears after #endregion is hidden when collapsed.
- Updated the parser generator so that digit and underscore characters are allowed in terminal and non-terminal keys.
- Tweaked the scrollbar auto-hide code.
- Added documentation to all elements and attributes in the dynamic language XSD file.
- Fixed a bug with the Insert Snippet dialog where it could throw an exception in a certain scenario.
- Fixed a bug with inserting snippets that surround a selection where a field after the selection could be offset incorrectly if the selection had multiple lines.
- Fixed a bug with indent/outdent commands where when playing back a recorded macro, they would always indent/outdent the line instead of possibly inserting/deleting a tab character.
- Fixed a bug where a disappearing span indicator could throw and exception after a deletion in a certain scenario.
- Fixed a bug where indicators that can expand on boundaries did not expand at their start in a certain scenario.
- Fixed a bug where auto-correction made after the Enter key is pressed and using a variable-width font wouldn't always update the layout of the characters property.
.NET Languages Add-on
- Changed the VB language so that the DateTime type displays as Date in IntelliPrompt tips.
- Altered the DotNetProjectResolver.AddAllAssembliesInAppDomainAsExternalReferences method so that if an exception occurs while loading one of the assemblies, it will continue loading the remaining assemblies and then re-throw the exception.
- Fixed a bug in the VB language where typing "Date." could throw an exception.
- Fixed a bug where static members of a type weren't automatically being matched when performing IntelliPrompt in some cases.
- Fixed a bug where reflection documentation for nested types wasn't being retrieved properly.
- Due to misspelling, renamed OperatorType.StringConcatination to StringConcatenation, VBTokenID.StringConcatination to StringConcatenation, and VBTokenID.StringConcatinationAssignment to StringConcatenationAssignment.
Web Languages Add-on
- Enhanced the advanced XML language so that some IntelliPrompt features are available based on a loaded XSD. Note that this language and its features are still early beta.
- Added the XML Reflection QuickStart that can be used to demo and test the advanced XML language.
3/12/2007 - Version 4.0.0246
SyntaxEditor Control
- Added the ILexicalScope.AncestorEndScopeCheckEnabled property, which controls whether ancestor end scope checking is enabled while parsing inside the scope.
- Added the AncestorEndScopeCheckEnabled property to the LexicalScopeBase and DynamicLexicalScope classes.
- Added coloring to the quick info tips on the Insert Snippet member list.
- Fixed a bug introduced in a previous build that occurred when lexical parsing was disabled where the display line layouts could become corrupted.
- Fixed a bug in the parser generator where the use of the IsNonTerminal special function wasn't pulling in token additional conditions.
- Fixed a bug where case correction made on selection changes when using variable-width fonts didn't update the character layouts properly.
.NET Languages Add-on
- Implemented indexer access properly for IntelliPrompt in the C# language.
- Added the DotNetContextItem.IndexerParameterCounts property to support indexer member access.
- Fixed a bug where the VB language wasn't creating outlining nodes for regions.
- Updated the collapsed outlining node text display for the VB language.
Miscellaneous
- Updated the Shared/WinUICore library.
3/4/2007 - Version 4.0.0245
SyntaxEditor Control
- Added code to clear the outlining nodes when the Document.LexicalParsingEnabled property is set to false.
- Added an overload to the SpanIndicatorLayerCollection.AddDisappearingSpanIndicator method that accepts an existing DisappearingSpanIndicator instance.
- Added code to the ISemanticParseDataTarget.NotifySemanticParseComplete callback in the Document class so that it will do no processing if the Document has been disposed.
- Added code for where when two SyntaxEditors are editing the same Document, changes made in one editor will try not to modify the selection of the other.
- Tweaked the OutliningNode.CollapseDescendants code and how it loops through child nodes.
- Tweaked how the drawing code raises the SyntaxEditor.UserMarginPaint event.
- Unsealed the DynamicOutliningSyntaxLanguage.PerformAutomaticOutlining method.
- Fixed a bug where the line number margin wouldn't auto-expand for large line numbers in print views.
- Fixed a bug where end scopes with multiple patterns wouldn't serialize the patterns out to XML.
- Fixed a bug where using two SyntaxEditors to edit a Document in a certain rare scenario could throw and exception.
- Fixed a bug where child language back colors weren't being loaded property from merged dynamic XML definition files.
.NET Languages Add-on
- Tweaked the parameter list display code so that it will display if there is whitespace between the member name and the open parenthesis.
- Changed quick info so that it will not display when hovered over the name of a method in the method's declaration.
- Fixed a bug where VB event declarations with an Implements specification were being marked as a syntax error.
- Fixed a bug where assemblies that had generic interfaces with type constraints of themselves could cause a stack overload exception when loading their reflection information.
Miscellaneous
- Removed code signing by default on assemblies due to issues with how Microsoft's code causes assembly loading delays on newer operating systems like Vista in a certain scenario. Code signed assemblies are available in CodeSigned child folders within the Program Files folders for the assemblies.
- Updated the Shared/WinUICore library.
2/21/2007 - Version 4.0.0244
.NET Languages Add-on
- Added a try...catch around assembly type attribute-examining code in the event that attribute retrieval fails.
2/19/2007 - Version 4.0.0243
SyntaxEditor Control
- Fixed a bug where the HorizontalScrollBarVisible and VerticalScrollBarVisible properties on the EditorView class didn't always return the correct values.
- Fixed a bug where in a certain scenario, the removal of a span indicator could throw an exception.
.NET Languages Add-on
- Official Visual Basic language release for the .NET Languages Add-on.
- Updated IntelliPrompt so that VB standard modules are handled properly.
- Fixed a bug in the VB context resolution for members of members.
- Fixed a bug where nested types weren't being storing in the reflection cache properly.
2/13/2007 - Version 4.0.0242
SyntaxEditor Control
- Updated the HeaderText and FooterText properties on the Document class to use a drop-down editor when in the designer.
- Fixed a bug in the parser generator where additional expression conditions for a non-terminal didn't always bubble up to referencing non-terminals in a certain scenario.
.NET Languages Add-on
- Updated the .NET Reflection QuickStart to demo VB IntelliPrompt features.
- Added auto-outdent when typing a space after an End keyword.
- Added more info to member list description tips for native types that show the type that the keyword resolves to along with the type's documentation.
- Added type member list display in the VB language after the As keyword.
- Fixed a bug where context wasn't properly resolving for members of members.
- Fixed a bug in the VB language where types defined without a modifier weren't being parsed.
- Fixed a bug in the VB language where a For Each variable declaration was not properly stored in the AST.
- Fixed a bug in the VB language where Me.Member context scenarios were sometimes not resolving correcting.
- Fixed a bug in the VB language where .Identifier scenarios (for With statements) were flagging a syntax error.
2/4/2007 - Version 4.0.0241
SyntaxEditor Control
- Added a IntelliPromptSmartTag.Add overload that accepts a custom span indicator.
.NET Languages Add-on
- Added automated member list, quick info, and parameter info support for the VB.NET language.
- Added XML documentation element completion in the VB.NET language.
- Added auto case correction support for the VB.NET language.
- Made several other tweaks to the VB.NET language.
Miscellaneous
- Upgraded to a new obfuscator version, which adds improved support for Vista.
- Updated the Shared/WinUICore library.
- Added a digital signature to the installation MSI.
1/30/2007 - Version 4.0.0240
SyntaxEditor Control
- Added an early beta version (no IntelliPrompt support yet) of the advanced VB language to the .NET Languages Add-on and added menu items to load it in the SDI Editor sample.
- Added the GotoNextField and GotoPreviousField method to the IntelliPromptCodeSnippets class.
- Enhanced the parser generator error checking functionality and also made it give detailed information when you have an alternation that has the same token condition in two or more alternation options.
- Enhanced the Grammar Designer so that it should jump the caret directly to an error location, if the location is known.
- Enhanced the Grammar Designer so that for grammars built using VB, the beta VB language from the .NET Languages Add-on is used, allowing for the type/member drop-down list as well as future IntelliPrompt quick info once complete.
- Added the NonMergableTokenBase class, which provides a good base class for tokens that will be used with low-level non-mergable languages.
- Added the InternalStandardModule and PublicStandardModule values to the IconResource enumeration.
- Changed the CodeSnippetFieldActivated event so that it fires after the caret moves when tabbing between code snippet fields.
- Fixed a bug where the parser generator could incorrectly think a token was part of a non-terminal's first set.
- Fixed a bug where dragging a vertical splitter back to remove a view could sometimes throw an exception when the mouse button was released.
- Fixed a bug with the scrollbars where when they were in auto-hide mode, in certain scenarios they could stop painting temporarily while resizing the Form or typing content.
- Fixed a bug where outlining nodes sometimes weren't properly ended after editing around a language transition end.
.NET Languages Add-on
- Made several tweaks to the C# language semantic grammar.
- Enhanced several AST node ToString methods for easier debugging.
- Added the StandardModuleDeclaration class and DotNetNodeType.StandardModuleDeclaration value for future VB.NET support.
- Added the WithStatement for future VB.NET support. Added the DotNetNodeType.WithStatement value.
- For simplification, merged the IndexerDeclaration class into PropertyDeclaration and added a Parameters property to PropertyDeclaration. The PropertyDeclaration is an indexer if it has parameters. Removed the DotNetNodeType.IndexerDeclaration value.
- Added the IsIndexer and Parameters properties to the PropertyDeclaration class.
- For simplification, merged the InterfaceIndexerDeclaration class into InterfacePropertyDeclaration and added a Parameters property to InterfacePropertyDeclaration. The InterfacePropertyDeclaration is an indexer if it has parameters. Removed the DotNetNodeType.InterfaceIndexerDeclaration value.
- Added the IsIndexer and Parameters properties to the InterfacePropertyDeclaration class.
- Moved the return type of variable declarations from the declaration section to the actual variable for future VB.NET support.
- Removed the IVariableDeclarationSection.ReturnType property. ReturnType is now directly on variable declarations.
- Removed the ReturnType property from the FixedSizeBufferDeclaration class. Use the ReturnType property on the FixedSizeBufferDeclarator class instead.
- Removed the ReturnType property from the ConstantDeclaration, FieldDeclaration, LocalConstantDeclaration, and LocalVariableDeclaration classes. Use the ReturnType property on the VariableDeclarator class instead.
- Removed the TypeReference property from the FixedStatement class. Use the ReturnType property on the VariableDeclarator class instead.
- Renamed the IVariableDeclarationSection interface to IVariableDeclarationSection.
- Made the LocalVariableDeclaration class implement IVariableDeclarationSection.
- For simplification, merged the ConstantDeclaration class into FieldDeclaration. The FieldDeclaration is a constant if it has a Modifiers of Const. Removed the DotNetNodeType.ConstantDeclaration value.
- Added the IsConstant property to the FieldDeclaration class.
- For simplification, merged the LocalConstantDeclaration class into LocalVariableDeclaration and added a Modifiers property to LocalVariableDeclaration. The LocalVariableDeclaration is a constant if it has a Modifiers of Const. Removed the DotNetNodeType.LocalConstantDeclaration value.
- Added the IsConstant property to the LocalVariableDeclaration class.
- Added the BranchStatement class and the BranchStatementType enumeration.
- Removed the StopStatement class, the DotNetNodeType.StopStatement value, and changed Stop statements to use BranchStatement instead.
- Changed the ContinueStatement, ExitStatement, GoToStatement, and ReturnStatement classes so that they inherit BranchStatement instead of Statement.
- Added the RaiseEventStatement class and DotNetNodeType.RaiseEventStatement value for future VB.NET support.
- Added the ModifyEventHandlerStatement class, ModifyEventHandlerStatementType enumeration, and DotNetNodeType.ModifyEventHandlerStatement value for future VB.NET support.
- Changed the ForEachStatement.VariableDeclaration property to return an IAstNode instead of LocalVariableDeclaration. This was required to support an Expression for future VB.NET support.
- Added the UnstructuredErrorErrorStatement class and DotNetNodeType.UnstructuredErrorErrorStatement value for future VB.NET support.
- Added the UnstructuredErrorOnErrorStatement class, UnstructuredErrorOnErrorStatementType enumeration, and DotNetNodeType.UnstructuredErrorOnErrorStatement value for future VB.NET support.
- Added the UnstructuredErrorResumeNextStatement class and DotNetNodeType.UnstructuredErrorResumeNextStatement value for future VB.NET support.
- Changed the LabeledStatement.Label property to return Expression instead of QualifiedIdentifier for future VB.NET support.
- Changed UsingStatement so that the ResourceAcquisition property is now a ResourceAcquisitions collection property.
- Added the ArrayRedimStatement class and DotNetNodeType.ArrayRedimStatement value for future VB.NET support.
- Added the ArrayRedimClause class and DotNetNodeType.ArrayRedimClause value for future VB.NET support.
- Merged the IndexerExpression class into InvocationExpression since VB.NET syntax is the same for both. Removed the DotNetNodeType.IndexerExpression value.
- Added the DictionaryAccessExpression class and DotNetNodeType.DictionaryAccessExpression value for future VB.NET support.
- Added the ArgumentExpression.Name property for future VB.NET support.
- Added the AccessorDeclaration.Parameters property for future VB.NET support.
- Added the EventDeclaration.Parameters property for future VB.NET support.
- Added the InterfaceEventDeclaration.Parameters property for future VB.NET support.
- Moved the Target property from the AttributeSection class to the Attribute class for future VB.NET support.
- Fixed a bug where constructors were showing up in member lists.
- Fixed a bug where constructors were not appearing properly for parameter info.
- Fixed a bug where protected members would sometimes appear in member lists in cases where they should not be listed.
Miscellaneous
- Updated the Shared/WinUICore libraries.
1/12/2007 - Version 4.0.0239
SyntaxEditor Control
- Added overloads of TextStream's GoToNextTokenWithID and GoToPreviousTokenWithID methods that accept an array of possible ID's to match.
- Added the Document.InvalidatePaint method, which notifies any attached SyntaxEditors that they need to repaint.
- Added the ClearFirstSet addition condition to non-terminal production definitions for use with the parser generator. This causes the generated first set to be cleared so that your specified conditions will be the only first set conditions.
- Updated the dynamic language XML schema to include documentation for all elements.
- Updated the XML and XAML languages to use the TagNameMacro for attribute names as well.
- Fixed a bug in the parser generator where expression additional conditions didn't always bubble up properly.
- Fixed a bug where documents printed from SyntaxEditor had very small text on certain printers.
.NET Languages Add-on
- Added the ElseIfSection and StopStatement classes for future VB.NET support.
- Added the EvaluationExpression property to the CatchClause class for future VB.NET support.
- Added the ElseIfSections property to the IfStatement class for future VB.NET support.
- Added the StartIndexExpression and LengthExpression properties to the AssignmentExpression class for future VB.NET support.
- Added the EventMemberSpecifier and MemberSpecifier classes for future VB.NET support.
- Added the EventDeclaration.RaiseEventAccessor property for future VB.NET support.
- Renamed the ParameterModifier enumeration to ParameterModifiers and made it a flags enumeration.
- Renamed the ParameterDeclaration.Modifier property to Modifiers.
- Renamed the ArgumentExpression.Modifier property to Modifiers.
- Added the IsParameterArray and IsOutput properties to the ParameterDeclaration class for future VB.NET support.
- Added the ParameterArray and Optional items to the ParameterModifier enumeration for future VB.NET support.
- For simplification, removed the FixedParameter and ParameterArray classes and merged them into their ParameterDeclaration base class. Parameter arrays will have the new ParameterModifier.ParameterArray flag. Removed the FixedParameter and ParameterArray values from the DotNetNodeType enumeration.
- For simplification, removed the StaticConstructorDeclaration class and merged its code so that the regular ConstructorDeclaration class is used instead but with a Static modifier.
- Removed the DotNetNodeType.StaticConstructorDeclaration value.
- Removed the InterfaceType property and replaced it with the ImplementedMembers property on the EventDeclaration, IndexerDeclaration, MethodDeclaration, and PropertyDeclaration classes. The new property is a collection of MemberSpecifier objects.
1/4/2007 - Version 4.0.0238
SyntaxEditor Control
- Added the SyntaxEditor.ViewBracketHighlightingUpdate event and SyntaxLanguage.OnSyntaxEditorViewBracketHighlightingUpdate method allowing for a place to provide advanced bracket highlighting logic.
- Added the EditorViewBracketHighlightingEventArgs and EditorViewBracketHighlightingEventHandler classes.
- Updated the IntelliPromptQuickInfo.HideOnMouseMove property so that when it is false, clicks on the quick info tip will not close it. This allows for processing of link clicks.
- Updated TransposeLinesCommand so that it transposes document lines instead of display lines.
- Changed code so that the caret suspends blinking before the SyntaxEditor.LostFocus event first, instead of after.
- Fixed a bug where using multiple line indicators on a document line might cause one of them to not be painted.
- Fixed a bug where characters entered using IME could sometimes be typed in duplicate.
- Fixed a bug where keyboard-based block selection would not work when word wrap was enabled.
- Added documentation on advanced bracket highlighting and some recent new .NET Languages Add-on features.
.NET Languages Add-on
- Added the ClassAccess type for future VB.NET support.
- Added an ArgumentNullException that will fire if a null IDomType is added to a SourceProjectContent.
- Fixed a bug in the assembly documentation loading code in case the assembly's location property returns an invalid path.
- Fixed a bug in the reflection data for partial types defined in source code that could throw an exception in a certain scenario.
12/18/2006 - Version 4.0.0237
SyntaxEditor Control
- Added the XAML dynamic language definition.
- Added the IntelliPromptQuickInfo.HideOnMouseMove property, which when false will not hide the quick info until the mouse hovers over another part of the SyntaxEditor or leaves the SyntaxEditor control or quick info tip.
- Added the IntelliPromptQuickInfo.Bounds property.
- Updated DocumentPosition and EditPosition so that character positions larger than a Int16.MaxValue are supported.
- Updated the XML language definition's tag name pattern.
- Added a sourceKey parameter to the MergableLexicalParserManager class's constructor and PerformSemanticParse methods. Pass the source filename, if known.
- Added the SourceKey property to the ICompilationUnit interface and updated the Simple language appropriately.
- Fixed a bug with HighlightingStylesCollection.ImportStyleSettings where it could throw an exception.
- Fixed a bug where a region outlining node in a document would not collapse if it started on the first character of the document.
- Fixed a bug where when a document was swapped in to a SyntaxEditor in a certain scenario, an ArgumentOutOfRange exception could be thrown.
- Fixed a bug where semantic parsing of a child language wouldn't kick off if the child language started on the first character in the document.
- Fixed a bug where programmatically jumping to a line that would need to enable the horizontal scrollbar sometimes wouldn't do so properly.
- Fixed a bug where a keypress in a certain scenario could throw an exception.
.NET Languages Add-on
- Added the IDomType.GetSourceKeys property that will return the source keys (filenames) that define the type. This is only applicable for types defined in source code.
- Added the SourceProjectContent.GetTypesForSourceKey method, which returns all the IDomType objects defined within the specified source file. There is an option for whether to return merged partial types or not.
- Added the CompilationUnit.SourceKey property that identifies the filename that defined the compilation unit.
- Added the CompilationUnit.Tag property.
- Added the LiteralExpression.LiteralValue property that will store literal values for number, string, and character types.
- Added the AddressOfExpression classs for future VB.NET support.
- Added several OperatorType enumeration values for future VB.NET support.
- Added several LiteralType enumeration values for future VB.NET support.
- Added a TextRange parameter to the AttributeArgument class constructor.
- Tweaked several parts of the C# semantic grammar.
- Tweaked the TypeMemberDropDownList.UpdateSelection method.
- Fixed a bug where typeof expression AST nodes weren't storing the type reference.
- Fixed a bug where resolving types that are based on a generic type could throw an exception.
Miscellaneous
- Updated the Shared/WinUICore libraries.
12/1/2006 - Version 4.0.0236
SyntaxEditor Control
- Added new features for allowing custom code to be added to generated AST nodes from the semantic grammar files.
- Updated the Simple language's grammar so that the generated AST nodes are fully-functional and so that the sample project uses those generated nodes.
- Changed the Grammar Designer so that it outputs to an "Ast" sub-folder instead of a "Generated" sub-folder.
- Added the AutoFormat item to the DocumentModificationType enumeration.
- Changed the parameters of a protected DynamicSyntaxLanguage constructor.
- Fixed a bug where the parser generator would not interpret a non-terminal's first set correctly if a comment was the first node in its production.
.NET Languages Add-on
- Fixed a bug introduced in the last maintenance release where resolving multiple levels of code-defined interfaces could sometimes result in an exception.
- Fixed a bug where code-defined interface members were being flagged as private instead of public.
11/28/2006 - Version 4.0.0235
SyntaxEditor Control
- Added the HorizontalScrollBarMaximum and VerticalScrollBarMaximum properties to the EditorView class.
- Added the IntelliPromptQuickInfo.CollapsedOutliningNodeMaximumCharacterCount property to control the maximum number of characters that may appear in a collapsed node tooltip.
- Changed the member list so that all Unicode letter and digit characters are automatically allows to be typed while the list is open. Non-letter/digit characters only should be added to the IntelliPromptMemberList.AllowedCharacters collection, which now defaults to the underscore character.
- Updated the SimpleSyntaxLanguage example so that it performs bolding of the current parameter in parameter info tips.
- Added functionality to the Grammar Designer so that when errors occur, the caret attempts to move to the non-terminal that contained the error.
- Added "Go to Definition" functionality to the Grammar Designer.
- Improved several error messages made by the parser generator to give some more detail.
- Updated the sample projects so that many of the dynamic language code-behind classes support line commenting.
- Fixed a bug with dynamic languages where reopening a Form that contained a DynamicSyntaxLanguage instance in the tray could throw an exception dealing with whether the language is secure.
- Fixed a bug with outlining dynamic languages where in a certain scenario, deleting a range of characters would not remove an outlining node that is no longer valid.
- Fixed a bug where an exception occurred in a certain situation when a mouse leave event fired during a dispose call.
- Fixed a bug where an exception occurred in a certain situation when lexical parsing was off and the entire document text was deleted.
.NET Languages Add-on
- Added the SyntaxEditorIntelliPromptMemberListPreFilter event and OnSyntaxEditorIntelliPromptMemberListPreFilter method to the DotNetSyntaxLanguage class, allowing for the pre-filtering of member list items before they are displayed. This may be used to add or remove member list items before the member list is displayed.
- Added the IntelliPromptMemberListPreFilterEventArgs class and IntelliPromptMemberListPreFilterEventHandler delegate.
- Added a documentation topic on member list pre-filtering.
- Added the IDomType.GetInterfaces method that returns the interfaces implemented by the type.
- Fixed a bug in the auto-indent code where pressing Enter at the start of keywords in a certain situation caused an extra indent level.
- Fixed a bug where member lists didn't show inherited interface members when the target type was defined as an interface.
- Fixed a bug where member lists didn't show when after the 'new' keyword and in a type declaration scope.
- Fixed a bug where the member list displayed after the 'new' keyword didn't display types in the global namespace.
- Fixed a bug where nested types weren't displaying in a 'typeof' member list.
- Fixed a bug where protected members would sometimes show up in a member list in a certain scenario where they should not be listed.
Miscellaneous
- Updated the Shared/WinUICore libraries.
- Added digital code-signing of all assemblies.
11/9/2006 - Version 4.0.0234
SyntaxEditor Control
- Added the HeaderText and FooterText properties to the Document class. These text fragments, if specified, are combined with the Document.Text when sending code to the semantic parser service. This allows the editing of code fragments (such as a C# method body) with full IntelliPrompt of "surrounding" header/footer code.
- Added the SyntaxEditor.UnicodeEnabled property which defaults to true. If set to false, document loading/rendering speed will be increased however it should only be set to false if ASCII characters are used (0-255).
- Added the Code Fragments QuickStart.
- Added the Document.AutoCaseCorrectOnlyOnModification property, which controls whether auto case correction only occurs after a modification takes place.
- Added the OutliningIndicatorForeColor and OutliningIndicatorBackColor properties to the SyntaxEditorRenderer class.
- Tweaked the member list item tooltips so they don't hide and redisplay when moving the caret if no member list selection change is made.
- Updated a couple of the sample dynamic language codebehind classes to fix an exception that occurred with them when creating manual outlining nodes.
- Fixed a bug with the parameter info tip where delimiter characters that were in strings or comments were being interpreted as delimiters.
- Fixed a bug where auto case correction was not updating properly on multi-line modifications.
- Fixed a bug where the caret would not always stop blinking when the parent Form was deactivated by clicking on another Form in the Windows taskbar.
- Fixed a bug where word wrap would not work when printing if certain non-print-related properties were set to certain values.
- Fixed a bug where the horizontal scrollbar maximum/enabled states weren't always updated appropriately in a certain scenario.
- Fixed a bug where turning off and back on the Document.LineModificationMarkingEnabled property would reset the undo stack in a way that undoing all subsequent document modifications would not set the Document.Modified property back to false.
.NET Languages Add-on
- Redesigned some of the reflection cache format, allowing for smaller reflection cache files.
- Fixed a bug where loading an external reference that had a generic type with a generic type argument containing a constraint of the generic type caused a stack overflow.
- Fixed a bug in the C# semantic parser where attributes weren't being parsed correctly when applied past the first parameter in a formal parameter list.
- Fixed a bug where IntelliPrompt did not work properly on enumeration members defined in code.
10/16/2006 - Version 4.0.0233
SyntaxEditor Control
- Added an overload to the DynamicLexicalState constructor that allows only a key to be passed in, like in v3.1.
- Updated the SDI Editor sample in the sample project so that a language setting of None will turn off lexical/semantic parsing and outlining. This sort of mode is useful for demonstrating a more optimized environment for working on huge files.
- Fixed a bug where using IntelliPromptParameterInfo.MeasureAndResize sometimes didn't repaint the border of the popup properly when growing in size.
- Fixed a bug where virtual space at the end of documents caused an exception when scrolling.
- Fixed a bug where typing at the character immediately following a collapsed outlining node would expand the node.
- Fixed a bug where sometimes typing would remove a collapsed outlining node indicator.
- Fixed a bug where whitespace at the start of an outlining node's collapsed text would prevent the collapsed text from being painted.
- Fixed a bug where typing characters in sequence didn't combine the undo actions into a single action.
- Fixed a bug where modifying patterns in dynamic languages in a certain scenario could cause an exception after calling SyntaxLanguage.IsUpdating.
- Updated licensing code to check 64-bit machine registry keys.
.NET Languages Add-on
- Added the DotNetSyntaxLanguage abstract base class.
- Added the DotNetTextStatistics abstract base class.
- Added the CompilationUnit.SourceLanguage property.
- Added many new items to the Modifiers enumeration for Visual Basic support.
- Fixed a bug where base class references would not resolve when a generic type was used.
- Fixed a bug where regions would not outline if there were no namespaces or types defined in the Document.
- Fixed a bug where regions would not outline if there was no endregion token found.
10/3/2006 - Version 4.0.0232
Major New Features
- A complete parser generator framework for defining semantic parsers.
- A semantic parser service which can perform semantic parsing in a separate worker thread.
- An AST node class framework for building abstract syntax trees for code documents.
- Reworked the design of syntax languages so that they are much more abstracted and can totally encapsulate all the code for handling IntelliPrompt, smart indent, code formatting, etc.
- Virtual space past the end of lines.
- Virtual space past the end of the document (virtual lines).
- Block selection and related features such as controlling the types of selections that are able to be made.
- Read-only regions of text within an editable document.
- Text statistics that scan text and give statistics such as word, sentence, character counts, readability scores and can display the results in a Form. Languages implementations can create custom statistics such as comment coverage.
- IntelliPrompt smart tag features.
- Improved parameter info features to aid in selected parameter tracking and context switching.
- Ability to suspend lexical parsing when a batch of document modifications are made.
- Ability to disable lexical and/or semantic parsing completely, which is useful for working with extremely large files.
- A Document.PreTextChanging event that lets you cancel a document modification before it occurs.
- Various whitespace-trimming methods and options to trim trailing whitespace on paste or text replacement.
- Designer features for the Document.Language property, allowing a language to be chosen if there is one available in the component tray or a dynamic language to be loaded from a file.
- Support for non-editable code snippet declarations and methods so that functions can be used to update fields (enables dynamically building case statements for a switch on an enumeration, etc.).
- Changed code snippets to only load snippet header information by default for saving on memory. The full snippet data is loaded on demand when the code snippet is activated.
- Automated line modification marking and enhanced how it tracks modified text ranges.
- An improved object model for span indicators that uses layers.
- Detailed hit-testing for anywhere in the editor.
- Custom EditorView buttons that can be placed on any side of a scrollbar.
- A new renderer interface that lets you override how SyntaxEditor is painted, alter the colors used for the default drawing scheme, or perform custom draw.
- Multiple font families/sizes in the same document.
- Highlighting style enhancements for semi-transparent backgrounds, borders, strike-outs, underlines, and more.
- Ability to modify the caret style and width for both insert and overwrite modes.
- Added a new FontDropDownList control that displays all non-Symbol fonts and shows fixed-width fonts in bold type.
- Over 40 new built-in commands.
- New free dynamic language XML definitions for Assembly, Lua, MSIL, and Pascal.
- An enormous amount of object model enhancements.
- Dramatically reduced memory usage.
- Sample project enhanced with a Grammar Designer and many QuickStarts.
- More than double the number of core documentation topics.
- Full source for a sample language add-on in the C# sample project.
- An advanced C# language add-on that has automated IntelliPrompt, smart indent, XML comment auto-complete, and much more. (Sold separately)
Minor New Features
- Updated dynamic language XML definitions to add features such as documentation comment member lists in C#, tag completion in XML and HTML, and tag member lists in HTML.
- Ability for bracket highlighting brackets to be bold.
- Code snippet field modified event.
- Option for current line highlighting to extend to all margins.
- Option to cut/copy text with HTML formatting.
- Built-in Find/Replace and Go to Line dialogs.
- Unified all mouse click and hover events into two more robust events.
- Drop-shadows option for all IntelliPrompt popups.
- IntelliPrompt popup ability to show images and handle link clicks.
- Carriage return-only line terminated text is supported.
- Custom document line border colors.
- Ability to create IntelliPromptMemberListItem subclasses and measure/draw the items yourself. This allows for you to draw things like muliple columns, multiple images, etc.
- Total page count calculated for Print dialog.
- Regular expression engine support for zero-width look-ahead and look-behind.
- Regular expression find support for zero-width matches such as $.
- Regular expression replace substitution $0 works like $&.
- When clicking on the cross-section of a four-way view split, the splits may be resized in both directions.
- Consolidated all Timers used by SyntaxEditor into a single Timer, which uses less resources.
- Many other minor features.
Dynamic Language XML Definition Enhancements
- Updated the LanguageDefinitionVersion to 4.0.
- Updated the xmlns to "http://ActiproSoftware/SyntaxEditor/4.0/LanguageDefinition".
- Added the SyntaxLanguageTypeName attribute to the SyntaxLanguage tag allowing for a specific Type to be loaded for the language (which must inherit DynamicSyntaxLanguage).
- XSD updated to allow for the SyntaxLanguageTypeName attribute on SyntaxLanguage.
- XSD updated to allow more options for the Style's Bold and Italics attributes.
- XSD updated to use an UnderlineStyle attribute on the Style element instead of Underline, although Underline will still work.
- XSD updated to allow for new BorderColor, BorderCornerStyle, BorderStyle, FontFamilyName, FontSize, StrikeOutColor, StrikeOutStyle, StrikeOutWeight, UnderlineColor and UnderlineWeight attributes on the Style element.
Free Dynamic Language XML Definitions
- Added a dynamic language XML definition for the Assembly language.
- Added a dynamic language XML definition for the Lua language.
- Added a dynamic language XML definition for the MSIL language.
- Added a dynamic language XML definition for the Pascal language.
- Updated the dynamic VB.NET language definition to support XML documentation comments and member lists for the documentation comments.
- Updated the dynamic VB.NET language definition's example text.
- Updated the dynamic XML and HTML languages to perform end tag auto-complete, just like in Visual Studio.
- Updated the dynamic HTML language's tag member list to work with the new auto-complete feature.
- Moved several trigger handler samples that display member lists to the dynamic C# and HTML syntax language code.
Alphabetic Listing of New SyntaxEditor Types
- ActiproSoftware.SyntaxEditor namespace
- AstNodeBase - Provides the abstract base class for an AST node.
- AstNodeList - Represents a collection of IAstNode objects.
- AstNodeListWrapper - Represents a collection of IAstNode objects that all have a certain IAstNode.ContextID and are parented within a certain AstNodeList.
- AutomaticOutliningBehavior - Specifies when automatic outlining is performed.
- BookmarkLineIndicator - Renamed from BookmarkIndicator.
- BreakpointSpanIndicator - Renamed from BreakpointIndicator.
- CaretStyle - Specifies the drawing style of a Caret.
- CollapsibleNodeOutliningParser - Provides a class that builds an OutliningNode tree for a Document based on a list of CollapsibleNodeOutliningParserData objects.
- CollapsibleNodeOutliningParserData - Stores input data about a ICollapsibleNode that is sent to a CollapsibleNodeOutliningParser.
- CompilerErrorSpanIndicator - Renamed from CompilerErrorIndicator.
- CurrentStatementSpanIndicator - Represents a current statement span indicator.
- DefaultLexicalState - Provides the default implementation for a lexical state.
- DefaultWordBreakFinder - Provides the default implementation of an object that finds word breaks within a Document.
- DisappearingSpanIndicator - Renamed from DisappearingIndicator.
- DisplayLineOutliningState - Specifies the outlining state for a DisplayLine.
- DocumentLineIndicatorCollection - Represents collection of LineIndicator objects within a Document.
- DocumentLineLineIndicatorCollection - Represents collection of LineIndicator objects within a DocumentLine.
- DocumentLineSpanIndicatorCollection - Represents collection of SpanIndicator objects that overlap at least one character on a DocumentLine.
- DocumentModificationOptions - Specifies options for a DocumentModification.
- DocumentPosition - Renamed from Position. Represents an ordered pair of line and character index values that defines a position within the lines of a Document.
- DocumentPositionRange - Represents a range of two DocumentPosition values within the lines of a Document.
- EditorViewButtonCommand - Represents a button command whose links appears within an EditorView next to scrollbars.
- EditorViewButtonCommandCollection - Represents a collection of EditorViewButtonCommand objects.
- EditorViewButtonLink - Represents a button link that appears within an EditorView next to scrollbars and is based on a EditorViewButtonCommand.
- EditorViewButtonLinkEventArgs - Provides data for events that apply to an EditorViewButtonLink.
- EditorViewButtonLinkEventHandler - Represents the method that will handle EditorViewButtonLink events.
- EditorViewMouseEventArgs - Provides data for EditorView mouse events.
- EditorViewMouseEventHandler - Represents the method that will handle EditorView mouse events.
- EditPosition - Represents an ordered pair of line and character index values that defines a position within the display lines of an EditorView.
- EditPositionRange - Represents a range of two EditPosition values within the display lines of an EditorView.
- FindReplaceForm - Represents a built-in Find and Replace form.
- FindReplaceStatusChangeEventArgs - Provides data for find/replace status change events.
- FindReplaceStatusChangeEventHandler - Represents the method that will handle find/replace status change events.
- FindReplaceStatusChangeType - Specifies the type of event that occurred for a find/replace status event.
- FontDropDownList - Represents a drop-down list control for selecting a Font.
- GrammarErrorSpanIndicator - Renamed from GrammarErrorIndicator.
- HighlightingStyleBorderCornerStyle - Specifies the corner style of a HighlightingStyle border.
- HighlightingStyleLineStyle - Specifies the style of a HighlightingStyle line, used for borders, strikeouts, and underlines.
- HighlightingStyleLineWeight - Specifies the weight of a HighlightingStyle line, used for underlines.
- HighlightingStyleResolver - Resolves final highlighting style settings from mulitiple layers of highlighting style overrides.
- HighlightingStyleSpanIndicator - Represents a span indicator that draws text using the specified HighlightingStyle.
- IAstNode - Provides the base requirements for an AST node. Any object implementing this interface may be used with SyntaxEditor's AST features.
- IAstNodeList- Provides the base requirement for a collection of IAstNode objects.
- ICollapsibleNode - Provides the base requirements of an IAstNode that may be collapsible.
- ICompilationUnit - Provides the base requirements for a AST compilation unit node for a language.
- ILexicalParseTarget - Provides the base requirements for an object that should receive parse output from a lexical parser.
- ILexicalScope - Provides the base requirements for a lexical scope.
- ILexicalState - Provides the base requirements for a lexical state.
- IMergableLexicalParser - Provides the base requirements for a lexical parser for a language that supports merging with other languages.
- IntelliPromptMemberListBox - Represents an owner-draw ListBox for an IntelliPrompt member list.
- IntelliPromptParameterInfo - Renamed from IntelliPromptInfoTip.
- IntelliPromptSmartTag - Provides control for the IntelliPrompt smart tag.
- IntelliPromptTipImageRequestedEventArgs - Provides data for events that request an Image for an IntelliPrompt popup tooltip.
- IntelliPromptTipImageRequestedEventHandler - Represents the method that will handle events that request an Image for an IntelliPrompt popup tooltip.
- IntelliPromptTipLinkClickEventArgs - Provides data for events that handle hyperlink clicks on an IntelliPrompt popup tooltip.
- IntelliPromptTipLinkClickEventHandler - Represents the method that will handle events for hyperlink clicks on an IntelliPrompt popup tooltip.
- ISemanticParseDataTarget - Provides the base requirements for an object that receives the results of a semantic parse.
- ISemanticParserServiceProcessor - Provides the base requirements for an object that is capable of being called by the SemanticParserService to process a request.
- ISyntaxEditorRenderer - Provides the base requirements for a SyntaxEditor control renderer.
- ITextBufferReader - Provides the base requirements for an object that reads characters from a fixed text buffer.
- ITextRange - Provides the base requirements for an object that has range of two offset values within a text document.
- IToken - Represents the base requirements for a token that has been assigned to a span of document text by a lexical parser.
- ITokenLexicalParseData - Provides the base requirements for an object that provides lexical parse data for a IToken for a mergable language.
- IWordBreakFinder - Provides the base requirements for an object that finds word breaks within a Document.
- LanguageTransitionAstNode - Provides the base class for an AST node.
- LexicalScopeAndIDTokenLexicalParseData - Provides IToken lexical parse data based on a token ID and an ILexicalScope.
- LexicalScopeBase - Provides the abstract base class for a lexical scope.
- LexicalStateAndIDTokenLexicalParseData - Provides IToken lexical parse data based on a token ID and an ILexicalState.
- LineTerminator - Renamed from LineEndStyle.
- LocationToPositionAlgorithm - Renamed from LocationToOffsetAlgorithm.
- MatchType - Represents the type of regular expression match that was made.
- MergableLexicalParserManager - Represents a manager that coordinates language and state shifting for the lexical parsing of one or more mergable languages.
- MergableSyntaxLanguage - Represents an abstract base language definition that provides features for a mergable language.
- MergableToken - Represents the default implementation of a IToken that can be used with a MergableSyntaxLanguage.
- ProgrammaticLexicalScope - Provides a lexical scope implementation that uses two delegates to perform the IsScopeStart and IsScopeEnd checks.
- ProgrammaticLexicalScopeMatchDelegate - Represents the method that will handle ITokenLexicalParseData matching callbacks for ProgrammaticLexicalScope objects.
- ReadOnlySpanIndicator - Represents a span indicator that can be used to mark read-only ranges of text.
- SelectionModes - Specifies the types of selection.
- SemanticParseFlags - Specifies flags for a semantic parsing operation.
- SemanticParserService - Represents a semantic parser service that can perform queued semantic parsing in a separate thread.
- SemanticParserServiceRequest - Represents a semantic parser service request.
- SmartTag - Represents a smart tag.
- SmartTagSpanIndicator - Represents a smart tag span indicator.
- SpanIndicatorLayer - Represents a sorted layer of SpanIndicator objects that cannot overlap.
- SpanIndicatorLayerCollection - Represents collection of SpanIndicatorLayer objects.
- SpellingErrorSpanIndicator - Renamed from SpellingErrorIndicator.
- StringBuilderTextBufferReader - Represents an ITextBufferReader implementation for a StringBuilder.
- StringTextBufferReader - Represents an ITextBufferReader implementation for a String.
- SyntaxEditorHitTestResult - Provides hit-test result data for a hit-test performed on a SyntaxEditor.
- SyntaxEditorHitTestTarget - Specifies the target of a hit-test operation.
- SyntaxEditorRenderer - Provides a base renderer for the SyntaxEditor control.
- SyntaxError - Represents a syntax error in code.
- SyntaxErrorSpanIndicator - Renamed from SyntaxErrorIndicator.
- TextRange - Represents a range of two offset values within a text document.
- TextRangeLayerBase - Represents a sorted layer of ITextRange objects that cannot overlap.
- TextStatistics - Provides numerous statistics such as line, word, character counts, and readability scores for text.
- TokenBase - Represents the base class for an IToken implementation.
- UndoableModificationChangeType - Specifies the type of changes that have been made to a display line since its last save point.
- VisualStudio2005SyntaxEditorRenderer - Provides a renderer for the SyntaxEditor control that draws using a Visual Studio 2005 style.
- WaveLineSpanIndicator - Represents a span indicator that draws a simple wave line with the specified UnderlineColor.
- ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace
- DynamicLexicalScope - Moved to this namespace and renamed from LexicalScope.
- DynamicLexicalState - Moved to this namespace and renamed from LexicalState.
- DynamicOutliningSyntaxLanguage - Represents a syntax highlighting language that is defined using an XML lexical grammar or created programmatically, and has some helper methods for performing automatic outlining.
- DynamicSyntaxLanguage - Moved to this namespace and renamed from SyntaxLanguage.
- DynamicToken - Moved to this namespace and renamed from Token.
- LexicalMacro - Moved to this namespace.
- LexicalMacroCollection - Moved to this namespace.
- LexicalPattern - Moved to this namespace.
- LexicalPatternGroup - Moved to this namespace.
- LexicalPatternGroupCollection - Moved to this namespace.
- LexicalPatternType - Moved to this namespace.
- ActiproSoftware.SyntaxEditor.Addons.PlainText namespace
- PlainTextLexicalStateID - Contains the lexical state IDs for the Plain Text language.
- PlainTextSyntaxLanguage - Represents a plain text language definition.
- PlainTextTokenID - Contains the token IDs for the Plain Text language.
- ActiproSoftware.SyntaxEditor.Commands namespace
- CodeBlockSelectionContractCommand
- CodeBlockSelectionExpandCommand
- ConvertSpacesToTabsCommand
- ConvertTabsToSpacesCommand
- CutLineToClipboardCommand
- DeleteBlankLinesCommand
- DeleteLineCommand
- DeleteToLineEndCommand
- DeleteToLineStartCommand
- IncrementalSearchCommand
- IntelliPromptCompleteWordCommand
- LineDuplicateCommand
- MoveToLineStartAfterIndentationCommand
- MoveToNextLineStartAfterIndentationCommand
- MoveToPreviousLineStartAfterIndentationCommand
- OpenLineAboveCommand - Renamed from OpenLineCommand.
- OpenLineBelowCommand
- ReverseIncrementalSearchCommand
- ScrollDownCommand
- ScrollLeftCommand
- ScrollLineToVisibleBottomCommand
- ScrollLineToVisibleMiddleCommand
- ScrollLineToVisibleTopCommand
- ScrollPageDownCommand
- ScrollPageUpCommand
- ScrollRightCommand
- ScrollToDocumentEndCommand
- ScrollToDocumentStartCommand
- ScrollUpCommand
- SelectBlockDownCommand
- SelectBlockUpCommand
- SelectBlockLeftCommand
- SelectBlockRightCommand
- SelectBlockToPreviousWordCommand
- SelectBlockToNextWordCommand
- SelectToLineStartAfterIndentationCommand
- ShowIntelliPromptParameterInfoCommand
- TabifySelectedLinesCommand
- TransposeCharactersCommand
- TransposeLinesCommand
- TransposeWordsCommand
- TrimTrailingWhitespaceCommand
- UntabifySelectedLinesCommand
- ActiproSoftware.SyntaxEditor.ParserGenerator namespace
- InvalidGrammarException - An exception that is thrown when parsing invalid grammar productions.
- IRecursiveDescentLexicalParser - Provides the base requirements for a recursive descent lexical parser.
- MergableRecursiveDescentLexicalParser - Represents a mergable language recursive descent lexical parser implementation.
- RecursiveDescentLexicalParser - Provides the base class for a recursive descent lexical parser implementation.
- RecursiveDescentSemanticParser - Provides the base class for a recursive descent semantic parser.
- RecursiveDescentSemanticParserGenerator - Provides a generator for a SyntaxEditor recursive descent semantic parser.
- RecursiveDescentSemanticParserGeneratorOutput - Represents the output from a RecursiveDescentSemanticParserGenerator.
Alphabetic Listing of Updates to Existing SyntaxEditor Types
- AutomaticOutliningSupportType enumeration
- Removed this enumeration.
- BookmarkIndicator class
- Added the BackColor and ForeColor properties.
- Renamed to BookmarkLineIndicator.
- BreakpointIndicator class
- Added the BackColor and BorderColor properties.
- Renamed to BreakpointSpanIndicator.
- Caret class
- Added the InsertStyle property to allow for altering how the caret is drawn when in insert mode.
- Added the OverwriteStyle property to allow for altering how the caret is drawn when in overwrite mode.
- Added the OverwriteWidth property to control the width of the caet in overwrite mode, if a non-block caret style is used.
- Added the EditPosition property, which returns the EditPosition of the caret within the selected view.
- Renamed the DisplayPosition property to DisplayDocumentPosition and changed its return type to DocumentPosition.
- Renamed the Position property to DocumentPosition and changed its return type to DocumentPosition.
- Changed the Caret class so that it inherits Object instead of DisposableObject.
- CodeSnippet class
- Added the IsHeaderOnly property, which indicates whether the code snippet only contains header information.
- Added new overloads to the LoadFromXml methods that indicate whether to only load the code snippet header information.
- Changed the existing LoadFromXml method overloads to load header-only code snippets and save on memory. If code snippets should be fully loaded, use the new overloads of those methods instead.
- CodeSnippetFolder class
- Added new constructor overloads that indicate whether to only load the code snippet header information for any loaded code snippets.
- Added a new overload to the Refresh method that indicate whether to only load the code snippet header information for any loaded code snippets.
- Changed the existing constructors and Refresh method to load header-only code snippets and save on memory. If code snippets should be fully loaded, use the new overloads of those methods instead.
- CodeSnippetFolderCollection class
- Added the FindCodeSnippetWithShortcut method
- ColumnGuide class
- Added a DashStyle property and an overload to the constructor that accepts a DashStyle. This allows for dotted, dashed, etc. styles when drawing a column guide.
- ChangeCharacterCasingCommand class
- Added support for the CharacterCasing.Normal parameter, which will capitalize the first character of a word.
- CompilerErrorIndicator class
- Renamed to CompilerErrorSpanIndicator.
- CopyToClipboardCommand class
- Added a constructor that allows for setting whether to append to existing clipboard contents.
- CutToClipboardCommand class
- Added a constructor that allows for setting whether to append to existing clipboard contents.
- DisplayLine class
- Added the Contains method.
- Added the DocumentLine and DocumentLineIndex properties to return the document line, if any, with which the display line is associated.
- Added the HasContentDividerAfter and HasContentDividerBefore properties.
- Added the Index property, indicating the display line index.
- Added the IsFirstForDocumentLine and IsLastForDocumentLine properties, which return whether the display line is the first/last display line for its associated document line.
- Added the IsVirtual property, which returns whether the display line is a virtual line.
- Added the LineModificationChangeType property, which indicates the type of change that has been made on the line.
- Added the OutliningState property, which returns outlining indicator state for the display line.
- Added the Text property.
- Added the TextRange property.
- DisplayLine objects are now allocated dynamically as requested. Internal storage of DisplayLine data is improved to greatly reduce memory. DisplayLine instances now become invalid if referenced after a change is made to the Document or display lines.
- Renamed the IsEndOfLine property to IsLineEnd to be more consistent with product naming conventions.
- Renamed the IsStartOfLine property to IsLineStart to be more consistent with product naming conventions.
- DisplayLineCollection class
- Added the IsVirtualLine method.
- DisappearingIndicator class
- Added the BackColor and ForeColor properties.
- Renamed to DisappearingSpanIndicator.
- Document class
- Added read-only region functionality via the special "Read-only" span indicator layer.
- Added designer drop-down-editing features for the Text property.
- Added the AutoConvertTabsToSpaces property. This property was moved from the SyntaxEditor.ConvertTabsToSpaces property to the Document class.
- Added the AutomaticOutliningComplete event, which can be used for collapsing regions on initial load if the event argument's IsProgrammaticTextReplacement property is set.
- Added the AutoTrimTrailingWhitespaceOnPaste and AutoTrimTrailingWhitespaceOnTextReplacement properties that control whether to trim trailing whitespace on paste and text replacement operations respectively.
- Added the DeleteText, InsertText, and ReplaceText methods.
- Added the GetCoreTextBuffer method, which returns the StringBuilder containing the raw text of the document. Only use this for fast read-only scanning. Never modify it or exceptions will occur.
- Added GetSubstring overloads that accept a TextRange.
- Added the GetSubstringAsHtml method, allowing for the retrieval of an HTML markup of the specified document substring.
- Added the GetTextStatistics method, which returns the TextStatistics for the entire document text.
- Added the Guid property, which returns a unique GUID that identifies the document.
- Added the IsTextRangeReadOnly method to determine whether any character in the specified TextRange is read-only.
- Added the LexicalParsingEnabled property, which can disable lexical parsing.
- Added the LineIndicators and SpanIndicatorLayers properties.
- Added the LanguageData property, which can be used to store document-specific data for the Document's language.
- Added the OutliningModeChanged event.
- Added the ParsingSuspended property and the SuspendParsing and ResumeParsing methods. Suspend parsing while quickly performing numerous text modifications in a row.
- Added the PreTextChanging event, which fires before a modification occurs and allows it to be cancelled.
- Added the SematicParseData property, which stores the result of semantic parsing, such as an AST of the document.
- Added the SematicParseDataChanged event.
- Added the SemanticParsingEnabled property, which can disable semantic parsing.
- Added the SyntaxLanguageChanged event.
- Added the SyncRoot property that can be used to synchronize operations performed on the Document from a secondary thread.
- Added the TrimTrailingWhitespace method that trims the trailing whitespace in the document.
- Changed Document.LoadFile so that the Filename property is set before the file's text is loaded, instead of after.
- Added the DeletedTokenTrackingEnabled property to control whether to track deleted tokens after each lexical parse in the TokenCollection.DeletedTokens collection. Leaving its default value of false saves on memory and increases parsing speed. Set it to true if you need deleted token tracking like in v3.1.
- The simple GetSubstring method now uses carriage return/newline line terminators instead of only newlines. Use the other GetSubstring method that accepts a LineTerminator to get the newline-only version of the substring.
- The Text property now uses carriage return/newline line terminators instead of only newlines. Use the GetText method to get the newline-only version of text.
- Changed the CaseCorrectText method's return value to be of type TextRange instead of Range.
- Changed the Document.SmartIndent event so that the IndentAmount property specifies characters and not tabs, allowing for smart indent to any character column. To achieve old functionality, multiply the desired tabstop level by the SyntaxEditor.Document.TabSize value.
- Removed the retainSelection parameter of AppendText and replaced it with a parameter of type DocumentModificationOptions.
- UndoableInsert method removed to use a more intuitive name. Use the new InsertText or ReplaceText methods instead.
- UndoableDelete method removed to use a more intuitive name. Use the new DeleteText method instead.
- Renamed the SpacesInTab property to TabSize, which is more intuitive.
- Removed the Indicators property. Added the LineIndicators and SpanIndicatorLayers properties instead.
- Removed the LineModificationMarkingColor property and replaced it with the ISyntaxEditorRenderer.LineModificationMarkingUnsavedColor and ISyntaxEditorRenderer.LineModificationMarkingSavedColor properties.
- Renamed the ChangeLineModificationMarkColor method to ChangeSelectionMarginMarkColor. If you were using this method for line modification marking, it is no longer needed since tracking is now automatic.
- Renamed the GetWordRange method to GetWordTextRange and changed its return value to a TextRange.
- Moved the LexicalParserLineLookAhead and LexicalParserLineLookBehind properties to the MergableSyntaxLanguage class.
- DocumentFindReplace class
- Added the ClearSpanIndicatorMarks method to remove all the span indicators for marking results from a document.
- Changed the FindAll, MarkAll, and ReplaceAll methods to accept a parameter of type TextRange instead of Range.
- DocumentIndicatorCollection class
- Removed this class. Use the new DocumentLineIndicatorCollection and SpanIndicatorLayerCollection classes instead.
- DocumentLine class
- Reduced the memory needed to store basic DocumentLine objects by over 6 times.
- Added the BorderColor for setting a border on the line.
- Added the BorderTopColor and BorderBottomColor properties to allow for separate border colors, or a border on only one side of a line.
- Added the GetAllIndicators and GetAllVisibleIndicators methods.
- Added the IndentAmount property, which returns the number of columns that the first non-whitespace character is indented on the line.
- Added the LineIndicators and SpanIndicators properties.
- Added the SelectionMarginMarkColor property.
- Added a setter to TabStopLevel property.
- Added the TextRange property.
- Added the TrimTrailingWhitespace method to trim the trailing whitespace off the document line.
- DocumentLine objects are now allocated dynamically as requested. Internal storage of DocumentLine data is improved to greatly reduce memory. DocumentLine instances now become invalid if referenced after a change is made to the Document.
- Changed the Contains method so that doesn't return true for line terminators.
- Renamed the GetTabStopLevel method to the TabStopLevel property.
- Removed the Indicators property. Use the new LineIndicators and SpanIndicators properties instead.
- Renamed the IsEndOfLine property to IsLineEnd to be more consistent with product naming conventions.
- Renamed the IsStartOfLine property to IsLineStart to be more consistent with product naming conventions.
- Renamed the ModificationMarkColor property to SelectionMarginMarkColor. It overrides any color that would have displayed by the automated line modification marking.
- DocumentModification class
- Added the StartOffsetIsAtLineTerminator property.
- Renamed the LexicalParseOffsetRange property to LexicalParseTextRange and changed its return type to TextRange. The property is not filled in if parsing is suspended.
- Renamed the OutliningParseOffsetRange property to OutliningParseTextRange and changed its return type to TextRange. The property is not filled in if parsing is suspended or if outlining is performed in a separate thread.
- DocumentModificationEventArgs class
- Added the Cancel property, which can be used to cancel a modification in the Document.PreTextChanging event.
- Added the IsProgrammaticTextReplacement property.
- Renamed the DirtyRange property to DirtyTextRange and changed its return type to TextRange.
- DocumentModificationType enumeration
- Added the ConvertSpacesToTabs, ConvertTabsToSpaces, DuplicateLine, InsertFile, OpenLine, ToggleCase, TransposeCharacters, TransposeLines, and TrimTrailingWhitespace items.
- EditorView class
- Added the CanDelete property.
- Enhanced the ChangeCharacterCasing method to support CharacterCasing.Normal, which will capitalize the first character of each word.
- Added overloads of the CommentLines and UncommentLines methods that uses the current language's LineCommentDelimiter property.
- Added the ConvertSpacesToTabs and ConvertTabsToSpaces methods.
- Added the CopyAndAppendToClipboard and CutAndAppendToClipboard methods.
- Added the CurrentDisplayLine property.
- Added the CutLineToClipboard method.
- Added the DeleteBlankLines, DeleteLine, DeleteToLineEnd, and DeleteToLineStart methods.
- Added the DeleteSelectedText and ReplaceSelectedText methods.
- Added the DisplayLineHeight property.
- Added the DuplicateLine method that inserts a copy of the current display line.
- Added the FindCurrentWordEnd, FindCurrentWordStart, FindNextWordStart, and FindPreviousWordStart methods.
- Added an overload of the GetCharacterBounds and GetCharacterColumn methods that accept an EditPosition.
- Added the GetCurrentLanguageForContext method, which returns the language at the caret that should be used for context.
- Added the GetDisplayLineBounds method.
- Added the GetDisplayLineIndexFromYLocation method.
- Added the GetTextStatisticsForSelectedText method, which returns the TextStatistics for the entire document text.
- Added the HasFocus property.
- Added the IndicatorMarginBounds, LineNumberMarginBounds, SelectionMarginBounds, TextAreaBounds, UserMarginBounds, and WordWrapMarginBounds properties.
- Added the InsertFile method that allows for insertion of a file's contents.
- Added an overload of the InsertSurroundingText method that accepts a DocumentModificationType parameter.
- Added an overload of the InsertSurroundingText method that accepts a DocumentModificationType parameter and a parameter indicating whether to reselect the inner text.
- Added the IsCaretVisible property.
- Added the IsEditPositionVirtual method.
- Added the OpenLineBelow method.
- Added the OffsetToPosition and PositionToOffset methods.
- Added the ScrollDown, ScrollLeft, ScrollLineToVisibleBottom, ScrollLineToVisibleMiddle, ScrollLineToVisibleTop, ScrollPageDown, ScrollPageUp, ScrollRight, ScrollToDocumentEnd, ScrollToDocumentStart, and ScrollUp methods.
- Added the TabifySelectedLines and UntabifySelectedLines methods.
- Added the ToggleCharacterCasing method that toggles the character casing of the selection.
- Added the TransposeCharacters, TransposeLines, and TransposeWords methods.
- Added the TrimTrailingWhitespace method that trims the trailing whitespace of the selection, or the current line if there is no selection.
- Added code to set focus to SyntaxEditor if a scrollbar is clicked.
- Renamed the GetCurrentWordRange method to GetCurrentWordTextRange and changed its return value to a TextRange.
- Removed the InsertText method. Use the new ReplaceSelectedText method instead.
- Renamed the OffsetFromLocation method to LocationToOffset.
- Renamed the PositionFromLocation method to LocationToPosition and changed its return type to DocumentPosition.
- Renamed the OpenLine method to OpenLineAbove.
- FindReplaceResult class
- Added a constructor that accepts a TextRange.
- Added the EndOffset, StartOffset, and TextRange properties.
- Replaced the Offset property with the StartOffset property.
- FindReplaceResultSet class
- Renamed the PastEndOfDocument property to PastDocumentEnd to be more consistent with product naming conventions.
- GrammarErrorIndicator class
- Added the BackColor and ForeColor properties.
- Renamed to GrammarErrorSpanIndicator.
- HighlightingStyle class
- Added a new constructor.
- Added the BorderColor, BorderCornerStyle, and BorderStyle properties.
- Added the CopyTo method, allowing for copying of styles from one HighlightingStyle instance to another.
- Added the FontFamilyName and FontSize properties.
- Added the HasAdornments and HasFontChange properties.
- Added the StrikeOutColor, StrikeOutStyle, and StrikeOutWeight properties.
- Added the UnderlineColor, UnderlineStyle, and UnderlineWeight properties.
- Changed the boolean parameters of the constructor to type DefaultableBoolean.
- Changed the Bold property to type DefaultableBoolean.
- Changed the Italic property to type DefaultableBoolean.
- Removed the Underline property. Use the new underline-related properties instead.
- IconResource enumeration
- Added the XmlDeclaration item and related icon to the SyntaxEditor.ReflectionImageList.
- IncrementalSearch class
- Added an overload of the PerformSearch button that indicates the search direction.
- IndentType enumeration
- Added the Block item, which supports plain block indent.
- Indicator class
- Added the IsBound property.
- Added the HasFontChange property.
- Changed the arguments that are passed to the constructor..
- Removed the DrawGlyph method to use a PaintEventArgs argument instead of a Graphics.
- Removed the DrawMarks and GetHighlightingStyle methods.
- Removed the HasAdornments and HasStyleAssignment properties since they are no longer needed.
- Removed the IndicatorMarks property since it is no longer needed.
- Removed the OnAdded, OnRemoved, and OnResized methods.
- IndicatorCollection class
- Removed the class. Use the new DocumentLineLineIndicatorCollection and DocumentLineSpanIndicatorCollection classes instead.
- IndicatorMarginClickEventArgs class
- Removed the IndicatorMarginClickEventArgs class. Use the new EditorViewMouseEventArgs class instead.
- IndicatorMarginClickEventHandler delegate
- Removed the IndicatorMarginClickEventHandler delegate. Use the new EditorViewMouseEventHandler delegate instead.
- IndicatorMarks enumeration
- Removed IndicatorMarks the enumeration.
- IntelliPrompt class
- Added the DropShadowEnabled property, which when set to true will add drop shadows to all IntelliPrompt popups.
- Added the SmartTag property, enabling access to smart tag functionality.
- Made the IntelliPrompt class and all its child properties designable.
- Changed the EscapeMarkupText method to be static.
- Renamed the InfoTip property to ParameterInfo to better match Visual Studio naming.
- IntelliPromptCodeSnippets class
- Added the CheckForCodeSnippetShortcut method to wrap the code needed to check the word preceeding the caret for a code snippet shortcut. If a valid shortcut is found, the code snippet is activated.
- Added the GetTextForDeclaration to get the text for the specified declaration in the active code snippet.
- Added the GetTextRangeForDeclaration to get the TextRange for the specified declaration in the active code snippet.
- Added the SetTextForDeclaration to set the text for the specified declaration in the active code snippet.
- IntelliPromptInfoTip class
- Added the CloseDelimiterCharacter which is the character that automatically flags the close of the parameter info context.
- Added the Context property, which can be set to temporarily denote why the parameter info is displayed. It is cleared when the parameter info is hidden.
- Added the ParameterDelimiterCharacter which is the character that separates parameters for automated ParameterIndex updating.
- Added the ParameterIndex property, which indicates the parameter that the caret is currently over.
- Added the UpdateParameterIndex method that updates the ParameterIndex property based on the caret location.
- Added the ValidTextRange property, which specifies a text range that the caret may stay within for the parameter info to remain visible.
- Renamed the IntelliPromptInfoTip class to IntelliPromptParameterInfo to better match Visual Studio naming.
- IntelliPromptMemberList class
- Added the Context property, which can be set to temporarily denote why the member list is displayed. It is cleared immediately following the SyntaxEditor.IntelliPromptMemberListClosing event.
- Added the CaseSensitiveMatch property to control whether case sensitive matches in the member list are preferred.
- Added the ResetAllowedCharacters method.
- IntelliPromptMemberListItem class
- Added a new constructor.
- Added the GetDesiredWidth and OnRender methods, allowing for custom drawing if you override the OnRender method in a subclass.
- IntelliPromptQuickInfo class
- Added an overload for Show that accepts an offset under which to display the quick info.
- ISemanticParser interface
- Added the HasErrors property.
- LexicalMacro class
- Implemented the ILexicalScope interface.
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalMacroCollection class
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalParseFlags enumeration
- Added the LanguageChange item.
- LexicalPattern class
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalPatternGroup class
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalPatternGroupCollection class
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalPatternType enumeration
- Moved to the ActiproSoftware.SyntaxEditor.Addons.Dynamic namespace.
- LexicalScope class
- Changed all references to the LexicalScope class to the new ILexicalScope interface and moved LexicalScope to ActiproSoftware.SyntaxEditor.Addons.Dynamic.DynamicLexicalScope.
- LexicalState class
- Changed all references to the LexicalState class to the new ILexicalState interface and moved LexicalState to ActiproSoftware.SyntaxEditor.Addons.Dynamic.DynamicLexicalState.
- LineEndStyle enumeration
- Added the CarriageReturn item.
- Renamed to LineTerminator.
- LineIndicator class
- Renamed the LineIndex property to DocumentLineIndex.
- LocationToOffsetAlgorithm enumeration
- Renamed to LocationToPositionAlgorithm.
- MoveScrollDownCommand class
- Renamed to ScrollDownCommand.
- MoveScrollUpCommand class
- Renamed to ScrollUpCommand.
- OpenLineCommand class
- Renamed to OpenLineAboveCommand.
- OutliningNode class
- Added the GetText method, which allows for determing the type of line terminator to use.
- Added the Length and TextRange properties.
- Changed the EndOffset so that it is the offset immediately after the last character in the node. This is now consistent with all the other end offsets in SyntaxEditor.
- Changed one of the Contains overloads to accept a TextRange instead of a start and end offset. Please note that this method has also been affected by the OutliningNode.EndOffset change.
- Changed one of the EnsureVisible overloads to accept a TextRange instead of a start and end offset. Please note that this method has also been affected by the OutliningNode.EndOffset change.
- The Text property now uses carriage return/newline line terminators instead of only newlines. Use the new OutliningNode.GetText method to get the newline-only version of text.
- PasteDragDropSource enumeration
- Added the PasteComplete item, which is used immediate after a paste operation completes.
- Position structure
- Renamed to DocumentPosition.
- PrintSettings class
- Added the OutliningIndicatorsVisible property to control whether outlining indicators are rendered to the printer.
- Added the SelectionMarginMarksVisible property to control whether selection margin marks are rendered to the printer.
- Added the TotalPageCount property to return the number of pages needed to print the contents of the document.
- Selection class
- Added the CodeBlockExpand method that implementations of the SyntaxLanguage.CodeBlockSelectionExpand method can call.
- Added the Collapse, MoveToLineStartAfterIndentation, MoveToNextLineStartAfterIndentation, MoveToPreviousLineStartAfterIndentation, SelectBlockDown, SelectBlockLeft, SelectBlockRight, SelectBlockToNextWord, SelectBlockToPreviousWord, SelectBlockUp, SelectToLineStartAfterIndentation methods.
- Added overloads for the Contains method that accepts EditPosition and DocumentPosition parameters.
- Added the EventsSuspended property and the ResumeEvents and SuspendEvents methods.
- Added the DocumentPositionRange, EditPositionRange, EndDocumentPosition, EndEditPosition, FirstDocumentPosition, FirstEditPosition, LastDocumentPosition, LastEditPosition, StartDocumentPosition, and StartEditPosition properties.
- Added the IsNormalized, IsReadOnly, and IsZeroLength properties.
- Added the Mode property to indicate whether the selection is in continuous stream or block mode.
- Added multiple SelectRange overloads.
- Added the TextRange property.
- Removed the CollapseLeft and CollapseRight methods and replaced them with the Collapse method.
- Renamed the EndPosition, FirstPosition, LastPosition, and StartPosition properties to EndDocumentPosition, FirstDocumentPosition, LastDocumentPosition, and StartDocumentPosition respectively.
- SelectionEventArgs class
- Renamed the CharacterColumn property to CaretCharacterColumn.
- Renamed the DisplayCharacterColumn property to DisplayCaretCharacterColumn.
- Renamed the DisplayPosition property to DisplayCaretDocumentPosition.
- Renamed the LastPosition property to LastCaretDocumentPosition.
- Renamed the Position property to CaretDocumentPosition.
- SemanticDefaultParser class
- Removed the SemanticDefaultParser class. Use the ActiproSoftware.SyntaxEditor.Addons.Dynamic.DynamicOutliningSyntaxLanguage class instead.
- SemanticParser class
- Removed the SemanticParser class. All the features of this class have been merged into the SyntaxLanguage class.
- SmartIndentEventArgs class
- Removed the PerformIndent property. The SyntaxEditor.SmartIndent event now only fires when SyntaxEditor.IndentType is set to Smart.
- SpanIndicator class
- Added the ApplyHighlightingStyleAdornments method.
- Added the ApplyHighlightingStyleColors method.
- Added the ApplyHighlightingStyleFont method.
- Added the Layer property, which indicates the SpanIndicatorLayer that contains the indicator.
- Added the TextRange property.
- Changed the constructor arguments.
- Removed the Document property. The Document can be obtained via the Layer property if necessary.
- Changed the DrawMarks method to use a PaintEventArgs parameter instead of a Graphics parameter.
- Removed the Offset and Length properties and replaced the with the TextRange property.
- SpellingErrorIndicator class
- Renamed to SpellingErrorSpanIndicator.
- SquiggleLineIndicator class
- Added the UnderlineColor property.
- Renamed to WaveLineSpanIndicator.
- SyntaxEditor class
- Added the CodeSnippetFieldModified event that fires when a code snippet field is modified.
- Added the CutCopyDragWithHtml property.
- Added the DocumentAutomaticOutliningComplete event, which can be used for collapsing regions on initial load if the event argument's IsProgrammaticTextReplacement property is set.
Added the DocumentPreTextChanging event.
Added the DocumentSemanticParseDataChanged event.
- Added the IsSelectionModeEnabled.
- Added the IntelliPromptParameterInfoParameterIndexChanged event that fires whenever the IntelliPromptParameterInfo.ParameterIndex property changes and the parameter info is visible.
- Added the IntelliPromptParameterInfoSelectedIndexChanged event that fires whenever the IntelliPromptParameterInfo.SelectedIndex property changes.
- Added the IntelliPromptSmartTagClicked event that occurs when a smart tag is clicked.
- Added the IntelliPromptTipImageRequested event that fires whenever an IntelliPrompt popup requests an Image to display in a tooltip, thereby allowing for custom images in tooltips. Added the related IntelliPromptTipImageRequestedEventArgs and IntelliPromptTipImageRequestedEventHander classes.
- Added the IntelliPromptTipLinkClick event that fires whenever a link on an IntelliPrompt popup tooltip is clicked. Added the related IntelliPromptTipLinkClickEventArgs and IntelliPromptTipLinkClickEventHander classes.
- Added the MoveCaretToNextLineAtLineEnd and MoveCaretToPreviousLineAtLineStart properties.
- Added the Renderer and RendererResolved properties.
- Added the ScrollBarBottomButtons, ScrollBarLeftButtons, ScrollBarRightButtons, and ScrollBarTopButtons properties.
- Added the SelectionCollapsesOnCopy and SelectionCollapsesToAnchor properties.
- Added the ShowGoToLineForm method that can display a built-in goto line dialog.
- Added the ShowPageSetupForm method that can display a built-in page setup dialog.
- Added the UserInterfaceUpdate event that occurs after a delay (specified by the new SyntaxLanguage.UserInterfaceUpdateDelay property) following the DocumentTextChange and DocumentSemanticParseDataChanged events, allowing for updating of user interface controls external to SyntaxEditor.
- Added the ViewButtonClicked event, which fires whenever an EditorView button is clicked.
- Added the ViewMouseDown event, which fires whenever a mouse button is pressed over anything in the view.
- Added the ViewMouseHover event, which fires whenever the mouse is hovered over anything in the view.
- Added the VirtualSpaceAtDocumentEndEnabled and VirtualSpaceAtLineEndEnabled property.
- The BackColor property will no longer set the background color of the editor since that is now controlled in the renderer used by the SyntaxEditor.
- Changed the ContentDividersVisible default value to be false. If outlining and word wrap are also not in use, memory will be saved.
- Moved the ConvertTabsToSpaces property to the Document.AutoConvertTabsToSpaces property.
- Renamed the CutCopyToBlankLineWhenNoSelection property to CutCopyBlankLineWhenNoSelection, and changed its behavior to match Visual Studio's where it controls whether cut/copy on a blank line with no selection overwrites the clipboard.
- Removed the IndicatorMarginClick event. Use the new ViewMouseDown event instead.
- Moved the LineHeight property to the EditorView.DisplayLineHeight property.
- Changed the RefreshOutlining method to accept a TextRange instead of a start and end offset.
- Renamed the ScrollPastEndOfDocument property to ScrollPastDocumentEnd to better match product naming conventions.
- Changed the SmartIndent event so that it only fires if SyntaxEditor.IndentType is set to Smart.
- Removed the TokenMouseDown event. Use the new ViewMouseDown event instead.
- Removed the TokenMouseHover event. Use the new ViewMouseHover event instead.
- Renamed the Trigger event to TriggerActivated.
- Removed the UnicodeEnabled property since it is no longer needed.
- Removed the UserMarginMouseDown event. Use the new UserMarginMouseDown event instead.
- Removed the UserMarginMouseHover event. Use the new UserMarginMouseHover event instead.
- Moved all Color, Border, and BackgroundFill properties to the renderer available in the RendererResolved property.
- SyntaxErrorIndicator class
- Renamed to SyntaxErrorSpanIndicator.
- SyntaxLanguage class
- Changed SyntaxLanguage to implement IComponent so that instances can be placed in the designer.
- Added the AutomaticOutliningBehavior property.
- Added the Changed event.
- Added the CodeBlockSelectionContract and CodeBlockSelectionExpand methods.
- Added the CreateDocumentEndToken and CreateInvalidToken methods.
- Added the FormattingSupported property and the FormatDocument, FormatSelection, and FormatTextRange methods.
- Added the GetHighlightingStyle method.
- Added the GetTokenString method.
- Added the IntelliPromptCodeSnippetsSupported, IntelliPromptMemberListSupported, IntelliPromptParameterInfoSupported, and IntelliPromptQuickInfoSupported properties.
- Added the IntelliPromptCompleteWord method.
- Added the LineCommentDelimiter property.
- Added the OnDocumentAutomaticOutliningComplete method, which can be used for collapsing regions on initial load if the event argument's IsProgrammaticTextReplacement property is set.
- Added the OnDocumentFilenameChanging and OnDocumentFilenameChanged methods.
- Added the OnDocumentPreTextChanging, OnDocumentTextChanged and OnDocumentTextChanging methods.
- Added the OnDocumentSemanticParseDataChanged method that is called whenever the Document.SemanticParseData property is changed for a document using the language.
- Added the OnSyntaxEditorIntelliPromptMemberListItemDescriptionRequested, OnSyntaxEditorIntelliPromptParameterInfoParameterIndexChanged, OnSyntaxEditorIntelliPromptParameterInfoSelectedIndexChanged, OnSyntaxEditorIntelliPromptTipImageRequested, and OnSyntaxEditorIntelliPromptTipLinkClick methods.
- Added the OnSyntaxEditorKeyTyped and OnSyntaxEditorKeyTyping methods.
- Added the OnSyntaxEditorSmartIndent method.
- Added the OnSyntaxEditorTriggerActivated method.
- Added the OnSyntaxEditorUserInterfaceUpdate method.
- Added the OnSyntaxEditorViewMouseDown and OnSyntaxEditorViewMouseHover methods.
- Added the PerformAutomaticOutlining method.
- Added the PerformLexicalParse method.
- Added the PerformSemanticParse method.
- Added the SetOutliningNodeCollapsedText method.
- Added the ShowIntelliPromptInsertSnippetPopup method.
- Added the ShowIntelliPromptInsertSnippetPopup, ShowIntelliPromptMemberList, ShowIntelliPromptParameterInfo, and ShowIntelliPromptQuickInfo methods.
- Added the SmartIndentSupported property.
- Added the TextStatistics property.
- Added the WorkBreakFinder property.
- Added the ErrorDisplayEnabled property, which automates the addition of error indicators to add-on languages. When set, automated tooltip display is enabled when hovering over syntax errors in the text.
- SyntaxLanguage as it existed in v3.1 was moved to ActiproSoftware.SyntaxEditor.Addons.Dynamic.DynamicSyntaxLanguage.
- Changed constructor parameters.
- Moved the LexicalMacros, LexicalStateIDType, and TokenIDType properties to the DynamicSyntaxLanguage class.
- Removed the WordContainsAdditionalCharacters and WordStandaloneCharacters properties. To access them for a dynamic language, case the WordBreakFinder property to a DefaultWordBreakFinder.
- TextStream class
- Added the Character property.
- Added the Clone method.
- Added the DocumentLine and DocumentLineIndex properties.
- Added the GoToDocumentLineEnd and GoToDocumentLineStart methods.
- Added the GoToCurrentTokenStart method.
- Added the GoToNextDocumentLineStart and GoToPreviousDocumentLineEnd methods.
- Added the GoToNextMatchingToken and GoToPreviousMatchingToken methods.
- Added the GoToNextMatchingToken and GoToPreviousMatchingToken methods.
- Added the GoToNextNonWhitespaceOrCommentToken and GoToPreviousNonWhitespaceOrCommentToken methods.
- Added the GoToNextNonWhitespaceToken and GoToPreviousNonWhitespaceToken methods.
- Added the GoToNextTokenWithID and GoToPreviousTokenWithID methods.
- Added the IsAtDocumentLineEnd, IsAtDocumentLineStart, IsAtDocumentStart, and IsAtTokenStart properties.
- Added the IsCharacterLineTerminator, IsCharacterReadOnly, and IsCharacterWhitespace properties.
- Added the PeekToken and PeekTokenReverse methods.
- Added the ReadToken and ReadTokenReverse methods.
- Added the SeekToken method.
- Added the TokenIndex property.
- Added the TokenText property.
- Renamed the CurrentToken property to Token.
- Renamed the GoToNextToken and GoToPreviousToken methods that take a string parameter to GoToNextTokenWithKey and GoToPreviousTokenWithKey respectively.
- Renamed the IsPastEnd property to IsDocumentEnd.
- Renamed the Peek and PeekReverse methods to PeekCharacter and PeekCharacterReverse respectively.
- Renamed the Position property to Offset.
- Renamed the Read and ReadReverse methods to ReadCharacter and ReadCharacterReverse respectively.
- Renamed the Seek method to SeekCharacter.
- TextStylePreview class
- Added a HighlightingStyle property which allows for the setting of a HighlightingStyle. The TextStylePreview updates to display how the HighlightingStyle affects text.
- Removed the ForeColor, TextBorderVisible, TextSquiggleLineColor, and TextSquiggleLineVisible properties. Use the new HighlightingStyle property to specify all those and more.
- Token class
- Changed the EndOffset so that it is the offset immediately after the last character in the token. This is now consistent with all the other end offsets in SyntaxEditor.
- Changed all references to the Token class to the new IToken interface and moved Token to ActiproSoftware.SyntaxEditor.Addons.Dynamic.DynamicToken.
- Removed the CustomHighlightingStyle and SemanticParseData properties from the core IToken interface (since some languages may not implement it to save on memory) but they are available on DynamicToken.
- Removed the LexicalPattern and LexicalPatternGroup properties from the core IToken interface (since some non-dynamic languages don't use them) but they are available on DynamicToken.
- Renamed the IsEndOfDocument property to IsDocumentEnd to better match product naming conventions.
- Removed Modified property from IToken. In v3.1, tokens were all the same Token type so only parse data was replaced and the Modified property could be set. In v4.0, the language can create any token type so the Modified property cannot be implemented. Instead, all replaced tokens are now added to TokenCollection.DeletedTokens if Document.DeletedTokenTrackingEnabled is true.
- Removed the LexicalParseFlags.Modified item.
- TokenCollection class
- Added the IndexOfRelative method which should be used for finding the index of a token if you know it is close to another context token index.
- Added the GetTokenEndOffset, GetTokenLength, and GetTokenTextRange methods, which can be used if tokens choose to only implement a StartOffset property and no Length property. Most languages will not need this.
- Changed the DeletedTokens collection so that it is only populated if the Document.DeletedTokenTrackingEnabled property is set.
- TokenMouseEventArgs class
- Removed the TokenMouseEventArgs class. Use the new EditorViewMouseEventArgs class instead.
- TokenMouseEventHandler delegate
- Removed the TokenMouseEventHandler delegate. Use the new EditorViewMouseEventHandler delegate instead.
- TokenStream class
- Renamed the IsPastEnd property to IsDocumentEnd.
- UndoRedo class
- Greatly reduced the memory needed to store undo/redo data.
- UserMarginMouseEventArgs class
- Removed the UserMarginMouseEventArgs class. Use the new EditorViewMouseEventArgs class instead.
- UserMarginMouseEventHandler delegate
- Removed the UserMarginMouseEventHandler delegate. Use the new EditorViewMouseEventHandler delegate instead.
8/23/2006 - Version 3.1.0212
- Added XML documentation for all class libraries to the installer.
- Added the AllowDrag property to control whether text dragging can start a drag/drop operation.
- Added the HorizontalScrollbarVisible and VerticalScrollbarVisible properties to the EditorView class.
- Fixed a bug where the code snippet member list didn't size correctly when large fonts were used.
- Fixed a bug where displaying a member list for some text and there were two matching items with the same text (but in different character cases), the member list didn't always auto-select the correct item.
- Fixed a bug where current line highlighting wouldn't always redraw properly when scrolling in a borderless SyntaxEditor control.
- Fixed a bug where tokens with content dividers that spanned two display lines would draw the content divider on both lines.
- Updated the Shared/WinUICore libraries.
7/6/2006 - Version 3.1.0211
- Added bounds check code for selection offsets so that SyntaxEditor doesn't let you set a selection past the document end.
- Tweaked the selection change code for when the retain selection option is used.
- Tweaked the looping mechanism for drawing indicators to try and help prevent any issues by indicator collection modifications that occur while in the painting phase.
- Changed the member list code so that it will not blow up if a null value is passed to an item's pre-text.
- Changed the member list popup so that it is not topmost.
- Changed bracket highlights so that they do not remain visible when the editor loses focus.
- Updated the SyntaxEditor.BracketHighlightingVisible property so that it properly displays or hides bracket highlighting immediately when the property value is changed.
- Tweaked how the member list description tip determines in which screen to display, in a dual-monitor setup.
- Fixed a couple bugs in the C# and Java sample URLMacro.
- Fixed a bug where the TokenCollection.DeletedTokens collection was not cleared before reparsing a document.
- Fixed a bug where performing an uncomment lines command on the first column of a line with no selection could sometimes cause an exception.
- Fixed a bug where the XML language definition in the VB LanguageDesigner form was not being located properly.
- Fixed a bug where the member list didn't size correctly when large fonts were used.
- Updated the WinUICore/Shared libraries.
5/4/2006 - Version 3.1.0210
- Tweaked member list code that handles the Tab key so that it will ignore the Tab keypress if some other event cancelled the key.
- Fixed a bug where encrypted XML definitions didn't save bracket highlighting options for scope delimiters.
- Fixed a bug where an insert with retain selection made at the caret location would move the caret.
- Fixed a bug in the find/replace where specifying a certain wildcard expression could cause an infinite loop.
- Fixed a bug where in a certain situation a code snippet would not place the caret at the proper end offset when the code snippet was accepted.
- Installer updated and assemblies now compiled natively for both .NET 2.0 and .NET 1.1 frameworks.
3/27/2006 - Version 3.1.0204
- Added an IntelliPromptInfoTip.Show overload that accepts a Point parameter.
- Added setters to the Text and ImageIndex properties of the IntelliPromptMemberListItem class.
- Added a parameterless IntelliPromptMemberListItem constructor for use in deserialization.
- Added the FilenameChanged and MultilineChanged events to the Document class.
- Changed code snippet folder-loading code so that it will load empty folders (previously it didn't) but still will not display them in the member list unless they contain snippets.
- Changed TextStylePreview rendering code so that it supports transparency and if the BackColor is Color.Empty, it will not fill the background.
- Changed the Token.SemanticParseData property so that it returns an object instead of an ISemanticParseData. This allows for simple types like integers to be stored.
- Fixed a bug in the JScript language definition where single quote strings were not recognized.
- Tweaked the licensing code to better support assembly merging products.
- Fixed a bug where the caret could be moved horizontally offscreen when not in word wrap mode and scrollbars were hidden.
- Fixed a bug where performing sequential UI find/replace operations would skip over the characer immediately after the last replace.
- Fixed a bug where right-clicking near the right or bottom text area edges when a scrollbar is not visible would not display a context menu.
- Fixed a bug where if Application.VisualStyleState was set to VisualStyleState.NoneEnabled for an application, the scrollbars would not draw properly.
- Updated the WinUICore/Shared libraries.
1/17/2006 - Version 3.1.0203
- Added thorough support for user margins.
- Added the UserMarginBackgroundFill, UserMarginBorderColor, UserMarginBorderDashStyle, UserMarginDisabledBackgroundFill, UserMarginFont, UserMarginForeColor, UserMarginTextAlignment, UserMarginVisible, UserMarginWidth to the SyntaxEditor class.
- Added the SyntaxEditor.UserMarginPaint event that fires every time a display line user margin needs painting.
- Added the SyntaxEditor.UserMarginMouseDown event that fires when the user clicks the mouse down over a display line's user margin.
- Added the SyntaxEditor.UserMarginMouseHover event that fires when the user hovers the mouse over a display line's user margin.
- Added the UserMarginPaintEventArgs and UserMarginMouseEventArgs classes.
- Added the UserMarginPaintEventHandler and UserMarginMouseEventHandler delegates.
- Added the InvalidateDisplayLine and InvalidateUserMargin methods to the EditorView class.
- Enhanced the test application to demonstrate the user margin draw, mouse down, and mouse hover capabilities.
- Added a CodeSnippetFolder.Merge method that can recursively merge two CodeSnippetFolder objects together, optionally including duplicates.
- Added the SyntaxEditor.DocumentChanged event that fires when the SyntaxEditor.Document property is changed.
- Added code so that if bad XML is passed to any popup that uses formatting tags, an exception will not occur and a bad XML message will be displayed in the popup instead. This was necessary since the exception could not be caught with user code.
- Added a try...catch around the caret's Timer start/stop code to work around an obscure Microsoft bug that might throw an exception from the Timer class on some systems.
- Added code so that when a Document is disposed, it removes an event handler from the SyntaxLanguage it is using.
- Added the CodeSnippetFolderCollection.ToArray method.
- Added an overload for IntelliPromptCodeSnippets.ShowInsertSnippetPopup that accepts a CodeSnippetFolderCollection.
- Enhanced code snippet loading code to allow for code snippets where the root CodeSnippets tag is missing.
- Made a code change so that pasting and calls to EditorView.CanPaste better handles the situation where no clipboard data can be retrieved.
- Fixed a bug where undoing to the original modification did not properly reset the Modified property.
- Fixed a bug where the UncommentLinesCommand could remove text on the start and end selection lines that it shouldn't.
- Fixed a bug where code snippets without any declarations would not move the caret to the $end$ location.
- Updated the WinUICore/Shared libraries.
11/15/2005 - Version 3.1.0202
- Added the SyntaxEditor.ScrollPastEndOfDocument property to control whether scrolling past the end of the document is enabled.
- Added the DocumentModificationType.Custom enumeration member.
- Updated the C# and VB.NET languages to support the new VB.NET 2.0 keywords.
- Fixed a bug where having the Windows taskbar docked on the left or top of the screen offset the popups improperly.
- Fixed a bug introduced in the previous maintenance release where Swiss German keyboards were not inserting bracket characters when typed.
- Fixed a bug in the SelectToMatchingBracketCommand where the selection may be slightly wrong.
- Fixed a bug where a code snippet declaration's tooltip may display if the tooltip text is set to "" and not null.
- Fixed a rare bug where doing an UndoableInsert with retain selection and removing a bracket highlighted character on the last line of the document could throw an exception.
- Updated the WinUICore/Shared libraries.
10/26/2005 - Version 3.1.0201
- Added the IntelliPromptCodeSnippets.AutoIndentSnippetCode property to control whether code from inserted code snippets is automatically indented based on the tabstop level of the current line.
- Added the IntelliPromptCodeSnippets.InsertSnippetPopupSeparator property.
- Added the IntelliPromptCodeSnippets.AutoEscapeInsertSnippetDescriptions property.
- Added the CodeSnippetFolder.Description property so that member list description tips can be set for code snippet folders.
- Added code so that when tabbing through active code snippet fields, the first character in the active field is ensured to be visible.
- Added a try...catch to the CodeSnippetFolder.Refresh method to catch XML exceptions that occur when loading snippet files. Now it will skip the file and move on, whereas before it would halt the folder loading process.
- Changed the SyntaxEditor.CodeSnippetImageList property to be a getter only and made it static.
- Added the IntelliPromptCodeSnippets.ImageList property that controls the ImageList to use for the Insert Snippet popup.
- Added the CodeSnippet.ImageIndex and CodeSnippetFolder.ImageIndex properties to allow for run-time customization of the images displayed in the Insert Snippet member list.
- Added the OutliningNodeEventArgs class and OutliningNodeEventHandler delegate.
- Added the Document.OutliningNodeExpandedChanged and SyntaxEditor.DocumentOutliningNodeExpandedChanged events.
- Added the ' and " characters to the default SyntaxLanguage.WordStandaloneCharacters collection.
- Adjusted the next word-finding code to better match VS.NET behavior.
- Reimplemented the UncommentLinesCommand to fix a bug where whitespace before comment delimiter tokens would prevent the tokens from being removed.
- Made a minor change to the info tip drawing code to try and prevent an occasional bug where the up/down arrows don't draw.
- Added code to the EditorView.CanPaste property to catch any Clipboard exception that might occur when retrieving the clipboard data (due to a bug in the .NET framework) and try a second time to retrieve the clipboard data.
- Fixed a bug where an undo operation wasn't reselecting the text that was removed.
- Fixed a bug where the placement of a zero-width span indicator at the start of a line would not always render the glyph.
- Fixed a bug that didn't allow a zero-width span indicator to be placed at the end of a document.
- Fixed a bug where focus was being set to the editor after displaying popup windows for mouse-overs, even if the editor didn't originally have focus when the popup was displayed.
- Fixed a bug where code snippet folders that contained child folders but no code snippets were not loaded by the CodeSnippetFolder.Refresh method.
- Fixed a bug where putting a breakpoint on the code line where showing the Insert Snippet popup could cause an exception.
- Fixed a bug where Ctrl+Space was typing the space character in the text, even when Ctrl+Space was being handled by a command.
9/17/2005 - Version 3.1.0200
- Added code snippet functionality that mimics Whidbey.
- Added code snippet editing mode that supports tabbing between fields.
- Added ability to load/save snippet files in Whidbey format.
- Added an Insert Snippet popup for quick selection of code snippets in a folder structure.
- Code snippet functionality is available via the IntelliPrompt.CodeSnippets property.
- Added the CodeSnippet, CodeSnippetCollection, CodeSnippetDeclaration, CodeSnippetDeclarationCollection, CodeSnippetEventArgs, CodeSnippetEventHandler, CodeSnippetFieldEventArgs, CodeSnippetFieldEventHandler, CodeSnippetImport, CodeSnippetImportCollection, CodeSnippetIndicator, CodeSnippetLiteral, CodeSnippetObject, CodeSnippetReference, CodeSnippetReferenceCollection, CodeSnippetTypes, and IntelliPromptCodeSnippets classes.
- Added the SyntaxEditor.CodeSnippetImageList property.
- Added the CodeSnippetActivating and CodeSnippetDeactivated events to the SyntaxEditor class.
- Added the CodeSnippetFieldActivated and CodeSnippetFieldDeactivating events to the SyntaxEditor class.
- Added a Code Snippets help topic.
- Added code snippet style specification code in the C# language definition.
- Added a menu item to the sample project to display the Insert Snippet popup.
- Added several code snippet samples for C# and VB.NET to the sample project.
- Added code to the sample project to recognize code snippet shortcuts for C# and VB.NET.
- Added code to the sample project to allow for dropping of .snippet files on the editor to activate a contained code snippet.
- Added more flexibility to content dividers to support programmatic application of them to Tokens.
- Added the ability for content dividers to render before the display lines that contain the Tokens.
- Added the TokenContentDividerType enumeration.
- Removed the Token.IsContentDivider property and replaced it with the Token.ContentDividerType property.
- Added the Token.ContentDividerTypeResolved property.
- Added some values to the LexicalParseFlags enumeration.
- Added support for one or more column guides.
- Added the ColumnGuide and ColumnGuideCollection classes.
- Added the ColumnGuideValueType enumeration.
- Added the SyntaxEditor.ColumnGuides collection.
- Added a menu item to the sample project to control display of column guides.
- Added enhancements for tracking the modified state of a document. If the Document.Modified property is set to false (usually when a document is saved), that save point will now be tracked during undo and redo operations.
- Added a try...catch around the PasteCommand call to Clipboard.GetDataObject to try and handle any exception that is thrown.
9/11/2005 - Version 3.0.0183
- Added the capability of indicators to use highlighting styles with a Color.Empty ForeColor, thereby allowing for the token text to be drawn using its own higlighting style ForeColor.
- Added the IntelliPromptMemberList.MatchBasedOnItemPreText property to control whether typed text matches an item's auto-complete pre-text or the item's text.
- Added setters to the AutoCompletePreText and AutoCompletePostText properties of the IntelliPromptMemberListItem class.
- Added the AllowZeroLength and Document properties to the SpanIndicator class.
- Added the InsertCodeSnippetTemplate and UpdateCodeSnippetTemplateFields values to the DocumentModificationType enumeration.
- Added the Folder member to the IconResource enumeration.
- Added a workaround for the .NET 2.0 bug where popup Forms cannot be made smaller than 123x34 size.
- Adjusted the default color used for line modification marking.
- Adjusted undo code so that the ending of an empty undo group does not insert an entry onto the undo stack.
- Adjusted the background drawing order of lines so that line background colors override language background colors.
- Changed Ctrl+Click behavior so that when over an existing selection, drag/drop mode starts immediately without selecting a word.
- Removed the setter for the SyntaxEditor.ReflectionImageList property and changed the getter so it recreates the ImageList on each call. Cache it in your application for repeated use.
- Removed the SyntaxEditor.ResetReflectionImageList method.
- Fixed a bug where the ContextMenuRequest event would fire when right-clicking on a ScrollBar.
- Fixed a bug where the Tab and Enter keys were not firing key-press triggers.
- Fixed a bug where the FirstVisibleDisplayLineIndex property wasn't updated by the time the ViewVerticalScroll event fired in a certain situation and same with the related horizontal scroll event.
- Profiled SyntaxEditor to help eliminate any memory that was still in use after the control was disposed.
- Updated the WinUICore/Shared libraries to help remove several static objects from various classes.
7/31/2005 - Version 3.0.0182
- Added an option to prevent text modifications from moving the caret in the selected view.
- Added overloads for the AppendText, UndoableDelete, and UndoableInsert methods in the Document class that accept a boolean retainSelection parameter.
- Added the DocumentModificationFlags.RetainSelection enumeration value.
- Added a Document.GetTokenStream method overload that accepts a Token parameter.
- Added the IntelliPrompt.EscapeMarkupText method to make it easy to escape text to use for quick info, info tips, or member list item descriptions when no formatting is needed and the text may contain XML control characters.
- Made several painting optimizations to try and improve painting performance when scrolling through a document.
- Changed current line highlighting so that the border for the current line highlighting is drawn before any characters, instead of after.
- Changed the member list typing selection code to look at the AutoCompletePreText property instead of the Text property. This allows list item display text to be different than the text inserted and the typing selection code to select the correct item.
- Changed the member list auto-complete code so that it does not permit \r characters to be used in the pre- and post-text insertions.
- Fixed a bug when using multiple span indicators over the same area that draw using a highlighting style so that the drawing order is correct.
- Fixed a bug where specifying an empty replace pattern when doing a find/replace using regular expressions caused an exception.
- Fixed a bug where the lexical parsing optimization features were sometimes skipping over patterns that used alternation and grouping.
- Fixed a bug where setting SyntaxLanguage.IsUpdating to false did not properly reset the parser's optimization data in the event pattern changes were made.
7/2/2005 - Version 3.0.0181
- Improved error messages for invalid regular expression patterns when loading languages. The new error messages indicate the lexical pattern group or macro in which the error occurred and the invalid pattern.
- Fixed a bug introduced in the last build where the info tip would not be displayed at the proper location.
- Fixed a bug where if an exception occurred during document modification processing (such as in the TextChanged event), painting for the control would remain suspended.
6/28/2005 - Version 3.0.0180
- Made some changes to the lexical parser to optimize the range of offsets needing to be parsed when a modification is made. This yields a huge increase in parsing speed in certain situations.
- Added the ability to print selected text only.
- Added an option to display word wrap glyphs at the right side of the text area for soft line breaks like in Whidbey.
- Added the SyntaxEditor.WordWrapGlyphVisible property.
- Added the SyntaxEditor.WordWrapGlyphColor property.
- Added the PrintSettings.WordWrapGlyphVisible property.
- Added an option to ignore case when building namespace and type member lists.
- Added the ignoreCase parameter to the IntelliPromptMemberList.AddReflectionForAssemblyNamespacesAndTypes method.
- Added the ignoreCase parameter to the IntelliPromptMemberList.GetItemReflectionForAssemblyNamespacesAndTypes method.
- Added the SelectedTextBackColor and SelectedTextForeColor properties to the SyntaxEditor class to allow for setting of the selected text colors.
- Added the OutliningParseOffsetRange property to the DocumentModification class.
- Added a LineEndStyle return value to the Document.LoadFile method to indicate the line-end style of the file that was loaded.
- Added capabilities for displaying the info tip at any desktop location.
- Added a IntelliPromptInfoTip.Show overload that accepts a Point location at which to display the info tip.
- Added the IntelliPromptInfoTip.MeasureAndResize method.
- Added the IntelliPromptInfoTip.DesktopBounds property.
- Made enhancements to the Document.UndoRedoStateChanged event to reflect better what changes occurred.
- Changed the Document.UndoRedoStateChanged event so that it fires after any undo/redo state change instead of only when one of the stacks changed to/from being empty. Use the UndoRedoStateChangedEventArgs.EnabledStatesChanged property to know when to imitate old behavior.
- Changed the Document.UndoRedoStateChanged event from the EventHandler to UndoRedoStateChangedEventHandler delegate.
- Changed the SyntaxEditor.DocumentUndoRedoStateChanged event to match all of the above changes as to Document.UndoRedoStateChanged.
- Added the UndoRedoStateChangeType enumeration.
- Added the UndoRedoStateChangedEventArgs class and the UndoRedoStateChangedEventHandler delegate.
- Updated the sample application to support the enhancements.
- Changed member list so that if the info tip is visible when the member list is displayed, the member list moves above the caret.
- Removed restriction of having at least one pattern in a lexical pattern group. This was done to allow placeholder pattern groups for groups that add patterns dynamically.
- Changed code so that if a small font is used, the outlining indicators do not shrink below a minimum size.
- Changed a couple regular expression parser exception messages.
- Fixed a bug with the VB.NET and VBScript language definitions not terminating strings correctly.
- Fixed a bug where OutliningNode.Text doesn't always return the last character within the contained text.
- Fixed a bug where clicking on the right half of a collapsed outlining node box would not expand it.
- Fixed a bug with the IntelliPromptMemberList.AddReflectionForTypeMembers where internal (Family) members were always being enumerated when certain flag settings were used.
- Fixed a bug where end scopes that used look-aheads would not always be parsed correctly when typing was performed on the line after the end scope.
- Fixed a bug with the regular expression parser where using alternations in look-behinds could cause an exception.
6/13/2005 - Version 3.0.0179
- Fixed an outdent bug where it did not pay attention to the SpacesInTab setting when outdenting text with space indentation.
- Fixed an outdent bug that was caused from changes in the previous build.
- Fixed an indent bug where no selection at the start of a line would not indent.
- Fixed a bug where the IntelliPrompt popups were not closed if the SyntaxEditor control was on a non-toplevel form contained by another control.
- Fixed a bug with the regex engine not having the correct precedence order for alternation nodes.
- This change may cause some regex patterns that use alternation to be parsed differently than in previous versions since alternation constructs are now the lowest precedence.
6/5/2005 - Version 3.0.0178
- Made a major speed improvement in the code that gets document text substrings.
- Added the PrintSettings.ExpandOutliningNodes property to control whether collapsed outlining nodes are expanded for printing.
- Added the EditCommandContext.IsFromKeyTyping property.
- Changed the Indent and Outdent commands to only insert/remove a single tab character if called from the key typing processing code and there is no selection.
- Fixed a bug where the IntelliPrompt popups were not closed if the SyntaxEditor control was on an MDI child form and the MDI parent form was deactivated.
- Fixed a bug where the auto-replace trigger was not firing correctly for Tab and Return key presses.
- Updated the Shared/WinUICore libraries.
5/21/2005 - Version 3.0.0177
- Changed the outlining node collapse behavior so that the caret is moved to the start of the node being collapsed, instead of the end.
- Fixed a bug in the regular expression engine for the lexical parser that in a rare scenario would cause an infinite loop.
5/15/2005 - Version 3.0.0176
- Added an HTML tag member list to the sample application when HTML language is loaded.
- Changed the vertical scroll hint so that it uses document line numbers instead of display line numbers.
- Updated the C# language definition so that it flags words starting with an @ character as an identifier.
- Added the CharClass.Remove method.
- Adjusted code for determining the active range of text while a member list is displayed.
- Fixed a bug with the regular expression engine where character classes were always case sensitive.
- Fixed a bug in HighlightingStyle.Clone that wasn't copying the Tag property.
- Fixed a bug where the collapsed text highlighting style setting wasn't being read from the XML language definition properly.
- Fixed a minor bug with incremental search where the pressing of the backspace key would initiate a backward search for the modified find text.
- Fixed a bug where the search for a matching bracket in a certain situation was throwing an exception.
- Fixed an outlining bug where outlining nodes that ended on the same offset as a child language end would sometimes cause incorrect outlining.
- Updated the Shared/WinUICore libraries.
5/1/2005 - Version 3.0.0175
Regular Expression Engine and Lexical Parser Enhancements
- Optimized the lexical parser and improved parsing speed by 3-6 times as in the 2.5 version.
- Rewrote many parts of the internal regular expression engine.
- Make numerous internal lexical parsing performance enhancements.
- Removed the LexicalPatternGroup.StartsWith property since it is now calculated automatically for optimization.
- Updated the language definition XSD to remove the StartsWith attribute from the ExplicitPatternGroup and RegexPatternGroup tags.
- Added zero-width positive and negative lookbehind support to the regular expression language.
- Updated the language definition XSD to support the new LookBehind attribute on the ExplicitPatternGroup and RegexPatternGroup tags.
- Added the Document.LexicalParserLineLookAhead property.
Find/Replace Object Model Enhancements
- Made major enhancements to the find/replace object model.
- Added full support for regular expression replace operations and substitutions.
- Replace regular expression patterns recognize escaped characters and substitution constructs.
- $& substitutes the pattern that was matched.
- $1 substitutes the first grouped match (groups indicated by parenthesis). $2, $3, and so on are supported as well.
- $$ provides an escape for the $ character.
- Added a document (non-user interface) find/replace object model with optional search offset ranges.
- Added the DocumentFindReplace class, available from the new Document.FindReplace property.
- Added the FindReplaceGroup and FindReplaceGroupCollection classes.
- Added the Groups and Text properties to the FindReplaceResult class.
- Added the GetPreviewReplaceText method to the FindReplaceResult class to allow for previewing the text that will be inserted (including regular expression substitutions) upon a replace operation.
- Added the SearchInSelection property to the FindReplaceOptions class to support find in selection mark and replace all operations.
- Updated the sample project's FindReplaceForm to include a "Search in selection" option.
- Added the SearchHiddenText property to the FindReplaceOptions class to support searching within collapsed nodes.
- Updated the sample project's FindReplaceForm to include a "Search hidden text" option.
- Added wildcard pattern searching via the FindReplaceSearchType.Wildcard option.
- Added a button to the Find/Replace form for easy insertion of common regular expression and wildcard patterns.
Token-Related Enhancements
- Added the Token.Modified property that indicates if the Token was modified during the last lexical parse that scanned it.
- Added the TokenCollection.DeletedTokens property that specifies the list of Token objects that were deleted during the last lexical parse.
- Renamed the Token attribute to TokenKey in XML language definitions to better match the object model and fit better with the new TokenID attribute. Doing a replace all of ' Token="' with ' TokenKey="' in a XML language definition will make the update.
- Removed the Token.Text property and replaced it with the Document.GetTokenText method. Previously, a Document reference was being stored in each Token so that the text could be retrieved. Removing this reference lowers the memory usage by each Token.
- Added a numeric ID to the LexicalState and Token objects so that parsing can be done using them or the string-based Key properties.
- Added the LexicalState.ID property that is a number that can be used to identify the state, similar to how the LexicalState.Key property works. The LexicalState.ID can be cast to enumerations or compared to constants and will operate faster than doing string comparisons via LexicalState.Key.
- Added the Token.ID property that is a number that can be used to identify the token, similar to how the Token.Key property works. The Token.ID can be cast to enumerations or compared to constants and will operate faster than doing string comparisons via Token.Key.
- Added the LexicalPatternGroup.TokenID property, which is used to assign the Token an ID.
- Added the LexicalState.DefaultTokenID property, which is used to assign the Token an ID when no lexical pattern is matched.
- Added the SyntaxLanguage.LexicalStateIDType property to the SyntaxLanguage class.
- Added the SyntaxLanguage.TokenIDType property to the SyntaxLanguage class.
- Added the Token.EndOfDocumentTokenID constant, whose value is -1.
- Updated the language definition XSD to support the new ID attribute on State tags.
- Updated the language definition XSD to support the new StateIDTypeName attribute on SyntaxLanguage tags.
- Updated the language definition XSD to support the new TokenID attribute on ExplicitPatternGroup and RegexPatternGroup tags.
- Updated the language definition XSD to support the new DefaultTokenID attribute on State tags.
- Updated the language definition XSD to support the new TokenIDTypeName attribute on SyntaxLanguage tags.
- Added functionality so that if the StateIDTypeName is specified and no ID is specified, the Key will be used to assign an enumeration member value or public integer constant in the StateIDTypeName with the same name as the Key to the ID.
- Added functionality so that if the TokenIDTypeName is specified and no TokenID is specified, the TokenKey will be used to assign an enumeration member value or public integer constant in the TokenIDType with the same name as the TokenKey to the TokenID.
- Added multiple Token mouse events.
- Added the TokenMouseDown, TokenMouseEnter, TokenMouseHover, and TokenMouseLeave events to the SyntaxEditor class.
- The event args for TokenMouseDown passes the number of successive mouse down clicks.
- The TokenMouseDown event can be cancelled (via the Cancel property in the event args) to provide custom functionality. By combining this with a check for the number of clicks, default double-click behavior can be cancelled and custom double or triple-click behavior can be implemented.
- Added the TokenMouseEventArgs and TokenMouseEventHandler classes.
- Removed the SyntaxEditor.IntelliPromptQuickInfoRequested event and replaced it with the SyntaxEditor.TokenMouseHover event.
- Removed the IntelliPromptQuickInfoEvent* classes.
New Key-Processing Model
- Reimplemented key-processing so that control keys and regular characters are processed using a new cancellable unified model.
- Added the KeyTyping and KeyTyped events which indicate the Command that will execute based on the key that is pressed.
- In the KeyTyping event, the Command can be overridden to execute a custom Command.
- Added the KeyTypingEventArgs and KeyTypedEventArgs classes.
- Added the KeyTypingEventHandler and KeyTypedEventHandler delegates.
- Added the TypingCommand class.
- Added the ToggleOverwriteModeCommand class.
- Added a default command link key mapping for the Insert key to the ToggleOverwriteModeCommand command.
- PerformOverwriteTyping and PerformInsertTyping now mimic typing exactly and will fire triggers.
Word Wrap Enhancements
- Added true word-boundary-based word wrapping capabilities.
- Added the Word value to the WordWrapType enumeration.
- Changed the default value of the PrintSettings.WordWrap property to WordWrapType.Word.
- Added ability to configure word breaking differently for each language. This is useful for languages like SQL where @ characters should be included as word characters.
- Added the WordContainsAdditionalCharacters and WordStandaloneCharacters properties to the SyntaxLanguage class.
- Updated the language definition XSD to support the new WordContainsAdditionalCharacters and WordStandaloneCharacters attributes on the SyntaxLanguage tag.
New Macro Recording and Playback
- Added macro recording and playback features.
- Added the MacroRecording class that provides macro recording functionality and is accessible via the SyntaxEditor.MacroRecording property.
- Added the MacroRecordingState enumeration.
- Added the SyntaxEditor.MacroRecordingStateChanged event.
- Added the CanRecordInMacro property to EditCommand class.
- Added the ReadFromXml and WriteToXml methods to the EditCommand class to allow for serialization of macros to XML.
- Added the MacroCommand that is used to store recorded macros.
- Added the CancelMacroRecordingCommand, PauseResumeMacroRecordingCommand, RunMacroCommand, and ToggleMacroRecordingCommand commands.
- Mouse input is prevented during macro recording.
- Added recusive undo grouping capabilities.
- Added the StartGroup and EndGroup methods to the UndoRedo class.
Custom Cursors for Highlighting Styles
- Added the ability to assign custom cursors to highlighting styles, which is useful for URL tokens that can be clicked on.
- Added the Cursor and CursorName properties to the HighlightingStyle class, which allow for the setting of a custom Cursor to use when the mouse is over a Token that uses the highlighting style.
- Added the CursorModifierKeys property to the HighlightingStyle class, which dictates the modifier keys that must be pressed for the custom cursor to display.
- Updated the language definition XSD to support the new CursorName and CursorModifierKeys attributes on Style tags.
- Updated C# language to parse URLs in comments.
- Updated sample projects to display a quick info popup when hovering over a C# URL.
Improved Clipboard and Drag/Drop Customization Capabilities
- Made major changes to the cut/copy/paste and drag/drop model to improve customization capabilities.
- Added the CutCopyToBlankLineWhenNoSelection property to control whether cut/copy operations can occur when there is no selection.
- Renamed the CustomDataObjectText event to PasteDragDrop and changed its behavior so that it fires for all pastes and drag/drops. Insertion text may be modified by handling the event.
- Renamed the CustomDataObjectTextEventArgs class to PasteDragDropEventArgs.
- Renamed the CustomDataObjectTextEventHandler delegate to PasteDragDropEventHandler.
- Renamed the CustomDataObjectSource enumeration to PasteDragDropSource.
- Renamed the ClipboardChanged event to CutCopyDrag. This event fires before any text is set to the clipboard or dragged so that it may be customized.
- Renamed the ClipboardChangedEventArgs class to CutCopyDragEventArgs.
- Renamed the ClipboardChangedEventHandler delegate to CutCopyDragEventHandler.
- Added the CutCopyDragSource enumeration.
New Language Definitions and Related Files
- Updated the language definition version for the language definition XSD.
- Updated the version of the language definitions from 2.0 to 3.0. Updated the version to 3.0 in the root SyntaxLanguage tag in each XML language definition.
- Added a CodeSmith 3.0 template for automatically generating classes containing token and state ID values based on an XML language definition.
- Added a language definition for Java and related semantic parser class.
- Added a language definition for Perl.
- Added a language definition for PHP.
- Added a language definition for Batch Files.
Other Feature Enhancements
- Added a sample spell check form in the sample project demonstrating how easy it is to add any third-party spell checking component to work with SyntaxEditor.
- Added the SpellingChange value to the DocumentModificationType enumeration.
- Added options for highlighting the current line.
- Added the CurrentLineHighlightingVisible, CurrentLineHighlightBackColor and CurrentLineHighlightBorderColor properties to the SyntaxEditor class.
- Updated the sample projects to add a menu option for current line highlighting.
- Added optional vertical scrollbar hints.
- Added the VerticalScrollBarHintEnabled and VerticalScrollBarHintDefaultText properties to the SyntaxEditor class.
- Added the ability to know when an EditorView is scrolled so that two SyntaxEditor controls could be sync'ed up.
- Added the ViewHorizontalScroll and ViewVerticalScroll events to the SyntaxEditor class.
- Added the EditorViewEventArgs and EditorViewEventHandler classes.
- Changed IndicatorMarginClickEventArgs to inherit EditorViewEventArgs.
- Added the ability to control which scrollbars are displayed and if scrollbars can be auto-hidden when not needed.
- Added the ScrollBarType enumeration.
- Added the SyntaxEditor.ScrollBarType property.
- Added the ability to collapse the selection when the Escape key is pressed.
- Added the CollapseSelectionCommand command.
- Added a default command link key mapping for the Escape key to the CollapseSelectionCommand command.
- Added the SyntaxEditor.LineNumberMarginTextAlignment property to control the horizontal alignment of text in the line number margin.
- Added the SyntaxEditor.DefaultSize property.
- Added the Indicator.CanNavigateTo property and updated the sample project to demonstrate its functionality via the Enable Bookmark menu item on the Bookmarks menu.
- Added the SpanIndicator.ExpandOnBoundaries property to control whether the span indicators expands with text inserts on its boundaries. Override the property in base classes to set it to true.
- Added the IntelliPromptMemberList.HideOnParentFormDeactivate property.
- Added the IntelliPromptQuickInfo.HideOnParentFormDeactivate property.
- Added the mustInheritFrom parameter to the GetItemReflectionForAssemblyNamespacesAndTypes and AddReflectionForAssemblyNamespacesAndTypes methods of IntelliPromptMemberList, which allows for filtering of reflected Types to only ones that inherit the specified Type. Pass in null to the new parameter to mimic the old behavior of no filtering.
- Added the IntelliPromptNamespaceAndTypeFlags.CleanAttributeNames value that can be used with member list reflection to strip the ending "Attribute" text off of classes that inherit Attribute.
- Altered member list behavior so that only the TAB key forces a semi-selected item to be inserted.
- Added the DocumentLine.CustomLineNumber property to support custom line numbers.
- Added the TokenCollection.Document property.
- Changed double-click so that words are selected on the second mouse down and word selection mode begins. Previously words were not selected until the second mouse up.
- Changed double-click so that collapsed outlining nodes are expanded on the second mouse down. Previously nodes were not expanded until the second mouse up.
- Updated the DeleteHorizontalWhitespaceCommand to function like in Whidbey.
- Changed the painting of selected text to use a "near-highlight" color when the SyntaxEditor control does not have focus.
- Updated the sample application to demonstrate smart indent after curly braces in C#, Java, and JScript.
- Updated the sample application to use owner-draw menus.
- Optimized the output of the XML language definition serialization.
4/17/2005 - Version 2.5.0160
- Added the HideOnParentFormDeactivate property to the IntelliPromptInfoTip class to allow for hiding of an info tip when the parent form deactivates.
- Fixed outlining issue where nodes that end with line feeds caused the outlining indicator on the next line to be incorrect.
- Fixed a bug with line modification marking where the line after a line feed was not marked as modified properly.
- Fixed a bug where line selection at the last line in the document caused a flicker.
- Fixed a bug where squiggle lines wouldn't always redraw correctly when the editor was scrolled horizontally.
- Fixed a bug where the horizontal scrollbar maximum value was calculated incorrectly while in word wrap mode at a specific column.
- Fixed a bug where the regular expression engine did not handle {n} quantifiers correctly.
- Made several changes in the Shared/WinUICore libraries to better support the VS.NET 2005 Beta 2 release.
3/14/2005 - Version 2.5.0159
- Changed IntelliPromptMemberList.GetItemReflectionForAssemblyNamespacesAndTypes so that the root namespace is used if no namespaces are specified.
- Added the Serializable attribute to the IntelliPromptMemberListItem class.
- Changed the info tip so that the up and down arrow keys are not captured if there is only one info item.
- Added the EditorView.VisibleColumnCount property.
- Fixed a bug where IntelliPromptMemberList.GetItemReflectionForAssemblyNamespacesAndTypes would remove the first character of top-level namespaces if the root namespace was specified.
- Fixed a bug where the Quick Info height would not be resized correctly if wrapping of text occurred.
- Fixed a bug where in a certain situation, the caret in an unselected view could be displayed in the selected view while scrolling the unselected view.
- Fixed a bug where the maximum scrollbar values were not calculated correctly for a word-wrapped editor instance in an MDI child window.
- Fixed a bug where the IntelliPromptMemberList.CompleteWord method could cause a string length out-of-range exception in a certain situation.
- Changed UIControl so that it inherits ScrollableControl instead of ContainerControl.
- Made internal adjustments to the licensing code.
2/6/2005 - Version 2.5.0158
- Added the IntelliPromptMemberList.CompleteWord method that performs an auto-complete if only a single item is selected using the given offset range, otherwise displays the member list.
- Added the IntelliPromptMemberList.RemoveAt method.
- Added the SyntaxEditor.IntelliPromptMemberListItemDescriptionRequested event to allow for lazy-loading of descriptions for IntelliPrompt member list items.
- Removed the restriction where member list items were only able to be added/removed when member list was not visible.
- Added the ExportStyleSettings and ImportStyleSettings methods to the HighlightingStyleCollection class to allow for exporting/importing user-customized style settings by using an XmlNode.
- Added the Document.AutoLineNumberingBase property, allowing for setting of the line number to use as the base for numbers displayed in the line number margin.
- Added the Document.CaseCorrectText method that allows for programmatic case correction of a range of lines.
- Added code so that changing Document.AutoCaseCorrectEnabled to true repaints the editor if a change was made.
- Added a SemanticJScriptParser class to the sample projects to provide automatic outlining for JScript.
- Added code to Document.ChangeLineModificationMarkColor to repaint the control after it is called.
- Added several new icons to the reflection member list.
- Updated the IntelliPromptMemberList.GetItemReflectionForTypeMembers method to use the new enumeration item icon when appropriate.
- Changed some internal code to prevent an exception due to a timing issue with LostFocus after SyntaxEditor has been disposed.
- Added the IsWhitespace flag to some of the pattern groups for line terminators in the sample languages.
- Changed built-in span indicators so that calls to the GetHighlightingStyle method returned a cached HighlightingStyle instead of creating one each time.
- Changed code so that lines that only end with a carriage return and no line feed will be loaded correctly.
- Removed the built-in CollapsibleTextStyle from automatically being added to each HighlightingStyleCollection. To make it customizable for a language, add it in the Styles tag in the language's definition.
- Added CollapsibleTextStyle entries to several language definitions.
- Fixed a bug where the changing of a CollapsibleTextStyle did not update the color used to draw collapsed text.
- Fixed a bug where the scrollbar maxes did not update when the outlining mode was changed.
- Fixed a bug where the info tip height would not be resized correctly if wrapping of text occurred.
- Fixed a bug where the scroll to caret logic didn't always move the scrollbars appropriately.
- Fixed a bug where the splitting of a view sometimes didn't cause the new view to have the same first visible display line.
- Made several tweaks to the WinUICore library.
1/11/2005 - Version 2.5.0157
- Fixed a licensing bug in WinUICore that was introduced in the previous WinUICore 1.0.0065. It occurred when custom classes inherited SyntaxEditor.
1/9/2005 - Version 2.5.0156
- Added a set to the IntelliPromptMemberList.SelectedItem property.
- Found and removed a couple retained SyntaxEditor instance references that were preventing proper garbage collection post-Dispose.
- Added code to SyntaxEditor.WordWrap to remove any existing vertical splits when word-wrapping mode is entered.
- Added code to throw an exception if the SyntaxEditor.VerticalSplitPostion property is set greater than zero while word-wrapping mode is active.
- Fixed a bug where the setting of the SyntaxEditor.WordWrapColumnIndex property did not always repaint correctly until the control was resized.
12/23/2004 - Version 2.5.0155
- Added the IntelliPromptTypeMemberFlags.NestedTypes flag that now allows the GetItemReflectionForTypeMembers method to enumerate nested types.
- Updated IntelliPromptTypeMemberFlags.AllMemberTypes flag to include the new NestedTypes flag.
- Added new icons to the reflection ImageList for inner types that support private and protected classes, interfaces, structures, enumerations, and delegates.
- Added items for the new icons and reshuffled some existing items in the IconResource enumeration to keep them in a logical order.
- Added the IntelliPromptMemberList.Remove method.
- Added the Document.AppendText method.
- Added the EditorView.EnsureVisible method that ensures that the specified offset is visible in the view.
- Added the Enabled property to the BreakpointIndicator class that is capable of drawing a hollow interior breakpoint glyph when it is set to false.
- Changed code so that indentation guides draw if spaces were used for indentation. Previously they only were drawn for tab indentation.
- Changed code so that lines with whitespace characters now draw indentation guides as if the line was empty.
- Changed multi-line indent code so that it intelligently lines up the first non-whitespace characters in each line to its appropriate tabstop.
- Added a lock on the indicator collection of each line when drawing the line.
- Fixed bug where the Plain Text language did not flag the whitespace lexical pattern groups with an IsWhitespace = true.
12/12/2004 - Version 2.5.0154
- Rewrote the RTF export code so that document exports as well as the RTF generated for drag/drop and copy operations occur nearly instantly.
- Changed installer so that the WinUICore and Shared assemblies are installed to the Common Files folder instead of the application folder within Program Files.
- Changed all IntelliPrompt popups that use formatting tags so that if the text is not specified in proper XML syntax, they will throw an exception.
- Fixed bug where two collapsed outlining nodes in a row would sometimes display an invalid character.
- Fixed bug in IntelliPrompt popups that use formatting tags where the ampersand character was not rendering.
- Fixed bug in IntelliPrompt popups where italic text was being clipped on the right side.
12/5/2004 - Version 2.5.0153
- Added the static GetItemReflectionForAssemblyNamespacesAndTypes and GetItemReflectionForTypeMembers methods to the IntelliPromptMemberList class.
- Added the IntelliPromptMemberList.DescriptionTipFont property.
- Added the IntelliPromptInfoTip.Font property.
- Added the IntelliPromptQuickInfo.Font property.
- Changed the info tip so that it automatically closes when a mouse button is pressed down over the SyntaxEditor control. This mimics VS.NET behavior.
- Adjusted all text drawing routines for IntelliPrompt popups so that they do not experience GDI+ DrawString grid-fitting problems.
- Updated scrollbar renderer to draw disabled scrollbars properly when not using Windows XP themes.
- Fixed a bug where pasting of text would sometimes not paste the last text that was copied.
- Fixed a bug where SyntaxEditor controls with their Document.Multiline properties set in the designer didn't hide the scrollbars correctly at run-time.
11/28/2004 - Version 2.5.0152
- Added the SyntaxEditor.OverwriteModeChanged event to indicate when the overwrite mode changes.
- Added the Shift+Backspace combination as a default key for BackspaceCommand.
- Added the SyntaxEditor.ContextMenuRequested that fires when a context menu should be displayed. If you show a custom context menu from this event, ensure that SyntaxEditor.DefaultContextMenuEnabled is set to false.
- Added the ContextMenuRequestEventArgs class and ContextMenuRequestEventHandler delegate.
- Fixed a bug where scrolling would sometimes leave some characters unpainted.
- Fixed a bug where the scrollbar maximums would not update correctly when the word wrap mode was changed.
11/21/2004 - Version 2.5.0151
- Added the LineNumberMarginDisabledBackgroundFill, SelectionMarginDisabledBackgroundFill, and TextAreaDisabledBackgroundFill properties to the SyntaxEditor class. They are used to render the associated areas of the control when the control is disabled.
- Added the SyntaxEditor.UseDisabledRenderingForReadOnlyMode property to control whether the control renders using the disabled background fills when the document is in read-only mode.
- Added a default context menu that can be displayed if no SyntaxEditor.ContextMenu property is set.
- Added the SyntaxEditor.DefaultContextMenuEnabled property that controls whether SyntaxEditor displays the default context menu if no ContextMenu property is set.
- Added the SyntaxEditor.GetDefaultContextMenu method.
- Unsealed the SyntaxEditor.OnDragXXX methods.
- Made interface changes to the SemanticParser class that should have been made in the original 2.5 release to fit with the 2.5 user interface/document object model changes.
- Removed the rootLanguage parameter from the PerformAutomaticOutlining, PreParse, and PostParse methods since Document.Language can now be used to retrieve the root language.
- Changed the parameters of the TriggerActivated method so that a SyntaxEditor instance is passed instead of a Document and root language. Both the Document and root language can be retrieved via the SyntaxEditor instance.
- Changed the code of the test application's FindReplaceForm under the Replace button click event handler to more accurately give a result message.
- Fixed a bug that didn't update the scrollbars when setting a new Document to the SyntaxEditor class.
- Fixed a bug where the member list threw an exception under certain circumstances when performing an auto-complete.
- Fixed a bug where grouped undo actions from a Replace All operation were limited to 100.
- Fixed a bug where the setting of the parent Form's ShowInTaskbar property would make the SyntaxEditor control stop painting until resized.
- Fixed a bug where the pressing of Escape when a member list was displayed and an item was fully selected would perform an auto-complete instead of a cancel.
- Fixed a bug where a second member list could not be initiated from the IntelliPromptMemberListClosed event.
11/3/2004 - Version 2.5.0150
Completely Separated the User Interface from the Document/Parsing Model
- Made many internal changes to allow for the user interface and document/parsing models to be separated.
- This allows for a Document to be loaded and parsed without any SyntaxEditor controls being created.
- This also allows for Document objects to be cached in memory and swapped in and out of SyntaxEditor controls.
- Added the Document property to the DocumentLineCollection class.
- Added the Index property to the DocumentLine class.
- Added the IndicatorAdded, IndicatorRemoved, IndicatorResized, ModifiedChanged, TextChanged, TextChanging events to the Document class.
- Added the OnIndicatorAdded, OnIndicatorRemoved, OnIndicatorResized, OnModifiedChanged methods to the Document class.
- Added the Filename property to the Document class.
- Changed the object model so languages are set to specific Document objects, not the SyntaxEditor control
- Moved the SyntaxEditor.Language property to the Document class.
- Moved the SyntaxLanguageLoaded, SyntaxLanguageLoading events from SyntaxEditor to the Document class.
- Moved the OnSyntaxLanguageLoaded, OnSyntaxLanguageLoading methods from SyntaxEditor to the Document class.
- Moved the LoadFile, LoadLanguageFromXml, SaveFile, SaveFileAsHtml, SaveFileAsRtf, SaveLanguageToXml method overloads from SyntaxEditor to the Document class.
- Changed the object model that Document-related properties are on the Document object, not the SyntaxEditor control
- Moved the AutoCaseCorrectEnabled, AutoCharacterCasing, LexicalParserLineLookBehind, LineModificationMarkingColor, LineModificationMarkingEnabled, Multiline, ReadOnly properties from SyntaxEditor to Document.
- Moved the SyntaxEditor.CharsInTab property to Document.SpacesInTab.
- Moved the SyntaxEditor.OutliningMode property to the Outlining.Mode property. The Outlining object can be retrieved via the Document.Outlining property.
- Renamed the IndicatorAdded, IndicatorRemoved, IndicatorResized, SyntaxLanguageLoaded, SyntaxLanguageLoading, TextChanged, TextChanging events on SyntaxEditor to DocumentIndicatorAdded, DocumentIndicatorRemoved, DocumentIndicatorResized, DocumentSyntaxLanguageLoaded, DocumentSyntaxLanguageLoading, DocumentTextChanged, DocumentTextChanging.
- Moved the Outlining.Refresh method overloads to SyntaxEditor.RefreshOutlining.
- Removed the Editor property from the Document class so that a Document is truly independent of all SyntaxEditor user interface.
- Moved all EditorView functionality to be directly controlled by the SyntaxEditor control, not Document.
- Moved the HasHorizontalSplit, HasVerticalSplit, HorizontalSplitPosition, ResetViews, VerticalSplitPosition, Views members from Document to SyntaxEditor.
- Moved and renamed the Document.CurrentView property to SyntaxEditor.SelectedView.
- Moved the FindReplace property from Document to the EditorView class.
- Renamed the FindReplace class to EditorViewFindReplace.
- Removed the HighlightingStyle.GetFont method and replaced it with the SyntaxEditor.GetFont method.
- Removed the Outlining.Add method overload that accepts an EditorView parameter and replaced it with the EditorView.CreateOutliningNodeFromSelection method.
- Added the SyntaxEditor property to the EditorView class.
Added Syntax Highlighting To Collapsed Outlining Node Tooltips
- Use the IntelliPromptQuickInfo.CollapsedOutliningNodeSyntaxHighlightingEnabled property to control whether syntax highlighting is enabled.
Added More Print Settings that Can Be Set Independent of a SyntaxEditor Control's Settings
- Added the LineNumberMarginVisible, WhitespaceLineEndsVisible, WhitespaceSpacesVisible, WhitespaceTabsVisible, WordWrap properties to the PrintSettings class to allow for printed pages to have different display settings than the editor.
Added Display Lines to the Object Model
- Added the DisplayLines property to the EditorView class to allow access to the display lines of each EditorView.
- Added the DisplayLine, DisplayLineCollection classes.
- Renamed the EditorView.FirstVisibleLine property to FirstVisibleDisplayLineIndex.
- Renamed the EditorView.VisibleLines property to VisibleDisplayLineCount.
Added More Methods to Access the Outlining Object Model
- Added new methods to allow for custom semantic parsers to be written that don't have to inherit from SemanticDefaultParser.
- Added the Add (a new overload), Close, and Open methods to Outlining to allow for custom semantic parsers to be developed.
Added the TextStylePreview Control
- Added the TextStylePreview control to be used on Options windows for showing font and color style settings.
- The control has advanced preview capabilities such as borders around text along with wave lines under text.
- Added the TextStylePreview control to the sample project.
Finalized WinUICore and Shared 1.0 Library Object Model
- Made numerous changes to WinUICore to help reduce memory usage and provide an object model more like new Longhorn objects.
- Removed the VisualStyle class and moved the properties of all classes that used to inherit from VisualStyle into properties of SyntaxEditor.
- Removed the SyntaxEditor.BracketHighlightVisualStyle property and added the BracketHighlightBackColor, BracketHighlightBorderColor, BracketHighlightForeColor properties.
- Removed the SyntaxEditor.ContentDividerVisualStyle property and added the ContentDividerColor, ContentDividerDashStyle properties.
- Removed the SyntaxEditor.IndicatorMarginVisualStyle property and added the IndicatorMarginBackgroundFill, IndicatorMarginBorderColor, IndicatorMarginBorderDashStyle properties.
- Removed the SyntaxEditor.LineNumberMarginVisualStyle property and added the LineNumberMarginBackgroundFill, LineNumberMarginBorderColor, LineNumberMarginBorderDashStyle, LineNumberMarginForeColor properties.
- Removed the SyntaxEditor.SelectionMarginVisualStyle property and added the SelectionMarginBackgroundFill, SelectionMarginBorderColor, SelectionMarginBorderDashStyle properties.
- Removed the SyntaxEditor.TextAreaVisualStyle property and added the SpaceForeColor, TabForeColor, TextAreaBackgroundFill properties.
- Removed the SyntaxEditor.WordWrapMarginVisualStyle property and added the WordWrapMarginBackgroundFill, WordWrapMarginBorderColor, WordWrapMarginBorderDashStyle properties.
- Reimplemented the popup base class code in WinUICore.
- Changed the tags for the markup label control to be more like HTML and CSS. See the documentation for the valid tags and attributes.
- Changed the base class of IntelliPromptMemberList from UIPopupBase to DisposableObject.
- Removed the IntelliPrompt.PreventParentFormFocusLoss property since popups are now done without subclassing.
- Removed the view splitter code that used to be in WinUICore and built it directly into various SyntaxEditor objects.
- Removed all the classes that used to be in the ActiproSoftware.WinUICore.ViewSplitter namespace.
- Renamed the UIViewSplitterType enumeration to SyntaxEditorSplitType.
- Created the SyntaxEditorSplitEventArgs, SyntaxEditorSplitEventHandler classes.
- Renamed the use of the term "Action" to "Command" to correspond with the change in WinUICore.
- Added members so that SyntaxEditor implements the ICommandTarget interface.
- Renamed the ActiproSoftware.SyntaxEditor.Actions namespace to ActiproSoftware.SyntaxEditor.Commands.
- EditCommand is now the base class for commands.
- All pre-defined edit commands were renamed xxxCommand instead of xxxAction.
- Removed the KeyActionMappingCollection class and replaced it with the SyntaxEditor.CommandLinks property.
- Moved the RaiseEditCommand method from the Document to EditorView class.
- Removed self-describing classes from WinUICore to reduce memory use of classes.
- Changed the base class of AutoReplaceEntry, FindReplaceOptions, Selection, TextStream, TokenStream from SelfDescribingObjectBase to DisposableObject.
- Removed EventArgsBase class from WinUICore to reduce memory use of classes.
- Changed the base class of AutoReplaceEventArgs, ClipboardChangedEventArgs, CustomDataObjectTextEventArgs, DocumentModificationEventArgs, IncrementalSearchEventArgs, IndicatorEventArgs, IndicatorMarginClickEventArgs, IntelliPromptInfoTipEventArgs, IntelliPromptQuickInfoEventArgs, OutliningNodeEventArgs, SelectionEventArgs, SmartIndentEventArgs, SyntaxLanguageEventArgs, TriggerEventArgs from EventArgsBase to EventArgs.
- Changed the hierarchy object and related collection base classes into logical tree node objects and collections to better match Longhorn naming.
- Changed the base class of LexicalPattern, LexicalScope, LexicalScopeLexicalStateTransition from HierarchyObjectBase to LogicalTreeNodeBase.
- Changed the base class of Indicator, UndoableModificationStack, UndoRedo from HierarchyObjectBase to DisposableObject.
- Changed the base class of Caret from HierarchyObjectBase to Object.
- Changed the base class of Document from UIComponent to DisposableObject.
- Changed the base class of LexicalPatternGroup, LexicalScopeCollection from HierarchyObjectCollection to LogicalTreeNodeCollection.
- Changed the base class of DocumentIndicatorCollection, IndicatorCollection from HierarchyObjectCollection to Object.
- Changed the base class of HighlightingStyle, LexicalMacro, LexicalState, SyntaxLanguage, SyntaxLanguageProperty, Trigger from KeyedHierarchyObjectBase to LogicalTreeNodeBase.
- Changed the base class of HighlightingStyleCollection, LexicalMacroCollection, LexicalPatternGroupCollection, LexicalStateCollection, SyntaxLanguageCollection, SyntaxLanguagePropertyCollection, TriggerCollection from KeyedHierarchyObjectCollection to KeyedLogicalTreeNodeCollection.
- Changed the UIObject base class to UIElement to better match Longhorn naming.
- Changed the base class of EditorView from UISelectableObject to UIElement.
- Changed the base class of EditorViewCollection from UIComponentCollection to UIElementCollection.
Other Feature Enhancements and Bug Fixes
- Worked on reducing overall memory usage.
- Worked on significantly increasing the speed for display line calculation and for general rendering.
- Sped up repainting when dragging view splitters.
- Added a language definition for Python.
- Added support for moving the IME composition window input to the caret location if the SyntaxEditor.UnicodeEnabled property is set.
- Added the MoveScrollDownCommand and MoveScrollUpCommand that function on Ctrl+Down and Ctrl+Up respectively.
- Added the ability to set the SyntaxEditor.Cursor property so that it overrides whatever cursor the control would normally show. This allows for wait cursors to be displayed over the control during processing.
- Added code to suspend painting routines while text is being parsed so that painting can't occur while tokens are invalid.
- Changed internal code to use custom ScrollBar controls instead of the Windows Forms scrollbar controls.
- Added the SyntaxEditor.BracketHighlightingInclusive property which controls whether bracket highlighting occurs when the caret is anywhere in a bracket token.
- Added code to stop any mouse selections that are in progress when the control loses focus.
- Added the SyntaxEditor.MinimumDisplayLineHeight property to allow for smaller fonts to have smaller display line heights.
- Added the SyntaxEditor.CutCopyDragWithRtf property to control whether text is cut/copied to the clipboard or dragged in RTF format. This allows for pasting of text that retains syntax highlighting into applications such as Word.
- Added the Document.GetSubstringAsRtf method.
- Added a Font parameter to the GetTextAsRtf, SaveFileAsRtf methods of the Document class.
- Added the SyntaxEditor.SelectedViewChanged event.
- Added the Document.UndoRedoStateChanged event to track when the undo or redo stack is changed so that application user interface enabled states, such as toolbar buttons, should be updated.
- Added the SyntaxEditor.DocumentUndoRedoStateChanged event that fires when the current document's UndoRedoStateChanged is raised.
- Changed quick info so that it is lined up under the start of the token under the cursor as opposed to under the character under the cursor.
- Added the IntelliPromptMemberList.Visible property.
- Added the IntelliPromptInfoTip.ArrowKeySelectionEnabled to control whether Up/Down arrow key presses are processed by the info tip.
- Added the SyntaxEditor.VariableWidthFont property.
- Removed the LexicalScope.LexicalScopes property and added the LexicalScope.LexicalState property.
- Removed the SyntaxEditor.BorderColor property and replaced it with SyntaxEditor.Border.
- Updated the defaults for the bracket highlighting and visible whitespace colors of the editor to more closely match VS.NET.
- Internally revamped how the mouse selection code is implemented.
- Hid the SyntaxEditor.Text in the designer since it would cause resizing to slow down in the sample application when displayed in the property grid. Use the SyntaxEditor.Document.Text property to set text while in the designer.
- Renamed the SyntaxEditor.SpaceForeColor property to WhitespaceSpaceForeColor.
- Renamed the SyntaxEditor.TabForeColor property to WhitespaceTabForeColor.
- Changed the ReflectionImageList property and ResetReflectionImageList method on the SyntaxEditor class to be static.
- Updated the breakpoint and bookmark glyphs to have a Whidbey gradient appearance.
- Updated the icons used in the sample project.
- Adjusted the size of the outlining indicators to be based on both text font size and selection margin width.
- Added Ctrl+Y as another default keyboard shortcut for RedoCommand.
- Fixed the bug where databinding to the SyntaxEditor.Text property was throwing an exception.
- Update the documentation.
10/10/2004 - Version 2.0.0109
- Made assemblies CLS-compliant.
- Changed the tab character width calculation to use the space character's width instead of the average character width. This allows for an amount of space characters (spaces in a tab) and a tab character to yield the same width for indenting.
- Fixed bug where pressing page down near the end of the document could sometimes throw an exception.
- Fixed rare bug where the OnClick method in UIObject would cause an exception when changing view splits.
- Fixed bug where a span indicator glyph may replicate on display lines that have line indicators with glyphs.
- Fixed bug where EditorView.GoToLine didn't scroll to the display line if the caret was already on the display line.
- Fixed bug where invisible horizontal split button region was available to be clicked, even when word wrap caused the horizontal scrollbar to disappear.
- Fixed bug where the display line calculation would enter a loop in a certain situation.
8/22/2004 - Version 2.0.0108
- Added an EditorView.GoToLine overload that allows the specified line to be scrolled to a certain amount of display lines from the top of the view.
- Added BindingFlags.FlattenHierarchy to the reflection code in the AddReflectionForTypeMembers method.
- Fixed bug where collapsing lines with word wrap activated would remove display lines.
- Fixed bug where the removal of splitters was sometimes causing an exception in the mouse handling code.
- Fixed bug where the caret size was not adjusting when the Font was changed until after the caret was moved.
- Fixed bug where doing a line selection on the only line of an empty document and then typing threw an exception.
7/6/2004 - Version 2.0.0107
- Added code to the EditorView.GoToLine method to expand any collapsed outlining nodes that contain the start of the specified line.
- Changed DataBindings and Text properties of SyntaxEditor so that they are visible in the designer.
- Made tweaks to prevent several exceptions from occurring even though they were occurring within try...catch blocks.
- Fixed an invalid brush disposal bug that was introduced in the previous build.
7/1/2004 - Version 2.0.0106
- Add an INI file language definition.
- Added the SyntaxEditor.BorderColor property to set the color of the border around the control.
- Added the SyntaxEditor.LexicalParserLineLookBehind property to control how many lines back the lexical parser must start at when a modification occurs.
- Added try...catch blocks around the find/replace methods in the sample projects to catch bad regular expressions that are entered by users.
- Added a Outlining.Refresh method overload to refresh the outlining state of the entire document. This should be called after any Outlining.Clear call. The sample applications have been updated to add the Outlining.Refresh call.
- Changed the access level of all semantic parser classes' (SemanticParser and SemanticDefaultParser) members from protected to public.
- Changed base type of ModifierKeys from UInt to Int.
- Tweaked the code that determines which outlining indicator to show on a display line.
- Fixed lexical parsing bug that caused invalid tokens to be formed when a zero-width assertion-only pattern was matched.
- Fixed block indent bug where only the first selected line was indented if the original selection was made in reverse.
- Fixed a bug in which the selection could be moved past the end of a document if the caret was within an open top-level outlining node and was collapsed.
- Fixed a bug with the Token.CustomHighlightingStyle where it would not always take effect until an editor change occurred.
- Fixed a bug with the Token.CustomHighlightingStyle where it would not always clear on tokens that were set with different lexical parse data.
- Added some GDI+ object disposal code in the drawing routines to help prevent any possible memory leaks.
- Added code to load image and icon resources into static variables that are only initialized once.
6/1/2004 - Version 2.0.0105
- Added SyntaxEditor.Multiline property to allow creation of editor instances that only draw one line like a regular TextBox.
- Added new Form to the sample project to demonstrate the new single-line mode. Get to it via Tools/Single-Line Mode Demo menu item.
- Added "Single-Line Mode" help topic.
- Added the Token.CustomHighlightingStyle property that allows a custom highlighting style to be set to a specific Token.
- Added a "Assigning a Custom HighlightingStyle to a Specific Token" section to the "Semantic Parsing" help topic.
- Added region outlining for VB.NET language definition.
- Added the SemanticDefaultParser.AutoOutlineLanguageTransitions property.
- Reversed previous decision to automatically make IntelliPrompt info tip close on ENTER key press.
- Fixed remaining bugs in auto-replace to make it only work on text surrounded by word breaks.
5/16/2004 - Version 2.0.0103
- Added the IntelliPromptMemberList.AddReflectionForAssemblyNamespacesAndTypes method to add namespaces for the specified assemblies.
- Added the IntelliPromptNamespaceAndTypeFlags enumeration.
- Added code to the sample applications that use the new member list reflection for namespaces and types.
- Renamed the TokenStream class to TokenCollection since it really is a collection and not a true stream.
- Renamed the Document.TokenStream property to Document.Tokens.
- Created a new TokenStream class that can be used to iterate through the Tokens in a Document and retain a position.
- Added the Document.GetTokenStream method.
- Changed the SemanticDefaultParser.GetTokenOutliningAction interface to use the new TokenStream. The TokenStream will be positioned at the Token requiring outlining data. The Document can be obtained as a property of the TokenStream object.
- Added new GoToNextToken and GoToPreviousToken overloads to the TextStream class that move a specified number of Tokens.
- Hid the BasicGoToNextToken and BasicGoToPreviousToken methods in TextStream since they are intended for internal use only.
- Changed the base class of IntelliPrompt to be DisposableObject.
- Changed the base class of AutoReplaceEntry, FindReplaceOptions, Selection and TextStream to be SelfDescribingObjectBase.
- Changed the base class of AutoReplaceEntryCollection and FindReplaceResultSet to be ReadOnlyCollectionBase.
- Changed the base class of FindReplace to be Object.
- Updated the SyntaxEditor.ReflectionImageList to use the new 256-color Whidbey icons.
- Added new icons to the SyntaxEditor.ReflectionImageList.
- Updated sample apps to use the new icons in the SyntaxEditor.ReflectionImageList.
- Disabled smooth scrolling in the member list.
- Added a delay when displaying the member list description tip.
- Changed Info Tip so that it closes when the ENTER key is pressed.
- Added code so that \n characters in a lexical pattern group can designate a content divider.
- Fixed a bug in the HTML language definition.
- Enhanced the SQL language definition for regions.
- Made minor tweak to several language definitions to remove DefaultState as a child state of DefaultState.
- Changed numerous collections so that using the key-based indexer returns null instead of throwing an exception when an invalid key is passed.
- Added a "Re-use SyntaxLanguage Instances" section to the "Optimization" topic in the documentation.
- Added a "Using the Reflection ImageList" section to the "IntelliPrompt Member List" topic in the documentation.
- Added a "Using the AddReflectionForAssemblyNamespacesAndTypes Helper Method" section to the "IntelliPrompt Member List" topic in the documentation.
- Added a "Using the AddReflectionForTypeMembers Helper Method" section to the "IntelliPrompt Member List" topic in the documentation.
- Fixed a bug where the end-of-document token was not assigned the correct state and always had a value of DefaultState.
- Fixed a couple minor bugs in the lexical parser and outlining.
- Changed auto-replace so that it operates on tokenized words.
- Made another tweak to the clipboard copy routines to work around a .NET framework bug with copying to the clipboard.
5/1/2004 - Version 2.0.0102
- Added description tips that appear next to Member List items when the item's Description property is set.
- Added description tips to the C# XML comments member list sample.
- Added regions and comment collapsing to the SQL language definition.
- Added the Caret.InsertWidth property to control the width of the insertion mode caret.
- Added the IntelliPrompt.PreventParentFormFocusLoss property to control whether to permit the parent Form from losing focus if a popup is clicked.
- Added code to attempt to handle a strange bug in the .NET framework that sometimes causes an exception to occur the first time the clipboard is accessed.
- Added a bounds check to the Info Tip to ensure that the selected index is valid when the Show method is called.
- Fixed a bug in the IntelliPromptMemberList.CopyTo method that used to clear the array that was passed in.
- Added documentation for the Member List description tip.
- Added documentation for the spacer tag for use in Quick Info and Info Tips.
4/25/2004 - Version 2.0.0101
- Added Clear, Insert, Remove, and RemoveAt methods where applicable to the LexicalMacroCollection, LexicalPatternGroup, LexicalPatternGroupCollection, LexicalScopeCollection, and LexicalStateCollection collections.
- Added new overloads for the LoadFile and SaveFile methods of the SyntaxEditor class that interact with a Stream.
- Added the HtmlExportType enumeration.
- Added a HtmlExportType parameter to the SyntaxEditor.SaveFileAsHtml method.
- Added a HtmlExportType parameter to the Document.GetTextAsHtml method.
- Added the option of saving CSS class-based HTML exported documents.
- Added the DocumentLine.GetTabStopLevel method to return the tabstop level of a document line.
- Removed the LexicalParseFlags and OutliningLevel properties from the Token class because they were not used. Any sort of data that would have been placed in the OutliningLevel property should be placed in the SemanticParseData property instead.
- Fixed bug where text deletions that caused indicators to be removed did not remove the indicators from the Document.Indicators collection.
4/17/2004 - Version 2.0.0100
Regular Expression Engine
- Redesigned to the regex engine to be NFA-based instead of DFA-based.
- Added zero-width constructs for matching at the start and end of a document.
- Added zero-width constructs for matching at the start and end of lines.
- Added zero-width constructs for matching at word boundaries.
- Added positive and negative look-ahead constructs.
- Added comment construct.
- Built-in character classes such as \w now permitted to be used in character classes. A sample is [#$\w].
- Lexical parser redeveloped to use use the new NFA regular expression engine.
- Find/Replace engine altered to use the new NFA regular expression engine.
- Added the InvalidRegexPatternException class for exceptions that deal with invalid patterns.
New XML Language Definition Format
- Redesigned XML language definition format to be more object-oriented.
- Reimplemented all sample XML language definition files.
- Improved the C# language definition to very closely match the tokens in the official C# language specification.
SyntaxLanguage Changes
- Removed SyntaxLanguageDomain and all related classes, including SyntaxLanguageDomainEventArgs and SyntaxLanguageDomainEventHandler.
- Re-engineered the SyntaxLanguage class.
- Languages can now be saved to unencrypted XML form if they are not flagged as Secure within their original XML definition.
- Changed SyntaxEditor.LangaugeDomain property to SyntaxEditor.Language.
- Changed SyntaxEditor.ResetLangaugeDomain method to SyntaxEditor.ResetLanguage.
- Changed SyntaxEditor.SyntaxLanguageDomainLoading and SyntaxLanguageDomainLoaded events to SyntaxEditor.SyntaxLanguageLoading and SyntaxLanguageLoaded.
- Combined SyntaxEditor.LoadLanguageDomainFromBinary, LoadLanguageDomainFromXml, methods into new SyntaxEditor.LoadLanguageFromXml method.
- Changed SyntaxEditor.SaveLanguageDomainToBinary method into new SyntaxEditor.SaveLanguageToXml method.
- Removed a couple constructors from the AutoReplaceTrigger and KeyPressTrigger classes.
- Added HighlightingStyle.Name property for tracking a display name for use on an application dialog.
- Added code to auto-populate the HighlightingStyle.Name property if it is not set and the HighlightingStyle.Key follows standard naming conventions.
- Fixed bug where the valid states for triggers were being examined after characters were entered, which could change the current state.
Token Stream
- Eliminated the Character class and moved all lexical parse data to a token stream.
- Changed the indexer of the Document class to be a char data type.
- Added the TokenStream and Token classes.
- Added the Document.TokenStream property.
- Added the TextStream.CurrentToken property, which returns the Token at the current position in the text stream.
- Changed all TextStream properties that returned Character objects to return basic char objects.
- Replaced the GetTokenRange and GetTokenText properties from Document with the Document.TokenStream.GetTokenAtOffset property.
- Replaced the CurrentCharacter, GetCurrentTokenRange, GetCurrentTokenText properties from EditorView with the EditorView.GetCurrentToken property.
- Replaced the GetPreviousTokenRange and GetPreviousTokenText properties from EditorView with the EditorView.GetPreviousToken property.
- Removed the IntelliPromptQuickInfoEventArgs.TokenRange property and added IntelliPromptQuickInfoEventArgs.Token, which returns a Token object.
Line Modification Marking
- Added SyntaxEditor.LineModificationMarkingEnabled to enable line modification marking.
- Added SyntaxEditor.LineModificationMarkingColor to set the color to use when marking newly modified lines.
- Individual document lines can be assigned a mark with the DocumentLine.ModificationMarkColor property.
- Added the Document.ChangeLineModificationMarkColor method to quickly change marks of one color to another. This is useful for indicating what changes have happened before and after a document save.
- Added "Mark Line Modifications" menu item to test application.
Parsing
- Added the DocumentModification.LexicalParseOffsetRange property.
- Moved the StartLineIndex, DeletionEndLineIndex, and InsertionEndLineIndex properties from the DocumentModificationEventArgs class to DocumentModification class.
- Added the SemanticParser abstract base class.
- Added the SemanticDefaultParser class that implements a default semantic parser.
- Added sample implementations of a semantic parser that performs outlining within the test projects.
Outlining
- Added support for manual (user-based) outlining and automatic (incremental) outlining.
- Added the OutliningMode enumeration which is used with the SyntaxEditor.OutliningMode property.
- Added the Outlining class, which is available via the Document.Outlining property.
- Added the OutliningNode class to track outlining data for a single node.
- Added the IOutliningNodeParseData class to track semantic parse data for an outlining node.
- Added the AutomaticOutliningSupportType enumeration to be used with SemanticParser implementations.
- Added the OutliningNodeParseData class and OutliningNodeAction enumeration to be used with the SemanticDefaultParser class.
- Updated the test application so that it demonstrates all outlining features via an Outlining menu.
Auto Case Correction
- Added the SyntaxEditor.AutoCaseCorrectEnabled property to control whether auto-case correction is enabled.
Selection
- Added CharacterColumn, DisplayCharacterColumn, DisplayPosition, LastPosition, and Position properties to the SelectionEventArgs class. These make it simple to display the information in a status bar when the selection changes. You can also compare the line number of the Position and the LastPosition to determine whether the caret has moved to a new line.
Word Wrap
- Added ability to word wrap at the column specified by SyntaxEditor.WordWrapColumnIndex when the SyntaxEditor.WordWrap property is set to a value other than None.
- Added SyntaxEditor.WordWrapMarginVisualStyle to control the visual style of the word wrap margin when the WordWrapColumnIndex property is used and the text area doesn't fit the view.
IntelliPrompt Reflection Helper
- Added the SyntaxEditor.ReflectionImageList property that can be used to obtain reflection images for a member list.
- Added the IntelliPromptMemberList.AddReflectionForTypeMembers method to simplify adding reflected members for a Type.
- Added the IntelliPromptTypeMemberFlags enumeration.
- Updated the sample application to demonstrate a call to IntelliPromptMemberList.AddReflectionForTypeMembers.
Bracket Highlighting
- Completely redesigned bracket highlighting classes so that they support multiple characters.
- Added the MoveToMatchingBracketAction and SelectToMatchingBracketAction actions, which can be activated by Ctrl+] and Ctrl+Shift+] respectively.
- Added the MoveToMatchingBracket and SelectToMatchingBracket methods to the Selection class.
- Because of the redesign of bracket highlighting, the GoToNextBracket and GoToPreviousBracket methods in the TextStream class were removed. The new way to locate brackets is to iterate through tokens to look for a token with the key of the desired bracket.
Clipboard
- Added the SyntaxEditor.ClipboardChanged event, which can be used to track clipboard-setting events and maintain an external clipboard-setting history.
- Added EditorView.PasteFromClipboard method and PasteFromClipboardAction class contructor overloads that accept an IDataObject parameter. These allow pastes to be made from an external clipboard-setting history.
- Added code to clipboard cut/copy line operations that use custom clipboard objects to fall back to normal text-only clipboard setting operations when an exception occurs.
Undo/Redo
- Performing undos back to the original state of the document now resets the Document.Modified flag to false.
Miscellaneous
- Renamed the Document.GetSubstring method to GetSubstring.
- Renamed the Line class to DocumentLine and the LineCollection class to DocumentLineCollection.
- Renamed the EditorView.CurrentLine property to CurrentDocumentLine.
- Added a setter to the DocumentLine.Text property, allowing for replacement of the text on the line.
- Moved the InsertText and InsertSurroundingText methods from the Document class to the EditorView class.
- Removed the Document.Selection property. Use Document.CurrentView.Selection instead.
- Moved the OffsetToPosition and PositionToOffset methods from the DocumentLineCollection class to the Document class, where they are easier to find.
- Removed the UndoableModificationEnumerator class.
- Renamed SyntaxEditor.AcceptTab property to SyntaxEditor.AcceptsTab.
- Added the GoToNextToken and GoToPreviousToken overloads to TextStream that allow for searching for tokens with a specific key.
- Find operations that select text draw the text as if the control is still focused when the control loses focus.
- Added a reverse incremental search cursor that displays when appropriate and altered incremental searching code in sample application.
- Added the Document.Reparse method.
- Added the IntelliPromptMemberList.Font property.
- Changed the border of IntelliPrompt tips to be a single-pixel in dark color.
- Improved the test applications to demonstrate new features.
- Improved and rewrote documentation.
3/21/2004 - Version 1.0.0066
- Added code to permit dragging of text to start when the control key is pressed before the mouse button is pressed down.
- Fixed bug where text was collapsing some spaces when printed.
- Fixed bug where the caret timer was still active in certain situations even when the control didn't have focus.
3/13/2004 - Version 1.0.0065
- Changed overload of IntelliPromptMemberList so that it takes an offset range.
- Adjusted positioning code for member list.
- Changed IntelliPromptMemberListClosed event so that if a member list was closed by a key press event, the event fires after the key is processed by SyntaxEditor.
- Added code to make secondary views start out with the same selection and at the same first visible line as the primary view.
- Fixed bug where an auto-replace at the end of a document was causing an exception.
- Fixed bug where the caret would paint when the control was first initialized, even if it did not have focus.
3/6/2004 - Version 1.0.0064
- Rewrote the drag/drop code so that it uses the .NET drag/drop event model. SyntaxEditor can now drag text to other text controls and accept text from other controls.
- Added UnicodeEnabled property that allows full Unicode support for clipboard and drag/drop operations. If your application should have extended Unicode character support, set this property to true.
- Added an overload of IntelliPromptMemberList.Show that initializes the member list so that existing text can be treated as if the user had typed it while the list was open.
- Added the IntelliPromptMemberListClosed event which allows for possible display of another member list after a member list is closed and auto-completion occurs.
- Greatly improved the loading speed of Quick Info and Info Tips so that even longer text loads almost instantly.
- Changed SmartIndent so that it will use spaces if SyntaxEditor.ConvertTabsToSpaces is set.
- Changed auto-replace triggers so that they fire before the KeyPress event occurs instead of after it. This allows Enter and Tab to be activator characters however now the text that is typed is not entered into the document until after the Trigger event occurs.
- Added functionality where a mouse click on selected text that does not start a drag will collapse the selection to the offset that was clicked.
- Fixed minor bug with selection sliding in unfocused views when text is inserted before the selection.
- Fixed bug where changing the font would sometimes not cause the scrollbars to update their maximums appropriately.
2/21/2004 - Version 1.0.0062
- Added overrides of the SyntaxEditor.LoadFile and SaveFile methods that accept Encoding parameters.
- Sped up deletion actions.
- Improved exceptions that can be raised when using regular expression find/replace operations.
- Fixed bug whe using regular expression find/replace that went into an infinite loop when the $ or ^ characters were specified.
- Fixed layout bug that was discovered when DockStyle.Fill was sometimes used.
- Fixed bug where the setter for Caret.Offset property was not working correctly.
- Fixed bug where drag/drop was permitted in read-only mode.
- Fixed bug where commenting the last line of a document would remove characters at the end of the document.
- Fixed bug where the commenting feature was incorrectly being flagged as Uncomment Lines in the undo stack.
1/25/2004 - Version 1.0.0061
- Added code to disable and dispose of the mouse selection timer when the SyntaxEditor control is disposed.
- Improved ScrollToCaret code to better ensure that the selection is visible.
- Changed the color drop-down code to help prevent a strange parent form painting bug that appears in .NET 1.1 only.
- Fixed bug where mouse selecting and scrolling would sometimes prevent from scrolling up to the first line.
1/18/2004 - Version 1.0.0060
- Added the UndoableDelete and UndoableInsert methods to the Document object to allow for undoable programmatic deletion and insertion of text.
- Added disabling of scrollbars when no scrolling is possible. This prevents a lockup bug in the Microsoft scrollbars from occurring.
- Changed how the location for the QuickInfo is calculated. The previous way sometimes caused an exception to occur in a very specific situation.
- Fixed bug where scrolling operations would occasionally paint over the margins left of the text area.
- Fixed bug where SelectionChanged event was sometimes not firing when an undo operation occurred.
- Fixed bug in .NET 1.1 where mouse scrolling would occasionally cause the scrollbar position to jump.
- Fixed bug in quoted string regex loading code.
1/11/2004 - Version 1.0.0059
- Greatly increased the speed of editor by fixing a bug introduced in a previous version that was slowing down processing when typing.
- Made minor license processing code change.
- Adjusted token word wrapping code to not wrap at whitespace. Whitespace should be defined as its own token.
- Added code to scroll the vertical scrollbar up if necessary after a deletion at the end of a document.
- Fixed bug that prevented the last document line from painting soft line breaks when word wrapped.
1/3/2004 - Version 1.0.0057
- Changed licensing key lookup so it checks the assembly context before checking the registry.
- Fixed bug where pasting large amounts of text sometimes didn't scroll to the caret.
- Fixed bug where non-regex find operations did not handle the \ character correctly.
12/9/2003 - Version 1.0.0055
- Changed code so that the SelectionChanged event fires even when there is no selection and the Delete key is pressed.
- Changed IntelliPrompt Member List so only one item is required instead of two.
- Fixed bug that sometimes prevented the final token in a document from being lexically parsed.
11/29/2003 - Version 1.0.0053
- Changed binary file loading code to explicitly use Read access.
- Fixed bug that occurred in .NET 1.1 where IntelliPrompt QuickInfo and InfoTip sometimes caused system menus to be unclickable and the parent application to not shut down.
10/30/2003 - Version 1.0.0051
- Changed \s and \S to point to CharClass.LineTerminatorWhitespace and CharClass.NonLineTerminatorWhitespace respectively.
- Added Unicode all letters with accents under \u00FF to the Alpha, Word, and related CharClass definitions.
- Fixed bug where deleting a single character while in Token word wrap mode and in a sitation that caused the token to wrap did not move the caret.
- Fixed bug introduced in a previous version where pressing End moved the caret to before the last character on a line instead of after it.
- Fixed bug introduced in a previous version where span indicators would throw an exception when typing in a certain scenario.
10/20/2003 - Version 1.0.0050
- Fixed CSS bug where } characters in ValueState weren't recognized.
- Fixed bug introduced in previous version where parse changes below the caret would not repaint properly.
10/18/2003 - Version 1.0.0049
- Added the WhitespaceHardLineEndCharacter and WhitespaceSoftLineEndCharacter properties to SyntaxEditor.
- Changed the copying of text to the clipboard so that it uses carriage returns and newlines instead of only newlines.
- Adjusted word wrapping so that a blank column remains on the right side that can be used to draw line end indicators.
- Fixed bug where soft line break indicators would draw over the last character in the line.
- Fixed bug where when token word wrap was active and a change was made that required the previous line to repaint, sometimes it would not.
- Fixed bug where GetSubString could return extra carriage returns when certain options were specified.
10/13/2003 - Version 1.0.0048
- Fixed bug where an exception was raised when deleting text that completely contained a span indicator.
- Fixed bug where pressing End on a line that was word wrapped moved the caret to the beginning of the next wrapped segment instead of to the end of the current one.
- Fixed bug where adding of views after word wrap had been set allowed the horizontal scrollbar on the new view to be visible.
10/12/2003 - Version 1.0.0047
- Enabled the Clipboard cut and copy operations to cut/copy the entire line if the selection length is zero. Paste can handle proper pasting of this new style of cut/copying.
- Added ability to load custom language definitions within the sample editor application.
- Added Selection.SelectRange method.
- Improved the Outdent action code.
- IntelliPrompt member lists now ignore leading whitespace when auto-selecting items in the member list as characters are typed.
- Fixed bug introduced in a recent version where typing on a word wrapped line didn't always repaint the lines below it as characters were entered.
9/26/2003 - Version 1.0.0046
- Added a VB.NET sample test application.
- Added the SyntaxEditor.IndentationGuideColor property.
- Added the IntelliPromptMemberList.AddRange method.
- Added the IntelliPromptMemberList.AllowedCharacters property to control which characters do not dismiss the list.
- Added the IntelliPromptMemberList.Sorted method.
- IntelliPrompt MemberList can now display without the use of an ImageList.
- Added the EditorView.CurrentCharacter property.
- Added CanRedo and CanUndo properties to the UndoRedo class.
- Added GetWordRange and GetWordText methods to the Document class.
- Lexical parser modified to set the language and state indices of the end-of-document character.
- OnKeyPress modified to stop its default processing if the Handled property of its event arguments has been set.
- Added code to make Ctrl+click select the word that is clicked.
- Added code to make right-clicks in the text area move the caret as long as the right-click is not within the selection.
- Changed IntelliPrompt QuickInfo so that the Show method doesn't automatically offset the specified location by the cursor size. Instead, the IntelliPromptQuickInfoRequested event argument's Location property is offset by the cursor size.
- Changed SyntaxEditor.AllowDrop to default to false.
- Fixed bug introduced in a previous version in which UndoableModificationStack.GetName was returning names from modifications in reverse order.
- Fixed bug that sometimes raised a GDI error when the editor was disposed.
- Fixed bug that would sometimes prevent the editor from painting once the control had been hidden.
- Fixed bug introduced in a previous version where span indicator tracking was corrupted when replace operations occurred before the indicators.
8/31/2003 - Version 1.0.0044
- Fixed bug introduced in the previous version where undo/redo stacks did not handle programmatic document text replacement.
- Fixed bug introduced in a recent version where drag/drop operations did not always undo/redo correctly.
8/25/2003 - Version 1.0.0043
- Changed LineCollection to inherit from ReadOnlyCollectionBase instead of CollectionBase.
- Added the DocumentModificationFlags.ProgrammaticTextReplacement flag to indicate when the Document.Text property is set.
- Fixed bug where the selection was not moving to the end when a complete text replacement was typed in.
8/10/2003 - Version 1.0.0042
- Added the UndoableModificationStack.Capacity property, which defaults to a value of 100.
- Added the IntelliPromptMemberList.SelectedItem property to enable better interactivity with the new
SyntaxEditor.IntelliPromptMemberListSelectedItemChanged and SyntaxEditor.IntelliPromptMemberListClosing events.
- Changed Line and LineCollection base classes to simpler ones with less memory impact.
- Renamed Line.UserData property to Tag.
- Added code that allows licensing to work when SyntaxEditor is encapsulated by a control library assembly.
- Fixed bug where vertical scrollbar was not always scrolling down to the last line in the document when using the mouse wheel.
- Fixed bug where mouse wheel panning indicator was not remaining stationary when scrolled.
- Fixed bug where text replacement operations were not firing a SelectionChanged event.
- Fixed bug where selection wasn't advancing when the first character in a blank document was typed.
- Fixed bug where cached GDI+ brushes were sometimes not displaying text in the appropriate color.
- Fixed an installer bug where installing the SyntaxEditor control after a Wizard control installation would sometimes break the Wizard's licensing.
8/2/2003 - Version 1.0.0040
- Added view-splitting Window menu commands to sample application.
- Improved internal structures and process flow to use new event-driven text change model.
- Added TextChanging event.
- TextChanged event now uses a redesigned DocumentModificationEventArgs.
- Altered the undo/redo system to use DocumentModifications for tracking.
- All undo-related objects with the term "Action" in their names have been renamed to "Modification".
- UndoableActionType enumeration renamed to DocumentModificationType.
- Renamed the HorizontalSplitPosition and VerticalSplitPosition properties on Document.
- Renamed the
HorizontalScrollBarLargeChangeCore, HorizontalScrollBarSmallChangeCore, HorizontalSplitPositionCore, HorizontalSplitterBoundsCore,
IsDraggingHorizontalSplitterCore, IsDraggingVerticalSplitterCore,
VerticalScrollBarLargeChangeCore, VerticalScrollBarSmallChangeCore, VerticalSplitPositionCore, VerticalSplitterBoundsCore
properties on UIViewSplitter.
- Renamed the HorizontalScrollBarLargeChange, HorizontalScrollBarMaximum, HorizontalScrollBarMinimum, HorizontalScrollBarSmallChange, HorizontalScrollBarValue, HorizontalScrollBarVisible,
VerticalScrollBarLargeChange, VerticalScrollBarMaximum, VerticalScrollBarMinimum, VerticalScrollBarSmallChange, VerticalScrollBarValue
properties and the HorizontalScrollBarValueChanged and VerticalScrollBarValueChanged events on UIViewSplitterViewInfo.
- Renamed the misnamed Line.UserDraw property to UserData.
- Fixed bug where non-focused views were not repainting correctly when the focused view was changed.
- Fixed bug that would not set focus back to the primary view when a secondary view was closed.
- Fixed bug where the license information stored in a production build's executable would generate a crypto exception on certain workstations.
7/18/2003 - Version 1.0.0038
- Fixed bug where the vertical scrollbar maximum was not set properly.
7/14/2003 - Version 1.0.0037
- Created an XSD for validating XML language definitions.
- Enhanced the Language Designer to support validation using the XSD.
- Added OffsetToPosition and PositionToOffset methods to the LineCollection class.
- Added GetSpanIndicatorsForOffset method to the DocumentIndicatorCollection class.
7/8/2003 - Version 1.0.0036
- Created an improved sample C# document to show IntelliPrompt features.
- Fixed bug where typing fast did not move the selection correctly.
- Fixed bug with XML comments in the C# language definition.
- Renamed SyntaxLanguageLoadEventXXX to SyntaxLanguageEventXXX.
- Removed unused SyntaxLanguageLoaded event.
7/6/2003 - Version 1.0.0035