diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-08-15 22:44:16 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2020-08-15 22:44:16 -0400 |
commit | 8255eb526f53d9e4532cfedb8de25f39365f99bc (patch) | |
tree | b76bbb8637abd849a0e2cbe0b2113eb27dcf9738 /lisp/net/eudc-bob.el | |
parent | 4bb2f395912e6b99aef79d3891b98ff71024ee2b (diff) | |
download | emacs-8255eb526f53d9e4532cfedb8de25f39365f99bc.tar.gz |
* lisp/net/eudc-bob.el (eudc-bob-pipe-object-to-external-program): Simplify
Use `with-temp-buffer`.
Diffstat (limited to 'lisp/net/eudc-bob.el')
-rw-r--r-- | lisp/net/eudc-bob.el | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el index 1d7005bb844..bb6682520ae 100644 --- a/lisp/net/eudc-bob.el +++ b/lisp/net/eudc-bob.el @@ -230,26 +230,20 @@ display a button." (coding-system-for-write 'binary)) ;Inhibit EOL conversion. (write-region data nil filename))) -(defun eudc-bob-pipe-object-to-external-program () +(defun eudc-bob-pipe-object-to-external-program (program) "Pipe the object data of the button at point to an external program." - (interactive) + (interactive (list (completing-read "Viewer: " eudc-external-viewers))) (let ((data (eudc-bob-get-overlay-prop 'object-data)) - (buffer (generate-new-buffer "*eudc-tmp*")) - program - viewer) - (condition-case nil - (save-excursion - (set-buffer-file-coding-system 'binary) - (set-buffer buffer) - (insert data) - (setq program (completing-read "Viewer: " eudc-external-viewers)) - (if (setq viewer (assoc program eudc-external-viewers)) - (call-process-region (point-min) (point-max) - (car (cdr viewer)) - (cdr (cdr viewer))) - (call-process-region (point-min) (point-max) program))) - (error - (kill-buffer buffer))))) + (viewer (assoc program eudc-external-viewers))) + (with-temp-buffer + (set-buffer-multibyte nil) + (insert data) + (let ((coding-system-for-write 'binary)) ;Inhibit EOL conversion + (if viewer + (call-process-region (point-min) (point-max) + (car (cdr viewer)) + (cdr (cdr viewer))) + (call-process-region (point-min) (point-max) program)))))) (defun eudc-bob-menu () "Retrieve the menu attached to a binary object." |