zoukankan      html  css  js  c++  java
  • 编写VSIP扩展 折叠代码区域(region)

    private void OnCreateHiddenRegion(ExecuteEventArgs ea)
    {
         IVsHiddenTextSession Session 
    = 
    GetHiddenTextSession(DXCoreEngine.Source.Active);

         TextSpan Span 
    = new TextSpan();
         SourceRange Range 
    = DXCoreEngine.Source.Active.Range;
         Span.iStartLine 
    = Range.Start.Line - 1;
         Span.iStartIndex 
    = Range.Start.Offset - 1;
         Span.iEndLine 
    = Range.End.Line - 1;
         Span.iEndIndex 
    = Range.End.Offset - 1;

         IVsEnumHiddenRegions ExistingRegionsEnumerator 
    = null;
         Session.EnumHiddenRegions(
    00nullout ExistingRegionsEnumerator);
         
    uint ExistingCount = 0;
         ExistingRegionsEnumerator.GetCount(
    out ExistingCount);
         
    if (ExistingCount > 0)
         {
             IVsHiddenRegion[] ExistingRegions 
    = new 
    IVsHiddenRegion[ExistingCount];
             
    uint pcElFetched = 0;
             ExistingRegionsEnumerator.Next(ExistingCount, ExistingRegions, 
    out pcElFetched);

             
    foreach (IVsHiddenRegion Canidate in ExistingRegions)
             {
                 TextSpan[] SpanRetrieverArra1 
    = new TextSpan[1];
                 Canidate.GetSpan(SpanRetrieverArra1);
                 TextSpan SpanCanidate 
    = SpanRetrieverArra1[0];
                 
    if ((SpanCanidate.iStartLine    == Span.iStartLine) &&
                     (SpanCanidate.iStartIndex   
    == Span.iStartIndex) &&
                     (SpanCanidate.iEndLine      
    == Span.iEndLine) &&
                     (SpanCanidate.iEndIndex     
    == Span.iEndIndex))
                 {
                     Canidate.Invalidate(
    0);
                     
    return;
                 }
             }
         }

         
    string Banner = 
    DXCoreEngine.Documents.ActiveTextDocument.GetLine(Range.Start.Line);
         Banner 
    = Banner.TrimStart();
         Banner 
    = Banner.TrimEnd();

         NewHiddenRegion[] NewHiddenRegionArray 
    = new NewHiddenRegion[1];
         NewHiddenRegionArray[
    0].dwBehavior = 1;
         NewHiddenRegionArray[
    0].dwClient = 0x2cff;
         NewHiddenRegionArray[
    0].dwState = 0;
         NewHiddenRegionArray[
    0].iType = 1;
         NewHiddenRegionArray[
    0].pszBanner = Banner;
         NewHiddenRegionArray[
    0].tsHiddenText = Span;

         Session.AddHiddenRegions(
    01, NewHiddenRegionArray, null);
    }
  • 相关阅读:
    Longest Common Prefix
    Roman to Integer
    Intger to Roman
    Container With Most Water
    Regular Expression Matching
    atoi
    Rotate List
    54. Search a 2D Matrix && Climbing Stairs (Easy)
    53. Minimum Window Substring
    52. Sort Colors && Combinations
  • 原文地址:https://www.cnblogs.com/jintan/p/1515838.html
Copyright © 2011-2022 走看看