GSList * cedit_language_manager_list_languages_sorted (GtkSourceLanguageManager *lm, gboolean include_hidden) { GSList *languages = NULL; const gchar * const *ids; ids = gtk_source_language_manager_get_language_ids (lm); if (ids == NULL) return NULL; while (*ids != NULL) { GtkSourceLanguage *lang; lang = gtk_source_language_manager_get_language (lm, *ids); #if GTK_CHECK_VERSION (3, 0, 0) g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (lang), NULL); #else g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), NULL); #endif ++ids; if (include_hidden || !gtk_source_language_get_hidden (lang)) { languages = g_slist_prepend (languages, lang); } } return g_slist_sort (languages, (GCompareFunc)language_compare); }
/** * gtk_source_language_get_hidden: * @language: a #GtkSourceLanguage * * Returns whether the language should be hidden from the user. * * Returns: %TRUE if the language should be hidden, %FALSE otherwise. */ gboolean gtk_source_language_get_hidden (GtkSourceLanguage *language) { g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (language), FALSE); return language->priv->hidden; }
static void gtk_source_language_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtkSourceLanguage *language; g_return_if_fail (GTK_SOURCE_IS_LANGUAGE (object)); language = GTK_SOURCE_LANGUAGE (object); switch (prop_id) { case PROP_ID: g_value_set_string (value, language->priv->id); break; case PROP_NAME: g_value_set_string (value, language->priv->name); break; case PROP_SECTION: g_value_set_string (value, language->priv->section); break; case PROP_HIDDEN: g_value_set_boolean (value, language->priv->hidden); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
/** * _gtk_source_language_get_language_manager: * @language: a #GtkSourceLanguage. * * Returns: (transfer none): the #GtkSourceLanguageManager for @language. **/ GtkSourceLanguageManager * _gtk_source_language_get_language_manager (GtkSourceLanguage *language) { g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (language), NULL); g_return_val_if_fail (language->priv->id != NULL, NULL); return language->priv->language_manager; }
/** * gtk_source_language_get_section: * @language: a #GtkSourceLanguage. * * Returns the localized section of the language. * Each language belong to a section (ex. HTML belogs to the * Markup section). * The returned string is owned by @language and should not be freed * or modified. * * Returns: the section of @language. **/ const gchar * gtk_source_language_get_section (GtkSourceLanguage *language) { g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (language), NULL); g_return_val_if_fail (language->priv->section != NULL, NULL); return language->priv->section; }
/** * gtk_source_language_get_metadata: * @language: a #GtkSourceLanguage. * @name: metadata property name. * * Returns: (nullable) (transfer none): value of property @name stored in * the metadata of @language or %NULL if language does not contain the * specified metadata property. * The returned string is owned by @language and should not be freed * or modified. **/ const gchar * gtk_source_language_get_metadata (GtkSourceLanguage *language, const gchar *name) { g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (language), NULL); g_return_val_if_fail (name != NULL, NULL); return g_hash_table_lookup (language->priv->properties, name); }
/** * gtk_source_language_get_style_fallback: * @language: a #GtkSourceLanguage. * @style_id: a style ID. * * Returns the ID of the style to use if the specified @style_id * is not present in the current style scheme. * * Returns: (nullable) (transfer none): the ID of the style to use if the * specified @style_id is not present in the current style scheme or %NULL * if the style has no fallback defined. * The returned string is owned by the @language and must not be modified. * * Since: 3.4 */ const gchar * gtk_source_language_get_style_fallback (GtkSourceLanguage *language, const gchar *style_id) { GtkSourceStyleInfo *info; g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (language), NULL); g_return_val_if_fail (language->priv->id != NULL, NULL); g_return_val_if_fail (style_id != NULL, NULL); info = get_style_info (language, style_id); return info ? info->map_to : NULL; }
gchar * ide_language_format_header (GtkSourceLanguage *self, const gchar *header) { IdeLineReader reader; const gchar *first_prefix; const gchar *last_prefix; const gchar *line_prefix; const gchar *line; gboolean first = TRUE; GString *outstr; gsize len; guint prefix_len; g_return_val_if_fail (GTK_SOURCE_IS_LANGUAGE (self), NULL); g_return_val_if_fail (header != NULL, NULL); first_prefix = gtk_source_language_get_metadata (self, "block-comment-start"); last_prefix = gtk_source_language_get_metadata (self, "block-comment-end"); line_prefix = gtk_source_language_get_metadata (self, "line-comment-start"); if ((g_strcmp0 (first_prefix, "/*") == 0) && (g_strcmp0 (last_prefix, "*/") == 0)) line_prefix = " *"; if (first_prefix == NULL || last_prefix == NULL) { first_prefix = line_prefix; last_prefix = line_prefix; } prefix_len = strlen (first_prefix); outstr = g_string_new (NULL); ide_line_reader_init (&reader, (gchar *)header, -1); while (NULL != (line = ide_line_reader_next (&reader, &len))) { if (first) { g_string_append (outstr, first_prefix); first = FALSE; } else if (line_prefix == NULL) { guint i; for (i = 0; i < prefix_len; i++) g_string_append_c (outstr, ' '); } else { g_string_append (outstr, line_prefix); } if (len) { g_string_append_c (outstr, ' '); g_string_append_len (outstr, line, len); } g_string_append_c (outstr, '\n'); } if (last_prefix && g_strcmp0 (first_prefix, last_prefix) != 0) { if (line_prefix && *line_prefix == ' ') g_string_append_c (outstr, ' '); g_string_append (outstr, last_prefix); g_string_append_c (outstr, '\n'); } return g_string_free (outstr, FALSE); }