2
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>
4
* Copyright 2005-2011 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
5
* Copyright 2006-2011 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
7
7
* This program is free software; you can redistribute it and/or modify
8
8
* it under the terms of the GNU General Public License as published by
18
18
* along with this program; if not, write to the Free Software
19
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21
* $Id: highlighting.c 5409 2010-11-16 15:07:40Z ntrel $
21
* $Id: highlighting.c 5863 2011-06-26 21:47:28Z colombanw $
935
937
SCE_C_GLOBALCLASS
938
apply_filetype_properties(sci, SCLEX_CPP, ft_id);
940
apply_filetype_properties(sci, lexer, ft_id);
939
941
apply_style_entries(sci, ft_id, styles, G_N_ELEMENTS(styles));
941
943
/* Disable explicit //{ folding as it can seem like a bug */
958
960
static void styleset_c(ScintillaObject *sci, gint ft_id)
960
styleset_c_like(sci, ft_id);
962
styleset_c_like(sci, ft_id, SCLEX_CPP);
962
964
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
963
965
/* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
1529
1531
static void styleset_java(ScintillaObject *sci, gint ft_id)
1531
styleset_c_like(sci, ft_id);
1533
styleset_c_like(sci, ft_id, SCLEX_CPP);
1533
1535
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
1534
1536
/* SCI_SETKEYWORDS = 1 - secondary + global tags file types, see below */
1745
static void styleset_cobol_init(gint ft_id, GKeyFile *config, GKeyFile *config_home)
1747
styleset_c_like_init(config, config_home, ft_id);
1749
style_sets[ft_id].keywords = g_new(gchar*, 4);
1750
get_keyfile_keywords(config, config_home, "primary", ft_id, 0);
1751
get_keyfile_keywords(config, config_home, "secondary", ft_id, 1);
1752
get_keyfile_keywords(config, config_home, "extended_keywords", ft_id, 2);
1753
style_sets[ft_id].keywords[3] = NULL;
1757
static void styleset_cobol(ScintillaObject *sci, gint ft_id)
1759
styleset_c_like(sci, ft_id, SCLEX_COBOL);
1761
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
1762
sci_set_keywords(sci, 1, style_sets[ft_id].keywords[1]);
1763
sci_set_keywords(sci, 2, style_sets[ft_id].keywords[2]);
1743
1767
static void styleset_r_init(gint ft_id, GKeyFile *config, GKeyFile *config_home)
1745
1769
new_styleset(ft_id, 12);
2905
2929
static void styleset_ferite(ScintillaObject *sci, gint ft_id)
2907
styleset_c_like(sci, ft_id);
2931
styleset_c_like(sci, ft_id, SCLEX_CPP);
2909
2933
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
2910
2934
sci_set_keywords(sci, 1, style_sets[ft_id].keywords[1]);
3074
3098
styleset_c_like_init(config, config_home, ft_id);
3076
style_sets[ft_id].keywords = g_new(gchar*, 2);
3100
style_sets[ft_id].keywords = g_new(gchar*, 3);
3077
3101
get_keyfile_keywords(config, config_home, "primary", ft_id, 0);
3078
style_sets[ft_id].keywords[1] = NULL;
3102
get_keyfile_keywords(config, config_home, "secondary", ft_id, 1);
3103
style_sets[ft_id].keywords[2] = NULL;
3082
3107
static void styleset_js(ScintillaObject *sci, gint ft_id)
3084
styleset_c_like(sci, ft_id);
3109
styleset_c_like(sci, ft_id, SCLEX_CPP);
3086
3111
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
3112
sci_set_keywords(sci, 1, style_sets[ft_id].keywords[1]);
3242
3268
static void styleset_actionscript(ScintillaObject *sci, gint ft_id)
3244
styleset_c_like(sci, ft_id);
3270
styleset_c_like(sci, ft_id, SCLEX_CPP);
3246
3272
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
3247
3273
sci_set_keywords(sci, 1, style_sets[ft_id].keywords[2]);
3264
3290
static void styleset_haxe(ScintillaObject *sci, gint ft_id)
3266
styleset_c_like(sci, ft_id);
3292
styleset_c_like(sci, ft_id, SCLEX_CPP);
3268
3294
sci_set_keywords(sci, 0, style_sets[ft_id].keywords[0]);
3269
3295
sci_set_keywords(sci, 1, style_sets[ft_id].keywords[1]);
3403
3429
init_styleset_case(GEANY_FILETYPES_C, styleset_c_init);
3404
3430
init_styleset_case(GEANY_FILETYPES_CAML, styleset_caml_init);
3405
3431
init_styleset_case(GEANY_FILETYPES_CMAKE, styleset_cmake_init);
3432
init_styleset_case(GEANY_FILETYPES_COBOL, styleset_cobol_init);
3406
3433
init_styleset_case(GEANY_FILETYPES_CONF, styleset_conf_init);
3407
3434
init_styleset_case(GEANY_FILETYPES_CSS, styleset_css_init);
3408
3435
init_styleset_case(GEANY_FILETYPES_D, styleset_d_init);
3475
3502
styleset_case(GEANY_FILETYPES_C, styleset_c);
3476
3503
styleset_case(GEANY_FILETYPES_CAML, styleset_caml);
3477
3504
styleset_case(GEANY_FILETYPES_CMAKE, styleset_cmake);
3505
styleset_case(GEANY_FILETYPES_COBOL, styleset_cobol);
3478
3506
styleset_case(GEANY_FILETYPES_CONF, styleset_conf);
3479
3507
styleset_case(GEANY_FILETYPES_CSS, styleset_css);
3480
3508
styleset_case(GEANY_FILETYPES_D, styleset_d);
3572
3600
filetypes_reload();
3575
fname = ui_menu_item_get_text(menuitem);
3603
fname = g_strdup(g_object_get_data(G_OBJECT(menuitem), "colorscheme_file"));
3576
3604
setptr(fname, utils_get_locale_from_utf8(fname));
3578
3606
/* fname is just the basename from the menu item, so prepend the custom files path */
3630
static gchar *utils_get_setting_locale_string(GKeyFile *keyfile,
3631
const gchar *group, const gchar *key, const gchar *default_value)
3633
gchar *result = g_key_file_get_locale_string(keyfile, group, key, NULL, NULL);
3635
return NVL(result, g_strdup(default_value));
3602
3639
static void add_color_scheme_item(GtkWidget *menu, const gchar *fname)
3604
3641
static GSList *group = NULL;
3605
3642
GtkWidget *item;
3609
gchar *label = utils_get_utf8_from_locale(fname);
3611
item = gtk_radio_menu_item_new_with_label(group, label);
3615
3646
item = gtk_radio_menu_item_new_with_mnemonic(group, _("_Default"));
3650
GKeyFile *hkeyfile, *skeyfile;
3651
gchar *path, *theme_name, *tooltip;
3652
gchar *theme_fn = utils_get_utf8_from_locale(fname);
3654
path = utils_build_path(app->configdir, GEANY_COLORSCHEMES_SUBDIR, fname, NULL);
3655
hkeyfile = utils_key_file_new(path);
3656
setptr(path, utils_build_path(app->datadir, GEANY_COLORSCHEMES_SUBDIR, fname, NULL));
3657
skeyfile = utils_key_file_new(path);
3659
theme_name = utils_get_setting(locale_string, hkeyfile, skeyfile, "theme_info", "name", theme_fn);
3660
item = gtk_radio_menu_item_new_with_label(group, theme_name);
3661
g_object_set_data_full(G_OBJECT(item), "colorscheme_file", theme_fn, g_free);
3663
tooltip = utils_get_setting(locale_string, hkeyfile, skeyfile, "theme_info", "description", NULL);
3664
if (tooltip != NULL)
3666
gtk_widget_set_tooltip_text(item, tooltip);
3671
g_key_file_free(hkeyfile);
3672
g_key_file_free(skeyfile);
3617
3675
group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(item));
3618
3676
if (utils_str_equal(editor_prefs.color_scheme, fname))
3687
3745
case SCLEX_CPP:
3688
3746
return (style == SCE_C_CHARACTER ||
3689
3747
style == SCE_C_STRING ||
3690
style == SCE_C_STRINGEOL);
3748
style == SCE_C_STRINGEOL ||
3749
style == SCE_C_STRINGRAW ||
3750
style == SCE_C_VERBATIM ||
3751
style == SCE_C_TRIPLEVERBATIM);
3692
3753
case SCLEX_PASCAL:
3693
3754
return (style == SCE_PAS_CHARACTER ||