Anki/rslib/src/notetype
Damien Elmes 6b0fe4b381 undoable ops now return changes directly; add new *_ops.py files
- Introduced a new transact() method that wraps the return value
in a separate struct that describes the changes that were made.
- Changes are now gathered from the undo log, so we don't need to
guess at what was changed - eg if update_note() is called with identical
note contents, no changes are returned. Card changes will only be set
if cards were actually generated by the update_note() call, and tag
will only be set if a new tag was added.
- mw.perform_op() has been updated to expect the op to return the changes,
or a structure with the changes in it, and it will use them to fire the
change hook, instead of fetching the changes from undo_status(), so there
is no risk of race conditions.
- the various calls to mw.perform_op() have been split into separate
files like card_ops.py. Aside from making the code cleaner, this works
around a rather annoying issue with mypy. Because we run it with
no_strict_optional, mypy is happy to accept an operation that returns None,
despite the type signature saying it requires changes to be returned.
Turning no_strict_optional on for the whole codebase is not practical
at the moment, but we can enable it for individual files.

Still todo:
- The cursor keeps moving back to the start of a field when typing -
we need to ignore the refresh hook when we are the initiator.
- The busy cursor icon should probably be delayed a few hundreds ms.
- Still need to think about a nicer way of handling saveNow()
- op_made_changes(), op_affects_study_queue() might be better embedded
as properties in the object instead
2021-03-19 19:45:21 +10:00
..
cardgen.rs undo support for config entries 2021-03-10 11:53:27 +10:00
emptycards.rs show ordinal if card template missing 2020-08-10 13:41:22 +10:00
fields.rs Return meaningful message if a field is empty after normalizing 2021-03-14 02:10:32 +01:00
header.tex move latex header and styling into separate files 2020-05-12 21:13:33 +10:00
mod.rs undoable ops now return changes directly; add new *_ops.py files 2021-03-19 19:45:21 +10:00
render.rs initial work on undoing reviews+burying siblings 2021-03-10 11:47:53 +10:00
schema11.rs handle missing deck ID in templates 2021-01-25 16:47:23 +10:00
schemachange.rs when only sort field changed, we don't need to update ordinals 2021-03-10 11:53:27 +10:00
stock.rs undo support for config entries 2021-03-10 11:53:27 +10:00
styling.css move latex header and styling into separate files 2020-05-12 21:13:33 +10:00
templates.rs If a template name contains only quote, show relevant error message 2021-03-14 02:10:48 +01:00