public async Task <CodeLensContainer> Handle(CodeLensParams request, CancellationToken cancellationToken) { _log.LogInformation(string.Format(Resources.LoggingMessages.request_handle, _method)); try { var fileRepo = _workspaceManager.GetFileRepository(request.TextDocument.Uri); ICodeLensProvider provider = new CodeLensProvider(fileRepo); return(await Task.Run(() => provider.GetCodeLensContainer(), cancellationToken)); } catch (Exception e) { HandleError(string.Format(Resources.LoggingMessages.request_error, _method), e); return(null); } }
public IAsyncAction RegisterCodeLensProviderAsync(string languageId, CodeLensProvider provider) { if (_editor.TryGetTarget(out CodeEditor editor)) { // link:registerCodeLensProvider.ts:ProvideCodeLenses editor._parentAccessor.RegisterEvent("ProvideCodeLenses" + languageId, async(args) => { var list = await provider.ProvideCodeLensesAsync(editor.GetModel()); if (list != null) { return(JsonConvert.SerializeObject(list)); } return(null); }); // link:registerCodeLensProvider.ts:ResolveCodeLens editor._parentAccessor.RegisterEvent("ResolveCodeLens" + languageId, async(args) => { if (args != null && args.Length >= 1) { var lens = await provider.ResolveCodeLensAsync(editor.GetModel(), JsonConvert.DeserializeObject <CodeLens>(args[0])); if (lens != null) { return(JsonConvert.SerializeObject(lens)); } } return(null); }); // link:registerCodeLensProvider.ts:registerCodeLensProvider return(editor.InvokeScriptAsync("registerCodeLensProvider", new object[] { languageId }).AsAsyncAction()); } return(null); }