Ejemplo n.º 1
0
        public void CreateHiddenRegion(string bannerText, TextSpan ts)
        {
            IVsHiddenTextSession session = HiddenTextSession;

            if (session != null)
            {
                NewHiddenRegion[] NewHiddenRegionArray = new NewHiddenRegion[1];
                NewHiddenRegionArray[0].dwBehavior = (uint)HIDDEN_REGION_BEHAVIOR.hrbClientControlled;
                //NewHiddenRegionArray[0].dwClient = 0x2cff;
                NewHiddenRegionArray[0].dwState      = (uint)HIDDEN_REGION_STATE.hrsDefault;
                NewHiddenRegionArray[0].iType        = (int)HIDDEN_REGION_TYPE.hrtCollapsible;
                NewHiddenRegionArray[0].pszBanner    = bannerText;
                NewHiddenRegionArray[0].tsHiddenText = ts;
                int isOk = session.AddHiddenRegions(
                    (uint)CHANGE_HIDDEN_REGION_FLAGS.chrDefault,
                    1,
                    NewHiddenRegionArray,
                    null);

                if (isOk != VSConstants.S_OK)
                {
                    MessageBox.Show("error");
                }
            }
        }
Ejemplo n.º 2
0
        // Produces tags on the snapshot that the tag consumer asked for.
        public IEnumerable <ITagSpan <DocumentationTag> > GetTags(NormalizedSnapshotSpanCollection spans)
        {
            var documentation = Services.DocumentationFileSerializer.Deserialize(_codyDocsFilename);

            List <ITagSpan <DocumentationTag> > res =
                new List <ITagSpan <DocumentationTag> >();
            var currentSnapshot = _buffer.CurrentSnapshot;


            var                  hiddenTextManager = ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager)) as IVsHiddenTextManager;
            var                  service           = ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager));
            var                  textManager       = service as IVsTextManager2;
            IVsTextView          view;
            int                  result        = textManager.GetActiveView2(1, null, (uint)_VIEWFRAMETYPE.vftCodeWindow, out view);
            IVsHiddenTextSession hiddenSession = null;

            IVsEnumHiddenRegions[] hiddenRegions = null;
            int hRetVal = hiddenTextManager.GetHiddenTextSession(
                _buffer,
                out hiddenSession);

            if (hRetVal != 0)
            {
                hRetVal = hiddenTextManager.CreateHiddenTextSession(
                    0,
                    _buffer,
                    null,
                    out hiddenSession);
            }

            if (hiddenSession != null)
            {
                foreach (var fragment in documentation.Fragments)
                {
                    int startPos     = fragment.Selection.StartPosition;
                    int length       = fragment.Selection.EndPosition - fragment.Selection.StartPosition;
                    var snapshotSpan = new SnapshotSpan(
                        currentSnapshot, new Span(startPos, length));

                    view.GetLineAndColumn(fragment.Selection.StartPosition, out int startLine, out int startIdx);
                    view.GetLineAndColumn(fragment.Selection.EndPosition, out int endLine, out int endIdx);

                    var hidRegion = new NewHiddenRegion()
                    {
                        dwBehavior   = (uint)HIDDEN_REGION_BEHAVIOR.hrbClientControlled,
                        dwState      = (uint)HIDDEN_REGION_STATE.hrsDefault,
                        iType        = (int)HIDDEN_REGION_TYPE.hrtConcealed,
                        pszBanner    = fragment.Documentation,
                        tsHiddenText = new TextSpan()
                        {
                            iStartLine  = startLine,
                            iStartIndex = startIdx,
                            iEndLine    = endLine,
                            iEndIndex   = endIdx
                        }
                    };
                    hiddenSession.AddHiddenRegions(0, 1, new[] { hidRegion }, hiddenRegions);

                    res.Add(new TagSpan <DocumentationTag>(snapshotSpan, new DocumentationTag(fragment.Selection.Text, snapshot.CreateTrackingSpan(startPos, length, SpanTrackingMode.EdgeInclusive), _buffer)));
                }
            }

            return(res);
        }
Ejemplo n.º 3
0
        private TextViewSelection GetSelection(IServiceProvider serviceProvider)
        {
            var         service     = serviceProvider.GetService(typeof(SVsTextManager));
            var         textManager = service as IVsTextManager2;
            IVsTextView view;
            int         result = textManager.GetActiveView2(1, null, (uint)_VIEWFRAMETYPE.vftCodeWindow, out view);

            view.GetSelection(out int startLine, out int startColumn, out int endLine, out int endColumn);//end could be before beginning

            var hiddenTextManager = serviceProvider.GetService(typeof(SVsTextManager)) as IVsHiddenTextManager;
            IVsHiddenTextSession hiddenSession = null;
            IVsTextLines         lines         = null;

            IVsEnumHiddenRegions[] hiddenRegions = null;
            view.GetBuffer(out lines);
            int hRetVal = hiddenTextManager.GetHiddenTextSession(
                lines,
                out hiddenSession);

            if (hRetVal != 0)
            {
                hRetVal = hiddenTextManager.CreateHiddenTextSession(
                    0,
                    lines,
                    null,
                    out hiddenSession);
                //if (hRetVal != 0)
                //    return null;
            }

            if (hiddenSession != null)
            {
                var hidRegion = new NewHiddenRegion()
                {
                    dwBehavior   = (uint)HIDDEN_REGION_BEHAVIOR.hrbClientControlled,
                    dwState      = (uint)HIDDEN_REGION_STATE.hrsDefault,
                    iType        = (int)HIDDEN_REGION_TYPE.hrtConcealed,
                    pszBanner    = "Testing!!",
                    tsHiddenText = new TextSpan()
                    {
                        iStartLine  = startLine,
                        iStartIndex = startColumn,
                        iEndLine    = endLine,
                        iEndIndex   = endColumn
                    }
                };
                hiddenSession.AddHiddenRegions(0, 1, new[] { hidRegion }, hiddenRegions);
            }


            int ok = view.GetNearestPosition(startLine, startColumn, out int position1, out int piVirtualSpaces);

            ok = view.GetNearestPosition(endLine, endColumn, out int position2, out piVirtualSpaces);

            var startPosition = Math.Min(position1, position2);
            var endPosition   = Math.Max(position1, position2);

            view.GetSelectedText(out string selectedText);

            TextViewSelection selection = new TextViewSelection(startPosition, endPosition, selectedText);

            return(selection);
        }