diff --git a/modules/ui/pretty-code/config.el b/modules/ui/pretty-code/config.el index c7aa9836c..bcd69562a 100644 --- a/modules/ui/pretty-code/config.el +++ b/modules/ui/pretty-code/config.el @@ -51,34 +51,34 @@ besides what is listed.") ;;; Automatic font-specific ligatures (defvar +prog-ligatures-alist - (eval-when-compile - `((?! . ,(regexp-opt '("!!" "!=" "!=="))) - (?# . ,(regexp-opt '("##" "###" "####" "#(" "#:" "#=" "#?" "#[" "#_" "#_(" "#{"))) - (?$ . ,(regexp-opt '("$>" "$>>"))) - (?% . ,(regexp-opt '("%%" "%%%"))) - (?& . ,(regexp-opt '("&&" "&&&"))) - (?* . ,(regexp-opt '("*" "**" "***" "**/" "*/" "*>" "*)"))) - (?+ . ,(regexp-opt '("+" "++" "+++" "+>" "+:"))) - (?- . ,(regexp-opt '("--" "---" "-->" "--->" "->-" "-<" "-<-" "-<<" "->" "->>" "-}" "-~" "-:" "-|"))) - (?. . ,(regexp-opt '(".-" ".." "..." "..<" ".=" ".>"))) - (?/ . ,(regexp-opt '("/*" "/**" "//" "///" "/=" "/==" "/>"))) - (?: . ,(regexp-opt '(":" "::" ":::" ":=" ":<" ":=" ":>" ":+"))) - (?0 . "0\\(?:\\(x[a-fA-F0-9]\\).?\\)") ; Tries to match the x in 0xDEADBEEF - ;; (?x . ,(regexp-opt '("x"))) ; Also tries to match the x in 0xDEADBEEF - (?\; . ,(regexp-opt '(";;"))) - (?< . ,(regexp-opt '("" "<--->" "" "<<" "<<-" "<<<" "<<=" "<=" "<=<" "<==" "<=>" "<===>" "<>" "<|" "<|>" "<~" "<~~" "<." "<.>" "<..>"))) - (?= . ,(regexp-opt '("=/=" "=:=" "=<<" "==" "===" "==>" "=>" "=>>"))) - (?> . ,(regexp-opt '(">-" ">->" ">:" ">=" ">=>" ">>" ">>-" ">>=" ">>>"))) - (?? . ,(regexp-opt '("??" "?." "?:" "?="))) - (?\[ . ,(regexp-opt '("[]" "[|]" "[|"))) - (?\\ . ,(regexp-opt '("\\\\" "\\\\\\" "\\\\n"))) - (?^ . ,(regexp-opt '("^=" "^=="))) - (?w . ,(regexp-opt '("www" "wwww"))) - (?{ . ,(regexp-opt '("{-" "{|" "{||" "{|}" "{||}"))) - (?| . ,(regexp-opt '("|=" "|>" "||" "||=" "|->" "|=>" "|]" "|}" "|-"))) - (?_ . ,(regexp-opt '("_|_" "__"))) - (?\( . ,(regexp-opt '("(*"))) - (?~ . ,(regexp-opt '("~-" "~=" "~>" "~@" "~~" "~~>"))))) + '((?! . "\\(?:!\\(?:==\\|[!=]\\)\\)") ; (regexp-opt '("!!" "!=" "!==")) + (?# . "\\(?:#\\(?:###?\\|_(\\|[#(:=?[_{]\\)\\)") ; (regexp-opt '("##" "###" "####" "#(" "#:" "#=" "#?" "#[" "#_" "#_(" "#{")) + (?$ . "\\(?:\\$>>?\\)") ; (regexp-opt '("$>" "$>>")) + (?% . "\\(?:%%%?\\)") ; (regexp-opt '("%%" "%%%")) + (?& . "\\(?:&&&?\\)") ; (regexp-opt '("&&" "&&&")) + (?* . "\\(?:\\*\\(?:\\*[*/]\\|[)*/>]\\)?\\)") ; (regexp-opt '("*" "**" "***" "**/" "*/" "*>" "*)")) + (?+ . "\\(?:\\+\\(?:\\+\\+\\|[+:>]\\)?\\)") ; (regexp-opt '("+" "++" "+++" "+>" "+:")) + (?- . "\\(?:-\\(?:-\\(?:->\\|[>-]\\)\\|<[<-]\\|>[>-]\\|[:<>|}~-]\\)\\)") ; (regexp-opt '("--" "---" "-->" "--->" "->-" "-<" "-<-" "-<<" "->" "->>" "-}" "-~" "-:" "-|")) + (?. . "\\(?:\\.\\(?:\\.[.<]\\|[.=>-]\\)\\)") ; (regexp-opt '(".-" ".." "..." "..<" ".=" ".>")) + (?/ . "\\(?:/\\(?:\\*\\*\\|//\\|==\\|[*/=>]\\)\\)") ; (regexp-opt '("/*" "/**" "//" "///" "/=" "/==" "/>")) + (?: . "\\(?::\\(?:::\\|[+:<=>]\\)?\\)") ; (regexp-opt '(":" "::" ":::" ":=" ":<" ":=" ":>" ":+")) + (?\; . ";;") ; (regexp-opt '(";;")) + (?0 . "0\\(?:\\(x[a-fA-F0-9]\\).?\\)") ; Tries to match the x in 0xDEADBEEF + ;; (?x . "x") ; Also tries to match the x in 0xDEADBEEF + ;; (regexp-opt '("" "<--->" "" "<<" "<<-" "<<<" "<<=" "<=" "<=<" "<==" "<=>" "<===>" "<>" "<|" "<|>" "<~" "<~~" "<." "<.>" "<..>")) + (?< . "\\(?:<\\(?:!--\\|\\$>\\|\\*\\(?:\\*?>\\)\\|\\+>\\|-\\(?:-\\(?:->\\|[>-]\\)\\|[>-]\\)\\|\\.\\(?:\\.?>\\)\\|/>\\|<[<=-]\\|=\\(?:==>\\|[<=>]\\)\\||>\\|~~\\|[$*+./<=>|~-]\\)\\)") + (?= . "\\(?:=\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\|[=>]\\)\\)") ; (regexp-opt '("=/=" "=:=" "=<<" "==" "===" "==>" "=>" "=>>")) + (?> . "\\(?:>\\(?:->\\|=>\\|>[=>-]\\|[:=>-]\\)\\)") ; (regexp-opt '(">-" ">->" ">:" ">=" ">=>" ">>" ">>-" ">>=" ">>>")) + (?? . "\\(?:\\?[.:=?]\\)") ; (regexp-opt '("??" "?." "?:" "?=")) + (?\[ . "\\(?:\\[\\(?:|]\\|[]|]\\)\\)") ; (regexp-opt '("[]" "[|]" "[|")) + (?\\ . "\\(?:\\\\\\\\[\\n]?\\)") ; (regexp-opt '("\\\\" "\\\\\\" "\\\\n")) + (?^ . "\\(?:\\^==?\\)") ; (regexp-opt '("^=" "^==")) + (?w . "\\(?:wwww?\\)") ; (regexp-opt '("www" "wwww")) + (?{ . "\\(?:{\\(?:|\\(?:|}\\|[|}]\\)\\|[|-]\\)\\)") ; (regexp-opt '("{-" "{|" "{||" "{|}" "{||}")) + (?| . "\\(?:|\\(?:->\\|=>\\||=\\|[]=>|}-]\\)\\)") ; (regexp-opt '("|=" "|>" "||" "||=" "|->" "|=>" "|]" "|}" "|-")) + (?_ . "\\(?:_\\(?:|?_\\)\\)") ; (regexp-opt '("_|_" "__")) + (?\( . "\\(?:(\\*\\)") ; (regexp-opt '("(*")) + (?~ . "\\(?:~\\(?:~>\\|[=>@~-]\\)\\)")) ; (regexp-opt '("~-" "~=" "~>" "~@" "~~" "~~>")) "An alist of all ligatures used by `+prog-ligatures-modes'. The car is the character ASCII number, cdr is a regex which will call