diff --git a/src/sbbs3/js_console.cpp b/src/sbbs3/js_console.cpp index f8bb09cd3af91253ef0f1c4c427ae607bb943629..a4ef697519afa920eb20f9c696afafd74d96b6b9 100644 --- a/src/sbbs3/js_console.cpp +++ b/src/sbbs3/js_console.cpp @@ -1059,6 +1059,7 @@ js_clear(JSContext *cx, uintN argc, jsval *arglist) { jsval *argv=JS_ARGV(cx, arglist); sbbs_t* sbbs; + bool autopause = true; jsrefcount rc; if((sbbs=(sbbs_t*)js_GetClassPrivate(cx, JS_THIS_OBJECT(cx, arglist), &js_console_class))==NULL) @@ -1066,13 +1067,21 @@ js_clear(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist, JSVAL_VOID); - if(argc) { - if(!js_set_attr(cx, sbbs, argv[0])) + uintN argn = 0; + if(argc > argn && !JSVAL_IS_BOOLEAN(argv[argn])) { + if(!js_set_attr(cx, sbbs, argv[argn])) return JS_FALSE; + argn++; + } + if(argc > argn && JSVAL_IS_BOOLEAN(argv[argn])) { + autopause = JSVAL_TO_BOOLEAN(argv[argn]); + argn++; } - rc=JS_SUSPENDREQUEST(cx); - sbbs->clearscreen(sbbs->term_supports()); + if(autopause) + sbbs->CLS; + else + sbbs->clearscreen(sbbs->term_supports()); JS_RESUMEREQUEST(cx, rc); return(JS_TRUE); } @@ -2121,7 +2130,7 @@ static jsSyncMethodSpec js_console_functions[] = { ,JSDOCSTR("print a mnemonics string, command keys highlighted with tilde (~) characters") ,310 }, - {"clear", js_clear, 0, JSTYPE_VOID, JSDOCSTR("[attribute]") + {"clear", js_clear, 0, JSTYPE_VOID, JSDOCSTR("[attribute] [,autopause=<tt>true</tt>]") ,JSDOCSTR("clear screen and home cursor, " "optionally (in v3.13b+) setting current attribute first") ,310