我有这个语法突出显示在emacs中生成的代码段,并希望将其粘贴到Outlook邮件中(当然,使用html呈现,不带html代码)。
<pre>
<span style="color: #a020f0; background-color: gtk_selection_bg_color;"> function</span><span style="background-color: gtk_selection_bg_color;"> </span><span style="color: #008b8b; background-color: gtk_selection_bg_color;">uvm_object</span><span style="background-color: gtk_selection_bg_color;"> uvm_object::</span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">clone</span><span style="color: #707183; background-color: gtk_selection_bg_color;">()</span><span style="background-color: gtk_selection_bg_color;">;
uvm_object tmp;
tmp = </span><span style="color: #228b22; background-color: gtk_selection_bg_color;">this</span><span style="background-color: gtk_selection_bg_color;">.</span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">create</span><span style="color: #707183; background-color: gtk_selection_bg_color;">(</span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">get_name</span><span style="color: #7388d6; background-color: gtk_selection_bg_color;">()</span><span style="color: #707183; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">;
</span><span style="color: #a020f0; background-color: gtk_selection_bg_color;">if</span><span style="color: #707183; background-color: gtk_selection_bg_color;">(</span><span style="background-color: gtk_selection_bg_color;">tmp == </span><span style="color: #228b22; background-color: gtk_selection_bg_color;">null</span><span style="color: #707183; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">
</span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">uvm_report_warning</span><span style="color: #707183; background-color: gtk_selection_bg_color;">(</span><span style="color: #8b2252; background-color: gtk_selection_bg_color;">"CRFLD"</span><span style="background-color: gtk_selection_bg_color;">, </span><span style="color: #a020f0; background-color: gtk_selection_bg_color;">$sformatf</span><span style="color: #7388d6; background-color: gtk_selection_bg_color;">(</span><span style="color: #8b2252; background-color: gtk_selection_bg_color;">"The create method failed for %s, object cannot be cloned"</span><span style="background-color: gtk_selection_bg_color;">, </span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">get_name</span><span style="color: #909183; background-color: gtk_selection_bg_color;">()</span><span style="color: #7388d6; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">, UVM_NONE</span><span style="color: #707183; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">;
</span><span style="color: #a020f0; background-color: gtk_selection_bg_color;">else</span><span style="background-color: gtk_selection_bg_color;">
tmp.</span><span style="color: #0000ff; background-color: gtk_selection_bg_color;">copy</span><span style="color: #707183; background-color: gtk_selection_bg_color;">(</span><span style="color: #228b22; background-color: gtk_selection_bg_color;">this</span><span style="color: #707183; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">;
</span><span style="color: #a020f0; background-color: gtk_selection_bg_color;">return</span><span style="color: #707183; background-color: gtk_selection_bg_color;">(</span><span style="background-color: gtk_selection_bg_color;">tmp</span><span style="color: #707183; background-color: gtk_selection_bg_color;">)</span><span style="background-color: gtk_selection_bg_color;">;
</span><span style="color: #a020f0; background-color: gtk_selection_bg_color;"> endfunction</span><span style="background-color: gtk_selection_bg_color;">
</span></pre>
以HTML格式呈现如下。
由于Outlook邮件支持html格式,我很好奇是否可以直接使用html代码创建格式良好的电子邮件正文。
我目前的方法有效,但速度很慢:
我希望有人发布涉及某种Windows后台脚本的解决方案(就像autohotkey作为后台服务一样),它可以动态地在剪贴板中呈现html代码并粘贴它。
答案 0 :(得分:0)
我有一个简单的python脚本,可以将我的复制缓冲区中的纯文本HTML转换为HTML格式的文本,然后我可以将其粘贴到Microsoft Office程序中。它需要一个包&#34; pywin32&#34;可用here。
import htmlclipboard
import win32clipboard
win32clipboard.OpenClipboard()
clipboardStr = win32clipboard.GetClipboardData()
htmlclipboard.PutHtml(clipboardStr)
它不能满足您作为后台服务运行的要求,但在我的情况下,我已将脚本固定到我的快速启动栏,这使我可以在需要时轻松运行。 另外,我使用这个elisp程序将我在emacs中的当前选择复制到kill ring作为HTML以保留格式:
(defun copy-region-as-html (START END)
(interactive "r")
(let ((snippet (buffer-substring START END))
(buf (get-buffer-create "*htmlized_to_clipboard*"))
(htmlized-file-name (expand-file-name "~/htmlized.html")))
(set-buffer buf)
(delete-region (point-min) (point-max))
(insert snippet)
(htmlize-buffer)
(set-buffer "*html*")
(clipboard-kill-region (point-min) (point-max))
(kill-buffer "*html*")
(kill-buffer "*htmlized_to_clipboard*")
(message "HTML copied to clipboard")))
在我的情况下,如果我想通过电子邮件发送代码,保留我在emacs中看到的格式:
答案 1 :(得分:0)
我发现了使用javascript解决此问题的简单方法。 您复制到text / html剪贴板,而文本/纯剪贴板为空。然后将其粘贴到Outlook中即可。
要复制的最小代码:
function handleCopy(evt) {
evt.clipboardData.setData('text/html', '<table><thead><tr><th>some</th></tr></thead><tbody><tr><td>markup</td></tr></tbody></table>')
evt.preventDefault(); // prevent writing to text/plain
}
document.addEventListener('copy', handleCopy)
document.execCommand('copy')
document.removeEventListener('copy', handleCopy)
带有文本输入的功能示例(您可以将粘贴复制到textarea中,然后单击按钮以复制到text / html剪贴板。请注意,粘贴大多数位置不会做任何事情:输入必须接受text / html内容-值得庆幸的是对我们来说Outlook确实如此):