Patch 8.0.0759
Problem: MS-Windows: terminal does not adjust size to the Vim window size.
Solution: Add a call to winpty_set_size(). (Yasuhiro Matsumoto, closes #1863)
Files: src/terminal.c
*** ../vim-8.0.0758/src/terminal.c 2017-07-23 17:22:30.693936657 +0200
--- src/terminal.c 2017-07-23 17:26:40.452177637 +0200
***************
*** 118,123 ****
--- 118,124 ----
* Functions with separate implementation for MS-Windows and Unix-like
systems.
*/
static int term_and_job_init(term_T *term, int rows, int cols, char_u *cmd);
+ static void term_report_winsize(term_T *term, int rows, int cols);
static void term_free(term_T *term);
/**************************************
***************
*** 765,788 ****
vterm_set_size(vterm, rows, cols);
ch_logn(term->tl_job->jv_channel, "Resizing terminal to %d lines",
rows);
!
! #if defined(UNIX)
! /* Use an ioctl() to report the new window size to the job. */
! if (term->tl_job != NULL && term->tl_job->jv_channel != NULL)
! {
! int fd = -1;
! int part;
!
! for (part = PART_OUT; part < PART_COUNT; ++part)
! {
! fd = term->tl_job->jv_channel->ch_part[part].ch_fd;
! if (isatty(fd))
! break;
! }
! if (part < PART_COUNT && mch_report_winsize(fd, rows, cols) == OK)
! mch_stop_job(term->tl_job, (char_u *)"winch");
! }
! #endif
}
/* The cursor may have been moved when resizing. */
--- 766,772 ----
vterm_set_size(vterm, rows, cols);
ch_logn(term->tl_job->jv_channel, "Resizing terminal to %d lines",
rows);
! term_report_winsize(term, rows, cols);
}
/* The cursor may have been moved when resizing. */
***************
*** 921,926 ****
--- 905,911 ----
void (*winpty_spawn_config_free)(void*);
void (*winpty_error_free)(void*);
LPCWSTR (*winpty_error_msg)(void*);
+ BOOL (*winpty_set_size)(void*, int, int, void*);
/**************************************
* 2. MS-Windows implementation.
***************
*** 953,958 ****
--- 938,944 ----
{"winpty_spawn_config_free", (FARPROC*)&winpty_spawn_config_free},
{"winpty_spawn_config_new", (FARPROC*)&winpty_spawn_config_new},
{"winpty_error_msg", (FARPROC*)&winpty_error_msg},
+ {"winpty_set_size", (FARPROC*)&winpty_set_size},
{NULL, NULL}
};
***************
*** 1122,1127 ****
--- 1108,1122 ----
vterm_free(term->tl_vterm);
}
+ /*
+ * Request size to terminal.
+ */
+ static void
+ term_report_winsize(term_T *term, int rows, int cols)
+ {
+ winpty_set_size(term->tl_winpty, cols, rows, NULL);
+ }
+
# else
/**************************************
***************
*** 1161,1166 ****
--- 1156,1185 ----
if (term->tl_vterm != NULL)
vterm_free(term->tl_vterm);
}
+
+ /*
+ * Request size to terminal.
+ */
+ static void
+ term_report_winsize(term_T *term, int rows, int cols)
+ {
+ /* Use an ioctl() to report the new window size to the job. */
+ if (term->tl_job != NULL && term->tl_job->jv_channel != NULL)
+ {
+ int fd = -1;
+ int part;
+
+ for (part = PART_OUT; part < PART_COUNT; ++part)
+ {
+ fd = term->tl_job->jv_channel->ch_part[part].ch_fd;
+ if (isatty(fd))
+ break;
+ }
+ if (part < PART_COUNT && mch_report_winsize(fd, rows, cols) == OK)
+ mch_stop_job(term->tl_job, (char_u *)"winch");
+ }
+ }
+
# endif
#endif /* FEAT_TERMINAL */
*** ../vim-8.0.0758/src/version.c 2017-07-23 17:22:30.697936628 +0200
--- src/version.c 2017-07-23 17:26:51.772098027 +0200
***************
*** 771,772 ****
--- 771,774 ----
{ /* Add new patch number below this line */
+ /**/
+ 759,
/**/
--
How do I set the laser printer to stun?
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.