diff --git a/src/buffer.c b/src/buffer.c
index 6e3fa55..ee5d33c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -984,6 +984,10 @@
 
     return errormsg;
 }
+#endif /* FEAT_LISTCMDS */
+
+#if defined(FEAT_LISTCMDS) || defined(FEAT_PYTHON) \
+	|| defined(FEAT_PYTHON3) || defined(PROTO)
 
 /*
  * Implementation of the commands for the buffer list.
@@ -1364,8 +1368,7 @@
 
     return OK;
 }
-
-#endif /* FEAT_LISTCMDS */
+#endif
 
 /*
  * Set current buffer to "buf".  Executes autocommands and closes current
diff --git a/src/eval.c b/src/eval.c
index a4dae79..9a02589 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -112,7 +112,9 @@
 static char *e_letwrong = N_("E734: Wrong variable type for %s=");
 static char *e_nofunc = N_("E130: Unknown function: %s");
 static char *e_illvar = N_("E461: Illegal variable name: %s");
+#ifdef FEAT_FLOAT
 static char *e_float_as_string = N_("E806: using Float as a String");
+#endif
 
 static dictitem_T	globvars_var;		/* variable used for g: */
 #define globvarht globvardict.dv_hashtab
@@ -11882,7 +11884,7 @@
     static win_T *
 find_win_by_nr(vp, tp)
     typval_T	*vp;
-    tabpage_T	*tp;	    /* NULL for current tab page */
+    tabpage_T	*tp UNUSED;	/* NULL for current tab page */
 {
 #ifdef FEAT_WINDOWS
     win_T	*wp;
@@ -11932,7 +11934,8 @@
     win_T	*win, *oldcurwin;
     char_u	*varname;
     dictitem_T	*v;
-    tabpage_T	*tp, *oldtabpage;
+    tabpage_T	*tp = NULL;
+    tabpage_T	*oldtabpage;
     int		done = FALSE;
 
 #ifdef FEAT_WINDOWS
@@ -16683,24 +16686,34 @@
     typval_T	*argvars;
     typval_T	*rettv;
 {
+#ifdef FEAT_WINDOWS
     tabpage_T	*save_curtab;
+    tabpage_T	*tp;
+#endif
     char_u	*varname, *tabvarname;
     typval_T	*varp;
-    tabpage_T	*tp;
 
     rettv->vval.v_number = 0;
 
     if (check_restricted() || check_secure())
 	return;
 
+#ifdef FEAT_WINDOWS
     tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL));
+#endif
     varname = get_tv_string_chk(&argvars[1]);
     varp = &argvars[2];
 
-    if (tp != NULL && varname != NULL && varp != NULL)
+    if (varname != NULL && varp != NULL
+#ifdef FEAT_WINDOWS
+	    && tp != NULL
+#endif
+	    )
     {
+#ifdef FEAT_WINDOWS
 	save_curtab = curtab;
 	goto_tabpage_tp(tp, FALSE, FALSE);
+#endif
 
 	tabvarname = alloc((unsigned)STRLEN(varname) + 3);
 	if (tabvarname != NULL)
@@ -16711,9 +16724,11 @@
 	    vim_free(tabvarname);
 	}
 
+#ifdef FEAT_WINDOWS
 	/* Restore current tabpage */
 	if (valid_tabpage(save_curtab))
 	    goto_tabpage_tp(save_curtab, FALSE, FALSE);
+#endif
     }
 }
 
@@ -16757,7 +16772,7 @@
     char_u	*varname, *winvarname;
     typval_T	*varp;
     char_u	nbuf[NUMBUFLEN];
-    tabpage_T	*tp;
+    tabpage_T	*tp = NULL;
 
     if (check_restricted() || check_secure())
 	return;
diff --git a/src/version.c b/src/version.c
index 8d730d0..dbbda7a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1213,
+/**/
     1212,
 /**/
     1211,
diff --git a/src/window.c b/src/window.c
index ca92d57..1ed3dec 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6582,11 +6582,11 @@
  */
     int
 switch_win(save_curwin, save_curtab, win, tp, no_display)
-    win_T	**save_curwin;
-    tabpage_T	**save_curtab;
-    win_T	*win;
-    tabpage_T	*tp;
-    int		no_display;
+    win_T	**save_curwin UNUSED;
+    tabpage_T	**save_curtab UNUSED;
+    win_T	*win UNUSED;
+    tabpage_T	*tp UNUSED;
+    int		no_display UNUSED;
 {
 # ifdef FEAT_AUTOCMD
     block_autocmds();
@@ -6627,9 +6627,9 @@
  */
     void
 restore_win(save_curwin, save_curtab, no_display)
-    win_T	*save_curwin;
-    tabpage_T	*save_curtab;
-    int		no_display;
+    win_T	*save_curwin UNUSED;
+    tabpage_T	*save_curtab UNUSED;
+    int		no_display UNUSED;
 {
 # ifdef FEAT_WINDOWS
     if (save_curtab != NULL && valid_tabpage(save_curtab))
@@ -6906,9 +6906,10 @@
 }
 
     int
-get_tab_number(tabpage_T *tp)
+get_tab_number(tabpage_T *tp UNUSED)
 {
     int		i = 1;
+# ifdef FEAT_WINDOWS
     tabpage_T	*t;
 
     for (t = first_tabpage; t != NULL && t != tp; t = t->tp_next)
@@ -6917,6 +6918,7 @@
     if (t == NULL)
 	return 0;
     else
+# endif
 	return i;
 }
 #endif
