source code editor
A source code editor is not a text processor, instead:
- It uses an single mono space western font of one size and with uniform spacing [e.g. Courier is such a font].
- Lines have a unique height and spacing.
- There are no hidden attributes added to the stored text.
- Text attributes are used only for #syntax highlighting or similar predefined purposes.
- All text is left justified. Indentation is done with tabstops.
- Long lines are not automatically wrapped on hyphens (hyphenated word) or syllable boundaries.
- There is no document, page or paragraph formatting or layout.
Some common and desirable features are:
- adjustable tab expansion.
- right margin marker (soft).
- block selection and processing (single block).
- read-only, insert and overwrite input modes.
- rich choice of keyboard commands.
- scrollbars, mouse and mouse-wheel support.
- undo/redo support.
- clipboard support.
- line number and special marker display (gutter).
Additional useful extensions:
- syntax highlighting.
- hyperlink and block navigation.
- code completion.
- visualization of white characters.
- display and editing of embedded Unicode literals.
- macro capabilities.
- block folding.
- block movement.
- EOL adjustment.
- tab replacement.
- smart indentation.
- multiple text #windows, easy content switch, multiple display of same text source.
- persistent user settings.
- context menu.
Also desireable, but not for source code editing:
(to be categorized)
For traditional and performance reasons, a mono space font shall be used. This allows to manage the display in form of a grid, with easy mapping between screen coordinates and character indices. Most compilers only accept ASCII code, other characters can be used only in comments.
Of course support for other character sets (input and display) and input orientation (right-to-left) can be added - by persons with according knowledge and skills. I have no idea how to e.g. mix RTL string literals with LTR program code. OTOH I'm not comfortable with ASCII text myself, as are many more non-English speakers. I'll support any (every?) attempt to remove language barriers from SynEdit, but cannot contribute many ideas or techniques to this subject.