Sorry, a little busy with the LSP plugin :-).
I believe the behavior is still the same. I just moved the code around a bit, so only difference should be in timing. It parses each file separately, storing the result in data->source_files and tm_workspace_add_source_files(data->source_files) is called only once, after all files are processed.
I think you misunderstand how it works - `tm_workspace_add_source_files()` is the function that performs the parsing, `tm_source_file_new()` just creates a kind of handle representing the file. So if you wanted to keep the UI kind of responsive while the project is parsed, you'd have to add the files one by one using `tm_workspace_add_source_file()` but this would lead to the performance problem I mentioned.
And, in addition, each this addition would have to happen in a separate idle call (with priority LOW) so you'd give GTK chance to process other events if you wanted to have the UI partially responsive. Now my preference in this respect is to rather have the UI stuck for a while and fully working afterwards than semi-working for a longer time.
The problem is that I'm used to work on remote sources over sshfs, which adds more overhead.
Ah, OK, that's the problem then.
Anyway, I'm quite okay if you say neither of those two PRs is worth the trouble. It was a nice exercise in C and I learned bit more about geany internals and plugins, so I've gained something if the code is not merged in the end.
It's just a matter of the UI but to me the "stuck while nothing is loaded" looks better than "stuck while everything seems to be loaded and ready". I agree it's a bit stupid to parse the files twice but I'd prefer the UI to behave the way it works now.