Patch 8.1.0880
Problem:    MS-Windows: inconsistent selection of winpty/conpty.
Solution:   Name option 'termwintype', use ++type argument and "term_pty" for
            term_start(). (Hirohito Higashi, closes #3915)
Files:      runtime/doc/eval.txt, runtime/doc/options.txt,
            runtime/doc/terminal.txt, src/channel.c, src/option.c,
            src/option.h, src/structs.h, src/terminal.c,
            src/testdir/gen_opt_test.vim, runtime/optwin.vim,
            runtime/doc/quickref.txt


*** ../vim-8.1.0879/runtime/doc/eval.txt        2019-02-03 14:52:42.497867506 
+0100
--- runtime/doc/eval.txt        2019-02-08 12:30:53.693480446 +0100
***************
*** 5716,5721 ****
--- 5750,5760 ----
                                (See |job_stop()| for the values)
                                only valid when "status" is "dead"
  
+                  Only in MS-Windows:
+                  "tty_type"   Type of virtual console in use.
+                               Values are "winpty" or "conpty".
+                               See 'termwintype'.
+ 
                Without any arguments, returns a List with all Job objects.
  
  job_setoptions({job}, {options})                      *job_setoptions()*
***************
*** 9410,9419 ****
                   "ansi_colors"     A list of 16 color names or hex codes
                                     defining the ANSI palette used in GUI
                                     color modes.  See |g:terminal_ansi_colors|.
!                  "term_mode"       (MS-Windows only): Specify which pty to
!                                    use:
!                                       "winpty": Use winpty
!                                       "conpty": Use ConPTY (if available)
  
                {only available when compiled with the |+terminal| feature}
  
--- 9474,9481 ----
                   "ansi_colors"     A list of 16 color names or hex codes
                                     defining the ANSI palette used in GUI
                                     color modes.  See |g:terminal_ansi_colors|.
!                  "tty_type"        (MS-Windows only): Specify which pty to
!                                    use.  See 'termwintype' for the values.
  
                {only available when compiled with the |+terminal| feature}
  
*** ../vim-8.1.0879/runtime/doc/options.txt     2019-02-03 14:52:42.497867506 
+0100
--- runtime/doc/options.txt     2019-02-08 12:30:53.693480446 +0100
***************
*** 8009,8031 ****
        Note that the "cterm" attributes are still used, not the "gui" ones.
        NOTE: This option is reset when 'compatible' is set.
  
-                                               *'termmode'* *'tmod'*
- 'termmode' 'tmod'     string  (default "")
-                       local to window
-                       {not in Vi, MS-Windows only}
-       Whether the window uses winpty or |ConPTY| as the virtual console.
-       When set before opening the terminal, it influences what pty is used.
-       When opening the terminal it will be set to the actually used pty.
- 
-       Possible values are:
-           ""          use ConPTY if possible, winpty otherwise
-           "winpty"    use winpty, fail if not supported
-           "conpty"    use |ConPTY|, fail if not supported
- 
-       |ConPTY| support depends on the platform (Windows 10 October 2018
-       edition).  winpty support needs to be installed.  If neither is
-       supported then you cannot open a terminal window.
- 
                                                *'termwinscroll'* *'twsl'*
  'termwinscroll' 'twsl'        number  (default 10000)
                        local to buffer
--- 8054,8059 ----
***************
*** 8074,8079 ****
--- 8102,8125 ----
        the size of the terminal.  In that case the Vim window will be
        adjusted to that size, if possible.
  
+                                               *'termwintype'* *'twt'*
+ 'termwintype' 'twt'   string  (default "")
+                       global
+                       {not in Vi}
+                       {only available when compiled with the |terminal|
+                       feature on MS-Windows}
+       Specify the virtual console (pty) used when opening the terminal
+       window.
+ 
+       Possible values are:
+           ""          use ConPTY if possible, winpty otherwise
+           "winpty"    use winpty, fail if not supported
+           "conpty"    use |ConPTY|, fail if not supported
+ 
+       |ConPTY| support depends on the platform (Windows 10 October 2018
+       edition).  winpty support needs to be installed.  If neither is
+       supported then you cannot open a terminal window.
+ 
                                                *'terse'* *'noterse'*
  'terse'                       boolean (default off)
                        global
*** ../vim-8.1.0879/runtime/doc/terminal.txt    2019-02-03 14:52:42.497867506 
+0100
--- runtime/doc/terminal.txt    2019-02-08 12:30:53.693480446 +0100
***************
*** 228,235 ****
                                        for Python "++eof=exit()".  Special
                                        codes can be used like with `:map`,
                                        e.g. "<C-Z>" for CTRL-Z.
!                       ++winpty        Use winpty as the virtual console.
!                       ++conpty        Use |ConPTY| as the virtual console.
                        If you want to use more options use the |term_start()|
                        function.
                        If you want to split the window vertically, use: >
--- 228,237 ----
                                        for Python "++eof=exit()".  Special
                                        codes can be used like with `:map`,
                                        e.g. "<C-Z>" for CTRL-Z.
!                       ++type={pty}    (MS-Windows only): Use {pty} as the
!                                       virtual console.  See 'termwintype'
!                                       for the values.
! 
                        If you want to use more options use the |term_start()|
                        function.
                        If you want to split the window vertically, use: >
***************
*** 416,423 ****
  Update"), winpty is no longer required. On those versions, |:terminal| will 
use
  Windows' built-in support for hosting terminal applications, "ConPTY".  When
  ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
! characters. If you encounter any such issues, set 'termmode' to winpty (which
! you then must have instlled).
  
  Environment variables are used to pass information to the running job:
      VIM_SERVERNAME    v:servername
--- 418,425 ----
  Update"), winpty is no longer required. On those versions, |:terminal| will 
use
  Windows' built-in support for hosting terminal applications, "ConPTY".  When
  ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
! characters. If you encounter any such issues, set 'termwintype' to "winpty"
! (which you then must have instlled).
  
  Environment variables are used to pass information to the running job:
      VIM_SERVERNAME    v:servername
*** ../vim-8.1.0879/src/channel.c       2019-02-03 14:52:42.501867485 +0100
--- src/channel.c       2019-02-08 12:30:53.693480446 +0100
***************
*** 4947,4973 ****
                opt->jo_set2 |= JO2_TERM_KILL;
                opt->jo_term_kill = tv_get_string_chk(item);
            }
!           else if (STRCMP(hi->hi_key, "term_mode") == 0)
            {
                char_u *p;
  
!               if (!(supported2 & JO2_TERM_MODE))
                    break;
!               opt->jo_set2 |= JO2_TERM_MODE;
                p = tv_get_string_chk(item);
                if (p == NULL)
                {
!                   semsg(_(e_invargval), "term_mode");
                    return FAIL;
                }
                // Allow empty string, "winpty", "conpty".
                if (!(*p == NUL || STRCMP(p, "winpty") == 0
                                                  || STRCMP(p, "conpty") == 0))
                {
!                   semsg(_(e_invargval), "term_mode");
                    return FAIL;
                }
!               opt->jo_term_mode = p[0];
            }
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
            else if (STRCMP(hi->hi_key, "ansi_colors") == 0)
--- 4947,4973 ----
                opt->jo_set2 |= JO2_TERM_KILL;
                opt->jo_term_kill = tv_get_string_chk(item);
            }
!           else if (STRCMP(hi->hi_key, "tty_type") == 0)
            {
                char_u *p;
  
!               if (!(supported2 & JO2_TTY_TYPE))
                    break;
!               opt->jo_set2 |= JO2_TTY_TYPE;
                p = tv_get_string_chk(item);
                if (p == NULL)
                {
!                   semsg(_(e_invargval), "tty_type");
                    return FAIL;
                }
                // Allow empty string, "winpty", "conpty".
                if (!(*p == NUL || STRCMP(p, "winpty") == 0
                                                  || STRCMP(p, "conpty") == 0))
                {
!                   semsg(_(e_invargval), "tty_type");
                    return FAIL;
                }
!               opt->jo_tty_type = p[0];
            }
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
            else if (STRCMP(hi->hi_key, "ansi_colors") == 0)
***************
*** 5194,5199 ****
--- 5194,5202 ----
  #ifdef UNIX
      vim_free(job->jv_termsig);
  #endif
+ #ifdef WIN3264
+     vim_free(job->jv_tty_type);
+ #endif
      free_callback(job->jv_exit_cb, job->jv_exit_partial);
      if (job->jv_argv != NULL)
      {
***************
*** 5963,5968 ****
--- 5966,5974 ----
  #ifdef UNIX
      dict_add_string(dict, "termsig", job->jv_termsig);
  #endif
+ #ifdef WIN3264
+     dict_add_string(dict, "tty_type", job->jv_tty_type);
+ #endif
  
      l = list_alloc();
      if (l != NULL)
*** ../vim-8.1.0879/src/option.c        2019-02-03 14:52:42.501867485 +0100
--- src/option.c        2019-02-08 12:40:35.150595285 +0100
***************
*** 253,259 ****
  # define PV_TWK               OPT_WIN(WV_TWK)
  # define PV_TWS               OPT_WIN(WV_TWS)
  # define PV_TWSL      OPT_BUF(BV_TWSL)
- # define PV_TMOD      OPT_WIN(WV_TMOD)
  #endif
  #ifdef FEAT_SIGNS
  # define PV_SCL               OPT_WIN(WV_SCL)
--- 253,258 ----
***************
*** 2701,2715 ****
                            {(char_u *)FALSE, (char_u *)FALSE}
  #endif
                            SCTX_INIT},
-     {"termmode", "tmod",    P_STRING|P_ALLOCED|P_VI_DEF,
- #ifdef FEAT_TERMINAL
-                           (char_u *)VAR_WIN, PV_TMOD,
-                           {(char_u *)"", (char_u *)NULL}
- #else
-                           (char_u *)NULL, PV_NONE,
-                           {(char_u *)NULL, (char_u *)0L}
- #endif
-                           SCTX_INIT},
      {"termwinkey", "twk",   P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
  #ifdef FEAT_TERMINAL
                            (char_u *)VAR_WIN, PV_TWK,
--- 2700,2705 ----
***************
*** 2737,2742 ****
--- 2727,2741 ----
                            {(char_u *)NULL, (char_u *)0L}
  #endif
                            SCTX_INIT},
+     {"termwintype", "twt",  P_STRING|P_ALLOCED|P_VI_DEF,
+ #if defined(WIN3264) && defined(FEAT_TERMINAL)
+                           (char_u *)&p_twt, PV_NONE,
+                           {(char_u *)"", (char_u *)NULL}
+ #else
+                           (char_u *)NULL, PV_NONE,
+                           {(char_u *)NULL, (char_u *)0L}
+ #endif
+                           SCTX_INIT},
      {"terse",     NULL,   P_BOOL|P_VI_DEF,
                            (char_u *)&p_terse, PV_NONE,
                            {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
***************
*** 3218,3225 ****
  #ifdef FEAT_SIGNS
  static char *(p_scl_values[]) = {"yes", "no", "auto", NULL};
  #endif
! #ifdef FEAT_TERMINAL
! static char *(p_tmod_values[]) = {"winpty", "conpty", "", NULL};
  #endif
  
  static void set_options_default(int opt_flags);
--- 3217,3224 ----
  #ifdef FEAT_SIGNS
  static char *(p_scl_values[]) = {"yes", "no", "auto", NULL};
  #endif
! #if defined(WIN3264) && defined(FEAT_TERMINAL)
! static char *(p_twt_values[]) = {"winpty", "conpty", "", NULL};
  #endif
  
  static void set_options_default(int opt_flags);
***************
*** 7505,7516 ****
                errmsg = e_invarg;
        }
      }
!     // 'termmode'
!     else if (varp == &curwin->w_p_tmod)
      {
!       if (check_opt_strings(*varp, p_tmod_values, FALSE) != OK)
            errmsg = e_invarg;
      }
  #endif
  
  #ifdef FEAT_VARTABS
--- 7504,7517 ----
                errmsg = e_invarg;
        }
      }
! # if defined(WIN3264)
!     // 'termwintype'
!     else if (varp == &p_twt)
      {
!       if (check_opt_strings(*varp, p_twt_values, FALSE) != OK)
            errmsg = e_invarg;
      }
+ # endif
  #endif
  
  #ifdef FEAT_VARTABS
***************
*** 10952,10958 ****
        case PV_TWK:    return (char_u *)&(curwin->w_p_twk);
        case PV_TWS:    return (char_u *)&(curwin->w_p_tws);
        case PV_TWSL:   return (char_u *)&(curbuf->b_p_twsl);
-       case PV_TMOD:   return (char_u *)&(curwin->w_p_tmod);
  #endif
  
        case PV_AI:     return (char_u *)&(curbuf->b_p_ai);
--- 10953,10958 ----
***************
*** 11153,11159 ****
  #ifdef FEAT_TERMINAL
      to->wo_twk = vim_strsave(from->wo_twk);
      to->wo_tws = vim_strsave(from->wo_tws);
-     to->wo_tmod = vim_strsave(from->wo_tmod);
  #endif
  #ifdef FEAT_FOLDING
      to->wo_fdc = from->wo_fdc;
--- 11153,11158 ----
***************
*** 11224,11230 ****
  #ifdef FEAT_TERMINAL
      check_string_option(&wop->wo_twk);
      check_string_option(&wop->wo_tws);
-     check_string_option(&wop->wo_tmod);
  #endif
  #ifdef FEAT_LINEBREAK
      check_string_option(&wop->wo_briopt);
--- 11223,11228 ----
***************
*** 11268,11274 ****
  #ifdef FEAT_TERMINAL
      clear_string_option(&wop->wo_twk);
      clear_string_option(&wop->wo_tws);
-     clear_string_option(&wop->wo_tmod);
  #endif
  }
  
--- 11266,11271 ----
*** ../vim-8.1.0879/src/option.h        2019-02-03 14:52:42.501867485 +0100
--- src/option.h        2019-02-08 12:30:53.697480429 +0100
***************
*** 834,839 ****
--- 834,842 ----
  #ifdef FEAT_TERMGUICOLORS
  EXTERN int    p_tgc;          /* 'termguicolors' */
  #endif
+ #if defined(WIN3264) && defined(FEAT_TERMINAL)
+ EXTERN char_u *p_twt;         // 'termwintype'
+ #endif
  EXTERN int    p_terse;        /* 'terse' */
  EXTERN int    p_ta;           /* 'textauto' */
  EXTERN int    p_to;           /* 'tildeop' */
***************
*** 1112,1118 ****
  #ifdef FEAT_TERMINAL
      , WV_TWK
      , WV_TWS
-     , WV_TMOD
  #endif
      , WV_CRBIND
  #ifdef FEAT_LINEBREAK
--- 1115,1120 ----
*** ../vim-8.1.0879/src/structs.h       2019-02-03 14:52:42.505867463 +0100
--- src/structs.h       2019-02-08 12:30:53.697480429 +0100
***************
*** 282,289 ****
  # define w_p_twk w_onebuf_opt.wo_twk  /* 'termwinkey' */
      char_u    *wo_tws;
  # define w_p_tws w_onebuf_opt.wo_tws  /* 'termwinsize' */
-     char_u    *wo_tmod;
- # define w_p_tmod w_onebuf_opt.wo_tmod        /* 'termmode' */
  #endif
  
  #ifdef FEAT_EVAL
--- 282,287 ----
***************
*** 1556,1561 ****
--- 1554,1562 ----
  #ifdef UNIX
      char_u    *jv_termsig;    /* allocated */
  #endif
+ #ifdef WIN3264
+     char_u    *jv_tty_type;   // allocated
+ #endif
      int               jv_exitval;
      char_u    *jv_exit_cb;    /* allocated */
      partial_T *jv_exit_partial;
***************
*** 1791,1797 ****
  #define JO2_NORESTORE     0x2000      /* "norestore" */
  #define JO2_TERM_KILL     0x4000      /* "term_kill" */
  #define JO2_ANSI_COLORS           0x8000      /* "ansi_colors" */
! #define JO2_TERM_MODE     0x10000     /* "term_mode" */
  
  #define JO_MODE_ALL   (JO_MODE + JO_IN_MODE + JO_OUT_MODE + JO_ERR_MODE)
  #define JO_CB_ALL \
--- 1792,1798 ----
  #define JO2_NORESTORE     0x2000      /* "norestore" */
  #define JO2_TERM_KILL     0x4000      /* "term_kill" */
  #define JO2_ANSI_COLORS           0x8000      /* "ansi_colors" */
! #define JO2_TTY_TYPE      0x10000     /* "tty_type" */
  
  #define JO_MODE_ALL   (JO_MODE + JO_IN_MODE + JO_OUT_MODE + JO_ERR_MODE)
  #define JO_CB_ALL \
***************
*** 1864,1870 ****
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
      long_u    jo_ansi_colors[16];
  # endif
!     int               jo_term_mode;       // first character of "term_mode"
  #endif
  } jobopt_T;
  
--- 1865,1871 ----
  # if defined(FEAT_GUI) || defined(FEAT_TERMGUICOLORS)
      long_u    jo_ansi_colors[16];
  # endif
!     int               jo_tty_type;        // first character of "tty_type"
  #endif
  } jobopt_T;
  
*** ../vim-8.1.0879/src/terminal.c      2019-02-03 14:52:42.505867463 +0100
--- src/terminal.c      2019-02-08 12:30:53.697480429 +0100
***************
*** 742,757 ****
            vim_free(buf);
            *p = ' ';
        }
!       else if ((int)(p - cmd) == 6 && STRNICMP(cmd, "winpty", 6) == 0)
!       {
!           opt.jo_set2 |= JO2_TERM_MODE;
!           opt.jo_term_mode = 'w';
!       }
!       else if ((int)(p - cmd) == 6 && STRNICMP(cmd, "conpty", 6) == 0)
        {
!           opt.jo_set2 |= JO2_TERM_MODE;
!           opt.jo_term_mode = 'c';
        }
        else
        {
            if (*p)
--- 742,767 ----
            vim_free(buf);
            *p = ' ';
        }
! #ifdef WIN3264
!       else if ((int)(p - cmd) == 4 && STRNICMP(cmd, "type", 4) == 0
!                                                                && ep != NULL)
        {
!           int tty_type = NUL;
! 
!           p = skiptowhite(cmd);
!           if (STRNICMP(ep + 1, "winpty", p - (ep + 1)) == 0)
!               tty_type = 'w';
!           else if (STRNICMP(ep + 1, "conpty", p - (ep + 1)) == 0)
!               tty_type = 'c';
!           else
!           {
!               semsg(e_invargval, "type");
!               goto theend;
!           }
!           opt.jo_set2 |= JO2_TTY_TYPE;
!           opt.jo_tty_type = tty_type;
        }
+ #endif
        else
        {
            if (*p)
***************
*** 809,817 ****
                term->tl_cols, term->tl_rows) < 0)
        return FAIL;
  #ifdef WIN3264
!     if (*wp->w_p_tmod != NUL)
!       if (fprintf(fd, "++%s ", wp->w_p_tmod) < 0)
!           return FAIL;
  #endif
      if (term->tl_command != NULL && fputs((char *)term->tl_command, fd) < 0)
        return FAIL;
--- 819,826 ----
                term->tl_cols, term->tl_rows) < 0)
        return FAIL;
  #ifdef WIN3264
!     if (fprintf(fd, "++type=%s ", term->tl_job->jv_tty_type) < 0)
!       return FAIL;
  #endif
      if (term->tl_command != NULL && fputs((char *)term->tl_command, fd) < 0)
        return FAIL;
***************
*** 5369,5375 ****
                    + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL + JO2_CURWIN
                    + JO2_CWD + JO2_ENV + JO2_EOF_CHARS
                    + JO2_NORESTORE + JO2_TERM_KILL
!                   + JO2_ANSI_COLORS + JO2_TERM_MODE) == FAIL)
        return;
  
      buf = term_start(&argvars[0], NULL, &opt, 0);
--- 5378,5384 ----
                    + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL + JO2_CURWIN
                    + JO2_CWD + JO2_ENV + JO2_EOF_CHARS
                    + JO2_NORESTORE + JO2_TERM_KILL
!                   + JO2_ANSI_COLORS + JO2_TTY_TYPE) == FAIL)
        return;
  
      buf = term_start(&argvars[0], NULL, &opt, 0);
***************
*** 5713,5718 ****
--- 5722,5728 ----
      job->jv_proc_info = proc_info;
      job->jv_job_object = jo;
      job->jv_status = JOB_STARTED;
+     job->jv_tty_type = vim_strsave("conpty");
      ++job->jv_refcount;
      term->tl_job = job;
  
***************
*** 6046,6051 ****
--- 6056,6062 ----
            (short_u *)winpty_conin_name(term->tl_winpty), NULL);
      job->jv_tty_out = utf16_to_enc(
            (short_u *)winpty_conout_name(term->tl_winpty), NULL);
+     job->jv_tty_type = vim_strsave("winpty");
      ++job->jv_refcount;
      term->tl_job = job;
  
***************
*** 6113,6118 ****
--- 6124,6130 ----
  {
      int                   use_winpty = FALSE;
      int                   use_conpty = FALSE;
+     int                   tty_type = *p_twt;
  
      has_winpty = dyn_winpty_init(FALSE) != FAIL ? TRUE : FALSE;
      has_conpty = dyn_conpty_init(FALSE) != FAIL ? TRUE : FALSE;
***************
*** 6122,6135 ****
        // conpty is not available it can't be installed either.
        return dyn_winpty_init(TRUE);
  
!     if (opt->jo_term_mode == 'w')
!       set_string_option_direct((char_u *)"tmod", -1, (char_u *)"winpty",
!                                                       OPT_FREE|OPT_LOCAL, 0);
!     if (opt->jo_term_mode == 'c')
!       set_string_option_direct((char_u *)"tmod", -1, (char_u *)"conpty",
!                                                       OPT_FREE|OPT_LOCAL, 0);
  
!     if (curwin->w_p_tmod == NULL || *curwin->w_p_tmod == NUL)
      {
        if (has_conpty)
            use_conpty = TRUE;
--- 6134,6143 ----
        // conpty is not available it can't be installed either.
        return dyn_winpty_init(TRUE);
  
!     if (opt->jo_tty_type != NUL)
!       tty_type = opt->jo_tty_type;
  
!     if (tty_type == NUL)
      {
        if (has_conpty)
            use_conpty = TRUE;
***************
*** 6137,6148 ****
            use_winpty = TRUE;
        // else: error
      }
!     else if (STRICMP(curwin->w_p_tmod, "winpty") == 0)
      {
        if (has_winpty)
            use_winpty = TRUE;
      }
!     else if (STRICMP(curwin->w_p_tmod, "conpty") == 0)
      {
        if (has_conpty)
            use_conpty = TRUE;
--- 6145,6156 ----
            use_winpty = TRUE;
        // else: error
      }
!     else if (tty_type == 'w') // winpty
      {
        if (has_winpty)
            use_winpty = TRUE;
      }
!     else if (tty_type == 'c') // conpty
      {
        if (has_conpty)
            use_conpty = TRUE;
***************
*** 6151,6168 ****
      }
  
      if (use_conpty)
-     {
-       set_string_option_direct((char_u *)"tmod", -1, (char_u *)"conpty",
-                                                       OPT_FREE|OPT_LOCAL, 0);
        return conpty_term_and_job_init(term, argvar, argv, opt, orig_opt);
-     }
  
      if (use_winpty)
-     {
-       set_string_option_direct((char_u *)"tmod", -1, (char_u *)"winpty",
-                                                       OPT_FREE|OPT_LOCAL, 0);
        return winpty_term_and_job_init(term, argvar, argv, opt, orig_opt);
-     }
  
      // error
      return dyn_winpty_init(TRUE);
--- 6159,6168 ----
*** ../vim-8.1.0879/src/testdir/gen_opt_test.vim        2019-02-03 
14:52:42.505867463 +0100
--- src/testdir/gen_opt_test.vim        2019-02-08 12:30:53.697480429 +0100
***************
*** 131,138 ****
        \ 'term': [[], []],
        \ 'termguicolors': [[], []],
        \ 'termencoding': [has('gui_gtk') ? [] : ['', 'utf-8'], ['xxx']],
-       \ 'termmode': [['', 'winpty', 'conpty'], ['xxx']],
        \ 'termwinsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', 
'8ax9', '24x80b']],
        \ 'toolbar': [['', 'icons', 'text'], ['xxx']],
        \ 'toolbariconsize': [['', 'tiny', 'huge'], ['xxx']],
        \ 'ttymouse': [['', 'xterm'], ['xxx']],
--- 131,138 ----
        \ 'term': [[], []],
        \ 'termguicolors': [[], []],
        \ 'termencoding': [has('gui_gtk') ? [] : ['', 'utf-8'], ['xxx']],
        \ 'termwinsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', 
'8ax9', '24x80b']],
+       \ 'termwintype': [['', 'winpty', 'conpty'], ['xxx']],
        \ 'toolbar': [['', 'icons', 'text'], ['xxx']],
        \ 'toolbariconsize': [['', 'tiny', 'huge'], ['xxx']],
        \ 'ttymouse': [['', 'xterm'], ['xxx']],
*** ../vim-8.1.0879/runtime/optwin.vim  2018-06-23 19:22:45.598486362 +0200
--- runtime/optwin.vim  2019-02-08 12:35:52.248072230 +0100
***************
*** 1,7 ****
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar <[email protected]>
! " Last Change:        2018 May 15
  
  " If there already is an option window, jump to that one.
  let buf = bufnr('option-window')
--- 1,7 ----
  " These commands create the option window.
  "
  " Maintainer: Bram Moolenaar <[email protected]>
! " Last Change:        2019 Feb 08
  
  " If there already is an option window, jump to that one.
  let buf = bufnr('option-window')
***************
*** 395,405 ****
  call <SID>Header("syntax, highlighting and spelling")
  call append("$", "background\t\"dark\" or \"light\"; the background color 
brightness")
  call <SID>OptionG("bg", &bg)
! if has("autocmd")
!   call append("$", "filetype\ttype of file; triggers the FileType event when 
set")
!   call append("$", "\t(local to buffer)")
!   call <SID>OptionL("ft")
! endif
  if has("syntax")
    call append("$", "syntax\tname of syntax highlighting used")
    call append("$", "\t(local to buffer)")
--- 395,403 ----
  call <SID>Header("syntax, highlighting and spelling")
  call append("$", "background\t\"dark\" or \"light\"; the background color 
brightness")
  call <SID>OptionG("bg", &bg)
! call append("$", "filetype\ttype of file; triggers the FileType event when 
set")
! call append("$", "\t(local to buffer)")
! call <SID>OptionL("ft")
  if has("syntax")
    call append("$", "syntax\tname of syntax highlighting used")
    call append("$", "\t(local to buffer)")
***************
*** 454,463 ****
  endif
  call append("$", "equalalways\tmake all windows the same size when 
adding/removing windows")
  call <SID>BinOptionG("ea", &ea)
! if has("vertsplit")
!   call append("$", "eadirection\tin which direction 'equalalways' works: 
\"ver\", \"hor\" or \"both\"")
!   call <SID>OptionG("ead", &ead)
! endif
  call append("$", "winheight\tminimal number of lines used for the current 
window")
  call append("$", " \tset wh=" . &wh)
  call append("$", "winminheight\tminimal number of lines used for any window")
--- 452,459 ----
  endif
  call append("$", "equalalways\tmake all windows the same size when 
adding/removing windows")
  call <SID>BinOptionG("ea", &ea)
! call append("$", "eadirection\tin which direction 'equalalways' works: 
\"ver\", \"hor\" or \"both\"")
! call <SID>OptionG("ead", &ead)
  call append("$", "winheight\tminimal number of lines used for the current 
window")
  call append("$", " \tset wh=" . &wh)
  call append("$", "winminheight\tminimal number of lines used for any window")
***************
*** 465,479 ****
  call append("$", "winfixheight\tkeep the height of the window")
  call append("$", "\t(local to window)")
  call <SID>BinOptionL("wfh")
- if has("vertsplit")
  call append("$", "winfixwidth\tkeep the width of the window")
  call append("$", "\t(local to window)")
  call <SID>BinOptionL("wfw")
!   call append("$", "winwidth\tminimal number of columns used for the current 
window")
!   call append("$", " \tset wiw=" . &wiw)
!   call append("$", "winminwidth\tminimal number of columns used for any 
window")
!   call append("$", " \tset wmw=" . &wmw)
! endif
  call append("$", "helpheight\tinitial height of the help window")
  call append("$", " \tset hh=" . &hh)
  if has("quickfix")
--- 461,473 ----
  call append("$", "winfixheight\tkeep the height of the window")
  call append("$", "\t(local to window)")
  call <SID>BinOptionL("wfh")
  call append("$", "winfixwidth\tkeep the width of the window")
  call append("$", "\t(local to window)")
  call <SID>BinOptionL("wfw")
! call append("$", "winwidth\tminimal number of columns used for the current 
window")
! call append("$", " \tset wiw=" . &wiw)
! call append("$", "winminwidth\tminimal number of columns used for any window")
! call append("$", " \tset wmw=" . &wmw)
  call append("$", "helpheight\tinitial height of the help window")
  call append("$", " \tset hh=" . &hh)
  if has("quickfix")
***************
*** 490,511 ****
  call <SID>OptionG("swb", &swb)
  call append("$", "splitbelow\ta new window is put below the current one")
  call <SID>BinOptionG("sb", &sb)
! if has("vertsplit")
!   call append("$", "splitright\ta new window is put right of the current one")
!   call <SID>BinOptionG("spr", &spr)
! endif
! if has("scrollbind")
!   call append("$", "scrollbind\tthis window scrolls together with other bound 
windows")
!   call append("$", "\t(local to window)")
!   call <SID>BinOptionL("scb")
!   call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of 
options for 'scrollbind'")
!   call <SID>OptionG("sbo", &sbo)
! endif
! if has("cursorbind")
!   call append("$", "cursorbind\tthis window's cursor moves together with 
other bound windows")
!   call append("$", "\t(local to window)")
!   call <SID>BinOptionL("crb")
! endif
  if has("terminal")
    call append("$", "termwinsize\tsize of a terminal window")
    call append("$", "\t(local to window)")
--- 484,499 ----
  call <SID>OptionG("swb", &swb)
  call append("$", "splitbelow\ta new window is put below the current one")
  call <SID>BinOptionG("sb", &sb)
! call append("$", "splitright\ta new window is put right of the current one")
! call <SID>BinOptionG("spr", &spr)
! call append("$", "scrollbind\tthis window scrolls together with other bound 
windows")
! call append("$", "\t(local to window)")
! call <SID>BinOptionL("scb")
! call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of 
options for 'scrollbind'")
! call <SID>OptionG("sbo", &sbo)
! call append("$", "cursorbind\tthis window's cursor moves together with other 
bound windows")
! call append("$", "\t(local to window)")
! call <SID>BinOptionL("crb")
  if has("terminal")
    call append("$", "termwinsize\tsize of a terminal window")
    call append("$", "\t(local to window)")
***************
*** 515,520 ****
--- 503,512 ----
    call <SID>OptionL("twk")
    call append("$", "termwinscroll\tmax number of lines to keep for scrollback 
in a terminal window")
    call append("$", "\t(local to window)")
+   if has('win32')
+     call append("$", "termwintype\ttype of pty to use for a terminal window")
+     call <SID>OptionG("twt", &twt)
+   endif
    call <SID>OptionL("twsl")
    if exists("&winptydll")
      call append("$", "winptydll\tname of the winpty dynamic library")
***************
*** 1105,1116 ****
    call append("$", "wildmenu\tcommand-line completion shows a list of 
matches")
    call <SID>BinOptionG("wmnu", &wmnu)
  endif
! if has("vertsplit")
!   call append("$", "cedit\tkey used to open the command-line window")
!   call <SID>OptionG("cedit", &cedit)
!   call append("$", "cmdwinheight\theight of the command-line window")
!   call <SID>OptionG("cwh", &cwh)
! endif
  
  
  call <SID>Header("executing external commands")
--- 1097,1106 ----
    call append("$", "wildmenu\tcommand-line completion shows a list of 
matches")
    call <SID>BinOptionG("wmnu", &wmnu)
  endif
! call append("$", "cedit\tkey used to open the command-line window")
! call <SID>OptionG("cedit", &cedit)
! call append("$", "cmdwinheight\theight of the command-line window")
! call <SID>OptionG("cwh", &cwh)
  
  
  call <SID>Header("executing external commands")
***************
*** 1292,1305 ****
  
  
  call <SID>Header("various")
! if has("virtualedit")
!   call append("$", "virtualedit\twhen to use virtual editing: \"block\", 
\"insert\" and/or \"all\"")
!   call <SID>OptionG("ve", &ve)
! endif
! if has("autocmd")
!   call append("$", "eventignore\tlist of autocommand events which are to be 
ignored")
!   call <SID>OptionG("ei", &ei)
! endif
  call append("$", "loadplugins\tload plugin scripts when starting up")
  call <SID>BinOptionG("lpl", &lpl)
  call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current 
directory")
--- 1282,1291 ----
  
  
  call <SID>Header("various")
! call append("$", "virtualedit\twhen to use virtual editing: \"block\", 
\"insert\" and/or \"all\"")
! call <SID>OptionG("ve", &ve)
! call append("$", "eventignore\tlist of autocommand events which are to be 
ignored")
! call <SID>OptionG("ei", &ei)
  call append("$", "loadplugins\tload plugin scripts when starting up")
  call <SID>BinOptionG("lpl", &lpl)
  call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current 
directory")
*** ../vim-8.1.0879/runtime/doc/quickref.txt    2018-05-17 13:42:02.000000000 
+0200
--- runtime/doc/quickref.txt    2019-02-08 12:36:39.643832362 +0100
***************
*** 930,935 ****
--- 930,936 ----
  'termwinkey'    'twk'     key that precedes a Vim command in a terminal
  'termwinscroll'   'twsl'    max number of scrollback lines in a terminal 
window
  'termwinsize'   'tws'     size of a terminal window
+ 'termwintype'   'twt'     MS-Windows: type of pty to use for terminal window
  'terse'                           shorten some messages
  'textauto'      'ta'      obsolete, use 'fileformats'
  'textmode'      'tx'      obsolete, use 'fileformat'
***************
*** 957,962 ****
--- 958,965 ----
  'undoreload'    'ur'      max nr of lines to save for undo on a buffer reload
  'updatecount'   'uc'      after this many characters flush swap file
  'updatetime'    'ut'      after this many milliseconds flush swap file
+ 'varsofttabstop'  'vsts'    a list of number of spaces when typing <Tab>
+ 'vartabstop'    'vts'     a list of number of spaces for <Tab>s
  'verbose'       'vbs'     give informative messages
  'verbosefile'   'vfile'   file to write messages in
  'viewdir'       'vdir'    directory where to store files with :mkview
*** ../vim-8.1.0879/src/version.c       2019-02-08 12:21:26.631222734 +0100
--- src/version.c       2019-02-08 12:43:12.429737509 +0100
***************
*** 785,786 ****
--- 785,788 ----
  {   /* Add new patch number below this line */
+ /**/
+     880,
  /**/

-- 
There are only two hard things in programming: Cache invalidation,
naming things and off-by-one errors.

 /// 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.

Raspunde prin e-mail lui