gpt4 book ai didi

java - Eclipse 编辑器同步

转载 作者:行者123 更新时间:2023-11-29 09:15:23 24 4
gpt4 key购买 nike

我正在为 eclipse 编写插件,它应该是包含 2 个页面的 XML 编辑器:第一个是 xml 编辑器(扩展 TextEditor),第二个是某种生成器。想像一下我在说什么,您可以使用标准的 faces-config eclipse 编辑器:我的第一页是“Source” 页面,而我的第二页是“ManagedBean” 页面。目前为了同步我在构建器页面上所做的更改,我只是从编辑器中获取文本,相应地更改它,然后将此文本放回编辑器。像这样:

    String editorText = editor.getDocumentProvider().getDocument(editor.getEditorInput()).get();
String changedText = editorText.substring(0, editorText.lastIndexOf(smth));
changedText += newText + editorText.substring(editorText.lastIndexOf(smth));
editor.getDocumentProvider().getDocument(editor.getEditorInput()).set(changedText)

它可以工作,但看起来不是很优雅。我只想应用更改。是否可以?

编辑:现在我发现它不起作用 :) 我的意思是它在简单的情况下起作用,以防所有内容在编辑器中或多或少都是正确的。但是,如果标记的编写方式非常糟糕(在最意想不到的地方换行,同时仍保持 xml 的正确性),则不会。所以保存正确更改的唯一方法是转换整个 DOM 并将其写入编辑器。实际上,这是我尝试的第一件事,但在这种情况下,所有自定义格式都消失了:缩进被保存,但标签内(属性之间)的换行符消失了。这个:

<myTag attr1="1"
attr2="2">

变成这样:

<myTag attr1="1" attr2="2">

所以我真的需要知道如何只更新文档的一部分,即我已更改的部分。

最佳答案

奇怪的是没有人回答,因为解决方案非常简单。它是 TextEditor 文档的 replace() 方法:

editor.getDocumentProvider().getDocument(editor.getEditorInput()).replace(offset, length, newText);

唯一的问题是找到这些 offsetlength 但在我的情况下这不是问题,因为我的文档不是很复杂,简单的正则表达式就可以了。 :)

关于java - Eclipse 编辑器同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com