Re: Patch 8.2.3263

2021-07-31 Fir de Conversatie John Marriott


On 01-Aug-2021 06:51, Bram Moolenaar wrote:

Patch 8.2.3263
Problem:Vim9: "..=" does not accept same types as the ".." operator.
Solution:   Convert value to string like ".." does. (issue #8664)
Files:  src/vim9compile.c, src/testdir/test_vim9_assign.vim,
 src/testdir/test_vim9_disassemble.vim


After this patch mingw64 (gcc 11.2.0) spits out this warning:

gcc -c -I. -Iproto -DWIN32 -DWINVER=0x0603 -D_WIN32_WINNT=0x0603 
-DHAVE_PATHDEF -DFEAT_NORMAL -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO 
-pipe -march=native -Wall -O3 -fomit-frame-pointer -freg-struct-return 
-fpie -fPIE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD vim9compile.c -o 
gobjnative/vim9compile.o

vim9compile.c: In function 'compile_assignment':
vim9compile.c:7114:21: warning: 'stacktype' may be used uninitialized in 
this function [-Wmaybe-uninitialized]

 7114 | if (generate_add_instr(cctx,
  | ^~~~
 7115 | operator_type(lhs.lhs_member_type, stacktype),
  | ~~
 7116 |    lhs.lhs_member_type, 
stacktype) == FAIL)

  | ~~~


The attached patch tries to fix it.

Cheers
John

--
--
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/85052b90-939f-50fd-1521-a2bfc0df138a%40internode.on.net.
--- vim9compile.c.orig  2021-08-01 07:03:21.539288100 +1000
+++ vim9compile.c   2021-08-01 07:13:50.975729000 +1000
@@ -7083,7 +7083,7 @@
if (oplen > 0 && *op != '=')
{
type_T  *expected;
-   type_T  *stacktype;
+   type_T  *stacktype = NULL;
 
if (*op == '.')
{


Patch 8.2.3263

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3263
Problem:Vim9: "..=" does not accept same types as the ".." operator.
Solution:   Convert value to string like ".." does. (issue #8664)
Files:  src/vim9compile.c, src/testdir/test_vim9_assign.vim,
src/testdir/test_vim9_disassemble.vim


*** ../vim-8.2.3262/src/vim9compile.c   2021-07-28 21:25:45.356602806 +0200
--- src/vim9compile.c   2021-07-31 22:32:30.868941623 +0200
***
*** 7086,7103 
type_T  *stacktype;
  
if (*op == '.')
!   expected = &t_string;
else
expected = lhs.lhs_member_type;
!   stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
!   if (
  #ifdef FEAT_FLOAT
!   // If variable is float operation with number is OK.
!   !(expected == &t_float && stacktype == &t_number) &&
  #endif
need_type(stacktype, expected, -1, 0, cctx,
 FALSE, FALSE) == FAIL)
!   goto theend;
  
if (*op == '.')
{
--- 7086,7108 
type_T  *stacktype;
  
if (*op == '.')
!   {
!   if (may_generate_2STRING(-1, FALSE, cctx) == FAIL)
!   goto theend;
!   }
else
+   {
expected = lhs.lhs_member_type;
!   stacktype = ((type_T **)stack->ga_data)[stack->ga_len - 1];
!   if (
  #ifdef FEAT_FLOAT
!   // If variable is float operation with number is OK.
!   !(expected == &t_float && stacktype == &t_number) &&
  #endif
need_type(stacktype, expected, -1, 0, cctx,
 FALSE, FALSE) == FAIL)
!   goto theend;
!   }
  
if (*op == '.')
{
*** ../vim-8.2.3262/src/testdir/test_vim9_assign.vim2021-07-28 
21:25:45.360602797 +0200
--- src/testdir/test_vim9_assign.vim2021-07-31 22:41:15.279977366 +0200
***
*** 239,244 
--- 239,270 
END
  enddef
  
+ let g:someNumber = 43
+ 
+ def Test_assign_concat()
+   var lines =<< trim END
+ var s = '-'
+ s ..= 99
+ s ..= true
+ s ..= '-'
+ s ..= v:null
+ s ..= g:someNumber
+ assert_equal('-99true-null43', s)
+   END
+   CheckDefAndScriptSuccess(lines)
+ 
+   lines =<< trim END
+ var s = '-'
+ s ..= [1, 2]
+   END
+   CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert list to string', 
'E734: Wrong variable type for .=', 2)
+   lines =<< trim END
+ var s = '-'
+ s ..= {a: 2}
+   END
+   CheckDefAndScriptFailure2(lines, 'E1105: Cannot convert dict to string', 
'E734: Wrong variable type for .=', 2)
+ enddef
+ 
  def Test_assign_register()
var lines =<< trim END
  @c = 'areg'
*** ../vim-8.2.3262/src/testdir/test_vim9_disassemble.vim   2021-06-23 
20:20:49.654780609 +0200
--- src/testdir/test_vim9_disassemble.vim   2021-07-31 22:48:34.051077563 
+0200
***
*** 1254,1260 
  'res ..= str\_s*' ..
  '\d\+ LOAD $0\_s*' ..
  '\d\+ LOAD $2\_s*' ..
! '\d\+ CHECKTYPE string stack\[-1\]\_s*' ..
  '\d\+ CONCAT\_s*' ..
  '\d\+ STORE $0\_s*' ..
  'endfor\_s*' ..
--- 1254,1260 
  'res ..= str\_s*' ..
  '\d\+ LOAD $0\_s*' ..
  '\d\+ LOAD $2\_s*' ..
! '\d 2STRING_ANY stack\[-1\]\_s*' ..
  '\d\+ CONCAT\_s*' ..
  '\d\+ STORE $0\_s*' ..
  'endfor\_s*' ..
*** ../vim-8.2.3262/src/version.c   2021-07-31 22:17:25.045867805 +0200
--- src/version.c   2021-07-31 22:50:36.446819489 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3263,
  /**/

-- 
You cannot propel yourself forward by patting yourself on the back.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107312051.16VKpZ7T086188%40masaka.moolenaar.net.


Patch 8.2.3262

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3262
Problem:Build failure when ABORT_ON_INTERNAL_ERROR is defined.
Solution:   Adjust how estack_len_before is used.
Files:  src/ex_docmd.c


*** ../vim-8.2.3261/src/ex_docmd.c  2021-07-31 21:44:31.747825431 +0200
--- src/ex_docmd.c  2021-07-31 22:14:21.194368777 +0200
***
*** 664,671 
  #endif
  static intcall_depth = 0; // recursiveness
  #ifdef FEAT_EVAL
- ESTACK_CHECK_DECLARATION
- 
  // For every pair of do_cmdline()/do_one_cmd() calls, use an extra memory
  // location for storing error messages to be converted to an exception.
  // This ensures that the do_errthrow() call in do_one_cmd() does not
--- 664,669 
***
*** 1397,1402 
--- 1395,1401 
  {
  char  *p = NULL;
  msglist_T *messages = NULL;
+ ESTACK_CHECK_DECLARATION
  
  /*
   * If the uncaught exception is a user exception, report it as an
*** ../vim-8.2.3261/src/version.c   2021-07-31 22:03:54.508104860 +0200
--- src/version.c   2021-07-31 22:12:06.870736505 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3262,
  /**/

-- 
### Hiroshima 45, Chernobyl 86, Windows 95 ###

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107312018.16VKInnA079510%40masaka.moolenaar.net.


Patch 8.2.3261

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3261
Problem:Vim9: when compiling repeat(123, N) return type is number.
Solution:   Make return type a string. (closes #8664)
Files:  src/evalfunc.c, src/testdir/test_vim9_builtin.vim


*** ../vim-8.2.3260/src/evalfunc.c  2021-07-30 21:32:41.444722506 +0200
--- src/evalfunc.c  2021-07-31 22:02:29.732345656 +0200
***
*** 931,936 
--- 931,943 
return argtypes[0];
  return &t_void;
  }
+ static type_T *
+ ret_repeat(int argcount UNUSED, type_T **argtypes)
+ {
+ if (argtypes[0] == &t_number)
+   return &t_string;
+ return argtypes[0];
+ }
  // for map(): returns first argument but item type may differ
  static type_T *
  ret_first_cont(int argcount UNUSED, type_T **argtypes)
***
*** 1813,1819 
  {"rename",2, 2, FEARG_1,  arg2_string,
ret_number_bool,f_rename},
  {"repeat",2, 2, FEARG_1,  arg2_repeat,
!   ret_first_arg,  f_repeat},
  {"resolve",   1, 1, FEARG_1,  arg1_string,
ret_string, f_resolve},
  {"reverse",   1, 1, FEARG_1,  arg1_list_or_blob,
--- 1820,1826 
  {"rename",2, 2, FEARG_1,  arg2_string,
ret_number_bool,f_rename},
  {"repeat",2, 2, FEARG_1,  arg2_repeat,
!   ret_repeat, f_repeat},
  {"resolve",   1, 1, FEARG_1,  arg1_string,
ret_string, f_resolve},
  {"reverse",   1, 1, FEARG_1,  arg1_list_or_blob,
*** ../vim-8.2.3260/src/testdir/test_vim9_builtin.vim   2021-07-31 
19:12:54.100411000 +0200
--- src/testdir/test_vim9_builtin.vim   2021-07-31 22:02:10.868399546 +0200
***
*** 2558,2566 
  def Test_repeat()
CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type 
mismatch, expected string but got float', 'E1224: String, Number or List 
required for argument 1')
CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type 
mismatch, expected string but got dict<', 'E1224: String, Number or List 
required for argument 1')
!   assert_equal('aaa', repeat('a', 3))
!   assert_equal('111', repeat(1, 3))
!   assert_equal([1, 1, 1], repeat([1], 3))
  enddef
  
  def Test_resolve()
--- 2558,2572 
  def Test_repeat()
CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type 
mismatch, expected string but got float', 'E1224: String, Number or List 
required for argument 1')
CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type 
mismatch, expected string but got dict<', 'E1224: String, Number or List 
required for argument 1')
!   var lines =<< trim END
!   assert_equal('aaa', repeat('a', 3))
!   assert_equal('111', repeat(1, 3))
!   assert_equal([1, 1, 1], repeat([1], 3))
!   var s = '-'
!   s ..= repeat(5, 3)
!   assert_equal('-555', s)
!   END
!   CheckDefAndScriptSuccess(lines)
  enddef
  
  def Test_resolve()
*** ../vim-8.2.3260/src/version.c   2021-07-31 21:44:31.747825431 +0200
--- src/version.c   2021-07-31 22:03:31.644169572 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3261,
  /**/

-- 
GALAHAD: No. Look, I can tackle this lot single-handed!
GIRLS:   Yes, yes, let him Tackle us single-handed!
 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107312004.16VK4N63071453%40masaka.moolenaar.net.


Patch 8.2.3260

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3260
Problem:Build failure with small features.
Solution:   Add #ifdef.
Files:  src/ex_docmd.c


*** ../vim-8.2.3259/src/ex_docmd.c  2021-07-31 21:32:27.421666727 +0200
--- src/ex_docmd.c  2021-07-31 21:43:39.367958216 +0200
***
*** 1388,1393 
--- 1388,1394 
  return retval;
  }
  
+ #if defined(FEAT_EVAL) || defined(PROTO)
  /*
   * Handle when "did_throw" is set after executing commands.
   */
***
*** 1455,1461 
  estack_pop();
  }
  
- #ifdef FEAT_EVAL
  /*
   * Obtain a line when inside a ":while" or ":for" loop.
   */
--- 1456,1461 
*** ../vim-8.2.3259/src/version.c   2021-07-31 21:32:27.425666716 +0200
--- src/version.c   2021-07-31 21:44:20.951852806 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3260,
  /**/

-- 
DINGO:   You must spank her well and after you have spanked her you
 may deal with her as you like and then ... spank me.
AMAZING: And spank me!
STUNNER: And me.
LOVELY:  And me.
 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311945.16VJjVJI067895%40masaka.moolenaar.net.


Patch 8.2.3259

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3259
Problem:When 'indentexpr' causes an error the did_throw flag may remain
set.
Solution:   Reset did_throw and show the error. (closes #8677)
Files:  src/indent.c, src/ex_docmd.c, src/proto/ex_docmd.pro


*** ../vim-8.2.3258/src/indent.c2021-07-27 22:00:39.745712396 +0200
--- src/indent.c2021-07-31 21:18:02.203913451 +0200
***
*** 1822,1827 
--- 1822,1834 
  check_cursor();
  State = save_State;
  
+ // Reset did_throw, unless 'debug' has "throw" and inside a try/catch.
+ if (did_throw && (vim_strchr(p_debug, 't') == NULL || trylevel == 0))
+ {
+   handle_did_throw();
+   did_throw = FALSE;
+ }
+ 
  // If there is an error, just keep the current indent.
  if (indent < 0)
indent = get_indent();
*** ../vim-8.2.3258/src/ex_docmd.c  2021-07-27 22:00:39.741712405 +0200
--- src/ex_docmd.c  2021-07-31 21:17:05.208066194 +0200
***
*** 1268,1334 
 * commands are executed.
 */
if (did_throw)
!   {
!   char*p = NULL;
!   msglist_T   *messages = NULL;
! 
!   /*
!* If the uncaught exception is a user exception, report it as an
!* error.  If it is an error exception, display the saved error
!* message now.  For an interrupt exception, do nothing; the
!* interrupt message is given elsewhere.
!*/
!   switch (current_exception->type)
!   {
!   case ET_USER:
!   vim_snprintf((char *)IObuff, IOSIZE,
!   _("E605: Exception not caught: %s"),
!   current_exception->value);
!   p = (char *)vim_strsave(IObuff);
!   break;
!   case ET_ERROR:
!   messages = current_exception->messages;
!   current_exception->messages = NULL;
!   break;
!   case ET_INTERRUPT:
!   break;
!   }
! 
!   estack_push(ETYPE_EXCEPT, current_exception->throw_name,
!   current_exception->throw_lnum);
!   ESTACK_CHECK_SETUP
!   current_exception->throw_name = NULL;
! 
!   discard_current_exception();// uses IObuff if 'verbose'
!   suppress_errthrow = TRUE;
!   force_abort = TRUE;
! 
!   if (messages != NULL)
!   {
!   do
!   {
!   msglist_T   *next = messages->next;
!   int save_compiling = estack_compiling;
! 
!   estack_compiling = messages->msg_compiling;
!   emsg(messages->msg);
!   vim_free(messages->msg);
!   vim_free(messages->sfile);
!   vim_free(messages);
!   messages = next;
!   estack_compiling = save_compiling;
!   }
!   while (messages != NULL);
!   }
!   else if (p != NULL)
!   {
!   emsg(p);
!   vim_free(p);
!   }
!   vim_free(SOURCING_NAME);
!   ESTACK_CHECK_NOW
!   estack_pop();
!   }
  
/*
 * On an interrupt or an aborting error not converted to an exception,
--- 1268,1274 
 * commands are executed.
 */
if (did_throw)
!   handle_did_throw();
  
/*
 * On an interrupt or an aborting error not converted to an exception,
***
*** 1448,1453 
--- 1388,1460 
  return retval;
  }
  
+ /*
+  * Handle when "did_throw" is set after executing commands.
+  */
+ void
+ handle_did_throw()
+ {
+ char  *p = NULL;
+ msglist_T *messages = NULL;
+ 
+ /*
+  * If the uncaught exception is a user exception, report it as an
+  * error.  If it is an error exception, display the saved error
+  * message now.  For an interrupt exception, do nothing; the
+  * interrupt message is given elsewhere.
+  */
+ switch (current_exception->type)
+ {
+   case ET_USER:
+   vim_snprintf((char *)IObuff, IOSIZE,
+   _("E605: Exception not caught: %s"),
+   current_exception->value);
+   p = (char *)vim_strsave(IObuff);
+   break;
+   case ET_ERROR:
+   messages = current_exception->messages;
+   current_exception->messages = NULL;
+   break;
+   case ET_INTERRUPT:
+   break;
+ }
+ 
+ estack_push(ETYPE_EXCEPT, current_exception->throw_name,
+   current_exception->throw_lnum);
+ ESTACK_CHECK_SETUP
+ current_exception->throw_name = NULL;
+ 
+ discard_current_exception();  // uses IObuff if 'verbose'
+ suppress_errthrow = TRUE;
+ force_abort = TRUE;
+ 
+ if (messages != NULL)
+ {
+   do
+   {
+  

Patch 8.2.3258

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3258
Problem:Error messages have the wrong text.
Solution:   Adjust the error message.
Files:  src/errors.h, src/typval.c, src/testdir/test_vim9_builtin.vim


*** ../vim-8.2.3257/src/errors.h2021-07-29 20:37:45.652199179 +0200
--- src/errors.h2021-07-31 19:00:45.714659514 +0200
***
*** 628,644 
  EXTERN char e_string_or_list_required_for_argument_nr[]
INIT(= N_("E1222: String or List required for argument %d"));
  EXTERN char e_string_or_dict_required_for_argument_nr[]
!   INIT(= N_("E1223: String or List required for argument %d"));
! EXTERN char e_string_or_number_or_list_required_for_argument_nr[]
!   INIT(= N_("E1224: String or List required for argument %d"));
! EXTERN char e_string_or_list_or_dict_required_for_argument_nr[]
!   INIT(= N_("E1225: String or List required for argument %d"));
  EXTERN char e_list_or_blob_required_for_argument_nr[]
!   INIT(= N_("E1226: String or List required for argument %d"));
  EXTERN char e_list_or_dict_required_for_argument_nr[]
INIT(= N_("E1227: List or Dictionary required for argument %d"));
! EXTERN char e_list_or_dict_or_blob_required_for_argument_nr[]
!   INIT(= N_("E1228: List or Dictionary or Blob required for argument 
%d"));
  EXTERN char e_expected_dictionary_for_using_key_str_but_got_str[]
INIT(= N_("E1229: Expected dictionary for using key \"%s\", but got 
%s"));
  EXTERN char e_encryption_sodium_mlock_failed[]
--- 628,644 
  EXTERN char e_string_or_list_required_for_argument_nr[]
INIT(= N_("E1222: String or List required for argument %d"));
  EXTERN char e_string_or_dict_required_for_argument_nr[]
!   INIT(= N_("E1223: String or Dictionary required for argument %d"));
! EXTERN char e_string_number_or_list_required_for_argument_nr[]
!   INIT(= N_("E1224: String, Number or List required for argument %d"));
! EXTERN char e_string_list_or_dict_required_for_argument_nr[]
!   INIT(= N_("E1225: String, List or Dictionary required for argument 
%d"));
  EXTERN char e_list_or_blob_required_for_argument_nr[]
!   INIT(= N_("E1226: List or Blob required for argument %d"));
  EXTERN char e_list_or_dict_required_for_argument_nr[]
INIT(= N_("E1227: List or Dictionary required for argument %d"));
! EXTERN char e_list_dict_or_blob_required_for_argument_nr[]
!   INIT(= N_("E1228: List, Dictionary or Blob required for argument %d"));
  EXTERN char e_expected_dictionary_for_using_key_str_but_got_str[]
INIT(= N_("E1229: Expected dictionary for using key \"%s\", but got 
%s"));
  EXTERN char e_encryption_sodium_mlock_failed[]
*** ../vim-8.2.3257/src/typval.c2021-07-28 11:51:44.321061719 +0200
--- src/typval.c2021-07-31 19:00:12.302764339 +0200
***
*** 718,724 
&& args[idx].v_type != VAR_LIST)
  {
if (idx >= 0)
!   semsg(_(e_string_or_number_or_list_required_for_argument_nr), idx + 
1);
else
emsg(_(e_stringreq));
return FAIL;
--- 718,724 
&& args[idx].v_type != VAR_LIST)
  {
if (idx >= 0)
!   semsg(_(e_string_number_or_list_required_for_argument_nr), idx + 1);
else
emsg(_(e_stringreq));
return FAIL;
***
*** 749,755 
&& args[idx].v_type != VAR_DICT)
  {
if (idx >= 0)
!   semsg(_(e_string_or_list_or_dict_required_for_argument_nr), idx + 
1);
else
emsg(_(e_stringreq));
return FAIL;
--- 749,755 
&& args[idx].v_type != VAR_DICT)
  {
if (idx >= 0)
!   semsg(_(e_string_list_or_dict_required_for_argument_nr), idx + 1);
else
emsg(_(e_stringreq));
return FAIL;
***
*** 804,810 
&& args[idx].v_type != VAR_BLOB)
  {
if (idx >= 0)
!   semsg(_(e_list_or_dict_or_blob_required_for_argument_nr), idx + 1);
else
emsg(_(e_listreq));
return FAIL;
--- 804,810 
&& args[idx].v_type != VAR_BLOB)
  {
if (idx >= 0)
!   semsg(_(e_list_dict_or_blob_required_for_argument_nr), idx + 1);
else
emsg(_(e_listreq));
return FAIL;
*** ../vim-8.2.3257/src/testdir/test_vim9_builtin.vim   2021-07-28 
22:44:05.117584182 +0200
--- src/testdir/test_vim9_builtin.vim   2021-07-31 19:07:43.625363138 +0200
***
*** 76,82 
  enddef
  
  def Test_add()
!   CheckDefAndScriptFailure2(['add({}, 1)'], 'E1013: Argument 1: type 
mismatch, expected list but got dict', 'E1226: String or List 
required for argument 1')
CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number 
but got string')
  enddef
  
--- 76,82 
  enddef
  
  def Test_add()
!   CheckDefAndScriptFailure2(['add({}, 1)'], 'E1013: Argument 1: type 
mismatch, expected list but got dict', 'E1226: List or Blob 
required for argument 1')
CheckDefFailure(['add([

Patch 8.2.3257

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3257
Problem:Calling prop_find() with -1 for ID gives errornous error. (Naohiro
Ono)
Solution:   When passing -1 use -2. (closes #8674)
Files:  src/textprop.c, src/testdir/test_textprop.vim


*** ../vim-8.2.3256/src/textprop.c  2021-07-28 13:30:12.212929910 +0200
--- src/textprop.c  2021-07-31 18:32:31.413153828 +0200
***
*** 686,692 
--- 686,696 
  skipstart = dict_get_bool(dict, (char_u *)"skipstart", 0);
  
  if (dict_find(dict, (char_u *)"id", -1) != NULL)
+ {
id = dict_get_number(dict, (char_u *)"id");
+   if (id == -1)
+   id = -2;
+ }
  if (dict_find(dict, (char_u *)"type", -1))
  {
char_u  *name = dict_get_string(dict, (char_u *)"type", FALSE);
*** ../vim-8.2.3256/src/testdir/test_textprop.vim   2021-07-28 
13:30:12.212929910 +0200
--- src/testdir/test_textprop.vim   2021-07-31 18:32:01.801327438 +0200
***
*** 239,244 
--- 239,247 
let result = prop_find({'type': 'prop_name', 'lnum': 1}, 'f')
call assert_equal(expected[0], result)
  
+   " When ID is -1 it's like prop is not found.
+   call assert_equal({}, prop_find({'id': -1}))
+ 
call prop_clear(1,6)
call prop_type_delete('prop_name')
  
*** ../vim-8.2.3256/src/version.c   2021-07-31 17:20:00.620832958 +0200
--- src/version.c   2021-07-31 18:33:03.612970402 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3257,
  /**/

-- 
   GALAHAD turns back.  We see from his POV the lovely ZOOT standing by him
   smiling enchantingly and a number of equally delectable GIRLIES draped
   around in the seductively poulticed room.  They look at him smilingly and
   wave.
 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311634.16VGYRF3027335%40masaka.moolenaar.net.


Re: [vim/vim] patch 8.2.3173: Vim9: argument types are not checked at compile time (a9a7c0c)

2021-07-31 Fir de Conversatie Yegappan Lakshmanan
Hi,

On Sat, Jul 31, 2021 at 9:06 AM Restorer  wrote:

> Unfortunately, there is no way to make a pull request right now.
> The error "E839" in the documentation refers to a custom completion
> function.
> https://vimhelp.org/insert.txt.html#E839 
>
>
> The help needs to be updated to remove this. In the source, E839 was
not used. So I used it for this new message. I see that the translation
files also need to be updated.

Regards,
Yegappan

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7k8GLgB5ozxeoucXy8kha8-Z1XTr-kayv6y54hjegGZhg%40mail.gmail.com.


Patch 8.2.3256

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3256
Problem:Executable test may fail on new Ubuntu system.
Solution:   Consider /usr/bin/cat and /bin/cat the same.
Files:  src/testdir/test_functions.vim


*** ../vim-8.2.3255/src/testdir/test_functions.vim  2021-07-28 
16:51:49.857364325 +0200
--- src/testdir/test_functions.vim  2021-07-31 15:23:13.472794141 +0200
***
*** 1325,1330 
--- 1325,1333 
  if catcmd =~ '\' && result =~ '\'
call assert_equal('/' .. substitute(catcmd, '\', 'bin', ''), 
result)
  else
+   " /bin/cat and /usr/bin/cat may be hard linked, we could get either
+   let result = substitute(result, '/usr/bin/cat', '/bin/cat', '')
+   let catcmd = substitute(catcmd, 'usr/bin/cat', 'bin/cat', '')
call assert_equal('/' .. catcmd, result)
  endif
  bwipe
*** ../vim-8.2.3255/src/version.c   2021-07-31 13:31:37.331213775 +0200
--- src/version.c   2021-07-31 15:25:27.439981951 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3256,
  /**/

-- 
   When danger reared its ugly head,
   He bravely turned his tail and fled
   Yes, Brave Sir Robin turned about
   And gallantly he chickened out
   Bravely taking to his feet
   He beat a very brave retreat
   Bravest of the brave Sir Robin
   Petrified of being dead
   Soiled his pants then brave Sir Robin
   Turned away and fled.
 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311520.16VFKbOT013366%40masaka.moolenaar.net.


Re: Patch 8.2.3255

2021-07-31 Fir de Conversatie Maxim Kim
nevermind, I have just read your explanation on another thread.

суббота, 31 июля 2021 г. в 17:59:51 UTC+3, Maxim Kim: 

>
> суббота, 31 июля 2021 г. в 14:32:23 UTC+3, Bram Moolenaar: 
>
>>
>> Patch 8.2.3255 
>> Problem: ci" finds following string but ci< and others don't. 
>> Solution: When not inside an object find the start. (Connor Lane Smit, 
>> closes #8670) 
>> Files: src/search.c, src/testdir/test_textobjects.vim, src/textobject.c
>>
>
> Nice, thank you!
>
> Although it works a bit different to ci".
>
>   here is the cursor where we press cib to jump
>   to the next line (and here would be the cursor) 
>
> I wonder if ci" could work this way too...
>

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/f5e07165-5547-4df6-a69e-756010080b24n%40googlegroups.com.


Re: Patch 8.2.3255

2021-07-31 Fir de Conversatie Maxim Kim

суббота, 31 июля 2021 г. в 14:32:23 UTC+3, Bram Moolenaar: 

>
> Patch 8.2.3255 
> Problem: ci" finds following string but ci< and others don't. 
> Solution: When not inside an object find the start. (Connor Lane Smit, 
> closes #8670) 
> Files: src/search.c, src/testdir/test_textobjects.vim, src/textobject.c
>

Nice, thank you!

Although it works a bit different to ci".

  here is the cursor where we press cib to jump
  to the next line (and here would be the cursor) 

I wonder if ci" could work this way too...

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/f297fb03-db88-4864-a68e-f879f5d1a274n%40googlegroups.com.


Re: [vim/vim] proposal: add prop_add_list() to enable adding multiple text properties per call (#8675)

2021-07-31 Fir de Conversatie Yegappan Lakshmanan
Hi,

On Sat, Jul 31, 2021 at 1:08 AM Pontus Leitzler 
wrote:

> I'm not sure if it's really a practical issue as such? As far as I can
> tell it's plenty fast enough.
>
> Aside: the biggest issue I ran in to is that length can't span multiple
> lines and that I need to do some stuff to transform byte offsets to
> line/col; there's probably more overhead in all of that.
>
> At any rate, the downside of the proposed API is that you first need to
> group properties by type, rather than by position. I think the latter is
> probably more common?
>
> Thanks @arp242  for your comment! Let me add
> some more context. Even though performance is key when doing syntax
> highlighting, it isn't necessarily the pure invokation speed of one vs.
> multiple calls the proposal aims to improve.
>
> The govim plugin uses a vim channel to communicate, so each call renders a
> network roundtrip & JSON parsing. We also want to express that each call
> should be surrounded with try/catch if we, for example, would like to
> suppress E964/E966 (invalid col/line).
>
> Those things are mostly implementation details of my particular use case,
> and we already batch multiple calls into a single roundtrip for example.
>
> I do however think that having a prop_add_list() make sense for others as
> well. As my example above shows there is a lot of redundant information
> that needs to be passed as arguments when using a single call per text
> property. If you, instead of applying highlights to the visible lines only,
> applies highlights to the entire buffer you could end up with several
> kilobytes of redundant "type":"foobar","bufnr":1,"id":2.
>
> The arguments to prop_add_list() doesn't have to be as suggested above,
> the goal is just to have something that better fits the purpose of using
> text properties as syntax highlight replacement. In that use case you often
> get a bunch of highlights to apply to a single buffer where there is a
> limited set of different types.
>
> That maybe answers your question too @yegappan
> :
>
> If the argument to the new prop_add_list() function is a List of the
> arguments accepted by prop_add(), will that work?
>
> Such list would be an improvement to the number of calls, but we would
> still have all the overhead of having to define multiple type, bufnr and
> id for example. I don't think it brings enough benefits to be worth
> adding a new call? (i.e. prop_add_list()).
>
>
>
If prop_add_list() takes a List of the prop_add() arguments, then you
can use a single call to set all the text properties (instead of multiple
calls to prop_add_list() in your example). So I think the reduction in
the number of calls is a better tradeoff than passing less information
per call.

Regards,
Yegappan

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7%3DPcu9pfsba6T1dAr8AGWMiLg1-U6dQnnTqYAKvBSY_gQ%40mail.gmail.com.


Patch 8.2.3255

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3255
Problem:ci" finds following string but ci< and others don't.
Solution:   When not inside an object find the start. (Connor Lane Smit,
closes #8670)
Files:  src/search.c, src/testdir/test_textobjects.vim, src/textobject.c


*** ../vim-8.2.3254/src/search.c2021-07-27 22:00:39.749712387 +0200
--- src/search.c2021-07-31 13:25:20.207976900 +0200
***
*** 2145,2150 
--- 2145,2152 
  else if (initc != '#' && initc != NUL)
  {
find_mps_values(&initc, &findc, &backwards, TRUE);
+   if (dir)
+   backwards = (dir == FORWARD) ? FALSE : TRUE;
if (findc == NUL)
return NULL;
  }
*** ../vim-8.2.3254/src/testdir/test_textobjects.vim2020-10-15 
21:23:25.163883137 +0200
--- src/testdir/test_textobjects.vim2021-07-31 13:25:20.207976900 +0200
***
*** 564,567 
--- 564,599 
close!
  endfunc
  
+ " Test for i(, i<, etc. when cursor is in front of a block
+ func Test_textobj_find_paren_forward()
+   new
+ 
+   " i< and a> when cursor is in front of a block
+   call setline(1, '#include ')
+   normal 0yi<
+   call assert_equal('foo.h', @")
+   normal 0ya>
+   call assert_equal('', @")
+ 
+   " 2i(, 3i( in front of a block enters second/third nested '('
+   call setline(1, 'foo (bar (baz (quux)))')
+   normal 0yi)
+   call assert_equal('bar (baz (quux))', @")
+   normal 02yi)
+   call assert_equal('baz (quux)', @")
+   normal 03yi)
+   call assert_equal('quux', @")
+ 
+   " 3i( in front of a block doesn't enter third but un-nested '('
+   call setline(1, 'foo (bar (baz) (quux))')
+   normal 03di)
+   call assert_equal('foo (bar (baz) (quux))', getline(1))
+   normal 02di)
+   call assert_equal('foo (bar () (quux))', getline(1))
+   normal 0di)
+   call assert_equal('foo ()', getline(1))
+ 
+   close!
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3254/src/textobject.c2020-10-15 21:23:25.163883137 +0200
--- src/textobject.c2021-07-31 13:25:20.207976900 +0200
***
*** 1079,1090 
   */
  save_cpo = p_cpo;
  p_cpo = (char_u *)(vim_strchr(p_cpo, CPO_MATCHBSL) != NULL ? "%M" : "%");
! while (count-- > 0)
  {
!   if ((pos = findmatch(NULL, what)) == NULL)
!   break;
!   curwin->w_cursor = *pos;
!   start_pos = *pos;   // the findmatch for end_pos will overwrite *pos
  }
  p_cpo = save_cpo;
  
--- 1079,1103 
   */
  save_cpo = p_cpo;
  p_cpo = (char_u *)(vim_strchr(p_cpo, CPO_MATCHBSL) != NULL ? "%M" : "%");
! if ((pos = findmatch(NULL, what)) != NULL)
  {
!   while (count-- > 0)
!   {
!   if ((pos = findmatch(NULL, what)) == NULL)
!   break;
!   curwin->w_cursor = *pos;
!   start_pos = *pos;   // the findmatch for end_pos will overwrite *pos
!   }
! }
! else
! {
!   while (count-- > 0)
!   {
!   if ((pos = findmatchlimit(NULL, what, FM_FORWARD, 0)) == NULL)
!   break;
!   curwin->w_cursor = *pos;
!   start_pos = *pos;   // the findmatch for end_pos will overwrite *pos
!   }
  }
  p_cpo = save_cpo;
  
*** ../vim-8.2.3254/src/version.c   2021-07-31 12:43:19.464837526 +0200
--- src/version.c   2021-07-31 13:28:55.303549433 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3255,
  /**/

-- 
Facepalm statement #9: "Did you see, there is now even a hobbit book"

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311132.16VBWGob2647559%40masaka.moolenaar.net.


Re: Update to help text

2021-07-31 Fir de Conversatie Bram Moolenaar


Yegappan wrote:

> When adding the Vim9 argument type checks to the built-in functions,
> I noticed some minor issues in the help text for these functions.
> 
> 1. The help for some functions that accept a String argument have the
>  description that states that the argument is a string. But for some
>  functions, this is not called out.
> 2. Functions that accept a buffer number as an argument, the argument
> type is not clearly called out.
> 
> I am attaching an update to the help to address this.

Thanks, I'll include it.

-- 
Facepalm statement #7: "Last week I almost got pregnant!"

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311044.16VAi6Wj2636874%40masaka.moolenaar.net.


Patch 8.2.3254

2021-07-31 Fir de Conversatie Bram Moolenaar


Patch 8.2.3254
Problem:win_gettype() does not recognize a quickfix window.
Solution:   Add "quickfix" and "loclist". (Yegappan Lakshmanan, closes #8676)
Files:  runtime/doc/eval.txt, src/evalwindow.c, src/misc2.c,
src/testdir/test_quickfix.vim


*** ../vim-8.2.3253/runtime/doc/eval.txt2021-07-28 16:51:49.853364333 
+0200
--- runtime/doc/eval.txt2021-07-31 12:39:27.357462768 +0200
***
*** 11581,11590 
Return the type of the window:
"autocmd"   autocommand window. Temporary window
used to execute autocommands.
-   "popup" popup window |popup|
-   "preview"   preview window |preview-window|
"command"   command-line window |cmdwin|
(empty) normal window
"unknown"   window {nr} not found
  
When {nr} is omitted return the type of the current window.
--- 11678,11689 
Return the type of the window:
"autocmd"   autocommand window. Temporary window
used to execute autocommands.
"command"   command-line window |cmdwin|
(empty) normal window
+   "loclist"   |location-list-window|
+   "popup" popup window |popup|
+   "preview"   preview window |preview-window|
+   "quickfix"  |quickfix-window|
"unknown"   window {nr} not found
  
When {nr} is omitted return the type of the current window.
*** ../vim-8.2.3253/src/evalwindow.c2021-07-27 22:00:39.741712405 +0200
--- src/evalwindow.c2021-07-31 12:39:27.357462768 +0200
***
*** 953,958 
--- 953,964 
  else if (wp == curwin && cmdwin_type != 0)
rettv->vval.v_string = vim_strsave((char_u *)"command");
  #endif
+ #ifdef FEAT_QUICKFIX
+ else if (bt_quickfix(wp->w_buffer))
+   rettv->vval.v_string = vim_strsave((char_u *)
+   (wp->w_llist_ref != NULL ? "loclist" : "quickfix"));
+ #endif
+ 
  }
  
  /*
*** ../vim-8.2.3253/src/misc2.c 2021-07-29 20:22:10.734009550 +0200
--- src/misc2.c 2021-07-31 12:39:27.357462768 +0200
***
*** 1574,1583 
  {
  if (s == NULL || *s == NUL)
return;
! if (ga_grow(gap, len) == OK)
  {
!   mch_memmove((char *)gap->ga_data + gap->ga_len, s, (size_t)len);
!   gap->ga_len += len;
  }
  }
  
--- 1574,1583 
  {
  if (s == NULL || *s == NUL)
return;
! if (ga_grow(gap, (int)len) == OK)
  {
!   mch_memmove((char *)gap->ga_data + gap->ga_len, s, len);
!   gap->ga_len += (int)len;
  }
  }
  
*** ../vim-8.2.3253/src/testdir/test_quickfix.vim   2021-07-15 
13:13:35.689833492 +0200
--- src/testdir/test_quickfix.vim   2021-07-31 12:39:27.357462768 +0200
***
*** 5587,5590 
--- 5587,5607 
%bwipe!
  endfunc
  
+ " Test for win_gettype() in quickfix and location list windows
+ func Test_win_gettype()
+   copen
+   call assert_equal("quickfix", win_gettype())
+   let wid = win_getid()
+   wincmd p
+   call assert_equal("quickfix", win_gettype(wid))
+   cclose
+   lexpr ''
+   lopen
+   call assert_equal("loclist", win_gettype())
+   let wid = win_getid()
+   wincmd p
+   call assert_equal("loclist", win_gettype(wid))
+   lclose
+ endfunc
+ 
  " vim: shiftwidth=2 sts=2 expandtab
*** ../vim-8.2.3253/src/version.c   2021-07-30 21:56:07.114143129 +0200
--- src/version.c   2021-07-31 12:40:46.305249915 +0200
***
*** 757,758 
--- 757,760 
  {   /* Add new patch number below this line */
+ /**/
+ 3254,
  /**/

-- 
Facepalm statement #8: "Drive faster, the petrol is running out"

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///  \\\
\\\sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107311044.16VAi7tj2636886%40masaka.moolenaar.net.