diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/build.md | 92 | ||||
-rw-r--r-- | docs/class-diagram.dia | bin | 0 -> 6866 bytes | |||
-rw-r--r-- | docs/common-bugs.md | 14 | ||||
-rw-r--r-- | docs/gedit-development-getting-started.md | 100 | ||||
-rw-r--r-- | docs/how-to-write-a-gedit-plugin.md | 45 | ||||
-rw-r--r-- | docs/reference/api-breaks.xml | 93 | ||||
-rw-r--r-- | docs/reference/gedit-docs.xml | 59 | ||||
-rw-r--r-- | docs/reference/gedit-sections.txt | 367 | ||||
-rw-r--r-- | docs/reference/meson.build | 42 | ||||
-rw-r--r-- | docs/roadmap.md | 127 |
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 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..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. |