【问题标题】:Displaying images in popup menus in Emacs在 Emacs 的弹出菜单中显示图像
【发布时间】:2014-05-30 13:28:00
【问题描述】:

我正在为学习日语的人开发 Emacs 模式。关键是通过运行一组函数来帮助他们学习各种日文字符(尤其是汉字)的笔顺,这些函数提取点处的字符,如果是日文字符,则显示带有笔顺的图像。我已经制定了几乎所有的细节,但我有一个关于显示图像的问题。我希望能够在锚点的弹出菜单中显示图像对象(由create-image 获得)。关于这样做的任何提示?或者,我想创建一个显示图像的新临时缓冲区。我尝试将insert-image 与图像对象一起使用,但我在结果缓冲区中看到的只是图像应该在的空矩形。如何使用可见图像制作缓冲区?非常感谢任何帮助。

【问题讨论】:

  • 不确定是否可以将图像放在弹出菜单中。你的insert-image 电话是什么样的?在暂存缓冲区中评估以下内容会为我将图像插入缓冲区:(insert-image (create-image "img-0080.png"))
  • @legoscia,它在 scratch 中工作。这是在新创建的缓冲区中启用某种模式的问题吗?
  • 它应该可以工作...如果您在空矩形上点击C-u C-x =,“显示”属性会显示什么?
  • display (image :type png :file "kanji-png/08a00.png") 但我的缓冲区中没有显示图像...
  • 嗯,这是一个相对路径。也许这个缓冲区中的当前目录不同。您可以尝试使用expand-file-name 将图像路径设为绝对路径吗?

标签: image emacs popup elisp emacs24


【解决方案1】:

将图像放在工具提示中可能会有所帮助。

我在Dired+ 中执行此操作——请参阅diredp-mouseover-helpdiredp-image-dired-create-thumb 的代码。这是它的核心:

  • 除非image-dired-thumb-name 表示已经有图像文件的缩略图,否则请使用image-dired-create-thumb 创建一个。这是diredp-image-dired-create-thumb的主要部分。

  • 鼠标悬停时在工具提示中显示完整图像或缩略图:

(let ((img-file (if (eq 'full diredp-image-preview-in-tooltip) 文件 (diredp-image-dired-create-thumb 文件)))) (properize " " 'display (create-image img-file)))

下一步可能是在图像上放置keymaplocal-map 属性,例如,将mouse-1 绑定用作该图像选择的选择操作。只是一个想法-还没有尝试过。

您可能希望将多张图片放在同一个工具提示中,每张图片都有不同的操作功能。没试过,但你可以试试。

HTH。

【讨论】:

    【解决方案2】:

    您可能能够使用 toltip-frame 作为弹出窗口以一种“点弹出窗口”的方式获取图像,并且前提是您使用“非工具包工具提示”构建 Emacs。我建议你 M-x report-emacs-bug 请求一些方法来做到这一点。实施起来应该不会太难,例如通过提供对“非工具包工具提示”的访问,即使在使用工具包编译时也是如此。其他 Elisp 库可能会使用这样的功能(例如公司模式)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      相关资源
      最近更新 更多