mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -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:
@@ -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;
|
||||||
|
@@ -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 */
|
||||||
|
10
src/main.c
10
src/main.c
@@ -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. */
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user