1 /* editor syntax highlighting.
3 Copyright (C) 1996, 1997, 1998 the Free Software Foundation
5 Authors: 1998 Paul Sheer
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
22 #if defined(MIDNIGHT) || defined(GTK)
25 #include "coolwidget.h"
29 #define SYNTAX_MARKER_DENSITY 512
31 #if !defined(MIDNIGHT) || defined(HAVE_SYNTAXH)
33 int option_syntax_highlighting
= 1;
35 /* these three functions are called from the outside */
36 void edit_load_syntax (WEdit
* edit
, char **names
, char *type
);
37 void edit_free_syntax_rules (WEdit
* edit
);
38 void edit_get_syntax_color (WEdit
* edit
, long byte_index
, int *fg
, int *bg
);
40 static void *syntax_malloc (size_t x
)
48 #define syntax_free(x) {if(x){free(x);(x)=0;}}
50 static int compare_word_to_right (WEdit
* edit
, long i
, char *text
, char *whole_left
, char *whole_right
, int line_start
)
56 c
= edit_get_byte (edit
, i
- 1);
61 if (strchr (whole_left
, c
))
63 for (p
= text
; *p
; p
++, i
++) {
68 c
= edit_get_byte (edit
, i
);
80 c
= edit_get_byte (edit
, i
);
83 if (j
&& strchr (p
+ 1, c
)) /* c exists further down, so it will get matched later */
85 if (c
== '\n' || c
== '\t' || c
== ' ') {
92 if (!strchr (whole_right
, c
)) {
104 c
= edit_get_byte (edit
, i
++);
105 for (j
= 0; p
[j
] != '\003'; j
++)
114 c
= edit_get_byte (edit
, i
);
115 for (j
= 0; p
[j
] != '\003'; j
++)
120 j
= c
; /* dummy command */
131 c
= edit_get_byte (edit
, i
++);
132 for (j
= 0; p
[j
] != '\004'; j
++)
136 c
= edit_get_byte (edit
, i
);
137 for (j
= 0; p
[j
] != '\004'; j
++)
150 if (*p
!= edit_get_byte (edit
, i
))
155 if (strchr (whole_right
, edit_get_byte (edit
, i
)))
160 static int compare_word_to_left (WEdit
* edit
, long i
, char *text
, char *whole_left
, char *whole_right
, int line_start
)
167 if (strchr (whole_right
, edit_get_byte (edit
, i
+ 1)))
169 for (p
= text
+ strlen (text
) - 1; (unsigned long) p
>= (unsigned long) text
; p
--, i
--) {
174 c
= edit_get_byte (edit
, i
);
185 c
= edit_get_byte (edit
, i
);
188 if (c
== '\n' || c
== '\t' || c
== ' ')
191 if (!strchr (whole_right
, c
))
197 while (*(--p
) != '\003');
200 c
= edit_get_byte (edit
, i
--);
201 for (j
= 0; p
[j
] != '\003'; j
++)
211 c
= edit_get_byte (edit
, i
);
212 for (j
= 0; p
[j
] != '\003'; j
++)
217 j
= c
; /* dummy command */
226 while (*(--p
) != '\004');
229 c
= edit_get_byte (edit
, i
--);
230 for (j
= 0; p
[j
] != '\004'; j
++)
234 c
= edit_get_byte (edit
, i
);
235 for (j
= 0; p
[j
] != '\004'; j
++)
236 if (c
== p
[j
] || c
== '\n' || c
== d
)
247 if (*p
!= edit_get_byte (edit
, i
))
251 c
= edit_get_byte (edit
, i
);
256 if (strchr (whole_left
, c
))
263 #define debug_printf(x,y) fprintf(stderr,x,y)
265 #define debug_printf(x,y)
268 static inline unsigned long apply_rules_going_right (WEdit
* edit
, long i
, unsigned long rule
)
270 struct context_rule
*r
;
271 int context
, contextchanged
= 0, keyword
, c1
, c2
;
272 int found_right
= 0, found_left
= 0, keyword_foundleft
= 0;
274 unsigned long border
;
275 context
= (rule
& RULE_CONTEXT
) >> RULE_CONTEXT_SHIFT
;
276 keyword
= (rule
& RULE_WORD
) >> RULE_WORD_SHIFT
;
277 border
= rule
& (RULE_ON_LEFT_BORDER
| RULE_ON_RIGHT_BORDER
);
278 c1
= edit_get_byte (edit
, i
- 1);
279 c2
= edit_get_byte (edit
, i
);
283 debug_printf ("%c->", c1
);
284 debug_printf ("%c ", c2
);
286 /* check to turn off a keyword */
289 k
= edit
->rules
[context
]->keyword
[keyword
];
292 if (k
->last
== c1
&& compare_word_to_left (edit
, i
- 1, k
->keyword
, k
->whole_word_chars_left
, k
->whole_word_chars_right
, k
->line_start
)) {
294 keyword_foundleft
= 1;
295 debug_printf ("keyword=%d ", keyword
);
298 debug_printf ("border=%s ", border
? ((border
& RULE_ON_LEFT_BORDER
) ? "left" : "right") : "off");
300 /* check to turn off a context */
301 if (context
&& !keyword
) {
302 r
= edit
->rules
[context
];
303 if (r
->first_right
== c2
&& compare_word_to_right (edit
, i
, r
->right
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_right
) \
304 &&!(rule
& RULE_ON_RIGHT_BORDER
)) {
305 debug_printf ("A:3 ", 0);
307 border
= RULE_ON_RIGHT_BORDER
;
308 if (r
->between_delimiters
)
310 } else if (!found_left
) {
311 if (r
->last_right
== c1
&& compare_word_to_left (edit
, i
- 1, r
->right
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_right
) \
312 &&(rule
& RULE_ON_RIGHT_BORDER
)) {
313 /* always turn off a context at 4 */
314 debug_printf ("A:4 ", 0);
317 if (!keyword_foundleft
)
319 } else if (r
->last_left
== c1
&& compare_word_to_left (edit
, i
- 1, r
->left
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_left
) \
320 &&(rule
& RULE_ON_LEFT_BORDER
)) {
321 /* never turn off a context at 2 */
322 debug_printf ("A:2 ", 0);
328 debug_printf ("\n", 0);
330 /* check to turn on a keyword */
333 p
= (r
= edit
->rules
[context
])->keyword_first_chars
;
334 while ((p
= strchr (p
+ 1, c2
))) {
337 count
= (unsigned long) p
- (unsigned long) r
->keyword_first_chars
;
338 k
= r
->keyword
[count
];
339 if (compare_word_to_right (edit
, i
, k
->keyword
, k
->whole_word_chars_left
, k
->whole_word_chars_right
, k
->line_start
)) {
341 debug_printf ("keyword=%d ", keyword
);
346 /* check to turn on a context */
349 for (count
= 1; edit
->rules
[count
] && !done
; count
++) {
350 r
= edit
->rules
[count
];
352 if (r
->last_right
== c1
&& compare_word_to_left (edit
, i
- 1, r
->right
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_right
) \
353 &&(rule
& RULE_ON_RIGHT_BORDER
)) {
354 debug_printf ("B:4 count=%d", count
);
360 } else if (r
->last_left
== c1
&& compare_word_to_left (edit
, i
- 1, r
->left
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_left
) \
361 &&(rule
& RULE_ON_LEFT_BORDER
)) {
362 debug_printf ("B:2 ", 0);
365 if (r
->between_delimiters
) {
369 debug_printf ("context=%d ", context
);
370 if (r
->first_right
== c2
&& compare_word_to_right (edit
, i
, r
->right
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_right
)) {
371 debug_printf ("B:3 ", 0);
373 border
= RULE_ON_RIGHT_BORDER
;
381 if (r
->first_left
== c2
&& compare_word_to_right (edit
, i
, r
->left
, r
->whole_word_chars_left
, r
->whole_word_chars_right
, r
->line_start_left
)) {
382 debug_printf ("B:1 ", 0);
384 border
= RULE_ON_LEFT_BORDER
;
385 if (!r
->between_delimiters
) {
386 debug_printf ("context=%d ", context
);
395 if (!keyword
&& contextchanged
) {
397 p
= (r
= edit
->rules
[context
])->keyword_first_chars
;
398 while ((p
= strchr (p
+ 1, c2
))) {
401 coutner
= (unsigned long) p
- (unsigned long) r
->keyword_first_chars
;
402 k
= r
->keyword
[coutner
];
403 if (compare_word_to_right (edit
, i
, k
->keyword
, k
->whole_word_chars_left
, k
->whole_word_chars_right
, k
->line_start
)) {
405 debug_printf ("keyword=%d ", keyword
);
410 debug_printf ("border=%s ", border
? ((border
& RULE_ON_LEFT_BORDER
) ? "left" : "right") : "off");
411 debug_printf ("keyword=%d ", keyword
);
413 debug_printf (" %d#\n\n", context
);
415 return (context
<< RULE_CONTEXT_SHIFT
) | (keyword
<< RULE_WORD_SHIFT
) | border
;
418 static unsigned long edit_get_rule (WEdit
* edit
, long byte_index
)
421 if (byte_index
< 0) {
422 edit
->last_get_rule
= -1;
426 if (byte_index
> edit
->last_get_rule
) {
427 for (i
= edit
->last_get_rule
+ 1; i
<= byte_index
; i
++) {
428 edit
->rule
= apply_rules_going_right (edit
, i
, edit
->rule
);
429 if (i
> (edit
->syntax_marker
? edit
->syntax_marker
->offset
+ SYNTAX_MARKER_DENSITY
: SYNTAX_MARKER_DENSITY
)) {
430 struct _syntax_marker
*s
;
431 s
= edit
->syntax_marker
;
432 edit
->syntax_marker
= malloc (sizeof (struct _syntax_marker
));
433 edit
->syntax_marker
->next
= s
;
434 edit
->syntax_marker
->offset
= i
;
435 edit
->syntax_marker
->rule
= edit
->rule
;
438 } else if (byte_index
< edit
->last_get_rule
) {
439 struct _syntax_marker
*s
;
441 if (!edit
->syntax_marker
) {
443 for (i
= -1; i
<= byte_index
; i
++)
444 edit
->rule
= apply_rules_going_right (edit
, i
, edit
->rule
);
447 if (byte_index
>= edit
->syntax_marker
->offset
) {
448 edit
->rule
= edit
->syntax_marker
->rule
;
449 for (i
= edit
->syntax_marker
->offset
+ 1; i
<= byte_index
; i
++)
450 edit
->rule
= apply_rules_going_right (edit
, i
, edit
->rule
);
453 s
= edit
->syntax_marker
->next
;
454 syntax_free (edit
->syntax_marker
);
455 edit
->syntax_marker
= s
;
458 edit
->last_get_rule
= byte_index
;
462 static void translate_rule_to_color (WEdit
* edit
, unsigned long rule
, int *fg
, int *bg
)
465 k
= edit
->rules
[(rule
& RULE_CONTEXT
) >> RULE_CONTEXT_SHIFT
]->keyword
[(rule
& RULE_WORD
) >> RULE_WORD_SHIFT
];
470 void edit_get_syntax_color (WEdit
* edit
, long byte_index
, int *fg
, int *bg
)
473 if (!edit
->rules
|| byte_index
>= edit
->last_byte
|| !option_syntax_highlighting
) {
475 *fg
= EDITOR_NORMAL_COLOR
;
481 rule
= edit_get_rule (edit
, byte_index
);
482 translate_rule_to_color (edit
, rule
, fg
, bg
);
488 Returns 0 on error/eof or a count of the number of bytes read
489 including the newline. Result must be free'd.
491 static int read_one_line (char **line
, FILE * f
)
494 int len
= 256, c
, r
= 0, i
= 0;
495 p
= syntax_malloc (len
);
501 } else if (c
== '\n') {
502 r
= i
+ 1; /* extra 1 for the newline just read */
507 q
= syntax_malloc (len
* 2);
521 static char *strdup_convert (char *s
)
557 if ((unsigned long) p
== (unsigned long) r
|| strlen (s
) == 1)
561 if (!strncmp (s
, "[^", 2)) {
583 /* a * or + at the beginning or end of the line must be interpreted literally */
584 if ((unsigned long) p
== (unsigned long) r
|| strlen (s
) == 1)
590 if ((unsigned long) p
== (unsigned long) r
|| strlen (s
) == 1)
606 #define whiteness(x) ((x) == '\t' || (x) == '\n' || (x) == ' ')
608 static void get_args (char *l
, char **args
, int *argc
)
614 for (p
= l
+ 1; *p
&& whiteness (*p
); p
++);
617 for (l
= p
+ 1; *l
&& !whiteness (*l
); l
++);
619 *args
= strdup_convert (p
);
626 static void free_args (char **args
)
635 #define check_a {if(!*a){result=line;break;}}
636 #define check_not_a {if(*a){result=line;break;}}
640 int try_alloc_color_pair (char *fg
, char *bg
);
642 int this_try_alloc_color_pair (char *fg
, char *bg
)
644 char f
[80], b
[80], *p
;
665 return try_alloc_color_pair (fg
, bg
);
669 int allocate_color (WEdit
*edit
, gchar
*color
);
671 int this_allocate_color (WEdit
*edit
, char *fg
)
678 return allocate_color (edit
, 0);
679 p
= strchr (fg
, '/');
681 return allocate_color (edit
, fg
);
682 return allocate_color (edit
, p
+ 1);
685 int this_allocate_color (WEdit
*edit
, char *fg
)
692 return allocate_color (0);
693 p
= strchr (fg
, '/');
695 return allocate_color (fg
);
696 return allocate_color (p
+ 1);
701 /* returns line number on error */
702 static int edit_read_syntax_rules (WEdit
* edit
, FILE * f
)
705 char last_fg
[32] = "", last_bg
[32] = "";
706 char whole_right
[256];
707 char whole_left
[256];
708 char *args
[1024], *l
= 0;
710 struct context_rule
**r
, *c
;
711 int num_words
= -1, num_contexts
= -1;
712 int argc
, result
= 0;
717 strcpy (whole_left
, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
718 strcpy (whole_right
, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
720 r
= edit
->rules
= syntax_malloc (256 * sizeof (struct context_rule
*));
725 if (!read_one_line (&l
, f
))
727 get_args (l
, args
, &argc
);
731 } else if (!strcmp (args
[0], "wholechars")) {
733 if (!strcmp (*a
, "left")) {
735 strcpy (whole_left
, *a
);
736 } else if (!strcmp (*a
, "right")) {
738 strcpy (whole_right
, *a
);
740 strcpy (whole_left
, *a
);
741 strcpy (whole_right
, *a
);
745 } else if (!strcmp (args
[0], "context")) {
747 if (num_contexts
== -1) {
748 if (strcmp (*a
, "default")) { /* first context is the default */
753 c
= r
[0] = syntax_malloc (sizeof (struct context_rule
));
754 c
->left
= strdup (" ");
755 c
->right
= strdup (" ");
758 c
= r
[num_contexts
] = syntax_malloc (sizeof (struct context_rule
));
759 if (!strcmp (*a
, "exclusive")) {
761 c
->between_delimiters
= 1;
764 if (!strcmp (*a
, "whole")) {
766 c
->whole_word_chars_left
= strdup (whole_left
);
767 c
->whole_word_chars_right
= strdup (whole_right
);
768 } else if (!strcmp (*a
, "wholeleft")) {
770 c
->whole_word_chars_left
= strdup (whole_left
);
771 } else if (!strcmp (*a
, "wholeright")) {
773 c
->whole_word_chars_right
= strdup (whole_right
);
776 if (!strcmp (*a
, "linestart")) {
778 c
->line_start_left
= 1;
781 c
->left
= strdup (*a
++);
783 if (!strcmp (*a
, "linestart")) {
785 c
->line_start_right
= 1;
788 c
->right
= strdup (*a
++);
789 c
->last_left
= c
->left
[strlen (c
->left
) - 1];
790 c
->last_right
= c
->right
[strlen (c
->right
) - 1];
791 c
->first_left
= *c
->left
;
792 c
->first_right
= *c
->right
;
793 c
->single_char
= (strlen (c
->right
) == 1);
795 c
->keyword
= syntax_malloc (1024 * sizeof (struct key_word
*));
797 c
->keyword
[0] = syntax_malloc (sizeof (struct key_word
));
804 strcpy (last_fg
, fg
? fg
: "");
805 strcpy (last_bg
, bg
? bg
: "");
807 c
->keyword
[0]->fg
= this_try_alloc_color_pair (fg
, bg
);
809 c
->keyword
[0]->fg
= this_allocate_color (edit
, fg
);
810 c
->keyword
[0]->bg
= this_allocate_color (edit
, bg
);
812 c
->keyword
[0]->keyword
= strdup (" ");
815 } else if (!strcmp (args
[0], "keyword")) {
820 k
= r
[num_contexts
- 1]->keyword
[num_words
] = syntax_malloc (sizeof (struct key_word
));
821 if (!strcmp (*a
, "whole")) {
823 k
->whole_word_chars_left
= strdup (whole_left
);
824 k
->whole_word_chars_right
= strdup (whole_right
);
825 } else if (!strcmp (*a
, "wholeleft")) {
827 k
->whole_word_chars_left
= strdup (whole_left
);
828 } else if (!strcmp (*a
, "wholeright")) {
830 k
->whole_word_chars_right
= strdup (whole_right
);
833 if (!strcmp (*a
, "linestart")) {
838 if (!strcmp (*a
, "whole")) {
842 k
->keyword
= strdup (*a
++);
843 k
->last
= k
->keyword
[strlen (k
->keyword
) - 1];
844 k
->first
= *k
->keyword
;
856 k
->fg
= this_try_alloc_color_pair (fg
, bg
);
858 k
->fg
= this_allocate_color (edit
, fg
);
859 k
->bg
= this_allocate_color (edit
, bg
);
863 } else if (!strncmp (args
[0], "#", 1)) {
864 /* do nothing for comment */
865 } else if (!strcmp (args
[0], "file")) {
867 } else { /* anything else is an error */
880 if (num_contexts
== -1) {
886 char first_chars
[1024], *p
;
887 char last_chars
[1024], *q
;
888 for (i
= 0; edit
->rules
[i
]; i
++) {
894 for (j
= 1; c
->keyword
[j
]; j
++) {
895 *p
++ = c
->keyword
[j
]->first
;
896 *q
++ = c
->keyword
[j
]->last
;
900 c
->keyword_first_chars
= strdup (first_chars
);
901 c
->keyword_last_chars
= strdup (last_chars
);
908 void (*syntax_change_callback
) (CWidget
*) = 0;
910 void edit_set_syntax_change_callback (void (*callback
) (CWidget
*))
912 syntax_change_callback
= callback
;
915 void edit_free_syntax_rules (WEdit
* edit
)
922 syntax_free (edit
->syntax_type
);
923 edit
->syntax_type
= 0;
924 if (syntax_change_callback
)
926 (*syntax_change_callback
) (&edit
->widget
);
928 (*syntax_change_callback
) (edit
->widget
);
930 for (i
= 0; edit
->rules
[i
]; i
++) {
931 if (edit
->rules
[i
]->keyword
) {
932 for (j
= 0; edit
->rules
[i
]->keyword
[j
]; j
++) {
933 syntax_free (edit
->rules
[i
]->keyword
[j
]->keyword
);
934 syntax_free (edit
->rules
[i
]->keyword
[j
]->whole_word_chars_left
);
935 syntax_free (edit
->rules
[i
]->keyword
[j
]->whole_word_chars_right
);
936 syntax_free (edit
->rules
[i
]->keyword
[j
]);
939 syntax_free (edit
->rules
[i
]->left
);
940 syntax_free (edit
->rules
[i
]->right
);
941 syntax_free (edit
->rules
[i
]->whole_word_chars_left
);
942 syntax_free (edit
->rules
[i
]->whole_word_chars_right
);
943 syntax_free (edit
->rules
[i
]->keyword
);
944 syntax_free (edit
->rules
[i
]->keyword_first_chars
);
945 syntax_free (edit
->rules
[i
]->keyword_last_chars
);
946 syntax_free (edit
->rules
[i
]);
949 struct _syntax_marker
*s
;
950 if (!edit
->syntax_marker
)
952 s
= edit
->syntax_marker
->next
;
953 syntax_free (edit
->syntax_marker
);
954 edit
->syntax_marker
= s
;
956 syntax_free (edit
->rules
);
959 #define CURRENT_SYNTAX_RULES_VERSION "44"
961 char *syntax_text
[] = {
962 "# syntax rules version " CURRENT_SYNTAX_RULES_VERSION
,
963 "# (after the slash is a Cooledit color, 0-26 or any of the X colors in rgb.txt)",
981 "###############################################################################",
982 "file ..\\*\\\\.diff$ Unified\\sDiff\\sOutput ^diff.\\*(-u|--unified)",
985 " keyword linestart @@*@@ green/16",
986 " keyword linestart \\s black/0 white/26",
987 "context linestart diff \\n white/26 red/9",
988 "context linestart --- \\n brightmagenta/20",
989 "context linestart +++ \\n brightmagenta/20",
990 "context linestart + \\n brightgreen/6",
991 "context linestart - \\n brightred/18",
992 "context linestart A \\n white/26 black/0",
993 "context linestart B \\n white/26 black/0",
994 "context linestart C \\n white/26 black/0",
995 "context linestart D \\n white/26 black/0",
996 "context linestart E \\n white/26 black/0",
997 "context linestart F \\n white/26 black/0",
998 "context linestart G \\n white/26 black/0",
999 "context linestart H \\n white/26 black/0",
1000 "context linestart I \\n white/26 black/0",
1001 "context linestart J \\n white/26 black/0",
1002 "context linestart K \\n white/26 black/0",
1003 "context linestart L \\n white/26 black/0",
1004 "context linestart M \\n white/26 black/0",
1005 "context linestart N \\n white/26 black/0",
1006 "context linestart O \\n white/26 black/0",
1007 "context linestart P \\n white/26 black/0",
1008 "context linestart Q \\n white/26 black/0",
1009 "context linestart R \\n white/26 black/0",
1010 "context linestart S \\n white/26 black/0",
1011 "context linestart T \\n white/26 black/0",
1012 "context linestart U \\n white/26 black/0",
1013 "context linestart V \\n white/26 black/0",
1014 "context linestart W \\n white/26 black/0",
1015 "context linestart X \\n white/26 black/0",
1016 "context linestart Y \\n white/26 black/0",
1017 "context linestart Z \\n white/26 black/0",
1019 "###############################################################################",
1020 "file ..\\*\\\\.lsm$ LSM\\sFile",
1023 " keyword linestart Begin3 brightmagenta/20",
1024 " keyword linestart Title:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s red/9 yellow/24",
1025 " keyword linestart Version:\\s\\s\\s\\s\\s\\s\\s\\s red/9 yellow/24",
1026 " keyword linestart Entered-date:\\s\\s\\s red/9 yellow/24",
1027 " keyword linestart Description:\\s\\s\\s\\s red/9 yellow/24",
1028 " keyword linestart Keywords:\\s\\s\\s\\s\\s\\s\\s red/9 yellow/24",
1029 " keyword linestart Alternate-site:\\s red/9 yellow/24",
1030 " keyword linestart Primary-site:\\s\\s\\s red/9 yellow/24",
1031 " keyword linestart Original-site:\\s\\s red/9 yellow/24",
1032 " keyword linestart Platforms:\\s\\s\\s\\s\\s\\s red/9 yellow/24",
1033 " keyword linestart Copying-policy:\\s red/9 yellow/24",
1034 " keyword linestart End brightmagenta/20",
1036 " keyword linestart \\t\\t white/26 yellow/24",
1037 " keyword linestart \\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s white/26 yellow/24",
1038 " keyword whole GPL green/6",
1039 " keyword whole BSD green/6",
1040 " keyword whole Shareware green/6",
1041 " keyword whole sunsite.unc.edu green/6",
1042 " keyword wholeright \\s*.tar.gz green/6",
1043 " keyword wholeright \\s*.lsm green/6",
1045 "context linestart Author:\\s\\s\\s\\s\\s\\s\\s\\s\\s \\n brightred/19",
1046 " keyword whole \\s*@*\\s(*) cyan/16",
1048 "context linestart Maintained-by:\\s\\s \\n brightred/19",
1049 " keyword whole \\s*@*\\s(*) cyan/16",
1051 "###############################################################################",
1052 "file ..\\*\\\\.sh$ Shell\\sScript ^#!\\s\\*/.\\*/(ksh|bash|sh|pdkzsh)$",
1055 " keyword whole for yellow/24",
1056 " keyword whole in yellow/24",
1057 " keyword whole do yellow/24",
1058 " keyword whole done yellow/24",
1059 " keyword whole select yellow/24",
1060 " keyword whole case yellow/24",
1061 " keyword whole esac yellow/24",
1062 " keyword whole if yellow/24",
1063 " keyword whole then yellow/24",
1064 " keyword whole elif yellow/24",
1065 " keyword whole else yellow/24",
1066 " keyword whole fi yellow/24",
1067 " keyword whole while yellow/24",
1068 " keyword whole until yellow/24",
1069 " keyword ;; brightred/18",
1070 " keyword \\\\\" brightred/18",
1071 " keyword \\\\' brightred/18",
1072 " keyword ` brightred/18",
1073 " keyword ; brightcyan/17",
1074 " keyword $(*) brightgreen/16",
1075 " keyword ${*} brightgreen/16",
1076 " keyword { brightcyan/14",
1077 " keyword } brightcyan/14",
1079 " keyword whole linestart #!\\[\\s\\]/bin/\\[abkpct\\]sh brightcyan/17 black/0",
1081 " keyword $\\* brightred/18",
1082 " keyword $@ brightred/18",
1083 " keyword $# brightred/18",
1084 " keyword $? brightred/18",
1085 " keyword $- brightred/18",
1086 " keyword $$ brightred/18",
1087 " keyword $! brightred/18",
1088 " keyword $_ brightred/18",
1090 " keyword wholeright $\\[0123456789\\]0 brightred/18",
1091 " keyword wholeright $\\[0123456789\\]1 brightred/18",
1092 " keyword wholeright $\\[0123456789\\]2 brightred/18",
1093 " keyword wholeright $\\[0123456789\\]3 brightred/18",
1094 " keyword wholeright $\\[0123456789\\]4 brightred/18",
1095 " keyword wholeright $\\[0123456789\\]5 brightred/18",
1096 " keyword wholeright $\\[0123456789\\]6 brightred/18",
1097 " keyword wholeright $\\[0123456789\\]7 brightred/18",
1098 " keyword wholeright $\\[0123456789\\]8 brightred/18",
1099 " keyword wholeright $\\[0123456789\\]9 brightred/18",
1101 " keyword wholeright $+A brightgreen/16",
1102 " keyword wholeright $+B brightgreen/16",
1103 " keyword wholeright $+C brightgreen/16",
1104 " keyword wholeright $+D brightgreen/16",
1105 " keyword wholeright $+E brightgreen/16",
1106 " keyword wholeright $+F brightgreen/16",
1107 " keyword wholeright $+G brightgreen/16",
1108 " keyword wholeright $+H brightgreen/16",
1109 " keyword wholeright $+I brightgreen/16",
1110 " keyword wholeright $+J brightgreen/16",
1111 " keyword wholeright $+K brightgreen/16",
1112 " keyword wholeright $+L brightgreen/16",
1113 " keyword wholeright $+M brightgreen/16",
1114 " keyword wholeright $+N brightgreen/16",
1115 " keyword wholeright $+O brightgreen/16",
1116 " keyword wholeright $+P brightgreen/16",
1117 " keyword wholeright $+Q brightgreen/16",
1118 " keyword wholeright $+R brightgreen/16",
1119 " keyword wholeright $+S brightgreen/16",
1120 " keyword wholeright $+T brightgreen/16",
1121 " keyword wholeright $+U brightgreen/16",
1122 " keyword wholeright $+V brightgreen/16",
1123 " keyword wholeright $+W brightgreen/16",
1124 " keyword wholeright $+X brightgreen/16",
1125 " keyword wholeright $+Y brightgreen/16",
1126 " keyword wholeright $+Z brightgreen/16",
1128 " keyword wholeright $+a brightgreen/16",
1129 " keyword wholeright $+b brightgreen/16",
1130 " keyword wholeright $+c brightgreen/16",
1131 " keyword wholeright $+d brightgreen/16",
1132 " keyword wholeright $+e brightgreen/16",
1133 " keyword wholeright $+f brightgreen/16",
1134 " keyword wholeright $+g brightgreen/16",
1135 " keyword wholeright $+h brightgreen/16",
1136 " keyword wholeright $+i brightgreen/16",
1137 " keyword wholeright $+j brightgreen/16",
1138 " keyword wholeright $+k brightgreen/16",
1139 " keyword wholeright $+l brightgreen/16",
1140 " keyword wholeright $+m brightgreen/16",
1141 " keyword wholeright $+n brightgreen/16",
1142 " keyword wholeright $+o brightgreen/16",
1143 " keyword wholeright $+p brightgreen/16",
1144 " keyword wholeright $+q brightgreen/16",
1145 " keyword wholeright $+r brightgreen/16",
1146 " keyword wholeright $+s brightgreen/16",
1147 " keyword wholeright $+t brightgreen/16",
1148 " keyword wholeright $+u brightgreen/16",
1149 " keyword wholeright $+v brightgreen/16",
1150 " keyword wholeright $+w brightgreen/16",
1151 " keyword wholeright $+x brightgreen/16",
1152 " keyword wholeright $+y brightgreen/16",
1153 " keyword wholeright $+z brightgreen/16",
1155 " keyword wholeright $+0 brightgreen/16",
1156 " keyword wholeright $+1 brightgreen/16",
1157 " keyword wholeright $+2 brightgreen/16",
1158 " keyword wholeright $+3 brightgreen/16",
1159 " keyword wholeright $+4 brightgreen/16",
1160 " keyword wholeright $+5 brightgreen/16",
1161 " keyword wholeright $+6 brightgreen/16",
1162 " keyword wholeright $+7 brightgreen/16",
1163 " keyword wholeright $+8 brightgreen/16",
1164 " keyword wholeright $+9 brightgreen/16",
1166 " keyword $ brightgreen/16",
1168 " keyword wholeleft function*() brightblue/11",
1170 "wholechars right abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._",
1171 "wholechars left abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._",
1173 " keyword whole arch cyan/14",
1174 " keyword whole ash cyan/14",
1175 " keyword whole awk cyan/14",
1176 " keyword whole basename cyan/14",
1177 " keyword whole bash cyan/14",
1178 " keyword whole basnemae cyan/14",
1179 " keyword whole bg_backup cyan/14",
1180 " keyword whole bg_restore cyan/14",
1181 " keyword whole bsh cyan/14",
1182 " keyword whole cat cyan/14",
1183 " keyword whole chgrp cyan/14",
1184 " keyword whole chmod cyan/14",
1185 " keyword whole chown cyan/14",
1186 " keyword whole cp cyan/14",
1187 " keyword whole cpio cyan/14",
1188 " keyword whole csh cyan/14",
1189 " keyword whole date cyan/14",
1190 " keyword whole dd cyan/14",
1191 " keyword whole df cyan/14",
1192 " keyword whole dmesg cyan/14",
1193 " keyword whole dnsdomainname cyan/14",
1194 " keyword whole doexec cyan/14",
1195 " keyword whole domainname cyan/14",
1196 " keyword whole echo cyan/14",
1197 " keyword whole ed cyan/14",
1198 " keyword whole egrep cyan/14",
1199 " keyword whole ex cyan/14",
1200 " keyword whole false cyan/14",
1201 " keyword whole fgrep cyan/14",
1202 " keyword whole fsconf cyan/14",
1203 " keyword whole gawk cyan/14",
1204 " keyword whole grep cyan/14",
1205 " keyword whole gunzip cyan/14",
1206 " keyword whole gzip cyan/14",
1207 " keyword whole hostname cyan/14",
1208 " keyword whole igawk cyan/14",
1209 " keyword whole ipcalc cyan/14",
1210 " keyword whole kill cyan/14",
1211 " keyword whole ksh cyan/14",
1212 " keyword whole linuxconf cyan/14",
1213 " keyword whole ln cyan/14",
1214 " keyword whole login cyan/14",
1215 " keyword whole lpdconf cyan/14",
1216 " keyword whole ls cyan/14",
1217 " keyword whole mail cyan/14",
1218 " keyword whole mkdir cyan/14",
1219 " keyword whole mknod cyan/14",
1220 " keyword whole mktemp cyan/14",
1221 " keyword whole more cyan/14",
1222 " keyword whole mount cyan/14",
1223 " keyword whole mt cyan/14",
1224 " keyword whole mv cyan/14",
1225 " keyword whole netconf cyan/14",
1226 " keyword whole netstat cyan/14",
1227 " keyword whole nice cyan/14",
1228 " keyword whole nisdomainname cyan/14",
1229 " keyword whole ping cyan/14",
1230 " keyword whole ps cyan/14",
1231 " keyword whole pwd cyan/14",
1232 " keyword whole red cyan/14",
1233 " keyword whole remadmin cyan/14",
1234 " keyword whole rm cyan/14",
1235 " keyword whole rmdir cyan/14",
1236 " keyword whole rpm cyan/14",
1237 " keyword whole sed cyan/14",
1238 " keyword whole setserial cyan/14",
1239 " keyword whole sh cyan/14",
1240 " keyword whole sleep cyan/14",
1241 " keyword whole sort cyan/14",
1242 " keyword whole stty cyan/14",
1243 " keyword whole su cyan/14",
1244 " keyword whole sync cyan/14",
1245 " keyword whole taper cyan/14",
1246 " keyword whole tar cyan/14",
1247 " keyword whole tcsh cyan/14",
1248 " keyword whole touch cyan/14",
1249 " keyword whole true cyan/14",
1250 " keyword whole umount cyan/14",
1251 " keyword whole uname cyan/14",
1252 " keyword whole userconf cyan/14",
1253 " keyword whole usleep cyan/14",
1254 " keyword whole vi cyan/14",
1255 " keyword whole view cyan/14",
1256 " keyword whole vim cyan/14",
1257 " keyword whole xconf cyan/14",
1258 " keyword whole ypdomainname cyan/14",
1259 " keyword whole zcat cyan/14",
1260 " keyword whole zsh cyan/14",
1262 "wholechars right abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_",
1263 "wholechars left abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_",
1265 "context # \\n brown/22",
1267 "context exclusive whole <\\[\\s\\\\\\]EOF EOF green/6",
1269 "context ' ' green/6",
1271 "context \" \" green/6",
1272 " keyword \\\\' brightgreen/16",
1273 " keyword \\\\\" brightgreen/16",
1274 " keyword $(*) brightgreen/16",
1275 " keyword ${*} brightgreen/16",
1276 " keyword $\\* brightred/18",
1277 " keyword $@ brightred/18",
1278 " keyword $# brightred/18",
1279 " keyword $? brightred/18",
1280 " keyword $- brightred/18",
1281 " keyword $$ brightred/18",
1282 " keyword $! brightred/18",
1283 " keyword $_ brightred/18",
1284 " keyword wholeright $\\[0123456789\\]0 brightred/18",
1285 " keyword wholeright $\\[0123456789\\]1 brightred/18",
1286 " keyword wholeright $\\[0123456789\\]2 brightred/18",
1287 " keyword wholeright $\\[0123456789\\]3 brightred/18",
1288 " keyword wholeright $\\[0123456789\\]4 brightred/18",
1289 " keyword wholeright $\\[0123456789\\]5 brightred/18",
1290 " keyword wholeright $\\[0123456789\\]6 brightred/18",
1291 " keyword wholeright $\\[0123456789\\]7 brightred/18",
1292 " keyword wholeright $\\[0123456789\\]8 brightred/18",
1293 " keyword wholeright $\\[0123456789\\]9 brightred/18",
1295 " keyword wholeright $+A brightgreen/16",
1296 " keyword wholeright $+B brightgreen/16",
1297 " keyword wholeright $+C brightgreen/16",
1298 " keyword wholeright $+D brightgreen/16",
1299 " keyword wholeright $+E brightgreen/16",
1300 " keyword wholeright $+F brightgreen/16",
1301 " keyword wholeright $+G brightgreen/16",
1302 " keyword wholeright $+H brightgreen/16",
1303 " keyword wholeright $+I brightgreen/16",
1304 " keyword wholeright $+J brightgreen/16",
1305 " keyword wholeright $+K brightgreen/16",
1306 " keyword wholeright $+L brightgreen/16",
1307 " keyword wholeright $+M brightgreen/16",
1308 " keyword wholeright $+N brightgreen/16",
1309 " keyword wholeright $+O brightgreen/16",
1310 " keyword wholeright $+P brightgreen/16",
1311 " keyword wholeright $+Q brightgreen/16",
1312 " keyword wholeright $+R brightgreen/16",
1313 " keyword wholeright $+S brightgreen/16",
1314 " keyword wholeright $+T brightgreen/16",
1315 " keyword wholeright $+U brightgreen/16",
1316 " keyword wholeright $+V brightgreen/16",
1317 " keyword wholeright $+W brightgreen/16",
1318 " keyword wholeright $+X brightgreen/16",
1319 " keyword wholeright $+Y brightgreen/16",
1320 " keyword wholeright $+Z brightgreen/16",
1322 " keyword wholeright $+a brightgreen/16",
1323 " keyword wholeright $+b brightgreen/16",
1324 " keyword wholeright $+c brightgreen/16",
1325 " keyword wholeright $+d brightgreen/16",
1326 " keyword wholeright $+e brightgreen/16",
1327 " keyword wholeright $+f brightgreen/16",
1328 " keyword wholeright $+g brightgreen/16",
1329 " keyword wholeright $+h brightgreen/16",
1330 " keyword wholeright $+i brightgreen/16",
1331 " keyword wholeright $+j brightgreen/16",
1332 " keyword wholeright $+k brightgreen/16",
1333 " keyword wholeright $+l brightgreen/16",
1334 " keyword wholeright $+m brightgreen/16",
1335 " keyword wholeright $+n brightgreen/16",
1336 " keyword wholeright $+o brightgreen/16",
1337 " keyword wholeright $+p brightgreen/16",
1338 " keyword wholeright $+q brightgreen/16",
1339 " keyword wholeright $+r brightgreen/16",
1340 " keyword wholeright $+s brightgreen/16",
1341 " keyword wholeright $+t brightgreen/16",
1342 " keyword wholeright $+u brightgreen/16",
1343 " keyword wholeright $+v brightgreen/16",
1344 " keyword wholeright $+w brightgreen/16",
1345 " keyword wholeright $+x brightgreen/16",
1346 " keyword wholeright $+y brightgreen/16",
1347 " keyword wholeright $+z brightgreen/16",
1349 " keyword wholeright $+0 brightgreen/16",
1350 " keyword wholeright $+1 brightgreen/16",
1351 " keyword wholeright $+2 brightgreen/16",
1352 " keyword wholeright $+3 brightgreen/16",
1353 " keyword wholeright $+4 brightgreen/16",
1354 " keyword wholeright $+5 brightgreen/16",
1355 " keyword wholeright $+6 brightgreen/16",
1356 " keyword wholeright $+7 brightgreen/16",
1357 " keyword wholeright $+8 brightgreen/16",
1358 " keyword wholeright $+9 brightgreen/16",
1360 " keyword $ brightgreen/16",
1362 "context exclusive ` ` white/26 black/0",
1363 " keyword '*' green/6",
1364 " keyword \" green/6",
1365 " keyword ; brightcyan/17",
1366 " keyword $(*) brightgreen/16",
1367 " keyword ${*} brightgreen/16",
1368 " keyword { brightcyan/14",
1369 " keyword } brightcyan/14",
1371 " keyword $\\* brightred/18",
1372 " keyword $@ brightred/18",
1373 " keyword $# brightred/18",
1374 " keyword $? brightred/18",
1375 " keyword $- brightred/18",
1376 " keyword $$ brightred/18",
1377 " keyword $! brightred/18",
1378 " keyword $_ brightred/18",
1380 " keyword wholeright $\\[0123456789\\]0 brightred/18",
1381 " keyword wholeright $\\[0123456789\\]1 brightred/18",
1382 " keyword wholeright $\\[0123456789\\]2 brightred/18",
1383 " keyword wholeright $\\[0123456789\\]3 brightred/18",
1384 " keyword wholeright $\\[0123456789\\]4 brightred/18",
1385 " keyword wholeright $\\[0123456789\\]5 brightred/18",
1386 " keyword wholeright $\\[0123456789\\]6 brightred/18",
1387 " keyword wholeright $\\[0123456789\\]7 brightred/18",
1388 " keyword wholeright $\\[0123456789\\]8 brightred/18",
1389 " keyword wholeright $\\[0123456789\\]9 brightred/18",
1391 " keyword wholeright $+A brightgreen/16",
1392 " keyword wholeright $+B brightgreen/16",
1393 " keyword wholeright $+C brightgreen/16",
1394 " keyword wholeright $+D brightgreen/16",
1395 " keyword wholeright $+E brightgreen/16",
1396 " keyword wholeright $+F brightgreen/16",
1397 " keyword wholeright $+G brightgreen/16",
1398 " keyword wholeright $+H brightgreen/16",
1399 " keyword wholeright $+I brightgreen/16",
1400 " keyword wholeright $+J brightgreen/16",
1401 " keyword wholeright $+K brightgreen/16",
1402 " keyword wholeright $+L brightgreen/16",
1403 " keyword wholeright $+M brightgreen/16",
1404 " keyword wholeright $+N brightgreen/16",
1405 " keyword wholeright $+O brightgreen/16",
1406 " keyword wholeright $+P brightgreen/16",
1407 " keyword wholeright $+Q brightgreen/16",
1408 " keyword wholeright $+R brightgreen/16",
1409 " keyword wholeright $+S brightgreen/16",
1410 " keyword wholeright $+T brightgreen/16",
1411 " keyword wholeright $+U brightgreen/16",
1412 " keyword wholeright $+V brightgreen/16",
1413 " keyword wholeright $+W brightgreen/16",
1414 " keyword wholeright $+X brightgreen/16",
1415 " keyword wholeright $+Y brightgreen/16",
1416 " keyword wholeright $+Z brightgreen/16",
1418 " keyword wholeright $+a brightgreen/16",
1419 " keyword wholeright $+b brightgreen/16",
1420 " keyword wholeright $+c brightgreen/16",
1421 " keyword wholeright $+d brightgreen/16",
1422 " keyword wholeright $+e brightgreen/16",
1423 " keyword wholeright $+f brightgreen/16",
1424 " keyword wholeright $+g brightgreen/16",
1425 " keyword wholeright $+h brightgreen/16",
1426 " keyword wholeright $+i brightgreen/16",
1427 " keyword wholeright $+j brightgreen/16",
1428 " keyword wholeright $+k brightgreen/16",
1429 " keyword wholeright $+l brightgreen/16",
1430 " keyword wholeright $+m brightgreen/16",
1431 " keyword wholeright $+n brightgreen/16",
1432 " keyword wholeright $+o brightgreen/16",
1433 " keyword wholeright $+p brightgreen/16",
1434 " keyword wholeright $+q brightgreen/16",
1435 " keyword wholeright $+r brightgreen/16",
1436 " keyword wholeright $+s brightgreen/16",
1437 " keyword wholeright $+t brightgreen/16",
1438 " keyword wholeright $+u brightgreen/16",
1439 " keyword wholeright $+v brightgreen/16",
1440 " keyword wholeright $+w brightgreen/16",
1441 " keyword wholeright $+x brightgreen/16",
1442 " keyword wholeright $+y brightgreen/16",
1443 " keyword wholeright $+z brightgreen/16",
1445 " keyword wholeright $+0 brightgreen/16",
1446 " keyword wholeright $+1 brightgreen/16",
1447 " keyword wholeright $+2 brightgreen/16",
1448 " keyword wholeright $+3 brightgreen/16",
1449 " keyword wholeright $+4 brightgreen/16",
1450 " keyword wholeright $+5 brightgreen/16",
1451 " keyword wholeright $+6 brightgreen/16",
1452 " keyword wholeright $+7 brightgreen/16",
1453 " keyword wholeright $+8 brightgreen/16",
1454 " keyword wholeright $+9 brightgreen/16",
1456 " keyword $ brightgreen/16",
1458 "wholechars right abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._",
1459 "wholechars left abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._",
1461 " keyword whole arch cyan/14",
1462 " keyword whole ash cyan/14",
1463 " keyword whole awk cyan/14",
1464 " keyword whole basename cyan/14",
1465 " keyword whole bash cyan/14",
1466 " keyword whole basnemae cyan/14",
1467 " keyword whole bg_backup cyan/14",
1468 " keyword whole bg_restore cyan/14",
1469 " keyword whole bsh cyan/14",
1470 " keyword whole cat cyan/14",
1471 " keyword whole chgrp cyan/14",
1472 " keyword whole chmod cyan/14",
1473 " keyword whole chown cyan/14",
1474 " keyword whole cp cyan/14",
1475 " keyword whole cpio cyan/14",
1476 " keyword whole csh cyan/14",
1477 " keyword whole date cyan/14",
1478 " keyword whole dd cyan/14",
1479 " keyword whole df cyan/14",
1480 " keyword whole dmesg cyan/14",
1481 " keyword whole dnsdomainname cyan/14",
1482 " keyword whole doexec cyan/14",
1483 " keyword whole domainname cyan/14",
1484 " keyword whole echo cyan/14",
1485 " keyword whole ed cyan/14",
1486 " keyword whole egrep cyan/14",
1487 " keyword whole ex cyan/14",
1488 " keyword whole false cyan/14",
1489 " keyword whole fgrep cyan/14",
1490 " keyword whole fsconf cyan/14",
1491 " keyword whole gawk cyan/14",
1492 " keyword whole grep cyan/14",
1493 " keyword whole gunzip cyan/14",
1494 " keyword whole gzip cyan/14",
1495 " keyword whole hostname cyan/14",
1496 " keyword whole igawk cyan/14",
1497 " keyword whole ipcalc cyan/14",
1498 " keyword whole kill cyan/14",
1499 " keyword whole ksh cyan/14",
1500 " keyword whole linuxconf cyan/14",
1501 " keyword whole ln cyan/14",
1502 " keyword whole login cyan/14",
1503 " keyword whole lpdconf cyan/14",
1504 " keyword whole ls cyan/14",
1505 " keyword whole mail cyan/14",
1506 " keyword whole mkdir cyan/14",
1507 " keyword whole mknod cyan/14",
1508 " keyword whole mktemp cyan/14",
1509 " keyword whole more cyan/14",
1510 " keyword whole mount cyan/14",
1511 " keyword whole mt cyan/14",
1512 " keyword whole mv cyan/14",
1513 " keyword whole netconf cyan/14",
1514 " keyword whole netstat cyan/14",
1515 " keyword whole nice cyan/14",
1516 " keyword whole nisdomainname cyan/14",
1517 " keyword whole ping cyan/14",
1518 " keyword whole ps cyan/14",
1519 " keyword whole pwd cyan/14",
1520 " keyword whole red cyan/14",
1521 " keyword whole remadmin cyan/14",
1522 " keyword whole rm cyan/14",
1523 " keyword whole rmdir cyan/14",
1524 " keyword whole rpm cyan/14",
1525 " keyword whole sed cyan/14",
1526 " keyword whole setserial cyan/14",
1527 " keyword whole sh cyan/14",
1528 " keyword whole sleep cyan/14",
1529 " keyword whole sort cyan/14",
1530 " keyword whole stty cyan/14",
1531 " keyword whole su cyan/14",
1532 " keyword whole sync cyan/14",
1533 " keyword whole taper cyan/14",
1534 " keyword whole tar cyan/14",
1535 " keyword whole tcsh cyan/14",
1536 " keyword whole touch cyan/14",
1537 " keyword whole true cyan/14",
1538 " keyword whole umount cyan/14",
1539 " keyword whole uname cyan/14",
1540 " keyword whole userconf cyan/14",
1541 " keyword whole usleep cyan/14",
1542 " keyword whole vi cyan/14",
1543 " keyword whole view cyan/14",
1544 " keyword whole vim cyan/14",
1545 " keyword whole xconf cyan/14",
1546 " keyword whole ypdomainname cyan/14",
1547 " keyword whole zcat cyan/14",
1548 " keyword whole zsh cyan/14",
1550 "###############################################################################",
1551 "file ..\\*\\\\.(pl|PL])$ Perl\\sProgram ^#!\\s\\*/.\\*/perl$",
1553 " keyword whole linestart #!\\[\\s\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/bin/perl brightcyan/17 black/0",
1554 " keyword whole linestart #!\\[\\s\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/bin/perl brightcyan/17 black/0",
1555 " keyword whole linestart #!\\[\\s\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/bin/perl brightcyan/17 black/0",
1556 " keyword whole linestart #!\\[\\s\\]/\\[abcdefghijklmnopqrstuvwxyz\\]/bin/perl brightcyan/17 black/0",
1557 " keyword whole linestart #!\\[\\s\\]/bin/perl brightcyan/17 black/0",
1559 " keyword $_ red/orange",
1560 " keyword $. red/orange",
1561 " keyword $/ red/orange",
1562 " keyword $, red/orange",
1563 " keyword $\" red/orange",
1564 " keyword $\\\\ red/orange",
1565 " keyword $# red/orange",
1566 " keyword $\\* red/orange",
1567 " keyword $? red/orange",
1568 " keyword $] red/orange",
1569 " keyword $[ red/orange",
1570 " keyword $; red/orange",
1571 " keyword $! red/orange",
1572 " keyword $@ red/orange",
1573 " keyword $: red/orange",
1574 " keyword $0 red/orange",
1575 " keyword $$ red/orange",
1576 " keyword $< red/orange",
1577 " keyword $> red/orange",
1578 " keyword $( red/orange",
1579 " keyword $) red/orange",
1581 " keyword $% red/orange",
1582 " keyword $= red/orange",
1583 " keyword $- red/orange",
1584 " keyword $~ red/orange",
1585 " keyword $| red/orange",
1586 " keyword $& red/orange",
1587 " keyword $` red/orange",
1588 " keyword $' red/orange",
1589 " keyword $+ red/orange",
1590 " keyword $11 red/orange",
1591 " keyword $12 red/orange",
1592 " keyword $13 red/orange",
1593 " keyword $14 red/orange",
1594 " keyword $15 red/orange",
1595 " keyword $16 red/orange",
1596 " keyword $17 red/orange",
1597 " keyword $18 red/orange",
1598 " keyword $19 red/orange",
1599 " keyword $20 red/orange",
1600 " keyword $10 red/orange",
1601 " keyword $1 red/orange",
1602 " keyword $2 red/orange",
1603 " keyword $3 red/orange",
1604 " keyword $4 red/orange",
1605 " keyword $5 red/orange",
1606 " keyword $6 red/orange",
1607 " keyword $7 red/orange",
1608 " keyword $8 red/orange",
1609 " keyword $9 red/orange",
1610 " keyword $0 red/orange",
1612 " keyword $^A red/orange",
1613 " keyword $^D red/orange",
1614 " keyword $^E red/orange",
1615 " keyword $^I red/orange",
1616 " keyword $^L red/orange",
1617 " keyword $^P red/orange",
1618 " keyword $^T red/orange",
1619 " keyword $^W red/orange",
1620 " keyword $^X red/orange",
1621 " keyword $^A red/orange",
1623 " keyword @EXPORT red/orange",
1624 " keyword @EXPORT_OK red/orange",
1625 " keyword @INC red/orange",
1626 " keyword @ISA red/orange",
1627 " keyword @_ red/orange",
1628 " keyword @ENV red/orange",
1629 " keyword @OVERLOAD red/orange",
1630 " keyword @SIG red/orange",
1632 " keyword $ brightgreen/15",
1633 " keyword & brightmagenta/19",
1634 " keyword % brightcyan/17",
1635 " keyword @ white/21",
1636 " keyword \\\\\" brightred/18",
1637 " keyword \\\\' brightred/18",
1639 " keyword <+> brightred/18",
1640 " keyword -> yellow/24",
1641 " keyword => yellow/24",
1642 " keyword > yellow/24",
1643 " keyword < yellow/24",
1644 " keyword \\+ yellow/24",
1645 " keyword - yellow/24",
1646 " keyword \\* yellow/24",
1647 " keyword / yellow/24",
1648 " keyword % yellow/24",
1649 " keyword = yellow/24",
1650 " keyword != yellow/24",
1651 " keyword == yellow/24",
1652 " keyword whole ge yellow/24",
1653 " keyword whole le yellow/24",
1654 " keyword whole gt yellow/24",
1655 " keyword whole lt yellow/24",
1656 " keyword whole eq yellow/24",
1657 " keyword whole ne yellow/24",
1658 " keyword whole cmp yellow/24",
1659 " keyword ~ yellow/24",
1660 " keyword { brightcyan/14",
1661 " keyword } brightcyan/14",
1662 " keyword ( brightcyan/15",
1663 " keyword ) brightcyan/15",
1664 " keyword [ brightcyan/14",
1665 " keyword ] brightcyan/14",
1666 " keyword , brightcyan/14",
1667 " keyword .. brightcyan/14",
1668 " keyword : brightcyan/14",
1669 " keyword ; brightmagenta/19",
1671 " keyword whole sub yellow/24",
1672 " keyword whole STDIN brightred/18",
1673 " keyword whole STDOUT brightred/18",
1674 " keyword whole STDERR brightred/18",
1675 " keyword whole STDARGV brightred/18",
1676 " keyword whole DATA brightred/18",
1678 " keyword whole do magenta/23",
1679 " keyword whole if magenta/23",
1680 " keyword whole until magenta/23",
1681 " keyword whole elsif magenta/23",
1682 " keyword whole else magenta/23",
1683 " keyword whole unless magenta/23",
1684 " keyword whole while magenta/23",
1685 " keyword whole foreach magenta/23",
1686 " keyword whole goto magenta/23",
1687 " keyword whole last magenta/23",
1688 " keyword whole next magenta/23",
1689 " keyword whole bless magenta/23",
1690 " keyword whole caller magenta/23",
1691 " keyword whole import magenta/23",
1692 " keyword whole package magenta/23",
1693 " keyword whole require magenta/23",
1694 " keyword whole return magenta/23",
1695 " keyword whole untie magenta/23",
1696 " keyword whole use magenta/23",
1698 " keyword whole diagnostics brightcyan/17",
1699 " keyword whole integer brightcyan/17",
1700 " keyword whole less brightcyan/17",
1701 " keyword whole lib brightcyan/17",
1702 " keyword whole ops brightcyan/17",
1703 " keyword whole overload brightcyan/17",
1704 " keyword whole sigtrap brightcyan/17",
1705 " keyword whole strict brightcyan/17",
1706 " keyword whole vars brightcyan/17",
1708 " keyword whole abs yellow/24",
1709 " keyword whole atan2 yellow/24",
1710 " keyword whole cos yellow/24",
1711 " keyword whole exp yellow/24",
1712 " keyword whole int yellow/24",
1713 " keyword whole log yellow/24",
1714 " keyword whole rand yellow/24",
1715 " keyword whole sin yellow/24",
1716 " keyword whole sqrt yellow/24",
1717 " keyword whole srand yellow/24",
1718 " keyword whole time yellow/24",
1719 " keyword whole chr yellow/24",
1720 " keyword whole gmtime yellow/24",
1721 " keyword whole hex yellow/24",
1722 " keyword whole localtime yellow/24",
1723 " keyword whole oct yellow/24",
1724 " keyword whole ord yellow/24",
1725 " keyword whole vec yellow/24",
1726 " keyword whole pack yellow/24",
1727 " keyword whole unpack yellow/24",
1729 " keyword whole chomp yellow/YellowGreen",
1730 " keyword whole chop yellow/YellowGreen",
1731 " keyword whole crypt yellow/YellowGreen",
1732 " keyword whole eval yellow/YellowGreen",
1733 " keyword whole index yellow/YellowGreen",
1734 " keyword whole length yellow/YellowGreen",
1735 " keyword whole lc yellow/YellowGreen",
1736 " keyword whole lcfirst yellow/YellowGreen",
1737 " keyword whole quotemeta yellow/YellowGreen",
1738 " keyword whole rindex yellow/YellowGreen",
1739 " keyword whole substr yellow/YellowGreen",
1740 " keyword whole uc yellow/YellowGreen",
1741 " keyword whole ucfirst yellow/YellowGreen",
1743 " keyword whole delete yellow/24",
1744 " keyword whole each yellow/24",
1745 " keyword whole exists yellow/24",
1746 " keyword whole grep yellow/24",
1747 " keyword whole join yellow/24",
1748 " keyword whole keys yellow/24",
1749 " keyword whole map yellow/24",
1750 " keyword whole pop yellow/24",
1751 " keyword whole push yellow/24",
1752 " keyword whole reverse yellow/24",
1753 " keyword whole scalar yellow/24",
1754 " keyword whole shift yellow/24",
1755 " keyword whole sort yellow/24",
1756 " keyword whole splice yellow/24",
1757 " keyword whole split yellow/24",
1758 " keyword whole unshift yellow/24",
1759 " keyword whole values yellow/24",
1761 " keyword whole chmod yellow/24",
1762 " keyword whole chown yellow/24",
1763 " keyword whole truncate yellow/24",
1764 " keyword whole link yellow/24",
1765 " keyword whole lstat yellow/24",
1766 " keyword whole mkdir yellow/24",
1767 " keyword whole readlink yellow/24",
1768 " keyword whole rename yellow/24",
1769 " keyword whole rmdir yellow/24",
1770 " keyword whole stat yellow/24",
1771 " keyword whole symlink yellow/24",
1772 " keyword whole unlink yellow/24",
1773 " keyword whole utime yellow/24",
1775 " keyword whole binmade yellow/24",
1776 " keyword whole close yellow/24",
1777 " keyword whole dbmclose yellow/24",
1778 " keyword whole dbmopen yellow/24",
1779 " keyword whole binmade yellow/24",
1780 " keyword whole eof yellow/24",
1781 " keyword whole fcntl yellow/24",
1782 " keyword whole fileno yellow/24",
1783 " keyword whole flock yellow/24",
1784 " keyword whole getc yellow/24",
1785 " keyword whole ioctl yellow/24",
1786 " keyword whole open yellow/24",
1787 " keyword whole pipe yellow/24",
1788 " keyword whole print yellow/24",
1789 " keyword whole printf yellow/24",
1790 " keyword whole read yellow/24",
1791 " keyword whole seek yellow/24",
1792 " keyword whole select yellow/24",
1793 " keyword whole sprintf yellow/24",
1794 " keyword whole sysopen yellow/24",
1795 " keyword whole sysread yellow/24",
1796 " keyword whole syswrite yellow/24",
1797 " keyword whole tell yellow/24",
1799 " keyword whole formline yellow/24",
1800 " keyword whole write yellow/24",
1802 " keyword whole closedir yellow/24",
1803 " keyword whole opendir yellow/24",
1804 " keyword whole readdir yellow/24",
1805 " keyword whole rewinddir yellow/24",
1806 " keyword whole seekdir yellow/24",
1807 " keyword whole telldir yellow/24",
1809 " keyword whole alarm yellow/24",
1810 " keyword whole chdir yellow/24",
1811 " keyword whole chroot yellow/24",
1812 " keyword whole die yellow/24",
1813 " keyword whole exec yellow/24",
1814 " keyword whole exit yellow/24",
1815 " keyword whole fork yellow/24",
1816 " keyword whole getlogin yellow/24",
1817 " keyword whole getpgrp yellow/24",
1818 " keyword whole getppid yellow/24",
1819 " keyword whole getpriority yellow/24",
1820 " keyword whole glob yellow/24",
1821 " keyword whole kill yellow/24",
1822 " keyword whole setpgrp yellow/24",
1823 " keyword whole setpriority yellow/24",
1824 " keyword whole sleep yellow/24",
1825 " keyword whole syscall yellow/24",
1826 " keyword whole system yellow/24",
1827 " keyword whole times yellow/24",
1828 " keyword whole umask yellow/24",
1829 " keyword whole wait yellow/24",
1830 " keyword whole waitpid yellow/24",
1831 " keyword whole warn yellow/24",
1833 " keyword whole accept yellow/24",
1834 " keyword whole bind yellow/24",
1835 " keyword whole connect yellow/24",
1836 " keyword whole getpeername yellow/24",
1837 " keyword whole getsockname yellow/24",
1838 " keyword whole getsockopt yellow/24",
1839 " keyword whole listen yellow/24",
1840 " keyword whole recv yellow/24",
1841 " keyword whole send yellow/24",
1842 " keyword whole setsockopt yellow/24",
1843 " keyword whole shutdown yellow/24",
1844 " keyword whole socket yellow/24",
1845 " keyword whole socketpair yellow/24",
1847 " keyword whole msgctl yellow/24",
1848 " keyword whole msgget yellow/24",
1849 " keyword whole msgsnd yellow/24",
1850 " keyword whole msgrcv yellow/24",
1851 " keyword whole semctl yellow/24",
1852 " keyword whole semget yellow/24",
1853 " keyword whole semop yellow/24",
1854 " keyword whole shmctl yellow/24",
1855 " keyword whole shmget yellow/24",
1856 " keyword whole shmread yellow/24",
1857 " keyword whole shmwrite yellow/24",
1859 " keyword whole defined yellow/24",
1860 " keyword whole dump yellow/24",
1861 " keyword whole eval yellow/24",
1862 " keyword whole local yellow/24",
1863 " keyword whole my yellow/24",
1864 " keyword whole ref yellow/24",
1865 " keyword whole reset yellow/24",
1866 " keyword whole scalar yellow/24",
1867 " keyword whole undef yellow/24",
1868 " keyword whole wantarray yellow/24",
1870 " keyword whole endpwent yellow/24",
1871 " keyword whole getpwent yellow/24",
1872 " keyword whole getpwnam yellow/24",
1873 " keyword whole getpwuid yellow/24",
1874 " keyword whole setpwent yellow/24",
1875 " keyword whole endgrent yellow/24",
1876 " keyword whole getgrgid yellow/24",
1877 " keyword whole getgrnam yellow/24",
1878 " keyword whole getgrent yellow/24",
1879 " keyword whole setgrent yellow/24",
1881 " keyword whole endhostent yellow/24",
1882 " keyword whole gethostbyaddr yellow/24",
1883 " keyword whole gethostbyname yellow/24",
1884 " keyword whole gethostent yellow/24",
1885 " keyword whole sethostent yellow/24",
1887 " keyword whole endnetent yellow/24",
1888 " keyword whole getnetbyaddr yellow/24",
1889 " keyword whole getnetbyname yellow/24",
1890 " keyword whole getnetent yellow/24",
1891 " keyword whole setnetent yellow/24",
1892 " keyword whole endservent yellow/24",
1893 " keyword whole getservbyname yellow/24",
1894 " keyword whole getservbyport yellow/24",
1895 " keyword whole getservent yellow/24",
1896 " keyword whole serservent yellow/24",
1897 " keyword whole endprotoent yellow/24",
1898 " keyword whole getprotobyname yellow/24",
1899 " keyword whole getprotobynumber yellow/24",
1900 " keyword whole getprotoent yellow/24",
1901 " keyword whole setprotoent yellow/24",
1903 "context exclusive whole <\\[\\s\\\\\\]EOF EOF green/6",
1904 "context # \\n brown/22",
1905 "context linestart = =cut brown/22",
1906 "context \" \" green/6",
1907 " keyword \\\\\" brightgreen/16",
1908 " keyword \\\\\\\\ brightgreen/16",
1909 "context ' ' brightgreen/16",
1910 " keyword \\\\' green/6",
1911 " keyword \\\\\\\\ green/6",
1913 "context exclusive ` ` white/26 black/0",
1915 "context whole __END__ guacomale_pudding white/26 black/0",
1917 "###############################################################################",
1918 "file ..\\*\\\\.(py|PY])$ Python\\sProgram ^#!\\s\\*/.\\*/python$",
1920 " keyword : brightred/18",
1921 " keyword > yellow/24",
1922 " keyword < yellow/24",
1923 " keyword \\+ yellow/24",
1924 " keyword - yellow/24",
1925 " keyword \\* yellow/24",
1926 " keyword / yellow/24",
1927 " keyword % yellow/24",
1928 " keyword = yellow/24",
1929 " keyword != yellow/24",
1930 " keyword == yellow/24",
1931 " keyword { brightcyan/14",
1932 " keyword } brightcyan/14",
1933 " keyword ( brightcyan/15",
1934 " keyword ) brightcyan/15",
1935 " keyword [ brightcyan/14",
1936 " keyword ] brightcyan/14",
1937 " keyword , brightcyan/14",
1938 " keyword : brightcyan/14",
1939 " keyword ; brightmagenta/19",
1940 " keyword whole self brightred/18",
1941 " keyword whole access yellow/24",
1942 " keyword whole and yellow/24",
1943 " keyword whole break yellow/24",
1944 " keyword whole class yellow/24",
1945 " keyword whole continue yellow/24",
1946 " keyword whole def yellow/24",
1947 " keyword whole del yellow/24",
1948 " keyword whole elif yellow/24",
1949 " keyword whole else yellow/24",
1950 " keyword whole except yellow/24",
1951 " keyword whole exec yellow/24",
1952 " keyword whole finally yellow/24",
1953 " keyword whole for yellow/24",
1954 " keyword whole from yellow/24",
1955 " keyword whole global yellow/24",
1956 " keyword whole if yellow/24",
1957 " keyword whole import yellow/24",
1958 " keyword whole in yellow/24",
1959 " keyword whole is yellow/24",
1960 " keyword whole lambda yellow/24",
1961 " keyword whole not yellow/24",
1962 " keyword whole or yellow/24",
1963 " keyword whole pass yellow/24",
1964 " keyword whole print yellow/24",
1965 " keyword whole raise yellow/24",
1966 " keyword whole return yellow/24",
1967 " keyword whole try yellow/24",
1968 " keyword whole while yellow/24",
1970 " keyword whole abs brightcyan/17",
1971 " keyword whole apply brightcyan/17",
1972 " keyword whole callable brightcyan/17",
1973 " keyword whole chr brightcyan/17",
1974 " keyword whole cmp brightcyan/17",
1975 " keyword whole coerce brightcyan/17",
1976 " keyword whole compile brightcyan/17",
1977 " keyword whole delattr brightcyan/17",
1978 " keyword whole dir brightcyan/17",
1979 " keyword whole divmod brightcyan/17",
1980 " keyword whole eval brightcyan/17",
1981 " keyword whole exec brightcyan/17",
1982 " keyword whole execfile brightcyan/17",
1983 " keyword whole filter brightcyan/17",
1984 " keyword whole float brightcyan/17",
1985 " keyword whole getattr brightcyan/17",
1986 " keyword whole globals brightcyan/17",
1987 " keyword whole hasattr brightcyan/17",
1988 " keyword whole hash brightcyan/17",
1989 " keyword whole hex brightcyan/17",
1990 " keyword whole id brightcyan/17",
1991 " keyword whole input brightcyan/17",
1992 " keyword whole int brightcyan/17",
1993 " keyword whole len brightcyan/17",
1994 " keyword whole locals brightcyan/17",
1995 " keyword whole long brightcyan/17",
1996 " keyword whole map brightcyan/17",
1997 " keyword whole max brightcyan/17",
1998 " keyword whole min brightcyan/17",
1999 " keyword whole oct brightcyan/17",
2000 " keyword whole open brightcyan/17",
2001 " keyword whole ord brightcyan/17",
2002 " keyword whole pow brightcyan/17",
2003 " keyword whole range brightcyan/17",
2004 " keyword whole raw_input brightcyan/17",
2005 " keyword whole reduce brightcyan/17",
2006 " keyword whole reload brightcyan/17",
2007 " keyword whole repr brightcyan/17",
2008 " keyword whole round brightcyan/17",
2009 " keyword whole setattr brightcyan/17",
2010 " keyword whole str brightcyan/17",
2011 " keyword whole tuple brightcyan/17",
2012 " keyword whole type brightcyan/17",
2013 " keyword whole vars brightcyan/17",
2014 " keyword whole xrange brightcyan/17",
2016 " keyword whole atof magenta/23",
2017 " keyword whole atoi magenta/23",
2018 " keyword whole atol magenta/23",
2019 " keyword whole expandtabs magenta/23",
2020 " keyword whole find magenta/23",
2021 " keyword whole rfind magenta/23",
2022 " keyword whole index magenta/23",
2023 " keyword whole rindex magenta/23",
2024 " keyword whole count magenta/23",
2025 " keyword whole split magenta/23",
2026 " keyword whole splitfields magenta/23",
2027 " keyword whole join magenta/23",
2028 " keyword whole joinfields magenta/23",
2029 " keyword whole strip magenta/23",
2030 " keyword whole swapcase magenta/23",
2031 " keyword whole upper magenta/23",
2032 " keyword whole lower magenta/23",
2033 " keyword whole ljust magenta/23",
2034 " keyword whole rjust magenta/23",
2035 " keyword whole center magenta/23",
2036 " keyword whole zfill magenta/23",
2038 " keyword whole __init__ lightgray/13",
2039 " keyword whole __del__ lightgray/13",
2040 " keyword whole __repr__ lightgray/13",
2041 " keyword whole __str__ lightgray/13",
2042 " keyword whole __cmp__ lightgray/13",
2043 " keyword whole __hash__ lightgray/13",
2044 " keyword whole __call__ lightgray/13",
2045 " keyword whole __getattr__ lightgray/13",
2046 " keyword whole __setattr__ lightgray/13",
2047 " keyword whole __delattr__ lightgray/13",
2048 " keyword whole __len__ lightgray/13",
2049 " keyword whole __getitem__ lightgray/13",
2050 " keyword whole __setitem__ lightgray/13",
2051 " keyword whole __delitem__ lightgray/13",
2052 " keyword whole __getslice__ lightgray/13",
2053 " keyword whole __setslice__ lightgray/13",
2054 " keyword whole __delslice__ lightgray/13",
2055 " keyword whole __add__ lightgray/13",
2056 " keyword whole __sub__ lightgray/13",
2057 " keyword whole __mul__ lightgray/13",
2058 " keyword whole __div__ lightgray/13",
2059 " keyword whole __mod__ lightgray/13",
2060 " keyword whole __divmod__ lightgray/13",
2061 " keyword whole __pow__ lightgray/13",
2062 " keyword whole __lshift__ lightgray/13",
2063 " keyword whole __rshift__ lightgray/13",
2064 " keyword whole __and__ lightgray/13",
2065 " keyword whole __xor__ lightgray/13",
2066 " keyword whole __or__ lightgray/13",
2067 " keyword whole __neg__ lightgray/13",
2068 " keyword whole __pos__ lightgray/13",
2069 " keyword whole __abs__ lightgray/13",
2070 " keyword whole __invert__ lightgray/13",
2071 " keyword whole __nonzero__ lightgray/13",
2072 " keyword whole __coerce__ lightgray/13",
2073 " keyword whole __int__ lightgray/13",
2074 " keyword whole __long__ lightgray/13",
2075 " keyword whole __float__ lightgray/13",
2076 " keyword whole __oct__ lightgray/13",
2077 " keyword whole __hex__ lightgray/13",
2079 " keyword whole __init__ lightgray/13",
2080 " keyword whole __del__ lightgray/13",
2081 " keyword whole __repr__ lightgray/13",
2082 " keyword whole __str__ lightgray/13",
2083 " keyword whole __cmp__ lightgray/13",
2084 " keyword whole __hash__ lightgray/13",
2085 " keyword whole __call__ lightgray/13",
2086 " keyword whole __getattr__ lightgray/13",
2087 " keyword whole __setattr__ lightgray/13",
2088 " keyword whole __delattr__ lightgray/13",
2089 " keyword whole __len__ lightgray/13",
2090 " keyword whole __getitem__ lightgray/13",
2091 " keyword whole __setitem__ lightgray/13",
2092 " keyword whole __delitem__ lightgray/13",
2093 " keyword whole __getslice__ lightgray/13",
2094 " keyword whole __setslice__ lightgray/13",
2095 " keyword whole __delslice__ lightgray/13",
2096 " keyword whole __add__ lightgray/13",
2097 " keyword whole __sub__ lightgray/13",
2098 " keyword whole __mul__ lightgray/13",
2099 " keyword whole __div__ lightgray/13",
2100 " keyword whole __mod__ lightgray/13",
2101 " keyword whole __divmod__ lightgray/13",
2102 " keyword whole __pow__ lightgray/13",
2103 " keyword whole __lshift__ lightgray/13",
2104 " keyword whole __rshift__ lightgray/13",
2105 " keyword whole __and__ lightgray/13",
2106 " keyword whole __xor__ lightgray/13",
2107 " keyword whole __or__ lightgray/13",
2108 " keyword whole __neg__ lightgray/13",
2109 " keyword whole __pos__ lightgray/13",
2110 " keyword whole __abs__ lightgray/13",
2111 " keyword whole __invert__ lightgray/13",
2112 " keyword whole __nonzero__ lightgray/13",
2113 " keyword whole __coerce__ lightgray/13",
2114 " keyword whole __int__ lightgray/13",
2115 " keyword whole __long__ lightgray/13",
2116 " keyword whole __float__ lightgray/13",
2117 " keyword whole __oct__ lightgray/13",
2118 " keyword whole __hex__ lightgray/13",
2120 " keyword whole __radd__ lightgray/13",
2121 " keyword whole __rsub__ lightgray/13",
2122 " keyword whole __rmul__ lightgray/13",
2123 " keyword whole __rdiv__ lightgray/13",
2124 " keyword whole __rmod__ lightgray/13",
2125 " keyword whole __rdivmod__ lightgray/13",
2126 " keyword whole __rpow__ lightgray/13",
2127 " keyword whole __rlshift__ lightgray/13",
2128 " keyword whole __rrshift__ lightgray/13",
2129 " keyword whole __rand__ lightgray/13",
2130 " keyword whole __rxor__ lightgray/13",
2131 " keyword whole __ror__ lightgray/13",
2133 " keyword whole __*__ brightred/18",
2135 "context \"\"\" \"\"\" brown/22",
2136 "context # \\n brown/22",
2137 "context \" \" green/6",
2138 " keyword \\\\\" brightgreen/16",
2139 " keyword %% brightgreen/16",
2140 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]e brightgreen/16",
2141 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]E brightgreen/16",
2142 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]f brightgreen/16",
2143 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]g brightgreen/16",
2144 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]G brightgreen/16",
2145 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]d brightgreen/16",
2146 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]i brightgreen/16",
2147 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]o brightgreen/16",
2148 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]u brightgreen/16",
2149 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]x brightgreen/16",
2150 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]X brightgreen/16",
2151 " keyword %\\[hl\\]n brightgreen/16",
2152 " keyword %\\[.\\]\\[0123456789\\]s brightgreen/16",
2153 " keyword %[*] brightgreen/16",
2154 " keyword %c brightgreen/16",
2155 " keyword \\\\\\\\ brightgreen/16",
2156 " keyword \\\\' brightgreen/16",
2157 " keyword \\\\a brightgreen/16",
2158 " keyword \\\\b brightgreen/16",
2159 " keyword \\\\t brightgreen/16",
2160 " keyword \\\\n brightgreen/16",
2161 " keyword \\\\v brightgreen/16",
2162 " keyword \\\\f brightgreen/16",
2163 " keyword \\\\r brightgreen/16",
2164 " keyword \\\\0 brightgreen/16",
2166 "context ' ' green/6",
2167 " keyword \\\\\" brightgreen/16",
2168 " keyword %% brightgreen/16",
2169 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]e brightgreen/16",
2170 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]E brightgreen/16",
2171 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]f brightgreen/16",
2172 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]g brightgreen/16",
2173 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]G brightgreen/16",
2174 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]d brightgreen/16",
2175 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]i brightgreen/16",
2176 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]o brightgreen/16",
2177 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]u brightgreen/16",
2178 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]x brightgreen/16",
2179 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]X brightgreen/16",
2180 " keyword %\\[hl\\]n brightgreen/16",
2181 " keyword %\\[.\\]\\[0123456789\\]s brightgreen/16",
2182 " keyword %[*] brightgreen/16",
2183 " keyword %c brightgreen/16",
2184 " keyword \\\\\\\\ brightgreen/16",
2185 " keyword \\\\' brightgreen/16",
2186 " keyword \\\\a brightgreen/16",
2187 " keyword \\\\b brightgreen/16",
2188 " keyword \\\\t brightgreen/16",
2189 " keyword \\\\n brightgreen/16",
2190 " keyword \\\\v brightgreen/16",
2191 " keyword \\\\f brightgreen/16",
2192 " keyword \\\\r brightgreen/16",
2193 " keyword \\\\0 brightgreen/16",
2195 "###############################################################################",
2196 "file ..\\*\\\\.(man|[0-9n]|[0-9]x)$ NROFF\\sSource",
2199 " keyword \\\\fP brightgreen/6",
2200 " keyword \\\\fR brightgreen/6",
2201 " keyword \\\\fB brightgreen/6",
2202 " keyword \\\\fI brightgreen/6",
2203 " keyword linestart .AS cyan/5",
2204 " keyword linestart .Ar cyan/5",
2205 " keyword linestart .At cyan/5",
2206 " keyword linestart .BE cyan/5",
2207 " keyword linestart .BH cyan/5",
2208 " keyword linestart .BI cyan/5",
2209 " keyword linestart .BR cyan/5",
2210 " keyword linestart .BS cyan/5",
2211 " keyword linestart .Bd cyan/5",
2212 " keyword linestart .Bk cyan/5",
2213 " keyword linestart .Bl cyan/5",
2214 " keyword linestart .Bu cyan/5",
2215 " keyword linestart .Bx cyan/5",
2216 " keyword linestart .CE cyan/5",
2217 " keyword linestart .CM cyan/5",
2218 " keyword linestart .CS cyan/5",
2219 " keyword linestart .CT cyan/5",
2220 " keyword linestart .CW cyan/5",
2221 " keyword linestart .Cm cyan/5",
2222 " keyword linestart .Co cyan/5",
2223 " keyword linestart .DA cyan/5",
2224 " keyword linestart .DE cyan/5",
2225 " keyword linestart .DS cyan/5",
2226 " keyword linestart .DT cyan/5",
2227 " keyword linestart .Dd cyan/5",
2228 " keyword linestart .De cyan/5",
2229 " keyword linestart .Dl cyan/5",
2230 " keyword linestart .Dq cyan/5",
2231 " keyword linestart .Ds cyan/5",
2232 " keyword linestart .Dt cyan/5",
2233 " keyword linestart .Dv cyan/5",
2234 " keyword linestart .EE cyan/5",
2235 " keyword linestart .EN cyan/5",
2236 " keyword linestart .EQ cyan/5",
2237 " keyword linestart .EX cyan/5",
2238 " keyword linestart .Ed cyan/5",
2239 " keyword linestart .Ee cyan/5",
2240 " keyword linestart .Ek cyan/5",
2241 " keyword linestart .El cyan/5",
2242 " keyword linestart .Em cyan/5",
2243 " keyword linestart .En cyan/5",
2244 " keyword linestart .Ev cyan/5",
2245 " keyword linestart .Ex cyan/5",
2246 " keyword linestart .FI cyan/5",
2247 " keyword linestart .FL cyan/5",
2248 " keyword linestart .FN cyan/5",
2249 " keyword linestart .FT cyan/5",
2250 " keyword linestart .Fi cyan/5",
2251 " keyword linestart .Fl cyan/5",
2252 " keyword linestart .Fn cyan/5",
2253 " keyword linestart .HP cyan/5",
2254 " keyword linestart .HS cyan/5",
2255 " keyword linestart .Hh cyan/5",
2256 " keyword linestart .Hi cyan/5",
2257 " keyword linestart .IB cyan/5",
2258 " keyword linestart .IP cyan/5",
2259 " keyword linestart .IR cyan/5",
2260 " keyword linestart .IX cyan/5",
2261 " keyword linestart .Ic cyan/5",
2262 " keyword linestart .Id cyan/5",
2263 " keyword linestart .Ip cyan/5",
2264 " keyword linestart .It cyan/5",
2265 " keyword linestart .LI cyan/5",
2266 " keyword linestart .LO cyan/5",
2267 " keyword linestart .LP cyan/5",
2268 " keyword linestart .LR cyan/5",
2269 " keyword linestart .Li cyan/5",
2270 " keyword linestart .MF cyan/5",
2271 " keyword linestart .ML cyan/5",
2272 " keyword linestart .MU cyan/5",
2273 " keyword linestart .MV cyan/5",
2274 " keyword linestart .N cyan/5",
2275 " keyword linestart .NF cyan/5",
2276 " keyword linestart .Nd cyan/5",
2277 " keyword linestart .Nm cyan/5",
2278 " keyword linestart .No cyan/5",
2279 " keyword linestart .OP cyan/5",
2280 " keyword linestart .Oc cyan/5",
2281 " keyword linestart .Oo cyan/5",
2282 " keyword linestart .Op cyan/5",
2283 " keyword linestart .Os cyan/5",
2284 " keyword linestart .PD cyan/5",
2285 " keyword linestart .PN cyan/5",
2286 " keyword linestart .PP cyan/5",
2287 " keyword linestart .PU cyan/5",
2288 " keyword linestart .Pa cyan/5",
2289 " keyword linestart .Pf cyan/5",
2290 " keyword linestart .Pp cyan/5",
2291 " keyword linestart .Pq cyan/5",
2292 " keyword linestart .Pr cyan/5",
2293 " keyword linestart .Ps cyan/5",
2294 " keyword linestart .Ql cyan/5",
2295 " keyword linestart .RB cyan/5",
2296 " keyword linestart .RE cyan/5",
2297 " keyword linestart .RI cyan/5",
2298 " keyword linestart .RS cyan/5",
2299 " keyword linestart .RT cyan/5",
2300 " keyword linestart .Re cyan/5",
2301 " keyword linestart .Rs cyan/5",
2302 " keyword linestart .SB cyan/5",
2303 " keyword linestart .SH cyan/5",
2304 " keyword linestart .SM cyan/5",
2305 " keyword linestart .SP cyan/5",
2306 " keyword linestart .SS cyan/5",
2307 " keyword linestart .Sa cyan/5",
2308 " keyword linestart .Sh cyan/5",
2309 " keyword linestart .Sm cyan/5",
2310 " keyword linestart .Sp cyan/5",
2311 " keyword linestart .Sq cyan/5",
2312 " keyword linestart .Ss cyan/5",
2313 " keyword linestart .St cyan/5",
2314 " keyword linestart .Sx cyan/5",
2315 " keyword linestart .Sy cyan/5",
2316 " keyword linestart .TE cyan/5",
2317 " keyword linestart .TH cyan/5",
2318 " keyword linestart .TP cyan/5",
2319 " keyword linestart .TQ cyan/5",
2320 " keyword linestart .TS cyan/5",
2321 " keyword linestart .Tn cyan/5",
2322 " keyword linestart .Tp cyan/5",
2323 " keyword linestart .UC cyan/5",
2324 " keyword linestart .Uh cyan/5",
2325 " keyword linestart .Ux cyan/5",
2326 " keyword linestart .VE cyan/5",
2327 " keyword linestart .VS cyan/5",
2328 " keyword linestart .Va cyan/5",
2329 " keyword linestart .Vb cyan/5",
2330 " keyword linestart .Ve cyan/5",
2331 " keyword linestart .Xc cyan/5",
2332 " keyword linestart .Xe cyan/5",
2333 " keyword linestart .Xr cyan/5",
2334 " keyword linestart .YN cyan/5",
2335 " keyword linestart .ad cyan/5",
2336 " keyword linestart .am cyan/5",
2337 " keyword linestart .bd cyan/5",
2338 " keyword linestart .bp cyan/5",
2339 " keyword linestart .br cyan/5",
2340 " keyword linestart .ce cyan/5",
2341 " keyword linestart .cs cyan/5",
2342 " keyword linestart .de cyan/5",
2343 " keyword linestart .ds cyan/5",
2344 " keyword linestart .ec cyan/5",
2345 " keyword linestart .eh cyan/5",
2346 " keyword linestart .el cyan/5",
2347 " keyword linestart .eo cyan/5",
2348 " keyword linestart .ev cyan/5",
2349 " keyword linestart .fc cyan/5",
2350 " keyword linestart .fi cyan/5",
2351 " keyword linestart .ft cyan/5",
2352 " keyword linestart .hy cyan/5",
2353 " keyword linestart .iX cyan/5",
2354 " keyword linestart .ie cyan/5",
2355 " keyword linestart .if cyan/5",
2356 " keyword linestart .ig cyan/5",
2357 " keyword linestart .in cyan/5",
2358 " keyword linestart .ll cyan/5",
2359 " keyword linestart .lp cyan/5",
2360 " keyword linestart .ls cyan/5",
2361 " keyword linestart .mk cyan/5",
2362 " keyword linestart .na cyan/5",
2363 " keyword linestart .ne cyan/5",
2364 " keyword linestart .nf cyan/5",
2365 " keyword linestart .nh cyan/5",
2366 " keyword linestart .nr cyan/5",
2367 " keyword linestart .ns cyan/5",
2368 " keyword linestart .oh cyan/5",
2369 " keyword linestart .ps cyan/5",
2370 " keyword linestart .re cyan/5",
2371 " keyword linestart .rm cyan/5",
2372 " keyword linestart .rn cyan/5",
2373 " keyword linestart .rr cyan/5",
2374 " keyword linestart .so cyan/5",
2375 " keyword linestart .sp cyan/5",
2376 " keyword linestart .ss cyan/5",
2377 " keyword linestart .ta cyan/5",
2378 " keyword linestart .ti cyan/5",
2379 " keyword linestart .tm cyan/5",
2380 " keyword linestart .tr cyan/5",
2381 " keyword linestart .ul cyan/5",
2382 " keyword linestart .vs cyan/5",
2383 " keyword linestart .zZ cyan/5",
2384 " keyword linestart .e cyan/5",
2385 " keyword linestart .d cyan/5",
2386 " keyword linestart .h cyan/5",
2387 " keyword linestart .B cyan/5",
2388 " keyword linestart .I cyan/5",
2389 " keyword linestart .R cyan/5",
2390 " keyword linestart .P cyan/5",
2391 " keyword linestart .L cyan/5",
2392 " keyword linestart .V cyan/5",
2393 " keyword linestart .F cyan/5",
2394 " keyword linestart .T cyan/5",
2395 " keyword linestart .X cyan/5",
2396 " keyword linestart .Y cyan/5",
2397 " keyword linestart .b cyan/5",
2398 " keyword linestart .l cyan/5",
2399 " keyword linestart .i cyan/5",
2401 "context exclusive linestart .SH \\n brightred/18",
2402 "context exclusive linestart .TH \\n brightred/18",
2403 "context exclusive linestart .B \\n magenta/23",
2404 "context exclusive linestart .I \\n yellow/24",
2405 "context exclusive linestart .nf linestart .fi green/15",
2407 "# font changes should end in a \\fP",
2408 "context exclusive \\\\fB \\\\fP magenta/23",
2409 "context exclusive \\\\fI \\\\fP yellow/24",
2410 "context linestart .\\\\\" \\n brown/22",
2412 "###############################################################################",
2413 "# Assumes you've set a dark background, e.g. navy blue.",
2414 "file ..\\*\\\\.(htm|html|HTM|HTML)$ HTML\\sFile",
2416 "context default white/25",
2417 " keyword whole &*; brightgreen/16",
2418 "context <!-- --> white/26",
2419 "context < > brightcyan/17",
2420 " keyword \"http:*\" magenta/22",
2421 " keyword \"ftp:*\" magenta/22",
2422 " keyword \"mailto:*\" magenta/22",
2423 " keyword \"gopher:*\" magenta/22",
2424 " keyword \"telnet:*\" magenta/22",
2425 " keyword \"file:*\" magenta/22",
2426 " keyword \"*.gif\" brightred/19",
2427 " keyword \"*.jpg\" brightred/19",
2428 " keyword \"*.png\" brightred/19",
2429 " keyword \"*\" cyan/5",
2431 "###############################################################################",
2432 "# Pascal (BP7 IDE alike)",
2433 "file ..\\*\\\\.(pp|PP|pas|PAS)$ Pascal Program",
2434 "context default yellow/24",
2435 " keyword whole absolute white/25",
2436 " keyword whole and white/25",
2437 " keyword whole array white/25",
2438 " keyword whole as white/25",
2439 " keyword whole asm white/25",
2440 " keyword whole assembler white/25",
2441 " keyword whole begin white/25",
2442 " keyword whole break white/25",
2443 " keyword whole case white/25",
2444 " keyword whole class white/25",
2445 " keyword whole const white/25",
2446 " keyword whole continue white/25",
2447 " keyword whole constructor white/25",
2448 " keyword whole destructor white/25",
2449 " keyword whole dispose white/25",
2450 " keyword whole div white/25",
2451 " keyword whole do white/25",
2452 " keyword whole downto white/25",
2453 " keyword whole else white/25",
2454 " keyword whole end white/25",
2455 " keyword whole except white/25",
2456 " keyword whole exit white/25",
2457 " keyword whole export white/25",
2458 " keyword whole exports white/25",
2459 " keyword whole external white/25",
2460 " keyword whole fail white/25",
2461 " keyword whole far white/25",
2462 " keyword whole false white/25",
2463 " keyword whole file white/25",
2464 " keyword whole finally white/25",
2465 " keyword whole for white/25",
2466 " keyword whole forward white/25",
2467 " keyword whole function white/25",
2468 " keyword whole goto white/25",
2469 " keyword whole if white/25",
2470 " keyword whole implementation white/25",
2471 " keyword whole in white/25",
2472 " keyword whole inherited white/25",
2473 " keyword whole initialization white/25",
2474 " keyword whole inline white/25",
2475 " keyword whole interface white/25",
2476 " keyword whole interrupt white/25",
2477 " keyword whole is white/25",
2478 " keyword whole label white/25",
2479 " keyword whole library white/25",
2480 " keyword whole mod white/25",
2481 " keyword whole near white/25",
2482 " keyword whole new white/25",
2483 " keyword whole nil white/25",
2484 " keyword whole not white/25",
2485 " keyword whole object white/25",
2486 " keyword whole of white/25",
2487 " keyword whole on white/25",
2488 " keyword whole operator white/25",
2489 " keyword whole or white/25",
2490 " keyword whole otherwise white/25",
2491 " keyword whole packed white/25",
2492 " keyword whole procedure white/25",
2493 " keyword whole program white/25",
2494 " keyword whole property white/25",
2495 " keyword whole raise white/25",
2496 " keyword whole record white/25",
2497 " keyword whole repeat white/25",
2498 " keyword whole self white/25",
2499 " keyword whole set white/25",
2500 " keyword whole shl white/25",
2501 " keyword whole shr white/25",
2502 " keyword whole string white/25",
2503 " keyword whole then white/25",
2504 " keyword whole to white/25",
2505 " keyword whole true white/25",
2506 " keyword whole try white/25",
2507 " keyword whole type white/25",
2508 " keyword whole unit white/25",
2509 " keyword whole until white/25",
2510 " keyword whole uses white/25",
2511 " keyword whole var white/25",
2512 " keyword whole virtual white/25",
2513 " keyword whole while white/25",
2514 " keyword whole with white/25",
2515 " keyword whole xor white/25",
2516 " keyword whole .. white/25",
2518 " keyword > cyan/5",
2519 " keyword < cyan/5",
2520 " keyword \\+ cyan/5",
2521 " keyword - cyan/5",
2522 " keyword / cyan/5",
2523 " keyword % cyan/5",
2524 " keyword = cyan/5",
2525 " keyword [ cyan/5",
2526 " keyword ] cyan/5",
2527 " keyword ( cyan/5",
2528 " keyword ) cyan/5",
2529 " keyword , cyan/5",
2530 " keyword . cyan/5",
2531 " keyword : cyan/5",
2532 " keyword ; cyan/5",
2533 " keyword {$*} brightred/19",
2535 "context ' ' brightcyan/22",
2536 "context // \\n brown/22",
2537 "context (\\* \\*) brown/22",
2538 "# context {$ } brightred/19",
2539 "# keyword \\[ABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\[-\\+\\] brightgreen/16",
2540 "# keyword $* brightgreen/16",
2541 "context { } lightgray/22",
2544 "###############################################################################",
2545 "file ..\\*\\\\.tex$ LaTeX\\s2.09\\sDocument",
2547 "wholechars left \\\\ ",
2548 "wholechars right abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
2551 " keyword whole \\\\tiny yellow/24",
2552 " keyword whole \\\\scriptsize yellow/24",
2553 " keyword whole \\\\footnotesize yellow/24",
2554 " keyword whole \\\\small yellow/24",
2555 " keyword whole \\\\normalsize yellow/24",
2556 " keyword whole \\\\large yellow/24",
2557 " keyword whole \\\\Large yellow/24",
2558 " keyword whole \\\\LARGE yellow/24",
2559 " keyword whole \\\\huge yellow/24",
2560 " keyword whole \\\\Huge yellow/24",
2562 "# accents and symbols",
2563 " keyword whole \\\\`{\\[aeiouAEIOU\\]} yellow/24",
2564 " keyword whole \\\\'{\\[aeiouAEIOU\\]} yellow/24",
2565 " keyword whole \\\\^{\\[aeiouAEIOU\\]} yellow/24",
2566 " keyword whole \\\\\"{\\[aeiouAEIOU\\]} yellow/24",
2567 " keyword whole \\\\~{\\[aeiouAEIOU\\]} yellow/24",
2568 " keyword whole \\\\={\\[aeiouAEIOU\\]} yellow/24",
2569 " keyword whole \\\\.{\\[aeiouAEIOU\\]} yellow/24",
2570 " keyword whole \\\\u{\\[aeiouAEIOU\\]} yellow/24",
2571 " keyword whole \\\\v{\\[aeiouAEIOU\\]} yellow/24",
2572 " keyword whole \\\\H{\\[aeiouAEIOU\\]} yellow/24",
2573 " keyword whole \\\\t{\\[aeiouAEIOU\\]} yellow/24",
2574 " keyword whole \\\\c{\\[aeiouAEIOU\\]} yellow/24",
2575 " keyword whole \\\\d{\\[aeiouAEIOU\\]} yellow/24",
2576 " keyword whole \\\\b{\\[aeiouAEIOU\\]} yellow/24",
2578 " keyword whole \\\\dag yellow/24",
2579 " keyword whole \\\\ddag yellow/24",
2580 " keyword whole \\\\S yellow/24",
2581 " keyword whole \\\\P yellow/24",
2582 " keyword whole \\\\copyright yellow/24",
2583 " keyword whole \\\\pounds yellow/24",
2585 "# sectioning and table of contents",
2586 " keyword whole \\\\part[*]{*} brightred/19",
2587 " keyword whole \\\\part{*} brightred/19",
2588 " keyword whole \\\\part\\*{*} brightred/19",
2589 " keyword whole \\\\chapter[*]{*} brightred/19",
2590 " keyword whole \\\\chapter{*} brightred/19",
2591 " keyword whole \\\\chapter\\*{*} brightred/19",
2592 " keyword whole \\\\section[*]{*} brightred/19",
2593 " keyword whole \\\\section{*} brightred/19",
2594 " keyword whole \\\\section\\*{*} brightred/19",
2595 " keyword whole \\\\subsection[*]{*} brightred/19",
2596 " keyword whole \\\\subsection{*} brightred/19",
2597 " keyword whole \\\\subsection\\*{*} brightred/19",
2598 " keyword whole \\\\subsubsection[*]{*} brightred/19",
2599 " keyword whole \\\\subsubsection{*} brightred/19",
2600 " keyword whole \\\\subsubsection\\*{*} brightred/19",
2601 " keyword whole \\\\paragraph[*]{*} brightred/19",
2602 " keyword whole \\\\paragraph{*} brightred/19",
2603 " keyword whole \\\\paragraph\\*{*} brightred/19",
2604 " keyword whole \\\\subparagraph[*]{*} brightred/19",
2605 " keyword whole \\\\subparagraph{*} brightred/19",
2606 " keyword whole \\\\subparagraph\\*{*} brightred/19",
2608 " keyword whole \\\\appendix brightred/19",
2609 " keyword whole \\\\tableofcontents brightred/19",
2612 " keyword whole \\\\item[*] yellow/24",
2613 " keyword whole \\\\item yellow/24",
2614 " keyword whole \\\\\\\\ yellow/24",
2615 " keyword \\\\\\s yellow/24 black/0",
2616 " keyword %% yellow/24",
2618 "# docuement and page styles ",
2619 " keyword whole \\\\documentstyle[*]{*} yellow/20",
2620 " keyword whole \\\\documentstyle{*} yellow/20",
2621 " keyword whole \\\\pagestyle{*} yellow/20",
2623 "# cross references",
2624 " keyword whole \\\\label{*} yellow/24",
2625 " keyword whole \\\\ref{*} yellow/24",
2627 "# bibliography and citations",
2628 " keyword whole \\\\bibliography{*} yellow/24",
2629 " keyword whole \\\\bibitem[*]{*} yellow/24",
2630 " keyword whole \\\\bibitem{*} yellow/24",
2631 " keyword whole \\\\cite[*]{*} yellow/24",
2632 " keyword whole \\\\cite{*} yellow/24",
2634 "# splitting the input",
2635 " keyword whole \\\\input{*} yellow/20",
2636 " keyword whole \\\\include{*} yellow/20",
2637 " keyword whole \\\\includeonly{*} yellow/20",
2640 " keyword whole \\\\linebreak[\\[01234\\]] yellow/24",
2641 " keyword whole \\\\nolinebreak[\\[01234\\]] yellow/24",
2642 " keyword whole \\\\linebreak yellow/24",
2643 " keyword whole \\\\nolinebreak yellow/24",
2644 " keyword whole \\\\[+] yellow/24",
2645 " keyword whole \\\\- yellow/24",
2646 " keyword whole \\\\sloppy yellow/24",
2649 " keyword whole \\\\pagebreak[\\[01234\\]] yellow/24",
2650 " keyword whole \\\\nopagebreak[\\[01234\\]] yellow/24",
2651 " keyword whole \\\\pagebreak yellow/24",
2652 " keyword whole \\\\nopagebreak yellow/24",
2653 " keyword whole \\\\samepage yellow/24",
2654 " keyword whole \\\\newpage yellow/24",
2655 " keyword whole \\\\clearpage yellow/24",
2658 " keyword \\\\newcommand{*}[*] cyan/5",
2659 " keyword \\\\newcommand{*} cyan/5",
2660 " keyword \\\\newenvironment{*}[*]{*} cyan/5",
2661 " keyword \\\\newenvironment{*}{*} cyan/5",
2665 "# begins and ends",
2666 " keyword \\\\begin{document} brightred/14",
2667 " keyword \\\\begin{equation} brightred/14",
2668 " keyword \\\\begin{eqnarray} brightred/14",
2669 " keyword \\\\begin{quote} brightred/14",
2670 " keyword \\\\begin{quotation} brightred/14",
2671 " keyword \\\\begin{center} brightred/14",
2672 " keyword \\\\begin{verse} brightred/14",
2673 " keyword \\\\begin{verbatim} brightred/14",
2674 " keyword \\\\begin{itemize} brightred/14",
2675 " keyword \\\\begin{enumerate} brightred/14",
2676 " keyword \\\\begin{description} brightred/14",
2677 " keyword \\\\begin{list} brightred/14",
2678 " keyword \\\\begin{array} brightred/14",
2679 " keyword \\\\begin{tabular} brightred/14",
2680 " keyword \\\\begin{thebibliography}{*} brightred/14",
2681 " keyword \\\\begin{sloppypar} brightred/14",
2683 " keyword \\\\end{document} brightred/14",
2684 " keyword \\\\end{equation} brightred/14",
2685 " keyword \\\\end{eqnarray} brightred/14",
2686 " keyword \\\\end{quote} brightred/14",
2687 " keyword \\\\end{quotation} brightred/14",
2688 " keyword \\\\end{center} brightred/14",
2689 " keyword \\\\end{verse} brightred/14",
2690 " keyword \\\\end{verbatim} brightred/14",
2691 " keyword \\\\end{itemize} brightred/14",
2692 " keyword \\\\end{enumerate} brightred/14",
2693 " keyword \\\\end{description} brightred/14",
2694 " keyword \\\\end{list} brightred/14",
2695 " keyword \\\\end{array} brightred/14",
2696 " keyword \\\\end{tabular} brightred/14",
2697 " keyword \\\\end{thebibliography}{*} brightred/14",
2698 " keyword \\\\end{sloppypar} brightred/14",
2700 " keyword \\\\begin{*} brightcyan/16",
2701 " keyword \\\\end{*} brightcyan/16",
2703 " keyword \\\\theorem{*}{*} yellow/24",
2705 "# if all else fails",
2706 " keyword whole \\\\+[*]{*}{*}{*} brightcyan/17",
2707 " keyword whole \\\\+[*]{*}{*} brightcyan/17",
2708 " keyword whole \\\\+{*}{*}{*}{*} brightcyan/17",
2709 " keyword whole \\\\+{*}{*}{*} brightcyan/17",
2710 " keyword whole \\\\+{*}{*} brightcyan/17",
2711 " keyword whole \\\\+{*} brightcyan/17",
2712 " keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\n brightcyan/17",
2713 " keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\s brightcyan/17",
2714 " keyword \\\\\\[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\]\\t brightcyan/17",
2716 "context \\\\pagenumbering{ } yellow/20",
2717 " keyword arabic brightcyan/17",
2718 " keyword roman brightcyan/17",
2719 " keyword alph brightcyan/17",
2720 " keyword Roman brightcyan/17",
2721 " keyword Alph brightcyan/17",
2723 "context % \\n brown/22",
2725 "# mathematical formulas",
2726 "context $ $ brightgreen/6",
2727 "context exclusive \\\\begin{equation} \\\\end{equation} brightgreen/6",
2728 "context exclusive \\\\begin{eqnarray} \\\\end{eqnarray} brightgreen/6",
2731 "###############################################################################",
2732 "file ..\\*\\\\.([chC]|CC|cxx|cc|cpp|CPP|CXX)$ C/C\\+\\+\\sProgram",
2734 " keyword whole auto yellow/24",
2735 " keyword whole break yellow/24",
2736 " keyword whole case yellow/24",
2737 " keyword whole char yellow/24",
2738 " keyword whole const yellow/24",
2739 " keyword whole continue yellow/24",
2740 " keyword whole default yellow/24",
2741 " keyword whole do yellow/24",
2742 " keyword whole double yellow/24",
2743 " keyword whole else yellow/24",
2744 " keyword whole enum yellow/24",
2745 " keyword whole extern yellow/24",
2746 " keyword whole float yellow/24",
2747 " keyword whole for yellow/24",
2748 " keyword whole goto yellow/24",
2749 " keyword whole if yellow/24",
2750 " keyword whole int yellow/24",
2751 " keyword whole long yellow/24",
2752 " keyword whole register yellow/24",
2753 " keyword whole return yellow/24",
2754 " keyword whole short yellow/24",
2755 " keyword whole signed yellow/24",
2756 " keyword whole sizeof yellow/24",
2757 " keyword whole static yellow/24",
2758 " keyword whole struct yellow/24",
2759 " keyword whole switch yellow/24",
2760 " keyword whole typedef yellow/24",
2761 " keyword whole union yellow/24",
2762 " keyword whole unsigned yellow/24",
2763 " keyword whole void yellow/24",
2764 " keyword whole volatile yellow/24",
2765 " keyword whole while yellow/24",
2766 " keyword whole asm yellow/24",
2767 " keyword whole catch yellow/24",
2768 " keyword whole class yellow/24",
2769 " keyword whole friend yellow/24",
2770 " keyword whole delete yellow/24",
2771 " keyword whole inline yellow/24",
2772 " keyword whole new yellow/24",
2773 " keyword whole operator yellow/24",
2774 " keyword whole private yellow/24",
2775 " keyword whole protected yellow/24",
2776 " keyword whole public yellow/24",
2777 " keyword whole this yellow/24",
2778 " keyword whole throw yellow/24",
2779 " keyword whole template yellow/24",
2780 " keyword whole try yellow/24",
2781 " keyword whole virtual yellow/24",
2782 " keyword whole bool yellow/24",
2783 " keyword whole const_cast yellow/24",
2784 " keyword whole dynamic_cast yellow/24",
2785 " keyword whole explicit yellow/24",
2786 " keyword whole false yellow/24",
2787 " keyword whole mutable yellow/24",
2788 " keyword whole namespace yellow/24",
2789 " keyword whole reinterpret_cast yellow/24",
2790 " keyword whole static_cast yellow/24",
2791 " keyword whole true yellow/24",
2792 " keyword whole typeid yellow/24",
2793 " keyword whole typename yellow/24",
2794 " keyword whole using yellow/24",
2795 " keyword whole wchar_t yellow/24",
2796 " keyword whole ... yellow/24",
2798 " keyword /\\* brown/22",
2799 " keyword \\*/ brown/22",
2801 " keyword '\\s' brightgreen/16",
2802 " keyword '+' brightgreen/16",
2803 " keyword > yellow/24",
2804 " keyword < yellow/24",
2805 " keyword \\+ yellow/24",
2806 " keyword - yellow/24",
2807 " keyword \\* yellow/24",
2808 "# keyword / yellow/24",
2809 " keyword % yellow/24",
2810 " keyword = yellow/24",
2811 " keyword != yellow/24",
2812 " keyword == yellow/24",
2813 " keyword { brightcyan/14",
2814 " keyword } brightcyan/14",
2815 " keyword ( brightcyan/15",
2816 " keyword ) brightcyan/15",
2817 " keyword [ brightcyan/14",
2818 " keyword ] brightcyan/14",
2819 " keyword , brightcyan/14",
2820 " keyword : brightcyan/14",
2821 " keyword ; brightmagenta/19",
2822 "context exclusive /\\* \\*/ brown/22",
2823 "context // \\n brown/22",
2824 "context linestart # \\n brightred/18",
2825 " keyword \\\\\\n yellow/24",
2826 " keyword /\\**\\*/ brown/22",
2827 " keyword \"+\" red/19",
2828 " keyword <+> red/19",
2829 "context \" \" green/6",
2830 " keyword \\\\\" brightgreen/16",
2831 " keyword %% brightgreen/16",
2832 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]e brightgreen/16",
2833 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]E brightgreen/16",
2834 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]f brightgreen/16",
2835 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]g brightgreen/16",
2836 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[L\\]G brightgreen/16",
2837 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]d brightgreen/16",
2838 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]i brightgreen/16",
2839 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]o brightgreen/16",
2840 " keyword %\\[0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]u brightgreen/16",
2841 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]x brightgreen/16",
2842 " keyword %\\[#0\\s-\\+,\\]\\[0123456789\\]\\[.\\]\\[0123456789\\]\\[hl\\]X brightgreen/16",
2843 " keyword %\\[hl\\]n brightgreen/16",
2844 " keyword %\\[.\\]\\[0123456789\\]s brightgreen/16",
2845 " keyword %[*] brightgreen/16",
2846 " keyword %c brightgreen/16",
2847 " keyword \\\\\\\\ brightgreen/16",
2848 " keyword \\\\' brightgreen/16",
2849 " keyword \\\\a brightgreen/16",
2850 " keyword \\\\b brightgreen/16",
2851 " keyword \\\\t brightgreen/16",
2852 " keyword \\\\n brightgreen/16",
2853 " keyword \\\\v brightgreen/16",
2854 " keyword \\\\f brightgreen/16",
2855 " keyword \\\\r brightgreen/16",
2856 " keyword \\\\0 brightgreen/16",
2858 "###############################################################################",
2859 "file .\\*ChangeLog$ GNU\\sDistribution\\sChangeLog\\sFile",
2862 " keyword \\s+() brightmagenta/23",
2863 " keyword \\t+() brightmagenta/23",
2865 "context linestart \\t\\* : brightcyan/17",
2866 "context linestart \\s\\s\\s\\s\\s\\s\\s\\s\\* : brightcyan/17",
2868 "context linestart 19+-+\\s \\n yellow/24",
2869 " keyword <+@+> brightred/19",
2870 "context linestart 20+-+\\s \\n yellow/24",
2871 " keyword <+@+> brightred/19",
2872 "context linestart Mon\\s+\\s+\\s+\\s \\n yellow/24",
2873 " keyword <+@+> brightred/19",
2874 "context linestart Tue\\s+\\s+\\s+\\s \\n yellow/24",
2875 " keyword <+@+> brightred/19",
2876 "context linestart Wed\\s+\\s+\\s+\\s \\n yellow/24",
2877 " keyword <+@+> brightred/19",
2878 "context linestart Thu\\s+\\s+\\s+\\s \\n yellow/24",
2879 " keyword <+@+> brightred/19",
2880 "context linestart Fri\\s+\\s+\\s+\\s \\n yellow/24",
2881 " keyword <+@+> brightred/19",
2882 "context linestart Sat\\s+\\s+\\s+\\s \\n yellow/24",
2883 " keyword <+@+> brightred/19",
2884 "context linestart Sun\\s+\\s+\\s+\\s \\n yellow/24",
2885 " keyword <+@+> brightred/19",
2888 "###############################################################################",
2889 "file .\\*Makefile[\\\\\\.a-z]\\*$ Makefile",
2892 " keyword $(*) yellow/24",
2893 " keyword ${*} brightgreen/16",
2894 " keyword whole linestart include magenta",
2895 " keyword whole linestart endif magenta",
2896 " keyword whole linestart ifeq magenta",
2897 " keyword whole linestart ifneq magenta",
2898 " keyword whole linestart else magenta",
2899 " keyword linestart \\t lightgray/13 red",
2900 " keyword whole .PHONY white/25",
2901 " keyword whole .NOEXPORT white/25",
2902 " keyword = white/25",
2903 " keyword : yellow/24",
2904 " keyword \\\\\\n yellow/24",
2905 "# this handles strange cases like @something@@somethingelse@ properly",
2906 " keyword whole @+@ brightmagenta/23 black/0",
2907 " keyword @+@ brightmagenta/23 black/0",
2909 "context linestart # \\n brown/22",
2910 " keyword whole @+@ brightmagenta/23 black/0",
2911 " keyword @+@ brightmagenta/23 black/0",
2913 "context exclusive = \\n brightcyan/17",
2914 " keyword \\\\\\n yellow/24",
2915 " keyword $(*) yellow/24",
2916 " keyword ${*} brightgreen/16",
2917 " keyword linestart \\t lightgray/13 red",
2918 " keyword whole @+@ brightmagenta/23 black/0",
2919 " keyword @+@ brightmagenta/23 black/0",
2921 "context exclusive linestart \\t \\n",
2922 " keyword \\\\\\n yellow/24",
2923 " keyword $(*) yellow/24",
2924 " keyword ${*} brightgreen/16",
2925 " keyword linestart \\t lightgray/13 red",
2926 " keyword whole @+@ brightmagenta/23 black/0",
2927 " keyword @+@ brightmagenta/23 black/0",
2929 "###############################################################################",
2931 "file .\\*syntax$ Syntax\\sHighlighting\\sdefinitions",
2934 " keyword whole keyw\\ord yellow/24",
2935 " keyword whole whole\\[\\t\\s\\]l\\inestart brightcyan/17",
2936 " keyword whole whole\\[\\t\\s\\]l\\inestart brightcyan/17",
2937 " keyword whole wh\\oleleft\\[\\t\\s\\]l\\inestart brightcyan/17",
2938 " keyword whole wh\\oleright\\[\\t\\s\\]l\\inestart brightcyan/17",
2939 " keyword whole l\\inestart\\[\\t\\s\\]wh\\ole",
2940 " keyword whole l\\inestart\\[\\t\\s\\]wh\\ole",
2941 " keyword whole l\\inestart\\[\\t\\s\\]wh\\oleleft",
2942 " keyword whole l\\inestart\\[\\t\\s\\]wh\\oleright",
2943 " keyword wholeleft whole\\s brightcyan/17",
2944 " keyword wholeleft whole\\t brightcyan/17",
2945 " keyword whole wh\\oleleft brightcyan/17",
2946 " keyword whole wh\\oleright brightcyan/17",
2947 " keyword whole lin\\[e\\]start brightcyan/17",
2948 " keyword whole c\\ontext\\[\\t\\s\\]exclusive brightred/18",
2949 " keyword whole c\\ontext\\[\\t\\s\\]default brightred/18",
2950 " keyword whole c\\ontext brightred/18",
2951 " keyword whole wh\\olechars\\[\\t\\s\\]left brightcyan/17",
2952 " keyword whole wh\\olechars\\[\\t\\s\\]right brightcyan/17",
2953 " keyword whole wh\\olechars brightcyan/17",
2954 " keyword whole f\\ile brightgreen/6",
2956 " keyword whole 0 lightgray/0 blue/26",
2957 " keyword whole 1 lightgray/1 blue/26",
2958 " keyword whole 2 lightgray/2 blue/26",
2959 " keyword whole 3 lightgray/3 blue/26",
2960 " keyword whole 4 lightgray/4 blue/26",
2961 " keyword whole 5 lightgray/5 blue/26",
2962 " keyword whole 6 lightgray/6",
2963 " keyword whole 7 lightgray/7",
2964 " keyword whole 8 lightgray/8",
2965 " keyword whole 9 lightgray/9",
2966 " keyword whole 10 lightgray/10",
2967 " keyword whole 11 lightgray/11",
2968 " keyword whole 12 lightgray/12",
2969 " keyword whole 13 lightgray/13",
2970 " keyword whole 14 lightgray/14",
2971 " keyword whole 15 lightgray/15",
2972 " keyword whole 16 lightgray/16",
2973 " keyword whole 17 lightgray/17",
2974 " keyword whole 18 lightgray/18",
2975 " keyword whole 19 lightgray/19",
2976 " keyword whole 20 lightgray/20",
2977 " keyword whole 21 lightgray/21",
2978 " keyword whole 22 lightgray/22",
2979 " keyword whole 23 lightgray/23",
2980 " keyword whole 24 lightgray/24",
2981 " keyword whole 25 lightgray/25",
2982 " keyword whole 26 lightgray/26",
2984 " keyword wholeleft black\\/ black/0",
2985 " keyword wholeleft red\\/ red/DarkRed",
2986 " keyword wholeleft green\\/ green/green3",
2987 " keyword wholeleft brown\\/ brown/saddlebrown",
2988 " keyword wholeleft blue\\/ blue/blue3",
2989 " keyword wholeleft magenta\\/ magenta/magenta3",
2990 " keyword wholeleft cyan\\/ cyan/cyan3",
2991 " keyword wholeleft lightgray\\/ lightgray/lightgray",
2992 " keyword wholeleft gray\\/ gray/gray",
2993 " keyword wholeleft brightred\\/ brightred/red",
2994 " keyword wholeleft brightgreen\\/ brightgreen/green1",
2995 " keyword wholeleft yellow\\/ yellow/yellow",
2996 " keyword wholeleft brightblue\\/ brightblue/blue1",
2997 " keyword wholeleft brightmagenta\\/ brightmagenta/magenta",
2998 " keyword wholeleft brightcyan\\/ brightcyan/cyan1",
2999 " keyword wholeleft white\\/ white/26",
3001 "context linestart # \\n brown/22",
3003 "file \\.\\* Help\\ssupport\\sother\\sfile\\stypes",
3005 "file \\.\\* by\\scoding\\srules\\sin\\s~/.cedit/syntax.",
3007 "file \\.\\* See\\sman/syntax\\sin\\sthe\\ssource\\sdistribution",
3009 "file \\.\\* and\\sconsult\\sthe\\sman\\spage.",
3015 FILE *upgrade_syntax_file (char *syntax_file
)
3019 f
= fopen (syntax_file
, "r");
3022 f
= fopen (syntax_file
, "w");
3025 for (syntax_line
= syntax_text
; *syntax_line
; syntax_line
++)
3026 fprintf (f
, "%s\n", *syntax_line
);
3028 return fopen (syntax_file
, "r");
3030 memset (line
, 0, 79);
3031 fread (line
, 80, 1, f
);
3032 if (!strstr (line
, "syntax rules version")) {
3033 goto rename_rule_file
;
3036 p
= strstr (line
, "version") + strlen ("version") + 1;
3037 if (atoi (p
) < atoi (CURRENT_SYNTAX_RULES_VERSION
)) {
3040 strcpy (s
, syntax_file
);
3043 rename (syntax_file
, s
);
3044 unlink (syntax_file
); /* might rename() fail ? */
3045 #if defined(MIDNIGHT) || defined(GTK)
3046 edit_message_dialog (" Load Syntax Rules ", " Your syntax rule file is outdated \n A new rule file is being installed. \n Your old rule file has been saved with a .OLD extension. ");
3048 CMessageDialog (0, 20, 20, 0, " Load Syntax Rules ", " Your syntax rule file is outdated \n A new rule file is being installed. \n Your old rule file has been saved with a .OLD extension. ");
3050 return upgrade_syntax_file (syntax_file
);
3056 return 0; /* not reached */
3059 /* returns -1 on file error, line number on error in file syntax */
3060 static int edit_read_syntax_file (WEdit
* edit
, char **names
, char *syntax_file
, char *editor_file
, char *first_line
, char *type
)
3064 regmatch_t pmatch
[1];
3065 char *args
[1024], *l
;
3071 f
= upgrade_syntax_file (syntax_file
);
3078 if (!read_one_line (&l
, f
))
3080 get_args (l
, args
, &argc
);
3082 } else if (!strcmp (args
[0], "file")) {
3083 if (!args
[1] || !args
[2]) {
3087 if (regcomp (&r
, args
[1], REG_EXTENDED
)) {
3091 if (regcomp (&r2
, args
[3] ? args
[3] : "^nEvEr MaTcH aNyThInG$", REG_EXTENDED
)) {
3096 names
[count
++] = strdup (args
[2]);
3099 if (!strcmp (type
, args
[2]))
3101 } else if (editor_file
&& edit
) {
3102 if (!regexec (&r
, editor_file
, 1, pmatch
, 0) || !regexec (&r2
, first_line
, 1, pmatch
, 0)) {
3105 line_error
= edit_read_syntax_rules (edit
, f
);
3107 result
= line
+ line_error
;
3109 syntax_free (edit
->syntax_type
);
3110 edit
->syntax_type
= strdup (args
[2]);
3111 if (syntax_change_callback
)
3113 (*syntax_change_callback
) (&edit
->widget
);
3115 (*syntax_change_callback
) (edit
->widget
);
3117 /* if there are no rules then turn off syntax highlighting for speed */
3118 if (!edit
->rules
[1])
3119 if (!edit
->rules
[0]->keyword
[1])
3120 edit_free_syntax_rules (edit
);
3137 static char *get_first_editor_line (WEdit
* edit
)
3144 for (i
= 0; i
< 255; i
++) {
3145 s
[i
] = edit_get_byte (edit
, i
);
3155 /* loads rules into edit struct. one of edit or names must be zero. if
3156 edit is zero, a list of types will be stored into name. type may be zero
3157 in which case the type will be selected according to the filename. */
3158 void edit_load_syntax (WEdit
* edit
, char **names
, char *type
)
3163 edit_free_syntax_rules (edit
);
3166 if (!SLtt_Use_Ansi_Colors
|| !use_colors
)
3171 if (!edit
->filename
)
3173 if (!*edit
->filename
&& !type
)
3176 f
= catstrs (home_dir
, SYNTAX_FILE
, 0);
3177 r
= edit_read_syntax_file (edit
, names
, f
, edit
? edit
->filename
: 0, get_first_editor_line (edit
), type
);
3179 edit_free_syntax_rules (edit
);
3180 edit_error_dialog (_ (" Load syntax file "), _ (" File access error "));
3185 edit_free_syntax_rules (edit
);
3186 sprintf (s
, _ (" Syntax error in file %s on line %d "), f
, r
);
3187 edit_error_dialog (_ (" Load syntax file "), s
);
3194 int option_syntax_highlighting
= 0;
3196 void edit_load_syntax (WEdit
* edit
, char **names
, char *type
)
3201 void edit_free_syntax_rules (WEdit
* edit
)
3206 void edit_get_syntax_color (WEdit
* edit
, long byte_index
, int *fg
, int *bg
)
3211 #endif /* !defined(MIDNIGHT) || defined(HAVE_SYNTAXH) */