Intelligent code completion is a context-aware code completion feature in some programming environments that speeds up the process of coding applications by reducing typos and other common mistakes. Attempts to do this are usually done through auto completion popups when typing, querying parameters of functions, query hints related to syntax errors, etc. Intelligent code completion and related tools serve as documentation and disambiguation for variable names, functions and methods using reflection.
Intelligent code completion appears in many program environments, an example implementation being Visual Studio's IntelliSense. The term was originally popularized as "picklist" and some implementations still refer to it as such.
Similar to other systems, intelligent code completion is a convenient way to access descriptions of functions, particularly their parameter lists. It speeds up software development by reducing the amount of name memorization needed and keyboard input required. It also allows for less reference to external documentation as interactive documentation on many symbols (i.e. variables and functions) in the active scope appears dynamically in the form of tooltips while programming.
Intelligent code completion works using an automatically generated in-memory database of classes, variable names, and other constructs that the application being edited defines or references. The "classic" implementation of IntelliSense works by detecting marker characters such as periods, or other separator characters, depending on the language. When the user types one of these characters immediately after the name of an entity having one or more accessible members (such as contained variables or functions), IntelliSense suggests matches in a pop-up window. The user can either accept the suggestion by typing a statement completion character (Tab ↹ or ↵ Enter)—or a language-specific marker (such as the semicolon for C++), or continue typing the name. Over time, IntelliSense determines which variable or function the user most likely wants.