50#include <glib/gprintf.h>
53#define GEANY_COLORSCHEMES_SUBDIR "colorschemes"
56#define GEANY_WHITESPACE_CHARS " \t" "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~"
137 set->count = styling_count;
147 style_ptr->
count = 0;
162 const gchar *key, guint ft_id, guint
pos)
170 const gchar *default_wordchars)
173 "settings",
"wordchars", default_wordchars);
181 const gchar *bold =
NULL;
182 const gchar *italic =
NULL;
184 g_return_val_if_fail(named_style, FALSE);
190 bold =
strstr(comma,
",bold");
191 italic =
strstr(comma,
",italic");
219 gchar *named_color =
NULL;
221 g_return_if_fail(clr !=
NULL);
223 if (G_UNLIKELY(
EMPTY(str)))
226 named_color = g_key_file_get_string(kf,
"named_colors", str,
NULL);
245 g_return_if_fail(default_style);
246 g_return_if_fail(style);
248 *style = *default_style;
253 len = g_strv_length(
list);
258 gchar **items = g_strsplit(
list[0],
",", 0);
261 if (g_strv_length(items) > 0)
266 geany_debug(
"Unable to read named style '%s'", items[0]);
270 else if (strchr(
list[0],
',') !=
NULL)
304 g_return_if_fail(config);
305 g_return_if_fail(configh);
306 g_return_if_fail(key_name);
307 g_return_if_fail(style);
309 list = g_key_file_get_string_list(configh,
"styling", key_name, &len,
NULL);
312 list = g_key_file_get_string_list(config,
"styling", key_name, &len,
NULL);
325 gint v = strtol(int_str, &end, 10);
334 const gchar *key, gint fdefault_val, gint sdefault_val,
341 g_return_if_fail(config);
342 g_return_if_fail(configh);
343 g_return_if_fail(section);
344 g_return_if_fail(key);
346 list = g_key_file_get_string_list(configh, section, key, &len,
NULL);
348 list = g_key_file_get_string_list(config, section, key, &len,
NULL);
369 gint fdefault_val, gint sdefault_val,
370 gint *first, gint *second)
374 get_keyfile_int(config, configh, section, key, fdefault_val, sdefault_val, &tmp_style);
385 return 0xffffff - icolour;
393 g_assert(ft_id < filetypes_array->len);
397 g_assert(styling_index <
GCS_MAX);
404 g_assert(styling_index < set->
count);
405 return &
set->styling[styling_index];
410static void set_sci_style(ScintillaObject *
sci, guint style, guint ft_id, guint styling_index)
445 const gchar
group[] =
"named_styles";
449 list = g_key_file_get_string_list(config,
group, key, &len,
NULL);
451 if (
list && len >= 1)
464 const gchar
group[] =
"named_styles";
465 gchar **keys = g_key_file_get_keys(config,
group,
NULL,
NULL);
473 const gchar *key = *
ptr;
479 if (!g_str_equal(key,
"default"))
490 GKeyFile *config = g_key_file_new();
492 g_key_file_load_from_file(config,
filename, G_KEY_FILE_KEEP_COMMENTS,
NULL);
500 gboolean free_kf = FALSE;
505 named_style_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
509 gchar *path, *path_home;
514 if (g_file_test(path, G_FILE_TEST_EXISTS) || g_file_test(path_home, G_FILE_TEST_EXISTS))
536 g_key_file_free(config);
537 g_key_file_free(config_home);
779 geany_debug(
"selection style is set to invisible - ignoring!");
816 if (G_UNLIKELY(s ==
NULL))
817 s = g_string_sized_new(200);
819 g_string_append_c(s,
' ');
821 g_string_append(s, user_words);
824 g_string_free(s, TRUE);
829 const HLStyle *styles, gsize n_styles,
830 const HLKeyword *keywords, gsize n_keywords)
858 const HLStyle *styles, gsize n_styles,
859 const HLKeyword *keywords, gsize n_keywords,
860 const HLProperty *properties, gsize n_properties)
877 if (styles[i].fill_eol)
886 if (keywords[i].
merge)
914 gchar *str = g_key_file_get_string(config,
group, *keys,
NULL);
927 gchar
group[] =
"lexer_properties";
929 gchar **keysh = g_key_file_get_keys(configh,
group,
NULL,
NULL);
942 gchar **values = g_new0(gchar*, g_strv_length(keys) + 1);
960#define init_styleset_case(LANG_NAME) \
961 case (GEANY_FILETYPES_##LANG_NAME): \
962 styleset_init_from_mapping(filetype_idx, config, configh, \
963 highlighting_styles_##LANG_NAME, \
964 HL_N_ENTRIES(highlighting_styles_##LANG_NAME), \
965 highlighting_keywords_##LANG_NAME, \
966 HL_N_ENTRIES(highlighting_keywords_##LANG_NAME)); \
986 "styling",
"default",
"default");
1058 geany_debug(
"Filetype %s has a recursive lexer_filetype %s set!",
1068#define styleset_case(LANG_NAME) \
1069 case (GEANY_FILETYPES_##LANG_NAME): \
1070 styleset_from_mapping(sci, ft->id, highlighting_lexer_##LANG_NAME, \
1071 highlighting_styles_##LANG_NAME, \
1072 HL_N_ENTRIES(highlighting_styles_##LANG_NAME), \
1073 highlighting_keywords_##LANG_NAME, \
1074 HL_N_ENTRIES(highlighting_keywords_##LANG_NAME), \
1075 highlighting_properties_##LANG_NAME, \
1076 HL_N_ENTRIES(highlighting_properties_##LANG_NAME)); \
1177 g_return_val_if_fail(ft_id >= 0 && (guint) ft_id < filetypes_array->len,
NULL);
1178 g_return_val_if_fail(style_id >= 0,
NULL);
1185 return get_style((guint) ft_id, (guint) style_id);
1198 GtkTreeModel *model;
1203 if (!gtk_tree_selection_get_selected(treesel, &model, &iter))
1205 gtk_tree_model_get(model, &iter,
SCHEME_FILE, &fname, -1);
1218 if (!g_file_test(path, G_FILE_TEST_EXISTS))
1224 if (g_file_test(path, G_FILE_TEST_EXISTS))
1241 const gchar *
group,
const gchar *key,
const gchar *default_value)
1243 gchar *result = g_key_file_get_locale_string(keyfile,
group, key,
NULL,
NULL);
1245 return FALLBACK(result, g_strdup(default_value));
1250 gchar *
name, gchar *desc,
const gchar *fn, GtkTreeIter *current_iter)
1256 name = g_markup_escape_text(
name, -1);
1257 desc = g_markup_escape_text(desc, -1);
1258 markup = g_strdup_printf(
"<big><b>%s</b></big>\n%s",
name, desc);
1262 gtk_list_store_append(store, &iter);
1271 *current_iter = iter;
1277 GKeyFile *hkeyfile, *skeyfile;
1278 gchar *path, *theme_name, *theme_desc;
1286 theme_name =
utils_get_setting(locale_string, hkeyfile, skeyfile,
"theme_info",
"name", theme_fn);
1287 theme_desc =
utils_get_setting(locale_string, hkeyfile, skeyfile,
"theme_info",
"description",
NULL);
1294 g_key_file_free(hkeyfile);
1295 g_key_file_free(skeyfile);
1301 GSList *
list, *node;
1308 gchar *fname = node->data;
1310 if (g_str_has_suffix(fname,
".conf"))
1321 gint response, gpointer *dialog_ptr)
1324 gtk_widget_destroy(
dialog);
1332 G_TYPE_STRING, G_TYPE_STRING);
1333 GtkCellRenderer *text_renderer;
1334 GtkTreeViewColumn *column;
1335 GtkTreeSelection *treesel;
1336 GtkTreeIter current_iter;
1338 GtkWidget *vbox, *swin, *tree;
1344 _(
"The current filetype overrides the default style."),
1345 _(
"This may cause color schemes to display incorrectly."));
1347 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1348 g_object_unref(store);
1349 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE);
1350 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
1352 text_renderer = gtk_cell_renderer_text_new();
1353 g_object_set(text_renderer,
"wrap-mode", PANGO_WRAP_WORD,
NULL);
1354 column = gtk_tree_view_column_new_with_attributes(
1356 gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
1360 treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree));
1361 gtk_tree_selection_select_iter(treesel, ¤t_iter);
1362 path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), ¤t_iter);
1363 gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(tree), path,
NULL, FALSE, 0, 0);
1364 gtk_tree_path_free(path);
1369 gtk_widget_destroy(
dialog);
1370 dialog = gtk_dialog_new_with_buttons(
_(
"Color Schemes"),
1372 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
NULL);
1374 gtk_box_set_spacing(GTK_BOX(vbox), 6);
1375 gtk_widget_set_name(
dialog,
"GeanyDialog");
1376 gtk_window_set_default_size(GTK_WINDOW(
dialog),
1379 swin = gtk_scrolled_window_new(
NULL,
NULL);
1380 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(swin), GTK_SHADOW_IN);
1381 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),
1382 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
1384 gtk_box_pack_start(GTK_BOX(vbox), swin, TRUE, TRUE, 0);
static void StyleSet(GtkWidget *w, GtkStyle *, void *)
Interface to the added lexer functions in the SciLexer version of the edit control.
#define SCE_ERLANG_COMMENT_DOC_MACRO
#define SCE_COFFEESCRIPT_CHARACTER
#define SCE_HBA_COMMENTLINE
#define SCE_C_ESCAPESEQUENCE
#define SCE_TCL_COMMENT_BOX
#define SCE_HA_LITERATE_CODEDELIM
#define SCE_HJA_COMMENTLINE
#define SCE_C_HASHQUOTEDSTRING
#define SCE_C_USERLITERAL
#define SCE_HA_COMMENTBLOCK2
#define SCLEX_LITERATEHASKELL
#define SCE_H_SGML_SIMPLESTRING
#define SCE_ABAQUS_COMMENT
#define SCE_HJA_DOUBLESTRING
#define SCE_SH_COMMENTLINE
#define SCE_C_PREPROCESSORCOMMENT
#define SCE_HPHP_HSTRING_VARIABLE
#define SCE_COFFEESCRIPT_COMMENTLINE
#define SCE_ERLANG_COMMENT_MODULE
#define SCE_POWERSHELL_CHARACTER
#define SCE_P_FTRIPLEDOUBLE
#define SCE_HBA_STRINGEOL
#define SCE_ERLANG_STRING
#define SCE_HP_TRIPLEDOUBLE
#define SCE_RUST_LEXERROR
#define SCE_V_COMMENTLINE
#define SCE_POWERSHELL_STRING
#define SCE_SQL_COMMENTDOC
#define SCE_HJ_DOUBLESTRING
#define SCE_HPA_CHARACTER
#define SCE_RUST_COMMENTLINEDOC
#define SCE_HJ_SINGLESTRING
#define SCE_COFFEESCRIPT_REGEX
#define SCE_TCL_COMMENTLINE
#define SCE_SQL_COMMENTLINE
#define SCE_LUA_LITERALSTRING
#define SCE_ADA_CHARACTER
#define SCE_C_PREPROCESSOR
#define SCE_NSIS_STRINGDQ
#define SCE_PL_HERE_DELIM
#define SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT
#define SCE_RB_HERE_DELIM
#define SCE_PO_MSGCTXT_TEXT_EOL
#define SCE_HJ_COMMENTDOC
#define SCE_TCL_BLOCK_COMMENT
#define SCE_C_TRIPLEVERBATIM
#define SCE_ABAQUS_STRING
#define SCE_CSS_SINGLESTRING
#define SCE_RUST_COMMENTBLOCK
#define SCE_HA_LITERATE_COMMENT
#define SCE_HJA_STRINGEOL
#define SCE_D_COMMENTDOCKEYWORDERROR
#define SCE_NSIS_STRINGRQ
#define SCE_HJ_COMMENTLINE
#define SCE_H_SINGLESTRING
#define SCE_HPA_TRIPLEDOUBLE
#define SCE_CAML_COMMENT1
#define SCE_RUST_BYTESTRINGR
#define SCE_LUA_COMMENTDOC
#define SCE_C_PREPROCESSORCOMMENTDOC
#define SCE_HA_PREPROCESSOR
#define SCE_HA_COMMENTLINE
#define SCE_RB_COMMENTLINE
#define SCLEX_COFFEESCRIPT
#define SCE_VHDL_COMMENTLINEBANG
#define SCE_RUST_BYTESTRING
#define SCE_CMAKE_STRINGDQ
#define SCE_LISP_MULTI_COMMENT
#define SCE_P_COMMENTBLOCK
#define SCE_HB_COMMENTLINE
#define SCE_RUST_CHARACTER
#define SCE_CSS_DOUBLESTRING
#define SCE_ADA_STRINGEOL
#define SCE_SQL_COMMENTLINEDOC
#define SCE_PAS_STRINGEOL
#define SCE_POWERSHELL_COMMENTDOCKEYWORD
#define SCE_CAML_COMMENT3
#define SCE_HJA_SINGLESTRING
#define SCE_SQL_COMMENTDOCKEYWORDERROR
#define SCE_COFFEESCRIPT_STRINGEOL
#define SCE_ASM_COMMENTDIRECTIVE
#define SCE_NSIS_STRINGVAR
#define SCE_LUA_STRINGEOL
#define SCE_JULIA_STRINGINTERP
#define SCE_V_COMMENT_WORD
#define SCE_FORTH_COMMENT
#define SCE_HP_COMMENTLINE
#define SCE_NSIS_STRINGLQ
#define SCE_PROPS_COMMENT
#define SCE_C_COMMENTLINE
#define SCE_LISP_STRINGEOL
#define SCE_ADA_CHARACTEREOL
#define SCE_HJA_COMMENTDOC
#define SCE_SQL_COMMENTDOCKEYWORD
#define SCE_HPA_COMMENTLINE
#define SCE_H_SGML_COMMENT
#define SCE_C_COMMENTDOCKEYWORDERROR
#define SCE_CMAKE_STRINGVAR
#define SCE_POWERSHELL_COMMENTSTREAM
#define SCE_H_SGML_DOUBLESTRING
#define SCE_COFFEESCRIPT_VERBOSE_REGEX
#define SCE_ADA_COMMENTLINE
#define SCE_VHDL_STRINGEOL
#define SCE_PO_MSGID_TEXT_EOL
#define SCE_CMAKE_STRINGLQ
#define SCE_ERLANG_COMMENT_FUNCTION
#define SCE_PAS_CHARACTER
#define SCE_HA_COMMENTBLOCK3
#define SCE_D_COMMENTNESTED
#define SCE_NSIS_COMMENTBOX
#define SCE_H_DOUBLESTRING
#define SCE_P_COMMENTLINE
#define SCE_JULIA_COMMAND
#define SCE_RUST_COMMENTBLOCKDOC
#define SCE_PAS_COMMENTLINE
#define SCE_ERLANG_CHARACTER
#define SCE_HPHP_COMMENTLINE
#define SCE_P_TRIPLEDOUBLE
#define SCE_HA_COMMENTBLOCK
#define SCE_CAML_COMMENT2
#define SCE_PO_MSGSTR_TEXT_EOL
#define SCE_TXT2TAGS_COMMENT
#define SCE_JULIA_COMMENT
#define SCE_CMAKE_COMMENT
#define SCE_PO_MSGID_TEXT
#define SCE_FORTH_COMMENT_ML
#define SCE_D_COMMENTDOCKEYWORD
#define SCE_C_COMMENTDOCKEYWORD
#define SCE_MATLAB_STRING
#define SCE_RUST_BYTECHARACTER
#define SCE_MATLAB_DOUBLEQUOTESTRING
#define SCE_HPHP_SIMPLESTRING
#define SCE_V_PREPROCESSOR
#define SCE_PO_PROGRAMMER_COMMENT
#define SCE_LUA_CHARACTER
#define SCE_CMAKE_STRINGRQ
#define SCE_ERLANG_COMMENT
#define SCE_D_COMMENTLINE
#define SCE_RUST_COMMENTLINE
#define SCE_POWERSHELL_COMMENT
#define SCE_ABAQUS_COMMENTBLOCK
#define SCE_JULIA_DOCSTRING
#define SCE_C_COMMENTLINEDOC
#define SCE_COFFEESCRIPT_STRING
#define SCE_V_COMMENTLINEBANG
#define SCE_VHDL_BLOCK_COMMENT
#define SCE_B_COMMENTBLOCK
#define SCE_COFFEESCRIPT_COMMENTBLOCK
#define SCE_ERLANG_COMMENT_DOC
#define SCE_ASM_COMMENTBLOCK
#define SCE_LUA_COMMENTLINE
#define SCE_PL_COMMENTLINE
#define SCE_MATLAB_COMMENT
#define SCE_D_COMMENTLINEDOC
#define SCE_PO_MSGCTXT_TEXT
#define SCE_PO_MSGSTR_TEXT
#define SCI_MARKERSETFORE
#define SC_MARKNUM_FOLDEREND
#define SCI_MARKERSETBACK
#define SC_MARK_TCORNERCURVE
#define INDIC_SQUIGGLEPIXMAP
#define SCI_SETFOLDMARGINCOLOUR
#define SCI_SETCARETWIDTH
#define SCI_SETWHITESPACECHARS
#define SC_MARKNUM_FOLDER
#define SCI_SETWRAPVISUALFLAGS
#define SC_MARKNUM_FOLDERTAIL
#define SCI_SETEXTRAASCENT
#define SCI_SETCARETLINEBACKALPHA
#define SC_MARK_CIRCLEMINUS
#define SC_MARK_ARROWDOWN
#define SCI_SETWRAPSTARTINDENT
#define SC_MARK_CIRCLEMINUSCONNECTED
#define SCI_MARKERSETALPHA
#define SCI_STYLESETITALIC
#define SCI_INDICSETSTYLE
#define SC_MARKNUM_FOLDERMIDTAIL
#define SCI_STYLESETEOLFILLED
#define SCI_CALLTIPSETBACK
#define SC_MARKNUM_FOLDEROPEN
#define SC_MARK_SHORTARROW
#define SCI_SETMARGINMASKN
#define SC_MARK_BOXPLUSCONNECTED
#define SCI_SETWHITESPACEFORE
#define SCI_INDICSETALPHA
#define SCI_SETWRAPVISUALFLAGSLOCATION
#define SCI_SETWHITESPACEBACK
#define SC_MARK_CIRCLEPLUSCONNECTED
#define SC_MARK_LCORNERCURVE
#define SCI_SETEXTRADESCENT
#define SC_MARKNUM_FOLDEROPENMID
#define SCI_STYLECLEARALL
#define SCI_SETCARETLINEBACK
#define SC_MARK_CIRCLEPLUS
#define SC_MARKNUM_FOLDERSUB
#define SCI_SETMARGINTYPEN
#define SC_MARK_BOXMINUSCONNECTED
#define STYLE_INDENTGUIDE
#define SCI_SETWRAPINDENTMODE
#define SCI_SETFOLDMARGINHICOLOUR
#define SCI_SETCARETLINEVISIBLE
#define SCI_CALLTIPSETFORE
#define SCI_SETCARETSTYLE
void dialogs_show_msgbox_with_secondary(GtkMessageType type, const gchar *text, const gchar *secondary)
File related dialogs, miscellaneous dialogs, font dialog.
GeanyDocument * document_get_current(void)
Finds the current document.
Document related actions: new, save, open, etc.
GeanyEditorPrefs editor_prefs
Editor-related functions for GeanyEditor.
#define GEANY_WORDCHARS
Default character set to define which characters should be treated as part of a word.
@ GEANY_INDICATOR_SEARCH
Indicator used to highlight search results in the document.
@ GEANY_INDICATOR_SNIPPET
@ GEANY_INDICATOR_ERROR
Indicator to highlight errors in the document text.
#define filetypes
Wraps GeanyData::filetypes_array so it can be used with C array syntax.
#define GEANY_DEFAULT_DIALOG_HEIGHT
static void styleset_default(ScintillaObject *sci, guint ft_id)
void highlighting_init_styles(guint filetype_idx, GKeyFile *config, GKeyFile *configh)
#define GEANY_COLORSCHEMES_SUBDIR
static guint invert(guint icolour)
static void load_named_styles(GKeyFile *config, GKeyFile *config_home)
static void parse_color(GKeyFile *kf, const gchar *str, gint *clr)
const GeanyLexerStyle * highlighting_get_style(gint ft_id, gint style_id)
Retrieves a style style_id for the filetype ft_id.
gboolean highlighting_is_string_style(gint lexer, gint style)
Checks whether the given style is a string for the given lexer.
static gboolean read_named_style(const gchar *named_style, GeanyLexerStyle *style)
static void get_keyfile_wordchars(GKeyFile *config, GKeyFile *configh, gchar **wordchars, const gchar *default_wordchars)
static void sci_set_property(ScintillaObject *sci, const gchar *name, const gchar *value)
static void get_keyfile_int(GKeyFile *config, GKeyFile *configh, const gchar *section, const gchar *key, gint fdefault_val, gint sdefault_val, GeanyLexerStyle *style)
static void new_styleset(guint file_type_id, gsize styling_count)
static struct @94 common_style_set
static void set_character_classes(ScintillaObject *sci, guint ft_id)
static void add_named_style(GKeyFile *config, const gchar *key)
static gchar * whitespace_chars
static StyleSet * style_sets
#define init_styleset_case(LANG_NAME)
static void free_styleset(guint file_type_id)
static void parse_keyfile_style(GKeyFile *kf, gchar **list, const GeanyLexerStyle *default_style, GeanyLexerStyle *style)
gboolean highlighting_is_code_style(gint lexer, gint style)
Checks whether the given style is normal code (not string, comment, preprocessor, etc).
static void styleset_common_init(GKeyFile *config, GKeyFile *config_home)
static void styleset_common(ScintillaObject *sci, guint ft_id)
static GeanyLexerStyle gsd_default
void highlighting_show_color_scheme_dialog(void)
static guint get_lexer_filetype(GeanyFiletype *ft)
static GeanyLexerStyle * get_style(guint ft_id, guint styling_index)
static void merge_type_keywords(ScintillaObject *sci, guint ft_id, guint keyword_idx)
static void get_key_values(GKeyFile *config, const gchar *group, gchar **keys, gchar **values)
static void styleset_init_from_mapping(guint ft_id, GKeyFile *config, GKeyFile *config_home, const HLStyle *styles, gsize n_styles, const HLKeyword *keywords, gsize n_keywords)
static gchar * utils_get_setting_locale_string(GKeyFile *keyfile, const gchar *group, const gchar *key, const gchar *default_value)
@ GCS_FOLD_SYMBOL_HIGHLIGHT
@ GCS_MARKER_TRANSLUCENCY
static void on_color_scheme_changed(GtkTreeSelection *treesel, gpointer dummy)
static void set_sci_style(ScintillaObject *sci, guint style, guint ft_id, guint styling_index)
static void get_keyfile_style(GKeyFile *config, GKeyFile *configh, const gchar *key_name, GeanyLexerStyle *style)
static void convert_int(const gchar *int_str, gint *val)
static void read_properties(GeanyFiletype *ft, GKeyFile *config, GKeyFile *configh)
static void get_keyfile_ints(GKeyFile *config, GKeyFile *configh, const gchar *section, const gchar *key, gint fdefault_val, gint sdefault_val, gint *first, gint *second)
static GKeyFile * utils_key_file_new(const gchar *filename)
#define GEANY_WHITESPACE_CHARS
static void add_color_scheme_file(GtkListStore *store, const gchar *fname, GtkTreeIter *current_iter)
void highlighting_set_styles(ScintillaObject *sci, GeanyFiletype *ft)
Sets up highlighting and other visual settings.
static gchar * get_keyfile_whitespace_chars(GKeyFile *config, GKeyFile *configh)
static void on_color_scheme_dialog_response(GtkWidget *dialog, gint response, gpointer *dialog_ptr)
static GHashTable * named_style_hash
static void styleset_from_mapping(ScintillaObject *sci, guint ft_id, guint lexer, const HLStyle *styles, gsize n_styles, const HLKeyword *keywords, gsize n_keywords, const HLProperty *properties, gsize n_properties)
static void get_keyfile_keywords(GKeyFile *config, GKeyFile *configh, const gchar *key, guint ft_id, guint pos)
static gboolean add_color_scheme_items(GtkListStore *store, GtkTreeIter *current_iter)
static void add_color_scheme_item(GtkListStore *store, gchar *name, gchar *desc, const gchar *fn, GtkTreeIter *current_iter)
void highlighting_free_styles(void)
#define styleset_case(LANG_NAME)
gboolean highlighting_is_comment_style(gint lexer, gint style)
Checks whether the given style is a comment for the given lexer.
GeanyLexerStyle styling[GCS_MAX]
static void get_named_styles(GKeyFile *config)
Syntax highlighting for the different filetypes, using the Scintilla lexers.
void geany_debug(gchar const *format,...)
char * strstr(const char *str, const char *substr)
void sci_set_keywords(ScintillaObject *sci, guint k, const gchar *text)
void sci_set_lexer(ScintillaObject *sci, guint lexer_id)
Wrapper functions for the Scintilla editor widget SCI_* messages.
void filetypes_reload(void)
GPtrArray * filetypes_array
void filetypes_load_config(guint ft_id, gboolean reload)
gtk_container_add(GTK_CONTAINER(dialog->vbox), check_button)
gtk_widget_show_all(dialog)
gchar * configdir
User configuration directory, usually ~/.config/geany.
Structure for representing an open tab with all its properties.
GeanyFiletype * file_type
The filetype for this document, it's only a reference to one of the elements of the global filetypes ...
gboolean warn_color_scheme
gchar * name
Untranslated short name, such as "C", "None".
GeanyFiletypeID id
Index in filetypes.
struct GeanyFiletypePrivate * priv
struct GeanyFiletype * lexer_filetype
gboolean highlighting_invert_all
whether highlighting colors are inverted
Fields representing the different attributes of a Scintilla lexer style.
gint foreground
Foreground text colour, in 0xBBGGRR format.
gint background
Background text colour, in 0xBBGGRR format.
GtkWidget * window
Main window.
GeanyLexerStyle * styling
Defines internationalization macros.
GString * symbols_find_typenames_as_string(TMParserType lang, gboolean global)
static GPtrArray * merge(GPtrArray *big_array, GPtrArray *small_array, TMSortOptions *sort_options, gboolean unref_duplicates)
GtkWidget * ui_dialog_vbox_new(GtkDialog *dialog)
Makes a fixed border for dialogs without increasing the button box border.
GeanyMainWidgets main_widgets
void ui_set_statusbar(gboolean log, const gchar *format,...)
Displays text on the statusbar.
GeanyInterfacePrefs interface_prefs
User Interface general utility functions.
GSList * utils_get_config_files(const gchar *subdir)
gchar * utils_get_utf8_from_locale(const gchar *locale_text)
Converts the given string (in locale encoding) into UTF-8 encoding.
gchar ** utils_strv_join(gchar **first, gchar **second)
gint utils_parse_color_to_bgr(const gchar *spec)
gboolean utils_str_equal(const gchar *a, const gchar *b)
NULL-safe string comparison.
gboolean utils_atob(const gchar *str)
gchar * utils_get_locale_from_utf8(const gchar *utf8_text)
Converts the given UTF-8 encoded string into locale encoding.
General utility functions, non-GTK related.
#define foreach_slist(node, list)
Iterates all the nodes in list.
#define foreach_strv(str_ptr, strv)
Iterates a null-terminated string vector.
#define SETPTR(ptr, result)
Assigns result to ptr, then frees the old value.
#define EMPTY(ptr)
Returns TRUE if ptr is NULL or *ptr is FALSE.
#define utils_strdupa(str)
Duplicates a string on the stack using g_alloca().
#define foreach_range(i, size)
Iterates from 0 to size.
#define utils_get_setting(type, home, sys, group, key, default_val)