[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Maybe we can improve this function call-process-to-string?
From: |
Jean Louis |
Subject: |
Re: Maybe we can improve this function call-process-to-string? |
Date: |
Thu, 8 Apr 2021 18:56:30 +0300 |
User-agent: |
Mutt/2.0.6 (2021-03-06) |
* Eli Zaretskii <eliz@gnu.org> [2021-04-08 16:40]:
> > Date: Thu, 8 Apr 2021 14:53:18 +0300
> > From: Jean Louis <bugs@gnu.support>
> > Cc: help-gnu-emacs@gnu.org
> >
> > > In general, one should avoid strings in Emacs Lisp, because buffer
> > > memory is handled much more efficiently than string memory.
> >
> > I understand the concept, not at all how to practically run a system
> > command and receive it as a string.
>
> Why do you need a string? The string is a means to an end, right?
> What is that end?
Hahaha, I am not sure if you are joking, but of course string is a
mean to an end... funny. Now, I need it for example, to get widht and
height from a image by using system command `identify', sometimes I
will extract GPS coordinate from an image, so I call system commands
from Emacs Lisp that processes bunch of images.
For example, to quickly construct a Markdown hyperlink to the image
below, I enter the Dired and do M-x md-image-hyperlink
/home/data1/protected/public_html/gnu.support/images/1536:
total used in directory 304K available 42.4 GiB
-rw-r--r-- 1 173K Oct 8 2016 2016-10-08-23:12:44.jpg
-rw-r--r-- 1 125K Mar 18 2017 gnu-head-large.jpg
With this result:
[![https://gnu.support/images/1536/gnu-head-large.jpg](https://gnu.support/images/1536/gnu-head-large.jpg
=1536x1024
"https://gnu.support/images/1536/gnu-head-large.jpg")](https://gnu.support/images/1536/gnu-head-large.jpg
"https://gnu.support/images/1536/gnu-head-large.jpg")
That is where `shell-command-to-string' comes handy, and HTML pages
meant for Discount flavor of markdown can be generated.
(defun md-image-hyperlink ()
(interactive)
(let ((files (dired-get-marked-files))
(list '()))
(dolist (file files)
(let* ((small-image (public-html-rest file))
(large-image (replace-regexp-in-string
"/320/\\|/400/\\|/640/\\|/800/" "/1536/" small-image))
(command (format "identify -format '[![%s](%s =%%wx%%h \"%s\")](%s
\"%s\")' '%s'" small-image small-image small-image large-image large-image
file)))
(message "%s" command)
(push (shell-command-to-string command) list)))
(kill-new (with-temp-buffer
(dolist (item list)
(insert item))
(buffer-string)))))
> > Because none of `buffer-substring' nor `buffer-string' can specify the
> > buffer name then I have to switch temporarily to other buffer, get
> > string with `buffer-string' and return back. I was thinking there is
> > some function doing that straight, like (buffer-string BUFFER), but I
> > don't find such.
>
> I suggest to look up with-current-buffer and with-temp-buffer.
I would not know how to get output from system command by using those
functions without using shell-command-to-string or call-process
Jean
- Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Eli Zaretskii, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Eli Zaretskii, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?,
Jean Louis <=
- Re: Maybe we can improve this function call-process-to-string?, Eli Zaretskii, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Eli Zaretskii, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Arthur Miller, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Arthur Miller, 2021/04/08
- Re: Maybe we can improve this function call-process-to-string?, Jean Louis, 2021/04/09
- Re: Maybe we can improve this function call-process-to-string?, tomas, 2021/04/09
Re: Maybe we can improve this function call-process-to-string?, Michael Albinus, 2021/04/08