… | |
… | |
928 | if (items < 1 || !SvROK (ST (0)) || SvTYPE (SvRV (ST (0))) != SVt_PVAV) |
928 | if (items < 1 || !SvROK (ST (0)) || SvTYPE (SvRV (ST (0))) != SVt_PVAV) |
929 | croak ("first argument to urxvt::term->_new must be arrayref"); |
929 | croak ("first argument to urxvt::term->_new must be arrayref"); |
930 | |
930 | |
931 | rxvt_term *term = new rxvt_term; |
931 | rxvt_term *term = new rxvt_term; |
932 | |
932 | |
933 | term->argv = new stringvec; |
933 | stringvec *argv = new stringvec; |
934 | term->envv = new stringvec; |
934 | stringvec *envv = new stringvec; |
935 | |
935 | |
936 | for (int i = 1; i < items; i++) |
936 | for (int i = 1; i < items; i++) |
937 | term->argv->push_back (strdup (SvPVbyte_nolen (ST (i)))); |
937 | argv->push_back (strdup (SvPVbyte_nolen (ST (i)))); |
938 | |
938 | |
939 | AV *envv = (AV *)SvRV (ST (0)); |
939 | AV *env = (AV *)SvRV (ST (0)); |
940 | for (int i = AvFILL (envv) + 1; i--; ) |
940 | for (int i = AvFILL (env) + 1; i--; ) |
941 | term->envv->push_back (strdup (SvPVbyte_nolen (*av_fetch (envv, i, 1)))); |
941 | envv->push_back (strdup (SvPVbyte_nolen (*av_fetch (env, i, 1)))); |
942 | |
942 | |
943 | term->envv->push_back (0); |
943 | envv->push_back (0); |
944 | |
944 | |
945 | bool success; |
945 | bool success; |
946 | |
946 | |
947 | try |
947 | try |
948 | { |
948 | { |
949 | success = term->init (term->argv->size (), term->argv->begin ()); |
949 | success = term->init (argv, envv); |
950 | } |
950 | } |
951 | catch (const class rxvt_failure_exception &e) |
951 | catch (const class rxvt_failure_exception &e) |
952 | { |
952 | { |
953 | success = false; |
953 | success = false; |
954 | } |
954 | } |
… | |
… | |
1118 | ALIAS: |
1118 | ALIAS: |
1119 | ModLevel3Mask = 0 |
1119 | ModLevel3Mask = 0 |
1120 | ModMetaMask = 1 |
1120 | ModMetaMask = 1 |
1121 | ModNumLockMask = 2 |
1121 | ModNumLockMask = 2 |
1122 | current_screen = 3 |
1122 | current_screen = 3 |
|
|
1123 | hidden_cursor = 4 |
1123 | CODE: |
1124 | CODE: |
1124 | switch (ix) |
1125 | switch (ix) |
1125 | { |
1126 | { |
1126 | case 0: RETVAL = THIS->ModLevel3Mask; break; |
1127 | case 0: RETVAL = THIS->ModLevel3Mask; break; |
1127 | case 1: RETVAL = THIS->ModMetaMask; break; |
1128 | case 1: RETVAL = THIS->ModMetaMask; break; |
1128 | case 2: RETVAL = THIS->ModNumLockMask; break; |
1129 | case 2: RETVAL = THIS->ModNumLockMask; break; |
1129 | case 3: RETVAL = THIS->current_screen; break; |
1130 | case 3: RETVAL = THIS->current_screen; break; |
|
|
1131 | case 4: RETVAL = THIS->hidden_cursor; break; |
1130 | } |
1132 | } |
1131 | OUTPUT: |
1133 | OUTPUT: |
1132 | RETVAL |
1134 | RETVAL |
1133 | |
1135 | |
1134 | char * |
1136 | char * |
… | |
… | |
1169 | rxvt_term::pty_ev_events (int events = EVENT_UNDEF) |
1171 | rxvt_term::pty_ev_events (int events = EVENT_UNDEF) |
1170 | CODE: |
1172 | CODE: |
1171 | RETVAL = THIS->pty_ev.events; |
1173 | RETVAL = THIS->pty_ev.events; |
1172 | if (events != EVENT_UNDEF) |
1174 | if (events != EVENT_UNDEF) |
1173 | THIS->pty_ev.set (events); |
1175 | THIS->pty_ev.set (events); |
|
|
1176 | OUTPUT: |
|
|
1177 | RETVAL |
|
|
1178 | |
|
|
1179 | int |
|
|
1180 | rxvt_term::pty_fd () |
|
|
1181 | CODE: |
|
|
1182 | RETVAL = THIS->pty->pty; |
1174 | OUTPUT: |
1183 | OUTPUT: |
1175 | RETVAL |
1184 | RETVAL |
1176 | |
1185 | |
1177 | Window |
1186 | Window |
1178 | rxvt_term::parent () |
1187 | rxvt_term::parent () |
… | |
… | |
1529 | if (items == 3) |
1538 | if (items == 3) |
1530 | { |
1539 | { |
1531 | rc.row = SvIV (ST (1)); |
1540 | rc.row = SvIV (ST (1)); |
1532 | rc.col = SvIV (ST (2)); |
1541 | rc.col = SvIV (ST (2)); |
1533 | |
1542 | |
1534 | if (ix == 2 && rc.col == 0) |
1543 | if (ix == 2) |
1535 | { |
1544 | { |
|
|
1545 | if (rc.col == 0) |
|
|
1546 | { |
|
|
1547 | // col == 0 means end of previous line |
1536 | rc.row--; |
1548 | rc.row--; |
1537 | rc.col = THIS->ncol; |
1549 | rc.col = THIS->ncol; |
|
|
1550 | } |
|
|
1551 | else if (IN_RANGE_EXC (rc.row, THIS->top_row, THIS->nrow) |
|
|
1552 | && rc.col > ROW(rc.row).l) |
|
|
1553 | { |
|
|
1554 | // col >= length means while line and add newline |
|
|
1555 | rc.col = THIS->ncol; |
|
|
1556 | } |
1538 | } |
1557 | } |
1539 | |
1558 | |
1540 | clamp_it (rc.col, 0, THIS->ncol); |
1559 | clamp_it (rc.col, 0, THIS->ncol); |
1541 | clamp_it (rc.row, THIS->top_row, THIS->nrow - 1); |
1560 | clamp_it (rc.row, THIS->top_row, THIS->nrow - 1); |
1542 | |
1561 | |