Re: [PATCH v4 1/2] gitk: write only changed configuration variables
From: Paul Mackerras <hidden>
Date: 2016-06-15 23:03:56
On Mon, Nov 10, 2014 at 12:20:01AM +0200, Max Kirillov wrote:
When gitk contains some changed parameter, and there is existing
instance of gitk where the parameter is still old, it is reverted to
that old value when the instance exits.
Instead, store a parameter in config only it is has been modified in the
exiting instance. Otherwise, preserve the value which currently is in
file. This allows editing the configuration when several instances are
running, and don't get rollback of the modification if some other
instance where the configuration was not edited is closed last.
For scalar variables, use trace(3tcl) to detect their change. Since `trace` can
send bogus events, doublecheck if the value has really been changed, but once
it is marked as changed, do not reset it back to unchanged ever, because if
user has restored the original value, it's the decision which should be stored
as well as modified value.
Treat view list especially: instead of rewriting the whole list, merge
individual views. Place old and updated views at their older placed, add
new ones to the end of list. Collect modified view explicitly, in newviewok{}
and delview{}.
Do not merge geometry values. They are almost always changing because
user moves and resises windows, and there is no way to find which one of
the geometries is most desired. Just overwrite them unconditionally,
like earlier.
Signed-off-by: Max Kirillov <redacted>Looks pretty nice; I just have one comment:
+ lappend views_modified_names $current_viewname($v)
This view_modified_names variable doesn't seem to be used anywhere. If you don't mind me taking out this line, I'll do that and apply the patch. Regards, Paul.