Move iosevka changes into pretty-code/autoload
This commit is contained in:
parent
3a257cfc56
commit
2e15387999
3 changed files with 53 additions and 52 deletions
52
modules/ui/pretty-code/autoload/iosevka.el
Normal file
52
modules/ui/pretty-code/autoload/iosevka.el
Normal file
|
@ -0,0 +1,52 @@
|
|||
;;; ui/pretty-code/autoload/iosevka.el -*- lexical-binding: t; -*-
|
||||
|
||||
(defvar +pretty-code--iosevka-font-names
|
||||
'(
|
||||
"iosevka-custom-lightoblique.ttf"
|
||||
"iosevka-custom-thinoblique.ttf"
|
||||
"iosevka-custom-mediumitalic.ttf"
|
||||
"iosevka-custom-light.ttf"
|
||||
"iosevka-custom-heavy.ttf"
|
||||
"iosevka-custom-bolditalic.ttf"
|
||||
"iosevka-custom-bold.ttf"
|
||||
"iosevka-custom-lightitalic.ttf"
|
||||
"iosevka-custom-thin.ttf"
|
||||
"iosevka-custom-extralight.ttf"
|
||||
"iosevka-custom-oblique.ttf"
|
||||
"iosevka-custom-italic.ttf"
|
||||
"iosevka-custom-heavyoblique.ttf"
|
||||
"iosevka-custom-heavyitalic.ttf"
|
||||
"iosevka-custom-extralightitalic.ttf"
|
||||
"iosevka-custom-thinitalic.ttf"
|
||||
"iosevka-custom-medium.ttf"
|
||||
"iosevka-custom-mediumoblique.ttf"
|
||||
"iosevka-custom-extralightoblique.ttf"
|
||||
"iosevka-custom-boldoblique.ttf"
|
||||
"iosevka-custom-regular.ttf"))
|
||||
|
||||
(defun +pretty-code/install-iosevka-font (&optional pfx)
|
||||
"Helper function to download and install Iosevka font based on OS.
|
||||
When PFX is non-nil, ignore the prompt and just install"
|
||||
(interactive "P")
|
||||
(when (or pfx (yes-or-no-p "This will download and install the Iosevka fonts, are you sure you want to do this?"))
|
||||
(let* ((url-format "https://github.com/jsravn/iosevka-emacs/raw/master/%s")
|
||||
(font-dest (cl-case window-system
|
||||
(x (concat (or (getenv "XDG_DATA_HOME") ;; Default Linux install directories
|
||||
(concat (getenv "HOME") "/.local/share"))
|
||||
"/fonts/"))
|
||||
(mac (concat (getenv "HOME") "/Library/Fonts/" ))
|
||||
(ns (concat (getenv "HOME") "/Library/Fonts/" )))) ;; Default MacOS install directory
|
||||
(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 +pretty-code--iosevka-font-names)
|
||||
(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 `Iosevka' fonts to `%s'!"
|
||||
(if known-dest? "installed" "downloaded")
|
||||
font-dest))))
|
51
modules/ui/pretty-code/autoload/pretty-code.el
Normal file
51
modules/ui/pretty-code/autoload/pretty-code.el
Normal file
|
@ -0,0 +1,51 @@
|
|||
;;; ui/pretty-code/autoload/pretty-code.el -*- lexical-binding: t; -*-
|
||||
|
||||
;;;###autoload
|
||||
(defvar +pretty-code-symbols-alist '((t))
|
||||
"An alist containing a mapping of major modes to its value for
|
||||
`prettify-symbols-alist'.")
|
||||
|
||||
;;;###autodef
|
||||
(defun set-pretty-symbols! (modes &rest plist)
|
||||
"Associates string patterns with icons in certain major-modes.
|
||||
|
||||
MODES is a major mode symbol or a list of them.
|
||||
PLIST is a property list whose keys must match keys in `+pretty-code-symbols',
|
||||
and whose values are strings representing the text to be replaced with that
|
||||
symbol. If the car of PLIST is nil, then unset any pretty symbols previously
|
||||
defined for MODES.
|
||||
|
||||
This function accepts one special property:
|
||||
|
||||
:alist ALIST
|
||||
Appends ALIST to `prettify-symbols-alist' literally, without mapping text to
|
||||
`+pretty-code-symbols'.
|
||||
|
||||
For example, the rule for emacs-lisp-mode is very simple:
|
||||
|
||||
(set-pretty-symbols! 'emacs-lisp-mode
|
||||
:lambda \"lambda\")
|
||||
|
||||
This will replace any instances of \"lambda\" in emacs-lisp-mode with the symbol
|
||||
assicated with :lambda in `+pretty-code-symbols'.
|
||||
|
||||
Pretty symbols can be unset for emacs-lisp-mode with:
|
||||
|
||||
(set-pretty-symbols! 'emacs-lisp-mode nil)"
|
||||
(declare (indent defun))
|
||||
(if (null (car-safe plist))
|
||||
(dolist (mode (doom-enlist modes))
|
||||
(assq-delete-all mode +pretty-code-symbols-alist))
|
||||
(let (results)
|
||||
(while plist
|
||||
(let ((key (pop plist)))
|
||||
(if (eq key :alist)
|
||||
(prependq! results (pop plist))
|
||||
(when-let (char (plist-get +pretty-code-symbols key))
|
||||
(push (cons (pop plist) char) results)))))
|
||||
(dolist (mode (doom-enlist modes))
|
||||
(setf (alist-get mode +pretty-code-symbols-alist)
|
||||
(if-let (old-results (alist-get mode +pretty-code-symbols-alist))
|
||||
(dolist (cell results old-results)
|
||||
(setf (alist-get (car cell) old-results) (cdr cell)))
|
||||
results))))))
|
Loading…
Add table
Add a link
Reference in a new issue