## GtkSourceLanguageManager

GtkSourceLanguageManager — Object which provides access to GtkSourceLanguages

## Synopsis

    #include <gtksourceview/gtksourcelanguagemanager.h>

                        GtkSourceLanguageManager;
    GtkSourceLanguageManager * gtk_source_language_manager_new
                                                            (void);
    GtkSourceLanguageManager * gtk_source_language_manager_get_default
                                                            (void);
    void                gtk_source_language_manager_set_search_path
                                                            (GtkSourceLanguageManager *lm,
                                                             gchar **dirs);
    const gchar * const * gtk_source_language_manager_get_search_path
                                                            (GtkSourceLanguageManager *lm);
    const gchar * const * gtk_source_language_manager_get_language_ids
                                                            (GtkSourceLanguageManager *lm);
    GtkSourceLanguage * gtk_source_language_manager_get_language
                                                            (GtkSourceLanguageManager *lm,
                                                             const gchar *id);
    GtkSourceLanguage * gtk_source_language_manager_guess_language
                                                            (GtkSourceLanguageManager *lm,
                                                             const gchar *filename,
                                                             const gchar *content_type);

## Object Hierarchy

      GObject
       +----GtkSourceLanguageManager

## Properties

      "language-ids"             GStrv*                : Read
      "search-path"              GStrv*                : Read / Write

## Description

GtkSourceLanguageManager is an object which processes language description files and creates and stores GtkSourceLanguage objects, and provides API to access them. Use `gtk_source_language_manager_get_default()` to retrieve the default instance of GtkSourceLanguageManager, and `gtk_source_language_manager_guess_language()` to get a GtkSourceLanguage for given file name and content type.

## Details

### GtkSourceLanguageManager

    typedef struct _GtkSourceLanguageManager GtkSourceLanguageManager;

### gtk_source_language_manager_new ()

    GtkSourceLanguageManager * gtk_source_language_manager_new
                                                            (void);

Creates a new language manager. If you do not need more than one language manager or a private language manager instance then use `gtk_source_language_manager_get_default()` instead.

Returns : | a GtkSourceLanguageManager.

### gtk_source_language_manager_get_default ()

    GtkSourceLanguageManager * gtk_source_language_manager_get_default
                                                            (void);

Returns the default GtkSourceLanguageManager instance.

Returns : | a GtkSourceLanguageManager. Return value is owned by GtkSourceView library and must not be unref'ed.

### gtk_source_language_manager_set_search_path ()

    void                gtk_source_language_manager_set_search_path
                                                            (GtkSourceLanguageManager *lm,
                                                             gchar **dirs);

Sets the list of directories where the `lm` looks for language files. If `dirs` is `NULL`, the search path is reset to default.

### Note

At the moment this function can be called only before the language files are loaded for the first time. In practice to set a custom search path for a GtkSourceLanguageManager, you have to call this function right after creating it.

`lm` : | a GtkSourceLanguageManager.
`dirs` : | a `NULL`-terminated array of strings or `NULL`.

### gtk_source_language_manager_get_search_path ()

    const gchar * const * gtk_source_language_manager_get_search_path
                                                            (GtkSourceLanguageManager *lm);

Gets the list directories where `lm` looks for language files.

`lm` : | a GtkSourceLanguageManager.
Returns : | `NULL`-terminated array containg a list of language files directories. The array is owned by `lm` and must not be modified.

### gtk_source_language_manager_get_language_ids ()

    const gchar * const * gtk_source_language_manager_get_language_ids
                                                            (GtkSourceLanguageManager *lm);

Returns the ids of the available languages.

`lm` : | a GtkSourceLanguageManager
Returns : | a `NULL`-terminated array of string containing the ids of the available languages or `NULL` if no language is available. The array is owned by `lm` and must not be modified.

### gtk_source_language_manager_get_language ()

    GtkSourceLanguage * gtk_source_language_manager_get_language
                                                            (GtkSourceLanguageManager *lm,
                                                             const gchar *id);

Gets the GtkSourceLanguage identified by the given `id` in the language manager.

`lm` : | a GtkSourceLanguageManager.
`id` : | a language id.
Returns : | a GtkSourceLanguage, or `NULL` if there is no language identified by the given `id`. Return value is owned by `lm` and should not be freed.

### gtk_source_language_manager_guess_language ()

    GtkSourceLanguage * gtk_source_language_manager_guess_language
                                                            (GtkSourceLanguageManager *lm,
                                                             const gchar *filename,
                                                             const gchar *content_type);

Picks a GtkSourceLanguage for given file name and content type, according to the information in lang files. Either `filename` or `content_type` may be `NULL`. This function can be used as follows:

    1
    2
    3

    GtkSourceLanguage *lang;
    lang = gtk_source_language_manager_guess_language (filename, NULL);
    gtk_source_buffer_set_language (buffer, lang);

or

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    GtkSourceLanguage *lang = NULL;
    gboolean result_uncertain;
    gchar *content_type;

    content_type = g_content_type_guess (filename, NULL, 0, &result_uncertain);
    if (result_uncertain)
      {
        g_free (content_type);
        content_type = NULL;
      }

    lang = gtk_source_language_manager_guess_language (manager, filename, content_type);
    gtk_source_buffer_set_language (buffer, lang);

    g_free (content_type);

etc. Use `gtk_source_language_get_mime_types()` and `gtk_source_language_get_globs()` if you need full control over file -> language mapping.

`lm` : | a GtkSourceLanguageManager.
`filename` : | a filename in Glib filename encoding, or `NULL`.
`content_type` : | a content type (as in GIO API), or `NULL`.
Returns : | a GtkSourceLanguage, or `NULL` if there is no suitable language for given `filename` and/or `content_type`. Return value is owned by `lm` and should not be freed.

Since 2.4

## Property Details

### The `"language-ids"` property

      "language-ids"             GStrv*                : Read

List of the ids of the available languages.

### The `"search-path"` property

      "search-path"              GStrv*                : Read / Write

List of directories where the language specification files (.lang) are located.

## See Also

GtkSourceLanguage