geany  1.38
About: Geany is a text editor (using GTK2) with basic features of an integrated development environment (syntax highlighting, code folding, symbol name auto-completion, ...). F: office T: editor programming GTK+ IDE
  Fossies Dox: geany-1.38.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

highlighting.c File Reference
#include "highlighting.h"
#include "highlightingmappings.h"
#include "app.h"
#include "dialogs.h"
#include "document.h"
#include "editor.h"
#include "filetypesprivate.h"
#include "sciwrappers.h"
#include "support.h"
#include "symbols.h"
#include "ui_utils.h"
#include "utils.h"
#include "SciLexer.h"
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <glib.h>
#include <glib/gprintf.h>
Include dependency graph for highlighting.c:

Go to the source code of this file.

Classes

struct  StyleSet
 

Macros

#define GEANY_COLORSCHEMES_SUBDIR   "colorschemes"
 
#define GEANY_WHITESPACE_CHARS   " \t" "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~"
 
#define init_styleset_case(LANG_NAME)
 
#define styleset_case(LANG_NAME)
 

Enumerations

enum  {
  GCS_DEFAULT , GCS_SELECTION , GCS_BRACE_GOOD , GCS_BRACE_BAD ,
  GCS_MARGIN_LINENUMBER , GCS_MARGIN_FOLDING , GCS_FOLD_SYMBOL_HIGHLIGHT , GCS_CURRENT_LINE ,
  GCS_CARET , GCS_INDENT_GUIDE , GCS_WHITE_SPACE , GCS_LINE_WRAP_VISUALS ,
  GCS_LINE_WRAP_INDENT , GCS_TRANSLUCENCY , GCS_MARKER_LINE , GCS_MARKER_SEARCH ,
  GCS_MARKER_MARK , GCS_MARKER_TRANSLUCENCY , GCS_LINE_HEIGHT , GCS_CALLTIPS ,
  GCS_INDICATOR_ERROR , GCS_MAX
}
 
enum  { SCHEME_MARKUP , SCHEME_FILE , SCHEME_COLUMNS }
 

Functions

static void sci_set_property (ScintillaObject *sci, const gchar *name, const gchar *value)
 
static void new_styleset (guint file_type_id, gsize styling_count)
 
static void free_styleset (guint file_type_id)
 
static void get_keyfile_keywords (GKeyFile *config, GKeyFile *configh, const gchar *key, guint ft_id, guint pos)
 
static void get_keyfile_wordchars (GKeyFile *config, GKeyFile *configh, gchar **wordchars, const gchar *default_wordchars)
 
static gboolean read_named_style (const gchar *named_style, GeanyLexerStyle *style)
 
static void parse_color (GKeyFile *kf, const gchar *str, gint *clr)
 
static void parse_keyfile_style (GKeyFile *kf, gchar **list, const GeanyLexerStyle *default_style, GeanyLexerStyle *style)
 
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 get_keyfile_int (GKeyFile *config, GKeyFile *configh, const gchar *section, const gchar *key, gint fdefault_val, gint sdefault_val, GeanyLexerStyle *style)
 
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 guint invert (guint icolour)
 
static GeanyLexerStyleget_style (guint ft_id, guint styling_index)
 
static void set_sci_style (ScintillaObject *sci, guint style, guint ft_id, guint styling_index)
 
void highlighting_free_styles (void)
 
static gchar * get_keyfile_whitespace_chars (GKeyFile *config, GKeyFile *configh)
 
static void add_named_style (GKeyFile *config, const gchar *key)
 
static void get_named_styles (GKeyFile *config)
 
static GKeyFile * utils_key_file_new (const gchar *filename)
 
static void load_named_styles (GKeyFile *config, GKeyFile *config_home)
 
static void styleset_common_init (GKeyFile *config, GKeyFile *config_home)
 
static void set_character_classes (ScintillaObject *sci, guint ft_id)
 
static void styleset_common (ScintillaObject *sci, guint ft_id)
 
static void merge_type_keywords (ScintillaObject *sci, guint ft_id, guint keyword_idx)
 
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 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 styleset_default (ScintillaObject *sci, guint ft_id)
 
static void get_key_values (GKeyFile *config, const gchar *group, gchar **keys, gchar **values)
 
static void read_properties (GeanyFiletype *ft, GKeyFile *config, GKeyFile *configh)
 
static guint get_lexer_filetype (GeanyFiletype *ft)
 
void highlighting_init_styles (guint filetype_idx, GKeyFile *config, GKeyFile *configh)
 
void highlighting_set_styles (ScintillaObject *sci, GeanyFiletype *ft)
 Sets up highlighting and other visual settings. More...
 
const GeanyLexerStylehighlighting_get_style (gint ft_id, gint style_id)
 Retrieves a style style_id for the filetype ft_id. More...
 
static void on_color_scheme_changed (GtkTreeSelection *treesel, gpointer dummy)
 
static gchar * utils_get_setting_locale_string (GKeyFile *keyfile, const gchar *group, const gchar *key, const gchar *default_value)
 
static void add_color_scheme_item (GtkListStore *store, gchar *name, gchar *desc, const gchar *fn, GtkTreeIter *current_iter)
 
static void add_color_scheme_file (GtkListStore *store, const gchar *fname, GtkTreeIter *current_iter)
 
static gboolean add_color_scheme_items (GtkListStore *store, GtkTreeIter *current_iter)
 
static void on_color_scheme_dialog_response (GtkWidget *dialog, gint response, gpointer *dialog_ptr)
 
void highlighting_show_color_scheme_dialog (void)
 
gboolean highlighting_is_string_style (gint lexer, gint style)
 Checks whether the given style is a string for the given lexer. More...
 
gboolean highlighting_is_comment_style (gint lexer, gint style)
 Checks whether the given style is a comment for the given lexer. More...
 
gboolean highlighting_is_code_style (gint lexer, gint style)
 Checks whether the given style is normal code (not string, comment, preprocessor, etc). More...
 

Variables

static gchar * whitespace_chars = NULL
 
static StyleSetstyle_sets = NULL
 
struct {
   GeanyLexerStyle   styling [GCS_MAX]
 
   gint   fold_marker
 
   gint   fold_lines
 
   gint   fold_draw_line
 
   gchar *   wordchars
 
common_style_set = { { { 0 } }, 0, 0, 0, NULL }
 
static GHashTable * named_style_hash = NULL
 
static GeanyLexerStyle gsd_default = {0x000000, 0xffffff, FALSE, FALSE}
 

Macro Definition Documentation

◆ GEANY_COLORSCHEMES_SUBDIR

#define GEANY_COLORSCHEMES_SUBDIR   "colorschemes"

Definition at line 53 of file highlighting.c.

◆ GEANY_WHITESPACE_CHARS

#define GEANY_WHITESPACE_CHARS   " \t" "!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~"

Definition at line 56 of file highlighting.c.

◆ init_styleset_case

#define init_styleset_case (   LANG_NAME)
Value:
case (GEANY_FILETYPES_##LANG_NAME): \
styleset_init_from_mapping(filetype_idx, config, configh, \
highlighting_styles_##LANG_NAME, \
HL_N_ENTRIES(highlighting_styles_##LANG_NAME), \
highlighting_keywords_##LANG_NAME, \
HL_N_ENTRIES(highlighting_keywords_##LANG_NAME)); \
break
#define HL_N_ENTRIES(array)

Definition at line 960 of file highlighting.c.

◆ styleset_case

#define styleset_case (   LANG_NAME)
Value:
case (GEANY_FILETYPES_##LANG_NAME): \
styleset_from_mapping(sci, ft->id, highlighting_lexer_##LANG_NAME, \
highlighting_styles_##LANG_NAME, \
HL_N_ENTRIES(highlighting_styles_##LANG_NAME), \
highlighting_keywords_##LANG_NAME, \
HL_N_ENTRIES(highlighting_keywords_##LANG_NAME), \
highlighting_properties_##LANG_NAME, \
HL_N_ENTRIES(highlighting_properties_##LANG_NAME)); \
break
ScintillaObject * sci
Definition: editor.c:88

Definition at line 1068 of file highlighting.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
GCS_DEFAULT 
GCS_SELECTION 
GCS_BRACE_GOOD 
GCS_BRACE_BAD 
GCS_MARGIN_LINENUMBER 
GCS_MARGIN_FOLDING 
GCS_FOLD_SYMBOL_HIGHLIGHT 
GCS_CURRENT_LINE 
GCS_CARET 
GCS_INDENT_GUIDE 
GCS_WHITE_SPACE 
GCS_LINE_WRAP_VISUALS 
GCS_LINE_WRAP_INDENT 
GCS_TRANSLUCENCY 
GCS_MARKER_LINE 
GCS_MARKER_SEARCH 
GCS_MARKER_MARK 
GCS_MARKER_TRANSLUCENCY 
GCS_LINE_HEIGHT 
GCS_CALLTIPS 
GCS_INDICATOR_ERROR 
GCS_MAX 

Definition at line 76 of file highlighting.c.

◆ anonymous enum

anonymous enum
Enumerator
SCHEME_MARKUP 
SCHEME_FILE 
SCHEME_COLUMNS 

Definition at line 1189 of file highlighting.c.

Function Documentation

◆ add_color_scheme_file()

static void add_color_scheme_file ( GtkListStore *  store,
const gchar *  fname,
GtkTreeIter *  current_iter 
)
static

◆ add_color_scheme_item()

static void add_color_scheme_item ( GtkListStore *  store,
gchar *  name,
gchar *  desc,
const gchar *  fn,
GtkTreeIter *  current_iter 
)
static

◆ add_color_scheme_items()

static gboolean add_color_scheme_items ( GtkListStore *  store,
GtkTreeIter *  current_iter 
)
static

◆ add_named_style()

static void add_named_style ( GKeyFile *  config,
const gchar *  key 
)
static

Definition at line 443 of file highlighting.c.

References group, gsd_default, list, named_style_hash, NULL, and parse_keyfile_style().

Referenced by get_named_styles(), and load_named_styles().

◆ convert_int()

static void convert_int ( const gchar *  int_str,
gint *  val 
)
static

Definition at line 322 of file highlighting.c.

Referenced by get_keyfile_int().

◆ free_styleset()

static void free_styleset ( guint  file_type_id)
static

◆ get_key_values()

static void get_key_values ( GKeyFile *  config,
const gchar *  group,
gchar **  keys,
gchar **  values 
)
static

Definition at line 910 of file highlighting.c.

References group, NULL, and SETPTR.

Referenced by read_properties().

◆ get_keyfile_int()

static void get_keyfile_int ( GKeyFile *  config,
GKeyFile *  configh,
const gchar *  section,
const gchar *  key,
gint  fdefault_val,
gint  sdefault_val,
GeanyLexerStyle style 
)
static

◆ get_keyfile_ints()

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

◆ get_keyfile_keywords()

static void get_keyfile_keywords ( GKeyFile *  config,
GKeyFile *  configh,
const gchar *  key,
guint  ft_id,
guint  pos 
)
static

Definition at line 161 of file highlighting.c.

References StyleSet::keywords, pos, style_sets, and utils_get_setting.

Referenced by styleset_init_from_mapping().

◆ get_keyfile_style()

static void get_keyfile_style ( GKeyFile *  config,
GKeyFile *  configh,
const gchar *  key_name,
GeanyLexerStyle style 
)
static

Definition at line 298 of file highlighting.c.

References gsd_default, list, NULL, and parse_keyfile_style().

Referenced by styleset_common_init(), and styleset_init_from_mapping().

◆ get_keyfile_whitespace_chars()

static gchar * get_keyfile_whitespace_chars ( GKeyFile *  config,
GKeyFile *  configh 
)
static

Definition at line 436 of file highlighting.c.

References GEANY_WHITESPACE_CHARS, and utils_get_setting.

Referenced by styleset_common_init().

◆ get_keyfile_wordchars()

static void get_keyfile_wordchars ( GKeyFile *  config,
GKeyFile *  configh,
gchar **  wordchars,
const gchar *  default_wordchars 
)
static

Definition at line 169 of file highlighting.c.

References utils_get_setting, and wordchars.

Referenced by highlighting_init_styles(), and styleset_common_init().

◆ get_lexer_filetype()

static guint get_lexer_filetype ( GeanyFiletype ft)
static

◆ get_named_styles()

static void get_named_styles ( GKeyFile *  config)
static

Definition at line 462 of file highlighting.c.

References add_named_style(), group, NULL, and ptr.

Referenced by load_named_styles().

◆ get_style()

static GeanyLexerStyle * get_style ( guint  ft_id,
guint  styling_index 
)
static

Definition at line 391 of file highlighting.c.

References common_style_set, count, GCS_MAX, GEANY_FILETYPES_NONE, set, and style_sets.

Referenced by highlighting_get_style(), and set_sci_style().

◆ highlighting_free_styles()

void highlighting_free_styles ( void  )

Definition at line 421 of file highlighting.c.

References filetypes_array, free_styleset(), named_style_hash, and style_sets.

Referenced by do_main_quit().

◆ highlighting_get_style()

const GeanyLexerStyle * highlighting_get_style ( gint  ft_id,
gint  style_id 
)

Retrieves a style style_id for the filetype ft_id.

If the style was not already initialised (e.g. by by opening a file of this type), it will be initialised. The returned pointer is owned by Geany and must not be freed.

Parameters
ft_idFiletype ID, e.g. GEANY_FILETYPES_DIFF.
style_idA Scintilla lexer style, e.g. SCE_DIFF_ADDED. See scintilla/include/SciLexer.h.
Returns
A pointer to the style struct.
See also
Scintilla messages SCI_STYLEGETFORE, etc, for use with scintilla_send_message().

Definition at line 1175 of file highlighting.c.

References filetypes_load_config(), get_style(), and NULL.

◆ highlighting_init_styles()

◆ highlighting_is_code_style()

gboolean highlighting_is_code_style ( gint  lexer,
gint  style 
)

Checks whether the given style is normal code (not string, comment, preprocessor, etc).

Parameters
lexerScintilla lexer type (SCLEX_*).
styleScintilla style (SCE_*).
Returns
TRUE if the style is code, FALSE otherwise.

Definition at line 1871 of file highlighting.c.

References highlighting_is_comment_style(), highlighting_is_string_style(), SCE_C_PREPROCESSOR, SCE_HA_PREPROCESSOR, SCE_V_PREPROCESSOR, SCLEX_CPP, SCLEX_HASKELL, SCLEX_LITERATEHASKELL, and SCLEX_VERILOG.

Referenced by editor_show_calltip(), editor_start_auto_complete(), get_brace_indent(), get_fold_header_after(), and get_sci_line_code_end_position().

◆ highlighting_is_comment_style()

gboolean highlighting_is_comment_style ( gint  lexer,
gint  style 
)

Checks whether the given style is a comment for the given lexer.

Parameters
lexerScintilla lexer type (SCLEX_*).
styleScintilla style (SCE_*).
Returns
TRUE if the style is a comment, FALSE otherwise.

Definition at line 1649 of file highlighting.c.

References SCE_ABAQUS_COMMENT, SCE_ABAQUS_COMMENTBLOCK, SCE_ADA_COMMENTLINE, SCE_ASM_COMMENT, SCE_ASM_COMMENTBLOCK, SCE_ASM_COMMENTDIRECTIVE, SCE_B_COMMENT, SCE_B_COMMENTBLOCK, SCE_B_DOCBLOCK, SCE_B_DOCKEYWORD, SCE_B_DOCLINE, SCE_BAT_COMMENT, SCE_C_COMMENT, SCE_C_COMMENTDOC, SCE_C_COMMENTDOCKEYWORD, SCE_C_COMMENTDOCKEYWORDERROR, SCE_C_COMMENTLINE, SCE_C_COMMENTLINEDOC, SCE_C_PREPROCESSORCOMMENT, SCE_C_PREPROCESSORCOMMENTDOC, SCE_C_TASKMARKER, SCE_CAML_COMMENT, SCE_CAML_COMMENT1, SCE_CAML_COMMENT2, SCE_CAML_COMMENT3, SCE_CMAKE_COMMENT, SCE_COFFEESCRIPT_COMMENTBLOCK, SCE_COFFEESCRIPT_COMMENTLINE, SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT, SCE_CSS_COMMENT, SCE_D_COMMENT, SCE_D_COMMENTDOC, SCE_D_COMMENTDOCKEYWORD, SCE_D_COMMENTDOCKEYWORDERROR, SCE_D_COMMENTLINE, SCE_D_COMMENTLINEDOC, SCE_D_COMMENTNESTED, SCE_DIFF_COMMENT, SCE_ERLANG_COMMENT, SCE_ERLANG_COMMENT_DOC, SCE_ERLANG_COMMENT_DOC_MACRO, SCE_ERLANG_COMMENT_FUNCTION, SCE_ERLANG_COMMENT_MODULE, SCE_F_COMMENT, SCE_FORTH_COMMENT, SCE_FORTH_COMMENT_ML, SCE_H_COMMENT, SCE_H_SGML_COMMENT, SCE_HA_COMMENTBLOCK, SCE_HA_COMMENTBLOCK2, SCE_HA_COMMENTBLOCK3, SCE_HA_COMMENTLINE, SCE_HA_LITERATE_CODEDELIM, SCE_HA_LITERATE_COMMENT, SCE_HB_COMMENTLINE, SCE_HBA_COMMENTLINE, SCE_HJ_COMMENT, SCE_HJ_COMMENTDOC, SCE_HJ_COMMENTLINE, SCE_HJA_COMMENT, SCE_HJA_COMMENTDOC, SCE_HJA_COMMENTLINE, SCE_HP_COMMENTLINE, SCE_HPA_COMMENTLINE, SCE_HPHP_COMMENT, SCE_HPHP_COMMENTLINE, SCE_JULIA_COMMENT, SCE_L_COMMENT, SCE_L_COMMENT2, SCE_LISP_COMMENT, SCE_LISP_MULTI_COMMENT, SCE_LUA_COMMENT, SCE_LUA_COMMENTDOC, SCE_LUA_COMMENTLINE, SCE_MAKE_COMMENT, SCE_MATLAB_COMMENT, SCE_NSIS_COMMENT, SCE_NSIS_COMMENTBOX, SCE_P_COMMENTBLOCK, SCE_P_COMMENTLINE, SCE_PAS_COMMENT, SCE_PAS_COMMENT2, SCE_PAS_COMMENTLINE, SCE_PL_COMMENTLINE, SCE_PO_COMMENT, SCE_PO_PROGRAMMER_COMMENT, SCE_POWERSHELL_COMMENT, SCE_POWERSHELL_COMMENTDOCKEYWORD, SCE_POWERSHELL_COMMENTSTREAM, SCE_PROPS_COMMENT, SCE_R_COMMENT, SCE_RB_COMMENTLINE, SCE_RUST_COMMENTBLOCK, SCE_RUST_COMMENTBLOCKDOC, SCE_RUST_COMMENTLINE, SCE_RUST_COMMENTLINEDOC, SCE_SH_COMMENTLINE, SCE_SQL_COMMENT, SCE_SQL_COMMENTDOC, SCE_SQL_COMMENTDOCKEYWORD, SCE_SQL_COMMENTDOCKEYWORDERROR, SCE_SQL_COMMENTLINE, SCE_SQL_COMMENTLINEDOC, SCE_TCL_BLOCK_COMMENT, SCE_TCL_COMMENT, SCE_TCL_COMMENT_BOX, SCE_TCL_COMMENTLINE, SCE_TXT2TAGS_COMMENT, SCE_V_COMMENT, SCE_V_COMMENT_WORD, SCE_V_COMMENTLINE, SCE_V_COMMENTLINEBANG, SCE_VHDL_BLOCK_COMMENT, SCE_VHDL_COMMENT, SCE_VHDL_COMMENTLINEBANG, SCE_YAML_COMMENT, SCLEX_ABAQUS, SCLEX_ADA, SCLEX_ASM, SCLEX_BASH, SCLEX_BATCH, SCLEX_CAML, SCLEX_CMAKE, SCLEX_COBOL, SCLEX_COFFEESCRIPT, SCLEX_CPP, SCLEX_CSS, SCLEX_D, SCLEX_DIFF, SCLEX_ERLANG, SCLEX_F77, SCLEX_FORTH, SCLEX_FORTRAN, SCLEX_FREEBASIC, SCLEX_HASKELL, SCLEX_HTML, SCLEX_JULIA, SCLEX_LATEX, SCLEX_LISP, SCLEX_LITERATEHASKELL, SCLEX_LUA, SCLEX_MAKEFILE, SCLEX_MARKDOWN, SCLEX_NSIS, SCLEX_OCTAVE, SCLEX_PASCAL, SCLEX_PERL, SCLEX_PHPSCRIPT, SCLEX_PO, SCLEX_POWERSHELL, SCLEX_PROPERTIES, SCLEX_PYTHON, SCLEX_R, SCLEX_RUBY, SCLEX_RUST, SCLEX_SQL, SCLEX_TCL, SCLEX_TXT2TAGS, SCLEX_VERILOG, SCLEX_VHDL, SCLEX_XML, and SCLEX_YAML.

Referenced by highlighting_is_code_style().

◆ highlighting_is_string_style()

gboolean highlighting_is_string_style ( gint  lexer,
gint  style 
)

Checks whether the given style is a string for the given lexer.

Parameters
lexerScintilla lexer type (SCLEX_*).
styleScintilla style (SCE_*).
Returns
TRUE if the style is a string, FALSE otherwise.

Definition at line 1398 of file highlighting.c.

References SCE_ABAQUS_STRING, SCE_ADA_CHARACTER, SCE_ADA_CHARACTEREOL, SCE_ADA_STRING, SCE_ADA_STRINGEOL, SCE_B_STRING, SCE_B_STRINGEOL, SCE_C_CHARACTER, SCE_C_ESCAPESEQUENCE, SCE_C_HASHQUOTEDSTRING, SCE_C_REGEX, SCE_C_STRING, SCE_C_STRINGEOL, SCE_C_STRINGRAW, SCE_C_TRIPLEVERBATIM, SCE_C_USERLITERAL, SCE_C_VERBATIM, SCE_CAML_CHAR, SCE_CAML_STRING, SCE_CMAKE_STRINGDQ, SCE_CMAKE_STRINGLQ, SCE_CMAKE_STRINGRQ, SCE_CMAKE_STRINGVAR, SCE_COFFEESCRIPT_CHARACTER, SCE_COFFEESCRIPT_REGEX, SCE_COFFEESCRIPT_STRING, SCE_COFFEESCRIPT_STRINGEOL, SCE_COFFEESCRIPT_VERBOSE_REGEX, SCE_CSS_DOUBLESTRING, SCE_CSS_SINGLESTRING, SCE_D_CHARACTER, SCE_D_STRING, SCE_D_STRINGB, SCE_D_STRINGEOL, SCE_D_STRINGR, SCE_ERLANG_CHARACTER, SCE_ERLANG_STRING, SCE_F_STRING1, SCE_F_STRING2, SCE_F_STRINGEOL, SCE_FORTH_STRING, SCE_H_CDATA, SCE_H_DOUBLESTRING, SCE_H_SGML_DOUBLESTRING, SCE_H_SGML_SIMPLESTRING, SCE_H_SINGLESTRING, SCE_HA_CHARACTER, SCE_HA_STRING, SCE_HA_STRINGEOL, SCE_HB_STRING, SCE_HB_STRINGEOL, SCE_HBA_STRING, SCE_HBA_STRINGEOL, SCE_HJ_DOUBLESTRING, SCE_HJ_REGEX, SCE_HJ_SINGLESTRING, SCE_HJ_STRINGEOL, SCE_HJA_DOUBLESTRING, SCE_HJA_REGEX, SCE_HJA_SINGLESTRING, SCE_HJA_STRINGEOL, SCE_HP_CHARACTER, SCE_HP_STRING, SCE_HP_TRIPLE, SCE_HP_TRIPLEDOUBLE, SCE_HPA_CHARACTER, SCE_HPA_STRING, SCE_HPA_TRIPLE, SCE_HPA_TRIPLEDOUBLE, SCE_HPHP_HSTRING, SCE_HPHP_HSTRING_VARIABLE, SCE_HPHP_SIMPLESTRING, SCE_JULIA_CHAR, SCE_JULIA_COMMAND, SCE_JULIA_DOCSTRING, SCE_JULIA_STRING, SCE_JULIA_STRINGINTERP, SCE_LISP_STRING, SCE_LISP_STRINGEOL, SCE_LUA_CHARACTER, SCE_LUA_LITERALSTRING, SCE_LUA_STRING, SCE_LUA_STRINGEOL, SCE_MATLAB_DOUBLEQUOTESTRING, SCE_MATLAB_STRING, SCE_NSIS_STRINGDQ, SCE_NSIS_STRINGLQ, SCE_NSIS_STRINGRQ, SCE_NSIS_STRINGVAR, SCE_P_CHARACTER, SCE_P_FCHARACTER, SCE_P_FSTRING, SCE_P_FTRIPLE, SCE_P_FTRIPLEDOUBLE, SCE_P_STRING, SCE_P_STRINGEOL, SCE_P_TRIPLE, SCE_P_TRIPLEDOUBLE, SCE_PAS_CHARACTER, SCE_PAS_STRING, SCE_PAS_STRINGEOL, SCE_PL_CHARACTER, SCE_PL_HERE_DELIM, SCE_PL_HERE_Q, SCE_PL_HERE_QQ, SCE_PL_HERE_QX, SCE_PL_POD, SCE_PL_POD_VERB, SCE_PL_REGEX, SCE_PL_REGEX_VAR, SCE_PL_STRING, SCE_PL_STRING_Q, SCE_PL_STRING_QQ, SCE_PL_STRING_QR, SCE_PL_STRING_QW, SCE_PL_STRING_QX, SCE_PL_XLAT, SCE_PO_MSGCTXT_TEXT, SCE_PO_MSGCTXT_TEXT_EOL, SCE_PO_MSGID_TEXT, SCE_PO_MSGID_TEXT_EOL, SCE_PO_MSGSTR_TEXT, SCE_PO_MSGSTR_TEXT_EOL, SCE_POWERSHELL_CHARACTER, SCE_POWERSHELL_STRING, SCE_R_STRING, SCE_RB_CHARACTER, SCE_RB_HERE_DELIM, SCE_RB_HERE_Q, SCE_RB_HERE_QQ, SCE_RB_HERE_QX, SCE_RB_POD, SCE_RB_REGEX, SCE_RB_STRING, SCE_RB_STRING_Q, SCE_RB_STRING_QQ, SCE_RB_STRING_QR, SCE_RB_STRING_QW, SCE_RB_STRING_QX, SCE_RUST_BYTECHARACTER, SCE_RUST_BYTESTRING, SCE_RUST_BYTESTRINGR, SCE_RUST_CHARACTER, SCE_RUST_LEXERROR, SCE_RUST_STRING, SCE_RUST_STRINGR, SCE_SH_STRING, SCE_SQL_STRING, SCE_TCL_IN_QUOTE, SCE_V_STRING, SCE_VHDL_STRING, SCE_VHDL_STRINGEOL, SCLEX_ABAQUS, SCLEX_ADA, SCLEX_BASH, SCLEX_BATCH, SCLEX_CAML, SCLEX_CMAKE, SCLEX_COFFEESCRIPT, SCLEX_CPP, SCLEX_CSS, SCLEX_D, SCLEX_DIFF, SCLEX_ERLANG, SCLEX_F77, SCLEX_FORTH, SCLEX_FORTRAN, SCLEX_FREEBASIC, SCLEX_HASKELL, SCLEX_HTML, SCLEX_JULIA, SCLEX_LATEX, SCLEX_LISP, SCLEX_LITERATEHASKELL, SCLEX_LUA, SCLEX_MAKEFILE, SCLEX_MARKDOWN, SCLEX_NSIS, SCLEX_OCTAVE, SCLEX_PASCAL, SCLEX_PERL, SCLEX_PHPSCRIPT, SCLEX_PO, SCLEX_POWERSHELL, SCLEX_PROPERTIES, SCLEX_PYTHON, SCLEX_R, SCLEX_RUBY, SCLEX_RUST, SCLEX_SQL, SCLEX_TCL, SCLEX_TXT2TAGS, SCLEX_VERILOG, SCLEX_VHDL, SCLEX_XML, and SCLEX_YAML.

Referenced by handle_xml(), and highlighting_is_code_style().

◆ highlighting_set_styles()

void highlighting_set_styles ( ScintillaObject *  sci,
GeanyFiletype ft 
)

Sets up highlighting and other visual settings.

Parameters
sciScintilla widget.
ftFiletype settings to use.

Definition at line 1083 of file highlighting.c.

References filetypes_load_config(), GEANY_FILETYPES_NONE, get_lexer_filetype(), GeanyFiletype::id, StyleSet::property_keys, StyleSet::property_values, sci, sci_set_property(), style_sets, styleset_case, and styleset_default().

Referenced by begin_print(), document_load_config(), and sync_to_current().

◆ highlighting_show_color_scheme_dialog()

◆ invert()

static guint invert ( guint  icolour)
static

Definition at line 382 of file highlighting.c.

References GeanyInterfacePrefs::highlighting_invert_all, and interface_prefs.

Referenced by set_sci_style(), and styleset_common().

◆ load_named_styles()

static void load_named_styles ( GKeyFile *  config,
GKeyFile *  config_home 
)
static

◆ merge_type_keywords()

static void merge_type_keywords ( ScintillaObject *  sci,
guint  ft_id,
guint  keyword_idx 
)
static

◆ new_styleset()

static void new_styleset ( guint  file_type_id,
gsize  styling_count 
)
static

Definition at line 133 of file highlighting.c.

References set, and style_sets.

Referenced by styleset_init_from_mapping().

◆ on_color_scheme_changed()

static void on_color_scheme_changed ( GtkTreeSelection *  treesel,
gpointer  dummy 
)
static

◆ on_color_scheme_dialog_response()

static void on_color_scheme_dialog_response ( GtkWidget *  dialog,
gint  response,
gpointer *  dialog_ptr 
)
static

Definition at line 1320 of file highlighting.c.

References dialog, and NULL.

Referenced by highlighting_show_color_scheme_dialog().

◆ parse_color()

static void parse_color ( GKeyFile *  kf,
const gchar *  str,
gint *  clr 
)
static

Definition at line 216 of file highlighting.c.

References EMPTY, geany_debug(), NULL, and utils_parse_color_to_bgr().

Referenced by parse_keyfile_style().

◆ parse_keyfile_style()

static void parse_keyfile_style ( GKeyFile *  kf,
gchar **  list,
const GeanyLexerStyle default_style,
GeanyLexerStyle style 
)
static

◆ read_named_style()

static gboolean read_named_style ( const gchar *  named_style,
GeanyLexerStyle style 
)
static

◆ read_properties()

static void read_properties ( GeanyFiletype ft,
GKeyFile *  config,
GKeyFile *  configh 
)
static

◆ sci_set_property()

static void sci_set_property ( ScintillaObject *  sci,
const gchar *  name,
const gchar *  value 
)
static

Definition at line 127 of file highlighting.c.

References name, sci, and SCI_SETPROPERTY.

Referenced by highlighting_set_styles(), styleset_common(), and styleset_from_mapping().

◆ set_character_classes()

static void set_character_classes ( ScintillaObject *  sci,
guint  ft_id 
)
static

◆ set_sci_style()

static void set_sci_style ( ScintillaObject *  sci,
guint  style,
guint  ft_id,
guint  styling_index 
)
static

◆ styleset_common()

static void styleset_common ( ScintillaObject *  sci,
guint  ft_id 
)
static

Definition at line 612 of file highlighting.c.

References GeanyLexerStyle::background, GeanyLexerStyle::bold, CARETSTYLE_BLOCK, CARETSTYLE_LINE, common_style_set, foreach_range, GeanyLexerStyle::foreground, GCS_BRACE_BAD, GCS_BRACE_GOOD, GCS_CALLTIPS, GCS_CARET, GCS_CURRENT_LINE, GCS_FOLD_SYMBOL_HIGHLIGHT, GCS_INDENT_GUIDE, GCS_INDICATOR_ERROR, GCS_LINE_HEIGHT, GCS_LINE_WRAP_INDENT, GCS_LINE_WRAP_VISUALS, GCS_MARGIN_FOLDING, GCS_MARGIN_LINENUMBER, GCS_MARKER_LINE, GCS_MARKER_MARK, GCS_MARKER_SEARCH, GCS_MARKER_TRANSLUCENCY, GCS_SELECTION, GCS_TRANSLUCENCY, GCS_WHITE_SPACE, geany_debug(), GEANY_FILETYPES_NONE, GEANY_INDICATOR_ERROR, GEANY_INDICATOR_SEARCH, GEANY_INDICATOR_SNIPPET, INDIC_DOTBOX, INDIC_ROUNDBOX, INDIC_SQUIGGLEPIXMAP, invert(), GeanyLexerStyle::italic, SC_MARGIN_SYMBOL, SC_MARK_ARROW, SC_MARK_ARROWDOWN, SC_MARK_BOXMINUS, SC_MARK_BOXMINUSCONNECTED, SC_MARK_BOXPLUS, SC_MARK_BOXPLUSCONNECTED, SC_MARK_CIRCLEMINUS, SC_MARK_CIRCLEMINUSCONNECTED, SC_MARK_CIRCLEPLUS, SC_MARK_CIRCLEPLUSCONNECTED, SC_MARK_EMPTY, SC_MARK_LCORNER, SC_MARK_LCORNERCURVE, SC_MARK_MINUS, SC_MARK_PLUS, SC_MARK_SHORTARROW, SC_MARK_TCORNER, SC_MARK_TCORNERCURVE, SC_MARK_VLINE, SC_MARKNUM_FOLDER, SC_MARKNUM_FOLDEREND, SC_MARKNUM_FOLDERMIDTAIL, SC_MARKNUM_FOLDEROPEN, SC_MARKNUM_FOLDEROPENMID, SC_MARKNUM_FOLDERSUB, SC_MARKNUM_FOLDERTAIL, SC_MASK_FOLDERS, sci, SCI_CALLTIPSETBACK, SCI_CALLTIPSETFORE, SCI_INDICSETALPHA, SCI_INDICSETFORE, SCI_INDICSETSTYLE, SCI_MARKERDEFINE, SCI_MARKERSETALPHA, SCI_MARKERSETBACK, SCI_MARKERSETFORE, sci_set_property(), SCI_SETCARETFORE, SCI_SETCARETLINEBACK, SCI_SETCARETLINEBACKALPHA, SCI_SETCARETLINEVISIBLE, SCI_SETCARETSTYLE, SCI_SETCARETWIDTH, SCI_SETEXTRAASCENT, SCI_SETEXTRADESCENT, SCI_SETFOLDFLAGS, SCI_SETFOLDMARGINCOLOUR, SCI_SETFOLDMARGINHICOLOUR, SCI_SETMARGINMASKN, SCI_SETMARGINTYPEN, SCI_SETSELALPHA, SCI_SETSELBACK, SCI_SETSELFORE, SCI_SETWHITESPACEBACK, SCI_SETWHITESPACEFORE, SCI_SETWRAPINDENTMODE, SCI_SETWRAPSTARTINDENT, SCI_SETWRAPVISUALFLAGS, SCI_SETWRAPVISUALFLAGSLOCATION, SCI_STYLECLEARALL, set_character_classes(), set_sci_style(), STYLE_BRACEBAD, STYLE_BRACELIGHT, STYLE_INDENTGUIDE, and STYLE_LINENUMBER.

Referenced by styleset_default(), and styleset_from_mapping().

◆ styleset_common_init()

◆ styleset_default()

static void styleset_default ( ScintillaObject *  sci,
guint  ft_id 
)
static

◆ styleset_from_mapping()

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

◆ styleset_init_from_mapping()

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

◆ utils_get_setting_locale_string()

static gchar * utils_get_setting_locale_string ( GKeyFile *  keyfile,
const gchar *  group,
const gchar *  key,
const gchar *  default_value 
)
static

Definition at line 1240 of file highlighting.c.

References FALLBACK, group, and NULL.

◆ utils_key_file_new()

static GKeyFile * utils_key_file_new ( const gchar *  filename)
static

Definition at line 488 of file highlighting.c.

References filename, and NULL.

Referenced by add_color_scheme_file(), and load_named_styles().

Variable Documentation

◆ 

◆ fold_draw_line

gint fold_draw_line

Definition at line 111 of file highlighting.c.

◆ fold_lines

gint fold_lines

Definition at line 109 of file highlighting.c.

◆ fold_marker

gint fold_marker

Definition at line 107 of file highlighting.c.

◆ gsd_default

GeanyLexerStyle gsd_default = {0x000000, 0xffffff, FALSE, FALSE}
static

◆ named_style_hash

GHashTable* named_style_hash = NULL
static

◆ style_sets

◆ styling

Definition at line 104 of file highlighting.c.

◆ whitespace_chars

gchar* whitespace_chars = NULL
static

Definition at line 59 of file highlighting.c.

Referenced by set_character_classes(), and styleset_common_init().

◆ wordchars