insert image into text buffer

∥☆過路亽.° 提交于 2019-12-02 18:07:07
huaiyuan

Take a look at iimage-mode, the inline image minor mode. It's included since Emacs-23, IIRC.

M-xiimage-mode

Depending on exactly what you want to achieve, you might try one the the following ideas:

1. use org-mode as your buffer's major mode. You then have access to all the power of org-mode formatting, which includes linking to image files and displaying them:

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

an image with description
[[file:/tmp/image.png][my description]]

then you can call org-toggle-inline-images (C-c C-x C-v) to display images in the buffer (without a prefix argument, it will display only images without description; if you give a prefix argument, it will display all images)

2. write your own elisp code to insert images where you want them, and put it in an eval local pseudo-variable so that it is called when opening the file. For example:

foo
<HERE>
bar

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

You can of course wrap the elisp code into a neat function and simply call it from the eval local variable (which is cleaner, but forces you to have the function definition somewhere else, away from your file)

If you don't want the text (actually lisp code) in the buffer, don't type it into the buffer in the first place. Try M-x eval-expression and enter your lisp code after the Eval prompt:

(insert-image (create-image "/tmp/test.png"))

Then the image is inserted at point in the buffer. You can define a function like this:

(defun my-insert-image () (interactive) (insert-image (create-image "/tmp/test.png")))

Either type M-x eval-expression and the above defun or type it into a buffer and C-x C-e after it. Then you can insert the image using M-x my-insert-image.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!