// Enter LINE in history void add_to_history(const string& line) { if (!gdb->isReadyWithPrompt()) return; set_history_from_line(line); if (gdb_history.size() < 2 || line != gdb_history[gdb_history.size() - 2]) { gdb_history += ""; if (gdb_history_w) { MString xm_line(line, LIST_CHARSET); int pos = gdb_history.size(); XmListAddItem(gdb_commands_w, xm_line.xmstring(), pos - 1); XmListSelectPos(gdb_commands_w, 0, False); XmListSetBottomPos(gdb_commands_w, 0); } } gdb_current_history = gdb_history.size(); set_history_from_line(""); if (gdb_history_w) { XmListSelectPos(gdb_commands_w, 0, False); XmListSetBottomPos(gdb_commands_w, 0); } gdb_new_history = false; add_to_arguments(line); update_arguments(); update_combo_boxes(line); #if WITH_READLINE add_history(line.chars()); #endif }
static void update_cd_arguments() { update_arguments(cd_dialog, cd_arguments_w, cd_arguments, last_cd_argument, cd_arguments_updated); }
static void update_make_arguments() { update_arguments(make_dialog, make_arguments_w, make_arguments, last_make_argument, make_arguments_updated); }
static void update_run_arguments() { update_arguments(run_dialog, run_arguments_w, run_arguments, last_run_argument, run_arguments_updated); }
// Load history from history file void load_history(const string& file) { if (file.empty()) return; // Delay d; std::ifstream is(file.chars()); if (is.bad()) return; static const StringArray empty; gdb_history = empty; #if WITH_READLINE clear_history(); #endif assert(gdb_history.size() == 0); // If the first command in history is a `file' command, // insert them all and disregard later ones. bool first_command = true; bool first_is_file = false; bool get_files = true; while (is) { // We accept lines up to a length of ARG_MAX (the maximum // length of the ARGV argument passed to a program) char _line[ARG_MAX + BUFSIZ]; _line[0] = '\0'; is.getline(_line, sizeof(_line)); if (_line[0] != '\0') { string line(_line); bool added = false; if (is_file_cmd(line, gdb) && line != "# reset") { if (first_command) first_is_file = true; if (get_files) { string arg = line.after(rxwhite); if (gdb->type() == PERL) { arg = arg.after(" -d "); arg = arg.before('\"'); if (arg.contains(rxwhite)) arg = arg.before(rxwhite); } add_to_recent(arg); added = first_is_file; } } else { if (first_is_file) get_files = false; if (first_command) first_is_file = false; } if (!added && line[0] != '#') { gdb_history += line; add_to_arguments(line); #if WITH_READLINE add_history(line.chars()); #endif } first_command = false; } } gdb_history += ""; gdb_current_history = gdb_history.size() - 1; gdb_new_history = true; update_arguments(); update_combo_boxes(); }