Permalink
Browse files

patch 8.0.1217: can't use remote eval to inspect vars in debug mode

Problem:    Can't use remote eval to inspect vars in debug mode.
Solution:   Don't discard the call stack in debug mode. (closes #2237, #2247)
  • Loading branch information...
brammool committed Oct 26, 2017
1 parent 6ce6504 commit d99388ba8535a6fecf7d0bf7b982832c0b816062
Showing with 14 additions and 4 deletions.
  1. +2 −0 src/ex_cmds2.c
  2. +4 −0 src/globals.h
  3. +6 −4 src/main.c
  4. +2 −0 src/version.c
View
@@ -131,6 +131,7 @@ do_debug(char_u *cmd)
redir_off = TRUE; /* don't redirect debug commands */
State = NORMAL;
debug_mode = TRUE;
if (!debug_did_msg)
MSG(_("Entering Debug mode. Type \"cont\" to continue."));
@@ -319,6 +320,7 @@ do_debug(char_u *cmd)
msg_scroll = save_msg_scroll;
lines_left = Rows - 1;
State = save_State;
debug_mode = FALSE;
did_emsg = save_did_emsg;
cmd_silent = save_cmd_silent;
msg_silent = save_msg_silent;
View
@@ -922,9 +922,13 @@ EXTERN char_u composing_hangul_buffer[5];
* "Visual_mode" When State is NORMAL or INSERT.
* "finish_op" When State is NORMAL, after typing the operator and before
* typing the motion command.
* "debug_mode" Debug mode.
*/
EXTERN int State INIT(= NORMAL); /* This is the current state of the
* command interpreter. */
#ifdef FEAT_EVAL
EXTERN int debug_mode INIT(= FALSE);
#endif
EXTERN int finish_op INIT(= FALSE);/* TRUE while an operator is pending */
EXTERN long opcount INIT(= 0); /* count for pending operator */
View
@@ -4180,11 +4180,12 @@ eval_client_expr_to_string(char_u *expr)
char_u *res;
int save_dbl = debug_break_level;
int save_ro = redir_off;
void *fc;
void *fc = NULL;
/* Evaluate the expression at the toplevel, don't use variables local to
* the calling function. */
fc = clear_current_funccal();
* the calling function. Except when in debug mode. */
if (!debug_mode)
fc = clear_current_funccal();
/* Disable debugging, otherwise Vim hangs, waiting for "cont" to be
* typed. */
@@ -4201,7 +4202,8 @@ eval_client_expr_to_string(char_u *expr)
--emsg_silent;
if (emsg_silent < 0)
emsg_silent = 0;
restore_current_funccal(fc);
if (fc != NULL)
restore_current_funccal(fc);
/* A client can tell us to redraw, but not to display the cursor, so do
* that here. */
View
@@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1217,
/**/
1216,
/**/

0 comments on commit d99388b

Please sign in to comment.