On 03/11/2011 23:46, Lex Trotman wrote:
On 4 November 2011 01:45, Nick Treleavennick.treleaven@btinternet.com wrote:
My solution:
A foo.geanystub project file goes in version control. It is never written to. It should be prepared by manually editing a copy of a local project file.
On opening a foo.geanystub file, Geany creates foo.geany in the same path then opens it.
When opening foo.geany, if foo.geanystub exists, then override settings with the stub contents.
This way the VC file can decide which settings are not overridable.
My solution shouldn't require much code to implement. I've only noted the bare bones of it, there are some things that could be added to make it better. Even with these I think it's simpler and neater.
Hi Nick,
I like simple, why don't we just add a setting to projects, say "based on", that allows a project file to import settings from another. Then the user project is "based on" the one in the VCS working directory. Simple and explicit and can adapt to any locations, on opening the project, settings are taken from the "based on" file if it exists and the setting exists unless it is overridden by the user project file. Based on is not recursive.
I see that 'based on' could be useful for making subprojects, and could be added to my proposal.
Note that this requires that projects not write a setting unless it is set by the user, that is not always the case now IIRC and is an added complication.
I don't think this is a good requirement. Plugins already can write settings so I think it will be hard to enforce. But also rewriting existing code can be avoided and would be better.
Rewriting code is what made me think supporting VCS project files was not worth it, but if that can be avoided and the new code is fairly minimal I think it's acceptable.
This way the VCS file is still a project file and can be edited using the Geany UI, albeit at the cost of writing session crap into it, but as that is overridden by the user session crap on next open so it doesn't matter.
I know that using Geany to create the VCS project would be easier, but stub creation is something that needs to be done rarely. I don't think it's worth rewriting existing code to support something that gets used rarely - use of projects depending on a stub is something that might be a popular feature (I realized eventually ;-)), but the actual stub creation and modifications is probably rare.
I think having a separate filetype for the VCS file is good design because it shouldn't be written to, so it is different from a normal geany project file.