summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 17:42:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 17:42:51 +0000
commitba429d344132c088177e853cce8ff7181570b221 (patch)
tree87ebf15269b4301737abd1735baabba71be93622 /docs
parentInitial commit. (diff)
downloadgedit-ba429d344132c088177e853cce8ff7181570b221.tar.xz
gedit-ba429d344132c088177e853cce8ff7181570b221.zip
Adding upstream version 44.2.upstream/44.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs')
-rw-r--r--docs/build.md95
-rw-r--r--docs/class-diagram.diabin0 -> 6866 bytes
-rw-r--r--docs/common-bugs.md38
-rw-r--r--docs/gedit-development-getting-started.md95
-rw-r--r--docs/how-to-write-a-gedit-plugin.md45
-rw-r--r--docs/reference/api-breaks.xml199
-rw-r--r--docs/reference/gedit-docs.xml58
-rw-r--r--docs/reference/gedit-sections.txt329
-rw-r--r--docs/reference/meson.build42
-rw-r--r--docs/roadmap-done.md50
-rw-r--r--docs/roadmap.md85
11 files changed, 1036 insertions, 0 deletions
diff --git a/docs/build.md b/docs/build.md
new file mode 100644
index 0000000..4958872
--- /dev/null
+++ b/docs/build.md
@@ -0,0 +1,95 @@
+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.
+
+There is also [Imovo](https://gitlab.gnome.org/swilmet/imovo), a more minimal
+tool.
+
+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..b06b1d9
--- /dev/null
+++ b/docs/common-bugs.md
@@ -0,0 +1,38 @@
+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/gedit/-/issues/513).
+
+Problem with very large files
+-----------------------------
+
+Large files are not well supported, gedit should ask for confirmation when
+opening such files, providing a solution.
+
+[GitLab issue](https://gitlab.gnome.org/GNOME/gedit/-/issues/11).
+
+Hyphen/dash inserted for text wrapping
+--------------------------------------
+
+It should be disabled in a text editor like gedit, the hyphen is not part of
+the content.
+
+[GitLab issue](https://gitlab.gnome.org/GNOME/gedit/issues/365).
+
+Recently fixed
+--------------
+
+### View does not scroll to the end of the text in some cases (text cut off)
+
+Fixed in 40.2, 41.1, 42.2 and >= 43, will normally be rolled out soon.
+
+[GitLab issue](https://gitlab.gnome.org/GNOME/gedit/issues/42).
diff --git a/docs/gedit-development-getting-started.md b/docs/gedit-development-getting-started.md
new file mode 100644
index 0000000..8cc4c56
--- /dev/null
+++ b/docs/gedit-development-getting-started.md
@@ -0,0 +1,95 @@
+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
+[Meson](https://mesonbuild.com/) build system is used.
+
+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 be frightened 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://informatique-libre.be/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://gitlab.gnome.org/swilmet/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://gitlab.gnome.org/GNOME/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. And as can be expected, the plugins are in …*drum roll*: `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).
+
+More information
+----------------
+
+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
+[CONTRIBUTING.md](../CONTRIBUTING.md) file.
+
+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 and would benefit from some refactoring. That's why writing plugins
+is normally easier.
+
+ 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..7e7e942
--- /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, C++ 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..8175564
--- /dev/null
+++ b/docs/reference/api-breaks.xml
@@ -0,0 +1,199 @@
+<?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>43 -> 44</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ When an URI is added to the
+ <link linkend="GtkRecentManager">GtkRecentManager</link>,
+ the <code>groups</code> field of
+ <link linkend="GtkRecentData">GtkRecentData</link>
+ is no longer set. You can rely on the application name instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_document_get_language()</code> function has been
+ removed, use
+ <link linkend="gtk-source-buffer-get-language">gtk_source_buffer_get_language()</link>
+ instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_document_get_short_name_for_display()</code> function has been
+ removed, use
+ <link linkend="tepl-file-get-short-name">tepl_file_get_short_name()</link>
+ instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_document_is_untitled()</code> function has been
+ removed, use
+ <link linkend="tepl-file-get-location">tepl_file_get_location()</link>
+ instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_statusbar_set_overwrite()</code>
+ and <code>gedit_statusbar_clear_overwrite()</code>
+ functions have been removed.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <refsect1>
+ <title>3.38 -> 40</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ All previously deprecated APIs have been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>GeditProgressInfoBar</code> class has been removed, you can
+ use <link linkend="TeplProgressInfoBar">TeplProgressInfoBar</link>
+ instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <link linkend="GeditDocument">GeditDocument</link> is now a subclass
+ of <link linkend="TeplBuffer">TeplBuffer</link>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>GeditDocument::cursor-moved</code> signal has been removed.
+ You can use the <link linkend="TeplBuffer">TeplBuffer</link> API
+ instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_document_get_uri_for_display()</code> function has
+ been removed from the public API.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>GeditDocument:shortname</code> property has been removed.
+ You can use the <link linkend="TeplFile">TeplFile</link> API instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_document_is_untouched()</code> function has been
+ removed. You can use the <link linkend="TeplBuffer">TeplBuffer</link>
+ API instead.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <code>gedit_view_set_font()</code> function has been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>DEBUG_METADATA</code> has been removed.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </refsect1>
+
+ <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..a0dc624
--- /dev/null
+++ b/docs/reference/gedit-docs.xml
@@ -0,0 +1,58 @@
+<?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-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..22922b4
--- /dev/null
+++ b/docs/reference/gedit-sections.txt
@@ -0,0 +1,329 @@
+<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_mime_type
+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-statusbar</FILE>
+<TITLE>GeditStatusbar</TITLE>
+GeditStatusbar
+gedit_statusbar_new
+gedit_statusbar_set_window_state
+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
+<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
+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
+</SECTION>
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 0000000..9a9c414
--- /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'
+tepl_docpath = dependency('tepl-6').get_pkgconfig_variable('prefix') / 'share/gtk-doc/html/tepl-6'
+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-done.md b/docs/roadmap-done.md
new file mode 100644
index 0000000..41b68da
--- /dev/null
+++ b/docs/roadmap-done.md
@@ -0,0 +1,50 @@
+gedit roadmap - done tasks
+==========================
+
+Documentation for contributors
+------------------------------
+
+Write a guide to get started with gedit development.
+
+Done during the GNOME 3.34 development cycle.
+
+Tepl-ification of the gedit core
+--------------------------------
+
+- gedit 3.36:
+ - Start to use the Tepl library.
+ - Use some Tepl utility functions.
+ - Use TeplFileMetadata, remove GeditMetadataManager.
+- gedit 3.38:
+ - Move some utility functions to the Tepl library.
+ - Refactor and move some I/O error infobars to Tepl.
+ - GeditView now inherits from TeplView.
+ - Port to the new Tepl metadata API.
+ - Use TeplStyleSchemeChooserWidget in the preferences dialog.
+ - Create GeditFactory class, subclass of TeplAbstractFactory.
+- gedit 40:
+ - Use `tepl_pango_font_description_to_css()`.
+ - Use TeplLanguageChooser's, for choosing a language for the syntax
+ highlighting. Remove GeditHighlightModeSelector and
+ GeditHighlightModeDialog.
+ - Use TeplProgressInfoBar. Remove GeditProgressInfoBar.
+ - GeditDocument now inherits from TeplBuffer, start to use the
+ TeplBuffer and TeplFile APIs.
+
+Tepl-ification of the gedit plugins
+-----------------------------------
+
+- gedit 40:
+ - Draw Spaces plugin: new implementation based on TeplSpaceDrawerPrefs.
+
+Other done tasks in gedit plugins
+---------------------------------
+
+- gedit 40:
+ - Smart Spaces plugin: new implementation based on a GtkSourceView feature.
+
+New version of gedit on Windows
+-------------------------------
+
+gedit is available in [MSYS2](https://www.msys2.org/). The integration with
+Windows is not perfect, but it mostly works.
diff --git a/docs/roadmap.md b/docs/roadmap.md
new file mode 100644
index 0000000..ae5e770
--- /dev/null
+++ b/docs/roadmap.md
@@ -0,0 +1,85 @@
+gedit roadmap
+=============
+
+This page contains the plans for major code changes we hope to get done in the
+future.
+
+See the [roadmap-done.md](roadmap-done.md) file for done tasks.
+
+See the [NEWS file](../NEWS) for a detailed history.
+
+See also the
+[Tepl roadmap](https://gitlab.gnome.org/swilmet/tepl/-/blob/main/docs/roadmap.md).
+
+Continue to make the gedit source code more re-usable
+-----------------------------------------------------
+
+Status: **in progress** (this is an ongoing effort)
+
+Next steps:
+- Use more features from the 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.
+
+Replace search & replace dialog window by an horizontal bar
+-----------------------------------------------------------
+
+Status: **todo**
+
+To not occlude the text.
+
+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.
+
+Improve the workflow for printing to paper
+------------------------------------------
+
+Status: **todo**
+
+Show first a preview of the file to print and do the configuration from there.
+
+Handle problem with large files or files containing very long lines
+-------------------------------------------------------------------
+
+Status: **started in Tepl**
+
+See the [common-bugs.md](common-bugs.md) file.
+
+Use native file chooser dialog windows (GtkFileChooserNative)
+-------------------------------------------------------------
+
+Status: **in progress**
+
+To have the native file chooser on MS Windows, and use the Flatpak portal.
+
+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).
+
+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. Or implement it
+similarly to LibreOffice, to give the user a choice between several UI
+paradigms.