From b89d1f0a1f2952241671ccd89913d34fe57da6d7 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Fri, 4 Sep 2020 21:06:18 +0100 Subject: Call make-process instead of call-process in scrot.el While attempting to debug why pressing `C-s-s` from an X-window screenshots my entire screen, I switched from `call-process` to `make-process`, which is async. I still haven't debugged the original issue, but I think this is an improvement regardless. --- emacs/.emacs.d/wpc/scrot.el | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'emacs') diff --git a/emacs/.emacs.d/wpc/scrot.el b/emacs/.emacs.d/wpc/scrot.el index 3444238158a4..e7231b44fd95 100644 --- a/emacs/.emacs.d/wpc/scrot.el +++ b/emacs/.emacs.d/wpc/scrot.el @@ -34,33 +34,25 @@ "The format string for the output screenshot file. See scrot's man page for more information.") -(defun scrot-copy-image (path) +(defun scrot--copy-image (path) "Use xclip to copy the image at PATH to the clipboard. This currently only works for PNG files because that's what I'm outputting" (call-process "xclip" nil nil nil "-selection" "clipboard" "-t" "image/png" path) (message (string-format "[scrot.el] Image copied to clipboard!"))) -(defmacro scrot-call (&rest args) - "Call scrot with ARGS." - `(call-process ,scrot-path-to-executable nil nil nil ,@args)) - -(defun scrot-fullscreen () - "Screenshot the entire screen." - (interactive) - (let ((screenshot-path (f-join scrot-screenshot-directory - (ts-format scrot-output-format (ts-now))))) - (scrot-call screenshot-path) - (scrot-copy-image screenshot-path))) - (defun scrot-select () "Click-and-drag to screenshot a region. The output path is copied to the user's clipboard." (interactive) (let ((screenshot-path (f-join scrot-screenshot-directory (ts-format scrot-output-format (ts-now))))) - (scrot-call "--select" screenshot-path) - (scrot-copy-image screenshot-path))) + (make-process + :name "scrot-select" + :command `(,scrot-path-to-executable "--select" ,screenshot-path) + :sentinel (lambda (proc _err) + (when (= 0 (process-exit-status proc)) + (scrot--copy-image screenshot-path)))))) (provide 'scrot) ;;; scrot.el ends here -- cgit 1.4.1