neovim: Update patch for neovim
[termux-packages] / packages / neovim / src-nvim-tui-tui.c.patch
CommitLineData
50be738f 1Discussed at https://github.com/neovim/neovim/pull/7204
2ddb211a
FF
2
3diff -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
50be738f
FF
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 @@
2ddb211a
FF
120 const char *str = NULL;
121
122 if (unibi_index >= 0) {
123- if (unibi_index < unibi_string_begin_) {
50be738f
FF
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) {