emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 8255eb5: * lisp/net/eudc-bob.el (eudc-bob-pipe-object-to-external


From: Stefan Monnier
Subject: master 8255eb5: * lisp/net/eudc-bob.el (eudc-bob-pipe-object-to-external-program): Simplify
Date: Sat, 15 Aug 2020 22:44:21 -0400 (EDT)

branch: master
commit 8255eb526f53d9e4532cfedb8de25f39365f99bc
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * lisp/net/eudc-bob.el (eudc-bob-pipe-object-to-external-program): Simplify
    
    Use `with-temp-buffer`.
---
 lisp/net/eudc-bob.el | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el
index 1d7005b..bb66825 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."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]