我正在尝试使用插件来监听eclipse中的代码更改。在Eclipse help-files中,我找到了这个监听器:
IResourceChangeListener
但它似乎在保存文件时更新,而不是在写入文件时更新。有没有可能,让这些变化“活着”?
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;
}
}
答案 0 :(得分:0)
什么是“代码更改”?...因为您的用例不是很清楚,只要您对物理资源的更改(保存时)不感兴趣
“代码更改”源文件内容的内存是否有任何变化?如果是这样,答案是否定的。我可以编写一个程序来读取文件,对内存中的内容做一些事情,你不会注意到我是否提供了这样做的机制。
在简历中,一切都取决于谁在访问,以及他们是否提供了一种机制来通知他们正在进行“代码更改”,无论这对您来说意味着什么。对于物理资源更改,您是正确的,Eclipse会为您通知它,IResourceChangeListener
接口是正确的接口,以便了解这些更改。
答案 1 :(得分:0)
IResourceChangeListener
是一个好的开始。您可以使用它来检测工作区资源的更改。
您还应该考虑实施FileModificationValidator
。文件修改验证器是与团队相关的钩子,用于预检查修改文件内容的操作。您可以同时实施validateEdit
和validateSave
。
答案 2 :(得分:0)
得到答案;)
我使用了IDocumentListener 在编辑器中获得更改。
@Override
public void documentChanged(DocumentEvent event) {
//...
}