Ejemplo n.º 1
0
        /// <summary>
        /// Creates an XmlFoldStart for the start tag of an element.
        /// </summary>
        XmlFoldStart CreateElementFoldStart(TextDocument document, XmlReader reader)
        {
            // Take off 1 from the offset returned
            // from the xml since it points to the start
            // of the element name and not the beginning
            // tag.
            //XmlFoldStart newFoldStart = new XmlFoldStart(reader.Prefix, reader.LocalName, reader.LineNumber - 1, reader.LinePosition - 2);
            XmlFoldStart newFoldStart = new XmlFoldStart();

            IXmlLineInfo lineInfo = (IXmlLineInfo)reader;
            newFoldStart.StartLine = lineInfo.LineNumber;
            newFoldStart.StartOffset = document.GetOffset(newFoldStart.StartLine, lineInfo.LinePosition - 1);

            if (this.ShowAttributesWhenFolded && reader.HasAttributes) {
                newFoldStart.Name = String.Concat("<", reader.Name, " ", GetAttributeFoldText(reader), ">");
            } else {
                newFoldStart.Name = String.Concat("<", reader.Name, ">");
            }

            return newFoldStart;
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Create an element fold if the start and end tag are on
 /// different lines.
 /// </summary>
 static void CreateElementFold(TextDocument document, List<NewFolding> foldMarkers, XmlReader reader, XmlFoldStart foldStart)
 {
     IXmlLineInfo lineInfo = (IXmlLineInfo)reader;
     int endLine = lineInfo.LineNumber;
     if (endLine > foldStart.StartLine) {
         int endCol = lineInfo.LinePosition + reader.Name.Length + 1;
         foldStart.EndOffset = document.GetOffset(endLine, endCol);
         foldMarkers.Add(foldStart);
     }
 }