Re: [PATCH v2 2/3] gitk: write only changed configuration variables
- From
Max Kirillov <max@max630.net>
- Date
- Oct 30, 2014, 21:43 UTC
- Message-ID
- <20141030214357.GA6484@wheezy.local>
- In-Reply-To
- <20141030095513.GE16472@iris.ozlabs.ibm.com>
Hi.
On Thu, Oct 30, 2014 at 08:55:13PM +1100, Paul Mackerras wrote:
Show 5 quoted lines
> It seems to me that we need the trace only for the > non-array configuration variables; the array case is only > for the view definitions, and I think we could just set > the changed flag for a view explicitly in [newviewok]. > That would simplify things quite a bit.
I liked the idea to exploit that tcl can watch array element uniformly with scalar variables. But I agree that the result is a bit complicated. I will try to use the explicit flag and see how it's going to look.
Show 6 quoted lines
> On Sun, Sep 14, 2014 at 11:35:58PM +0300, Max Kirillov wrote: > I'm also not convinced we need all the uses of upvar. Why do we need > to use upvar to rename viewname, viewfiles etc. to current_viewname, > etc.? If you're concerned about what might possibly be in the .gitk > when you source it, perhaps doing the source inside a namespace would > be a cleaner approach?
I have tried namespaces originally but failed with them. Apparently when "set v .." runs in namespace and global v exists, it modifies the global v rather than creates a new variabe in a namespace. I don't remember all details now but I could not find how to make it with namespaces. I should say I had not known anything about tcl namespaces before I started doing this but, so maybe I missed something.
--
Max
PS: the script which shows the namespace behavior:
> set a 1
> namespace eval ns1 {
> set a 2
> }
> puts "a=$a"
> puts "ns1::a=$ns1::a"
Output is:
> a=2
> can't read "ns1::a": no such variable
> while executing
> "puts "ns1::a=$ns1::a""