mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 7.4.1509
Problem: Keeping both a variable for a job and the channel it refers to is a hassle. Solution: Allow passing the job where a channel is expected. (Damien)
This commit is contained in:
16
src/eval.c
16
src/eval.c
@@ -10285,14 +10285,22 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported)
|
|||||||
static channel_T *
|
static channel_T *
|
||||||
get_channel_arg(typval_T *tv)
|
get_channel_arg(typval_T *tv)
|
||||||
{
|
{
|
||||||
channel_T *channel;
|
channel_T *channel = NULL;
|
||||||
|
|
||||||
if (tv->v_type != VAR_CHANNEL)
|
if (tv->v_type == VAR_JOB)
|
||||||
|
{
|
||||||
|
if (tv->vval.v_job != NULL)
|
||||||
|
channel = tv->vval.v_job->jv_channel;
|
||||||
|
}
|
||||||
|
else if (tv->v_type == VAR_CHANNEL)
|
||||||
|
{
|
||||||
|
channel = tv->vval.v_channel;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
EMSG2(_(e_invarg2), get_tv_string(tv));
|
EMSG2(_(e_invarg2), get_tv_string(tv));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
channel = tv->vval.v_channel;
|
|
||||||
|
|
||||||
if (channel == NULL || !channel_is_open(channel))
|
if (channel == NULL || !channel_is_open(channel))
|
||||||
{
|
{
|
||||||
@@ -15106,7 +15114,7 @@ f_job_setoptions(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
* "job_start()" function
|
* "job_start()" function
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
f_job_start(typval_T *argvars UNUSED, typval_T *rettv)
|
f_job_start(typval_T *argvars, typval_T *rettv)
|
||||||
{
|
{
|
||||||
job_T *job;
|
job_T *job;
|
||||||
char_u *cmd = NULL;
|
char_u *cmd = NULL;
|
||||||
|
@@ -463,16 +463,16 @@ func Test_raw_pipe()
|
|||||||
let job = job_start(s:python . " test_channel_pipe.py", {'mode': 'raw'})
|
let job = job_start(s:python . " test_channel_pipe.py", {'mode': 'raw'})
|
||||||
call assert_equal("run", job_status(job))
|
call assert_equal("run", job_status(job))
|
||||||
try
|
try
|
||||||
let handle = job_getchannel(job)
|
" For a change use the job where a channel is expected.
|
||||||
call ch_sendraw(handle, "echo something\n")
|
call ch_sendraw(job, "echo something\n")
|
||||||
let msg = ch_readraw(handle)
|
let msg = ch_readraw(job)
|
||||||
call assert_equal("something\n", substitute(msg, "\r", "", 'g'))
|
call assert_equal("something\n", substitute(msg, "\r", "", 'g'))
|
||||||
|
|
||||||
call ch_sendraw(handle, "double this\n")
|
call ch_sendraw(job, "double this\n")
|
||||||
let msg = ch_readraw(handle)
|
let msg = ch_readraw(job)
|
||||||
call assert_equal("this\nAND this\n", substitute(msg, "\r", "", 'g'))
|
call assert_equal("this\nAND this\n", substitute(msg, "\r", "", 'g'))
|
||||||
|
|
||||||
let reply = ch_evalraw(handle, "quit\n", {'timeout': 100})
|
let reply = ch_evalraw(job, "quit\n", {'timeout': 100})
|
||||||
call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g'))
|
call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g'))
|
||||||
finally
|
finally
|
||||||
call job_stop(job)
|
call job_stop(job)
|
||||||
|
@@ -743,6 +743,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1509,
|
||||||
/**/
|
/**/
|
||||||
1508,
|
1508,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user