[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
`with-temp-buffer', `with-output-to-string': `with-temp-buffer-to-string
From: |
Garreau\, Alexandre |
Subject: |
`with-temp-buffer', `with-output-to-string': `with-temp-buffer-to-string' / `with-current-buffer-to-string' [Was: Re: `call-process', to a string] |
Date: |
Mon, 29 Oct 2018 21:37:41 +0100 |
User-agent: |
Gnus (5.13), GNU Emacs 25.1.1 (i686-pc-linux-gnu, GTK+ Version 3.22.11) of 2017-09-15, modified by Debian |
On 2018-10-29 at 21:08, Garreau, Alexandre wrote:
> On 2018-10-29 at 20:54, Garreau, Alexandre wrote:
>> (substring
>> (with-temp-buffer
>> (call-process "xdg-user-dir" nil t nil "DOWNLOAD")
>> (buffer-string))
>> 0 -1)
>>
>> I am not sure this is the simplest way to call a process and get its
>> output as string, without using the shell (there seem to be a
>> shell-command-to-string, but no call-process-to-string, writing another
>> mail about this).
Searching for a better form, I found `with-output-to-string', which, in
name, looks like what I want, but is for standard-output, for when emacs
is ran without a frame I guess.
May I suggest a new form `with-temp-buffer-to-string', inspired from
`with-output-to-string', but for what programs might see as current
buffer:
#+BEGIN_SRC emacs-lisp
(defmacro with-temp-buffer-to-string (&rest body)
"Execute BODY, return the text it sent to current-buffer, as a string."
(declare (indent 0) (debug t))
`(with-temp-buffer
(progn
,@body
(goto-char (point-max))
(when (= ?\n (char-before))
(delete-char -1))
(buffer-string))))
#+END_SRC
Btw, in `with-output-to-string', instead of just using
`generate-new-buffer', it directly does “(get-buffer-create
(generate-new-buffer-name " *string-output*"))”: is there a reason for
that? otherwise it’s just longer and less readable.
- Automatically set eww-download-directory according xdg dir, Garreau\, Alexandre, 2018/10/29
- `call-process', to a string [Was: Re: Automatically set eww-download-directory according xdg dir], Garreau\, Alexandre, 2018/10/29
- `with-temp-buffer', `with-output-to-string': `with-temp-buffer-to-string' / `with-current-buffer-to-string' [Was: Re: `call-process', to a string],
Garreau\, Alexandre <=
- Re: `call-process', to a string [Was: Re: Automatically set eww-download-directory according xdg dir], Basil L. Contovounesios, 2018/10/29
- Re: `call-process', to a string, Garreau\, Alexandre, 2018/10/29
- Re: `call-process', to a string [Was: Re: Automatically set eww-download-directory according xdg dir], Eli Zaretskii, 2018/10/30
- Re: `call-process', to a string, Garreau\, Alexandre, 2018/10/30
- Re: `call-process', to a string, Eli Zaretskii, 2018/10/30
- Re: `call-process', to a string, Garreau\, Alexandre, 2018/10/30
- Re: `call-process', to a string, Eli Zaretskii, 2018/10/30
- `call-process', to a string, Garreau\, Alexandre, 2018/10/30
- Re: `call-process', to a string [Was: Re: Automatically set eww-download-directory according xdg dir], Basil L. Contovounesios, 2018/10/31