         (prettify-symbols-mode -1))
       (prettify-symbols-mode +1))))
 
-
-(add-hook 'after-change-major-mode-hook #'+pretty-code-init-pretty-symbols-h)
-
-;;; Automatic font-specific ligatures
-(defvar +prog-ligatures-alist
-  `((?! . ,(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 '("~-" "~=" "~>" "~@" "~~" "~~>"))))
-  "An alist containing all the ligatures used when in a `+prog-ligatures-modes' mode.
-
-The car is the character ASCII number, cdr is a regex which will call `font-shape-gstring'
-when matched.
-
-Because of the underlying code in :ui pretty-code module, the regex should match a string
-starting with the character contained in car.
-
-This variable is used only if you built Emacs with Harfbuzz on a version >= 28")
-
-(defvar +prog-ligatures-modes '(not org-mode)
-  "List of major modes in which ligatures should be enabled.
-
-If t, enable it everywhere. Fundamental mode, and modes derived from special-mode,
-comint-mode, eshell-mode and term-mode are *still* excluded.
-
-If the first element is 'not, enable it in any mode besides what is listed.
-
-If nil, fallback to the prettify-symbols based replacement (add +font features to pretty-code).")
-
 (defun +pretty-code-init-ligatures-h ()
   "Enable ligatures.
 

  "An alist containing a mapping of major modes to its value for
`prettify-symbols-alist'.")


;;
;;; Packages

;;;###package prettify-symbols
;; When you get to the right edge, it goes back to how it normally prints
(setq prettify-symbols-unprettify-at-point 'right-edge)


;;
;;; Bootstrap

(defun +pretty-code--correct-symbol-bounds (ligature-alist)
  "Prepend non-breaking spaces to a ligature.

                (memq major-mode +prog-ligatures-modes)))
      (setq-local composition-function-table composition-ligature-table))))


;;
;;; Bootstrap

(add-hook 'after-change-major-mode-hook #'+pretty-code-init-pretty-symbols-h)

;;;###package prettify-symbols
;; When you get to the right edge, it goes back to how it normally prints
(setq prettify-symbols-unprettify-at-point 'right-edge)

(cond
 ;; The emacs-mac build of Emacs appear to have built-in support for ligatures,
 ;; using the same composition-function-table method
 ;; https://bitbucket.org/mituharu/emacs-mac/src/26c8fd9920db9d34ae8f78bceaec714230824dac/lisp/term/mac-win.el?at=master#lines-345:805
 ;; so use that instead if this module is enabled.
 ((and IS-MAC (fboundp 'mac-auto-operator-composition-mode))
  (mac-auto-operator-composition-mode))

 ;; Harfbuzz builds do not need font-specific ligature support
 ;; if they are above emacs-27
 ((and EMACS28+
       (string-match-p "HARFBUZZ" system-configuration-features)
       +prog-ligatures-modes
       (require 'composite nil t))
  (defvar composition-ligature-table (make-char-table nil))

  (dolist (char-regexp +prog-ligatures-alist)
    (set-char-table-range composition-ligature-table (car char-regexp)
                          `([,(cdr char-regexp) 0 font-shape-gstring])))
  (set-char-table-parent composition-ligature-table composition-function-table)

  (add-hook 'after-change-major-mode-hook #'+pretty-code-init-ligatures-h))

 ;; Font-specific ligature support
 ((featurep! +fira)
  (load! "+fira"))
 ((featurep! +iosevka)
  (load! "+iosevka"))
 ((featurep! +hasklig)
  (load! "+hasklig"))
 ((featurep! +pragmata-pro)
  (load! "+pragmata-pro")))
