编写VSIP扩展 - 折叠代码区域(region)
2009-07-02 21:38
183 查看
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(0, 0, null, out 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(0, 1, NewHiddenRegionArray, null);
}
{
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(0, 0, null, out 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(0, 1, NewHiddenRegionArray, null);
}
相关文章推荐
- python编写爬虫获取区域代码-递归获取所有子页面
- CSS3 区域模块 region相关编写示例
- C# 将透明图片的非透明区域转换成Region的实例代码
- 定义可以扩展和收缩的代码区域的开头和结尾
- 编写易于删除,而不是易于扩展的代码
- Emacs 编写代码 折叠与展开
- 编写自定义任务,轻松扩展Ant (3) 代码
- 【代码折叠】让eclipse支持类似VS的Region
- 编写JMeter扩展(1)编写采样器代码
- 编写易于删除,而不是易于扩展的代码
- JavaScript可折叠区域实现代码
- intelliJ idea #region 代码折叠
- 使用IAR的扩展语言特性编写可复用的代码
- 编写JMeter扩展(2)编写采样器代码对应的GUI
- android studio 中类似VS的代码折叠功能Region
- cnapckSurround c++builder Region 代码折叠快捷键
- vscode 折叠所有区域代码快捷键
- intelliJ idea #region 代码折叠
- 可折叠区域代码的实现
- 图像显著区域检测代码及其效果图 saliency region detection