emacs-emojify
emacs-emojify copied to clipboard
Lines with emojis do not get scaled down in minimap
Thanks for a nice package, this brings me joy 😹 . Lines with emojis are displayed full-height in minimap. Do tiny teeny emojis even make sense at all? Or would this more appropriately be addressed over at @dengste's minimap repo?

Would this be a matter of something like
(add-hook 'mini-map-mode
'(lambda ()
(emojify-mode -1)))
Hello @xmacex. thanks for the bug report, unfortunately minimap uses indirect buffers to render the minimap and as per Elisp manual, indirect buffers share text properties with their base buffer. Which means that the display text property that emojify uses to render emojis cannot be changed in the minimap without also affecting the original buffer. So the approach you suggested might not work. Let me see if there is some way to workaround this
Yes, indirect buffers always share text properties, but you can change display in the indirect buffer through overlays. This is also how Minimap makes the text small without affecting the original buffer. Some overlays are explicitly synced, though: the 'invisible property (otherwise hidden text would appear in the minimap) and 'face, so that you can see font-lock in the minimap. This is controlled through 'minimap-sync-overlay-properties'. I haven't looked at emacs-emojify, but maybe the sync of 'face' is actually the problem - you could remove this temporarily and see what happens. If this is not the case, we probably could scale the emojis down through an additional overlay.
Hello @dengste, thanks for looking into this. The issue is with the display text property, emojify uses it to render emojis as images.
Thanks a lot for the suggestions, especially about the overlays. I am currently trying to use overlays to hide emojis (basically using a separate display overlay property). But the suggestion to downscale emojis seems interesting, I am wondering though how it can be achieved using an overlay, my understanding is that if I set a display property via an overlay it completely overrides the display text property without affecting it, am I missing something, is there a way to downscale image rendered via display text property using overlays?
Yes, maybe scaling is not possible, I don't know. Hiding the emojis would probably be the next best thing. I guess it would make sense that minimap simply hides all images by default.
Okay thanks will double check on the scaling. And yes hiding images seems to be a sensible default for minimap, since a misplaced image might interfere with minimap's functionality.
Also on emojify side, I am thinking I will try displaying emoji using overlay properties instead of text properties. I initially decided to go with text properties because the manual cautions about overlays being inefficient to manage when they are large numbers. But I guess text properties might cause additional problems with indirect buffers