123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- ;;; 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")))
- (add-hook 'after-make-frame-functions (lambda (frame) (set-fontset-font t nil (font-spec :size 20 :name "Symbola"))))
- ;; This works when using emacs without server/client
- (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol")
- (set-fontset-font t nil (font-spec :size 20 :name "Symbola"))
- (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))
- (when (not (darwin?))
- (add-hook 'prog-mode-hook
- #'add-fira-code-symbol-keywords))
|