Вставка вывода различий в Microsoft Outlook с подсветкой синтаксиса

Как скопировать вывод различий (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. Все, что использует комбинацию этих инструментов, отлично работает (я не собираюсь менять свою основную программу сравнения и т. д.).


person Community    schedule 08.05.2009    source источник


Ответы (5)


Для этого вы можете использовать команду Beyond Compare «Отчет о сравнении текста» в меню «Сеанс». Используйте стиль макета «Чередование», стиль вывода «Отчет HTML» и команду «Копировать в буфер обмена», и он скопирует его в буфер обмена как цветной HTML. У меня нет Outlook для тестирования, но вставка его в Word определенно работает.

person Community    schedule 10.05.2009
comment
Это работает очень хорошо! Чередующийся вывод не самый простой для чтения. Особенно, если у вас нет широкого экрана (и у вас длинные строки кода :( Но это работает, и есть другие варианты. Жаль, что ни один из макетов отчетов об исправлениях не имеет цвета. - person idbrii; 27.06.2009

Еще одно достойное решение, которое я нашел, — это плагин vim. cliphtml.vim дает вам :ClipHtml ex, которая скопирует весь файл или выделенную область в буфер обмена с выделением vim.

Требуется питон.

person Community    schedule 28.05.2010

Многие редакторы имеют возможность экспортировать файлы с выделенным синтаксисом в формате HTML. Оттуда вы можете вставить HTML в Outlook. Например, чтобы экспортировать файл в HTML в Vim, используйте :TOhtml.

Это дополнение Visual Studio также предлагает функцию "экспорта в HTML". Стоит попробовать.

person Community    schedule 09.05.2009
comment
Есть еще один вопрос [1] с похожими ответами, но я надеялся на что-то проще. Кроме того, я пытался использовать Vim, как вы описали, но когда я вставил его в Outlook (формат отправки установлен на HTML), он вставился как html-код. Когда я отправил его себе, это был еще html-код. [1]: stackoverflow.com/questions/ 225830/ - person idbrii; 09.05.2009
comment
Вы пытались открыть HTML-код в браузере, скопировать diff и вставить его в Outlook? - person Ayman Hourieh; 09.05.2009
comment
При некоторой работе это может быть лучшим решением. Вы можете создать скрипт для копирования различий в буфер обмена: вывести различия, загрузить их в vim, использовать :TOhtml для преобразования в html, передать их во что-то, что поместит их в буфер обмена как форматированный текст (вместо html-кода). xclip -t text/html сделал бы последнюю часть в Linux, так что, возможно, он сможет работать под cygwin. - person idbrii; 09.05.2015

Чтобы вставить html в Outlook, вы должны попробовать вставить его в источник сообщения. Щелкните правой кнопкой мыши тело HTML-сообщения и выберите «Просмотреть источник», а затем вставьте в него свой html.

Другим способом было бы написать его в пакетном файле, используя и установив html-тело сообщения равным вашему html-тексту и отправив его. В stackoverflow есть довольно много примеров отправки электронной почты через скрипт. Есть несколько способов сделать это в зависимости от того, что вы установили и т. д. Один из примеров:
Отправить почту из сценария Windows
с помощью CDO

person Community    schedule 09.05.2009

Я нашел решение для создания пакетного файла, который отличает файлы от Perforce с помощью программы p4diff.exe.

Проблема в том, что p4diff выводит весь файл, а не только измененные разделы (я бы тоже предпочел унифицированный diff). Кроме того, для сравнения конкретных версий требуется вызов rtfdiff из командной строки (специальный инструмент просто выполняет сравнение с HEAD).

Определение пользовательского инструмента p4v (запишите его в tool.xml, а затем импортируйте его в меню «Управление пользовательскими инструментами» p4v):

<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).

person Community    schedule 09.05.2009
comment
Можете ли вы подробно объяснить, как вы достигли вышеизложенного. У меня есть список изменений perforce, который я хотел бы просмотреть, и было бы очень полезно иметь цветной вывод с добавлениями и удалениями. - person codingbbq; 05.05.2015
comment
Я не уверен, что perforce по-прежнему предоставляет p4diff.exe, но я сделал описанные выше шаги более явными. С тех пор я узнал, что diff по умолчанию может принимать -u для унифицированного diff (возможно, нужно set P4DIFF=, чтобы использовать по умолчанию), но я не знаю, даст ли p4 diff -u окраску синтаксиса. - person idbrii; 09.05.2015