int edit_swap(t_global *global, t_line **line, char *prompt, char *buff) { t_line *tmp; char data; prompt = prompt; buff = buff; global = global; tmp = *line; while (tmp && !tmp->status) tmp = tmp->next; if (!tmp || (tmp && !tmp->prev)) return (EXIT_FAILURE); else { data = tmp->letter; tmp->letter = tmp->prev->letter; tmp->prev->letter = data; } termcap_delete(2, LEFT_MOVE_STRING, NULL, 0); termcap_action(1, INSERT_ON, NULL, 0); write(1, &tmp->prev->letter, 1); write(1, &tmp->letter, 1); termcap_action(1, INSERT_OFF, NULL, 0); return (EXIT_SUCCESS); }
int termcap_delete(int size, char *flag) { while ((--size + 1) > 0) { if (termcap_action(1, flag) || termcap_action(1, BACKWARD_STRING)) return (EXIT_FAILURE); } return (EXIT_SUCCESS); }
static void aff_rch(char **tab, t_global *global, t_line *line) { char **tmp; int i; i = -1; termcap_action(1, CURSER_OFF, NULL, 0); termcap_action((edit_listlen(line) - edit_cp(line)), RIGHT_MOVE_STRING, global, 1); termcap_action(1, DOWN_MOVE_STRING, NULL, 0); termcap_action(global->dom[X], LEFT_MOVE_STRING, NULL, 0); while (tab && tab[++i]) { termcap_action(1, UNDERLINE_ON, NULL, 0); if ((tmp = my_strtok(tab[i], "/", TOK_DELIM)) != NULL) { printf("%s\n", tmp[my_tablen(tmp) - 1]); my_free_tab(tmp); } termcap_action(1, UNDERLINE_OFF, NULL, 0); } my_putstr(global->prompt); edit_global(global, 1); termcap_action(edit_cp(line), RIGHT_MOVE_STRING, global, 1); termcap_action(1, CURSER_ON, NULL, 0); }
int edit_uphistory(t_global *global, t_line **line, char *prompt, char *buff) { buff = buff; prompt = prompt; if (global->hist) { if (termcap_action(1, CD_MOVE_STRING, NULL, 0) || termcap_delete(edit_cp(*line), LEFT_MOVE_STRING, global, -1)) return (EXIT_FAILURE); edit_freelist(*line); *line = edit_convertstr(global->hist->command); if (global->hist->prev) global->hist = global->hist->prev; ultim_func(*line, global); } return (EXIT_SUCCESS); }
int edit_globing(t_global *global, t_line **line, char *prompt, char *buff) { t_line *data; char *path; char *sol; int pos; buff = buff; prompt = prompt; path = edit_getword(*line, &pos); if ((sol = globing(path, global, glob_select_flag(path, pos) | GLOB_SLASH)) == NULL) return (EXIT_FAILURE); data = edit_autocomplete(sol, path, global, *line); termcap_action(edit_listlen(data), RIGHT_MOVE_STRING, global, 1); *line = edit_concatlist(*line, data, edit_cp(*line)); termcap_display(*line, global); (sol) ? free(sol) : (sol = NULL); return (EXIT_SUCCESS); }