Пример #1
0
        public static void SetAttributeValiue(IXmlAttribute attribute, string newValue)
        {
            if (newValue == null)
                throw new ArgumentNullException("newValue");

            Assert.CheckNotNull(attribute.Value, "attribute.Value");
            IXmlAttributeValueNode oldValueNode = attribute.Value.ToTreeNode();
            StringBuffer buffer = new StringBuffer("\"" + newValue + "\"");
            XmlTokenTypes types = XmlTokenTypeFactory.GetTokenTypes(attribute.Language);
            XmlValueToken newValueNode = new XmlValueToken(types.STRING, buffer, 0, buffer.Length);
            LowLevelModificationUtil.ReplaceChildRange(oldValueNode, oldValueNode, new ITreeNode[] { newValueNode });
        }
Пример #2
0
        protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            if (!Highlighting.IsValid())
            {
                return(null);
            }

            var node             = Highlighting.Node;
            var badWordTextRange = Highlighting.Range.TextRange;

            var newText = StringUtil.ReplaceSection(
                node.GetText(),
                Suggestion,
                badWordTextRange.StartOffset - node.GetDocumentRange().TextRange.StartOffset,
                badWordTextRange.Length
                );

            if (node is XmlValueToken)
            {
                var newElm = new XmlValueToken(
                    (node as XmlValueToken).GetTokenType(),
                    new StringBuffer(newText),
                    new TreeOffset(0),
                    new TreeOffset(newText.Length)
                    );
                ModificationUtil.ReplaceChild(node, newElm);
                return(null);
            }
            if (node is XmlFloatingTextToken)
            {
                var newElm = new XmlFloatingTextToken(
                    (node as XmlFloatingTextToken).GetTokenType(),
                    newText
                    );
                ModificationUtil.ReplaceChild(node, newElm);
                return(null);
            }
            if (node is XmlToken)
            {
                var newElm = new XmlToken(
                    (node as XmlToken).GetTokenType(),
                    new StringBuffer(newText),
                    new TreeOffset(0),
                    new TreeOffset(newText.Length)
                    );
                ModificationUtil.ReplaceChild(node, newElm);
                return(null);
            }
            return(null);
        }
        private IEnumerable <HighlightingInfo> FindWordHighlightings(XmlValueToken node)
        {
            var absoluteUnquotedRange = node.GetTreeTextRange();

            var validRange = FindTrueDocumentRange(new TreeTextRange(
                                                       absoluteUnquotedRange.StartOffset + node.UnquotedValueRange.StartOffset,
                                                       node.UnquotedValueRange.Length
                                                       ));

            if (!validRange.HasValue)
            {
                return(Enumerable.Empty <HighlightingInfo>());
            }

            return(FindWordHighlightings(node, node.UnquotedValue, validRange.Value));
        }