在Eclipse中获取代码更改(实时)

时间:2013-11-24 12:57:33

标签: java eclipse eclipse-plugin

我正在尝试使用插件来监听eclipse中的代码更改。在Eclipse help-files中,我找到了这个监听器:

IResourceChangeListener

但它似乎在保存文件时更新,而不是在写入文件时更新。有没有可能,让这些变化“活着”?


编辑:通过代码更改,我的意思是,您在eclipse编辑器中编辑文件的内容。基本上,当我输入内容时,我需要的是事件校验;)

EDIT2:我的代码如下:

plugin.xml中:

<extension
     point="org.eclipse.core.resources.fileModificationValidator">
  <fileModificationValidator
        class="packages.in.project.MyFileModificationValidator">
  </fileModificationValidator>

MyFileModificationValidator:

package packages.in.project;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.team.FileModificationValidationContext;
import org.eclipse.core.resources.team.FileModificationValidator;
import org.eclipse.core.runtime.IStatus;

public class MyFileModificationValidator extends FileModificationValidator {

@Override
public IStatus validateEdit(IFile[] files, FileModificationValidationContext context) {
    System.out.println("Modified!");
    return null;
}

@Override
public IStatus validateSave(IFile file) {
    return null;
}

}

3 个答案:

答案 0 :(得分:0)

什么是“代码更改”?...因为您的用例不是很清楚,只要您对物理资源的更改(保存时)不感兴趣

“代码更改”源文件内容的内存是否有任何变化?如果是这样,答案是否定的。我可以编写一个程序来读取文件,对内存中的内容做一些事情,你不会注意到我是否提供了这样做的机制。

在简历中,一切都取决于谁在访问,以及他们是否提供了一种机制来通知他们正在进行“代码更改”,无论这对您来说意味着什么。对于物理资源更改,您是正确的,Eclipse会为您通知它,IResourceChangeListener接口是正确的接口,以便了解这些更改。

答案 1 :(得分:0)

IResourceChangeListener是一个好的开始。您可以使用它来检测工作区资源的更改。

您还应该考虑实施FileModificationValidator。文件修改验证器是与团队相关的钩子,用于预检查修改文件内容的操作。您可以同时实施validateEditvalidateSave

答案 2 :(得分:0)

得到答案;)

我使用了IDocumentListener 在编辑器中获得更改。

@Override
public void documentChanged(DocumentEvent event) {
    //...
}