IntelliSense

From Wikipedia, the free encyclopedia

Screenshot of IntelliSense in Visual C++
Screenshot of IntelliSense in Visual C++

IntelliSenseā„¢ is a form of automated autocompletion popularized by the Microsoft Visual Studio Integrated Development Environment. It also serves as documentation and disambiguation for variable names, functions and methods using metadata reflection.

Contents

Using IntelliSense is a convenient way to access descriptions of functions, particularly their parameter lists. It speeds up software development by reducing the amount of keyboard input required. It also allows less reference to external documentation as documentation on many functions appears with the function name.

Murach's C# 2005 says:

To make it easier for you to refer to the members of an object or class, visual Studio's IntelliSense feature displays a list of the members that are available for that class or object after you type a class or object name and a period. (Page 56)

The feature works by accessing an automatically generated in-memory database of classes, variable names and other constructs defined in or referenced by the application being edited. The "classic" implementation of IntelliSense works by detecting marker characters such as a period, which depend on the language used. As the user types one of these marker characters immediately after the name of an entity that has one or more accessible members (such as contained variables or functions), IntelliSense starts suggesting matches with a pop-up window. The user can either accept the suggestion by typing a statement completion character ( or or a language-specific marker such as the semicolon for C++) or continue typing the name. Eventually IntelliSense will determine exactly which variable or function the user desires, given enough information. The feature also allows the user to select from a number of overloaded functions in the case of languages that support object oriented programming. IntelliSense can also display a short description of a function in the pop-up window (this feature depends on the amount of documentation contained in the source code).

This feature was included in VB 5.0 and is found in all the latest versions of Visual Studio. IntelliSense supports C++, C#, J#, Visual Basic, XML, HTML and XSLT among others. Other Microsoft products that incorporate IntelliSense include FrontPage (in code view), the VBA IDEs in the Microsoft Office products and many others.

Similar functionality has appeared in other source code editors. For example, Vim (as of version 7.0) supports omnicompletion: a form of programmable autocompletion similar to IntelliSense. Many editors and IDEs that incorporate such functionality utilize ctags to create their context word lists (UltraEdit is one of them). Others like the Borland and Sun Microsystems IDEs use internal reflection databases.

Assume an application has a class Foo with some member functions:

class Foo {
  public:
    void bar();
    void foo_bar(char c, int n);
};

When the developer references this class in source code, e.g.:

Foo foo;
foo.

as soon as the user types the period after foo, IntelliSense automatically lists all the available member functions (i.e. bar() and foo_bar()). The user can then select one by using the arrow keys and hitting a completion character when the correct member function is highlighted. When available, IntelliSense displays a short description of the member function as given in the source code documentation.

IntelliSense goes further by indicating the required parameters in another pop-up window as the user fills in the parameters. As the user types a variable name, the feature also makes suggestions to complete the variable as they are typed. IntelliSense continues to show parameters, highlighting the pertinent one, as the user types.

The user can "force" IntelliSense to show its pop-up list without context by using +. In Visual Studio this displays the entire application domain object model available to the developer.

IntelliSense was first introduced as a feature of a mainstream Microsoft product in 1996, with the Visual Basic 5.0 Control Creation Edition, which was essentially a publicly-available prototype for Visual Basic 5.0. Although initially the primary "test bed" for the technology was the Visual Basic IDE, IntelliSense was quickly incorporated into Visual FoxPro and Visual C++ in the Visual Studio 97 timeframe (one revision after it was first seen in Visual Basic). Because it was based on the introspection capabilities of COM, the Visual Basic versions of IntelliSense were always more robust and complete than the 5.0 and 6.0 (97 and 98 in the Visual Studio naming sequence) versions of Visual C++, which did not have the benefit of being entirely based on COM. These shortcomings (criticized by many VC++ developers since the 97 release) have been largely corrected in the post-.NET product lines. For example, one of the most requested capabilities missing from the pre-.NET products was support for templates, which is now fully implemented.

IntelliSense has entered a new phase of development with the unified Visual Studio.NET environment first released in 2001, augmented by the more powerful introspection and code documentation capabilities provided by the .NET framework. As of Visual Studio 2005, IntelliSense is now activated by default when the user begins to type, instead of requiring marker characters (although this behavior can be turned off). The IDE has the capability of inferring a greater amount of context based on what the developer is typing, to the point that basic language constructs such as for and while are also included in the choice list.

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.