• M
    gitk: Only write changed configuration variables · 995f792b
    Max Kirillov 提交于
    When gitk contains some changed parameter, and there is an existing
    instance of gitk where the parameter is still old, it is reverted to
    that old value when that instance exits.
    
    Instead, store a parameter in config only if it 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, without 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 in their old places,
    add new ones to the end of list. Collect modified views 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: NMax Kirillov <max@max630.net>
    Signed-off-by: NPaul Mackerras <paulus@samba.org>
    995f792b
gitk 337.7 KB