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);
    }
  • 相关阅读:
    BUUCTF-[GYCTF2020]Blacklist 1 思路
    [强网杯 2019]随便注 WriteUp(three way)思路
    [GXYCTF2019]Ping Ping Ping 1思路
    [ACTF2020 新生赛]Include 思路
    [极客大挑战 2019]Secret File 思路
    [SUCTF 2019]EasySQL 思路
    java环境变量配置 详细
    [极客大挑战 2019]Upload 思路
    [极客大挑战 2019]Http 思路
    [ACTF2020 新生赛]Exec 思路
  • 原文地址:https://www.cnblogs.com/jintan/p/1515838.html
Copyright © 2011-2022 走看看