在 Emacs 工具提示中渲染 HTML?
render HTML in Emacs tooltip?
我想在 Emacs 工具提示中显示 HTML 粗体和斜体文本。我正在尝试的解决方案是这样的:
(let ((html "regular <b>bold</b> regular <i>italic</i> regular\n")
(bufname "* render-html-tmp*"))
(with-current-buffer (get-buffer-create bufname)
(erase-buffer)
(insert html)
(shr-render-region (point-min) (point-max))
(tooltip-show (buffer-string))))
在 * render-html-tmp*
缓冲区中,粗体和斜体文本显示正常,但在工具提示中,所有五个单词都是普通文本,没有粗体或斜体。更改 x-gtk-use-system-tooltips
的值无效。
同时,当我到达 * render-html-tmp*
缓冲区的末尾并在那里执行 (insert (buffer-string))
,或者将缓冲区内容复制到 kill ring 中并将其猛拉到新缓冲区中时,粗体和斜体属性确实在插入或抽出的文本中正确显示。所以我的基本想法应该是正确的,我已经无计可施了,想弄清楚为什么我在工具提示中看不到这些属性。
这是怎么回事,如何使粗体和斜体文本显示在工具提示中?
tooltip-show
覆盖传入的字符串的面 属性 并用自己的 tooltip
替换它 属性:
(x-show-tip (propertize text 'face 'tooltip)
(selected-frame)
params
tooltip-hide-delay
tooltip-x-offset
tooltip-y-offset))
...
正如 OP 在评论中提到的那样,定义修改后的 tooltip-show
以将 text
直接传递给 x-show-tip
而不是执行 (propertize text ...)
并从他的代码中调用它解决问题。
我想在 Emacs 工具提示中显示 HTML 粗体和斜体文本。我正在尝试的解决方案是这样的:
(let ((html "regular <b>bold</b> regular <i>italic</i> regular\n")
(bufname "* render-html-tmp*"))
(with-current-buffer (get-buffer-create bufname)
(erase-buffer)
(insert html)
(shr-render-region (point-min) (point-max))
(tooltip-show (buffer-string))))
在 * render-html-tmp*
缓冲区中,粗体和斜体文本显示正常,但在工具提示中,所有五个单词都是普通文本,没有粗体或斜体。更改 x-gtk-use-system-tooltips
的值无效。
同时,当我到达 * render-html-tmp*
缓冲区的末尾并在那里执行 (insert (buffer-string))
,或者将缓冲区内容复制到 kill ring 中并将其猛拉到新缓冲区中时,粗体和斜体属性确实在插入或抽出的文本中正确显示。所以我的基本想法应该是正确的,我已经无计可施了,想弄清楚为什么我在工具提示中看不到这些属性。
这是怎么回事,如何使粗体和斜体文本显示在工具提示中?
tooltip-show
覆盖传入的字符串的面 属性 并用自己的 tooltip
替换它 属性:
(x-show-tip (propertize text 'face 'tooltip)
(selected-frame)
params
tooltip-hide-delay
tooltip-x-offset
tooltip-y-offset))
...
正如 OP 在评论中提到的那样,定义修改后的 tooltip-show
以将 text
直接传递给 x-show-tip
而不是执行 (propertize text ...)
并从他的代码中调用它解决问题。