0
0
mirror of https://github.com/vim/vim.git synced 2025-09-28 04:24:06 -04:00

patch 7.4.1360

Problem:    Can't remove a callback with ch_setoptions().
Solution:   When passing zero or an empty string remove the callback.
This commit is contained in:
Bram Moolenaar
2016-02-19 23:21:26 +01:00
parent 1f6ef66254
commit 0ba75a9714
4 changed files with 11 additions and 14 deletions

View File

@@ -748,16 +748,6 @@ channel_set_job(channel_T *channel, job_T *job)
channel->ch_job = job; channel->ch_job = job;
} }
/*
* Set the callback for channel "channel".
*/
void
channel_set_callback(channel_T *channel, char_u *callback)
{
vim_free(channel->ch_callback);
channel->ch_callback = vim_strsave(callback);
}
/* /*
* Set various properties from an "options" argument. * Set various properties from an "options" argument.
*/ */
@@ -769,9 +759,14 @@ channel_set_options(channel_T *channel, jobopt_T *options)
if (options->jo_set & JO_TIMEOUT) if (options->jo_set & JO_TIMEOUT)
channel->ch_timeout = options->jo_timeout; channel->ch_timeout = options->jo_timeout;
if ((options->jo_set & JO_CALLBACK) if (options->jo_set & JO_CALLBACK)
&& options->jo_callback != NULL && *options->jo_callback != NUL) {
channel_set_callback(channel, options->jo_callback); vim_free(channel->ch_callback);
if (options->jo_callback != NULL && *options->jo_callback != NUL)
channel->ch_callback = vim_strsave(options->jo_callback);
else
channel->ch_callback = NULL;
}
} }
/* /*

View File

@@ -10,7 +10,6 @@ void channel_gui_register_all(void);
channel_T *channel_open(char *hostname, int port_in, int waittime, void (*close_cb)(void)); channel_T *channel_open(char *hostname, int port_in, int waittime, void (*close_cb)(void));
void channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err); void channel_set_pipes(channel_T *channel, sock_T in, sock_T out, sock_T err);
void channel_set_job(channel_T *channel, job_T *job); void channel_set_job(channel_T *channel, job_T *job);
void channel_set_callback(channel_T *channel, char_u *callback);
void channel_set_options(channel_T *channel, jobopt_T *options); void channel_set_options(channel_T *channel, jobopt_T *options);
void channel_set_req_callback(channel_T *channel, char_u *callback, int id); void channel_set_req_callback(channel_T *channel, char_u *callback, int id);
char_u *channel_get(channel_T *channel); char_u *channel_get(channel_T *channel);

View File

@@ -149,6 +149,7 @@ func s:communicate(port)
call ch_setoptions(handle, {'timeout': 1111}) call ch_setoptions(handle, {'timeout': 1111})
call assert_fails("call ch_setoptions(handle, {'waittime': 111})", "E475") call assert_fails("call ch_setoptions(handle, {'waittime': 111})", "E475")
call assert_fails("call ch_setoptions(handle, {'mode': 'json'})", "E475") call assert_fails("call ch_setoptions(handle, {'mode': 'json'})", "E475")
call ch_setoptions(handle, {'callback': ''})
" Send an eval request that works. " Send an eval request that works.
call assert_equal('ok', ch_sendexpr(handle, 'eval-works')) call assert_equal('ok', ch_sendexpr(handle, 'eval-works'))

View File

@@ -747,6 +747,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 */
/**/
1360,
/**/ /**/
1359, 1359,
/**/ /**/