From e2c4c4925e5c75b145fdeb94b7ee816657f6eb63 Mon Sep 17 00:00:00 2001 From: colin Date: Sat, 25 Mar 2023 16:44:06 -0700 Subject: initial commit --- fussy.el | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 fussy.el (limited to 'fussy.el') 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") -- cgit v1.2.3