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

  1. ;;; 07-custom-ligatures --- PragmataPro specific ligatures
  2. ;;; Commentary:
  3. ;; Enable ligatures without prettify-symbols
  4. ;; All ligatures (for testing)
  5. ;; [ERROR]
  6. ;; [DEBUG]
  7. ;; [INFO]
  8. ;; [WARN]
  9. ;; [WARNING]
  10. ;; [ERR]
  11. ;; [FATAL]
  12. ;; [TRACE]
  13. ;; !!
  14. ;; !=
  15. ;; !==
  16. ;; !!!
  17. ;; !≡
  18. ;; !≡≡
  19. ;; !>
  20. ;; #(
  21. ;; #_
  22. ;; #{
  23. ;; #?
  24. ;; #>
  25. ;; ##
  26. ;; %=
  27. ;; %>
  28. ;; &%
  29. ;; &&
  30. ;; &*
  31. ;; &+
  32. ;; &-
  33. ;; &/
  34. ;; &=
  35. ;; &&&
  36. ;; &>
  37. ;; ***
  38. ;; *=
  39. ;; */
  40. ;; *>
  41. ;; ++
  42. ;; +++
  43. ;; +=
  44. ;; +>
  45. ;; ++=
  46. ;; --
  47. ;; -<
  48. ;; -<<
  49. ;; -=
  50. ;; ->
  51. ;; ->>
  52. ;; ---
  53. ;; -->
  54. ;; -+-
  55. ;; -\/
  56. ;; ..
  57. ;; ...
  58. ;; ..<
  59. ;; .>
  60. ;; .~
  61. ;; .=
  62. ;; /*
  63. ;; //
  64. ;; />
  65. ;; /=
  66. ;; /==
  67. ;; ///
  68. ;; /**
  69. ;; ::
  70. ;; :=
  71. ;; :≡
  72. ;; :>
  73. ;; :=>
  74. ;; <$>
  75. ;; <*
  76. ;; <*>
  77. ;; <+>
  78. ;; <-
  79. ;; <<
  80. ;; <<<
  81. ;; <<=
  82. ;; <=
  83. ;; <=>
  84. ;; <>
  85. ;; <|>
  86. ;; <<-
  87. ;; <|
  88. ;; <=<
  89. ;; <~
  90. ;; <~~
  91. ;; <<~
  92. ;; <$
  93. ;; <+
  94. ;; <!>
  95. ;; <@>
  96. ;; <#>
  97. ;; <%>
  98. ;; <^>
  99. ;; <&>
  100. ;; <?>
  101. ;; <.>
  102. ;; </>
  103. ;; <\>
  104. ;; <">
  105. ;; <:>
  106. ;; <~>
  107. ;; <**>
  108. ;; <<^
  109. ;; <!
  110. ;; <@
  111. ;; <#
  112. ;; <%
  113. ;; <^
  114. ;; <&
  115. ;; <?
  116. ;; <.
  117. ;; </
  118. ;; <\
  119. ;; <"
  120. ;; <:
  121. ;; <->
  122. ;; <!--
  123. ;; <--
  124. ;; <~<
  125. ;; <==>
  126. ;; ==<
  127. ;; ==
  128. ;; ===
  129. ;; ==>
  130. ;; =>
  131. ;; =~
  132. ;; =>>
  133. ;; =/=
  134. ;; ≡≡
  135. ;; ≡≡≡
  136. ;; ≡:≡
  137. ;; >-
  138. ;; >=
  139. ;; >>
  140. ;; >>-
  141. ;; >==
  142. ;; >>>
  143. ;; >=>
  144. ;; >>^
  145. ;; ??
  146. ;; ?~
  147. ;; ?=
  148. ;; ?>
  149. ;; ???
  150. ;; ^=
  151. ;; ^.
  152. ;; ^?
  153. ;; ^..
  154. ;; ^<<
  155. ;; ^>>
  156. ;; ^>
  157. ;; \\
  158. ;; \>
  159. ;; \/-
  160. ;; @>
  161. ;; |=
  162. ;; ||
  163. ;; |>
  164. ;; |||
  165. ;; |+|
  166. ;; |->
  167. ;; |-->
  168. ;; |=>
  169. ;; |==>
  170. ;; ~=
  171. ;; ~>
  172. ;; ~~>
  173. ;; ~>>
  174. ;; ">
  175. ;;; Code:
  176. (defconst pragmatapro-fontlock-keywords-alist
  177. (mapcar (lambda (regex-char-pair)
  178. `(,(car regex-char-pair)
  179. (0 (prog1 ()
  180. (compose-region (match-beginning 1)
  181. (match-end 1)
  182. ,(concat (list ?\C-i)
  183. (list (decode-char 'ucs (cadr regex-char-pair)))))))))
  184. '(("\\(\\[ERROR\\]\\)" #XE380)
  185. ("\\(\\[DEBUG\\]\\)" #XE381)
  186. ("\\(\\[INFO\\]\\)" #XE382)
  187. ("\\(\\[WARN\\]\\)" #XE383)
  188. ("\\(\\[WARNING\\]\\)" #XE384)
  189. ("\\(\\[ERR\\]\\)" #XE385)
  190. ("\\(\\[FATAL\\]\\)" #XE386)
  191. ("\\(\\[TRACE\\]\\)" #XE387)
  192. ("\\(!!\\)" #XE900)
  193. ("\\(!=\\)" #XE901)
  194. ("\\(!==\\)" #XE902)
  195. ("\\(!!!\\)" #XE903)
  196. ("\\(!≡\\)" #XE904)
  197. ("\\(!≡≡\\)" #XE905)
  198. ("[^<]\\(!>\\)" #XE906)
  199. ("\\(#(\\)" #XE920)
  200. ("\\(#_\\)" #XE921)
  201. ("\\(#{\\)" #XE922)
  202. ("\\(#\\?\\)" #XE923)
  203. ("[^<]\\(#>\\)" #XE924)
  204. ("\\(##\\)" #XE925)
  205. ("\\(%=\\)" #XE930)
  206. ("[^<]\\(%>\\)" #XE931)
  207. ("\\(&%\\)" #XE940)
  208. ("\\(&&\\)" #XE941)
  209. ("\\(&\\*\\)" #XE942)
  210. ("\\(&\\+\\)" #XE943)
  211. ("\\(&-\\)" #XE944)
  212. ("\\(&/\\)" #XE945)
  213. ("\\(&=\\)" #XE946)
  214. ("\\(&&&\\)" #XE947)
  215. ("[^<]\\(&>\\)" #XE948)
  216. ("\\(\\*\\*\\*\\)" #XE960)
  217. ("\\(\\*=\\)" #XE961)
  218. ("\\(\\*/\\)" #XE962)
  219. ("[^<]\\(\\*>\\)" #XE963)
  220. ("\\(\\+\\+\\)" #XE970)
  221. ("\\(\\+\\+\\+\\)" #XE971)
  222. ("[^\\+]\\(\\+=\\)" #XE972)
  223. ("[^<]\\(\\+>\\)" #XE973)
  224. ("\\(\\+\\+=\\)" #XE974)
  225. ("\\(--\\)" #XE980)
  226. ("[^-]\\(-<\\)" #XE981)
  227. ("\\(-<<\\)" #XE982)
  228. ("\\(-=\\)" #XE983)
  229. ("[^|]\\(->\\)" #XE984)
  230. ("[^|]\\(->>\\)" #XE985)
  231. ("\\(---\\)" #XE986)
  232. ("\\(-->\\)" #XE987)
  233. ("\\(-\\+-\\)" #XE988)
  234. ("\\(-\\\\/\\)" #XE989)
  235. ("[^\\^]\\(\\.\\.\\)" #XE990)
  236. ("\\(\\.\\.\\.\\)" #XE991)
  237. ("\\(\\.\\.<\\)" #XE992)
  238. ("\\(\\.>\\)" #XE993)
  239. ("\\(\\.~\\)" #XE994)
  240. ("\\(\\.=\\)" #XE995)
  241. ("\\(/\\*\\)" #XE9A0)
  242. ("\\(//\\)" #XE9A1)
  243. ("[^<]\\(/>\\)" #XE9A2)
  244. ("[^=]\\(/=\\)" #XE9A3)
  245. ("\\(/==\\)" #XE9A4)
  246. ("\\(///\\)" #XE9A5)
  247. ("\\(/\\*\\*\\)" #XE9A6)
  248. ("\\(::\\)" #XE9B0)
  249. ("\\(:=\\)" #XE9B1)
  250. ("[^≡]\\(:≡\\)" #XE9B2)
  251. ("\\(:>\\)" #XE9B3)
  252. ("\\(:=>\\)" #XE9B4)
  253. ("\\(<\\*\\)" #XE9C1)
  254. ("\\(<\\*>\\)" #XE9C2)
  255. ("[^<]\\(<-\\)" #XE9C4)
  256. ("[^-]\\(<<\\)" #XE9C5)
  257. ("\\(<<<\\)" #XE9C6)
  258. ("\\(<<=\\)" #XE9C7)
  259. ("[^<]\\(<=\\)" #XE9C8)
  260. ("\\(<=>\\)" #XE9C9)
  261. ("\\(<>\\)" #XE9CA)
  262. ("\\(<<-\\)" #XE9CC)
  263. ("\\(<|\\)" #XE9CD)
  264. ("\\(<|>\\)" #XE9CB)
  265. ("\\(<=<\\)" #XE9CE)
  266. ("[^<]\\(<~\\)" #XE9CF)
  267. ("\\(<~~\\)" #XE9D0)
  268. ("\\(<<~\\)" #XE9D1)
  269. ("\\(<\\$\\)" #XE9D2)
  270. ("\\(<\\$>\\)" #XE9C0)
  271. ("\\(<\\+\\)" #XE9D3)
  272. ("\\(<\\+>\\)" #XE9C3)
  273. ("\\(<~>\\)" #XE9E0)
  274. ("\\(<\\*\\*>\\)" #XE9E1)
  275. ("\\(<<\\^\\)" #XE9E2)
  276. ("\\(<!\\)" #XE9E3)
  277. ("\\(<!>\\)" #XE9D4)
  278. ("\\(<@\\)" #XE9E4)
  279. ("\\(<#\\)" #XE9E5)
  280. ("\\(<#>\\)" #XE9D6)
  281. ("\\(<%\\)" #XE9E6)
  282. ("\\(<%>\\)" #XE9D7)
  283. ("[^<]\\(<\\^\\)" #XE9E7)
  284. ("\\(<&\\)" #XE9E8)
  285. ("\\(<&>\\)" #XE9D9)
  286. ("\\(<\\?\\)" #XE9E9)
  287. ("\\(<\\.\\)" #XE9EA)
  288. ("\\(<\\.>\\)" #XE9DB)
  289. ("\\(</\\)" #XE9EB)
  290. ("\\(</>\\)" #XE9DC)
  291. ("\\(<\\\\\\)" #XE9EC)
  292. ("\\(<\"\\)" #XE9ED)
  293. ;; ("\\(<\">\\)" #XE9DE)
  294. ("\\(<:\\)" #XE9EE)
  295. ("\\(<:>\\)" #XE9DF)
  296. ("\\(<->\\)" #XE9EF)
  297. ("\\(<!--\\)" #XE9F0)
  298. ("\\(<--\\)" #XE9F1)
  299. ("\\(<~<\\)" #XE9F2)
  300. ("\\(<==>\\)" #XE9F3)
  301. ("\\(==<\\)" #XEA00)
  302. ("[^/!<=>]\\(==\\)[^><=]" #XEA01)
  303. ("\\(===\\)" #XEA02)
  304. ("[^<]\\(==>\\)" #XEA03)
  305. ("[^=:<]\\(=>\\)" #XEA04)
  306. ("\\(=~\\)" #XEA05)
  307. ("\\(=>>\\)" #XEA06)
  308. ("\\(=/=\\)" #XEA07)
  309. ("[^!]\\(≡≡\\)" #XEA10)
  310. ("\\(≡≡≡\\)" #XEA11)
  311. ("\\(≡:≡\\)" #XEA12)
  312. ("[^>]\\(>-\\)" #XEA20)
  313. ("\\(>=\\)" #XEA21)
  314. ("[^=-]\\(>>\\)" #XEA22)
  315. ("\\(>>-\\)" #XEA23)
  316. ("\\(>==\\)" #XEA24)
  317. ("\\(>>>\\)" #XEA25)
  318. ("\\(>=>\\)" #XEA26)
  319. ("\\(>>\\^\\)" #XEA27)
  320. ("\\(\\?\\?\\)" #XEA40)
  321. ("\\(\\?~\\)" #XEA41)
  322. ("\\(\\?=\\)" #XEA42)
  323. ("\\(\\?>\\)" #XEA43)
  324. ("\\(<\\?>\\)" #XE9DA)
  325. ("\\(\\?\\?\\?\\)" #XEA44)
  326. ("\\(\\^=\\)" #XEA48)
  327. ("\\(\\^\\.\\)" #XEA49)
  328. ("\\(\\^\\?\\)" #XEA4A)
  329. ("\\(\\^\\.\\.\\)" #XEA4B)
  330. ("\\(\\^<<\\)" #XEA4C)
  331. ("\\(\\^>\\)" #XEA4E)
  332. ("\\(\\^>>\\)" #XEA4D)
  333. ("\\(<\\^>\\)" #XE9D8)
  334. ("[^\\\\]\\(\\\\\\\\\\)" #XEA50)
  335. ("[^<]\\(\\\\>\\)" #XEA51)
  336. ("\\(<\\\\>\\)" #XE9DD)
  337. ("\\(\\\\/-\\)" #XEA52)
  338. ("\\(@>\\)" #XEA57)
  339. ("\\(<@>\\)" #XE9D5)
  340. ("\\(|=\\)" #XEA60)
  341. ("\\(||\\)" #XEA61)
  342. ("[^<]\\(|>\\)" #XEA62)
  343. ("\\(|||\\)" #XEA63)
  344. ("\\(|\\+|\\)" #XEA64)
  345. ("\\(|->\\)" #XEA65)
  346. ("\\(|-->\\)" #XEA66)
  347. ("\\(|=>\\)" #XEA67)
  348. ("\\(|==>\\)" #XEA68)
  349. ("\\(~=\\)" #XEA70)
  350. ("[^~<]\\(~>\\)" #XEA71)
  351. ("\\(~~>\\)" #XEA72)
  352. ("\\(~>>\\)" #XEA73)
  353. ("[^<]\\(\">\\)" #XEA90)
  354. )))
  355. (defun add-pragmatapro-symbol-keywords ()
  356. "Add the symbols to font-lock."
  357. (font-lock-add-keywords nil pragmatapro-fontlock-keywords-alist))
  358. (add-hook 'prog-mode-hook
  359. #'add-pragmatapro-symbol-keywords)
  360. (add-hook 'emacs-lisp-mode-hook
  361. #'add-pragmatapro-symbol-keywords)
  362. (provide '07-custom-ligatures)
  363. ;;; 07-custom-ligatures.el ends here