Created
September 21, 2016 22:18
-
-
Save alphapapa/0d38f082e609ed059cc7f2ed9caa7e3d to your computer and use it in GitHub Desktop.
Fira code symbols in emacs. You need to grab the Fira Code Symbol font for this to work. https://github.com/tonsky/FiraCode/files/412440/FiraCode-Regular-Symbol.zip
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; Fira code | |
;; This works when using emacs --daemon + emacsclient | |
(add-hook 'after-make-frame-functions (lambda (frame) (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol"))) | |
;; This works when using emacs without server/client | |
(set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol") | |
;; I haven't found one statement that makes both of the above situations work, so I use both for now | |
(defconst fira-code-font-lock-keywords-alist | |
(mapcar (lambda (regex-char-pair) | |
`(,(car regex-char-pair) | |
(0 (prog1 () | |
(compose-region (match-beginning 1) | |
(match-end 1) | |
;; The first argument to concat is a string containing a literal tab | |
,(concat " " (list (decode-char 'ucs (cadr regex-char-pair))))))))) | |
'(("\\(www\\)" #Xe100) | |
("[^/]\\(\\*\\*\\)[^/]" #Xe101) | |
("\\(\\*\\*\\*\\)" #Xe102) | |
("\\(\\*\\*/\\)" #Xe103) | |
("\\(\\*>\\)" #Xe104) | |
("[^*]\\(\\*/\\)" #Xe105) | |
("\\(\\\\\\\\\\)" #Xe106) | |
("\\(\\\\\\\\\\\\\\)" #Xe107) | |
("\\({-\\)" #Xe108) | |
("\\(\\[\\]\\)" #Xe109) | |
("\\(::\\)" #Xe10a) | |
("\\(:::\\)" #Xe10b) | |
("[^=]\\(:=\\)" #Xe10c) | |
("\\(!!\\)" #Xe10d) | |
("\\(!=\\)" #Xe10e) | |
("\\(!==\\)" #Xe10f) | |
("\\(-}\\)" #Xe110) | |
("\\(--\\)" #Xe111) | |
("\\(---\\)" #Xe112) | |
("\\(-->\\)" #Xe113) | |
("[^-]\\(->\\)" #Xe114) | |
("\\(->>\\)" #Xe115) | |
("\\(-<\\)" #Xe116) | |
("\\(-<<\\)" #Xe117) | |
("\\(-~\\)" #Xe118) | |
("\\(#{\\)" #Xe119) | |
("\\(#\\[\\)" #Xe11a) | |
("\\(##\\)" #Xe11b) | |
("\\(###\\)" #Xe11c) | |
("\\(####\\)" #Xe11d) | |
("\\(#(\\)" #Xe11e) | |
("\\(#\\?\\)" #Xe11f) | |
("\\(#_\\)" #Xe120) | |
("\\(#_(\\)" #Xe121) | |
("\\(\\.-\\)" #Xe122) | |
("\\(\\.=\\)" #Xe123) | |
("\\(\\.\\.\\)" #Xe124) | |
("\\(\\.\\.<\\)" #Xe125) | |
("\\(\\.\\.\\.\\)" #Xe126) | |
("\\(\\?=\\)" #Xe127) | |
("\\(\\?\\?\\)" #Xe128) | |
("\\(;;\\)" #Xe129) | |
("\\(/\\*\\)" #Xe12a) | |
("\\(/\\*\\*\\)" #Xe12b) | |
("\\(/=\\)" #Xe12c) | |
("\\(/==\\)" #Xe12d) | |
("\\(/>\\)" #Xe12e) | |
("\\(//\\)" #Xe12f) | |
("\\(///\\)" #Xe130) | |
("\\(&&\\)" #Xe131) | |
("\\(||\\)" #Xe132) | |
("\\(||=\\)" #Xe133) | |
("[^|]\\(|=\\)" #Xe134) | |
("\\(|>\\)" #Xe135) | |
("\\(\\^=\\)" #Xe136) | |
("\\(\\$>\\)" #Xe137) | |
("\\(\\+\\+\\)" #Xe138) | |
("\\(\\+\\+\\+\\)" #Xe139) | |
("\\(\\+>\\)" #Xe13a) | |
("\\(=:=\\)" #Xe13b) | |
("[^!/]\\(==\\)[^>]" #Xe13c) | |
("\\(===\\)" #Xe13d) | |
("\\(==>\\)" #Xe13e) | |
("[^=]\\(=>\\)" #Xe13f) | |
("\\(=>>\\)" #Xe140) | |
("\\(<=\\)" #Xe141) | |
("\\(=<<\\)" #Xe142) | |
("\\(=/=\\)" #Xe143) | |
("\\(>-\\)" #Xe144) | |
("\\(>=\\)" #Xe145) | |
("\\(>=>\\)" #Xe146) | |
("[^-=]\\(>>\\)" #Xe147) | |
("\\(>>-\\)" #Xe148) | |
("\\(>>=\\)" #Xe149) | |
("\\(>>>\\)" #Xe14a) | |
("\\(<\\*\\)" #Xe14b) | |
("\\(<\\*>\\)" #Xe14c) | |
("\\(<|\\)" #Xe14d) | |
("\\(<|>\\)" #Xe14e) | |
("\\(<\\$\\)" #Xe14f) | |
("\\(<\\$>\\)" #Xe150) | |
("\\(<!--\\)" #Xe151) | |
("\\(<-\\)" #Xe152) | |
("\\(<--\\)" #Xe153) | |
("\\(<->\\)" #Xe154) | |
("\\(<\\+\\)" #Xe155) | |
("\\(<\\+>\\)" #Xe156) | |
("\\(<=\\)" #Xe157) | |
("\\(<==\\)" #Xe158) | |
("\\(<=>\\)" #Xe159) | |
("\\(<=<\\)" #Xe15a) | |
("\\(<>\\)" #Xe15b) | |
("[^-=]\\(<<\\)" #Xe15c) | |
("\\(<<-\\)" #Xe15d) | |
("\\(<<=\\)" #Xe15e) | |
("\\(<<<\\)" #Xe15f) | |
("\\(<~\\)" #Xe160) | |
("\\(<~~\\)" #Xe161) | |
("\\(</\\)" #Xe162) | |
("\\(</>\\)" #Xe163) | |
("\\(~@\\)" #Xe164) | |
("\\(~-\\)" #Xe165) | |
("\\(~=\\)" #Xe166) | |
("\\(~>\\)" #Xe167) | |
("[^<]\\(~~\\)" #Xe168) | |
("\\(~~>\\)" #Xe169) | |
("\\(%%\\)" #Xe16a) | |
;;("\\(x\\)" #Xe16b) | |
("[^:=]\\(:\\)[^:=]" #Xe16c) | |
("[^\\+<>]\\(\\+\\)[^\\+<>]" #Xe16d) | |
("[^\\*/<>]\\(\\*\\)[^\\*/<>]" #Xe16f)))) | |
(defun add-fira-code-symbol-keywords () | |
(font-lock-add-keywords nil fira-code-font-lock-keywords-alist)) | |
(add-hook 'prog-mode-hook | |
#'add-fira-code-symbol-keywords) |
I don't use this, and I don't think I ever have. I just clicked the Fork button on the Gist years ago in case I wanted to use it someday. See the Revisions list.
Ok. Thanks!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@alphapapa Awesome job as always. However, the
(set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol")
part makes this conflict withall-the-icons
. Is there a way to just use like awhen composing the region?