Long story short, I came up with an idea to emphasize content while I was reviewing an org-mode document a few months ago after I was tired of typing tedious *
around the content repeatedly. And I've been longing for this feature since then, because I was unfamiliar with mouse-based key bindings, and neither did I have the time to investigate it.
Today I finally nailed it down while I was attending a boring meeting, and it turned out to be quite simple. The exploration journey was not much different than before. First, I managed to find out how to bind a command to a mouse event, taking advantage of the good-old C-h k
and (info "emacs")
(or here at gnu.org). And then wrote a few lines of code to perform the task standing on the shoulder of Advice.
So here is the advice:
(define-advice mouse-set-region (:after (click) org-highlight ())
(when (and (derived-mode-p 'org-mode)
(use-region-p))
(let ((origin (buffer-substring (region-beginning) (region-end)))
(emphasis-char "*"))
(delete-region (region-beginning) (region-end))
(insert emphasis-char origin emphasis-char))))