【问题标题】:Compare changes in two different CodeMirror textareas比较两个不同 CodeMirror 文本区域中的更改
【发布时间】:2013-09-17 14:25:17
【问题描述】:

我正在尝试使用两个不同的textareas 来显示相同​​的代码,但使用一个主控和另一个副本。在副本textarea 中,我想突出显示更改,类似于我们进行一些更改时 GitHub 提供的内容。

我想知道这是否可能,或者是否有人以前做过类似的事情。欢迎任何建议。

【问题讨论】:

  • 但是仔细阅读您的问题,您似乎想要在可编辑代码中使用内联差异,而不是像 GitHub 显示的那样单独的不可编辑差异。

标签: textarea diff codemirror


【解决方案1】:

CodeMirror Merge add-on 正是您想要的。请参阅与您的描述相符的demo


起初我以为你想要一个单独的差异,显示在div下面你的textareas而不是里面textareas之一,我写了以下答案。它可能仍然有用。

查看CodeMirror Merge add-on 使用的google-diff-match-patch 库。这不是一个插入式解决方案,但看起来您可以使用 diff_main 获取原始和更改文本的列表,然后自己显示。该库还提供了diff_prettyHtml,它为差异输出示例标记。

【讨论】:

  • 完美!非常感谢罗里
  • 该示例不适用于文本区域,这有点令人困惑,两个文本区域定义在哪里?
  • 查看the example的源码可以看到var target = document.getElementById("view");dv = CodeMirror.MergeView(target, {…});定义了一个textarea。另一个是通过传递the origLeft option 定义的,它会创建自己的textareaorigLeft: panes == 3 ? orig1 : null。 (传递给origLeftorig 选项的值表示用于填充它们各自的textareas 的字符串。)
  • 它几乎可以工作,但 CSS 仍然存在问题,两个文本区域一个在另一个之上,当我滚动一个时似乎没有链接,也突出显示不起作用,几乎在那里
  • 完成!感谢您的帮助,我不得不升级版本
【解决方案2】:

Mergely 是另一个选项,它使用 CodeMirror 产生非常好的视觉差异,并在 GPL、LGPL 和 MPL 许可下分发。我是GitHub repo is here

还有Prettydiff 这不是很漂亮,但是当您单击底部的“执行”按钮时,您会看到一个有趣的视觉差异。不确定差异本身是使用 codemirror 还是只是生成差异的两个输入文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多