diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2014-12-09 16:42:06 +0000 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2014-12-09 16:42:06 +0000 |
commit | 804e18ee0246709475aa6a500191f143a193b5b8 (patch) | |
tree | 00fc5da4031932315956e79952aa4cce2e68e6db /sx.el | |
parent | a983476a59701f1cc01580b16fc5235360054adf (diff) | |
parent | db82dc546b528eef2487820381884c7c67e3683a (diff) |
Merge pull request #136 from vermiculus/fix-@highligthing
Fix @highligthing
Diffstat (limited to 'sx.el')
-rw-r--r-- | sx.el | 38 |
1 files changed, 36 insertions, 2 deletions
@@ -264,14 +264,48 @@ Return the result of BODY." (push ov sx--overlays)) result)) +(defvar sx--ascii-replacement-list + '(("[:space:]" . "") + ("àåáâäãåą" . "a") + ("èéêëę" . "e") + ("ìíîïı" . "i") + ("òóôõöøőð" . "o") + ("ùúûüŭů" . "u") + ("çćčĉ" . "c") + ("żźž" . "z") + ("śşšŝ" . "s") + ("ñń" . "n") + ("ýÿ" . "y") + ("ğĝ" . "g") + ("ř" . "r") + ("ł" . "l") + ("đ" . "d") + ("ß" . "ss") + ("Þ" . "th") + ("ĥ" . "h") + ("ĵ" . "j") + ("^[:ascii:]" . "")) + "List of replacements to use for non-ascii characters +Used to convert user names into @mentions.") + (defun sx--user-@name (user) "Get the `display_name' of USER prepended with @. In order to correctly @mention the user, all whitespace is removed from the display name before it is returned." (sx-assoc-let user (when (stringp .display_name) - (concat "@" (replace-regexp-in-string - "[[:space:]]" "" .display_name))))) + (concat "@" (sx--recursive-replace + sx--ascii-replacement-list .display_name))))) + +(defun sx--recursive-replace (alist string) + "Replace each car of ALIST with its cdr in STRING." + (if alist + (sx--recursive-replace + (cdr alist) + (let ((kar (car alist))) + (replace-regexp-in-string + (format "[%s]" (car kar)) (cdr kar) string))) + string)) ;;; Assoc-let |