;;; 07-custom-ligatures --- PragmataPro specific ligatures ;;; Commentary: ;; Enable ligatures without prettify-symbols ;; All ligatures (for testing) ;; [ERROR] ;; [DEBUG] ;; [INFO] ;; [WARN] ;; [WARNING] ;; [ERR] ;; [FATAL] ;; [TRACE] ;; !! ;; != ;; !== ;; !!! ;; !≡ ;; !≡≡ ;; !> ;; #( ;; #_ ;; #{ ;; #? ;; #> ;; ## ;; %= ;; %> ;; &% ;; && ;; &* ;; &+ ;; &- ;; &/ ;; &= ;; &&& ;; &> ;; *** ;; *= ;; */ ;; *> ;; ++ ;; +++ ;; += ;; +> ;; ++= ;; -- ;; -< ;; -<< ;; -= ;; -> ;; ->> ;; --- ;; --> ;; -+- ;; -\/ ;; .. ;; ... ;; ..< ;; .> ;; .~ ;; .= ;; /* ;; // ;; /> ;; /= ;; /== ;; /// ;; /** ;; :: ;; := ;; :≡ ;; :> ;; :=> ;; <$> ;; <* ;; <*> ;; <+> ;; <- ;; << ;; <<< ;; <<= ;; <= ;; <=> ;; <> ;; <|> ;; <<- ;; <| ;; <=< ;; <~ ;; <~~ ;; <<~ ;; <$ ;; <+ ;; ;; <@> ;; <#> ;; <%> ;; <^> ;; <&> ;; ;; <.> ;; ;; <\> ;; <"> ;; <:> ;; <~> ;; <**> ;; <<^ ;; ;; ;; |=> ;; |==> ;; ~= ;; ~> ;; ~~> ;; ~>> ;; "> ;;; Code: (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) ("\\(!!\\)" #XE900) ("\\(!=\\)" #XE901) ("\\(!==\\)" #XE902) ("\\(!!!\\)" #XE903) ("\\(!≡\\)" #XE904) ("\\(!≡≡\\)" #XE905) ("[^<]\\(!>\\)" #XE906) ("\\(#(\\)" #XE920) ("\\(#_\\)" #XE921) ("\\(#{\\)" #XE922) ("\\(#\\?\\)" #XE923) ("[^<]\\(#>\\)" #XE924) ("\\(##\\)" #XE925) ("\\(%=\\)" #XE930) ("[^<]\\(%>\\)" #XE931) ("\\(&%\\)" #XE940) ("\\(&&\\)" #XE941) ("\\(&\\*\\)" #XE942) ("\\(&\\+\\)" #XE943) ("\\(&-\\)" #XE944) ("\\(&/\\)" #XE945) ("\\(&=\\)" #XE946) ("\\(&&&\\)" #XE947) ("[^<]\\(&>\\)" #XE948) ("\\(\\*\\*\\*\\)" #XE960) ("\\(\\*=\\)" #XE961) ("\\(\\*/\\)" #XE962) ("[^<]\\(\\*>\\)" #XE963) ("\\(\\+\\+\\)" #XE970) ("\\(\\+\\+\\+\\)" #XE971) ("[^\\+]\\(\\+=\\)" #XE972) ("[^<]\\(\\+>\\)" #XE973) ("\\(\\+\\+=\\)" #XE974) ("\\(--\\)" #XE980) ("[^-]\\(-<\\)" #XE981) ("\\(-<<\\)" #XE982) ("\\(-=\\)" #XE983) ("[^|]\\(->\\)" #XE984) ("[^|]\\(->>\\)" #XE985) ("\\(---\\)" #XE986) ("\\(-->\\)" #XE987) ("\\(-\\+-\\)" #XE988) ("\\(-\\\\/\\)" #XE989) ("[^\\^]\\(\\.\\.\\)" #XE990) ("\\(\\.\\.\\.\\)" #XE991) ("\\(\\.\\.<\\)" #XE992) ("\\(\\.>\\)" #XE993) ("\\(\\.~\\)" #XE994) ("\\(\\.=\\)" #XE995) ("\\(/\\*\\)" #XE9A0) ("\\(//\\)" #XE9A1) ("[^<]\\(/>\\)" #XE9A2) ("[^=]\\(/=\\)" #XE9A3) ("\\(/==\\)" #XE9A4) ("\\(///\\)" #XE9A5) ("\\(/\\*\\*\\)" #XE9A6) ("\\(::\\)" #XE9B0) ("\\(:=\\)" #XE9B1) ("[^≡]\\(:≡\\)" #XE9B2) ("\\(:>\\)" #XE9B3) ("\\(:=>\\)" #XE9B4) ("\\(<\\*\\)" #XE9C1) ("\\(<\\*>\\)" #XE9C2) ("[^<]\\(<-\\)" #XE9C4) ("[^-]\\(<<\\)" #XE9C5) ("\\(<<<\\)" #XE9C6) ("\\(<<=\\)" #XE9C7) ("[^<]\\(<=\\)" #XE9C8) ("\\(<=>\\)" #XE9C9) ("\\(<>\\)" #XE9CA) ("\\(<<-\\)" #XE9CC) ("\\(<|\\)" #XE9CD) ("\\(<|>\\)" #XE9CB) ("\\(<=<\\)" #XE9CE) ("[^<]\\(<~\\)" #XE9CF) ("\\(<~~\\)" #XE9D0) ("\\(<<~\\)" #XE9D1) ("\\(<\\$\\)" #XE9D2) ("\\(<\\$>\\)" #XE9C0) ("\\(<\\+\\)" #XE9D3) ("\\(<\\+>\\)" #XE9C3) ("\\(<~>\\)" #XE9E0) ("\\(<\\*\\*>\\)" #XE9E1) ("\\(<<\\^\\)" #XE9E2) ("\\(\\)" #XE9D4) ("\\(<@\\)" #XE9E4) ("\\(<#\\)" #XE9E5) ("\\(<#>\\)" #XE9D6) ("\\(<%\\)" #XE9E6) ("\\(<%>\\)" #XE9D7) ("[^<]\\(<\\^\\)" #XE9E7) ("\\(<&\\)" #XE9E8) ("\\(<&>\\)" #XE9D9) ("\\(<\\?\\)" #XE9E9) ("\\(<\\.\\)" #XE9EA) ("\\(<\\.>\\)" #XE9DB) ("\\(\\)" #XE9DC) ("\\(<\\\\\\)" #XE9EC) ("\\(<\"\\)" #XE9ED) ;; ("\\(<\">\\)" #XE9DE) ("\\(<:\\)" #XE9EE) ("\\(<:>\\)" #XE9DF) ("\\(<->\\)" #XE9EF) ("\\(\\)" #XEA66) ("\\(|=>\\)" #XEA67) ("\\(|==>\\)" #XEA68) ("\\(~=\\)" #XEA70) ("[^~<]\\(~>\\)" #XEA71) ("\\(~~>\\)" #XEA72) ("\\(~>>\\)" #XEA73) ("[^<]\\(\">\\)" #XEA90) ))) (defun add-pragmatapro-symbol-keywords () "Add the symbols to font-lock." (font-lock-add-keywords nil pragmatapro-fontlock-keywords-alist)) (add-hook 'prog-mode-hook #'add-pragmatapro-symbol-keywords) (add-hook 'emacs-lisp-mode-hook #'add-pragmatapro-symbol-keywords) (provide '07-custom-ligatures) ;;; 07-custom-ligatures.el ends here