@@ -1481,9 +1481,17 @@ channel_parse_json(channel_T *channel, int part)
14811481 * TODO: insert in front */
14821482 if (reader .js_buf [reader .js_used ] != NUL )
14831483 {
1484- channel_save (channel , part , reader .js_buf + reader .js_used ,
1485- (int )(reader .js_end - reader .js_buf ) - reader .js_used );
1486- ret = TRUE;
1484+ if (ret == FAIL )
1485+ {
1486+ ch_error (channel , "Decoding failed - discarding input" );
1487+ ret = FALSE;
1488+ }
1489+ else
1490+ {
1491+ channel_save (channel , part , reader .js_buf + reader .js_used ,
1492+ (int )(reader .js_end - reader .js_buf ) - reader .js_used );
1493+ ret = TRUE;
1494+ }
14871495 }
14881496 else
14891497 ret = FALSE;
@@ -1586,12 +1594,14 @@ channel_exe_cmd(channel_T *channel, int part, typval_T *argv)
15861594
15871595 if (STRCMP (cmd , "ex" ) == 0 )
15881596 {
1597+ ch_logs (channel , "Executing ex command '%s'" , (char * )arg );
15891598 do_cmdline_cmd (arg );
15901599 }
15911600 else if (STRCMP (cmd , "normal" ) == 0 )
15921601 {
15931602 exarg_T ea ;
15941603
1604+ ch_logs (channel , "Executing normal command '%s'" , (char * )arg );
15951605 ea .arg = arg ;
15961606 ea .addr_count = 0 ;
15971607 ea .forceit = TRUE; /* no mapping */
@@ -1601,6 +1611,7 @@ channel_exe_cmd(channel_T *channel, int part, typval_T *argv)
16011611 {
16021612 exarg_T ea ;
16031613
1614+ ch_log (channel , "redraw" );
16041615 ea .forceit = * arg != NUL ;
16051616 ex_redraw (& ea );
16061617 showruler (FALSE);
@@ -1642,11 +1653,18 @@ channel_exe_cmd(channel_T *channel, int part, typval_T *argv)
16421653 /* Don't pollute the display with errors. */
16431654 ++ emsg_skip ;
16441655 if (!is_call )
1656+ {
1657+ ch_logs (channel , "Evaluating expression '%s'" , (char * )arg );
16451658 tv = eval_expr (arg , NULL );
1646- else if (func_call (arg , & argv [2 ], NULL , NULL , & res_tv ) == OK )
1647- tv = & res_tv ;
1659+ }
16481660 else
1649- tv = NULL ;
1661+ {
1662+ ch_logs (channel , "Calling '%s'" , (char * )arg );
1663+ if (func_call (arg , & argv [2 ], NULL , NULL , & res_tv ) == OK )
1664+ tv = & res_tv ;
1665+ else
1666+ tv = NULL ;
1667+ }
16501668
16511669 if (argv [id_idx ].v_type == VAR_NUMBER )
16521670 {
@@ -1848,10 +1866,7 @@ may_invoke_callback(channel_T *channel, int part)
18481866
18491867 if (argv [0 ].v_type == VAR_STRING )
18501868 {
1851- char_u * cmd = argv [0 ].vval .v_string ;
1852-
18531869 /* ["cmd", arg] or ["cmd", arg, arg] or ["cmd", arg, arg, arg] */
1854- ch_logs (channel , "Executing %s command" , (char * )cmd );
18551870 channel_exe_cmd (channel , part , argv );
18561871 free_tv (listtv );
18571872 return TRUE;
0 commit comments