git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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""
Previous: Paul MackerrasNext: Max Kirillov
Message 6 of 7 in “gitk: save only changed configuration on exit”
  1. 0/3 gitk: save only changed configuration on exitMax Kirillov, Sep 14, 2014
  2. 1/3 gitk refactor: remove boilerplate for configuration variablesMax Kirillov, Sep 14, 2014
  3. Paul MackerrasOct 30, 2014
  4. 2/3 gitk: write only changed configuration variablesMax Kirillov, Sep 14, 2014
  5. Paul MackerrasOct 30, 2014
  6. Max KirillovOct 30, 2014
  7. 3/3 gitk: synchronize config writeMax Kirillov, Sep 14, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.