diff --git a/src/optionstr.c b/src/optionstr.c
index 62a7086..90b8e52 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -1558,9 +1558,10 @@
 did_set_complete(optset_T *args)
 {
     char_u	**varp = (char_u **)args->os_varp;
-    char_u	*p = NULL;
+    char_u	*p, *t;
     char_u	buffer[LSIZE];
     char_u	*buf_ptr;
+    char_u	char_before = NUL;
     int		escape;
 
     for (p = *varp; *p; )
@@ -1589,16 +1590,40 @@
 	if (vim_strchr((char_u *)".wbuksid]tUfo", *buffer) == NULL)
 	    return illegal_char(args->os_errbuf, args->os_errbuflen, *buffer);
 
-	if (!vim_strchr((char_u *)"ksf", *buffer) && *(buffer + 1) != NUL)
+	if (vim_strchr((char_u *)"ksf", *buffer) == NULL && *(buffer + 1) != NUL
+		&& *(buffer + 1) != '^')
+	    char_before = *buffer;
+	else
+	{
+	    // Test for a number after '^'
+	    if ((t = vim_strchr(buffer, '^')) != NULL)
+	    {
+		*t++ = NUL;
+		if (!*t)
+		    char_before = '^';
+		else
+		{
+		    for (; *t; t++)
+		    {
+			if (!vim_isdigit(*t))
+			{
+			    char_before = '^';
+			    break;
+			}
+		    }
+		}
+	    }
+	}
+	if (char_before != NUL)
 	{
 	    if (args->os_errbuf)
 	    {
 		vim_snprintf((char *)args->os_errbuf, args->os_errbuflen,
-			_(e_illegal_character_after_chr), *buffer);
+			_(e_illegal_character_after_chr), char_before);
 		return args->os_errbuf;
 	    }
+	    return NULL;
 	}
-
 	// Skip comma and spaces
 	while (*p == ',' || *p == ' ')
 	    p++;
