当前位置: 首页>>代码示例>>C#>>正文


C# Location.ToTextSpan方法代码示例

本文整理汇总了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 ?? ""));
        }
开发者ID:vestild,项目名称:nemerle,代码行数:6,代码来源:NemerleSourceButchEditHelper.cs

示例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()));
            }
        }
开发者ID:vestild,项目名称:nemerle,代码行数:73,代码来源:ImplementMembersForm.cs


注:本文中的Location.ToTextSpan方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。