diff options
author | colin <colin@cicadas.surf> | 2023-03-25 16:44:06 -0700 |
---|---|---|
committer | colin <colin@cicadas.surf> | 2023-03-25 16:44:06 -0700 |
commit | e2c4c4925e5c75b145fdeb94b7ee816657f6eb63 (patch) | |
tree | 0c47f1c027b150eae85a49bf75d1d806b155f210 /fussy.el |
initial commit
Diffstat (limited to 'fussy.el')
-rw-r--r-- | fussy.el | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/fussy.el b/fussy.el new file mode 100644 index 0000000..91882bc --- /dev/null +++ b/fussy.el @@ -0,0 +1,77 @@ +(require 'cl-lib) +(require 'package) + +(defun fussy-is-theme-p (pkg-entry) + (cl-search "-theme" (symbol-name (cl-first pkg-entry)) + :test 'char-equal)) + +(defun fussy-themes-packages () + (cl-remove-if-not 'fussy-is-theme-p package-archive-contents)) + +(defun fussy-screenshot-svg (filename) + "Save a screenshot of the current frame as an SVG image. +Saves to a temp file and puts the filename in the kill ring." + (let* ((tmpfile (make-temp-file "Emacs" nil ".svg")) + (data (x-export-frames nil 'svg))) + (with-temp-file tmpfile + (insert data)) + (copy-file tmpfile filename t))) + +(defun install-all-themes () + (let ((failed-to-install nil)) + (cl-dolist (theme (fussy-themes-packages)) + (condition-case nil + (package-install (cl-first theme)) + (error (push (cl-first theme) failed-to-install)))) + failed-to-install)) + +(defun fussy-generate-all-theme-images (&rest files) + (let ((failed-to-load nil) + (failed-to-generate-image nil) + (failed-to-install (install-all-themes))) + (message "All themes have been loaded") + (cl-dolist (theme (custom-available-themes)) + (message (format "Generating for theme: %s" theme)) + (unwind-protect + (when (condition-case nil + (progn (load-theme theme t) + t) + (error (push theme failed-to-load) + (message "... failed to load!") + nil)) + (dolist (file files) + (let ((svg-file + (concat + (getenv "HOME") "/" + (symbol-name theme) "/" + (file-name-base file) + "." + (file-name-extension file) + ".svg"))) + (make-directory (file-name-directory svg-file) t) + (condition-case nil + (progn + (find-file file) + (delete-other-windows) + (fussy-screenshot-svg svg-file)) + (error (push (cons theme file) failed-to-generate-image))))))) + (disable-theme theme)) + (with-temp-file (concat (getenv "HOME") "/" "errors.el") + (insert (prin1-to-string + (list :load-errors failed-to-load + :generation-errors failed-to-generate-image + :install-errors failed-to-install)))) + (message "FINISHED GENERATING THEME IMAGES"))) + +(add-to-list 'package-archives + '("melpa" . "https://melpa.org/packages/") t) + +(package-initialize) +(package-refresh-contents) + + + +(fussy-generate-all-theme-images + "/home/colin/projects/LearnCPP/chapter1/hello_world/hello.cpp" + "/home/colin/projects/fussy/fussy.el" + "/home/colin/projects/INACTIVE/nsa/nsa.py") |