diff src/message.c @ 25226:a9ea83a3659a v8.2.3149

patch 8.2.3149: some plugins have a problem with the error check Commit: https://github.com/vim/vim/commit/cc7eb2aa7a7f2e6ae41f1e7cf60965c083d8a9e9 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 11 19:12:04 2021 +0200 patch 8.2.3149: some plugins have a problem with the error check 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.
author Bram Moolenaar <Bram@vim.org>
date Sun, 11 Jul 2021 19:15:03 +0200
parents ac0211a9fb6a
children 0082503ff2ff
line wrap: on
line diff
--- a/src/message.c
+++ b/src/message.c
@@ -3614,6 +3614,12 @@ verbose_open(void)
     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,8 +3635,21 @@ give_warning(char_u *message, int hl)
 	keep_msg_attr = HL_ATTR(HLF_W);
     else
 	keep_msg_attr = 0;
-    if (msg_attr((char *)message, keep_msg_attr) && msg_scrolled == 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;