[net.emacs] Some answers

rms@mit-prep (09/18/85)

From: Richard M. Stallman <rms@mit-prep>
I was away for several weeks and just cleared my backlog enough to
read net.emacs again.  Here are some answers and responses.

1. I strongly urge people not to call set-input-mode from site-init.el.
To do this has the effect of making EVERYONE use flow control.
That is an unfortunate imposition on those who could manage to find
a properly designed terminal and connection.  It is much more correct
to make Emacs check the terminal type or other suitable information
when it is started by the user, and decide on that basis whether it
is really necessary to use flow control.

2. GNU Emacs comes with an outline mode that provides at least some
of the functions that someone was asking for.

3. There is no manual yet for how to write programs in Emacs Lisp.
I urge people to read the Lisp sources for functions for purposes
related to their own.

4. The suggested Sun termcap that turns off insert/delete line
is probably a bad idea, because it ought to work to define the
AL and DL strings (and IC and DC strings) to tell Emacs how to
insert or delete many characters or lines at once.  This is much
faster than repainting.  I know that people with Suns have done this.

5. I would like to receive the exact code for alloca for the IS machine
and also the way to pad crt0.c by six bytes at the beginning of the text.
The problem that Emacs jumps back to its start might be found by putting
a breakpoint at 0 in adb.

6. GNU Emacs can be obtained from anyone who has a copy or by sending
$150 **payable to me** at
c/o Lisp Machine Inc
1000 Mass Ave
Cambridge, MA 02139

7. If you have ordered a tape and not got it yet, you will probably
get it soon.  As you see, I decided to make a bug-fix release so that
you will get something clean.  Since the bug-fix release is being
tested now, I expect to ship tapes this week.

8. I expect version 17 to be ready in a month or so, and to contain
support for Uniplus 5.2.  Other sysV versions are more stupid and will
require some additional work.

9. People who think that alloca will not work on their machines should
explain their problems more precisely.  So far, when people have done
that, I have found that alloca can indeed be made to work.

rms@mit-prep (10/06/85)

From: Richard M. Stallman <rms@mit-prep>
1. You can set an option permanently only with the .emacs file.
Do  (setq OPTION VALUE)

2. You can save a keyboard macro with M-x append-kbd-macro.
It writes a Lisp expression to the end of the file.
You could use .emacs as the file.

However, this is a bad idea.  If something is important enough
to keep around permanently, it should be written in a language
that is comprehensible, such as Lisp.

3. There is no way to execute Emacs editing commands from a file.

4. Here is a program to convert a Gosmacs mail directory into
a Unix mail file that you can read into GNU Emacs's Rmail.
I cannot be sure it really works, since I have nothing to
test it on.  If it does not work, please send me the fixes.


/* Copyright (C) 1985 Free Software Foundation
This file is part of GNU Emacs.

GNU Emacs is distributed in the hope that it will be useful,
but without any warranty.  No author or distributor
accepts responsibility to anyone for the consequences of using it
or for whether it serves any particular purpose or works at all,
unless he says so in writing.

Everyone is granted permission to copy, modify and redistribute
GNU Emacs, but only under the conditions described in the
document "GNU Emacs copying permission notice".   An exact copy
of the document is supposed to have been given to you along with
GNU Emacs so that you can know how you may redistribute it all.
It should be in a file named COPYING.  Among other things, the
copyright notice and this notice must be preserved on all copies.  */

/* cm:
 * Program to convert oldstyle goslings emacs mail directories into
 * gnu-rmail format.  Program expects a directory called Messages to
 * exist in your home directory, containing individual mail messages in
 * separate files in the standard gosling emacs mail reader format.
 *
 * Program takes one argument: an output file.  THis file will contain
 * all the messages in Messages directory, in berkeley mail format.
 * If no output file is mentioned, messages are put in ~/OMAIL.
 *
 * In order to get rmail to read the messages, the resulting file must
 * be mv'ed to ~/mbox, and then have rmail invoked on them.
 * 
 * Author: Larry Kolodney, 1985

 * RMS, 2 Sept 85: Removed fixed maximums on file name sizes.
 */


#include <stdio.h>


main (argc, argv)
     int argc;
     char *argv[];
{
  char *hd;
  char *md;
  char *mdd;
  char *mfile;
  char *cf;
  int cflen;
  FILE *mddf;
  FILE *mfilef;
  FILE *cff;
  char pre[10], post[100];
  char name[14];
  int c;

  hd = (char *) getenv ("HOME");

  md = (char *) malloc (strlen (hd) + 10);
  strcpy (md, hd);
  strcat (md, "/Messages");

  mdd = (char *) malloc (strlen (md) + 11);
  strcpy (mdd, md);
  strcat (mdd, "/Directory");

  cflen = 100;
  cf = (char *) malloc (cflen);

  mddf = fopen (mdd, "r");
  if (argc > 1)
    mfilef = fopen (argv[1], "w");
  else
    {
      mfile = (char *) malloc (strlen (hd) + 7);
      strcpy (mfile, hd);
      strcat (mfile, "/OMAIL");
      mfilef = fopen (mfile, "w");
    }
  skip_to_lf (mddf);
  while (fscanf (mddf, "%4c%14[0123456789]", pre, name) != EOF)
    {
      if (cflen < strlen (md) + strlen (name) + 2)
	{
	  cflen = strlen (md) + strlen (name) + 2;
	  cf = (char *) xrealloc (cf, cflen);
	}
      strcpy (cf, md);
      strcat (cf,"/");
      strcat (cf, name);
      cff = fopen (cf, "r");
      while ((c = getc(cff)) != EOF)
	putc (c, mfilef);
      putc ('\n', mfilef);
      skip_to_lf (mddf);
     fclose (cff);
    }
  fclose (mddf);
  fclose (mfilef);    
  return 0;
}

skip_to_lf (stream)
     FILE *stream;
{
  register int c;
  while ((c = getc(stream)) != '\n')
    ;
}

int
xmalloc (size)
     int size;
{
  int result = malloc (size);
  if (!result)
    fatal ("virtual memory exhausted", 0);
  return result;
}

int
xrealloc (ptr, size)
     char *ptr;
     int size;
{
  int result = realloc (ptr, size);
  if (!result)
    fatal ("virtual memory exhausted");
  return result;
}

/* Print error message and exit.  */

fatal (s1, s2)
     char *s1, *s2;
{
  error (s1, s2);
  exit (1);
}

error (s1, s2)
     char *s1, *s2;
{
  printf ("cm: ");
  printf (s1, s2);
  printf ("\n");
}

rms@PREP.AI.MIT.EDU (09/23/86)

From: rms@PREP.AI.MIT.EDU (Richard M. Stallman)

1. Copying keymaps with copy-keymap is supposed to make the
two keymaps unshared.  It works in version 18.  Maybe it was
broken in 17.  It is not easy to broadcast the new code
sicne it involves several functions that have been changed.

2. It should not be necessary to set meta-flag by hand.
If it is necessary, it means the termcap entry is missing
the :km: flag.  Just put it in.

3. Invoking rmail from the .emacs file does not work in version
17, but does work in version 18.  The problem happens
in startup.el where it switches to initial-major-mode.
Put around this a save-excursion and then set-buffer to
*scratch* before setting the mode.

4. Version 18 will start ftp distribution (think of this as beta test)
as soon as a few of copyright assignments come in.  I hope it will be
by the end of this week.