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

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)
This commit is contained in:
Bram Moolenaar
2017-10-26 14:28:32 +02:00
parent 6ce6504808
commit d99388ba85
4 changed files with 14 additions and 4 deletions

View File

@@ -131,6 +131,7 @@ do_debug(char_u *cmd)
redir_off = TRUE; /* don't redirect debug commands */ redir_off = TRUE; /* don't redirect debug commands */
State = NORMAL; State = NORMAL;
debug_mode = TRUE;
if (!debug_did_msg) if (!debug_did_msg)
MSG(_("Entering Debug mode. Type \"cont\" to continue.")); MSG(_("Entering Debug mode. Type \"cont\" to continue."));
@@ -319,6 +320,7 @@ do_debug(char_u *cmd)
msg_scroll = save_msg_scroll; msg_scroll = save_msg_scroll;
lines_left = Rows - 1; lines_left = Rows - 1;
State = save_State; State = save_State;
debug_mode = FALSE;
did_emsg = save_did_emsg; did_emsg = save_did_emsg;
cmd_silent = save_cmd_silent; cmd_silent = save_cmd_silent;
msg_silent = save_msg_silent; msg_silent = save_msg_silent;

View File

@@ -922,9 +922,13 @@ EXTERN char_u composing_hangul_buffer[5];
* "Visual_mode" When State is NORMAL or INSERT. * "Visual_mode" When State is NORMAL or INSERT.
* "finish_op" When State is NORMAL, after typing the operator and before * "finish_op" When State is NORMAL, after typing the operator and before
* typing the motion command. * typing the motion command.
* "debug_mode" Debug mode.
*/ */
EXTERN int State INIT(= NORMAL); /* This is the current state of the EXTERN int State INIT(= NORMAL); /* This is the current state of the
* command interpreter. */ * 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 int finish_op INIT(= FALSE);/* TRUE while an operator is pending */
EXTERN long opcount INIT(= 0); /* count for pending operator */ EXTERN long opcount INIT(= 0); /* count for pending operator */

View File

@@ -4180,11 +4180,12 @@ eval_client_expr_to_string(char_u *expr)
char_u *res; char_u *res;
int save_dbl = debug_break_level; int save_dbl = debug_break_level;
int save_ro = redir_off; int save_ro = redir_off;
void *fc; void *fc = NULL;
/* Evaluate the expression at the toplevel, don't use variables local to /* Evaluate the expression at the toplevel, don't use variables local to
* the calling function. */ * the calling function. Except when in debug mode. */
fc = clear_current_funccal(); if (!debug_mode)
fc = clear_current_funccal();
/* Disable debugging, otherwise Vim hangs, waiting for "cont" to be /* Disable debugging, otherwise Vim hangs, waiting for "cont" to be
* typed. */ * typed. */
@@ -4201,7 +4202,8 @@ eval_client_expr_to_string(char_u *expr)
--emsg_silent; --emsg_silent;
if (emsg_silent < 0) if (emsg_silent < 0)
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 /* A client can tell us to redraw, but not to display the cursor, so do
* that here. */ * that here. */

View File

@@ -761,6 +761,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 */
/**/
1217,
/**/ /**/
1216, 1216,
/**/ /**/