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 }); }
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)); }