In Emacs, displaying an image occupies one line regardless of its height. The movement over the image while navigating by lines can be quite frustrating.
Although pixel-scroll and iscroll have improved image movement to some extent.
I hope to move images in the same way as moving text, line by line.
So I created this package to horizontally slice the images referenced in the buffer into multiple images. In Emacs, only a portion of the original image is displayed on each line. Finally, the image can be moved line by line.
During the development process, I found org-sliced-images which was almost the same as my idea. And thanks to him for letting me know about insert-sliced-image in Emacs.
You can find some development history here.
curl: Used to download remote images.
- org-element: Used to parse the buffer to retrieve all links.
- image: Used to create an image object.
- url-util : A utility for handling URL formats.
- clone the project in your own emacs configuration files directory, like:
git clone git@github.com:ginqi7/image-slicing.git ~/.emacs.d/lisp/image-slicing- add the path to ‘load-path’
(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/d/lisp/image-slicing"))Here are a few variables that can be used for configuration:
(require 'image-slicing)| variable | default value | explain |
|---|---|---|
| image-slicing-download-concurrency | 20 | the maximum concurrency of images download |
| image-slicing-line-height-scale | 2 | how many line height an image slice occupies |
| image-slicing-max-width | 700 | the maximum width of images display |
- cancel the eww defualt image render.
(add-to-list 'shr-external-rendering-functions
'(img . image-slicing-tag-img))- Add
image-slicingtoeww-after-render-hook
(push #'image-slicing-mode eww-after-render-hook)image-slicing-mode: Automatically finds image links in the buffer and renders them as multiline display.Asynchronous: Asynchronous download of remote images.EWW: Support eww-mode
[[url][tag]][[url]]
file:./hello.pnghttp://image.png
- If there are many remote image links in the buffer, it will generate many temporary image files in the temporary system directory.
- If the URL link is too short, the number of slices of the original image will be small, and the image line height will be large.
- Only one buffer can be rendered at a time.
- Adapt nov
