chiark / gitweb /
vim: Update from 8.0.0979 to 8.0.1013
[termux-packages] / packages / neovim / src-nvim-tui-tui.c.patch
1 Discussed at https://github.com/neovim/neovim/pull/7204
2
3 diff -u -r ../neovim-9ff0cc70855fc3eb11ad0162ee02e742f354d360/src/nvim/tui/tui.c ./src/nvim/tui/tui.c
4 --- ../neovim-9ff0cc70855fc3eb11ad0162ee02e742f354d360/src/nvim/tui/tui.c       2017-08-22 01:46:43.000000000 +0200
5 +++ ./src/nvim/tui/tui.c        2017-08-22 13:09:48.599217223 +0200
6 @@ -234,9 +234,9 @@
7    unibi_out(ui, unibi_keypad_xmit);
8    unibi_out(ui, unibi_clear_screen);
9    // Enable bracketed paste
10 -  unibi_out(ui, data->unibi_ext.enable_bracketed_paste);
11 +  unibi_out_ext(ui, data->unibi_ext.enable_bracketed_paste);
12    // Enable focus reporting
13 -  unibi_out(ui, data->unibi_ext.enable_focus_reporting);
14 +  unibi_out_ext(ui, data->unibi_ext.enable_focus_reporting);
15    uv_loop_init(&data->write_loop);
16    if (data->out_isatty) {
17      uv_tty_init(&data->write_loop, &data->output_handle.tty, data->out_fd, 0);
18 @@ -263,9 +263,9 @@
19    unibi_out(ui, unibi_keypad_local);
20    unibi_out(ui, unibi_exit_ca_mode);
21    // Disable bracketed paste
22 -  unibi_out(ui, data->unibi_ext.disable_bracketed_paste);
23 +  unibi_out_ext(ui, data->unibi_ext.disable_bracketed_paste);
24    // Disable focus reporting
25 -  unibi_out(ui, data->unibi_ext.disable_focus_reporting);
26 +  unibi_out_ext(ui, data->unibi_ext.disable_focus_reporting);
27    flush_buf(ui, true);
28    uv_tty_reset_mode();
29    uv_close((uv_handle_t *)&data->output_handle, NULL);
30 @@ -426,14 +426,14 @@
31        data->params[0].i = (fg >> 16) & 0xff;  // red
32        data->params[1].i = (fg >> 8) & 0xff;   // green
33        data->params[2].i = fg & 0xff;          // blue
34 -      unibi_out(ui, data->unibi_ext.set_rgb_foreground);
35 +      unibi_out_ext(ui, data->unibi_ext.set_rgb_foreground);
36      }
37  
38      if (bg != -1) {
39        data->params[0].i = (bg >> 16) & 0xff;  // red
40        data->params[1].i = (bg >> 8) & 0xff;   // green
41        data->params[2].i = bg & 0xff;          // blue
42 -      unibi_out(ui, data->unibi_ext.set_rgb_background);
43 +      unibi_out_ext(ui, data->unibi_ext.set_rgb_background);
44      }
45    } else {
46      if (fg != -1) {
47 @@ -679,7 +679,7 @@
48    data->params[1].i = grid->bot;
49    unibi_out(ui, unibi_change_scroll_region);
50    if (grid->left != 0 || grid->right != ui->width - 1) {
51 -    unibi_out(ui, data->unibi_ext.enable_lr_margin);
52 +    unibi_out_ext(ui, data->unibi_ext.enable_lr_margin);
53      if (data->can_set_lr_margin) {
54        data->params[0].i = grid->left;
55        data->params[1].i = grid->right;
56 @@ -700,7 +700,7 @@
57    UGrid *grid = &data->grid;
58  
59    if (0 <= data->unibi_ext.reset_scroll_region) {
60 -    unibi_out(ui, data->unibi_ext.reset_scroll_region);
61 +    unibi_out_ext(ui, data->unibi_ext.reset_scroll_region);
62    } else {
63      data->params[0].i = 0;
64      data->params[1].i = ui->height - 1;
65 @@ -717,7 +717,7 @@
66        data->params[0].i = ui->width - 1;
67        unibi_out(ui, unibi_set_right_margin_parm);
68      }
69 -    unibi_out(ui, data->unibi_ext.disable_lr_margin);
70 +    unibi_out_ext(ui, data->unibi_ext.disable_lr_margin);
71    }
72    unibi_goto(ui, grid->row, grid->col);
73  }
74 @@ -730,7 +730,7 @@
75    if (!got_winch) {  // Try to resize the terminal window.
76      data->params[0].i = (int)height;
77      data->params[1].i = (int)width;
78 -    unibi_out(ui, data->unibi_ext.resize_screen);
79 +    unibi_out_ext(ui, data->unibi_ext.resize_screen);
80      // DECSLPP does not reset the scroll region.
81      if (data->scroll_region_is_full_screen) {
82        reset_scroll_region(ui);
83 @@ -836,7 +836,7 @@
84  {
85    TUIData *data = ui->data;
86    if (!data->mouse_enabled) {
87 -    unibi_out(ui, data->unibi_ext.enable_mouse);
88 +    unibi_out_ext(ui, data->unibi_ext.enable_mouse);
89      data->mouse_enabled = true;
90    }
91  }
92 @@ -845,7 +845,7 @@
93  {
94    TUIData *data = ui->data;
95    if (data->mouse_enabled) {
96 -    unibi_out(ui, data->unibi_ext.disable_mouse);
97 +    unibi_out_ext(ui, data->unibi_ext.disable_mouse);
98      data->mouse_enabled = false;
99    }
100  }
101 @@ -864,7 +864,7 @@
102      if (attr > 0) {
103        attrentry_T *aep = syn_cterm_attr2entry(attr);
104        data->params[0].i = aep->rgb_bg_color;
105 -      unibi_out(ui, data->unibi_ext.set_cursor_color);
106 +      unibi_out_ext(ui, data->unibi_ext.set_cursor_color);
107      }
108    }
109  
110 @@ -875,7 +875,7 @@
111      default: WLOG("Unknown shape value %d", shape); break;
112    }
113    data->params[0].i = shape + (int)(c.blinkon == 0);
114 -  unibi_out(ui, data->unibi_ext.set_cursor_style);
115 +  unibi_out_ext(ui, data->unibi_ext.set_cursor_style);
116  }
117  
118  /// @param mode editor mode
119 @@ -1189,11 +1189,23 @@
120    const char *str = NULL;
121  
122    if (unibi_index >= 0) {
123 -    if (unibi_index < unibi_string_begin_) {
124 -      str = unibi_get_ext_str(data->ut, (unsigned)unibi_index);
125 -    } else {
126 -      str = unibi_get_str(data->ut, (unsigned)unibi_index);
127 -    }
128 +    str = unibi_get_str(data->ut, (unsigned)unibi_index);
129 +  }
130 +
131 +  if (str) {
132 +    unibi_var_t vars[26 + 26] = {{0}};
133 +    unibi_format(vars, vars + 26, str, data->params, out, ui, NULL, NULL);
134 +  }
135 +}
136 +
137 +static void unibi_out_ext(UI *ui, int unibi_index)
138 +{
139 +  TUIData *data = ui->data;
140 +
141 +  const char *str = NULL;
142 +
143 +  if (unibi_index >= 0) {
144 +    str = unibi_get_ext_str(data->ut, (unsigned)unibi_index);
145    }
146  
147    if (str) {