;;; theme-settings.el --- Theme settings  -*- mode: emacs-lisp; lexical-binding: t -*-

;;; Commentary:

;; Requirements:
;;   spacemacs-theme https://github.com/nashamri/spacemacs-theme
;;   emojify https://melpa.org/#/emojify
;;   Fonts:
;;     Source Han Mono (debian fonts-noto-cjk-extra)
;;     Asana Math (debian texlive-fonts-extra)

;;; Code:
(use-package my-theme
  :config
  (setq spacemacs-theme-comment-bg nil)
  (load-theme 'spacemacs-dark t)
  (load-theme 'my t))

(use-package my-tool-bar
  :config
  (my-tool-bar-mode 1))

;; Test char and monospace:
;; 1234567890abcdefghijklmnopqrstuvwxyz [] () :;,. !@#$^&*
;; 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ {} <> "'`  ~-_/|\?
;; ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ    FULLWIDTH LATIN SMALL LETTER X
;; ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ    FULLWIDTH LATIN CAPITAL LETTER X
;; ⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇             PARENTHESIZED DIGIT X, PARENTHESIZED NUMBER X
;; ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵    PARENTHESIZED LATIN SMALL LETTER X
;; 🄐🄑🄒🄓🄔🄕🄖🄗🄘🄙🄚🄛🄜🄝🄞🄟🄠🄡🄢🄣🄤🄥🄦🄧🄨🄩    PARENTHESIZED LATIN CAPITAL LETTER X
;; ①②③④⑤⑥⑦⑧⑨⓪　⓵⓶⓷⓸⓹⓺⓻⓼⓽             CIRCLED DIGIT X, DOUBLE CIRCLED DIGIT ONE
;; ❶❷❸❹❺❻❼❽❾　　➊➋➌➍➎➏➐➑➒🄌            DINGBAT NEGATIVE CIRCLED DIGIT X, DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT X
;; ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ    CIRCLED LATIN SMALL LETTER X
;; ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ    CIRCLED LATIN CAPITAL LETTER X
;; 🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩    NEGATIVE CIRCLED LATIN CAPITAL LETTER X
;; 🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉    SQUARED LATIN CAPITAL LETTER X
;; 🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇🆈🆉 🆊    NEGATIVE SQUARED LATIN CAPITAL LETTER X
;; 𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃            MATHEMATICAL BOLD SCRIPT SMALL X
;; 𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩         MATHEMATICAL BOLD SCRIPT CAPITAL X
;; ✈↵＃↹⏎⇤⇥␣↑↓←→ ☐☑ ⃝⃞⃟⃠ ⦾⦿⧇⧈
;; :rage::hamburger:
;; ◉○✸✿ 
;; box drawing alignment tests:                                          █
;;                                                                       ▉
;;   ╔══╦══╗  ┌──┬──┐  ╭──┬──╮  ╭──┬──╮  ┏━━┳━━┓  ┎┒┏┑   ╷  ╻ ┏┯┓ ┌┰┐    ▊ ╱╲╱╲╳╳╳
;;   ║┌─╨─┐║  │╔═╧═╗│  │╒═╪═╕│  │╓─╁─╖│  ┃┌─╂─┐┃  ┗╃╄┙  ╶┼╴╺╋╸┠┼┨ ┝╋┥    ▋ ╲╱╲╱╳╳╳
;;   ║│╲ ╱│║  │║   ║│  ││ │ ││  │║ ┃ ║│  ┃│ ╿ │┃  ┍╅╆┓   ╵  ╹ ┗┷┛ └┸┘    ▌ ╱╲╱╲╳╳╳
;;   ╠╡ ╳ ╞╣  ├╢   ╟┤  ├┼─┼─┼┤  ├╫─╂─╫┤  ┣┿╾┼╼┿┫  ┕┛┖┚     ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳
;;   ║│╱ ╲│║  │║   ║│  ││ │ ││  │║ ┃ ║│  ┃│ ╽ │┃  ░░▒▒▓▓██ ┊  ┆ ╎ ╏  ┇ ┋ ▎
;;   ║└─╥─┘║  │╚═╤═╝│  │╘═╪═╛│  │╙─╀─╜│  ┃└─╂─┘┃  ░░▒▒▓▓██ ┊  ┆ ╎ ╏  ┇ ┋ ▏
;;   ╚══╩══╝  └──┴──┘  ╰──┴──╯  ╰──┴──╯  ┗━━┻━━┛           └╌╌┘ ╎ ┗╍╍┛ ┋  ▁▂▃▄▅▆▇█
;; see M-x describe-char

(cond
 ((find-font (font-spec :family "FiraCode Nerd Font"))
  (set-face-font 'default (font-spec :family "FiraCode Nerd Font")))
 ((find-font (font-spec :family "DejaVu Sans Mono"))
  (set-frame-font (font-spec :family "DejaVu Sans Mono"))) )

;; (Set-fontset-font FONTSET CHARACTERS FONT-SPEC &optional FRAME ADD)
;; CHARACTERS see `script-representative-chars' and
;; ‘list-character-sets’ and ‘list-charset-chars’ for the list of
;; character sets and their characters.
;; (list-charset-chars 'unicode-bmp)
;; defind by all the icons?
;; (set-fontset-font t '(#x2600 . #x27bf) (font-spec :family "D2CodingLigature Nerd Font"))
;; (set-fontset-font t '(#xe000 . #xeea0) (font-spec :family "icons-in-terminal") nil 'prepend)
;;                  '(#xeea1 . #xf1ff) "FiraCode Nerd Font"
;; (set-fontset-font t '(#xf200 . #xf3ff) (font-spec :family "Font Awesome 6 Free"))   ;; #xf3xx wild mix
;; (set-fontset-font t '(#xf400 . #xfd46) (font-spec :family "MesloLGS NF"))

;; (setq use-default-font-for-symbols t)
;; (setq use-default-font-for-symbols nil)  ;; t use default face, nil use fontset

;; see `fontset-alias-alist'
;; (fontset-name-p "fontset-default")
;; (fontset-name-p "fontset-standard")
;; (cond
;;  ((find-font (font-spec :name "Iosevka Nerd Font"))
;;   (set-frame-font (font-spec :name "Iosevka Nerd Font" :size 13)))
;;  ((find-font (font-spec :name "Source Code Pro medium"))
;;   (set-frame-font (font-spec :name "Source Code Pro medium" :size 13)))
;;  ((find-font (font-spec :name "DejaVu Sans Mono"))
;;   (set-frame-font (font-spec :name "DejaVu Sans Mono" :size 13)))
;;  ((find-font (font-spec :name "Noto Sans Mono"))                      ;; parentheses moving
;;   (set-frame-font (font-spec :name "Noto Sans Mono" :size 13)))
;;  ((find-font (font-spec :name "Source Han Mono"))
;;   (set-frame-font (font-spec :name "Source Han Mono" :size 12)))
;;  ((find-font (font-spec :name "inconsolata"))
;;   (set-frame-font (font-spec :name "inconsolata" :size 16)))
;;  ((find-font (font-spec :name "Lucida Console"))
;;   (set-frame-font "Lucida Console-10"))
;;  ((find-font (font-spec :name "courier"))                             ;; is breathing if underline is displayed dynamically
;;   (set-frame-font (font-spec :name "courier" :size 14))))

(use-package nerd-icons
  :defer t
  ;; example usage
  ;; - Inserts an icon for Emacs Lisp
  ;;   (insert (nerd-icons-icon-for-file "init.el"))
  ;; - Inserts a Gitlab icon
  ;;   (insert (nerd-icons-faicon "nf-fa-gitlab"))
  ;; :config
  ;; The Nerd Font you want to use in GUI
  ;; "Symbols Nerd Font Mono" is the default and is recommended
  ;; but you can use any other Nerd Font if you want
  ;; (setq nerd-icons-font-family "Symbols Nerd Font Mono")
  ;; (nerd-icons-set-font)
  )

(use-package emojify
  :if window-system
  :commands emojify-mode
  ;; :hook (after-init . global-emojify-mode)
  :init
  (setq emojify-emojis-dir (concat user-emacs-directory ".cache/emojify")))

(provide 'theme-settings)
;;; theme-settings.el ends here
