diff --git a/src/sbbs3/js_console.cpp b/src/sbbs3/js_console.cpp index 4fd2bd3ed2da1364d401266c2de04dc01d02efbd..1e1730085648c60e5a9d022bef5b6ee1e1cb5a4b 100644 --- a/src/sbbs3/js_console.cpp +++ b/src/sbbs3/js_console.cpp @@ -2082,6 +2082,27 @@ js_creturn(JSContext *cx, uintN argc, jsval *arglist) return(JS_TRUE); } +static JSBool +js_linefeed(JSContext *cx, uintN argc, jsval *arglist) +{ + jsval *argv=JS_ARGV(cx, arglist); + sbbs_t* sbbs; + jsrefcount rc; + int32 val=1; + + if((sbbs=(sbbs_t*)js_GetClassPrivate(cx, JS_THIS_OBJECT(cx, arglist), &js_console_class))==NULL) + return(JS_FALSE); + + JS_SET_RVAL(cx, arglist, JSVAL_VOID); + if(argc) { + if(!JS_ValueToInt32(cx, argv[0], &val)) + return JS_FALSE; + } + rc=JS_SUSPENDREQUEST(cx); + sbbs->line_feed(val); + JS_RESUMEREQUEST(cx, rc); + return(JS_TRUE); +} static JSBool js_clearkeybuf(JSContext *cx, uintN argc, jsval *arglist) @@ -2683,9 +2704,13 @@ static jsSyncMethodSpec js_console_functions[] = { ,315 }, {"creturn", js_creturn, 0, JSTYPE_VOID, JSDOCSTR("[count=1]") - ,JSDOCSTR("Send a carriage return sequence") + ,JSDOCSTR("Send carriage-return (or equivalent) character(s) - moving the cursor to the left-most screen column") ,31700 }, + {"linefeed", js_linefeed, 0, JSTYPE_VOID, JSDOCSTR("[count=1]") + ,JSDOCSTR("Send line-feed (or equivalent) character(s) - moving the cursor down one or more screen rows") + ,320 + }, {"clearkeybuffer", js_clearkeybuf, 0, JSTYPE_VOID, JSDOCSTR("") ,JSDOCSTR("Clear keyboard input buffer") ,315