changeset 2214:e5928bec8d5d

* cmds.c (overwrite_binary_mode): Deleted; this implements the wrong feature. (Qoverwrite_mode_binary): New variable. (internal_self_insert): If current_buffer->overwrite_mode is `overwrite-mode-binary', do as overwrite_binary_mode used to. (syms_of_cmds): Remove defvar of overwrite_binary_mode; initialize Qoverwrite_mode_binary. * buffer.c (syms_of_buffer): Doc fix for overwrite_mode. * buffer.h (struct buffer): Doc fix.
author Jim Blandy <jimb@redhat.com>
date Tue, 16 Mar 1993 18:18:05 +0000
parents 9ff513b5d296
children a7d915ce7676
files src/buffer.c src/buffer.h src/cmds.c
diffstat 3 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c	Tue Mar 16 15:47:45 1993 +0000
+++ b/src/buffer.c	Tue Mar 16 18:18:05 1993 +0000
@@ -1610,6 +1610,10 @@
 
   DEFVAR_PER_BUFFER ("overwrite-mode", &current_buffer->overwrite_mode, Qnil,
     "Non-nil if self-insertion should replace existing text.\n\
+If non-nil and not `overwrite-mode-binary', self-insertion still\n\
+inserts at the end of a line, and inserts when point is before a tab,\n\
+unless that tab is displaying as only one space.\n\
+If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.\n\
 Automatically becomes buffer-local when set in any fashion.");
 
   DEFVAR_PER_BUFFER ("buffer-display-table", &current_buffer->display_table,
--- a/src/buffer.h	Tue Mar 16 15:47:45 1993 +0000
+++ b/src/buffer.h	Tue Mar 16 18:18:05 1993 +0000
@@ -256,7 +256,8 @@
 #endif
     /* Alist of (FUNCTION . STRING) for each minor mode enabled in buffer. */
     Lisp_Object minor_modes;
-    /* t if "self-insertion" should overwrite */
+    /* t if "self-insertion" should overwrite; `binary' if it should also
+       overwrite newlines and tabs - for editing executables and the like.  */
     Lisp_Object overwrite_mode;
     /* non-nil means abbrev mode is on.  Expand abbrevs automatically. */
     Lisp_Object abbrev_mode;
--- a/src/cmds.c	Tue Mar 16 15:47:45 1993 +0000
+++ b/src/cmds.c	Tue Mar 16 18:18:05 1993 +0000
@@ -26,7 +26,9 @@
 
 Lisp_Object Qkill_forward_chars, Qkill_backward_chars, Vblink_paren_function;
 
-int overwrite_binary_mode;
+/* A possible value for a buffer's overwrite-mode variable.  */
+Lisp_Object Qoverwrite_mode_binary;
+
 
 DEFUN ("forward-char", Fforward_char, Sforward_char, 0, 1, "p",
   "Move point right ARG characters (left if ARG negative).\n\
@@ -273,14 +275,16 @@
   Lisp_Object tem;
   register enum syntaxcode synt;
   register int c = c1;
+  Lisp_Object overwrite = current_buffer->overwrite_mode;
 
   if (!NILP (Vbefore_change_function) || !NILP (Vafter_change_function))
     hairy = 1;
 
-  if (!NILP (current_buffer->overwrite_mode)
+  if (!NILP (overwrite)
       && point < ZV
-      && (overwrite_binary_mode || (c != '\n' && FETCH_CHAR (point) != '\n'))
-      && (overwrite_binary_mode
+      && (EQ (overwrite, Qoverwrite_mode_binary)
+	  || (c != '\n' && FETCH_CHAR (point) != '\n'))
+      && (EQ (overwrite, Qoverwrite_mode_binary)
 	  || FETCH_CHAR (point) != '\t'
 	  || XINT (current_buffer->tab_width) <= 0
 	  || XFASTINT (current_buffer->tab_width) > 20
@@ -336,11 +340,8 @@
   Qkill_forward_chars = intern ("kill-forward-chars");
   staticpro (&Qkill_forward_chars);
 
-  DEFVAR_BOOL ("overwrite-binary-mode", &overwrite_binary_mode,
-    "*Non-nil means overwrite mode treats tab and newline normally.\n\
-Ordinarily, overwriting preserves a tab until its whole width is overwritten\n\
-and never replaces a newline.");
-  overwrite_binary_mode = 1;
+  Qoverwrite_mode_binary = intern ("overwrite-mode-binary");
+  staticpro (&Qoverwrite_mode_binary);
 
   DEFVAR_LISP ("blink-paren-function", &Vblink_paren_function,
     "Function called, if non-nil, whenever a close parenthesis is inserted.\n\