/* Stores view port parameters (top line, current position). */ static void save_view_port(void) { if(prev_mode != MENU_MODE) { input_stat.old_top = curr_view->top_line; input_stat.old_pos = curr_view->list_pos; } else { save_menu_pos(); } }
static void prepare_cmdline_mode(const wchar_t *prompt, const wchar_t *cmd, complete_cmd_func complete) { line_width = getmaxx(stdscr); prev_mode = *mode; *mode = CMDLINE_MODE; input_stat.line = NULL; input_stat.index = wcslen(cmd); input_stat.curs_pos = 0; input_stat.len = input_stat.index; input_stat.cmd_pos = -1; input_stat.complete_continue = 0; input_stat.history_search = HIST_NONE; input_stat.line_buf = NULL; input_stat.reverse_completion = 0; input_stat.complete = complete; input_stat.search_mode = 0; if(sub_mode == SEARCH_FORWARD_SUBMODE || sub_mode == VSEARCH_FORWARD_SUBMODE || sub_mode == MENU_SEARCH_FORWARD_SUBMODE || sub_mode == SEARCH_BACKWARD_SUBMODE || sub_mode == VSEARCH_BACKWARD_SUBMODE || sub_mode == MENU_SEARCH_BACKWARD_SUBMODE) { input_stat.search_mode = 1; if(prev_mode != MENU_MODE) { input_stat.old_top = curr_view->top_line; input_stat.old_pos = curr_view->list_pos; } else { save_menu_pos(); } } wcsncpy(input_stat.prompt, prompt, ARRAY_LEN(input_stat.prompt)); input_stat.prompt_wid = input_stat.curs_pos = wcslen(input_stat.prompt); if(input_stat.len != 0) { input_stat.line = malloc(sizeof(wchar_t)*(input_stat.len + 1)); if(input_stat.line == NULL) { input_stat.index = 0; input_stat.len = 0; } else { wcscpy(input_stat.line, cmd); input_stat.curs_pos += input_stat.len; } } curs_set(TRUE); update_cmdline_size(); update_cmdline_text(); curr_stats.save_msg = 1; if(prev_mode == NORMAL_MODE) init_commands(); }