The primary interface to CSS is via the command shell, which provides a prompt and allows the user to enter commands, etc. This shell has some useful features, including editing, history, and completion, all of which are provided by the GNU readline library.
The current line can be edited using a subset of the emacs editing commands, including Ctrl-f, Ctrl-b, Ctrl-a, Ctrl-e, etc.
A running history of everything that has been entered is kept, and can be accessed by using the Ctrl-p and Ctrl-n commands (previous and next, respectively). This makes it easy to repeat previous commands, especially when combined with the editing facility.
Completion occurs when the TAB key is pressed after some partially-entered expression, causing the shell to suggest a completion to the expression based on the part that has already been entered. If there is more than one possible completion, then the shell will beep, and pressing TAB a second time will produce a list of all of the possible completions. Completion is based on all of the keywords currently defined (including types, commands, functions, user-defined variables and functions, etc), except in the following two cases: If the expression starts with a ".", it is interpreted as a path, and the next segment of the path to either an object or a member function of an object is suggested by the shell. If the expression contains a scoping operator "::", then the completion will interpret whatever is in front of the scoping operator as a type name, and will suggest the possible members, subtypes, etc. of that type as completions.