将图像插入文本缓冲区

unu*_*tbu 19 emacs insert-image

如果我放置

(insert-image (create-image "/tmp/test.png"))
Run Code Online (Sandbox Code Playgroud)

在缓冲区中,将光标放在最后一个括号后面并用它进行评估C-x C-e,然后图像/tmp/test.png显示在缓冲区中:

在此输入图像描述

很简约.但,

  1. 我不得不将最后的括号放在一个单独的行上,因此图像靠近缓冲区的左侧.有没有办法(insert-image ...)完全隐藏文本?
  2. 文本文件(insert-image ...)仅包含文本,而不包含图像.我对此很满意,但是有没有办法告诉emacs (insert-image ...)通过相应的图像(文件打开后)自动替换所有表达式,而不必C-x C-e在每个之后输入?

ffe*_*tte 29

根据您想要实现的目标,您可以尝试以下想法:

1.使用org-mode作为缓冲的主要模式.然后,您可以访问org-mode格式化的所有功能,包括链接到图像文件并显示它们:

an image without description
[[file:/tmp/image.png]]

an image with description
[[file:/tmp/image.png][my description]]
Run Code Online (Sandbox Code Playgroud)

然后你可以调用org-toggle-inline-images(C-c C-x C-v)在缓冲区中显示图像(没有前缀参数,它只显示没有描述的图像;如果你给出一个前缀参数,它将显示所有图像)

2.编写自己的elisp代码,将图像插入到所需的位置,并将其放在eval本地伪变量中,以便在打开文件时调用它.例如:

foo
<HERE>
bar

# Local Variables:
#   eval: (progn (beginning-of-buffer)(search-forward "<HERE>")(insert-image (create-image "/tmp/image.png")))
# End:
Run Code Online (Sandbox Code Playgroud)

你当然可以将elisp代码包装成一个简洁的函数,只需从eval局部变量中调用它(更干净,但强制你将函数定义放在其他地方,远离你的文件)


hua*_*uan 27

看看iimage-mode内嵌图像次要模式.它包含在Emacs-23,IIRC之后.

M-xiimage-mode

  • +1:我不知道这种模式,但这绝对是要走的路:标准而不是过度. (5认同)
  • 这是原始链接的Wayback Machine链接:https://web.archive.org/web/20120424055608/http://www.netlaputa.ne.jp/~kose/Emacs/iimage.html (2认同)