diff options
author | William Carroll <wpcarro@gmail.com> | 2020-09-04T20·06+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-09-04T20·06+0100 |
commit | b89d1f0a1f2952241671ccd89913d34fe57da6d7 (patch) | |
tree | 6e734cf64e6bef84e6746e130b51d8f0feec0494 /emacs/.emacs.d | |
parent | 4763c7ca45f94e82f450b601ac077bc9972302e8 (diff) |
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.
Diffstat (limited to 'emacs/.emacs.d')
-rw-r--r-- | emacs/.emacs.d/wpc/scrot.el | 22 |
1 files changed, 7 insertions, 15 deletions
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 |