Ответ 1
Посмотрите iimage-mode
, второстепенный режим встроенного изображения. Он включался с Emacs-23, IIRC.
M-x iimage-mode
Если я поставлю
(insert-image (create-image "/tmp/test.png"))
в буфере, поместите курсор после последней скобки и оцените его с помощью C-x C-e
, тогда в буфере отображается изображение /tmp/test.png
:
Довольно аккуратный. Но,
(insert-image ...)
в целом?(insert-image ...)
, а не
образ. Я доволен этим, но есть ли способ сказать emacs
автоматически замените все выражения (insert-image ...)
на
их соответствующие образы (после открытия файла), без необходимости вводить C-x C-e
после
каждый из них?Посмотрите iimage-mode
, второстепенный режим встроенного изображения. Он включался с Emacs-23, IIRC.
M-x iimage-mode
В зависимости от того, чего вы хотите достичь, вы можете попробовать следующие идеи:
1. используйте org-mode
в качестве основного режима буфера. Затем у вас есть доступ ко всем возможностям форматирования org-mode
, который включает ссылку на файлы изображений и их отображение:
an image without description
[[file:/tmp/image.png]]
an image with description
[[file:/tmp/image.png][my description]]
то вы можете вызвать 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:
Вы можете, конечно, обернуть код elisp в аккуратную функцию и просто вызвать его из локальной переменной eval
(которая чище, но заставляет вас иметь определение функции где-то еще, вдали от вашего файла)
Если вы не хотите, чтобы текст (фактически lisp код) в буфере, не вводите его в буфер в первую очередь. Попробуйте M-x eval-expression
и введите код lisp после запроса Eval:
(insert-image (create-image "/tmp/test.png"))
Затем изображение вставляется в точку в буфере. Вы можете определить такую функцию:
(defun my-insert-image () (interactive) (insert-image (create-image "/tmp/test.png")))
Любой тип M-x eval-expression
и выше defun или введите его в буфер и C-x C-e
после него. Затем вы можете вставить изображение с помощью M-x my-insert-image
.