changeset 13384:6740c499de13 v8.0.1566

patch 8.0.1566: too many #ifdefs commit https://github.com/vim/vim/commit/8a3bb56230d220b8e1b4dcca517ed95f5341b8c7 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 4 20:14:14 2018 +0100 patch 8.0.1566: too many #ifdefs Problem: Too many #ifdefs. Solution: Graduate FEAT_SCROLLBIND and FEAT_CURSORBIND.
author Christian Brabandt <cb@256bit.org>
date Sun, 04 Mar 2018 20:15:05 +0100
parents 22bb9735bd16
children 6ce6daf93141
files src/buffer.c src/diff.c src/edit.c src/evalfunc.c src/ex_cmds.c src/ex_cmds2.c src/ex_docmd.c src/globals.h src/gui.c src/macros.h src/main.c src/move.c src/normal.c src/option.c src/option.h src/structs.h src/term.c src/version.c src/window.c
diffstat 19 files changed, 21 insertions(+), 144 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1583,8 +1583,7 @@ do_buffer(
     /* Go to the other buffer. */
     set_curbuf(buf, action);
 
-#if defined(FEAT_LISTCMDS) \
-	&& (defined(FEAT_SCROLLBIND) || defined(FEAT_CURSORBIND))
+#if defined(FEAT_LISTCMDS)
     if (action == DOBUF_SPLIT)
     {
 	RESET_BINDING(curwin);	/* reset 'scrollbind' and 'cursorbind' */
--- a/src/diff.c
+++ b/src/diff.c
@@ -1160,16 +1160,12 @@ diff_win_options(
 # endif
 
     /* Use 'scrollbind' and 'cursorbind' when available */
-#ifdef FEAT_SCROLLBIND
     if (!wp->w_p_diff)
 	wp->w_p_scb_save = wp->w_p_scb;
     wp->w_p_scb = TRUE;
-#endif
-#ifdef FEAT_CURSORBIND
     if (!wp->w_p_diff)
 	wp->w_p_crb_save = wp->w_p_crb;
     wp->w_p_crb = TRUE;
-#endif
     if (!wp->w_p_diff)
 	wp->w_p_wrap_save = wp->w_p_wrap;
     wp->w_p_wrap = FALSE;
@@ -1199,10 +1195,8 @@ diff_win_options(
     /* make sure topline is not halfway a fold */
     changed_window_setting_win(wp);
 # endif
-#ifdef FEAT_SCROLLBIND
     if (vim_strchr(p_sbo, 'h') == NULL)
 	do_cmdline_cmd((char_u *)"set sbo+=hor");
-#endif
     /* Save the current values, to be restored in ex_diffoff(). */
     wp->w_p_diff_saved = TRUE;
 
@@ -1221,9 +1215,7 @@ diff_win_options(
 ex_diffoff(exarg_T *eap)
 {
     win_T	*wp;
-#ifdef FEAT_SCROLLBIND
     int		diffwin = FALSE;
-#endif
 
     FOR_ALL_WINDOWS(wp)
     {
@@ -1237,14 +1229,10 @@ ex_diffoff(exarg_T *eap)
 	    if (wp->w_p_diff_saved)
 	    {
 
-#ifdef FEAT_SCROLLBIND
 		if (wp->w_p_scb)
 		    wp->w_p_scb = wp->w_p_scb_save;
-#endif
-#ifdef FEAT_CURSORBIND
 		if (wp->w_p_crb)
 		    wp->w_p_crb = wp->w_p_crb_save;
-#endif
 		if (!wp->w_p_wrap)
 		    wp->w_p_wrap = wp->w_p_wrap_save;
 #ifdef FEAT_FOLDING
@@ -1276,20 +1264,16 @@ ex_diffoff(exarg_T *eap)
 	    /* Note: 'sbo' is not restored, it's a global option. */
 	    diff_buf_adjust(wp);
 	}
-#ifdef FEAT_SCROLLBIND
 	diffwin |= wp->w_p_diff;
-#endif
     }
 
     /* Also remove hidden buffers from the list. */
     if (eap->forceit)
 	diff_buf_clear();
 
-#ifdef FEAT_SCROLLBIND
     /* Remove "hor" from from 'scrollopt' if there are no diff windows left. */
     if (!diffwin && vim_strchr(p_sbo, 'h') != NULL)
 	do_cmdline_cmd((char_u *)"set sbo-=hor");
-#endif
 }
 
 /*
--- a/src/edit.c
+++ b/src/edit.c
@@ -764,15 +764,11 @@ edit(
 	 */
 	ins_redraw(TRUE);
 
-#ifdef FEAT_SCROLLBIND
 	if (curwin->w_p_scb)
 	    do_check_scrollbind(TRUE);
-#endif
-
-#ifdef FEAT_CURSORBIND
+
 	if (curwin->w_p_crb)
 	    do_check_cursorbind();
-#endif
 	update_curswant();
 	old_topline = curwin->w_topline;
 #ifdef FEAT_DIFF
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5852,9 +5852,7 @@ f_has(typval_T *argvars, typval_T *rettv
 #ifdef FEAT_CSCOPE
 	"cscope",
 #endif
-#ifdef FEAT_CURSORBIND
 	"cursorbind",
-#endif
 #ifdef CURSOR_SHAPE
 	"cursorshape",
 #endif
@@ -6104,9 +6102,7 @@ f_has(typval_T *argvars, typval_T *rettv
 #if defined(FEAT_RUBY) && !defined(DYNAMIC_RUBY)
 	"ruby",
 #endif
-#ifdef FEAT_SCROLLBIND
 	"scrollbind",
-#endif
 #ifdef FEAT_CMDL_INFO
 	"showcmd",
 	"cmdline_info",
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4318,9 +4318,7 @@ do_ecmd(
 	if (topline == 0 && command == NULL)
 	    p_so = 999;			/* force cursor halfway the window */
 	update_topline();
-#ifdef FEAT_SCROLLBIND
 	curwin->w_scbind_pos = curwin->w_topline;
-#endif
 	p_so = n;
 	redraw_curbuf_later(NOT_VALID);	/* redraw this buffer later */
     }
@@ -5270,10 +5268,8 @@ do_sub(exarg_T *eap)
 		    setmouse();		/* disable mouse in xterm */
 #endif
 		    curwin->w_cursor.col = regmatch.startpos[0].col;
-#ifdef FEAT_CURSORBIND
 		    if (curwin->w_p_crb)
 			do_check_cursorbind();
-#endif
 
 		    /* When 'cpoptions' contains "u" don't sync undo when
 		     * asking for confirmation. */
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3232,11 +3232,10 @@ ex_listdo(exarg_T *eap)
 	    if (eap->cmdidx == CMD_windo)
 	    {
 		validate_cursor();	/* cursor may have moved */
-#ifdef FEAT_SCROLLBIND
+
 		/* required when 'scrollbind' has been set */
 		if (curwin->w_p_scb)
 		    do_check_scrollbind(TRUE);
-#endif
 	    }
 
 	    if (eap->cmdidx == CMD_windo || eap->cmdidx == CMD_tabdo)
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -8263,20 +8263,18 @@ ex_splitview(exarg_T *eap)
     else if (win_split(eap->addr_count > 0 ? (int)eap->line2 : 0,
 				     *eap->cmd == 'v' ? WSP_VERT : 0) != FAIL)
     {
-# ifdef FEAT_SCROLLBIND
 	/* Reset 'scrollbind' when editing another file, but keep it when
 	 * doing ":split" without arguments. */
 	if (*eap->arg != NUL
-#  ifdef FEAT_BROWSE
+# ifdef FEAT_BROWSE
 		|| cmdmod.browse
-#  endif
+# endif
 	   )
 	{
 	    RESET_BINDING(curwin);
 	}
 	else
 	    do_check_scrollbind(FALSE);
-# endif
 	do_exedit(eap, old_curwin);
     }
 
@@ -8768,7 +8766,6 @@ ex_swapname(exarg_T *eap UNUSED)
     static void
 ex_syncbind(exarg_T *eap UNUSED)
 {
-#ifdef FEAT_SCROLLBIND
     win_T	*wp;
     win_T	*save_curwin = curwin;
     buf_T	*save_curbuf = curbuf;
@@ -8836,7 +8833,6 @@ ex_syncbind(exarg_T *eap UNUSED)
 	    ins_typebuf(ctrl_o, REMAP_NONE, 0, TRUE, FALSE);
 	}
     }
-#endif
 }
 
 
--- a/src/globals.h
+++ b/src/globals.h
@@ -728,7 +728,6 @@ EXTERN colnr_T	ai_col INIT(= 0);
 EXTERN int     end_comment_pending INIT(= NUL);
 #endif
 
-#ifdef FEAT_SCROLLBIND
 /*
  * This flag is set after a ":syncbind" to let the check_scrollbind() function
  * know that it should not attempt to perform scrollbinding due to the scroll
@@ -736,7 +735,6 @@ EXTERN int     end_comment_pending INIT(
  * undo some of the work done by ":syncbind.")  -ralston
  */
 EXTERN int     did_syncbind INIT(= FALSE);
-#endif
 
 #ifdef FEAT_SMARTINDENT
 /*
--- a/src/gui.c
+++ b/src/gui.c
@@ -3959,9 +3959,7 @@ gui_drag_scrollbar(scrollbar_T *sb, long
     int		sb_num;
 #ifdef USE_ON_FLY_SCROLL
     colnr_T	old_leftcol = curwin->w_leftcol;
-# ifdef FEAT_SCROLLBIND
     linenr_T	old_topline = curwin->w_topline;
-# endif
 # ifdef FEAT_DIFF
     int		old_topfill = curwin->w_topfill;
 # endif
@@ -4126,16 +4124,15 @@ gui_drag_scrollbar(scrollbar_T *sb, long
     }
 
 #ifdef USE_ON_FLY_SCROLL
-# ifdef FEAT_SCROLLBIND
     /*
      * synchronize other windows, as necessary according to 'scrollbind'
      */
     if (curwin->w_p_scb
 	    && ((sb->wp == NULL && curwin->w_leftcol != old_leftcol)
 		|| (sb->wp == curwin && (curwin->w_topline != old_topline
-#  ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
 					   || curwin->w_topfill != old_topfill
-#  endif
+# endif
 			))))
     {
 	do_check_scrollbind(TRUE);
@@ -4145,7 +4142,6 @@ gui_drag_scrollbar(scrollbar_T *sb, long
 		updateWindow(wp);
 	setcursor();
     }
-# endif
     out_flush_cursor(FALSE, TRUE);
 #else
     add_to_input_buf(bytes, byte_count);
@@ -4474,9 +4470,7 @@ gui_do_scroll(void)
 	}
 	if (old_cursor.lnum != wp->w_cursor.lnum)
 	    coladvance(wp->w_curswant);
-#ifdef FEAT_SCROLLBIND
 	wp->w_scbind_pos = wp->w_topline;
-#endif
     }
 
     /* Make sure wp->w_leftcol and wp->w_skipcol are correct. */
--- a/src/macros.h
+++ b/src/macros.h
@@ -294,19 +294,7 @@
 # define DO_AUTOCHDIR
 #endif
 
-#if defined(FEAT_SCROLLBIND) && defined(FEAT_CURSORBIND)
-# define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE
-#else
-# if defined(FEAT_SCROLLBIND)
-#  define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE
-# else
-#  if defined(FEAT_CURSORBIND)
-#   define RESET_BINDING(wp)  (wp)->w_p_crb = FALSE
-#  else
-#   define RESET_BINDING(wp)
-#  endif
-# endif
-#endif
+#define RESET_BINDING(wp)  (wp)->w_p_scb = FALSE; (wp)->w_p_crb = FALSE
 
 #ifdef FEAT_DIFF
 # define PLINES_NOFILL(x) plines_nofill(x)
--- a/src/main.c
+++ b/src/main.c
@@ -857,7 +857,7 @@ vim_main2(void)
     }
 #endif
 
-#if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
+#if defined(FEAT_DIFF)
     /* When a startup script or session file setup for diff'ing and
      * scrollbind, sync the scrollbind now. */
     if (curwin->w_p_diff && curwin->w_p_scb)
@@ -1193,7 +1193,7 @@ main_loop(
 		curbuf->b_last_changedtick = CHANGEDTICK(curbuf);
 	    }
 
-#if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
+#if defined(FEAT_DIFF)
 	    /* Scroll-binding for diff mode may have been postponed until
 	     * here.  Avoids doing it for every change. */
 	    if (diff_need_scrollbind)
--- a/src/move.c
+++ b/src/move.c
@@ -184,9 +184,7 @@ update_topline(void)
 	curwin->w_topline = curwin->w_cursor.lnum;
 	curwin->w_botline = curwin->w_topline;
 	curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
-#ifdef FEAT_SCROLLBIND
 	curwin->w_scbind_pos = 1;
-#endif
 	return;
     }
 
@@ -215,9 +213,7 @@ update_topline(void)
 	curwin->w_topline = 1;
 	curwin->w_botline = 2;
 	curwin->w_valid |= VALID_BOTLINE|VALID_BOTLINE_AP;
-#ifdef FEAT_SCROLLBIND
 	curwin->w_scbind_pos = 1;
-#endif
     }
 
     /*
@@ -2773,7 +2769,6 @@ halfpage(int flag, linenr_T Prenum)
     redraw_later(VALID);
 }
 
-#if defined(FEAT_CURSORBIND) || defined(PROTO)
     void
 do_check_cursorbind(void)
 {
@@ -2846,4 +2841,3 @@ do_check_cursorbind(void)
     curwin = old_curwin;
     curbuf = old_curbuf;
 }
-#endif /* FEAT_CURSORBIND */
--- a/src/normal.c
+++ b/src/normal.c
@@ -1275,21 +1275,17 @@ normal_end:
 	mb_adjust_cursor();
 #endif
 
-#ifdef FEAT_SCROLLBIND
     if (curwin->w_p_scb && toplevel)
     {
 	validate_cursor();	/* may need to update w_leftcol */
 	do_check_scrollbind(TRUE);
     }
-#endif
-
-#ifdef FEAT_CURSORBIND
+
     if (curwin->w_p_crb && toplevel)
     {
 	validate_cursor();	/* may need to update w_leftcol */
 	do_check_cursorbind();
     }
-#endif
 
 #ifdef FEAT_TERMINAL
     /* don't go to Insert mode if a terminal has a running job */
@@ -3980,7 +3976,6 @@ display_showcmd(void)
 }
 #endif
 
-#ifdef FEAT_SCROLLBIND
 /*
  * When "check" is FALSE, prepare for commands that scroll the window.
  * When "check" is TRUE, take care of scroll-binding after the window has
@@ -4139,7 +4134,6 @@ check_scrollbind(linenr_T topline_diff, 
     curwin = old_curwin;
     curbuf = old_curbuf;
 }
-#endif /* #ifdef FEAT_SCROLLBIND */
 
 /*
  * Command character that's ignored.
--- a/src/option.c
+++ b/src/option.c
@@ -227,9 +227,7 @@
 # define PV_RL		OPT_WIN(WV_RL)
 # define PV_RLC		OPT_WIN(WV_RLC)
 #endif
-#ifdef FEAT_SCROLLBIND
-# define PV_SCBIND	OPT_WIN(WV_SCBIND)
-#endif
+#define PV_SCBIND	OPT_WIN(WV_SCBIND)
 #define PV_SCROLL	OPT_WIN(WV_SCROLL)
 #ifdef FEAT_SPELL
 # define PV_SPELL	OPT_WIN(WV_SPELL)
@@ -246,9 +244,7 @@
 # define PV_WFH		OPT_WIN(WV_WFH)
 # define PV_WFW		OPT_WIN(WV_WFW)
 #define PV_WRAP		OPT_WIN(WV_WRAP)
-#ifdef FEAT_CURSORBIND
-# define PV_CRBIND	OPT_WIN(WV_CRBIND)
-#endif
+#define PV_CRBIND	OPT_WIN(WV_CRBIND)
 #ifdef FEAT_CONCEAL
 # define PV_COCU	OPT_WIN(WV_COCU)
 # define PV_COLE	OPT_WIN(WV_COLE)
@@ -976,11 +972,7 @@ static struct vimoption options[] =
 #endif
 			    {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
     {"cursorbind",  "crb",  P_BOOL|P_VI_DEF,
-#ifdef FEAT_CURSORBIND
 			    (char_u *)VAR_WIN, PV_CRBIND,
-#else
-			    (char_u *)NULL, PV_NONE,
-#endif
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWIN,
 #ifdef FEAT_SYN_HL
@@ -2382,11 +2374,7 @@ static struct vimoption options[] =
 			    (char_u *)VAR_WIN, PV_SCROLL,
 			    {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
     {"scrollbind",  "scb",  P_BOOL|P_VI_DEF,
-#ifdef FEAT_SCROLLBIND
 			    (char_u *)VAR_WIN, PV_SCBIND,
-#else
-			    (char_u *)NULL, PV_NONE,
-#endif
 			    {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
     {"scrolljump",  "sj",   P_NUM|P_VI_DEF|P_VIM,
 			    (char_u *)&p_sj, PV_NONE,
@@ -2395,13 +2383,8 @@ static struct vimoption options[] =
 			    (char_u *)&p_so, PV_NONE,
 			    {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
     {"scrollopt",   "sbo",  P_STRING|P_VI_DEF|P_ONECOMMA|P_NODUP,
-#ifdef FEAT_SCROLLBIND
 			    (char_u *)&p_sbo, PV_NONE,
 			    {(char_u *)"ver,jump", (char_u *)0L}
-#else
-			    (char_u *)NULL, PV_NONE,
-			    {(char_u *)0L, (char_u *)0L}
-#endif
 			    SCRIPTID_INIT},
     {"sections",    "sect", P_STRING|P_VI_DEF,
 			    (char_u *)&p_sections, PV_NONE,
@@ -3230,9 +3213,7 @@ static char *(p_km_values[]) = {"startse
 #ifdef FEAT_BROWSE
 static char *(p_bsdir_values[]) = {"current", "last", "buffer", NULL};
 #endif
-#ifdef FEAT_SCROLLBIND
 static char *(p_scbopt_values[]) = {"ver", "hor", "jump", NULL};
-#endif
 static char *(p_debug_values[]) = {"msg", "throw", "beep", NULL};
 static char *(p_ead_values[]) = {"both", "ver", "hor", NULL};
 static char *(p_buftype_values[]) = {"nofile", "nowrite", "quickfix", "help", "terminal", "acwrite", NULL};
@@ -6240,13 +6221,11 @@ did_set_string_option(
 #endif
 
     /* 'scrollopt' */
-#ifdef FEAT_SCROLLBIND
     else if (varp == &p_sbo)
     {
 	if (check_opt_strings(p_sbo, p_scbopt_values, TRUE) != OK)
 	    errmsg = e_invarg;
     }
-#endif
 
     /* 'ambiwidth' */
 #ifdef FEAT_MBYTE
@@ -8328,7 +8307,6 @@ set_bool_option(
     }
 #endif
 
-#ifdef FEAT_SCROLLBIND
     /* when 'scrollbind' is set: snapshot the current position to avoid a jump
      * at the end of normal_cmd() */
     else if ((int *)varp == &curwin->w_p_scb)
@@ -8339,7 +8317,6 @@ set_bool_option(
 	    curwin->w_scbind_pos = curwin->w_topline;
 	}
     }
-#endif
 
 #if defined(FEAT_QUICKFIX)
     /* There can be only one window with 'previewwindow' set. */
@@ -10688,12 +10665,8 @@ get_varp(struct vimoption *p)
 	case PV_BRI:	return (char_u *)&(curwin->w_p_bri);
 	case PV_BRIOPT: return (char_u *)&(curwin->w_p_briopt);
 #endif
-#ifdef FEAT_SCROLLBIND
 	case PV_SCBIND: return (char_u *)&(curwin->w_p_scb);
-#endif
-#ifdef FEAT_CURSORBIND
 	case PV_CRBIND: return (char_u *)&(curwin->w_p_crb);
-#endif
 #ifdef FEAT_CONCEAL
 	case PV_COCU:   return (char_u *)&(curwin->w_p_cocu);
 	case PV_COLE:   return (char_u *)&(curwin->w_p_cole);
@@ -10878,14 +10851,10 @@ copy_winopt(winopt_T *from, winopt_T *to
     to->wo_bri = from->wo_bri;
     to->wo_briopt = vim_strsave(from->wo_briopt);
 #endif
-#ifdef FEAT_SCROLLBIND
     to->wo_scb = from->wo_scb;
     to->wo_scb_save = from->wo_scb_save;
-#endif
-#ifdef FEAT_CURSORBIND
     to->wo_crb = from->wo_crb;
     to->wo_crb_save = from->wo_crb_save;
-#endif
 #ifdef FEAT_SPELL
     to->wo_spell = from->wo_spell;
 #endif
--- a/src/option.h
+++ b/src/option.h
@@ -739,9 +739,7 @@ EXTERN char_u	*p_pp;		/* 'packpath' */
 EXTERN char_u	*p_rtp;		/* 'runtimepath' */
 EXTERN long	p_sj;		/* 'scrolljump' */
 EXTERN long	p_so;		/* 'scrolloff' */
-#ifdef FEAT_SCROLLBIND
 EXTERN char_u	*p_sbo;		/* 'scrollopt' */
-#endif
 EXTERN char_u	*p_sections;	/* 'sections' */
 EXTERN int	p_secure;	/* 'secure' */
 EXTERN char_u	*p_sel;		/* 'selection' */
@@ -1133,9 +1131,7 @@ enum
     , WV_TK
     , WV_TMS
 #endif
-#ifdef FEAT_CURSORBIND
     , WV_CRBIND
-#endif
 #ifdef FEAT_LINEBREAK
     , WV_BRI
     , WV_BRIOPT
@@ -1172,9 +1168,7 @@ enum
     , WV_RL
     , WV_RLC
 #endif
-#ifdef FEAT_SCROLLBIND
     , WV_SCBIND
-#endif
     , WV_SCROLL
 #ifdef FEAT_SPELL
     , WV_SPELL
--- a/src/structs.h
+++ b/src/structs.h
@@ -244,14 +244,12 @@ typedef struct
     char_u	*wo_stl;
 #define w_p_stl w_onebuf_opt.wo_stl	/* 'statusline' */
 #endif
-#ifdef FEAT_SCROLLBIND
     int		wo_scb;
-# define w_p_scb w_onebuf_opt.wo_scb	/* 'scrollbind' */
+#define w_p_scb w_onebuf_opt.wo_scb	/* 'scrollbind' */
     int		wo_diff_saved; /* options were saved for starting diff mode */
-# define w_p_diff_saved w_onebuf_opt.wo_diff_saved
+#define w_p_diff_saved w_onebuf_opt.wo_diff_saved
     int		wo_scb_save;	/* 'scrollbind' saved for diff mode*/
-# define w_p_scb_save w_onebuf_opt.wo_scb_save
-#endif
+#define w_p_scb_save w_onebuf_opt.wo_scb_save
     int		wo_wrap;
 #define w_p_wrap w_onebuf_opt.wo_wrap	/* 'wrap' */
 #ifdef FEAT_DIFF
@@ -264,12 +262,10 @@ typedef struct
     long	wo_cole;		/* 'conceallevel' */
 # define w_p_cole w_onebuf_opt.wo_cole
 #endif
-#ifdef FEAT_CURSORBIND
     int		wo_crb;
-# define w_p_crb w_onebuf_opt.wo_crb	/* 'cursorbind' */
+#define w_p_crb w_onebuf_opt.wo_crb	/* 'cursorbind' */
     int		wo_crb_save;	/* 'cursorbind' state saved for diff mode*/
-# define w_p_crb_save w_onebuf_opt.wo_crb_save
-#endif
+#define w_p_crb_save w_onebuf_opt.wo_crb_save
 #ifdef FEAT_SIGNS
     char_u	*wo_scl;
 # define w_p_scl w_onebuf_opt.wo_scl	/* 'signcolumn' */
@@ -2829,9 +2825,7 @@ struct window_S
     /* transform a pointer to a "onebuf" option into a "allbuf" option */
 #define GLOBAL_WO(p)	((char *)p + sizeof(winopt_T))
 
-#ifdef FEAT_SCROLLBIND
     long	w_scbind_pos;
-#endif
 
 #ifdef FEAT_EVAL
     dictitem_T	w_winvar;	/* variable for "w:" Dictionary */
--- a/src/term.c
+++ b/src/term.c
@@ -3297,10 +3297,8 @@ set_shellsize(int width, int height, int
 	}
 	else
 	{
-#ifdef FEAT_SCROLLBIND
 	    if (curwin->w_p_scb)
 		do_check_scrollbind(TRUE);
-#endif
 	    if (State & CMDLINE)
 	    {
 		update_screen(NOT_VALID);
--- a/src/version.c
+++ b/src/version.c
@@ -168,11 +168,7 @@ static char *(features[]) =
 #else
 	"-cscope",
 #endif
-#ifdef FEAT_CURSORBIND
 	"+cursorbind",
-#else
-	"-cursorbind",
-#endif
 #ifdef CURSOR_SHAPE
 	"+cursorshape",
 #else
@@ -556,11 +552,7 @@ static char *(features[]) =
 #else
 	"-ruby",
 #endif
-#ifdef FEAT_SCROLLBIND
 	"+scrollbind",
-#else
-	"-scrollbind",
-#endif
 #ifdef FEAT_SIGNS
 	"+signs",
 #else
@@ -775,6 +767,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1566,
+/**/
     1565,
 /**/
     1564,
--- a/src/window.c
+++ b/src/window.c
@@ -4498,9 +4498,7 @@ win_alloc(win_T *after UNUSED, int hidde
 #endif
     new_wp->w_botline = 2;
     new_wp->w_cursor.lnum = 1;
-#ifdef FEAT_SCROLLBIND
     new_wp->w_scbind_pos = 1;
-#endif
 
     /* We won't calculate w_fraction until resizing the window */
     new_wp->w_fraction = 0;
@@ -5659,11 +5657,7 @@ scroll_to_fraction(win_T *wp, int prev_h
 
     /* Don't change w_topline when height is zero.  Don't set w_topline when
      * 'scrollbind' is set and this isn't the current window. */
-    if (height > 0
-#ifdef FEAT_SCROLLBIND
-	    && (!wp->w_p_scb || wp == curwin)
-#endif
-       )
+    if (height > 0 && (!wp->w_p_scb || wp == curwin))
     {
 	/*
 	 * Find a value for w_topline that shows the cursor at the same