diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/build.md | 95 | ||||
-rw-r--r-- | docs/class-diagram.dia | bin | 0 -> 6866 bytes | |||
-rw-r--r-- | docs/common-bugs.md | 38 | ||||
-rw-r--r-- | docs/gedit-development-getting-started.md | 95 | ||||
-rw-r--r-- | docs/how-to-write-a-gedit-plugin.md | 45 | ||||
-rw-r--r-- | docs/reference/api-breaks.xml | 199 | ||||
-rw-r--r-- | docs/reference/gedit-docs.xml | 58 | ||||
-rw-r--r-- | docs/reference/gedit-sections.txt | 329 | ||||
-rw-r--r-- | docs/reference/meson.build | 42 | ||||
-rw-r--r-- | docs/roadmap-done.md | 50 | ||||
-rw-r--r-- | docs/roadmap.md | 85 |
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 Binary files differnew file mode 100644 index 0000000..872a5f3 --- /dev/null +++ b/docs/class-diagram.dia 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. |