diff --git a/ChangeLog b/ChangeLog
index 18c307c..6e461c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,7 +21,9 @@
 	- Added "syntax" command to .nanorc file, to allow multiple 
 	  syntaxes.  New function color.c:update_color(), calls in various
 	  files.c places, syntaxtype struct, global variables syntaxes,
-	  syntaxfile_regexp and synfilematches.
+	  syntaxfile_regexp and synfilematches.  Global flag 'Y', "--syntax"
+	  to specify the type on the command line, if there's no good 
+	  filename regex to use.  Global variable syntaxstr.
 - configure.ac:
 	- Define NDEBUG to silence asserts (David Benbennick).
 - files.c:
diff --git a/color.c b/color.c
index 7135a39..4835827 100644
--- a/color.c
+++ b/color.c
@@ -193,6 +193,15 @@
 		colorstrings = tmpsyntax->color; 
 	}
     }
+
+    /* if we haven't found a match, use the override string */
+    if (colorstrings == NULL && syntaxstr != NULL) {
+	for (tmpsyntax = syntaxes; tmpsyntax != NULL; 
+	     tmpsyntax = tmpsyntax->next) {
+	    if (!strcasecmp(tmpsyntax->desc, syntaxstr))
+		colorstrings = tmpsyntax->color;
+	}
+    }
     do_colorinit();
     edit_refresh();
 }
diff --git a/global.c b/global.c
index 501af2e..b64f67a 100644
--- a/global.c
+++ b/global.c
@@ -111,6 +111,7 @@
     colorstruct colors[NUM_NCOLORS];
     colortype *colorstrings = NULL;
     syntaxtype *syntaxes = NULL;
+    char *syntaxstr = NULL;
 #endif
 
 #if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined (DISABLE_HELP)
diff --git a/nano.1 b/nano.1
index 2ca15bf..b9f361d 100644
--- a/nano.1
+++ b/nano.1
@@ -65,6 +65,9 @@
 .B \-V (\-\-version)
 Show the current version number and author.
 .TP
+.B \-Y (\-\-syntax=[str])
+Specify a specific syntax hilighting from the .nanorc to use (if available).
+.TP
 .B \-c (\-\-const)
 Constantly show the cursor position.
 .TP
diff --git a/nano.c b/nano.c
index 400e867..de74b84 100644
--- a/nano.c
+++ b/nano.c
@@ -510,11 +510,15 @@
 #ifndef DISABLE_JUSTIFY
     print1opt(_("-Q [str]"), _("--quotestr [str]"), _("Quoting string, default \"> \""));
 #endif
+
 #ifndef NANO_SMALL
     print1opt("-S", "--smooth", _("Smooth scrolling"));
 #endif
     print1opt(_("-T [num]"), _("--tabsize=[num]"), _("Set width of a tab to num"));
     print1opt("-V", "--version", _("Print version information and exit"));
+#ifdef ENABLE_COLOR
+    print1opt(_("-Y [str]"), _("--syntax [str]"), _("Syntax definition to use"));
+#endif
     print1opt("-c", "--const", _("Constantly show cursor position"));
     print1opt("-h", "--help", _("Show this message"));
 #ifndef NANO_SMALL
@@ -2837,6 +2841,9 @@
 #ifndef NANO_SMALL
 	{"smooth", 0, 0, 'S'},
 #endif
+#ifdef ENABLE_COLOR
+	{"syntax", 1, 0, 'Y'},
+#endif
 	{"keypad", 0, 0, 'K'},
 	{0, 0, 0, 0}
     };
@@ -2858,11 +2865,11 @@
 #endif /* ENABLE_NANORC */
 
 #ifdef HAVE_GETOPT_LONG
-    while ((optchr = getopt_long(argc, argv, "h?DFKMNQ:RST:Vabcefgijklmo:pr:s:tvwxz",
+    while ((optchr = getopt_long(argc, argv, "h?DFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz",
 				 long_options, &option_index)) != EOF) {
 #else
     while ((optchr =
-	    getopt(argc, argv, "h?DFKMNQ:RST:Vabcefgijklmo:pr:s:tvwxz")) != EOF) {
+	    getopt(argc, argv, "h?DFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz")) != EOF) {
 #endif
 
 	switch (optchr) {
@@ -2916,6 +2923,11 @@
 	case 'V':
 	    version();
 	    exit(0);
+#ifdef ENABLE_COLOR
+	case 'Y':
+	    syntaxstr = mallocstrcpy(syntaxstr, optarg);
+	    break;
+#endif
 	case 'a':
 	case 'b':
 	case 'e':
diff --git a/proto.h b/proto.h
index ffdbec3..56a8f34 100644
--- a/proto.h
+++ b/proto.h
@@ -67,6 +67,7 @@
 #ifdef ENABLE_COLOR
 extern colortype *colorstrings;
 extern syntaxtype *syntaxes;
+extern char *syntaxstr;
 #endif
 
 extern shortcut *shortcut_list;
diff --git a/rcfile.c b/rcfile.c
index c96a8f0..243cad2 100644
--- a/rcfile.c
+++ b/rcfile.c
@@ -197,7 +197,7 @@
 
     if (*ptr != '"') {
 	rcfile_error(_("regex strings must begin and end with a \" character\n"));
-	exit(1);
+	return;
     }
     ptr++;
 
@@ -206,7 +206,7 @@
 
     if (ptr == NULL) {
 	rcfile_error(_("Missing syntax name"));
-	exit(1);
+	return;
     }
 
 	if (syntaxes == NULL) {
@@ -284,7 +284,7 @@
 
     if (ptr == NULL) {
 	rcfile_error(_("Missing color name"));
-	exit(1);
+	return;
     }
 
     if (strstr(fgstr, ",")) {
@@ -298,7 +298,7 @@
 
     if (syntaxes == NULL) {
 	rcfile_error(_("Cannot add a color directive without a syntax line"));
-	exit(1);
+	return;
     }
 
     for (tmpsyntax = syntaxes; tmpsyntax->next != NULL;
