summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1125
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1125')
-rw-r--r--data/vim/patches/8.1.1125355
1 files changed, 0 insertions, 355 deletions
diff --git a/data/vim/patches/8.1.1125 b/data/vim/patches/8.1.1125
deleted file mode 100644
index a8bcd610b..000000000
--- a/data/vim/patches/8.1.1125
+++ /dev/null
@@ -1,355 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1125
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.1125
-Problem: Libvterm does not handle the window position report.
-Solution: Let libvterm call the fallback CSI handler when not handling CSI
- sequence. Handle the window position report in Vim.
-Files: src/libvterm/src/state.c, src/terminal.c, src/ui.c,
- src/proto/ui.pro, src/evalfunc.c, src/testdir/test_terminal.vim
-
-
-*** ../vim-8.1.1124/src/libvterm/src/state.c 2018-12-24 21:38:40.814173687 +0100
---- src/libvterm/src/state.c 2019-04-06 14:44:25.847900874 +0200
-***************
-*** 905,910 ****
---- 905,911 ----
- int leader_byte = 0;
- int intermed_byte = 0;
- VTermPos oldpos = state->pos;
-+ int handled = 1;
-
- /* Some temporaries for later code */
- int count, val;
-***************
-*** 1416,1421 ****
---- 1417,1426 ----
- case 8: /* CSI 8 ; rows ; cols t set size */
- if (argcount == 3)
- on_resize(CSI_ARG(args[1]), CSI_ARG(args[2]), state);
-+ break;
-+ default:
-+ handled = 0;
-+ break;
- }
- break;
-
-***************
-*** 1450,1455 ****
---- 1455,1465 ----
- break;
-
- default:
-+ handled = 0;
-+ break;
-+ }
-+
-+ if (!handled) {
- if(state->fallbacks && state->fallbacks->csi)
- if((*state->fallbacks->csi)(leader, args, argcount, intermed, command, state->fbdata))
- return 1;
-*** ../vim-8.1.1124/src/terminal.c 2019-03-30 18:46:57.360077328 +0100
---- src/terminal.c 2019-04-06 15:25:12.799197577 +0200
-***************
-*** 3842,3855 ****
- return 1;
- }
-
- static VTermParserCallbacks parser_fallbacks = {
-! NULL, /* text */
-! NULL, /* control */
-! NULL, /* escape */
-! NULL, /* csi */
-! parse_osc, /* osc */
-! NULL, /* dcs */
-! NULL /* resize */
- };
-
- /*
---- 3842,3909 ----
- return 1;
- }
-
-+ /*
-+ * Called by libvterm when it cannot recognize a CSI sequence.
-+ * We recognize the window position report.
-+ */
-+ static int
-+ parse_csi(
-+ const char *leader UNUSED,
-+ const long args[],
-+ int argcount,
-+ const char *intermed UNUSED,
-+ char command,
-+ void *user)
-+ {
-+ term_T *term = (term_T *)user;
-+ char buf[100];
-+ int len;
-+ int x = 0;
-+ int y = 0;
-+ win_T *wp;
-+
-+ // We recognize only CSI 13 t
-+ if (command != 't' || argcount != 1 || args[0] != 13)
-+ return 0; // not handled
-+
-+ // When getting the window position fails it results in zero/zero.
-+ (void)ui_get_winpos(&x, &y, (varnumber_T)100);
-+
-+ FOR_ALL_WINDOWS(wp)
-+ if (wp->w_buffer == term->tl_buffer)
-+ break;
-+ if (wp != NULL)
-+ {
-+ #ifdef FEAT_GUI
-+ if (gui.in_use)
-+ {
-+ x += wp->w_wincol * gui.char_width;
-+ y += W_WINROW(wp) * gui.char_height;
-+ }
-+ else
-+ #endif
-+ {
-+ // We roughly estimate the position of the terminal window inside
-+ // the Vim window by assuing a 10 x 7 character cell.
-+ x += wp->w_wincol * 7;
-+ y += W_WINROW(wp) * 10;
-+ }
-+ }
-+
-+ len = vim_snprintf(buf, 100, "\x1b[3;%d;%dt", x, y);
-+ channel_send(term->tl_job->jv_channel, get_tty_part(term),
-+ (char_u *)buf, len, NULL);
-+ return 1;
-+ }
-+
- static VTermParserCallbacks parser_fallbacks = {
-! NULL, // text
-! NULL, // control
-! NULL, // escape
-! parse_csi, // csi
-! parse_osc, // osc
-! NULL, // dcs
-! NULL // resize
- };
-
- /*
-*** ../vim-8.1.1124/src/ui.c 2019-03-02 10:13:36.800974804 +0100
---- src/ui.c 2019-04-06 16:18:21.290945446 +0200
-***************
-*** 627,632 ****
---- 627,653 ----
- }
- }
-
-+ #if (defined(FEAT_EVAL) \
-+ && (defined(FEAT_GUI) \
-+ || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)))) \
-+ || defined(PROTO)
-+ /*
-+ * Get the window position in pixels, if possible.
-+ * Return FAIL when not possible.
-+ */
-+ int
-+ ui_get_winpos(int *x, int *y, varnumber_T timeout)
-+ {
-+ # ifdef FEAT_GUI
-+ if (gui.in_use)
-+ return gui_mch_get_winpos(x, y);
-+ # endif
-+ # if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
-+ return term_get_winpos(x, y, timeout);
-+ # endif
-+ }
-+ #endif
-+
- void
- ui_breakcheck(void)
- {
-*** ../vim-8.1.1124/src/proto/ui.pro 2019-01-27 16:55:44.276707556 +0100
---- src/proto/ui.pro 2019-04-06 15:15:57.453489712 +0200
-***************
-*** 11,16 ****
---- 11,17 ----
- int ui_get_shellsize(void);
- void ui_set_shellsize(int mustset);
- void ui_new_shellsize(void);
-+ int ui_get_winpos(int *x, int *y, varnumber_T timeout);
- void ui_breakcheck(void);
- void ui_breakcheck_force(int force);
- void clip_init(int can_use);
-*** ../vim-8.1.1124/src/evalfunc.c 2019-04-06 13:18:06.737335067 +0200
---- src/evalfunc.c 2019-04-06 16:18:24.146930813 +0200
-***************
-*** 5985,6004 ****
-
- if (rettv_list_alloc(rettv) == FAIL)
- return;
-! #ifdef FEAT_GUI
-! if (gui.in_use)
-! (void)gui_mch_get_winpos(&x, &y);
-! # if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
-! else
-! # endif
-! #endif
-! #if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
- {
- varnumber_T timeout = 100;
-
- if (argvars[0].v_type != VAR_UNKNOWN)
- timeout = tv_get_number(&argvars[0]);
-! term_get_winpos(&x, &y, timeout);
- }
- #endif
- list_append_number(rettv->vval.v_list, (varnumber_T)x);
---- 5985,5998 ----
-
- if (rettv_list_alloc(rettv) == FAIL)
- return;
-! #if defined(FEAT_GUI) || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE))
- {
- varnumber_T timeout = 100;
-
- if (argvars[0].v_type != VAR_UNKNOWN)
- timeout = tv_get_number(&argvars[0]);
-!
-! (void)ui_get_winpos(&x, &y, timeout);
- }
- #endif
- list_append_number(rettv->vval.v_list, (varnumber_T)x);
-***************
-*** 6013,6033 ****
- f_getwinposx(typval_T *argvars UNUSED, typval_T *rettv)
- {
- rettv->vval.v_number = -1;
-! #ifdef FEAT_GUI
-! if (gui.in_use)
-! {
-! int x, y;
-!
-! if (gui_mch_get_winpos(&x, &y) == OK)
-! rettv->vval.v_number = x;
-! return;
-! }
-! #endif
-! #if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
- {
- int x, y;
-
-! if (term_get_winpos(&x, &y, (varnumber_T)100) == OK)
- rettv->vval.v_number = x;
- }
- #endif
---- 6007,6017 ----
- f_getwinposx(typval_T *argvars UNUSED, typval_T *rettv)
- {
- rettv->vval.v_number = -1;
-! #if defined(FEAT_GUI) || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE))
- {
- int x, y;
-
-! if (ui_get_winpos(&x, &y, 100) == OK)
- rettv->vval.v_number = x;
- }
- #endif
-***************
-*** 6040,6060 ****
- f_getwinposy(typval_T *argvars UNUSED, typval_T *rettv)
- {
- rettv->vval.v_number = -1;
-! #ifdef FEAT_GUI
-! if (gui.in_use)
-! {
-! int x, y;
-!
-! if (gui_mch_get_winpos(&x, &y) == OK)
-! rettv->vval.v_number = y;
-! return;
-! }
-! #endif
-! #if defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE)
- {
- int x, y;
-
-! if (term_get_winpos(&x, &y, (varnumber_T)100) == OK)
- rettv->vval.v_number = y;
- }
- #endif
---- 6024,6034 ----
- f_getwinposy(typval_T *argvars UNUSED, typval_T *rettv)
- {
- rettv->vval.v_number = -1;
-! #if defined(FEAT_GUI) || (defined(HAVE_TGETENT) && defined(FEAT_TERMRESPONSE))
- {
- int x, y;
-
-! if (ui_get_winpos(&x, &y, 100) == OK)
- rettv->vval.v_number = y;
- }
- #endif
-*** ../vim-8.1.1125/src/testdir/test_terminal.vim 2019-04-06 12:39:47.439967638 +0200
---- src/testdir/test_terminal.vim 2019-04-06 17:22:33.203006052 +0200
-***************
-*** 1887,1889 ****
---- 1887,1922 ----
- au! BufLeave
- set statusline=
- endfunc
-+
-+ func Test_terminal_getwinpos()
-+ " split, go to the bottom-right window
-+ split
-+ wincmd j
-+ set splitright
-+
-+ call writefile([
-+ \ 'echo getwinpos()',
-+ \ ], 'XTest_getwinpos')
-+ let buf = RunVimInTerminal('-S XTest_getwinpos', {'cols': 60})
-+ call term_wait(buf)
-+
-+ " Find the output of getwinpos() in the bottom line.
-+ let rows = term_getsize(buf)[0]
-+ call WaitForAssert({-> assert_match('\[\d\+, \d\+\]', term_getline(buf, rows))})
-+ let line = term_getline(buf, rows)
-+ let xpos = str2nr(substitute(line, '\[\(\d\+\), \d\+\]', '\1', ''))
-+ let ypos = str2nr(substitute(line, '\[\d\+, \(\d\+\)\]', '\1', ''))
-+
-+ " Position must be bigger than the getwinpos() result of Vim itself.
-+ let [xroot, yroot] = getwinpos()
-+ call assert_inrange(xroot + 2, xroot + 1000, xpos)
-+ call assert_inrange(yroot + 2, yroot + 1000, ypos)
-+
-+ call term_wait(buf)
-+ call term_sendkeys(buf, ":q\<CR>")
-+ call StopVimInTerminal(buf)
-+ call delete('XTest_getwinpos')
-+ exe buf . 'bwipe!'
-+ set splitright&
-+ only!
-+ endfunc
-*** ../vim-8.1.1124/src/version.c 2019-04-06 14:22:17.758642630 +0200
---- src/version.c 2019-04-06 17:24:10.354521046 +0200
-***************
-*** 773,774 ****
---- 773,776 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1125,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-214. Your MCI "Circle of Friends" are all Hayes-compatible.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///