Skip to content

Commit ac79954

Browse files
committed
Improved detection of support for decoration provider(Close #149)
1 parent b869453 commit ac79954

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

src/util.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,36 @@ export function camelcase(name: string) {
9797
.replace(/[\s\-]+/g, "");
9898
}
9999

100+
let hasDecorationProvider = false;
100101
export function hasSupportToDecorationProvider() {
101-
return typeof window.registerDecorationProvider === "function";
102+
return hasDecorationProvider;
102103
}
103104

105+
try {
106+
const fake = {
107+
onDidChangeDecorations: (value: any): any => toDisposable(() => {}),
108+
provideDecoration: (uri: any, token: any): any => {},
109+
dispose: () => {}
110+
};
111+
const disposable = window.registerDecorationProvider(fake);
112+
hasDecorationProvider = true;
113+
disposable.dispose();
114+
} catch (error) {}
115+
116+
let hasRegisterDiffCommand = false;
104117
export function hasSupportToRegisterDiffCommand() {
105-
try {
106-
const disposable = commands.registerDiffInformationCommand(
107-
"svn.testDiff",
108-
() => {}
109-
);
110-
disposable.dispose();
111-
return true;
112-
} catch (error) {
113-
return false;
114-
}
118+
return hasRegisterDiffCommand;
115119
}
116120

121+
try {
122+
const disposable = commands.registerDiffInformationCommand(
123+
"svn.testDiff",
124+
() => {}
125+
);
126+
hasRegisterDiffCommand = true;
127+
disposable.dispose();
128+
} catch (error) {}
129+
117130
export function timeout(ms: number) {
118131
return new Promise(resolve => setTimeout(resolve, ms));
119132
}

0 commit comments

Comments
 (0)