Merge commit 'git-gui/master'
* commit 'git-gui/master': (36 commits) git-gui: Change prior tree SHA-1 verification to use git_read git-gui: Include a space in Cygwin shortcut command lines git-gui: Use sh.exe in Cygwin shortcuts git-gui: Paper bag fix for Cygwin shortcut creation git-gui: Improve the Windows and Mac OS X shortcut creators git-gui: Teach console widget to use git_read git-gui: Perform our own magic shbang detection on Windows git-gui: Treat `git version` as `git --version` git-gui: Assume unfound commands are known by git wrapper git-gui: Correct gitk installation location git-gui: Always use absolute path to all git executables git-gui: Show a progress meter for checking out files git-gui: Change the main window progress bar to use status_bar git-gui: Extract blame viewer status bar into mega-widget git-gui: Allow double-click in checkout dialog to start checkout git-gui: Default selection to first matching ref git-gui: Unabbreviate commit SHA-1s prior to display git-gui: Refactor branch switch to support detached head git-gui: Refactor our ui_status_value update technique git-gui: Better handling of detached HEAD ...
This commit is contained in:
@ -5,7 +5,7 @@ proc class {class body} {
|
||||
if {[namespace exists $class]} {
|
||||
error "class $class already declared"
|
||||
}
|
||||
namespace eval $class {
|
||||
namespace eval $class "
|
||||
variable __nextid 0
|
||||
variable __sealed 0
|
||||
variable __field_list {}
|
||||
@ -13,10 +13,9 @@ proc class {class body} {
|
||||
|
||||
proc cb {name args} {
|
||||
upvar this this
|
||||
set args [linsert $args 0 $name $this]
|
||||
return [uplevel [list namespace code $args]]
|
||||
concat \[list ${class}::\$name \$this\] \$args
|
||||
}
|
||||
}
|
||||
"
|
||||
namespace eval $class $body
|
||||
}
|
||||
|
||||
@ -51,15 +50,16 @@ proc constructor {name params body} {
|
||||
set mbodyc {}
|
||||
|
||||
append mbodyc {set this } $class
|
||||
append mbodyc {::__o[incr } $class {::__nextid]} \;
|
||||
append mbodyc {namespace eval $this {}} \;
|
||||
append mbodyc {::__o[incr } $class {::__nextid]::__d} \;
|
||||
append mbodyc {create_this } $class \;
|
||||
append mbodyc {set __this [namespace qualifiers $this]} \;
|
||||
|
||||
if {$__field_list ne {}} {
|
||||
append mbodyc {upvar #0}
|
||||
foreach n $__field_list {
|
||||
set n [lindex $n 0]
|
||||
append mbodyc { ${this}::} $n { } $n
|
||||
regsub -all @$n\\M $body "\${this}::$n" body
|
||||
append mbodyc { ${__this}::} $n { } $n
|
||||
regsub -all @$n\\M $body "\${__this}::$n" body
|
||||
}
|
||||
append mbodyc \;
|
||||
foreach n $__field_list {
|
||||
@ -80,10 +80,12 @@ proc method {name params body {deleted {}} {del_body {}}} {
|
||||
set params [linsert $params 0 this]
|
||||
set mbodyc {}
|
||||
|
||||
append mbodyc {set __this [namespace qualifiers $this]} \;
|
||||
|
||||
switch $deleted {
|
||||
{} {}
|
||||
ifdeleted {
|
||||
append mbodyc {if {![namespace exists $this]} }
|
||||
append mbodyc {if {![namespace exists $__this]} }
|
||||
append mbodyc \{ $del_body \; return \} \;
|
||||
}
|
||||
default {
|
||||
@ -98,10 +100,12 @@ proc method {name params body {deleted {}} {del_body {}}} {
|
||||
if { [regexp -all -- $n\\M $body] == 1
|
||||
&& [regexp -all -- \\\$$n\\M $body] == 1
|
||||
&& [regexp -all -- \\\$$n\\( $body] == 0} {
|
||||
regsub -all \\\$$n\\M $body "\[set \${this}::$n\]" body
|
||||
regsub -all \
|
||||
\\\$$n\\M $body \
|
||||
"\[set \${__this}::$n\]" body
|
||||
} else {
|
||||
append decl { ${this}::} $n { } $n
|
||||
regsub -all @$n\\M $body "\${this}::$n" body
|
||||
append decl { ${__this}::} $n { } $n
|
||||
regsub -all @$n\\M $body "\${__this}::$n" body
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -112,11 +116,21 @@ proc method {name params body {deleted {}} {del_body {}}} {
|
||||
namespace eval $class [list proc $name $params $mbodyc]
|
||||
}
|
||||
|
||||
proc create_this {class} {
|
||||
upvar this this
|
||||
namespace eval [namespace qualifiers $this] [list proc \
|
||||
[namespace tail $this] \
|
||||
[list name args] \
|
||||
"eval \[list ${class}::\$name $this\] \$args" \
|
||||
]
|
||||
}
|
||||
|
||||
proc delete_this {{t {}}} {
|
||||
if {$t eq {}} {
|
||||
upvar this this
|
||||
set t $this
|
||||
}
|
||||
set t [namespace qualifiers $t]
|
||||
if {[namespace exists $t]} {namespace delete $t}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user