1
0
forked from aniani/vim

patch 8.0.0663: unexpected error message only when 'verbose' is set

Problem:    Giving an error message only when 'verbose' set is unexpected.
Solution:   Give a warning message instead.
This commit is contained in:
Bram Moolenaar
2017-06-23 20:52:40 +02:00
parent 4670490673
commit f8be461d02
6 changed files with 39 additions and 18 deletions

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 8.0. Last change: 2017 Jun 22 *eval.txt* For Vim version 8.0. Last change: 2017 Jun 23
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -8722,6 +8722,9 @@ See |:verbose-cmd| for more information.
not used an error message is given. When [!] is used, not used an error message is given. When [!] is used,
an existing function is silently replaced. Unless it an existing function is silently replaced. Unless it
is currently being executed, that is an error. is currently being executed, that is an error.
NOTE: Use ! wisely. If used without care it can cause
an existing function to be replaced unexpectedly,
which is hard to debug.
For the {arguments} see |function-argument|. For the {arguments} see |function-argument|.
@@ -8771,7 +8774,7 @@ See |:verbose-cmd| for more information.
implies that the effect of |:nohlsearch| is undone implies that the effect of |:nohlsearch| is undone
when the function returns. when the function returns.
*:endf* *:endfunction* *E126* *E193* *E946* *:endf* *:endfunction* *E126* *E193* *W22*
:endf[unction] [argument] :endf[unction] [argument]
The end of a function definition. Best is to put it The end of a function definition. Best is to put it
on a line by its own, without [argument]. on a line by its own, without [argument].
@@ -8780,12 +8783,16 @@ See |:verbose-cmd| for more information.
| command command to execute next | command command to execute next
\n command command to execute next \n command command to execute next
" comment always ignored " comment always ignored
anything else ignored, unless 'verbose' is anything else ignored, warning given when
non-zero 'verbose' is non-zero
The support for a following command was added in Vim The support for a following command was added in Vim
8.0.0654, before that any argument was silently 8.0.0654, before that any argument was silently
ignored. ignored.
To be able to define a function inside an `:execute`
command, use line breaks instead of |:bar|: >
:exe "func Foo()\necho 'foo'\nendfunc"
<
*:delf* *:delfunction* *E130* *E131* *E933* *:delf* *:delfunction* *E130* *E131* *E933*
:delf[unction][!] {name} :delf[unction][!] {name}
Delete function {name}. Delete function {name}.

View File

@@ -3471,6 +3471,13 @@ give_warning(char_u *message, int hl)
--no_wait_return; --no_wait_return;
} }
void
give_warning2(char_u *message, char_u *a1, int hl)
{
vim_snprintf((char *)IObuff, IOSIZE, (char *)message, a1);
give_warning(IObuff, hl);
}
/* /*
* Advance msg cursor to column "col". * Advance msg cursor to column "col".
*/ */

View File

@@ -75,6 +75,7 @@ void verbose_leave_scroll(void);
void verbose_stop(void); void verbose_stop(void);
int verbose_open(void); int verbose_open(void);
void give_warning(char_u *message, int hl); void give_warning(char_u *message, int hl);
void give_warning2(char_u *message, char_u *a1, int hl);
void msg_advance(int col); 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); int do_dialog(int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd);
void display_confirm_msg(void); void display_confirm_msg(void);

View File

@@ -1381,10 +1381,12 @@ func Test_endfunction_trailing()
set verbose=1 set verbose=1
exe "func Xtest()\necho 'hello'\nendfunc \" garbage" exe "func Xtest()\necho 'hello'\nendfunc \" garbage"
call assert_notmatch('W22:', split(execute('1messages'), "\n")[0])
call assert_true(exists('*Xtest')) call assert_true(exists('*Xtest'))
delfunc Xtest delfunc Xtest
call assert_fails("func Xtest()\necho 'hello'\nendfunc garbage", 'E946') exe "func Xtest()\necho 'hello'\nendfunc garbage"
call assert_match('W22:', split(execute('1messages'), "\n")[0])
call assert_true(exists('*Xtest')) call assert_true(exists('*Xtest'))
delfunc Xtest delfunc Xtest
set verbose=0 set verbose=0

View File

@@ -2137,7 +2137,9 @@ ex_function(exarg_T *eap)
/* Another command follows. */ /* Another command follows. */
eap->nextcmd = line_arg; eap->nextcmd = line_arg;
else if (*p != NUL && *p != '"' && p_verbose > 0) else if (*p != NUL && *p != '"' && p_verbose > 0)
EMSG2((char_u *)_("E946: Text found after :endfunction: %s"), p); give_warning2(
(char_u *)_("W22: Text found after :endfunction: %s"),
p, TRUE);
if (line_arg == NULL) if (line_arg == NULL)
vim_free(theline); vim_free(theline);
break; break;

View File

@@ -764,6 +764,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 */
/**/
663,
/**/ /**/
662, 662,
/**/ /**/