• Products
  • Download
  • Purchase
  • Support
  • Company
Actipro Software company logo
Twitter Follow Actipro RSS Subscribe (RSS Feed)

The Actipro Blog

Tag Cloud

  • blog
  • docking
  • editors
  • intelliprompt
  • micro charts
  • navigation
  • propertygrid
  • ribbon
  • shared library
  • silverlight
  • syntaxeditor
  • themes
  • views
  • web site
  • winforms
  • winrt
  • wpf

Latest Twitter News

May 14, 2012 at 2:50 PM
IntelliPrompt code snippet features have been added to our VS-like code editor control for #WPF and #Silverlight. http://t.co/1IchOJrr

May 10, 2012 at 9:40 PM
Our new Micro Charts control products for #WPF and #Silverlight are out now. Come build some dashboards with them! http://t.co/EEERvff0

May 7, 2012 at 6:47 AM
Today we look at bar charts, for our upcoming #WPF, #Silverlight, and #WinRT Micro Charts product. http://t.co/gxHuPS6B

May 4, 2012 at 6:25 AM
See a gallery of micro area charts in our upcoming release for #WPF, #Silverlight, and #WinRT. http://t.co/qDXGwW8B

May 3, 2012 at 6:32 AM
See a variety of line charts that are easy to make with our upcoming #WPF, #Silverlight, #WinRT Micro Charts product. http://t.co/mbkX6tJd

Twitter Follow us on Twitter

Month List

  • 2012
    • May (9)
    • April (6)
    • March (11)
    • February (11)
    • January (2)
  • 2011
    • December (2)
    • November (7)
    • October (2)
    • September (1)
    • August (5)
    • July (3)
    • June (6)
    • May (5)
    • April (8)
    • March (4)
    • February (5)
    • January (9)
  • 2010
    • December (9)
    • November (10)
    • October (4)
    • September (8)
    • August (12)
    • July (9)
    • June (7)
    • May (6)
    • April (7)
    • March (6)
    • February (6)
    • January (4)
  • 2009
    • December (2)
    • November (2)
    • October (12)
    • September (3)
    • August (11)
    • July (10)
    • June (6)
    • May (3)
    • April (7)
    • March (6)
    • February (8)
    • January (10)
  • 2008
    • December (10)
    • November (2)
    • October (3)
    • September (5)
    • August (5)
    • July (8)
    • June (4)
    • May (4)
    • April (10)
    • March (8)
    • February (1)
    • January (2)

Category List

  • RSS feed for ActiproActipro (321)
  • RSS feed for Blog SummaryBlog Summary (15)
  • RSS feed for GeneralGeneral (43)
  • RSS feed for In developmentIn development (164)
  • RSS feed for New featuresNew features (155)
  • RSS feed for New productNew product (38)
  • RSS feed for PromotionPromotion (2)
  • RSS feed for SilverlightSilverlight (90)
  • RSS feed for Tips and tricksTips and tricks (4)
  • RSS feed for Visual Studio 2008Visual Studio 2008 (2)
  • RSS feed for Windows FormsWindows Forms (22)
  • RSS feed for Windows VistaWindows Vista (10)
  • RSS feed for WinRTWinRT (9)
  • RSS feed for WPFWPF (257)
  • RSS feed for XAMLXAML (23)

About Us

Actipro Software is a leading provider of .NET user interface controls for the WPF, Silverlight, and WinForms frameworks, and is most well-known for their SyntaxEditor syntax-highlighting code editor control.

Please take some time to learn more about us and our product offerings.

SyntaxEditor .NET Languages Add-on: Working Towards Automated IntelliPrompt

March 17, 2011 at 8:57 AM
by Bill Henning (Actipro)

BlogPostBanner

We’ve been hard at work over the past several weeks on the SyntaxEditor .NET Languages Add-on, for both the WPF and Silverlight platforms.  In the SyntaxEditor 2011.1 release (previously described in this post), we added the first phase of the add-on, which includes multi-threaded parsing, AST construction, syntax error reporting, and automatic outlining for C# and VB code.

The next phase of the add-on is to work on the core pieces needed to support automated IntelliPrompt, as our end goal is to have it working very similarly to Visual Studio 2010’s code editor for C# and VB.

In today’s post, we’ll walk through an overview of what we need working to support automated IntelliPrompt features. 

Reflection Database

The first piece is a complete reflection database that can examine binary assemblies as well as source files, and can create a repository of reflection data that supports fast lookup for namespaces, types, members, etc.

There are two types of assemblies:  project assemblies and binary assemblies.

Project assemblies are analogous to Visual Studio projects. They have a collection of source files with related compilation unit reflection data, and can reference zero to many other assemblies.  Referenced assemblies can be other project assemblies or binary assemblies.

Binary assemblies are loaded from real binary assembly instances, and reflection data for their contained type definitions is read from them.

Exactly one project assembly must be associated with each CSharpSyntaxLanguage or VBSyntaxLanguage instance as a service.  Thus as a document is changed that uses the language, its compilation unit parse results can be merged into the project assembly’s reflection data so that it is available for querying later on by the resolver.

Context Factory

The next piece that is needed is a context factory, one specific to each language.  This object takes an offset and uses language-specific rules to examine the tokens around the offset, along with the document’s AST, to figure out what is going on at the offset.

It is tasked with creating a context object that provides these details back to the factory’s caller.

Project Assembly Resolver

Each project assembly has a resolver object associated with it that can examine context information into a namespace, type definition, member definition, etc.

The resolver has to use extremely complex logic per the C# and VB specs to appropriately resolve identifiers and sequences of identifiers.

Automated IntelliPrompt Processing

At a very high level, automated IntelliPrompt features will work like this:

  1. A request is made for automated IntelliPrompt.  This could be quick info, completion, etc.
  2. The IntelliPrompt provider on the language requests a “context” object for a certain text offset that is related to where the automated IntelliPrompt will show.
  3. A context factory object answers the request and returns some general contextual information about the offset.
  4. The IntelliPrompt provider takes this context and uses the current project assembly’s resolver to figure out exactly what the context refers to.  The resolver result could be something defined in the project assembly, or could be something defined in a referenced assembly.
  5. If the resolution succeeds, the IntelliPrompt provider can populate its UI appropriately and show it.  For quick info, it would show a tooltip detailing the resolved result.  For completion lists, it would take the resolved result, and add items into its list that are accessible from the resolved result, such as members.

Next Steps

We already have a lot of code written for some of these features, but there’s still quite a way to go.  We’re continuing to plug away at it every day and should be able to show some preliminary screens soon.  We also will try and give some more details about the various new feature areas in upcoming posts.  Stay tuned!

Tags: wpf, silverlight, syntaxeditor, intelliprompt
Filed under: Actipro, Silverlight, WPF, In development, New features
Submit to DotNetKicks...
Permalink | Comments (2)

Related posts

SyntaxEditor .NET Languages Add-on's IntelliPrompt improvements  We just released build 276 of SyntaxEditor and its add-ons.  This build has more genera...SyntaxEditor .NET Languages Add-on - IntelliPrompt Parameter Info The past couple weeks, we’ve been working hard on the implementation of IntelliPrompt parameter in...SyntaxEditor .NET Languages Add-on: First Look at Quick Info We’ve been continuing to work on the WPF and Silverlight SyntaxEditor .NET Languages Add-on framew...

Comments

March 20, 2011 at 02:30  

Yaakov Davis

Cool!
You prove time and time again that you UNDERSTAND developers and their needs.

Yaakov Davis Israel

April 7, 2011 at 10:21  

trackback

Actipro Blog 2011 Q1 Posting Summary

Actipro Blog 2011 Q1 Posting Summary

The Actipro Blog - WPF, Silverlight, and WinForms Development

Comments are closed
Copyright © 1999-2012 Actipro Software LLC. All rights reserved.
Home Actipro Software | Products | Download | Contact Us