summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/build.md92
-rw-r--r--docs/class-diagram.diabin0 -> 6866 bytes
-rw-r--r--docs/common-bugs.md14
-rw-r--r--docs/gedit-development-getting-started.md100
-rw-r--r--docs/how-to-write-a-gedit-plugin.md45
-rw-r--r--docs/reference/api-breaks.xml93
-rw-r--r--docs/reference/gedit-docs.xml59
-rw-r--r--docs/reference/gedit-sections.txt367
-rw-r--r--docs/reference/meson.build42
-rw-r--r--docs/roadmap.md127
10 files changed, 939 insertions, 0 deletions
diff --git a/docs/build.md b/docs/build.md
new file mode 100644
index 0000000..a95da5e
--- /dev/null
+++ b/docs/build.md
@@ -0,0 +1,92 @@
+gedit installation by building the source code
+==============================================
+
+Recommendation to install in a separate prefix
+----------------------------------------------
+
+Once you have built gedit from source, you cannot run the application from its
+build directory: you need to install it with `ninja install`. For this reason it
+is highly recommended that you install in a separate prefix instead of
+overwriting your system binaries.
+
+Note however that when running gedit from a custom prefix you will need to set
+many environment variables accordingly, for instance `PATH` and `XDG_DATA_DIR`.
+
+There exists several tools that GNOME developers use to take care of all of
+this. See the _Tools_ section below.
+
+Installation of the dependencies
+--------------------------------
+
+You need to have all gedit dependencies installed, with recent enough versions.
+If a dependency is missing or is too old, the build configuration fails (you can
+try to run the build configuration command for gedit until it succeeds, see the
+procedure below).
+
+You can install the dependencies by installing packages provided by your
+operating system, for example on Fedora:
+```
+# dnf builddep gedit
+```
+
+But if your version of gedit provided by the OS differs too much from the
+version of gedit you want to build from source, you'll need to install the new
+dependencies from source too, and it can become a complicated task if you do it
+manually.
+
+Also, during gedit development, gedit may depend on a not-yet-released
+development version of a GNOME dependency. So certain GNOME dependencies may
+need to be installed from Git.
+
+That's why if you have difficulties installing recent enough versions of the
+dependencies, it is usually easier to use one of the tools explained in the next
+section.
+
+Tools
+-----
+
+There are several tools available that take care of the following:
+- Install in a separate prefix.
+- Build or install dependencies.
+- Plus, for some tools: run in a container/sandbox.
+
+GNOME developers usually use one of these tools:
+- [JHBuild](https://developer.gnome.org/jhbuild/unstable/)
+- Or [BuildStream](https://buildstream.build/)
+- Or [Flatpak](https://flatpak.org/)
+
+JHBuild tips:
+- Try `ignore_suggests = True` in your jhbuildrc to have fewer dependencies to
+ build (see the difference with "jhbuild list gedit"). Another solution is to
+ put some modules in the skip variable in jhbuildrc.
+
+Building the gedit module manually
+----------------------------------
+
+If you use one of the above tools, you don't need all the explanations in this
+section. But it can be instructive.
+
+gedit uses the [Meson](https://mesonbuild.com/) build system.
+
+Once the dependencies are installed, here are simple procedures to finally build
+the gedit module from source.
+
+### Installation onto the system
+
+**Warning**: this procedure doesn't install in a separate prefix, so it may
+overwrite your system binaries.
+
+```
+$ mkdir build && cd build/
+$ meson # Build configuration
+$ ninja # Build
+[ Become root if necessary ]
+$ ninja install # Installation
+```
+
+### Installation in a separate prefix
+
+Just change the above `meson` command by:
+```
+$ meson --prefix /an/other/path
+```
diff --git a/docs/class-diagram.dia b/docs/class-diagram.dia
new file mode 100644
index 0000000..872a5f3
--- /dev/null
+++ b/docs/class-diagram.dia
Binary files differ
diff --git a/docs/common-bugs.md b/docs/common-bugs.md
new file mode 100644
index 0000000..6ca9ba0
--- /dev/null
+++ b/docs/common-bugs.md
@@ -0,0 +1,14 @@
+Common gedit bugs
+=================
+
+This page documents common bugs in gedit. If you find your problem in this page,
+_please do not report a new bug for it_.
+
+Problem with very long lines
+----------------------------
+
+Very long lines (e.g. a wrapped line that takes the whole screen) are not well
+supported by gedit, there can be performance problems or freezes.
+
+[GitLab issue](https://gitlab.gnome.org/GNOME/gtk/issues/229). See also the
+[gedit FAQ](https://wiki.gnome.org/Apps/Gedit/FAQ).
diff --git a/docs/gedit-development-getting-started.md b/docs/gedit-development-getting-started.md
new file mode 100644
index 0000000..4f930af
--- /dev/null
+++ b/docs/gedit-development-getting-started.md
@@ -0,0 +1,100 @@
+gedit development - getting started
+===================================
+
+The following explanations can be improved over time, if you see something
+missing, a feedback is welcome.
+
+Programming languages and paradigms
+-----------------------------------
+
+gedit is mostly written in C, with some plugins in Python or
+[Vala](https://wiki.gnome.org/Projects/Vala/). The build system is in
+[Meson](https://mesonbuild.com/).
+
+The code is object-oriented and event-driven. In C, it's thanks to the use of
+the GObject library (see next section). If you open some `*.c` or `*.h` files,
+you may think “what is this horror?!” but – don't panic – it's just some
+C/GObject boilerplate code, and that boilerplate can be generated by a tool. So
+once you've learned GObject, you will no longer be afraid ;-)
+
+Libraries used
+--------------
+
+As every GNOME application, gedit uses the GLib, GObject and GTK libraries. To
+modify the gedit source code, you should be familiar with those libraries. See
+the [GTK website](https://www.gtk.org/) and the document
+[The GLib/GTK Development Platform – A Getting Started Guide](https://people.gnome.org/~swilmet/glib-gtk-book/).
+
+The main widget used by gedit is GtkTextView, a general-purpose multiline text
+editor. To learn that widget API, read the excellent
+[GtkTextView tutorial](http://www.bravegnu.org/gtktext/) (a bit old but still
+mostly valid). But GtkTextView is not enough for source code edition. gedit
+actually uses the
+[GtkSourceView](https://wiki.gnome.org/Projects/GtkSourceView) library, which
+contains a subclass of GtkTextView with many features useful for a text editor
+or an IDE. But GtkSourceView is not enough to have a full-blown text editor,
+gedit is actually in the process of using more features from the
+[Tepl](https://wiki.gnome.org/Projects/Tepl) library, and to further develop
+Tepl alongside gedit.
+
+For its plugin system, gedit uses the
+[libpeas](https://wiki.gnome.org/Projects/Libpeas) library.
+
+Plugins may have other dependencies, for example the spell-checking plugin uses
+[gspell](https://wiki.gnome.org/Projects/gspell).
+
+gedit architecture
+------------------
+
+The [gedit Git repository](https://gitlab.gnome.org/GNOME/gedit) contains the
+_gedit core_ plus the default plugins. There is also the
+[gedit-plugins Git repository](https://gitlab.gnome.org/GNOME/gedit-plugins)
+for additional official plugins. The gedit core source code is in the `gedit/`
+directory. The plugins are in … `plugins/`!
+
+gedit core provides:
+- A basic text editor.
+- The integration of libpeas, with an API for plugins.
+
+There is a class diagram of gedit core in the file
+[class-diagram.dia](class-diagram.dia) (but it may be outdated, see the Git log
+for that file).
+
+Build/Installation
+------------------
+
+See the file [build.md](build.md).
+
+First contribution
+------------------
+
+See the [Newcomers](https://wiki.gnome.org/Newcomers/) page to start
+contributing to GNOME in general. But perhaps some things explained there are
+not relevant for gedit, in case of doubt the gedit documentation takes
+precedence.
+
+To know how to contribute to gedit specifically, read the
+[README.md](../README.md) and [CONTRIBUTING.md](../CONTRIBUTING.md) files
+present in the Git repository (and then you'll see that the `CONTRIBUTING.md`
+file refers to this file, but please don't end up in an infinite reading loop).
+
+A good way to learn a lot of things is to write a new plugin (as a third-party
+plugin first).
+
+A potentially easy task (but not always) is to fix compilation warnings, for
+example when a deprecated function is used. If you encounter a runtime warning
+or critical message, it is also a good idea to fix it.
+
+Improvements to the documentation (for users or developers) is also useful,
+especially to improve the API reference for developing gedit plugins.
+
+Note that gedit, although simple to use, is old. Some parts of the code is
+legacy code. The remaining tasks to do are often not simple, the codebase needs
+a lot of refactoring, and to do it properly an experienced developer is advised.
+That's why writing plugins is normally easier.
+
+Interesting article to read, written by a GNOME developer:
+[Working on Free Software](http://ometer.com/hacking.html)
+
+Happy hacking!\
+the gedit developers.
diff --git a/docs/how-to-write-a-gedit-plugin.md b/docs/how-to-write-a-gedit-plugin.md
new file mode 100644
index 0000000..69e833e
--- /dev/null
+++ b/docs/how-to-write-a-gedit-plugin.md
@@ -0,0 +1,45 @@
+How to write a gedit plugin
+===========================
+
+The [gedit-development-getting-started.md](gedit-development-getting-started.md)
+documentation is a good start.
+
+Programming language for a gedit plugin
+---------------------------------------
+
+The preferred language is the C language, that way the code can be easily
+refactored to be included in a library.
+
+Rust and Vala plugins are possible too since they are equivalent to C.
+
+Python plugins are possible too.
+
+### What if I prefer to write in Ruby/JS/Scheme/Perl/C#/modula-2/Oz/whatever…
+
+While GObject allows you to use many other languages, using more than one
+interpreter in the same process is not possible, not only because of bloat and
+performance, but also because different interpreted languages cannot manage
+garbage collections of GObjects at the same time: see
+[this email](https://mail.gnome.org/archives/desktop-devel-list/2010-August/msg00036.html).
+
+The gedit developers have chosen Python as the interpreted language.
+
+API reference
+-------------
+
+Build gedit with `-D gtk_doc=true`, you can then browse the API reference in the
+[Devhelp](https://wiki.gnome.org/Apps/Devhelp) application.
+
+To know how to write a plugin, refer to the
+[libpeas](https://wiki.gnome.org/Projects/Libpeas) documentation as well.
+
+More documentation and tips
+---------------------------
+
+More documentation, for example a tutorial, would be useful. In the meantime,
+the recommended thing to do is to see how core gedit plugins are implemented.
+
+### Unofficial documentation and tutorials (may be outdated)
+
+- [Writing plugins in Python](https://wiki.gnome.org/Apps/Gedit/PythonPluginHowTo) (a little outdated)
+- [Writing plugins in Vala](https://wiki.gnome.org/Projects/Vala/Gedit3PluginSample) (maybe outdated)
diff --git a/docs/reference/api-breaks.xml b/docs/reference/api-breaks.xml
new file mode 100644
index 0000000..8057a16
--- /dev/null
+++ b/docs/reference/api-breaks.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
+[
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
+]>
+
+<part id="api-breaks">
+ <title>API Breaks</title>
+
+ <para>
+ 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.
+ </para>
+
+ <para>
+ When it is possible, instead of directly removing an API, that API is first
+ marked as deprecated, and then removed for the next API break. See the
+ <link linkend="api-index-deprecated">index of deprecated symbols</link>.
+ </para>
+
+ <refsect1>
+ <title>3.36.0 -> 3.37.1</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ All previously deprecated APIs have been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The lockdown support has been removed (for the
+ org.gnome.desktop.lockdown GSettings). So the
+ <code>gedit_app_get_lockdown()</code> function has been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>GBOOLEAN_TO_POINTER()</code> and
+ <code>GPOINTER_TO_BOOLEAN()</code> macros have been removed from
+ <code>gedit-utils.h</code>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_utils_get_current_workspace()</code>,
+ <code>gedit_utils_get_window_workspace()</code> and
+ <code>gedit_utils_get_current_viewport()</code> functions have been
+ removed because workspaces information is not available on Wayland.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1>
+ <title>3.34.0 -> 3.35.2</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ All previously deprecated APIs have been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>GeditDocument:use-gvfs-metadata</code> property has been
+ removed. But there was anyway a warning for not using that property in
+ a gedit plugin.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ For <link linkend="gedit-document-get-metadata">gedit_document_get_metadata()</link>
+ and <link linkend="gedit-document-set-metadata">gedit_document_set_metadata()</link>,
+ the key names should now have the prefix <code>"gedit-"</code> with
+ possibly an additional namespace for the plugin name, for example
+ <code>"gedit-spell-foobar"</code>. So the key names are now the same
+ regardless of the operating system, and the key names should no longer
+ start with <code>"metadata::"</code>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1>
+ <title>For previous gedit versions</title>
+ <para>
+ See the
+ <ulink url="https://wiki.gnome.org/Apps/Gedit/Attic/Old_API_Changes">Old API Changes wiki page</ulink>.
+ </para>
+ </refsect1>
+</part>
diff --git a/docs/reference/gedit-docs.xml b/docs/reference/gedit-docs.xml
new file mode 100644
index 0000000..9e32e54
--- /dev/null
+++ b/docs/reference/gedit-docs.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>gedit Reference Manual</title>
+ </bookinfo>
+
+ <part id="api-reference">
+ <title>API Reference</title>
+ <xi:include href="xml/gedit-app.xml"/>
+ <xi:include href="xml/gedit-app-activatable.xml"/>
+ <xi:include href="xml/gedit-commands.xml"/>
+ <xi:include href="xml/gedit-document.xml"/>
+ <xi:include href="xml/gedit-encodings-combo-box.xml"/>
+ <xi:include href="xml/gedit-menu-extension.xml"/>
+ <xi:include href="xml/gedit-message-bus.xml"/>
+ <xi:include href="xml/gedit-message.xml"/>
+ <xi:include href="xml/gedit-progress-info-bar.xml"/>
+ <xi:include href="xml/gedit-statusbar.xml"/>
+ <xi:include href="xml/gedit-tab.xml"/>
+ <xi:include href="xml/gedit-view.xml"/>
+ <xi:include href="xml/gedit-view-activatable.xml"/>
+ <xi:include href="xml/gedit-window.xml"/>
+ <xi:include href="xml/gedit-window-activatable.xml"/>
+ <xi:include href="xml/gedit-debug.xml"/>
+ <xi:include href="xml/gedit-utils.xml"/>
+ </part>
+
+ <xi:include href="api-breaks.xml"/>
+
+ <part id="annexes">
+ <title>Annexes</title>
+
+ <chapter>
+ <title>Object Hierarchy</title>
+ <xi:include href="xml/tree_index.sgml"/>
+ </chapter>
+
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+
+ <index>
+ <title>Index of all symbols</title>
+ <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
+ </index>
+ <index role="deprecated">
+ <title>Index of deprecated symbols</title>
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
+ </index>
+ <index role="3.4">
+ <title>Index of new symbols in 3.4</title>
+ <xi:include href="xml/api-index-3.4.xml"><xi:fallback /></xi:include>
+ </index>
+ <index role="3.14">
+ <title>Index of new symbols in 3.14</title>
+ <xi:include href="xml/api-index-3.14.xml"><xi:fallback /></xi:include>
+ </index>
+ </part>
+</book>
diff --git a/docs/reference/gedit-sections.txt b/docs/reference/gedit-sections.txt
new file mode 100644
index 0000000..1983892
--- /dev/null
+++ b/docs/reference/gedit-sections.txt
@@ -0,0 +1,367 @@
+<SECTION>
+<FILE>gedit-app</FILE>
+<TITLE>GeditApp</TITLE>
+GeditApp
+gedit_app_create_window
+gedit_app_set_window_title
+gedit_app_get_main_windows
+gedit_app_get_documents
+gedit_app_get_views
+gedit_app_process_window_event
+gedit_app_show_help
+<SUBSECTION Standard>
+GEDIT_APP
+GEDIT_IS_APP
+GEDIT_TYPE_APP
+gedit_app_get_type
+GEDIT_APP_CLASS
+GEDIT_IS_APP_CLASS
+GEDIT_APP_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-app-activatable</FILE>
+<TITLE>GeditAppActivatable</TITLE>
+GeditAppActivatable
+gedit_app_activatable_activate
+gedit_app_activatable_deactivate
+gedit_app_activatable_extend_menu
+<SUBSECTION Standard>
+GEDIT_TYPE_APP_ACTIVATABLE
+GEDIT_APP_ACTIVATABLE
+GEDIT_APP_ACTIVATABLE_IFACE
+GEDIT_IS_APP_ACTIVATABLE
+GEDIT_APP_ACTIVATABLE_GET_IFACE
+gedit_app_activatable_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-commands</FILE>
+<TITLE>GeditCommands</TITLE>
+gedit_commands_load_location
+gedit_commands_load_locations
+gedit_commands_save_document
+gedit_commands_save_document_async
+gedit_commands_save_document_finish
+gedit_commands_save_all_documents
+</SECTION>
+
+<SECTION>
+<FILE>gedit-document</FILE>
+<TITLE>GeditDocument</TITLE>
+GeditDocument
+gedit_document_new
+gedit_document_get_file
+gedit_document_get_uri_for_display
+gedit_document_get_short_name_for_display
+gedit_document_get_mime_type
+gedit_document_is_untouched
+gedit_document_is_untitled
+gedit_document_goto_line
+gedit_document_goto_line_offset
+gedit_document_set_language
+gedit_document_get_content_type
+gedit_document_get_metadata
+gedit_document_set_metadata
+gedit_document_set_search_context
+gedit_document_get_search_context
+<SUBSECTION Standard>
+GEDIT_DOCUMENT
+GEDIT_IS_DOCUMENT
+GEDIT_TYPE_DOCUMENT
+gedit_document_get_type
+GEDIT_DOCUMENT_CLASS
+GEDIT_IS_DOCUMENT_CLASS
+GEDIT_DOCUMENT_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-encodings-combo-box</FILE>
+<TITLE>GeditEncodingsComboBox</TITLE>
+GeditEncodingsComboBox
+gedit_encodings_combo_box_new
+gedit_encodings_combo_box_get_selected_encoding
+gedit_encodings_combo_box_set_selected_encoding
+<SUBSECTION Standard>
+GEDIT_ENCODINGS_COMBO_BOX
+GEDIT_IS_ENCODINGS_COMBO_BOX
+GEDIT_TYPE_ENCODINGS_COMBO_BOX
+gedit_encodings_combo_box_get_type
+GEDIT_ENCODINGS_COMBO_BOX_CLASS
+GEDIT_IS_ENCODINGS_COMBO_BOX_CLASS
+GEDIT_ENCODINGS_COMBO_BOX_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-message-bus</FILE>
+<TITLE>GeditMessageBus</TITLE>
+GeditMessageBus
+GeditMessageCallback
+GeditMessageBusForeach
+gedit_message_bus_get_default
+gedit_message_bus_new
+gedit_message_bus_lookup
+gedit_message_bus_register
+gedit_message_bus_unregister
+gedit_message_bus_unregister_all
+gedit_message_bus_is_registered
+gedit_message_bus_foreach
+gedit_message_bus_connect
+gedit_message_bus_disconnect
+gedit_message_bus_disconnect_by_func
+gedit_message_bus_block
+gedit_message_bus_block_by_func
+gedit_message_bus_unblock
+gedit_message_bus_unblock_by_func
+gedit_message_bus_send_message
+gedit_message_bus_send_message_sync
+gedit_message_bus_send
+gedit_message_bus_send_sync
+<SUBSECTION Standard>
+GEDIT_MESSAGE_BUS
+GEDIT_MESSAGE_BUS_CONST
+GEDIT_IS_MESSAGE_BUS
+GEDIT_TYPE_MESSAGE_BUS
+gedit_message_bus_get_type
+GEDIT_MESSAGE_BUS_CLASS
+GEDIT_IS_MESSAGE_BUS_CLASS
+GEDIT_MESSAGE_BUS_GET_CLASS
+GeditMessageBusPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gedit-message</FILE>
+<TITLE>GeditMessage</TITLE>
+GeditMessage
+gedit_message_get_object_path
+gedit_message_get_method
+gedit_message_type_has
+gedit_message_type_check
+gedit_message_has
+gedit_message_is_valid_object_path
+gedit_message_type_identifier
+<SUBSECTION Standard>
+GEDIT_MESSAGE
+GEDIT_MESSAGE_CONST
+GEDIT_IS_MESSAGE
+GEDIT_TYPE_MESSAGE
+gedit_message_get_type
+GEDIT_MESSAGE_CLASS
+GEDIT_IS_MESSAGE_CLASS
+GEDIT_MESSAGE_GET_CLASS
+GeditMessagePrivate
+</SECTION>
+
+<SECTION>
+<FILE>gedit-progress-info-bar</FILE>
+<TITLE>GeditProgressInfoBar</TITLE>
+GeditProgressInfoBar
+gedit_progress_info_bar_new
+gedit_progress_info_bar_set_icon_name
+gedit_progress_info_bar_set_markup
+gedit_progress_info_bar_set_text
+gedit_progress_info_bar_set_fraction
+gedit_progress_info_bar_pulse
+<SUBSECTION Standard>
+GEDIT_PROGRESS_INFO_BAR
+GEDIT_IS_PROGRESS_INFO_BAR
+GEDIT_TYPE_PROGRESS_INFO_BAR
+gedit_progress_info_bar_get_type
+GEDIT_PROGRESS_INFO_BAR_CLASS
+GEDIT_IS_PROGRESS_INFO_BAR_CLASS
+GEDIT_PROGRESS_INFO_BAR_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-statusbar</FILE>
+<TITLE>GeditStatusbar</TITLE>
+GeditStatusbar
+gedit_statusbar_new
+gedit_statusbar_set_window_state
+gedit_statusbar_set_overwrite
+gedit_statusbar_clear_overwrite
+gedit_statusbar_flash_message
+<SUBSECTION Standard>
+GEDIT_STATUSBAR
+GEDIT_IS_STATUSBAR
+GEDIT_TYPE_STATUSBAR
+gedit_statusbar_get_type
+GEDIT_STATUSBAR_CLASS
+GEDIT_IS_STATUSBAR_CLASS
+GEDIT_STATUSBAR_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-tab</FILE>
+<TITLE>GeditTab</TITLE>
+GeditTab
+GeditTabState
+gedit_tab_get_view
+gedit_tab_get_document
+gedit_tab_get_from_document
+gedit_tab_get_state
+gedit_tab_get_auto_save_enabled
+gedit_tab_set_auto_save_enabled
+gedit_tab_get_auto_save_interval
+gedit_tab_set_auto_save_interval
+gedit_tab_set_info_bar
+<SUBSECTION Standard>
+GEDIT_TAB
+GEDIT_IS_TAB
+GEDIT_TYPE_TAB
+gedit_tab_get_type
+GEDIT_TAB_CLASS
+GEDIT_IS_TAB_CLASS
+GEDIT_TAB_GET_CLASS
+GEDIT_TYPE_TAB_STATE
+gedit_tab_state_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-view</FILE>
+GeditViewPrivate
+<TITLE>GeditView</TITLE>
+GeditView
+gedit_view_new
+gedit_view_cut_clipboard
+gedit_view_copy_clipboard
+gedit_view_paste_clipboard
+gedit_view_delete_selection
+gedit_view_select_all
+gedit_view_scroll_to_cursor
+gedit_view_set_font
+<SUBSECTION Standard>
+GEDIT_VIEW
+GEDIT_IS_VIEW
+GEDIT_TYPE_VIEW
+gedit_view_get_type
+GEDIT_VIEW_CLASS
+GEDIT_IS_VIEW_CLASS
+GEDIT_VIEW_GET_CLASS
+</SECTION>
+
+<SECTION>
+<FILE>gedit-view-activatable</FILE>
+<TITLE>GeditViewActivatable</TITLE>
+GeditViewActivatable
+gedit_view_activatable_activate
+gedit_view_activatable_deactivate
+<SUBSECTION Standard>
+GEDIT_TYPE_VIEW_ACTIVATABLE
+GEDIT_VIEW_ACTIVATABLE
+GEDIT_VIEW_ACTIVATABLE_IFACE
+GEDIT_IS_VIEW_ACTIVATABLE
+GEDIT_VIEW_ACTIVATABLE_GET_IFACE
+gedit_view_activatable_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-window</FILE>
+<TITLE>GeditWindow</TITLE>
+GeditWindow
+GeditWindowState
+gedit_window_create_tab
+gedit_window_create_tab_from_location
+gedit_window_create_tab_from_stream
+gedit_window_close_tab
+gedit_window_close_all_tabs
+gedit_window_close_tabs
+gedit_window_get_active_tab
+gedit_window_set_active_tab
+gedit_window_get_active_view
+gedit_window_get_active_document
+gedit_window_get_documents
+gedit_window_get_unsaved_documents
+gedit_window_get_views
+gedit_window_get_group
+gedit_window_get_side_panel
+gedit_window_get_bottom_panel
+gedit_window_get_statusbar
+gedit_window_get_state
+gedit_window_get_tab_from_location
+gedit_window_get_message_bus
+<SUBSECTION Standard>
+GEDIT_WINDOW
+GEDIT_IS_WINDOW
+GEDIT_TYPE_WINDOW
+gedit_window_get_type
+GEDIT_WINDOW_CLASS
+GEDIT_IS_WINDOW_CLASS
+GEDIT_WINDOW_GET_CLASS
+GEDIT_TYPE_WINDOW_STATE
+GeditWindowPrivate
+gedit_window_state_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-window-activatable</FILE>
+<TITLE>GeditWindowActivatable</TITLE>
+GeditWindowActivatable
+gedit_window_activatable_activate
+gedit_window_activatable_deactivate
+gedit_window_activatable_update_state
+<SUBSECTION Standard>
+GEDIT_TYPE_WINDOW_ACTIVATABLE
+GEDIT_WINDOW_ACTIVATABLE
+GEDIT_WINDOW_ACTIVATABLE_IFACE
+GEDIT_IS_WINDOW_ACTIVATABLE
+GEDIT_WINDOW_ACTIVATABLE_GET_IFACE
+gedit_window_activatable_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-debug</FILE>
+GeditDebugSection
+DEBUG_VIEW
+DEBUG_PREFS
+DEBUG_WINDOW
+DEBUG_PANEL
+DEBUG_PLUGINS
+DEBUG_TAB
+DEBUG_DOCUMENT
+DEBUG_COMMANDS
+DEBUG_APP
+DEBUG_UTILS
+DEBUG_METADATA
+gedit_debug_init
+gedit_debug
+gedit_debug_message
+gedit_debug_plugin_message
+<SUBSECTION Standard>
+GEDIT_TYPE_DEBUG_SECTION
+gedit_debug_section_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-menu-extension</FILE>
+GeditMenuExtension
+gedit_menu_extension_new
+gedit_menu_extension_append_menu_item
+gedit_menu_extension_prepend_menu_item
+gedit_menu_extension_remove_items
+<SUBSECTION Standard>
+GEDIT_IS_MENU_EXTENSION
+GEDIT_IS_MENU_EXTENSION_CLASS
+GEDIT_MENU_EXTENSION
+GEDIT_MENU_EXTENSION_CLASS
+GEDIT_MENU_EXTENSION_CONST
+GEDIT_MENU_EXTENSION_GET_CLASS
+GEDIT_TYPE_MENU_EXTENSION
+GeditMenuExtensionClass
+gedit_menu_extension_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gedit-utils</FILE>
+gedit_utils_menu_position_under_tree_view
+gedit_utils_set_atk_name_description
+gedit_utils_basename_for_display
+gedit_utils_drop_get_uris
+gedit_utils_get_compression_type_from_content_type
+gedit_utils_is_valid_location
+gedit_utils_location_get_dirname_for_display
+gedit_utils_set_direct_save_filename
+gedit_utils_newline_type_to_string
+gedit_warning
+gedit_utils_decode_uri
+</SECTION>
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 0000000..7e4fc01
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,42 @@
+html_dir = get_option('prefix') / gnome.gtkdoc_html_dir('gedit')
+
+glib_docpath = dependency('glib-2.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/glib'
+gobject_docpath = dependency('gobject-2.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/gobject'
+gio_docpath = dependency('gio-2.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/gio'
+gdk_docpath = dependency('gdk-3.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/gdk3'
+gtk_docpath = dependency('gtk+-3.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/gtk3'
+gsv_docpath = dependency('gtksourceview-4').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/gtksourceview-4.0'
+amtk_docpath = dependency('amtk-5').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/amtk-5.0'
+tepl_docpath = dependency('tepl-5').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/tepl-5'
+libpeas_docpath = dependency('libpeas-1.0').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/libpeas'
+
+gedit_doc_dep = declare_dependency(
+ link_with: libgedit_shared_lib,
+ include_directories: root_include_dir,
+ dependencies: deps_basic_list,
+)
+
+gnome.gtkdoc(
+ 'gedit',
+ main_xml: 'gedit-docs.xml',
+ src_dir: include_directories('../../gedit/'),
+ dependencies: gedit_doc_dep,
+ scan_args: ['--rebuild-types'],
+ fixxref_args: [
+ '--html-dir=@0@'.format(html_dir),
+ '--extra-dir=@0@'.format(glib_docpath),
+ '--extra-dir=@0@'.format(gobject_docpath),
+ '--extra-dir=@0@'.format(gio_docpath),
+ '--extra-dir=@0@'.format(gdk_docpath),
+ '--extra-dir=@0@'.format(gtk_docpath),
+ '--extra-dir=@0@'.format(gsv_docpath),
+ '--extra-dir=@0@'.format(amtk_docpath),
+ '--extra-dir=@0@'.format(tepl_docpath),
+ '--extra-dir=@0@'.format(libpeas_docpath),
+ ],
+ content_files: [
+ 'api-breaks.xml'
+ ],
+ ignore_headers: libgedit_private_headers,
+ install: true,
+)
diff --git a/docs/roadmap.md b/docs/roadmap.md
new file mode 100644
index 0000000..f2749f6
--- /dev/null
+++ b/docs/roadmap.md
@@ -0,0 +1,127 @@
+gedit roadmap
+=============
+
+This page contains the plans for major code changes we hope to get done in the
+future.
+
+See also the
+[Tepl roadmap](https://gitlab.gnome.org/GNOME/tepl/blob/master/docs/roadmap.md).
+
+See the [NEWS file](../NEWS) for a detailed history.
+
+If you often contribute to gedit, feel free to add your plans here.
+
+Making the gedit source code more re-usable
+-------------------------------------------
+
+Status: **[in progress](https://wiki.gnome.org/Apps/Gedit/ReusableCode)** (this
+is an ongoing effort)
+
+Recently done:
+- gedit 3.36: start to use the [Tepl](https://wiki.gnome.org/Projects/Tepl)
+ library.
+
+Next steps:
+- Use more features from the [Tepl](https://wiki.gnome.org/Projects/Tepl)
+ library, and develop Tepl alongside gedit. The goal is to reduce the amount
+ of code in gedit, by having re-usable code in Tepl instead.
+
+New version of gedit on Windows
+-------------------------------
+
+Status: **done**
+
+[gedit on the Microsoft Store](https://www.microsoft.com/store/apps/9PL1J21XF0PT).
+
+Making gedit suitable on a smartphone
+-------------------------------------
+
+Status: **[in progress](https://gitlab.gnome.org/GNOME/Initiatives/-/issues/13)**
+
+gedit is installed by default with the [Librem 5](https://puri.sm/products/librem-5/)
+smartphone.
+
+Replace search and replace dialog window by an horizontal bar below the text
+----------------------------------------------------------------------------
+
+Status: **[todo](https://gitlab.gnome.org/GNOME/gedit/-/issues/288)**
+
+To not hide the text.
+
+Changing character encoding and line ending type of opened files
+----------------------------------------------------------------
+
+Status: **todo**
+
+To fully support GtkFileChooserNative and better sandboxing.
+
+Note that the integrated file browser plugin needs access at least to the whole
+home directory. But the work on this task (with the code in Tepl) would allow
+better sandboxing for other text editors that don't have an integrated file
+browser.
+
+Handle problem with large files or files containing very long lines
+-------------------------------------------------------------------
+
+Status: **started in Tepl**
+
+As a stopgap measure, prevent those files from being loaded in the first place,
+show first an infobar with a warning message.
+
+Longer-term solution: fix the performance problem in GTK for very long lines.
+
+For very big file size (e.g. a 1GB log file or SQL dump), it's more complicated
+because the whole file is loaded in memory. It needs another data structure
+implementation for the GtkTextView API.
+
+Do not allow incompatible plugins to be loaded
+----------------------------------------------
+
+Status: **todo**
+
+There are currently no checks to see if a plugin is compatible with the gedit
+version. Currently enabling a plugin can make gedit to crash.
+
+Solution: include the gedit plugin API version in the directory names where
+plugins need to be installed. Better solution: see
+[this libpeas feature request](https://bugzilla.gnome.org/show_bug.cgi?id=642694#c15).
+
+Be able to quit the application with all documents saved, and restored on next start
+------------------------------------------------------------------------------------
+
+Status: **todo**
+
+Even for unsaved and untitled files, be able to quit gedit, restart it later and
+come back to the state before with all tabs restored.
+
+Better C language support
+-------------------------
+
+Status: **todo**
+
+- Code completion with Clang.
+- Align function parameters on the parenthesis (function definition /
+ function call).
+- Generate and insert GTK-Doc comment header for a function.
+- Split/join lines of a C comment with `*` at beginning of each line, ditto when
+ pressing Enter (insert `*` at the beginning of the new line).
+
+Improve printing UI workflow
+----------------------------
+
+Status: **todo**
+
+Implement it like in Firefox, show first a preview of the file to print.
+
+Avoid the need for gedit forks
+------------------------------
+
+Status: **todo**
+
+There are several forks of gedit available: [Pluma](https://github.com/mate-desktop/pluma)
+(from the MATE desktop environment) and [xed](https://github.com/linuxmint/xed)
+(from the Linux Mint distribution). xed is a fork of Pluma, and Pluma is a fork
+of gedit.
+
+The goal is to make gedit suitable for MATE and Linux Mint. This can be
+implemented by adding a “gedit-classic” configuration option.