diff --git a/src/search.c b/src/search.c
index 033f163..2bcbf0a 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1381,10 +1381,29 @@
 					    && !cmd_silent && msg_silent == 0)
 	{
 	    char_u	*trunc;
+	    char_u	off_buf[40];
+	    int		off_len = 0;
 
 	    // Compute msg_row early.
 	    msg_start();
 
+	    // Get the offset, so we know how long it is.
+	    if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
+	    {
+		p = off_buf;
+		*p++ = dirc;
+		if (spats[0].off.end)
+		    *p++ = 'e';
+		else if (!spats[0].off.line)
+		    *p++ = 's';
+		if (spats[0].off.off > 0 || spats[0].off.line)
+		    *p++ = '+';
+		*p = NUL;
+		if (spats[0].off.off != 0 || spats[0].off.line)
+		    sprintf((char *)p, "%ld", spats[0].off.off);
+		off_len = STRLEN(off_buf);
+	    }
+
 	    if (*searchstr == NUL)
 		p = spats[0].pat;
 	    else
@@ -1393,19 +1412,21 @@
 	    if (!shortmess(SHM_SEARCHCOUNT))
 	    {
 		// Reserve enough space for the search pattern + offset +
-		// search stat.
+		// search stat.  Use all the space available, so that the
+		// search state is right aligned.  If there is not enough space
+		// msg_strtrunc() will shorten in the middle.
 		if (msg_scrolled != 0)
 		    // Use all the columns.
 		    len = (int)(Rows - msg_row) * Columns - 1;
 		else
 		    // Use up to 'showcmd' column.
 		    len = (int)(Rows - msg_row - 1) * Columns + sc_col - 1;
-		if (len < STRLEN(p) + 40 + SEARCH_STAT_BUF_LEN + 1)
-		    len = STRLEN(p) + 40 + SEARCH_STAT_BUF_LEN + 1;
+		if (len < STRLEN(p) + off_len + SEARCH_STAT_BUF_LEN + 3)
+		    len = STRLEN(p) + off_len + SEARCH_STAT_BUF_LEN + 3;
 	    }
 	    else
 		// Reserve enough space for the search pattern + offset.
-		len = STRLEN(p) + 40;
+		len = STRLEN(p) + off_len + 3;
 
 	    msgbuf = alloc((int)len);
 	    if (msgbuf != NULL)
@@ -1422,25 +1443,10 @@
 		}
 		else
 		    mch_memmove(msgbuf + 1, p, STRLEN(p));
-		if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
-		{
-		    p = msgbuf + STRLEN(p) + 1;
-		    *p++ = dirc;
-		    if (spats[0].off.end)
-			*p++ = 'e';
-		    else if (!spats[0].off.line)
-			*p++ = 's';
-		    if (spats[0].off.off > 0 || spats[0].off.line)
-			*p++ = '+';
-		    if (spats[0].off.off != 0 || spats[0].off.line)
-		    {
-			int l = 0;
-			l = sprintf((char *)p, "%ld", spats[0].off.off);
-			p[l] = ' '; // remove NUL from sprintf
-		    }
-		}
+		if (off_len > 0)
+		    mch_memmove(msgbuf + STRLEN(p) + 1, off_buf, off_len);
 
-		trunc = msg_strtrunc(msgbuf, FALSE);
+		trunc = msg_strtrunc(msgbuf, TRUE);
 		if (trunc != NULL)
 		{
 		    vim_free(msgbuf);
@@ -5028,8 +5034,10 @@
 	lbuf    = curbuf;
 	lastpos = p;
 
-	// keep the message even after redraw
+	// keep the message even after redraw, but don't put in history
+	msg_hist_off = TRUE;
 	give_warning(msgbuf, FALSE);
+	msg_hist_off = FALSE;
     }
     p_ws = save_ws;
 }
