Table of Contents

SlyEdit

SlyEdit is the second full-featured full screen editor for Synchronet, written by nightfox in JavaScript. SlyEdit can run in one of two styles, to mimic the look & feel of IceEdit or DCT Edit, two popular BBS message editors from the 1990s. The style is specified by a command-line argument. SlyEdit also supports customization of options via a configuration file and colors via theme files.

SlyEdit will recognize the user's terminal size and set up the screen accordingly.

Thanks go out to all the sysops and users who have reported bugs, made suggestions, and helped test SlyEdit, including the following people:

Installation

SlyEdit is normally installed into the Synchronet exec directory. Its configuration files are normally located in the ctrl directory. See slyedit for SCFG installation instructions for SlyEdit.

SlyEdit configuration (and configuration file)

There is a menu-driven configuration script you can use to configure the options for SlyEdit. To use it, open a command prompt, change to your sbbs/exec directory, and run this command:

jsexec slyedcfg

Alternately, you can specify the .js filename extension if you want to:

jsexec slyedcfg.js

You can also edit the configuration file manually. The configuration file, SlyEdit.cfg (located in the ctrl directory), is a regular text file. It is split up into 3 sections - Behavior, Ice colors, and DCT colors. These sections are designated by [BEHAVIOR], [ICE_COLORS], and [DCT_COLORS], respectively. Each setting has a name=value format. Comments can be added on their own line starting with a ; (semicolon) character. The settings for SlyEdit.cfg are described below:

Behavior settings


Setting Description
displayEndInfoScreen Whether or not to display the info screen when SlyEdit exits. Valid values are true and false. If this option is not specified, this feature will be enabled by default.
userInputTimeout Whether or not to use an input timeout for users. Valid values are true and false. Note: The input timeout is not used for sysops. If this option is not specified, this feature will be enabled by default. This option was added in version 1.08.
inputTimeoutMS The amount of time (in milliseconds) to use for the input timeout. If this option is not specified, this option will default to 300000. This option was added in version 1.08.
reWrapQuoteLines Whether or not to re-wrap quote lines. Valid values are true and false. This feature is enabled by default. With this feature enabled, SlyEdit will re-wrap quote lines to still be complete and readable after the quote prefix character is added to the front of the quote lines. SlyEdit is able to recognize quote lines beginning with > or 2 letters and a > (such as EO>). If this feature is disabled, quote lines will simply be trimmed to make room for the quote prefix character to be added to the front. This option was added in version 1.15, replacing the older option splitLongQuoteLines.
allowColorSelection Whether or not to let the user change the text color. This option was added in version 1.80.
saveColorsAsANSI Whether or not to save message color/attribute codes as ANSI (if not, they will be saved as Synchronet attribute codes). Normally, this should be false, since Synchronet does not word-wrap messages with ANSI codes and is able to convert Synchronet attribute codes to ANSI for other BBS systems as needed. This option was added in version 1.80.
allowCrossPosting Whether or not to allow cross-posting. Valid values are true and false. This setting is enabled by default. This option was added in version 1.20.
enableTextReplacements Whether or not to enable text replacements (AKA macros). Valid values are false (disabled), true (enabled with basic/literal text matching), and regex (enabled using regular expressions).
enableTaglines This serves as a default for user settings for whether or not to enable the option to add a tagline to their message upon saving the message. This option was added in version 1.32.
tagLineFilename This specifies the name of a text file where tag lines are stored. By default, it is SlyEdit_Taglines.txt. See the “Tagline configuration file” section for more details. This option was added in version 1.32.
taglinePrefix Some text to be added to the front of a tagline that is selected from the user. The intention of this setting is to differentiate taglines from the rest of the message. This defaults to the string “... ” (3 dots and a space). If desired, this can be set to a blank string (nothing after the = ) - for instance, if you only want to put double quotes around text lines, you could set this to blank and enable the quoteTagLines setting. This option was added in version 1.33.
quoteTaglines Whether or not to put selected taglines in double quotes. This defaults to false. If you like taglines to have double quotes and no prefix, you can set this to true and set taglinePrefix to a blank string (nothing after the = ). This option was added in version 1.33.
shuffleTaglines Whether or not to shuffle (randomize) the list of taglines displayed to the user for selection. This option was added in version 1.33.
allowUserSettings Whether or not to allow users to configure their user settings. Valid values are true and false. Defaults to true. This option was added in version 1.32.
useQuoteLineInitials Whether or not to prefix quoted message lines with the previous author's initials when replying to a message. Valid values are true and false. Defaults to true. This setting serves as the default for user settings, which each user can change for themselves. If this setting is disabled, SlyEdit will simply prefix the quoted lines with “ > ”, as was done in IceEdit, DCT Edit, and other message editors of the early-mid 1990s. This setting is enabled by default.
indentQuoteLinesWithInitials When prefixing quoted messages lines with the previous author's initials, this setting specifies whether or not to indent quoted lines with a space. Valid values are true and false. Defaults to true. This setting serves as the default for user settings, which each user can change for themselves. If not specified in SlyEdit.cfg, this setting is disabled by default.
allowEditQuoteLines Whether or not to allow the user to edit quote lines. Valid values are true and false. Defaults to true. This was added in version 1.52.
allowSpellCheck Whether or not the spell check feature is allowed. Valid values are true and false; it defaults to true if not specified. You might want to disable spell check if, for instance, the spell check feature causes an “out of memory” error on your system. This option was added in version 1.71.
dictionaryFilenames A comma-separated list of filenames for dictionaries, for the spell checker feature. The filenames are in the format dictionary_<language>.txt, where <language> is the language name. For dictionaryFilenames, you can also just specify the language names if you want. The dictionary filenames will be looked for in sbbs/mods, sbbs/ctrl, and then the directory where SlyEdit.js is located. Note that the dictionary files must be sorted for proper word matching, and the words in the dictionary must be all lower-case, since SlyEdit does case-insensitive matching via all lower-cased words. This was added in version 1.64.


Ice color settings


Setting Description
ThemeFilename The name of the color theme file to use for Ice-style colors. If no theme file is specified, then default colors will be used.
menuOptClassicColors Whether or not to use the classic Ice-style menu option colors. Valid options are true and false. If this option is set to false, then new colors will be used for Ice-style menu options. If this is set to true, then the classic Ice-style menu option colors will be used. Note that if this is set to false, the color setting SelectedOptionTextColor won't be used. This setting was added in version 1.34.


DCT color settings


Setting Description
ThemeFilename The name of the color theme file to use for DCT-style colors. If no theme file is specified, then default colors will be used.


Color theme configuration files

The color theme configuration files (located in the ctrl directory) are regular text files. Each setting has a name=value format. Comments can be added on their own line starting with a ; (semicolon) character. The color settings use Synchronet's ctrl-a_codes.

The color theme files are plain text files that can be edited with a text editor. For each color setting, you can specify color attribute characters as specified in the Synchronet documentation for ctrl-a_codes. Note that you don't need control (Ctrl-A) characters for the color settings; just the attribute characters (As of SlyEdit 1.81 (2022-11-26)). A couple examples of specifying colors:
High green: gh
Normal cyan: c


The following are the default Ice-style theme files included with SlyEdit:

SlyIceColors_BlueIce.cfg (based on the original IceEdit theme)
SlyIceColors_EmeraldCity.cfg (based on the original IceEdit theme)
SlyIceColors_FieryInferno.cfg (based on the original IceEdit theme)
SlyIceColors_Fire-N-Ice.cfg (based on the original IceEdit theme)
SlyIceColors_GenericBlue.cfg (based on the original IceEdit theme)
SlyIceColors_ShadesOfGrey.cfg (based on the original IceEdit theme)
SlyIceColors_PurpleHaze.cfg (an original SlyEdit theme)

The following are the default DCT-style theme files included with SlyEdit:

SlyDCTColors_Default.cfg (based on the original DCT Edit theme)
SlyDCTColors_Midnight.cfg (based on the original DCT Edit theme)


The color settings are listed below:
Ice-style Color Theme Settings


Setting Description
QuoteLineColor The color for quoted lines in the message
BorderColor1 The first color to use for borders (for alternating border colors)
BorderColor2 The other color to use for borders (for alternating border colors)
KeyInfoLabelColor The color to use for key information labels (displayed on the bottom border)
TopInfoBkgColor The color to use for the background in the informational area at the top
TopLabelColor The color to use for informational labels in the informational area at the top
TopLabelColonColor The color to use for the colons (:) in the informational area at the top
TopToColor The color to use for the “To” name in the informational area at the top
TopFromColor The color to use for the “From” name in the informational area at the top
TopSubjectColor The color to use for the subject in the informational area at the top
TopTimeColor The color to use for the time left in the informational area at the top
TopTimeLeftColor The color to use for the time left in the informational area at the top
EditMode The color to use for the edit mode text
QuoteWinText The color for non-highlighted text in the quote window
QuoteLineHighlightColor The color for highlighted text in the quote window
QuoteWinBorderTextColor The color for the quote window borders
SelectedOptionBorderColor The color to use for the borders around text for selected multi-choice options
SelectedOptionTextColor The color to use for the text for selected multi-choice options
UnselectedOptionBorderColor The color to use for the borders around text for unselected multi-choice options
UnselectedOptionTextColor The color to use for the text for unselected multi-choice options


DCT-style Color Theme Settings


Setting Description
QuoteLineColor The color for quoted lines in the message
TopBorderColor1 The first color to use for the top borders (for alternating border colors)
TopBorderColor2 The other color to use for the top borders (for alternating border colors)
EditAreaBorderColor1 The first color to use for the edit area borders (for alternating border colors)
EditAreaBorderColor2 The other color to use for the edit area borders (for alternating border colors)
EditModeBrackets The color to use for the square brackets around the edit mode text that appears in the bottom border (the [ and ] around the “INS”/“OVR”)
EditMode The color to use for the edit mode text
TopLabelColor The color to use for the informational labels in the informational area at the top
TopLabelColonColor The color to use for the colons (:) in the informational area at the top
TopFromColor The color to use for the “From” name in the informational area at the top
TopFromFillColor The color to use for the filler dots in the “From” name in the informational area at the top
TopToColor The color to use for the “To” name in the informational area at the top
TopToFillColor The color to use for the filler dots in the “To” name in the informational area at the top
TopSubjColor The color to use for the subject in the informational area at the top
TopSubjFillColor The color to use for the filler dots in the subject in the informational area at the top
TopAreaColor The color to use for the “Area” text in the informational area at the top
TopAreaFillColor The color to use for the filler dots in the “Area” field in the informational area at the top
TopTimeColor The color to use for the “Time” text in the informational area at the top
TopTimeFillColor The color to use for the filler dots in the “Time” field in the informational area at the top
TopTimeLeftColor The color to use for the “Time left” text in the informational area at the top
TopTimeLeftFillColor The color to use for the filler dots in the “Time left” field in the informational area at the top
TopInfoBracketColor The color to use for the square brackets in the informational area at the top
QuoteWinText The color for non-highlighted text in the quote window
QuoteLineHighlightColor The color for highlighted text in the quote window
QuoteWinBorderTextColor The color to use for the text in the quote window borders
QuoteWinBorderColor The color to use for the quote window borders
BottomHelpBrackets The color to use for the brackets displayed in the line of help text at the bottom
BottomHelpKeys The color to use for the key names written in the line of help text at the bottom
BottomHelpFill The color to use for the filler dots in the line of help text at the bottom
BottomHelpKeyDesc The color to use for the key descriptions in the line of help text at the bottom
TextBoxBorder The color to use for text box borders (i.e., the abort confirmation prompt)
TextBoxBorderText The color to use for text in the borders of text boxes (i.e., the abort confirmation prompt)
TextBoxInnerText The color to use for text inside text boxes
YesNoBoxBrackets The color to use for the square brackets used for yes/no confirmation prompt boxes
YesNoBoxYesNoText The color to use for the actual “Yes”/“No” text in yes/no confirmation prompt boxes
SelectedMenuLabelBorders The color to use for the border characters for the labels of currently active drop-down menus
SelectedMenuLabelText The color to use for the text for the labels of currently active drop-down menus
UnselectedMenuLabelText The color to use for the text for the labels of inactive drop-down menus
MenuBorders The color to use for the drop-down menu borders
MenuSelectedItems The color to use for selected items on the drop-down menus
MenuUnselectedItems The color to use for unselected items on the drop-down menus
MenuHotkeys The color to use for the hotkey characters in the menu items on the drop-down menus


Common colors (appearing in both Ice and DCT color theme files)


Setting Description
listBoxBorder The color to use for the borders of list boxes (such as the cross-post area selection box and text replacement list box). Prior to version 1.29, this option was called crossPostBorder.
listBoxBorderText The color to use for the text in the borders of list boxes (such as the cross-post area selection box and text replacement list box). Prior to version 1.29, this option was called crossPostBorderText.
crossPostMsgAreaNum The color to use for the message group/sub-board numbers in the cross-post area selection box. This option was added in version 1.20.
crossPostMsgAreaNumHighlight The color to use for the highlighted (lightbar) message group/sub-board numbers in the cross-post area selection box. This option was added in version 1.20.
crossPostMsgAreaDesc The color to use for the message group/sub-board descriptions in the cross-post area selection box. This option was added in version 1.20.
crossPostMsgAreaDescHighlight The color to use for the highlighted (lightbar) message group/sub-board descriptions in the cross-post area selection box. This option was added in version 1.20.
crossPostChk The color to use for the checkmarks for the enabled message sub-boards in the cross-post area selection box. This option was added in version 1.20.
crossPostChkHighlight The color to use for the highlighted (lightbar) checkmarks for the enabled message sub-boards in the cross-post area selection box. This option was added in version 1.20.
crossPostMsgGrpMark The color to use for the current message group marker character in the cross-post area selection box. This option was added in version 1.20.
crossPostMsgGrpMarkHighlight The color to use for the highlighted (lightbar) current message group marker character in the cross-post area selection box. This option was added in version 1.20.
msgWillBePostedHdr The color to use for the text “Your message will be posted into the following area(s)” text when exiting SlyEdit. This option was added in version 1.28.
msgPostedGrpHdr The color to use for the group name header when listing the message's posted message areas when exiting SlyEdit. This option was added in version 1.28.
msgPostedSubBoardName The color to use for the message sub-boards when listing the message's posted message areas when exiting SlyEdit. This option was added in version 1.28.
msgPostedOriginalAreaText The color to use for the text “(original message area)” when listing the message's posted message areas when exiting SlyEdit. This option was added in version 1.28.
msgHasBeenSavedText The color to use for the text “The message has been saved.” when exiting SlyEdit. This option was added in version 1.28.
msgAbortedText The color to use for the Message Aborted text when exiting SlyEdit. This option was added in version 1.28.
emptyMsgNotSentText The color to use for the Message Not Sent text when exiting SlyEdit. This option was added in version 1.28.
genMsgErrorText The color to use for general message error text when exiting SlyEdit. This option was added in version 1.28.
listBoxItemText The color to use for text appearing in list boxes (such as the list of text replacements and the list of tag lines)
listBoxItemHighlight The color to use for the currently selected item in list boxes (such as the list of text replacements and the list of tag lines). This option was added in version 1.32.

Key Bindings (hotkeys)

These are the key bindings for SlyEdit:

Edit Mode

Key Description
Ctrl-Z Save the message
Ctrl-A Abort the message
Ctrl-Q Quote the previous message (for use when replying to a message - Opens the quote line selection window)
Ctrl-S Change subject (supported with Synchronet 3.17c development builds from July 21, 2019 or newer)
Ctrl-D Delete a line
Ctrl-K Select/set text color
Ctrl-G Input graphic character
Ctrl-L Help screen: List command keys
Ctrl-R Spell checker
Ctrl-C Cross-post message area selection
Ctrl-T List the text replacements configured for SlyEdit
Ctrl-U Configure user settings
Ctrl-W Word/text search
Ctrl-N Find the next occurrence of text (text search)
Ctrl-O Import a text file from the BBS machine (sysop only)
Ctrl-X Export message to a file on the BBS machine (sysop only)
ESC Toggle command menu
INS (Insert) or Ctrl-I Toggle insert/overwrite mode
Home Move cursor to the beginning of the line
End Move cursor to the end of the line
Arrow keys Navigate (set cursor position) in the message
PageUp Move up one page in the message
PageDown Move down one page in the message

Quote Mode

Key Description
Up arrow Scroll up one line
Down arrow Scroll down one line
Enter Select & insert quote line into message
HOME Go to the first quote line on the current page
END Go to the last quote line on the current page
PageUp Page up
PageDown Page down
F Go to the first page of quote lines
L Go to the last page of quote lines
Ctrl-Q or ESC Close the quote line window (quit out of quote mode)

Cross-post message area selection

Key Description
Up arrow Scroll up
Down arrow Scroll down
HOME Go to the first line on the current page
END Go to the last line on the current page
PageUp Previous page of message groups/sub-boards
PageDown Next page of message groups/sub-boards
F First page of message groups/sub-boards
L Last page of message groups/sub-boards
Enter List sub-boards in selected message group, or toggle message sub-board for cross-posting
Number input Specify the message group/sub-board number
Ctrl-C or ESC Quit out of sub-board selection (and close the box when in the message group list)
? Show cross-posting help

Note: It takes a couple of seconds to recognize the ESC key, so when using the ESC key, there will be a noticeable delay before the action takes place.

Tagline configuration file

The tagline configuration file (by default, SlyEdit_Taglines.txt) can be placed in one of the following directories (searched in this order):
- The mods directory
- The ctrl directory
- The same directory as SlyEdit's .js files

The tagline configuration file is a plain text file containing a list of taglines, one on each line. SlyEdit includes its own tagline file, but you are free to edit it or use another tagline file altogether. It is recommended that taglines are limited to 78 characters in order to fit in the tagline window in SlyEdit. Taglines of any length will be used; however, only the first 78 characters will appear in the tagline selection box in SlyEdit.

User also have the option to use a random tagline. Taglines more than 78 characters in length are thus still useful for that purpose.


Slash Commands

SlyEdit also supports the following slash commands, to be used on a blank line by themselves (they are not case-sensitive):

Command Description
/S Save the message
/A Abort the message
/Q Quote the previous message (when replying)
/C Cross-post message area selection
/T List the text replacements configured for SlyEdit
/U Configure user settings
/UPLOAD (or /UL) Upload a message contained in a text file


UTF-8 support

As of version 1.88b (2024-02-11), SlyEdit is able to accept UTF-8 character/text input.


Digital Distortion Message Lister support

If you use Digital Distortion Message Lister, you must update the message lister to version 1.36 or newer in order for it to work properly with SlyEdit 1.27. The reason is due to information that the message lister provides to SlyEdit. When replying to a message, SlyEdit is able to retrieve author initials when it quotes messages. Normally, SlyEdit gets the information it needs about messages directly from Synchronet, but when using the message lister, that information must be provided by the message lister, as the message lister can't change the information that Synchronet provides. Starting with version 1.36 of Digital Distortion Message Lister, the message lister always writes the message number to its drop file (rather than either the message offset or message number).

Version table:

SlyEdit Digital Distortion message Lister
1.27+ 1.36+
1.26 1.35
1.25 1.34
1.18 1.31


Spell checker and dictionaries

Since version 1.64, SlyEdit has a spell check feature. Spell check can be started by the user with the Ctrl-R hotkey, or by the Edit > Spell Checker option in the DCT-style ESC menu (only available when in DCT mode). For spell check, SlyEdit will check each word to see if it exists in the configured dictionary/dictionaries, and if not, it will prompt the user for a corrected version of the word. The sysop can configure one or multiple dictionaries in SlyEdit.cfg with the dictionaryFilenames option. Dictionary files need to be in the format dictionary_<languageName>.txt, where <languageName> is the name of the language. Also, ideally, the language names should follow standard language tags, as in “en-us” for English (US), etc. See these web pages for more information: https://en.wikipedia.org/wiki/Language_localisation http://www.lingoes.net/en/translator/langcode.htm Also, the dictionary filenames will be parsed and the language name will be used in the menu of dictionaries in the user options - The user is able to enable/disable the configured dictionaries for their own use for the spell checker.

For the dictionaryFilenames option in SlyEdit.cfg, you can specify a comma-separated list of dictionary filenames. The dictionary filenames are in the format dictionary_<languageName>.txt, where <language> is the language name. In this list, the filenames can be in that format, or just <languageName>.txt, or just <languageName>. You can leave the setting blank to use all dictionary files that exist on the system. Language names are meant to be in ISO standard language and localization tags - For example, en-US specifies English with spellings for the US. Also, for dictionaries with localized spellings, the filenames can have a “-supplemental” at the end of their name before the extension if they only contain words that are unique to a particular region that don't exist for all regions. Also, dictionary filenames can just contain the language without a localization if they contain words common to all regions. For example:

Filename Description
dictionary_en.txt General English dictionary with spellings common to all regions
dictionary_en-US-supplemental.txt English word spellings only specific to the US
dictionary_en-US.txt Full English US dictionary

SlyEdit will search for the dictionary files in the following directories, in this order:

  1. sbbs/mods
  2. sbbs/ctrl
  3. SlyEdit's own directory

Dictionary files must be sorted in order for word matching to work properly (SlyEdit uses a binary search for quick word matching, which requires the words to be sorted).

See Also