Cleanup: Grammar: Fix uses of "for e.g."

e.g. stands for "exempli gratia" in Latin which means "for example".
The best way to make sure it makes sense when writing is to just expand
it to "for example". In these cases where the text was "for e.g.", that
leaves us with "for for example" which makes no sense. This commit fixes
all 110 cases, mostly just just replacing the words with "for example",
but also restructuring the text a bit more in a few cases, mostly by
moving "e.g." to the beginning of a list in parentheses.

Pull Request: https://projects.blender.org/blender/blender/pulls/139596
This commit is contained in:
Hans Goudey 2025-05-29 21:21:18 +02:00 committed by Hans Goudey
parent 5747f839e8
commit 91803e130f
74 changed files with 116 additions and 114 deletions

View File

@ -24,7 +24,7 @@ Blender Convenience Targets
* ccache: Use ccache for faster rebuilds.
Note: when passing in multiple targets their order is not important.
So for a fast build you can for e.g. run 'make lite ccache ninja'.
For example, fo a fast build you can run 'make lite ccache ninja'.
Note: passing the argument 'BUILD_DIR=path' when calling make will override the default build dir.
Note: passing the argument 'BUILD_CMAKE_ARGS=args' lets you add cmake arguments.

View File

@ -120,7 +120,7 @@ PACKAGES_FOR_LIBS=(
yasm
# NOTE(@ideasman42): while `python39` is available, the default Python version is 3.6.
# This is used for the `python3-mako` package for e.g.
# For example, this is used for the `python3-mako` package
# So use the "default" system Python since it means it's most compatible with other packages.
python3
# Required by: `external_mesa`.

View File

@ -90,7 +90,7 @@ However, when linking in library data from another blend-file naming collisions
so it's best to avoid referencing data by name at all.
This can be tricky at times and not even Blender handles this correctly in some cases
(when selecting the modifier object for e.g. you can't select between multiple objects with the same name),
(when selecting the modifier object for example, you can't select between multiple objects with the same name),
but it's still good to try avoiding these problems in this area.
If you need to select between local and library data, there is a feature in ``bpy.data`` members to allow for this.

View File

@ -784,11 +784,11 @@ def pyfunc2sphinx(ident, fw, module_name, type_name, identifier, py_func, is_cla
"""
if type(py_func) == MethodType:
# Including methods means every operators "poll" function for e.g.
# Including methods means every operators "poll" function example
# would be listed in documentation which isn't useful.
#
# However excluding all of them is also incorrect as it means class methods defined
# in `bpy_types.py` for e.g. are excluded, making some utility functions entirely hidden.
# However, excluding all of them is also incorrect as it means class methods defined
# in `bpy_types.py` for example are excluded, making some utility functions entirely hidden.
if (bl_rna := getattr(py_func.__self__, "bl_rna", None)) is not None:
if bl_rna.functions.get(identifier) is not None:
return

View File

@ -1645,7 +1645,7 @@ void BlenderSync::sync_materials(BL::Depsgraph &b_depsgraph, bool update_all)
* redundant shader nodes might be removed which prevents loading
* unnecessary attributes later.
*
* However, since graph simplification also accounts for e.g. mix
* However, since graph simplification also accounts for mix
* weight, this would cause frequent expensive resyncs in interactive
* sessions, so for those sessions optimization is only performed
* right before compiling.

View File

@ -163,7 +163,7 @@ void BlenderSync::sync_recalc(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d
const bool is_light = !can_have_geometry && object_is_light(b_ob);
if (b_ob.is_instancer() && b_update.is_updated_shading()) {
/* Needed for e.g. object color updates on instancer. */
/* Needed for object color updates on instancer, among other things. */
object_map.set_recalc(b_ob);
}

View File

@ -168,7 +168,7 @@ void osl_eval_nodes<SHADER_TYPE_SURFACE>(const ThreadKernelGlobalsCPU *kg,
sd->P = P;
sd->dP = dP;
/* Apply bump output to sd->N since it's used for e.g. shadow terminator logic. */
/* Apply bump output to sd->N since it's used for shadow terminator logic, for example. */
sd->N = TO_FLOAT3(globals->N);
globals->P = TO_VEC3(P);

View File

@ -251,7 +251,7 @@ ccl_device_inline void osl_eval_nodes(KernelGlobals kg,
sd->P = P;
sd->dP = dP;
/* Apply bump output to sd->N since it's used for e.g. shadow terminator logic. */
/* Apply bump output to sd->N since it's used for shadow terminator logic, for example. */
sd->N = globals.N;
globals.P = P;

View File

@ -1764,7 +1764,7 @@ struct KernelWorkTile {
/* Shader Evaluation.
*
* Position on a primitive on an object at which we want to evaluate the
* shader for e.g. mesh displacement or light importance map. */
* shader for example mesh displacement or light importance map. */
struct KernelShaderEvalInput {
int object;

View File

@ -1488,8 +1488,8 @@ struct GWL_Display {
* seat which prevents events from any other seat.
*
* NOTE(@ideasman42): This could be extended and developed further extended to support
* an active seat per window (for e.g.), basic support is sufficient for now as currently isn't
* a widely used feature.
* an active seat per window (for example), basic support is sufficient for now as currently
* isn't a widely used feature.
*/
int seats_active_index = 0;
@ -1688,7 +1688,7 @@ using GWL_RegistryHandler_UpdateFn = void (*)(GWL_Display *display,
* Remove callback for object registry.
* \param display: The display which holes a reference to the global object.
* \param user_data: Optional reference to a sub element of `display`,
* use for outputs or seats for e.g. when the display may hold multiple references.
* use for outputs or seats, for example when the display may hold multiple references.
* \param on_exit: Enabled when freeing on exit.
* When true the consistency of references between objects should be kept valid.
* Otherwise it can be assumed that all objects will be freed and none will be used again,
@ -1848,13 +1848,13 @@ static void gwl_registry_entry_remove_all(GWL_Display *display)
*
* \param interface_slot_exclude: Skip updating slots of this type.
* Note that while harmless dependencies only exist between different types,
* so there is no reason to update all other outputs that an output was removed (for e.g.).
* so there is no reason to update all other outputs that an output was removed (for example).
* Pass as -1 to update all slots.
*
* NOTE(@ideasman42): Updating all other items on a single change is typically worth avoiding.
* In practice this isn't a problem as so there are so few elements in `display->registry_entry`,
* so few use update functions and adding/removal at runtime is rarely called (plugging/unplugging)
* hardware for e.g. So while it's possible to store dependency links to avoid unnecessary
* hardware for example So while it's possible to store dependency links to avoid unnecessary
* looping over data - it ends up being a non issue.
*/
static void gwl_registry_entry_update_all(GWL_Display *display, const int interface_slot_exclude)
@ -1992,7 +1992,8 @@ static void ghost_wl_display_report_error(wl_display *display)
* So in practice re-connecting to the display server isn't an option.
*
* Exit since leaving the process open will simply flood the output and do nothing.
* Although as the process is in a valid state, auto-save for e.g. is possible, see: #100855. */
* Although as the process is in a valid state, auto-save for example is possible, see: #100855.
*/
::exit(-1);
}
@ -2042,7 +2043,7 @@ static void ghost_wayland_log_handler(const char *msg, va_list arg)
#if defined(WITH_GHOST_X11) && defined(WITH_GHOST_WAYLAND_LIBDECOR)
/**
* Check if the system is running X11.
* This is not intended to be a fool-proof check (the `DISPLAY` is not validated for e.g.).
* This is not intended to be a fool-proof check (the `DISPLAY` is not validated for example).
* Just check `DISPLAY` is set and not-empty.
*/
static bool ghost_wayland_is_x11_available()
@ -2342,7 +2343,7 @@ static std::vector<std::string_view> gwl_clipboard_uri_ranges(const char *data_b
{
std::vector<std::string_view> uris;
const char file_proto[] = "file://";
/* NOTE: some applications CRLF (`\r\n`) GTK3 for e.g. & others don't `pcmanfm-qt`.
/* NOTE: some applications CRLF (`\r\n`) GTK3 for example & others don't `pcmanfm-qt`.
* So support both, once `\n` is found, strip the preceding `\r` if found. */
const char lf = '\n';
@ -2651,7 +2652,7 @@ static ssize_t read_exhaustive(const int fd, void *data, size_t nbytes)
/**
* Read from `fd` into a buffer which is returned.
* Use for files where seeking to determine the final size isn't supported (pipes for e.g.).
* Use for files where seeking to determine the final size isn't supported (pipes for example).
*
* \return the buffer or null on failure.
* On failure `errno` will be set.
@ -4479,7 +4480,7 @@ static const zwp_pointer_gesture_pinch_v1_listener gesture_pinch_listener = {
* \note In both Gnome-Shell & KDE this gesture isn't emitted at time of writing,
* instead, high resolution 2D #wl_pointer_listener.axis data is generated which works well.
* There may be some situations where WAYLAND compositors generate this gesture
* (swiping with 3+ fingers, for e.g.). So keep this to allow logging & testing gestures.
* (swiping with 3+ fingers, for example). So keep this to allow logging & testing gestures.
* \{ */
#ifdef ZWP_POINTER_GESTURE_SWIPE_V1_INTERFACE
@ -5350,7 +5351,7 @@ static bool xkb_compose_state_feed_and_get_utf8(
}
case XKB_COMPOSE_CANCELLED: {
/* NOTE(@ideasman42): QT & GTK ignore these events as well as not inputting any text
* so `<Compose><Backspace>` for e.g. causes a cancel and *not* back-space.
* so `<Compose><Backspace>` for example causes a cancel and *not* back-space.
* This isn't supported under GHOST at the moment.
* The key-event could also be ignored but this means tracking held state of
* keys wont work properly, so don't do any input and pass in the key-symbol. */
@ -7357,7 +7358,7 @@ static void gwl_display_event_thread_create(GWL_Display *display)
display->events_pthread_is_active = true;
pthread_create(&display->events_pthread, nullptr, gwl_display_event_thread_fn, display);
/* Application logic should take priority, this only ensures events don't accumulate when busy
* which typically takes a while (5+ seconds of frantic mouse motion for e.g.). */
* which typically takes a while (5+ seconds of frantic mouse motion for example). */
pthread_set_min_priority(display->events_pthread);
pthread_detach(display->events_pthread);
}
@ -7441,7 +7442,7 @@ GHOST_SystemWayland::GHOST_SystemWayland(bool background)
/* Ignore windowing requirements when running in background mode,
* as it doesn't make sense to fall back to X11 because of windowing functionality
* in background mode, also LIBDECOR is crashing in background mode `blender -b -f 1`
* for e.g. while it could be fixed, requiring the library at all makes no sense. */
* for example while it could be fixed, requiring the library at all makes no sense. */
if (background) {
libdecor_required = false;
}
@ -8689,7 +8690,7 @@ GHOST_TSuccess GHOST_SystemWayland::cursor_shape_custom_set(const uint8_t *bitma
cursor->custom_scale = std::max(1, (output_scale * custom_size) / target_size);
/* It would make more sense to adjust the buffer size instead of the scale.
* In practice with custom cursors of 16x16, 24x24 & 32x32 its only likely to cause
* problems with odd-scaling (HI-DPI scale of 300% or 500% for e.g.).
* problems with odd-scaling (HI-DPI scale of 300% or 500% for example).
* In these cases the custom cursor will be a little too large. */
while ((cursor->custom_scale > 1) &&
!((sizex % cursor->custom_scale) == 0 && (sizey % cursor->custom_scale) == 0))
@ -8772,7 +8773,7 @@ GHOST_TCapabilityFlag GHOST_SystemWayland::getCapabilities() const
* and it's not even requirement - so we can't rely on this feature being supported.
*
* Instead of assuming this is not supported, the graphics card driver could be inspected
* (enable for NVIDIA for e.g.), but the advantage in supporting this is minimal.
* (enable for NVIDIA for example), but the advantage in supporting this is minimal.
* In practice it means an off-screen buffer is used to redraw the window for the
* screen-shot and eye-dropper sampling logic, both operations where the overhead
* is negligible. */
@ -8977,7 +8978,7 @@ zwp_pointer_gestures_v1 *GHOST_SystemWayland::wp_pointer_gestures_get()
/* This value is expected to match the base name of the `.desktop` file. see #101805.
*
* NOTE: the XDG desktop-entry-spec defines that this should follow the "reverse DNS" convention.
* For e.g. `org.blender.Blender` - however the `.desktop` file distributed with Blender is
* For example `org.blender.Blender` - however the `.desktop` file distributed with Blender is
* simply called `blender.desktop`, so the it's important to follow that name.
* Other distributions such as SNAP & FLATPAK may need to change this value #101779.
* Currently there isn't a way to configure this, we may want to support that. */

View File

@ -368,7 +368,7 @@ enum eGWL_PendingWindowActions {
PENDING_OUTPUT_SCALE_UPDATE,
/**
* Workaround for a bug/glitch in WLROOTS based compositors (RIVER for e.g.).
* Workaround for a bug/glitch in WLROOTS based compositors (RIVER for example).
* Deferring the scale update one even-loop cycle resolves a bug
* where the output enter/exit events cause the surface buffer being an invalid size.
*
@ -2434,7 +2434,7 @@ GHOST_TSuccess GHOST_WindowWayland::invalidate()
GHOST_TSuccess GHOST_WindowWayland::setOrder(GHOST_TWindowOrder order)
{
/* NOTE(@ideasman42): only activation is supported (on X11 & Cocoa for e.g.)
/* NOTE(@ideasman42): only activation is supported (on X11 & Cocoa for example)
* both activation and raising is performed. Since WAYLAND only supports activation,
* do that as the compositor will likely raise the window as well.
* Although it's not ideal that raising does something but lowering a window is ignored. */
@ -2750,7 +2750,7 @@ bool GHOST_WindowWayland::outputs_changed_update_scale()
* opening on the same monitor so a window keeps it's previous size on a users system.
*
* To support anything more sophisticated, windows would need to be created with a scale
* argument (representing the scale used when the window was stored, for e.g.). */
* argument (representing the scale used when the window was stored, for example). */
#ifdef WITH_GHOST_WAYLAND_LIBDECOR
if (use_libdecor) {

View File

@ -162,7 +162,7 @@ def sync_apply_locked(repos_notify, repos_notify_files, unique_ext):
except Exception as ex:
sys.stderr.write("Failed to remove file before renaming: {:s}\n".format(str(ex)))
continue
# Not expected to fail, in the case it might (corrupt file-system for e.g.),
# Not expected to fail, in the case it might (corrupt file-system for example),
# the script should continue executing.
try:
os.rename(filepath, filepath_dst)
@ -585,7 +585,7 @@ def update_non_blocking(*, repos_fn, immediate=False):
# Perform a non-blocking update on ``repos``.
# Updates are queued in case some are already running.
# `repos_fn` A generator or function that returns a list of ``(RepoItem, do_online_sync)`` pairs.
# Some repositories don't check for update on startup for e.g.
# Some repositories don't check for update on startup for example
# Needed so `update_in_progress` doesn't get confused by an old completed item hanging around.
# Further, there is no need to keep this item any longer than is needed if a new notification is added.

View File

@ -143,7 +143,7 @@ def pkg_manifest_zip_all_items(pkg_manifest_local, pkg_manifest_remote):
# While this is not a strict definition (internally they're just add-ons from different places),
# for the purposes of the UI it makes sense to differentiate add-ons this way because these add-on
# characteristics are mutually exclusive (there is no such thing as a user-core-extension for e.g.).
# characteristics are mutually exclusive (there is no such thing as a user-core-extension for example).
# Add-On Types:
@ -1546,7 +1546,7 @@ def extensions_panel_draw_impl(
# Exceptions to this rule:
# - *version*: when outdated, it's useful to show both versions as the user may wish to upgrade.
# Otherwise it's typically not useful to attempt to make the user aware of other minor discrepancies.
# (changes to the description or maintainer for e.g.).
# (changes to the description or maintainer for example).
#
# - *website*: the host of the remote repository may wish to override the website with a landing page for
# each extension, this page can show information managed by the organization hosting repository,
@ -1997,7 +1997,7 @@ def extensions_panel_draw(panel, context):
# When an update is in progress disallow any destructive operations.
# While a non-blocking update is nice, users should *never* be performing
# destructive operations with an outdated repository. There are a couple of reasons for this.
# - Pressing "Install" on an extension may either fail (the version may be old for e.g.).
# - Pressing "Install" on an extension may either fail (the version may be old for example).
# - Pressing any buttons immediately before the UI refreshes risks the user installing or operating
# on the wrong extension, one which they may not trust!
# Prevent these kinds of accidents by disabling parts of the extension UI while synchronize is in progress.

View File

@ -2320,7 +2320,7 @@ def python_versions_from_wheel(wheel_filename: str) -> set[tuple[int] | tuple[in
abi_tag = wheel_filename_split[-2]
# NOTE(@ideasman42): when the ABI is set, simply return the major version,
# This is needed because older version of CPython (3.6) for e.g. are compatible with newer versions of CPython,
# This is needed because older version of CPython (3.6) for example are compatible with newer versions of CPython,
# but returning the old version causes it not to register as being compatible.
# So return the ABI version to allow any version of CPython 3.x.
#
@ -2835,7 +2835,7 @@ def pkg_manifest_detect_duplicates(
del python_versions_full
# This can be expanded with additional values as needed.
# We could in principle have ABI flags (debug/release) for e.g.
# We could in principle have ABI flags (debug/release) for example
PkgCfgKey = tuple[
# Platform.
str,
@ -4870,7 +4870,7 @@ class subcmd_author:
*,
manifest: PkgManifest,
# NOTE: This path is only for inclusion in the error message,
# the path may not exist on the file-system (it may refer to a path inside an archive for e.g.).
# the path may not exist on the file-system (it may refer to a path inside an archive for example).
pkg_manifest_filepath: str,
valid_tags_filepath: str,
) -> bool:

View File

@ -984,7 +984,7 @@ class TestPythonVersions(TestWithTempBlenderUser_MixIn, unittest.TestCase):
self.repo_add(repo_id=repo_id, repo_name=repo_name)
this_python_version_major, this_python_version_minor = sys.version_info[:2]
# TODO: this test doesn't make sense for the first Python major releases (4.0 for e.g.).
# TODO: this test doesn't make sense for the first Python major releases (4.0 for example).
if this_python_version_minor == 0:
return

View File

@ -162,7 +162,7 @@ class StaleFiles:
#
# If this ever did happen besides potentially trying to remove `base_directory`,
# this path could be treated as a file which could not be removed and queued for
# removal again causing a single space (for e.g.) to be left in the stale file,
# removal again causing a single space (for example) to be left in the stale file,
# trying to be removed every startup and failing.
# Avoid all these issues by checking the path doesn't resolve to being the same path as it's parent.
is_same = False

View File

@ -464,7 +464,7 @@ def wheel_version_from_filename_for_cmp(
so comparing the first 3 numbers is sufficient. The trailing string is just a tie breaker in the
unlikely event it differs.
If supporting the full spec, comparing: "1.1.dev6" with "1.1.6rc6" for e.g.
If supporting the full spec, comparing: "1.1.dev6" with "1.1.6rc6" for example
we could support this doesn't seem especially important as extensions should use major releases.
"""
filename_split = filename.split("-")

View File

@ -1119,7 +1119,7 @@ def _initialize_extensions_compat_ensure_up_to_date(extensions_directory, extens
if cache_data is not None:
# NOTE: the exception handling here is fairly paranoid and accounts for invalid values in the loaded cache.
# An example would be values expected to be lists/dictionaries being other types (None or strings for e.g.).
# An example would be values expected to be lists/dictionaries being other types (None or strings for example).
# While this should not happen, some bad value should not prevent Blender from loading properly,
# so report the error and regenerate cache.
try:

View File

@ -711,7 +711,7 @@ def BuildRNAInfo():
print("rna_info.BuildRNAInfo(..): ignoring type", repr(rna_type_name))
# Now, there are some sub-classes in add-ons we also want to include.
# Cycles for e.g. these are referenced from the Scene, but not part of
# Cycles for example. These are referenced from the Scene, but not part of
# bpy.types module.
# Include all sub-classes we didn't already get from 'bpy.types'.
i = 0

View File

@ -239,7 +239,7 @@ def rna2xml(
# paths "escaping" the intended data types, potentially writing into unexpected settings.
# This is done because the XML itself defines the attributes which are recursed into,
# there is a possibility the XML recurse into data that isn't logically owned by "root",
# out of the theme and into user preferences for e.g. which could change trust settings
# out of the theme and into user preferences for example, which could change trust settings
# even executing code.
#
# At the time of writing it seems this is not possible with themes (the main user of this functionality),

View File

@ -96,7 +96,7 @@ class Params:
#
# NOTE: This is typically used for active tool key-map items however it should never
# be used for selection tools (the default box-select tool for example).
# Since this means with RMB select enabled in edit-mode for e.g.
# Since this means with RMB select enabled in edit-mode for example
# `Ctrl-LMB` would be caught by box-select instead of add/extrude.
"tool_maybe_tweak_event",
)
@ -603,7 +603,7 @@ def _template_items_tool_select(
if params.select_mouse == 'LEFTMOUSE':
# Use 'PRESS' for immediate select without delay.
# Tools that allow dragging anywhere should _NOT_ enable the fallback tool
# unless it is expected that the tool should operate on the selection (click-drag to rip for e.g.).
# unless it is expected that the tool should operate on the selection (click-drag to rip for example).
return [
(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'},
{"properties": [

View File

@ -56,7 +56,7 @@ def _rna_path_prop_search_for_context_impl(context, edit_text, unique_attrs):
def rna_path_prop_search_for_context(self, context, edit_text):
# NOTE(@campbellbarton): Limiting data-path expansion is rather arbitrary.
# It's possible for e.g. that someone would want to set a shortcut in the preferences or
# It's possible for example that someone would want to set a shortcut in the preferences or
# in other region types than those currently expanded. Unless there is a reasonable likelihood
# users might expand these space-type/region-type combinations - exclude them from this search.
# After all, this list is mainly intended as a hint, users are not prevented from constructing
@ -69,7 +69,7 @@ def rna_path_prop_search_for_context(self, context, edit_text):
if area.type == 'PREFERENCES':
continue
# Ignore the same region type multiple times in an area.
# Prevents the 3D-viewport quad-view from attempting to expand 3 extra times for e.g.
# Prevents the 3D-viewport quad-view from attempting to expand 3 extra times for example
region_type_unique = set()
for region in area.regions:
if region.type not in {'WINDOW', 'PREVIEW'}:
@ -3503,7 +3503,7 @@ class WM_MT_region_toggle_pie(Menu):
bl_label = "Region Toggle"
# Map the `region.type` to the `space_data` attribute & text label.
# The order of items defines priority, so in the sequencer for e.g.
# The order of items defines priority, so for example in the sequencer
# when there is both a toolbar and channels, the toolbar gets the
# axis-aligned pie, and the channels don't.
_region_info = {

View File

@ -73,7 +73,7 @@ typedef struct EffectorCache {
struct PartDeflect *pd;
/** Random noise generator for e.g. wind. */
/** Random noise generator, e.g. for wind. */
struct RNG *rng;
/* precalculated for guides */

View File

@ -198,7 +198,7 @@ class Instances {
*/
void remove(const IndexMask &mask, const AttributeFilter &attribute_filter);
/**
* Get an id for every instance. These can be used for e.g. motion blur.
* Get an id for every instance. These can be used e.g. motion blur.
*/
Span<int> almost_unique_ids() const;

View File

@ -149,7 +149,7 @@ struct Main {
* being absolute. See #BLI_path_canonicalize_native.
*
* This rule is not strictly enforced as in some cases loading a #Main is performed
* to read data temporarily (preferences & startup) for e.g.
* to read data temporarily (preferences & startup) for example
* where the `filepath` is not persistent or used as a basis for other paths.
*/
char filepath[/*FILE_MAX*/ 1024];

View File

@ -405,7 +405,7 @@ bool BKE_object_minmax_dupli(Depsgraph *depsgraph,
* Calculate visual bounds from an empty objects draw-type.
*
* \note This is not part of the calculation used by #BKE_object_boundbox_get
* as these bounds represent the extents of visual guides (use for viewport culling for e.g.)
* as these bounds represent the extents of visual guides (use for viewport culling for example)
*/
bool BKE_object_minmax_empty_drawtype(const Object *ob, float r_min[3], float r_max[3]);

View File

@ -404,8 +404,8 @@ struct LayoutPanelBody {
* specific place in the layout and can not be freely dragged around like top level panels.
*
* This struct gathers information about the layout panels created by layout code. This is then
* used for e.g. drawing the backdrop of nested panels and to support opening and closing multiple
* panels with a single mouse gesture.
* used for example drawing the backdrop of nested panels and to support opening and closing
* multiple panels with a single mouse gesture.
*/
struct LayoutPanels {
blender::Vector<LayoutPanelHeader> headers;

View File

@ -46,8 +46,8 @@ template<typename T> class VolumeGrid;
class VolumeTreeAccessToken;
/**
* Compile time check to see of a type is a #VolumeGrid. This is false for e.g. `float` or
* `GVolumeGrid` and true for e.g. `VolumeGrid<int>` and `VolumeGrid<float>`.
* Compile time check to see of a type is a #VolumeGrid, e.g. false for `float` or
* `GVolumeGrid` and true for `VolumeGrid<int>` and `VolumeGrid<float>`.
*/
template<typename T> static constexpr bool is_VolumeGrid_v = false;
template<typename T> static constexpr bool is_VolumeGrid_v<VolumeGrid<T>> = true;

View File

@ -15,7 +15,7 @@
* This is done because command-line actions may be destructive so the down-side of running the
* wrong command could be severe. The reason this is not considered an error is we can't prevent
* it so easily, unlike operator ID's which may be longer, commands are typically short terms
* which wont necessarily include an add-ons identifier as a prefix for e.g.
* which wont necessarily include an add-ons identifier as a prefix for example.
* Further, an error would break loading add-ons who's primary is *not*
* necessarily to provide command-line access.
* An alternative solution could be to generate unique names (number them for example)

View File

@ -1440,7 +1440,7 @@ void BKE_blendfile_read_make_empty(bContext *C)
*
* The preferences are merged by using some from the app-template and other settings from the
* regular preferences (add-ons from the app-template for example are used),
* undo-memory uses the regular preferences (for e.g.).
* undo-memory uses the regular preferences (for example).
*
* - Writing preferences is performed for both the app-template & regular preferences.
*

View File

@ -73,7 +73,7 @@ FCurvePathCache *BKE_fcurve_pathcache_create(blender::Span<FCurve *> fcurves)
/* Allow for the case no F-Curves share an RNA-path, otherwise this is over-allocated.
* Although in practice it's likely to only be 3-4x as large as is needed
* (with transform channels for e.g.). */
* (e.g. with transform channels). */
FCurvePathCache_Span *span_table = MEM_malloc_arrayN<FCurvePathCache_Span>(fcurve_array_len,
__func__);

View File

@ -2147,7 +2147,7 @@ using LibOverrideMissingIDsData =
* ID library>`.
*
* So e.g. returns `<"OBMyObject", lib>` for ID from `lib` with names like `"OBMyObject"`,
* `"OBMyObject.002"`, `"OBMyObject.12345"`, and so on, but _not_ for e.g. `"OBMyObject.12.002"`.
* `"OBMyObject.002"`, `"OBMyObject.12345"`, and so on, but _not_ `"OBMyObject.12.002"`.
*/
static LibOverrideMissingIDsData_Key lib_override_library_resync_missing_id_key(ID *id)
{

View File

@ -633,7 +633,7 @@ static void pbvh_iter_begin(PBVHIter *iter, Tree &pbvh, FunctionRef<bool(Node &)
static Node *pbvh_iter_next(PBVHIter *iter, Node::Flags leaf_flag)
{
/* purpose here is to traverse tree, visiting child nodes before their
* parents, this order is necessary for e.g. computing bounding boxes */
* parents, this order is necessary for example computing bounding boxes */
while (!iter->stack.is_empty()) {
StackItem item = iter->stack.pop();

View File

@ -2607,7 +2607,7 @@ void BKE_scene_graph_update_for_newframe_ex(Depsgraph *depsgraph, const bool cle
const bool is_time_update = true;
DEG_editors_update(depsgraph, is_time_update);
/* Clear recalc flags, can be skipped for e.g. renderers that will read these
/* Clear recalc flags, can be skipped for example renderers that will read these
* and clear the flags later. */
if (clear_recalc) {
const bool backup = false;

View File

@ -1445,7 +1445,7 @@ char *txt_to_buf(Text *text, size_t *r_buf_strlen)
*buf_step++ = '\n';
}
/* Remove the trailing new-line so a round-trip doesn't add a newline:
* Python for e.g. `text.from_string(text.as_string())`. */
* Python for example `text.from_string(text.as_string())`. */
if (has_data) {
buf_step--;
}

View File

@ -35,10 +35,10 @@
* `blender::FixedSpan<T, N>`.
*
* `blender::Span<T>` should be your default choice when you have to pass a read-only array
* into a function. It is better than passing a `const Vector &`, because then the function only
* works for vectors and not for e.g. arrays. Using Span as function parameter makes it usable
* in more contexts, better expresses the intent and does not sacrifice performance. It is also
* better than passing a raw pointer and size separately, because it is more convenient and safe.
* into a function. It is better than passing a `const Vector &`, because e.g. then the function
* only works for vectors and not arrays. Using Span as function parameter makes it usable in more
* contexts, better expresses the intent and does not sacrifice performance. It is also better than
* passing a raw pointer and size separately, because it is more convenient and safe.
*
* `blender::MutableSpan<T>` can be used when a function is supposed to return an array, the
* size of which is known before the function is called. One advantage of this approach is that the

View File

@ -186,7 +186,7 @@ struct BChunkList;
/**
* Ensure duplicate entries aren't added to temporary hash table
* needed for arrays where many values match (an array of booleans all true/false for e.g.).
* needed for arrays where many values match (e.g. an array of booleans all true/false).
*
* Without this, a huge number of duplicates are added a single bucket, making hash lookups slow.
* While de-duplication adds some cost, it's only performed with other chunks in the same bucket

View File

@ -964,7 +964,7 @@ static int recursive_operation_impl(StrBuf *src_buf,
{
/* NOTE(@ideasman42): This function must *not* use any `MEM_*` functions
* as it's used to purge temporary files on when the processed is aborted,
* in this case the `MEM_*` state may have already been freed (memory usage tracking for e.g.)
* in this case the `MEM_*` state may have already been freed (e.g. memory usage tracking)
* causing freed memory access, potentially crashing. This constraint doesn't apply to the
* callbacks themselves - unless they might also be called when aborting. */
struct stat st;

View File

@ -291,12 +291,12 @@ struct BMFace {
float no[3];
/**
* Material index, typically >= 0 and < #Mesh.totcol although this isn't enforced
* Python for e.g. can set this to any positive value since scripts may create
* Python for example can set this to any positive value since scripts may create
* mesh data first and setup material slots later.
*
* When using to index into a material array it's range should be checked first,
* values exceeding the range should be ignored or treated as zero
* (if a material slot needs to be used - when drawing for e.g.)
* (if a material slot needs to be used - when drawing for example)
*/
short mat_nr;
// short _pad[3];

View File

@ -666,7 +666,7 @@ static BMVert **bm_to_mesh_vertex_map(BMesh *bm, const int old_verts_num)
*
* Shape key synchronizing could work under the assumption that the key-block is
* fixed-in-place when entering edit-mode allowing them to be used as a reference when exiting.
* It often does work but isn't reliable since for e.g. rendering may flush changes
* It often does work but isn't reliable since for example rendering may flush changes
* from the edit-mesh to the key-block (there are a handful of other situations where
* changes may be flushed, see #ED_editors_flush_edits and related functions).
* When using undo, it's not known if the data in key-block is from the past or future,
@ -714,7 +714,7 @@ static BMVert **bm_to_mesh_vertex_map(BMesh *bm, const int old_verts_num)
* - Use the value from the original shape key
* WARNING: this is technically incorrect! (see note on "Key Block Usage").
* - Use the current vertex location,
* Also not correct but it's better then having it zeroed for e.g.
* Also not correct but it's better then having it zeroed for example.
*
* - Missing key-index layer.
* In this case the basis key won't apply its deltas to other keys and if a shape-key layer is

View File

@ -57,7 +57,7 @@ static float bm_vert_edge_face_angle(BMVert *v,
/* NOTE: could be either edge, it doesn't matter. */
if (v->e && BM_edge_is_manifold(v->e)) {
/* Checking delimited is important here,
* otherwise the boundary between two materials for e.g.
* otherwise, for example, the boundary between two materials
* will collapse if the faces on either side of the edge have a small angle.
*
* This way, delimiting edges are treated like boundary edges,

View File

@ -1040,7 +1040,7 @@ ViewContext ED_view3d_viewcontext_init(bContext *C, Depsgraph *depsgraph);
* When iterating over objects in object-mode it doesn't make sense to perform
* an edit-mode action on an object that happens to contain edit-mode data.
* In some cases these values are cleared allowing the owner of `vc` to explicitly
* disable edit-mode operation (to force object selection in edit-mode for e.g.).
* disable edit-mode operation (to force object selection in edit-mode for example).
* So object-mode specific values should remain cleared when initialized with another object.
*/
void ED_view3d_viewcontext_init_object(ViewContext *vc, Object *obact);

View File

@ -97,7 +97,7 @@ struct HudRegionData {
* When this cannot be resolved, use the first region of `regionid`.
*
* This is needed because it's possible the index is no longer available
* if exiting quad-view int the 3D viewport after performing an operation for e.g.
* if exiting quad-view in the 3D viewport after performing an operation for example.
* so in this case use the first region.
*/
int region_index_hint;

View File

@ -1455,7 +1455,7 @@ static void paint_update_mouse_cursor(PaintCursorContext &pcontext)
{
if (pcontext.win->grabcursor != 0 || pcontext.win->modalcursor != 0) {
/* Don't set the cursor while it's grabbed, since this will show the cursor when interacting
* with the UI (dragging a number button for e.g.), see: #102792.
* with the UI (dragging a number button for example), see: #102792.
* And don't overwrite a modal cursor, allowing modal operators to set a cursor temporarily. */
return;
}

View File

@ -859,7 +859,7 @@ static void insert_fcurve_key(bAnimContext *ac,
ToolSettings *ts = scene->toolsettings;
/* These asserts are ensuring that the fcurve we're keying lives on an Action,
* rather than being an fcurve for e.g. a driver or NLA Strip. This should
* rather than being e.g. an fcurve a driver or NLA Strip. This should
* always hold true for this function, since all the other cases take
* different code paths before getting here. */
BLI_assert(ale->owner == nullptr);

View File

@ -2836,7 +2836,7 @@ static bool can_create_dir_from_user_input(const char dir[FILE_MAX_LIBEXTRA])
* in the would immediately be created (if possible) which isn't good, see: #128567.
*
* The reason to treat user input differently here is the user could input anything,
* Values such as a single space for e.g. this resolves to the current-working-directory:
* e.g. values such as a single space. This resolves to the current-working-directory:
* `$PWD/ ` which is a valid path name and could be created
* (this was in fact the behavior until v4.4).
*

View File

@ -185,7 +185,7 @@ View3DCameraControl *ED_view3d_cameracontrol_acquire(Depsgraph *depsgraph,
* A version of #BKE_object_apply_mat4 that respects #Object.protectflag,
* applying the locking back to the view to avoid the view.
* This is needed so the view doesn't get out of sync with the object,
* causing visible jittering when in fly/walk mode for e.g.
* causing visible jittering when in fly/walk mode for example.
*
* \note This could be exposed as an API option, as we might not want the view
* to be constrained by the thing it's controlling.

View File

@ -754,7 +754,7 @@ static void view3d_orbit_apply_dyn_ofs_ortho_correction(float ofs[3],
* (`ofs` + `dist` along the view Z-axis) unlike orthographic views which center around `ofs`.
* Nevertheless there will be cases when having `ofs` and a large `dist` pointing nowhere doesn't
* give ideal behavior (zooming may jump in larger than expected steps and panning the view may
* move too much in relation to nearby objects - for e.g.). So it's worth investigating but
* move too much in relation to nearby objects - for example). So it's worth investigating but
* should be done with extra care as changing `ofs` in perspective view also requires changing
* the `dist` which could cause unexpected results if the calculated `dist` happens to be small.
* So disable this workaround in perspective view unless there are clear benefits to enabling. */

View File

@ -2707,7 +2707,7 @@ static bool ed_object_select_pick(bContext *C,
/* Split `changed` into data-types so their associated updates can be properly performed.
* This is also needed as multiple changes may happen at once.
* Selecting a pose-bone or track can also select the object for e.g. */
* Selecting a pose-bone or track can also select the object for example */
bool changed_object = false;
bool changed_pose = false;
bool changed_track = false;
@ -3520,7 +3520,7 @@ static wmOperatorStatus view3d_select_exec(bContext *C, wmOperator *op)
if (obedit && enumerate) {
/* Enumerate makes no sense in edit-mode unless also explicitly picking objects or bones.
* Pass the event through so the event may be handled by loop-select for e.g. see: #100204.
* Pass the event through so the event may be handled by loop-select for example. See: #100204.
*/
if (obedit->type != OB_ARMATURE) {
return OPERATOR_PASS_THROUGH | OPERATOR_CANCELLED;

View File

@ -464,7 +464,8 @@ typedef struct ID {
* so accessing it from Python raises an exception instead of crashing.
*
* This is of limited benefit though, as it doesn't apply to non #ID data
* that references this ID (the bones of an armature or the modifiers of an object for e.g.).
* that references this ID (the bones of an armature or the modifiers of an object for
* example).
*/
void *py_instance;

View File

@ -509,7 +509,7 @@ enum {
*
* The most common case is for perspective views, where orbiting around a point behind
* the view (while possible) often seems like a bug from a user perspective.
* We could consider other cases invalid too (values beyond the clipping plane for e.g.),
* We could consider other cases invalid too (e.g. values beyond the clipping plane),
* although in practice these cases should be fairly rare.
*/
RV3D_NDOF_OFS_IS_VALID = (1 << 0),

View File

@ -165,7 +165,7 @@ typedef struct wmWindowManager {
/**
* \note `CTX_wm_window(C)` is usually preferred.
* Avoid relying on this where possible as this may become NULL during when handling
* events that close or replace windows (opening a file for e.g.).
* events that close or replace windows (e.g. opening a file).
* While this happens rarely in practice, it can cause difficult to reproduce bugs.
*/
struct wmWindow *winactive;

View File

@ -689,7 +689,7 @@ ENUM_OPERATORS(eStringPropertySearchFlag, PROP_STRING_SEARCH_SUGGESTION)
* \param prop: RNA property. This must have its #StringPropertyRNA.search callback set,
* to check this use `RNA_property_string_search_flag(prop) & PROP_STRING_SEARCH_SUPPORTED`.
* \param edit_text: Optionally use the string being edited by the user as a basis
* for the search results (auto-complete Python attributes for e.g.).
* for the search results (auto-complete Python attributes for example).
* \param visit_fn: This function is called with every search candidate and is typically
* responsible for storing the search results.
*/

View File

@ -800,7 +800,7 @@ bool RNA_struct_override_matches(Main *bmain,
* unused.
*
* In case the property itself is already tagged as used, in means lower-level diffing code
* took care of this property (as is needed for e.g. collections of items, since then some
* took care of this property (e.g. as is needed collections of items, since then some
* operations may be valid, while others may need to be purged). */
if (op->tag & LIBOVERRIDE_PROP_OP_TAG_UNUSED) {
BKE_lib_override_library_operations_tag(op, LIBOVERRIDE_PROP_OP_TAG_UNUSED, false);

View File

@ -1926,7 +1926,7 @@ void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item
/* If this is larger, this is likely a string which can sometimes store enums. */
if (PropertyDefRNA *dp = rna_find_struct_property_def(srna, prop)) {
if (dp->dnatype == nullptr || dp->dnatype[0] == '\0') {
/* Unfortunately this happens when #PropertyDefRNA::dnastructname is for e.g.
/* Unfortunately this happens when #PropertyDefRNA::dnastructname is for example
* `type->region_type` there isn't a convenient way to access the int size. */
}
else if (dp->dnaarraylength > 1) {

View File

@ -53,7 +53,7 @@ struct RNA_DepsgraphIterator {
# ifdef WITH_PYTHON
/**
* Store the Python instance so the #BPy_StructRNA can be set as invalid iteration is completed.
* Otherwise accessing from Python (console auto-complete for e.g.) crashes, see: #100286. */
* Otherwise accessing from Python (e.g. console auto-complete) crashes, see: #100286. */
void *py_instance;
# endif
};

View File

@ -66,7 +66,7 @@ struct PropertyDefRNA {
int dnapointerlevel;
/**
* Offset in bytes within `dnastructname`.
* -1 when unusable (follows pointer for e.g.). */
* -1 when unusable (follows pointer for example). */
int dnaoffset;
int dnasize;

View File

@ -1227,7 +1227,7 @@ static void rna_RegionView3D_is_orthographic_side_view_set(PointerRNA *ptr, bool
rv3d->viewquat, eps_quat, &rv3d->view, &rv3d->view_axis_roll);
}
else {
/* Only allow changing from axis-views to user view as camera view for e.g.
/* Only allow changing from axis-views to user view as camera view for example
* doesn't make sense to update. */
if (!was_axis_view) {
return;

View File

@ -110,7 +110,7 @@ bool BPY_run_string_eval(bContext *C, const char *imports[], const char *expr);
* print errors to the `stdout` and clear.
*/
struct BPy_RunErrInfo {
/** Brief text, single line (can show this in status bar for e.g.). */
/** Brief text, single line (can show this in status bar for example). */
bool use_single_line_error;
/** Report with optional prefix (when non-NULL). */

View File

@ -39,7 +39,7 @@ PyObject *PyC_ExceptionBuffer() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL;
/**
* A version of #PyC_ExceptionBuffer that returns the last exception only.
*
* Useful for error messages from evaluating numeric expressions for e.g.
* Useful for error messages from evaluating numeric expressions for example
* where a full multi-line stack-trace isn't needed and doesn't format well in the status-bar.
*/
PyObject *PyC_ExceptionBuffer_Simple() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL;

View File

@ -33,7 +33,7 @@ static PyObject *bpy_atexit(PyObject * /*self*/, PyObject * /*args*/, PyObject *
bContext *C = BPY_context_get();
/* As Python requested the exit, it handles shutting itself down. */
const bool do_python_exit = false;
/* User actions such as saving the session, preferences, recent-files for e.g.
/* User actions such as saving the session, preferences, and recent-files
* should be skipped because an explicit call to exit is more likely to be used as part of
* automated processes shouldn't impact the users session in the future. */
const bool do_user_exit_actions = false;

View File

@ -187,7 +187,7 @@ static bool bpy_rna_context_temp_override_enter_ok_or_error(const BPyContextTemp
* Simple, no sanity checks needed.
*
* - 2) Some members are overridden.
* Check the state is consistent (that the region is part the area or screen for e.g.).
* Check the state is consistent (that the region is part the area or screen for example).
*
* - 3) Some members are overridden *but* the context members are unchanged.
* This is a less obvious case which often happens when a Python script copies the context
@ -201,7 +201,7 @@ static bool bpy_rna_context_temp_override_enter_ok_or_error(const BPyContextTemp
*
* When error-checking unchanged context members some error checks must be skipped
* such as the check to disallow temporary screens since that could break using
* `temp_override(..)` running with the current context from a render-window for e.g.
* `temp_override(..)` running with the current context from a render-window for example.
*
* In fact all sanity checks could be disabled when the members involved remain unchanged
* however it's possible Python scripts corrupt Blender's internal windowing state so keeping
@ -327,7 +327,7 @@ static PyObject *bpy_rna_context_temp_override_enter(BPyContextTempOverride *sel
}
/* NOTE: always set these members, even when they are equal to the current values because
* setting the window (for e.g.) clears the area & region, setting the area clears the region.
* setting the window (for example) clears the area & region, setting the area clears the region.
* While it would be useful in some cases to leave the context as-is when setting members
* to their current values.
*

View File

@ -360,7 +360,7 @@ bool RE_WriteRenderViewsMovie(struct ReportList *reports,
* \note Only #RE_NewRender() needed, main Blender render calls.
*
* \param write_still: Saves frames to disk (typically disabled). Useful for batch-operations
* (rendering from Python for e.g.) when an additional save action for is inconvenient.
* (e.g. rendering from Python) when an additional save action for is inconvenient.
* This is the default behavior for #RE_RenderAnim.
*/
void RE_RenderFrame(struct Render *re,

View File

@ -1894,7 +1894,7 @@ void WM_draw_cb_exit(wmWindow *win, void *handle);
* because drawing relies on the event system & depsgraph preparing data for display.
* An explicit call to draw is error prone since it may attempt to show stale data.
*
* With some rare exceptions which require a redraw (screen-shot & sample screen color for e.g.)
* With some rare exceptions which require a redraw (e.g. screen-shot & sample screen color)
* explicitly redrawing should be avoided, see: #92704, #93950, #97627 & #98462.
*/
void WM_redraw_windows(bContext *C);

View File

@ -1019,7 +1019,7 @@ wmGizmoGroup *WM_gizmomaptype_group_init_runtime_with_region(wmGizmoMapType *gzm
wmGizmoGroup *gzgroup = wm_gizmogroup_new_from_type(gzmap, gzgt);
/* Don't allow duplicates when switching modes for e.g. see: #66229. */
/* Don't allow duplicates when switching modes for example. See: #66229. */
LISTBASE_FOREACH (wmGizmoGroup *, gzgroup_iter, &gzmap->groups) {
if (gzgroup_iter->type == gzgt) {
if (gzgroup_iter != gzgroup) {

View File

@ -375,8 +375,8 @@ bool WM_event_consecutive_gesture_test_break(const wmWindow *win, const wmEvent
}
}
else if (ISKEYBOARD_OR_BUTTON(event->type)) {
/* Modifiers are excluded because from a user perspective,
* releasing a modifier (for e.g.) should not begin a new action. */
/* Modifiers are excluded because from a user perspective.
* For example, releasing a modifier should not begin a new action. */
if (!ISKEYMODIFIER(event->type)) {
return true;
}

View File

@ -450,7 +450,7 @@ void WM_exit_ex(bContext *C, const bool do_python_exit, const bool do_user_exit_
/* While nothing technically prevents saving user data in background mode,
* don't do this as not typically useful and more likely to cause problems
* if automated scripts happen to write changes to the preferences for e.g.
* if automated scripts happen to write changes to the preferences for example.
* Saving #BLENDER_QUIT_FILE is also not likely to be desired either. */
BLI_assert(G.background ? (do_user_exit_actions == false) : true);

View File

@ -1800,7 +1800,7 @@ void WM_keyconfig_update_operatortype()
/* NOTE(@ideasman42): regarding suppressing updates.
* If this becomes a common operation it would be better use something more general,
* a key-map flag for e.g. to signify that the key-map is stored outside of a #wmKeyConfig
* a key-map flag for example to signify that the key-map is stored outside of a #wmKeyConfig
* and should not receive updates on modification. At the moment this has the down-side of
* needing to be supported in quite a few places for something which isn't used much.
* Since the use case for this is limited, add functions to begin/end suppression.
@ -1981,7 +1981,7 @@ void WM_keyconfig_update_ex(wmWindowManager *wm, bool keep_properties)
/* NOTE(@ideasman42): open preferences will contain "stale" #wmKeyMapItem data.
*
* The common case this solves is using Blender with the key-map editor open,
* an action in the view-port for e.g. may manipulate the key-map causing it to be rebuilt.
* an action in the view-port for example may manipulate the key-map causing it to be rebuilt.
* Later interaction with the key-map editor may then attempt to access freed data.
*
* Take care, this is _not_ fool proof because it's possible:

View File

@ -1005,7 +1005,7 @@ static void build_pict_list(ListBase &picsbase,
{
*loading_p = true;
/* NOTE(@ideasman42): When loading many files (expanded from shell globing for e.g.)
/* NOTE(@ideasman42): When loading many files (e.g. expanded from shell globing)
* it's important the frame number increases each time. Otherwise playing `*.png`
* in a directory will expand into many arguments, each calling this function adding
* a frame that's set to zero. */

View File

@ -929,7 +929,7 @@ bToolRef *WM_toolsystem_ref_set_by_id_ex(
return nullptr;
}
/* Some contexts use the current space type (image editor for e.g.),
/* Some contexts use the current space type (e.g. image editor),
* ensure this is set correctly or there is no area. */
#ifndef NDEBUG
/* Exclude this check for some space types where the space type isn't used. */
@ -988,7 +988,7 @@ static void toolsystem_ref_set_by_brush_type(bContext *C, const char *brush_type
return;
}
/* Some contexts use the current space type (image editor for e.g.),
/* Some contexts use the current space type (e.g. image editor),
* ensure this is set correctly or there is no area. */
#ifndef NDEBUG
/* Exclude this check for some space types where the space type isn't used. */

View File

@ -2589,7 +2589,7 @@ static bool handle_load_file(bContext *C, const char *filepath_arg, const bool l
*
* WARNING: The path referenced may be incorrect, no attempt is made to validate the path
* here or check that writing to it will work. If the users enters the path of a directory
* that doesn't exist (for e.g.) saving will fail.
* that doesn't exist (for example) saving will fail.
* Attempting to create the file at this point is possible but likely to cause more
* trouble than it's worth (what with network drives), removable devices ... etc. */

View File

@ -104,7 +104,7 @@ CHECKER_ARGS = (
# Calling `memset` of float may technically be a bug but works in practice.
"memsetClassFloat",
# There are various classes which don't have copy or equal constructors (GHOST windows for e.g.)
# There are various classes which don't have copy or equal constructors (GHOST windows for example)
"noCopyConstructor",
# Also noisy, looks like these are not issues to "solve".
"unusedFunction",

View File

@ -128,7 +128,7 @@ def dna_rename_defs(blend):
for struct_name_runtime, members in member_runtime_to_storage_map.items():
if len(members) > 1:
# Order renames that are themselves destinations to go first, so that the item is not removed.
# Needed for e.g.
# Needed e.g.
# `DNA_STRUCT_RENAME_ELEM(Light, energy_new, energy);`
# `DNA_STRUCT_RENAME_ELEM(Light, energy, energy_deprecated)`
# ... in this case the order matters.

View File

@ -468,7 +468,7 @@ class edit_generators:
"""
# Not default because there are times when the literal sizes don't represent extra dimensions on an array,
# where making this edit would be misleading as it would indicate a matrix (for e.g.) when a vector is intended.
# where making this edit would be misleading as it would indicate a matrix e.g. when a vector is intended.
is_default = False
@staticmethod