使用语法高亮显示将差异输出粘贴到Microsoft Outlook

使用语法高亮显示将差异输出粘贴到Microsoft Outlook,outlook,diff,paste,Outlook,Diff,Paste,如何将diff output diff old-version.cpp new-version.cpp复制到Outlook电子邮件中,以便通过语法突出显示将其发送给其他人 我想通过管道将diff输出传输到一个程序,该程序将使用格式p4 diff file.cpp | rtfpatch将其复制到剪贴板,或者使用Outlook插件选择一些文本,单击一个按钮,然后将其着色 我使用的是Windows XP和Vista、Perforce、Visual Studio、Beyond Compare 3、Out

如何将diff output diff old-version.cpp new-version.cpp复制到Outlook电子邮件中,以便通过语法突出显示将其发送给其他人

我想通过管道将diff输出传输到一个程序,该程序将使用格式p4 diff file.cpp | rtfpatch将其复制到剪贴板,或者使用Outlook插件选择一些文本,单击一个按钮,然后将其着色


我使用的是Windows XP和Vista、Perforce、Visual Studio、Beyond Compare 3、Outlook 2007。任何结合使用这些工具的东西都会很好,我不想改变我的主diff程序等等……

许多编辑器都能够将语法突出显示的文件导出为HTML。从那里,您可以将HTML粘贴到Outlook中。例如,要在Vim中将文件导出为HTML,请使用:TOhtml


还提供了导出到HTML的功能。值得一试。

我想出了一个解决方案,使用p4diff.exe程序制作一个批处理文件,将Perforce中的文件区分开来

它的问题是p4diff输出整个文件,不仅是更改的部分,我也更喜欢统一的diff。此外,diff特定的修订需要从命令行调用rtfdiff。自定义工具只是针对头部进行diff

定义将其写入tool.xml,然后将其导入p4v的“管理自定义工具”菜单:

<CustomToolDef>
  <Definition>
    <Name>RTF Diff</Name>
    <Command>c:\scripts\rtfdiff.bat</Command>
    <Arguments>%f</Arguments>
  </Definition>
  <AddToContext>true</AddToContext>
</CustomToolDef>

这将允许您右键单击文件并选择RTF Diff或通过命令行rtfdiff.bat file.txt1 file.txt2调用rtfdiff.bat。

要将html粘贴到outlook中,您应该尝试将其粘贴到消息源中。 右键单击HTML消息的正文并选择View source,然后将HTML放入其中

另一种方法是使用在批处理文件中编写脚本,并将消息html正文设置为与html文本相等,然后发送。在stackoverflow上有很多通过脚本发送电子邮件的示例。有许多方法可以实现这一点,具体取决于您安装的设备等
使用CDO,您可以在会话菜单中使用Beyond Compare的文本比较报告命令来执行此操作。使用交错布局样式、HTML报告输出样式和“复制到剪贴板”命令,它会将其作为彩色HTML复制到剪贴板。我没有Outlook可供测试,但将其粘贴到Word中肯定很有效。

我找到的另一个不错的解决方案是vim插件。提供:ClipHtml ex命令,该命令将使用vim的高亮显示将整个文件或选定区域复制到剪贴板


需要python。

还有一个问题[1]有类似的答案,但我希望有更简单的答案。此外,我还尝试使用如您所述的Vim,但当我将其粘贴到Outlook发送格式设置为HTML时,它被粘贴为HTML代码。当我发送给自己时,它仍然是html代码。[1] :您是否尝试在浏览器中打开HTML代码,复制差异并将其粘贴到Outlook中?通过一些工作,这可能是最好的解决方案。您可以制作一个脚本,将一个diff复制到剪贴板:output diff,将其加载到vim中,使用:TOhtml将其转换为html,将其作为富文本而不是html代码传递到剪贴板上。xclip-t text/html将在Linux上完成最后一部分,因此也许它可以在cygwin下工作。这非常好!交错输出不是最容易读取的。特别是当你没有宽屏和长代码行的时候:但是它可以工作,还有其他的选择。太糟糕了,没有一个补丁报告布局有颜色。你能详细解释一下你是如何实现上述目标的吗。我有一个perforce变更列表,我想让它得到审查,并有一个添加和删除彩色输出将非常有帮助。我不确定perforce是否仍然提供p4diff.exe,但我已经使上述步骤更加明确。我了解到默认的diff可以使用-u表示统一的diff,可能需要将P4DIFF=设置为使用默认值,但我不知道P4DIFF-u是否会给出语法着色。
:: Use p4diff to get copy-pasteable diff output.

:: setlocal so we use the default after script terminates
setlocal
set P4DIFF=c:\Perforce\p4diff.exe
:: Diff all inputs to allow multiple revisions (must be in increasing order)
p4 diff %*