【求助】关于SharpDevelop的代码折叠问题

hongyu5920 2013-07-11 10:45:40

public BraceFoldingStrategy()
{
this.OpeningBrace = '{';
this.ClosingBrace = '}';
}

/// <summary>
/// Create <see cref="NewFolding"/>s for the specified document.
/// </summary>
public override IEnumerable<NewFolding> CreateNewFoldings(TextDocument document, out int firstErrorOffset)
{
firstErrorOffset = -1;
return CreateNewFoldings(document);
}

/// <summary>
/// Create <see cref="NewFolding"/>s for the specified document.
/// </summary>
public IEnumerable<NewFolding> CreateNewFoldings(ITextSource document)
{
List<NewFolding> newFoldings = new List<NewFolding>();

Stack<int> startOffsets = new Stack<int>();
int lastNewLineOffset = 0;
char openingBrace = this.OpeningBrace;
char closingBrace = this.ClosingBrace;
for (int i = 0; i < document.TextLength; i++) {
char c = document.GetCharAt(i);
if (c == openingBrace) {
startOffsets.Push(i);
} else if (c == closingBrace && startOffsets.Count > 0) {
int startOffset = startOffsets.Pop();
// don't fold if opening and closing brace are on the same line
if (startOffset < lastNewLineOffset) {
newFoldings.Add(new NewFolding(startOffset, i + 1));
}
} else if (c == '\n' || c == '\r') {
lastNewLineOffset = i + 1;
}
}
newFoldings.Sort((a,b) => a.StartOffset.CompareTo(b.StartOffset));
return newFoldings;
}


请问SharpDevelop里面给的例子是{ }为标识进行折叠,如何我想换成两个单词来标识怎么做?{和}声明的时候用的是char类型,不能用string的直接赋值
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongyu5920 2013-07-11
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
'{',你声明的就是char类型, "{",这是字符串 string s = "{"; s = s.Replace("{", "*");
不是我声明的char类型,是例子中声明的,我想改成多于一个字符的单词为标识,比如以Begin为开始,以Close为结束标识可以折叠,请问应该怎么弄啊?
bdmh 2013-07-11
  • 打赏
  • 举报
回复
'{',你声明的就是char类型, "{",这是字符串
string s = "{";
s = s.Replace("{", "*");

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧