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);
        }
Example #2
0
            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);
                }
            }