设置:我正在进行编程实验,我需要向测试人员显示与实际存在的代码行不同的方法签名(一行代码)。例如:
// this code should be visible
public def aFunction(def a, def b) {
// this line of code should be used
public void aFunction(String a, List<String> b) {
目的是一切都像源代码包含第二行(如代码完成,错误等),但只有第一行可见。 我已经尝试修补我使用的groovy编辑器并在加载和保存时替换一些文本,但这似乎不能完成工作,使用一些代码,如
IDocument doc =this.getDocumentProvider().getDocument(this.getEditorInput());
doc.set(doc.get().replaceAll(...));
可悲的是,这会导致奇怪的行为,如始终标记为脏文件。 我也尝试使用groovy编辑器提供的getCompilationUnit方法,但不知怎的,这在任何方面都没有帮助(可能是因为&#34;错误的#34;代码在编辑器中仍然可见?)。
最后,我尝试在doSetInput方法中为IEditorInput底层的IFile包装InputStream,如
IFile resource = (IFile) input.getAdapter(IFile.class);
InputStream in = resource.getContents();
//...wrap stream
resource.setContents(in, false, true, null);
但这只会导致编辑器完全空白。
任何人都知道如何解决这个问题?