diff --git a/src/evalfunc.c b/src/evalfunc.c
index 230ea0d..a5f9ee3 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5469,20 +5469,8 @@
 		0
 #endif
 		},
-	{"builtin_terms",
-#if defined(SOME_BUILTIN_TCAPS) || defined(ALL_BUILTIN_TCAPS)
-		1
-#else
-		0
-#endif
-		},
-	{"all_builtin_terms",
-#if defined(ALL_BUILTIN_TCAPS)
-		1
-#else
-		0
-#endif
-		},
+	{"builtin_terms", 1},
+	{"all_builtin_terms", 1},
 	{"browsefilter",
 #if defined(FEAT_BROWSE) && (defined(USE_FILE_CHOOSER) \
 	|| defined(FEAT_GUI_MSWIN) \
diff --git a/src/feature.h b/src/feature.h
index ebd5dbc..f1a7af8 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -120,6 +120,7 @@
  * +path_extra		up/downwards searching in 'path' and 'tags'.
  * +wildignore		'wildignore' and 'backupskip' options
  * +wildmenu		'wildmenu' option
+ * +builtin_terms	all builtin termcap entries included
  *
  * Obsolete:
  * +tag_old_static	Old style static tags: "file:tag  file  ..".
@@ -375,40 +376,20 @@
 #endif
 
 /*
- * +builtin_terms	Choose one out of the following four:
- *
- * NO_BUILTIN_TCAPS	Do not include any builtin termcap entries (used only
- *			with HAVE_TGETENT defined).
- *
- * (nothing)		Machine specific termcap entries will be included.
- *
- * SOME_BUILTIN_TCAPS	Include most useful builtin termcap entries (used only
- *			with NO_BUILTIN_TCAPS not defined).
- *			This is the default.
- *
- * ALL_BUILTIN_TCAPS	Include all builtin termcap entries
- *			(used only with NO_BUILTIN_TCAPS not defined).
- */
-#ifdef HAVE_TGETENT
-// #define NO_BUILTIN_TCAPS
-#endif
-
-#if !defined(NO_BUILTIN_TCAPS)
-# ifdef FEAT_BIG
-#  define ALL_BUILTIN_TCAPS
-# else
-#  define SOME_BUILTIN_TCAPS		// default
-# endif
-#endif
-
-/*
- * +cryptv		Encryption (by Mohsin Ahmed <mosh@sasi.com>).
+ * +cryptv		Encryption (originally by Mohsin Ahmed <mosh@sasi.com>).
  */
 #if defined(FEAT_NORMAL) && !defined(FEAT_CRYPT) || defined(PROTO)
 # define FEAT_CRYPT
 #endif
 
 /*
+ * libsodium - add cryptography support
+ */
+#if defined(HAVE_SODIUM) && defined(FEAT_BIG)
+# define FEAT_SODIUM
+#endif
+
+/*
  * +mksession		":mksession" command.
  *			fully depends on +eval
  */
@@ -514,13 +495,6 @@
 # define FEAT_SOUND_CANBERRA
 #endif
 
-/*
- * libsodium - add cryptography support
- */
-#if defined(HAVE_SODIUM) && defined(FEAT_BIG)
-# define FEAT_SODIUM
-#endif
-
 // There are two ways to use XPM.
 #if (defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF)) \
 		|| defined(HAVE_X11_XPM_H)
diff --git a/src/term.c b/src/term.c
index a922938..9c28741 100644
--- a/src/term.c
+++ b/src/term.c
@@ -223,7 +223,6 @@
  */
 static struct builtin_term builtin_termcaps[] =
 {
-
 #if defined(FEAT_GUI)
 /*
  * GUI pseudo term-cap.
@@ -276,9 +275,6 @@
 	// in check_termcode()
 #endif
 
-#ifndef NO_BUILTIN_TCAPS
-
-# if defined(AMIGA) || defined(ALL_BUILTIN_TCAPS)
 /*
  * Amiga console window, default for Amiga
  */
@@ -376,71 +372,7 @@
     {TERMCAP2KEY('#', '2'), "\233\065\064~"},	// shifted home key
     {TERMCAP2KEY('#', '3'), "\233\065\060~"},	// shifted insert key
     {TERMCAP2KEY('*', '7'), "\233\065\065~"},	// shifted end key
-# endif
 
-# ifdef ALL_BUILTIN_TCAPS
-/*
- * almost standard ANSI terminal
- */
-    {(int)KS_CE,	"\033[K"},
-    {(int)KS_CD,	"\033[J"},
-    {(int)KS_AL,	"\033[L"},
-#  ifdef TERMINFO
-    {(int)KS_CAL,	"\033[%p1%dL"},
-#  else
-    {(int)KS_CAL,	"\033[%dL"},
-#  endif
-    {(int)KS_DL,	"\033[M"},
-#  ifdef TERMINFO
-    {(int)KS_CDL,	"\033[%p1%dM"},
-#  else
-    {(int)KS_CDL,	"\033[%dM"},
-#  endif
-    {(int)KS_CL,	"\033[H\033[2J"},
-#ifdef notyet
-    {(int)KS_VI,	"[VI]"}, // cursor invisible, VT320: CSI ? 25 l
-    {(int)KS_VE,	"[VE]"}, // cursor visible, VT320: CSI ? 25 h
-#endif
-    {(int)KS_ME,	"\033[m"},	// normal mode
-    {(int)KS_MR,	"\033[7m"},	// reverse
-    {(int)KS_MD,	"\033[1m"},	// bold
-    {(int)KS_SO,	"\033[31m"},	// standout mode: red
-    {(int)KS_SE,	"\033[m"},	// standout end
-    {(int)KS_CZH,	"\033[35m"},	// italic: purple
-    {(int)KS_CZR,	"\033[m"},	// italic end
-    {(int)KS_US,	"\033[4m"},	// underscore mode
-    {(int)KS_UE,	"\033[m"},	// underscore end
-    {(int)KS_CCO,	"8"},		// allow 8 colors
-#  ifdef TERMINFO
-    {(int)KS_CAB,	"\033[4%p1%dm"},// set background color
-    {(int)KS_CAF,	"\033[3%p1%dm"},// set foreground color
-#  else
-    {(int)KS_CAB,	"\033[4%dm"},	// set background color
-    {(int)KS_CAF,	"\033[3%dm"},	// set foreground color
-#  endif
-    {(int)KS_OP,	"\033[m"},	// reset colors
-    {(int)KS_MS,	"y"},		// safe to move cur in reverse mode
-    {(int)KS_UT,	"y"},		// guessed
-    {(int)KS_LE,	"\b"},
-#  ifdef TERMINFO
-    {(int)KS_CM,	"\033[%i%p1%d;%p2%dH"},
-#  else
-    {(int)KS_CM,	"\033[%i%d;%dH"},
-#  endif
-    {(int)KS_SR,	"\033M"},
-#  ifdef TERMINFO
-    {(int)KS_CRI,	"\033[%p1%dC"},
-#  else
-    {(int)KS_CRI,	"\033[%dC"},
-#  endif
-
-    {K_UP,		"\033[A"},
-    {K_DOWN,		"\033[B"},
-    {K_LEFT,		"\033[D"},
-    {K_RIGHT,		"\033[C"},
-# endif
-
-# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS)
 /*
  * standard ANSI terminal, default for unix
  */
@@ -474,9 +406,7 @@
 #  else
     {(int)KS_CRI,	"\033[%dC"},
 #  endif
-# endif
 
-# if defined(ALL_BUILTIN_TCAPS)
 /*
  * These codes are valid when nansi.sys or equivalent has been installed.
  * Function keys on a PC are preceded with a NUL. These are converted into
@@ -555,9 +485,7 @@
     {K_END,		"\316O"},
     {K_PAGEDOWN,	"\316Q"},
     {K_PAGEUP,		"\316I"},
-# endif
 
-# if defined(MSWIN) || defined(ALL_BUILTIN_TCAPS)
 /*
  * These codes are valid for the Win32 Console .  The entries that start with
  * ESC | are translated into console calls in os_win32.c.  The function keys
@@ -689,9 +617,7 @@
     {K_K9,		"\316\376"},
     {K_BS,		"\316x"},
     {K_S_BS,		"\316y"},
-# endif
 
-# if defined(VMS) || defined(ALL_BUILTIN_TCAPS)
 /*
  * VT320 is working as an ANSI terminal compatible DEC terminal.
  * (it covers VT1x0, VT2x0 and VT3x0 up to VT320 on VMS as well)
@@ -791,9 +717,7 @@
     {K_K8,		"\033Ox"},	// keypad 8
     {K_K9,		"\033Oy"},	// keypad 9
     {K_BS,		"\x7f"},	// for some reason 0177 doesn't work
-# endif
 
-# if defined(ALL_BUILTIN_TCAPS)
 /*
  * Ordinary vt52
  */
@@ -818,9 +742,7 @@
     {K_F3,		"\033R"},
     {(int)KS_CL,	"\033H\033J"},
     {(int)KS_MS,	"y"},
-# endif
 
-# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS) || defined(SOME_BUILTIN_TCAPS)
     {(int)KS_NAME,	"xterm"},
     {(int)KS_CE,	"\033[K"},
     {(int)KS_AL,	"\033[L"},
@@ -1012,9 +934,7 @@
     {TERMCAP2KEY('F', 'P'), "\033[56;*~"}, // F35
     {TERMCAP2KEY('F', 'Q'), "\033[57;*~"}, // F36
     {TERMCAP2KEY('F', 'R'), "\033[58;*~"}, // F37
-# endif
 
-# if defined(UNIX) || defined(ALL_BUILTIN_TCAPS)
 /*
  * iris-ansi for Silicon Graphics machines.
  */
@@ -1128,9 +1048,7 @@
     {K_END,		"\033[146q"},
     {K_PAGEUP,		"\033[150q"},
     {K_PAGEDOWN,	"\033[154q"},
-# endif
 
-# if defined(DEBUG) || defined(ALL_BUILTIN_TCAPS)
 /*
  * for debugging
  */
@@ -1316,9 +1234,6 @@
     {K_K7,		"[K7]"},
     {K_K8,		"[K8]"},
     {K_K9,		"[K9]"},
-# endif
-
-#endif // NO_BUILTIN_TCAPS
 
 /*
  * The most minimal terminal: only clear screen and cursor positioning
diff --git a/src/version.c b/src/version.c
index 25999cb..2247589 100644
--- a/src/version.c
+++ b/src/version.c
@@ -134,15 +134,7 @@
 #else
 	"-browse",
 #endif
-#ifdef NO_BUILTIN_TCAPS
-	"-builtin_terms",
-#endif
-#ifdef SOME_BUILTIN_TCAPS
-	"+builtin_terms",
-#endif
-#ifdef ALL_BUILTIN_TCAPS
 	"++builtin_terms",
-#endif
 #ifdef FEAT_BYTEOFF
 	"+byte_offset",
 #else
@@ -716,6 +708,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    280,
+/**/
     279,
 /**/
     278,
