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