【问题标题】:Pasting diff output into Microsoft Outlook with syntax highlighting使用语法高亮将差异输出粘贴到 Microsoft Outlook
【发布时间】:2009-05-08 23:55:41
【问题描述】:

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

我想将差异输出通过管道传输到一个程序,该程序将其复制到带有格式的剪贴板 (p4 diff file.cpp | rtfpatch),或者有一个 Outlook 插件,可以让我选择一些文本,单击一个按钮,然后它会被着色.

我使用 Windows(XP 和 Vista)、Perforce、Visual Studio、Beyond Compare 3、Outlook 2007。任何使用这些工具组合的东西都会很好用(我不想改变我的主要差异程序等。 .).

【问题讨论】:

    标签: outlook diff paste


    【解决方案1】:

    您可以在会话菜单中使用 Beyond Compare 的“文本比较报告”命令来执行此操作。使用“交错”布局样式、“HTML 报告”输出样式和“复制到剪贴板”命令,它会将其作为彩色 HTML 复制到剪贴板。我没有可以测试的 Outlook,但它确实可以将其粘贴到 Word 中。

    【讨论】:

    • 效果很好!交错输出不是最容易阅读的。特别是如果您没有宽屏幕(并且代码行很长:(但它可以工作并且还有其他选项。太糟糕了,补丁报告布局都没有颜色。
    【解决方案2】:

    我发现的另一个不错的解决方案是 vim 插件。 cliphtml.vim 为您提供了 :ClipHtml ex 命令,它将整个文件或选定区域复制到剪贴板并突出显示 vim。

    需要python。

    【讨论】:

      【解决方案3】:

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

      This Visual Studio addon 还提供“导出到 HTML”功能。值得一试。

      【讨论】:

      • 还有另一个问题[1] 有类似的答案,但我希望能更简单一些。另外,我尝试像您描述的那样使用 Vim,但是当我将它粘贴到 Outlook(发送格式设置为 HTML)时,它粘贴为 html 代码。发给自己的时候,还是html代码。 [1]:stackoverflow.com/questions/225830/…
      • 您是否尝试在浏览器中打开 HTML 代码,复制差异并将其粘贴到 Outlook 中?
      • 通过一些工作,这可能是最好的解决方案。您可以制作一个脚本来将差异复制到剪贴板:输出差异,在vim中加载它,使用:TOhtml将其转换为html,将其传递给将其作为富文本(而不是html代码)放在剪贴板上的东西. xclip -t text/html 会在 Linux 上完成最后一部分,所以也许它可以在 cygwin 下工作。
      【解决方案4】:

      要将 html 粘贴到 Outlook 中,您应该尝试将其粘贴到 msg 的源中。 右键单击 HTML 消息的正文并选择查看源,然后将您的 html 粘贴到其中。

      另一种方法是在批处理文件中编写脚本,并将 Message html 正文设置为等于您的 html 文本并发送。在 stackoverflow 上有很多通过脚本发送电子邮件的示例。有很多方法可以做到这一点,具体取决于您安装的内容等。一个例子是
      Send mail from a Windows script
      使用 CDO

      【讨论】:

        【解决方案5】:

        我想出了一个解决方案,可以使用 p4diff.exe 程序制作一个批处理文件,从 Perforce 中区分文件。

        它的问题是 p4diff 输出整个文件,而不仅仅是更改的部分(我也更喜欢统一差异)。此外,区分特定版本需要从命令行调用 rtfdiff(自定义工具仅针对 HEAD 进行区分)。

        p4v custom tool 定义(将其写入 tool.xml,然后将其导入 p4v 的 Manage Custom Tools 菜单):

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

        rtfdiff.bat 在哪里

        :: 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 %*
        

        这将使您可以右键单击文件并选择“RTF Diff”或通过命令行调用 rtfdiff.bat (rtfdiff.bat file.txt#1 file.txt#2)。

        【讨论】:

        • 您能否详细解释一下您是如何实现上述目标的。我有一个 perforce 更改列表,我想对其进行审核,并且带有添加和删除的彩色输出将非常有帮助。
        • 我不确定 perforce 是否仍然提供 p4diff.exe,但我已经使上述步骤更加明确。从那以后我了解到默认差异可以采用-u 进行统一差异(可能需要set P4DIFF= 才能使用默认值),但我不知道p4 diff -u 是否会给语法着色。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 2016-06-21
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多