@verb #1619:"call_button" this none this rxdo #833 @program #1619:"call_button" this none this "this:call_button(module, button, ?noisy)" "Similar to :call, but allows module == this and will only call verbs beginning with 'o_', and call them with no arguments. Special error handling is provided if this.debug is true: if the called verb raises an error, this.crashdata will be set to contain a helpful message; furthur, if noisy is supplied and true an error message will be printed." {module, button, ?noisy = 0} = args "This code calls semi-arbitrary verbs. The following acts as a perm check (if I'm not a wizard), or as neutralization, if I am:" set_task_perms(caller_perms()) module in {this, @this.modules} || raise(E_INVARG) if (this.debug) return module:("o_" + button)() endif try return module:("o_" + button)() except x (ANY) {code, message, value, traceback} = x this.crashdata = {this:osname() + ": an malfunction has occurred. Please reset this device.", "While calling " + module:nn() + ":" + verb + "(" + $su:from_value(args) + "):", @$code_utils:tb(traceback, message, code)} "Tell the user an error message; signal to parent to :look_self()." noisy && $msg:mtell("error") return 1 endtry .