diff --git a/src/if_tcl.c b/src/if_tcl.c
index 61b1fb9..3c08325 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -106,6 +106,11 @@
 #define VIMOUT	((ClientData)1)
 #define VIMERR	((ClientData)2)
 
+/* This appears to be new in Tcl 8.4. */
+#ifndef CONST84
+# define CONST84
+#endif
+
 /*
  *  List of Tcl interpreters who reference a vim window or buffer.
  *  Each buffer and window has it's own list in the tcl_ref struct member.
@@ -384,9 +389,8 @@
     buf_T	*buf;
     Tcl_Obj	*resobj;
     int		err, n, idx;
-
     enum {BCMD_EXISTS, BCMD_LIST};
-    static char *bcmdoptions[] =
+    static CONST84 char *bcmdoptions[] =
     {
 	"exists", "list", (char *)0
     };
@@ -533,7 +537,7 @@
 	BUF_GET, BUF_INSERT, BUF_LAST, BUF_MARK, BUF_NAME, BUF_NUMBER,
 	BUF_OPTION, BUF_SET, BUF_WINDOWS
     };
-    static char *bufoptions[] =
+    static CONST84 char *bufoptions[] =
     {
 	"append", "command", "count", "delcmd", "delete", "expr",
 	"get", "insert", "last", "mark", "name", "number",
@@ -966,7 +970,7 @@
 	WIN_BUFFER, WIN_COMMAND, WIN_CURSOR, WIN_DELCMD, WIN_EXPR,
 	WIN_HEIGHT, WIN_OPTION
     };
-    static char *winoptions[] =
+    static CONST84 char *winoptions[] =
     {
 	"buffer", "command", "cursor", "delcmd", "expr",
 	"height", "option", (char *)0
@@ -1179,7 +1183,7 @@
 
     enum { LN_BEGIN, LN_BOTTOM, LN_END, LN_FIRST, LN_LAST, LN_START, LN_TOP };
 
-    static char *keyw[] =
+    static CONST84 char *keyw[] =
     {
 	"begin", "bottom", "end", "first", "last", "start", "top", (char *)0
     };
@@ -1311,7 +1315,7 @@
     Tcl_Obj	*resobj;
 
     enum { OPT_OFF, OPT_ON, OPT_TOGGLE };
-    static char *optkw[] = { "off", "on", "toggle", (char *)0 };
+    static CONST84 char *optkw[] = { "off", "on", "toggle", (char *)0 };
 
     nobjs = objc - objn;
     if (nobjs != 1 && nobjs != 2)
@@ -1905,7 +1909,7 @@
     {
 	char *result;
 
-	result = Tcl_GetStringResult(tclinfo.interp);
+	result = (char *)Tcl_GetStringResult(tclinfo.interp);
 	if (error == TCL_OK)
 	{
 	    tclmsg(result);
@@ -2013,7 +2017,7 @@
 	err = Tcl_Eval(tclinfo.interp, script);
 	if (err != TCL_OK)
 	    break;
-	line = Tcl_GetVar(tclinfo.interp, var_line, 0);
+	line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
 	if (line)
 	{
 	    if (ml_replace((linenr_T)rs, (char_u *)line, TRUE) != OK)
@@ -2059,7 +2063,7 @@
 		err = Tcl_GlobalEvalObj(ref->interp, ref->delcmd);
 		if (err != TCL_OK)
 		{
-		    result = Tcl_GetStringResult(ref->interp);
+		    result = (char *)Tcl_GetStringResult(ref->interp);
 		    if (result)
 			tclerrmsg(result);
 		}
