- 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:
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();
}
colorstruct colors[NUM_NCOLORS];
colortype *colorstrings = NULL;
syntaxtype *syntaxes = NULL;
+ char *syntaxstr = NULL;
#endif
#if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined (DISABLE_HELP)
.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
#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
#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}
#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) {
case 'V':
version();
exit(0);
+#ifdef ENABLE_COLOR
+ case 'Y':
+ syntaxstr = mallocstrcpy(syntaxstr, optarg);
+ break;
+#endif
case 'a':
case 'b':
case 'e':
#ifdef ENABLE_COLOR
extern colortype *colorstrings;
extern syntaxtype *syntaxes;
+extern char *syntaxstr;
#endif
extern shortcut *shortcut_list;
if (*ptr != '"') {
rcfile_error(_("regex strings must begin and end with a \" character\n"));
- exit(1);
+ return;
}
ptr++;
if (ptr == NULL) {
rcfile_error(_("Missing syntax name"));
- exit(1);
+ return;
}
if (syntaxes == NULL) {
if (ptr == NULL) {
rcfile_error(_("Missing color name"));
- exit(1);
+ return;
}
if (strstr(fgstr, ",")) {
if (syntaxes == NULL) {
rcfile_error(_("Cannot add a color directive without a syntax line"));
- exit(1);
+ return;
}
for (tmpsyntax = syntaxes; tmpsyntax->next != NULL;