Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, libarchive.org for more info) to build successfully.

Commit 578a5d75 authored by nightfox's avatar nightfox

Version 1.69: Updated to only use console.inkey() for user input and not use...

Version 1.69: Updated to only use console.inkey() for user input and not use console.getkey() anymore.  Also, SlyEdit will now write the editor style (ICE or DCT) to result.ed at the end when a message is saved.  Also, when editing a message, if the cursor is at the end of the last line and the user presses the DEL key, then treat it as a backspace.  Some terminals send a delete for backspace, particularly with keyboards that have a delete key but no backspace key.
parent 4dfdb036
......@@ -80,6 +80,19 @@
* offline readers etc.
* 2019-08-09 Eric Oulashin Version 1.68
* Releasing this version
* 2019-08-14 Eric Oulashin Version 1.69
* Updated to only use console.inkey() for user input
* and not use console.getkey() anymore.
* The change was made in the getUserKey() function
* in SlyEdit_Misc.js.
* Also, SlyEdit will now write the editor style
* (ICE or DCT) to result.ed at the end when a message
* is saved. Also, when editing a message, if the cursor
* is at the end of the last line and the user presses
* the DEL key, then treat it as a backspace. Some
* terminals send a delete for backspace, particularly
* with keyboards that have a delete key but no backspace
* key.
*/
/* Command-line arguments:
......@@ -176,8 +189,8 @@ if (console.screen_columns < 80)
}
// Constants
const EDITOR_VERSION = "1.68";
const EDITOR_VER_DATE = "2019-08-09";
const EDITOR_VERSION = "1.69";
const EDITOR_VER_DATE = "2019-08-14";
// Program variables
......@@ -615,7 +628,7 @@ if ((exitCode == 0) && (gEditLines.length > 0))
{
dropFile.writeln("0");
dropFile.writeln(gMsgSubj);
dropFile.writeln(EDITOR_PROGRAM_NAME + " " + EDITOR_VERSION + " (" + EDITOR_VER_DATE + ")");
dropFile.writeln(EDITOR_PROGRAM_NAME + " " + EDITOR_VERSION + " (" + EDITOR_VER_DATE + ") (" + EDITOR_STYLE + " style)");
dropFile.close();
}
......@@ -1042,6 +1055,15 @@ function doEditLoop()
while (continueOn)
{
userInput = getKeyWithESCChars(K_NOCRLF|K_NOSPIN, gConfigSettings);
// If the cursor is at the end of the last line and the user
// pressed the DEL key, then treat it as a backspace. Some
// terminals send a delete for backspace, particularly with
// keyboards that have a delete key but no backspace key.
var atEndOfLastLine = ((gEditLinesIndex == gEditLines.length - 1) && (gTextLineIndex == gEditLines[gEditLinesIndex].text.length));
if (atEndOfLastLine && (userInput == KEY_DEL))
userInput = BACKSPACE;
if (!bbs.online)
{
var logStr = EDITOR_PROGRAM_NAME + ": User is no longer online (" + user.alias + " on node " + bbs.node_num + ")";
......@@ -1068,7 +1090,7 @@ function doEditLoop()
// If gEditLines currently has 1 less line than we need,
// then add a new line to gEditLines.
if (gEditLines.length == gEditLinesIndex)
gEditLines.push(new TextLine());
gEditLines.push(new TextLine());
// Take the appropriate action for the key pressed.
switch (userInput)
......
......@@ -3895,33 +3895,27 @@ function firstLetterIsUppercase(pString)
// or console.inkey()).
function getUserKey(pMode, pCfgObj)
{
var defaultTimeoutMS = 300000;
var userKey = "";
var userKey = "";
var inputTimeoutMS = 300000;
if (typeof(pCfgObj) == "object")
{
// If the user is a sysop, don't use an input timeout.
if ((typeof(pCfgObj.userIsSysop) == "boolean") && pCfgObj.userIsSysop)
userKey = console.getkey(pMode);
else if (typeof(pCfgObj.userInputTimeout) == "number")
userKey = console.inkey(pMode, pCfgObj.inputTimeoutMS);
else
userKey = console.inkey(pMode, defaultTimeoutMS);
}
else if (typeof(pCfgObj) == "boolean")
{
// pCfgObj is a boolean that specifies whether or not the user is a sysop.
// If so, then use console.getkey(). If the user isn't a sysop, use a
// timeout of 5 minutes.
if (pCfgObj)
userKey = console.getkey(pMode);
else
userKey = console.inkey(pMode, defaultTimeoutMS);
}
else // pCfgObj is not a known type, so use the default input timeout.
userKey = console.inkey(pMode, defaultTimeoutMS);
// If the user is a sysop, then use a much higher timeout.
if (typeof(pCfgObj) == "object")
{
if ((typeof(pCfgObj.userIsSysop) == "boolean") && pCfgObj.userIsSysop)
inputTimeoutMS = 999999;
else if (typeof(pCfgObj.userInputTimeout) == "number")
inputTimeoutMS = pCfgObj.inputTimeoutMS;
}
else if (typeof(pCfgObj) == "boolean")
{
if (pCfgObj)
inputTimeoutMS = 999999;
}
// Input a key from the user
userKey = console.inkey(pMode, inputTimeoutMS);
return userKey;
return userKey;
}
// Gets a string of user input such that each character is validated against a
......@@ -5017,7 +5011,7 @@ function displayDebugText(pDebugX, pDebugY, pText, pOriginalPos, pClearDebugLine
{
console.gotoxy(pDebugX, pDebugY);
if (pClearDebugLineFirst)
console.clearline();
console.clearline();
// Output the text
console.print(pText);
if (pPauseAfter)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment