As you said [here](https://github.com/geany/geany/issues/2540#issuecomment-1774779482), you want to make two lists:
Just to be clear about something, the _document_ is the in memory object, the _file_ is the thing on disk. For open documents where the file has changed on disk, you want a list where the document has unsaved changes, and a list where it does not, lets call them `unsaved list` and `unchanged list`. AFAICT the algorithm to do that is simply: ``` for d in all open documents if document_check_disk_status(d) if d->changed add d to the unsaved list else add d to unchanged list ``` You MUST call `document_check_disk_status()` for all open documents to get up to date status, do not try to use existing monitoring states, they are created by a timer, so you have no idea how old they are and they may not reflect the current file state. But `doc->changed` is the correct thing to indicate the document has been modified. Then if the either list is not empty go to the GUI and show the lists, its fine if one is empty, but do not go to the GUI if there is nothing to reload. If the response is `cancel` then do nothing, if the response is `reload only unchanged` then iterate the `unchanged list` only and reload those documents, if the response is `reload all` then iterate both lists and reload those documents, if the response is `overwrite all` then iterate both lists and save the buffers (I guess thats what you meant by "overwrite", maybe that needs more discussion if its a good idea). -- Reply to this email directly or view it on GitHub: https://github.com/geany/geany/issues/3711#issuecomment-1848379349 You are receiving this because you are subscribed to this thread. Message ID: <geany/geany/issues/3711/1848379...@github.com>