0

我正在使用以下代码以字符串格式显示两个输入之间的区别

protected Object prepareInput(IProgressMonitor monitor)
        throws InvocationTargetException, InterruptedException {

    CompareItem left = new CompareItem(text1);
    CompareItem right = new CompareItem(text2);
    diffNode= new DiffNode(left, right);
    return diffNode;        
}

对于像这样的输入

line1          testline
line2          line1
line3          line2
               line3

它显示所有行都不同,而不是仅显示第一行不同。

我调用比较编辑器的方式是

CompareUI.openCompareDialog(new MyCompare(configuration, ((MyEditor) 
    editorPart).originalText(), ((MyEditor) editorPart).currentConverted()) );

谢谢你的帮助。

4

2 回答 2

0

这个 :

CompareConfiguration configuration = new CompareConfiguration();
CompareUI.openCompareDialog(new CompareEditorInput(configuration) {
    @Override
    protected Object prepareInput(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        String text1 = "line1\nline2\nline3\n";
        String text2 = "testline\nline1\nline2\nline3\n";

        CompareItem left = new CompareItem("1", text1);
        CompareItem right = new CompareItem("2", text2);
        DiffNode diffNode = new DiffNode(left, right);
        return diffNode;
    }
});

在开普勒上非常适合我。

开普勒的结果

所以我认为你没有给我们足够的数据。

于 2013-06-27T15:51:18.487 回答
0

也许你应该注意到这个参数“Differencer.CHANGE”

CompareEditorInput input = new CompareEditorInput(config) { 
    StringCompareItem left = new StringCompareItem("left", leftContent);
    StringCompareItem right = new StringCompareItem("right", rightContent);

    @Override
    protected Object prepareInput(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
        return new DiffNode(null, Differencer.CHANGE, null, left, right);
    }

};
于 2021-09-14T07:53:52.733 回答