void shell_write_char(EditState *e, int c) { char ch; if (e->interactive) { ShellState *s = e->b->priv_data; ch = c; tty_write(s, &ch, 1); } else { switch (c) { case 4: do_delete_char(e); break; case 9: do_tab(e); break; case 11: do_kill_region(e, 2); break; case 127: do_backspace(e); break; case '\r': do_return(e); break; default: text_write_char(e, c); break; } } }
t_line *move_word2(char *key, t_line *line, int i, int flag) { int end; int c; c = line->pos - ft_strlen(line->prompt); end = ft_strlen(line->cmd) + (int)ft_strlen(line->prompt); if (OPTR) { while (((line->cmd[c] != ' ' && line->cmd[c] != '\t') || i == 1) && line->pos < end) { i = 0; tputs(tgetstr("nd", NULL), 1, tputchar); line->col++; line->pos++; c++; line = check_size(line, key); } } else if (TAB) line = do_tab(line, flag); return (line); }