Patch 8.2.0073
Problem:    Initializing globals with COMMA is clumsy.
Solution:   Use INIT2(), INIT3(), etc.
Files:      src/vim.h, src/globals.h


*** ../vim-8.2.0072/src/vim.h   2019-12-31 21:27:09.555256491 +0100
--- src/vim.h   2020-01-01 15:42:53.214588255 +0100
***************
*** 1775,1785 ****
  #ifndef EXTERN
  # define EXTERN extern
  # define INIT(x)
  #else
  # ifndef INIT
  #  define INIT(x) x
  #  define DO_INIT
- #  define COMMA ,
  # endif
  #endif
  
--- 1775,1792 ----
  #ifndef EXTERN
  # define EXTERN extern
  # define INIT(x)
+ # define INIT2(a, b)
+ # define INIT3(a, b, c)
+ # define INIT4(a, b, c, d)
+ # define INIT5(a, b, c, d, e)
  #else
  # ifndef INIT
  #  define INIT(x) x
+ #  define INIT2(a, b) = {a, b}
+ #  define INIT3(a, b, c) = {a, b, c}
+ #  define INIT4(a, b, c, d) = {a, b, c, d}
+ #  define INIT5(a, b, c, d, e) = {a, b, c, d, e}
  #  define DO_INIT
  # endif
  #endif
  
*** ../vim-8.2.0072/src/globals.h       2019-12-29 23:04:20.286639911 +0100
--- src/globals.h       2020-01-01 15:42:31.442686447 +0100
***************
*** 270,276 ****
   * Stack of execution contexts.  Each entry is an estack_T.
   * Current context is at ga_len - 1.
   */
! EXTERN garray_T       exestack INIT(= {0 COMMA 0 COMMA sizeof(estack_T) COMMA 
50 COMMA NULL});
  // name of error message source
  #define SOURCING_NAME (((estack_T *)exestack.ga_data)[exestack.ga_len - 
1].es_name)
  // line number in the message source or zero
--- 270,276 ----
   * Stack of execution contexts.  Each entry is an estack_T.
   * Current context is at ga_len - 1.
   */
! EXTERN garray_T       exestack INIT5(0, 0, sizeof(estack_T), 50, NULL);
  // name of error message source
  #define SOURCING_NAME (((estack_T *)exestack.ga_data)[exestack.ga_len - 
1].es_name)
  // line number in the message source or zero
***************
*** 285,291 ****
  # ifdef FEAT_PROFILE
  EXTERN int    do_profiling INIT(= PROF_NONE); // PROF_ values
  # endif
! EXTERN garray_T script_items INIT(= {0 COMMA 0 COMMA sizeof(scriptitem_T) 
COMMA 4 COMMA NULL});
  #define SCRIPT_ITEM(id) (((scriptitem_T *)script_items.ga_data)[(id) - 1])
  #define FUNCLINE(fp, j)       ((char_u **)(fp->uf_lines.ga_data))[j]
  
--- 285,291 ----
  # ifdef FEAT_PROFILE
  EXTERN int    do_profiling INIT(= PROF_NONE); // PROF_ values
  # endif
! EXTERN garray_T script_items INIT5(0, 0, sizeof(scriptitem_T), 4, NULL);
  #define SCRIPT_ITEM(id) (((scriptitem_T *)script_items.ga_data)[(id) - 1])
  #define FUNCLINE(fp, j)       ((char_u **)(fp->uf_lines.ga_data))[j]
  
***************
*** 375,381 ****
  EXTERN int    garbage_collect_at_exit INIT(= FALSE);
  
  // Script CTX being sourced or was sourced to define the current function.
! EXTERN sctx_T current_sctx INIT(= {0 COMMA 0 COMMA 0 COMMA 0});
  #endif
  
  EXTERN int    did_source_packages INIT(= FALSE);
--- 375,381 ----
  EXTERN int    garbage_collect_at_exit INIT(= FALSE);
  
  // Script CTX being sourced or was sourced to define the current function.
! EXTERN sctx_T current_sctx INIT4(0, 0, 0, 0);
  #endif
  
  EXTERN int    did_source_packages INIT(= FALSE);
***************
*** 468,474 ****
  
  // When deleting the current buffer, another one must be loaded.  If we know
  // which one is preferred, au_new_curbuf is set to it
! EXTERN bufref_T       au_new_curbuf INIT(= {NULL COMMA 0 COMMA 0});
  
  // When deleting a buffer/window and autocmd_busy is TRUE, do not free the
  // buffer/window. but link it in the list starting with
--- 468,474 ----
  
  // When deleting the current buffer, another one must be loaded.  If we know
  // which one is preferred, au_new_curbuf is set to it
! EXTERN bufref_T       au_new_curbuf INIT3(NULL, 0, 0);
  
  // When deleting a buffer/window and autocmd_busy is TRUE, do not free the
  // buffer/window. but link it in the list starting with
***************
*** 1412,1418 ****
  EXTERN char   psepc INIT(= '\\');     // normal path separator character
  EXTERN char   psepcN INIT(= '/');     // abnormal path separator character
  // normal path separator string
! EXTERN char   pseps[2] INIT(= {'\\' COMMA 0});
  #endif
  
  // Set to TRUE when an operator is being executed with virtual editing, MAYBE
--- 1412,1418 ----
  EXTERN char   psepc INIT(= '\\');     // normal path separator character
  EXTERN char   psepcN INIT(= '/');     // abnormal path separator character
  // normal path separator string
! EXTERN char   pseps[2] INIT2('\\', 0);
  #endif
  
  // Set to TRUE when an operator is being executed with virtual editing, MAYBE
*** ../vim-8.2.0072/src/version.c       2020-01-01 15:26:27.927800691 +0100
--- src/version.c       2020-01-01 15:46:17.417683348 +0100
***************
*** 744,745 ****
--- 744,747 ----
  {   /* Add new patch number below this line */
+ /**/
+     73,
  /**/

-- 
Two cows are standing together in a field.  One asks the other:
"So what do you think about this Mad Cow Disease?"
The other replies: "That doesn't concern me. I'm a helicopter."

 /// 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202001011447.001ElEnB022951%40masaka.moolenaar.net.

Raspunde prin e-mail lui