geany-plugins icon indicating copy to clipboard operation
geany-plugins copied to clipboard

Geany blocks upon GeanyVC spawning an external diff viewer.

Open oscarwodan opened this issue 8 years ago • 2 comments

This means that you can't do any work in Geany until you close the external diff viewer. This seriously reduces the usefulness of the otherwise great feature of being able to use an external diff viewer.

The external diff viewer is spawned here: https://github.com/geany/geany-plugins/blob/master/geanyvc/src/externdiff.c#L122

Looks like the problem might simply be solved by calling g_spawn_async instead of g_spawn_sync.

oscarwodan avatar Feb 24 '17 10:02 oscarwodan

In theory yes, but due to structure of code there needs some extra handling code for temporally file created here -> https://github.com/geany/geany-plugins/blob/master/geanyvc/src/geanyvc.c#L602 ff

frlan avatar Feb 26 '17 14:02 frlan

This seriously reduces the usefulness of the otherwise great feature of being able to use an external diff viewer.

Not sure what your workflow is. Geany does block, but the external diff tool is not getting blocked. Moreover, you may as well make edits to the current version of the file being diff'ed directly from an external diff tool (e.g. meld).

For the most part, GeanyVC uses external diff tool indeed more like a side-by-side diff viewer. Once done inspecting the diffs, the user is assumed to close the external diff tool and get back to Geany, just as it's done with internal Diff tab. Another external diff is just two clicks away.

Also GeanyVC's external diff use foregoes whatever repository "smarts" such an external diff tool may have. Some tools in fact may have merge, selective patch, etc. abilities directly supporting the underlying VCS type. This may be quite versatile indeed. If that's what you mean in your workflow, then you may just launch such a diff tool directly with the repo's base dir and use it stand-alone.

The current GeanyVC approach to create a local BASE~ copy of file under diff forces the diff tool into file-diff-mode (as opposed to version-diff-mode). This is more universal and allows GeanyVC to use the external diff tool even with those VCS that are not supported by the external tool.

nomadbyte avatar Nov 13 '20 21:11 nomadbyte