Skip to content

Commit a3392c6

Browse files
committed
Prevent continuous "package resolve" cycles
We can ignore the create and delete events as these were likely caused by the LSP or SwiftPM anywatch. Watch for change still in case the user switches branches Issue: #1571
1 parent 269d6f2 commit a3392c6

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/PackageWatcher.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { showReloadExtensionNotification } from "./ui/ReloadExtension";
3030
*/
3131
export class PackageWatcher {
3232
private packageFileWatcher?: vscode.FileSystemWatcher;
33+
private resolvedChangedDisposable?: vscode.Disposable;
3334
private resolvedFileWatcher?: vscode.FileSystemWatcher;
3435
private workspaceStateFileWatcher?: vscode.FileSystemWatcher;
3536
private snippetWatcher?: vscode.FileSystemWatcher;
@@ -59,6 +60,7 @@ export class PackageWatcher {
5960
*/
6061
dispose() {
6162
this.packageFileWatcher?.dispose();
63+
this.resolvedChangedDisposable?.dispose();
6264
this.resolvedFileWatcher?.dispose();
6365
this.workspaceStateFileWatcher?.dispose();
6466
this.snippetWatcher?.dispose();
@@ -77,11 +79,18 @@ export class PackageWatcher {
7779

7880
private createResolvedFileWatcher(): vscode.FileSystemWatcher {
7981
const watcher = vscode.workspace.createFileSystemWatcher(
80-
new vscode.RelativePattern(this.folderContext.folder, "Package.resolved")
82+
new vscode.RelativePattern(this.folderContext.folder, "Package.resolved"),
83+
// https://github.com/swiftlang/vscode-swift/issues/1571
84+
// We can ignore create because that would be seemingly from a Package.resolved
85+
// and will ignore delete as we don't know the reason behind. By still listening
86+
// for change
87+
true,
88+
false,
89+
true
90+
);
91+
this.resolvedChangedDisposable = watcher.onDidChange(
92+
async () => await this.handlePackageResolvedChange()
8193
);
82-
watcher.onDidCreate(async () => await this.handlePackageResolvedChange());
83-
watcher.onDidChange(async () => await this.handlePackageResolvedChange());
84-
watcher.onDidDelete(async () => await this.handlePackageResolvedChange());
8594
return watcher;
8695
}
8796

0 commit comments

Comments
 (0)