Mercurial > vim
comparison src/eval.c @ 8436:0e6fd2f802b3 v7.4.1509
commit https://github.com/vim/vim/commit/151f656e171f6ffbb0cbeb343cbcf2ffac0c36b0
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Mar 7 21:19:38 2016 +0100
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 07 Mar 2016 21:30:14 +0100 |
parents | 6af4329b5592 |
children | c0b5c2b0a5ee |
comparison
equal
deleted
inserted
replaced
8435:1f91306880c1 | 8436:0e6fd2f802b3 |
---|---|
10283 * Returns NULL if the handle is invalid. | 10283 * Returns NULL if the handle is invalid. |
10284 */ | 10284 */ |
10285 static channel_T * | 10285 static channel_T * |
10286 get_channel_arg(typval_T *tv) | 10286 get_channel_arg(typval_T *tv) |
10287 { | 10287 { |
10288 channel_T *channel; | 10288 channel_T *channel = NULL; |
10289 | 10289 |
10290 if (tv->v_type != VAR_CHANNEL) | 10290 if (tv->v_type == VAR_JOB) |
10291 { | |
10292 if (tv->vval.v_job != NULL) | |
10293 channel = tv->vval.v_job->jv_channel; | |
10294 } | |
10295 else if (tv->v_type == VAR_CHANNEL) | |
10296 { | |
10297 channel = tv->vval.v_channel; | |
10298 } | |
10299 else | |
10291 { | 10300 { |
10292 EMSG2(_(e_invarg2), get_tv_string(tv)); | 10301 EMSG2(_(e_invarg2), get_tv_string(tv)); |
10293 return NULL; | 10302 return NULL; |
10294 } | 10303 } |
10295 channel = tv->vval.v_channel; | |
10296 | 10304 |
10297 if (channel == NULL || !channel_is_open(channel)) | 10305 if (channel == NULL || !channel_is_open(channel)) |
10298 { | 10306 { |
10299 EMSG(_("E906: not an open channel")); | 10307 EMSG(_("E906: not an open channel")); |
10300 return NULL; | 10308 return NULL; |
15104 | 15112 |
15105 /* | 15113 /* |
15106 * "job_start()" function | 15114 * "job_start()" function |
15107 */ | 15115 */ |
15108 static void | 15116 static void |
15109 f_job_start(typval_T *argvars UNUSED, typval_T *rettv) | 15117 f_job_start(typval_T *argvars, typval_T *rettv) |
15110 { | 15118 { |
15111 job_T *job; | 15119 job_T *job; |
15112 char_u *cmd = NULL; | 15120 char_u *cmd = NULL; |
15113 #if defined(UNIX) | 15121 #if defined(UNIX) |
15114 # define USE_ARGV | 15122 # define USE_ARGV |