source code editor: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: source code editor
| Old | New | Line | |
|---|---|---|---|
| 1 | + | A **[[Source code|source code]] editor** is an [[Editor|editor]] program particularly addressing programmers’ demands, either exclusively (cf. [[IDE]]) or as part of a general-purpose suite. | |
| 2 | + | ||
| 3 | + | ## features | |
| 4 | + | ||
| 5 | + | A source code editor is not a *text processor*, instead: | |
| 6 | + | ||
| 7 | + | - It uses an single `mono space` western font of one size and with uniform spacing \[e.g. *Courier* is such a font\]. | |
| 8 | + | - Lines have a unique height and spacing. | |
| 9 | + | - There are no hidden attributes added to the stored text. | |
| 10 | + | - Text attributes are used only for #syntax highlighting or similar predefined purposes. | |
| 11 | + | - All text is left justified. Indentation is done with tabstops. | |
| 12 | + | - Long lines are not automatically wrapped on hyphens (hyphenated word) or syllable boundaries. | |
| 13 | + | - There is no document, page or paragraph formatting or layout. | |
| 14 | + | ||
| 15 | + | Some common and desirable features are: | |
| 16 | + | ||
| 17 | + | - adjustable tab expansion. | |
| 18 | + | - right margin marker (soft). | |
| 19 | + | - block selection and processing (single block). | |
| 20 | + | - read-only, insert and overwrite input modes. | |
| 21 | + | - rich choice of keyboard commands. | |
| 22 | + | - scrollbars, mouse and mouse-wheel support. | |
| 23 | + | - undo/redo support. | |
| 24 | + | - clipboard support. | |
| 25 | + | - line number and special marker display (gutter). | |
| 26 | + | ||
| 27 | + | Additional useful extensions: | |
| 28 | + | ||
| 29 | + | - syntax highlighting. | |
| 30 | + | - bookmarks. | |
| 31 | + | - hyperlink and block navigation. | |
| 32 | + | - code completion. | |
| 33 | + | - visualization of white characters. | |
| 34 | + | - display and editing of embedded Unicode literals. | |
| 35 | + | - macro capabilities. | |
| 36 | + | - block folding. | |
| 37 | + | - block movement. | |
| 38 | + | - EOL adjustment. | |
| 39 | + | - tab replacement. | |
| 40 | + | - smart indentation. | |
| 41 | + | - multiple text #windows, easy content switch, multiple display of same text source. | |
| 42 | + | - persistent user settings. | |
| 43 | + | - context menu. | |
| 44 | + | ||
| 45 | + | Also desireable, but not for source code editing: | |
| 46 | + | ||
| 47 | + | - word wrap. | |
| 48 | + | - Unicode support. | |
| 49 | + | - hexdump of binary sources. | |
| 50 | + | ||
| 51 | + | ## Unsorted | |
| 52 | + | ||
| 53 | + | (to be categorized) | |
| 54 | + | ||
| 55 | + | ### Font | |
| 56 | + | ||
| 57 | + | 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. | |
| 58 | + | ||
| 59 | + | 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. | |
| 60 | + | ||
| 61 | + | ## See also | |
| 62 | + | ||
| 63 | + | - [[vim]] | |
| 64 | + | ||
| 65 | + | --- | |
| 66 | + | *From the Free Pascal wiki, page "source code editor", as it stood on 2021-02-01 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
