diff options
author | Jonathan de Boyne Pollard <postmaster@localhost> | 2017-05-22 22:46:56 +0100 |
---|---|---|
committer | Jonathan de Boyne Pollard <J.deBoynePollard-newsgroups@NTLWorld.com> | 2017-06-03 18:53:27 +0100 |
commit | 5b07ca1dfde4d44a11e3052b552f48fe61034247 (patch) | |
tree | cb42f1fe194082d53803add50c71ac5b873029df /src | |
parent | dbc25f5a87cf3bcfe1caac1eb1ff8b3a6978a415 (diff) | |
download | rneovim-5b07ca1dfde4d44a11e3052b552f48fe61034247.tar.gz rneovim-5b07ca1dfde4d44a11e3052b552f48fe61034247.tar.bz2 rneovim-5b07ca1dfde4d44a11e3052b552f48fe61034247.zip |
tui: Use what scrolling PuTTY has.
PuTTY does not implement DECLRMM or DECSLRM, but it does implement DECSTBM.
So allow using PuTTY terminal scrolling when the scroll rectangle is the
full width of the terminal.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/tui/tui.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index abe0e17d8a..23096725be 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -56,6 +56,7 @@ typedef enum TermType { kTermDTTerm, kTermXTerm, kTermTeraTerm, + kTermPuTTY, } TermType; typedef struct { @@ -1172,6 +1173,9 @@ static TermType detect_term(const char *term, const char *colorterm) if (STARTS_WITH(term, "teraterm")) { return kTermTeraTerm; } + if (STARTS_WITH(term, "putty")) { + return kTermPuTTY; + } return kTermUnknown; } @@ -1220,13 +1224,15 @@ static void fix_terminfo(TUIData *data) unibi_set_if_empty(ut, unibi_cursor_invisible, "\x1b[?25l"); unibi_set_if_empty(ut, unibi_flash_screen, "\x1b[?5h$<100/>\x1b[?5l"); unibi_set_if_empty(ut, unibi_exit_attribute_mode, "\x1b(B\x1b[m"); + unibi_set_if_empty(ut, unibi_from_status_line, "\x07"); unibi_set_if_empty(ut, unibi_set_tb_margin, "\x1b[%i%p1%d;%p2%dr"); unibi_set_if_empty(ut, unibi_set_lr_margin, "\x1b[%i%p1%d;%p2%ds"); unibi_set_if_empty(ut, unibi_set_left_margin_parm, "\x1b[%i%p1%ds"); unibi_set_if_empty(ut, unibi_set_right_margin_parm, "\x1b[%i;%p2%ds"); + } + if (data->term == kTermXTerm || data->term == kTermRxvt || data->term == kTermPuTTY) { unibi_set_if_empty(ut, unibi_change_scroll_region, "\x1b[%i%p1%d;%p2%dr"); unibi_set_if_empty(ut, unibi_clear_screen, "\x1b[H\x1b[2J"); - unibi_set_if_empty(ut, unibi_from_status_line, "\x07"); unibi_set_bool(ut, unibi_back_color_erase, true); } @@ -1271,7 +1277,7 @@ static void fix_terminfo(TUIData *data) "\x1b[8;%p1%d;%p2%dt"); } - if (data->term == kTermXTerm || data->term == kTermRxvt) { + if (data->term == kTermXTerm || data->term == kTermRxvt || data->term == kTermPuTTY) { data->unibi_ext.reset_scroll_region = (int)unibi_add_ext_str(ut, NULL, "\x1b[r"); } |