void edit_main_rep::footer_eval (string s) { // s= unslash (s); // FIXME: dirty fix; should not be necessary s= tm_decode (s); string r= object_to_string (eval (s)); set_message (verbatim (r), "evaluate expression"); }
void interactive_command_rep::apply () { if ((i>0) && (s[i-1] == "#f")) return; if (i == N(p)) { object learn= null_object (); array<object> params (N(p)); for (i=N(p)-1; i>=0; i--) { params[i]= string_to_object (s[i]); if (get_type (p, i) == "password") learn= cons (cons (object (as_string (i)), object ("")), learn); else learn= cons (cons (object (as_string (i)), params[i]), learn); } call ("learn-interactive", fun, learn); string ret= object_to_string (call (fun, params)); if (ret != "" && ret != "<unspecified>" && ret != "#<unspecified>") sv->set_message (verbatim (ret), "interactive command"); } else { s[i]= string (""); string prompt= get_prompt (p, i); string type = get_type (p, i); array<string> proposals= get_proposals (p, i); win->interactive (prompt, type, proposals, s[i], this); i++; } }
void edit_interface_rep::complete_message () { int i, n= N(completions); string s= ""; string sep= translate (", "); // Might be needed for oriental languages for (i=1; i<min(n,11); i++) { int j= (completion_pos + i) % n; if (i != 1) s << sep; s << completion_prefix << completions[j]; } set_message (concat ("Other completions: ", verbatim (s)), "tab"); }
void tm_frame_rep::interactive (object fun, scheme_tree p) { ASSERT (is_tuple (p), "tuple expected"); if (N(p) == 0) { string ret= object_to_string (call (fun)); if (ret != "" && ret != "<unspecified>" && ret != "#<unspecified>") set_message (verbatim (ret), "interactive command"); } else if (get_preference ("interactive questions") == "popup" || is_aux_buffer (get_current_buffer_safe ())) { int i, n= N(p); array<string> prompts (n); for (i=0; i<n; i++) prompts[i]= get_prompt (p, i); command cb= dialogue_command (get_server(), fun, p); widget wid= inputs_list_widget (cb, prompts); for (i=0; i<n; i++) { widget input_wid= get_form_field (wid, i); set_input_type (input_wid, get_type (p, i)); array<string> proposals= get_proposals (p, i); int j, k= N(proposals); if (k > 0) set_string_input (input_wid, proposals[0]); for (j=0; j<k; j++) add_input_proposal (input_wid, proposals[j]); } string title= translate ("Enter data"); if (ends (prompts[0], "?")) title= translate ("Question"); dialogue_start (title, wid); send_keyboard_focus (get_form_field (dialogue_wid, 0)); } else { if (concrete_window () -> get_interactive_mode ()) beep (); else { command interactive_cmd= tm_new<interactive_command_rep> (this, concrete_window (), fun, p); interactive_cmd (); } } }