@@ -49,6 +49,10 @@ export class Model implements IDisposable {
4949 public readonly onDidChangeRepository : Event < IModelChangeEvent > = this
5050 . _onDidChangeRepository . event ;
5151
52+ private _onDidChangeStatusRepository = new EventEmitter < Repository > ( ) ;
53+ public readonly onDidChangeStatusRepository : Event < Repository > = this
54+ . _onDidChangeStatusRepository . event ;
55+
5256 public openRepositories : IOpenRepository [ ] = [ ] ;
5357 private disposables : Disposable [ ] = [ ] ;
5458 private enabled = false ;
@@ -139,12 +143,6 @@ export class Model implements IDisposable {
139143 this . disposables
140144 ) ;
141145
142- window . onDidChangeActiveTextEditor (
143- ( ) => this . checkHasChangesOnActiveEditor ( ) ,
144- this ,
145- this . disposables
146- ) ;
147-
148146 await this . scanWorkspaceFolders ( ) ;
149147 }
150148
@@ -180,54 +178,6 @@ export class Model implements IDisposable {
180178 . forEach ( p => this . eventuallyScanPossibleSvnRepository ( p ) ) ;
181179 }
182180
183- private hasChangesOnActiveEditor ( ) : boolean {
184- if ( ! window . activeTextEditor ) {
185- return false ;
186- }
187- const uri = window . activeTextEditor . document . uri ;
188-
189- const repository = this . getRepository ( uri ) ;
190- if ( ! repository ) {
191- return false ;
192- }
193-
194- const resource = repository . getResourceFromFile ( uri ) ;
195- if ( ! resource ) {
196- return false ;
197- }
198-
199- switch ( resource . type ) {
200- case Status . ADDED :
201- case Status . DELETED :
202- case Status . EXTERNAL :
203- case Status . IGNORED :
204- case Status . NONE :
205- case Status . NORMAL :
206- case Status . UNVERSIONED :
207- return false ;
208- case Status . CONFLICTED :
209- case Status . INCOMPLETE :
210- case Status . MERGED :
211- case Status . MISSING :
212- case Status . MODIFIED :
213- case Status . OBSTRUCTED :
214- case Status . REPLACED :
215- return true ;
216- }
217-
218- // Show if not match
219- return true ;
220- }
221-
222- @debounce ( 100 )
223- private checkHasChangesOnActiveEditor ( ) {
224- commands . executeCommand (
225- "setContext" ,
226- "svnActiveEditorHasChanges" ,
227- this . hasChangesOnActiveEditor ( )
228- ) ;
229- }
230-
231181 private disable ( ) : void {
232182 this . repositories . forEach ( repository => repository . dispose ( ) ) ;
233183 this . openRepositories = [ ] ;
@@ -456,15 +406,19 @@ export class Model implements IDisposable {
456406 this . _onDidChangeRepository . fire ( { repository, uri } )
457407 ) ;
458408
409+ const changeStatus = repository . onDidChangeStatus ( ( ) => {
410+ this . _onDidChangeStatusRepository . fire ( repository ) ;
411+ } ) ;
412+
459413 const statusListener = repository . onDidChangeStatus ( ( ) => {
460414 this . scanExternals ( repository ) ;
461- this . checkHasChangesOnActiveEditor ( ) ;
462415 } ) ;
463416 this . scanExternals ( repository ) ;
464417
465418 const dispose = ( ) => {
466419 disappearListener . dispose ( ) ;
467420 changeListener . dispose ( ) ;
421+ changeStatus . dispose ( ) ;
468422 statusListener . dispose ( ) ;
469423 repository . dispose ( ) ;
470424
0 commit comments