Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-51
[bpt/emacs.git] / src / buffer.c
index dcda7bc..d9769ce 100644 (file)
@@ -1,6 +1,6 @@
 /* Buffer manipulation primitives for GNU Emacs.
-   Copyright (C) 1985, 86, 87, 88, 89, 93, 94, 95, 97, 98, 99, 
-     2000, 01, 02, 03, 04, 2005 Free Software Foundation, Inc. 
+   Copyright (C) 1985, 86, 87, 88, 89, 93, 94, 95, 97, 98, 99,
+     2000, 01, 02, 03, 04, 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -631,7 +631,21 @@ CLONE nil means the indirect buffer's state is reset to default values.  */)
       XMARKER (b->zv_marker)->insertion_type = 1;
     }
   else
-    clone_per_buffer_values (b->base_buffer, b);
+    {
+      struct buffer *old_b = current_buffer;
+
+      clone_per_buffer_values (b->base_buffer, b);
+      b->filename = Qnil;
+      b->file_truename = Qnil;
+      b->display_count = make_number (0);
+      b->backed_up = Qnil;
+      b->auto_save_file_name = Qnil;
+      set_buffer_internal_1 (b);
+      Fset (intern ("buffer-save-without-query"), Qnil);
+      Fset (intern ("buffer-file-number"), Qnil);
+      Fset (intern ("buffer-stale-function"), Qnil);
+      set_buffer_internal_1 (old_b);
+    }
 
   return buf;
 }
@@ -932,7 +946,7 @@ is the default binding of variable. */)
 }
 
 /* Return an alist of the Lisp-level buffer-local bindings of
-   buffer BUF.  That is, do't include  the variables maintained
+   buffer BUF.  That is, don't include the variables maintained
    in special slots in the buffer object.  */
 
 static Lisp_Object
@@ -4974,6 +4988,7 @@ init_buffer_once ()
   buffer_defaults.direction_reversed = Qnil;
   buffer_defaults.cursor_type = Qt;
   buffer_defaults.extra_line_spacing = Qnil;
+  buffer_defaults.cursor_in_non_selected_windows = Qt;
 
 #ifdef DOS_NT
   buffer_defaults.buffer_file_type = Qnil; /* TEXT */
@@ -5070,6 +5085,7 @@ init_buffer_once ()
   XSETFASTINT (buffer_local_flags.header_line_format, idx); ++idx;
   XSETFASTINT (buffer_local_flags.cursor_type, idx); ++idx;
   XSETFASTINT (buffer_local_flags.extra_line_spacing, idx); ++idx;
+  XSETFASTINT (buffer_local_flags.cursor_in_non_selected_windows, idx); ++idx;
 
   /* Need more room? */
   if (idx >= MAX_PER_BUFFER_VARS)
@@ -5261,6 +5277,11 @@ This is the same as (default-value 'cursor-type).  */);
                     doc: /* Default value of `line-spacing' for buffers that don't override it.
 This is the same as (default-value 'line-spacing).  */);
 
+  DEFVAR_LISP_NOPRO ("default-cursor-in-non-selected-windows",
+                    &buffer_defaults.cursor_in_non_selected_windows,
+                    doc: /* Default value of `cursor-in-non-selected-windows'.
+This is the same as (default-value 'cursor-in-non-selected-windows).  */);
+
   DEFVAR_LISP_NOPRO ("default-abbrev-mode",
                     &buffer_defaults.abbrev_mode,
                     doc: /* Default value of `abbrev-mode' for buffers that do not override it.
@@ -5940,6 +5961,11 @@ The space is measured in pixels, and put below lines on window systems.
 If value is a floating point number, it specifies the spacing relative
 to the default frame line height.  */);
 
+  DEFVAR_PER_BUFFER ("cursor-in-non-selected-windows",
+                    &current_buffer->cursor_in_non_selected_windows, Qnil,
+    doc: /* *Cursor type to display in non-selected windows.
+t means to use hollow box cursor.  See `cursor-type' for other values.  */);
+
   DEFVAR_LISP ("kill-buffer-query-functions", &Vkill_buffer_query_functions,
               doc: /* List of functions called with no args to query before killing a buffer.  */);
   Vkill_buffer_query_functions = Qnil;