SyntaxEditor for WPF - ANTLR v4 Support?

by Avatar Bill Henning (Actipro) - 2 comments
Friday, January 24, 2014 at 12:16pm

PostBannerSyntaxEditorDevNotes

SyntaxEditor for WPF has a free add-on included with it that provides integration with ANTLR 3.4 parsers. The add-on is described in detail in this blog post from several years back.

What is ANTLR?

ANTLR, ANother Tool for Language Recognition, was created by Terence Parr and is one of the most widely-used parsing frameworks available.  ANTLR is a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.

SyntaxEditor for WPF customers know that we also have our own LL(*) Parsing Framework that has a lot of benefits over ANTLR, but due to the general popularity of ANTLR, we are pleased to support it as well.

ANTLR v4

In the past few months, ANTLR v4 was released.  There is updated tooling for Visual Studio that allows ANTLR v4 parsers to generated.  The thing is that the entire infrastructure of ANTLR parsers has changed in v4, and with those breaking changes, it prevents our add-on from working.

In ANTLR v3, you could run the parser on the document text via our add-on (and in a worker thread so it doesn't block the main UI thread), and it would return the AST results of the parsing operation asynchronously when it completed.

In ANTLR v4, the parser is not the same as there is no automatic AST generation.  Parse results can be examined via the use of the visitor pattern or a parse tree walker.  If you wish to have your own AST, you have to roll your own and construct it using a visitor or walker.  This change negates a lot of the features our add-on provided since now, you basically must hand code an IParser service to install on your language.  SyntaxEditor is fully extensible for any custom parsers, so this can be added easily.  It's just that whatever code you need to do to generate an AST or other parse data by walking the parse tree must now be custom written.

What Do You Want?

We are writing this blog post to see what you, our customers, would like to see from us in terms of ANTLR support.  Do you still wish to have our add-on support ANTLR v3 as we move forward? 

The only piece that is really useful from our ANTLR add-on when used with the newer v4 design is the ICharStream implementation that allows the parser to directly read from our text storage facility.  Since it's only one class, do we just include it open source somewhere or make a separate v4 binary with it in there?

We'd love to hear your thoughts… Please comment below or email our support address!

TaskDownload TaskLiveDemo TaskBuyNow

Code Writer v2.2 Released

by Avatar Bill Henning (Actipro)
Monday, January 20, 2014 at 1:21pm

CodeWriterBlogPostBanner

Code Writer v2.2, our free text/code editor app, is now live in the Windows Store.  This version focuses on adding major new find/replace-related features. 

Are you interested in adding code or text editing abilities to your own Windows Store apps?  SyntaxEditor for WinRT/XAML was recently released, allowing you to build apps just like Code Writer.  Download a free evaluation to try it out.

Check out all the new features added to Code Writer…

New Find/Replace Pane Search Options

The Find/Replace Pane now includes search options for match case, whole word, and use regular expressions.

FindReplace1

The buttons to toggle them only appear when the pane is fully-expanded.  When collapsed, it will look like this:

FindReplace2

The selected options appear in subtle small text below the Find What field.  If no options are selected, that entire text row disappears so no screen space is wasted.

Regular Expression Insertion Options

Drop-downs with insertion options for find/replace fields appear when in regular expression mode.

FindReplace3
In the screenshot above, the Find What field's drop-down button is clicked, displaying a popup menu of available regex syntax options.

Incremental Search

Incremental search is a way for the end user to quickly search for text in a document without needing to interact with search dialogs or panes.  With a couple keyboard strokes, the end user can instantly start searching for text.

Ctrl+I enters the new incremental search mode, which is a feature that allows for fast text searching via the keyboard. Ctrl+Shift+I searches backward.  See this previous blog post on how incremental search works.

Search Match Highlights

An editor settings option has been added for the new search match highlights feature.

FindReplace4

Search matches are highlighted in the editor, even as you change search options in the Find/Replace Pane.  In the screenshot above, we have searched for the text "using", and all instances of it are automatically highlighted.

Find Next Instance of Selected Text

Ctrl+F3 will find the next instance of the currently-selected text.

Improved Delimiter Auto-Completion

Delimiter auto-completion logic is now a lot smarter as detailed in this blog post.

Miscellaneous

Numerous miscellaneous improvements have also been made:

  • Improved logic to prevent opening multiple instances of the same document.
  • Improved PHP syntax highlighting.
  • Documentation on touch interaction in the Editor screen.
  • Fixed issue with touch-based scrolling working in certain scenarios.
  • Fixed where Ctrl+Tab was cycling two documents forward instead of one.
  • Fixed unsaved documents showing empty tab tooltips.

Summary

This update significantly improves the searching features of Code Writer and we highly recommend that you upgrade to it.

You can also download a free evaluation of our SyntaxEditor control for WinRT/XAML, which lets you add advanced code and text editing to your own Windows Store apps.

TaskWideLearnMore TaskWideWindowsStore

Docking/MDI Getting Events for Auto-Hide Popups

by Avatar Bill Henning (Actipro)
Wednesday, January 8, 2014 at 9:45am

PostBannerWPFStudioDevNotes

One feature that has been requested by a number of customers for our Docking/MDI product is to be notified of when a tool window that is auto-hidden flies out or back in, such as the Error List tool window in the screenshot below:

DockingAutoHide

We just completed adding two new events to DockSite named WindowAutoHidePopupOpened and WindowAutoHidePopupClosed.  Each even passes an event args that specifies which tool window is being opened or closed.

These new features will be available in the 2014.1 version of Docking/MDI.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor Delimiter Auto-Complete Improvements

by Avatar Bill Henning (Actipro)
Tuesday, January 7, 2014 at 4:21pm

PostBannerSyntaxEditorDevNotes

Earlier last year we added delimiter auto-complete features to SyntaxEditor.  Delimiter auto-complete is where the user types a start delimiter and a related end delimiter is auto-inserted after the caret.  This is especially helpful when working on mobile tablets like a Surface since it means less overall typing is required to output the same code.  Best of all, with SyntaxEditor, these features can be easily added to any custom language.

Today I'd like to announce that we have rewritten and made improvements to the internal logic used to track delimiter auto-completions.  This means that as an end user encounters an already-completed delimiter, SyntaxEditor is more intelligent about how to handle various text change operations.

Example 1

Lets check out some of the enhancements.  We'll type in some JavaScript:

DelimiterAutoComplete1

In the screenshot above, the ) character was auto-completed when the ( character was typed.  Now let's type in some parameters:

DelimiterAutoComplete4

Next we will type the ) character even though it already exists in the document.  SyntaxEditor intelligently knows that the ) was previously auto-completed so it moves the caret past it without entering a second ):

DelimiterAutoComplete2

This sort of functionality works in the current SyntaxEditor version however only if there was nothing typed between the delimiters.  In the above scenario with the current version, since we typed in some parameter names, a second ) would have been typed.  With the most recently logic updates, SyntaxEditor now handles real-world scenarios much better.

Example 2

Let's start over to show another nice feature.  Here we've again typed a function and some parameters.  Note that the end ) was auto-completed while typing out the text so it appears after the caret.

DelimiterAutoComplete4

If we Backspace over the text and get to the start ( character, upon Backspacing over that, the related end-delimiter is automatically removed too:

DelimiterAutoComplete5

This feature works in the current version as well but again, only if there was nothing typed between the delimiters.  With the code updates, SyntaxEditor handles many more scenarios of typing within delimiters, and even multiple nestings of delimiters!

Summary

These new features will be available in the 2014.1 version of SyntaxEditor, in the WPF, WinRT/XAML, and Silverlight platforms, and will also appear in the next version of our free Code Writer Windows 8 app.

TaskDownload TaskLiveDemo TaskBuyNow

Actipro Blog 2013 Q4 Posting Summary

by Avatar Bill Henning (Actipro)
Sunday, January 5, 2014 at 11:57pm

PostBannerBlogPostSummary

What We Accomplished

In this quarter we published the 2013.2 version of our WinRT/XAML controls, as well as large maintenance releases of our other products with a lot of new features.

Our free Code Writer Windows 8 app saw a new release that added support for Windows 8.1, and took advantage of new UI concepts available in that version.

Behind the scenes, we also completely restructured and improved our internal process for source code management and build processes.  These updates have streamlined our day-to-day work and will allow us to serve our customers better.

What’s Coming Next

We are back from the holiday break and ready to dive right into new product development, along with enhancements to our existing controls, especially SyntaxEditor.

Blog Post List

Control Product Development

Control Product Releases

Code Writer App