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:
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -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);
|
||||||
|
@@ -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'))
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user