Patch 8.1.1200
Problem:    Old style comments in debugger source.
Solution:   Use new style comments. (Yegappan Lakshmanan, closes #4286)
Files:      src/README.md, src/debugger.c


*** ../vim-8.1.1199/src/README.md       2019-03-31 15:31:54.592053004 +0200
--- src/README.md       2019-04-23 18:36:55.603847919 +0200
***************
*** 25,30 ****
--- 25,31 ----
  --------- | -----------
  autocmd.c     | autocommands
  buffer.c      | manipulating buffers (loaded files)
+ debugger.c    | vim script debugger
  diff.c                | diff mode (vimdiff)
  eval.c                | expression evaluation
  fileio.c      | reading and writing files
*** ../vim-8.1.1199/src/debugger.c      2019-04-21 11:34:36.335256531 +0200
--- src/debugger.c      2019-04-23 18:36:55.603847919 +0200
***************
*** 14,28 ****
  #include "vim.h"
  
  #if defined(FEAT_EVAL) || defined(PROTO)
! static int debug_greedy = FALSE;      /* batch mode debugging: don't save
!                                          and restore typeahead. */
  static void do_setdebugtracelevel(char_u *arg);
  static void do_checkbacktracelevel(void);
  static void do_showbacktrace(char_u *cmd);
  
! static char_u *debug_oldval = NULL;   /* old and newval for debug expressions 
*/
  static char_u *debug_newval = NULL;
! static int     debug_expr   = 0;        /* use debug_expr */
  
      int
  has_watchexpr(void)
--- 14,28 ----
  #include "vim.h"
  
  #if defined(FEAT_EVAL) || defined(PROTO)
! static int debug_greedy = FALSE;      // batch mode debugging: don't save
!                                       // and restore typeahead.
  static void do_setdebugtracelevel(char_u *arg);
  static void do_checkbacktracelevel(void);
  static void do_showbacktrace(char_u *cmd);
  
! static char_u *debug_oldval = NULL;   // old and newval for debug expressions
  static char_u *debug_newval = NULL;
! static int     debug_expr   = 0;        // use debug_expr
  
      int
  has_watchexpr(void)
***************
*** 65,91 ****
  #define CMD_DOWN      10
  
  #ifdef ALWAYS_USE_GUI
!     /* Can't do this when there is no terminal for input/output. */
      if (!gui.in_use)
      {
!       /* Break as soon as possible. */
        debug_break_level = 9999;
        return;
      }
  #endif
  
!     /* Make sure we are in raw mode and start termcap mode.  Might have side
!      * effects... */
      settmode(TMODE_RAW);
      starttermcap();
  
!     ++RedrawingDisabled;      /* don't redisplay the window */
!     ++no_wait_return;         /* don't wait for return */
!     did_emsg = FALSE;         /* don't use error from debugged stuff */
!     cmd_silent = FALSE;               /* display commands */
!     msg_silent = FALSE;               /* display messages */
!     emsg_silent = FALSE;      /* display error messages */
!     redir_off = TRUE;         /* don't redirect debug commands */
  
      State = NORMAL;
      debug_mode = TRUE;
--- 65,91 ----
  #define CMD_DOWN      10
  
  #ifdef ALWAYS_USE_GUI
!     // Can't do this when there is no terminal for input/output.
      if (!gui.in_use)
      {
!       // Break as soon as possible.
        debug_break_level = 9999;
        return;
      }
  #endif
  
!     // Make sure we are in raw mode and start termcap mode.  Might have side
!     // effects...
      settmode(TMODE_RAW);
      starttermcap();
  
!     ++RedrawingDisabled;      // don't redisplay the window
!     ++no_wait_return;         // don't wait for return
!     did_emsg = FALSE;         // don't use error from debugged stuff
!     cmd_silent = FALSE;               // display commands
!     msg_silent = FALSE;               // display messages
!     emsg_silent = FALSE;      // display error messages
!     redir_off = TRUE;         // don't redirect debug commands
  
      State = NORMAL;
      debug_mode = TRUE;
***************
*** 110,128 ****
        smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd);
      else
        smsg(_("cmd: %s"), cmd);
!     /*
!      * Repeat getting a command and executing it.
!      */
      for (;;)
      {
        msg_scroll = TRUE;
        need_wait_return = FALSE;
  
!       /* Save the current typeahead buffer and replace it with an empty one.
!        * This makes sure we get input from the user here and don't interfere
!        * with the commands being executed.  Reset "ex_normal_busy" to avoid
!        * the side effects of using ":normal". Save the stuff buffer and make
!        * it empty. Set ignore_script to avoid reading from script input. */
        save_ex_normal_busy = ex_normal_busy;
        ex_normal_busy = 0;
        if (!debug_greedy)
--- 110,127 ----
        smsg(_("line %ld: %s"), (long)sourcing_lnum, cmd);
      else
        smsg(_("cmd: %s"), cmd);
! 
!     // Repeat getting a command and executing it.
      for (;;)
      {
        msg_scroll = TRUE;
        need_wait_return = FALSE;
  
!       // Save the current typeahead buffer and replace it with an empty one.
!       // This makes sure we get input from the user here and don't interfere
!       // with the commands being executed.  Reset "ex_normal_busy" to avoid
!       // the side effects of using ":normal". Save the stuff buffer and make
!       // it empty. Set ignore_script to avoid reading from script input.
        save_ex_normal_busy = ex_normal_busy;
        ex_normal_busy = 0;
        if (!debug_greedy)
***************
*** 147,155 ****
        msg_starthere();
        if (cmdline != NULL)
        {
!           /* If this is a debug command, set "last_cmd".
!            * If not, reset "last_cmd".
!            * For a blank line use previous command. */
            p = skipwhite(cmdline);
            if (*p != NUL)
            {
--- 146,154 ----
        msg_starthere();
        if (cmdline != NULL)
        {
!           // If this is a debug command, set "last_cmd".
!           // If not, reset "last_cmd".
!           // For a blank line use previous command.
            p = skipwhite(cmdline);
            if (*p != NUL)
            {
***************
*** 202,208 ****
                }
                if (last_cmd != 0)
                {
!                   /* Check that the tail matches. */
                    ++p;
                    while (*p != NUL && *p == *tail)
                    {
--- 201,207 ----
                }
                if (last_cmd != 0)
                {
!                   // Check that the tail matches.
                    ++p;
                    while (*p != NUL && *p == *tail)
                    {
***************
*** 216,223 ****
  
            if (last_cmd != 0)
            {
!               /* Execute debug command: decided where to break next and
!                * return. */
                switch (last_cmd)
                {
                    case CMD_CONT:
--- 215,222 ----
  
            if (last_cmd != 0)
            {
!               // Execute debug command: decided where to break next and
!               // return.
                switch (last_cmd)
                {
                    case CMD_CONT:
***************
*** 239,245 ****
                    case CMD_INTERRUPT:
                        got_int = TRUE;
                        debug_break_level = 9999;
!                       /* Do not repeat ">interrupt" cmd, continue stepping. */
                        last_cmd = CMD_STEP;
                        break;
                    case CMD_BACKTRACE:
--- 238,244 ----
                    case CMD_INTERRUPT:
                        got_int = TRUE;
                        debug_break_level = 9999;
!                       // Do not repeat ">interrupt" cmd, continue stepping.
                        last_cmd = CMD_STEP;
                        break;
                    case CMD_BACKTRACE:
***************
*** 265,276 ****
                        do_checkbacktracelevel();
                        continue;
                }
!               /* Going out reset backtrace_level */
                debug_backtrace_level = 0;
                break;
            }
  
!           /* don't debug this command */
            n = debug_break_level;
            debug_break_level = -1;
            (void)do_cmdline(cmdline, getexline, NULL,
--- 264,275 ----
                        do_checkbacktracelevel();
                        continue;
                }
!               // Going out reset backtrace_level
                debug_backtrace_level = 0;
                break;
            }
  
!           // don't debug this command
            n = debug_break_level;
            debug_break_level = -1;
            (void)do_cmdline(cmdline, getexline, NULL,
***************
*** 295,302 ****
      emsg_silent = save_emsg_silent;
      redir_off = save_redir_off;
  
!     /* Only print the message again when typing a command before coming back
!      * here. */
      debug_did_msg = TRUE;
  }
  
--- 294,301 ----
      emsg_silent = save_emsg_silent;
      redir_off = save_redir_off;
  
!     // Only print the message again when typing a command before coming back
!     // here.
      debug_did_msg = TRUE;
  }
  
***************
*** 428,434 ****
      {
        if (!eap->skip)
        {
!           /* replace K_SNR with "<SNR>" */
            if (debug_breakpoint_name[0] == K_SPECIAL
                    && debug_breakpoint_name[1] == KS_EXTRA
                    && debug_breakpoint_name[2] == (int)KE_SNR)
--- 427,433 ----
      {
        if (!eap->skip)
        {
!           // replace K_SNR with "<SNR>"
            if (debug_breakpoint_name[0] == K_SPECIAL
                    && debug_breakpoint_name[1] == KS_EXTRA
                    && debug_breakpoint_name[2] == (int)KE_SNR)
***************
*** 472,485 ****
  
      if (debug_skipped)
      {
!       /*
!        * Save the value of got_int and reset it.  We don't want a previous
!        * interruption cause flushing the input buffer.
!        */
        prev_got_int = got_int;
        got_int = FALSE;
        debug_breakpoint_name = debug_skipped_name;
!       /* eap->skip is TRUE */
        eap->skip = FALSE;
        (void)dbg_check_breakpoint(eap);
        eap->skip = TRUE;
--- 471,482 ----
  
      if (debug_skipped)
      {
!       // Save the value of got_int and reset it.  We don't want a previous
!       // interruption cause flushing the input buffer.
        prev_got_int = got_int;
        got_int = FALSE;
        debug_breakpoint_name = debug_skipped_name;
!       // eap->skip is TRUE
        eap->skip = FALSE;
        (void)dbg_check_breakpoint(eap);
        eap->skip = TRUE;
***************
*** 495,519 ****
   */
  struct debuggy
  {
!     int               dbg_nr;         /* breakpoint number */
!     int               dbg_type;       /* DBG_FUNC, DBG_FILE or DBG_EXPR */
!     char_u    *dbg_name;      /* function, expression or file name */
!     regprog_T *dbg_prog;      /* regexp program */
!     linenr_T  dbg_lnum;       /* line number in function or file */
!     int               dbg_forceit;    /* ! used */
  #ifdef FEAT_EVAL
!     typval_T    *dbg_val;       /* last result of watchexpression */
  #endif
!     int               dbg_level;      /* stored nested level for expr */
  };
  
  static garray_T dbg_breakp = {0, 0, sizeof(struct debuggy), 4, NULL};
  #define BREAKP(idx)           (((struct debuggy *)dbg_breakp.ga_data)[idx])
  #define DEBUGGY(gap, idx)     (((struct debuggy *)gap->ga_data)[idx])
! static int last_breakp = 0;   /* nr of last defined breakpoint */
  
  #ifdef FEAT_PROFILE
! /* Profiling uses file and func names similar to breakpoints. */
  static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
  #endif
  #define DBG_FUNC      1
--- 492,516 ----
   */
  struct debuggy
  {
!     int               dbg_nr;         // breakpoint number
!     int               dbg_type;       // DBG_FUNC, DBG_FILE or DBG_EXPR
!     char_u    *dbg_name;      // function, expression or file name
!     regprog_T *dbg_prog;      // regexp program
!     linenr_T  dbg_lnum;       // line number in function or file
!     int               dbg_forceit;    // ! used
  #ifdef FEAT_EVAL
!     typval_T    *dbg_val;       // last result of watchexpression
  #endif
!     int               dbg_level;      // stored nested level for expr
  };
  
  static garray_T dbg_breakp = {0, 0, sizeof(struct debuggy), 4, NULL};
  #define BREAKP(idx)           (((struct debuggy *)dbg_breakp.ga_data)[idx])
  #define DEBUGGY(gap, idx)     (((struct debuggy *)gap->ga_data)[idx])
! static int last_breakp = 0;   // nr of last defined breakpoint
  
  #ifdef FEAT_PROFILE
! // Profiling uses file and func names similar to breakpoints.
  static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
  #endif
  #define DBG_FUNC      1
***************
*** 531,537 ****
      static int
  dbg_parsearg(
      char_u    *arg,
!     garray_T  *gap)       /* either &dbg_breakp or &prof_ga */
  {
      char_u    *p = arg;
      char_u    *q;
--- 528,534 ----
      static int
  dbg_parsearg(
      char_u    *arg,
!     garray_T  *gap)       // either &dbg_breakp or &prof_ga
  {
      char_u    *p = arg;
      char_u    *q;
***************
*** 542,548 ****
        return FAIL;
      bp = &DEBUGGY(gap, gap->ga_len);
  
!     /* Find "func" or "file". */
      if (STRNCMP(p, "func", 4) == 0)
        bp->dbg_type = DBG_FUNC;
      else if (STRNCMP(p, "file", 4) == 0)
--- 539,545 ----
        return FAIL;
      bp = &DEBUGGY(gap, gap->ga_len);
  
!     // Find "func" or "file".
      if (STRNCMP(p, "func", 4) == 0)
        bp->dbg_type = DBG_FUNC;
      else if (STRNCMP(p, "file", 4) == 0)
***************
*** 574,580 ****
      }
      p = skipwhite(p + 4);
  
!     /* Find optional line number. */
      if (here)
        bp->dbg_lnum = curwin->w_cursor.lnum;
      else if (
--- 571,577 ----
      }
      p = skipwhite(p + 4);
  
!     // Find optional line number.
      if (here)
        bp->dbg_lnum = curwin->w_cursor.lnum;
      else if (
***************
*** 589,595 ****
      else
        bp->dbg_lnum = 0;
  
!     /* Find the function or file name.  Don't accept a function name with (). 
*/
      if ((!here && *p == NUL)
            || (here && *p != NUL)
            || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL))
--- 586,592 ----
      else
        bp->dbg_lnum = 0;
  
!     // Find the function or file name.  Don't accept a function name with ().
      if ((!here && *p == NUL)
            || (here && *p != NUL)
            || (bp->dbg_type == DBG_FUNC && strstr((char *)p, "()") != NULL))
***************
*** 610,618 ****
      }
      else
      {
!       /* Expand the file name in the same way as do_source().  This means
!        * doing it twice, so that $DIR/file gets expanded when $DIR is
!        * "~/dir". */
        q = expand_env_save(p);
        if (q == NULL)
            return FAIL;
--- 607,615 ----
      }
      else
      {
!       // Expand the file name in the same way as do_source().  This means
!       // doing it twice, so that $DIR/file gets expanded when $DIR is
!       // "~/dir".
        q = expand_env_save(p);
        if (q == NULL)
            return FAIL;
***************
*** 667,673 ****
                vim_free(bp->dbg_name);
            else
            {
!               if (bp->dbg_lnum == 0)  /* default line number is 1 */
                    bp->dbg_lnum = 1;
  #ifdef FEAT_PROFILE
                if (eap->cmdidx != CMD_profile)
--- 664,670 ----
                vim_free(bp->dbg_name);
            else
            {
!               if (bp->dbg_lnum == 0)  // default line number is 1
                    bp->dbg_lnum = 1;
  #ifdef FEAT_PROFILE
                if (eap->cmdidx != CMD_profile)
***************
*** 681,687 ****
        }
        else
        {
!           /* DBG_EXPR */
            DEBUGGY(gap, gap->ga_len++).dbg_nr = ++last_breakp;
            ++debug_tick;
        }
--- 678,684 ----
        }
        else
        {
!           // DBG_EXPR
            DEBUGGY(gap, gap->ga_len++).dbg_nr = ++last_breakp;
            ++debug_tick;
        }
***************
*** 727,733 ****
  
      if (vim_isdigit(*eap->arg))
      {
!       /* ":breakdel {nr}" */
        nr = atol((char *)eap->arg);
        for (i = 0; i < gap->ga_len; ++i)
            if (DEBUGGY(gap, i).dbg_nr == nr)
--- 724,730 ----
  
      if (vim_isdigit(*eap->arg))
      {
!       // ":breakdel {nr}"
        nr = atol((char *)eap->arg);
        for (i = 0; i < gap->ga_len; ++i)
            if (DEBUGGY(gap, i).dbg_nr == nr)
***************
*** 743,749 ****
      }
      else
      {
!       /* ":breakdel {func|file|expr} [lnum] {name}" */
        if (dbg_parsearg(eap->arg, gap) == FAIL)
            return;
        bp = &DEBUGGY(gap, gap->ga_len);
--- 740,746 ----
      }
      else
      {
!       // ":breakdel {func|file|expr} [lnum] {name}"
        if (dbg_parsearg(eap->arg, gap) == FAIL)
            return;
        bp = &DEBUGGY(gap, gap->ga_len);
***************
*** 789,795 ****
                break;
        }
  
!       /* If all breakpoints were removed clear the array. */
        if (gap->ga_len == 0)
            ga_clear(gap);
      }
--- 786,792 ----
                break;
        }
  
!       // If all breakpoints were removed clear the array.
        if (gap->ga_len == 0)
            ga_clear(gap);
      }
***************
*** 830,838 ****
   */
      linenr_T
  dbg_find_breakpoint(
!     int               file,       /* TRUE for a file, FALSE for a function */
!     char_u    *fname,     /* file or function name */
!     linenr_T  after)      /* after this line number */
  {
      return debuggy_find(file, fname, after, &dbg_breakp, NULL);
  }
--- 827,835 ----
   */
      linenr_T
  dbg_find_breakpoint(
!     int               file,       // TRUE for a file, FALSE for a function
!     char_u    *fname,     // file or function name
!     linenr_T  after)      // after this line number
  {
      return debuggy_find(file, fname, after, &dbg_breakp, NULL);
  }
***************
*** 843,851 ****
   */
      int
  has_profiling(
!     int               file,       /* TRUE for a file, FALSE for a function */
!     char_u    *fname,     /* file or function name */
!     int               *fp)        /* return: forceit */
  {
      return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
                                                              != (linenr_T)0);
--- 840,848 ----
   */
      int
  has_profiling(
!     int               file,       // TRUE for a file, FALSE for a function
!     char_u    *fname,     // file or function name
!     int               *fp)        // return: forceit
  {
      return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
                                                              != (linenr_T)0);
***************
*** 857,867 ****
   */
      static linenr_T
  debuggy_find(
!     int               file,       /* TRUE for a file, FALSE for a function */
!     char_u    *fname,     /* file or function name */
!     linenr_T  after,      /* after this line number */
!     garray_T  *gap,       /* either &dbg_breakp or &prof_ga */
!     int               *fp)        /* if not NULL: return forceit */
  {
      struct debuggy *bp;
      int               i;
--- 854,864 ----
   */
      static linenr_T
  debuggy_find(
!     int               file,       // TRUE for a file, FALSE for a function
!     char_u    *fname,     // file or function name
!     linenr_T  after,      // after this line number
!     garray_T  *gap,       // either &dbg_breakp or &prof_ga
!     int               *fp)        // if not NULL: return forceit
  {
      struct debuggy *bp;
      int               i;
***************
*** 869,879 ****
      char_u    *name = fname;
      int               prev_got_int;
  
!     /* Return quickly when there are no breakpoints. */
      if (gap->ga_len == 0)
        return (linenr_T)0;
  
!     /* Replace K_SNR in function name with "<SNR>". */
      if (!file && fname[0] == K_SPECIAL)
      {
        name = alloc((unsigned)STRLEN(fname) + 3);
--- 866,876 ----
      char_u    *name = fname;
      int               prev_got_int;
  
!     // Return quickly when there are no breakpoints.
      if (gap->ga_len == 0)
        return (linenr_T)0;
  
!     // Replace K_SNR in function name with "<SNR>".
      if (!file && fname[0] == K_SPECIAL)
      {
        name = alloc((unsigned)STRLEN(fname) + 3);
***************
*** 888,895 ****
  
      for (i = 0; i < gap->ga_len; ++i)
      {
!       /* Skip entries that are not useful or are for a line that is beyond
!        * an already found breakpoint. */
        bp = &DEBUGGY(gap, i);
        if (((bp->dbg_type == DBG_FILE) == file &&
                bp->dbg_type != DBG_EXPR && (
--- 885,892 ----
  
      for (i = 0; i < gap->ga_len; ++i)
      {
!       // Skip entries that are not useful or are for a line that is beyond
!       // an already found breakpoint.
        bp = &DEBUGGY(gap, i);
        if (((bp->dbg_type == DBG_FILE) == file &&
                bp->dbg_type != DBG_EXPR && (
***************
*** 898,908 ****
  #endif
                (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum)))))
        {
!           /*
!            * Save the value of got_int and reset it.  We don't want a
!            * previous interruption cancel matching, only hitting CTRL-C
!            * while matching should abort it.
!            */
            prev_got_int = got_int;
            got_int = FALSE;
            if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0))
--- 895,903 ----
  #endif
                (bp->dbg_lnum > after && (lnum == 0 || bp->dbg_lnum < lnum)))))
        {
!           // Save the value of got_int and reset it.  We don't want a
!           // previous interruption cancel matching, only hitting CTRL-C
!           // while matching should abort it.
            prev_got_int = got_int;
            got_int = FALSE;
            if (vim_regexec_prog(&bp->dbg_prog, FALSE, name, (colnr_T)0))
***************
*** 942,949 ****
  
                        line = TRUE;
                        debug_oldval = typval_tostring(bp->dbg_val);
!                       /* Need to evaluate again, typval_compare() overwrites
!                        * "tv". */
                        v = eval_expr(bp->dbg_name, NULL);
                        debug_newval = typval_tostring(v);
                        free_tv(bp->dbg_val);
--- 937,944 ----
  
                        line = TRUE;
                        debug_oldval = typval_tostring(bp->dbg_val);
!                       // Need to evaluate again, typval_compare() overwrites
!                       // "tv".
                        v = eval_expr(bp->dbg_name, NULL);
                        debug_newval = typval_tostring(v);
                        free_tv(bp->dbg_val);
***************
*** 983,989 ****
      void
  dbg_breakpoint(char_u *name, linenr_T lnum)
  {
!     /* We need to check if this line is actually executed in do_one_cmd() */
      debug_breakpoint_name = name;
      debug_breakpoint_lnum = lnum;
  }
--- 978,984 ----
      void
  dbg_breakpoint(char_u *name, linenr_T lnum)
  {
!     // We need to check if this line is actually executed in do_one_cmd()
      debug_breakpoint_name = name;
      debug_breakpoint_lnum = lnum;
  }
*** ../vim-8.1.1199/src/version.c       2019-04-23 16:35:59.272261198 +0200
--- src/version.c       2019-04-23 18:38:15.491378846 +0200
***************
*** 773,774 ****
--- 773,776 ----
  {   /* Add new patch number below this line */
+ /**/
+     1200,
  /**/

-- 
What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics'
meaning 'bloodsucking creatures'.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui