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