TODO list becomes more broken the more you edit and save the file
Affected version
- Nightly flatpak: Yes
- Other: Builder 46.1 Flatpak, Fedora Silverblue
Steps to reproduce
- Clone a repository that has multiple TODO comments between multiple files.
- Open a file and add, edit, remove, or move TODOs. Save the file between each edit.
- Watch the TODO/FIXME list create duplicate TODO entries for different files than the one you just edited.
Current behavior
Each time you add/edit/remove/move TODO comments and save your file, the TODO sidebar progressively becomes more broken.
This includes:
- Creating duplicate entries for a different TODO than what you just edited, but clicking the duplicate entries will take you to what you just edited.
- Entries won't be removed properly when you removed them in code.
- New TODO comments won't appear in the list and some will go missing.
It doesn't change or modify the files in any way, this seems to only be a visual issue with how the list populates TODO entries.
Over the course of a couple hours, this leads to a comically large ocean of fake TODO entries that nullify the usefulness of the feature. The only tempfix I've found is to close the project and reopen it. Then it will show an accurate account of your TODOs until you start editing them again.
Example
Every time I edit or add TODO comments to searchview.py,
it creates more entries for a TODO in artistsview.py.
However, all the fakes link back to my edits in searchview.py.
Expected behavior
The app should provide an accurate account of all existing TODO comments in code and update it correctly when you save the file. There should be an exact 1:1 ratio of list entries to TODO comments, and those entries should take you to the actual comment it's labelled for when you click them. When you remove a TODO comment and save the file, it should properly remove them from the list.
Additional information
All of my testing has been for Python projects created with the GNOME base template that Builder provides when creating a new project.