Patch 8.2.3149 (after 8.2.3141)
Problem:    Some plugins have a problem with the error check for using
            :command with -complete but without -nargs.
Solution:   In legacy script only give a warning message.
Files:      src/usercmd.c, src/message.c, src/proto/message.pro,
            src/testdir/test_usercommands.vim


*** ../vim-8.2.3148/src/usercmd.c       2021-07-11 14:28:19.943563551 +0200
--- src/usercmd.c       2021-07-11 18:57:29.686993922 +0200
***************
*** 1027,1033 ****
                  && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0))
        emsg(_("E841: Reserved name, cannot be used for user defined command"));
      else if (compl > 0 && (argt & EX_EXTRA) == 0)
!       emsg(_(e_complete_used_without_nargs));
      else
        uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
                                                  addr_type_arg, eap->forceit);
--- 1027,1041 ----
                  && STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0))
        emsg(_("E841: Reserved name, cannot be used for user defined command"));
      else if (compl > 0 && (argt & EX_EXTRA) == 0)
!     {
!       // Some plugins rely on silently ignoring the mistake, only make this
!       // an error in Vim9 script.
!       if (in_vim9script())
!           emsg(_(e_complete_used_without_nargs));
!       else
!           give_warning_with_source(
!                      (char_u *)_(e_complete_used_without_nargs), TRUE, TRUE);
!     }
      else
        uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
                                                  addr_type_arg, eap->forceit);
*** ../vim-8.2.3148/src/message.c       2021-06-15 22:39:07.566028108 +0200
--- src/message.c       2021-07-11 19:03:23.094520449 +0200
***************
*** 3614,3619 ****
--- 3614,3625 ----
      void
  give_warning(char_u *message, int hl)
  {
+     give_warning_with_source(message, hl, FALSE);
+ }
+ 
+     void
+ give_warning_with_source(char_u *message, int hl, int with_source)
+ {
      // Don't do this for ":silent".
      if (msg_silent != 0)
        return;
***************
*** 3629,3636 ****
        keep_msg_attr = HL_ATTR(HLF_W);
      else
        keep_msg_attr = 0;
!     if (msg_attr((char *)message, keep_msg_attr) && msg_scrolled == 0)
        set_keep_msg(message, keep_msg_attr);
      msg_didout = FALSE;           // overwrite this message
      msg_nowait = TRUE;            // don't wait for this message
      msg_col = 0;
--- 3635,3655 ----
        keep_msg_attr = HL_ATTR(HLF_W);
      else
        keep_msg_attr = 0;
! 
!     if (with_source)
!     {
!       // Do what msg() does, but with a column offset if the warning should
!       // be after the mode message.
!       msg_start();
!       msg_source(HL_ATTR(HLF_W));
!       msg_puts(" ");
!       msg_puts_attr((char *)message, HL_ATTR(HLF_W) | MSG_HIST);
!       msg_clr_eos();
!       (void)msg_end();
!     }
!     else if (msg_attr((char *)message, keep_msg_attr) && msg_scrolled == 0)
        set_keep_msg(message, keep_msg_attr);
+ 
      msg_didout = FALSE;           // overwrite this message
      msg_nowait = TRUE;            // don't wait for this message
      msg_col = 0;
*** ../vim-8.2.3148/src/proto/message.pro       2020-02-29 17:38:08.862485886 
+0100
--- src/proto/message.pro       2021-07-11 18:56:58.087033112 +0200
***************
*** 69,74 ****
--- 69,75 ----
  void verbose_stop(void);
  int verbose_open(void);
  void give_warning(char_u *message, int hl);
+ void give_warning_with_source(char_u *message, int hl, int with_source);
  void give_warning2(char_u *message, char_u *a1, int hl);
  void msg_advance(int col);
  int do_dialog(int type, char_u *title, char_u *message, char_u *buttons, int 
dfltbutton, char_u *textfield, int ex_cmd);
*** ../vim-8.2.3148/src/testdir/test_usercommands.vim   2021-07-11 
14:28:19.943563551 +0200
--- src/testdir/test_usercommands.vim   2021-07-11 19:10:18.833912848 +0200
***************
*** 1,5 ****
--- 1,7 ----
  " Tests for user defined commands
  
+ source vim9.vim
+ 
  " Test for <mods> in user defined commands
  function Test_cmdmods()
    let g:mods = ''
***************
*** 270,282 ****
    call assert_fails('com! -complete=custom DoCmd :', 'E467:')
    call assert_fails('com! -complete=customlist DoCmd :', 'E467:')
    call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:')
-   call assert_fails('com! -complete=file DoCmd :', 'E1208:')
-   call assert_fails('com! -nargs=0 -complete=file DoCmd :', 'E1208:')
    call assert_fails('com! -nargs=x DoCmd :', 'E176:')
    call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:')
    call assert_fails('com! -count=x DoCmd :', 'E178:')
    call assert_fails('com! -range=x DoCmd :', 'E178:')
  
    com! -nargs=0 DoCmd :
    call assert_fails('DoCmd x', 'E488:')
  
--- 272,300 ----
    call assert_fails('com! -complete=custom DoCmd :', 'E467:')
    call assert_fails('com! -complete=customlist DoCmd :', 'E467:')
    call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:')
    call assert_fails('com! -nargs=x DoCmd :', 'E176:')
    call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:')
    call assert_fails('com! -count=x DoCmd :', 'E178:')
    call assert_fails('com! -range=x DoCmd :', 'E178:')
  
+   com! -complete=file DoCmd :
+   call assert_match('E1208:', v:warningmsg)
+   let v:warningmsg = ''
+   com! -nargs=0 -complete=file DoCmd :
+   call assert_match('E1208:', v:warningmsg)
+ 
+   let lines =<< trim END
+       vim9script
+       com! -complete=file DoCmd :
+   END
+   call CheckScriptFailure(lines, 'E1208', 2)
+ 
+   let lines =<< trim END
+       vim9script
+       com! -nargs=0 -complete=file DoCmd :
+   END
+   call CheckScriptFailure(lines, 'E1208', 2)
+ 
    com! -nargs=0 DoCmd :
    call assert_fails('DoCmd x', 'E488:')
  
*** ../vim-8.2.3148/src/version.c       2021-07-11 18:23:15.441471695 +0200
--- src/version.c       2021-07-11 18:46:40.651594168 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3149,
  /**/

-- 
An actual excerpt from a classified section of a city newspaper:
"Illiterate?  Write today for free help!"

 /// Bram Moolenaar -- [email protected] -- 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202107111712.16BHCbuh871528%40masaka.moolenaar.net.

Raspunde prin e-mail lui