.. _doc_editor_style_guide:

Editor style guide
==================

Introduction
------------

Thanks for your interest in contributing to the Godot editor!

This page describes the grammar and writing style used throughout the Godot
editor. Following this style guide will help your contribution get merged faster
since there will be fewer review steps required.

You may also be interested in reading the `latest documentation for the editor architecture <https://docs.godotengine.org/en/latest/engine_details/editor/index.html>`__.

Writing style
-------------

- **Write messages (errors, warnings, ...) as full sentences.** They should start
  with an uppercase letter and end with a period.
- **Try to keep sentences short.** This makes it more likely that their translations
  will be short as well, which is a good thing to avoid UI bugs.
- **Use contractions.** For example, use "isn't" instead of "is not". An exception
  to this rule can be made when you specifically want to emphasize one of the
  contraction's words.
- **Use double quotes in messages** (``""``) instead of single quotes (``''``).
  Double quotes should be used to quote user input, file paths and possibly
  other things depending on the context.

.. seealso::

    Try to follow the :ref:`doc_docs_writing_guidelines` in addition to the
    guidelines outlined above.

Button and menu texts
---------------------

Capitalize text in buttons and menu actions:

- **Good:** *Open Editor Data Folder*
- **Bad:** *Open editor data folder*

If a menu action opens a modal dialog, suffix it with an ellipsis (``...``).

- **Good:** *Editor Settings...*
- **Bad:** *Editor Settings*

Inspector sections
------------------

In general, don't create sections that contain less than 3 items. Sections that
contain few items make it difficult to navigate the inspector, while missing the
benefits of using sections such as folding.

There are some valid exceptions for this, such as material features in
`StandardMaterial3D <https://docs.godotengine.org/en/stable/classes/class_standardmaterial3d.html>`__.

This advice also applies to the Project Settings and Editor Settings.

Inspector performance hints
---------------------------

Enum properties that noticeably impact performance should have a performance
hint associated. The hint should refer to the *absolute* performance impact,
rather than being relative to the other options provided in the enum. Here are
some examples taken from the Godot editor:

- **Screen-space antialiasing:** *Disabled (Fastest), FXAA (Fast)*
- **MSAA quality:** *Disabled (Fastest), 2x (Fast), 4x (Average), 8x (Slow), 16x
  (Slower)*
- **DirectionalLight mode:** *Orthogonal (Fast), PSSM 2 Splits
  (Average), PSSM 4 Splits (Slow)*

For consistency, try to stick to the terms below (from fastest to slowest):

- *Fastest, Faster, Fast, Average, Slow, Slower, Slowest*

Their usage doesn't have to be contiguous. For example, you can use only "Fast"
and "Slow" from the list above.

If you're adding a new enum, its values should be ordered from the fastest
option to the slowest option.

Tooltips
--------

Consider adding tooltips whenever the action performed by a button or menu
action isn't obvious. You can also provide additional context or highlight
caveats in the tooltip.

You can do this by calling ``set_tooltip(TTR("Text here."))`` on the
Control-based node in question. If the tooltip is particularly long (more than
~80 characters), wrap it over several lines by adding line breaks using ``\n``.

Tooltips should follow the writing style described above. In addition to this,
use indicative mood instead of imperative mood:

- **Good:** *Computes global illumination for the selected GIProbe.*
- **Bad:** *Compute global illumination for the selected GIProbe.*
