(last-buffer): Add missing frame argument.
[bpt/emacs.git] / lispref / internals.texi
index 6fdf3b9..1347003 100644 (file)
@@ -1,6 +1,7 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990, 1991, 1992, 1993, 1998 Free Software Foundation, Inc. 
+@c Copyright (C) 1990, 1991, 1992, 1993, 1998, 1999
+@c   Free Software Foundation, Inc. 
 @c See the file elisp.texi for copying conditions.
 @setfilename ../info/internals
 @node GNU Emacs Internals, Standard Errors, Tips, Top
@@ -215,7 +216,7 @@ to them, since there is no longer a way to reach them.  Their space
 might as well be reused, since no one will miss them.  The second
 (``sweep'') phase of the garbage collector arranges to reuse them.
 
-??? Maybe add something describing weak hash tables here?
+@c ??? Maybe add something describing weak hash tables here?
 
 @cindex free list
   The sweep phase puts unused cons cells onto a @dfn{free list}
@@ -254,10 +255,11 @@ information:
  (@var{used-syms} . @var{free-syms})
 @end group
  (@var{used-miscs} . @var{free-miscs})
- @var{used-string-chars} 
+ @var{used-string-chars}
  @var{used-vector-slots}
  (@var{used-floats} . @var{free-floats})
- (@var{used-intervals} . @var{free-intervals}))
+ (@var{used-intervals} . @var{free-intervals})
+ (@var{used-strings} . @var{free-strings}))
 @end example
 
 Here is an example:
@@ -267,7 +269,8 @@ Here is an example:
 (garbage-collect)
      @result{} ((106886 . 13184) (9769 . 0)
                 (7731 . 4651) 347543 121628
-                (31 . 94) (1273 . 168))
+                (31 . 94) (1273 . 168)
+                (25474 . 3569))
 @end group
 @end example
 
@@ -318,6 +321,15 @@ data structure used for representing text properties.
 @item free-intervals
 The number of intervals for which space has been obtained
 from the operating system, but that are not currently being used.
+
+@item used-strings
+The number of strings in use.
+
+@item free-strings
+The number of string headers for which the space was obtained from the
+operating system, but which are currently not in use.  (A string
+object consists of a header and the storage for the string text
+itself; the latter is only allocated when the string is created.)
 @end table
 @end deffn
 
@@ -410,6 +422,11 @@ The total number of intervals that have been allocated so far
 in this Emacs session.
 @end defvar
 
+@defvar strings-consed
+The total number of strings that have been allocated so far in this
+Emacs session.
+@end defvar
+
 @node Writing Emacs Primitives
 @appendixsec Writing Emacs Primitives
 @cindex primitive function internals
@@ -427,11 +444,12 @@ appearance.)
 @smallexample
 @group
 DEFUN ("or", For, Sor, 0, UNEVALLED, 0,
-  "Eval args until one of them yields non-nil; return that value.\n\
-The remaining args are not evalled at all.\n\
+  doc: /* Eval args until one of them yields non-nil, then return that value.
+The remaining args are not evalled at all.
+If all args return nil, return nil.
 @end group
 @group
-If all args return nil, return nil.")
+usage: (or CONDITIONS ...)  */)
   (args)
      Lisp_Object args;
 @{
@@ -517,10 +535,21 @@ called interactively.  A value of @code{""} indicates a function that
 should receive no arguments when called interactively.
 
 @item doc
-This is the documentation string.  It is written just like a
-documentation string for a function defined in Lisp, except you must
-write @samp{\n\} at the end of each line.  In particular, the first line
-should be a single sentence.
+This is the documentation string.  It uses C comment syntax rather
+than C string syntax because comment syntax requires nothing special
+to include multiple lines.  The @samp{doc:} identifies the comment
+that follows as the documentation string.  The @samp{/*} and @samp{*/}
+delimiters that begin and end the comment are not part of the
+documentation string.
+
+If the last line of the documentation string begins with the keyword
+@samp{usage:}, the rest of the line is treated as the argument list
+for documentation purposes.  This way, you can use different argument
+names in the documentation string from the ones used in the C code.
+
+All the usual rules for documentation strings in Lisp code
+(@pxref{Documentation Tips}) apply to C code documentation strings
+too.
 @end table
 
   After the call to the @code{DEFUN} macro, you must write the argument
@@ -561,7 +590,7 @@ you use @code{GCPRO2}, you must declare @code{gcpro1} and @code{gcpro2}.
 Alas, we can't explain all the tricky details here.
 
   You must not use C initializers for static or global variables unless
-the variables are never stored in once Emacs is dumped.  These variables
+the variables are never written once Emacs is dumped.  These variables
 with initializers are allocated in an area of memory that becomes
 read-only (on certain operating systems) as a result of dumping Emacs.
 @xref{Pure Storage}.
@@ -744,9 +773,9 @@ Here is a list of the @code{struct buffer_text} fields:
 
 @table @code
 @item beg
-This field contains the Actual address of the buffer contents.
+This field contains the actual address of the buffer contents.
 
-@item got
+@item gpt
 This holds the character position of the gap in the buffer.
 
 @item z
@@ -878,7 +907,7 @@ the last time the buffer was displayed in a window.
 This flag is set when narrowing changes in a buffer.
 
 @item prevent_redisplay_optimizations_p
-A flag indicating the redisplay optiomizations should not be used 
+this flag indicates that redisplay optimizations should not be used 
 to display this buffer.
 
 @item undo_list
@@ -1156,11 +1185,6 @@ redisplay does if point is off the screen: instead of scrolling the
 window to show the text around point, it moves point to a location that
 is on the screen.
 
-@item optional_new_start
-Set to a non-@code{nil} value when we have explicitly changed the value of
-@code{start}, but don't want the next redisplay to be obliged to use the
-new value.
-
 @item frozen_window_start_p
 This field is set temporarily to 1 to indicate to redisplay that 
 @code{start} of this window should not be changed, even if point
@@ -1211,7 +1235,7 @@ is used.
 @item right_margin_width
 Likewise for the right margin.
 
-@begin ignore
+@ignore
 @item last_mark_x
 @item last_mark_y
 ???Not used.
@@ -1239,7 +1263,7 @@ onto the screen.
 If redisplay in this window goes beyond this buffer position, it runs
 run the @code{redisplay-end-trigger-hook}.
 
-@begin ignore
+@ignore
 @item orig_height
 @item orig_top
 ??? Are temporary storage areas.