====== Message Editors ======

The **message editor** is what you use to compose a message — for e-mail, NetMail, sub-board posts, and feedback. Synchronet always has an **internal** editor (the built-in line editor) available, and the sysop can additionally install one or more **external** editors that you can pick instead. Which editor you actually get is determined by your [[user:settings|User Settings]] (the ''E'' option) plus what the sysop has made available.

External editors come in two forms:

  * **Native or MS-DOS programs** — standalone executables (run as external programs by the BBS, much like a door game)
  * **JavaScript or Baja scripts** — run in-process by Synchronet, but still presented to you as //"external editors"// alongside the native/DOS variety

===== Available editors =====

  * **Synchronet built-in line editor** (//internal//) — the ASCII line-mode editor with slash commands and a ''/?'' help menu. Always available; the fallback for any user/terminal.
  * [[:module:slyedit|SlyEdit]] (//external, JavaScript//) — full-screen
  * [[:module:fseditor|FSEditor]] (//external, JavaScript//) — full-screen

The sysop installs external editors in [[config:external_programs#message_editors|SCFG -> External Programs -> Message Editors]]. See [[howto:editor:|the editor how-to pages]] for setup of specific editors.

===== Built-in line editor =====

The internal line editor is always available regardless of terminal type. It works line-by-line: you type a line, press ''<CR>'', and move on to the next. There are two categories of editing commands.

**Slash (/) commands** are entered at the start of a new blank line (type ''/'' followed by the command name and press ''<CR>'').

**Control (Ctrl) commands** may be entered from any cursor position on the current line. Commands marked ''*'' require ANSI terminal support.

==== Slash commands ====

  * ''/?'' — display the editor help menu
  * ''/S'' — save and send the message
  * ''/ABT'' — abort (discard) the message
  * ''/CLR'' — clear (erase) all message text
  * ''/L'' — list the entire message so far
  * ''/L//x//'' — list from line //x// onward
  * ''/E'' — edit the last line
  * ''/E//x//'' — edit line //x//
  * ''/D'' — delete the last line
  * ''/D//x//'' — delete line //x//
  * ''/I'' — insert a blank line before the last line
  * ''/I//x//'' — insert a blank line before line //x//
  * ''/T'' — edit the message title (subject)
  * ''/ATTR'' — display the text attribute code list

==== Control commands ====

  * ''Ctrl-C'' — cancel (discard) the current line
  * ''Ctrl-V'' — center the current line
  * ''Ctrl-R'' — redraw the current line
  * ''Ctrl-X'' — delete the current line
  * ''Ctrl-Y'' * — delete to end of line
  * ''Ctrl-W'' — delete word to the left of the cursor
  * ''Ctrl-D'' * — delete word to the right of the cursor
  * ''Ctrl-B'' * — move cursor to beginning of line
  * ''Ctrl-E'' * — move cursor to end of line
  * ''Ctrl-N'' * — move cursor to next word
  * ''Ctrl-\'' * — move cursor to previous word
  * ''Ctrl-F'' * — move cursor forward one space
  * ''Ctrl-Bkspc'' * — move cursor back one space
  * ''Ctrl-Minus'' * — toggle insert/overwrite mode
  * ''Ctrl-A//x//'' * — set text attribute //x// (see below)

==== Text attributes (Ctrl-Ax) ====

The ''Ctrl-A'' command toggles a text attribute. Attributes take effect when the line is word-wrapped or ''<CR>'' is pressed. Type ''Ctrl-A'' then the attribute letter:

^Letter^Effect^
|''K''|Black foreground|
|''R''|Red foreground|
|''G''|Green foreground|
|''Y''|Yellow foreground|
|''B''|Blue foreground|
|''M''|Magenta foreground|
|''C''|Cyan foreground|
|''W''|White foreground|
|''0''–''7''|Background color (0=black … 7=white, matching foreground order)|
|''H''|High intensity (bold)|
|''I''|Blinking|
|''N''|Normal — reset all attributes|
|''P''|Insert a pause into the message|
|''L''|Insert a form feed into the message|

For a complete reference to Ctrl-A codes as used in ANSI text files and custom menus, see [[custom:ctrl-a_codes|Ctrl-A Codes]].

===== See Also =====

  * [[user:|User Documentation]]
  * [[custom:ctrl-a_codes|Ctrl-A Codes]] — complete Ctrl-A attribute reference
  * [[config:external_programs#message_editors|External Programs -> Message Editors (sysop config)]]
  * [[:module:slyedit|SlyEdit]] — full-screen JS editor
  * [[:module:fseditor|FSEditor]] — full-screen JS editor

{{tag>user editor line_editor}}
