I got really interested in org-entities (to deal with the case I mentioned in the first email in this thread like \ast{}shrug\ast{}) and came up with this: ===== (defun modi/org-entity-get-name (char) "Return the entity name for CHAR. For example, return \"ast\" for *." (let ((ll (append org-entities-user org-entities)) e name utf8) (catch 'break (while ll (setq e (pop ll)) (when (not (stringp e)) (setq utf8 (nth 6 e)) (when (string= char utf8) (setq name (car e)) (throw 'break name))))))) (defun modi/org-insert-org-entity-maybe (orig-fun &rest args) "When the universal prefix C-u is used before entering any character, insert the character's `org-entity' name if available." (let ((pressed-key (this-command-keys)) entity-name) (when (and (listp args) (eq 4 (car args))) (setq entity-name (modi/org-entity-get-name pressed-key)) (when entity-name (setq entity-name (concat "\\" entity-name "{}")) (insert entity-name) (message (concat "Inserted `org-entity' " (propertize entity-name 'face 'font-lock-function-name-face) " for the symbol " (propertize pressed-key 'face 'font-lock-function-name-face) ".")))) (when (null entity-name) (apply orig-fun args)))) (advice-add 'org-self-insert-command :around #'modi/org-insert-org-entity-maybe) ===== After evaluating the above, whenever you do C-u *, C-u /, C-u =, etc, that symbol's org-entity will be inserted (if available in either org-entities-user or org-entities). If an org-entity match is not found, that symbol will be inserted 4 times, as C-u would usually do. The message tells the user if the org-entity got inserted so that there is not confusion. The advised portion gets executed only if the below 2 conditions match: - User used C-u prefix (not M-4 or C-u C-u or anything else) - The entered character has a match in the org entities lists. Question to the list is: Does this advise mask any useful functionality of org-self-insert-command? -- Kaushal Modi On Sat, Sep 19, 2015 at 12:11 AM, Kaushal Modi wrote: > Here's the MWE once again with proper indication ([ZWS]) of where you need > to insert the zero width space char. > > ===== > > * Escaping =equal= sign in verbatim formatting. > =a\equal{}b+c= > ** Here's the same but using zero width spaces instead of /org entities/. > =a=[ZWS]b+c= > > * Here I am trying to have double quotes in verbatim formatting. > =\quot{}This is inbetween double quotes\quot{}=. > ** Here's the same but using zero width spaces instead of /org entities/. > =[ZWS]"This is inbetween double quotes"[ZWS]=. > > * And here's to escapes asterisks > This is *bold*. But this is \ast{}not bold\ast{}. > This works! > > ===== > > > > On Sat, Sep 19, 2015 at 12:07 AM Kaushal Modi > wrote: > >> Thanks for letting me know about org-entities. That is awesome. I now >> know how to escape various characters in general, but unfortunately this >> does not work within verbatim formatting (which makes sense). >> >> Here's a minimum working example: >> >> ===== >> >> * Escaping =equal= sign in verbatim formatting. >> =a\equal{}b+c= >> ** Here's the same but using zero width spaces instead of /org entities/. >> =a=b+c= >> >> * Here I am trying to have double quotes in verbatim formatting. >> =\quot{}This is inbetween double quotes\quot{}=. >> ** Here's the same but using zero width spaces instead of /org entities/. >> =​"This is inbetween double quotes"​=. >> >> * And here's to escapes asterisks >> This is *bold*. But this is \ast{}not bold\ast{}. >> This works! >> >> ===== >> >> Here's what it looks like when exported: >> https://dl.dropboxusercontent.com/u/10985/escape-chars.pdf >> >> On Fri, Sep 18, 2015 at 9:48 PM Eric Abrahamsen >> wrote: >> >>> Kaushal Modi writes: >>> >>> > My most common uses are escaping double quotes (") and equals (=) >>> > within org verbatim blocks (=VERBATIM=) >>> > >>> > Examples: >>> > >>> > 1. =var=[ZWS]val= >>> > 2. =[ZWS]"something"[ZWS]= >>> > >>> > Here [ZWS] is the 0x200b zero width space unicode char. >>> > >>> > I found [ZWS] useful as a generic escape char for org mode. There are >>> > few other cases where this has been useful, but I can't recall right >>> > now. >>> > >>> > In any case, what would be the recommended way to escape " and = in >>> > the above 2 examples? >>> >>> Check out the variable `org-entities' for all the replaceable escape >>> codes. It's got quotes and equal! >>> >>> E >>> >>> >>>