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);
    }
  • 相关阅读:
    git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
    angular 过滤器(日期转换,时间转换,数据转换等)
    js 毫秒转天时分秒
    使用Vue-Router 2实现路由功能
    vue-cli中安装方法
    Vue 2.5 发布了:15篇前端热文回看
    es6 语法 (模块化)
    es6 语法 (Decorator)
    es6 语法 (Generator)
    js 判断当前是什么浏览器
  • 原文地址:https://www.cnblogs.com/jintan/p/1515838.html
Copyright © 2011-2022 走看看