From 4192d87dcdef3976156b51821d2a8db16c63a828 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 7 Mar 2021 00:03:04 -0500 Subject: [PATCH] Redesign doom/info + Focus on the important information and cut down on excess. + Prompt the user to open pastebin.com after copying doom-info to clipboard. + Include timestamp in doom-info. --- core/autoload/debug.el | 159 ++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 80 deletions(-) diff --git a/core/autoload/debug.el b/core/autoload/debug.el index 6507950b8..ff3e5d50b 100644 --- a/core/autoload/debug.el +++ b/core/autoload/debug.el @@ -120,21 +120,26 @@ ready to be pasted in a bug report on github." (regexp-opt (list (user-login-name)) 'words) "$USER" (abbreviate-file-name path))) (defun symlink-path (file) - (format "%s%s" (abbrev-path file) - (if (file-symlink-p file) - (concat " -> " (file-truename file)) - "")))) - `((system - (info . ,(cons (doom-system-distro-version) (sh "uname" "-msr"))) - (shell . ,(abbrev-path shell-file-name)) - (path . ,(mapcar #'abbrev-path exec-path))) - (emacs - (dir . ,(symlink-path doom-emacs-dir)) - (version . ,(delq nil (list emacs-version emacs-repository-version (format-time-string "%b %d, %Y" emacs-build-time)))) - (buildopts . ,system-configuration-options) - (features . ,system-configuration-features) - (traits - . ,(delq + (let ((truefile (file-truename file))) + (format "%s%s" (abbrev-path file) + (if (equal file truefile) "" + (concat " -> " (abbrev-path truefile))))))) + `((generated . ,(format-time-string "%b %d, %Y %H:%M:%S")) + (distro . ,(list (doom-system-distro-version) (sh "uname" "-msr"))) + (emacs . ,(delq + nil (list emacs-version + emacs-repository-branch + (substring (or emacs-repository-version "") 0 9) + (symlink-path doom-emacs-dir)))) + (doom . ,(list doom-version + (sh "git" "log" "-1" "--format=%D %h %ci") + (symlink-path doom-private-dir))) + (shell . ,(abbrev-path shell-file-name)) + (features . ,system-configuration-features) + (traits + . ,(mapcar + #'symbol-name + (delq nil (list (cond ((not doom-interactive-p) 'batch) ((display-graphic-p) 'gui) ('tty)) @@ -157,58 +162,51 @@ ready to be pasted in a bug report on github." ,doom-private-dir) :type 'files :match "\\.elc$") 'byte-compiled-config))))) - (doom - (dir . ,(symlink-path doom-private-dir)) - (version . ,(list doom-version (sh "git" "log" "-1" "--format=%D %h %ci"))) - ,@(when doom-interactive-p - `((font . ,(bound-and-true-p doom-font)) - (theme . ,(bound-and-true-p doom-theme)))) - (modules - ,@(or (cl-loop with cat = nil - for key being the hash-keys of doom-modules - if (or (not cat) - (not (eq cat (car key)))) - do (setq cat (car key)) - and collect cat - collect - (let* ((flags (doom-module-get cat (cdr key) :flags)) - (path (doom-module-get cat (cdr key) :path)) - (module (append (cond ((null path) - (list '&nopath)) - ((file-in-directory-p path doom-private-dir) - (list '&user))) - (if flags - `(,(cdr key) ,@flags) - (list (cdr key)))))) - (if (= (length module) 1) - (car module) - module))) - '("n/a"))) - (packages - ,@(or (condition-case e - (mapcar - #'cdr (doom--collect-forms-in - (doom-path doom-private-dir "packages.el") - "package!")) - (error (format "<%S>" e))) - '("n/a"))) - (unpin - ,@(or (condition-case e - (mapcan #'identity - (mapcar - #'cdr (doom--collect-forms-in - (doom-path doom-private-dir "packages.el") - "unpin!"))) - (error (format "<%S>" e))) - '("n/a"))) - (elpa - ,@(or (condition-case e - (progn - (package-initialize) - (cl-loop for (name . _) in package-alist - collect (format "%s" name))) - (error (format "<%S>" e))) - '("n/a")))))))) + (modules + ,@(or (cl-loop with cat = nil + for key being the hash-keys of doom-modules + if (or (not cat) + (not (eq cat (car key)))) + do (setq cat (car key)) + and collect cat + collect + (let* ((flags (doom-module-get cat (cdr key) :flags)) + (path (doom-module-get cat (cdr key) :path)) + (module (append (cond ((null path) + (list '&nopath)) + ((file-in-directory-p path doom-private-dir) + (list '&user))) + (if flags + `(,(cdr key) ,@flags) + (list (cdr key)))))) + (if (= (length module) 1) + (car module) + module))) + '("n/a"))) + (packages + ,@(or (condition-case e + (mapcar + #'cdr (doom--collect-forms-in + (doom-path doom-private-dir "packages.el") + "package!")) + (error (format "<%S>" e))) + '("n/a"))) + ,@(when-let (unpins (condition-case e + (mapcan #'identity + (mapcar + #'cdr (doom--collect-forms-in + (doom-path doom-private-dir "packages.el") + "unpin!"))) + (error (format "<%S>" e)))) + (cons 'unpin unpins)) + (elpa + ,@(or (condition-case e + (progn + (package-initialize) + (cl-loop for (name . _) in package-alist + collect (format "%s" name))) + (error (format "<%S>" e))) + '("n/a"))))))) ;; @@ -246,21 +244,22 @@ copies it to your clipboard, ready to be pasted into bug reports!" (let ((sexp (prin1-to-string (sexp-at-point)))) (delete-region beg end) (insert sexp)))))) - (insert "```\n") - (dolist (group info) - (insert! "%-8s%-10s %s\n" - ((upcase (symbol-name (car group))) - (caadr group) - (cdadr group))) - (dolist (spec (cddr group)) - (insert! (indent 8 "%-10s %s\n") - ((car spec) (cdr spec))))) - (insert "```\n")) + (dolist (spec info) + (insert! "%11s %s\n" + ((car spec) + (if (listp (cdr spec)) + (mapconcat (lambda (x) (format "%s" x)) + (cdr spec) " ") + (cdr spec)))))) (if (not doom-interactive-p) (print! (buffer-string)) - (pop-to-buffer buffer) - (kill-new (buffer-string)) - (print! (green "Copied your doom info to clipboard")))))) + (with-current-buffer (pop-to-buffer buffer) + (setq buffer-read-only t) + (goto-char (point-min)) + (kill-new (buffer-string)) + (when (y-or-n-p "Your doom-info was copied to the clipboard.\n\nOpen pastebin.com?") + (browse-url "https://pastebin.com"))))))) + ;;;###autoload (defun doom/am-i-secure ()