diff --git a/ChangeLog b/ChangeLog
index 6c733c33277e998be992826658bd3ebad7218d7a..7c1f24c4461765ff04cffad30494786fd657772b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@ General
 	- Changed #ifdefs to check for both DISABLE_TABCOMP and
 	  NANO_SMALL, makes tiny option leave out tab completion, which
 	  shoudl be left out in that circumstance.  Saves at least 5k.
+	- Previous change to #ifdefs DISABLE_TABCOMP and NANO_SMALL rolled
+	  back.
+	- Changed nano.h to automatically define 5 DISABLE varibles when
+	  NANO_SMALL (enable-tiny) is requested at configure.
 - configure.in:
 	- Fix for _use_keypad check breaking slang support (Christian
 	  Weisgerber).
diff --git a/files.c b/files.c
index 64eb8bd28e00429ac54f3f19fe4b608222f21532..4e0316c1d6e35fd0a84a939b1d8f9ec0857ca4c9 100644
--- a/files.c
+++ b/files.c
@@ -265,7 +265,7 @@ int do_insertfile(void)
 	fprintf(stderr, "filename is %s", answer);
 #endif
 
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
 	realname = real_dir_from_tilde(answer);
 #else
 	realname = mallocstrcpy(realname, answer);
@@ -276,7 +276,7 @@ int do_insertfile(void)
 	    
 	    char *tmp = do_browse_from(realname);
 
-#if defined(DISABLE_TABCOMP)
+#ifdef DISABLE_TABCOMP
 	    realname = NULL;
 #endif
 	    if 	(tmp != NULL)
@@ -342,7 +342,7 @@ int write_file(char *name, int tmp)
     if (buf != NULL)
 	free(buf);
 
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
     realname = real_dir_from_tilde(name);
 #else
     realname = mallocstrcpy(realname, name);
@@ -575,7 +575,7 @@ int do_writeout_void(void)
     return do_writeout(filename, 0);
 }
 
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
 static char **homedirs;
 
 /* Return a malloc()ed string containing the actual directory, used
diff --git a/nano.h b/nano.h
index 43e1b8131706ca719c2103cbc87c390600f9c776..cd171d168cf773359aae3b768349748affa2dd61 100644
--- a/nano.h
+++ b/nano.h
@@ -30,6 +30,31 @@
 #ifndef NANO_H
 #define NANO_H 1
 
+/* Define this to make the nano executable as small as possible */
+#ifdef NANO_SMALL
+
+ #ifndef DISABLE_TABCOMP
+  #define DISABLE_TABCOMP 1
+ #endif
+
+ #ifndef DISABLE_JUSTIFY
+  #define DISABLE_JUSTIFY 1
+ #endif
+
+ #ifndef DISABLE_SPELLER
+  #define DISABLE_SPELLER 1
+ #endif
+
+ #ifndef DISABLE_HELP
+  #define DISABLE_HELP 1
+ #endif
+
+ #ifndef DISABLE_BROWSER
+  #define DISABLE_BROWSER 1
+ #endif
+
+#endif /* NANO_SMALL */
+
 /* Macros for the flags int... */
 #define SET(bit) flags |= bit
 #define UNSET(bit) flags &= ~bit
diff --git a/utils.c b/utils.c
index 2c0e74859112994144b1ea5d5ee5227704d916c4..a13964198fa8c9a9eb4ea8dfaba8b655a9e09d43 100644
--- a/utils.c
+++ b/utils.c
@@ -159,7 +159,7 @@ void new_magicline(void)
     totsize++;
 }
 
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
 /*
  * Routine to see if a text string is matched by a wildcard pattern.
  * Returns TRUE if the text is matched, or FALSE if it is not matched
diff --git a/winio.c b/winio.c
index e496e1a279d27bdad878e8b9525e31f033aa12c6..e10d5cb46084174431fadfe460d68dc6ca0d4be0 100644
--- a/winio.c
+++ b/winio.c
@@ -250,7 +250,7 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
     int kbinput = 0, j = 0, x = 0, xend;
     int x_left = 0, inputlen, tabbed = 0;
     char *inputbuf;
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
     int shift = 0;
 #endif
     
@@ -346,7 +346,7 @@ int nanogetstr(int allowtabs, char *buf, char *def, shortcut s[], int slen,
 		x--;
 	    nanoget_repaint(buf, inputbuf, x);
 	    break;
-#if !defined(DISABLE_TABCOMP) && !defined(NANO_SMALL)
+#ifndef DISABLE_TABCOMP
 	case NANO_CONTROL_I:
 	    if (allowtabs) {
 		shift = 0;