git-gui: ensure the file in the diff pane is in the list of selected files
[gitweb.git] / lib / index.tcl
index e9db0c49895fbebdf8dbe7c0472546a05fea26a0..74a81a7b42779c006fb0c0060724359fca2b33d9 100644 (file)
@@ -103,8 +103,11 @@ proc write_update_indexinfo {fd pathList totalCnt batch after} {
                set s $file_states($path)
                switch -glob -- [lindex $s 0] {
                A? {set new _O}
-               M? {set new _M}
+               MT -
+               TM -
                T_ {set new _T}
+               M? {set new _M}
+               TD -
                D_ {set new _D}
                D? {set new _?}
                ?? {continue}
@@ -167,7 +170,10 @@ proc write_update_index {fd pathList totalCnt batch after} {
                AD {set new __}
                ?D {set new D_}
                _O -
+               AT -
                AM {set new A_}
+               TM -
+               MT -
                _T {set new T_}
                _U -
                U? {
@@ -261,7 +267,7 @@ proc unstage_helper {txt paths} {
                switch -glob -- [lindex $file_states($path) 0] {
                A? -
                M? -
-               T_ -
+               T? -
                D? {
                        lappend pathList $path
                        if {$path eq $current_diff_path} {
@@ -350,12 +356,33 @@ proc do_add_all {} {
        global file_states
 
        set paths [list]
+       set untracked_paths [list]
        foreach path [array names file_states] {
                switch -glob -- [lindex $file_states($path) 0] {
                U? {continue}
                ?M -
                ?T -
                ?D {lappend paths $path}
+               ?O {lappend untracked_paths $path}
+               }
+       }
+       if {[llength $untracked_paths]} {
+               set reply 0
+               switch -- [get_config gui.stageuntracked] {
+               no {
+                       set reply 0
+               }
+               yes {
+                       set reply 1
+               }
+               ask -
+               default {
+                       set reply [ask_popup [mc "Stage %d untracked files?" \
+                                                                         [llength $untracked_paths]]]
+               }
+               }
+               if {$reply} {
+                       set paths [concat $paths $untracked_paths]
                }
        }
        add_helper {Adding all changed files} $paths
@@ -387,7 +414,7 @@ proc revert_helper {txt paths} {
        # such distinction is needed in some languages. Previously, the
        # code used "Revert changes in" for both, but that can't work
        # in languages where 'in' must be combined with word from
-       # rest of string (in diffrent way for both cases of course).
+       # rest of string (in different way for both cases of course).
        #
        # FIXME: Unfortunately, even that isn't enough in some languages
        # as they have quite complex plural-form rules. Unfortunately,