2012-03-05 42 views
0

嗨,我做一个eclipse插件项目来创建一个IDE。在我的IDE中, 当前打开的编辑器会检查一个特定的字符串,并且 应该替换为位于边 视图中的文本框中输入的字符串。我可以访问编辑器,但如果我搜索特定的 字符串,并用用户输入的输入替换该字符串,那么它 不起作用。如何用当前打开的编辑器中的另一个字符串替换特定的字符串?

IDocumentProvider provider=((AbstractTextEditor) ieditorpart).getDocumentProvid(); 
IDocument doc = provider.getDocument(ieditorpart.getEditorInput()); 
String content = doc.get(); 
pos=content.compareTo("\\/\\*ProbeEnd\\*\\/"); 
doc.replace(pos,5, "hello"); 

但是,这是不工作...在这里,我刚才给替换 字符串为hello,但该值应该从文本采取..

是否有访问该编辑器的任何错误?我应该使用这种方法来做到这一点,或者是否有任何方法来实现这一点?可以 任何人都可以帮助我做到这一点?

回答

0

从编辑器中调用firePropertyChange(IEditorPart.PROP_INPUT)。

+0

在默认texteditors,编辑注册的侦听器添加到文档,并告知一个直接替换。没有必要触发输入改变。 – Adreamus 2012-03-07 12:53:04

1

为什么变量pos是compareTo-Value(-1,0,1)? compareTo返回两个字符串的字典顺序。

的取代的IDocument方法有三个参数:

  • INT偏移 - 该文件,其中“文本”应插入
  • INT长度在偏移 - 长度从“偏移”,开始这应该被覆盖。长度0意味着插入。
  • 字符串文本 - 替代文本

例子:

String oldContent = doc.get(); 
assert oldContent.equals("TestingText"); 

String replaceText = "REPLACE"; 

doc.replace(5,3,replaceText); 

String newContent = doc.get(); 
assert newContent.equals("TestiREPLACEext"); 
//offset 5 is the position after 'Testi' 
//length 3 means 'ngT' (starting from the offset) should be replaced 
//REPLACE is the newText 
相关问题