(DATAGRAM_CONN_P, list_processes_1)
[bpt/emacs.git] / lispref / modes.texi
index 4ea2e6d..715eccd 100644 (file)
@@ -35,7 +35,12 @@ user.  For related topics such as keymaps and syntax tables, see
 @cindex Fundamental mode
 
   Major modes specialize Emacs for editing particular kinds of text.
 @cindex Fundamental mode
 
   Major modes specialize Emacs for editing particular kinds of text.
-Each buffer has only one major mode at a time.
+Each buffer has only one major mode at a time.  For each major mode
+there is a function to switch to that mode in the current buffer; its
+name should end in @samp{-mode}.  These functions work by setting
+buffer-local variable bindings and other data associated with the
+buffer, such as a local keymap.  The effect lasts until you switch
+to another major mode in the same buffer.
 
   The least specialized major mode is called @dfn{Fundamental mode}.
 This mode has no mode-specific definitions or variable settings, so each
 
   The least specialized major mode is called @dfn{Fundamental mode}.
 This mode has no mode-specific definitions or variable settings, so each
@@ -1058,23 +1063,36 @@ line and column numbers, since those depend on point and on how the
 window is scrolled.  @code{header-line-format} is used likewise for
 header lines.
 
 window is scrolled.  @code{header-line-format} is used likewise for
 header lines.
 
-  The mode line and header line of a window are normally updated
-whenever a different buffer is shown in the window, or when the buffer's
-modified-status changes from @code{nil} to @code{t} or vice-versa.  If
-you modify any of the variables referenced by @code{mode-line-format}
-(@pxref{Mode Line Variables}), or any other variables and data
-structures that affect how text is displayed (@pxref{Display}), you may
-want to force an update of the mode line so as to display the new
-information or display it in the new way.
+  For efficiency, Emacs does not recompute the mode line and header
+line of a window in every redisplay.  It does so when circumstances
+appear to call for it---for instance, if you change the window
+configuration, switch buffers, narrow or widen the buffer, scroll, or
+change the buffer's modification status.  If you modify any of the
+variables referenced by @code{mode-line-format} (@pxref{Mode Line
+Variables}), or any other variables and data structures that affect
+how text is displayed (@pxref{Display}), you may want to force an
+update of the mode line so as to display the new information or
+display it in the new way.
 
 @c Emacs 19 feature
 @defun force-mode-line-update
 Force redisplay of the current buffer's mode line and header line.
 
 @c Emacs 19 feature
 @defun force-mode-line-update
 Force redisplay of the current buffer's mode line and header line.
+The next redisplay will update the mode line and header line based on
+the latest values of all relevant variables.
+
+This function also forces recomputation of the menu bar menus
+and the frame title.
 @end defun
 
   The mode line is usually displayed in inverse video; see
 @code{mode-line-inverse-video} in @ref{Inverse Video}.
 
 @end defun
 
   The mode line is usually displayed in inverse video; see
 @code{mode-line-inverse-video} in @ref{Inverse Video}.
 
+  A window that is just one line tall does not display either a mode
+line or a header line, even if the variables call for one.  A window
+that is two lines tall cannot display both a mode line and a header
+line at once; if the variables call for both, only the mode line
+actually appears.
+
 @menu
 * Mode Line Data::        The data structure that controls the mode line.
 * Mode Line Variables::   Variables used in that data structure.
 @menu
 * Mode Line Data::        The data structure that controls the mode line.
 * Mode Line Variables::   Variables used in that data structure.
@@ -2193,8 +2211,9 @@ then the value is a list of functions, but it is abnormal in that either
 these functions are called with arguments or their values are used in
 some way.  You can use @code{add-hook} to add a function to the list,
 but you must take care in writing the function.  (A few of these
 these functions are called with arguments or their values are used in
 some way.  You can use @code{add-hook} to add a function to the list,
 but you must take care in writing the function.  (A few of these
-variables are actually normal hooks which were named before we
-established the convention of using @samp{-hook} for them.)
+variables, notably those ending in @samp{-hooks}, are actually
+normal hooks which were named before we established the convention of
+using @samp{-hook} for them.)
 
   If the variable's name ends in @samp{-function}, then its value
 is just a single function, not a list of functions.
 
   If the variable's name ends in @samp{-function}, then its value
 is just a single function, not a list of functions.
@@ -2277,9 +2296,8 @@ executed first (barring another @code{add-hook} call).  If the optional
 argument @var{append} is non-@code{nil}, the new hook function goes at
 the end of the hook list and will be executed last.
 
 argument @var{append} is non-@code{nil}, the new hook function goes at
 the end of the hook list and will be executed last.
 
-If @var{local} is non-@code{nil}, that says to make the new hook
-function buffer-local in the current buffer and automatically calls
-@code{make-local-hook} to make the hook itself buffer-local.
+If @var{local} is non-@code{nil}, that says to add @var{function}
+to the buffer-local hook list instead of to the global hook list.
 @end defun
 
 @defun remove-hook hook function &optional local
 @end defun
 
 @defun remove-hook hook function &optional local
@@ -2287,24 +2305,4 @@ This function removes @var{function} from the hook variable @var{hook}.
 
 If @var{local} is non-@code{nil}, that says to remove @var{function}
 from the buffer-local hook list instead of from the global hook list.
 
 If @var{local} is non-@code{nil}, that says to remove @var{function}
 from the buffer-local hook list instead of from the global hook list.
-If the hook variable itself is not buffer-local, then the value of
-@var{local} makes no difference.
-@end defun
-
-@defun make-local-hook hook
-This function makes the hook variable @code{hook} buffer-local in the
-current buffer.  When a hook variable is buffer-local, it can have
-buffer-local and global hook functions, and @code{run-hooks} runs all of
-them.
-
-This function works by adding @code{t} as an element of the buffer-local
-value.  That serves as a flag to use the hook functions listed in the default
-value of the hook variable, as well as those listed in the buffer-local value.
-Since @code{run-hooks} understands this flag, @code{make-local-hook}
-works with all normal hooks.  It works for only some non-normal
-hooks---those whose callers have been updated to understand this meaning
-of @code{t}.
-
-Do not use @code{make-local-variable} directly for hook variables; it is
-not sufficient.
 @end defun
 @end defun