Implemented folding of #regions, usings and comments.

This commit is contained in:
Daniel Grunwald 2012-12-24 01:37:42 +01:00
Родитель b739eb3daa
Коммит dbefda9caf
4 изменённых файлов: 18 добавлений и 33 удалений

Просмотреть файл

@ -1,30 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using ICSharpCode.AvalonEdit.Document;
namespace ICSharpCode.AvalonEdit.Folding
{
/// <summary>
/// Base class for folding strategies.
/// </summary>
public abstract class AbstractFoldingStrategy
{
/// <summary>
/// Create <see cref="NewFolding"/>s for the specified document and updates the folding manager with them.
/// </summary>
public void UpdateFoldings(FoldingManager manager, TextDocument document)
{
int firstErrorOffset;
IEnumerable<NewFolding> foldings = CreateNewFoldings(document, out firstErrorOffset);
manager.UpdateFoldings(foldings, firstErrorOffset);
}
/// <summary>
/// Create <see cref="NewFolding"/>s for the specified document.
/// </summary>
public abstract IEnumerable<NewFolding> CreateNewFoldings(TextDocument document, out int firstErrorOffset);
}
}

Просмотреть файл

@ -31,6 +31,12 @@ namespace ICSharpCode.AvalonEdit.Folding
/// </summary> /// </summary>
public bool DefaultClosed { get; set; } public bool DefaultClosed { get; set; }
/// <summary>
/// Gets/Sets whether the folding is considered to be a definition.
/// This has an effect on the 'Show Definitions only' command.
/// </summary>
public bool IsDefinition { get; set; }
/// <summary> /// <summary>
/// Creates a new NewFolding instance. /// Creates a new NewFolding instance.
/// </summary> /// </summary>

Просмотреть файл

@ -22,7 +22,7 @@ namespace ICSharpCode.AvalonEdit.Folding
/// <summary> /// <summary>
/// Determines folds for an xml string in the editor. /// Determines folds for an xml string in the editor.
/// </summary> /// </summary>
public class XmlFoldingStrategy : AbstractFoldingStrategy public class XmlFoldingStrategy
{ {
/// <summary> /// <summary>
/// Flag indicating whether attributes should be displayed on folded /// Flag indicating whether attributes should be displayed on folded
@ -30,10 +30,20 @@ namespace ICSharpCode.AvalonEdit.Folding
/// </summary> /// </summary>
public bool ShowAttributesWhenFolded { get; set; } public bool ShowAttributesWhenFolded { get; set; }
/// <summary>
/// Create <see cref="NewFolding"/>s for the specified document and updates the folding manager with them.
/// </summary>
public void UpdateFoldings(FoldingManager manager, TextDocument document)
{
int firstErrorOffset;
IEnumerable<NewFolding> foldings = CreateNewFoldings(document, out firstErrorOffset);
manager.UpdateFoldings(foldings, firstErrorOffset);
}
/// <summary> /// <summary>
/// Create <see cref="NewFolding"/>s for the specified document. /// Create <see cref="NewFolding"/>s for the specified document.
/// </summary> /// </summary>
public override IEnumerable<NewFolding> CreateNewFoldings(TextDocument document, out int firstErrorOffset) public IEnumerable<NewFolding> CreateNewFoldings(TextDocument document, out int firstErrorOffset)
{ {
try { try {
XmlTextReader reader = new XmlTextReader(document.CreateReader()); XmlTextReader reader = new XmlTextReader(document.CreateReader());

Просмотреть файл

@ -150,7 +150,6 @@
<Compile Include="Editing\ImeNativeWrapper.cs" /> <Compile Include="Editing\ImeNativeWrapper.cs" />
<Compile Include="Editing\SelectionSegment.cs" /> <Compile Include="Editing\SelectionSegment.cs" />
<Compile Include="Editing\ImeSupport.cs" /> <Compile Include="Editing\ImeSupport.cs" />
<Compile Include="Folding\AbstractFoldingStrategy.cs" />
<Compile Include="Folding\FoldingElementGenerator.cs" /> <Compile Include="Folding\FoldingElementGenerator.cs" />
<Compile Include="Folding\FoldingManager.cs" /> <Compile Include="Folding\FoldingManager.cs" />
<Compile Include="Folding\FoldingMargin.cs" /> <Compile Include="Folding\FoldingMargin.cs" />