Skip to content

Commit 6b05d17

Browse files
committed
feat: implemented provideReferences
1 parent 86079ad commit 6b05d17

File tree

3 files changed

+29
-6
lines changed

3 files changed

+29
-6
lines changed

src/monaco/Monaco.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const editor = shallowRef<monaco.editor.IStandaloneCodeEditor | undefined>(undef
3131
3232
const currentModel = shallowRef<monaco.editor.ITextModel>(
3333
getOrCreateModel(
34-
monaco.Uri.parse('playground:///demo.vue'),
34+
monaco.Uri.parse('file:///demo.vue'),
3535
'vue',
3636
props.value ?? ''
3737
)

src/monaco/code2monaco.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,19 @@ export function asMarkdownString(markdownString: vscode.Hover['contents']): mona
141141
}
142142
}
143143

144-
export function asLocation(definition: vscode.LocationLink): monaco.languages.Location {
145-
return {
146-
uri: asUri(definition.targetUri),
147-
range: asRange(definition.targetRange),
148-
};
144+
export function asLocation(definition: vscode.LocationLink | vscode.Location): monaco.languages.Location {
145+
if ('targetUri' in definition) {
146+
return {
147+
uri: asUri(definition.targetUri),
148+
range: asRange(definition.targetRange),
149+
};
150+
}
151+
else {
152+
return {
153+
uri: asUri(definition.uri),
154+
range: asRange(definition.range),
155+
};
156+
}
149157
}
150158

151159
export function asUri(uri: vscode.URI): monaco.Uri {

src/monaco/ls.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,21 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
195195
const completionItems = new WeakMap<monaco.languages.CompletionItem, vscode.CompletionItem>();
196196

197197
disposables.value.push(
198+
// TODO: registerTokensProviderFactory
199+
// TODO: setTokensProvider
200+
// TODO: setMonarchTokensProvider
201+
monaco.languages.registerReferenceProvider(lang, {
202+
provideReferences: async (model, position) => {
203+
const codeResult = await ls.findReferences(
204+
model.uri.toString(),
205+
monaco2code.asPosition(position),
206+
);
207+
// TODO: can't show if only one result from libs
208+
if (codeResult) {
209+
return codeResult.map(code2monaco.asLocation);
210+
}
211+
},
212+
}),
198213
monaco.languages.registerCompletionItemProvider(lang, {
199214
// https://github.com/johnsoncodehk/volar/blob/2f786182250d27e99cc3714fbfc7d209616e2289/packages/vue-language-server/src/registers/registerlanguageFeatures.ts#L57
200215
triggerCharacters: '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ '.split(''),

0 commit comments

Comments
 (0)