# Part III. API Breaks

gedit is a quite old piece of software (created in 1998, at the beginnings of the GNOME project), and as every software, the code evolves during its lifetime. So there are sometimes API breaks for gedit plugins, there are no API stability guarantees.

API breaks can also come from the libgedits. Each libgedit documents its API breaks in its reference manual. The reference manuals are also available online at gedit-text-editor.org.

## 48.2 -> 49

- gedit_encodings_combo_box_get_selected_encoding() now has a "transfer full" return value instead of "transfer none".

- `GeditStatusbar` has been removed from the API, use TeplStatusbar instead.

## 48.1 -> 48.2

- It is no longer possible to implement plugins in Python. See this blog post.

## 47 -> 48

- gedit_window_get_bottom_panel() now returns a TeplPanel.

- `DEBUG_PREFS` has been removed.

## 46 -> 47

- The GeditWindow::active-tab-changed signal has a different API: the tab parameter has been removed and the signal is also called when the active tab becomes NULL.

- The `GeditWindow::active-tab-state-changed` signal has been removed. It was unused and was anyway there for convenience (it was not an essential API).

- The `GeditWindow::tabs-reordered` signal has been removed. It was unused. Also, functions like gedit_window_get_documents() don't specify the order in which the objects are listed.

- The `GeditTab::drop-uris` signal has been removed. You can use the GeditView::drop-uris signal instead (it is the same).

- The `gedit_utils_location_get_dirname_for_display()` function has been removed.

- The `gedit_app_set_window_title()` function is now private. The window title is handled by the gedit core and should not be altered by plugins.

- The `gedit_app_process_window_event()` function is now private. The function should be only useful to the gedit core, not plugins.

## 45 -> 46

- The gedit_window_get_side_panel() function now returns a TeplPanel.

- The `gedit_statusbar_new()` and `gedit_statusbar_set_window_state()` functions have been removed.

- The `gedit_utils_set_atk_name_description()` function has been removed.

## 44 -> 45

- Vala plugins need to rely on the GObject Introspection file instead of the vapi. The latter is no longer generated.

- The `gedit_window_create_tab_from_location()` and `gedit_window_create_tab_from_stream()` functions have been removed, use gedit_window_create_tab() followed by gedit_tab_load_file() or gedit_tab_load_stream() instead.

## 43 -> 44

- When an URI is added to the GtkRecentManager, the `groups` field of GtkRecentData is no longer set. You can rely on the application name instead.

- The `gedit_document_get_language()` function has been removed, use gtk_source_buffer_get_language() instead.

- The `gedit_document_get_short_name_for_display()` function has been removed, use tepl_file_get_short_name() instead.

- The `gedit_document_is_untitled()` function has been removed, use tepl_file_get_location() instead. If the location is `NULL`, it means that the document is untitled. The TeplFile object should be retrieved with tepl_buffer_get_file() (GeditDocument inherits from TeplBuffer).

- The `gedit_statusbar_set_overwrite()` and `gedit_statusbar_clear_overwrite()` functions have been removed.

## 3.38 -> 40

- All previously deprecated APIs have been removed.

- The `GeditProgressInfoBar` class has been removed, you can use TeplProgressInfoBar instead.

- GeditDocument is now a subclass of TeplBuffer.

- The `GeditDocument::cursor-moved` signal has been removed. You can use the TeplBuffer API instead.

- The `gedit_document_get_uri_for_display()` function has been removed from the public API.

- The `GeditDocument:shortname` property has been removed. You can use the TeplFile API instead.

- The `gedit_document_is_untouched()` function has been removed. You can use the TeplBuffer API instead.

- The `gedit_view_set_font()` function has been removed.

- `DEBUG_METADATA` has been removed.

## 3.36.0 -> 3.37.1

- All previously deprecated APIs have been removed.

- The lockdown support has been removed (for the org.gnome.desktop.lockdown GSettings). So the `gedit_app_get_lockdown()` function has been removed.

- The `GBOOLEAN_TO_POINTER()` and `GPOINTER_TO_BOOLEAN()` macros have been removed from `gedit-utils.h`.

- The `gedit_utils_get_current_workspace()`, `gedit_utils_get_window_workspace()` and `gedit_utils_get_current_viewport()` functions have been removed because workspaces information is not available on Wayland.

## 3.34.0 -> 3.35.2

- All previously deprecated APIs have been removed.

- The `GeditDocument:use-gvfs-metadata` property has been removed. But there was anyway a warning for not using that property in a gedit plugin.

- For gedit_document_get_metadata() and gedit_document_set_metadata(), the key names should now have the prefix `"gedit-"` with possibly an additional namespace for the plugin name, for example `"gedit-spell-foobar"`. So the key names are now the same regardless of the operating system, and the key names should no longer start with `"metadata::"`.

## For previous gedit versions

See the Old API Changes wiki page.