emacs-emojify

fork of https://github.com/iqbalansari/emacs-emojify
Log | Files | Refs | LICENSE

commit 2f930c6e902d0b8bfa1a01a67443d59435402c8b
parent 0cf872bc643cead6d920b5758198b9c2a336408b
Author: Iqbal Ansari <iqbalansari02@yahoo.com>
Date:   Mon, 30 Nov 2015 23:52:38 +0530

Add macro `emojify-do-for-emojis-in-region`

This allows easily executing form for emojis in given region

Diffstat:
Memojify.el | 29++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/emojify.el b/emojify.el @@ -120,6 +120,22 @@ inhibits buffer change, point motion hooks." (widen) ,@forms)))))) +(defmacro emojify-do-for-emojis-in-region (beg end &rest forms) + "Execute the given FORMS for all emojis between BEG and END. + +During the execution `emoji-start' and `emoji-end' are bound to the start +and end of the emoji for which the form is being executed." + (declare (debug t) (indent 2)) + `(let ((--emojify-loop-current-pos ,beg) + (--emojify-loop-end ,end) + emoji-start) + (while (and (> --emojify-loop-end --emojify-loop-current-pos) + (setq emoji-start (text-property-any --emojify-loop-current-pos --emojify-loop-end 'emojified t))) + (let ((emoji-end (+ emoji-start + (length (get-text-property emoji-start 'emojify-text))))) + ,@forms + (setq --emojify-loop-current-pos emoji-end))))) + (defun emojify-message (format-string &rest args) "Log debugging messages to buffer named 'emojify-log'. @@ -839,17 +855,12 @@ which is not what we want when falling back in `emojify-delete-emoji'" (when (equal emojify-display-style 'image) (emojify-with-saved-buffer-state (let ((emojify-region-beg (when (region-active-p) (region-beginning))) - (emojify-region-end (when (region-active-p) (region-end))) - emoji-start) - (while (and (> end beg) - (setq emoji-start (text-property-any beg end 'emojified t))) - (let* ((emoji-end (+ emoji-start - (length (get-text-property emoji-start 'emojify-text)))) - (current-disp (get-text-property emoji-start 'display))) + (emojify-region-end (when (region-active-p) (region-end)))) + (emojify-do-for-emojis-in-region beg end + (let ((current-disp (get-text-property emoji-start 'display))) (plist-put (cdr current-disp) :background (emojify--get-image-background emoji-start - emoji-end)) - (setq beg emoji-end))))))) + emoji-end)))))))) (defun emojify--update-emojis-background-in-region-starting-at (point) "Update background color for emojis in buffer starting at POINT.