From: Chris Allegretta Date: Sat, 4 May 2002 04:23:30 +0000 (+0000) Subject: Global flag -Y, --syntax to specify the type on the command line, if there's no good... X-Git-Tag: v1.1.9~12 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=09900ff808f8d6578b502de926ba7ebb38d56487;p=nano.git Global flag -Y, --syntax to specify the type on the command line, if there's no good filename regex to use. Global variable syntaxstr. Made some errors in the rc file less fatal git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1199 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 18c307c3..6e461c44 100644 --- 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 7135a395..48358272 100644 --- 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(); } diff --git a/global.c b/global.c index 501af2e5..b64f67a5 100644 --- 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 2ca15bf0..b9f361d9 100644 --- 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 400e8671..de74b842 100644 --- 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 ffdbec3a..56a8f342 100644 --- 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; diff --git a/rcfile.c b/rcfile.c index c96a8f00..243cad2b 100644 --- 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;