;;; pretty-fonts.el --- Ligature and fontset setters -*- lexical-binding: t; -*- ;;; Commentary: ;; A heavily annotated, cleaned-up version of ligature implementations for Emacs ;; floating around on the web. If you ever looked at the snippets online and ;; thought wtf is going on, this implementation should clear things up. ;;; Code: ;;;; Requires (require 'dash) (require 'dash-functional) ;;;; Configuration ;;;;; Fira-code Ligatures (defconst pretty-fonts-fira-code-alist '(;; OPERATORS ;; Pipes ("\\(<|\\)" #Xe14d) ("\\(<>\\)" #Xe15b) ("\\(<|>\\)" #Xe14e) ("\\(|>\\)" #Xe135) ;; Brackets ("\\(<\\*\\)" #Xe14b) ("\\(<\\*>\\)" #Xe14c) ("\\(\\*>\\)" #Xe104) ("\\(<\\$\\)" #Xe14f) ("\\(<\\$>\\)" #Xe150) ("\\(\\$>\\)" #Xe137) ("\\(<\\+\\)" #Xe155) ("\\(<\\+>\\)" #Xe156) ("\\(\\+>\\)" #Xe13a) ;; Equality ("\\(!=\\)" #Xe10e) ("\\(!==\\)" #Xe10f) ("\\(=/=\\)" #Xe143) ("\\(/=\\)" #Xe12c) ("\\(/==\\)" #Xe12d) ("\\(===\\)"#Xe13d) ("[^!/]\\(==\\)[^>]" #Xe13c) ;; Equality Special ("\\(||=\\)" #Xe133) ("[^|]\\(|=\\)" #Xe134) ("\\(~=\\)" #Xe166) ("\\(\\^=\\)" #Xe136) ("\\(=:=\\)" #Xe13b) ;; Comparisons ("\\(<=\\)" #Xe141) ("\\(>=\\)" #Xe145) ("\\(\\)" #Xe163) ;; Shifts ("[^-=]\\(>>\\)" #Xe147) ("\\(>>>\\)" #Xe14a) ("[^-=]\\(<<\\)" #Xe15c) ("\\(<<<\\)" #Xe15f) ;; Dots ("\\(\\.-\\)" #Xe122) ("\\(\\.=\\)" #Xe123) ("\\(\\.\\.<\\)" #Xe125) ;; Hashes ("\\(#{\\)" #Xe119) ("\\(#(\\)" #Xe11e) ("\\(#_\\)" #Xe120) ("\\(#_(\\)" #Xe121) ("\\(#\\?\\)" #Xe11f) ("\\(#\\[\\)" #Xe11a) ;; REPEATED CHARACTERS ;; 2-Repeats ("\\(||\\)" #Xe132) ("\\(!!\\)" #Xe10d) ("\\(%%\\)" #Xe16a) ("\\(&&\\)" #Xe131) ;; 2+3-Repeats ("\\(##\\)" #Xe11b) ("\\(###\\)" #Xe11c) ("\\(####\\)" #Xe11d) ("\\(--\\)" #Xe111) ("\\(---\\)" #Xe112) ("\\({-\\)" #Xe108) ("\\(-}\\)" #Xe110) ("\\(\\\\\\\\\\)" #Xe106) ("\\(\\\\\\\\\\\\\\)" #Xe107) ("\\(\\.\\.\\)" #Xe124) ("\\(\\.\\.\\.\\)" #Xe126) ("\\(\\+\\+\\)" #Xe138) ("\\(\\+\\+\\+\\)" #Xe139) ("\\(//\\)" #Xe12f) ("\\(///\\)" #Xe130) ("\\(::\\)" #Xe10a) ("\\(:::\\)" #Xe10b) ;; ARROWS ;; Direct ("[^-]\\(->\\)" #Xe114) ("[^=]\\(=>\\)" #Xe13f) ("\\(<-\\)" #Xe152) ("\\(-->\\)" #Xe113) ("\\(->>\\)" #Xe115) ("\\(==>\\)" #Xe13e) ("\\(=>>\\)" #Xe140) ("\\(<--\\)" #Xe153) ("\\(<<-\\)" #Xe15d) ("\\(<==\\)" #Xe158) ("\\(<<=\\)" #Xe15e) ("\\(<->\\)" #Xe154) ("\\(<=>\\)" #Xe159) ;; Branches ("\\(-<\\)" #Xe116) ("\\(-<<\\)" #Xe117) ("\\(>-\\)" #Xe144) ("\\(>>-\\)" #Xe148) ("\\(=<<\\)" #Xe142) ("\\(>>=\\)" #Xe149) ("\\(>=>\\)" #Xe146) ("\\(<=<\\)" #Xe15a) ;; Squiggly ("\\(<~\\)" #Xe160) ("\\(<~~\\)" #Xe161) ("\\(~>\\)" #Xe167) ("\\(~~>\\)" #Xe169) ("\\(-~\\)" #Xe118) ("\\(~-\\)" #Xe165) ;; MISC ("\\(www\\)" #Xe100) ("\\(