My attempt to optimize my emacs load time <1 second
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

371 lines
9.7 KiB

;;; 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)
("\\(<!\\)" #XE9E3)
("\\(<!>\\)" #XE9D4)
("\\(<@\\)" #XE9E4)
("\\(<#\\)" #XE9E5)
("\\(<#>\\)" #XE9D6)
("\\(<%\\)" #XE9E6)
("\\(<%>\\)" #XE9D7)
("[^<]\\(<\\^\\)" #XE9E7)
("\\(<&\\)" #XE9E8)
("\\(<&>\\)" #XE9D9)
("\\(<\\?\\)" #XE9E9)
("\\(<\\.\\)" #XE9EA)
("\\(<\\.>\\)" #XE9DB)
("\\(</\\)" #XE9EB)
("\\(</>\\)" #XE9DC)
("\\(<\\\\\\)" #XE9EC)
("\\(<\"\\)" #XE9ED)
;; ("\\(<\">\\)" #XE9DE)
("\\(<:\\)" #XE9EE)
("\\(<:>\\)" #XE9DF)
("\\(<->\\)" #XE9EF)
("\\(<!--\\)" #XE9F0)
("\\(<--\\)" #XE9F1)
("\\(<~<\\)" #XE9F2)
("\\(<==>\\)" #XE9F3)
("\\(==<\\)" #XEA00)
("[^/!<=>]\\(==\\)[^><=]" #XEA01)
("\\(===\\)" #XEA02)
("[^<]\\(==>\\)" #XEA03)
("[^=:<]\\(=>\\)" #XEA04)
("\\(=~\\)" #XEA05)
("\\(=>>\\)" #XEA06)
("\\(=/=\\)" #XEA07)
("[^!]\\(≡≡\\)" #XEA10)
("\\(≡≡≡\\)" #XEA11)
("\\(≡:≡\\)" #XEA12)
("[^>]\\(>-\\)" #XEA20)
("\\(>=\\)" #XEA21)
("[^=-]\\(>>\\)" #XEA22)
("\\(>>-\\)" #XEA23)
("\\(>==\\)" #XEA24)
("\\(>>>\\)" #XEA25)
("\\(>=>\\)" #XEA26)
("\\(>>\\^\\)" #XEA27)
("\\(\\?\\?\\)" #XEA40)
("\\(\\?~\\)" #XEA41)
("\\(\\?=\\)" #XEA42)
("\\(\\?>\\)" #XEA43)
("\\(<\\?>\\)" #XE9DA)
("\\(\\?\\?\\?\\)" #XEA44)
("\\(\\^=\\)" #XEA48)
("\\(\\^\\.\\)" #XEA49)
("\\(\\^\\?\\)" #XEA4A)
("\\(\\^\\.\\.\\)" #XEA4B)
("\\(\\^<<\\)" #XEA4C)
("\\(\\^>\\)" #XEA4E)
("\\(\\^>>\\)" #XEA4D)
("\\(<\\^>\\)" #XE9D8)
("[^\\\\]\\(\\\\\\\\\\)" #XEA50)
("[^<]\\(\\\\>\\)" #XEA51)
("\\(<\\\\>\\)" #XE9DD)
("\\(\\\\/-\\)" #XEA52)
("\\(@>\\)" #XEA57)
("\\(<@>\\)" #XE9D5)
("\\(|=\\)" #XEA60)
("\\(||\\)" #XEA61)
("[^<]\\(|>\\)" #XEA62)
("\\(|||\\)" #XEA63)
("\\(|\\+|\\)" #XEA64)
("\\(|->\\)" #XEA65)
("\\(|-->\\)" #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