====== Full Screen Editor ======

''fseditor.js'' is a Full Screen Editor (FSE) written by [[person:Deuce]] in JavaScript((the first of its kind)) for the Synchronet [[server:Terminal]] Server.

===== Download =====

The newest version of fseditor can always be download from
[[https://gitlab.synchro.net/main/sbbs/-/blob/master/exec/fseditor.js|Git]]

===== Install =====
''fseditor.js'' is normally installed into the Synchronet ''[[dir:exec]]'' directory.

===== Configure =====

To add ''fseditor.js'' to your FSE list, use the following settings in [[util:SCFG]]->External Programs->External Editors:
  ╔════════════════════════════════════════════════════════════════════╗
  ║                       Deuce's FSEditor Editor                      ║
  ╠════════════════════════════════════════════════════════════════════╣
  ║ │Name                       Deuce's FSEditor                       ║
  ║ │Internal Code              FSEDITOR                               ║
  ║ │Command Line               ?fseditor %f                           ║
  ║ │Access Requirements        ANSI                                   ║
  ║ │I/O Method                 Socket                                 ║
  ║ │Native Executable/Script   Yes                                    ║
  ║ │Use Shell or New Context   No                                     ║
  ║ │Record Terminal Width      Yes                                    ║
  ║ │Word-wrap Quoted Text      Yes, for terminal width                ║
  ║ │Automatically Quoted Text  None                                   ║
  ║ │Editor Information Files   WWIV EDITOR.INF/RESULT.ED              ║
  ║ │Expand Line Feeds to CRLF  Yes                                    ║
  ║ │Handle Soft CRs            N/A                                    ║
  ║ │Strip FidoNet Kludges      No                                     ║
  ║ │Support UTF-8 Encoding     Yes                                    ║
  ║ │BBS Drop File Type         None                                   ║
  ╚════════════════════════════════════════════════════════════════════╝

==== Command Line ====

The first argument to fseditor.js must be the path/name of the file to edit (specified as ''%f'' in SCFG).

Optionally, ''-utf8'' may be passed as a secondary argument to enable UTF-8 message support.

==== modopts.ini ==== 

The ''[[dir:ctrl]]/[[config:modopts.ini]]'' file may contain an ''[fseditor]'' section with the following keys:

^ Key             ^ Default  ^ Description ^
| utf8_support    | false    | Enable UTF-8 message support (experimental at this time) |
| default_tabstop | 8        | Specify the default interval of tab-stops (can be overridden and saved per-user) |
| soft_cr         | false    | Soft carriage-returns are included in saved files |
===== Key Bindings =====

The key bindings for using ''fseditor.js'' are:

==== Edit Mode ====

In edit mode, the following CTRL keys function:
^CTRL-Key  ^Action^
|@   |Colour/Attribute (Same as CTRL-A)|
|A   |Colour/Attribute|
|B   |Home cursor (Beginning of line)|
|C   |Center line in message|
|E   |End of line|
|F   |Right one character|
|G   |Enter Graphic Char|
|H   |Backspace|
|I   |Tab|
|J   |Down one line|
|K   |List keybindings|
|L   |Insert line|
|M   |Carriage Return|
|N   |Page Down|
|P   |Page Up|
|Q   |Quick abort|
|R   |Redraw screen|
|S   |Edit Subject|
|T   |Change Tab Size|
|U   |Quote|
|V   |Toggle insert mode|
|W   |Delete word backwards|
|Y   |Delete Line|
|Z   |Save and exit|
|%%\%%   |Edit Subject (Same as Xon CTRL-S)|
|]   |Move left|
|%%^%%   |Move up|
|_   |Quick abort (Same as Xoff CTRL-Q)|


==== Quote Mode ====

^Key    ^Action^
|CTRL-B |Home (Top of document)|
|CTRL-E |End of document|
|CTRL-J |Down one line|
|CTRL-K |List keybindings|
|CTRL-N |Page Down|
|CTRL-P |Page Up|
|CTRL-Q |Quick abort... FLOW CONTROL CHAR!!!|
|CTRL-R |Redraw screen|
|CTRL-%%^%% |Up one line|
|CTRL-_ |Quick abort (Same as CTRL-Q)|
|SPACE  |Toggle sepection of current line|
|ENTER  |Pastes selected lines into message|
|A      |Select All|
|B      |Enter block mode|
|N      |Unselect all ("Select None")|


==== A few notes on keybindings ====
I am not completely opposed to changing some keybindings.  However, the current
ones fall into three catagories:
  - "Keepers" ones that I like and would need a very good reason to change.
  - "Lukewarm" ones I understand but don't particularily like very much.
  - "Changers" ones I would change in a heartbeat if I had an alternative.

The breakdown is as follows:
  * Keepers:  ''ABCEFGHIJLMRWZ''
  * Lukewarm: ''KSTVY\]''
  * Changers: ''@NPQU_''

The following CTRL keys are currently unused: ''DOX[''

CTRL-Q and CTRL-S I do *not* want to use without alternates as they are the
Xon/Xoff chars used in flow control and are sometimes impossible to send from
a terminal.

I am open to suggestions.


===== See Also =====
  * [[:person:Deuce]]
  * [[:howto:editor:|How To Install Message Editors]]
  * [[:module:|Modules]]

{{tag>javascript editor}}