2 * highlighting.c - this file is part of Geany, a fast and lightweight IDE
4 * Copyright 2005-2010 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5 * Copyright 2006-2010 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.
25 * @file highlighting.h
26 * Syntax highlighting for the different filetypes, using the Scintilla lexers.
36 #include "highlighting.h"
39 #include "filetypes.h"
45 #include "sciwrappers.h"
48 #define GEANY_COLORSCHEMES_SUBDIR "colorschemes"
50 /* Whitespace has to be set after setting wordchars. */
51 #define GEANY_WHITESPACE_CHARS " \t" "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~"
54 static gchar
*whitespace_chars
;
57 static void styleset_markup(ScintillaObject
*sci
, gboolean set_keywords
);
62 gsize count
; /* number of styles */
63 GeanyLexerStyle
*styling
; /* array of styles, NULL if not used or uninitialised */
65 gchar
*wordchars
; /* NULL used for style sets with no styles */
66 gchar
**property_keys
;
67 gchar
**property_values
;
70 /* each filetype has a styleset but GEANY_FILETYPES_NONE uses common_style_set for styling */
71 static StyleSet
*style_sets
= NULL
;
74 enum /* Geany common styling */
80 GCS_MARGIN_LINENUMBER
,
86 GCS_LINE_WRAP_VISUALS
,
92 GCS_MARKER_TRANSLUCENCY
,
100 GeanyLexerStyle styling
[GCS_MAX
];
102 /* icon style, 1-4 */
104 /* vertical line style, 0-2 */
106 /* horizontal line when folded, 0-2 */
113 /* For filetypes.common [named_styles] section.
115 * e.g. "comment" => &GeanyLexerStyle{0x0000d0, 0xffffff, FALSE, FALSE} */
116 static GHashTable
*named_style_hash
= NULL
;
118 /* 0xBBGGRR format, set by "default" named style. */
119 static GeanyLexerStyle gsd_default
= {0x000000, 0xffffff, FALSE
, FALSE
};
122 /* Note: use sciwrappers.h instead where possible.
123 * Do not use SSM in files unrelated to scintilla. */
124 #define SSM(s, m, w, l) scintilla_send_message(s, m, w, l)
126 /* filetypes should use the filetypes.foo [lexer_properties] group instead of hardcoding */
127 static void sci_set_property(ScintillaObject
*sci
, const gchar
*name
, const gchar
*value
)
129 SSM(sci
, SCI_SETPROPERTY
, (uptr_t
) name
, (sptr_t
) value
);
133 static void new_styleset(gint file_type_id
, gint styling_count
)
135 StyleSet
*set
= &style_sets
[file_type_id
];
137 set
->count
= styling_count
;
138 set
->styling
= g_new0(GeanyLexerStyle
, styling_count
);
142 static void free_styleset(gint file_type_id
)
145 style_ptr
= &style_sets
[file_type_id
];
147 style_ptr
->count
= 0;
148 g_free(style_ptr
->styling
);
149 style_ptr
->styling
= NULL
;
150 g_strfreev(style_ptr
->keywords
);
151 style_ptr
->keywords
= NULL
;
152 g_free(style_ptr
->wordchars
);
153 style_ptr
->wordchars
= NULL
;
154 g_strfreev(style_ptr
->property_keys
);
155 style_ptr
->property_keys
= NULL
;
156 g_strfreev(style_ptr
->property_values
);
157 style_ptr
->property_values
= NULL
;
161 static void get_keyfile_keywords(GKeyFile
*config
, GKeyFile
*configh
,
162 const gchar
*key
, gint ft_id
, gint pos
)
164 const gchar section
[] = "keywords";
166 const gchar
*default_value
= "";
168 if (config
== NULL
|| configh
== NULL
)
170 style_sets
[ft_id
].keywords
[pos
] = g_strdup(default_value
);
174 result
= g_key_file_get_string(configh
, section
, key
, NULL
);
176 result
= g_key_file_get_string(config
, section
, key
, NULL
);
180 style_sets
[ft_id
].keywords
[pos
] = g_strdup(default_value
);
184 style_sets
[ft_id
].keywords
[pos
] = result
;
189 static void get_keyfile_wordchars(GKeyFile
*config
, GKeyFile
*configh
, gchar
**wordchars
)
193 if (config
== NULL
|| configh
== NULL
)
195 *wordchars
= g_strdup(GEANY_WORDCHARS
);
199 result
= g_key_file_get_string(configh
, "settings", "wordchars", NULL
);
200 if (result
== NULL
) result
= g_key_file_get_string(config
, "settings", "wordchars", NULL
);
204 *wordchars
= g_strdup(GEANY_WORDCHARS
);
211 static void read_named_style(const gchar
*named_style
, GeanyLexerStyle
*style
)
214 gchar
*comma
, *name
= NULL
;
215 const gchar
*bold
= NULL
;
216 const gchar
*italic
= NULL
;
218 g_return_if_fail(named_style
);
219 name
= utils_strdupa(named_style
); /* named_style must not be written to, may be a static string */
221 comma
= strstr(name
, ",");
224 bold
= strstr(comma
, ",bold");
225 italic
= strstr(comma
, ",italic");
226 *comma
= '\0'; /* terminate name to make lookup work */
228 cs
= g_hash_table_lookup(named_style_hash
, name
);
234 style
->bold
= !style
->bold
;
236 style
->italic
= !style
->italic
;
240 *style
= gsd_default
;
241 geany_debug("No named style '%s'! Check filetypes.common.", name
);
246 static void parse_color(const gchar
*str
, gint
*clr
)
250 /* ignore empty strings */
254 c
= utils_strtod(str
, NULL
, FALSE
);
260 geany_debug("Bad color '%s'", str
);
264 static void parse_keyfile_style(gchar
**list
,
265 const GeanyLexerStyle
*default_style
, GeanyLexerStyle
*style
)
270 g_return_if_fail(default_style
);
271 g_return_if_fail(style
);
273 *style
= *default_style
;
278 len
= g_strv_length(list
);
281 if (len
== 1 && isalpha(str
[0]))
282 read_named_style(str
, style
);
288 style
->italic
= utils_atob(list
[3]);
290 style
->bold
= utils_atob(list
[2]);
292 parse_color(list
[1], &style
->background
);
294 parse_color(list
[0], &style
->foreground
);
300 static void get_keyfile_style(GKeyFile
*config
, GKeyFile
*configh
,
301 const gchar
*key_name
, GeanyLexerStyle
*style
)
306 g_return_if_fail(config
);
307 g_return_if_fail(configh
);
308 g_return_if_fail(key_name
);
309 g_return_if_fail(style
);
311 list
= g_key_file_get_string_list(configh
, "styling", key_name
, &len
, NULL
);
313 list
= g_key_file_get_string_list(config
, "styling", key_name
, &len
, NULL
);
315 parse_keyfile_style(list
, &gsd_default
, style
);
320 /* Convert 0xRRGGBB to 0xBBGGRR, which scintilla expects. */
321 static gint
rotate_rgb(gint color
)
323 return ((color
& 0xFF0000) >> 16) +
325 ((color
& 0x0000FF) << 16);
329 static void convert_int(const gchar
*int_str
, gint
*val
)
332 gint v
= strtol(int_str
, &end
, 10);
339 /* Get first and second integer numbers, store in foreground and background fields of @a style. */
340 static void get_keyfile_int(GKeyFile
*config
, GKeyFile
*configh
, const gchar
*section
,
341 const gchar
*key
, gint fdefault_val
, gint sdefault_val
,
342 GeanyLexerStyle
*style
)
346 GeanyLexerStyle def
= {fdefault_val
, sdefault_val
, FALSE
, FALSE
};
348 g_return_if_fail(config
);
349 g_return_if_fail(configh
);
350 g_return_if_fail(section
);
351 g_return_if_fail(key
);
353 list
= g_key_file_get_string_list(configh
, section
, key
, &len
, NULL
);
355 list
= g_key_file_get_string_list(config
, section
, key
, &len
, NULL
);
363 convert_int(list
[0], &style
->foreground
);
366 convert_int(list
[1], &style
->background
);
373 /* first or second can be NULL. */
374 static void get_keyfile_ints(GKeyFile
*config
, GKeyFile
*configh
, const gchar
*section
,
376 gint fdefault_val
, gint sdefault_val
,
377 gint
*first
, gint
*second
)
379 GeanyLexerStyle tmp_style
;
381 get_keyfile_int(config
, configh
, section
, key
, fdefault_val
, sdefault_val
, &tmp_style
);
383 *first
= tmp_style
.foreground
;
385 *second
= tmp_style
.background
;
389 static guint
invert(guint icolour
)
391 if (interface_prefs
.highlighting_invert_all
)
392 return utils_invert_color(icolour
);
398 static GeanyLexerStyle
*get_style(guint ft_id
, guint styling_index
)
400 g_assert(ft_id
< filetypes_array
->len
);
402 if (G_UNLIKELY(ft_id
== GEANY_FILETYPES_NONE
))
404 g_assert(styling_index
< GCS_MAX
);
405 return &common_style_set
.styling
[styling_index
];
409 StyleSet
*set
= &style_sets
[ft_id
];
411 g_assert(styling_index
< set
->count
);
412 return &set
->styling
[styling_index
];
417 static void set_sci_style(ScintillaObject
*sci
, gint style
, guint ft_id
, guint styling_index
)
419 GeanyLexerStyle
*style_ptr
= get_style(ft_id
, styling_index
);
421 SSM(sci
, SCI_STYLESETFORE
, style
, invert(style_ptr
->foreground
));
422 SSM(sci
, SCI_STYLESETBACK
, style
, invert(style_ptr
->background
));
423 SSM(sci
, SCI_STYLESETBOLD
, style
, style_ptr
->bold
);
424 SSM(sci
, SCI_STYLESETITALIC
, style
, style_ptr
->italic
);
428 void highlighting_free_styles()
432 for (i
= 0; i
< filetypes_array
->len
; i
++)
435 if (named_style_hash
)
436 g_hash_table_destroy(named_style_hash
);
443 static GString
*get_global_typenames(gint lang
)
447 if (app
->tm_workspace
)
449 GPtrArray
*tags_array
= app
->tm_workspace
->global_tags
;
453 s
= symbols_find_tags_as_string(tags_array
, TM_GLOBAL_TYPE_MASK
, lang
);
461 get_keyfile_whitespace_chars(GKeyFile
*config
, GKeyFile
*configh
)
465 if (config
== NULL
|| configh
== NULL
)
471 result
= g_key_file_get_string(configh
, "settings", "whitespace_chars", NULL
);
473 result
= g_key_file_get_string(config
, "settings", "whitespace_chars", NULL
);
476 result
= g_strdup(GEANY_WHITESPACE_CHARS
);
481 static void add_named_style(GKeyFile
*config
, const gchar
*key
)
483 const gchar group
[] = "named_styles";
487 list
= g_key_file_get_string_list(config
, group
, key
, &len
, NULL
);
488 /* we allow a named style to reference another style above it */
489 if (list
&& len
>= 1)
491 GeanyLexerStyle
*style
= g_new0(GeanyLexerStyle
, 1);
493 parse_keyfile_style(list
, &gsd_default
, style
);
494 g_hash_table_insert(named_style_hash
, g_strdup(key
), style
);
500 static void get_named_styles(GKeyFile
*config
)
502 const gchar group
[] = "named_styles";
503 gchar
**keys
= g_key_file_get_keys(config
, group
, NULL
, NULL
);
511 const gchar
*key
= *ptr
;
516 /* don't replace already read default style with system one */
517 if (!g_str_equal(key
, "default"))
518 add_named_style(config
, key
);
526 static GKeyFile
*utils_key_file_new(const gchar
*filename
)
528 GKeyFile
*config
= g_key_file_new();
530 g_key_file_load_from_file(config
, filename
, G_KEY_FILE_KEEP_COMMENTS
, NULL
);
535 static void load_named_styles(GKeyFile
*config
, GKeyFile
*config_home
)
537 const gchar
*scheme
= editor_prefs
.color_scheme
;
538 gboolean free_kf
= FALSE
;
540 if (named_style_hash
)
541 g_hash_table_destroy(named_style_hash
); /* reloading */
543 named_style_hash
= g_hash_table_new_full(g_str_hash
, g_str_equal
, g_free
, g_free
);
547 gchar
*path
, *path_home
;
549 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->datadir
, GEANY_COLORSCHEMES_SUBDIR
, scheme
, NULL
);
550 path_home
= g_build_path(G_DIR_SEPARATOR_S
, app
->configdir
, GEANY_COLORSCHEMES_SUBDIR
, scheme
, NULL
);
552 if (g_file_test(path
, G_FILE_TEST_EXISTS
) || g_file_test(path_home
, G_FILE_TEST_EXISTS
))
554 config
= utils_key_file_new(path
);
555 config_home
= utils_key_file_new(path_home
);
558 /* if color scheme is missing, use default */
562 /* first set default to the "default" named style */
563 add_named_style(config
, "default");
564 read_named_style("default", &gsd_default
); /* in case user overrides but not with both colors */
565 add_named_style(config_home
, "default");
566 read_named_style("default", &gsd_default
);
568 get_named_styles(config
);
569 /* home overrides any system named style */
570 get_named_styles(config_home
);
574 g_key_file_free(config
);
575 g_key_file_free(config_home
);
580 static void styleset_common_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
582 load_named_styles(config
, config_home
);
584 get_keyfile_style(config
, config_home
, "default", &common_style_set
.styling
[GCS_DEFAULT
]);
585 get_keyfile_style(config
, config_home
, "selection", &common_style_set
.styling
[GCS_SELECTION
]);
586 get_keyfile_style(config
, config_home
, "brace_good", &common_style_set
.styling
[GCS_BRACE_GOOD
]);
587 get_keyfile_style(config
, config_home
, "brace_bad", &common_style_set
.styling
[GCS_BRACE_BAD
]);
588 get_keyfile_style(config
, config_home
, "margin_linenumber", &common_style_set
.styling
[GCS_MARGIN_LINENUMBER
]);
589 get_keyfile_style(config
, config_home
, "margin_folding", &common_style_set
.styling
[GCS_MARGIN_FOLDING
]);
590 get_keyfile_style(config
, config_home
, "current_line", &common_style_set
.styling
[GCS_CURRENT_LINE
]);
591 get_keyfile_style(config
, config_home
, "caret", &common_style_set
.styling
[GCS_CARET
]);
592 get_keyfile_style(config
, config_home
, "indent_guide", &common_style_set
.styling
[GCS_INDENT_GUIDE
]);
593 get_keyfile_style(config
, config_home
, "white_space", &common_style_set
.styling
[GCS_WHITE_SPACE
]);
594 get_keyfile_style(config
, config_home
, "marker_line", &common_style_set
.styling
[GCS_MARKER_LINE
]);
595 get_keyfile_style(config
, config_home
, "marker_search", &common_style_set
.styling
[GCS_MARKER_SEARCH
]);
596 get_keyfile_style(config
, config_home
, "marker_mark", &common_style_set
.styling
[GCS_MARKER_MARK
]);
597 get_keyfile_style(config
, config_home
, "calltips", &common_style_set
.styling
[GCS_CALLTIPS
]);
599 get_keyfile_ints(config
, config_home
, "styling", "folding_style",
600 1, 1, &common_style_set
.fold_marker
, &common_style_set
.fold_lines
);
601 get_keyfile_ints(config
, config_home
, "styling", "folding_horiz_line",
602 2, 0, &common_style_set
.fold_draw_line
, NULL
);
603 get_keyfile_ints(config
, config_home
, "styling", "caret_width",
604 1, 0, &common_style_set
.styling
[GCS_CARET
].background
, NULL
); /* caret.foreground used earlier */
605 get_keyfile_int(config
, config_home
, "styling", "line_wrap_visuals",
606 3, 0, &common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
]);
607 get_keyfile_int(config
, config_home
, "styling", "line_wrap_indent",
608 0, 0, &common_style_set
.styling
[GCS_LINE_WRAP_INDENT
]);
609 get_keyfile_int(config
, config_home
, "styling", "translucency",
610 256, 256, &common_style_set
.styling
[GCS_TRANSLUCENCY
]);
611 get_keyfile_int(config
, config_home
, "styling", "marker_translucency",
612 256, 256, &common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
]);
613 get_keyfile_int(config
, config_home
, "styling", "line_height",
614 0, 0, &common_style_set
.styling
[GCS_LINE_HEIGHT
]);
616 get_keyfile_wordchars(config
, config_home
, &common_style_set
.wordchars
);
617 whitespace_chars
= get_keyfile_whitespace_chars(config
, config_home
);
621 static void styleset_common(ScintillaObject
*sci
, filetype_id ft_id
)
623 SSM(sci
, SCI_STYLECLEARALL
, 0, 0);
625 SSM(sci
, SCI_SETWORDCHARS
, 0, (sptr_t
) (ft_id
== GEANY_FILETYPES_NONE
?
626 common_style_set
.wordchars
: style_sets
[ft_id
].wordchars
));
627 /* have to set whitespace after setting wordchars */
628 SSM(sci
, SCI_SETWHITESPACECHARS
, 0, (sptr_t
) whitespace_chars
);
630 /* caret colour, style and width */
631 SSM(sci
, SCI_SETCARETFORE
, invert(common_style_set
.styling
[GCS_CARET
].foreground
), 0);
632 SSM(sci
, SCI_SETCARETWIDTH
, common_style_set
.styling
[GCS_CARET
].background
, 0);
633 if (common_style_set
.styling
[GCS_CARET
].bold
)
634 SSM(sci
, SCI_SETCARETSTYLE
, CARETSTYLE_BLOCK
, 0);
636 SSM(sci
, SCI_SETCARETSTYLE
, CARETSTYLE_LINE
, 0);
639 SSM(sci
, SCI_SETEXTRAASCENT
, common_style_set
.styling
[GCS_LINE_HEIGHT
].foreground
, 0);
640 SSM(sci
, SCI_SETEXTRADESCENT
, common_style_set
.styling
[GCS_LINE_HEIGHT
].background
, 0);
642 /* colourise the current line */
643 SSM(sci
, SCI_SETCARETLINEBACK
, invert(common_style_set
.styling
[GCS_CURRENT_LINE
].background
), 0);
644 /* bold=enable current line */
645 SSM(sci
, SCI_SETCARETLINEVISIBLE
, common_style_set
.styling
[GCS_CURRENT_LINE
].bold
, 0);
647 /* Translucency for current line and selection */
648 SSM(sci
, SCI_SETCARETLINEBACKALPHA
, common_style_set
.styling
[GCS_TRANSLUCENCY
].foreground
, 0);
649 SSM(sci
, SCI_SETSELALPHA
, common_style_set
.styling
[GCS_TRANSLUCENCY
].background
, 0);
651 /* line wrapping visuals */
652 SSM(sci
, SCI_SETWRAPVISUALFLAGS
,
653 common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
].foreground
, 0);
654 SSM(sci
, SCI_SETWRAPVISUALFLAGSLOCATION
,
655 common_style_set
.styling
[GCS_LINE_WRAP_VISUALS
].background
, 0);
656 SSM(sci
, SCI_SETWRAPSTARTINDENT
, common_style_set
.styling
[GCS_LINE_WRAP_INDENT
].foreground
, 0);
657 SSM(sci
, SCI_SETWRAPINDENTMODE
, common_style_set
.styling
[GCS_LINE_WRAP_INDENT
].background
, 0);
659 /* Error indicator */
660 SSM(sci
, SCI_INDICSETSTYLE
, GEANY_INDICATOR_ERROR
, INDIC_SQUIGGLE
);
661 SSM(sci
, SCI_INDICSETFORE
, GEANY_INDICATOR_ERROR
, invert(rotate_rgb(0xff0000)));
663 /* Search indicator, used for 'Mark' matches */
664 SSM(sci
, SCI_INDICSETSTYLE
, GEANY_INDICATOR_SEARCH
, INDIC_ROUNDBOX
);
665 SSM(sci
, SCI_INDICSETFORE
, GEANY_INDICATOR_SEARCH
,
666 invert(common_style_set
.styling
[GCS_MARKER_SEARCH
].background
));
667 SSM(sci
, SCI_INDICSETALPHA
, GEANY_INDICATOR_SEARCH
, 60);
669 /* define marker symbols
670 * 0 -> line marker */
671 SSM(sci
, SCI_MARKERDEFINE
, 0, SC_MARK_SHORTARROW
);
672 SSM(sci
, SCI_MARKERSETFORE
, 0, invert(common_style_set
.styling
[GCS_MARKER_LINE
].foreground
));
673 SSM(sci
, SCI_MARKERSETBACK
, 0, invert(common_style_set
.styling
[GCS_MARKER_LINE
].background
));
674 SSM(sci
, SCI_MARKERSETALPHA
, 0, common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
].foreground
);
676 /* 1 -> user marker */
677 SSM(sci
, SCI_MARKERDEFINE
, 1, SC_MARK_PLUS
);
678 SSM(sci
, SCI_MARKERSETFORE
, 1, invert(common_style_set
.styling
[GCS_MARKER_MARK
].foreground
));
679 SSM(sci
, SCI_MARKERSETBACK
, 1, invert(common_style_set
.styling
[GCS_MARKER_MARK
].background
));
680 SSM(sci
, SCI_MARKERSETALPHA
, 1, common_style_set
.styling
[GCS_MARKER_TRANSLUCENCY
].background
);
682 /* 2 -> folding marker, other folding settings */
683 SSM(sci
, SCI_SETMARGINTYPEN
, 2, SC_MARGIN_SYMBOL
);
684 SSM(sci
, SCI_SETMARGINMASKN
, 2, SC_MASK_FOLDERS
);
686 /* drawing a horizontal line when text if folded */
687 switch (common_style_set
.fold_draw_line
)
691 SSM(sci
, SCI_SETFOLDFLAGS
, 4, 0);
696 SSM(sci
, SCI_SETFOLDFLAGS
, 16, 0);
701 SSM(sci
, SCI_SETFOLDFLAGS
, 0, 0);
706 /* choose the folding style - boxes or circles, I prefer boxes, so it is default ;-) */
707 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_EMPTY
);
708 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_EMPTY
);
709 switch (common_style_set
.fold_marker
)
712 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_CIRCLEMINUS
);
713 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_CIRCLEPLUS
);
714 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_CIRCLEPLUSCONNECTED
);
715 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_CIRCLEMINUSCONNECTED
);
718 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_BOXMINUS
);
719 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_BOXPLUS
);
720 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEREND
, SC_MARK_BOXPLUSCONNECTED
);
721 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPENMID
, SC_MARK_BOXMINUSCONNECTED
);
724 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_ARROWDOWN
);
725 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_ARROW
);
728 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDEROPEN
, SC_MARK_MINUS
);
729 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDER
, SC_MARK_PLUS
);
733 /* choose the folding style - straight or curved, I prefer straight, so it is default ;-) */
734 switch (common_style_set
.fold_lines
)
737 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_TCORNERCURVE
);
738 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_LCORNERCURVE
);
739 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_VLINE
);
742 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_TCORNER
);
743 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_LCORNER
);
744 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_VLINE
);
747 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERMIDTAIL
, SC_MARK_EMPTY
);
748 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERTAIL
, SC_MARK_EMPTY
);
749 SSM(sci
, SCI_MARKERDEFINE
, SC_MARKNUM_FOLDERSUB
, SC_MARK_EMPTY
);
753 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDEROPEN
,
754 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
755 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDEROPEN
,
756 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
757 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDER
,
758 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
759 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDER
,
760 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
761 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDERSUB
,
762 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
763 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDERSUB
,
764 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
765 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDERTAIL
,
766 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
767 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDERTAIL
,
768 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
769 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDEREND
,
770 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
771 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDEREND
,
772 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
773 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDEROPENMID
,
774 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
775 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDEROPENMID
,
776 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
777 SSM(sci
, SCI_MARKERSETFORE
, SC_MARKNUM_FOLDERMIDTAIL
,
778 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
779 SSM(sci
, SCI_MARKERSETBACK
, SC_MARKNUM_FOLDERMIDTAIL
,
780 invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].foreground
));
782 sci_set_property(sci
, "fold", "1");
783 sci_set_property(sci
, "fold.compact", "0");
784 sci_set_property(sci
, "fold.comment", "1");
785 sci_set_property(sci
, "fold.preprocessor", "1");
786 sci_set_property(sci
, "fold.at.else", "1");
789 /* bold (3rd argument) is whether to override default foreground selection */
790 if (common_style_set
.styling
[GCS_SELECTION
].bold
)
791 SSM(sci
, SCI_SETSELFORE
, 1, invert(common_style_set
.styling
[GCS_SELECTION
].foreground
));
792 /* italic (4th argument) is whether to override default background selection */
793 if (common_style_set
.styling
[GCS_SELECTION
].italic
)
794 SSM(sci
, SCI_SETSELBACK
, 1, invert(common_style_set
.styling
[GCS_SELECTION
].background
));
796 SSM(sci
, SCI_SETSTYLEBITS
, SSM(sci
, SCI_GETSTYLEBITSNEEDED
, 0, 0), 0);
798 /* TODO maybe we want to split the colour and hicolour to allow more fine-grained control */
799 SSM(sci
, SCI_SETFOLDMARGINCOLOUR
, 1, invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
800 SSM(sci
, SCI_SETFOLDMARGINHICOLOUR
, 1, invert(common_style_set
.styling
[GCS_MARGIN_FOLDING
].background
));
801 set_sci_style(sci
, STYLE_LINENUMBER
, GEANY_FILETYPES_NONE
, GCS_MARGIN_LINENUMBER
);
802 set_sci_style(sci
, STYLE_BRACELIGHT
, GEANY_FILETYPES_NONE
, GCS_BRACE_GOOD
);
803 set_sci_style(sci
, STYLE_BRACEBAD
, GEANY_FILETYPES_NONE
, GCS_BRACE_BAD
);
804 set_sci_style(sci
, STYLE_INDENTGUIDE
, GEANY_FILETYPES_NONE
, GCS_INDENT_GUIDE
);
806 /* bold = common whitespace settings enabled */
807 SSM(sci
, SCI_SETWHITESPACEFORE
, common_style_set
.styling
[GCS_WHITE_SPACE
].bold
,
808 invert(common_style_set
.styling
[GCS_WHITE_SPACE
].foreground
));
809 SSM(sci
, SCI_SETWHITESPACEBACK
, common_style_set
.styling
[GCS_WHITE_SPACE
].italic
,
810 invert(common_style_set
.styling
[GCS_WHITE_SPACE
].background
));
812 if (common_style_set
.styling
[GCS_CALLTIPS
].bold
)
813 SSM(sci
, SCI_CALLTIPSETFORE
, invert(common_style_set
.styling
[GCS_CALLTIPS
].foreground
), 1);
814 if (common_style_set
.styling
[GCS_CALLTIPS
].italic
)
815 SSM(sci
, SCI_CALLTIPSETBACK
, invert(common_style_set
.styling
[GCS_CALLTIPS
].background
), 1);
819 /* Merge & assign global typedefs and user secondary keywords.
820 * keyword_idx is used for both style_sets[].keywords and scintilla keyword style number */
821 static void merge_type_keywords(ScintillaObject
*sci
, gint ft_id
, gint keyword_idx
)
823 const gchar
*user_words
= style_sets
[ft_id
].keywords
[keyword_idx
];
826 s
= get_global_typenames(filetypes
[ft_id
]->lang
);
827 if (G_UNLIKELY(s
== NULL
))
828 s
= g_string_sized_new(200);
830 g_string_append_c(s
, ' '); /* append a space as delimiter to the existing list of words */
832 g_string_append(s
, user_words
);
834 sci_set_keywords(sci
, keyword_idx
, s
->str
);
835 g_string_free(s
, TRUE
);
839 /* All stylesets except None should call this. */
841 apply_filetype_properties(ScintillaObject
*sci
, gint lexer
, filetype_id ft_id
)
843 g_assert(ft_id
!= GEANY_FILETYPES_NONE
);
845 SSM(sci
, SCI_SETLEXER
, lexer
, 0);
847 styleset_common(sci
, ft_id
);
851 #define foreach_range(i, size) \
852 for (i = 0; i < size; i++)
854 /* names: the style names for the filetype. */
855 static void load_style_entries(GKeyFile
*config
, GKeyFile
*config_home
, gint filetype_idx
,
856 const gchar
**names
, gsize names_len
)
860 foreach_range(i
, names_len
)
862 const gchar
*name
= names
[i
];
863 GeanyLexerStyle
*style
= &style_sets
[filetype_idx
].styling
[i
];
865 get_keyfile_style(config
, config_home
, name
, style
);
870 /* styles: the style IDs for the filetype.
871 * STYLE_DEFAULT will be set to match the first style. */
872 static void apply_style_entries(ScintillaObject
*sci
, gint filetype_idx
,
873 gint
*styles
, gsize styles_len
)
877 g_return_if_fail(styles_len
> 0);
879 set_sci_style(sci
, STYLE_DEFAULT
, filetype_idx
, 0);
881 foreach_range(i
, styles_len
)
882 set_sci_style(sci
, styles
[i
], filetype_idx
, i
);
886 /* call new_styleset(filetype_idx, >= 20) before using this. */
888 styleset_c_like_init(GKeyFile
*config
, GKeyFile
*config_home
, gint filetype_idx
)
890 const gchar
*entries
[] =
910 "commentdockeyworderror",
914 new_styleset(filetype_idx
, G_N_ELEMENTS(entries
));
915 load_style_entries(config
, config_home
, filetype_idx
, entries
, G_N_ELEMENTS(entries
));
919 static void styleset_c_like(ScintillaObject
*sci
, gint ft_id
)
938 SCE_C_COMMENTLINEDOC
,
939 SCE_C_COMMENTDOCKEYWORD
,
940 SCE_C_COMMENTDOCKEYWORDERROR
,
941 /* used for local structs and typedefs */
945 apply_filetype_properties(sci
, SCLEX_CPP
, ft_id
);
947 apply_style_entries(sci
, ft_id
, styles
, G_N_ELEMENTS(styles
));
951 static void styleset_c_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
953 styleset_c_like_init(config
, config_home
, ft_id
);
955 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
956 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
957 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
958 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
959 style_sets
[ft_id
].keywords
[3] = NULL
;
963 static void styleset_c(ScintillaObject
*sci
, gint ft_id
)
965 styleset_c_like(sci
, ft_id
);
967 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
968 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
969 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
970 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
972 /* assign global types, merge them with user defined keywords and set them */
973 merge_type_keywords(sci
, ft_id
, 1);
977 static void styleset_pascal_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
979 new_styleset(ft_id
, 15);
980 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
981 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[1]);
982 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[2]);
983 get_keyfile_style(config
, config_home
, "comment2", &style_sets
[ft_id
].styling
[3]);
984 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[4]);
985 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[5]);
986 get_keyfile_style(config
, config_home
, "preprocessor2", &style_sets
[ft_id
].styling
[6]);
987 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[7]);
988 get_keyfile_style(config
, config_home
, "hexnumber", &style_sets
[ft_id
].styling
[8]);
989 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[9]);
990 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[10]);
991 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[11]);
992 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
993 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[13]);
994 get_keyfile_style(config
, config_home
, "asm", &style_sets
[ft_id
].styling
[14]);
996 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
997 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
998 style_sets
[ft_id
].keywords
[1] = NULL
;
1002 static void styleset_pascal(ScintillaObject
*sci
, gint ft_id
)
1004 apply_filetype_properties(sci
, SCLEX_PASCAL
, ft_id
);
1006 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1008 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1009 set_sci_style(sci
, SCE_PAS_DEFAULT
, ft_id
, 0);
1010 set_sci_style(sci
, SCE_PAS_IDENTIFIER
, ft_id
, 1);
1011 set_sci_style(sci
, SCE_PAS_COMMENT
, ft_id
, 2);
1012 set_sci_style(sci
, SCE_PAS_COMMENT2
, ft_id
, 3);
1013 set_sci_style(sci
, SCE_PAS_COMMENTLINE
, ft_id
, 4);
1014 set_sci_style(sci
, SCE_PAS_PREPROCESSOR
, ft_id
, 5);
1015 set_sci_style(sci
, SCE_PAS_PREPROCESSOR2
, ft_id
, 6);
1016 set_sci_style(sci
, SCE_PAS_NUMBER
, ft_id
, 7);
1017 set_sci_style(sci
, SCE_PAS_HEXNUMBER
, ft_id
, 8);
1018 set_sci_style(sci
, SCE_PAS_WORD
, ft_id
, 9);
1019 set_sci_style(sci
, SCE_PAS_STRING
, ft_id
, 10);
1020 set_sci_style(sci
, SCE_PAS_STRINGEOL
, ft_id
, 11);
1021 set_sci_style(sci
, SCE_PAS_CHARACTER
, ft_id
, 12);
1022 set_sci_style(sci
, SCE_PAS_OPERATOR
, ft_id
, 13);
1023 set_sci_style(sci
, SCE_PAS_ASM
, ft_id
, 14);
1027 static void styleset_makefile_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1029 new_styleset(ft_id
, 7);
1030 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1031 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1032 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[2]);
1033 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[3]);
1034 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
1035 get_keyfile_style(config
, config_home
, "target", &style_sets
[ft_id
].styling
[5]);
1036 get_keyfile_style(config
, config_home
, "ideol", &style_sets
[ft_id
].styling
[6]);
1038 style_sets
[ft_id
].keywords
= NULL
;
1042 static void styleset_makefile(ScintillaObject
*sci
, gint ft_id
)
1044 apply_filetype_properties(sci
, SCLEX_MAKEFILE
, ft_id
);
1046 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1047 set_sci_style(sci
, SCE_MAKE_DEFAULT
, ft_id
, 0);
1048 set_sci_style(sci
, SCE_MAKE_COMMENT
, ft_id
, 1);
1049 set_sci_style(sci
, SCE_MAKE_PREPROCESSOR
, ft_id
, 2);
1050 set_sci_style(sci
, SCE_MAKE_IDENTIFIER
, ft_id
, 3);
1051 set_sci_style(sci
, SCE_MAKE_OPERATOR
, ft_id
, 4);
1052 set_sci_style(sci
, SCE_MAKE_TARGET
, ft_id
, 5);
1053 set_sci_style(sci
, SCE_MAKE_IDEOL
, ft_id
, 6);
1057 static void styleset_diff_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1059 new_styleset(ft_id
, 8);
1060 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1061 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1062 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[2]);
1063 get_keyfile_style(config
, config_home
, "header", &style_sets
[ft_id
].styling
[3]);
1064 get_keyfile_style(config
, config_home
, "position", &style_sets
[ft_id
].styling
[4]);
1065 get_keyfile_style(config
, config_home
, "deleted", &style_sets
[ft_id
].styling
[5]);
1066 get_keyfile_style(config
, config_home
, "added", &style_sets
[ft_id
].styling
[6]);
1067 get_keyfile_style(config
, config_home
, "changed", &style_sets
[ft_id
].styling
[7]);
1069 style_sets
[ft_id
].keywords
= NULL
;
1073 static void styleset_diff(ScintillaObject
*sci
, gint ft_id
)
1075 apply_filetype_properties(sci
, SCLEX_DIFF
, ft_id
);
1077 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1078 set_sci_style(sci
, SCE_DIFF_DEFAULT
, ft_id
, 0);
1079 set_sci_style(sci
, SCE_DIFF_COMMENT
, ft_id
, 1);
1080 set_sci_style(sci
, SCE_DIFF_COMMAND
, ft_id
, 2);
1081 set_sci_style(sci
, SCE_DIFF_HEADER
, ft_id
, 3);
1082 set_sci_style(sci
, SCE_DIFF_POSITION
, ft_id
, 4);
1083 set_sci_style(sci
, SCE_DIFF_DELETED
, ft_id
, 5);
1084 set_sci_style(sci
, SCE_DIFF_ADDED
, ft_id
, 6);
1085 set_sci_style(sci
, SCE_DIFF_CHANGED
, ft_id
, 7);
1089 static void styleset_latex_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1091 new_styleset(ft_id
, 5);
1092 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1093 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[1]);
1094 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[2]);
1095 get_keyfile_style(config
, config_home
, "math", &style_sets
[ft_id
].styling
[3]);
1096 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[4]);
1098 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1099 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1100 style_sets
[ft_id
].keywords
[1] = NULL
;
1104 static void styleset_latex(ScintillaObject
*sci
, gint ft_id
)
1106 apply_filetype_properties(sci
, SCLEX_LATEX
, ft_id
);
1108 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1110 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1111 set_sci_style(sci
, SCE_L_DEFAULT
, ft_id
, 0);
1112 set_sci_style(sci
, SCE_L_COMMAND
, ft_id
, 1);
1113 set_sci_style(sci
, SCE_L_TAG
, ft_id
, 2);
1114 set_sci_style(sci
, SCE_L_MATH
, ft_id
, 3);
1115 set_sci_style(sci
, SCE_L_COMMENT
, ft_id
, 4);
1119 static void styleset_php_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1121 style_sets
[ft_id
].styling
= NULL
;
1122 style_sets
[ft_id
].keywords
= NULL
;
1126 static void styleset_php(ScintillaObject
*sci
, gint ft_id
)
1128 apply_filetype_properties(sci
, SCLEX_HTML
, ft_id
);
1130 /* use the same colouring as for XML */
1131 styleset_markup(sci
, TRUE
);
1135 static void styleset_html_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1137 style_sets
[ft_id
].styling
= NULL
;
1138 style_sets
[ft_id
].keywords
= NULL
;
1142 static void styleset_html(ScintillaObject
*sci
, gint ft_id
)
1144 apply_filetype_properties(sci
, SCLEX_HTML
, ft_id
);
1146 /* use the same colouring for HTML; XML and so on */
1147 styleset_markup(sci
, TRUE
);
1151 static void styleset_markup_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1153 new_styleset(GEANY_FILETYPES_XML
, 56);
1154 get_keyfile_style(config
, config_home
, "html_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[0]);
1155 get_keyfile_style(config
, config_home
, "html_tag", &style_sets
[GEANY_FILETYPES_XML
].styling
[1]);
1156 get_keyfile_style(config
, config_home
, "html_tagunknown", &style_sets
[GEANY_FILETYPES_XML
].styling
[2]);
1157 get_keyfile_style(config
, config_home
, "html_attribute", &style_sets
[GEANY_FILETYPES_XML
].styling
[3]);
1158 get_keyfile_style(config
, config_home
, "html_attributeunknown", &style_sets
[GEANY_FILETYPES_XML
].styling
[4]);
1159 get_keyfile_style(config
, config_home
, "html_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[5]);
1160 get_keyfile_style(config
, config_home
, "html_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[6]);
1161 get_keyfile_style(config
, config_home
, "html_singlestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[7]);
1162 get_keyfile_style(config
, config_home
, "html_other", &style_sets
[GEANY_FILETYPES_XML
].styling
[8]);
1163 get_keyfile_style(config
, config_home
, "html_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[9]);
1164 get_keyfile_style(config
, config_home
, "html_entity", &style_sets
[GEANY_FILETYPES_XML
].styling
[10]);
1165 get_keyfile_style(config
, config_home
, "html_tagend", &style_sets
[GEANY_FILETYPES_XML
].styling
[11]);
1166 get_keyfile_style(config
, config_home
, "html_xmlstart", &style_sets
[GEANY_FILETYPES_XML
].styling
[12]);
1167 get_keyfile_style(config
, config_home
, "html_xmlend", &style_sets
[GEANY_FILETYPES_XML
].styling
[13]);
1168 get_keyfile_style(config
, config_home
, "html_script", &style_sets
[GEANY_FILETYPES_XML
].styling
[14]);
1169 get_keyfile_style(config
, config_home
, "html_asp", &style_sets
[GEANY_FILETYPES_XML
].styling
[15]);
1170 get_keyfile_style(config
, config_home
, "html_aspat", &style_sets
[GEANY_FILETYPES_XML
].styling
[16]);
1171 get_keyfile_style(config
, config_home
, "html_cdata", &style_sets
[GEANY_FILETYPES_XML
].styling
[17]);
1172 get_keyfile_style(config
, config_home
, "html_question", &style_sets
[GEANY_FILETYPES_XML
].styling
[18]);
1173 get_keyfile_style(config
, config_home
, "html_value", &style_sets
[GEANY_FILETYPES_XML
].styling
[19]);
1174 get_keyfile_style(config
, config_home
, "html_xccomment", &style_sets
[GEANY_FILETYPES_XML
].styling
[20]);
1176 get_keyfile_style(config
, config_home
, "sgml_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[21]);
1177 get_keyfile_style(config
, config_home
, "sgml_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[22]);
1178 get_keyfile_style(config
, config_home
, "sgml_special", &style_sets
[GEANY_FILETYPES_XML
].styling
[23]);
1179 get_keyfile_style(config
, config_home
, "sgml_command", &style_sets
[GEANY_FILETYPES_XML
].styling
[24]);
1180 get_keyfile_style(config
, config_home
, "sgml_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[25]);
1181 get_keyfile_style(config
, config_home
, "sgml_simplestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[26]);
1182 get_keyfile_style(config
, config_home
, "sgml_1st_param", &style_sets
[GEANY_FILETYPES_XML
].styling
[27]);
1183 get_keyfile_style(config
, config_home
, "sgml_entity", &style_sets
[GEANY_FILETYPES_XML
].styling
[28]);
1184 get_keyfile_style(config
, config_home
, "sgml_block_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[29]);
1185 get_keyfile_style(config
, config_home
, "sgml_1st_param_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[30]);
1186 get_keyfile_style(config
, config_home
, "sgml_error", &style_sets
[GEANY_FILETYPES_XML
].styling
[31]);
1188 get_keyfile_style(config
, config_home
, "php_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[32]);
1189 get_keyfile_style(config
, config_home
, "php_simplestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[33]);
1190 get_keyfile_style(config
, config_home
, "php_hstring", &style_sets
[GEANY_FILETYPES_XML
].styling
[34]);
1191 get_keyfile_style(config
, config_home
, "php_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[35]);
1192 get_keyfile_style(config
, config_home
, "php_word", &style_sets
[GEANY_FILETYPES_XML
].styling
[36]);
1193 get_keyfile_style(config
, config_home
, "php_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[37]);
1194 get_keyfile_style(config
, config_home
, "php_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[38]);
1195 get_keyfile_style(config
, config_home
, "php_commentline", &style_sets
[GEANY_FILETYPES_XML
].styling
[39]);
1196 get_keyfile_style(config
, config_home
, "php_operator", &style_sets
[GEANY_FILETYPES_XML
].styling
[40]);
1197 get_keyfile_style(config
, config_home
, "php_hstring_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[41]);
1198 get_keyfile_style(config
, config_home
, "php_complex_variable", &style_sets
[GEANY_FILETYPES_XML
].styling
[42]);
1200 get_keyfile_style(config
, config_home
, "jscript_start", &style_sets
[GEANY_FILETYPES_XML
].styling
[43]);
1201 get_keyfile_style(config
, config_home
, "jscript_default", &style_sets
[GEANY_FILETYPES_XML
].styling
[44]);
1202 get_keyfile_style(config
, config_home
, "jscript_comment", &style_sets
[GEANY_FILETYPES_XML
].styling
[45]);
1203 get_keyfile_style(config
, config_home
, "jscript_commentline", &style_sets
[GEANY_FILETYPES_XML
].styling
[46]);
1204 get_keyfile_style(config
, config_home
, "jscript_commentdoc", &style_sets
[GEANY_FILETYPES_XML
].styling
[47]);
1205 get_keyfile_style(config
, config_home
, "jscript_number", &style_sets
[GEANY_FILETYPES_XML
].styling
[48]);
1206 get_keyfile_style(config
, config_home
, "jscript_word", &style_sets
[GEANY_FILETYPES_XML
].styling
[49]);
1207 get_keyfile_style(config
, config_home
, "jscript_keyword", &style_sets
[GEANY_FILETYPES_XML
].styling
[50]);
1208 get_keyfile_style(config
, config_home
, "jscript_doublestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[51]);
1209 get_keyfile_style(config
, config_home
, "jscript_singlestring", &style_sets
[GEANY_FILETYPES_XML
].styling
[52]);
1210 get_keyfile_style(config
, config_home
, "jscript_symbols", &style_sets
[GEANY_FILETYPES_XML
].styling
[53]);
1211 get_keyfile_style(config
, config_home
, "jscript_stringeol", &style_sets
[GEANY_FILETYPES_XML
].styling
[54]);
1212 get_keyfile_style(config
, config_home
, "jscript_regex", &style_sets
[GEANY_FILETYPES_XML
].styling
[55]);
1214 style_sets
[GEANY_FILETYPES_XML
].keywords
= g_new(gchar
*, 7);
1215 get_keyfile_keywords(config
, config_home
, "html", GEANY_FILETYPES_XML
, 0);
1216 get_keyfile_keywords(config
, config_home
, "javascript", GEANY_FILETYPES_XML
, 1);
1217 get_keyfile_keywords(config
, config_home
, "vbscript", GEANY_FILETYPES_XML
, 2);
1218 get_keyfile_keywords(config
, config_home
, "python", GEANY_FILETYPES_XML
, 3);
1219 get_keyfile_keywords(config
, config_home
, "php", GEANY_FILETYPES_XML
, 4);
1220 get_keyfile_keywords(config
, config_home
, "sgml", GEANY_FILETYPES_XML
, 5);
1221 style_sets
[GEANY_FILETYPES_XML
].keywords
[6] = NULL
;
1225 static void styleset_markup(ScintillaObject
*sci
, gboolean set_keywords
)
1228 const gchar
*keywords
;
1230 /* Used by several filetypes */
1231 if (style_sets
[GEANY_FILETYPES_XML
].styling
== NULL
)
1232 filetypes_load_config(GEANY_FILETYPES_XML
, FALSE
);
1234 /* manually initialise filetype Python for use with embedded Python */
1235 filetypes_load_config(GEANY_FILETYPES_PYTHON
, FALSE
);
1237 /* Set keywords. If we don't want to use keywords, we must at least unset maybe previously set
1238 * keywords, e.g. when switching between filetypes. */
1239 for (i
= 0; i
< 5; i
++)
1241 keywords
= (set_keywords
) ? style_sets
[GEANY_FILETYPES_XML
].keywords
[i
] : "";
1242 sci_set_keywords(sci
, i
, keywords
);
1244 /* always set SGML keywords */
1245 sci_set_keywords(sci
, 5, style_sets
[GEANY_FILETYPES_XML
].keywords
[5]);
1247 set_sci_style(sci
, STYLE_DEFAULT
, GEANY_FILETYPES_XML
, 0);
1248 set_sci_style(sci
, SCE_H_DEFAULT
, GEANY_FILETYPES_XML
, 0);
1249 set_sci_style(sci
, SCE_H_TAG
, GEANY_FILETYPES_XML
, 1);
1250 set_sci_style(sci
, SCE_H_TAGUNKNOWN
, GEANY_FILETYPES_XML
, 2);
1251 set_sci_style(sci
, SCE_H_ATTRIBUTE
, GEANY_FILETYPES_XML
, 3);
1252 set_sci_style(sci
, SCE_H_ATTRIBUTEUNKNOWN
, GEANY_FILETYPES_XML
, 4);
1253 set_sci_style(sci
, SCE_H_NUMBER
, GEANY_FILETYPES_XML
, 5);
1254 set_sci_style(sci
, SCE_H_DOUBLESTRING
, GEANY_FILETYPES_XML
, 6);
1255 set_sci_style(sci
, SCE_H_SINGLESTRING
, GEANY_FILETYPES_XML
, 7);
1256 set_sci_style(sci
, SCE_H_OTHER
, GEANY_FILETYPES_XML
, 8);
1257 set_sci_style(sci
, SCE_H_COMMENT
, GEANY_FILETYPES_XML
, 9);
1258 set_sci_style(sci
, SCE_H_ENTITY
, GEANY_FILETYPES_XML
, 10);
1259 set_sci_style(sci
, SCE_H_TAGEND
, GEANY_FILETYPES_XML
, 11);
1260 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_XMLSTART
, 1);
1261 set_sci_style(sci
, SCE_H_XMLSTART
, GEANY_FILETYPES_XML
, 12);
1262 set_sci_style(sci
, SCE_H_XMLEND
, GEANY_FILETYPES_XML
, 13);
1263 set_sci_style(sci
, SCE_H_SCRIPT
, GEANY_FILETYPES_XML
, 14);
1264 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_ASP
, 1);
1265 set_sci_style(sci
, SCE_H_ASP
, GEANY_FILETYPES_XML
, 15);
1266 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_ASPAT
, 1);
1267 set_sci_style(sci
, SCE_H_ASPAT
, GEANY_FILETYPES_XML
, 16);
1268 set_sci_style(sci
, SCE_H_CDATA
, GEANY_FILETYPES_XML
, 17);
1269 set_sci_style(sci
, SCE_H_QUESTION
, GEANY_FILETYPES_XML
, 18);
1270 set_sci_style(sci
, SCE_H_VALUE
, GEANY_FILETYPES_XML
, 19);
1271 set_sci_style(sci
, SCE_H_XCCOMMENT
, GEANY_FILETYPES_XML
, 20);
1273 set_sci_style(sci
, SCE_H_SGML_DEFAULT
, GEANY_FILETYPES_XML
, 21);
1274 set_sci_style(sci
, SCE_H_SGML_COMMENT
, GEANY_FILETYPES_XML
, 22);
1275 set_sci_style(sci
, SCE_H_SGML_SPECIAL
, GEANY_FILETYPES_XML
, 23);
1276 set_sci_style(sci
, SCE_H_SGML_COMMAND
, GEANY_FILETYPES_XML
, 24);
1277 set_sci_style(sci
, SCE_H_SGML_DOUBLESTRING
, GEANY_FILETYPES_XML
, 25);
1278 set_sci_style(sci
, SCE_H_SGML_SIMPLESTRING
, GEANY_FILETYPES_XML
, 26);
1279 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM
, GEANY_FILETYPES_XML
, 27);
1280 set_sci_style(sci
, SCE_H_SGML_ENTITY
, GEANY_FILETYPES_XML
, 28);
1281 set_sci_style(sci
, SCE_H_SGML_BLOCK_DEFAULT
, GEANY_FILETYPES_XML
, 29);
1282 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM_COMMENT
, GEANY_FILETYPES_XML
, 30);
1283 set_sci_style(sci
, SCE_H_SGML_ERROR
, GEANY_FILETYPES_XML
, 31);
1285 /* embedded JavaScript */
1286 set_sci_style(sci
, SCE_HJ_START
, GEANY_FILETYPES_XML
, 43);
1287 set_sci_style(sci
, SCE_HJ_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1288 set_sci_style(sci
, SCE_HJ_COMMENT
, GEANY_FILETYPES_XML
, 45);
1289 set_sci_style(sci
, SCE_HJ_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1290 set_sci_style(sci
, SCE_HJ_COMMENTDOC
, GEANY_FILETYPES_XML
, 47);
1291 set_sci_style(sci
, SCE_HJ_NUMBER
, GEANY_FILETYPES_XML
, 48);
1292 set_sci_style(sci
, SCE_HJ_WORD
, GEANY_FILETYPES_XML
, 49);
1293 set_sci_style(sci
, SCE_HJ_KEYWORD
, GEANY_FILETYPES_XML
, 50);
1294 set_sci_style(sci
, SCE_HJ_DOUBLESTRING
, GEANY_FILETYPES_XML
, 51);
1295 set_sci_style(sci
, SCE_HJ_SINGLESTRING
, GEANY_FILETYPES_XML
, 52);
1296 set_sci_style(sci
, SCE_HJ_SYMBOLS
, GEANY_FILETYPES_XML
, 53);
1297 set_sci_style(sci
, SCE_HJ_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1298 set_sci_style(sci
, SCE_HJ_REGEX
, GEANY_FILETYPES_XML
, 55);
1300 /* for HB, VBScript?, use the same styles as for JavaScript */
1301 set_sci_style(sci
, SCE_HB_START
, GEANY_FILETYPES_XML
, 43);
1302 set_sci_style(sci
, SCE_HB_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1303 set_sci_style(sci
, SCE_HB_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1304 set_sci_style(sci
, SCE_HB_NUMBER
, GEANY_FILETYPES_XML
, 48);
1305 set_sci_style(sci
, SCE_HB_WORD
, GEANY_FILETYPES_XML
, 50); /* keywords */
1306 set_sci_style(sci
, SCE_HB_STRING
, GEANY_FILETYPES_XML
, 51);
1307 set_sci_style(sci
, SCE_HB_IDENTIFIER
, GEANY_FILETYPES_XML
, 53);
1308 set_sci_style(sci
, SCE_HB_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1310 /* for HBA, VBScript?, use the same styles as for JavaScript */
1311 set_sci_style(sci
, SCE_HBA_START
, GEANY_FILETYPES_XML
, 43);
1312 set_sci_style(sci
, SCE_HBA_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1313 set_sci_style(sci
, SCE_HBA_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1314 set_sci_style(sci
, SCE_HBA_NUMBER
, GEANY_FILETYPES_XML
, 48);
1315 set_sci_style(sci
, SCE_HBA_WORD
, GEANY_FILETYPES_XML
, 50); /* keywords */
1316 set_sci_style(sci
, SCE_HBA_STRING
, GEANY_FILETYPES_XML
, 51);
1317 set_sci_style(sci
, SCE_HBA_IDENTIFIER
, GEANY_FILETYPES_XML
, 53);
1318 set_sci_style(sci
, SCE_HBA_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1320 /* for HJA, ASP Javascript, use the same styles as for JavaScript */
1321 set_sci_style(sci
, SCE_HJA_START
, GEANY_FILETYPES_XML
, 43);
1322 set_sci_style(sci
, SCE_HJA_DEFAULT
, GEANY_FILETYPES_XML
, 44);
1323 set_sci_style(sci
, SCE_HJA_COMMENT
, GEANY_FILETYPES_XML
, 45);
1324 set_sci_style(sci
, SCE_HJA_COMMENTLINE
, GEANY_FILETYPES_XML
, 46);
1325 set_sci_style(sci
, SCE_HJA_COMMENTDOC
, GEANY_FILETYPES_XML
, 47);
1326 set_sci_style(sci
, SCE_HJA_NUMBER
, GEANY_FILETYPES_XML
, 48);
1327 set_sci_style(sci
, SCE_HJA_WORD
, GEANY_FILETYPES_XML
, 49);
1328 set_sci_style(sci
, SCE_HJA_KEYWORD
, GEANY_FILETYPES_XML
, 50);
1329 set_sci_style(sci
, SCE_HJA_DOUBLESTRING
, GEANY_FILETYPES_XML
, 51);
1330 set_sci_style(sci
, SCE_HJA_SINGLESTRING
, GEANY_FILETYPES_XML
, 52);
1331 set_sci_style(sci
, SCE_HJA_SYMBOLS
, GEANY_FILETYPES_XML
, 53);
1332 set_sci_style(sci
, SCE_HJA_STRINGEOL
, GEANY_FILETYPES_XML
, 54);
1334 /* for embedded Python we use the Python styles */
1335 set_sci_style(sci
, SCE_HP_START
, GEANY_FILETYPES_XML
, 43);
1336 set_sci_style(sci
, SCE_HP_DEFAULT
, GEANY_FILETYPES_PYTHON
, 0);
1337 set_sci_style(sci
, SCE_HP_COMMENTLINE
, GEANY_FILETYPES_PYTHON
, 1);
1338 set_sci_style(sci
, SCE_HP_NUMBER
, GEANY_FILETYPES_PYTHON
, 2);
1339 set_sci_style(sci
, SCE_HP_STRING
, GEANY_FILETYPES_PYTHON
, 3);
1340 set_sci_style(sci
, SCE_HP_CHARACTER
, GEANY_FILETYPES_PYTHON
, 4);
1341 set_sci_style(sci
, SCE_HP_WORD
, GEANY_FILETYPES_PYTHON
, 5);
1342 set_sci_style(sci
, SCE_HP_TRIPLE
, GEANY_FILETYPES_PYTHON
, 6);
1343 set_sci_style(sci
, SCE_HP_TRIPLEDOUBLE
, GEANY_FILETYPES_PYTHON
, 7);
1344 set_sci_style(sci
, SCE_HP_CLASSNAME
, GEANY_FILETYPES_PYTHON
, 8);
1345 set_sci_style(sci
, SCE_HP_DEFNAME
, GEANY_FILETYPES_PYTHON
, 9);
1346 set_sci_style(sci
, SCE_HP_OPERATOR
, GEANY_FILETYPES_PYTHON
, 10);
1347 set_sci_style(sci
, SCE_HP_IDENTIFIER
, GEANY_FILETYPES_PYTHON
, 11);
1349 /* for embedded HPA (what is this?) we use the Python styles */
1350 set_sci_style(sci
, SCE_HPA_START
, GEANY_FILETYPES_XML
, 43);
1351 set_sci_style(sci
, SCE_HPA_DEFAULT
, GEANY_FILETYPES_PYTHON
, 0);
1352 set_sci_style(sci
, SCE_HPA_COMMENTLINE
, GEANY_FILETYPES_PYTHON
, 1);
1353 set_sci_style(sci
, SCE_HPA_NUMBER
, GEANY_FILETYPES_PYTHON
, 2);
1354 set_sci_style(sci
, SCE_HPA_STRING
, GEANY_FILETYPES_PYTHON
, 3);
1355 set_sci_style(sci
, SCE_HPA_CHARACTER
, GEANY_FILETYPES_PYTHON
, 4);
1356 set_sci_style(sci
, SCE_HPA_WORD
, GEANY_FILETYPES_PYTHON
, 5);
1357 set_sci_style(sci
, SCE_HPA_TRIPLE
, GEANY_FILETYPES_PYTHON
, 6);
1358 set_sci_style(sci
, SCE_HPA_TRIPLEDOUBLE
, GEANY_FILETYPES_PYTHON
, 7);
1359 set_sci_style(sci
, SCE_HPA_CLASSNAME
, GEANY_FILETYPES_PYTHON
, 8);
1360 set_sci_style(sci
, SCE_HPA_DEFNAME
, GEANY_FILETYPES_PYTHON
, 9);
1361 set_sci_style(sci
, SCE_HPA_OPERATOR
, GEANY_FILETYPES_PYTHON
, 10);
1362 set_sci_style(sci
, SCE_HPA_IDENTIFIER
, GEANY_FILETYPES_PYTHON
, 11);
1365 set_sci_style(sci
, SCE_HPHP_DEFAULT
, GEANY_FILETYPES_XML
, 32);
1366 set_sci_style(sci
, SCE_HPHP_SIMPLESTRING
, GEANY_FILETYPES_XML
, 33);
1367 set_sci_style(sci
, SCE_HPHP_HSTRING
, GEANY_FILETYPES_XML
, 34);
1368 set_sci_style(sci
, SCE_HPHP_NUMBER
, GEANY_FILETYPES_XML
, 35);
1369 set_sci_style(sci
, SCE_HPHP_WORD
, GEANY_FILETYPES_XML
, 36);
1370 set_sci_style(sci
, SCE_HPHP_VARIABLE
, GEANY_FILETYPES_XML
, 37);
1371 set_sci_style(sci
, SCE_HPHP_COMMENT
, GEANY_FILETYPES_XML
, 38);
1372 set_sci_style(sci
, SCE_HPHP_COMMENTLINE
, GEANY_FILETYPES_XML
, 39);
1373 set_sci_style(sci
, SCE_HPHP_OPERATOR
, GEANY_FILETYPES_XML
, 40);
1374 set_sci_style(sci
, SCE_HPHP_HSTRING_VARIABLE
, GEANY_FILETYPES_XML
, 41);
1375 set_sci_style(sci
, SCE_HPHP_COMPLEX_VARIABLE
, GEANY_FILETYPES_XML
, 42);
1377 /* note: normally this would be in the filetype file instead */
1378 sci_set_property(sci
, "fold.html", "1");
1379 sci_set_property(sci
, "fold.html.preprocessor", "0");
1383 static void styleset_java_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1385 styleset_c_like_init(config
, config_home
, ft_id
);
1387 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
1388 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1389 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
1390 get_keyfile_keywords(config
, config_home
, "doccomment", ft_id
, 2);
1391 get_keyfile_keywords(config
, config_home
, "typedefs", ft_id
, 3);
1392 style_sets
[ft_id
].keywords
[4] = NULL
;
1396 static void styleset_java(ScintillaObject
*sci
, gint ft_id
)
1398 styleset_c_like(sci
, ft_id
);
1400 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1401 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
1402 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1403 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
1404 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[3]);
1406 /* assign global types, merge them with user defined keywords and set them */
1407 merge_type_keywords(sci
, ft_id
, 1);
1411 static void styleset_perl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1413 new_styleset(ft_id
, 35);
1414 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1415 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[1]);
1416 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
1417 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
1418 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[4]);
1419 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[5]);
1420 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[6]);
1421 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[7]);
1422 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[8]);
1423 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[9]);
1424 get_keyfile_style(config
, config_home
, "scalar", &style_sets
[ft_id
].styling
[10]);
1425 get_keyfile_style(config
, config_home
, "pod", &style_sets
[ft_id
].styling
[11]);
1426 get_keyfile_style(config
, config_home
, "regex", &style_sets
[ft_id
].styling
[12]);
1427 get_keyfile_style(config
, config_home
, "array", &style_sets
[ft_id
].styling
[13]);
1428 get_keyfile_style(config
, config_home
, "hash", &style_sets
[ft_id
].styling
[14]);
1429 get_keyfile_style(config
, config_home
, "symboltable", &style_sets
[ft_id
].styling
[15]);
1430 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[16]);
1431 get_keyfile_style(config
, config_home
, "pod_verbatim", &style_sets
[ft_id
].styling
[17]);
1432 get_keyfile_style(config
, config_home
, "reg_subst", &style_sets
[ft_id
].styling
[18]);
1433 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[19]);
1434 get_keyfile_style(config
, config_home
, "here_delim", &style_sets
[ft_id
].styling
[20]);
1435 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[21]);
1436 get_keyfile_style(config
, config_home
, "here_qq", &style_sets
[ft_id
].styling
[22]);
1437 get_keyfile_style(config
, config_home
, "here_qx", &style_sets
[ft_id
].styling
[23]);
1438 get_keyfile_style(config
, config_home
, "string_q", &style_sets
[ft_id
].styling
[24]);
1439 get_keyfile_style(config
, config_home
, "string_qq", &style_sets
[ft_id
].styling
[25]);
1440 get_keyfile_style(config
, config_home
, "string_qx", &style_sets
[ft_id
].styling
[26]);
1441 get_keyfile_style(config
, config_home
, "string_qr", &style_sets
[ft_id
].styling
[27]);
1442 get_keyfile_style(config
, config_home
, "string_qw", &style_sets
[ft_id
].styling
[28]);
1443 get_keyfile_style(config
, config_home
, "variable_indexer", &style_sets
[ft_id
].styling
[29]);
1444 get_keyfile_style(config
, config_home
, "punctuation", &style_sets
[ft_id
].styling
[30]);
1445 get_keyfile_style(config
, config_home
, "longquote", &style_sets
[ft_id
].styling
[31]);
1446 get_keyfile_style(config
, config_home
, "sub_prototype", &style_sets
[ft_id
].styling
[32]);
1447 get_keyfile_style(config
, config_home
, "format_ident", &style_sets
[ft_id
].styling
[33]);
1448 get_keyfile_style(config
, config_home
, "format", &style_sets
[ft_id
].styling
[34]);
1451 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1452 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1453 style_sets
[ft_id
].keywords
[1] = NULL
;
1457 static void styleset_perl(ScintillaObject
*sci
, gint ft_id
)
1459 apply_filetype_properties(sci
, SCLEX_PERL
, ft_id
);
1461 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1463 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1464 set_sci_style(sci
, SCE_PL_DEFAULT
, ft_id
, 0);
1465 set_sci_style(sci
, SCE_PL_ERROR
, ft_id
, 1);
1466 set_sci_style(sci
, SCE_PL_COMMENTLINE
, ft_id
, 2);
1467 set_sci_style(sci
, SCE_PL_NUMBER
, ft_id
, 3);
1468 set_sci_style(sci
, SCE_PL_WORD
, ft_id
, 4);
1469 set_sci_style(sci
, SCE_PL_STRING
, ft_id
, 5);
1470 set_sci_style(sci
, SCE_PL_CHARACTER
, ft_id
, 6);
1471 set_sci_style(sci
, SCE_PL_PREPROCESSOR
, ft_id
, 7);
1472 set_sci_style(sci
, SCE_PL_OPERATOR
, ft_id
, 8);
1473 set_sci_style(sci
, SCE_PL_IDENTIFIER
, ft_id
, 9);
1474 set_sci_style(sci
, SCE_PL_SCALAR
, ft_id
, 10);
1475 set_sci_style(sci
, SCE_PL_POD
, ft_id
, 11);
1476 set_sci_style(sci
, SCE_PL_REGEX
, ft_id
, 12);
1477 set_sci_style(sci
, SCE_PL_ARRAY
, ft_id
, 13);
1478 set_sci_style(sci
, SCE_PL_HASH
, ft_id
, 14);
1479 set_sci_style(sci
, SCE_PL_SYMBOLTABLE
, ft_id
, 15);
1480 set_sci_style(sci
, SCE_PL_BACKTICKS
, ft_id
, 16);
1481 set_sci_style(sci
, SCE_PL_POD_VERB
, ft_id
, 17);
1482 set_sci_style(sci
, SCE_PL_REGSUBST
, ft_id
, 18);
1483 set_sci_style(sci
, SCE_PL_DATASECTION
, ft_id
, 19);
1484 set_sci_style(sci
, SCE_PL_HERE_DELIM
, ft_id
, 20);
1485 set_sci_style(sci
, SCE_PL_HERE_Q
, ft_id
, 21);
1486 set_sci_style(sci
, SCE_PL_HERE_QQ
, ft_id
, 22);
1487 set_sci_style(sci
, SCE_PL_HERE_QX
, ft_id
, 23);
1488 set_sci_style(sci
, SCE_PL_STRING_Q
, ft_id
, 24);
1489 set_sci_style(sci
, SCE_PL_STRING_QQ
, ft_id
, 25);
1490 set_sci_style(sci
, SCE_PL_STRING_QX
, ft_id
, 26);
1491 set_sci_style(sci
, SCE_PL_STRING_QR
, ft_id
, 27);
1492 set_sci_style(sci
, SCE_PL_STRING_QW
, ft_id
, 28);
1493 set_sci_style(sci
, SCE_PL_VARIABLE_INDEXER
, ft_id
, 29);
1494 set_sci_style(sci
, SCE_PL_PUNCTUATION
, ft_id
, 30);
1495 set_sci_style(sci
, SCE_PL_LONGQUOTE
, ft_id
, 31);
1496 set_sci_style(sci
, SCE_PL_SUB_PROTOTYPE
, ft_id
, 32);
1497 set_sci_style(sci
, SCE_PL_FORMAT_IDENT
, ft_id
, 33);
1498 set_sci_style(sci
, SCE_PL_FORMAT
, ft_id
, 34);
1502 static void styleset_python_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1504 new_styleset(ft_id
, 16);
1505 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1506 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1507 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1508 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
1509 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[4]);
1510 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
1511 get_keyfile_style(config
, config_home
, "triple", &style_sets
[ft_id
].styling
[6]);
1512 get_keyfile_style(config
, config_home
, "tripledouble", &style_sets
[ft_id
].styling
[7]);
1513 get_keyfile_style(config
, config_home
, "classname", &style_sets
[ft_id
].styling
[8]);
1514 get_keyfile_style(config
, config_home
, "defname", &style_sets
[ft_id
].styling
[9]);
1515 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
1516 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
1517 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[12]);
1518 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
1519 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[14]);
1520 get_keyfile_style(config
, config_home
, "decorator", &style_sets
[ft_id
].styling
[15]);
1522 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
1523 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1524 get_keyfile_keywords(config
, config_home
, "identifiers", ft_id
, 1);
1525 style_sets
[ft_id
].keywords
[2] = NULL
;
1529 static void styleset_python(ScintillaObject
*sci
, gint ft_id
)
1531 apply_filetype_properties(sci
, SCLEX_PYTHON
, ft_id
);
1533 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1534 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1536 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1537 set_sci_style(sci
, SCE_P_DEFAULT
, ft_id
, 0);
1538 set_sci_style(sci
, SCE_P_COMMENTLINE
, ft_id
, 1);
1539 set_sci_style(sci
, SCE_P_NUMBER
, ft_id
, 2);
1540 set_sci_style(sci
, SCE_P_STRING
, ft_id
, 3);
1541 set_sci_style(sci
, SCE_P_CHARACTER
, ft_id
, 4);
1542 set_sci_style(sci
, SCE_P_WORD
, ft_id
, 5);
1543 set_sci_style(sci
, SCE_P_TRIPLE
, ft_id
, 6);
1544 set_sci_style(sci
, SCE_P_TRIPLEDOUBLE
, ft_id
, 7);
1545 set_sci_style(sci
, SCE_P_CLASSNAME
, ft_id
, 8);
1546 set_sci_style(sci
, SCE_P_DEFNAME
, ft_id
, 9);
1547 set_sci_style(sci
, SCE_P_OPERATOR
, ft_id
, 10);
1548 set_sci_style(sci
, SCE_P_IDENTIFIER
, ft_id
, 11);
1549 set_sci_style(sci
, SCE_P_COMMENTBLOCK
, ft_id
, 12);
1550 set_sci_style(sci
, SCE_P_STRINGEOL
, ft_id
, 13);
1551 set_sci_style(sci
, SCE_P_WORD2
, ft_id
, 14);
1552 set_sci_style(sci
, SCE_P_DECORATOR
, ft_id
, 15);
1556 static void styleset_cmake_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1558 new_styleset(ft_id
, 15);
1559 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1560 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1561 get_keyfile_style(config
, config_home
, "stringdq", &style_sets
[ft_id
].styling
[2]);
1562 get_keyfile_style(config
, config_home
, "stringlq", &style_sets
[ft_id
].styling
[3]);
1563 get_keyfile_style(config
, config_home
, "stringrq", &style_sets
[ft_id
].styling
[4]);
1564 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[5]);
1565 get_keyfile_style(config
, config_home
, "parameters", &style_sets
[ft_id
].styling
[6]);
1566 get_keyfile_style(config
, config_home
, "variable", &style_sets
[ft_id
].styling
[7]);
1567 get_keyfile_style(config
, config_home
, "userdefined", &style_sets
[ft_id
].styling
[8]);
1568 get_keyfile_style(config
, config_home
, "whiledef", &style_sets
[ft_id
].styling
[9]);
1569 get_keyfile_style(config
, config_home
, "foreachdef", &style_sets
[ft_id
].styling
[10]);
1570 get_keyfile_style(config
, config_home
, "ifdefinedef", &style_sets
[ft_id
].styling
[11]);
1571 get_keyfile_style(config
, config_home
, "macrodef", &style_sets
[ft_id
].styling
[12]);
1572 get_keyfile_style(config
, config_home
, "stringvar", &style_sets
[ft_id
].styling
[13]);
1573 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[14]);
1575 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
1576 get_keyfile_keywords(config
, config_home
, "commands", ft_id
, 0);
1577 get_keyfile_keywords(config
, config_home
, "parameters", ft_id
, 1);
1578 get_keyfile_keywords(config
, config_home
, "userdefined", ft_id
, 2);
1579 style_sets
[ft_id
].keywords
[3] = NULL
;
1583 static void styleset_cmake(ScintillaObject
*sci
, gint ft_id
)
1585 apply_filetype_properties(sci
, SCLEX_CMAKE
, ft_id
);
1587 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1588 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1589 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1591 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1592 set_sci_style(sci
, SCE_CMAKE_DEFAULT
, ft_id
, 0);
1593 set_sci_style(sci
, SCE_CMAKE_COMMENT
, ft_id
, 1);
1594 set_sci_style(sci
, SCE_CMAKE_STRINGDQ
, ft_id
, 2);
1595 set_sci_style(sci
, SCE_CMAKE_STRINGLQ
, ft_id
, 3);
1596 set_sci_style(sci
, SCE_CMAKE_STRINGRQ
, ft_id
, 4);
1597 set_sci_style(sci
, SCE_CMAKE_COMMANDS
, ft_id
, 5);
1598 set_sci_style(sci
, SCE_CMAKE_PARAMETERS
, ft_id
, 6);
1599 set_sci_style(sci
, SCE_CMAKE_VARIABLE
, ft_id
, 7);
1600 set_sci_style(sci
, SCE_CMAKE_USERDEFINED
, ft_id
, 8);
1601 set_sci_style(sci
, SCE_CMAKE_WHILEDEF
, ft_id
, 9);
1602 set_sci_style(sci
, SCE_CMAKE_FOREACHDEF
, ft_id
, 10);
1603 set_sci_style(sci
, SCE_CMAKE_IFDEFINEDEF
, ft_id
, 11);
1604 set_sci_style(sci
, SCE_CMAKE_MACRODEF
, ft_id
, 12);
1605 set_sci_style(sci
, SCE_CMAKE_STRINGVAR
, ft_id
, 13);
1606 set_sci_style(sci
, SCE_CMAKE_NUMBER
, ft_id
, 14);
1610 static void styleset_r_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1612 new_styleset(ft_id
, 12);
1614 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1615 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1616 get_keyfile_style(config
, config_home
, "kword", &style_sets
[ft_id
].styling
[2]);
1617 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[3]);
1618 get_keyfile_style(config
, config_home
, "basekword", &style_sets
[ft_id
].styling
[4]);
1619 get_keyfile_style(config
, config_home
, "otherkword", &style_sets
[ft_id
].styling
[5]);
1620 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[6]);
1621 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
1622 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[8]);
1623 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[9]);
1624 get_keyfile_style(config
, config_home
, "infix", &style_sets
[ft_id
].styling
[10]);
1625 get_keyfile_style(config
, config_home
, "infixeol", &style_sets
[ft_id
].styling
[11]);
1627 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
1628 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1629 get_keyfile_keywords(config
, config_home
, "package", ft_id
, 1);
1630 get_keyfile_keywords(config
, config_home
, "package_other", ft_id
, 2);
1631 style_sets
[ft_id
].keywords
[3] = NULL
;
1635 static void styleset_r(ScintillaObject
*sci
, gint ft_id
)
1637 apply_filetype_properties(sci
, SCLEX_R
, ft_id
);
1639 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1640 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
1641 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
1643 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1644 set_sci_style(sci
, SCE_R_DEFAULT
, ft_id
, 0);
1645 set_sci_style(sci
, SCE_R_COMMENT
, ft_id
, 1);
1646 set_sci_style(sci
, SCE_R_KWORD
, ft_id
, 2);
1647 set_sci_style(sci
, SCE_R_OPERATOR
, ft_id
, 3);
1648 set_sci_style(sci
, SCE_R_BASEKWORD
, ft_id
, 4);
1649 set_sci_style(sci
, SCE_R_OTHERKWORD
, ft_id
, 5);
1650 set_sci_style(sci
, SCE_R_NUMBER
, ft_id
, 6);
1651 set_sci_style(sci
, SCE_R_STRING
, ft_id
, 7);
1652 set_sci_style(sci
, SCE_R_STRING2
, ft_id
, 8);
1653 set_sci_style(sci
, SCE_R_IDENTIFIER
, ft_id
, 9);
1654 set_sci_style(sci
, SCE_R_INFIX
, ft_id
, 10);
1655 set_sci_style(sci
, SCE_R_INFIXEOL
, ft_id
, 11);
1659 static void styleset_ruby_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1661 new_styleset(ft_id
, 35);
1662 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1663 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1664 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1665 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
1666 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[4]);
1667 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
1668 get_keyfile_style(config
, config_home
, "global", &style_sets
[ft_id
].styling
[6]);
1669 get_keyfile_style(config
, config_home
, "symbol", &style_sets
[ft_id
].styling
[7]);
1670 get_keyfile_style(config
, config_home
, "classname", &style_sets
[ft_id
].styling
[8]);
1671 get_keyfile_style(config
, config_home
, "defname", &style_sets
[ft_id
].styling
[9]);
1672 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
1673 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
1674 get_keyfile_style(config
, config_home
, "modulename", &style_sets
[ft_id
].styling
[12]);
1675 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[13]);
1676 get_keyfile_style(config
, config_home
, "instancevar", &style_sets
[ft_id
].styling
[14]);
1677 get_keyfile_style(config
, config_home
, "classvar", &style_sets
[ft_id
].styling
[15]);
1678 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[16]);
1679 get_keyfile_style(config
, config_home
, "heredelim", &style_sets
[ft_id
].styling
[17]);
1680 get_keyfile_style(config
, config_home
, "worddemoted", &style_sets
[ft_id
].styling
[18]);
1681 get_keyfile_style(config
, config_home
, "stdin", &style_sets
[ft_id
].styling
[19]);
1682 get_keyfile_style(config
, config_home
, "stdout", &style_sets
[ft_id
].styling
[20]);
1683 get_keyfile_style(config
, config_home
, "stderr", &style_sets
[ft_id
].styling
[21]);
1684 get_keyfile_style(config
, config_home
, "datasection", &style_sets
[ft_id
].styling
[22]);
1685 get_keyfile_style(config
, config_home
, "regex", &style_sets
[ft_id
].styling
[23]);
1686 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[24]);
1687 get_keyfile_style(config
, config_home
, "here_qq", &style_sets
[ft_id
].styling
[25]);
1688 get_keyfile_style(config
, config_home
, "here_qx", &style_sets
[ft_id
].styling
[26]);
1689 get_keyfile_style(config
, config_home
, "string_q", &style_sets
[ft_id
].styling
[27]);
1690 get_keyfile_style(config
, config_home
, "string_qq", &style_sets
[ft_id
].styling
[28]);
1691 get_keyfile_style(config
, config_home
, "string_qx", &style_sets
[ft_id
].styling
[29]);
1692 get_keyfile_style(config
, config_home
, "string_qr", &style_sets
[ft_id
].styling
[30]);
1693 get_keyfile_style(config
, config_home
, "string_qw", &style_sets
[ft_id
].styling
[31]);
1694 get_keyfile_style(config
, config_home
, "upper_bound", &style_sets
[ft_id
].styling
[32]);
1695 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[33]);
1696 get_keyfile_style(config
, config_home
, "pod", &style_sets
[ft_id
].styling
[34]);
1698 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1699 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1700 style_sets
[ft_id
].keywords
[1] = NULL
;
1704 static void styleset_ruby(ScintillaObject
*sci
, gint ft_id
)
1706 apply_filetype_properties(sci
, SCLEX_RUBY
, ft_id
);
1708 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1710 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1711 set_sci_style(sci
, SCE_RB_DEFAULT
, ft_id
, 0);
1712 set_sci_style(sci
, SCE_RB_COMMENTLINE
, ft_id
, 1);
1713 set_sci_style(sci
, SCE_RB_NUMBER
, ft_id
, 2);
1714 set_sci_style(sci
, SCE_RB_STRING
, ft_id
, 3);
1715 set_sci_style(sci
, SCE_RB_CHARACTER
, ft_id
, 4);
1716 set_sci_style(sci
, SCE_RB_WORD
, ft_id
, 5);
1717 set_sci_style(sci
, SCE_RB_GLOBAL
, ft_id
, 6);
1718 set_sci_style(sci
, SCE_RB_SYMBOL
, ft_id
, 7);
1719 set_sci_style(sci
, SCE_RB_CLASSNAME
, ft_id
, 8);
1720 set_sci_style(sci
, SCE_RB_DEFNAME
, ft_id
, 9);
1721 set_sci_style(sci
, SCE_RB_OPERATOR
, ft_id
, 10);
1722 set_sci_style(sci
, SCE_RB_IDENTIFIER
, ft_id
, 11);
1723 set_sci_style(sci
, SCE_RB_MODULE_NAME
, ft_id
, 12);
1724 set_sci_style(sci
, SCE_RB_BACKTICKS
, ft_id
, 13);
1725 set_sci_style(sci
, SCE_RB_INSTANCE_VAR
, ft_id
, 14);
1726 set_sci_style(sci
, SCE_RB_CLASS_VAR
, ft_id
, 15);
1727 set_sci_style(sci
, SCE_RB_DATASECTION
, ft_id
, 16);
1728 set_sci_style(sci
, SCE_RB_HERE_DELIM
, ft_id
, 17);
1729 set_sci_style(sci
, SCE_RB_WORD_DEMOTED
, ft_id
, 18);
1730 set_sci_style(sci
, SCE_RB_STDIN
, ft_id
, 19);
1731 set_sci_style(sci
, SCE_RB_STDOUT
, ft_id
, 20);
1732 set_sci_style(sci
, SCE_RB_STDERR
, ft_id
, 21);
1733 set_sci_style(sci
, SCE_RB_DATASECTION
, ft_id
, 22);
1734 set_sci_style(sci
, SCE_RB_REGEX
, ft_id
, 23);
1735 set_sci_style(sci
, SCE_RB_HERE_Q
, ft_id
, 24);
1736 set_sci_style(sci
, SCE_RB_HERE_QQ
, ft_id
, 25);
1737 set_sci_style(sci
, SCE_RB_HERE_QX
, ft_id
, 26);
1738 set_sci_style(sci
, SCE_RB_STRING_Q
, ft_id
, 27);
1739 set_sci_style(sci
, SCE_RB_STRING_QQ
, ft_id
, 28);
1740 set_sci_style(sci
, SCE_RB_STRING_QX
, ft_id
, 29);
1741 set_sci_style(sci
, SCE_RB_STRING_QR
, ft_id
, 30);
1742 set_sci_style(sci
, SCE_RB_STRING_QW
, ft_id
, 31);
1743 set_sci_style(sci
, SCE_RB_UPPER_BOUND
, ft_id
, 32);
1744 set_sci_style(sci
, SCE_RB_ERROR
, ft_id
, 33);
1745 set_sci_style(sci
, SCE_RB_POD
, ft_id
, 34);
1749 static void styleset_sh_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1751 new_styleset(ft_id
, 14);
1752 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1753 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
1754 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
1755 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[3]);
1756 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
1757 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[5]);
1758 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
1759 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
1760 get_keyfile_style(config
, config_home
, "backticks", &style_sets
[ft_id
].styling
[8]);
1761 get_keyfile_style(config
, config_home
, "param", &style_sets
[ft_id
].styling
[9]);
1762 get_keyfile_style(config
, config_home
, "scalar", &style_sets
[ft_id
].styling
[10]);
1763 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[11]);
1764 get_keyfile_style(config
, config_home
, "here_delim", &style_sets
[ft_id
].styling
[12]);
1765 get_keyfile_style(config
, config_home
, "here_q", &style_sets
[ft_id
].styling
[13]);
1767 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
1768 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1769 style_sets
[ft_id
].keywords
[1] = NULL
;
1773 static void styleset_sh(ScintillaObject
*sci
, gint ft_id
)
1775 apply_filetype_properties(sci
, SCLEX_BASH
, ft_id
);
1777 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1779 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1780 set_sci_style(sci
, SCE_SH_DEFAULT
, ft_id
, 0);
1781 set_sci_style(sci
, SCE_SH_COMMENTLINE
, ft_id
, 1);
1782 set_sci_style(sci
, SCE_SH_NUMBER
, ft_id
, 2);
1783 set_sci_style(sci
, SCE_SH_WORD
, ft_id
, 3);
1784 set_sci_style(sci
, SCE_SH_STRING
, ft_id
, 4);
1785 set_sci_style(sci
, SCE_SH_CHARACTER
, ft_id
, 5);
1786 set_sci_style(sci
, SCE_SH_OPERATOR
, ft_id
, 6);
1787 set_sci_style(sci
, SCE_SH_IDENTIFIER
, ft_id
, 7);
1788 set_sci_style(sci
, SCE_SH_BACKTICKS
, ft_id
, 8);
1789 set_sci_style(sci
, SCE_SH_PARAM
, ft_id
, 9);
1790 set_sci_style(sci
, SCE_SH_SCALAR
, ft_id
, 10);
1791 set_sci_style(sci
, SCE_SH_ERROR
, ft_id
, 11);
1792 set_sci_style(sci
, SCE_SH_HERE_DELIM
, ft_id
, 12);
1793 set_sci_style(sci
, SCE_SH_HERE_Q
, ft_id
, 13);
1797 static void styleset_xml(ScintillaObject
*sci
, gint ft_id
)
1799 apply_filetype_properties(sci
, SCLEX_XML
, ft_id
);
1801 /* use the same colouring for HTML; XML and so on */
1802 styleset_markup(sci
, FALSE
);
1806 static void styleset_docbook_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1808 new_styleset(ft_id
, 29);
1809 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1810 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[1]);
1811 get_keyfile_style(config
, config_home
, "tagunknown", &style_sets
[ft_id
].styling
[2]);
1812 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[3]);
1813 get_keyfile_style(config
, config_home
, "attributeunknown", &style_sets
[ft_id
].styling
[4]);
1814 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
1815 get_keyfile_style(config
, config_home
, "doublestring", &style_sets
[ft_id
].styling
[6]);
1816 get_keyfile_style(config
, config_home
, "singlestring", &style_sets
[ft_id
].styling
[7]);
1817 get_keyfile_style(config
, config_home
, "other", &style_sets
[ft_id
].styling
[8]);
1818 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[9]);
1819 get_keyfile_style(config
, config_home
, "entity", &style_sets
[ft_id
].styling
[10]);
1820 get_keyfile_style(config
, config_home
, "tagend", &style_sets
[ft_id
].styling
[11]);
1821 get_keyfile_style(config
, config_home
, "xmlstart", &style_sets
[ft_id
].styling
[12]);
1822 get_keyfile_style(config
, config_home
, "xmlend", &style_sets
[ft_id
].styling
[13]);
1823 get_keyfile_style(config
, config_home
, "cdata", &style_sets
[ft_id
].styling
[14]);
1824 get_keyfile_style(config
, config_home
, "question", &style_sets
[ft_id
].styling
[15]);
1825 get_keyfile_style(config
, config_home
, "value", &style_sets
[ft_id
].styling
[16]);
1826 get_keyfile_style(config
, config_home
, "xccomment", &style_sets
[ft_id
].styling
[17]);
1827 get_keyfile_style(config
, config_home
, "sgml_default", &style_sets
[ft_id
].styling
[18]);
1828 get_keyfile_style(config
, config_home
, "sgml_comment", &style_sets
[ft_id
].styling
[19]);
1829 get_keyfile_style(config
, config_home
, "sgml_special", &style_sets
[ft_id
].styling
[20]);
1830 get_keyfile_style(config
, config_home
, "sgml_command", &style_sets
[ft_id
].styling
[21]);
1831 get_keyfile_style(config
, config_home
, "sgml_doublestring", &style_sets
[ft_id
].styling
[22]);
1832 get_keyfile_style(config
, config_home
, "sgml_simplestring", &style_sets
[ft_id
].styling
[23]);
1833 get_keyfile_style(config
, config_home
, "sgml_1st_param", &style_sets
[ft_id
].styling
[24]);
1834 get_keyfile_style(config
, config_home
, "sgml_entity", &style_sets
[ft_id
].styling
[25]);
1835 get_keyfile_style(config
, config_home
, "sgml_block_default", &style_sets
[ft_id
].styling
[26]);
1836 get_keyfile_style(config
, config_home
, "sgml_1st_param_comment", &style_sets
[ft_id
].styling
[27]);
1837 get_keyfile_style(config
, config_home
, "sgml_error", &style_sets
[ft_id
].styling
[28]);
1839 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
1840 get_keyfile_keywords(config
, config_home
, "elements", ft_id
, 0);
1841 get_keyfile_keywords(config
, config_home
, "dtd", ft_id
, 1);
1842 style_sets
[ft_id
].keywords
[2] = NULL
;
1846 static void styleset_docbook(ScintillaObject
*sci
, gint ft_id
)
1848 apply_filetype_properties(sci
, SCLEX_XML
, ft_id
);
1850 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
1851 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[1]);
1853 /* Unknown tags and attributes are highlighed in red.
1854 * If a tag is actually OK, it should be added in lower case to the htmlKeyWords string. */
1856 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1857 set_sci_style(sci
, SCE_H_DEFAULT
, ft_id
, 0);
1858 set_sci_style(sci
, SCE_H_TAG
, ft_id
, 1);
1859 set_sci_style(sci
, SCE_H_TAGUNKNOWN
, ft_id
, 2);
1860 set_sci_style(sci
, SCE_H_ATTRIBUTE
, ft_id
, 3);
1861 set_sci_style(sci
, SCE_H_ATTRIBUTEUNKNOWN
, ft_id
, 4);
1862 set_sci_style(sci
, SCE_H_NUMBER
, ft_id
, 5);
1863 set_sci_style(sci
, SCE_H_DOUBLESTRING
, ft_id
, 6);
1864 set_sci_style(sci
, SCE_H_SINGLESTRING
, ft_id
, 7);
1865 set_sci_style(sci
, SCE_H_OTHER
, ft_id
, 8);
1866 set_sci_style(sci
, SCE_H_COMMENT
, ft_id
, 9);
1867 set_sci_style(sci
, SCE_H_ENTITY
, ft_id
, 10);
1868 set_sci_style(sci
, SCE_H_TAGEND
, ft_id
, 11);
1869 SSM(sci
, SCI_STYLESETEOLFILLED
, SCE_H_XMLSTART
, 1);
1870 set_sci_style(sci
, SCE_H_XMLSTART
, ft_id
, 12);
1871 set_sci_style(sci
, SCE_H_XMLEND
, ft_id
, 13);
1872 set_sci_style(sci
, SCE_H_CDATA
, ft_id
, 14);
1873 set_sci_style(sci
, SCE_H_QUESTION
, ft_id
, 15);
1874 set_sci_style(sci
, SCE_H_VALUE
, ft_id
, 16);
1875 set_sci_style(sci
, SCE_H_XCCOMMENT
, ft_id
, 17);
1876 set_sci_style(sci
, SCE_H_SGML_DEFAULT
, ft_id
, 18);
1877 set_sci_style(sci
, SCE_H_DEFAULT
, ft_id
, 19);
1878 set_sci_style(sci
, SCE_H_SGML_SPECIAL
, ft_id
, 20);
1879 set_sci_style(sci
, SCE_H_SGML_COMMAND
, ft_id
, 21);
1880 set_sci_style(sci
, SCE_H_SGML_DOUBLESTRING
, ft_id
, 22);
1881 set_sci_style(sci
, SCE_H_SGML_SIMPLESTRING
, ft_id
, 23);
1882 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM
, ft_id
, 24);
1883 set_sci_style(sci
, SCE_H_SGML_ENTITY
, ft_id
, 25);
1884 set_sci_style(sci
, SCE_H_SGML_BLOCK_DEFAULT
, ft_id
, 26);
1885 set_sci_style(sci
, SCE_H_SGML_1ST_PARAM_COMMENT
, ft_id
, 27);
1886 set_sci_style(sci
, SCE_H_SGML_ERROR
, ft_id
, 28);
1890 static void styleset_default(ScintillaObject
*sci
, gint ft_id
)
1892 SSM(sci
, SCI_SETLEXER
, SCLEX_NULL
, 0);
1894 /* we need to set STYLE_DEFAULT before we call SCI_STYLECLEARALL in styleset_common() */
1895 set_sci_style(sci
, STYLE_DEFAULT
, GEANY_FILETYPES_NONE
, GCS_DEFAULT
);
1897 styleset_common(sci
, ft_id
);
1901 static void styleset_css_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1903 new_styleset(ft_id
, 23);
1904 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1905 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1906 get_keyfile_style(config
, config_home
, "tag", &style_sets
[ft_id
].styling
[2]);
1907 get_keyfile_style(config
, config_home
, "class", &style_sets
[ft_id
].styling
[3]);
1908 get_keyfile_style(config
, config_home
, "pseudoclass", &style_sets
[ft_id
].styling
[4]);
1909 get_keyfile_style(config
, config_home
, "unknown_pseudoclass", &style_sets
[ft_id
].styling
[5]);
1910 get_keyfile_style(config
, config_home
, "unknown_identifier", &style_sets
[ft_id
].styling
[6]);
1911 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[7]);
1912 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[8]);
1913 get_keyfile_style(config
, config_home
, "doublestring", &style_sets
[ft_id
].styling
[9]);
1914 get_keyfile_style(config
, config_home
, "singlestring", &style_sets
[ft_id
].styling
[10]);
1915 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[11]);
1916 get_keyfile_style(config
, config_home
, "value", &style_sets
[ft_id
].styling
[12]);
1917 get_keyfile_style(config
, config_home
, "id", &style_sets
[ft_id
].styling
[13]);
1918 get_keyfile_style(config
, config_home
, "identifier2", &style_sets
[ft_id
].styling
[14]);
1919 get_keyfile_style(config
, config_home
, "important", &style_sets
[ft_id
].styling
[15]);
1920 get_keyfile_style(config
, config_home
, "directive", &style_sets
[ft_id
].styling
[16]);
1921 get_keyfile_style(config
, config_home
, "identifier3", &style_sets
[ft_id
].styling
[17]);
1922 get_keyfile_style(config
, config_home
, "pseudoelement", &style_sets
[ft_id
].styling
[18]);
1923 get_keyfile_style(config
, config_home
, "extended_identifier", &style_sets
[ft_id
].styling
[19]);
1924 get_keyfile_style(config
, config_home
, "extended_pseudoclass", &style_sets
[ft_id
].styling
[20]);
1925 get_keyfile_style(config
, config_home
, "extended_pseudoelement", &style_sets
[ft_id
].styling
[21]);
1926 get_keyfile_style(config
, config_home
, "media", &style_sets
[ft_id
].styling
[22]);
1928 style_sets
[ft_id
].keywords
= g_new(gchar
*, 9);
1929 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
1930 get_keyfile_keywords(config
, config_home
, "pseudoclasses", ft_id
, 1);
1931 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 2);
1932 get_keyfile_keywords(config
, config_home
, "css3_properties", ft_id
, 3);
1933 get_keyfile_keywords(config
, config_home
, "pseudo_elements", ft_id
, 4);
1934 get_keyfile_keywords(config
, config_home
, "browser_css_properties", ft_id
, 5);
1935 get_keyfile_keywords(config
, config_home
, "browser_pseudo_classes", ft_id
, 6);
1936 get_keyfile_keywords(config
, config_home
, "browser_pseudo_elements", ft_id
, 7);
1937 style_sets
[ft_id
].keywords
[8] = NULL
;
1941 static void styleset_css(ScintillaObject
*sci
, gint ft_id
)
1945 apply_filetype_properties(sci
, SCLEX_CSS
, ft_id
);
1947 for (i
= 0; i
< 8; i
++)
1949 sci_set_keywords(sci
, i
, style_sets
[ft_id
].keywords
[i
]);
1952 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
1953 set_sci_style(sci
, SCE_CSS_DEFAULT
, ft_id
, 0);
1954 set_sci_style(sci
, SCE_CSS_COMMENT
, ft_id
, 1);
1955 set_sci_style(sci
, SCE_CSS_TAG
, ft_id
, 2);
1956 set_sci_style(sci
, SCE_CSS_CLASS
, ft_id
, 3);
1957 set_sci_style(sci
, SCE_CSS_PSEUDOCLASS
, ft_id
, 4);
1958 set_sci_style(sci
, SCE_CSS_UNKNOWN_PSEUDOCLASS
, ft_id
, 5);
1959 set_sci_style(sci
, SCE_CSS_UNKNOWN_IDENTIFIER
, ft_id
, 6);
1960 set_sci_style(sci
, SCE_CSS_OPERATOR
, ft_id
, 7);
1961 set_sci_style(sci
, SCE_CSS_IDENTIFIER
, ft_id
, 8);
1962 set_sci_style(sci
, SCE_CSS_DOUBLESTRING
, ft_id
, 9);
1963 set_sci_style(sci
, SCE_CSS_SINGLESTRING
, ft_id
, 10);
1964 set_sci_style(sci
, SCE_CSS_ATTRIBUTE
, ft_id
, 11);
1965 set_sci_style(sci
, SCE_CSS_VALUE
, ft_id
, 12);
1966 set_sci_style(sci
, SCE_CSS_ID
, ft_id
, 13);
1967 set_sci_style(sci
, SCE_CSS_IDENTIFIER2
, ft_id
, 14);
1968 set_sci_style(sci
, SCE_CSS_IMPORTANT
, ft_id
, 15);
1969 set_sci_style(sci
, SCE_CSS_DIRECTIVE
, ft_id
, 16);
1970 set_sci_style(sci
, SCE_CSS_IDENTIFIER3
, ft_id
, 17);
1971 set_sci_style(sci
, SCE_CSS_PSEUDOELEMENT
, ft_id
, 18);
1972 set_sci_style(sci
, SCE_CSS_EXTENDED_IDENTIFIER
, ft_id
, 19);
1973 set_sci_style(sci
, SCE_CSS_EXTENDED_PSEUDOCLASS
, ft_id
, 20);
1974 set_sci_style(sci
, SCE_CSS_EXTENDED_PSEUDOELEMENT
, ft_id
, 21);
1975 set_sci_style(sci
, SCE_CSS_MEDIA
, ft_id
, 22);
1979 static void styleset_nsis_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
1981 new_styleset(ft_id
, 19);
1982 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
1983 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
1984 get_keyfile_style(config
, config_home
, "stringdq", &style_sets
[ft_id
].styling
[2]);
1985 get_keyfile_style(config
, config_home
, "stringlq", &style_sets
[ft_id
].styling
[3]);
1986 get_keyfile_style(config
, config_home
, "stringrq", &style_sets
[ft_id
].styling
[4]);
1987 get_keyfile_style(config
, config_home
, "function", &style_sets
[ft_id
].styling
[5]);
1988 get_keyfile_style(config
, config_home
, "variable", &style_sets
[ft_id
].styling
[6]);
1989 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[7]);
1990 get_keyfile_style(config
, config_home
, "userdefined", &style_sets
[ft_id
].styling
[8]);
1991 get_keyfile_style(config
, config_home
, "sectiondef", &style_sets
[ft_id
].styling
[9]);
1992 get_keyfile_style(config
, config_home
, "subsectiondef", &style_sets
[ft_id
].styling
[10]);
1993 get_keyfile_style(config
, config_home
, "ifdefinedef", &style_sets
[ft_id
].styling
[11]);
1994 get_keyfile_style(config
, config_home
, "macrodef", &style_sets
[ft_id
].styling
[12]);
1995 get_keyfile_style(config
, config_home
, "stringvar", &style_sets
[ft_id
].styling
[13]);
1996 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[14]);
1997 get_keyfile_style(config
, config_home
, "sectiongroup", &style_sets
[ft_id
].styling
[15]);
1998 get_keyfile_style(config
, config_home
, "pageex", &style_sets
[ft_id
].styling
[16]);
1999 get_keyfile_style(config
, config_home
, "functiondef", &style_sets
[ft_id
].styling
[17]);
2000 get_keyfile_style(config
, config_home
, "commentbox", &style_sets
[ft_id
].styling
[18]);
2002 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
2003 get_keyfile_keywords(config
, config_home
, "functions", ft_id
, 0);
2004 get_keyfile_keywords(config
, config_home
, "variables", ft_id
, 1);
2005 get_keyfile_keywords(config
, config_home
, "lables", ft_id
, 2);
2006 get_keyfile_keywords(config
, config_home
, "userdefined", ft_id
, 3);
2007 style_sets
[ft_id
].keywords
[4] = NULL
;
2011 static void styleset_nsis(ScintillaObject
*sci
, gint ft_id
)
2013 apply_filetype_properties(sci
, SCLEX_NSIS
, ft_id
);
2015 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2016 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2017 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2018 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2020 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2021 set_sci_style(sci
, SCE_NSIS_DEFAULT
, ft_id
, 0);
2022 set_sci_style(sci
, SCE_NSIS_COMMENT
, ft_id
, 1);
2023 set_sci_style(sci
, SCE_NSIS_STRINGDQ
, ft_id
, 2);
2024 set_sci_style(sci
, SCE_NSIS_STRINGLQ
, ft_id
, 3);
2025 set_sci_style(sci
, SCE_NSIS_STRINGRQ
, ft_id
, 4);
2026 set_sci_style(sci
, SCE_NSIS_FUNCTION
, ft_id
, 5);
2027 set_sci_style(sci
, SCE_NSIS_VARIABLE
, ft_id
, 6);
2028 set_sci_style(sci
, SCE_NSIS_LABEL
, ft_id
, 7);
2029 set_sci_style(sci
, SCE_NSIS_USERDEFINED
, ft_id
, 8);
2030 set_sci_style(sci
, SCE_NSIS_SECTIONDEF
, ft_id
, 9);
2031 set_sci_style(sci
, SCE_NSIS_SUBSECTIONDEF
, ft_id
, 10);
2032 set_sci_style(sci
, SCE_NSIS_IFDEFINEDEF
, ft_id
, 11);
2033 set_sci_style(sci
, SCE_NSIS_MACRODEF
, ft_id
, 12);
2034 set_sci_style(sci
, SCE_NSIS_STRINGVAR
, ft_id
, 13);
2035 set_sci_style(sci
, SCE_NSIS_NUMBER
, ft_id
, 14);
2036 set_sci_style(sci
, SCE_NSIS_SECTIONGROUP
, ft_id
, 15);
2037 set_sci_style(sci
, SCE_NSIS_PAGEEX
, ft_id
, 16);
2038 set_sci_style(sci
, SCE_NSIS_FUNCTIONDEF
, ft_id
, 17);
2039 set_sci_style(sci
, SCE_NSIS_COMMENTBOX
, ft_id
, 18);
2043 static void styleset_po_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2045 new_styleset(ft_id
, 9);
2046 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2047 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2048 get_keyfile_style(config
, config_home
, "msgid", &style_sets
[ft_id
].styling
[2]);
2049 get_keyfile_style(config
, config_home
, "msgid_text", &style_sets
[ft_id
].styling
[3]);
2050 get_keyfile_style(config
, config_home
, "msgstr", &style_sets
[ft_id
].styling
[4]);
2051 get_keyfile_style(config
, config_home
, "msgstr_text", &style_sets
[ft_id
].styling
[5]);
2052 get_keyfile_style(config
, config_home
, "msgctxt", &style_sets
[ft_id
].styling
[6]);
2053 get_keyfile_style(config
, config_home
, "msgctxt_text", &style_sets
[ft_id
].styling
[7]);
2054 get_keyfile_style(config
, config_home
, "fuzzy", &style_sets
[ft_id
].styling
[8]);
2056 style_sets
[ft_id
].keywords
= NULL
;
2060 static void styleset_po(ScintillaObject
*sci
, gint ft_id
)
2062 apply_filetype_properties(sci
, SCLEX_PO
, ft_id
);
2064 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2065 set_sci_style(sci
, SCE_PO_DEFAULT
, ft_id
, 0);
2066 set_sci_style(sci
, SCE_PO_COMMENT
, ft_id
, 1);
2067 set_sci_style(sci
, SCE_PO_MSGID
, ft_id
, 2);
2068 set_sci_style(sci
, SCE_PO_MSGID_TEXT
, ft_id
, 3);
2069 set_sci_style(sci
, SCE_PO_MSGSTR
, ft_id
, 4);
2070 set_sci_style(sci
, SCE_PO_MSGSTR_TEXT
, ft_id
, 5);
2071 set_sci_style(sci
, SCE_PO_MSGCTXT
, ft_id
, 6);
2072 set_sci_style(sci
, SCE_PO_MSGCTXT_TEXT
, ft_id
, 7);
2073 set_sci_style(sci
, SCE_PO_FUZZY
, ft_id
, 8);
2077 static void styleset_conf_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2079 new_styleset(ft_id
, 6);
2080 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2081 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2082 get_keyfile_style(config
, config_home
, "section", &style_sets
[ft_id
].styling
[2]);
2083 get_keyfile_style(config
, config_home
, "key", &style_sets
[ft_id
].styling
[3]);
2084 get_keyfile_style(config
, config_home
, "assignment", &style_sets
[ft_id
].styling
[4]);
2085 get_keyfile_style(config
, config_home
, "defval", &style_sets
[ft_id
].styling
[5]);
2087 style_sets
[ft_id
].keywords
= NULL
;
2091 static void styleset_conf(ScintillaObject
*sci
, gint ft_id
)
2093 apply_filetype_properties(sci
, SCLEX_PROPERTIES
, ft_id
);
2095 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2096 set_sci_style(sci
, SCE_PROPS_DEFAULT
, ft_id
, 0);
2097 set_sci_style(sci
, SCE_PROPS_COMMENT
, ft_id
, 1);
2098 set_sci_style(sci
, SCE_PROPS_SECTION
, ft_id
, 2);
2099 set_sci_style(sci
, SCE_PROPS_KEY
, ft_id
, 3);
2100 set_sci_style(sci
, SCE_PROPS_ASSIGNMENT
, ft_id
, 4);
2101 set_sci_style(sci
, SCE_PROPS_DEFVAL
, ft_id
, 5);
2105 static void styleset_asm_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2107 new_styleset(ft_id
, 15);
2108 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2109 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2110 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2111 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2112 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2113 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2114 get_keyfile_style(config
, config_home
, "cpuinstruction", &style_sets
[ft_id
].styling
[6]);
2115 get_keyfile_style(config
, config_home
, "mathinstruction", &style_sets
[ft_id
].styling
[7]);
2116 get_keyfile_style(config
, config_home
, "register", &style_sets
[ft_id
].styling
[8]);
2117 get_keyfile_style(config
, config_home
, "directive", &style_sets
[ft_id
].styling
[9]);
2118 get_keyfile_style(config
, config_home
, "directiveoperand", &style_sets
[ft_id
].styling
[10]);
2119 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[11]);
2120 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
2121 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2122 get_keyfile_style(config
, config_home
, "extinstruction", &style_sets
[ft_id
].styling
[14]);
2124 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2125 get_keyfile_keywords(config
, config_home
, "instructions", ft_id
, 0);
2126 get_keyfile_keywords(config
, config_home
, "registers", ft_id
, 1);
2127 get_keyfile_keywords(config
, config_home
, "directives", ft_id
, 2);
2128 style_sets
[ft_id
].keywords
[3] = NULL
;
2132 static void styleset_asm(ScintillaObject
*sci
, gint ft_id
)
2134 apply_filetype_properties(sci
, SCLEX_ASM
, ft_id
);
2136 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2137 /*sci_set_keywords(sci, 1, style_sets[ft_id].keywords[0]);*/
2138 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[1]);
2139 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[2]);
2140 /*sci_set_keywords(sci, 5, style_sets[ft_id].keywords[0]);*/
2142 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2143 set_sci_style(sci
, SCE_ASM_DEFAULT
, ft_id
, 0);
2144 set_sci_style(sci
, SCE_ASM_COMMENT
, ft_id
, 1);
2145 set_sci_style(sci
, SCE_ASM_NUMBER
, ft_id
, 2);
2146 set_sci_style(sci
, SCE_ASM_STRING
, ft_id
, 3);
2147 set_sci_style(sci
, SCE_ASM_OPERATOR
, ft_id
, 4);
2148 set_sci_style(sci
, SCE_ASM_IDENTIFIER
, ft_id
, 5);
2149 set_sci_style(sci
, SCE_ASM_CPUINSTRUCTION
, ft_id
, 6);
2150 set_sci_style(sci
, SCE_ASM_MATHINSTRUCTION
, ft_id
, 7);
2151 set_sci_style(sci
, SCE_ASM_REGISTER
, ft_id
, 8);
2152 set_sci_style(sci
, SCE_ASM_DIRECTIVE
, ft_id
, 9);
2153 set_sci_style(sci
, SCE_ASM_DIRECTIVEOPERAND
, ft_id
, 10);
2154 set_sci_style(sci
, SCE_ASM_COMMENTBLOCK
, ft_id
, 11);
2155 set_sci_style(sci
, SCE_ASM_CHARACTER
, ft_id
, 12);
2156 set_sci_style(sci
, SCE_ASM_STRINGEOL
, ft_id
, 13);
2157 set_sci_style(sci
, SCE_ASM_EXTINSTRUCTION
, ft_id
, 14);
2161 static void styleset_f77_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2163 new_styleset(ft_id
, 15);
2164 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2165 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2166 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2167 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2168 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2169 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2170 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[6]);
2171 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[7]);
2172 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[8]);
2173 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[9]);
2174 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[10]);
2175 get_keyfile_style(config
, config_home
, "operator2", &style_sets
[ft_id
].styling
[11]);
2176 get_keyfile_style(config
, config_home
, "continuation", &style_sets
[ft_id
].styling
[12]);
2177 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2178 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[14]);
2180 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2181 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2182 get_keyfile_keywords(config
, config_home
, "intrinsic_functions", ft_id
, 1);
2183 get_keyfile_keywords(config
, config_home
, "user_functions", ft_id
, 2);
2184 style_sets
[ft_id
].keywords
[3] = NULL
;
2188 static void styleset_f77(ScintillaObject
*sci
, gint ft_id
)
2190 apply_filetype_properties(sci
, SCLEX_F77
, ft_id
);
2192 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2193 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2194 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2196 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2197 set_sci_style(sci
, SCE_F_DEFAULT
, ft_id
, 0);
2198 set_sci_style(sci
, SCE_F_COMMENT
, ft_id
, 1);
2199 set_sci_style(sci
, SCE_F_NUMBER
, ft_id
, 2);
2200 set_sci_style(sci
, SCE_F_STRING1
, ft_id
, 3);
2201 set_sci_style(sci
, SCE_F_OPERATOR
, ft_id
, 4);
2202 set_sci_style(sci
, SCE_F_IDENTIFIER
, ft_id
, 5);
2203 set_sci_style(sci
, SCE_F_STRING2
, ft_id
, 6);
2204 set_sci_style(sci
, SCE_F_WORD
, ft_id
, 7);
2205 set_sci_style(sci
, SCE_F_WORD2
, ft_id
, 8);
2206 set_sci_style(sci
, SCE_F_WORD3
, ft_id
, 9);
2207 set_sci_style(sci
, SCE_F_PREPROCESSOR
, ft_id
, 10);
2208 set_sci_style(sci
, SCE_F_OPERATOR2
, ft_id
, 11);
2209 set_sci_style(sci
, SCE_F_CONTINUATION
, ft_id
, 12);
2210 set_sci_style(sci
, SCE_F_STRINGEOL
, ft_id
, 13);
2211 set_sci_style(sci
, SCE_F_LABEL
, ft_id
, 14);
2215 static void styleset_fortran_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2217 new_styleset(ft_id
, 15);
2218 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2219 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2220 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2221 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[3]);
2222 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2223 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2224 get_keyfile_style(config
, config_home
, "string2", &style_sets
[ft_id
].styling
[6]);
2225 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[7]);
2226 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[8]);
2227 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[9]);
2228 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[10]);
2229 get_keyfile_style(config
, config_home
, "operator2", &style_sets
[ft_id
].styling
[11]);
2230 get_keyfile_style(config
, config_home
, "continuation", &style_sets
[ft_id
].styling
[12]);
2231 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[13]);
2232 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[14]);
2234 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2235 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2236 get_keyfile_keywords(config
, config_home
, "intrinsic_functions", ft_id
, 1);
2237 get_keyfile_keywords(config
, config_home
, "user_functions", ft_id
, 2);
2238 style_sets
[ft_id
].keywords
[3] = NULL
;
2242 static void styleset_fortran(ScintillaObject
*sci
, gint ft_id
)
2244 apply_filetype_properties(sci
, SCLEX_FORTRAN
, ft_id
);
2246 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2247 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2248 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2250 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2251 set_sci_style(sci
, SCE_F_DEFAULT
, ft_id
, 0);
2252 set_sci_style(sci
, SCE_F_COMMENT
, ft_id
, 1);
2253 set_sci_style(sci
, SCE_F_NUMBER
, ft_id
, 2);
2254 set_sci_style(sci
, SCE_F_STRING1
, ft_id
, 3);
2255 set_sci_style(sci
, SCE_F_OPERATOR
, ft_id
, 4);
2256 set_sci_style(sci
, SCE_F_IDENTIFIER
, ft_id
, 5);
2257 set_sci_style(sci
, SCE_F_STRING2
, ft_id
, 6);
2258 set_sci_style(sci
, SCE_F_WORD
, ft_id
, 7);
2259 set_sci_style(sci
, SCE_F_WORD2
, ft_id
, 8);
2260 set_sci_style(sci
, SCE_F_WORD3
, ft_id
, 9);
2261 set_sci_style(sci
, SCE_F_PREPROCESSOR
, ft_id
, 10);
2262 set_sci_style(sci
, SCE_F_OPERATOR2
, ft_id
, 11);
2263 set_sci_style(sci
, SCE_F_CONTINUATION
, ft_id
, 12);
2264 set_sci_style(sci
, SCE_F_STRINGEOL
, ft_id
, 13);
2265 set_sci_style(sci
, SCE_F_LABEL
, ft_id
, 14);
2269 static void styleset_sql_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2271 new_styleset(ft_id
, 15);
2272 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2273 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2274 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2275 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
2276 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2277 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
2278 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[6]);
2279 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
2280 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[8]);
2281 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[9]);
2282 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[10]);
2283 get_keyfile_style(config
, config_home
, "sqlplus", &style_sets
[ft_id
].styling
[11]);
2284 get_keyfile_style(config
, config_home
, "sqlplus_prompt", &style_sets
[ft_id
].styling
[12]);
2285 get_keyfile_style(config
, config_home
, "sqlplus_comment", &style_sets
[ft_id
].styling
[13]);
2286 get_keyfile_style(config
, config_home
, "quotedidentifier", &style_sets
[ft_id
].styling
[14]);
2288 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2289 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2290 style_sets
[ft_id
].keywords
[1] = NULL
;
2294 static void styleset_sql(ScintillaObject
*sci
, gint ft_id
)
2296 apply_filetype_properties(sci
, SCLEX_SQL
, ft_id
);
2298 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2300 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2301 set_sci_style(sci
, SCE_SQL_DEFAULT
, ft_id
, 0);
2302 set_sci_style(sci
, SCE_SQL_COMMENT
, ft_id
, 1);
2303 set_sci_style(sci
, SCE_SQL_COMMENTLINE
, ft_id
, 2);
2304 set_sci_style(sci
, SCE_SQL_COMMENTDOC
, ft_id
, 3);
2305 set_sci_style(sci
, SCE_SQL_NUMBER
, ft_id
, 4);
2306 set_sci_style(sci
, SCE_SQL_WORD
, ft_id
, 5);
2307 set_sci_style(sci
, SCE_SQL_WORD2
, ft_id
, 6);
2308 set_sci_style(sci
, SCE_SQL_STRING
, ft_id
, 7);
2309 set_sci_style(sci
, SCE_SQL_CHARACTER
, ft_id
, 8);
2310 set_sci_style(sci
, SCE_SQL_OPERATOR
, ft_id
, 9);
2311 set_sci_style(sci
, SCE_SQL_IDENTIFIER
, ft_id
, 10);
2312 set_sci_style(sci
, SCE_SQL_SQLPLUS
, ft_id
, 11);
2313 set_sci_style(sci
, SCE_SQL_SQLPLUS_PROMPT
, ft_id
, 12);
2314 set_sci_style(sci
, SCE_SQL_SQLPLUS_COMMENT
, ft_id
, 13);
2315 set_sci_style(sci
, SCE_SQL_QUOTEDIDENTIFIER
, ft_id
, 14);
2319 static void styleset_markdown_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2321 new_styleset(ft_id
, 17);
2323 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2324 get_keyfile_style(config
, config_home
, "strong", &style_sets
[ft_id
].styling
[1]);
2325 get_keyfile_style(config
, config_home
, "emphasis", &style_sets
[ft_id
].styling
[2]);
2326 get_keyfile_style(config
, config_home
, "header1", &style_sets
[ft_id
].styling
[3]);
2327 get_keyfile_style(config
, config_home
, "header2", &style_sets
[ft_id
].styling
[4]);
2328 get_keyfile_style(config
, config_home
, "header3", &style_sets
[ft_id
].styling
[5]);
2329 get_keyfile_style(config
, config_home
, "header4", &style_sets
[ft_id
].styling
[6]);
2330 get_keyfile_style(config
, config_home
, "header5", &style_sets
[ft_id
].styling
[7]);
2331 get_keyfile_style(config
, config_home
, "header6", &style_sets
[ft_id
].styling
[8]);
2332 get_keyfile_style(config
, config_home
, "ulist_item", &style_sets
[ft_id
].styling
[9]);
2333 get_keyfile_style(config
, config_home
, "olist_item", &style_sets
[ft_id
].styling
[10]);
2334 get_keyfile_style(config
, config_home
, "blockquote", &style_sets
[ft_id
].styling
[11]);
2335 get_keyfile_style(config
, config_home
, "strikeout", &style_sets
[ft_id
].styling
[12]);
2336 get_keyfile_style(config
, config_home
, "hrule", &style_sets
[ft_id
].styling
[13]);
2337 get_keyfile_style(config
, config_home
, "link", &style_sets
[ft_id
].styling
[14]);
2338 get_keyfile_style(config
, config_home
, "code", &style_sets
[ft_id
].styling
[15]);
2339 get_keyfile_style(config
, config_home
, "codebk", &style_sets
[ft_id
].styling
[16]);
2341 style_sets
[ft_id
].keywords
= NULL
;
2345 static void styleset_markdown(ScintillaObject
*sci
, gint ft_id
)
2347 apply_filetype_properties(sci
, SCLEX_MARKDOWN
, ft_id
);
2349 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2350 set_sci_style(sci
, SCE_MARKDOWN_DEFAULT
, ft_id
, 0);
2351 set_sci_style(sci
, SCE_MARKDOWN_LINE_BEGIN
, ft_id
, 0);
2352 set_sci_style(sci
, SCE_MARKDOWN_PRECHAR
, ft_id
, 0);
2353 set_sci_style(sci
, SCE_MARKDOWN_STRONG1
, ft_id
, 1);
2354 set_sci_style(sci
, SCE_MARKDOWN_STRONG2
, ft_id
, 1);
2355 set_sci_style(sci
, SCE_MARKDOWN_EM1
, ft_id
, 2);
2356 set_sci_style(sci
, SCE_MARKDOWN_EM2
, ft_id
, 2);
2357 set_sci_style(sci
, SCE_MARKDOWN_HEADER1
, ft_id
, 3);
2358 set_sci_style(sci
, SCE_MARKDOWN_HEADER2
, ft_id
, 4);
2359 set_sci_style(sci
, SCE_MARKDOWN_HEADER3
, ft_id
, 5);
2360 set_sci_style(sci
, SCE_MARKDOWN_HEADER4
, ft_id
, 6);
2361 set_sci_style(sci
, SCE_MARKDOWN_HEADER5
, ft_id
, 7);
2362 set_sci_style(sci
, SCE_MARKDOWN_HEADER6
, ft_id
, 8);
2363 set_sci_style(sci
, SCE_MARKDOWN_ULIST_ITEM
, ft_id
, 9);
2364 set_sci_style(sci
, SCE_MARKDOWN_OLIST_ITEM
, ft_id
, 10);
2365 set_sci_style(sci
, SCE_MARKDOWN_BLOCKQUOTE
, ft_id
, 11);
2366 set_sci_style(sci
, SCE_MARKDOWN_STRIKEOUT
, ft_id
, 12);
2367 set_sci_style(sci
, SCE_MARKDOWN_HRULE
, ft_id
, 13);
2368 set_sci_style(sci
, SCE_MARKDOWN_LINK
, ft_id
, 14);
2369 set_sci_style(sci
, SCE_MARKDOWN_CODE
, ft_id
, 15);
2370 set_sci_style(sci
, SCE_MARKDOWN_CODE2
, ft_id
, 15);
2371 set_sci_style(sci
, SCE_MARKDOWN_CODEBK
, ft_id
, 16);
2375 static void styleset_haskell_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2377 new_styleset(ft_id
, 17);
2379 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2380 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[1]);
2381 get_keyfile_style(config
, config_home
, "commentblock", &style_sets
[ft_id
].styling
[2]);
2382 get_keyfile_style(config
, config_home
, "commentblock2", &style_sets
[ft_id
].styling
[3]);
2383 get_keyfile_style(config
, config_home
, "commentblock3", &style_sets
[ft_id
].styling
[4]);
2384 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2385 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[6]);
2386 get_keyfile_style(config
, config_home
, "import", &style_sets
[ft_id
].styling
[7]);
2387 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[8]);
2388 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[9]);
2389 get_keyfile_style(config
, config_home
, "class", &style_sets
[ft_id
].styling
[10]);
2390 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[11]);
2391 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[12]);
2392 get_keyfile_style(config
, config_home
, "instance", &style_sets
[ft_id
].styling
[13]);
2393 get_keyfile_style(config
, config_home
, "capital", &style_sets
[ft_id
].styling
[14]);
2394 get_keyfile_style(config
, config_home
, "module", &style_sets
[ft_id
].styling
[15]);
2395 get_keyfile_style(config
, config_home
, "data", &style_sets
[ft_id
].styling
[16]);
2397 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2398 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2399 style_sets
[ft_id
].keywords
[1] = NULL
;
2403 static void styleset_haskell(ScintillaObject
*sci
, gint ft_id
)
2405 apply_filetype_properties(sci
, SCLEX_HASKELL
, ft_id
);
2407 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2409 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2410 set_sci_style(sci
, SCE_HA_DEFAULT
, ft_id
, 0);
2411 set_sci_style(sci
, SCE_HA_COMMENTLINE
, ft_id
, 1);
2412 set_sci_style(sci
, SCE_HA_COMMENTBLOCK
, ft_id
, 2);
2413 set_sci_style(sci
, SCE_HA_COMMENTBLOCK2
, ft_id
, 3);
2414 set_sci_style(sci
, SCE_HA_COMMENTBLOCK3
, ft_id
, 4);
2415 set_sci_style(sci
, SCE_HA_NUMBER
, ft_id
, 5);
2416 set_sci_style(sci
, SCE_HA_KEYWORD
, ft_id
, 6);
2417 set_sci_style(sci
, SCE_HA_IMPORT
, ft_id
, 7);
2418 set_sci_style(sci
, SCE_HA_STRING
, ft_id
, 8);
2419 set_sci_style(sci
, SCE_HA_CHARACTER
, ft_id
, 9);
2420 set_sci_style(sci
, SCE_HA_CLASS
, ft_id
, 10);
2421 set_sci_style(sci
, SCE_HA_OPERATOR
, ft_id
, 11);
2422 set_sci_style(sci
, SCE_HA_IDENTIFIER
, ft_id
, 12);
2423 set_sci_style(sci
, SCE_HA_INSTANCE
, ft_id
, 13);
2424 set_sci_style(sci
, SCE_HA_CAPITAL
, ft_id
, 14);
2425 set_sci_style(sci
, SCE_HA_MODULE
, ft_id
, 15);
2426 set_sci_style(sci
, SCE_HA_DATA
, ft_id
, 16);
2430 static void styleset_caml_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2432 new_styleset(ft_id
, 14);
2434 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2435 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2436 get_keyfile_style(config
, config_home
, "comment1", &style_sets
[ft_id
].styling
[2]);
2437 get_keyfile_style(config
, config_home
, "comment2", &style_sets
[ft_id
].styling
[3]);
2438 get_keyfile_style(config
, config_home
, "comment3", &style_sets
[ft_id
].styling
[4]);
2439 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2440 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[6]);
2441 get_keyfile_style(config
, config_home
, "keyword2", &style_sets
[ft_id
].styling
[7]);
2442 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[8]);
2443 get_keyfile_style(config
, config_home
, "char", &style_sets
[ft_id
].styling
[9]);
2444 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
2445 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
2446 get_keyfile_style(config
, config_home
, "tagname", &style_sets
[ft_id
].styling
[12]);
2447 get_keyfile_style(config
, config_home
, "linenum", &style_sets
[ft_id
].styling
[13]);
2449 style_sets
[ft_id
].keywords
= g_new(gchar
*, 3);
2450 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2451 get_keyfile_keywords(config
, config_home
, "keywords_optional", ft_id
, 1);
2452 style_sets
[ft_id
].keywords
[2] = NULL
;
2456 static void styleset_caml(ScintillaObject
*sci
, gint ft_id
)
2458 apply_filetype_properties(sci
, SCLEX_CAML
, ft_id
);
2460 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2461 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2463 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2464 set_sci_style(sci
, SCE_CAML_DEFAULT
, ft_id
, 0);
2465 set_sci_style(sci
, SCE_CAML_COMMENT
, ft_id
, 1);
2466 set_sci_style(sci
, SCE_CAML_COMMENT1
, ft_id
, 2);
2467 set_sci_style(sci
, SCE_CAML_COMMENT2
, ft_id
, 3);
2468 set_sci_style(sci
, SCE_CAML_COMMENT3
, ft_id
, 4);
2469 set_sci_style(sci
, SCE_CAML_NUMBER
, ft_id
, 5);
2470 set_sci_style(sci
, SCE_CAML_KEYWORD
, ft_id
, 6);
2471 set_sci_style(sci
, SCE_CAML_KEYWORD2
, ft_id
, 7);
2472 set_sci_style(sci
, SCE_CAML_STRING
, ft_id
, 8);
2473 set_sci_style(sci
, SCE_CAML_CHAR
, ft_id
, 9);
2474 set_sci_style(sci
, SCE_CAML_OPERATOR
, ft_id
, 10);
2475 set_sci_style(sci
, SCE_CAML_IDENTIFIER
, ft_id
, 11);
2476 set_sci_style(sci
, SCE_CAML_TAGNAME
, ft_id
, 12);
2477 set_sci_style(sci
, SCE_CAML_LINENUM
, ft_id
, 13);
2481 static void styleset_tcl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2483 new_styleset(ft_id
, 16);
2484 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2485 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2486 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2487 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2488 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[4]);
2489 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[5]);
2490 get_keyfile_style(config
, config_home
, "wordinquote", &style_sets
[ft_id
].styling
[6]);
2491 get_keyfile_style(config
, config_home
, "inquote", &style_sets
[ft_id
].styling
[7]);
2492 get_keyfile_style(config
, config_home
, "substitution", &style_sets
[ft_id
].styling
[8]);
2493 get_keyfile_style(config
, config_home
, "modifier", &style_sets
[ft_id
].styling
[9]);
2494 get_keyfile_style(config
, config_home
, "expand", &style_sets
[ft_id
].styling
[10]);
2495 get_keyfile_style(config
, config_home
, "wordtcl", &style_sets
[ft_id
].styling
[11]);
2496 get_keyfile_style(config
, config_home
, "wordtk", &style_sets
[ft_id
].styling
[12]);
2497 get_keyfile_style(config
, config_home
, "worditcl", &style_sets
[ft_id
].styling
[13]);
2498 get_keyfile_style(config
, config_home
, "wordtkcmds", &style_sets
[ft_id
].styling
[14]);
2499 get_keyfile_style(config
, config_home
, "wordexpand", &style_sets
[ft_id
].styling
[15]);
2501 style_sets
[ft_id
].keywords
= g_new(gchar
*, 6);
2502 get_keyfile_keywords(config
, config_home
, "tcl", ft_id
, 0);
2503 get_keyfile_keywords(config
, config_home
, "tk", ft_id
, 1);
2504 get_keyfile_keywords(config
, config_home
, "itcl", ft_id
, 2);
2505 get_keyfile_keywords(config
, config_home
, "tkcommands", ft_id
, 3);
2506 get_keyfile_keywords(config
, config_home
, "expand", ft_id
, 4);
2507 style_sets
[ft_id
].keywords
[5] = NULL
;
2511 static void styleset_tcl(ScintillaObject
*sci
, gint ft_id
)
2513 apply_filetype_properties(sci
, SCLEX_TCL
, ft_id
);
2515 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2516 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2517 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2518 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2519 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
2521 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2522 set_sci_style(sci
, SCE_TCL_DEFAULT
, ft_id
, 0);
2523 set_sci_style(sci
, SCE_TCL_COMMENT
, ft_id
, 1);
2524 set_sci_style(sci
, SCE_TCL_COMMENTLINE
, ft_id
, 2);
2525 set_sci_style(sci
, SCE_TCL_NUMBER
, ft_id
, 3);
2526 set_sci_style(sci
, SCE_TCL_OPERATOR
, ft_id
, 4);
2527 set_sci_style(sci
, SCE_TCL_IDENTIFIER
, ft_id
, 5);
2528 set_sci_style(sci
, SCE_TCL_WORD_IN_QUOTE
, ft_id
, 6);
2529 set_sci_style(sci
, SCE_TCL_IN_QUOTE
, ft_id
, 7);
2530 set_sci_style(sci
, SCE_TCL_SUBSTITUTION
, ft_id
, 8);
2531 set_sci_style(sci
, SCE_TCL_MODIFIER
, ft_id
, 9);
2532 set_sci_style(sci
, SCE_TCL_EXPAND
, ft_id
, 10);
2533 set_sci_style(sci
, SCE_TCL_WORD
, ft_id
, 11);
2534 set_sci_style(sci
, SCE_TCL_WORD2
, ft_id
, 12);
2535 set_sci_style(sci
, SCE_TCL_WORD3
, ft_id
, 13);
2536 set_sci_style(sci
, SCE_TCL_WORD4
, ft_id
, 14);
2537 set_sci_style(sci
, SCE_TCL_WORD5
, ft_id
, 15);
2541 static void styleset_matlab_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2543 new_styleset(ft_id
, 9);
2544 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2545 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2546 get_keyfile_style(config
, config_home
, "command", &style_sets
[ft_id
].styling
[2]);
2547 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2548 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[4]);
2549 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[5]);
2550 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
2551 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
2552 get_keyfile_style(config
, config_home
, "doublequotedstring", &style_sets
[ft_id
].styling
[8]);
2554 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2555 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2556 style_sets
[ft_id
].keywords
[1] = NULL
;
2560 static void styleset_matlab(ScintillaObject
*sci
, gint ft_id
)
2562 apply_filetype_properties(sci
, SCLEX_MATLAB
, ft_id
);
2564 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2566 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2567 set_sci_style(sci
, SCE_MATLAB_DEFAULT
, ft_id
, 0);
2568 set_sci_style(sci
, SCE_MATLAB_COMMENT
, ft_id
, 1);
2569 set_sci_style(sci
, SCE_MATLAB_COMMAND
, ft_id
, 2);
2570 set_sci_style(sci
, SCE_MATLAB_NUMBER
, ft_id
, 3);
2571 set_sci_style(sci
, SCE_MATLAB_KEYWORD
, ft_id
, 4);
2572 set_sci_style(sci
, SCE_MATLAB_STRING
, ft_id
, 5);
2573 set_sci_style(sci
, SCE_MATLAB_OPERATOR
, ft_id
, 6);
2574 set_sci_style(sci
, SCE_MATLAB_IDENTIFIER
, ft_id
, 7);
2575 set_sci_style(sci
, SCE_MATLAB_DOUBLEQUOTESTRING
, ft_id
, 8);
2579 static void styleset_d_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2581 new_styleset(ft_id
, 18);
2583 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2584 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2585 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2586 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
2587 get_keyfile_style(config
, config_home
, "commentdocnested", &style_sets
[ft_id
].styling
[4]);
2588 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[5]);
2589 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[6]);
2590 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[7]);
2591 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[8]);
2592 get_keyfile_style(config
, config_home
, "typedef", &style_sets
[ft_id
].styling
[9]);
2593 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[10]);
2594 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[11]);
2595 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[12]);
2596 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[13]);
2597 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[14]);
2598 get_keyfile_style(config
, config_home
, "commentlinedoc", &style_sets
[ft_id
].styling
[15]);
2599 get_keyfile_style(config
, config_home
, "commentdockeyword", &style_sets
[ft_id
].styling
[16]);
2600 get_keyfile_style(config
, config_home
, "commentdockeyworderror", &style_sets
[ft_id
].styling
[17]);
2602 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
2603 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2604 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
2605 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
2606 get_keyfile_keywords(config
, config_home
, "types", ft_id
, 3);
2607 style_sets
[ft_id
].keywords
[4] = NULL
;
2611 static void styleset_d(ScintillaObject
*sci
, gint ft_id
)
2613 apply_filetype_properties(sci
, SCLEX_D
, ft_id
);
2615 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2616 /* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
2617 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2618 /* SCI_SETKEYWORDS = 3 is for current session types - see editor_lexer_get_type_keyword_idx() */
2619 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[3]);
2621 /* assign global types, merge them with user defined keywords and set them */
2622 merge_type_keywords(sci
, ft_id
, 1);
2624 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2625 set_sci_style(sci
, SCE_D_DEFAULT
, ft_id
, 0);
2626 set_sci_style(sci
, SCE_D_COMMENT
, ft_id
, 1);
2627 set_sci_style(sci
, SCE_D_COMMENTLINE
, ft_id
, 2);
2628 set_sci_style(sci
, SCE_D_COMMENTDOC
, ft_id
, 3);
2629 set_sci_style(sci
, SCE_D_COMMENTNESTED
, ft_id
, 4);
2630 set_sci_style(sci
, SCE_D_NUMBER
, ft_id
, 5);
2631 set_sci_style(sci
, SCE_D_WORD
, ft_id
, 6);
2632 set_sci_style(sci
, SCE_D_WORD2
, ft_id
, 7);
2633 set_sci_style(sci
, SCE_D_WORD3
, ft_id
, 8);
2634 set_sci_style(sci
, SCE_D_TYPEDEF
, ft_id
, 9);
2635 set_sci_style(sci
, SCE_D_WORD5
, ft_id
, 9);
2636 set_sci_style(sci
, SCE_D_STRING
, ft_id
, 10);
2637 set_sci_style(sci
, SCE_D_STRINGB
, ft_id
, 10);
2638 set_sci_style(sci
, SCE_D_STRINGR
, ft_id
, 10);
2639 set_sci_style(sci
, SCE_D_STRINGEOL
, ft_id
, 11);
2640 set_sci_style(sci
, SCE_D_CHARACTER
, ft_id
, 12);
2641 set_sci_style(sci
, SCE_D_OPERATOR
, ft_id
, 13);
2642 set_sci_style(sci
, SCE_D_IDENTIFIER
, ft_id
, 14);
2643 set_sci_style(sci
, SCE_D_COMMENTLINEDOC
, ft_id
, 15);
2644 set_sci_style(sci
, SCE_D_COMMENTDOCKEYWORD
, ft_id
, 16);
2645 set_sci_style(sci
, SCE_D_COMMENTDOCKEYWORDERROR
, ft_id
, 17);
2649 static void styleset_ferite_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2651 styleset_c_like_init(config
, config_home
, ft_id
);
2653 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2654 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2655 get_keyfile_keywords(config
, config_home
, "types", ft_id
, 1);
2656 get_keyfile_keywords(config
, config_home
, "docComment", ft_id
, 2);
2657 style_sets
[ft_id
].keywords
[3] = NULL
;
2661 static void styleset_ferite(ScintillaObject
*sci
, gint ft_id
)
2663 styleset_c_like(sci
, ft_id
);
2665 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2666 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2667 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2671 static void styleset_vhdl_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2673 new_styleset(ft_id
, 15);
2675 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2676 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2677 get_keyfile_style(config
, config_home
, "comment_line_bang", &style_sets
[ft_id
].styling
[2]);
2678 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
2679 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
2680 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[5]);
2681 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[6]);
2682 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[7]);
2683 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[8]);
2684 get_keyfile_style(config
, config_home
, "stdoperator", &style_sets
[ft_id
].styling
[9]);
2685 get_keyfile_style(config
, config_home
, "attribute", &style_sets
[ft_id
].styling
[10]);
2686 get_keyfile_style(config
, config_home
, "stdfunction", &style_sets
[ft_id
].styling
[11]);
2687 get_keyfile_style(config
, config_home
, "stdpackage", &style_sets
[ft_id
].styling
[12]);
2688 get_keyfile_style(config
, config_home
, "stdtype", &style_sets
[ft_id
].styling
[13]);
2689 get_keyfile_style(config
, config_home
, "userword", &style_sets
[ft_id
].styling
[14]);
2691 style_sets
[ft_id
].keywords
= g_new(gchar
*, 8);
2692 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2693 get_keyfile_keywords(config
, config_home
, "operators", ft_id
, 1);
2694 get_keyfile_keywords(config
, config_home
, "attributes", ft_id
, 2);
2695 get_keyfile_keywords(config
, config_home
, "std_functions", ft_id
, 3);
2696 get_keyfile_keywords(config
, config_home
, "std_packages", ft_id
, 4);
2697 get_keyfile_keywords(config
, config_home
, "std_types", ft_id
, 5);
2698 get_keyfile_keywords(config
, config_home
, "userwords", ft_id
, 6);
2699 style_sets
[ft_id
].keywords
[7] = NULL
;
2703 static void styleset_vhdl(ScintillaObject
*sci
, gint ft_id
)
2705 apply_filetype_properties(sci
, SCLEX_VHDL
, ft_id
);
2707 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2708 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2709 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2710 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2711 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
2712 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[5]);
2713 sci_set_keywords(sci
, 6, style_sets
[ft_id
].keywords
[6]);
2715 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2716 set_sci_style(sci
, SCE_VHDL_DEFAULT
, ft_id
, 0);
2717 set_sci_style(sci
, SCE_VHDL_COMMENT
, ft_id
, 1);
2718 set_sci_style(sci
, SCE_VHDL_COMMENTLINEBANG
, ft_id
, 2);
2719 set_sci_style(sci
, SCE_VHDL_NUMBER
, ft_id
, 3);
2720 set_sci_style(sci
, SCE_VHDL_STRING
, ft_id
, 4);
2721 set_sci_style(sci
, SCE_VHDL_OPERATOR
, ft_id
, 5);
2722 set_sci_style(sci
, SCE_VHDL_IDENTIFIER
, ft_id
, 6);
2723 set_sci_style(sci
, SCE_VHDL_STRINGEOL
, ft_id
, 7);
2724 set_sci_style(sci
, SCE_VHDL_KEYWORD
, ft_id
, 8);
2725 set_sci_style(sci
, SCE_VHDL_STDOPERATOR
, ft_id
, 9);
2726 set_sci_style(sci
, SCE_VHDL_ATTRIBUTE
, ft_id
, 10);
2727 set_sci_style(sci
, SCE_VHDL_STDFUNCTION
, ft_id
, 11);
2728 set_sci_style(sci
, SCE_VHDL_STDPACKAGE
, ft_id
, 12);
2729 set_sci_style(sci
, SCE_VHDL_STDTYPE
, ft_id
, 13);
2730 set_sci_style(sci
, SCE_VHDL_USERWORD
, ft_id
, 14);
2734 static void styleset_verilog_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2736 new_styleset(ft_id
, 14);
2738 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2739 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2740 get_keyfile_style(config
, config_home
, "comment_line", &style_sets
[ft_id
].styling
[2]);
2741 get_keyfile_style(config
, config_home
, "comment_line_bang", &style_sets
[ft_id
].styling
[3]);
2742 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2743 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
2744 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[6]);
2745 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[7]);
2746 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[8]);
2747 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[9]);
2748 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
2749 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
2750 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[12]);
2751 get_keyfile_style(config
, config_home
, "userword", &style_sets
[ft_id
].styling
[13]);
2753 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2754 get_keyfile_keywords(config
, config_home
, "word", ft_id
, 0);
2755 get_keyfile_keywords(config
, config_home
, "word2", ft_id
, 1);
2756 get_keyfile_keywords(config
, config_home
, "word3", ft_id
, 2);
2757 style_sets
[ft_id
].keywords
[3] = NULL
;
2761 static void styleset_verilog(ScintillaObject
*sci
, gint ft_id
)
2763 apply_filetype_properties(sci
, SCLEX_VERILOG
, ft_id
);
2765 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2766 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2767 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2769 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2770 set_sci_style(sci
, SCE_V_DEFAULT
, ft_id
, 0);
2771 set_sci_style(sci
, SCE_V_COMMENT
, ft_id
, 1);
2772 set_sci_style(sci
, SCE_V_COMMENTLINE
, ft_id
, 2);
2773 set_sci_style(sci
, SCE_V_COMMENTLINEBANG
, ft_id
, 3);
2774 set_sci_style(sci
, SCE_V_NUMBER
, ft_id
, 4);
2775 set_sci_style(sci
, SCE_V_WORD
, ft_id
,5);
2776 set_sci_style(sci
, SCE_V_STRING
, ft_id
, 6);
2777 set_sci_style(sci
, SCE_V_WORD2
, ft_id
, 7);
2778 set_sci_style(sci
, SCE_V_WORD3
, ft_id
, 8);
2779 set_sci_style(sci
, SCE_V_PREPROCESSOR
, ft_id
, 9);
2780 set_sci_style(sci
, SCE_V_OPERATOR
, ft_id
, 10);
2781 set_sci_style(sci
, SCE_V_IDENTIFIER
, ft_id
, 11);
2782 set_sci_style(sci
, SCE_V_STRINGEOL
, ft_id
, 12);
2783 set_sci_style(sci
, SCE_V_USER
, ft_id
, 13);
2787 static void styleset_yaml_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2789 new_styleset(ft_id
, 10);
2791 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2792 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2793 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[2]);
2794 get_keyfile_style(config
, config_home
, "keyword", &style_sets
[ft_id
].styling
[3]);
2795 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2796 get_keyfile_style(config
, config_home
, "reference", &style_sets
[ft_id
].styling
[5]);
2797 get_keyfile_style(config
, config_home
, "document", &style_sets
[ft_id
].styling
[6]);
2798 get_keyfile_style(config
, config_home
, "text", &style_sets
[ft_id
].styling
[7]);
2799 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[8]);
2800 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[9]);
2802 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2803 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2804 style_sets
[ft_id
].keywords
[1] = NULL
;
2808 static void styleset_yaml(ScintillaObject
*sci
, gint ft_id
)
2810 apply_filetype_properties(sci
, SCLEX_YAML
, ft_id
);
2812 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2814 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2815 set_sci_style(sci
, SCE_YAML_DEFAULT
, ft_id
, 0);
2816 set_sci_style(sci
, SCE_YAML_COMMENT
, ft_id
, 1);
2817 set_sci_style(sci
, SCE_YAML_IDENTIFIER
, ft_id
, 2);
2818 set_sci_style(sci
, SCE_YAML_KEYWORD
, ft_id
, 3);
2819 set_sci_style(sci
, SCE_YAML_NUMBER
, ft_id
, 4);
2820 set_sci_style(sci
, SCE_YAML_REFERENCE
, ft_id
, 5);
2821 set_sci_style(sci
, SCE_YAML_DOCUMENT
, ft_id
, 6);
2822 set_sci_style(sci
, SCE_YAML_TEXT
, ft_id
, 7);
2823 set_sci_style(sci
, SCE_YAML_ERROR
, ft_id
, 8);
2824 set_sci_style(sci
, SCE_YAML_OPERATOR
, ft_id
, 9);
2828 static void styleset_js_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2830 styleset_c_like_init(config
, config_home
, ft_id
);
2832 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
2833 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2834 style_sets
[ft_id
].keywords
[1] = NULL
;
2838 static void styleset_js(ScintillaObject
*sci
, gint ft_id
)
2840 styleset_c_like(sci
, ft_id
);
2842 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2846 static void styleset_lua_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2848 new_styleset(ft_id
, 20);
2850 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2851 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2852 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[2]);
2853 get_keyfile_style(config
, config_home
, "commentdoc", &style_sets
[ft_id
].styling
[3]);
2854 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[4]);
2855 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[5]);
2856 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[6]);
2857 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[7]);
2858 get_keyfile_style(config
, config_home
, "literalstring", &style_sets
[ft_id
].styling
[8]);
2859 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[9]);
2860 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[10]);
2861 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[11]);
2862 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[12]);
2863 get_keyfile_style(config
, config_home
, "function_basic", &style_sets
[ft_id
].styling
[13]);
2864 get_keyfile_style(config
, config_home
, "function_other", &style_sets
[ft_id
].styling
[14]);
2865 get_keyfile_style(config
, config_home
, "coroutines", &style_sets
[ft_id
].styling
[15]);
2866 get_keyfile_style(config
, config_home
, "word5", &style_sets
[ft_id
].styling
[16]);
2867 get_keyfile_style(config
, config_home
, "word6", &style_sets
[ft_id
].styling
[17]);
2868 get_keyfile_style(config
, config_home
, "word7", &style_sets
[ft_id
].styling
[18]);
2869 get_keyfile_style(config
, config_home
, "word8", &style_sets
[ft_id
].styling
[19]);
2871 style_sets
[ft_id
].keywords
= g_new(gchar
*, 9);
2872 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2873 get_keyfile_keywords(config
, config_home
, "function_basic", ft_id
, 1);
2874 get_keyfile_keywords(config
, config_home
, "function_other", ft_id
, 2);
2875 get_keyfile_keywords(config
, config_home
, "coroutines", ft_id
, 3);
2876 get_keyfile_keywords(config
, config_home
, "user1", ft_id
, 4);
2877 get_keyfile_keywords(config
, config_home
, "user2", ft_id
, 5);
2878 get_keyfile_keywords(config
, config_home
, "user3", ft_id
, 6);
2879 get_keyfile_keywords(config
, config_home
, "user4", ft_id
, 7);
2880 style_sets
[ft_id
].keywords
[8] = NULL
;
2884 static void styleset_lua(ScintillaObject
*sci
, gint ft_id
)
2886 apply_filetype_properties(sci
, SCLEX_LUA
, ft_id
);
2888 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2889 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2890 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2891 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2892 sci_set_keywords(sci
, 4, style_sets
[ft_id
].keywords
[4]);
2893 sci_set_keywords(sci
, 5, style_sets
[ft_id
].keywords
[5]);
2894 sci_set_keywords(sci
, 6, style_sets
[ft_id
].keywords
[6]);
2895 sci_set_keywords(sci
, 7, style_sets
[ft_id
].keywords
[7]);
2897 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2898 set_sci_style(sci
, SCE_LUA_DEFAULT
, ft_id
, 0);
2899 set_sci_style(sci
, SCE_LUA_COMMENT
, ft_id
, 1);
2900 set_sci_style(sci
, SCE_LUA_COMMENTLINE
, ft_id
, 2);
2901 set_sci_style(sci
, SCE_LUA_COMMENTDOC
, ft_id
, 3);
2902 set_sci_style(sci
, SCE_LUA_NUMBER
, ft_id
, 4);
2903 set_sci_style(sci
, SCE_LUA_WORD
, ft_id
, 5);
2904 set_sci_style(sci
, SCE_LUA_STRING
, ft_id
, 6);
2905 set_sci_style(sci
, SCE_LUA_CHARACTER
, ft_id
, 7);
2906 set_sci_style(sci
, SCE_LUA_LITERALSTRING
, ft_id
, 8);
2907 set_sci_style(sci
, SCE_LUA_PREPROCESSOR
, ft_id
, 9);
2908 set_sci_style(sci
, SCE_LUA_OPERATOR
, ft_id
, 10);
2909 set_sci_style(sci
, SCE_LUA_IDENTIFIER
, ft_id
, 11);
2910 set_sci_style(sci
, SCE_LUA_STRINGEOL
, ft_id
, 12);
2911 set_sci_style(sci
, SCE_LUA_WORD2
, ft_id
, 13);
2912 set_sci_style(sci
, SCE_LUA_WORD3
, ft_id
, 14);
2913 set_sci_style(sci
, SCE_LUA_WORD4
, ft_id
, 15);
2914 set_sci_style(sci
, SCE_LUA_WORD5
, ft_id
, 16);
2915 set_sci_style(sci
, SCE_LUA_WORD6
, ft_id
, 17);
2916 set_sci_style(sci
, SCE_LUA_WORD7
, ft_id
, 18);
2917 set_sci_style(sci
, SCE_LUA_WORD8
, ft_id
, 19);
2921 static void styleset_basic_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2923 new_styleset(ft_id
, 19);
2925 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
2926 get_keyfile_style(config
, config_home
, "comment", &style_sets
[ft_id
].styling
[1]);
2927 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[2]);
2928 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[3]);
2929 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[4]);
2930 get_keyfile_style(config
, config_home
, "preprocessor", &style_sets
[ft_id
].styling
[5]);
2931 get_keyfile_style(config
, config_home
, "operator", &style_sets
[ft_id
].styling
[6]);
2932 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[7]);
2933 get_keyfile_style(config
, config_home
, "date", &style_sets
[ft_id
].styling
[8]);
2934 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[9]);
2935 get_keyfile_style(config
, config_home
, "word2", &style_sets
[ft_id
].styling
[10]);
2936 get_keyfile_style(config
, config_home
, "word3", &style_sets
[ft_id
].styling
[11]);
2937 get_keyfile_style(config
, config_home
, "word4", &style_sets
[ft_id
].styling
[12]);
2938 get_keyfile_style(config
, config_home
, "constant", &style_sets
[ft_id
].styling
[13]);
2939 get_keyfile_style(config
, config_home
, "asm", &style_sets
[ft_id
].styling
[14]);
2940 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[15]);
2941 get_keyfile_style(config
, config_home
, "error", &style_sets
[ft_id
].styling
[16]);
2942 get_keyfile_style(config
, config_home
, "hexnumber", &style_sets
[ft_id
].styling
[17]);
2943 get_keyfile_style(config
, config_home
, "binnumber", &style_sets
[ft_id
].styling
[18]);
2945 style_sets
[ft_id
].keywords
= g_new(gchar
*, 5);
2946 get_keyfile_keywords(config
, config_home
, "keywords", ft_id
, 0);
2947 get_keyfile_keywords(config
, config_home
, "preprocessor", ft_id
, 1);
2948 get_keyfile_keywords(config
, config_home
, "user1", ft_id
, 2);
2949 get_keyfile_keywords(config
, config_home
, "user2", ft_id
, 3);
2950 style_sets
[ft_id
].keywords
[4] = NULL
;
2954 static void styleset_basic(ScintillaObject
*sci
, gint ft_id
)
2956 apply_filetype_properties(sci
, SCLEX_FREEBASIC
, ft_id
);
2958 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
2959 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
2960 sci_set_keywords(sci
, 2, style_sets
[ft_id
].keywords
[2]);
2961 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[3]);
2963 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
2964 set_sci_style(sci
, SCE_B_DEFAULT
, ft_id
, 0);
2965 set_sci_style(sci
, SCE_B_COMMENT
, ft_id
, 1);
2966 set_sci_style(sci
, SCE_B_NUMBER
, ft_id
, 2);
2967 set_sci_style(sci
, SCE_B_KEYWORD
, ft_id
, 3);
2968 set_sci_style(sci
, SCE_B_STRING
, ft_id
, 4);
2969 set_sci_style(sci
, SCE_B_PREPROCESSOR
, ft_id
, 5);
2970 set_sci_style(sci
, SCE_B_OPERATOR
, ft_id
, 6);
2971 set_sci_style(sci
, SCE_B_IDENTIFIER
, ft_id
, 7);
2972 set_sci_style(sci
, SCE_B_DATE
, ft_id
, 8);
2973 set_sci_style(sci
, SCE_B_STRINGEOL
, ft_id
, 9);
2974 set_sci_style(sci
, SCE_B_KEYWORD2
, ft_id
, 10);
2975 set_sci_style(sci
, SCE_B_KEYWORD3
, ft_id
, 11);
2976 set_sci_style(sci
, SCE_B_KEYWORD4
, ft_id
, 12);
2977 set_sci_style(sci
, SCE_B_CONSTANT
, ft_id
, 13);
2978 set_sci_style(sci
, SCE_B_ASM
, ft_id
, 14); /* (still?) unused by the lexer */
2979 set_sci_style(sci
, SCE_B_LABEL
, ft_id
, 15);
2980 set_sci_style(sci
, SCE_B_ERROR
, ft_id
, 16);
2981 set_sci_style(sci
, SCE_B_HEXNUMBER
, ft_id
, 17);
2982 set_sci_style(sci
, SCE_B_BINNUMBER
, ft_id
, 18);
2986 static void styleset_actionscript_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
2988 styleset_c_like_init(config
, config_home
, ft_id
);
2990 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
2991 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
2992 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
2993 get_keyfile_keywords(config
, config_home
, "classes", ft_id
, 2);
2994 style_sets
[ft_id
].keywords
[3] = NULL
;
2998 static void styleset_actionscript(ScintillaObject
*sci
, gint ft_id
)
3000 styleset_c_like(sci
, ft_id
);
3002 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3003 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[2]);
3004 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[1]);
3008 static void styleset_haxe_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3010 styleset_c_like_init(config
, config_home
, ft_id
);
3012 style_sets
[ft_id
].keywords
= g_new(gchar
*, 4);
3013 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3014 get_keyfile_keywords(config
, config_home
, "secondary", ft_id
, 1);
3015 get_keyfile_keywords(config
, config_home
, "classes", ft_id
, 2);
3016 style_sets
[ft_id
].keywords
[3] = NULL
;
3020 static void styleset_haxe(ScintillaObject
*sci
, gint ft_id
)
3022 styleset_c_like(sci
, ft_id
);
3024 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3025 sci_set_keywords(sci
, 1, style_sets
[ft_id
].keywords
[1]);
3026 sci_set_keywords(sci
, 3, style_sets
[ft_id
].keywords
[2]);
3030 static void styleset_ada_init(gint ft_id
, GKeyFile
*config
, GKeyFile
*config_home
)
3032 new_styleset(ft_id
, 12);
3034 get_keyfile_style(config
, config_home
, "default", &style_sets
[ft_id
].styling
[0]);
3035 get_keyfile_style(config
, config_home
, "word", &style_sets
[ft_id
].styling
[1]);
3036 get_keyfile_style(config
, config_home
, "identifier", &style_sets
[ft_id
].styling
[2]);
3037 get_keyfile_style(config
, config_home
, "number", &style_sets
[ft_id
].styling
[3]);
3038 get_keyfile_style(config
, config_home
, "delimiter", &style_sets
[ft_id
].styling
[4]);
3039 get_keyfile_style(config
, config_home
, "character", &style_sets
[ft_id
].styling
[5]);
3040 get_keyfile_style(config
, config_home
, "charactereol", &style_sets
[ft_id
].styling
[6]);
3041 get_keyfile_style(config
, config_home
, "string", &style_sets
[ft_id
].styling
[7]);
3042 get_keyfile_style(config
, config_home
, "stringeol", &style_sets
[ft_id
].styling
[8]);
3043 get_keyfile_style(config
, config_home
, "label", &style_sets
[ft_id
].styling
[9]);
3044 get_keyfile_style(config
, config_home
, "commentline", &style_sets
[ft_id
].styling
[10]);
3045 get_keyfile_style(config
, config_home
, "illegal", &style_sets
[ft_id
].styling
[11]);
3047 style_sets
[ft_id
].keywords
= g_new(gchar
*, 2);
3048 get_keyfile_keywords(config
, config_home
, "primary", ft_id
, 0);
3049 style_sets
[ft_id
].keywords
[1] = NULL
;
3053 static void styleset_ada(ScintillaObject
*sci
, gint ft_id
)
3055 apply_filetype_properties(sci
, SCLEX_ADA
, ft_id
);
3057 sci_set_keywords(sci
, 0, style_sets
[ft_id
].keywords
[0]);
3059 set_sci_style(sci
, STYLE_DEFAULT
, ft_id
, 0);
3060 set_sci_style(sci
, SCE_ADA_DEFAULT
, ft_id
, 0);
3061 set_sci_style(sci
, SCE_ADA_WORD
, ft_id
, 1);
3062 set_sci_style(sci
, SCE_ADA_IDENTIFIER
, ft_id
, 2);
3063 set_sci_style(sci
, SCE_ADA_NUMBER
, ft_id
, 3);
3064 set_sci_style(sci
, SCE_ADA_DELIMITER
, ft_id
, 4);
3065 set_sci_style(sci
, SCE_ADA_CHARACTER
, ft_id
, 5);
3066 set_sci_style(sci
, SCE_ADA_CHARACTEREOL
, ft_id
, 6);
3067 set_sci_style(sci
, SCE_ADA_STRING
, ft_id
, 7);
3068 set_sci_style(sci
, SCE_ADA_STRINGEOL
, ft_id
, 8);
3069 set_sci_style(sci
, SCE_ADA_LABEL
, ft_id
, 9);
3070 set_sci_style(sci
, SCE_ADA_COMMENTLINE
, ft_id
, 10);
3071 set_sci_style(sci
, SCE_ADA_ILLEGAL
, ft_id
, 11);
3075 static void get_key_values(GKeyFile
*config
, const gchar
*group
, gchar
**keys
, gchar
**values
)
3079 gchar
*str
= g_key_file_get_string(config
, group
, *keys
, NULL
);
3082 setptr(*values
, str
);
3090 #define foreach_strv(strptr, strv) \
3091 for (strptr = strv; *strptr; strptr++)
3093 static void read_properties(GeanyFiletype
*ft
, GKeyFile
*config
, GKeyFile
*configh
)
3095 gchar group
[] = "lexer_properties";
3096 gchar
**keys
= g_key_file_get_keys(config
, group
, NULL
, NULL
);
3097 gchar
**keysh
= g_key_file_get_keys(configh
, group
, NULL
, NULL
);
3099 /* move/merge keysh into keys */
3104 gchar
**strv
= g_new0(gchar
*, g_strv_length(keys
) + g_strv_length(keysh
) + 1);
3105 gchar
**read
, **write
= strv
;
3107 /* may have same key in each, but home will override so it's OK */
3108 foreach_strv(read
, keys
)
3110 foreach_strv(read
, keysh
)
3119 gchar
**values
= g_new0(gchar
*, g_strv_length(keys
) + 1);
3121 style_sets
[ft
->id
].property_keys
= keys
;
3122 style_sets
[ft
->id
].property_values
= values
;
3124 get_key_values(config
, group
, keys
, values
);
3125 get_key_values(configh
, group
, keys
, values
);
3130 static gint
get_lexer_filetype(GeanyFiletype
*ft
)
3132 ft
= NVL(ft
->lexer_filetype
, ft
);
3137 /* lang_name is the name used for the styleset_foo_init function, e.g. foo. */
3138 #define init_styleset_case(ft_id, init_styleset_func) \
3140 init_styleset_func(filetype_idx, config, configh); \
3143 /* Called by filetypes_load_config(). */
3144 void highlighting_init_styles(gint filetype_idx
, GKeyFile
*config
, GKeyFile
*configh
)
3146 GeanyFiletype
*ft
= filetypes
[filetype_idx
];
3147 gint lexer_id
= get_lexer_filetype(ft
);
3150 style_sets
= g_new0(StyleSet
, filetypes_array
->len
);
3152 /* Clear old information if necessary - e.g. when reloading config */
3153 free_styleset(filetype_idx
);
3155 read_properties(ft
, config
, configh
);
3157 /* None filetype handled specially */
3158 if (filetype_idx
== GEANY_FILETYPES_NONE
)
3160 styleset_common_init(GEANY_FILETYPES_NONE
, config
, configh
);
3163 /* All stylesets depend on filetypes.common */
3164 filetypes_load_config(GEANY_FILETYPES_NONE
, FALSE
);
3168 init_styleset_case(GEANY_FILETYPES_ADA
, styleset_ada_init
);
3169 init_styleset_case(GEANY_FILETYPES_ASM
, styleset_asm_init
);
3170 init_styleset_case(GEANY_FILETYPES_BASIC
, styleset_basic_init
);
3171 init_styleset_case(GEANY_FILETYPES_C
, styleset_c_init
);
3172 init_styleset_case(GEANY_FILETYPES_CAML
, styleset_caml_init
);
3173 init_styleset_case(GEANY_FILETYPES_CMAKE
, styleset_cmake_init
);
3174 init_styleset_case(GEANY_FILETYPES_CONF
, styleset_conf_init
);
3175 init_styleset_case(GEANY_FILETYPES_CSS
, styleset_css_init
);
3176 init_styleset_case(GEANY_FILETYPES_D
, styleset_d_init
);
3177 init_styleset_case(GEANY_FILETYPES_DIFF
, styleset_diff_init
);
3178 init_styleset_case(GEANY_FILETYPES_DOCBOOK
, styleset_docbook_init
);
3179 init_styleset_case(GEANY_FILETYPES_FERITE
, styleset_ferite_init
);
3180 init_styleset_case(GEANY_FILETYPES_F77
, styleset_f77_init
);
3181 init_styleset_case(GEANY_FILETYPES_FORTRAN
, styleset_fortran_init
);
3182 init_styleset_case(GEANY_FILETYPES_HASKELL
, styleset_haskell_init
);
3183 init_styleset_case(GEANY_FILETYPES_HAXE
, styleset_haxe_init
);
3184 init_styleset_case(GEANY_FILETYPES_AS
, styleset_actionscript_init
);
3185 init_styleset_case(GEANY_FILETYPES_HTML
, styleset_html_init
);
3186 init_styleset_case(GEANY_FILETYPES_JAVA
, styleset_java_init
);
3187 init_styleset_case(GEANY_FILETYPES_JS
, styleset_js_init
);
3188 init_styleset_case(GEANY_FILETYPES_LATEX
, styleset_latex_init
);
3189 init_styleset_case(GEANY_FILETYPES_LUA
, styleset_lua_init
);
3190 init_styleset_case(GEANY_FILETYPES_MAKE
, styleset_makefile_init
);
3191 init_styleset_case(GEANY_FILETYPES_MATLAB
, styleset_matlab_init
);
3192 init_styleset_case(GEANY_FILETYPES_MARKDOWN
, styleset_markdown_init
);
3193 init_styleset_case(GEANY_FILETYPES_NSIS
, styleset_nsis_init
);
3194 init_styleset_case(GEANY_FILETYPES_PASCAL
, styleset_pascal_init
);
3195 init_styleset_case(GEANY_FILETYPES_PERL
, styleset_perl_init
);
3196 init_styleset_case(GEANY_FILETYPES_PHP
, styleset_php_init
);
3197 init_styleset_case(GEANY_FILETYPES_PO
, styleset_po_init
);
3198 init_styleset_case(GEANY_FILETYPES_PYTHON
, styleset_python_init
);
3199 init_styleset_case(GEANY_FILETYPES_R
, styleset_r_init
);
3200 init_styleset_case(GEANY_FILETYPES_RUBY
, styleset_ruby_init
);
3201 init_styleset_case(GEANY_FILETYPES_SH
, styleset_sh_init
);
3202 init_styleset_case(GEANY_FILETYPES_SQL
, styleset_sql_init
);
3203 init_styleset_case(GEANY_FILETYPES_TCL
, styleset_tcl_init
);
3204 init_styleset_case(GEANY_FILETYPES_VHDL
, styleset_vhdl_init
);
3205 init_styleset_case(GEANY_FILETYPES_VERILOG
, styleset_verilog_init
);
3206 init_styleset_case(GEANY_FILETYPES_XML
, styleset_markup_init
);
3207 init_styleset_case(GEANY_FILETYPES_YAML
, styleset_yaml_init
);
3209 if (ft
->lexer_filetype
)
3210 geany_debug("Filetype %s has a recursive lexer_filetype %s set!",
3211 ft
->name
, ft
->lexer_filetype
->name
);
3214 /* should be done in filetypes.c really: */
3215 get_keyfile_wordchars(config
, configh
, &style_sets
[filetype_idx
].wordchars
);
3219 /* lang_name is the name used for the styleset_foo function, e.g. foo. */
3220 #define styleset_case(ft_id, styleset_func) \
3222 styleset_func(sci, ft->id); \
3225 /** Sets up highlighting and other visual settings.
3226 * @param sci Scintilla widget.
3227 * @param ft Filetype settings to use. */
3228 void highlighting_set_styles(ScintillaObject
*sci
, GeanyFiletype
*ft
)
3230 gint lexer_id
= get_lexer_filetype(ft
);
3232 filetypes_load_config(ft
->id
, FALSE
); /* load filetypes.ext */
3236 styleset_case(GEANY_FILETYPES_ADA
, styleset_ada
);
3237 styleset_case(GEANY_FILETYPES_ASM
, styleset_asm
);
3238 styleset_case(GEANY_FILETYPES_BASIC
, styleset_basic
);
3239 styleset_case(GEANY_FILETYPES_C
, styleset_c
);
3240 styleset_case(GEANY_FILETYPES_CAML
, styleset_caml
);
3241 styleset_case(GEANY_FILETYPES_CMAKE
, styleset_cmake
);
3242 styleset_case(GEANY_FILETYPES_CONF
, styleset_conf
);
3243 styleset_case(GEANY_FILETYPES_CSS
, styleset_css
);
3244 styleset_case(GEANY_FILETYPES_D
, styleset_d
);
3245 styleset_case(GEANY_FILETYPES_DIFF
, styleset_diff
);
3246 styleset_case(GEANY_FILETYPES_DOCBOOK
, styleset_docbook
);
3247 styleset_case(GEANY_FILETYPES_FERITE
, styleset_ferite
);
3248 styleset_case(GEANY_FILETYPES_F77
, styleset_f77
);
3249 styleset_case(GEANY_FILETYPES_FORTRAN
, styleset_fortran
);
3250 styleset_case(GEANY_FILETYPES_HASKELL
, styleset_haskell
);
3251 styleset_case(GEANY_FILETYPES_HAXE
, styleset_haxe
);
3252 styleset_case(GEANY_FILETYPES_AS
, styleset_actionscript
);
3253 styleset_case(GEANY_FILETYPES_HTML
, styleset_html
);
3254 styleset_case(GEANY_FILETYPES_JAVA
, styleset_java
);
3255 styleset_case(GEANY_FILETYPES_JS
, styleset_js
);
3256 styleset_case(GEANY_FILETYPES_LATEX
, styleset_latex
);
3257 styleset_case(GEANY_FILETYPES_LUA
, styleset_lua
);
3258 styleset_case(GEANY_FILETYPES_MAKE
, styleset_makefile
);
3259 styleset_case(GEANY_FILETYPES_MARKDOWN
, styleset_markdown
);
3260 styleset_case(GEANY_FILETYPES_MATLAB
, styleset_matlab
);
3261 styleset_case(GEANY_FILETYPES_NSIS
, styleset_nsis
);
3262 styleset_case(GEANY_FILETYPES_PASCAL
, styleset_pascal
);
3263 styleset_case(GEANY_FILETYPES_PERL
, styleset_perl
);
3264 styleset_case(GEANY_FILETYPES_PHP
, styleset_php
);
3265 styleset_case(GEANY_FILETYPES_PO
, styleset_po
);
3266 styleset_case(GEANY_FILETYPES_PYTHON
, styleset_python
);
3267 styleset_case(GEANY_FILETYPES_R
, styleset_r
);
3268 styleset_case(GEANY_FILETYPES_RUBY
, styleset_ruby
);
3269 styleset_case(GEANY_FILETYPES_SH
, styleset_sh
);
3270 styleset_case(GEANY_FILETYPES_SQL
, styleset_sql
);
3271 styleset_case(GEANY_FILETYPES_TCL
, styleset_tcl
);
3272 styleset_case(GEANY_FILETYPES_VHDL
, styleset_vhdl
);
3273 styleset_case(GEANY_FILETYPES_VERILOG
, styleset_verilog
);
3274 styleset_case(GEANY_FILETYPES_XML
, styleset_xml
);
3275 styleset_case(GEANY_FILETYPES_YAML
, styleset_yaml
);
3276 case GEANY_FILETYPES_NONE
:
3278 styleset_default(sci
, ft
->id
);
3280 /* [lexer_properties] settings */
3281 if (style_sets
[ft
->id
].property_keys
)
3283 gchar
**prop
= style_sets
[ft
->id
].property_keys
;
3284 gchar
**val
= style_sets
[ft
->id
].property_values
;
3288 sci_set_property(sci
, *prop
, *val
);
3296 /** Retrieves a style @a style_id for the filetype @a ft_id.
3297 * If the style was not already initialised
3298 * (e.g. by by opening a file of this type), it will be initialised. The returned pointer is
3299 * owned by Geany and must not be freed.
3300 * @param ft_id Filetype ID, e.g. @c GEANY_FILETYPES_DIFF.
3301 * @param style_id A Scintilla lexer style, e.g. @c SCE_DIFF_ADDED. See scintilla/include/SciLexer.h.
3302 * @return A pointer to the style struct.
3303 * @see Scintilla messages @c SCI_STYLEGETFORE, etc, for use with scintilla_send_message(). */
3304 const GeanyLexerStyle
*highlighting_get_style(gint ft_id
, gint style_id
)
3306 if (ft_id
< 0 || ft_id
>= (gint
)filetypes_array
->len
)
3309 /* ensure filetype loaded */
3310 filetypes_load_config(ft_id
, FALSE
);
3312 /* TODO: style_id might not be the real array index (Scintilla styles are not always synced
3313 * with array indices) */
3314 return get_style(ft_id
, style_id
);
3319 on_color_scheme_clicked(GtkMenuItem
*menuitem
, gpointer user_data
)
3324 /* check if default item */
3327 setptr(editor_prefs
.color_scheme
, NULL
);
3331 fname
= ui_menu_item_get_text(menuitem
);
3332 setptr(fname
, utils_get_locale_from_utf8(fname
));
3334 /* fname is just the basename from the menu item, so prepend the custom files path */
3335 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->configdir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
);
3336 if (!g_file_test(path
, G_FILE_TEST_EXISTS
))
3338 /* try the system path */
3340 path
= g_build_path(G_DIR_SEPARATOR_S
, app
->datadir
, GEANY_COLORSCHEMES_SUBDIR
, fname
, NULL
);
3342 if (g_file_test(path
, G_FILE_TEST_EXISTS
))
3344 setptr(editor_prefs
.color_scheme
, fname
);
3350 setptr(fname
, utils_get_utf8_from_locale(fname
));
3351 ui_set_statusbar(TRUE
, _("Could not find file '%s'."), fname
);
3358 static void add_color_scheme_item(const gchar
*fname
, GtkWidget
*menu
)
3360 GtkWidget
*tmp_button
;
3363 g_return_if_fail(fname
);
3364 g_return_if_fail(menu
);
3366 label
= utils_get_utf8_from_locale(fname
);
3368 tmp_button
= gtk_menu_item_new_with_label(label
);
3369 gtk_widget_show(tmp_button
);
3370 gtk_container_add(GTK_CONTAINER(menu
), tmp_button
);
3371 g_signal_connect(tmp_button
, "activate", G_CALLBACK(on_color_scheme_clicked
), NULL
);
3377 static gboolean
add_color_scheme_items(GtkWidget
*menu
)
3379 GSList
*list
= utils_get_config_files(GEANY_COLORSCHEMES_SUBDIR
);
3382 foreach_slist(node
, list
)
3384 gchar
*fname
= node
->data
;
3386 if (g_str_has_suffix(fname
, ".conf"))
3387 add_color_scheme_item(fname
, menu
);
3391 return list
!= NULL
;
3395 static void create_color_scheme_menu(void)
3397 GtkWidget
*item
, *menu
, *root
;
3399 menu
= ui_lookup_widget(main_widgets
.window
, "menu_view_editor1_menu");
3400 item
= ui_image_menu_item_new(GTK_STOCK_SELECT_COLOR
, _("_Color Schemes"));
3401 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu
), item
);
3404 menu
= gtk_menu_new();
3405 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item
), menu
);
3407 item
= gtk_menu_item_new_with_mnemonic(_("_Default"));
3408 gtk_container_add(GTK_CONTAINER(menu
), item
);
3409 g_signal_connect(item
, "activate", G_CALLBACK(on_color_scheme_clicked
), GINT_TO_POINTER(TRUE
));
3411 /* for now we don't show the color scheme menu unless there are files */
3412 if (add_color_scheme_items(menu
))
3413 gtk_widget_show_all(root
);
3417 void highlighting_init(void)
3419 create_color_scheme_menu();