Add generic font install function for pretty-code

This commit is contained in:
James Ravn 2020-02-25 21:39:37 +00:00
parent 8ee2e327a0
commit 41140787a1
No known key found for this signature in database
GPG key ID: 52C372C72159D6EE
2 changed files with 43 additions and 26 deletions

View file

@ -95,3 +95,38 @@ Otherwise it builds `prettify-code-symbols-alist' according to
(load! "+hasklig"))
((featurep! +pragmata-pro)
(load! "+pragmata-pro")))
(defun +pretty-code--install-font (prefix name url-format fonts-alist)
"Install fonts to the local system.
If PREFIX is nil, will prompt whether or not to download. NAME is informational only.
URL-FORMAT is a format string that should be a url and have a single %s, which is expanded
for each font in FONTS-ALIST. FONTS-ALIST should be the filename of each font. It is used
as the source and destination filename.
"
(when (or prefix (yes-or-no-p
(format "This will download and install the %s fonts, are you sure you want to do this?" name)))
(let* ((font-dest (cl-case window-system
;; Linux
(x (concat (or (getenv "XDG_DATA_HOME")
(concat (getenv "HOME") "/.local/share"))
"/fonts/"))
;; MacOS
(mac (concat (getenv "HOME") "/Library/Fonts/" ))
(ns (concat (getenv "HOME") "/Library/Fonts/" ))))
(known-dest? (stringp font-dest))
(font-dest (or font-dest (read-directory-name "Font installation directory: " "~/"))))
(unless (file-directory-p font-dest) (mkdir font-dest t))
(dolist (font fonts-alist)
(url-copy-file (format url-format font) (expand-file-name font font-dest) t))
(when known-dest?
(message "Font downloaded, updating font cache... <fc-cache -f -v> ")
(shell-command-to-string (format "fc-cache -f -v")))
(message "Successfully %s `%s' fonts to `%s'!"
(if known-dest? "installed" "downloaded")
name
font-dest)))
)