diff --git a/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs b/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs index d7eb8f270b..5935659c9b 100644 --- a/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs +++ b/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs @@ -14,16 +14,16 @@ namespace ICSharpCode.GitAddIn { public override void Run() { - FileService.FileCreated += (sender, args) => { - Git.Add(args.FileName, - exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, args.FileName) - ); + FileService.FileCreated += (sender, e) => { + Git.Add(e.FileName, + exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, e.FileName) + ); }; - FileService.FileRemoved += (sender, args) => { - if (GitStatusCache.GetFileStatus(args.FileName) == GitStatus.Added) { - Git.Remove(args.FileName, true, - exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, args.FileName)); - } + FileService.FileRemoved += (sender, e) => { + RemoveFile(e.FileName); + }; + FileService.FileRenamed += (sender, e) => { + RenameFile(e.SourceFile, e.TargetFile); }; FileUtility.FileSaved += (sender, e) => { ClearStatusCacheAndEnqueueFile(e.FileName); @@ -31,6 +31,22 @@ namespace ICSharpCode.GitAddIn AbstractProjectBrowserTreeNode.OnNewNode += TreeNodeCreated; } + void RemoveFile(string fileName) + { + if (GitStatusCache.GetFileStatus(fileName) == GitStatus.Added) { + Git.Remove(fileName, true, + exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, fileName)); + } + } + + void RenameFile(string sourceFileName, string targetFileName) + { + Git.Add(targetFileName, + exitcode => WorkbenchSingleton.SafeThreadAsyncCall(RemoveFile, sourceFileName) + ); + WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, targetFileName); + } + void TreeNodeCreated(object sender, TreeViewEventArgs e) { SolutionNode sn = e.Node as SolutionNode;