Unlike a TextEditor, in which the user navigates and edits in terms of plain text, a LanguageAwareEditor performs navigation and editing in terms of the programming language being edited. This includes both ReFactoring and transformations that change, rather than preserve, behaviour. Example editing actions: * Wrap expression in call to function ''f'' (where ''f'' is found by AutoCompletion) * Unwrap an expression, removing one or more function-calls from around the expression * Convert expression to function parameter. A LanguageAwareEditor is an essential component of modern IntegratedDevelopmentEnvironment''''s cf. RefactoringBrowser, IntentionalProgramming