Lines Matching refs:el

47 #include "el.h"
446 #define tty_getty(el, td) tcgetattr((el)->el_infd, (td))
447 #define tty_setty(el, td) tcsetattr((el)->el_infd, TCSADRAIN, (td))
466 tty_setup(EditLine *el)
470 if (el->el_flags & EDIT_DISABLED)
473 if (tty_getty(el, &el->el_tty.t_ed) == -1) {
475 (void) fprintf(el->el_errfile,
480 el->el_tty.t_ts = el->el_tty.t_ex = el->el_tty.t_ed;
482 el->el_tty.t_speed = tty__getspeed(&el->el_tty.t_ex);
483 el->el_tty.t_tabs = tty__gettabs(&el->el_tty.t_ex);
484 el->el_tty.t_eight = tty__geteightbit(&el->el_tty.t_ex);
491 if (tty__cooked_mode(&el->el_tty.t_ts)) {
492 tty__getchar(&el->el_tty.t_ts, el->el_tty.t_c[TS_IO]);
497 if (el->el_tty.t_c[TS_IO][rst] !=
498 el->el_tty.t_vdisable
499 && el->el_tty.t_c[ED_IO][rst] !=
500 el->el_tty.t_vdisable)
501 el->el_tty.t_c[ED_IO][rst] =
502 el->el_tty.t_c[TS_IO][rst];
504 if (el->el_tty.t_c[TS_IO][rst] !=
505 el->el_tty.t_vdisable)
506 el->el_tty.t_c[EX_IO][rst] =
507 el->el_tty.t_c[TS_IO][rst];
511 el->el_tty.t_ed.c_iflag &= ~el->el_tty.t_t[ED_IO][MD_INP].t_clrmask;
512 el->el_tty.t_ed.c_iflag |= el->el_tty.t_t[ED_IO][MD_INP].t_setmask;
514 el->el_tty.t_ed.c_oflag &= ~el->el_tty.t_t[ED_IO][MD_OUT].t_clrmask;
515 el->el_tty.t_ed.c_oflag |= el->el_tty.t_t[ED_IO][MD_OUT].t_setmask;
517 el->el_tty.t_ed.c_cflag &= ~el->el_tty.t_t[ED_IO][MD_CTL].t_clrmask;
518 el->el_tty.t_ed.c_cflag |= el->el_tty.t_t[ED_IO][MD_CTL].t_setmask;
520 el->el_tty.t_ed.c_lflag &= ~el->el_tty.t_t[ED_IO][MD_LIN].t_clrmask;
521 el->el_tty.t_ed.c_lflag |= el->el_tty.t_t[ED_IO][MD_LIN].t_setmask;
523 tty__setchar(&el->el_tty.t_ed, el->el_tty.t_c[ED_IO]);
524 tty_bind_char(el, 1);
529 tty_init(EditLine *el)
532 el->el_tty.t_mode = EX_IO;
533 el->el_tty.t_vdisable = _POSIX_VDISABLE;
534 (void) memcpy(el->el_tty.t_t, ttyperm, sizeof(ttyperm_t));
535 (void) memcpy(el->el_tty.t_c, ttychar, sizeof(ttychar_t));
536 return (tty_setup(el));
545 tty_end(EditLine *el __unused)
841 tty_bind_char(EditLine *el, int force)
844 unsigned char *t_n = el->el_tty.t_c[ED_IO];
845 unsigned char *t_o = el->el_tty.t_ed.c_cc;
852 map = el->el_map.key;
853 alt = el->el_map.alt;
854 if (el->el_map.type == MAP_VI) {
855 dmap = el->el_map.vii;
856 dalt = el->el_map.vic;
858 dmap = el->el_map.emacs;
868 key_clear(el, map, (char *)old);
870 key_clear(el, map, (char *)new);
872 map[new[0]] = tp->bind[el->el_map.type];
874 key_clear(el, alt, (char *)old);
876 key_clear(el, alt, (char *)new);
877 alt[new[0]] = tp->bind[el->el_map.type + 1];
887 tty_rawmode(EditLine *el)
890 if (el->el_tty.t_mode == ED_IO || el->el_tty.t_mode == QU_IO)
893 if (el->el_flags & EDIT_DISABLED)
896 if (tty_getty(el, &el->el_tty.t_ts) == -1) {
898 (void) fprintf(el->el_errfile, "tty_rawmode: tty_getty: %s\n",
907 el->el_tty.t_eight = tty__geteightbit(&el->el_tty.t_ts);
908 el->el_tty.t_speed = tty__getspeed(&el->el_tty.t_ts);
910 if (tty__getspeed(&el->el_tty.t_ed) != el->el_tty.t_speed) {
911 (void) cfsetispeed(&el->el_tty.t_ed, el->el_tty.t_speed);
912 (void) cfsetospeed(&el->el_tty.t_ed, el->el_tty.t_speed);
914 if (tty__cooked_mode(&el->el_tty.t_ts)) {
915 if ((el->el_tty.t_ts.c_cflag != el->el_tty.t_ex.c_cflag) &&
916 (el->el_tty.t_ts.c_cflag != el->el_tty.t_ed.c_cflag)) {
917 el->el_tty.t_ed.c_cflag =
918 el->el_tty.t_ts.c_cflag;
919 el->el_tty.t_ed.c_cflag &=
920 ~el->el_tty.t_t[ED_IO][MD_CTL].t_clrmask;
921 el->el_tty.t_ed.c_cflag |=
922 el->el_tty.t_t[ED_IO][MD_CTL].t_setmask;
924 if ((el->el_tty.t_ts.c_lflag != el->el_tty.t_ex.c_lflag) &&
925 (el->el_tty.t_ts.c_lflag != el->el_tty.t_ed.c_lflag)) {
926 el->el_tty.t_ed.c_lflag =
927 el->el_tty.t_ts.c_lflag;
928 el->el_tty.t_ed.c_lflag &=
929 ~el->el_tty.t_t[ED_IO][MD_LIN].t_clrmask;
930 el->el_tty.t_ed.c_lflag |=
931 el->el_tty.t_t[ED_IO][MD_LIN].t_setmask;
933 if ((el->el_tty.t_ts.c_iflag != el->el_tty.t_ex.c_iflag) &&
934 (el->el_tty.t_ts.c_iflag != el->el_tty.t_ed.c_iflag)) {
935 el->el_tty.t_ed.c_iflag =
936 el->el_tty.t_ts.c_iflag;
937 el->el_tty.t_ed.c_iflag &=
938 ~el->el_tty.t_t[ED_IO][MD_INP].t_clrmask;
939 el->el_tty.t_ed.c_iflag |=
940 el->el_tty.t_t[ED_IO][MD_INP].t_setmask;
942 if ((el->el_tty.t_ts.c_oflag != el->el_tty.t_ex.c_oflag) &&
943 (el->el_tty.t_ts.c_oflag != el->el_tty.t_ed.c_oflag)) {
944 el->el_tty.t_ed.c_oflag =
945 el->el_tty.t_ts.c_oflag;
946 el->el_tty.t_ed.c_oflag &=
947 ~el->el_tty.t_t[ED_IO][MD_OUT].t_clrmask;
948 el->el_tty.t_ed.c_oflag |=
949 el->el_tty.t_t[ED_IO][MD_OUT].t_setmask;
951 if (tty__gettabs(&el->el_tty.t_ex) == 0)
952 el->el_tty.t_tabs = 0;
954 el->el_tty.t_tabs = EL_CAN_TAB ? 1 : 0;
959 tty__getchar(&el->el_tty.t_ts, el->el_tty.t_c[TS_IO]);
966 if (el->el_tty.t_c[TS_IO][i] !=
967 el->el_tty.t_c[EX_IO][i])
976 if (!((el->el_tty.t_t[ED_IO][MD_CHAR].t_setmask & C_SH(i)))
977 && (el->el_tty.t_c[TS_IO][i] != el->el_tty.t_c[EX_IO][i]))
978 el->el_tty.t_c[ED_IO][i] = el->el_tty.t_c[TS_IO][i];
979 if (el->el_tty.t_t[ED_IO][MD_CHAR].t_clrmask & C_SH(i))
980 el->el_tty.t_c[ED_IO][i] = el->el_tty.t_vdisable;
982 tty_bind_char(el, 0);
983 tty__setchar(&el->el_tty.t_ed, el->el_tty.t_c[ED_IO]);
986 if (!((el->el_tty.t_t[EX_IO][MD_CHAR].t_setmask & C_SH(i)))
987 && (el->el_tty.t_c[TS_IO][i] != el->el_tty.t_c[EX_IO][i]))
988 el->el_tty.t_c[EX_IO][i] = el->el_tty.t_c[TS_IO][i];
989 if (el->el_tty.t_t[EX_IO][MD_CHAR].t_clrmask & C_SH(i))
990 el->el_tty.t_c[EX_IO][i] = el->el_tty.t_vdisable;
996 if (el->el_tty.t_mode == EX_IO)
997 el->el_tty.t_ex = el->el_tty.t_ts;
999 if (tty_setty(el, &el->el_tty.t_ed) == -1) {
1001 (void) fprintf(el->el_errfile, "tty_rawmode: tty_setty: %s\n",
1006 el->el_tty.t_mode = ED_IO;
1015 tty_cookedmode(EditLine *el)
1018 if (el->el_tty.t_mode == EX_IO)
1021 if (el->el_flags & EDIT_DISABLED)
1024 if (tty_setty(el, &el->el_tty.t_ex) == -1) {
1026 (void) fprintf(el->el_errfile,
1032 el->el_tty.t_mode = EX_IO;
1041 tty_quotemode(EditLine *el)
1043 if (el->el_tty.t_mode == QU_IO)
1046 el->el_tty.t_qu = el->el_tty.t_ed;
1048 el->el_tty.t_qu.c_iflag &= ~el->el_tty.t_t[QU_IO][MD_INP].t_clrmask;
1049 el->el_tty.t_qu.c_iflag |= el->el_tty.t_t[QU_IO][MD_INP].t_setmask;
1051 el->el_tty.t_qu.c_oflag &= ~el->el_tty.t_t[QU_IO][MD_OUT].t_clrmask;
1052 el->el_tty.t_qu.c_oflag |= el->el_tty.t_t[QU_IO][MD_OUT].t_setmask;
1054 el->el_tty.t_qu.c_cflag &= ~el->el_tty.t_t[QU_IO][MD_CTL].t_clrmask;
1055 el->el_tty.t_qu.c_cflag |= el->el_tty.t_t[QU_IO][MD_CTL].t_setmask;
1057 el->el_tty.t_qu.c_lflag &= ~el->el_tty.t_t[QU_IO][MD_LIN].t_clrmask;
1058 el->el_tty.t_qu.c_lflag |= el->el_tty.t_t[QU_IO][MD_LIN].t_setmask;
1060 if (tty_setty(el, &el->el_tty.t_qu) == -1) {
1062 (void) fprintf(el->el_errfile, "QuoteModeOn: tty_setty: %s\n",
1067 el->el_tty.t_mode = QU_IO;
1076 tty_noquotemode(EditLine *el)
1079 if (el->el_tty.t_mode != QU_IO)
1081 if (tty_setty(el, &el->el_tty.t_ed) == -1) {
1083 (void) fprintf(el->el_errfile, "QuoteModeOff: tty_setty: %s\n",
1088 el->el_tty.t_mode = ED_IO;
1098 tty_stty(EditLine *el, int argc __unused, const char **argv)
1105 struct termios *tios = &el->el_tty.t_ex;
1120 tios = &el->el_tty.t_ed;
1125 tios = &el->el_tty.t_ex;
1130 tios = &el->el_tty.t_ts;
1134 (void) fprintf(el->el_errfile,
1145 (void) fprintf(el->el_outfile, "%s%s",
1147 el->el_tty.t_t[z][m->m_type].t_name);
1150 strlen(el->el_tty.t_t[z][m->m_type].t_name);
1153 x = (el->el_tty.t_t[z][i].t_setmask & m->m_value)
1155 x = (el->el_tty.t_t[z][i].t_clrmask & m->m_value)
1165 if (len + cu >= el->el_term.t_size.h) {
1166 (void) fprintf(el->el_outfile, "\n%*s",
1173 (void) fprintf(el->el_outfile, "%c%s ",
1176 (void) fprintf(el->el_outfile, "%s ",
1180 (void) fprintf(el->el_outfile, "\n");
1203 (void) fprintf(el->el_errfile,
1210 el->el_tty.t_vdisable;
1219 el->el_tty.t_t[z][m->m_type].t_setmask |= m->m_value;
1220 el->el_tty.t_t[z][m->m_type].t_clrmask &= ~m->m_value;
1223 el->el_tty.t_t[z][m->m_type].t_setmask &= ~m->m_value;
1224 el->el_tty.t_t[z][m->m_type].t_clrmask |= m->m_value;
1227 el->el_tty.t_t[z][m->m_type].t_setmask &= ~m->m_value;
1228 el->el_tty.t_t[z][m->m_type].t_clrmask &= ~m->m_value;
1241 tty_printchar(EditLine *el, unsigned char *s)
1247 for (m = el->el_tty.t_t; m->m_name; m++)
1251 (void) fprintf(el->el_errfile, "%s ^%c ",
1254 (void) fprintf(el->el_errfile, "\n");
1256 (void) fprintf(el->el_errfile, "\n");