ShingoFukuyama
5/13/2014 - 1:52 AM

Show Font Awesome icons on Emacs

Show Font Awesome icons on Emacs

;; Assume you have already installed Font Awesome on the system
;; http://fortawesome.github.io/Font-Awesome/

(require 'ov)
;; Overlay Library
;; https://github.com/ShingoFukuyama/ov.el


;; Example 1: Insert all fonts at the cursor position
(defun font-awesome-insert-all ()
  (interactive)
  (mapc (lambda (font)
        (insert " ")
        (ov-set (ov-insert (car font)) 'face '(:family "FontAwesome" :height 1.5)))
      font-awesome-list))
;; (font-awesome-insert-all)


;; Example 2: Insert icon that has key action
(defun font-awesome-insert-apple ()
  (interactive)
  (let* ((apple (rassoc "fa-apple" font-awesome-list))
         (char (car apple))
         ov)
    (setq ov (ov-insert char))
    (ov-set ov 'face '(:family "FontAwesome" :foreground "#cc3300"))
    (ov-keymap ov
               ;; Show message in minibuffer
               "RET" '(message "Apple Selected!!!!!!")
               ;; Add a new apple
               "a" '(font-awesome-insert-apple))))
;; (font-awesome-insert-apple)


(setq font-awesome-list '(("\xf000" . "fa-glass")
                          ("\xf001" . "fa-music")
                          ("\xf002" . "fa-search")
                          ("\xf003" . "fa-envelope-o")
                          ("\xf004" . "fa-heart")
                          ("\xf005" . "fa-star")
                          ("\xf006" . "fa-star-o")
                          ("\xf007" . "fa-user")
                          ("\xf008" . "fa-film")
                          ("\xf009" . "fa-th-large")
                          ("\xf00a" . "fa-th")
                          ("\xf00b" . "fa-th-list")
                          ("\xf00c" . "fa-check")
                          ("\xf00d" . "fa-times")
                          ("\xf00e" . "fa-search-plus")
                          ("\xf010" . "fa-search-minus")
                          ("\xf011" . "fa-power-off")
                          ("\xf012" . "fa-signal")
                          ("\xf013" . "fa-cog")
                          ("\xf014" . "fa-trash-o")
                          ("\xf015" . "fa-home")
                          ("\xf016" . "fa-file-o")
                          ("\xf017" . "fa-clock-o")
                          ("\xf018" . "fa-road")
                          ("\xf019" . "fa-download")
                          ("\xf01a" . "fa-arrow-circle-o-down")
                          ("\xf01b" . "fa-arrow-circle-o-up")
                          ("\xf01c" . "fa-inbox")
                          ("\xf01d" . "fa-play-circle-o")
                          ("\xf01e" . "fa-repeat")
                          ("\xf021" . "fa-refresh")
                          ("\xf022" . "fa-list-alt")
                          ("\xf023" . "fa-lock")
                          ("\xf024" . "fa-flag")
                          ("\xf025" . "fa-headphones")
                          ("\xf026" . "fa-volume-off")
                          ("\xf027" . "fa-volume-down")
                          ("\xf028" . "fa-volume-up")
                          ("\xf029" . "fa-qrcode")
                          ("\xf02a" . "fa-barcode")
                          ("\xf02b" . "fa-tag")
                          ("\xf02c" . "fa-tags")
                          ("\xf02d" . "fa-book")
                          ("\xf02e" . "fa-bookmark")
                          ("\xf02f" . "fa-print")
                          ("\xf030" . "fa-camera")
                          ("\xf031" . "fa-font")
                          ("\xf032" . "fa-bold")
                          ("\xf033" . "fa-italic")
                          ("\xf034" . "fa-text-height")
                          ("\xf035" . "fa-text-width")
                          ("\xf036" . "fa-align-left")
                          ("\xf037" . "fa-align-center")
                          ("\xf038" . "fa-align-right")
                          ("\xf039" . "fa-align-justify")
                          ("\xf03a" . "fa-list")
                          ("\xf03b" . "fa-outdent")
                          ("\xf03c" . "fa-indent")
                          ("\xf03d" . "fa-video-camera")
                          ("\xf03e" . "fa-picture-o")
                          ("\xf040" . "fa-pencil")
                          ("\xf041" . "fa-map-marker")
                          ("\xf042" . "fa-adjust")
                          ("\xf043" . "fa-tint")
                          ("\xf044" . "fa-pencil-square-o")
                          ("\xf045" . "fa-share-square-o")
                          ("\xf046" . "fa-check-square-o")
                          ("\xf047" . "fa-arrows")
                          ("\xf048" . "fa-step-backward")
                          ("\xf049" . "fa-fast-backward")
                          ("\xf04a" . "fa-backward")
                          ("\xf04b" . "fa-play")
                          ("\xf04c" . "fa-pause")
                          ("\xf04d" . "fa-stop")
                          ("\xf04e" . "fa-forward")
                          ("\xf050" . "fa-fast-forward")
                          ("\xf051" . "fa-step-forward")
                          ("\xf052" . "fa-eject")
                          ("\xf053" . "fa-chevron-left")
                          ("\xf054" . "fa-chevron-right")
                          ("\xf055" . "fa-plus-circle")
                          ("\xf056" . "fa-minus-circle")
                          ("\xf057" . "fa-times-circle")
                          ("\xf058" . "fa-check-circle")
                          ("\xf059" . "fa-question-circle")
                          ("\xf05a" . "fa-info-circle")
                          ("\xf05b" . "fa-crosshairs")
                          ("\xf05c" . "fa-times-circle-o")
                          ("\xf05d" . "fa-check-circle-o")
                          ("\xf05e" . "fa-ban")
                          ("\xf060" . "fa-arrow-left")
                          ("\xf061" . "fa-arrow-right")
                          ("\xf062" . "fa-arrow-up")
                          ("\xf063" . "fa-arrow-down")
                          ("\xf064" . "fa-share")
                          ("\xf065" . "fa-expand")
                          ("\xf066" . "fa-compress")
                          ("\xf067" . "fa-plus")
                          ("\xf068" . "fa-minus")
                          ("\xf069" . "fa-asterisk")
                          ("\xf06a" . "fa-exclamation-circle")
                          ("\xf06b" . "fa-gift")
                          ("\xf06c" . "fa-leaf")
                          ("\xf06d" . "fa-fire")
                          ("\xf06e" . "fa-eye")
                          ("\xf070" . "fa-eye-slash")
                          ("\xf071" . "fa-exclamation-triangle")
                          ("\xf072" . "fa-plane")
                          ("\xf073" . "fa-calendar")
                          ("\xf074" . "fa-random")
                          ("\xf075" . "fa-comment")
                          ("\xf076" . "fa-magnet")
                          ("\xf077" . "fa-chevron-up")
                          ("\xf078" . "fa-chevron-down")
                          ("\xf079" . "fa-retweet")
                          ("\xf07a" . "fa-shopping-cart")
                          ("\xf07b" . "fa-folder")
                          ("\xf07c" . "fa-folder-open")
                          ("\xf07d" . "fa-arrows-v")
                          ("\xf07e" . "fa-arrows-h")
                          ("\xf080" . "fa-bar-chart-o")
                          ("\xf081" . "fa-twitter-square")
                          ("\xf082" . "fa-facebook-square")
                          ("\xf083" . "fa-camera-retro")
                          ("\xf084" . "fa-key")
                          ("\xf085" . "fa-cogs")
                          ("\xf086" . "fa-comments")
                          ("\xf087" . "fa-thumbs-o-up")
                          ("\xf088" . "fa-thumbs-o-down")
                          ("\xf089" . "fa-star-half")
                          ("\xf08a" . "fa-heart-o")
                          ("\xf08b" . "fa-sign-out")
                          ("\xf08c" . "fa-linkedin-square")
                          ("\xf08d" . "fa-thumb-tack")
                          ("\xf08e" . "fa-external-link")
                          ("\xf090" . "fa-sign-in")
                          ("\xf091" . "fa-trophy")
                          ("\xf092" . "fa-github-square")
                          ("\xf093" . "fa-upload")
                          ("\xf094" . "fa-lemon-o")
                          ("\xf095" . "fa-phone")
                          ("\xf096" . "fa-square-o")
                          ("\xf097" . "fa-bookmark-o")
                          ("\xf098" . "fa-phone-square")
                          ("\xf099" . "fa-twitter")
                          ("\xf09a" . "fa-facebook")
                          ("\xf09b" . "fa-github")
                          ("\xf09c" . "fa-unlock")
                          ("\xf09d" . "fa-credit-card")
                          ("\xf09e" . "fa-rss")
                          ("\xf0a0" . "fa-hdd-o")
                          ("\xf0a1" . "fa-bullhorn")
                          ("\xf0f3" . "fa-bell")
                          ("\xf0a3" . "fa-certificate")
                          ("\xf0a4" . "fa-hand-o-right")
                          ("\xf0a5" . "fa-hand-o-left")
                          ("\xf0a6" . "fa-hand-o-up")
                          ("\xf0a7" . "fa-hand-o-down")
                          ("\xf0a8" . "fa-arrow-circle-left")
                          ("\xf0a9" . "fa-arrow-circle-right")
                          ("\xf0aa" . "fa-arrow-circle-up")
                          ("\xf0ab" . "fa-arrow-circle-down")
                          ("\xf0ac" . "fa-globe")
                          ("\xf0ad" . "fa-wrench")
                          ("\xf0ae" . "fa-tasks")
                          ("\xf0b0" . "fa-filter")
                          ("\xf0b1" . "fa-briefcase")
                          ("\xf0b2" . "fa-arrows-alt")
                          ("\xf0c0" . "fa-users")
                          ("\xf0c1" . "fa-link")
                          ("\xf0c2" . "fa-cloud")
                          ("\xf0c3" . "fa-flask")
                          ("\xf0c4" . "fa-scissors")
                          ("\xf0c5" . "fa-files-o")
                          ("\xf0c6" . "fa-paperclip")
                          ("\xf0c7" . "fa-floppy-o")
                          ("\xf0c8" . "fa-square")
                          ("\xf0c9" . "fa-bars")
                          ("\xf0ca" . "fa-list-ul")
                          ("\xf0cb" . "fa-list-ol")
                          ("\xf0cc" . "fa-strikethrough")
                          ("\xf0cd" . "fa-underline")
                          ("\xf0ce" . "fa-table")
                          ("\xf0d0" . "fa-magic")
                          ("\xf0d1" . "fa-truck")
                          ("\xf0d2" . "fa-pinterest")
                          ("\xf0d3" . "fa-pinterest-square")
                          ("\xf0d4" . "fa-google-plus-square")
                          ("\xf0d5" . "fa-google-plus")
                          ("\xf0d6" . "fa-money")
                          ("\xf0d7" . "fa-caret-down")
                          ("\xf0d8" . "fa-caret-up")
                          ("\xf0d9" . "fa-caret-left")
                          ("\xf0da" . "fa-caret-right")
                          ("\xf0db" . "fa-columns")
                          ("\xf0dc" . "fa-sort")
                          ("\xf0dd" . "fa-sort-asc")
                          ("\xf0de" . "fa-sort-desc")
                          ("\xf0e0" . "fa-envelope")
                          ("\xf0e1" . "fa-linkedin")
                          ("\xf0e2" . "fa-undo")
                          ("\xf0e3" . "fa-gavel")
                          ("\xf0e4" . "fa-tachometer")
                          ("\xf0e5" . "fa-comment-o")
                          ("\xf0e6" . "fa-comments-o")
                          ("\xf0e7" . "fa-bolt")
                          ("\xf0e8" . "fa-sitemap")
                          ("\xf0e9" . "fa-umbrella")
                          ("\xf0ea" . "fa-clipboard")
                          ("\xf0eb" . "fa-lightbulb-o")
                          ("\xf0ec" . "fa-exchange")
                          ("\xf0ed" . "fa-cloud-download")
                          ("\xf0ee" . "fa-cloud-upload")
                          ("\xf0f0" . "fa-user-md")
                          ("\xf0f1" . "fa-stethoscope")
                          ("\xf0f2" . "fa-suitcase")
                          ("\xf0a2" . "fa-bell-o")
                          ("\xf0f4" . "fa-coffee")
                          ("\xf0f5" . "fa-cutlery")
                          ("\xf0f6" . "fa-file-text-o")
                          ("\xf0f7" . "fa-building-o")
                          ("\xf0f8" . "fa-hospital-o")
                          ("\xf0f9" . "fa-ambulance")
                          ("\xf0fa" . "fa-medkit")
                          ("\xf0fb" . "fa-fighter-jet")
                          ("\xf0fc" . "fa-beer")
                          ("\xf0fd" . "fa-h-square")
                          ("\xf0fe" . "fa-plus-square")
                          ("\xf100" . "fa-angle-double-left")
                          ("\xf101" . "fa-angle-double-right")
                          ("\xf102" . "fa-angle-double-up")
                          ("\xf103" . "fa-angle-double-down")
                          ("\xf104" . "fa-angle-left")
                          ("\xf105" . "fa-angle-right")
                          ("\xf106" . "fa-angle-up")
                          ("\xf107" . "fa-angle-down")
                          ("\xf108" . "fa-desktop")
                          ("\xf109" . "fa-laptop")
                          ("\xf10a" . "fa-tablet")
                          ("\xf10b" . "fa-mobile")
                          ("\xf10c" . "fa-circle-o")
                          ("\xf10d" . "fa-quote-left")
                          ("\xf10e" . "fa-quote-right")
                          ("\xf110" . "fa-spinner")
                          ("\xf111" . "fa-circle")
                          ("\xf112" . "fa-reply")
                          ("\xf113" . "fa-github-alt")
                          ("\xf114" . "fa-folder-o")
                          ("\xf115" . "fa-folder-open-o")
                          ("\xf118" . "fa-smile-o")
                          ("\xf119" . "fa-frown-o")
                          ("\xf11a" . "fa-meh-o")
                          ("\xf11b" . "fa-gamepad")
                          ("\xf11c" . "fa-keyboard-o")
                          ("\xf11d" . "fa-flag-o")
                          ("\xf11e" . "fa-flag-checkered")
                          ("\xf120" . "fa-terminal")
                          ("\xf121" . "fa-code")
                          ("\xf122" . "fa-reply-all")
                          ("\xf122" . "fa-mail-reply-all")
                          ("\xf123" . "fa-star-half-o")
                          ("\xf124" . "fa-location-arrow")
                          ("\xf125" . "fa-crop")
                          ("\xf126" . "fa-code-fork")
                          ("\xf127" . "fa-chain-broken")
                          ("\xf128" . "fa-question")
                          ("\xf129" . "fa-info")
                          ("\xf12a" . "fa-exclamation")
                          ("\xf12b" . "fa-superscript")
                          ("\xf12c" . "fa-subscript")
                          ("\xf12d" . "fa-eraser")
                          ("\xf12e" . "fa-puzzle-piece")
                          ("\xf130" . "fa-microphone")
                          ("\xf131" . "fa-microphone-slash")
                          ("\xf132" . "fa-shield")
                          ("\xf133" . "fa-calendar-o")
                          ("\xf134" . "fa-fire-extinguisher")
                          ("\xf135" . "fa-rocket")
                          ("\xf136" . "fa-maxcdn")
                          ("\xf137" . "fa-chevron-circle-left")
                          ("\xf138" . "fa-chevron-circle-right")
                          ("\xf139" . "fa-chevron-circle-up")
                          ("\xf13a" . "fa-chevron-circle-down")
                          ("\xf13b" . "fa-html5")
                          ("\xf13c" . "fa-css3")
                          ("\xf13d" . "fa-anchor")
                          ("\xf13e" . "fa-unlock-alt")
                          ("\xf140" . "fa-bullseye")
                          ("\xf141" . "fa-ellipsis-h")
                          ("\xf142" . "fa-ellipsis-v")
                          ("\xf143" . "fa-rss-square")
                          ("\xf144" . "fa-play-circle")
                          ("\xf145" . "fa-ticket")
                          ("\xf146" . "fa-minus-square")
                          ("\xf147" . "fa-minus-square-o")
                          ("\xf148" . "fa-level-up")
                          ("\xf149" . "fa-level-down")
                          ("\xf14a" . "fa-check-square")
                          ("\xf14b" . "fa-pencil-square")
                          ("\xf14c" . "fa-external-link-square")
                          ("\xf14d" . "fa-share-square")
                          ("\xf14e" . "fa-compass")
                          ("\xf150" . "fa-caret-square-o-down")
                          ("\xf151" . "fa-caret-square-o-up")
                          ("\xf152" . "fa-caret-square-o-right")
                          ("\xf153" . "fa-eur")
                          ("\xf154" . "fa-gbp")
                          ("\xf155" . "fa-usd")
                          ("\xf156" . "fa-inr")
                          ("\xf157" . "fa-jpy")
                          ("\xf158" . "fa-rub")
                          ("\xf159" . "fa-krw")
                          ("\xf15a" . "fa-btc")
                          ("\xf15b" . "fa-file")
                          ("\xf15c" . "fa-file-text")
                          ("\xf15d" . "fa-sort-alpha-asc")
                          ("\xf15e" . "fa-sort-alpha-desc")
                          ("\xf160" . "fa-sort-amount-asc")
                          ("\xf161" . "fa-sort-amount-desc")
                          ("\xf162" . "fa-sort-numeric-asc")
                          ("\xf163" . "fa-sort-numeric-desc")
                          ("\xf164" . "fa-thumbs-up")
                          ("\xf165" . "fa-thumbs-down")
                          ("\xf166" . "fa-youtube-square")
                          ("\xf167" . "fa-youtube")
                          ("\xf168" . "fa-xing")
                          ("\xf169" . "fa-xing-square")
                          ("\xf16a" . "fa-youtube-play")
                          ("\xf16b" . "fa-dropbox")
                          ("\xf16c" . "fa-stack-overflow")
                          ("\xf16d" . "fa-instagram")
                          ("\xf16e" . "fa-flickr")
                          ("\xf170" . "fa-adn")
                          ("\xf171" . "fa-bitbucket")
                          ("\xf172" . "fa-bitbucket-square")
                          ("\xf173" . "fa-tumblr")
                          ("\xf174" . "fa-tumblr-square")
                          ("\xf175" . "fa-long-arrow-down")
                          ("\xf176" . "fa-long-arrow-up")
                          ("\xf177" . "fa-long-arrow-left")
                          ("\xf178" . "fa-long-arrow-right")
                          ("\xf179" . "fa-apple")
                          ("\xf17a" . "fa-windows")
                          ("\xf17b" . "fa-android")
                          ("\xf17c" . "fa-linux")
                          ("\xf17d" . "fa-dribbble")
                          ("\xf17e" . "fa-skype")
                          ("\xf180" . "fa-foursquare")
                          ("\xf181" . "fa-trello")
                          ("\xf182" . "fa-female")
                          ("\xf183" . "fa-male")
                          ("\xf184" . "fa-gittip")
                          ("\xf185" . "fa-sun-o")
                          ("\xf186" . "fa-moon-o")
                          ("\xf187" . "fa-archive")
                          ("\xf188" . "fa-bug")
                          ("\xf189" . "fa-vk")
                          ("\xf18a" . "fa-weibo")
                          ("\xf18b" . "fa-renren")
                          ("\xf18c" . "fa-pagelines")
                          ("\xf18d" . "fa-stack-exchange")
                          ("\xf18e" . "fa-arrow-circle-o-right")
                          ("\xf190" . "fa-arrow-circle-o-left")
                          ("\xf191" . "fa-caret-square-o-left")
                          ("\xf192" . "fa-dot-circle-o")
                          ("\xf193" . "fa-wheelchair")
                          ("\xf194" . "fa-vimeo-square")
                          ("\xf195" . "fa-try")
                          ("\xf196" . "fa-plus-square-o")
                          ))