]> code.delx.au - gnu-emacs/blobdiff - src/cmds.c
(SYSTEM_TYPE): Use berkeley-unix.
[gnu-emacs] / src / cmds.c
index 18821e24b06c1c52df7db5a224614669a7a63340..c8e9bfd76ec02ff7d10defd20d89dcf9b77b602d 100644 (file)
@@ -1,11 +1,11 @@
 /* Simple built-in editing commands.
-   Copyright (C) 1985 Free Software Foundation, Inc.
+   Copyright (C) 1985, 1992 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -33,7 +33,7 @@ On reaching end of buffer, stop and signal error.")
   (n)
      Lisp_Object n;
 {
-  if (NULL (n))
+  if (NILP (n))
     XFASTINT (n) = 1;
   else
     CHECK_NUMBER (n, 0);
@@ -58,7 +58,7 @@ On attempt to pass beginning or end of buffer, stop and signal error.")
   (n)
      Lisp_Object n;
 {
-  if (NULL (n))
+  if (NILP (n))
     XFASTINT (n) = 1;
   else
     CHECK_NUMBER (n, 0);
@@ -82,7 +82,7 @@ With positive ARG, a non-empty line at the end counts as one line\n\
   int pos;
   int count, shortage, negp;
 
-  if (NULL (n))
+  if (NILP (n))
     count = 1;
   else
     {
@@ -94,7 +94,8 @@ With positive ARG, a non-empty line at the end counts as one line\n\
   pos = scan_buffer ('\n', pos2, count - negp, &shortage);
   if (shortage > 0
       && (negp
-         || (ZV >= BEGV
+         || (ZV > BEGV
+             && pos != pos2
              && FETCH_CHAR (pos - 1) != '\n')))
     shortage--;
   SET_PT (pos);
@@ -109,7 +110,7 @@ If scan reaches end of buffer, stop there without error.")
   (n)
      Lisp_Object n;
 {
-  if (NULL (n))
+  if (NILP (n))
     XFASTINT (n) = 1;
   else
     CHECK_NUMBER (n, 0);
@@ -129,7 +130,7 @@ If scan reaches end of buffer, stop there without error.")
   register int pos;
   register int stop;
 
-  if (NULL (n))
+  if (NILP (n))
     XFASTINT (n) = 1;
   else
     CHECK_NUMBER (n, 0);
@@ -155,7 +156,7 @@ ARG was explicitly specified.")
 {
   CHECK_NUMBER (n, 0);
 
-  if (NULL (killflag))
+  if (NILP (killflag))
     {
       if (XINT (n) < 0)
        {
@@ -225,7 +226,7 @@ In Auto Fill mode, if no numeric arg, break the preceding line if it's long.")
 
   arg = Fprefix_numeric_value (arg1);
 
-  if (!NULL (current_buffer->read_only))
+  if (!NILP (current_buffer->read_only))
     Fsignal (Qbuffer_read_only, Qnil);
 
   /* Inserting a newline at the end of a line
@@ -245,7 +246,7 @@ In Auto Fill mode, if no numeric arg, break the preceding line if it's long.")
       if (flag)
        insert (&c1, 1);
       else
-       internal_self_insert ('\n', !NULL (arg1));
+       internal_self_insert ('\n', !NILP (arg1));
       XFASTINT (arg)--;                /* Ok since old and new vals both nonneg */
     }
 
@@ -255,6 +256,12 @@ In Auto Fill mode, if no numeric arg, break the preceding line if it's long.")
   return Qnil;
 }
 
+/* Insert character C1.  If NOAUTOFILL is nonzero, don't do autofill
+   even if it is enabled.
+
+   If this insertion is suitable for direct output (completely simple),
+   return 0.  A value of 1 indicates this *might* not have been simple.  */
+
 internal_self_insert (c1, noautofill)
      char c1;
      int noautofill;
@@ -265,10 +272,10 @@ internal_self_insert (c1, noautofill)
   register enum syntaxcode synt;
   register int c = c1;
 
-  if (!NULL (Vbefore_change_function) || !NULL (Vafter_change_function))
+  if (!NILP (Vbefore_change_function) || !NILP (Vafter_change_function))
     hairy = 1;
 
-  if (!NULL (current_buffer->overwrite_mode)
+  if (!NILP (current_buffer->overwrite_mode)
       && point < ZV
       && c != '\n' && FETCH_CHAR (point) != '\n'
       && (FETCH_CHAR (point) != '\t'
@@ -278,18 +285,22 @@ internal_self_insert (c1, noautofill)
       del_range (point, point + 1);
       hairy = 1;
     }
-  if (!NULL (current_buffer->abbrev_mode)
+  if (!NILP (current_buffer->abbrev_mode)
       && SYNTAX (c) != Sword
-      && NULL (current_buffer->read_only)
+      && NILP (current_buffer->read_only)
       && point > BEGV && SYNTAX (FETCH_CHAR (point - 1)) == Sword)
     {
-      tem = Fexpand_abbrev ();
-      if (!NULL (tem))
+      int modiff = MODIFF;
+      Fexpand_abbrev ();
+      /* We can't trust the value of Fexpand_abbrev,
+        but if Fexpand_abbrev changed the buffer,
+        assume it expanded something.  */
+      if (MODIFF != modiff)
        hairy = 1;
     }
   if ((c == ' ' || c == '\n')
       && !noautofill
-      && !NULL (current_buffer->auto_fill_function)
+      && !NILP (current_buffer->auto_fill_function)
       && current_column () > XFASTINT (current_buffer->fill_column))
     {
       if (c1 != '\n')
@@ -303,7 +314,7 @@ internal_self_insert (c1, noautofill)
     insert (&c1, 1);
   synt = SYNTAX (c);
   if ((synt == Sclose || synt == Smath)
-      && !NULL (Vblink_paren_function) && INTERACTIVE)
+      && !NILP (Vblink_paren_function) && INTERACTIVE)
     {
       call0 (Vblink_paren_function);
       hairy = 1;