all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* How to pipe text or load a file directly into mail-mode?
@ 2006-05-03 11:29 Adam Funk
  2006-05-03 14:26 ` Giorgos Keramidas
                   ` (2 more replies)
  0 siblings, 3 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-03 11:29 UTC (permalink / raw)


I'd like the output of a Perl program to end up in an Emacs mail-mode
buffer, ready to proofread, edit and then send with C-c C-c.  I don't
mind whether my program

1. pipes the output to an emacs command, or

2. saves the output in a temp file and opens it with an emacs command.

Which is easier for the emacs command to handle (I expect 2)?

What command-line arguments to emacs do I need for this to work?

Does the program's output (emacs's input) need to be formatted in the
normal way for a mail message (with a blank line after the headers) or
the way it shows up in the Emacs mail buffer (with "--text follows
this line--" after the headers)?

Thanks,
Adam

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 11:29 How to pipe text or load a file directly into mail-mode? Adam Funk
@ 2006-05-03 14:26 ` Giorgos Keramidas
  2006-05-03 15:05   ` Adam Funk
  2006-05-03 20:35 ` Ralf Fassel
  2006-05-09 11:00 ` Adam Funk
  2 siblings, 1 reply; 28+ messages in thread
From: Giorgos Keramidas @ 2006-05-03 14:26 UTC (permalink / raw)


On Wed, 3 May 2006 12:29:03 +0100, Adam Funk <a24061@yahoo.com> wrote:
> I'd like the output of a Perl program to end up in an Emacs mail-mode
> buffer, ready to proofread, edit and then send with C-c C-c.  I don't
> mind whether my program
>
> 1. pipes the output to an emacs command, or
>
> 2. saves the output in a temp file and opens it with an emacs command.

One way to do this is:

    - Start composing your message

    - Then use:

        C-u M-x shell-command RET perl /foo/script.pl RET

      to run the Perl script.

This should put the output of the script in the mail buffer, starting at
the point location.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 14:26 ` Giorgos Keramidas
@ 2006-05-03 15:05   ` Adam Funk
  2006-05-03 18:16     ` Giorgos Keramidas
  0 siblings, 1 reply; 28+ messages in thread
From: Adam Funk @ 2006-05-03 15:05 UTC (permalink / raw)


On 2006-05-03, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
> On Wed, 3 May 2006 12:29:03 +0100, Adam Funk <a24061@yahoo.com> wrote:
>> I'd like the output of a Perl program to end up in an Emacs mail-mode
>> buffer, ready to proofread, edit and then send with C-c C-c.  I don't
>> mind whether my program
>>
>> 1. pipes the output to an emacs command, or
>>
>> 2. saves the output in a temp file and opens it with an emacs command.

I forgot to make something clear: emacs is *not* running when the Perl
program starts.  The Perl program generates the unedited message and
then launches emacs.

> One way to do this is:
>
>     - Start composing your message
>
>     - Then use:
>
>         C-u M-x shell-command RET perl /foo/script.pl RET
>
>       to run the Perl script.
>
> This should put the output of the script in the mail buffer, starting at
> the point location.

On the other hand, I'll see if I can do it this way.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 15:05   ` Adam Funk
@ 2006-05-03 18:16     ` Giorgos Keramidas
  2006-05-03 19:05       ` Adam Funk
  0 siblings, 1 reply; 28+ messages in thread
From: Giorgos Keramidas @ 2006-05-03 18:16 UTC (permalink / raw)


On Wed, 3 May 2006 16:05:54 +0100, Adam Funk <a24061@yahoo.com> wrote:
> On 2006-05-03, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
>> On Wed, 3 May 2006 12:29:03 +0100, Adam Funk <a24061@yahoo.com> wrote:
>>> I'd like the output of a Perl program to end up in an Emacs mail-mode
>>> buffer, ready to proofread, edit and then send with C-c C-c.  I don't
>>> mind whether my program
>>>
>>> 1. pipes the output to an emacs command, or
>>>
>>> 2. saves the output in a temp file and opens it with an emacs command.
>
> I forgot to make something clear: emacs is *not* running when the Perl
> program starts.  The Perl program generates the unedited message and
> then launches emacs.

Oh!  I misunderstood you then.  Sorry.

This is kind of backwards.  I usually let Emacs start other programs as
inferior processes, instead of the other way around.  Perhaps someone
more experienced with Emacs can help you with this (i.e. you could write
a function that can be called with:

    perl script.pl | emacs --batch -f foo-function

and let `foo-function' read from the standard input stream.  But I know
far too little to do that myself.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 18:16     ` Giorgos Keramidas
@ 2006-05-03 19:05       ` Adam Funk
  0 siblings, 0 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-03 19:05 UTC (permalink / raw)


On 2006-05-03, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
> On Wed, 3 May 2006 16:05:54 +0100, Adam Funk <a24061@yahoo.com> wrote:
>> On 2006-05-03, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
>>> On Wed, 3 May 2006 12:29:03 +0100, Adam Funk <a24061@yahoo.com> wrote:
>>>> I'd like the output of a Perl program to end up in an Emacs mail-mode
>>>> buffer, ready to proofread, edit and then send with C-c C-c.  I don't
>>>> mind whether my program
>>>>
>>>> 1. pipes the output to an emacs command, or
>>>>
>>>> 2. saves the output in a temp file and opens it with an emacs command.
>>
>> I forgot to make something clear: emacs is *not* running when the Perl
>> program starts.  The Perl program generates the unedited message and
>> then launches emacs.
>
> Oh!  I misunderstood you then.  Sorry.

To me it seemed perfectly obvious what I meant, if you know what I
mean.  That's why I get other people to proofread bigger things!


> This is kind of backwards.  I usually let Emacs start other programs as
> inferior processes, instead of the other way around.  Perhaps someone
> more experienced with Emacs can help you with this (i.e. you could write
> a function that can be called with:
>
>     perl script.pl | emacs --batch -f foo-function
>
> and let `foo-function' read from the standard input stream.  But I know
> far too little to do that myself.

I'll look at from that angle and see if I can come up with something
(but my elisp is really bad).

Thanks.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 11:29 How to pipe text or load a file directly into mail-mode? Adam Funk
  2006-05-03 14:26 ` Giorgos Keramidas
@ 2006-05-03 20:35 ` Ralf Fassel
  2006-05-04  4:24   ` Giorgos Keramidas
  2006-05-09 11:00 ` Adam Funk
  2 siblings, 1 reply; 28+ messages in thread
From: Ralf Fassel @ 2006-05-03 20:35 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
| 2. saves the output in a temp file and opens it with an emacs
|    command.

If you use some well-known extension like ".perl-mail", you could configure
your emacs to load those extensions as mail-mode files:

Add
  (setq auto-mode-alist (cons '("\\.perl-mail\\'" . mail-mode) auto-mode-alist))
to your ~/.emacs.

Then save the temp file to say /tmp/xxx.perl-mail and fire up emacs on that
file via perls system()
   system("emacs /tmp/xxx.perl-mail");

| Does the program's output (emacs's input) need to be formatted in
| the normal way for a mail message (with a blank line after the
| headers) or the way it shows up in the Emacs mail buffer (with
| "--text follows this line--" after the headers)?

The temp file would need to contain what a buffer created via C-x m
usually contains (i.e. the "--text follows this line--" marker and all
necessary headers (To, CC, ...)).

Untested, especially the usage of temp file names in /tmp.

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 20:35 ` Ralf Fassel
@ 2006-05-04  4:24   ` Giorgos Keramidas
  2006-05-04 10:49     ` Adam Funk
  0 siblings, 1 reply; 28+ messages in thread
From: Giorgos Keramidas @ 2006-05-04  4:24 UTC (permalink / raw)


On Wed, 03 May 2006 22:35:03 +0200, Ralf Fassel <ralfixx@gmx.de> wrote:
> * Adam Funk <a24061@yahoo.com>
> | 2. saves the output in a temp file and opens it with an emacs
> |    command.
>
> If you use some well-known extension like ".perl-mail", you
> could configure your emacs to load those extensions as
> mail-mode files:
>
> Add
>
>   (setq auto-mode-alist
>         (cons '("\\.perl-mail\\'" . mail-mode)
>                auto-mode-alist))
>
> to your ~/.emacs.
>
> Then save the temp file to say /tmp/xxx.perl-mail and fire up
> emacs on that file via perls system()
>
>    system("emacs /tmp/xxx.perl-mail");

Ah!  This is a great idea.  You don't even have to use a special
extension for this.  Emacs parses command-line arguments in order,
so you can use:

    system("emacs /tmp/xxxxxx -f mail-mode");

to bring up Emacs, open `/tmp/xxxxxx' and then run `mail-mode' :)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04  4:24   ` Giorgos Keramidas
@ 2006-05-04 10:49     ` Adam Funk
  2006-05-04 13:16       ` Peter Dyballa
                         ` (3 more replies)
  0 siblings, 4 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-04 10:49 UTC (permalink / raw)


[Adding comp.lang.perl.misc because this is now partly a Perl question
 as well as an Emacs question.  I hope this doesn't offend anyone.]


On 2006-05-04, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:

> Ah!  This is a great idea.  You don't even have to use a special
> extension for this.  Emacs parses command-line arguments in order,
> so you can use:
>
>     system("emacs /tmp/xxxxxx -f mail-mode");
>
> to bring up Emacs, open `/tmp/xxxxxx' and then run `mail-mode' :)

Doh!  It's so easy to forget emacs's command-line processing.  

Now I know why 
  $ emacs -f mail-mode foo.mail 
didn't seem to do anything!

I think I'm on the right track now, but I'm having problems with the
fact that the Perl program reads STDIN, processes it and stores the
results in a temp file.  When the Perl program gets to this line:

   my $status = system('emacs', '-nw', $temp_file, '-f mail-mode');

Emacs produces this error:

   standard input is not a tty

and doesn't run.  If I add the --batch option to the emacs command,
emacs runs and quits (it doesn't come up interactively), so that's not
the solution.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 10:49     ` Adam Funk
@ 2006-05-04 13:16       ` Peter Dyballa
  2006-05-04 16:43       ` Ralf Fassel
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 28+ messages in thread
From: Peter Dyballa @ 2006-05-04 13:16 UTC (permalink / raw)
  Cc: help-gnu-emacs


Am 04.05.2006 um 12:49 schrieb Adam Funk:

>    my $status = system('emacs', '-nw', $temp_file, '-f mail-mode');
>
> Emacs produces this error:
>
>    standard input is not a tty

'Emacs -nw' needs a terminal to run in. How about opening an xterm in  
which this emacs runs? Or launching GNU Emacs as an iconised X client?

--
Greetings

   Pete

To be is to do.
                        -- I. Kant
To do is to be.
                        -- A. Sartre
Yabba-Dabba-Doo!
                        -- F. Flintstone

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 10:49     ` Adam Funk
  2006-05-04 13:16       ` Peter Dyballa
@ 2006-05-04 16:43       ` Ralf Fassel
  2006-05-04 19:46         ` Adam Funk
  2006-05-04 17:13       ` Paul Lalli
  2006-05-05 21:39       ` John Sullivan
  3 siblings, 1 reply; 28+ messages in thread
From: Ralf Fassel @ 2006-05-04 16:43 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
| ... but I'm having problems with the fact that the Perl program
| reads STDIN, processes it and stores the results in a temp file.
| When the Perl program gets to this line:
| 
|    my $status = system('emacs', '-nw', $temp_file, '-f mail-mode');
| 
| Emacs produces this error:
| 
|    standard input is not a tty
| 
| and doesn't run.

Well, via '-nw' you tell emacs to use the tty as input, but the tty is
already used by perl.  Do you really need '-nw'?  If you really need
-nw, you could try something along the lines of

  system("emacs -nw $tempfile -f mail-mode </dev/tty");

I.e. use shell input redirection to the controlling tty.  I have no
idea how robust that would be, and would rather get rid of the '-nw'.

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 10:49     ` Adam Funk
  2006-05-04 13:16       ` Peter Dyballa
  2006-05-04 16:43       ` Ralf Fassel
@ 2006-05-04 17:13       ` Paul Lalli
  2006-05-04 19:27         ` Adam Funk
  2006-05-05 21:39       ` John Sullivan
  3 siblings, 1 reply; 28+ messages in thread
From: Paul Lalli @ 2006-05-04 17:13 UTC (permalink / raw)


Adam Funk wrote:

>    my $status = system('emacs', '-nw', $temp_file, '-f mail-mode');
>
> Emacs produces this error:
>
>    standard input is not a tty

I have no idea what that error message means as far as emacs is
concerned, but your Perl system() command is wrong.  That command is
calling the executable "emacs" with three arguments:  '-nw',
$temp_file, and '-f mail-mode'.  That last one is the problem.  This is
no different than if you had called emacs on the command line,
surrounding '-f mail-mode' in quotes.  You need -f and mail-mode to be
two separate arguments, not one argument:

my $status = system('emacs', '-nw', $temp_file, '-f', 'mail-mode');

Paul Lalli

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 17:13       ` Paul Lalli
@ 2006-05-04 19:27         ` Adam Funk
  0 siblings, 0 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-04 19:27 UTC (permalink / raw)


On 2006-05-04, Paul Lalli <mritty@gmail.com> wrote:
> Adam Funk wrote:
>
>>    my $status = system('emacs', '-nw', $temp_file, '-f mail-mode');
>>
>> Emacs produces this error:
>>
>>    standard input is not a tty
>
> I have no idea what that error message means as far as emacs is
> concerned, but your Perl system() command is wrong.  That command is
> calling the executable "emacs" with three arguments:  '-nw',
> $temp_file, and '-f mail-mode'.  That last one is the problem.  This is
> no different than if you had called emacs on the command line,
> surrounding '-f mail-mode' in quotes.  You need -f and mail-mode to be
> two separate arguments, not one argument:
>
> my $status = system('emacs', '-nw', $temp_file, '-f', 'mail-mode');

Yes, that was a stupid typing & editing mistake.  Thanks for pointing
it out.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 16:43       ` Ralf Fassel
@ 2006-05-04 19:46         ` Adam Funk
  2006-05-04 20:49           ` Giorgos Keramidas
  2006-05-05 12:13           ` Ralf Fassel
  0 siblings, 2 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-04 19:46 UTC (permalink / raw)


On 2006-05-04, Ralf Fassel <ralfixx@gmx.de> wrote:

> Well, via '-nw' you tell emacs to use the tty as input, but the tty is
> already used by perl.  Do you really need '-nw'?  If you really need
> -nw, you could try something along the lines of
>
>   system("emacs -nw $tempfile -f mail-mode </dev/tty");
>
> I.e. use shell input redirection to the controlling tty.  I have no
> idea how robust that would be, and would rather get rid of the '-nw'.

Maybe it would help if I explained what I'm *really* trying to do.  I
get usenet access by opening an xterm, logging into a server and
running slrn.  I really like like slrn except that I can't customize
forwarding articles by e-mail the way I'd like, so I want to bind a
slrn key to a command that just pipes the current article to an
external program.

That external program I want to be a Perl script that puts some stuff
at the beginning of the article, prefaces it with my custom headers,
and then opens it in Emacs in mail-mode (so I can use my ~/.mailrc
aliases and all the other great stuff that Emacs does).  Maybe I need
to store the article in a /tmp file then load it into the Perl
program, instead of piping it into the program's STDIN.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 19:46         ` Adam Funk
@ 2006-05-04 20:49           ` Giorgos Keramidas
  2006-05-05  8:36             ` Adam Funk
                               ` (2 more replies)
  2006-05-05 12:13           ` Ralf Fassel
  1 sibling, 3 replies; 28+ messages in thread
From: Giorgos Keramidas @ 2006-05-04 20:49 UTC (permalink / raw)


On Thu, 4 May 2006 20:46:32 +0100, Adam Funk <a24061@yahoo.com> wrote:
> On 2006-05-04, Ralf Fassel <ralfixx@gmx.de> wrote:
>> Well, via '-nw' you tell emacs to use the tty as input, but the tty is
>> already used by perl.  Do you really need '-nw'?  If you really need
>> -nw, you could try something along the lines of
>>
>>   system("emacs -nw $tempfile -f mail-mode </dev/tty");
>>
>> I.e. use shell input redirection to the controlling tty.  I have no
>> idea how robust that would be, and would rather get rid of the '-nw'.
>
> Maybe it would help if I explained what I'm *really* trying to do.  I
> get usenet access by opening an xterm, logging into a server and
> running slrn.  I really like like slrn except that I can't customize
> forwarding articles by e-mail the way I'd like, so I want to bind a
> slrn key to a command that just pipes the current article to an
> external program.
>
> That external program I want to be a Perl script that puts some stuff
> at the beginning of the article, prefaces it with my custom headers,
> and then opens it in Emacs in mail-mode (so I can use my ~/.mailrc
> aliases and all the other great stuff that Emacs does).  Maybe I need
> to store the article in a /tmp file then load it into the Perl
> program, instead of piping it into the program's STDIN.

You don't need Perl for that, I guess.  It's fairly easy to write a
function in Elisp that does all you need and call it at Emacs startup,
i.e. a _very_ simplistic one could be:

| (defun slrn-setup-post (&optional filename)
|   "Load a file and set things up for posting it as a `mail'
|   message through Emacs."
|     (interactive)
|       (if filename
|           (insert-filename))
|       (beginning-of-buffer)
|       (insert-string "From: foo@bar.example.net\n\n")
|       (mail-mode))

Then you can set up slrn to use as its `$EDITOR' your Emacs wrapper
script, which would run:

    emacs filename -f slrn-setup-post

No need for Perl if you have the full Elisp languaeg at your hands :)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 20:49           ` Giorgos Keramidas
@ 2006-05-05  8:36             ` Adam Funk
  2006-05-05 14:26               ` Giorgos Keramidas
  2006-05-05 11:17             ` Reiner Steib
  2006-05-05 13:54             ` Adam Funk
  2 siblings, 1 reply; 28+ messages in thread
From: Adam Funk @ 2006-05-05  8:36 UTC (permalink / raw)


On 2006-05-04, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:

>> That external program I want to be a Perl script that puts some stuff
>> at the beginning of the article, prefaces it with my custom headers,
>> and then opens it in Emacs in mail-mode (so I can use my ~/.mailrc
>> aliases and all the other great stuff that Emacs does).  Maybe I need
>> to store the article in a /tmp file then load it into the Perl
>> program, instead of piping it into the program's STDIN.
>
> You don't need Perl for that, I guess.  It's fairly easy to write a
> function in Elisp that does all you need and call it at Emacs startup,

ITYM "easy for someone who knows how to write Elisp"!


> i.e. a _very_ simplistic one could be:
>
>| (defun slrn-setup-post (&optional filename)
>|   "Load a file and set things up for posting it as a `mail'
>|   message through Emacs."
>|     (interactive)
>|       (if filename
>|           (insert-filename))
>|       (beginning-of-buffer)
>|       (insert-string "From: foo@bar.example.net\n\n")
>|       (mail-mode))
>
> Then you can set up slrn to use as its `$EDITOR' your Emacs wrapper
> script, which would run:
>
>     emacs filename -f slrn-setup-post
>
> No need for Perl if you have the full Elisp languaeg at your hands :)

But you've given me a lot to start with.  Thanks!

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 20:49           ` Giorgos Keramidas
  2006-05-05  8:36             ` Adam Funk
@ 2006-05-05 11:17             ` Reiner Steib
  2006-05-05 13:54             ` Adam Funk
  2 siblings, 0 replies; 28+ messages in thread
From: Reiner Steib @ 2006-05-05 11:17 UTC (permalink / raw)


On Thu, May 04 2006, Giorgos Keramidas wrote:

> | (defun slrn-setup-post (&optional filename)
> |   "Load a file and set things up for posting it as a `mail'
> |   message through Emacs."
> |     (interactive)
> |       (if filename
> |           (insert-filename))
> |       (beginning-of-buffer)
> |       (insert-string "From: foo@bar.example.net\n\n")
> |       (mail-mode))

I'd suggest to set the buffer in mail mode first and then use the
predefined functions like `mail-insert-from-field', `mail-to', ...

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 19:46         ` Adam Funk
  2006-05-04 20:49           ` Giorgos Keramidas
@ 2006-05-05 12:13           ` Ralf Fassel
  1 sibling, 0 replies; 28+ messages in thread
From: Ralf Fassel @ 2006-05-05 12:13 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
| I get usenet access by opening an xterm, logging into a server and
| running slrn.

If you use ssh to log in, you could forward the X11 connection to your
local system and omit the -nw.  Just use ssh -X to initiate the
connection which should take care of the necessary environment
settings.

Or simply use emacs instead of perl to set up the mail buffer as
others suggested.

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 20:49           ` Giorgos Keramidas
  2006-05-05  8:36             ` Adam Funk
  2006-05-05 11:17             ` Reiner Steib
@ 2006-05-05 13:54             ` Adam Funk
  2 siblings, 0 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-05 13:54 UTC (permalink / raw)


On 2006-05-04, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:

>> That external program I want to be a Perl script that puts some stuff
>> at the beginning of the article, prefaces it with my custom headers,
>> and then opens it in Emacs in mail-mode (so I can use my ~/.mailrc
>> aliases and all the other great stuff that Emacs does).  Maybe I need
>> to store the article in a /tmp file then load it into the Perl
>> program, instead of piping it into the program's STDIN.
>
> You don't need Perl for that, I guess.  It's fairly easy to write a
> function in Elisp that does all you need and call it at Emacs startup,
> i.e. a _very_ simplistic one could be:

This would require the input to be stored in a /tmp file (not being
piped in), right?


> No need for Perl if you have the full Elisp languaeg at your hands :)

There's not much elisp in my brain, however!

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-05  8:36             ` Adam Funk
@ 2006-05-05 14:26               ` Giorgos Keramidas
  0 siblings, 0 replies; 28+ messages in thread
From: Giorgos Keramidas @ 2006-05-05 14:26 UTC (permalink / raw)


On Fri, 5 May 2006 09:36:24 +0100, Adam Funk <a24061@yahoo.com> wrote:
> On 2006-05-04, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:
>>> That external program I want to be a Perl script that puts some stuff
>>> at the beginning of the article, prefaces it with my custom headers,
>>> and then opens it in Emacs in mail-mode (so I can use my ~/.mailrc
>>> aliases and all the other great stuff that Emacs does).  Maybe I need
>>> to store the article in a /tmp file then load it into the Perl
>>> program, instead of piping it into the program's STDIN.
>>
>> You don't need Perl for that, I guess.  It's fairly easy to write a
>> function in Elisp that does all you need and call it at Emacs startup,
>
> ITYM "easy for someone who knows how to write Elisp"!

On Fri, 5 May 2006 14:54:06 +0100, Adam Funk <a24061@yahoo.com> wrote:
> This would require the input to be stored in a /tmp file (not being
> piped in), right?

Yes, this would make sense, I guess.  It will probably be a lot easier
to write an Elisp function if you don't have to worry about how to slurp
in the file, I think.

>> No need for Perl if you have the full Elisp languaeg at your hands :)
>
> There's not much elisp in my brain, however!

Same here, but I'm always learning more :)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-04 10:49     ` Adam Funk
                         ` (2 preceding siblings ...)
  2006-05-04 17:13       ` Paul Lalli
@ 2006-05-05 21:39       ` John Sullivan
  3 siblings, 0 replies; 28+ messages in thread
From: John Sullivan @ 2006-05-05 21:39 UTC (permalink / raw)


Adam Funk <a24061@yahoo.com> writes:

> and doesn't run.  If I add the --batch option to the emacs command,
> emacs runs and quits (it doesn't come up interactively), so that's not
> the solution.

I know you said that emacs wasn't already running, but you might want to
rethink that. You can have a single emacs process running as a server, and (if
you have emacs from CVS) use 'emacsclient --eval' to connect to it.

-- 
-John Sullivan
-http://www.wjsullivan.net
-GPG Key: AE8600B6

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-03 11:29 How to pipe text or load a file directly into mail-mode? Adam Funk
  2006-05-03 14:26 ` Giorgos Keramidas
  2006-05-03 20:35 ` Ralf Fassel
@ 2006-05-09 11:00 ` Adam Funk
  2006-05-09 11:48   ` Ralf Fassel
  2 siblings, 1 reply; 28+ messages in thread
From: Adam Funk @ 2006-05-09 11:00 UTC (permalink / raw)


I now have most of this working the way I want, except for launching
emacs in mail-mode.  The Perl program saves its data in a file named
$edit_file (which ends with the suffix ".mail") and calls

    $status = system('emacs', '-nw', $edit_file, '-f', ' mail-mode');

which is equivalent to 

    emacs -nw $FILENAME -f mail-mode

on the command-line.

This launches Emacs with the correct file open, but it says "Mail
(Fundamental)" on the status line and "Symbol's function definition is
void: \ mail-mode" in the minibuffer.

If I then hit M-x mail-mode, it then says "Mail (Mail MC-w Fill)" on
the status line and "Loading sendmail...done" in the minibuffer, and
everything works correctly.

What else do I need to do to get mail-mode to come up initially?

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-09 11:00 ` Adam Funk
@ 2006-05-09 11:48   ` Ralf Fassel
  2006-05-09 12:15     ` Adam Funk
  2006-05-09 14:16     ` Adam Funk
  0 siblings, 2 replies; 28+ messages in thread
From: Ralf Fassel @ 2006-05-09 11:48 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
|     $status = system('emacs', '-nw', $edit_file, '-f', ' mail-mode');
--<snip-snip>--
| and "Symbol's function definition is void: \ mail-mode" in the

Get rid of the leading space in the last argument of the system()
invocation:
' mail-mode'
=>
'mail-mode'

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-09 11:48   ` Ralf Fassel
@ 2006-05-09 12:15     ` Adam Funk
  2006-05-09 14:16     ` Adam Funk
  1 sibling, 0 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-09 12:15 UTC (permalink / raw)


On 2006-05-09, Ralf Fassel <ralfixx@gmx.de> wrote:
> * Adam Funk <a24061@yahoo.com>
>|     $status = system('emacs', '-nw', $edit_file, '-f', ' mail-mode');
> --<snip-snip>--
>| and "Symbol's function definition is void: \ mail-mode" in the
>
> Get rid of the leading space in the last argument of the system()
> invocation:
> ' mail-mode'
>=>
> 'mail-mode'

Exactly, thanks!

(That was an embarrassing editing mistake not to notice.)

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-09 11:48   ` Ralf Fassel
  2006-05-09 12:15     ` Adam Funk
@ 2006-05-09 14:16     ` Adam Funk
  2006-05-09 14:30       ` Ralf Fassel
  1 sibling, 1 reply; 28+ messages in thread
From: Adam Funk @ 2006-05-09 14:16 UTC (permalink / raw)


On 2006-05-09, Ralf Fassel <ralfixx@gmx.de> wrote:
> * Adam Funk <a24061@yahoo.com>
>|     $status = system('emacs', '-nw', $edit_file, '-f', ' mail-mode');
> --<snip-snip>--
>| and "Symbol's function definition is void: \ mail-mode" in the
>
> Get rid of the leading space in the last argument of the system()
> invocation:
> ' mail-mode'
>=>
> 'mail-mode'

I think I have just one more question!

Any idea why the expand-mail-aliases command isn't available when
emacs opens the file and goes into mail-mode?  

The aliases get expanded when the mail is sent with C-c C-c, but it's
impossible to check them before that point.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-09 14:16     ` Adam Funk
@ 2006-05-09 14:30       ` Ralf Fassel
  2006-05-10  8:23         ` Adam Funk
  0 siblings, 1 reply; 28+ messages in thread
From: Ralf Fassel @ 2006-05-09 14:30 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
| Any idea why the expand-mail-aliases command isn't available when
| emacs opens the file and goes into mail-mode?

My emacs online manual contains the following under 'Mail Aliases':

    Normally, Emacs expands aliases when you send the message.  You do
    not need to expand mail aliases before sending the message, but
    you can expand them if you want to see where the mail will
    actually go.  To do this, use the command `M-x
    expand-mail-aliases'; it expands all mail aliases currently
    present in the mail headers that hold addresses.

    If you like, you can have mail aliases expand as abbrevs, as soon
    as you type them in (*note Abbrevs::).  To enable this feature,
    execute the following:
      (add-hook 'mail-mode-hook 'mail-abbrevs-setup)

Or do you mean you get 'no-such-command' when trying
M-x expand-mail-aliases?

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-09 14:30       ` Ralf Fassel
@ 2006-05-10  8:23         ` Adam Funk
  2006-05-10 12:11           ` Ralf Fassel
  0 siblings, 1 reply; 28+ messages in thread
From: Adam Funk @ 2006-05-10  8:23 UTC (permalink / raw)


On 2006-05-09, Ralf Fassel <ralfixx@gmx.de> wrote:

>     If you like, you can have mail aliases expand as abbrevs, as soon
>     as you type them in (*note Abbrevs::).  To enable this feature,
>     execute the following:
>       (add-hook 'mail-mode-hook 'mail-abbrevs-setup)

I didn't know about this feature -- thanks.


> Or do you mean you get 'no-such-command' when trying
> M-x expand-mail-aliases?

I get "[no match]" when I get to "expand-m" or type any more of it
than that.

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-10  8:23         ` Adam Funk
@ 2006-05-10 12:11           ` Ralf Fassel
  2006-05-10 12:22             ` Adam Funk
  0 siblings, 1 reply; 28+ messages in thread
From: Ralf Fassel @ 2006-05-10 12:11 UTC (permalink / raw)


* Adam Funk <a24061@yahoo.com>
| >       (add-hook 'mail-mode-hook 'mail-abbrevs-setup)
| 
| I didn't know about this feature -- thanks.

Does this solve the problem?

| I get "[no match]" when I get to "expand-m" or type any more of it
| than that.

This indicates that the file which defines the function has not been
loaded at that time, and the function is not flagged as auto-loadable.
Most probably invoking C-c C-c loads additional packages which then
define the function.  If the above add-hook does not solve the
problem, you can try to find out which library file provides the
functionality (describe-function should tell you which elisp file
defines the function) and load it manually in your .emacs.

Eg, my emacs-21 has
M-x describe-function expand-mail-aliases
=>  expand-mail-aliases is an interactive compiled Lisp function in `mailalias'.

M-x locate-library mailalias
=>  Library is file /software/emacs/21.3/share/emacs/21.3/lisp/mail/mailalias.el.gz

Inspecting the file shows that it has a
  (provide 'mailalias)
So I guess that adding
  (require 'mailalias)
to your .emacs could do the trick.

R'

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: How to pipe text or load a file directly into mail-mode?
  2006-05-10 12:11           ` Ralf Fassel
@ 2006-05-10 12:22             ` Adam Funk
  0 siblings, 0 replies; 28+ messages in thread
From: Adam Funk @ 2006-05-10 12:22 UTC (permalink / raw)


On 2006-05-10, Ralf Fassel <ralfixx@gmx.de> wrote:
> * Adam Funk <a24061@yahoo.com>
>| >       (add-hook 'mail-mode-hook 'mail-abbrevs-setup)
>| 
>| I didn't know about this feature -- thanks.
>
> Does this solve the problem?

It's even better than that!

Thanks very much.

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2006-05-10 12:22 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-03 11:29 How to pipe text or load a file directly into mail-mode? Adam Funk
2006-05-03 14:26 ` Giorgos Keramidas
2006-05-03 15:05   ` Adam Funk
2006-05-03 18:16     ` Giorgos Keramidas
2006-05-03 19:05       ` Adam Funk
2006-05-03 20:35 ` Ralf Fassel
2006-05-04  4:24   ` Giorgos Keramidas
2006-05-04 10:49     ` Adam Funk
2006-05-04 13:16       ` Peter Dyballa
2006-05-04 16:43       ` Ralf Fassel
2006-05-04 19:46         ` Adam Funk
2006-05-04 20:49           ` Giorgos Keramidas
2006-05-05  8:36             ` Adam Funk
2006-05-05 14:26               ` Giorgos Keramidas
2006-05-05 11:17             ` Reiner Steib
2006-05-05 13:54             ` Adam Funk
2006-05-05 12:13           ` Ralf Fassel
2006-05-04 17:13       ` Paul Lalli
2006-05-04 19:27         ` Adam Funk
2006-05-05 21:39       ` John Sullivan
2006-05-09 11:00 ` Adam Funk
2006-05-09 11:48   ` Ralf Fassel
2006-05-09 12:15     ` Adam Funk
2006-05-09 14:16     ` Adam Funk
2006-05-09 14:30       ` Ralf Fassel
2006-05-10  8:23         ` Adam Funk
2006-05-10 12:11           ` Ralf Fassel
2006-05-10 12:22             ` Adam Funk

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.