Mercurial > vim
diff src/libvterm/src/state.c @ 13531:9f857e6310b6 v8.0.1639
patch 8.0.1639: libvterm code lags behind master
commit https://github.com/vim/vim/commit/b5b49a3b430ea0aaf8cce6b7bc0e444f0211ddfb
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Mar 25 16:20:37 2018 +0200
patch 8.0.1639: libvterm code lags behind master
Problem: Libvterm code lags behind master.
Solution: Sync to head, solve merge problems.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 25 Mar 2018 16:30:06 +0200 |
parents | a62b0bbc8834 |
children | 2449b6ce1456 |
line wrap: on
line diff
--- a/src/libvterm/src/state.c +++ b/src/libvterm/src/state.c @@ -268,7 +268,7 @@ static int on_text(const char bytes[], s if(!npoints) { vterm_allocator_free(state->vt, codepoints); - return 0; + return eaten; } if(state->gsingle_set && npoints) @@ -781,6 +781,10 @@ static void set_dec_mode(VTermState *sta VTERM_PROP_MOUSE_MOVE); break; + case 1004: + state->mode.report_focus = val; + break; + case 1005: state->mouse_protocol = val ? MOUSE_UTF8 : MOUSE_X10; break; @@ -861,6 +865,10 @@ static void request_dec_mode(VTermState reply = state->mouse_flags == (MOUSE_WANT_CLICK|MOUSE_WANT_MOVE); break; + case 1004: + reply = state->mode.report_focus; + break; + case 1005: reply = state->mouse_protocol == MOUSE_UTF8; break; @@ -1728,6 +1736,7 @@ void vterm_state_reset(VTermState *state state->mode.origin = 0; state->mode.leftrightmargin = 0; state->mode.bracketpaste = 0; + state->mode.report_focus = 0; state->vt->mode.ctrl8bit = 0; @@ -1882,11 +1891,26 @@ int vterm_state_set_termprop(VTermState if(val->number == VTERM_PROP_MOUSE_MOVE) state->mouse_flags |= MOUSE_WANT_MOVE; return 1; + + case VTERM_N_PROPS: + return 0; } return 0; } +void vterm_state_focus_in(VTermState *state) +{ + if(state->mode.report_focus) + vterm_push_output_sprintf_ctrl(state->vt, C1_CSI, "I"); +} + +void vterm_state_focus_out(VTermState *state) +{ + if(state->mode.report_focus) + vterm_push_output_sprintf_ctrl(state->vt, C1_CSI, "O"); +} + const VTermLineInfo *vterm_state_get_lineinfo(const VTermState *state, int row) { return state->lineinfo + row;