diff --git a/src/insexpand.c b/src/insexpand.c
index 8f8157e..36a8ab1 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -1573,7 +1573,7 @@
     for (i = 0; i < count && !got_int && !compl_interrupted; i++)
     {
 	fp = mch_fopen((char *)files[i], "r");  // open dictionary file
-	if (flags != DICT_EXACT)
+	if (flags != DICT_EXACT && !shortmess(SHM_COMPLETIONSCAN))
 	{
 	    msg_hist_off = TRUE;	// reset in msg_trunc_attr()
 	    vim_snprintf((char *)IObuff, IOSIZE,
@@ -3281,14 +3281,17 @@
 	    st->dict = st->ins_buf->b_fname;
 	    st->dict_f = DICT_EXACT;
 	}
-	msg_hist_off = TRUE;	// reset in msg_trunc_attr()
-	vim_snprintf((char *)IObuff, IOSIZE, _("Scanning: %s"),
-		st->ins_buf->b_fname == NULL
-		    ? buf_spname(st->ins_buf)
-		    : st->ins_buf->b_sfname == NULL
-			? st->ins_buf->b_fname
-			: st->ins_buf->b_sfname);
-	(void)msg_trunc_attr((char *)IObuff, TRUE, HL_ATTR(HLF_R));
+	if (!shortmess(SHM_COMPLETIONSCAN))
+	{
+	    msg_hist_off = TRUE;	// reset in msg_trunc_attr()
+	    vim_snprintf((char *)IObuff, IOSIZE, _("Scanning: %s"),
+		    st->ins_buf->b_fname == NULL
+			? buf_spname(st->ins_buf)
+			: st->ins_buf->b_sfname == NULL
+			    ? st->ins_buf->b_fname
+			    : st->ins_buf->b_sfname);
+	    (void)msg_trunc_attr((char *)IObuff, TRUE, HL_ATTR(HLF_R));
+	}
     }
     else if (*st->e_cpt == NUL)
 	status = INS_COMPL_CPT_END;
@@ -3316,10 +3319,13 @@
 #endif
 	else if (*st->e_cpt == ']' || *st->e_cpt == 't')
 	{
-	    msg_hist_off = TRUE;	// reset in msg_trunc_attr()
 	    compl_type = CTRL_X_TAGS;
-	    vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
-	    (void)msg_trunc_attr((char *)IObuff, TRUE, HL_ATTR(HLF_R));
+	    if (!shortmess(SHM_COMPLETIONSCAN))
+	    {
+		msg_hist_off = TRUE;	// reset in msg_trunc_attr()
+		vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
+		(void)msg_trunc_attr((char *)IObuff, TRUE, HL_ATTR(HLF_R));
+	    }
 	}
 	else
 	    compl_type = -1;
diff --git a/src/option.h b/src/option.h
index 0e98824..19e2a78 100644
--- a/src/option.h
+++ b/src/option.h
@@ -265,11 +265,12 @@
 #define SHM_ATTENTION	'A'		// no ATTENTION messages
 #define SHM_INTRO	'I'		// intro messages
 #define SHM_COMPLETIONMENU  'c'		// completion menu messages
+#define SHM_COMPLETIONSCAN  'C'		// completion scanning messages
 #define SHM_RECORDING	'q'		// short recording message
 #define SHM_FILEINFO	'F'		// no file info messages
 #define SHM_SEARCHCOUNT  'S'		// search stats: '[1/10]'
 #define SHM_POSIX       "AS"		// POSIX value
-#define SHM_ALL		"rmfixlnwaWtToOsAIcqFS" // all possible flags for 'shm'
+#define SHM_ALL		"rmfixlnwaWtToOsAIcCqFS" // all possible flags for 'shm'
 
 // characters for p_go:
 #define GO_TERMINAL	'!'		// use terminal for system commands
diff --git a/src/version.c b/src/version.c
index 9a485a0..e3a6f36 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    738,
+/**/
     737,
 /**/
     736,
