public int UnComment(TextDocument textDocument, ISegment segment, int caret = -1, bool format = true) { var result = caret; var lines = VisualLineGeometryBuilder.GetLinesForSegmentInDocument(textDocument, segment); textDocument.BeginUpdate(); foreach (var line in lines) { var index = textDocument.GetText(line).IndexOf("//"); if (index >= 0) { textDocument.Replace(line.Offset + index, 2, string.Empty); } } if (format) { result = Format(textDocument, (uint)segment.Offset, (uint)segment.Length, caret); } textDocument.EndUpdate(); return result; }
public static int ApplyReplacements(TextDocument document, int cursor, XDocument replacements, bool replaceCursor = true) { var elements = replacements.Elements().First().Elements(); document.BeginUpdate(); var offsetChange = 0; foreach (var element in elements) { switch (element.Name.LocalName) { case "cursor": cursor = Convert.ToInt32(element.Value); break; case "replacement": var offset = -1; var replacementLength = -1; var attributes = element.Attributes(); foreach (var attribute in attributes) { switch (attribute.Name.LocalName) { case "offset": offset = Convert.ToInt32(attribute.Value); break; case "length": replacementLength = Convert.ToInt32(attribute.Value); break; } } document.Replace(offsetChange + offset, replacementLength, element.Value); offsetChange += element.Value.Length - replacementLength; break; } } document.EndUpdate(); return replaceCursor ? cursor : -1; }
public int Comment(TextDocument textDocument, ISegment segment, int caret = -1, bool format = true) { var result = caret; var lines = VisualLineGeometryBuilder.GetLinesForSegmentInDocument(textDocument, segment); textDocument.BeginUpdate(); foreach (var line in lines) { textDocument.Insert(line.Offset, "//"); } if (format) { result = Format(textDocument, (uint)segment.Offset, (uint)segment.Length, caret); } textDocument.EndUpdate(); return result; }