SyntaxEditor - Delimiter Highlighting

by Avatar Bill Henning (Actipro) - 2 comments
Thursday, September 6, 2012 at 1:39pm

BlogPostBanner

We're currently working on wrapping up the 2012.2 versions of our WPF and Silverlight controls and hope to have these out in the next several weeks.  Today I'd like to announce another new feature coming to SyntaxEditor in the 2012.2 version:  delimiter highlighting!

UPDATE:  Version 2012.2 is live and available for download now.

What is Delimiter Highlighting?

Delimiter highlighting, also called bracket highlighting, is a feature where highlights appear next to sets of delimiters when the caret is next to them.

DelimiterHighlighting

In the screenshot above, we have the current line highlighting feature active along with delimiter highlighting.  The caret is next to a { character which the C# language implementation recognizes as a bracket that should receive highlighting.  Thus its background is highlighted, along with the matching } bracket's background.

Language-Specific Delimiters

Each syntax language has complete control over which delimiter sets are supported.  The language simply creates a new IStructureMatcher service that is able to locate matching delimiters.

Plus we include a built-in implementation of that service that makes it easy to provide matching for curly brace, square brace, angle brace, and parenthesis pairs.

Multiple Delimiter Support

One feature request we had for the WinForms version (which already has bracket highlighting features) was a good way to support more than two delimiters in a matched set.  This is useful in scenarios where perhaps you want to highlight #if#else#endif.  I'm pleased to say that our delimiter matching feature fully supports and will highlight any number of matches in a delimiter set!

Performance Optimizations

One issue with delimiter highlighting in general is that it updates very frequently, basically with every text or selection change.  In large documents, it can take time to scan forward/backward to find a matching delimiter. 

What we did was to design this feature in such a way that the scanning work is completely offloaded into a worker thread.  It actually piggybacks onto our multi-threaded parsing framework to accomplish this.  Thus in the end, the highlights still show up fast and even when the match scanning takes a relatively long time, there is no detriment to typing or scrolling performance.

Summary

Delimiter highlighting is a visually subtle, yet extremely useful feature when editing code.  It's been highly requested and we're very happy to deliver it in 2012.2.  We think you're really going to like what we've come up with.

In our next post, we'll talk about the related move/select to matching bracket functionality, also coming in 2012.2.

TaskDownload TaskLiveDemo TaskBuyNow

Actipro's WPF Controls

Over 100 UI controls for building beautiful Windows Presentation Foundation desktop apps.

Learn More

Over 100 UI controls for building beautiful Windows Presentation Foundation desktop apps.

Includes editors, docking windows, MDI, property grids, charts, tree controls, ribbons, gauges, themes, and much more.

Learn More Download Free Trial

Comments (2)

Posted 12 years ago by Helmut Zörrer
Avatar
Hi Bill, i missed this feature, although i didn't mention it as missing before to actipro. good news to hear it's coming into your product :-) one remaining 'hurting' thing for me, is the absence of intellipromt support for c# attributes. do you see a chance that this can be done in near future? g Helmut
Posted 12 years ago by Bill Henning (Actipro) - Actipro Software LLC
Avatar
Hi Helmut, I'm glad you like the new feature. As for attribute IntelliPrompt, we do have it on the TODO list for the add-on. We have to prioritize everything though and will let you know when it's done. We have your e-mail address written down with the feature request.

Add Comment

Please log in to a validated account to post comments.