I have switched off the setting to save the configuration on exit, because it seemed to take too much time. Now I noticed that some things are not saved on exit, which I wouldn't have thought to be part of "the configuration". In other words, I would really like to have the following things saved (in the hope that this will be far quicker than a full save):
- the last directories of the two panels
- last sort orders, fiters - everything that can be configured directly from the Left and Right menus, maybe with the exception of the columns.
- the Shift+F4 history
Another idea: why don't you change the configuration logic so that changes from the configuration dialog are saved after the dialog has been left? Only the changes that the user made, of course, not the complete set. This should also be very fast under most circumstances and get rid of the lengthy saving process.
Now, the second thing, but related to this, is the fact that I have multiple instances of SS running most of the time. When I make an important setting change in one of these instances and Save that, I would like to be able to Load the configuration in the other instances, without having to restart them. Also, if I forget to Load the configuration (or restart, as things are now), I might decide at a later point to Save the configuration from one of those other instances - and kill the earlier changes that are already saved. It would be better if the current instance would note at this point that its "copy" of the configuration is not a current one, because the registry settings have already changed, and ask me about it.
I hope this doesn't sound too chaotic... now, from a professional perspective (I have some experience with software design, see my blog at http://www.sturmnet.org/blog if you want) I find that the whole saving mechanism is pretty poorly implemented for certain use cases. It works fine in many ways, but it has enormous drawbacks in others. If I were you, I would:
- change the configuration system from the registry to a config file system, use XML for the config file
- implement the saving system in such a way that all changes are saved immediately after the user has confirmed them. It's crap to have an app running for a few days, until it crashes, and lose a wealth of configuration changes that the user doesn't even remember any more. I never switch off my system and I never quit certain applications - why would I?
- make running instances of SS watch their configuration file using Windows API. Ask the user whether he wants settings reloaded when the file changes. Notify the user when he tries to change settings while the file has newer than the ones loaded into the running instance.
- extract that "run information"/history/whatever information that I listed at the beginning of this post from the overall settings and store it elsewhere. Make all running instances access the same store of that information. For example, if I use Shift-F7 to access a specific location in one instance, and later I hit Shift-F7 in another running instance, I want to see the history entry.