diff options
| author | James McCoy <jamessan@jamessan.com> | 2020-06-10 13:24:45 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-10 13:24:45 -0400 | 
| commit | dcd6cf5f3409f5fdab03bc82887efea02a597f3b (patch) | |
| tree | d65d1445fcf8befb2ea556b180bd3d05019f7bc1 /src/nvim/eval/funcs.c | |
| parent | d8c5d122f1ba95bc71a78c5d70465bfa88623bd7 (diff) | |
| parent | d17e38e48209c19b63d809c5b807613f15aa03c8 (diff) | |
| download | rneovim-dcd6cf5f3409f5fdab03bc82887efea02a597f3b.tar.gz rneovim-dcd6cf5f3409f5fdab03bc82887efea02a597f3b.tar.bz2 rneovim-dcd6cf5f3409f5fdab03bc82887efea02a597f3b.zip  | |
Merge pull request #11819 from erw7/fix-dot-net-stdin
[RDY] win: make UV_OVERLAPPED_PIPE optional
Diffstat (limited to 'src/nvim/eval/funcs.c')
| -rw-r--r-- | src/nvim/eval/funcs.c | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 4526eecaba..1071e75c06 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -4862,6 +4862,7 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)    bool rpc = false;    bool pty = false;    bool clear_env = false; +  bool overlapped = false;    CallbackReader on_stdout = CALLBACK_READER_INIT,                   on_stderr = CALLBACK_READER_INIT;    Callback on_exit = CALLBACK_NONE; @@ -4873,12 +4874,23 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)      rpc = tv_dict_get_number(job_opts, "rpc") != 0;      pty = tv_dict_get_number(job_opts, "pty") != 0;      clear_env = tv_dict_get_number(job_opts, "clear_env") != 0; +    overlapped = tv_dict_get_number(job_opts, "overlapped") != 0; +      if (pty && rpc) {        EMSG2(_(e_invarg2), "job cannot have both 'pty' and 'rpc' options set");        shell_free_argv(argv);        return;      } +#ifdef WIN32 +    if (pty && overlapped) { +      EMSG2(_(e_invarg2), +            "job cannot have both 'pty' and 'overlapped' options set"); +      shell_free_argv(argv); +      return; +    } +#endif +      char *new_cwd = tv_dict_get_string(job_opts, "cwd", false);      if (new_cwd && strlen(new_cwd) > 0) {        cwd = new_cwd; @@ -4945,7 +4957,7 @@ static void f_jobstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)    }    Channel *chan = channel_job_start(argv, on_stdout, on_stderr, on_exit, pty, -                                    rpc, detach, cwd, width, height, +                                    rpc, overlapped, detach, cwd, width, height,                                      term_name, env, &rettv->vval.v_number);    if (chan) {      channel_create_event(chan, NULL); @@ -7372,8 +7384,8 @@ static void f_rpcstart(typval_T *argvars, typval_T *rettv, FunPtr fptr)    Channel *chan = channel_job_start(argv, CALLBACK_READER_INIT,                                      CALLBACK_READER_INIT, CALLBACK_NONE, -                                    false, true, false, NULL, 0, 0, NULL, NULL, -                                    &rettv->vval.v_number); +                                    false, true, false, false, NULL, 0, 0, +                                    NULL, NULL, &rettv->vval.v_number);    if (chan) {      channel_create_event(chan, NULL);    } @@ -10461,7 +10473,7 @@ static void f_termopen(typval_T *argvars, typval_T *rettv, FunPtr fptr)    uint16_t term_width = MAX(0, curwin->w_width_inner - win_col_off(curwin));    Channel *chan = channel_job_start(argv, on_stdout, on_stderr, on_exit, -                                    true, false, false, cwd, +                                    true, false, false, false, cwd,                                      term_width, curwin->w_height_inner,                                      xstrdup("xterm-256color"), NULL,                                      &rettv->vval.v_number);  | 
