svoid sfBot_p { setConsoleInputIfEmpty("sf"); callStaticAnswerMethod("sf"); if (!headless()) swing { JButton btn; showControls(jcenteredLine(btn = jbutton("Add new standard function", r-thread { sfBot_doIt() }))); btn.requestFocus(); } } static S sfBot_answer(S s) { new Matches m; if "car" ret carBot_addStandardFunction(); if "car *" { S id = m.unq(0); if (l(id) == 4) id = "102" + id; carBot_addStandardFunction(id); ret "OK"; } if "synonym * *|syn * *" ret makeSFSynonym($1, $2); if "sf *" { S id = m.unq(0); if (l(id) == 4) id = "103" + id; addStdFunctionWithAnimation(id); ret "OK"; } if "sc *" { S id = m.unq(0); if (l(id) == 4) id = "103" + id; addStdClassWithAnimation(id); ret "OK"; } if "sf" { sfBot_doIt(); ret "OK"; } if "sc" { addStdClassWithAnimation(); ret "OK"; } if "rev *|swap *" ret sf_addReversedArguments($1); if "final *" ret sf_makeArgumentsFinal($1); null; } svoid sfBot_doIt() { addStdFunctionWithAnimation(); }