diff --git a/ChangeLog b/ChangeLog
index 1628c2a0a94355acf87f966f9ad37cb51599b35a..41b0eb8041bd3f0dd20e663e4a6fc88cf9adc6e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-11 Chris Allegretta <chrisa@asty.org>
+	* nanorc.c (parse_include): Do call real_dir_from_tilde() on included
+	  files in .nanorc, but still avoiding bug #25297.  Fixes ~ and ~user
+	  specifications for nanorc include files, as reported by Eitan Adler.
+
 2009-02-09 Chris Allegretta <chrisa@asty.org>
 	* New option -q, --quiet, rcfile option "quiet" implemented.  Skips printing
 	  errors about the rcfile and asking user to press enter.  Also, nano should
diff --git a/src/rcfile.c b/src/rcfile.c
index dd4c059e735401aabbe431fe8bfeeeb1671173bd..4704e85e71f8df1fbd667d6410a0a52c0b82969b 100644
--- a/src/rcfile.c
+++ b/src/rcfile.c
@@ -474,7 +474,7 @@ void parse_include(char *ptr)
 {
     struct stat rcinfo;
     FILE *rcstream;
-    char *option, *nanorc_save = nanorc;
+    char *option, *nanorc_save = nanorc, *expanded;
     size_t lineno_save = lineno;
 
     option = ptr;
@@ -495,20 +495,22 @@ void parse_include(char *ptr)
 	}
     }
 
+    expanded = real_dir_from_tilde(option);
+
     /* Open the new syntax file. */
-    if ((rcstream = fopen(option, "rb")) == NULL) {
-	rcfile_error(_("Error reading %s: %s"), option,
+    if ((rcstream = fopen(expanded, "rb")) == NULL) {
+	rcfile_error(_("Error reading %s: %s"), expanded,
 		strerror(errno));
 	return;
     }
 
     /* Use the name and line number position of the new syntax file
      * while parsing it, so we can know where any errors in it are. */
-    nanorc = option;
+    nanorc = expanded;
     lineno = 0;
 
 #ifdef DEBUG
-    fprintf(stderr, "Parsing file \"%s\"\n", option);
+    fprintf(stderr, "Parsing file \"%s\" (expanded from \"%s\")\n", expanded, option);
 #endif
 
     parse_rcfile(rcstream