]> git.wh0rd.org Git - nano.git/commitdiff
Global flag -Y, --syntax to specify the type on the command line, if there's no good...
authorChris Allegretta <chrisa@asty.org>
Sat, 4 May 2002 04:23:30 +0000 (04:23 +0000)
committerChris Allegretta <chrisa@asty.org>
Sat, 4 May 2002 04:23:30 +0000 (04:23 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1199 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
color.c
global.c
nano.1
nano.c
proto.h
rcfile.c

index 18c307c3c05181f70e85416bf62815966ced7b0c..6e461c447e6015d83bdc08b40866f31a3996599e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,7 +21,9 @@ CVS code -
        - 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 7135a395e4b767822d4d964c79a7a3faa62ac609..48358272f157c0c8ec72440cf30883d2404cbdf5 100644 (file)
--- a/color.c
+++ b/color.c
@@ -193,6 +193,15 @@ void update_color(void)
                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();
 }
index 501af2e58466834ee944ffafe333cde17782337e..b64f67a51849b45ae7b840e81f7d66f16b62ca5d 100644 (file)
--- a/global.c
+++ b/global.c
@@ -111,6 +111,7 @@ shortcut *browser_list = NULL;
     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 2ca15bf054ea9a11a96f436f883394119e9f2750..b9f361d9b11b2e40ad0f17b7e3382c319393a97b 100644 (file)
--- a/nano.1
+++ b/nano.1
@@ -65,6 +65,9 @@ Set the size (width) of a tab.
 .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 400e867118f866471800834dd7f53de8edfd8155..de74b842c062bc6d195d4506f9d920bfc9aca049 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -510,11 +510,15 @@ void usage(void)
 #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
@@ -2836,6 +2840,9 @@ int main(int argc, char *argv[])
 #endif
 #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 @@ int main(int argc, char *argv[])
 #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 @@ int main(int argc, char *argv[])
        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 ffdbec3a62f434df6cf3506d13c31071caa3a022..56a8f3427c4414cd5b9f19ed560c5a06f9519e6c 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -67,6 +67,7 @@ extern openfilestruct *open_files;
 #ifdef ENABLE_COLOR
 extern colortype *colorstrings;
 extern syntaxtype *syntaxes;
+extern char *syntaxstr;
 #endif
 
 extern shortcut *shortcut_list;
index c96a8f006491f3d98cabafd01e543eef3d9d00f9..243cad2bf3293b0b3c49a51964f25b9f82cf5583 100644 (file)
--- a/rcfile.c
+++ b/rcfile.c
@@ -197,7 +197,7 @@ void parse_syntax(FILE * rcstream, char *buf, char *ptr)
 
     if (*ptr != '"') {
        rcfile_error(_("regex strings must begin and end with a \" character\n"));
-       exit(1);
+       return;
     }
     ptr++;
 
@@ -206,7 +206,7 @@ void parse_syntax(FILE * rcstream, char *buf, char *ptr)
 
     if (ptr == NULL) {
        rcfile_error(_("Missing syntax name"));
-       exit(1);
+       return;
     }
 
        if (syntaxes == NULL) {
@@ -284,7 +284,7 @@ void parse_colors(FILE * rcstream, char *buf, char *ptr)
 
     if (ptr == NULL) {
        rcfile_error(_("Missing color name"));
-       exit(1);
+       return;
     }
 
     if (strstr(fgstr, ",")) {
@@ -298,7 +298,7 @@ void parse_colors(FILE * rcstream, char *buf, char *ptr)
 
     if (syntaxes == NULL) {
        rcfile_error(_("Cannot add a color directive without a syntax line"));
-       exit(1);
+       return;
     }
 
     for (tmpsyntax = syntaxes; tmpsyntax->next != NULL;