help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: starting an external command from emacs


From: Xah
Subject: Re: starting an external command from emacs
Date: Thu, 13 Nov 2008 07:50:33 -0800 (PST)
User-agent: G2/1.0

On Nov 12, 11:59 am, Matt Price <matt.pr...@utoronto.ca> wrote:
> hi,
>
> i'm a not-especially-technical person who uses emacs as a
> straightforward text editor; in fact i'm experimenting with living
> inside emacs most of the time on my main laptop, largely to eliminate
> distractions while i'm writing.  however, some significant fraction of
> the stuff i write is intended to be emailed away.  I'd like to do two
> things:
>
> (1) write a function that takes the contents of the current buffer and
> inserts it into a message;
> (2) use an external script to query an already-existing contacts
> database (for me it's evolution or gmail), and pass that address on to
> the to-header of the resultant message.
>
> (2) seemed difficult to me.  so what i'm trying right now is to write a
> function that invokes mutt with an address string, then, within mutt,
> use emacsclient as my editor, post-mode as my mode, and insert the text
> into the message body.  This is what i have so far:
>
> (defun start-mutt-with-this-buffer-contents (address)
>         (mark-whole-buffer)
>         (kill-ring-save) ;; ok this needs a beginning and end but i don't 
> know how to do that
>         (interactive "M") ;; i think that's right
>         (set-buffer (apply 'make-term "Mutt" "mutt" nil (list address)))
>         (switch-to-buffer "*Mutt*")
> ;; need some kind of "wait for mutt to start composing" thing here
>         (post-goto-body)
>         (yank)
> )
>
> the problem with this right now is that the (yank) occurs too early, and
> the yanked text appears in the *Mutt* window, instead of the *Composing*
> window where i want it to appear.  is there a way to tell emacs to wait
> on mutt till the interactive command is finished, then switch tothe
> composing buffer and paste the text in there?  or failing that -- how
> might i query an external database from within emacs?  if i could do
> that, then i guess i could use one of the many already-existing emacs
> mail modes to actually send the message, and provide it with the the
> query result as a to-address.  i have, for instance, a couple of python
> scripts that return a sequence of lines, one email address per line --
> these are designed for use with mutt -- i guess one could put them into
> some kind of minibuffer that would then feed the appropriate choice back
> to an emacs function.  i just don't know how to do that kind of stuff
> myself.
>
> Thanks in advance for your help!!

Can you make your question into one specific question?

if you can make just one specific question, as much as possible to
your problem, it's likely to get much useful replies.

from scanning several replies, here's what i think might be helpful.

i used vm and rmail from about 1999 to 2000. vm was much feature rich
than rmail, and i suppose it still is. I have tried gnus during the
time but find it hard to learn. (i've also used mutt, unix command
line mail, mh, pine, in the past 10 years, typically each i have used
for a few months. I've stopped using any text based email client since
about 2003.)

if you want to write elisp to call some other script and process the
result, it's fairly easy. If you can be specific about what command
you want to call and how you want to parse the result, we can help
better.

The following tutorial will probably help:

• Elisp Wrapper For Perl Scripts
http://xahlee.org/emacs/elisp_perl_wrapper.html
(you can use your existing knowledge of a scripting lang and turn them
into elisp command)

• Elisp Lesson: Writing image-linkify Function
http://xahlee.org/emacs/elisp_image_tag.html
(contains example of calling external script and process its result)

  Xah
∑ http://xahlee.org/

reply via email to

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