Subject: Re: .gitk should created hidden in windows

From: Pat Thoyts <[email-masked]>
Date: Tue, 24 Mar 2009 01:04:07 +0100

Paul Mackerras wrote:
> Please try this patch and let me know if it does what you want.
> 
[snip]

This patch works fine on my Vista installation. The .gitk file is now
hidden.

An alternative that was discussed was to move it rather than hide it so
that it ends up in the Application Data folder along with settings for
other applications. The following patch does this but hits rather more
lines of code and ends up needing to check the original location as well.

diff --git a/gitk b/gitk
index a7294a1..5ec6e7b 100755
--- a/gitk
+++ b/gitk
@@ -2509,12 +2509,13 @@ proc savestuff {w} {
     global viewname viewfiles viewargs viewargscmd viewperm nextviewnum
     global cmitmode wrapcomment datetimeformat limitdiffs
     global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor
-    global autoselect extdifftool perfile_attrs markbgcolor
+    global autoselect extdifftool perfile_attrs markbgcolor rcfile

     if {$stuffsaved} return
     if {![winfo viewable .]} return
-    catch {
-	set f [open "~/.gitk-new" w]
+    set tmpfile "${rcfile}-new"
+    if {[catch {
+	set f [open $tmpfile {CREAT WRONLY}]
 	puts $f [list set mainfont $mainfont]
 	puts $f [list set textfont $textfont]
 	puts $f [list set uifont $uifont]
@@ -2555,7 +2556,10 @@ proc savestuff {w} {
 	}
 	puts $f "}"
 	close $f
-	file rename -force "~/.gitk-new" "~/.gitk"
+	file rename -force $tmpfile $rcfile
+    } err]} {
+        tk_messageBox -icon error -message $err \
+            -title "Failed to save preferences"
     }
     set stuffsaved 1
 }
@@ -10790,7 +10794,13 @@ namespace import ::msgcat::mc
 ## And eventually load the actual message catalog
 ::msgcat::mcload $gitk_msgsdir

-catch {source ~/.gitk}
+set rcfile ~/.gitk
+if {$::tcl_platform(platform) eq "windows"} {
+    # Load old settings file if present
+    if {[file exists ~/.gitk]} {catch {source ~/.gitk}}
+    set rcfile [file join $env(APPDATA) gitk.settings]
+}
+catch {source $rcfile}

 font create optionfont -family sans-serif -size -12