2 * highlighting.c - this file is part of Geany, a fast and lightweight IDE
4 * Copyright 2005-2011 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5 * Copyright 2006-2011 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 * @file highlighting.h
24 * Syntax highlighting for the different filetypes, using the Scintilla lexers.
34 #include "highlighting.h"
37 #include "filetypes.h"
43 #include "sciwrappers.h"
46 #define GEANY_COLORSCHEMES_SUBDIR "colorschemes"
48 /* Whitespace has to be set after setting wordchars. */
49 #define GEANY_WHITESPACE_CHARS " \t" "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~"
52 static gchar
*whitespace_chars
;
55 static void styleset_markup(ScintillaObject
*sci
, gboolean set_keywords
);
60 gsize count
; /* number of styles */
61 GeanyLexerStyle
*styling
; /* array of styles, NULL if not used or uninitialised */
63 gchar
*wordchars
; /* NULL used for style sets with no styles */
64 gchar
**property_keys
;
65 gchar
**property_values
;
68 /* each filetype has a styleset but GEANY_FILETYPES_NONE uses common_style_set for styling */
69 static StyleSet
*style_sets
= NULL
;
72 enum /* Geany common styling */
78 GCS_MARGIN_LINENUMBER
,
80 GCS_FOLD_SYMBOL_HIGHLIGHT
,
85 GCS_LINE_WRAP_VISUALS
,
91 GCS_MARKER_TRANSLUCENCY
,
99 GeanyLexerStyle styling
[GCS_MAX
];
101 /* icon style, 1-4 */
103 /* vertical line style, 0-2 */
105 /* horizontal line when folded, 0-2 */
112 /* For filetypes.common [named_styles] section.
114 * e.g. "comment" => &GeanyLexerStyle{0x0000d0, 0xffffff, FALSE, FALSE} */
115 static GHashTable
*named_style_hash
= NULL
;
117 /* 0xBBGGRR format, set by "default" named style. */
118 static GeanyLexerStyle gsd_default
= {0x000000, 0xffffff, FALSE
, FALSE
};
121 /* Note: use sciwrappers.h instead where possible.
122 * Do not use SSM in files unrelated to scintilla. */
123 #define SSM(s, m, w, l) scintilla_send_message(s, m, w, l)
125 /* filetypes should use the filetypes.foo [lexer_properties] group instead of hardcoding */
126 static void sci_set_property(ScintillaObject
*sci
, const gchar
*name
, const gchar
*value
)
128 SSM(sci
, SCI_SETPROPERTY
, (uptr_t
) name
, (sptr_t
) value
);
132 static void new_styleset(gint file_type_id
, gint styling_count
)
134 StyleSet
*set
= &style_sets
[file_type_id
];
136 set
->count
= styling_count
;
137 set
->styling
= g_new0(GeanyLexerStyle
, styling_count
);
141 static void free_styleset(gint file_type_id
)
144 style_ptr
= &style_sets
[file_type_id
];
146 style_ptr
->count
= 0;
147 g_free(style_ptr
->styling
);
148 style_ptr
->styling
= NULL
;
149 g_strfreev(style_ptr
->keywords
);
150 style_ptr
->keywords
= NULL
;
151 g_free(style_ptr
->wordchars
);
152 style_ptr
->wordchars
= NULL
;
153 g_strfreev(style_ptr
->property_keys
);
154 style_ptr
->property_keys
= NULL
;
155 g_strfreev(style_ptr
->property_values
);
156 style_ptr
->property_values
= NULL
;
160 static void get_keyfile_keywords(GKeyFile
*config
, GKeyFile
*configh
,
161 const gchar
*key
, gint ft_id
, gint pos
)
163 style_sets
[ft_id
].keywords
[pos
] =
164 utils_get_setting(string
, configh
, config
, "keywords", key
, "");
168 static void get_keyfile_wordchars(GKeyFile
*config
, GKeyFile
*configh
, gchar
**wordchars
)
170 *wordchars
= utils_get_setting(string
, configh
, config
,
171 "settings", "wordchars", GEANY_WORDCHARS
);
175 static gboolean
read_named_style(const gchar
*named_style
, GeanyLexerStyle
*style
)
178 gchar
*comma
, *name
= NULL
;
179 const gchar
*bold
= NULL
;
180 const gchar
*italic
= NULL
;
182 g_return_val_if_fail(named_style
, FALSE
);
183 name
= utils_strdupa(named_style
); /* named_style must not be written to, may be a static string */
185 comma
= strstr(name
, ",");
188 bold
= strstr(comma
, ",bold");
189 italic
= strstr(comma
, ",italic");
190 *comma
= '\0'; /* terminate name to make lookup work */
192 cs
= g_hash_table_lookup(named_style_hash
, name
);
198 style
->bold
= !style
->bold
;
200 style
->italic
= !style
->italic
;
204 *style
= gsd_default
;
210 static void parse_color(const gchar
*str
, gint
*clr
)
214 /* ignore empty strings */
215 if (G_UNLIKELY(! NZV(str
)))
218 c
= utils_strtod(str
, NULL
, FALSE
);
224 geany_debug("Bad color '%s'", str
);
228 static void parse_keyfile_style(gchar
**list
,
229 const GeanyLexerStyle
*default_style
, GeanyLexerStyle
*style
)
234 g_return_if_fail(default_style
);
235 g_return_if_fail(style
);
237 *style
= *default_style
;
242 len
= g_strv_length(list
);
245 if (len
== 1 && isalpha(str
[0]))
247 if (!read_named_style(str
, style
))
249 "No named style '%s'! Check filetype styles or %s color scheme.",
250 str
, NVL(editor_prefs
.color_scheme
, "filetypes.common"));
257 style
->italic
= utils_atob(list
[3]);
259 style
->bold
= utils_atob(list
[2]);
261 parse_color(list
[1], &style
->background
);
263 parse_color(list
[0], &style
->foreground
);
269 static void get_keyfile_style(GKeyFile
*config
, GKeyFile
*configh
,
270 const gchar
*key_name
, GeanyLexerStyle
*style
)
275 g_return_if_fail(config
);
276 g_return_if_fail(configh
);
277 g_return_if_fail(key_name
);
278 g_return_if_fail(style
);
280 list
= g_key_file_get_string_list(configh
, "styling", key_name
, &len
, NULL
);
282 list
= g_key_file_get_string_list(config
, "styling", key_name
, &len
, NULL
);
284 parse_keyfile_style(list
, &gsd_default
, style
);
289 /* Convert 0xRRGGBB to 0xBBGGRR, which scintilla expects. */
290 static gint
rotate_rgb(gint color
)
292 return ((color
& 0xFF0000) >> 16) +
294 ((color
& 0x0000FF) << 16);
298 static void convert_int(const gchar
*int_str
, gint
*val
)
301 gint v
= strtol(int_str
, &end
, 10);
308 /* Get first and second integer numbers, store in foreground and background fields of @a style. */
309 static void get_keyfile_int(GKeyFile
*config
, GKeyFile
*configh
, const gchar
*section
,
310 const gchar
*key
, gint fdefault_val
, gint sdefault_val
,
311 GeanyLexerStyle
*style
)
315 GeanyLexerStyle def
= {fdefault_val
, sdefault_val
, FALSE
, FALSE
};
317 g_return_if_fail(config
);
318 g_return_if_fail(configh
);
319 g_return_if_fail(section
);
320 g_return_if_fail(key
);
322 list
= g_key_file_get_string_list(configh
, section
, key
, &len
, NULL
);
324 list
= g_key_file_get_string_list(config
, section
, key
, &len
, NULL
);
332 convert_int(list
[0], &style
->foreground
);
335 convert_int(list
[1], &style
->background
);
342 /* first or second can be NULL. */
343 static void get_keyfile_ints(GKeyFile
*config
, GKeyFile
*configh
, const gchar
*section
,
345 gint fdefault_val
, gint sdefault_val
,
346 gint
*first
, gint
*second
)
348 GeanyLexerStyle tmp_style
;
350 get_keyfile_int(config
, configh
, section
, key
, fdefault_val
, sdefault_val
, &tmp_style
);
352 *first
= tmp_style
.foreground
;
354 *second
= tmp_style
.background
;
358 static guint
invert(guint icolour
)
360 if (interface_prefs
.highlighting_invert_all
)
361 return utils_invert_color(icolour
);
367 static GeanyLexerStyle
*get_style(guint ft_id
, guint styling_index
)
369 g_assert(ft_id
< filetypes_array
->len
);
371 if (G_UNLIKELY(ft_id
== GEANY_FILETYPES_NONE
))
373 g_assert(styling_index
< GCS_MAX
);
374 return &common_style_set
.styling
[styling_index
];
378 StyleSet
*set
= &style_sets
[ft_id
];
380 g_assert(styling_index
< set
->count
);
381 return &set
->styling
[styling_index
];
386 static void set_sci_style(ScintillaObject
*sci
, gint style
, guint ft_id
, guint styling_index
)
388 GeanyLexerStyle
*style_ptr
= get_style(ft_id
, styling_index
);
390 SSM(sci
, SCI_STYLESETFORE
, style
, invert(style_ptr
->foreground
));
391 SSM(sci
, SCI_STYLESETBACK
, style
, invert(style_ptr
->background
));
392 SSM(sci
, SCI_STYLESETBOLD
, style
, style_ptr
->bold
);
393 SSM(sci
, SCI_STYLESETITALIC
, style
, style_ptr
->italic
);
397 void highlighting_free_styles()
401 for (i
= 0; i
< filetypes_array
->len
; i
++)
404 if (named_style_hash
)
405 g_hash_table_destroy(named_style_hash
);
411 static GString
*get_global_typenames(gint lang
)
415 if (app
->tm_workspace
)
417 GPtrArray
*tags_array
= app
->tm_workspace
->global_tags
;
421 s
= symbols_find_tags_as_string(tags_array
, TM_GLOBAL_TYPE_MASK
, lang
);
429 get_keyfile_whitespace_chars(GKeyFile
*config
, GKeyFile
*configh
)
431 return utils_get_setting(string
, configh
, config
,
432 "settings", "whitespace_chars", GEANY_WHITESPACE_CHARS
);
436 static void add_named_style(GKeyFile
*config
, const gchar
*key
)
438 const gchar group
[] = "named_styles";
442 list
= g_key_file_get_string_list(config
, group
, key
, &len
, NULL
);
443 /* we allow a named style to reference another style above it */
444 if (list
&& len
>= 1)
446 GeanyLexerStyle
*style
= g_new0(GeanyLexerStyle
, 1);
448 parse_keyfile_style(list
, &gsd_default
, style
);
449 g_hash_table_insert(named_style_hash
, g_strdup(key
), style
);
455 static void get_named_styles(GKeyFile
*config
)
457 const gchar group
[] = "named_styles";
458 gchar
**keys
= g_key_file_get_keys(config
, group
, NULL
, NULL
);
466 const gchar
*key
= *ptr
;
471 /* don't replace already read default style with system one */
472 if (!g_str_equal(key
, "default"))
473 add_named_style(config
, key
);
481 static GKeyFile
*utils_key_file_new(const gchar
*filename
)
483 GKeyFile
*config
= g_key_file_new();
485 g_key_file_load_from_file(config
, filename
, G_KEY_FILE_KEEP_COMMENTS
, NULL
);
490 static void load_named_styles(GKeyFile
*config
, GKeyFile
*config_home
)
492 const gchar
*scheme
= editor_prefs
.color_scheme
;
493 gboolean free_kf
= FALSE
;
495 if (named_style_hash
)
496 g_hash_table_destroy(named_style_hash
); /* reloading */
498 named_style_hash
= g_hash_table_new_full(g_str_hash
, g_str_equal
, g_free
, g_free
);
502 gchar
*path
, *path_home
;
504 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->datadir
, GEANY_COLORSCHEMES_SUBDIR
, scheme
, NULL
);
505 path_home
= g_build_path(G_DIR_SEPARATOR_S
, app
->configdir
, GEANY_COLORSCHEMES_SUBDIR
, scheme
, NULL
);
507 if (g_file_test(path
, G_FILE_TEST_EXISTS
) || g_file_test(path_home
, G_FILE_TEST_EXISTS
))
509 config
= utils_key_file_new(path
);
510 config_home
= utils_key_file_new(path_home
);
513 /* if color scheme is missing, use default */
517 /* first set default to the "default" named style */
518 add_named_style(config
, "default");
519 read_named_style("default", &gsd_default
); /* in case user overrides but not with both colors */
520 add_named_style(config_home
, "default");
521 read_named_style("default", &gsd_default
);
523 get_named_styles(config
);
524 /* home overrides any system named style */
525 get_named_styles(config_home
);
529 g_key_file_free(config
);
530 g_key_file_free(config_home
);
535 static void styleset_common_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
537 load_named_styles(config
, config_home
);
539 get_keyfile_style(config
, config_home
, "default", &common_style_set
.styling
[GCS_DEFAULT
]);
540 get_keyfile_style(config
, config_home
, "selection", &common_style_set
.styling
[GCS_SELECTION
]);
541 get_keyfile_style(config
, config_home
, "brace_good", &common_style_set
.styling
[GCS_BRACE_GOOD
]);
542 get_keyfile_style(config
, config_home
, "brace_bad", &common_style_set
.styling
[GCS_BRACE_BAD
]);
543 get_keyfile_style(config
, config_home
, "margin_linenumber", &common_style_set
.styling
[GCS_MARGIN_LINENUMBER
]);
544 get_keyfile_style(config
, config_home
, "margin_folding", &common_style_set
.styling
[GCS_MARGIN_FOLDING
]);
545 get_keyfile_style(config
, config_home
, "fold_symbol_highlight", &common_style_set
.styling
[GCS_FOLD_SYMBOL_HIGHLIGHT
]);
546 get_keyfile_style(config
, config_home
, "current_line", &common_style_set
.styling
[GCS_CURRENT_LINE
]);
547 get_keyfile_style(config
, config_home
, "caret", &common_style_set
.styling
[GCS_CARET
]);
548 get_keyfile_style(config
, config_home
, "indent_guide", &common_style_set
.styling
[GCS_INDENT_GUIDE
]);
549 get_keyfile_style(config
, config_home
, "white_space", &common_style_set
.styling
[GCS_WHITE_SPACE
]);
550 get_keyfile_style(config
, config_home
, "marker_line", &common_style_set
.styling
[GCS_MARKER_LINE
]);
551 get_keyfile_style(config
, config_home
, "marker_search", &common_style_set
.styling
[GCS_MARKER_SEARCH
]);
552 get_keyfile_style(config
, config_home
, "marker_mark", &common_style_set
.styling
[GCS_MARKER_MARK
]);
553 get_keyfile_style(config
, config_home
, "calltips", &common_style_set
.styling
[GCS_CALLTIPS
]);
555 get_keyfile_ints(config
, config_home
, "styling", "folding_style",
556 1, 1, &common_style_set
.fold_marker
, &common_style_set
.fold_lines
);
557 get_keyfile_ints(config
, config_home
, "styling", "folding_horiz_line",
558 2, 0, &common_style_set
.fold_draw_line
, NULL
);
559 get_keyfile_ints(config
, config_home
, "styling", "caret_width",
560 1, 0, &common_style_set
.styling
[GCS_CARET
].background
, NULL
); /* caret.foreground used earlier */
561 get_keyfile_int(config
, config_home
, "styling", "line_wrap_visuals",
562 3, 0, &common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
]);
563 get_keyfile_int(config
, config_home
, "styling", "line_wrap_indent",
564 0, 0, &common_style_set
.styling
[GCS_LINE_WRAP_INDENT
]);
565 get_keyfile_int(config
, config_home
, "styling", "translucency",
566 256, 256, &common_style_set
.styling
[GCS_TRANSLUCENCY
]);
567 get_keyfile_int(config
, config_home
, "styling", "marker_translucency",
568 256, 256, &common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
]);
569 get_keyfile_int(config
, config_home
, "styling", "line_height",
570 0, 0, &common_style_set
.styling
[GCS_LINE_HEIGHT
]);
572 get_keyfile_wordchars(config
, config_home
, &common_style_set
.wordchars
);
573 whitespace_chars
= get_keyfile_whitespace_chars(config
, config_home
);
577 static void styleset_common(ScintillaObject
*sci
, filetype_id ft_id
)
579 SSM(sci
, SCI_STYLECLEARALL
, 0, 0);
581 SSM(sci
, SCI_SETWORDCHARS
, 0, (sptr_t
) (ft_id
== GEANY_FILETYPES_NONE
?
582 common_style_set
.wordchars
: style_sets
[ft_id
].wordchars
));
583 /* have to set whitespace after setting wordchars */
584 SSM(sci
, SCI_SETWHITESPACECHARS
, 0, (sptr_t
) whitespace_chars
);
586 /* caret colour, style and width */
587 SSM(sci
, SCI_SETCARETFORE
, invert(common_style_set
.styling
[GCS_CARET
].foreground
), 0);
588 SSM(sci
, SCI_SETCARETWIDTH
, common_style_set
.styling
[GCS_CARET
].background
, 0);
589 if (common_style_set
.styling
[GCS_CARET
].bold
)
590 SSM(sci
, SCI_SETCARETSTYLE
, CARETSTYLE_BLOCK
, 0);
592 SSM(sci
, SCI_SETCARETSTYLE
, CARETSTYLE_LINE
, 0);
595 SSM(sci
, SCI_SETEXTRAASCENT
, common_style_set
.styling
[GCS_LINE_HEIGHT
].foreground
, 0);
596 SSM(sci
, SCI_SETEXTRADESCENT
, common_style_set
.styling
[GCS_LINE_HEIGHT
].background
, 0);
598 /* colourise the current line */
599 SSM(sci
, SCI_SETCARETLINEBACK
, invert(common_style_set
.styling
[GCS_CURRENT_LINE
].background
), 0);
600 /* bold=enable current line */
601 SSM(sci
, SCI_SETCARETLINEVISIBLE
, common_style_set
.styling
[GCS_CURRENT_LINE
].bold
, 0);
603 /* Translucency for current line and selection */
604 SSM(sci
, SCI_SETCARETLINEBACKALPHA
, common_style_set
.styling
[GCS_TRANSLUCENCY
].foreground
, 0);
605 SSM(sci
, SCI_SETSELALPHA
, common_style_set
.styling
[GCS_TRANSLUCENCY
].background
, 0);
607 /* line wrapping visuals */
608 SSM(sci
, SCI_SETWRAPVISUALFLAGS
,
609 common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
].foreground
, 0);
610 SSM(sci
, SCI_SETWRAPVISUALFLAGSLOCATION
,
611 common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
].background
, 0);
612 SSM(sci
, SCI_SETWRAPSTARTINDENT
, common_style_set
.styling
[GCS_LINE_WRAP_INDENT
].foreground
, 0);
613 SSM(sci
, SCI_SETWRAPINDENTMODE
, common_style_set
.styling
[GCS_LINE_WRAP_INDENT
].background
, 0);
615 /* Error indicator */
616 SSM(sci
, SCI_INDICSETSTYLE
, GEANY_INDICATOR_ERROR
, INDIC_SQUIGGLE
);
617 SSM(sci
, SCI_INDICSETFORE
, GEANY_INDICATOR_ERROR
, invert(rotate_rgb(0xff0000)));
619 /* Search indicator, used for 'Mark' matches */
620 SSM(sci
, SCI_INDICSETSTYLE
, GEANY_INDICATOR_SEARCH
, INDIC_ROUNDBOX
);
621 SSM(sci
, SCI_INDICSETFORE
, GEANY_INDICATOR_SEARCH
,
622 invert(common_style_set
.styling
[GCS_MARKER_SEARCH
].background
));
623 SSM(sci
, SCI_INDICSETALPHA
, GEANY_INDICATOR_SEARCH
, 60);
625 /* define marker symbols
626 * 0 -> line marker */
627 SSM(sci
, SCI_MARKERDEFINE
, 0, SC_MARK_SHORTARROW
);
628 SSM(sci
, SCI_MARKERSETFORE
, 0, invert(common_style_set
.styling
[GCS_MARKER_LINE
].foreground
));
629 SSM(sci
, SCI_MARKERSETBACK
, 0, invert(common_style_set
.styling
[GCS_MARKER_LINE
].background
));
630 SSM(sci
, SCI_MARKERSETALPHA
, 0, common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
].foreground
);
632 /* 1 -> user marker */
633 SSM(sci
, SCI_MARKERDEFINE
, 1, SC_MARK_PLUS
);
634 SSM(sci
, SCI_MARKERSETFORE
, 1, invert(common_style_set
.styling
[GCS_MARKER_MARK
].foreground
));
635 SSM(sci
, SCI_MARKERSETBACK
, 1, invert(common_style_set
.styling
[GCS_MARKER_MARK
].background
));
636 SSM(sci
, SCI_MARKERSETALPHA
, 1, common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
].background
);
638 /* 2 -> folding marker, other folding settings */
639 SSM(sci
, SCI_SETMARGINTYPEN
, 2, SC_MARGIN_SYMBOL
);
640 SSM(sci
, SCI_SETMARGINMASKN
, 2, SC_MASK_FOLDERS
);
642 /* drawing a horizontal line when text if folded */
643 switch (common_style_set
.fold_draw_line
)
647 SSM(sci
, SCI_SETFOLDFLAGS
, 4, 0);
652 SSM(sci
, SCI_SETFOLDFLAGS
, 16, 0);
657 SSM(sci
, SCI_SETFOLDFLAGS
, 0, 0);
662 /* choose the folding style - boxes or circles, I prefer boxes, so it is default ;-) */
663 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_EMPTY
);
664 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_EMPTY
);
665 switch (common_style_set
.fold_marker
)
668 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_CIRCLEMINUS
);
669 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_CIRCLEPLUS
);
670 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_CIRCLEPLUSCONNECTED
);
671 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_CIRCLEMINUSCONNECTED
);
674 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_BOXMINUS
);
675 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_BOXPLUS
);
676 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_BOXPLUSCONNECTED
);
677 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_BOXMINUSCONNECTED
);
680 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_ARROWDOWN
);
681 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_ARROW
);
684 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_MINUS
);
685 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_PLUS
);
689 /* choose the folding style - straight or curved, I prefer straight, so it is default ;-) */
690 switch (common_style_set
.fold_lines
)
693 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_TCORNERCURVE
);
694 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_LCORNERCURVE
);
695 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_VLINE
);
698 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_TCORNER
);
699 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_LCORNER
);
700 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_VLINE
);
703 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_EMPTY
);
704 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_EMPTY
);
705 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_EMPTY
);
710 SC_MARKNUM_FOLDEROPEN
,
712 SC_MARKNUM_FOLDERSUB
,
713 SC_MARKNUM_FOLDERTAIL
,
714 SC_MARKNUM_FOLDEREND
,
715 SC_MARKNUM_FOLDEROPENMID
,
716 SC_MARKNUM_FOLDERMIDTAIL
720 foreach_range(i
, G_N_ELEMENTS(markers
))
722 SSM(sci
, SCI_MARKERSETFORE
, markers
[i
],
723 invert(common_style_set
.styling
[GCS_FOLD_SYMBOL_HIGHLIGHT
].foreground
));
724 SSM(sci
, SCI_MARKERSETBACK
, markers
[i
],
725 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
729 /* set some common defaults */
730 sci_set_property(sci
, "fold", "1");
731 sci_set_property(sci
, "fold.compact", "0");
732 sci_set_property(sci
, "fold.comment", "1");
733 sci_set_property(sci
, "fold.preprocessor", "1");
734 sci_set_property(sci
, "fold.at.else", "1");
736 /* bold (3rd argument) is whether to override default foreground selection */
737 if (common_style_set
.styling
[GCS_SELECTION
].bold
)
738 SSM(sci
, SCI_SETSELFORE
, 1, invert(common_style_set
.styling
[GCS_SELECTION
].foreground
));
739 /* italic (4th argument) is whether to override default background selection */
740 if (common_style_set
.styling
[GCS_SELECTION
].italic
)
741 SSM(sci
, SCI_SETSELBACK
, 1, invert(common_style_set
.styling
[GCS_SELECTION
].background
));
743 SSM(sci
, SCI_SETSTYLEBITS
, SSM(sci
, SCI_GETSTYLEBITSNEEDED
, 0, 0), 0);
745 SSM(sci
, SCI_SETFOLDMARGINCOLOUR
, 1, invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
746 SSM(sci
, SCI_SETFOLDMARGINHICOLOUR
, 1, invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
747 set_sci_style(sci
, STYLE_LINENUMBER
, GEANY_FILETYPES_NONE
, GCS_MARGIN_LINENUMBER
);
748 set_sci_style(sci
, STYLE_BRACELIGHT
, GEANY_FILETYPES_NONE
, GCS_BRACE_GOOD
);
749 set_sci_style(sci
, STYLE_BRACEBAD
, GEANY_FILETYPES_NONE
, GCS_BRACE_BAD
);
750 set_sci_style(sci
, STYLE_INDENTGUIDE
, GEANY_FILETYPES_NONE
, GCS_INDENT_GUIDE
);
752 /* bold = common whitespace settings enabled */
753 SSM(sci
, SCI_SETWHITESPACEFORE
, common_style_set
.styling
[GCS_WHITE_SPACE
].bold
,
754 invert(common_style_set
.styling
[GCS_WHITE_SPACE
].foreground
));
755 SSM(sci
, SCI_SETWHITESPACEBACK
, common_style_set
.styling
[GCS_WHITE_SPACE
].italic
,
756 invert(common_style_set
.styling
[GCS_WHITE_SPACE
].background
));
758 if (common_style_set
.styling
[GCS_CALLTIPS
].bold
)
759 SSM(sci
, SCI_CALLTIPSETFORE
, invert(common_style_set
.styling
[GCS_CALLTIPS
].foreground
), 1);
760 if (common_style_set
.styling
[GCS_CALLTIPS
].italic
)
761 SSM(sci
, SCI_CALLTIPSETBACK
, invert(common_style_set
.styling
[GCS_CALLTIPS
].background
), 1);
765 /* Merge & assign global typedefs and user secondary keywords.
766 * keyword_idx is used for both style_sets[].keywords and scintilla keyword style number */
767 static void merge_type_keywords(ScintillaObject
*sci
, gint ft_id
, gint keyword_idx
)
769 const gchar
*user_words
= style_sets
[ft_id
].keywords
[keyword_idx
];
772 s
= get_global_typenames(filetypes
[ft_id
]->lang
);
773 if (G_UNLIKELY(s
== NULL
))
774 s
= g_string_sized_new(200);
776 g_string_append_c(s
, ' '); /* append a space as delimiter to the existing list of words */
778 g_string_append(s
, user_words
);
780 sci_set_keywords(sci
, keyword_idx
, s
->str
);
781 g_string_free(s
, TRUE
);
785 /* All stylesets except None should call this. */
787 apply_filetype_properties(ScintillaObject
*sci
, gint lexer
, filetype_id ft_id
)
789 g_assert(ft_id
!= GEANY_FILETYPES_NONE
);
791 SSM(sci
, SCI_SETLEXER
, lexer
, 0);
793 styleset_common(sci
, ft_id
);
797 /* names: the style names for the filetype. */
798 static void load_style_entries(GKeyFile
*config
, GKeyFile
*config_home
, gint filetype_idx
,
799 const gchar
**names
, gsize names_len
)
803 foreach_range(i
, names_len
)
805 const gchar
*name
= names
[i
];
806 GeanyLexerStyle
*style
= &style_sets
[filetype_idx
].styling
[i
];
808 get_keyfile_style(config
, config_home
, name
, style
);
813 /* styles: the style IDs for the filetype.
814 * STYLE_DEFAULT will be set to match the first style. */
815 static void apply_style_entries(ScintillaObject
*sci
, gint filetype_idx
,
816 gint
*styles
, gsize styles_len
)
820 g_return_if_fail(styles_len
> 0);
822 set_sci_style(sci
, STYLE_DEFAULT
, filetype_idx
, 0);
824 foreach_range(i
, styles_len
)
825 set_sci_style(sci
, styles
[i
], filetype_idx
, i
);
829 /* call new_styleset(filetype_idx, >= 20) before using this. */
831 styleset_c_like_init(GKeyFile
*config
, GKeyFile
*config_home
, gint filetype_idx
)
833 const gchar
*entries
[] =
850 "verbatim", /* triple verbatims use the same style */
854 "commentdockeyworderror",
858 new_styleset(filetype_idx
, G_N_ELEMENTS(entries
));
859 load_style_entries(config
, config_home
, filetype_idx
, entries
, G_N_ELEMENTS(entries
));
863 static void styleset_c_like(ScintillaObject
*sci
, gint ft_id
, gint lexer
)
881 SCE_C_TRIPLEVERBATIM
,
883 SCE_C_COMMENTLINEDOC
,
884 SCE_C_COMMENTDOCKEYWORD
,
885 SCE_C_COMMENTDOCKEYWORDERROR
,
886 /* used for local structs and typedefs */
890 apply_filetype_properties(sci
, lexer
, ft_id
);
891 apply_style_entries(sci
, ft_id
, styles
, G_N_ELEMENTS(styles
));
893 /* Disable explicit //{ folding as it can seem like a bug */
894 sci_set_property(sci
, "fold.cpp.comment.explicit", "0");
898 static void styleset_c_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
900 styleset_c_like_init(config
, config_home
, ft_id
);
902 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
903 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
904 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
905 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
906 style_sets
[ft_id
].keywords
[3] = NULL
;
910 static void styleset_c(ScintillaObject
*sci
, gint ft_id
)
912 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
914 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
915 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
916 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
917 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
919 /* assign global types, merge them with user defined keywords and set them */
920 merge_type_keywords(sci
, ft_id
, 1);
924 static void styleset_pascal_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
926 new_styleset(ft_id
, 15);
927 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
928 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[1]);
929 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[2]);
930 get_keyfile_style(config
, config_home
, "comment2", &style_sets
[ft_id
].styling
[3]);
931 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[4]);
932 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[5]);
933 get_keyfile_style(config
, config_home
, "preprocessor2", &style_sets
[ft_id
].styling
[6]);
934 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[7]);
935 get_keyfile_style(config
, config_home
, "hexnumber", &style_sets
[ft_id
].styling
[8]);
936 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[9]);
937 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[10]);
938 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[11]);
939 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
940 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[13]);
941 get_keyfile_style(config
, config_home
, "asm", &style_sets
[ft_id
].styling
[14]);
943 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
944 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
945 style_sets
[ft_id
].keywords
[1] = NULL
;
949 static void styleset_pascal(ScintillaObject
*sci
, gint ft_id
)
951 apply_filetype_properties(sci
, SCLEX_PASCAL
, ft_id
);
953 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
955 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
956 set_sci_style(sci
, SCE_PAS_DEFAULT
, ft_id
, 0);
957 set_sci_style(sci
, SCE_PAS_IDENTIFIER
, ft_id
, 1);
958 set_sci_style(sci
, SCE_PAS_COMMENT
, ft_id
, 2);
959 set_sci_style(sci
, SCE_PAS_COMMENT2
, ft_id
, 3);
960 set_sci_style(sci
, SCE_PAS_COMMENTLINE
, ft_id
, 4);
961 set_sci_style(sci
, SCE_PAS_PREPROCESSOR
, ft_id
, 5);
962 set_sci_style(sci
, SCE_PAS_PREPROCESSOR2
, ft_id
, 6);
963 set_sci_style(sci
, SCE_PAS_NUMBER
, ft_id
, 7);
964 set_sci_style(sci
, SCE_PAS_HEXNUMBER
, ft_id
, 8);
965 set_sci_style(sci
, SCE_PAS_WORD
, ft_id
, 9);
966 set_sci_style(sci
, SCE_PAS_STRING
, ft_id
, 10);
967 set_sci_style(sci
, SCE_PAS_STRINGEOL
, ft_id
, 11);
968 set_sci_style(sci
, SCE_PAS_CHARACTER
, ft_id
, 12);
969 set_sci_style(sci
, SCE_PAS_OPERATOR
, ft_id
, 13);
970 set_sci_style(sci
, SCE_PAS_ASM
, ft_id
, 14);
974 static void styleset_makefile_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
976 new_styleset(ft_id
, 7);
977 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
978 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
979 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[2]);
980 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[3]);
981 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
982 get_keyfile_style(config
, config_home
, "target", &style_sets
[ft_id
].styling
[5]);
983 get_keyfile_style(config
, config_home
, "ideol", &style_sets
[ft_id
].styling
[6]);
985 style_sets
[ft_id
].keywords
= NULL
;
989 static void styleset_makefile(ScintillaObject
*sci
, gint ft_id
)
991 apply_filetype_properties(sci
, SCLEX_MAKEFILE
, ft_id
);
993 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
994 set_sci_style(sci
, SCE_MAKE_DEFAULT
, ft_id
, 0);
995 set_sci_style(sci
, SCE_MAKE_COMMENT
, ft_id
, 1);
996 set_sci_style(sci
, SCE_MAKE_PREPROCESSOR
, ft_id
, 2);
997 set_sci_style(sci
, SCE_MAKE_IDENTIFIER
, ft_id
, 3);
998 set_sci_style(sci
, SCE_MAKE_OPERATOR
, ft_id
, 4);
999 set_sci_style(sci
, SCE_MAKE_TARGET
, ft_id
, 5);
1000 set_sci_style(sci
, SCE_MAKE_IDEOL
, ft_id
, 6);
1004 static void styleset_diff_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1006 new_styleset(ft_id
, 8);
1007 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1008 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1009 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[2]);
1010 get_keyfile_style(config
, config_home
, "header", &style_sets
[ft_id
].styling
[3]);
1011 get_keyfile_style(config
, config_home
, "position", &style_sets
[ft_id
].styling
[4]);
1012 get_keyfile_style(config
, config_home
, "deleted", &style_sets
[ft_id
].styling
[5]);
1013 get_keyfile_style(config
, config_home
, "added", &style_sets
[ft_id
].styling
[6]);
1014 get_keyfile_style(config
, config_home
, "changed", &style_sets
[ft_id
].styling
[7]);
1016 style_sets
[ft_id
].keywords
= NULL
;
1020 static void styleset_diff(ScintillaObject
*sci
, gint ft_id
)
1022 apply_filetype_properties(sci
, SCLEX_DIFF
, ft_id
);
1024 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1025 set_sci_style(sci
, SCE_DIFF_DEFAULT
, ft_id
, 0);
1026 set_sci_style(sci
, SCE_DIFF_COMMENT
, ft_id
, 1);
1027 set_sci_style(sci
, SCE_DIFF_COMMAND
, ft_id
, 2);
1028 set_sci_style(sci
, SCE_DIFF_HEADER
, ft_id
, 3);
1029 set_sci_style(sci
, SCE_DIFF_POSITION
, ft_id
, 4);
1030 set_sci_style(sci
, SCE_DIFF_DELETED
, ft_id
, 5);
1031 set_sci_style(sci
, SCE_DIFF_ADDED
, ft_id
, 6);
1032 set_sci_style(sci
, SCE_DIFF_CHANGED
, ft_id
, 7);
1036 static void styleset_lisp_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1038 new_styleset(ft_id
, 15);
1039 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1040 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1041 get_keyfile_style(config
, config_home
, "multicomment", &style_sets
[ft_id
].styling
[2]);
1042 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
1043 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[4]);
1044 get_keyfile_style(config
, config_home
, "special_keyword", &style_sets
[ft_id
].styling
[5]);
1045 get_keyfile_style(config
, config_home
, "symbol", &style_sets
[ft_id
].styling
[6]);
1046 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
1047 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[8]);
1048 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[9]);
1049 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
1050 get_keyfile_style(config
, config_home
, "special", &style_sets
[ft_id
].styling
[11]);
1051 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
1052 get_keyfile_style(config
, config_home
, "macro", &style_sets
[ft_id
].styling
[13]);
1053 get_keyfile_style(config
, config_home
, "macrodispatch", &style_sets
[ft_id
].styling
[14]);
1055 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
1056 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
1057 get_keyfile_keywords(config
, config_home
, "special_keywords", ft_id
, 1);
1058 style_sets
[ft_id
].keywords
[2] = NULL
;
1062 static void styleset_lisp(ScintillaObject
*sci
, gint ft_id
)
1064 apply_filetype_properties(sci
, SCLEX_LISP
, ft_id
);
1066 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1067 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1069 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1070 set_sci_style(sci
, SCE_LISP_DEFAULT
, ft_id
, 0);
1071 set_sci_style(sci
, SCE_LISP_COMMENT
, ft_id
, 1);
1072 set_sci_style(sci
, SCE_LISP_MULTI_COMMENT
, ft_id
, 2);
1073 set_sci_style(sci
, SCE_LISP_NUMBER
, ft_id
, 3);
1074 set_sci_style(sci
, SCE_LISP_KEYWORD
, ft_id
, 4);
1076 set_sci_style(sci, SCE_LISP_SPECIAL_KEYWORD, ft_id, 5);
1078 set_sci_style(sci
, SCE_LISP_SYMBOL
, ft_id
, 6);
1079 set_sci_style(sci
, SCE_LISP_STRING
, ft_id
, 7);
1080 set_sci_style(sci
, SCE_LISP_STRINGEOL
, ft_id
, 8);
1081 set_sci_style(sci
, SCE_LISP_IDENTIFIER
, ft_id
, 9);
1082 set_sci_style(sci
, SCE_LISP_OPERATOR
, ft_id
, 10);
1083 set_sci_style(sci
, SCE_LISP_SPECIAL
, ft_id
, 11);
1085 set_sci_style(sci, SCE_LISP_CHARACTER, ft_id, 12);
1086 set_sci_style(sci, SCE_LISP_MACRO, ft_id, 13);
1087 set_sci_style(sci, SCE_LISP_MACRO_DISPATCH, ft_id, 14);
1092 static void styleset_erlang_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1094 new_styleset(ft_id
, 26);
1095 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1096 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1097 get_keyfile_style(config
, config_home
, "variable", &style_sets
[ft_id
].styling
[2]);
1098 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
1099 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[4]);
1100 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[5]);
1101 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
1102 get_keyfile_style(config
, config_home
, "atom", &style_sets
[ft_id
].styling
[7]);
1103 get_keyfile_style(config
, config_home
, "function_name", &style_sets
[ft_id
].styling
[8]);
1104 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[9]);
1105 get_keyfile_style(config
, config_home
, "macro", &style_sets
[ft_id
].styling
[10]);
1106 get_keyfile_style(config
, config_home
, "record", &style_sets
[ft_id
].styling
[11]);
1107 get_keyfile_style(config
, config_home
, "preproc", &style_sets
[ft_id
].styling
[12]);
1108 get_keyfile_style(config
, config_home
, "node_name", &style_sets
[ft_id
].styling
[13]);
1109 get_keyfile_style(config
, config_home
, "comment_function", &style_sets
[ft_id
].styling
[14]);
1110 get_keyfile_style(config
, config_home
, "comment_module", &style_sets
[ft_id
].styling
[15]);
1111 get_keyfile_style(config
, config_home
, "comment_doc", &style_sets
[ft_id
].styling
[16]);
1112 get_keyfile_style(config
, config_home
, "comment_doc_macro", &style_sets
[ft_id
].styling
[17]);
1113 get_keyfile_style(config
, config_home
, "atom_quoted", &style_sets
[ft_id
].styling
[18]);
1114 get_keyfile_style(config
, config_home
, "macro_quoted", &style_sets
[ft_id
].styling
[19]);
1115 get_keyfile_style(config
, config_home
, "record_quoted", &style_sets
[ft_id
].styling
[20]);
1116 get_keyfile_style(config
, config_home
, "node_name_quoted", &style_sets
[ft_id
].styling
[21]);
1117 get_keyfile_style(config
, config_home
, "bifs", &style_sets
[ft_id
].styling
[22]);
1118 get_keyfile_style(config
, config_home
, "modules", &style_sets
[ft_id
].styling
[23]);
1119 get_keyfile_style(config
, config_home
, "modules_att", &style_sets
[ft_id
].styling
[24]);
1120 get_keyfile_style(config
, config_home
, "unknown", &style_sets
[ft_id
].styling
[25]);
1122 style_sets
[ft_id
].keywords
= g_new(gchar
*, 6);
1123 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
1124 get_keyfile_keywords(config
, config_home
, "bifs", ft_id
, 1);
1125 get_keyfile_keywords(config
, config_home
, "preproc", ft_id
, 2);
1126 get_keyfile_keywords(config
, config_home
, "module", ft_id
, 3);
1127 get_keyfile_keywords(config
, config_home
, "doc", ft_id
, 4);
1128 get_keyfile_keywords(config
, config_home
, "doc_macro", ft_id
, 5);
1129 style_sets
[ft_id
].keywords
[6] = NULL
;
1133 static void styleset_erlang(ScintillaObject
*sci
, gint ft_id
)
1135 apply_filetype_properties(sci
, SCLEX_ERLANG
, ft_id
);
1137 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1138 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1139 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1140 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
1141 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
1142 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[5]);
1144 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1145 set_sci_style(sci
, SCE_ERLANG_DEFAULT
, ft_id
, 0);
1146 set_sci_style(sci
, SCE_ERLANG_COMMENT
, ft_id
, 1);
1147 set_sci_style(sci
, SCE_ERLANG_VARIABLE
, ft_id
, 2);
1148 set_sci_style(sci
, SCE_ERLANG_NUMBER
, ft_id
, 3);
1149 set_sci_style(sci
, SCE_ERLANG_KEYWORD
, ft_id
, 4);
1150 set_sci_style(sci
, SCE_ERLANG_STRING
, ft_id
, 5);
1151 set_sci_style(sci
, SCE_ERLANG_OPERATOR
, ft_id
, 6);
1152 set_sci_style(sci
, SCE_ERLANG_ATOM
, ft_id
, 7);
1153 set_sci_style(sci
, SCE_ERLANG_FUNCTION_NAME
, ft_id
, 8);
1154 set_sci_style(sci
, SCE_ERLANG_CHARACTER
, ft_id
, 9);
1155 set_sci_style(sci
, SCE_ERLANG_MACRO
, ft_id
, 10);
1156 set_sci_style(sci
, SCE_ERLANG_RECORD
, ft_id
, 11);
1157 set_sci_style(sci
, SCE_ERLANG_PREPROC
, ft_id
, 12);
1158 set_sci_style(sci
, SCE_ERLANG_NODE_NAME
, ft_id
, 13);
1159 set_sci_style(sci
, SCE_ERLANG_COMMENT_FUNCTION
, ft_id
, 14);
1160 set_sci_style(sci
, SCE_ERLANG_COMMENT_MODULE
, ft_id
, 15);
1161 set_sci_style(sci
, SCE_ERLANG_COMMENT_DOC
, ft_id
, 16);
1162 set_sci_style(sci
, SCE_ERLANG_COMMENT_DOC_MACRO
, ft_id
, 17);
1163 set_sci_style(sci
, SCE_ERLANG_ATOM_QUOTED
, ft_id
, 18);
1164 set_sci_style(sci
, SCE_ERLANG_MACRO_QUOTED
, ft_id
, 19);
1165 set_sci_style(sci
, SCE_ERLANG_RECORD_QUOTED
, ft_id
, 20);
1166 set_sci_style(sci
, SCE_ERLANG_NODE_NAME_QUOTED
, ft_id
, 21);
1167 set_sci_style(sci
, SCE_ERLANG_BIFS
, ft_id
, 22);
1168 set_sci_style(sci
, SCE_ERLANG_MODULES
, ft_id
, 23);
1169 set_sci_style(sci
, SCE_ERLANG_MODULES_ATT
, ft_id
, 24);
1170 set_sci_style(sci
, SCE_ERLANG_UNKNOWN
, ft_id
, 25);
1174 static void styleset_latex_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1176 new_styleset(ft_id
, 5);
1177 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1178 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[1]);
1179 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[2]);
1180 get_keyfile_style(config
, config_home
, "math", &style_sets
[ft_id
].styling
[3]);
1181 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[4]);
1183 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1184 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1185 style_sets
[ft_id
].keywords
[1] = NULL
;
1189 static void styleset_latex(ScintillaObject
*sci
, gint ft_id
)
1191 apply_filetype_properties(sci
, SCLEX_LATEX
, ft_id
);
1193 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1195 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1196 set_sci_style(sci
, SCE_L_DEFAULT
, ft_id
, 0);
1197 set_sci_style(sci
, SCE_L_COMMAND
, ft_id
, 1);
1198 set_sci_style(sci
, SCE_L_TAG
, ft_id
, 2);
1199 set_sci_style(sci
, SCE_L_MATH
, ft_id
, 3);
1200 set_sci_style(sci
, SCE_L_COMMENT
, ft_id
, 4);
1204 static void styleset_php_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1206 style_sets
[ft_id
].styling
= NULL
;
1207 style_sets
[ft_id
].keywords
= NULL
;
1211 static void styleset_php(ScintillaObject
*sci
, gint ft_id
)
1213 apply_filetype_properties(sci
, SCLEX_HTML
, ft_id
);
1215 /* use the same colouring as for XML */
1216 styleset_markup(sci
, TRUE
);
1220 static void styleset_html_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1222 style_sets
[ft_id
].styling
= NULL
;
1223 style_sets
[ft_id
].keywords
= NULL
;
1227 static void styleset_html(ScintillaObject
*sci
, gint ft_id
)
1229 apply_filetype_properties(sci
, SCLEX_HTML
, ft_id
);
1231 /* use the same colouring for HTML; XML and so on */
1232 styleset_markup(sci
, TRUE
);
1236 static void styleset_markup_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1238 new_styleset(GEANY_FILETYPES_XML
, 56);
1239 get_keyfile_style(config
, config_home
, "html_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[0]);
1240 get_keyfile_style(config
, config_home
, "html_tag", &style_sets
[GEANY_FILETYPES_XML
].styling
[1]);
1241 get_keyfile_style(config
, config_home
, "html_tagunknown", &style_sets
[GEANY_FILETYPES_XML
].styling
[2]);
1242 get_keyfile_style(config
, config_home
, "html_attribute", &style_sets
[GEANY_FILETYPES_XML
].styling
[3]);
1243 get_keyfile_style(config
, config_home
, "html_attributeunknown", &style_sets
[GEANY_FILETYPES_XML
].styling
[4]);
1244 get_keyfile_style(config
, config_home
, "html_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[5]);
1245 get_keyfile_style(config
, config_home
, "html_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[6]);
1246 get_keyfile_style(config
, config_home
, "html_singlestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[7]);
1247 get_keyfile_style(config
, config_home
, "html_other", &style_sets
[GEANY_FILETYPES_XML
].styling
[8]);
1248 get_keyfile_style(config
, config_home
, "html_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[9]);
1249 get_keyfile_style(config
, config_home
, "html_entity", &style_sets
[GEANY_FILETYPES_XML
].styling
[10]);
1250 get_keyfile_style(config
, config_home
, "html_tagend", &style_sets
[GEANY_FILETYPES_XML
].styling
[11]);
1251 get_keyfile_style(config
, config_home
, "html_xmlstart", &style_sets
[GEANY_FILETYPES_XML
].styling
[12]);
1252 get_keyfile_style(config
, config_home
, "html_xmlend", &style_sets
[GEANY_FILETYPES_XML
].styling
[13]);
1253 get_keyfile_style(config
, config_home
, "html_script", &style_sets
[GEANY_FILETYPES_XML
].styling
[14]);
1254 get_keyfile_style(config
, config_home
, "html_asp", &style_sets
[GEANY_FILETYPES_XML
].styling
[15]);
1255 get_keyfile_style(config
, config_home
, "html_aspat", &style_sets
[GEANY_FILETYPES_XML
].styling
[16]);
1256 get_keyfile_style(config
, config_home
, "html_cdata", &style_sets
[GEANY_FILETYPES_XML
].styling
[17]);
1257 get_keyfile_style(config
, config_home
, "html_question", &style_sets
[GEANY_FILETYPES_XML
].styling
[18]);
1258 get_keyfile_style(config
, config_home
, "html_value", &style_sets
[GEANY_FILETYPES_XML
].styling
[19]);
1259 get_keyfile_style(config
, config_home
, "html_xccomment", &style_sets
[GEANY_FILETYPES_XML
].styling
[20]);
1261 get_keyfile_style(config
, config_home
, "sgml_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[21]);
1262 get_keyfile_style(config
, config_home
, "sgml_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[22]);
1263 get_keyfile_style(config
, config_home
, "sgml_special", &style_sets
[GEANY_FILETYPES_XML
].styling
[23]);
1264 get_keyfile_style(config
, config_home
, "sgml_command", &style_sets
[GEANY_FILETYPES_XML
].styling
[24]);
1265 get_keyfile_style(config
, config_home
, "sgml_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[25]);
1266 get_keyfile_style(config
, config_home
, "sgml_simplestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[26]);
1267 get_keyfile_style(config
, config_home
, "sgml_1st_param", &style_sets
[GEANY_FILETYPES_XML
].styling
[27]);
1268 get_keyfile_style(config
, config_home
, "sgml_entity", &style_sets
[GEANY_FILETYPES_XML
].styling
[28]);
1269 get_keyfile_style(config
, config_home
, "sgml_block_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[29]);
1270 get_keyfile_style(config
, config_home
, "sgml_1st_param_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[30]);
1271 get_keyfile_style(config
, config_home
, "sgml_error", &style_sets
[GEANY_FILETYPES_XML
].styling
[31]);
1273 get_keyfile_style(config
, config_home
, "php_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[32]);
1274 get_keyfile_style(config
, config_home
, "php_simplestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[33]);
1275 get_keyfile_style(config
, config_home
, "php_hstring", &style_sets
[GEANY_FILETYPES_XML
].styling
[34]);
1276 get_keyfile_style(config
, config_home
, "php_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[35]);
1277 get_keyfile_style(config
, config_home
, "php_word", &style_sets
[GEANY_FILETYPES_XML
].styling
[36]);
1278 get_keyfile_style(config
, config_home
, "php_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[37]);
1279 get_keyfile_style(config
, config_home
, "php_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[38]);
1280 get_keyfile_style(config
, config_home
, "php_commentline", &style_sets
[GEANY_FILETYPES_XML
].styling
[39]);
1281 get_keyfile_style(config
, config_home
, "php_operator", &style_sets
[GEANY_FILETYPES_XML
].styling
[40]);
1282 get_keyfile_style(config
, config_home
, "php_hstring_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[41]);
1283 get_keyfile_style(config
, config_home
, "php_complex_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[42]);
1285 get_keyfile_style(config
, config_home
, "jscript_start", &style_sets
[GEANY_FILETYPES_XML
].styling
[43]);
1286 get_keyfile_style(config
, config_home
, "jscript_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[44]);
1287 get_keyfile_style(config
, config_home
, "jscript_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[45]);
1288 get_keyfile_style(config
, config_home
, "jscript_commentline", &style_sets
[GEANY_FILETYPES_XML
].styling
[46]);
1289 get_keyfile_style(config
, config_home
, "jscript_commentdoc", &style_sets
[GEANY_FILETYPES_XML
].styling
[47]);
1290 get_keyfile_style(config
, config_home
, "jscript_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[48]);
1291 get_keyfile_style(config
, config_home
, "jscript_word", &style_sets
[GEANY_FILETYPES_XML
].styling
[49]);
1292 get_keyfile_style(config
, config_home
, "jscript_keyword", &style_sets
[GEANY_FILETYPES_XML
].styling
[50]);
1293 get_keyfile_style(config
, config_home
, "jscript_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[51]);
1294 get_keyfile_style(config
, config_home
, "jscript_singlestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[52]);
1295 get_keyfile_style(config
, config_home
, "jscript_symbols", &style_sets
[GEANY_FILETYPES_XML
].styling
[53]);
1296 get_keyfile_style(config
, config_home
, "jscript_stringeol", &style_sets
[GEANY_FILETYPES_XML
].styling
[54]);
1297 get_keyfile_style(config
, config_home
, "jscript_regex", &style_sets
[GEANY_FILETYPES_XML
].styling
[55]);
1299 style_sets
[GEANY_FILETYPES_XML
].keywords
= g_new(gchar
*, 7);
1300 get_keyfile_keywords(config
, config_home
, "html", GEANY_FILETYPES_XML
, 0);
1301 get_keyfile_keywords(config
, config_home
, "javascript", GEANY_FILETYPES_XML
, 1);
1302 get_keyfile_keywords(config
, config_home
, "vbscript", GEANY_FILETYPES_XML
, 2);
1303 get_keyfile_keywords(config
, config_home
, "python", GEANY_FILETYPES_XML
, 3);
1304 get_keyfile_keywords(config
, config_home
, "php", GEANY_FILETYPES_XML
, 4);
1305 get_keyfile_keywords(config
, config_home
, "sgml", GEANY_FILETYPES_XML
, 5);
1306 style_sets
[GEANY_FILETYPES_XML
].keywords
[6] = NULL
;
1310 static void styleset_markup(ScintillaObject
*sci
, gboolean set_keywords
)
1313 const gchar
*keywords
;
1315 /* Used by several filetypes */
1316 if (style_sets
[GEANY_FILETYPES_XML
].styling
== NULL
)
1317 filetypes_load_config(GEANY_FILETYPES_XML
, FALSE
);
1319 /* manually initialise filetype Python for use with embedded Python */
1320 filetypes_load_config(GEANY_FILETYPES_PYTHON
, FALSE
);
1322 /* Set keywords. If we don't want to use keywords, we must at least unset maybe previously set
1323 * keywords, e.g. when switching between filetypes. */
1324 for (i
= 0; i
< 5; i
++)
1326 keywords
= (set_keywords
) ? style_sets
[GEANY_FILETYPES_XML
].keywords
[i
] : "";
1327 sci_set_keywords(sci
, i
, keywords
);
1329 /* always set SGML keywords */
1330 sci_set_keywords(sci
, 5, style_sets
[GEANY_FILETYPES_XML
].keywords
[5]);
1332 set_sci_style(sci
, STYLE_DEFAULT
, GEANY_FILETYPES_XML
, 0);
1333 set_sci_style(sci
, SCE_H_DEFAULT
, GEANY_FILETYPES_XML
, 0);
1334 set_sci_style(sci
, SCE_H_TAG
, GEANY_FILETYPES_XML
, 1);
1335 set_sci_style(sci
, SCE_H_TAGUNKNOWN
, GEANY_FILETYPES_XML
, 2);
1336 set_sci_style(sci
, SCE_H_ATTRIBUTE
, GEANY_FILETYPES_XML
, 3);
1337 set_sci_style(sci
, SCE_H_ATTRIBUTEUNKNOWN
, GEANY_FILETYPES_XML
, 4);
1338 set_sci_style(sci
, SCE_H_NUMBER
, GEANY_FILETYPES_XML
, 5);
1339 set_sci_style(sci
, SCE_H_DOUBLESTRING
, GEANY_FILETYPES_XML
, 6);
1340 set_sci_style(sci
, SCE_H_SINGLESTRING
, GEANY_FILETYPES_XML
, 7);
1341 set_sci_style(sci
, SCE_H_OTHER
, GEANY_FILETYPES_XML
, 8);
1342 set_sci_style(sci
, SCE_H_COMMENT
, GEANY_FILETYPES_XML
, 9);
1343 set_sci_style(sci
, SCE_H_ENTITY
, GEANY_FILETYPES_XML
, 10);
1344 set_sci_style(sci
, SCE_H_TAGEND
, GEANY_FILETYPES_XML
, 11);
1345 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_XMLSTART
, 1);
1346 set_sci_style(sci
, SCE_H_XMLSTART
, GEANY_FILETYPES_XML
, 12);
1347 set_sci_style(sci
, SCE_H_XMLEND
, GEANY_FILETYPES_XML
, 13);
1348 set_sci_style(sci
, SCE_H_SCRIPT
, GEANY_FILETYPES_XML
, 14);
1349 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_ASP
, 1);
1350 set_sci_style(sci
, SCE_H_ASP
, GEANY_FILETYPES_XML
, 15);
1351 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_ASPAT
, 1);
1352 set_sci_style(sci
, SCE_H_ASPAT
, GEANY_FILETYPES_XML
, 16);
1353 set_sci_style(sci
, SCE_H_CDATA
, GEANY_FILETYPES_XML
, 17);
1354 set_sci_style(sci
, SCE_H_QUESTION
, GEANY_FILETYPES_XML
, 18);
1355 set_sci_style(sci
, SCE_H_VALUE
, GEANY_FILETYPES_XML
, 19);
1356 set_sci_style(sci
, SCE_H_XCCOMMENT
, GEANY_FILETYPES_XML
, 20);
1358 set_sci_style(sci
, SCE_H_SGML_DEFAULT
, GEANY_FILETYPES_XML
, 21);
1359 set_sci_style(sci
, SCE_H_SGML_COMMENT
, GEANY_FILETYPES_XML
, 22);
1360 set_sci_style(sci
, SCE_H_SGML_SPECIAL
, GEANY_FILETYPES_XML
, 23);
1361 set_sci_style(sci
, SCE_H_SGML_COMMAND
, GEANY_FILETYPES_XML
, 24);
1362 set_sci_style(sci
, SCE_H_SGML_DOUBLESTRING
, GEANY_FILETYPES_XML
, 25);
1363 set_sci_style(sci
, SCE_H_SGML_SIMPLESTRING
, GEANY_FILETYPES_XML
, 26);
1364 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM
, GEANY_FILETYPES_XML
, 27);
1365 set_sci_style(sci
, SCE_H_SGML_ENTITY
, GEANY_FILETYPES_XML
, 28);
1366 set_sci_style(sci
, SCE_H_SGML_BLOCK_DEFAULT
, GEANY_FILETYPES_XML
, 29);
1367 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM_COMMENT
, GEANY_FILETYPES_XML
, 30);
1368 set_sci_style(sci
, SCE_H_SGML_ERROR
, GEANY_FILETYPES_XML
, 31);
1370 /* embedded JavaScript */
1371 set_sci_style(sci
, SCE_HJ_START
, GEANY_FILETYPES_XML
, 43);
1372 set_sci_style(sci
, SCE_HJ_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1373 set_sci_style(sci
, SCE_HJ_COMMENT
, GEANY_FILETYPES_XML
, 45);
1374 set_sci_style(sci
, SCE_HJ_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1375 set_sci_style(sci
, SCE_HJ_COMMENTDOC
, GEANY_FILETYPES_XML
, 47);
1376 set_sci_style(sci
, SCE_HJ_NUMBER
, GEANY_FILETYPES_XML
, 48);
1377 set_sci_style(sci
, SCE_HJ_WORD
, GEANY_FILETYPES_XML
, 49);
1378 set_sci_style(sci
, SCE_HJ_KEYWORD
, GEANY_FILETYPES_XML
, 50);
1379 set_sci_style(sci
, SCE_HJ_DOUBLESTRING
, GEANY_FILETYPES_XML
, 51);
1380 set_sci_style(sci
, SCE_HJ_SINGLESTRING
, GEANY_FILETYPES_XML
, 52);
1381 set_sci_style(sci
, SCE_HJ_SYMBOLS
, GEANY_FILETYPES_XML
, 53);
1382 set_sci_style(sci
, SCE_HJ_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1383 set_sci_style(sci
, SCE_HJ_REGEX
, GEANY_FILETYPES_XML
, 55);
1385 /* for HB, VBScript?, use the same styles as for JavaScript */
1386 set_sci_style(sci
, SCE_HB_START
, GEANY_FILETYPES_XML
, 43);
1387 set_sci_style(sci
, SCE_HB_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1388 set_sci_style(sci
, SCE_HB_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1389 set_sci_style(sci
, SCE_HB_NUMBER
, GEANY_FILETYPES_XML
, 48);
1390 set_sci_style(sci
, SCE_HB_WORD
, GEANY_FILETYPES_XML
, 50); /* keywords */
1391 set_sci_style(sci
, SCE_HB_STRING
, GEANY_FILETYPES_XML
, 51);
1392 set_sci_style(sci
, SCE_HB_IDENTIFIER
, GEANY_FILETYPES_XML
, 53);
1393 set_sci_style(sci
, SCE_HB_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1395 /* for HBA, VBScript?, use the same styles as for JavaScript */
1396 set_sci_style(sci
, SCE_HBA_START
, GEANY_FILETYPES_XML
, 43);
1397 set_sci_style(sci
, SCE_HBA_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1398 set_sci_style(sci
, SCE_HBA_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1399 set_sci_style(sci
, SCE_HBA_NUMBER
, GEANY_FILETYPES_XML
, 48);
1400 set_sci_style(sci
, SCE_HBA_WORD
, GEANY_FILETYPES_XML
, 50); /* keywords */
1401 set_sci_style(sci
, SCE_HBA_STRING
, GEANY_FILETYPES_XML
, 51);
1402 set_sci_style(sci
, SCE_HBA_IDENTIFIER
, GEANY_FILETYPES_XML
, 53);
1403 set_sci_style(sci
, SCE_HBA_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1405 /* for HJA, ASP Javascript, use the same styles as for JavaScript */
1406 set_sci_style(sci
, SCE_HJA_START
, GEANY_FILETYPES_XML
, 43);
1407 set_sci_style(sci
, SCE_HJA_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1408 set_sci_style(sci
, SCE_HJA_COMMENT
, GEANY_FILETYPES_XML
, 45);
1409 set_sci_style(sci
, SCE_HJA_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1410 set_sci_style(sci
, SCE_HJA_COMMENTDOC
, GEANY_FILETYPES_XML
, 47);
1411 set_sci_style(sci
, SCE_HJA_NUMBER
, GEANY_FILETYPES_XML
, 48);
1412 set_sci_style(sci
, SCE_HJA_WORD
, GEANY_FILETYPES_XML
, 49);
1413 set_sci_style(sci
, SCE_HJA_KEYWORD
, GEANY_FILETYPES_XML
, 50);
1414 set_sci_style(sci
, SCE_HJA_DOUBLESTRING
, GEANY_FILETYPES_XML
, 51);
1415 set_sci_style(sci
, SCE_HJA_SINGLESTRING
, GEANY_FILETYPES_XML
, 52);
1416 set_sci_style(sci
, SCE_HJA_SYMBOLS
, GEANY_FILETYPES_XML
, 53);
1417 set_sci_style(sci
, SCE_HJA_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1419 /* for embedded Python we use the Python styles */
1420 set_sci_style(sci
, SCE_HP_START
, GEANY_FILETYPES_XML
, 43);
1421 set_sci_style(sci
, SCE_HP_DEFAULT
, GEANY_FILETYPES_PYTHON
, 0);
1422 set_sci_style(sci
, SCE_HP_COMMENTLINE
, GEANY_FILETYPES_PYTHON
, 1);
1423 set_sci_style(sci
, SCE_HP_NUMBER
, GEANY_FILETYPES_PYTHON
, 2);
1424 set_sci_style(sci
, SCE_HP_STRING
, GEANY_FILETYPES_PYTHON
, 3);
1425 set_sci_style(sci
, SCE_HP_CHARACTER
, GEANY_FILETYPES_PYTHON
, 4);
1426 set_sci_style(sci
, SCE_HP_WORD
, GEANY_FILETYPES_PYTHON
, 5);
1427 set_sci_style(sci
, SCE_HP_TRIPLE
, GEANY_FILETYPES_PYTHON
, 6);
1428 set_sci_style(sci
, SCE_HP_TRIPLEDOUBLE
, GEANY_FILETYPES_PYTHON
, 7);
1429 set_sci_style(sci
, SCE_HP_CLASSNAME
, GEANY_FILETYPES_PYTHON
, 8);
1430 set_sci_style(sci
, SCE_HP_DEFNAME
, GEANY_FILETYPES_PYTHON
, 9);
1431 set_sci_style(sci
, SCE_HP_OPERATOR
, GEANY_FILETYPES_PYTHON
, 10);
1432 set_sci_style(sci
, SCE_HP_IDENTIFIER
, GEANY_FILETYPES_PYTHON
, 11);
1434 /* for embedded HPA (what is this?) we use the Python styles */
1435 set_sci_style(sci
, SCE_HPA_START
, GEANY_FILETYPES_XML
, 43);
1436 set_sci_style(sci
, SCE_HPA_DEFAULT
, GEANY_FILETYPES_PYTHON
, 0);
1437 set_sci_style(sci
, SCE_HPA_COMMENTLINE
, GEANY_FILETYPES_PYTHON
, 1);
1438 set_sci_style(sci
, SCE_HPA_NUMBER
, GEANY_FILETYPES_PYTHON
, 2);
1439 set_sci_style(sci
, SCE_HPA_STRING
, GEANY_FILETYPES_PYTHON
, 3);
1440 set_sci_style(sci
, SCE_HPA_CHARACTER
, GEANY_FILETYPES_PYTHON
, 4);
1441 set_sci_style(sci
, SCE_HPA_WORD
, GEANY_FILETYPES_PYTHON
, 5);
1442 set_sci_style(sci
, SCE_HPA_TRIPLE
, GEANY_FILETYPES_PYTHON
, 6);
1443 set_sci_style(sci
, SCE_HPA_TRIPLEDOUBLE
, GEANY_FILETYPES_PYTHON
, 7);
1444 set_sci_style(sci
, SCE_HPA_CLASSNAME
, GEANY_FILETYPES_PYTHON
, 8);
1445 set_sci_style(sci
, SCE_HPA_DEFNAME
, GEANY_FILETYPES_PYTHON
, 9);
1446 set_sci_style(sci
, SCE_HPA_OPERATOR
, GEANY_FILETYPES_PYTHON
, 10);
1447 set_sci_style(sci
, SCE_HPA_IDENTIFIER
, GEANY_FILETYPES_PYTHON
, 11);
1450 set_sci_style(sci
, SCE_HPHP_DEFAULT
, GEANY_FILETYPES_XML
, 32);
1451 set_sci_style(sci
, SCE_HPHP_SIMPLESTRING
, GEANY_FILETYPES_XML
, 33);
1452 set_sci_style(sci
, SCE_HPHP_HSTRING
, GEANY_FILETYPES_XML
, 34);
1453 set_sci_style(sci
, SCE_HPHP_NUMBER
, GEANY_FILETYPES_XML
, 35);
1454 set_sci_style(sci
, SCE_HPHP_WORD
, GEANY_FILETYPES_XML
, 36);
1455 set_sci_style(sci
, SCE_HPHP_VARIABLE
, GEANY_FILETYPES_XML
, 37);
1456 set_sci_style(sci
, SCE_HPHP_COMMENT
, GEANY_FILETYPES_XML
, 38);
1457 set_sci_style(sci
, SCE_HPHP_COMMENTLINE
, GEANY_FILETYPES_XML
, 39);
1458 set_sci_style(sci
, SCE_HPHP_OPERATOR
, GEANY_FILETYPES_XML
, 40);
1459 set_sci_style(sci
, SCE_HPHP_HSTRING_VARIABLE
, GEANY_FILETYPES_XML
, 41);
1460 set_sci_style(sci
, SCE_HPHP_COMPLEX_VARIABLE
, GEANY_FILETYPES_XML
, 42);
1462 /* note: normally this would be in the filetype file instead */
1463 sci_set_property(sci
, "fold.html", "1");
1464 sci_set_property(sci
, "fold.html.preprocessor", "0");
1468 static void styleset_java_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1470 styleset_c_like_init(config
, config_home
, ft_id
);
1472 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
1473 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1474 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
1475 get_keyfile_keywords(config
, config_home
, "doccomment", ft_id
, 2);
1476 get_keyfile_keywords(config
, config_home
, "typedefs", ft_id
, 3);
1477 style_sets
[ft_id
].keywords
[4] = NULL
;
1481 static void styleset_java(ScintillaObject
*sci
, gint ft_id
)
1483 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
1485 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1486 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
1487 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1488 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
1489 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[3]);
1491 /* assign global types, merge them with user defined keywords and set them */
1492 merge_type_keywords(sci
, ft_id
, 1);
1496 static void styleset_perl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1498 new_styleset(ft_id
, 35);
1499 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1500 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[1]);
1501 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
1502 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
1503 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[4]);
1504 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[5]);
1505 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[6]);
1506 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[7]);
1507 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[8]);
1508 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[9]);
1509 get_keyfile_style(config
, config_home
, "scalar", &style_sets
[ft_id
].styling
[10]);
1510 get_keyfile_style(config
, config_home
, "pod", &style_sets
[ft_id
].styling
[11]);
1511 get_keyfile_style(config
, config_home
, "regex", &style_sets
[ft_id
].styling
[12]);
1512 get_keyfile_style(config
, config_home
, "array", &style_sets
[ft_id
].styling
[13]);
1513 get_keyfile_style(config
, config_home
, "hash", &style_sets
[ft_id
].styling
[14]);
1514 get_keyfile_style(config
, config_home
, "symboltable", &style_sets
[ft_id
].styling
[15]);
1515 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[16]);
1516 get_keyfile_style(config
, config_home
, "pod_verbatim", &style_sets
[ft_id
].styling
[17]);
1517 get_keyfile_style(config
, config_home
, "reg_subst", &style_sets
[ft_id
].styling
[18]);
1518 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[19]);
1519 get_keyfile_style(config
, config_home
, "here_delim", &style_sets
[ft_id
].styling
[20]);
1520 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[21]);
1521 get_keyfile_style(config
, config_home
, "here_qq", &style_sets
[ft_id
].styling
[22]);
1522 get_keyfile_style(config
, config_home
, "here_qx", &style_sets
[ft_id
].styling
[23]);
1523 get_keyfile_style(config
, config_home
, "string_q", &style_sets
[ft_id
].styling
[24]);
1524 get_keyfile_style(config
, config_home
, "string_qq", &style_sets
[ft_id
].styling
[25]);
1525 get_keyfile_style(config
, config_home
, "string_qx", &style_sets
[ft_id
].styling
[26]);
1526 get_keyfile_style(config
, config_home
, "string_qr", &style_sets
[ft_id
].styling
[27]);
1527 get_keyfile_style(config
, config_home
, "string_qw", &style_sets
[ft_id
].styling
[28]);
1528 get_keyfile_style(config
, config_home
, "variable_indexer", &style_sets
[ft_id
].styling
[29]);
1529 get_keyfile_style(config
, config_home
, "punctuation", &style_sets
[ft_id
].styling
[30]);
1530 get_keyfile_style(config
, config_home
, "longquote", &style_sets
[ft_id
].styling
[31]);
1531 get_keyfile_style(config
, config_home
, "sub_prototype", &style_sets
[ft_id
].styling
[32]);
1532 get_keyfile_style(config
, config_home
, "format_ident", &style_sets
[ft_id
].styling
[33]);
1533 get_keyfile_style(config
, config_home
, "format", &style_sets
[ft_id
].styling
[34]);
1536 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1537 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1538 style_sets
[ft_id
].keywords
[1] = NULL
;
1542 static void styleset_perl(ScintillaObject
*sci
, gint ft_id
)
1544 apply_filetype_properties(sci
, SCLEX_PERL
, ft_id
);
1546 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1548 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1549 set_sci_style(sci
, SCE_PL_DEFAULT
, ft_id
, 0);
1550 set_sci_style(sci
, SCE_PL_ERROR
, ft_id
, 1);
1551 set_sci_style(sci
, SCE_PL_COMMENTLINE
, ft_id
, 2);
1552 set_sci_style(sci
, SCE_PL_NUMBER
, ft_id
, 3);
1553 set_sci_style(sci
, SCE_PL_WORD
, ft_id
, 4);
1554 set_sci_style(sci
, SCE_PL_STRING
, ft_id
, 5);
1555 set_sci_style(sci
, SCE_PL_CHARACTER
, ft_id
, 6);
1556 set_sci_style(sci
, SCE_PL_PREPROCESSOR
, ft_id
, 7);
1557 set_sci_style(sci
, SCE_PL_OPERATOR
, ft_id
, 8);
1558 set_sci_style(sci
, SCE_PL_IDENTIFIER
, ft_id
, 9);
1559 set_sci_style(sci
, SCE_PL_SCALAR
, ft_id
, 10);
1560 set_sci_style(sci
, SCE_PL_POD
, ft_id
, 11);
1561 set_sci_style(sci
, SCE_PL_REGEX
, ft_id
, 12);
1562 set_sci_style(sci
, SCE_PL_ARRAY
, ft_id
, 13);
1563 set_sci_style(sci
, SCE_PL_HASH
, ft_id
, 14);
1564 set_sci_style(sci
, SCE_PL_SYMBOLTABLE
, ft_id
, 15);
1565 set_sci_style(sci
, SCE_PL_BACKTICKS
, ft_id
, 16);
1566 set_sci_style(sci
, SCE_PL_POD_VERB
, ft_id
, 17);
1567 set_sci_style(sci
, SCE_PL_REGSUBST
, ft_id
, 18);
1568 set_sci_style(sci
, SCE_PL_DATASECTION
, ft_id
, 19);
1569 set_sci_style(sci
, SCE_PL_HERE_DELIM
, ft_id
, 20);
1570 set_sci_style(sci
, SCE_PL_HERE_Q
, ft_id
, 21);
1571 set_sci_style(sci
, SCE_PL_HERE_QQ
, ft_id
, 22);
1572 set_sci_style(sci
, SCE_PL_HERE_QX
, ft_id
, 23);
1573 set_sci_style(sci
, SCE_PL_STRING_Q
, ft_id
, 24);
1574 set_sci_style(sci
, SCE_PL_STRING_QQ
, ft_id
, 25);
1575 set_sci_style(sci
, SCE_PL_STRING_QX
, ft_id
, 26);
1576 set_sci_style(sci
, SCE_PL_STRING_QR
, ft_id
, 27);
1577 set_sci_style(sci
, SCE_PL_STRING_QW
, ft_id
, 28);
1578 set_sci_style(sci
, SCE_PL_VARIABLE_INDEXER
, ft_id
, 29);
1579 set_sci_style(sci
, SCE_PL_PUNCTUATION
, ft_id
, 30);
1580 set_sci_style(sci
, SCE_PL_LONGQUOTE
, ft_id
, 31);
1581 set_sci_style(sci
, SCE_PL_SUB_PROTOTYPE
, ft_id
, 32);
1582 set_sci_style(sci
, SCE_PL_FORMAT_IDENT
, ft_id
, 33);
1583 set_sci_style(sci
, SCE_PL_FORMAT
, ft_id
, 34);
1587 static void styleset_python_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1589 new_styleset(ft_id
, 16);
1590 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1591 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1592 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1593 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
1594 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[4]);
1595 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
1596 get_keyfile_style(config
, config_home
, "triple", &style_sets
[ft_id
].styling
[6]);
1597 get_keyfile_style(config
, config_home
, "tripledouble", &style_sets
[ft_id
].styling
[7]);
1598 get_keyfile_style(config
, config_home
, "classname", &style_sets
[ft_id
].styling
[8]);
1599 get_keyfile_style(config
, config_home
, "defname", &style_sets
[ft_id
].styling
[9]);
1600 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
1601 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
1602 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[12]);
1603 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
1604 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[14]);
1605 get_keyfile_style(config
, config_home
, "decorator", &style_sets
[ft_id
].styling
[15]);
1607 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
1608 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1609 get_keyfile_keywords(config
, config_home
, "identifiers", ft_id
, 1);
1610 style_sets
[ft_id
].keywords
[2] = NULL
;
1614 static void styleset_python(ScintillaObject
*sci
, gint ft_id
)
1616 apply_filetype_properties(sci
, SCLEX_PYTHON
, ft_id
);
1618 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1619 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1621 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1622 set_sci_style(sci
, SCE_P_DEFAULT
, ft_id
, 0);
1623 set_sci_style(sci
, SCE_P_COMMENTLINE
, ft_id
, 1);
1624 set_sci_style(sci
, SCE_P_NUMBER
, ft_id
, 2);
1625 set_sci_style(sci
, SCE_P_STRING
, ft_id
, 3);
1626 set_sci_style(sci
, SCE_P_CHARACTER
, ft_id
, 4);
1627 set_sci_style(sci
, SCE_P_WORD
, ft_id
, 5);
1628 set_sci_style(sci
, SCE_P_TRIPLE
, ft_id
, 6);
1629 set_sci_style(sci
, SCE_P_TRIPLEDOUBLE
, ft_id
, 7);
1630 set_sci_style(sci
, SCE_P_CLASSNAME
, ft_id
, 8);
1631 set_sci_style(sci
, SCE_P_DEFNAME
, ft_id
, 9);
1632 set_sci_style(sci
, SCE_P_OPERATOR
, ft_id
, 10);
1633 set_sci_style(sci
, SCE_P_IDENTIFIER
, ft_id
, 11);
1634 set_sci_style(sci
, SCE_P_COMMENTBLOCK
, ft_id
, 12);
1635 set_sci_style(sci
, SCE_P_STRINGEOL
, ft_id
, 13);
1636 set_sci_style(sci
, SCE_P_WORD2
, ft_id
, 14);
1637 set_sci_style(sci
, SCE_P_DECORATOR
, ft_id
, 15);
1641 static void styleset_cmake_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1643 new_styleset(ft_id
, 15);
1644 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1645 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1646 get_keyfile_style(config
, config_home
, "stringdq", &style_sets
[ft_id
].styling
[2]);
1647 get_keyfile_style(config
, config_home
, "stringlq", &style_sets
[ft_id
].styling
[3]);
1648 get_keyfile_style(config
, config_home
, "stringrq", &style_sets
[ft_id
].styling
[4]);
1649 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[5]);
1650 get_keyfile_style(config
, config_home
, "parameters", &style_sets
[ft_id
].styling
[6]);
1651 get_keyfile_style(config
, config_home
, "variable", &style_sets
[ft_id
].styling
[7]);
1652 get_keyfile_style(config
, config_home
, "userdefined", &style_sets
[ft_id
].styling
[8]);
1653 get_keyfile_style(config
, config_home
, "whiledef", &style_sets
[ft_id
].styling
[9]);
1654 get_keyfile_style(config
, config_home
, "foreachdef", &style_sets
[ft_id
].styling
[10]);
1655 get_keyfile_style(config
, config_home
, "ifdefinedef", &style_sets
[ft_id
].styling
[11]);
1656 get_keyfile_style(config
, config_home
, "macrodef", &style_sets
[ft_id
].styling
[12]);
1657 get_keyfile_style(config
, config_home
, "stringvar", &style_sets
[ft_id
].styling
[13]);
1658 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[14]);
1660 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
1661 get_keyfile_keywords(config
, config_home
, "commands", ft_id
, 0);
1662 get_keyfile_keywords(config
, config_home
, "parameters", ft_id
, 1);
1663 get_keyfile_keywords(config
, config_home
, "userdefined", ft_id
, 2);
1664 style_sets
[ft_id
].keywords
[3] = NULL
;
1668 static void styleset_cmake(ScintillaObject
*sci
, gint ft_id
)
1670 apply_filetype_properties(sci
, SCLEX_CMAKE
, ft_id
);
1672 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1673 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1674 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1676 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1677 set_sci_style(sci
, SCE_CMAKE_DEFAULT
, ft_id
, 0);
1678 set_sci_style(sci
, SCE_CMAKE_COMMENT
, ft_id
, 1);
1679 set_sci_style(sci
, SCE_CMAKE_STRINGDQ
, ft_id
, 2);
1680 set_sci_style(sci
, SCE_CMAKE_STRINGLQ
, ft_id
, 3);
1681 set_sci_style(sci
, SCE_CMAKE_STRINGRQ
, ft_id
, 4);
1682 set_sci_style(sci
, SCE_CMAKE_COMMANDS
, ft_id
, 5);
1683 set_sci_style(sci
, SCE_CMAKE_PARAMETERS
, ft_id
, 6);
1684 set_sci_style(sci
, SCE_CMAKE_VARIABLE
, ft_id
, 7);
1685 set_sci_style(sci
, SCE_CMAKE_USERDEFINED
, ft_id
, 8);
1686 set_sci_style(sci
, SCE_CMAKE_WHILEDEF
, ft_id
, 9);
1687 set_sci_style(sci
, SCE_CMAKE_FOREACHDEF
, ft_id
, 10);
1688 set_sci_style(sci
, SCE_CMAKE_IFDEFINEDEF
, ft_id
, 11);
1689 set_sci_style(sci
, SCE_CMAKE_MACRODEF
, ft_id
, 12);
1690 set_sci_style(sci
, SCE_CMAKE_STRINGVAR
, ft_id
, 13);
1691 set_sci_style(sci
, SCE_CMAKE_NUMBER
, ft_id
, 14);
1695 static void styleset_cobol_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1697 styleset_c_like_init(config
, config_home
, ft_id
);
1699 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
1700 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1701 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
1702 get_keyfile_keywords(config
, config_home
, "extended_keywords", ft_id
, 2);
1703 style_sets
[ft_id
].keywords
[3] = NULL
;
1707 static void styleset_cobol(ScintillaObject
*sci
, gint ft_id
)
1709 styleset_c_like(sci
, ft_id
, SCLEX_COBOL
);
1711 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1712 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1713 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1717 static void styleset_r_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1719 new_styleset(ft_id
, 12);
1721 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1722 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1723 get_keyfile_style(config
, config_home
, "kword", &style_sets
[ft_id
].styling
[2]);
1724 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[3]);
1725 get_keyfile_style(config
, config_home
, "basekword", &style_sets
[ft_id
].styling
[4]);
1726 get_keyfile_style(config
, config_home
, "otherkword", &style_sets
[ft_id
].styling
[5]);
1727 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[6]);
1728 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
1729 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[8]);
1730 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[9]);
1731 get_keyfile_style(config
, config_home
, "infix", &style_sets
[ft_id
].styling
[10]);
1732 get_keyfile_style(config
, config_home
, "infixeol", &style_sets
[ft_id
].styling
[11]);
1734 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
1735 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1736 get_keyfile_keywords(config
, config_home
, "package", ft_id
, 1);
1737 get_keyfile_keywords(config
, config_home
, "package_other", ft_id
, 2);
1738 style_sets
[ft_id
].keywords
[3] = NULL
;
1742 static void styleset_r(ScintillaObject
*sci
, gint ft_id
)
1744 apply_filetype_properties(sci
, SCLEX_R
, ft_id
);
1746 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1747 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1748 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1750 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1751 set_sci_style(sci
, SCE_R_DEFAULT
, ft_id
, 0);
1752 set_sci_style(sci
, SCE_R_COMMENT
, ft_id
, 1);
1753 set_sci_style(sci
, SCE_R_KWORD
, ft_id
, 2);
1754 set_sci_style(sci
, SCE_R_OPERATOR
, ft_id
, 3);
1755 set_sci_style(sci
, SCE_R_BASEKWORD
, ft_id
, 4);
1756 set_sci_style(sci
, SCE_R_OTHERKWORD
, ft_id
, 5);
1757 set_sci_style(sci
, SCE_R_NUMBER
, ft_id
, 6);
1758 set_sci_style(sci
, SCE_R_STRING
, ft_id
, 7);
1759 set_sci_style(sci
, SCE_R_STRING2
, ft_id
, 8);
1760 set_sci_style(sci
, SCE_R_IDENTIFIER
, ft_id
, 9);
1761 set_sci_style(sci
, SCE_R_INFIX
, ft_id
, 10);
1762 set_sci_style(sci
, SCE_R_INFIXEOL
, ft_id
, 11);
1766 static void styleset_ruby_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1768 new_styleset(ft_id
, 35);
1769 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1770 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1771 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1772 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
1773 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[4]);
1774 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
1775 get_keyfile_style(config
, config_home
, "global", &style_sets
[ft_id
].styling
[6]);
1776 get_keyfile_style(config
, config_home
, "symbol", &style_sets
[ft_id
].styling
[7]);
1777 get_keyfile_style(config
, config_home
, "classname", &style_sets
[ft_id
].styling
[8]);
1778 get_keyfile_style(config
, config_home
, "defname", &style_sets
[ft_id
].styling
[9]);
1779 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
1780 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
1781 get_keyfile_style(config
, config_home
, "modulename", &style_sets
[ft_id
].styling
[12]);
1782 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[13]);
1783 get_keyfile_style(config
, config_home
, "instancevar", &style_sets
[ft_id
].styling
[14]);
1784 get_keyfile_style(config
, config_home
, "classvar", &style_sets
[ft_id
].styling
[15]);
1785 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[16]);
1786 get_keyfile_style(config
, config_home
, "heredelim", &style_sets
[ft_id
].styling
[17]);
1787 get_keyfile_style(config
, config_home
, "worddemoted", &style_sets
[ft_id
].styling
[18]);
1788 get_keyfile_style(config
, config_home
, "stdin", &style_sets
[ft_id
].styling
[19]);
1789 get_keyfile_style(config
, config_home
, "stdout", &style_sets
[ft_id
].styling
[20]);
1790 get_keyfile_style(config
, config_home
, "stderr", &style_sets
[ft_id
].styling
[21]);
1791 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[22]);
1792 get_keyfile_style(config
, config_home
, "regex", &style_sets
[ft_id
].styling
[23]);
1793 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[24]);
1794 get_keyfile_style(config
, config_home
, "here_qq", &style_sets
[ft_id
].styling
[25]);
1795 get_keyfile_style(config
, config_home
, "here_qx", &style_sets
[ft_id
].styling
[26]);
1796 get_keyfile_style(config
, config_home
, "string_q", &style_sets
[ft_id
].styling
[27]);
1797 get_keyfile_style(config
, config_home
, "string_qq", &style_sets
[ft_id
].styling
[28]);
1798 get_keyfile_style(config
, config_home
, "string_qx", &style_sets
[ft_id
].styling
[29]);
1799 get_keyfile_style(config
, config_home
, "string_qr", &style_sets
[ft_id
].styling
[30]);
1800 get_keyfile_style(config
, config_home
, "string_qw", &style_sets
[ft_id
].styling
[31]);
1801 get_keyfile_style(config
, config_home
, "upper_bound", &style_sets
[ft_id
].styling
[32]);
1802 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[33]);
1803 get_keyfile_style(config
, config_home
, "pod", &style_sets
[ft_id
].styling
[34]);
1805 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1806 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1807 style_sets
[ft_id
].keywords
[1] = NULL
;
1811 static void styleset_ruby(ScintillaObject
*sci
, gint ft_id
)
1813 apply_filetype_properties(sci
, SCLEX_RUBY
, ft_id
);
1815 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1817 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1818 set_sci_style(sci
, SCE_RB_DEFAULT
, ft_id
, 0);
1819 set_sci_style(sci
, SCE_RB_COMMENTLINE
, ft_id
, 1);
1820 set_sci_style(sci
, SCE_RB_NUMBER
, ft_id
, 2);
1821 set_sci_style(sci
, SCE_RB_STRING
, ft_id
, 3);
1822 set_sci_style(sci
, SCE_RB_CHARACTER
, ft_id
, 4);
1823 set_sci_style(sci
, SCE_RB_WORD
, ft_id
, 5);
1824 set_sci_style(sci
, SCE_RB_GLOBAL
, ft_id
, 6);
1825 set_sci_style(sci
, SCE_RB_SYMBOL
, ft_id
, 7);
1826 set_sci_style(sci
, SCE_RB_CLASSNAME
, ft_id
, 8);
1827 set_sci_style(sci
, SCE_RB_DEFNAME
, ft_id
, 9);
1828 set_sci_style(sci
, SCE_RB_OPERATOR
, ft_id
, 10);
1829 set_sci_style(sci
, SCE_RB_IDENTIFIER
, ft_id
, 11);
1830 set_sci_style(sci
, SCE_RB_MODULE_NAME
, ft_id
, 12);
1831 set_sci_style(sci
, SCE_RB_BACKTICKS
, ft_id
, 13);
1832 set_sci_style(sci
, SCE_RB_INSTANCE_VAR
, ft_id
, 14);
1833 set_sci_style(sci
, SCE_RB_CLASS_VAR
, ft_id
, 15);
1834 set_sci_style(sci
, SCE_RB_DATASECTION
, ft_id
, 16);
1835 set_sci_style(sci
, SCE_RB_HERE_DELIM
, ft_id
, 17);
1836 set_sci_style(sci
, SCE_RB_WORD_DEMOTED
, ft_id
, 18);
1837 set_sci_style(sci
, SCE_RB_STDIN
, ft_id
, 19);
1838 set_sci_style(sci
, SCE_RB_STDOUT
, ft_id
, 20);
1839 set_sci_style(sci
, SCE_RB_STDERR
, ft_id
, 21);
1840 set_sci_style(sci
, SCE_RB_DATASECTION
, ft_id
, 22);
1841 set_sci_style(sci
, SCE_RB_REGEX
, ft_id
, 23);
1842 set_sci_style(sci
, SCE_RB_HERE_Q
, ft_id
, 24);
1843 set_sci_style(sci
, SCE_RB_HERE_QQ
, ft_id
, 25);
1844 set_sci_style(sci
, SCE_RB_HERE_QX
, ft_id
, 26);
1845 set_sci_style(sci
, SCE_RB_STRING_Q
, ft_id
, 27);
1846 set_sci_style(sci
, SCE_RB_STRING_QQ
, ft_id
, 28);
1847 set_sci_style(sci
, SCE_RB_STRING_QX
, ft_id
, 29);
1848 set_sci_style(sci
, SCE_RB_STRING_QR
, ft_id
, 30);
1849 set_sci_style(sci
, SCE_RB_STRING_QW
, ft_id
, 31);
1850 set_sci_style(sci
, SCE_RB_UPPER_BOUND
, ft_id
, 32);
1851 set_sci_style(sci
, SCE_RB_ERROR
, ft_id
, 33);
1852 set_sci_style(sci
, SCE_RB_POD
, ft_id
, 34);
1856 static void styleset_sh_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1858 new_styleset(ft_id
, 14);
1859 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1860 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1861 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1862 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[3]);
1863 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
1864 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[5]);
1865 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
1866 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
1867 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[8]);
1868 get_keyfile_style(config
, config_home
, "param", &style_sets
[ft_id
].styling
[9]);
1869 get_keyfile_style(config
, config_home
, "scalar", &style_sets
[ft_id
].styling
[10]);
1870 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[11]);
1871 get_keyfile_style(config
, config_home
, "here_delim", &style_sets
[ft_id
].styling
[12]);
1872 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[13]);
1874 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1875 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1876 style_sets
[ft_id
].keywords
[1] = NULL
;
1880 static void styleset_sh(ScintillaObject
*sci
, gint ft_id
)
1882 apply_filetype_properties(sci
, SCLEX_BASH
, ft_id
);
1884 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1886 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1887 set_sci_style(sci
, SCE_SH_DEFAULT
, ft_id
, 0);
1888 set_sci_style(sci
, SCE_SH_COMMENTLINE
, ft_id
, 1);
1889 set_sci_style(sci
, SCE_SH_NUMBER
, ft_id
, 2);
1890 set_sci_style(sci
, SCE_SH_WORD
, ft_id
, 3);
1891 set_sci_style(sci
, SCE_SH_STRING
, ft_id
, 4);
1892 set_sci_style(sci
, SCE_SH_CHARACTER
, ft_id
, 5);
1893 set_sci_style(sci
, SCE_SH_OPERATOR
, ft_id
, 6);
1894 set_sci_style(sci
, SCE_SH_IDENTIFIER
, ft_id
, 7);
1895 set_sci_style(sci
, SCE_SH_BACKTICKS
, ft_id
, 8);
1896 set_sci_style(sci
, SCE_SH_PARAM
, ft_id
, 9);
1897 set_sci_style(sci
, SCE_SH_SCALAR
, ft_id
, 10);
1898 set_sci_style(sci
, SCE_SH_ERROR
, ft_id
, 11);
1899 set_sci_style(sci
, SCE_SH_HERE_DELIM
, ft_id
, 12);
1900 set_sci_style(sci
, SCE_SH_HERE_Q
, ft_id
, 13);
1904 static void styleset_xml(ScintillaObject
*sci
, gint ft_id
)
1906 apply_filetype_properties(sci
, SCLEX_XML
, ft_id
);
1908 /* use the same colouring for HTML; XML and so on */
1909 styleset_markup(sci
, FALSE
);
1913 static void styleset_docbook_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1915 new_styleset(ft_id
, 29);
1916 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1917 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[1]);
1918 get_keyfile_style(config
, config_home
, "tagunknown", &style_sets
[ft_id
].styling
[2]);
1919 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[3]);
1920 get_keyfile_style(config
, config_home
, "attributeunknown", &style_sets
[ft_id
].styling
[4]);
1921 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
1922 get_keyfile_style(config
, config_home
, "doublestring", &style_sets
[ft_id
].styling
[6]);
1923 get_keyfile_style(config
, config_home
, "singlestring", &style_sets
[ft_id
].styling
[7]);
1924 get_keyfile_style(config
, config_home
, "other", &style_sets
[ft_id
].styling
[8]);
1925 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[9]);
1926 get_keyfile_style(config
, config_home
, "entity", &style_sets
[ft_id
].styling
[10]);
1927 get_keyfile_style(config
, config_home
, "tagend", &style_sets
[ft_id
].styling
[11]);
1928 get_keyfile_style(config
, config_home
, "xmlstart", &style_sets
[ft_id
].styling
[12]);
1929 get_keyfile_style(config
, config_home
, "xmlend", &style_sets
[ft_id
].styling
[13]);
1930 get_keyfile_style(config
, config_home
, "cdata", &style_sets
[ft_id
].styling
[14]);
1931 get_keyfile_style(config
, config_home
, "question", &style_sets
[ft_id
].styling
[15]);
1932 get_keyfile_style(config
, config_home
, "value", &style_sets
[ft_id
].styling
[16]);
1933 get_keyfile_style(config
, config_home
, "xccomment", &style_sets
[ft_id
].styling
[17]);
1934 get_keyfile_style(config
, config_home
, "sgml_default", &style_sets
[ft_id
].styling
[18]);
1935 get_keyfile_style(config
, config_home
, "sgml_comment", &style_sets
[ft_id
].styling
[19]);
1936 get_keyfile_style(config
, config_home
, "sgml_special", &style_sets
[ft_id
].styling
[20]);
1937 get_keyfile_style(config
, config_home
, "sgml_command", &style_sets
[ft_id
].styling
[21]);
1938 get_keyfile_style(config
, config_home
, "sgml_doublestring", &style_sets
[ft_id
].styling
[22]);
1939 get_keyfile_style(config
, config_home
, "sgml_simplestring", &style_sets
[ft_id
].styling
[23]);
1940 get_keyfile_style(config
, config_home
, "sgml_1st_param", &style_sets
[ft_id
].styling
[24]);
1941 get_keyfile_style(config
, config_home
, "sgml_entity", &style_sets
[ft_id
].styling
[25]);
1942 get_keyfile_style(config
, config_home
, "sgml_block_default", &style_sets
[ft_id
].styling
[26]);
1943 get_keyfile_style(config
, config_home
, "sgml_1st_param_comment", &style_sets
[ft_id
].styling
[27]);
1944 get_keyfile_style(config
, config_home
, "sgml_error", &style_sets
[ft_id
].styling
[28]);
1946 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
1947 get_keyfile_keywords(config
, config_home
, "elements", ft_id
, 0);
1948 get_keyfile_keywords(config
, config_home
, "dtd", ft_id
, 1);
1949 style_sets
[ft_id
].keywords
[2] = NULL
;
1953 static void styleset_docbook(ScintillaObject
*sci
, gint ft_id
)
1955 apply_filetype_properties(sci
, SCLEX_XML
, ft_id
);
1957 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1958 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[1]);
1960 /* Unknown tags and attributes are highlighed in red.
1961 * If a tag is actually OK, it should be added in lower case to the htmlKeyWords string. */
1963 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1964 set_sci_style(sci
, SCE_H_DEFAULT
, ft_id
, 0);
1965 set_sci_style(sci
, SCE_H_TAG
, ft_id
, 1);
1966 set_sci_style(sci
, SCE_H_TAGUNKNOWN
, ft_id
, 2);
1967 set_sci_style(sci
, SCE_H_ATTRIBUTE
, ft_id
, 3);
1968 set_sci_style(sci
, SCE_H_ATTRIBUTEUNKNOWN
, ft_id
, 4);
1969 set_sci_style(sci
, SCE_H_NUMBER
, ft_id
, 5);
1970 set_sci_style(sci
, SCE_H_DOUBLESTRING
, ft_id
, 6);
1971 set_sci_style(sci
, SCE_H_SINGLESTRING
, ft_id
, 7);
1972 set_sci_style(sci
, SCE_H_OTHER
, ft_id
, 8);
1973 set_sci_style(sci
, SCE_H_COMMENT
, ft_id
, 9);
1974 set_sci_style(sci
, SCE_H_ENTITY
, ft_id
, 10);
1975 set_sci_style(sci
, SCE_H_TAGEND
, ft_id
, 11);
1976 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_XMLSTART
, 1);
1977 set_sci_style(sci
, SCE_H_XMLSTART
, ft_id
, 12);
1978 set_sci_style(sci
, SCE_H_XMLEND
, ft_id
, 13);
1979 set_sci_style(sci
, SCE_H_CDATA
, ft_id
, 14);
1980 set_sci_style(sci
, SCE_H_QUESTION
, ft_id
, 15);
1981 set_sci_style(sci
, SCE_H_VALUE
, ft_id
, 16);
1982 set_sci_style(sci
, SCE_H_XCCOMMENT
, ft_id
, 17);
1983 set_sci_style(sci
, SCE_H_SGML_DEFAULT
, ft_id
, 18);
1984 set_sci_style(sci
, SCE_H_DEFAULT
, ft_id
, 19);
1985 set_sci_style(sci
, SCE_H_SGML_SPECIAL
, ft_id
, 20);
1986 set_sci_style(sci
, SCE_H_SGML_COMMAND
, ft_id
, 21);
1987 set_sci_style(sci
, SCE_H_SGML_DOUBLESTRING
, ft_id
, 22);
1988 set_sci_style(sci
, SCE_H_SGML_SIMPLESTRING
, ft_id
, 23);
1989 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM
, ft_id
, 24);
1990 set_sci_style(sci
, SCE_H_SGML_ENTITY
, ft_id
, 25);
1991 set_sci_style(sci
, SCE_H_SGML_BLOCK_DEFAULT
, ft_id
, 26);
1992 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM_COMMENT
, ft_id
, 27);
1993 set_sci_style(sci
, SCE_H_SGML_ERROR
, ft_id
, 28);
1997 static void styleset_default(ScintillaObject
*sci
, gint ft_id
)
1999 SSM(sci
, SCI_SETLEXER
, SCLEX_NULL
, 0);
2001 /* we need to set STYLE_DEFAULT before we call SCI_STYLECLEARALL in styleset_common() */
2002 set_sci_style(sci
, STYLE_DEFAULT
, GEANY_FILETYPES_NONE
, GCS_DEFAULT
);
2004 styleset_common(sci
, ft_id
);
2008 static void styleset_css_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2010 new_styleset(ft_id
, 23);
2011 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2012 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2013 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[2]);
2014 get_keyfile_style(config
, config_home
, "class", &style_sets
[ft_id
].styling
[3]);
2015 get_keyfile_style(config
, config_home
, "pseudoclass", &style_sets
[ft_id
].styling
[4]);
2016 get_keyfile_style(config
, config_home
, "unknown_pseudoclass", &style_sets
[ft_id
].styling
[5]);
2017 get_keyfile_style(config
, config_home
, "unknown_identifier", &style_sets
[ft_id
].styling
[6]);
2018 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[7]);
2019 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[8]);
2020 get_keyfile_style(config
, config_home
, "doublestring", &style_sets
[ft_id
].styling
[9]);
2021 get_keyfile_style(config
, config_home
, "singlestring", &style_sets
[ft_id
].styling
[10]);
2022 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[11]);
2023 get_keyfile_style(config
, config_home
, "value", &style_sets
[ft_id
].styling
[12]);
2024 get_keyfile_style(config
, config_home
, "id", &style_sets
[ft_id
].styling
[13]);
2025 get_keyfile_style(config
, config_home
, "identifier2", &style_sets
[ft_id
].styling
[14]);
2026 get_keyfile_style(config
, config_home
, "important", &style_sets
[ft_id
].styling
[15]);
2027 get_keyfile_style(config
, config_home
, "directive", &style_sets
[ft_id
].styling
[16]);
2028 get_keyfile_style(config
, config_home
, "identifier3", &style_sets
[ft_id
].styling
[17]);
2029 get_keyfile_style(config
, config_home
, "pseudoelement", &style_sets
[ft_id
].styling
[18]);
2030 get_keyfile_style(config
, config_home
, "extended_identifier", &style_sets
[ft_id
].styling
[19]);
2031 get_keyfile_style(config
, config_home
, "extended_pseudoclass", &style_sets
[ft_id
].styling
[20]);
2032 get_keyfile_style(config
, config_home
, "extended_pseudoelement", &style_sets
[ft_id
].styling
[21]);
2033 get_keyfile_style(config
, config_home
, "media", &style_sets
[ft_id
].styling
[22]);
2035 style_sets
[ft_id
].keywords
= g_new(gchar
*, 9);
2036 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2037 get_keyfile_keywords(config
, config_home
, "pseudoclasses", ft_id
, 1);
2038 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 2);
2039 get_keyfile_keywords(config
, config_home
, "css3_properties", ft_id
, 3);
2040 get_keyfile_keywords(config
, config_home
, "pseudo_elements", ft_id
, 4);
2041 get_keyfile_keywords(config
, config_home
, "browser_css_properties", ft_id
, 5);
2042 get_keyfile_keywords(config
, config_home
, "browser_pseudo_classes", ft_id
, 6);
2043 get_keyfile_keywords(config
, config_home
, "browser_pseudo_elements", ft_id
, 7);
2044 style_sets
[ft_id
].keywords
[8] = NULL
;
2048 static void styleset_css(ScintillaObject
*sci
, gint ft_id
)
2052 apply_filetype_properties(sci
, SCLEX_CSS
, ft_id
);
2054 for (i
= 0; i
< 8; i
++)
2056 sci_set_keywords(sci
, i
, style_sets
[ft_id
].keywords
[i
]);
2059 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2060 set_sci_style(sci
, SCE_CSS_DEFAULT
, ft_id
, 0);
2061 set_sci_style(sci
, SCE_CSS_COMMENT
, ft_id
, 1);
2062 set_sci_style(sci
, SCE_CSS_TAG
, ft_id
, 2);
2063 set_sci_style(sci
, SCE_CSS_CLASS
, ft_id
, 3);
2064 set_sci_style(sci
, SCE_CSS_PSEUDOCLASS
, ft_id
, 4);
2065 set_sci_style(sci
, SCE_CSS_UNKNOWN_PSEUDOCLASS
, ft_id
, 5);
2066 set_sci_style(sci
, SCE_CSS_UNKNOWN_IDENTIFIER
, ft_id
, 6);
2067 set_sci_style(sci
, SCE_CSS_OPERATOR
, ft_id
, 7);
2068 set_sci_style(sci
, SCE_CSS_IDENTIFIER
, ft_id
, 8);
2069 set_sci_style(sci
, SCE_CSS_DOUBLESTRING
, ft_id
, 9);
2070 set_sci_style(sci
, SCE_CSS_SINGLESTRING
, ft_id
, 10);
2071 set_sci_style(sci
, SCE_CSS_ATTRIBUTE
, ft_id
, 11);
2072 set_sci_style(sci
, SCE_CSS_VALUE
, ft_id
, 12);
2073 set_sci_style(sci
, SCE_CSS_ID
, ft_id
, 13);
2074 set_sci_style(sci
, SCE_CSS_IDENTIFIER2
, ft_id
, 14);
2075 set_sci_style(sci
, SCE_CSS_IMPORTANT
, ft_id
, 15);
2076 set_sci_style(sci
, SCE_CSS_DIRECTIVE
, ft_id
, 16);
2077 set_sci_style(sci
, SCE_CSS_IDENTIFIER3
, ft_id
, 17);
2078 set_sci_style(sci
, SCE_CSS_PSEUDOELEMENT
, ft_id
, 18);
2079 set_sci_style(sci
, SCE_CSS_EXTENDED_IDENTIFIER
, ft_id
, 19);
2080 set_sci_style(sci
, SCE_CSS_EXTENDED_PSEUDOCLASS
, ft_id
, 20);
2081 set_sci_style(sci
, SCE_CSS_EXTENDED_PSEUDOELEMENT
, ft_id
, 21);
2082 set_sci_style(sci
, SCE_CSS_MEDIA
, ft_id
, 22);
2086 static void styleset_nsis_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2088 new_styleset(ft_id
, 19);
2089 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2090 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2091 get_keyfile_style(config
, config_home
, "stringdq", &style_sets
[ft_id
].styling
[2]);
2092 get_keyfile_style(config
, config_home
, "stringlq", &style_sets
[ft_id
].styling
[3]);
2093 get_keyfile_style(config
, config_home
, "stringrq", &style_sets
[ft_id
].styling
[4]);
2094 get_keyfile_style(config
, config_home
, "function", &style_sets
[ft_id
].styling
[5]);
2095 get_keyfile_style(config
, config_home
, "variable", &style_sets
[ft_id
].styling
[6]);
2096 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[7]);
2097 get_keyfile_style(config
, config_home
, "userdefined", &style_sets
[ft_id
].styling
[8]);
2098 get_keyfile_style(config
, config_home
, "sectiondef", &style_sets
[ft_id
].styling
[9]);
2099 get_keyfile_style(config
, config_home
, "subsectiondef", &style_sets
[ft_id
].styling
[10]);
2100 get_keyfile_style(config
, config_home
, "ifdefinedef", &style_sets
[ft_id
].styling
[11]);
2101 get_keyfile_style(config
, config_home
, "macrodef", &style_sets
[ft_id
].styling
[12]);
2102 get_keyfile_style(config
, config_home
, "stringvar", &style_sets
[ft_id
].styling
[13]);
2103 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[14]);
2104 get_keyfile_style(config
, config_home
, "sectiongroup", &style_sets
[ft_id
].styling
[15]);
2105 get_keyfile_style(config
, config_home
, "pageex", &style_sets
[ft_id
].styling
[16]);
2106 get_keyfile_style(config
, config_home
, "functiondef", &style_sets
[ft_id
].styling
[17]);
2107 get_keyfile_style(config
, config_home
, "commentbox", &style_sets
[ft_id
].styling
[18]);
2109 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
2110 get_keyfile_keywords(config
, config_home
, "functions", ft_id
, 0);
2111 get_keyfile_keywords(config
, config_home
, "variables", ft_id
, 1);
2112 get_keyfile_keywords(config
, config_home
, "lables", ft_id
, 2);
2113 get_keyfile_keywords(config
, config_home
, "userdefined", ft_id
, 3);
2114 style_sets
[ft_id
].keywords
[4] = NULL
;
2118 static void styleset_nsis(ScintillaObject
*sci
, gint ft_id
)
2120 apply_filetype_properties(sci
, SCLEX_NSIS
, ft_id
);
2122 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2123 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2124 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2125 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2127 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2128 set_sci_style(sci
, SCE_NSIS_DEFAULT
, ft_id
, 0);
2129 set_sci_style(sci
, SCE_NSIS_COMMENT
, ft_id
, 1);
2130 set_sci_style(sci
, SCE_NSIS_STRINGDQ
, ft_id
, 2);
2131 set_sci_style(sci
, SCE_NSIS_STRINGLQ
, ft_id
, 3);
2132 set_sci_style(sci
, SCE_NSIS_STRINGRQ
, ft_id
, 4);
2133 set_sci_style(sci
, SCE_NSIS_FUNCTION
, ft_id
, 5);
2134 set_sci_style(sci
, SCE_NSIS_VARIABLE
, ft_id
, 6);
2135 set_sci_style(sci
, SCE_NSIS_LABEL
, ft_id
, 7);
2136 set_sci_style(sci
, SCE_NSIS_USERDEFINED
, ft_id
, 8);
2137 set_sci_style(sci
, SCE_NSIS_SECTIONDEF
, ft_id
, 9);
2138 set_sci_style(sci
, SCE_NSIS_SUBSECTIONDEF
, ft_id
, 10);
2139 set_sci_style(sci
, SCE_NSIS_IFDEFINEDEF
, ft_id
, 11);
2140 set_sci_style(sci
, SCE_NSIS_MACRODEF
, ft_id
, 12);
2141 set_sci_style(sci
, SCE_NSIS_STRINGVAR
, ft_id
, 13);
2142 set_sci_style(sci
, SCE_NSIS_NUMBER
, ft_id
, 14);
2143 set_sci_style(sci
, SCE_NSIS_SECTIONGROUP
, ft_id
, 15);
2144 set_sci_style(sci
, SCE_NSIS_PAGEEX
, ft_id
, 16);
2145 set_sci_style(sci
, SCE_NSIS_FUNCTIONDEF
, ft_id
, 17);
2146 set_sci_style(sci
, SCE_NSIS_COMMENTBOX
, ft_id
, 18);
2150 static void styleset_po_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2152 new_styleset(ft_id
, 9);
2153 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2154 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2155 get_keyfile_style(config
, config_home
, "msgid", &style_sets
[ft_id
].styling
[2]);
2156 get_keyfile_style(config
, config_home
, "msgid_text", &style_sets
[ft_id
].styling
[3]);
2157 get_keyfile_style(config
, config_home
, "msgstr", &style_sets
[ft_id
].styling
[4]);
2158 get_keyfile_style(config
, config_home
, "msgstr_text", &style_sets
[ft_id
].styling
[5]);
2159 get_keyfile_style(config
, config_home
, "msgctxt", &style_sets
[ft_id
].styling
[6]);
2160 get_keyfile_style(config
, config_home
, "msgctxt_text", &style_sets
[ft_id
].styling
[7]);
2161 get_keyfile_style(config
, config_home
, "fuzzy", &style_sets
[ft_id
].styling
[8]);
2163 style_sets
[ft_id
].keywords
= NULL
;
2167 static void styleset_po(ScintillaObject
*sci
, gint ft_id
)
2169 apply_filetype_properties(sci
, SCLEX_PO
, ft_id
);
2171 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2172 set_sci_style(sci
, SCE_PO_DEFAULT
, ft_id
, 0);
2173 set_sci_style(sci
, SCE_PO_COMMENT
, ft_id
, 1);
2174 set_sci_style(sci
, SCE_PO_MSGID
, ft_id
, 2);
2175 set_sci_style(sci
, SCE_PO_MSGID_TEXT
, ft_id
, 3);
2176 set_sci_style(sci
, SCE_PO_MSGSTR
, ft_id
, 4);
2177 set_sci_style(sci
, SCE_PO_MSGSTR_TEXT
, ft_id
, 5);
2178 set_sci_style(sci
, SCE_PO_MSGCTXT
, ft_id
, 6);
2179 set_sci_style(sci
, SCE_PO_MSGCTXT_TEXT
, ft_id
, 7);
2180 set_sci_style(sci
, SCE_PO_FUZZY
, ft_id
, 8);
2184 static void styleset_conf_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2186 new_styleset(ft_id
, 6);
2187 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2188 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2189 get_keyfile_style(config
, config_home
, "section", &style_sets
[ft_id
].styling
[2]);
2190 get_keyfile_style(config
, config_home
, "key", &style_sets
[ft_id
].styling
[3]);
2191 get_keyfile_style(config
, config_home
, "assignment", &style_sets
[ft_id
].styling
[4]);
2192 get_keyfile_style(config
, config_home
, "defval", &style_sets
[ft_id
].styling
[5]);
2194 style_sets
[ft_id
].keywords
= NULL
;
2198 static void styleset_conf(ScintillaObject
*sci
, gint ft_id
)
2200 apply_filetype_properties(sci
, SCLEX_PROPERTIES
, ft_id
);
2202 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2203 set_sci_style(sci
, SCE_PROPS_DEFAULT
, ft_id
, 0);
2204 set_sci_style(sci
, SCE_PROPS_COMMENT
, ft_id
, 1);
2205 set_sci_style(sci
, SCE_PROPS_SECTION
, ft_id
, 2);
2206 set_sci_style(sci
, SCE_PROPS_KEY
, ft_id
, 3);
2207 set_sci_style(sci
, SCE_PROPS_ASSIGNMENT
, ft_id
, 4);
2208 set_sci_style(sci
, SCE_PROPS_DEFVAL
, ft_id
, 5);
2212 static void styleset_asm_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2214 new_styleset(ft_id
, 15);
2215 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2216 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2217 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2218 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2219 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2220 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2221 get_keyfile_style(config
, config_home
, "cpuinstruction", &style_sets
[ft_id
].styling
[6]);
2222 get_keyfile_style(config
, config_home
, "mathinstruction", &style_sets
[ft_id
].styling
[7]);
2223 get_keyfile_style(config
, config_home
, "register", &style_sets
[ft_id
].styling
[8]);
2224 get_keyfile_style(config
, config_home
, "directive", &style_sets
[ft_id
].styling
[9]);
2225 get_keyfile_style(config
, config_home
, "directiveoperand", &style_sets
[ft_id
].styling
[10]);
2226 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[11]);
2227 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
2228 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2229 get_keyfile_style(config
, config_home
, "extinstruction", &style_sets
[ft_id
].styling
[14]);
2231 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2232 get_keyfile_keywords(config
, config_home
, "instructions", ft_id
, 0);
2233 get_keyfile_keywords(config
, config_home
, "registers", ft_id
, 1);
2234 get_keyfile_keywords(config
, config_home
, "directives", ft_id
, 2);
2235 style_sets
[ft_id
].keywords
[3] = NULL
;
2239 static void styleset_asm(ScintillaObject
*sci
, gint ft_id
)
2241 apply_filetype_properties(sci
, SCLEX_ASM
, ft_id
);
2243 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2244 /*sci_set_keywords(sci, 1, style_sets[ft_id].keywords[0]);*/
2245 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[1]);
2246 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[2]);
2247 /*sci_set_keywords(sci, 5, style_sets[ft_id].keywords[0]);*/
2249 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2250 set_sci_style(sci
, SCE_ASM_DEFAULT
, ft_id
, 0);
2251 set_sci_style(sci
, SCE_ASM_COMMENT
, ft_id
, 1);
2252 set_sci_style(sci
, SCE_ASM_NUMBER
, ft_id
, 2);
2253 set_sci_style(sci
, SCE_ASM_STRING
, ft_id
, 3);
2254 set_sci_style(sci
, SCE_ASM_OPERATOR
, ft_id
, 4);
2255 set_sci_style(sci
, SCE_ASM_IDENTIFIER
, ft_id
, 5);
2256 set_sci_style(sci
, SCE_ASM_CPUINSTRUCTION
, ft_id
, 6);
2257 set_sci_style(sci
, SCE_ASM_MATHINSTRUCTION
, ft_id
, 7);
2258 set_sci_style(sci
, SCE_ASM_REGISTER
, ft_id
, 8);
2259 set_sci_style(sci
, SCE_ASM_DIRECTIVE
, ft_id
, 9);
2260 set_sci_style(sci
, SCE_ASM_DIRECTIVEOPERAND
, ft_id
, 10);
2261 set_sci_style(sci
, SCE_ASM_COMMENTBLOCK
, ft_id
, 11);
2262 set_sci_style(sci
, SCE_ASM_CHARACTER
, ft_id
, 12);
2263 set_sci_style(sci
, SCE_ASM_STRINGEOL
, ft_id
, 13);
2264 set_sci_style(sci
, SCE_ASM_EXTINSTRUCTION
, ft_id
, 14);
2268 static void styleset_f77_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2270 new_styleset(ft_id
, 15);
2271 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2272 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2273 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2274 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2275 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2276 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2277 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[6]);
2278 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[7]);
2279 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[8]);
2280 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[9]);
2281 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[10]);
2282 get_keyfile_style(config
, config_home
, "operator2", &style_sets
[ft_id
].styling
[11]);
2283 get_keyfile_style(config
, config_home
, "continuation", &style_sets
[ft_id
].styling
[12]);
2284 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2285 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[14]);
2287 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2288 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2289 get_keyfile_keywords(config
, config_home
, "intrinsic_functions", ft_id
, 1);
2290 get_keyfile_keywords(config
, config_home
, "user_functions", ft_id
, 2);
2291 style_sets
[ft_id
].keywords
[3] = NULL
;
2295 static void styleset_f77(ScintillaObject
*sci
, gint ft_id
)
2297 apply_filetype_properties(sci
, SCLEX_F77
, ft_id
);
2299 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2300 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2301 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2303 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2304 set_sci_style(sci
, SCE_F_DEFAULT
, ft_id
, 0);
2305 set_sci_style(sci
, SCE_F_COMMENT
, ft_id
, 1);
2306 set_sci_style(sci
, SCE_F_NUMBER
, ft_id
, 2);
2307 set_sci_style(sci
, SCE_F_STRING1
, ft_id
, 3);
2308 set_sci_style(sci
, SCE_F_OPERATOR
, ft_id
, 4);
2309 set_sci_style(sci
, SCE_F_IDENTIFIER
, ft_id
, 5);
2310 set_sci_style(sci
, SCE_F_STRING2
, ft_id
, 6);
2311 set_sci_style(sci
, SCE_F_WORD
, ft_id
, 7);
2312 set_sci_style(sci
, SCE_F_WORD2
, ft_id
, 8);
2313 set_sci_style(sci
, SCE_F_WORD3
, ft_id
, 9);
2314 set_sci_style(sci
, SCE_F_PREPROCESSOR
, ft_id
, 10);
2315 set_sci_style(sci
, SCE_F_OPERATOR2
, ft_id
, 11);
2316 set_sci_style(sci
, SCE_F_CONTINUATION
, ft_id
, 12);
2317 set_sci_style(sci
, SCE_F_STRINGEOL
, ft_id
, 13);
2318 set_sci_style(sci
, SCE_F_LABEL
, ft_id
, 14);
2322 static void styleset_forth_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2324 new_styleset(ft_id
, 12);
2326 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2327 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2328 get_keyfile_style(config
, config_home
, "commentml", &style_sets
[ft_id
].styling
[2]);
2329 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[3]);
2330 get_keyfile_style(config
, config_home
, "control", &style_sets
[ft_id
].styling
[4]);
2331 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[5]);
2332 get_keyfile_style(config
, config_home
, "defword", &style_sets
[ft_id
].styling
[6]);
2333 get_keyfile_style(config
, config_home
, "preword1", &style_sets
[ft_id
].styling
[7]);
2334 get_keyfile_style(config
, config_home
, "preword2", &style_sets
[ft_id
].styling
[8]);
2335 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[9]);
2336 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[10]);
2337 get_keyfile_style(config
, config_home
, "locale", &style_sets
[ft_id
].styling
[11]);
2339 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2340 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2341 style_sets
[ft_id
].keywords
[1] = NULL
;
2346 static void styleset_forth(ScintillaObject
*sci
, gint ft_id
)
2348 apply_filetype_properties(sci
, SCLEX_FORTH
, ft_id
);
2350 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2352 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2353 set_sci_style(sci
, SCE_FORTH_DEFAULT
, ft_id
, 0);
2354 set_sci_style(sci
, SCE_FORTH_COMMENT
, ft_id
, 1);
2355 set_sci_style(sci
, SCE_FORTH_COMMENT_ML
, ft_id
, 2);
2356 set_sci_style(sci
, SCE_FORTH_IDENTIFIER
, ft_id
, 3);
2357 set_sci_style(sci
, SCE_FORTH_CONTROL
, ft_id
, 4);
2358 set_sci_style(sci
, SCE_FORTH_KEYWORD
, ft_id
, 5);
2359 set_sci_style(sci
, SCE_FORTH_DEFWORD
, ft_id
, 6);
2360 set_sci_style(sci
, SCE_FORTH_PREWORD1
, ft_id
, 7);
2361 set_sci_style(sci
, SCE_FORTH_PREWORD2
, ft_id
, 8);
2362 set_sci_style(sci
, SCE_FORTH_NUMBER
, ft_id
, 9);
2363 set_sci_style(sci
, SCE_FORTH_STRING
, ft_id
, 10);
2364 set_sci_style(sci
, SCE_FORTH_LOCALE
, ft_id
, 11);
2368 static void styleset_fortran_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2370 new_styleset(ft_id
, 15);
2371 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2372 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2373 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2374 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2375 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2376 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2377 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[6]);
2378 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[7]);
2379 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[8]);
2380 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[9]);
2381 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[10]);
2382 get_keyfile_style(config
, config_home
, "operator2", &style_sets
[ft_id
].styling
[11]);
2383 get_keyfile_style(config
, config_home
, "continuation", &style_sets
[ft_id
].styling
[12]);
2384 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2385 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[14]);
2387 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2388 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2389 get_keyfile_keywords(config
, config_home
, "intrinsic_functions", ft_id
, 1);
2390 get_keyfile_keywords(config
, config_home
, "user_functions", ft_id
, 2);
2391 style_sets
[ft_id
].keywords
[3] = NULL
;
2395 static void styleset_fortran(ScintillaObject
*sci
, gint ft_id
)
2397 apply_filetype_properties(sci
, SCLEX_FORTRAN
, ft_id
);
2399 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2400 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2401 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2403 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2404 set_sci_style(sci
, SCE_F_DEFAULT
, ft_id
, 0);
2405 set_sci_style(sci
, SCE_F_COMMENT
, ft_id
, 1);
2406 set_sci_style(sci
, SCE_F_NUMBER
, ft_id
, 2);
2407 set_sci_style(sci
, SCE_F_STRING1
, ft_id
, 3);
2408 set_sci_style(sci
, SCE_F_OPERATOR
, ft_id
, 4);
2409 set_sci_style(sci
, SCE_F_IDENTIFIER
, ft_id
, 5);
2410 set_sci_style(sci
, SCE_F_STRING2
, ft_id
, 6);
2411 set_sci_style(sci
, SCE_F_WORD
, ft_id
, 7);
2412 set_sci_style(sci
, SCE_F_WORD2
, ft_id
, 8);
2413 set_sci_style(sci
, SCE_F_WORD3
, ft_id
, 9);
2414 set_sci_style(sci
, SCE_F_PREPROCESSOR
, ft_id
, 10);
2415 set_sci_style(sci
, SCE_F_OPERATOR2
, ft_id
, 11);
2416 set_sci_style(sci
, SCE_F_CONTINUATION
, ft_id
, 12);
2417 set_sci_style(sci
, SCE_F_STRINGEOL
, ft_id
, 13);
2418 set_sci_style(sci
, SCE_F_LABEL
, ft_id
, 14);
2422 static void styleset_sql_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2424 new_styleset(ft_id
, 15);
2425 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2426 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2427 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2428 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
2429 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2430 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
2431 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[6]);
2432 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
2433 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[8]);
2434 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[9]);
2435 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[10]);
2436 get_keyfile_style(config
, config_home
, "sqlplus", &style_sets
[ft_id
].styling
[11]);
2437 get_keyfile_style(config
, config_home
, "sqlplus_prompt", &style_sets
[ft_id
].styling
[12]);
2438 get_keyfile_style(config
, config_home
, "sqlplus_comment", &style_sets
[ft_id
].styling
[13]);
2439 get_keyfile_style(config
, config_home
, "quotedidentifier", &style_sets
[ft_id
].styling
[14]);
2441 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2442 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2443 style_sets
[ft_id
].keywords
[1] = NULL
;
2447 static void styleset_sql(ScintillaObject
*sci
, gint ft_id
)
2449 apply_filetype_properties(sci
, SCLEX_SQL
, ft_id
);
2451 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2453 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2454 set_sci_style(sci
, SCE_SQL_DEFAULT
, ft_id
, 0);
2455 set_sci_style(sci
, SCE_SQL_COMMENT
, ft_id
, 1);
2456 set_sci_style(sci
, SCE_SQL_COMMENTLINE
, ft_id
, 2);
2457 set_sci_style(sci
, SCE_SQL_COMMENTDOC
, ft_id
, 3);
2458 set_sci_style(sci
, SCE_SQL_NUMBER
, ft_id
, 4);
2459 set_sci_style(sci
, SCE_SQL_WORD
, ft_id
, 5);
2460 set_sci_style(sci
, SCE_SQL_WORD2
, ft_id
, 6);
2461 set_sci_style(sci
, SCE_SQL_STRING
, ft_id
, 7);
2462 set_sci_style(sci
, SCE_SQL_CHARACTER
, ft_id
, 8);
2463 set_sci_style(sci
, SCE_SQL_OPERATOR
, ft_id
, 9);
2464 set_sci_style(sci
, SCE_SQL_IDENTIFIER
, ft_id
, 10);
2465 set_sci_style(sci
, SCE_SQL_SQLPLUS
, ft_id
, 11);
2466 set_sci_style(sci
, SCE_SQL_SQLPLUS_PROMPT
, ft_id
, 12);
2467 set_sci_style(sci
, SCE_SQL_SQLPLUS_COMMENT
, ft_id
, 13);
2468 set_sci_style(sci
, SCE_SQL_QUOTEDIDENTIFIER
, ft_id
, 14);
2472 static void styleset_markdown_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2474 new_styleset(ft_id
, 17);
2476 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2477 get_keyfile_style(config
, config_home
, "strong", &style_sets
[ft_id
].styling
[1]);
2478 get_keyfile_style(config
, config_home
, "emphasis", &style_sets
[ft_id
].styling
[2]);
2479 get_keyfile_style(config
, config_home
, "header1", &style_sets
[ft_id
].styling
[3]);
2480 get_keyfile_style(config
, config_home
, "header2", &style_sets
[ft_id
].styling
[4]);
2481 get_keyfile_style(config
, config_home
, "header3", &style_sets
[ft_id
].styling
[5]);
2482 get_keyfile_style(config
, config_home
, "header4", &style_sets
[ft_id
].styling
[6]);
2483 get_keyfile_style(config
, config_home
, "header5", &style_sets
[ft_id
].styling
[7]);
2484 get_keyfile_style(config
, config_home
, "header6", &style_sets
[ft_id
].styling
[8]);
2485 get_keyfile_style(config
, config_home
, "ulist_item", &style_sets
[ft_id
].styling
[9]);
2486 get_keyfile_style(config
, config_home
, "olist_item", &style_sets
[ft_id
].styling
[10]);
2487 get_keyfile_style(config
, config_home
, "blockquote", &style_sets
[ft_id
].styling
[11]);
2488 get_keyfile_style(config
, config_home
, "strikeout", &style_sets
[ft_id
].styling
[12]);
2489 get_keyfile_style(config
, config_home
, "hrule", &style_sets
[ft_id
].styling
[13]);
2490 get_keyfile_style(config
, config_home
, "link", &style_sets
[ft_id
].styling
[14]);
2491 get_keyfile_style(config
, config_home
, "code", &style_sets
[ft_id
].styling
[15]);
2492 get_keyfile_style(config
, config_home
, "codebk", &style_sets
[ft_id
].styling
[16]);
2494 style_sets
[ft_id
].keywords
= NULL
;
2498 static void styleset_markdown(ScintillaObject
*sci
, gint ft_id
)
2500 apply_filetype_properties(sci
, SCLEX_MARKDOWN
, ft_id
);
2502 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2503 set_sci_style(sci
, SCE_MARKDOWN_DEFAULT
, ft_id
, 0);
2504 set_sci_style(sci
, SCE_MARKDOWN_LINE_BEGIN
, ft_id
, 0);
2505 set_sci_style(sci
, SCE_MARKDOWN_PRECHAR
, ft_id
, 0);
2506 set_sci_style(sci
, SCE_MARKDOWN_STRONG1
, ft_id
, 1);
2507 set_sci_style(sci
, SCE_MARKDOWN_STRONG2
, ft_id
, 1);
2508 set_sci_style(sci
, SCE_MARKDOWN_EM1
, ft_id
, 2);
2509 set_sci_style(sci
, SCE_MARKDOWN_EM2
, ft_id
, 2);
2510 set_sci_style(sci
, SCE_MARKDOWN_HEADER1
, ft_id
, 3);
2511 set_sci_style(sci
, SCE_MARKDOWN_HEADER2
, ft_id
, 4);
2512 set_sci_style(sci
, SCE_MARKDOWN_HEADER3
, ft_id
, 5);
2513 set_sci_style(sci
, SCE_MARKDOWN_HEADER4
, ft_id
, 6);
2514 set_sci_style(sci
, SCE_MARKDOWN_HEADER5
, ft_id
, 7);
2515 set_sci_style(sci
, SCE_MARKDOWN_HEADER6
, ft_id
, 8);
2516 set_sci_style(sci
, SCE_MARKDOWN_ULIST_ITEM
, ft_id
, 9);
2517 set_sci_style(sci
, SCE_MARKDOWN_OLIST_ITEM
, ft_id
, 10);
2518 set_sci_style(sci
, SCE_MARKDOWN_BLOCKQUOTE
, ft_id
, 11);
2519 set_sci_style(sci
, SCE_MARKDOWN_STRIKEOUT
, ft_id
, 12);
2520 set_sci_style(sci
, SCE_MARKDOWN_HRULE
, ft_id
, 13);
2521 set_sci_style(sci
, SCE_MARKDOWN_LINK
, ft_id
, 14);
2522 set_sci_style(sci
, SCE_MARKDOWN_CODE
, ft_id
, 15);
2523 set_sci_style(sci
, SCE_MARKDOWN_CODE2
, ft_id
, 15);
2524 set_sci_style(sci
, SCE_MARKDOWN_CODEBK
, ft_id
, 16);
2528 static void styleset_haskell_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2530 new_styleset(ft_id
, 17);
2532 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2533 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
2534 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[2]);
2535 get_keyfile_style(config
, config_home
, "commentblock2", &style_sets
[ft_id
].styling
[3]);
2536 get_keyfile_style(config
, config_home
, "commentblock3", &style_sets
[ft_id
].styling
[4]);
2537 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2538 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[6]);
2539 get_keyfile_style(config
, config_home
, "import", &style_sets
[ft_id
].styling
[7]);
2540 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[8]);
2541 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[9]);
2542 get_keyfile_style(config
, config_home
, "class", &style_sets
[ft_id
].styling
[10]);
2543 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[11]);
2544 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[12]);
2545 get_keyfile_style(config
, config_home
, "instance", &style_sets
[ft_id
].styling
[13]);
2546 get_keyfile_style(config
, config_home
, "capital", &style_sets
[ft_id
].styling
[14]);
2547 get_keyfile_style(config
, config_home
, "module", &style_sets
[ft_id
].styling
[15]);
2548 get_keyfile_style(config
, config_home
, "data", &style_sets
[ft_id
].styling
[16]);
2550 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2551 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2552 style_sets
[ft_id
].keywords
[1] = NULL
;
2556 static void styleset_haskell(ScintillaObject
*sci
, gint ft_id
)
2558 apply_filetype_properties(sci
, SCLEX_HASKELL
, ft_id
);
2560 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2562 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2563 set_sci_style(sci
, SCE_HA_DEFAULT
, ft_id
, 0);
2564 set_sci_style(sci
, SCE_HA_COMMENTLINE
, ft_id
, 1);
2565 set_sci_style(sci
, SCE_HA_COMMENTBLOCK
, ft_id
, 2);
2566 set_sci_style(sci
, SCE_HA_COMMENTBLOCK2
, ft_id
, 3);
2567 set_sci_style(sci
, SCE_HA_COMMENTBLOCK3
, ft_id
, 4);
2568 set_sci_style(sci
, SCE_HA_NUMBER
, ft_id
, 5);
2569 set_sci_style(sci
, SCE_HA_KEYWORD
, ft_id
, 6);
2570 set_sci_style(sci
, SCE_HA_IMPORT
, ft_id
, 7);
2571 set_sci_style(sci
, SCE_HA_STRING
, ft_id
, 8);
2572 set_sci_style(sci
, SCE_HA_CHARACTER
, ft_id
, 9);
2573 set_sci_style(sci
, SCE_HA_CLASS
, ft_id
, 10);
2574 set_sci_style(sci
, SCE_HA_OPERATOR
, ft_id
, 11);
2575 set_sci_style(sci
, SCE_HA_IDENTIFIER
, ft_id
, 12);
2576 set_sci_style(sci
, SCE_HA_INSTANCE
, ft_id
, 13);
2577 set_sci_style(sci
, SCE_HA_CAPITAL
, ft_id
, 14);
2578 set_sci_style(sci
, SCE_HA_MODULE
, ft_id
, 15);
2579 set_sci_style(sci
, SCE_HA_DATA
, ft_id
, 16);
2583 static void styleset_caml_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2585 new_styleset(ft_id
, 14);
2587 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2588 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2589 get_keyfile_style(config
, config_home
, "comment1", &style_sets
[ft_id
].styling
[2]);
2590 get_keyfile_style(config
, config_home
, "comment2", &style_sets
[ft_id
].styling
[3]);
2591 get_keyfile_style(config
, config_home
, "comment3", &style_sets
[ft_id
].styling
[4]);
2592 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2593 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[6]);
2594 get_keyfile_style(config
, config_home
, "keyword2", &style_sets
[ft_id
].styling
[7]);
2595 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[8]);
2596 get_keyfile_style(config
, config_home
, "char", &style_sets
[ft_id
].styling
[9]);
2597 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
2598 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
2599 get_keyfile_style(config
, config_home
, "tagname", &style_sets
[ft_id
].styling
[12]);
2600 get_keyfile_style(config
, config_home
, "linenum", &style_sets
[ft_id
].styling
[13]);
2602 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
2603 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2604 get_keyfile_keywords(config
, config_home
, "keywords_optional", ft_id
, 1);
2605 style_sets
[ft_id
].keywords
[2] = NULL
;
2609 static void styleset_caml(ScintillaObject
*sci
, gint ft_id
)
2611 apply_filetype_properties(sci
, SCLEX_CAML
, ft_id
);
2613 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2614 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2616 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2617 set_sci_style(sci
, SCE_CAML_DEFAULT
, ft_id
, 0);
2618 set_sci_style(sci
, SCE_CAML_COMMENT
, ft_id
, 1);
2619 set_sci_style(sci
, SCE_CAML_COMMENT1
, ft_id
, 2);
2620 set_sci_style(sci
, SCE_CAML_COMMENT2
, ft_id
, 3);
2621 set_sci_style(sci
, SCE_CAML_COMMENT3
, ft_id
, 4);
2622 set_sci_style(sci
, SCE_CAML_NUMBER
, ft_id
, 5);
2623 set_sci_style(sci
, SCE_CAML_KEYWORD
, ft_id
, 6);
2624 set_sci_style(sci
, SCE_CAML_KEYWORD2
, ft_id
, 7);
2625 set_sci_style(sci
, SCE_CAML_STRING
, ft_id
, 8);
2626 set_sci_style(sci
, SCE_CAML_CHAR
, ft_id
, 9);
2627 set_sci_style(sci
, SCE_CAML_OPERATOR
, ft_id
, 10);
2628 set_sci_style(sci
, SCE_CAML_IDENTIFIER
, ft_id
, 11);
2629 set_sci_style(sci
, SCE_CAML_TAGNAME
, ft_id
, 12);
2630 set_sci_style(sci
, SCE_CAML_LINENUM
, ft_id
, 13);
2634 static void styleset_tcl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2636 new_styleset(ft_id
, 16);
2637 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2638 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2639 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2640 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2641 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2642 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2643 get_keyfile_style(config
, config_home
, "wordinquote", &style_sets
[ft_id
].styling
[6]);
2644 get_keyfile_style(config
, config_home
, "inquote", &style_sets
[ft_id
].styling
[7]);
2645 get_keyfile_style(config
, config_home
, "substitution", &style_sets
[ft_id
].styling
[8]);
2646 get_keyfile_style(config
, config_home
, "modifier", &style_sets
[ft_id
].styling
[9]);
2647 get_keyfile_style(config
, config_home
, "expand", &style_sets
[ft_id
].styling
[10]);
2648 get_keyfile_style(config
, config_home
, "wordtcl", &style_sets
[ft_id
].styling
[11]);
2649 get_keyfile_style(config
, config_home
, "wordtk", &style_sets
[ft_id
].styling
[12]);
2650 get_keyfile_style(config
, config_home
, "worditcl", &style_sets
[ft_id
].styling
[13]);
2651 get_keyfile_style(config
, config_home
, "wordtkcmds", &style_sets
[ft_id
].styling
[14]);
2652 get_keyfile_style(config
, config_home
, "wordexpand", &style_sets
[ft_id
].styling
[15]);
2654 style_sets
[ft_id
].keywords
= g_new(gchar
*, 6);
2655 get_keyfile_keywords(config
, config_home
, "tcl", ft_id
, 0);
2656 get_keyfile_keywords(config
, config_home
, "tk", ft_id
, 1);
2657 get_keyfile_keywords(config
, config_home
, "itcl", ft_id
, 2);
2658 get_keyfile_keywords(config
, config_home
, "tkcommands", ft_id
, 3);
2659 get_keyfile_keywords(config
, config_home
, "expand", ft_id
, 4);
2660 style_sets
[ft_id
].keywords
[5] = NULL
;
2664 static void styleset_tcl(ScintillaObject
*sci
, gint ft_id
)
2666 apply_filetype_properties(sci
, SCLEX_TCL
, ft_id
);
2668 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2669 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2670 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2671 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2672 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
2674 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2675 set_sci_style(sci
, SCE_TCL_DEFAULT
, ft_id
, 0);
2676 set_sci_style(sci
, SCE_TCL_COMMENT
, ft_id
, 1);
2677 set_sci_style(sci
, SCE_TCL_COMMENTLINE
, ft_id
, 2);
2678 set_sci_style(sci
, SCE_TCL_NUMBER
, ft_id
, 3);
2679 set_sci_style(sci
, SCE_TCL_OPERATOR
, ft_id
, 4);
2680 set_sci_style(sci
, SCE_TCL_IDENTIFIER
, ft_id
, 5);
2681 set_sci_style(sci
, SCE_TCL_WORD_IN_QUOTE
, ft_id
, 6);
2682 set_sci_style(sci
, SCE_TCL_IN_QUOTE
, ft_id
, 7);
2683 set_sci_style(sci
, SCE_TCL_SUBSTITUTION
, ft_id
, 8);
2684 set_sci_style(sci
, SCE_TCL_MODIFIER
, ft_id
, 9);
2685 set_sci_style(sci
, SCE_TCL_EXPAND
, ft_id
, 10);
2686 set_sci_style(sci
, SCE_TCL_WORD
, ft_id
, 11);
2687 set_sci_style(sci
, SCE_TCL_WORD2
, ft_id
, 12);
2688 set_sci_style(sci
, SCE_TCL_WORD3
, ft_id
, 13);
2689 set_sci_style(sci
, SCE_TCL_WORD4
, ft_id
, 14);
2690 set_sci_style(sci
, SCE_TCL_WORD5
, ft_id
, 15);
2693 static void styleset_txt2tags_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2695 new_styleset(ft_id
, 22);
2697 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2698 get_keyfile_style(config
, config_home
, "strong", &style_sets
[ft_id
].styling
[1]);
2699 get_keyfile_style(config
, config_home
, "emphasis", &style_sets
[ft_id
].styling
[2]);
2700 get_keyfile_style(config
, config_home
, "header1", &style_sets
[ft_id
].styling
[3]);
2701 get_keyfile_style(config
, config_home
, "header2", &style_sets
[ft_id
].styling
[4]);
2702 get_keyfile_style(config
, config_home
, "header3", &style_sets
[ft_id
].styling
[5]);
2703 get_keyfile_style(config
, config_home
, "header4", &style_sets
[ft_id
].styling
[6]);
2704 get_keyfile_style(config
, config_home
, "header5", &style_sets
[ft_id
].styling
[7]);
2705 get_keyfile_style(config
, config_home
, "header6", &style_sets
[ft_id
].styling
[8]);
2706 get_keyfile_style(config
, config_home
, "ulist_item", &style_sets
[ft_id
].styling
[9]);
2707 get_keyfile_style(config
, config_home
, "olist_item", &style_sets
[ft_id
].styling
[10]);
2708 get_keyfile_style(config
, config_home
, "blockquote", &style_sets
[ft_id
].styling
[11]);
2709 get_keyfile_style(config
, config_home
, "strikeout", &style_sets
[ft_id
].styling
[12]);
2710 get_keyfile_style(config
, config_home
, "hrule", &style_sets
[ft_id
].styling
[13]);
2711 get_keyfile_style(config
, config_home
, "link", &style_sets
[ft_id
].styling
[14]);
2712 get_keyfile_style(config
, config_home
, "code", &style_sets
[ft_id
].styling
[15]);
2713 get_keyfile_style(config
, config_home
, "codebk", &style_sets
[ft_id
].styling
[16]);
2714 get_keyfile_style(config
, config_home
, "underlined", &style_sets
[ft_id
].styling
[17]);
2715 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[18]);
2716 get_keyfile_style(config
, config_home
, "option", &style_sets
[ft_id
].styling
[19]);
2717 get_keyfile_style(config
, config_home
, "preproc", &style_sets
[ft_id
].styling
[20]);
2718 get_keyfile_style(config
, config_home
, "postproc", &style_sets
[ft_id
].styling
[21]);
2720 style_sets
[ft_id
].keywords
= NULL
;
2724 static void styleset_txt2tags(ScintillaObject
*sci
, gint ft_id
)
2726 apply_filetype_properties(sci
, SCLEX_TXT2TAGS
, ft_id
);
2728 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2729 set_sci_style(sci
, SCE_TXT2TAGS_DEFAULT
, ft_id
, 0);
2730 set_sci_style(sci
, SCE_TXT2TAGS_LINE_BEGIN
, ft_id
, 0);
2731 set_sci_style(sci
, SCE_TXT2TAGS_PRECHAR
, ft_id
, 0);
2732 set_sci_style(sci
, SCE_TXT2TAGS_STRONG1
, ft_id
, 1);
2733 set_sci_style(sci
, SCE_TXT2TAGS_STRONG2
, ft_id
, 1);
2734 set_sci_style(sci
, SCE_TXT2TAGS_EM1
, ft_id
, 2);
2735 set_sci_style(sci
, SCE_TXT2TAGS_EM2
, ft_id
, 17);
2736 set_sci_style(sci
, SCE_TXT2TAGS_HEADER1
, ft_id
, 3);
2737 set_sci_style(sci
, SCE_TXT2TAGS_HEADER2
, ft_id
, 4);
2738 set_sci_style(sci
, SCE_TXT2TAGS_HEADER3
, ft_id
, 5);
2739 set_sci_style(sci
, SCE_TXT2TAGS_HEADER4
, ft_id
, 6);
2740 set_sci_style(sci
, SCE_TXT2TAGS_HEADER5
, ft_id
, 7);
2741 set_sci_style(sci
, SCE_TXT2TAGS_HEADER6
, ft_id
, 8);
2742 set_sci_style(sci
, SCE_TXT2TAGS_ULIST_ITEM
, ft_id
, 9);
2743 set_sci_style(sci
, SCE_TXT2TAGS_OLIST_ITEM
, ft_id
, 10);
2744 set_sci_style(sci
, SCE_TXT2TAGS_BLOCKQUOTE
, ft_id
, 11);
2745 set_sci_style(sci
, SCE_TXT2TAGS_STRIKEOUT
, ft_id
, 12);
2746 set_sci_style(sci
, SCE_TXT2TAGS_HRULE
, ft_id
, 13);
2747 set_sci_style(sci
, SCE_TXT2TAGS_LINK
, ft_id
, 14);
2748 set_sci_style(sci
, SCE_TXT2TAGS_CODE
, ft_id
, 15);
2749 set_sci_style(sci
, SCE_TXT2TAGS_CODE2
, ft_id
, 15);
2750 set_sci_style(sci
, SCE_TXT2TAGS_CODEBK
, ft_id
, 16);
2751 set_sci_style(sci
, SCE_TXT2TAGS_COMMENT
, ft_id
, 18);
2752 set_sci_style(sci
, SCE_TXT2TAGS_OPTION
, ft_id
, 19);
2753 set_sci_style(sci
, SCE_TXT2TAGS_PREPROC
, ft_id
, 20);
2754 set_sci_style(sci
, SCE_TXT2TAGS_POSTPROC
, ft_id
, 21);
2758 static void styleset_matlab_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2760 new_styleset(ft_id
, 9);
2761 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2762 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2763 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[2]);
2764 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2765 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[4]);
2766 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[5]);
2767 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
2768 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
2769 get_keyfile_style(config
, config_home
, "doublequotedstring", &style_sets
[ft_id
].styling
[8]);
2771 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2772 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2773 style_sets
[ft_id
].keywords
[1] = NULL
;
2777 static void styleset_matlab(ScintillaObject
*sci
, gint ft_id
)
2779 /* We use SCLEX_OCTAVE instead of SCLEX_MATLAB to also support Octave # comment char */
2780 apply_filetype_properties(sci
, SCLEX_OCTAVE
, ft_id
);
2782 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2784 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2785 set_sci_style(sci
, SCE_MATLAB_DEFAULT
, ft_id
, 0);
2786 set_sci_style(sci
, SCE_MATLAB_COMMENT
, ft_id
, 1);
2787 set_sci_style(sci
, SCE_MATLAB_COMMAND
, ft_id
, 2);
2788 set_sci_style(sci
, SCE_MATLAB_NUMBER
, ft_id
, 3);
2789 set_sci_style(sci
, SCE_MATLAB_KEYWORD
, ft_id
, 4);
2790 set_sci_style(sci
, SCE_MATLAB_STRING
, ft_id
, 5);
2791 set_sci_style(sci
, SCE_MATLAB_OPERATOR
, ft_id
, 6);
2792 set_sci_style(sci
, SCE_MATLAB_IDENTIFIER
, ft_id
, 7);
2793 set_sci_style(sci
, SCE_MATLAB_DOUBLEQUOTESTRING
, ft_id
, 8);
2797 static void styleset_d_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2799 new_styleset(ft_id
, 18);
2801 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2802 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2803 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2804 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
2805 get_keyfile_style(config
, config_home
, "commentdocnested", &style_sets
[ft_id
].styling
[4]);
2806 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2807 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[6]);
2808 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[7]);
2809 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[8]);
2810 get_keyfile_style(config
, config_home
, "typedef", &style_sets
[ft_id
].styling
[9]);
2811 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[10]);
2812 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[11]);
2813 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
2814 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[13]);
2815 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[14]);
2816 get_keyfile_style(config
, config_home
, "commentlinedoc", &style_sets
[ft_id
].styling
[15]);
2817 get_keyfile_style(config
, config_home
, "commentdockeyword", &style_sets
[ft_id
].styling
[16]);
2818 get_keyfile_style(config
, config_home
, "commentdockeyworderror", &style_sets
[ft_id
].styling
[17]);
2820 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
2821 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2822 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
2823 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
2824 get_keyfile_keywords(config
, config_home
, "types", ft_id
, 3);
2825 style_sets
[ft_id
].keywords
[4] = NULL
;
2829 static void styleset_d(ScintillaObject
*sci
, gint ft_id
)
2831 apply_filetype_properties(sci
, SCLEX_D
, ft_id
);
2833 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2834 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
2835 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2836 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
2837 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[3]);
2839 /* assign global types, merge them with user defined keywords and set them */
2840 merge_type_keywords(sci
, ft_id
, 1);
2842 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2843 set_sci_style(sci
, SCE_D_DEFAULT
, ft_id
, 0);
2844 set_sci_style(sci
, SCE_D_COMMENT
, ft_id
, 1);
2845 set_sci_style(sci
, SCE_D_COMMENTLINE
, ft_id
, 2);
2846 set_sci_style(sci
, SCE_D_COMMENTDOC
, ft_id
, 3);
2847 set_sci_style(sci
, SCE_D_COMMENTNESTED
, ft_id
, 4);
2848 set_sci_style(sci
, SCE_D_NUMBER
, ft_id
, 5);
2849 set_sci_style(sci
, SCE_D_WORD
, ft_id
, 6);
2850 set_sci_style(sci
, SCE_D_WORD2
, ft_id
, 7);
2851 set_sci_style(sci
, SCE_D_WORD3
, ft_id
, 8);
2852 set_sci_style(sci
, SCE_D_TYPEDEF
, ft_id
, 9);
2853 set_sci_style(sci
, SCE_D_WORD5
, ft_id
, 9);
2854 set_sci_style(sci
, SCE_D_STRING
, ft_id
, 10);
2855 set_sci_style(sci
, SCE_D_STRINGB
, ft_id
, 10);
2856 set_sci_style(sci
, SCE_D_STRINGR
, ft_id
, 10);
2857 set_sci_style(sci
, SCE_D_STRINGEOL
, ft_id
, 11);
2858 set_sci_style(sci
, SCE_D_CHARACTER
, ft_id
, 12);
2859 set_sci_style(sci
, SCE_D_OPERATOR
, ft_id
, 13);
2860 set_sci_style(sci
, SCE_D_IDENTIFIER
, ft_id
, 14);
2861 set_sci_style(sci
, SCE_D_COMMENTLINEDOC
, ft_id
, 15);
2862 set_sci_style(sci
, SCE_D_COMMENTDOCKEYWORD
, ft_id
, 16);
2863 set_sci_style(sci
, SCE_D_COMMENTDOCKEYWORDERROR
, ft_id
, 17);
2867 static void styleset_ferite_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2869 styleset_c_like_init(config
, config_home
, ft_id
);
2871 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2872 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2873 get_keyfile_keywords(config
, config_home
, "types", ft_id
, 1);
2874 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
2875 style_sets
[ft_id
].keywords
[3] = NULL
;
2879 static void styleset_ferite(ScintillaObject
*sci
, gint ft_id
)
2881 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
2883 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2884 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2885 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2889 static void styleset_vhdl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2891 new_styleset(ft_id
, 15);
2893 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2894 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2895 get_keyfile_style(config
, config_home
, "comment_line_bang", &style_sets
[ft_id
].styling
[2]);
2896 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2897 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
2898 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[5]);
2899 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[6]);
2900 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[7]);
2901 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[8]);
2902 get_keyfile_style(config
, config_home
, "stdoperator", &style_sets
[ft_id
].styling
[9]);
2903 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[10]);
2904 get_keyfile_style(config
, config_home
, "stdfunction", &style_sets
[ft_id
].styling
[11]);
2905 get_keyfile_style(config
, config_home
, "stdpackage", &style_sets
[ft_id
].styling
[12]);
2906 get_keyfile_style(config
, config_home
, "stdtype", &style_sets
[ft_id
].styling
[13]);
2907 get_keyfile_style(config
, config_home
, "userword", &style_sets
[ft_id
].styling
[14]);
2909 style_sets
[ft_id
].keywords
= g_new(gchar
*, 8);
2910 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2911 get_keyfile_keywords(config
, config_home
, "operators", ft_id
, 1);
2912 get_keyfile_keywords(config
, config_home
, "attributes", ft_id
, 2);
2913 get_keyfile_keywords(config
, config_home
, "std_functions", ft_id
, 3);
2914 get_keyfile_keywords(config
, config_home
, "std_packages", ft_id
, 4);
2915 get_keyfile_keywords(config
, config_home
, "std_types", ft_id
, 5);
2916 get_keyfile_keywords(config
, config_home
, "userwords", ft_id
, 6);
2917 style_sets
[ft_id
].keywords
[7] = NULL
;
2921 static void styleset_vhdl(ScintillaObject
*sci
, gint ft_id
)
2923 apply_filetype_properties(sci
, SCLEX_VHDL
, ft_id
);
2925 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2926 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2927 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2928 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2929 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
2930 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[5]);
2931 sci_set_keywords(sci
, 6, style_sets
[ft_id
].keywords
[6]);
2933 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2934 set_sci_style(sci
, SCE_VHDL_DEFAULT
, ft_id
, 0);
2935 set_sci_style(sci
, SCE_VHDL_COMMENT
, ft_id
, 1);
2936 set_sci_style(sci
, SCE_VHDL_COMMENTLINEBANG
, ft_id
, 2);
2937 set_sci_style(sci
, SCE_VHDL_NUMBER
, ft_id
, 3);
2938 set_sci_style(sci
, SCE_VHDL_STRING
, ft_id
, 4);
2939 set_sci_style(sci
, SCE_VHDL_OPERATOR
, ft_id
, 5);
2940 set_sci_style(sci
, SCE_VHDL_IDENTIFIER
, ft_id
, 6);
2941 set_sci_style(sci
, SCE_VHDL_STRINGEOL
, ft_id
, 7);
2942 set_sci_style(sci
, SCE_VHDL_KEYWORD
, ft_id
, 8);
2943 set_sci_style(sci
, SCE_VHDL_STDOPERATOR
, ft_id
, 9);
2944 set_sci_style(sci
, SCE_VHDL_ATTRIBUTE
, ft_id
, 10);
2945 set_sci_style(sci
, SCE_VHDL_STDFUNCTION
, ft_id
, 11);
2946 set_sci_style(sci
, SCE_VHDL_STDPACKAGE
, ft_id
, 12);
2947 set_sci_style(sci
, SCE_VHDL_STDTYPE
, ft_id
, 13);
2948 set_sci_style(sci
, SCE_VHDL_USERWORD
, ft_id
, 14);
2952 static void styleset_verilog_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2954 new_styleset(ft_id
, 14);
2956 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2957 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2958 get_keyfile_style(config
, config_home
, "comment_line", &style_sets
[ft_id
].styling
[2]);
2959 get_keyfile_style(config
, config_home
, "comment_line_bang", &style_sets
[ft_id
].styling
[3]);
2960 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2961 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
2962 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[6]);
2963 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[7]);
2964 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[8]);
2965 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[9]);
2966 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
2967 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
2968 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[12]);
2969 get_keyfile_style(config
, config_home
, "userword", &style_sets
[ft_id
].styling
[13]);
2971 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2972 get_keyfile_keywords(config
, config_home
, "word", ft_id
, 0);
2973 get_keyfile_keywords(config
, config_home
, "word2", ft_id
, 1);
2974 get_keyfile_keywords(config
, config_home
, "word3", ft_id
, 2);
2975 style_sets
[ft_id
].keywords
[3] = NULL
;
2979 static void styleset_verilog(ScintillaObject
*sci
, gint ft_id
)
2981 apply_filetype_properties(sci
, SCLEX_VERILOG
, ft_id
);
2983 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2984 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2985 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2987 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2988 set_sci_style(sci
, SCE_V_DEFAULT
, ft_id
, 0);
2989 set_sci_style(sci
, SCE_V_COMMENT
, ft_id
, 1);
2990 set_sci_style(sci
, SCE_V_COMMENTLINE
, ft_id
, 2);
2991 set_sci_style(sci
, SCE_V_COMMENTLINEBANG
, ft_id
, 3);
2992 set_sci_style(sci
, SCE_V_NUMBER
, ft_id
, 4);
2993 set_sci_style(sci
, SCE_V_WORD
, ft_id
,5);
2994 set_sci_style(sci
, SCE_V_STRING
, ft_id
, 6);
2995 set_sci_style(sci
, SCE_V_WORD2
, ft_id
, 7);
2996 set_sci_style(sci
, SCE_V_WORD3
, ft_id
, 8);
2997 set_sci_style(sci
, SCE_V_PREPROCESSOR
, ft_id
, 9);
2998 set_sci_style(sci
, SCE_V_OPERATOR
, ft_id
, 10);
2999 set_sci_style(sci
, SCE_V_IDENTIFIER
, ft_id
, 11);
3000 set_sci_style(sci
, SCE_V_STRINGEOL
, ft_id
, 12);
3001 set_sci_style(sci
, SCE_V_USER
, ft_id
, 13);
3005 static void styleset_yaml_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3007 new_styleset(ft_id
, 10);
3009 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
3010 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
3011 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[2]);
3012 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[3]);
3013 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
3014 get_keyfile_style(config
, config_home
, "reference", &style_sets
[ft_id
].styling
[5]);
3015 get_keyfile_style(config
, config_home
, "document", &style_sets
[ft_id
].styling
[6]);
3016 get_keyfile_style(config
, config_home
, "text", &style_sets
[ft_id
].styling
[7]);
3017 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[8]);
3018 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[9]);
3020 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
3021 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
3022 style_sets
[ft_id
].keywords
[1] = NULL
;
3026 static void styleset_yaml(ScintillaObject
*sci
, gint ft_id
)
3028 apply_filetype_properties(sci
, SCLEX_YAML
, ft_id
);
3030 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3032 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
3033 set_sci_style(sci
, SCE_YAML_DEFAULT
, ft_id
, 0);
3034 set_sci_style(sci
, SCE_YAML_COMMENT
, ft_id
, 1);
3035 set_sci_style(sci
, SCE_YAML_IDENTIFIER
, ft_id
, 2);
3036 set_sci_style(sci
, SCE_YAML_KEYWORD
, ft_id
, 3);
3037 set_sci_style(sci
, SCE_YAML_NUMBER
, ft_id
, 4);
3038 set_sci_style(sci
, SCE_YAML_REFERENCE
, ft_id
, 5);
3039 set_sci_style(sci
, SCE_YAML_DOCUMENT
, ft_id
, 6);
3040 set_sci_style(sci
, SCE_YAML_TEXT
, ft_id
, 7);
3041 set_sci_style(sci
, SCE_YAML_ERROR
, ft_id
, 8);
3042 set_sci_style(sci
, SCE_YAML_OPERATOR
, ft_id
, 9);
3046 static void styleset_js_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3048 styleset_c_like_init(config
, config_home
, ft_id
);
3050 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
3051 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3052 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
3053 style_sets
[ft_id
].keywords
[2] = NULL
;
3057 static void styleset_js(ScintillaObject
*sci
, gint ft_id
)
3059 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
3061 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3062 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
3066 static void styleset_lua_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3068 new_styleset(ft_id
, 20);
3070 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
3071 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
3072 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
3073 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
3074 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
3075 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
3076 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[6]);
3077 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[7]);
3078 get_keyfile_style(config
, config_home
, "literalstring", &style_sets
[ft_id
].styling
[8]);
3079 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[9]);
3080 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
3081 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
3082 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[12]);
3083 get_keyfile_style(config
, config_home
, "function_basic", &style_sets
[ft_id
].styling
[13]);
3084 get_keyfile_style(config
, config_home
, "function_other", &style_sets
[ft_id
].styling
[14]);
3085 get_keyfile_style(config
, config_home
, "coroutines", &style_sets
[ft_id
].styling
[15]);
3086 get_keyfile_style(config
, config_home
, "word5", &style_sets
[ft_id
].styling
[16]);
3087 get_keyfile_style(config
, config_home
, "word6", &style_sets
[ft_id
].styling
[17]);
3088 get_keyfile_style(config
, config_home
, "word7", &style_sets
[ft_id
].styling
[18]);
3089 get_keyfile_style(config
, config_home
, "word8", &style_sets
[ft_id
].styling
[19]);
3091 style_sets
[ft_id
].keywords
= g_new(gchar
*, 9);
3092 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
3093 get_keyfile_keywords(config
, config_home
, "function_basic", ft_id
, 1);
3094 get_keyfile_keywords(config
, config_home
, "function_other", ft_id
, 2);
3095 get_keyfile_keywords(config
, config_home
, "coroutines", ft_id
, 3);
3096 get_keyfile_keywords(config
, config_home
, "user1", ft_id
, 4);
3097 get_keyfile_keywords(config
, config_home
, "user2", ft_id
, 5);
3098 get_keyfile_keywords(config
, config_home
, "user3", ft_id
, 6);
3099 get_keyfile_keywords(config
, config_home
, "user4", ft_id
, 7);
3100 style_sets
[ft_id
].keywords
[8] = NULL
;
3104 static void styleset_lua(ScintillaObject
*sci
, gint ft_id
)
3106 apply_filetype_properties(sci
, SCLEX_LUA
, ft_id
);
3108 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3109 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
3110 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
3111 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
3112 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
3113 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[5]);
3114 sci_set_keywords(sci
, 6, style_sets
[ft_id
].keywords
[6]);
3115 sci_set_keywords(sci
, 7, style_sets
[ft_id
].keywords
[7]);
3117 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
3118 set_sci_style(sci
, SCE_LUA_DEFAULT
, ft_id
, 0);
3119 set_sci_style(sci
, SCE_LUA_COMMENT
, ft_id
, 1);
3120 set_sci_style(sci
, SCE_LUA_COMMENTLINE
, ft_id
, 2);
3121 set_sci_style(sci
, SCE_LUA_COMMENTDOC
, ft_id
, 3);
3122 set_sci_style(sci
, SCE_LUA_NUMBER
, ft_id
, 4);
3123 set_sci_style(sci
, SCE_LUA_WORD
, ft_id
, 5);
3124 set_sci_style(sci
, SCE_LUA_STRING
, ft_id
, 6);
3125 set_sci_style(sci
, SCE_LUA_CHARACTER
, ft_id
, 7);
3126 set_sci_style(sci
, SCE_LUA_LITERALSTRING
, ft_id
, 8);
3127 set_sci_style(sci
, SCE_LUA_PREPROCESSOR
, ft_id
, 9);
3128 set_sci_style(sci
, SCE_LUA_OPERATOR
, ft_id
, 10);
3129 set_sci_style(sci
, SCE_LUA_IDENTIFIER
, ft_id
, 11);
3130 set_sci_style(sci
, SCE_LUA_STRINGEOL
, ft_id
, 12);
3131 set_sci_style(sci
, SCE_LUA_WORD2
, ft_id
, 13);
3132 set_sci_style(sci
, SCE_LUA_WORD3
, ft_id
, 14);
3133 set_sci_style(sci
, SCE_LUA_WORD4
, ft_id
, 15);
3134 set_sci_style(sci
, SCE_LUA_WORD5
, ft_id
, 16);
3135 set_sci_style(sci
, SCE_LUA_WORD6
, ft_id
, 17);
3136 set_sci_style(sci
, SCE_LUA_WORD7
, ft_id
, 18);
3137 set_sci_style(sci
, SCE_LUA_WORD8
, ft_id
, 19);
3141 static void styleset_basic_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3143 new_styleset(ft_id
, 19);
3145 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
3146 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
3147 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
3148 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[3]);
3149 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
3150 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[5]);
3151 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
3152 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
3153 get_keyfile_style(config
, config_home
, "date", &style_sets
[ft_id
].styling
[8]);
3154 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[9]);
3155 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[10]);
3156 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[11]);
3157 get_keyfile_style(config
, config_home
, "word4", &style_sets
[ft_id
].styling
[12]);
3158 get_keyfile_style(config
, config_home
, "constant", &style_sets
[ft_id
].styling
[13]);
3159 get_keyfile_style(config
, config_home
, "asm", &style_sets
[ft_id
].styling
[14]);
3160 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[15]);
3161 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[16]);
3162 get_keyfile_style(config
, config_home
, "hexnumber", &style_sets
[ft_id
].styling
[17]);
3163 get_keyfile_style(config
, config_home
, "binnumber", &style_sets
[ft_id
].styling
[18]);
3165 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
3166 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
3167 get_keyfile_keywords(config
, config_home
, "preprocessor", ft_id
, 1);
3168 get_keyfile_keywords(config
, config_home
, "user1", ft_id
, 2);
3169 get_keyfile_keywords(config
, config_home
, "user2", ft_id
, 3);
3170 style_sets
[ft_id
].keywords
[4] = NULL
;
3174 static void styleset_basic(ScintillaObject
*sci
, gint ft_id
)
3176 apply_filetype_properties(sci
, SCLEX_FREEBASIC
, ft_id
);
3178 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3179 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
3180 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
3181 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
3183 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
3184 set_sci_style(sci
, SCE_B_DEFAULT
, ft_id
, 0);
3185 set_sci_style(sci
, SCE_B_COMMENT
, ft_id
, 1);
3186 set_sci_style(sci
, SCE_B_NUMBER
, ft_id
, 2);
3187 set_sci_style(sci
, SCE_B_KEYWORD
, ft_id
, 3);
3188 set_sci_style(sci
, SCE_B_STRING
, ft_id
, 4);
3189 set_sci_style(sci
, SCE_B_PREPROCESSOR
, ft_id
, 5);
3190 set_sci_style(sci
, SCE_B_OPERATOR
, ft_id
, 6);
3191 set_sci_style(sci
, SCE_B_IDENTIFIER
, ft_id
, 7);
3192 set_sci_style(sci
, SCE_B_DATE
, ft_id
, 8);
3193 set_sci_style(sci
, SCE_B_STRINGEOL
, ft_id
, 9);
3194 set_sci_style(sci
, SCE_B_KEYWORD2
, ft_id
, 10);
3195 set_sci_style(sci
, SCE_B_KEYWORD3
, ft_id
, 11);
3196 set_sci_style(sci
, SCE_B_KEYWORD4
, ft_id
, 12);
3197 set_sci_style(sci
, SCE_B_CONSTANT
, ft_id
, 13);
3198 set_sci_style(sci
, SCE_B_ASM
, ft_id
, 14); /* (still?) unused by the lexer */
3199 set_sci_style(sci
, SCE_B_LABEL
, ft_id
, 15);
3200 set_sci_style(sci
, SCE_B_ERROR
, ft_id
, 16);
3201 set_sci_style(sci
, SCE_B_HEXNUMBER
, ft_id
, 17);
3202 set_sci_style(sci
, SCE_B_BINNUMBER
, ft_id
, 18);
3206 static void styleset_actionscript_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3208 styleset_c_like_init(config
, config_home
, ft_id
);
3210 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
3211 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3212 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
3213 get_keyfile_keywords(config
, config_home
, "classes", ft_id
, 2);
3214 style_sets
[ft_id
].keywords
[3] = NULL
;
3218 static void styleset_actionscript(ScintillaObject
*sci
, gint ft_id
)
3220 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
3222 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3223 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[2]);
3224 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[1]);
3228 static void styleset_haxe_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3230 styleset_c_like_init(config
, config_home
, ft_id
);
3232 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
3233 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3234 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
3235 get_keyfile_keywords(config
, config_home
, "classes", ft_id
, 2);
3236 style_sets
[ft_id
].keywords
[3] = NULL
;
3240 static void styleset_haxe(ScintillaObject
*sci
, gint ft_id
)
3242 styleset_c_like(sci
, ft_id
, SCLEX_CPP
);
3244 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3245 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
3246 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[2]);
3250 static void styleset_ada_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3252 new_styleset(ft_id
, 12);
3254 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
3255 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[1]);
3256 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[2]);
3257 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
3258 get_keyfile_style(config
, config_home
, "delimiter", &style_sets
[ft_id
].styling
[4]);
3259 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[5]);
3260 get_keyfile_style(config
, config_home
, "charactereol", &style_sets
[ft_id
].styling
[6]);
3261 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
3262 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[8]);
3263 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[9]);
3264 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[10]);
3265 get_keyfile_style(config
, config_home
, "illegal", &style_sets
[ft_id
].styling
[11]);
3267 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
3268 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3269 style_sets
[ft_id
].keywords
[1] = NULL
;
3273 static void styleset_ada(ScintillaObject
*sci
, gint ft_id
)
3275 apply_filetype_properties(sci
, SCLEX_ADA
, ft_id
);
3277 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3279 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
3280 set_sci_style(sci
, SCE_ADA_DEFAULT
, ft_id
, 0);
3281 set_sci_style(sci
, SCE_ADA_WORD
, ft_id
, 1);
3282 set_sci_style(sci
, SCE_ADA_IDENTIFIER
, ft_id
, 2);
3283 set_sci_style(sci
, SCE_ADA_NUMBER
, ft_id
, 3);
3284 set_sci_style(sci
, SCE_ADA_DELIMITER
, ft_id
, 4);
3285 set_sci_style(sci
, SCE_ADA_CHARACTER
, ft_id
, 5);
3286 set_sci_style(sci
, SCE_ADA_CHARACTEREOL
, ft_id
, 6);
3287 set_sci_style(sci
, SCE_ADA_STRING
, ft_id
, 7);
3288 set_sci_style(sci
, SCE_ADA_STRINGEOL
, ft_id
, 8);
3289 set_sci_style(sci
, SCE_ADA_LABEL
, ft_id
, 9);
3290 set_sci_style(sci
, SCE_ADA_COMMENTLINE
, ft_id
, 10);
3291 set_sci_style(sci
, SCE_ADA_ILLEGAL
, ft_id
, 11);
3295 static void get_key_values(GKeyFile
*config
, const gchar
*group
, gchar
**keys
, gchar
**values
)
3299 gchar
*str
= g_key_file_get_string(config
, group
, *keys
, NULL
);
3302 setptr(*values
, str
);
3310 static void read_properties(GeanyFiletype
*ft
, GKeyFile
*config
, GKeyFile
*configh
)
3312 gchar group
[] = "lexer_properties";
3314 gchar
**keysh
= g_key_file_get_keys(configh
, group
, NULL
, NULL
);
3317 /* remove overridden keys from system keyfile */
3318 foreach_strv(ptr
, keysh
)
3319 g_key_file_remove_key(config
, group
, *ptr
, NULL
);
3321 /* merge sys and user keys */
3322 keys
= g_key_file_get_keys(config
, group
, NULL
, NULL
);
3323 keys
= utils_strv_join(keys
, keysh
);
3327 gchar
**values
= g_new0(gchar
*, g_strv_length(keys
) + 1);
3329 style_sets
[ft
->id
].property_keys
= keys
;
3330 style_sets
[ft
->id
].property_values
= values
;
3332 get_key_values(config
, group
, keys
, values
);
3333 get_key_values(configh
, group
, keys
, values
);
3338 static gint
get_lexer_filetype(GeanyFiletype
*ft
)
3340 ft
= NVL(ft
->lexer_filetype
, ft
);
3345 /* lang_name is the name used for the styleset_foo_init function, e.g. foo. */
3346 #define init_styleset_case(ft_id, init_styleset_func) \
3348 init_styleset_func(filetype_idx, config, configh); \
3351 /* Called by filetypes_load_config(). */
3352 void highlighting_init_styles(gint filetype_idx
, GKeyFile
*config
, GKeyFile
*configh
)
3354 GeanyFiletype
*ft
= filetypes
[filetype_idx
];
3355 gint lexer_id
= get_lexer_filetype(ft
);
3358 style_sets
= g_new0(StyleSet
, filetypes_array
->len
);
3360 /* Clear old information if necessary - e.g. when reloading config */
3361 free_styleset(filetype_idx
);
3363 read_properties(ft
, config
, configh
);
3365 /* None filetype handled specially */
3366 if (filetype_idx
== GEANY_FILETYPES_NONE
)
3368 styleset_common_init(GEANY_FILETYPES_NONE
, config
, configh
);
3371 /* All stylesets depend on filetypes.common */
3372 filetypes_load_config(GEANY_FILETYPES_NONE
, FALSE
);
3376 init_styleset_case(GEANY_FILETYPES_ADA
, styleset_ada_init
);
3377 init_styleset_case(GEANY_FILETYPES_ASM
, styleset_asm_init
);
3378 init_styleset_case(GEANY_FILETYPES_BASIC
, styleset_basic_init
);
3379 init_styleset_case(GEANY_FILETYPES_C
, styleset_c_init
);
3380 init_styleset_case(GEANY_FILETYPES_CAML
, styleset_caml_init
);
3381 init_styleset_case(GEANY_FILETYPES_CMAKE
, styleset_cmake_init
);
3382 init_styleset_case(GEANY_FILETYPES_COBOL
, styleset_cobol_init
);
3383 init_styleset_case(GEANY_FILETYPES_CONF
, styleset_conf_init
);
3384 init_styleset_case(GEANY_FILETYPES_CSS
, styleset_css_init
);
3385 init_styleset_case(GEANY_FILETYPES_D
, styleset_d_init
);
3386 init_styleset_case(GEANY_FILETYPES_DIFF
, styleset_diff_init
);
3387 init_styleset_case(GEANY_FILETYPES_LISP
, styleset_lisp_init
);
3388 init_styleset_case(GEANY_FILETYPES_ERLANG
, styleset_erlang_init
);
3389 init_styleset_case(GEANY_FILETYPES_DOCBOOK
, styleset_docbook_init
);
3390 init_styleset_case(GEANY_FILETYPES_FERITE
, styleset_ferite_init
);
3391 init_styleset_case(GEANY_FILETYPES_F77
, styleset_f77_init
);
3392 init_styleset_case(GEANY_FILETYPES_FORTH
, styleset_forth_init
);
3393 init_styleset_case(GEANY_FILETYPES_FORTRAN
, styleset_fortran_init
);
3394 init_styleset_case(GEANY_FILETYPES_HASKELL
, styleset_haskell_init
);
3395 init_styleset_case(GEANY_FILETYPES_HAXE
, styleset_haxe_init
);
3396 init_styleset_case(GEANY_FILETYPES_AS
, styleset_actionscript_init
);
3397 init_styleset_case(GEANY_FILETYPES_HTML
, styleset_html_init
);
3398 init_styleset_case(GEANY_FILETYPES_JAVA
, styleset_java_init
);
3399 init_styleset_case(GEANY_FILETYPES_JS
, styleset_js_init
);
3400 init_styleset_case(GEANY_FILETYPES_LATEX
, styleset_latex_init
);
3401 init_styleset_case(GEANY_FILETYPES_LUA
, styleset_lua_init
);
3402 init_styleset_case(GEANY_FILETYPES_MAKE
, styleset_makefile_init
);
3403 init_styleset_case(GEANY_FILETYPES_MATLAB
, styleset_matlab_init
);
3404 init_styleset_case(GEANY_FILETYPES_MARKDOWN
, styleset_markdown_init
);
3405 init_styleset_case(GEANY_FILETYPES_NSIS
, styleset_nsis_init
);
3406 init_styleset_case(GEANY_FILETYPES_PASCAL
, styleset_pascal_init
);
3407 init_styleset_case(GEANY_FILETYPES_PERL
, styleset_perl_init
);
3408 init_styleset_case(GEANY_FILETYPES_PHP
, styleset_php_init
);
3409 init_styleset_case(GEANY_FILETYPES_PO
, styleset_po_init
);
3410 init_styleset_case(GEANY_FILETYPES_PYTHON
, styleset_python_init
);
3411 init_styleset_case(GEANY_FILETYPES_R
, styleset_r_init
);
3412 init_styleset_case(GEANY_FILETYPES_RUBY
, styleset_ruby_init
);
3413 init_styleset_case(GEANY_FILETYPES_SH
, styleset_sh_init
);
3414 init_styleset_case(GEANY_FILETYPES_SQL
, styleset_sql_init
);
3415 init_styleset_case(GEANY_FILETYPES_TCL
, styleset_tcl_init
);
3416 init_styleset_case(GEANY_FILETYPES_TXT2TAGS
, styleset_txt2tags_init
);
3417 init_styleset_case(GEANY_FILETYPES_VHDL
, styleset_vhdl_init
);
3418 init_styleset_case(GEANY_FILETYPES_VERILOG
, styleset_verilog_init
);
3419 init_styleset_case(GEANY_FILETYPES_XML
, styleset_markup_init
);
3420 init_styleset_case(GEANY_FILETYPES_YAML
, styleset_yaml_init
);
3422 if (ft
->lexer_filetype
)
3423 geany_debug("Filetype %s has a recursive lexer_filetype %s set!",
3424 ft
->name
, ft
->lexer_filetype
->name
);
3427 /* should be done in filetypes.c really: */
3428 get_keyfile_wordchars(config
, configh
, &style_sets
[filetype_idx
].wordchars
);
3432 /* lang_name is the name used for the styleset_foo function, e.g. foo. */
3433 #define styleset_case(ft_id, styleset_func) \
3435 styleset_func(sci, ft->id); \
3438 /** Sets up highlighting and other visual settings.
3439 * @param sci Scintilla widget.
3440 * @param ft Filetype settings to use. */
3441 void highlighting_set_styles(ScintillaObject
*sci
, GeanyFiletype
*ft
)
3443 gint lexer_id
= get_lexer_filetype(ft
);
3445 filetypes_load_config(ft
->id
, FALSE
); /* load filetypes.ext */
3449 styleset_case(GEANY_FILETYPES_ADA
, styleset_ada
);
3450 styleset_case(GEANY_FILETYPES_ASM
, styleset_asm
);
3451 styleset_case(GEANY_FILETYPES_BASIC
, styleset_basic
);
3452 styleset_case(GEANY_FILETYPES_C
, styleset_c
);
3453 styleset_case(GEANY_FILETYPES_CAML
, styleset_caml
);
3454 styleset_case(GEANY_FILETYPES_CMAKE
, styleset_cmake
);
3455 styleset_case(GEANY_FILETYPES_COBOL
, styleset_cobol
);
3456 styleset_case(GEANY_FILETYPES_CONF
, styleset_conf
);
3457 styleset_case(GEANY_FILETYPES_CSS
, styleset_css
);
3458 styleset_case(GEANY_FILETYPES_D
, styleset_d
);
3459 styleset_case(GEANY_FILETYPES_DIFF
, styleset_diff
);
3460 styleset_case(GEANY_FILETYPES_LISP
, styleset_lisp
);
3461 styleset_case(GEANY_FILETYPES_ERLANG
, styleset_erlang
);
3462 styleset_case(GEANY_FILETYPES_DOCBOOK
, styleset_docbook
);
3463 styleset_case(GEANY_FILETYPES_FERITE
, styleset_ferite
);
3464 styleset_case(GEANY_FILETYPES_F77
, styleset_f77
);
3465 styleset_case(GEANY_FILETYPES_FORTH
, styleset_forth
);
3466 styleset_case(GEANY_FILETYPES_FORTRAN
, styleset_fortran
);
3467 styleset_case(GEANY_FILETYPES_HASKELL
, styleset_haskell
);
3468 styleset_case(GEANY_FILETYPES_HAXE
, styleset_haxe
);
3469 styleset_case(GEANY_FILETYPES_AS
, styleset_actionscript
);
3470 styleset_case(GEANY_FILETYPES_HTML
, styleset_html
);
3471 styleset_case(GEANY_FILETYPES_JAVA
, styleset_java
);
3472 styleset_case(GEANY_FILETYPES_JS
, styleset_js
);
3473 styleset_case(GEANY_FILETYPES_LATEX
, styleset_latex
);
3474 styleset_case(GEANY_FILETYPES_LUA
, styleset_lua
);
3475 styleset_case(GEANY_FILETYPES_MAKE
, styleset_makefile
);
3476 styleset_case(GEANY_FILETYPES_MARKDOWN
, styleset_markdown
);
3477 styleset_case(GEANY_FILETYPES_MATLAB
, styleset_matlab
);
3478 styleset_case(GEANY_FILETYPES_NSIS
, styleset_nsis
);
3479 styleset_case(GEANY_FILETYPES_PASCAL
, styleset_pascal
);
3480 styleset_case(GEANY_FILETYPES_PERL
, styleset_perl
);
3481 styleset_case(GEANY_FILETYPES_PHP
, styleset_php
);
3482 styleset_case(GEANY_FILETYPES_PO
, styleset_po
);
3483 styleset_case(GEANY_FILETYPES_PYTHON
, styleset_python
);
3484 styleset_case(GEANY_FILETYPES_R
, styleset_r
);
3485 styleset_case(GEANY_FILETYPES_RUBY
, styleset_ruby
);
3486 styleset_case(GEANY_FILETYPES_SH
, styleset_sh
);
3487 styleset_case(GEANY_FILETYPES_SQL
, styleset_sql
);
3488 styleset_case(GEANY_FILETYPES_TCL
, styleset_tcl
);
3489 styleset_case(GEANY_FILETYPES_TXT2TAGS
, styleset_txt2tags
);
3490 styleset_case(GEANY_FILETYPES_VHDL
, styleset_vhdl
);
3491 styleset_case(GEANY_FILETYPES_VERILOG
, styleset_verilog
);
3492 styleset_case(GEANY_FILETYPES_XML
, styleset_xml
);
3493 styleset_case(GEANY_FILETYPES_YAML
, styleset_yaml
);
3494 case GEANY_FILETYPES_NONE
:
3496 styleset_default(sci
, ft
->id
);
3498 /* [lexer_properties] settings */
3499 if (style_sets
[ft
->id
].property_keys
)
3501 gchar
**prop
= style_sets
[ft
->id
].property_keys
;
3502 gchar
**val
= style_sets
[ft
->id
].property_values
;
3506 sci_set_property(sci
, *prop
, *val
);
3514 /** Retrieves a style @a style_id for the filetype @a ft_id.
3515 * If the style was not already initialised
3516 * (e.g. by by opening a file of this type), it will be initialised. The returned pointer is
3517 * owned by Geany and must not be freed.
3518 * @param ft_id Filetype ID, e.g. @c GEANY_FILETYPES_DIFF.
3519 * @param style_id A Scintilla lexer style, e.g. @c SCE_DIFF_ADDED. See scintilla/include/SciLexer.h.
3520 * @return A pointer to the style struct.
3521 * @see Scintilla messages @c SCI_STYLEGETFORE, etc, for use with scintilla_send_message(). */
3522 const GeanyLexerStyle
*highlighting_get_style(gint ft_id
, gint style_id
)
3524 if (ft_id
< 0 || ft_id
>= (gint
)filetypes_array
->len
)
3527 /* ensure filetype loaded */
3528 filetypes_load_config(ft_id
, FALSE
);
3530 /* TODO: style_id might not be the real array index (Scintilla styles are not always synced
3531 * with array indices) */
3532 return get_style(ft_id
, style_id
);
3537 on_color_scheme_clicked(GtkMenuItem
*menuitem
, gpointer user_data
)
3542 /* prevent callback on setting initial value */
3543 if (!GTK_WIDGET_MAPPED(menuitem
))
3546 /* check if default item */
3549 setptr(editor_prefs
.color_scheme
, NULL
);
3553 fname
= g_strdup(g_object_get_data(G_OBJECT(menuitem
), "colorscheme_file"));
3554 setptr(fname
, utils_get_locale_from_utf8(fname
));
3556 /* fname is just the basename from the menu item, so prepend the custom files path */
3557 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->configdir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
);
3558 if (!g_file_test(path
, G_FILE_TEST_EXISTS
))
3560 /* try the system path */
3562 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->datadir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
);
3564 if (g_file_test(path
, G_FILE_TEST_EXISTS
))
3566 setptr(editor_prefs
.color_scheme
, fname
);
3572 setptr(fname
, utils_get_utf8_from_locale(fname
));
3573 ui_set_statusbar(TRUE
, _("Could not find file '%s'."), fname
);
3580 static gchar
*utils_get_setting_locale_string(GKeyFile
*keyfile
,
3581 const gchar
*group
, const gchar
*key
, const gchar
*default_value
)
3583 gchar
*result
= g_key_file_get_locale_string(keyfile
, group
, key
, NULL
, NULL
);
3585 return NVL(result
, g_strdup(default_value
));
3589 static void add_color_scheme_item(GtkWidget
*menu
, const gchar
*fname
)
3591 static GSList
*group
= NULL
;
3596 item
= gtk_radio_menu_item_new_with_mnemonic(group
, _("_Default"));
3600 GKeyFile
*hkeyfile
, *skeyfile
;
3601 gchar
*path
, *theme_name
, *tooltip
;
3602 gchar
*theme_fn
= utils_get_utf8_from_locale(fname
);
3604 path
= utils_build_path(app
->configdir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
);
3605 hkeyfile
= utils_key_file_new(path
);
3606 setptr(path
, utils_build_path(app
->datadir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
));
3607 skeyfile
= utils_key_file_new(path
);
3609 theme_name
= utils_get_setting(locale_string
, hkeyfile
, skeyfile
, "theme_info", "name", theme_fn
);
3610 item
= gtk_radio_menu_item_new_with_label(group
, theme_name
);
3611 g_object_set_data_full(G_OBJECT(item
), "colorscheme_file", theme_fn
, g_free
);
3613 tooltip
= utils_get_setting(locale_string
, hkeyfile
, skeyfile
, "theme_info", "description", NULL
);
3614 if (tooltip
!= NULL
)
3616 gtk_widget_set_tooltip_text(item
, tooltip
);
3621 g_key_file_free(hkeyfile
);
3622 g_key_file_free(skeyfile
);
3625 group
= gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item
));
3626 if (utils_str_equal(editor_prefs
.color_scheme
, fname
))
3627 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item
), TRUE
);
3629 gtk_widget_show(item
);
3630 gtk_container_add(GTK_CONTAINER(menu
), item
);
3631 g_signal_connect(item
, "activate",
3632 G_CALLBACK(on_color_scheme_clicked
), GINT_TO_POINTER(fname
!= NULL
));
3636 static gboolean
add_color_scheme_items(GtkWidget
*menu
)
3638 GSList
*list
, *node
;
3640 g_return_val_if_fail(menu
, FALSE
);
3642 add_color_scheme_item(menu
, NULL
);
3643 list
= utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR
);
3645 foreach_slist(node
, list
)
3647 gchar
*fname
= node
->data
;
3649 if (g_str_has_suffix(fname
, ".conf"))
3650 add_color_scheme_item(menu
, fname
);
3655 return list
!= NULL
;
3659 static void create_color_scheme_menu(void)
3661 GtkWidget
*item
, *menu
, *root
;
3663 menu
= ui_lookup_widget(main_widgets
.window
, "menu_view_editor1_menu");
3664 item
= ui_image_menu_item_new(GTK_STOCK_SELECT_COLOR
, _("_Color Schemes"));
3665 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu
), item
);
3668 menu
= gtk_menu_new();
3669 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item
), menu
);
3671 add_color_scheme_items(menu
);
3672 gtk_widget_show_all(root
);
3676 void highlighting_init(void)
3678 create_color_scheme_menu();
3682 /** Checks whether the given style is a string for the given lexer.
3684 * @param lexer Scintilla lexer type (@c SCLEX_*).
3685 * @param style Scintilla style (@c SCE_*).
3687 * @return @c TRUE if the style is a string, @c FALSE otherwise.
3689 gboolean
highlighting_is_string_style(gint lexer
, gint style
)
3691 /* Don't forget STRINGEOL, to prevent completion whilst typing a string with no closing char. */
3696 return (style
== SCE_C_CHARACTER
||
3697 style
== SCE_C_STRING
||
3698 style
== SCE_C_STRINGEOL
||
3699 style
== SCE_C_STRINGRAW
||
3700 style
== SCE_C_VERBATIM
||
3701 style
== SCE_C_TRIPLEVERBATIM
);
3704 return (style
== SCE_PAS_CHARACTER
||
3705 style
== SCE_PAS_STRING
||
3706 style
== SCE_PAS_STRINGEOL
);
3709 return (style
== SCE_D_STRING
||
3710 style
== SCE_D_STRINGEOL
||
3711 style
== SCE_D_CHARACTER
||
3712 style
== SCE_D_STRINGB
||
3713 style
== SCE_D_STRINGR
);
3716 return (style
== SCE_P_STRING
||
3717 style
== SCE_P_TRIPLE
||
3718 style
== SCE_P_TRIPLEDOUBLE
||
3719 style
== SCE_P_CHARACTER
||
3720 style
== SCE_P_STRINGEOL
);
3724 return (style
== SCE_F_STRING1
||
3725 style
== SCE_F_STRING2
||
3726 style
== SCE_F_STRINGEOL
);
3729 return (/*style == SCE_PL_STRING ||*/ /* may want variable autocompletion "$(foo)" */
3730 style
== SCE_PL_CHARACTER
||
3731 style
== SCE_PL_HERE_DELIM
||
3732 style
== SCE_PL_HERE_Q
||
3733 style
== SCE_PL_HERE_QQ
||
3734 style
== SCE_PL_HERE_QX
||
3735 style
== SCE_PL_POD
||
3736 style
== SCE_PL_STRING_Q
||
3737 style
== SCE_PL_STRING_QQ
||
3738 style
== SCE_PL_STRING_QX
||
3739 style
== SCE_PL_STRING_QR
||
3740 style
== SCE_PL_STRING_QW
||
3741 style
== SCE_PL_POD_VERB
);
3744 return (style
== SCE_R_STRING
);
3747 return (style
== SCE_RB_CHARACTER
||
3748 style
== SCE_RB_STRING
||
3749 style
== SCE_RB_HERE_DELIM
||
3750 style
== SCE_RB_HERE_Q
||
3751 style
== SCE_RB_HERE_QQ
||
3752 style
== SCE_RB_HERE_QX
||
3753 style
== SCE_RB_POD
);
3756 return (style
== SCE_SH_STRING
);
3759 return (style
== SCE_SQL_STRING
);
3762 return (style
== SCE_TCL_IN_QUOTE
);
3765 return (style
== SCE_LUA_LITERALSTRING
||
3766 style
== SCE_LUA_CHARACTER
||
3767 style
== SCE_LUA_STRINGEOL
||
3768 style
== SCE_LUA_STRING
);
3771 return (style
== SCE_HA_CHARACTER
||
3772 style
== SCE_HA_STRING
);
3774 case SCLEX_FREEBASIC
:
3775 return (style
== SCE_B_STRING
||
3776 style
== SCE_B_STRINGEOL
);
3779 return (style
== SCE_MATLAB_STRING
||
3780 style
== SCE_MATLAB_DOUBLEQUOTESTRING
);
3784 style
== SCE_HBA_STRING
||
3785 style
== SCE_HBA_STRINGEOL
||
3786 style
== SCE_HB_STRING
||
3787 style
== SCE_HB_STRINGEOL
||
3788 style
== SCE_H_CDATA
||
3789 style
== SCE_H_DOUBLESTRING
||
3790 style
== SCE_HJA_DOUBLESTRING
||
3791 style
== SCE_HJA_SINGLESTRING
||
3792 style
== SCE_HJA_STRINGEOL
||
3793 style
== SCE_HJ_DOUBLESTRING
||
3794 style
== SCE_HJ_SINGLESTRING
||
3795 style
== SCE_HJ_STRINGEOL
||
3796 style
== SCE_HPA_CHARACTER
||
3797 style
== SCE_HPA_STRING
||
3798 style
== SCE_HPA_TRIPLE
||
3799 style
== SCE_HPA_TRIPLEDOUBLE
||
3800 style
== SCE_HP_CHARACTER
||
3801 style
== SCE_HPHP_HSTRING
|| /* HSTRING is a heredoc */
3802 style
== SCE_HPHP_HSTRING_VARIABLE
||
3803 style
== SCE_HPHP_SIMPLESTRING
||
3804 style
== SCE_HP_STRING
||
3805 style
== SCE_HP_TRIPLE
||
3806 style
== SCE_HP_TRIPLEDOUBLE
||
3807 style
== SCE_H_SGML_DOUBLESTRING
||
3808 style
== SCE_H_SGML_SIMPLESTRING
||
3809 style
== SCE_H_SINGLESTRING
);
3812 return (style
== SCE_CMAKE_STRINGDQ
||
3813 style
== SCE_CMAKE_STRINGLQ
||
3814 style
== SCE_CMAKE_STRINGRQ
||
3815 style
== SCE_CMAKE_STRINGVAR
);
3818 return (style
== SCE_NSIS_STRINGDQ
||
3819 style
== SCE_NSIS_STRINGLQ
||
3820 style
== SCE_NSIS_STRINGRQ
||
3821 style
== SCE_NSIS_STRINGVAR
);
3824 return (style
== SCE_ADA_CHARACTER
||
3825 style
== SCE_ADA_STRING
||
3826 style
== SCE_ADA_CHARACTEREOL
||
3827 style
== SCE_ADA_STRINGEOL
);
3833 /** Checks whether the given style is a comment for the given lexer.
3835 * @param lexer Scintilla lexer type (@c SCLEX_*).
3836 * @param style Scintilla style (@c SCE_*).
3838 * @return @c TRUE if the style is a comment, @c FALSE otherwise.
3840 gboolean
highlighting_is_comment_style(gint lexer
, gint style
)
3846 return (style
== SCE_C_COMMENT
||
3847 style
== SCE_C_COMMENTLINE
||
3848 style
== SCE_C_COMMENTDOC
||
3849 style
== SCE_C_COMMENTLINEDOC
||
3850 style
== SCE_C_COMMENTDOCKEYWORD
||
3851 style
== SCE_C_COMMENTDOCKEYWORDERROR
);
3854 return (style
== SCE_PAS_COMMENT
||
3855 style
== SCE_PAS_COMMENT2
||
3856 style
== SCE_PAS_COMMENTLINE
);
3859 return (style
== SCE_D_COMMENT
||
3860 style
== SCE_D_COMMENTLINE
||
3861 style
== SCE_D_COMMENTDOC
||
3862 style
== SCE_D_COMMENTNESTED
||
3863 style
== SCE_D_COMMENTLINEDOC
||
3864 style
== SCE_D_COMMENTDOCKEYWORD
||
3865 style
== SCE_D_COMMENTDOCKEYWORDERROR
);
3868 return (style
== SCE_P_COMMENTLINE
||
3869 style
== SCE_P_COMMENTBLOCK
);
3873 return (style
== SCE_F_COMMENT
);
3876 return (style
== SCE_PL_COMMENTLINE
);
3878 case SCLEX_PROPERTIES
:
3879 return (style
== SCE_PROPS_COMMENT
);
3882 return (style
== SCE_PO_COMMENT
);
3885 return (style
== SCE_L_COMMENT
);
3887 case SCLEX_MAKEFILE
:
3888 return (style
== SCE_MAKE_COMMENT
);
3891 return (style
== SCE_RB_COMMENTLINE
);
3894 return (style
== SCE_SH_COMMENTLINE
);
3897 return (style
== SCE_R_COMMENT
);
3900 return (style
== SCE_SQL_COMMENT
||
3901 style
== SCE_SQL_COMMENTLINE
||
3902 style
== SCE_SQL_COMMENTDOC
);
3905 return (style
== SCE_TCL_COMMENT
||
3906 style
== SCE_TCL_COMMENTLINE
||
3907 style
== SCE_TCL_COMMENT_BOX
||
3908 style
== SCE_TCL_BLOCK_COMMENT
);
3911 return (style
== SCE_MATLAB_COMMENT
);
3914 return (style
== SCE_LUA_COMMENT
||
3915 style
== SCE_LUA_COMMENTLINE
||
3916 style
== SCE_LUA_COMMENTDOC
);
3919 return (style
== SCE_HA_COMMENTLINE
||
3920 style
== SCE_HA_COMMENTBLOCK
||
3921 style
== SCE_HA_COMMENTBLOCK2
||
3922 style
== SCE_HA_COMMENTBLOCK3
);
3924 case SCLEX_FREEBASIC
:
3925 return (style
== SCE_B_COMMENT
);
3928 return (style
== SCE_YAML_COMMENT
);
3932 style
== SCE_HBA_COMMENTLINE
||
3933 style
== SCE_HB_COMMENTLINE
||
3934 style
== SCE_H_COMMENT
||
3935 style
== SCE_HJA_COMMENT
||
3936 style
== SCE_HJA_COMMENTDOC
||
3937 style
== SCE_HJA_COMMENTLINE
||
3938 style
== SCE_HJ_COMMENT
||
3939 style
== SCE_HJ_COMMENTDOC
||
3940 style
== SCE_HJ_COMMENTLINE
||
3941 style
== SCE_HPA_COMMENTLINE
||
3942 style
== SCE_HP_COMMENTLINE
||
3943 style
== SCE_HPHP_COMMENT
||
3944 style
== SCE_HPHP_COMMENTLINE
||
3945 style
== SCE_H_SGML_COMMENT
);
3948 return (style
== SCE_CMAKE_COMMENT
);
3951 return (style
== SCE_NSIS_COMMENT
||
3952 style
== SCE_NSIS_COMMENTBOX
);
3955 return (style
== SCE_ADA_COMMENTLINE
||
3956 style
== SCE_NSIS_COMMENTBOX
);
3962 /** Checks whether the given style is normal code (not string, comment, preprocessor, etc).
3964 * @param lexer Scintilla lexer type (@c SCLEX_*).
3965 * @param style Scintilla style (@c SCE_*).
3967 * @return @c TRUE if the style is code, @c FALSE otherwise.
3969 gboolean
highlighting_is_code_style(gint lexer
, gint style
)
3974 if (style
== SCE_C_PREPROCESSOR
)
3978 return !(highlighting_is_comment_style(lexer
, style
) ||
3979 highlighting_is_string_style(lexer
, style
));