void refresh_stdout(char *g_cmd) { int old_pos; old_pos = g_cursor_pos; save_cursor_pos(); while (g_cursor_pos >= 1 && (g_cmd[g_cursor_pos] || g_cmd[g_cursor_pos - 1])) move_cursor_left(); delete_x_characters(ft_strlen(g_cmd)); write(1, " ", 1); write(1, g_cmd, ft_strlen(g_cmd)); g_cursor_pos = old_pos - 1; set_saved_cursor(); move_cursor_right(); }
terminal::terminal(){ // save old terminal settings tcgetattr( STDIN_FILENO, &oldt); newt = oldt; // set new terminal settings newt.c_lflag &= ~(ICANON | ECHO); tcsetattr( STDIN_FILENO, TCSANOW, &newt); // print as many newlines as number_of_result_lines to // enable moving the cursor up and down. for(int i=0; i < options.number_of_result_lines; ++i){ fprintf(stderr,"\n"); } cursor_up(options.number_of_result_lines); save_cursor_pos(); restore_cursor_pos(); }
void refresh_stdout_del(char *g_cmd) { int old_pos; old_pos = g_cursor_pos; save_cursor_pos(); while (g_cursor_pos >= 1) move_cursor_left(); if (!ft_strlen(g_cmd)) delete_x_characters(1); else delete_x_characters(ft_strlen(g_cmd)); ft_putstr_fd(g_cmd, 1); g_cursor_pos = old_pos; set_saved_cursor(); move_cursor_left(); if (!ft_strlen(g_cmd)) g_cursor_pos = 0; }
void refresh_stdout_selected(char *g_cmd) { int old_pos; int i; i = 0; old_pos = g_cursor_pos; save_cursor_pos(); while (g_cursor_pos >= 1 && (g_cmd[g_cursor_pos] || g_cmd[g_cursor_pos - 1])) move_cursor_left(); delete_x_characters(ft_strlen(g_cmd)); while (g_cmd[i]) { if (g_selected_position[g_cursor_pos]) ft_putstr(PRINT_SELECTED); ft_putchar(g_cmd[i]); ft_putstr(RESET); ft_putstr(DEFAULT_COLOR); g_cursor_pos++; i++; } }