unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Xah <xahlee@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: starting an external command from emacs
Date: Thu, 13 Nov 2008 07:50:33 -0800 (PST)	[thread overview]
Message-ID: <3d16ac18-967c-4511-8c9c-9a80c40c3d8e@x16g2000prn.googlegroups.com> (raw)
In-Reply-To: mailman.201.1226528857.26697.help-gnu-emacs@gnu.org

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/

  parent reply	other threads:[~2008-11-13 15:50 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.201.1226528857.26697.help-gnu-emacs@gnu.org>
2008-11-12 23:08 ` starting an external command from emacs Dan Espen
2008-11-13  3:48   ` Matt Price
     [not found]   ` <mailman.217.1226563070.26697.help-gnu-emacs@gnu.org>
2008-11-13 13:54     ` Dan Espen
2008-11-13 15:50 ` Xah [this message]
2008-11-14 13:24   ` break a chunk of text into a list of lines Matt Price
2008-11-14 15:33   ` starting an external command from emacs Matt Price
     [not found]   ` <mailman.365.1226676836.26697.help-gnu-emacs@gnu.org>
2008-11-14 19:43     ` Xah
2008-11-14 20:31     ` Andreas Politz
     [not found]   ` <mailman.359.1226672766.26697.help-gnu-emacs@gnu.org>
2008-11-14 19:33     ` break a chunk of text into a list of lines Xah
2008-11-14 20:43     ` Andreas Politz
2008-11-15 16:35       ` interactive function: generate tab-completion list with another function Matt Price
2008-11-16  3:42         ` syntax: anonymous vs. named functions Matt Price
2008-11-16  8:01           ` Drew Adams
2008-11-16 15:48             ` Matt Price
2008-11-17  1:06               ` Drew Adams
     [not found]               ` <mailman.552.1226883997.26697.help-gnu-emacs@gnu.org>
2008-11-17  8:08                 ` Andreas Politz
2008-11-12 19:59 starting an external command from emacs Matt Price
2008-11-13  0:17 ` Andy Stewart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3d16ac18-967c-4511-8c9c-9a80c40c3d8e@x16g2000prn.googlegroups.com \
    --to=xahlee@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).