Udostępnij za pośrednictwem


How to: Add Member Completion

Statement completion allows the user to select a property or method from a list after typing a member operator, such as -> in C++.

This topic is based on the Visual Studio Language Package solution, which provides a basic implementation of the Babel package. For more information about creating one of these solutions, see Walkthrough: Creating a Language Service Package.

Methods of the Babel Service

The startName and qualifyName methods specify how a member is selected, The startName method is called whenever an identifier is used in an expression. The qualifyName method is called for every identifier that is selected.

The following example shows how both the startName and qualifyName methods are called in the Identifier rule in a parser source file. Note how the qualifyName method is called with the '.' character plus the following identifier: the qualifyName method assumes that the preceding identifier was set by a call to the startName method.

Identifier
    : IDENTIFIER                 { g_service->startName($1); }
    | Identifier '.' IDENTIFIER  { g_service->qualifyName( $2, $3 ); }
    | Identifier '.' error       { g_service->qualifyName( $2, $2 ); }
    ;

Adding Member List Triggers

Member completion is caused by the TriggerMemberSelect trigger(see TriggerClass Enumeration for more information on triggers). Tokens are assigned triggers in the Service::getTokenInfo methodYou can add a token '.' with member completion by adding the following member to the tokenInfoTable array:

{ '.',  ClassText,  "'.'", CharDelimiter, TriggerMemberSelect }   

Change History

Date

History

Reason

July 2008

Rewrote and refactored project.

Content bug fix.