本文整理汇总了C#中Location.ToTextSpan方法的典型用法代码示例。如果您正苦于以下问题:C# Location.ToTextSpan方法的具体用法?C# Location.ToTextSpan怎么用?C# Location.ToTextSpan使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Location
的用法示例。
在下文中一共展示了Location.ToTextSpan方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Add
public void Add(Location loc, string text)
{
ErrorHelper.ThrowIfFalse(loc.FileIndex == _fileIndex, "loc.FileIndex");
base.Add(new EditSpan(loc.ToTextSpan(), text ?? ""));
}
示例2: MakeChanges
// ReSharper restore ParameterTypeCanBeEnumerable.Local
// ReSharper disable ParameterTypeCanBeEnumerable.Local
private void MakeChanges(IGrouping<FixedType.Class, MemberImplInfo>[] stubs, LanguagePreferences pref, EditArray editArray)
{
var newLine = Environment.NewLine;
foreach (var stub in stubs)
{
var sb = MakeStubsForTypeMembers(stub);
// На данном этапе в "sb" находится текст заглушек для членов тела которых отбиты одной табуляцией на отступ.
// Заменяем этот табы на отступ указанный в настройках студии для Nemerle.
// TODO: Надо сразу генерировать правлиьные отступы, а не пользоваться табами, так как отступы
// могут быть не кратными размеру табуляции. При этом отступы должны дополняться пробелами.
// подроности смотри в MakeIndentString().
if (!pref.InsertTabs && pref.IndentSize == 1)
sb.Replace("\t", pref.MakeIndentString());
// Кроме того члены не имеют отсупа от левого края. Отступ должен совпадать с отступом
// типа в который помещаются плюс один отступ.
// Кроме того пользователю будет удобно если добавляемые члены будут добавлены после
// последнего члена того же (т.е. типа чьи члены реализуются) типа уже имеющегося в данном типе.
// Таким образом мы должны попытаться найти уже реализованные типы. В них найти самый послединй,
// и вставить новые члены после него. Если в текущем типе (_ty) еще не было реализовано членов
// подтипа (например, интерфейса) к которому относятся добавляемые члены, то производим вставку
// в конец текущего типа.
TextPoint pt;
string indent;
var lastImplementedMembers = NUtils.GetLastImplementedMembersOfInterface(_ty, stub.Key);
#region Calc indent and insertion point
if (lastImplementedMembers.IsSome)
{
// Используем meber.Value для получения места вставки
var endLine = lastImplementedMembers.Value.Location.EndLine;
var text = _source.GetLine(endLine);
indent = text.GetLiadingSpaces();
pt = new TextPoint(endLine + 1, 1);
//TODO: Этот код рассчитывает на то, что за членом не идет многострочного коментария
// или другого члена. Надо бы сделать реализацию не закладывающуюся на это.
}
else // Ни одного члена этого интерфейса не реализовано в классе...
{
// Оборачиваем реализуемые методы в #region
if (_cbGenerateRegion.Checked)
{
sb.Insert(0, "#region " + stub.Key + " Members" + newLine + newLine);
sb.AppendLine("#endregion" + newLine);
}
// Вставляем описание интерфейса в конец класса
var endLine = _ty.Location.EndLine;
var text = _source.GetLine(endLine);
indent = text.GetLiadingSpaces();
pt = new TextPoint(endLine, 1);
indent += pref.MakeIndentString();
//TODO: Этот код рассчитывает на то, что конец типа распологается на отдельной строке.
// Надо бы сделать реализацию не закладывающуюся на это.
}
#endregion
sb.Insert(0, indent);
sb.Replace("\n", "\n" + indent);
TrimEnd(sb);
var inertLoc = new Location(_source.FileIndex, pt, pt);
editArray.Add(new EditSpan(inertLoc.ToTextSpan(), sb.ToString()));
}
}