Forked from DeLaGuardo/pragmatapro-font-lock-symbols-v2.el
          
        
    
          Created
          June 30, 2021 08:33 
        
      - 
      
- 
        Save zhiyue/39834d7eb6e35ca25ae12b489834335a to your computer and use it in GitHub Desktop. 
    Snippet for support ligatures from PragmataPro font in Emacs
  
        
  
    
      This file contains hidden or 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
    
  
  
    
  | ;; Enable ligatures without prettify-symbols | |
| (provide 'add-pragmatapro-symbol-keywords) | |
| (defconst pragmatapro-fontlock-keywords-alist | |
| (mapcar (lambda (regex-char-pair) | |
| `(,(car regex-char-pair) | |
| (0 (prog1 () | |
| (compose-region (match-beginning 1) | |
| (match-end 1) | |
| ,(concat (list ?\C-i) | |
| (list (decode-char 'ucs (cadr regex-char-pair))))))))) | |
| '(("\\(\\[ERROR\\]\\)" #XE380) | |
| ("\\(\\[DEBUG\\]\\)" #XE381) | |
| ("\\(\\[INFO\\]\\)" #XE382) | |
| ("\\(\\[WARN\\]\\)" #XE383) | |
| ("\\(\\[WARNING\\]\\)" #XE384) | |
| ("\\(\\[ERR\\]\\)" #XE385) | |
| ("\\(\\[FATAL\\]\\)" #XE386) | |
| ("\\(\\[TRACE\\]\\)" #XE387) | |
| ("\\(!!\\)" #XE720) | |
| ("\\(!=\\)" #XE721) | |
| ("\\(!==\\)" #XE722) | |
| ("\\(!!!\\)" #XE723) | |
| ("\\(!≡\\)" #XE724) | |
| ("\\(!≡≡\\)" #XE725) | |
| ("[^<]\\(!>\\)" #XE726) | |
| ("\\(#(\\)" #XE740) | |
| ("\\(#_\\)" #XE741) | |
| ("\\(#{\\)" #XE742) | |
| ("\\(#\\?\\)" #XE743) | |
| ("[^<]\\(#>\\)" #XE744) | |
| ("\\(##\\)" #XE745) | |
| ("\\(%=\\)" #XE750) | |
| ("[^<]\\(%>\\)" #XE751) | |
| ("\\(&%\\)" #XE760) | |
| ("\\(&&\\)" #XE761) | |
| ("\\(&\\*\\)" #XE762) | |
| ("\\(&\\+\\)" #XE763) | |
| ("\\(&-\\)" #XE764) | |
| ("\\(&/\\)" #XE765) | |
| ("\\(&=\\)" #XE766) | |
| ("\\(&&&\\)" #XE767) | |
| ("[^<]\\(&>\\)" #XE768) | |
| ("\\(\\*\\*\\*\\)" #XE780) | |
| ("\\(\\*=\\)" #XE781) | |
| ("\\(\\*/\\)" #XE782) | |
| ("[^<]\\(\\*>\\)" #XE783) | |
| ("\\(\\+\\+\\)" #XE790) | |
| ("\\(\\+\\+\\+\\)" #XE791) | |
| ("[^\\+]\\(\\+=\\)" #XE792) | |
| ("[^<]\\(\\+>\\)" #XE793) | |
| ("\\(\\+\\+=\\)" #XE794) | |
| ("\\(--\\)" #XE7A0) | |
| ("[^-]\\(-<\\)" #XE7A1) | |
| ("\\(-<<\\)" #XE7A2) | |
| ("\\(-=\\)" #XE7A3) | |
| ("[^|]\\(->\\)" #XE7A4) | |
| ("[^|]\\(->>\\)" #XE7A5) | |
| ("\\(---\\)" #XE7A6) | |
| ("\\(-->\\)" #XE7A7) | |
| ("\\(-\\+-\\)" #XE7A8) | |
| ("\\(-\\\\/\\)" #XE7A9) | |
| ("[^\\^]\\(\\.\\.\\)" #XE7B0) | |
| ("\\(\\.\\.\\.\\)" #XE7B1) | |
| ("\\(\\.\\.<\\)" #XE7B2) | |
| ("\\(\\.>\\)" #XE7B3) | |
| ("\\(\\.~\\)" #XE7B4) | |
| ("\\(\\.=\\)" #XE7B5) | |
| ("\\(/\\*\\)" #XE7C0) | |
| ("\\(//\\)" #XE7C1) | |
| ("[^<]\\(/>\\)" #XE7C2) | |
| ("[^=]\\(/=\\)" #XE7C3) | |
| ("\\(/==\\)" #XE7C4) | |
| ("\\(///\\)" #XE7C5) | |
| ("\\(/\\*\\*\\)" #XE7C6) | |
| ("\\(::\\)" #XE7D0) | |
| ("\\(:=\\)" #XE7D1) | |
| ("[^≡]\\(:≡\\)" #XE7D2) | |
| ("\\(:>\\)" #XE7D3) | |
| ("\\(:=>\\)" #XE7D4) | |
| ("\\(<\\*\\)" #XE7E1) | |
| ("\\(<\\*>\\)" #XE7E2) | |
| ("[^<]\\(<-\\)" #XE7E4) | |
| ("[^-]\\(<<\\)" #XE7E5) | |
| ("\\(<<<\\)" #XE7E6) | |
| ("\\(<<=\\)" #XE7E7) | |
| ("[^<]\\(<=\\)" #XE7E8) | |
| ("\\(<=>\\)" #XE7E9) | |
| ("\\(<>\\)" #XE7EA) | |
| ("\\(<<-\\)" #XE7EC) | |
| ("\\(<|\\)" #XE7ED) | |
| ("\\(<|>\\)" #XE7EB) | |
| ("\\(<=<\\)" #XE7EE) | |
| ("[^<]\\(<~\\)" #XE7EF) | |
| ("\\(<~~\\)" #XE7F0) | |
| ("\\(<<~\\)" #XE7F1) | |
| ("\\(<\\$\\)" #XE7F2) | |
| ("\\(<\\$>\\)" #XE7E0) | |
| ("\\(<\\+\\)" #XE7F3) | |
| ("\\(<\\+>\\)" #XE7E3) | |
| ("\\(<~>\\)" #XE800) | |
| ("\\(<\\*\\*>\\)" #XE801) | |
| ("\\(<<\\^\\)" #XE802) | |
| ("\\(<!\\)" #XE803) | |
| ("\\(<!>\\)" #XE7F4) | |
| ("\\(<@\\)" #XE804) | |
| ("\\(<#\\)" #XE805) | |
| ("\\(<#>\\)" #XE7F6) | |
| ("\\(<%\\)" #XE806) | |
| ("\\(<%>\\)" #XE7F7) | |
| ("[^<]\\(<\\^\\)" #XE807) | |
| ("\\(<&\\)" #XE808) | |
| ("\\(<&>\\)" #XE7F9) | |
| ("\\(<\\?\\)" #XE809) | |
| ("\\(<\\.\\)" #XE80A) | |
| ("\\(<\\.>\\)" #XE7FB) | |
| ("\\(</\\)" #XE80B) | |
| ("\\(</>\\)" #XE7FC) | |
| ("\\(<\\\\\\)" #XE80C) | |
| ("\\(<\"\\)" #XE80D) | |
| ("\\(<\">\\)" #XE7FE) | |
| ("\\(<:\\)" #XE80E) | |
| ("\\(<:>\\)" #XE7FF) | |
| ("\\(<->\\)" #XE80F) | |
| ("\\(<!--\\)" #XE810) | |
| ("\\(<--\\)" #XE811) | |
| ("\\(<~<\\)" #XE812) | |
| ("\\(<==>\\)" #XE813) | |
| ("\\(==<\\)" #XE820) | |
| ("[^/!<=>]\\(==\\)[^><=]" #XE821) | |
| ("\\(===\\)" #XE822) | |
| ("[^<]\\(==>\\)" #XE823) | |
| ("[^=:<]\\(=>\\)" #XE824) | |
| ("\\(=~\\)" #XE825) | |
| ("\\(=>>\\)" #XE826) | |
| ("\\(=/=\\)" #XE827) | |
| ("[^!]\\(≡≡\\)" #XE830) | |
| ("\\(≡≡≡\\)" #XE831) | |
| ("\\(≡:≡\\)" #XE832) | |
| ("[^>]\\(>-\\)" #XE840) | |
| ("\\(>=\\)" #XE841) | |
| ("[^=-]\\(>>\\)" #XE842) | |
| ("\\(>>-\\)" #XE843) | |
| ("\\(>==\\)" #XE844) | |
| ("\\(>>>\\)" #XE845) | |
| ("\\(>=>\\)" #XE846) | |
| ("\\(>>\\^\\)" #XE847) | |
| ("\\(\\?\\?\\)" #XE860) | |
| ("\\(\\?~\\)" #XE861) | |
| ("\\(\\?=\\)" #XE862) | |
| ("\\(\\?>\\)" #XE863) | |
| ("\\(<\\?>\\)" #XE7FA) | |
| ("\\(\\?\\?\\?\\)" #XE864) | |
| ("\\(\\^=\\)" #XE868) | |
| ("\\(\\^\\.\\)" #XE869) | |
| ("\\(\\^\\?\\)" #XE86A) | |
| ("\\(\\^\\.\\.\\)" #XE86B) | |
| ("\\(\\^<<\\)" #XE86C) | |
| ("\\(\\^>\\)" #XE86E) | |
| ("\\(\\^>>\\)" #XE86D) | |
| ("\\(<\\^>\\)" #XE7F8) | |
| ("[^\\\\]\\(\\\\\\\\\\)" #XE870) | |
| ("[^<]\\(\\\\>\\)" #XE871) | |
| ("\\(<\\\\>\\)" #XE7FD) | |
| ("\\(\\\\/-\\)" #XE872) | |
| ("\\(@>\\)" #XE877) | |
| ("\\(<@>\\)" #XE7F5) | |
| ("\\(|=\\)" #XE880) | |
| ("\\(||\\)" #XE881) | |
| ("[^<]\\(|>\\)" #XE882) | |
| ("\\(|||\\)" #XE883) | |
| ("\\(|\\+|\\)" #XE884) | |
| ("\\(|->\\)" #XE885) | |
| ("\\(|-->\\)" #XE886) | |
| ("\\(|=>\\)" #XE887) | |
| ("\\(|==>\\)" #XE888) | |
| ("\\(~=\\)" #XE890) | |
| ("[^~<]\\(~>\\)" #XE891) | |
| ("\\(~~>\\)" #XE892) | |
| ("\\(~>>\\)" #XE893) | |
| ("[^<]\\(\">\\)" #XE8B0)))) | |
| (defun add-pragmatapro-symbol-keywords () | |
| (font-lock-add-keywords nil pragmatapro-fontlock-keywords-alist)) | |
| (add-hook 'prog-mode-hook | |
| #'add-pragmatapro-symbol-keywords) | |
  
    
      This file contains hidden or 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
    
  
  
    
  | ;; For emacs25 | |
| (setq prettify-symbols-unprettify-at-point 'right-edge) | |
| (defconst pragmatapro-prettify-symbols-alist | |
| (mapcar (lambda (s) | |
| `(,(car s) | |
| . | |
| ,(vconcat | |
| (apply 'vconcat (make-list (- (length (car s)) 1) (vector (decode-char 'ucs #X0020) '(Br . Bl)))) | |
| (vector (decode-char 'ucs (cadr s)))))) | |
| '(("[ERROR]" #XE380) | |
| ("[DEBUG]" #XE381) | |
| ("[INFO]" #XE382) | |
| ("[WARN]" #XE383) | |
| ("[WARNING]" #XE384) | |
| ("[ERR]" #XE385) | |
| ("[FATAL]" #XE386) | |
| ("[TRACE]" #XE387) | |
| ("!!" #XE720) | |
| ("!=" #XE721) | |
| ("!==" #XE722) | |
| ("!!!" #XE723) | |
| ("!≡" #XE724) | |
| ("!≡≡" #XE725) | |
| ("!>" #XE726) | |
| ("#(" #XE740) | |
| ("#_" #XE741) | |
| ("#{" #XE742) | |
| ("#?" #XE743) | |
| ("#>" #XE744) | |
| ("##" #XE745) | |
| ("%=" #XE750) | |
| ("%>" #XE751) | |
| ("&%" #XE760) | |
| ("&&" #XE761) | |
| ("&*" #XE762) | |
| ("&+" #XE763) | |
| ("&-" #XE764) | |
| ("&/" #XE765) | |
| ("&=" #XE766) | |
| ("&&&" #XE767) | |
| ("&>" #XE768) | |
| ("***" #XE780) | |
| ("*=" #XE781) | |
| ("*/" #XE782) | |
| ("*>" #XE783) | |
| ("++" #XE790) | |
| ("+++" #XE791) | |
| ("+=" #XE792) | |
| ("+>" #XE793) | |
| ("++=" #XE794) | |
| ("--" #XE7A0) | |
| ("-<" #XE7A1) | |
| ("-<<" #XE7A2) | |
| ("-=" #XE7A3) | |
| ("->" #XE7A4) | |
| ("->>" #XE7A5) | |
| ("---" #XE7A6) | |
| ("-->" #XE7A7) | |
| ("-+-" #XE7A8) | |
| ("-\\/" #XE7A9) | |
| (".." #XE7B0) | |
| ("..." #XE7B1) | |
| ("..<" #XE7B2) | |
| (".>" #XE7B3) | |
| (".~" #XE7B4) | |
| (".=" #XE7B5) | |
| ("/*" #XE7C0) | |
| ("//" #XE7C1) | |
| ("/>" #XE7C2) | |
| ("/=" #XE7C3) | |
| ("/==" #XE7C4) | |
| ("///" #XE7C5) | |
| ("/**" #XE7C6) | |
| ("::" #XE7D0) | |
| (":=" #XE7D1) | |
| (":≡" #XE7D2) | |
| (":>" #XE7D3) | |
| (":=>" #XE7D4) | |
| ("<$>" #XE7E0) | |
| ("<*" #XE7E1) | |
| ("<*>" #XE7E2) | |
| ("<+>" #XE7E3) | |
| ("<-" #XE7E4) | |
| ("<<" #XE7E5) | |
| ("<<<" #XE7E6) | |
| ("<<=" #XE7E7) | |
| ("<=" #XE7E8) | |
| ("<=>" #XE7E9) | |
| ("<>" #XE7EA) | |
| ("<|>" #XE7EB) | |
| ("<<-" #XE7EC) | |
| ("<|" #XE7ED) | |
| ("<=<" #XE7EE) | |
| ("<~" #XE7EF) | |
| ("<~~" #XE7F0) | |
| ("<<~" #XE7F1) | |
| ("<$" #XE7F2) | |
| ("<+" #XE7F3) | |
| ("<!>" #XE7F4) | |
| ("<@>" #XE7F5) | |
| ("<#>" #XE7F6) | |
| ("<%>" #XE7F7) | |
| ("<^>" #XE7F8) | |
| ("<&>" #XE7F9) | |
| ("<?>" #XE7FA) | |
| ("<.>" #XE7FB) | |
| ("</>" #XE7FC) | |
| ("<\\>" #XE7FD) | |
| ("<\">" #XE7FE) | |
| ("<:>" #XE7FF) | |
| ("<~>" #XE800) | |
| ("<**>" #XE801) | |
| ("<<^" #XE802) | |
| ("<!" #XE803) | |
| ("<@" #XE804) | |
| ("<#" #XE805) | |
| ("<%" #XE806) | |
| ("<^" #XE807) | |
| ("<&" #XE808) | |
| ("<?" #XE809) | |
| ("<." #XE80A) | |
| ("</" #XE80B) | |
| ("<\\" #XE80C) | |
| ("<\"" #XE80D) | |
| ("<:" #XE80E) | |
| ("<->" #XE80F) | |
| ("<!--" #XE810) | |
| ("<--" #XE811) | |
| ("<~<" #XE812) | |
| ("<==>" #XE813) | |
| ("==<" #XE820) | |
| ("==" #XE821) | |
| ("===" #XE822) | |
| ("==>" #XE823) | |
| ("=>" #XE824) | |
| ("=~" #XE825) | |
| ("=>>" #XE826) | |
| ("=/=" #XE827) | |
| ("≡≡" #XE830) | |
| ("≡≡≡" #XE831) | |
| ("≡:≡" #XE832) | |
| (">-" #XE840) | |
| (">=" #XE841) | |
| (">>" #XE842) | |
| (">>-" #XE843) | |
| (">==" #XE844) | |
| (">>>" #XE845) | |
| (">=>" #XE846) | |
| (">>^" #XE847) | |
| ("??" #XE860) | |
| ("?~" #XE861) | |
| ("?=" #XE862) | |
| ("?>" #XE863) | |
| ("???" #XE864) | |
| ("^=" #XE868) | |
| ("^." #XE869) | |
| ("^?" #XE86A) | |
| ("^.." #XE86B) | |
| ("^<<" #XE86C) | |
| ("^>>" #XE86D) | |
| ("^>" #XE86E) | |
| ("\\\\" #XE870) | |
| ("\\>" #XE871) | |
| ("\\/-" #XE872) | |
| ("@>" #XE877) | |
| ("|=" #XE880) | |
| ("||" #XE881) | |
| ("|>" #XE882) | |
| ("|||" #XE883) | |
| ("|+|" #XE884) | |
| ("|->" #XE885) | |
| ("|-->" #XE886) | |
| ("|=>" #XE887) | |
| ("|==>" #XE888) | |
| ("~=" #XE890) | |
| ("~>" #XE891) | |
| ("~~>" #XE892) | |
| ("~>>" #XE893) | |
| ("\">" #XE8B0)))) | |
| (defun add-pragmatapro-prettify-symbols-alist () | |
| (dolist (alias pragmatapro-prettify-symbols-alist) | |
| (push alias prettify-symbols-alist))) | |
| (add-hook 'prog-mode-hook | |
| #'add-pragmatapro-prettify-symbols-alist) | |
| (global-prettify-symbols-mode +1) | 
  
    
      This file contains hidden or 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
    
  
  
    
  | ;; All ligatures (for testing) | |
| ;; [ERROR] | |
| ;; [DEBUG] | |
| ;; [INFO] | |
| ;; [WARN] | |
| ;; [WARNING] | |
| ;; [ERR] | |
| ;; [FATAL] | |
| ;; [TRACE] | |
| ;; !! | |
| ;; != | |
| ;; !== | |
| ;; !!! | |
| ;; !≡ | |
| ;; !≡≡ | |
| ;; !> | |
| ;; #( | |
| ;; #_ | |
| ;; #{ | |
| ;; #? | |
| ;; #> | |
| ;; ## | |
| ;; %= | |
| ;; %> | |
| ;; &% | |
| ;; && | |
| ;; &* | |
| ;; &+ | |
| ;; &- | |
| ;; &/ | |
| ;; &= | |
| ;; &&& | |
| ;; &> | |
| ;; *** | |
| ;; *= | |
| ;; */ | |
| ;; *> | |
| ;; ++ | |
| ;; +++ | |
| ;; += | |
| ;; +> | |
| ;; ++= | |
| ;; -- | |
| ;; -< | |
| ;; -<< | |
| ;; -= | |
| ;; -> | |
| ;; ->> | |
| ;; --- | |
| ;; --> | |
| ;; -+- | |
| ;; -\/ | |
| ;; .. | |
| ;; ... | |
| ;; ..< | |
| ;; .> | |
| ;; .~ | |
| ;; .= | |
| ;; /* | |
| ;; // | |
| ;; /> | |
| ;; /= | |
| ;; /== | |
| ;; /// | |
| ;; /** | |
| ;; :: | |
| ;; := | |
| ;; :≡ | |
| ;; :> | |
| ;; :=> | |
| ;; <$> | |
| ;; <* | |
| ;; <*> | |
| ;; <+> | |
| ;; <- | |
| ;; << | |
| ;; <<< | |
| ;; <<= | |
| ;; <= | |
| ;; <=> | |
| ;; <> | |
| ;; <|> | |
| ;; <<- | |
| ;; <| | |
| ;; <=< | |
| ;; <~ | |
| ;; <~~ | |
| ;; <<~ | |
| ;; <$ | |
| ;; <+ | |
| ;; <!> | |
| ;; <@> | |
| ;; <#> | |
| ;; <%> | |
| ;; <^> | |
| ;; <&> | |
| ;; <?> | |
| ;; <.> | |
| ;; </> | |
| ;; <\> | |
| ;; <"> | |
| ;; <:> | |
| ;; <~> | |
| ;; <**> | |
| ;; <<^ | |
| ;; <! | |
| ;; <@ | |
| ;; <# | |
| ;; <% | |
| ;; <^ | |
| ;; <& | |
| ;; <? | |
| ;; <. | |
| ;; </ | |
| ;; <\ | |
| ;; <" | |
| ;; <: | |
| ;; <-> | |
| ;; <!-- | |
| ;; <-- | |
| ;; <~< | |
| ;; <==> | |
| ;; ==< | |
| ;; == | |
| ;; === | |
| ;; ==> | |
| ;; => | |
| ;; =~ | |
| ;; =>> | |
| ;; =/= | |
| ;; ≡≡ | |
| ;; ≡≡≡ | |
| ;; ≡:≡ | |
| ;; >- | |
| ;; >= | |
| ;; >> | |
| ;; >>- | |
| ;; >== | |
| ;; >>> | |
| ;; >=> | |
| ;; >>^ | |
| ;; ?? | |
| ;; ?~ | |
| ;; ?= | |
| ;; ?> | |
| ;; ??? | |
| ;; ^= | |
| ;; ^. | |
| ;; ^? | |
| ;; ^.. | |
| ;; ^<< | |
| ;; ^>> | |
| ;; ^> | |
| ;; \\ | |
| ;; \> | |
| ;; \/- | |
| ;; @> | |
| ;; |= | |
| ;; || | |
| ;; |> | |
| ;; ||| | |
| ;; |+| | |
| ;; |-> | |
| ;; |--> | |
| ;; |=> | |
| ;; |==> | |
| ;; ~= | |
| ;; ~> | |
| ;; ~~> | |
| ;; ~>> | |
| ;; "> | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment