public int GetHandledEvents(out IVsEnumBSTR ppUnk) { var node = LookupNode(); var semanticModel = GetSemanticModel(); var handledEvents = CodeModelService.GetHandledEventNames(node, semanticModel); ppUnk = new VsEnumBSTR(handledEvents); return(VSConstants.S_OK); }
public int GetProximityExpressions(IVsTextBuffer pBuffer, int iLine, int iCol, int cLines, out IVsEnumBSTR ppEnum) { // NOTE(cyrusn): cLines is ignored. This is to match existing dev10 behavior. using (Logger.LogBlock(FunctionId.Debugging_VsLanguageDebugInfo_GetProximityExpressions, CancellationToken.None)) { VsEnumBSTR enumBSTR = null; var succeeded = false; _waitIndicator.Wait( title: ServicesVSResources.Debugger, message: ServicesVSResources.Determining_autos, allowCancel: true, action: waitContext => { var textBuffer = _languageService.EditorAdaptersFactoryService.GetDataBuffer(pBuffer); if (textBuffer != null) { var snapshot = textBuffer.CurrentSnapshot; var nullablePoint = snapshot.TryGetPoint(iLine, iCol); if (nullablePoint.HasValue) { var document = snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document != null) { var point = nullablePoint.Value; var proximityExpressions = _proximityExpressionsService.GetProximityExpressionsAsync(document, point.Position, waitContext.CancellationToken).WaitAndGetResult(waitContext.CancellationToken); if (proximityExpressions != null) { enumBSTR = new VsEnumBSTR(proximityExpressions); succeeded = true; } } } } }); if (succeeded) { ppEnum = enumBSTR; return(VSConstants.S_OK); } ppEnum = null; return(VSConstants.E_FAIL); } }
public int GetProximityExpressions(IVsTextBuffer pBuffer, int iLine, int iCol, int cLines, out IVsEnumBSTR?ppEnum) { // NOTE(cyrusn): cLines is ignored. This is to match existing dev10 behavior. using (Logger.LogBlock(FunctionId.Debugging_VsLanguageDebugInfo_GetProximityExpressions, CancellationToken.None)) { VsEnumBSTR?enumBSTR = null; if (_proximityExpressionsService != null) { _uiThreadOperationExecutor.Execute( title: ServicesVSResources.Debugger, defaultDescription: ServicesVSResources.Determining_autos, allowCancellation: true, showProgress: false, action: context => { var textBuffer = _languageService.EditorAdaptersFactoryService.GetDataBuffer(pBuffer); if (textBuffer != null) { var snapshot = textBuffer.CurrentSnapshot; var nullablePoint = snapshot.TryGetPoint(iLine, iCol); if (nullablePoint.HasValue) { var document = snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document != null) { var point = nullablePoint.Value; var proximityExpressions = _proximityExpressionsService.GetProximityExpressionsAsync(document, point.Position, context.UserCancellationToken).WaitAndGetResult(context.UserCancellationToken); if (proximityExpressions != null) { enumBSTR = new VsEnumBSTR(proximityExpressions); } } } } }); } ppEnum = enumBSTR; return(ppEnum != null ? VSConstants.S_OK : VSConstants.E_FAIL); } }