Skip to content

Commit ce5e6fe

Browse files
hacke2guqiankun.gqk
authored andcommitted
fix: 修复加载 webscm 插件时产生多个相同的 reference
1 parent 21e4b67 commit ce5e6fe

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

packages/alex/src/core/extension/extension.patch.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
12
import { MainThreadLanguages } from '@opensumi/ide-extension/lib/browser/vscode/api/main.thread.language';
23
import { AbstractExtInstanceManagementService } from '@opensumi/ide-extension/lib/browser/types';
34

@@ -24,6 +25,21 @@ MainThreadLanguages.prototype.createSignatureHelpProvider = function (...args: a
2425
return provider;
2526
};
2627

28+
// TODO: 如果加载 webscm 插件,provideReferences 结果会拿到与当前 file 协议一样的 web_scm 协议的 reference,先过滤掉非 file 协议的文件
29+
// @ts-ignore
30+
const _createReferenceProvider = MainThreadLanguages.prototype.createReferenceProvider;
31+
// @ts-ignore
32+
MainThreadLanguages.prototype.createReferenceProvider = function (...args: any[]) {
33+
const provider = _createReferenceProvider.call(this, ...args);
34+
const _provideReferences = provider.provideReferences;
35+
provider.provideReferences = function (...args: any[]) {
36+
return (_provideReferences.call(this, ...args) as Promise<monaco.languages.Location[]>).then(
37+
(references) => references.filter((reference) => reference.uri.scheme === 'file')
38+
);
39+
};
40+
return provider;
41+
};
42+
2743
disposableCollection.push((injector) => {
2844
(
2945
injector.get(AbstractExtInstanceManagementService) as AbstractExtInstanceManagementService

0 commit comments

Comments
 (0)