diff options
author | Karoly Lorentey <lorentey@elte.hu> | 2006-12-03 15:03:30 +0000 |
---|---|---|
committer | Karoly Lorentey <lorentey@elte.hu> | 2006-12-03 15:03:30 +0000 |
commit | 974b73e83842d63b14512aa225cc53983a9b5d14 (patch) | |
tree | 462170d38cbb7057e98f08e8c612a9d30eeea0fd /lispref | |
parent | d0104e754a241cf83811fef30195d41201de533c (diff) | |
parent | f5be22a273892218aad1db32c43ba562a08f3925 (diff) | |
download | emacs-974b73e83842d63b14512aa225cc53983a9b5d14.tar.gz |
Merged from emacs@sv.gnu.org. Last-minute emacsclient rewrites be damned!
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-490
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-491
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-492
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-493
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-494
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-495
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-496
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-497
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-498
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-499
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-500
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-501
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-502
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-503
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-504
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-505
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-506
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-507
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-508
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-509
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-510
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-511
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-512
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-513
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-514
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-515
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-516
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-517
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-518
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-519
Update from CVS: etc/TUTORIAL.cn: Updated.
* emacs@sv.gnu.org/emacs--devo--0--patch-520
Merge from erc--emacs--22
* emacs@sv.gnu.org/emacs--devo--0--patch-521
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-522
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-523
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-524
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-525
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-526
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-527
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-528
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-529
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-530
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-531
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-532
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-533
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-534
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-535
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-161
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-162
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-163
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-164
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-165
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-166
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-167
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-168
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-169
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-170
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-588
Diffstat (limited to 'lispref')
-rw-r--r-- | lispref/ChangeLog | 40 | ||||
-rw-r--r-- | lispref/customize.texi | 30 | ||||
-rw-r--r-- | lispref/display.texi | 15 | ||||
-rw-r--r-- | lispref/elisp.texi | 4 | ||||
-rw-r--r-- | lispref/frames.texi | 16 | ||||
-rw-r--r-- | lispref/keymaps.texi | 32 | ||||
-rw-r--r-- | lispref/lists.texi | 6 | ||||
-rw-r--r-- | lispref/makefile.w32-in | 4 | ||||
-rw-r--r-- | lispref/modes.texi | 40 | ||||
-rw-r--r-- | lispref/searching.texi | 3 |
10 files changed, 142 insertions, 48 deletions
diff --git a/lispref/ChangeLog b/lispref/ChangeLog index 03359e1cd29..312932c591a 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,10 +1,45 @@ +2006-11-29 Richard Stallman <rms@gnu.org> + + * frames.texi (Visibility of Frames): Explain visible windows + can be covered by others. Add xref for raise-frame. + +2006-11-28 Richard Stallman <rms@gnu.org> + + * searching.texi (Regexp Special): Update when ^ is special. + +2006-11-27 Eli Zaretskii <eliz@gnu.org> + + * customize.texi (Customization, Common Keywords) + (Group Definitions, Variable Definitions, Composite Types) + (Type Keywords, Customization Types): Add index entries for + various customization keywords. + +2006-11-23 Stefan Monnier <monnier@iro.umontreal.ca> + + * modes.texi (Multiline Font Lock): Rephrase some parts for clarity. + +2006-11-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * frames.texi (Window System Selections): Remove clipboard from + description of selection-coding-system. + +2006-11-06 Richard Stallman <rms@gnu.org> + + * lists.texi (List Variables): Document COMPARE-FN. + + * keymaps.texi: Avoid use of "binding" to mean a relation; + use it only to refer to the meaning associated with a key. + (Keymaps): Change menu node description. + + * elisp.texi (Top): Change menu node description. + + * display.texi (Managing Overlays): Document overlay-recenter. + 2006-10-29 Chong Yidong <cyd@stupidchicken.com> * Makefile.in: Use relative paths to avoid advertising filesystem contents during compilation. - * makefile.w32-in: Likewise. - 2006-10-23 Kim F. Storm <storm@cua.dk> * commands.texi (Event Input Misc): Update unread-command-events. @@ -5435,6 +5470,7 @@ Tue Apr 11 12:23:28 1989 Robert J. Chassell (bob@rice-chex.ai.mit.edu) ;; Local Variables: ;; coding: iso-2022-7bit +;; add-log-time-zone-rule: t ;; End: Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, diff --git a/lispref/customize.texi b/lispref/customize.texi index 9e10e547b56..d47c86308c8 100644 --- a/lispref/customize.texi +++ b/lispref/customize.texi @@ -7,6 +7,7 @@ @node Customization, Loading, Macros, Top @chapter Writing Customization Definitions +@cindex customization definitions This chapter describes how to declare user options for customization, and also customization groups for classifying them. We use the term @dfn{customization item} to include both kinds of customization @@ -23,6 +24,7 @@ definitions---as well as face definitions (@pxref{Defining Faces}). @node Common Keywords @section Common Item Keywords +@cindex customization keywords All kinds of customization declarations (for variables and groups, and for faces) accept keyword arguments for specifying various information. This section describes some keywords that apply to all kinds. @@ -34,6 +36,7 @@ display one name. @table @code @item :tag @var{label} +@kindex tag@r{, customization keyword} Use @var{label}, a string, instead of the item's name, to label the item in customization menus and buffers. @strong{Don't use a tag which is substantially different from the item's real name; that would @@ -45,6 +48,7 @@ specify a dash where normally a hyphen would be converted to a space: :tag "Cursor In Non-selected Windows" @end example +@kindex group@r{, customization keyword} @item :group @var{group} Put this customization item in group @var{group}. When you use @code{:group} in a @code{defgroup}, it makes the new group a subgroup of @@ -55,6 +59,7 @@ more than one group. Displaying any of those groups will show this item. Please don't overdo this, since the result would be annoying. @item :link @var{link-data} +@kindex link@r{, customization keyword} Include an external link after the documentation string for this item. This is a sentence containing an active field which references some other documentation. @@ -114,11 +119,13 @@ An item can have more than one external link; however, most items have none at all. @item :load @var{file} +@kindex load@r{, customization keyword} Load file @var{file} (a string) before displaying this customization item. Loading is done with @code{load-library}, and only if the file is not already loaded. @item :require @var{feature} +@kindex require@r{, customization keyword} Execute @code{(require '@var{feature})} when your saved customizations set the value of this item. @var{feature} should be a symbol. @@ -127,11 +134,13 @@ a feature such as a minor mode, and just setting the variable won't have any effect unless the code which implements the mode is loaded. @item :version @var{version} +@kindex version@r{, customization keyword} This option specifies that the item was first introduced in Emacs version @var{version}, or that its default value was changed in that version. The value @var{version} must be a string. @item :package-version '(@var{package} . @var{version}) +@kindex package-version@r{, customization keyword} This option specifies that the item was first introduced in @var{package} version @var{version}, or that its meaning or default value was changed in that version. The value of @var{package} is a @@ -179,6 +188,7 @@ choice is the official name of the package, such as MH-E or Gnus. @node Group Definitions @section Defining Custom Groups +@cindex custom groups, how to define Each Emacs Lisp package should have one main customization group which contains all the options, faces and other groups in the package. If the package has a small number of options and faces, use just one group and @@ -221,6 +231,7 @@ also use this keyword in @code{defgroup}: @table @code @item :prefix @var{prefix} +@kindex prefix@r{, @code{defgroup} keyword} If the name of an item in the group starts with @var{prefix}, then the tag for that item is constructed (by default) by omitting @var{prefix}. @@ -249,6 +260,8 @@ turn this feature back on, if someone would like to do the work. @node Variable Definitions @section Defining Customization Variables +@cindex customization variables, how to define +@cindex declare user-editable variables Use @code{defcustom} to declare user-editable variables. @defmac defcustom option standard doc [keyword value]@dots{} @@ -297,6 +310,7 @@ values are legitimate, and how to display the value. @xref{Customization Types}, for more information. @item :options @var{list} +@kindex options@r{, @code{defcustom} keyword} Specify @var{list} as the list of reasonable values for use in this option. The user is not restricted to using only these values, but they are offered as convenient alternatives. @@ -306,6 +320,7 @@ This is meaningful only for certain types, currently including individual types for a description of how to use @code{:options}. @item :set @var{setfunction} +@kindex set@r{, @code{defcustom} keyword} Specify @var{setfunction} as the way to change the value of this option. The function @var{setfunction} should take two arguments, a symbol (the option name) and the new value, and should do whatever is @@ -314,6 +329,7 @@ mean simply setting the option as a Lisp variable). The default for @var{setfunction} is @code{set-default}. @item :get @var{getfunction} +@kindex get@r{, @code{defcustom} keyword} Specify @var{getfunction} as the way to extract the value of this option. The function @var{getfunction} should take one argument, a symbol, and should return whatever customize should use as the @@ -327,6 +343,7 @@ is almost surely a mistake to specify @code{getfunction} for a value that really is stored in a Lisp variable. @item :initialize @var{function} +@kindex initialize@r{, @code{defcustom} keyword} @var{function} should be a function used to initialize the variable when the @code{defcustom} is evaluated. It should take two arguments, the option name (a symbol) and the value. Here are some predefined @@ -374,6 +391,7 @@ variables and functions will be defined, so there will not be an error. @end table @item :set-after @var{variables} +@kindex set-after@r{, @code{defcustom} keyword} When setting variables according to saved customizations, make sure to set the variables @var{variables} before this one; in other words, delay setting this variable until after those others have been handled. Use @@ -425,11 +443,13 @@ an expression which evaluates to the value. @node Customization Types @section Customization Types +@cindex customization types When you define a user option with @code{defcustom}, you must specify its @dfn{customization type}. That is a Lisp object which describes (1) which values are legitimate and (2) how to display the value in the customization buffer for editing. +@kindex type@r{, @code{defcustom} keyword} You specify the customization type in @code{defcustom} with the @code{:type} keyword. The argument of @code{:type} is evaluated, but only once when the @code{defcustom} is executed, so it isn't useful @@ -905,10 +925,12 @@ purposes. This is useful for a type that appears inside of a @code{choice}. @item :match-alternatives @var{criteria} +@kindex match-alternatives@r{, customization keyword} Use @var{criteria} to match possible values. This is used only in @code{restricted-sexp}. @item :args @var{argument-list} +@kindex args@r{, customization keyword} Use the elements of @var{argument-list} as the arguments of the type construct. For instance, @code{(const :args (foo))} is equivalent to @code{(const foo)}. You rarely need to write @code{:args} explicitly, @@ -986,6 +1008,7 @@ If @code{nil} is not a valid value for the alternative, then it is essential to specify a valid default with @code{:value}. @item :format @var{format-string} +@kindex format@r{, customization keyword} This string will be inserted in the buffer to represent the value corresponding to the type. The following @samp{%} escapes are available for use in @var{format-string}: @@ -1024,14 +1047,18 @@ Display a literal @samp{%}. @end table @item :action @var{action} +@kindex action@r{, customization keyword} Perform @var{action} if the user clicks on a button. @item :button-face @var{face} +@kindex button-face@r{, customization keyword} Use the face @var{face} (a face name or a list of face names) for button text displayed with @samp{%[@dots{}%]}. @item :button-prefix @var{prefix} @itemx :button-suffix @var{suffix} +@kindex button-prefix@r{, customization keyword} +@kindex button-suffix@r{, customization keyword} These specify the text to display before and after a button. Each can be: @@ -1051,6 +1078,7 @@ Use @var{tag} (a string) as the tag for the value (or part of the value) that corresponds to this type. @item :doc @var{doc} +@kindex doc@r{, customization keyword} Use @var{doc} as the documentation string for this value (or part of the value) that corresponds to this type. In order for this to work, you must specify a value for @code{:format}, and use @samp{%d} or @samp{%h} @@ -1061,6 +1089,7 @@ provide more information about the meanings of alternatives inside a @code{:choice} type or the parts of some other composite type. @item :help-echo @var{motion-doc} +@kindex help-echo@r{, customization keyword} When you move to this item with @code{widget-forward} or @code{widget-backward}, it will display the string @var{motion-doc} in the echo area. In addition, @var{motion-doc} is used as the mouse @@ -1069,6 +1098,7 @@ to yield a help string. If it is a function, it is called with one argument, the widget. @item :match @var{function} +@kindex match@r{, customization keyword} Specify how to decide whether a value matches the type. The corresponding value, @var{function}, should be a function that accepts two arguments, a widget and a value; it should return non-@code{nil} if diff --git a/lispref/display.texi b/lispref/display.texi index e7fab3ac7a8..a60cb9ab69d 100644 --- a/lispref/display.texi +++ b/lispref/display.texi @@ -1259,6 +1259,21 @@ foo @result{} t @end example + Emacs stores the overlays of each buffer in two lists, divided +around an arbitrary ``center position.'' One list extends backwards +through the buffer from that center position, and the other extends +forwards from that center position. The center position can be anywhere +in the buffer. + +@defun overlay-recenter pos +This function recenters the overlays of the current buffer around +position @var{pos}. That makes overlay lookup faster for positions +near @var{pos}, but slower for positions far away from @var{pos}. +@end defun + + A loop that scans the buffer forwards, creating overlays, can run +faster if you do @code{(overlay-recenter (point-max))} first. + @node Overlay Properties @subsection Overlay Properties diff --git a/lispref/elisp.texi b/lispref/elisp.texi index 367932ab13c..7b869d04041 100644 --- a/lispref/elisp.texi +++ b/lispref/elisp.texi @@ -7,7 +7,7 @@ @c Version of the manual and of Emacs. @c Please remember to update the edition number in README as well. @set VERSION 2.9 -@set EMACSVER 22.0.90 +@set EMACSVER 22.0.91 @dircategory Emacs @direntry @@ -614,7 +614,7 @@ Keymaps * Key Lookup:: How extracting elements from keymaps works. * Functions for Key Lookup:: How to request key lookup. * Changing Key Bindings:: Redefining a key in a keymap. -* Remapping Commands:: Bindings that translate one command to another. +* Remapping Commands:: A keymap can translate one command to another. * Key Binding Commands:: Interactive interfaces for redefining keys. * Scanning Keymaps:: Looking through all keymaps, for printing help. * Menu Keymaps:: A keymap can define a menu for X diff --git a/lispref/frames.texi b/lispref/frames.texi index 617a2a1d05d..f27aa35432c 100644 --- a/lispref/frames.texi +++ b/lispref/frames.texi @@ -1203,17 +1203,19 @@ moved by the OS to the selected frame.) @cindex frame visibility A window frame may be @dfn{visible}, @dfn{invisible}, or -@dfn{iconified}. If it is visible, you can see its contents. If it is -iconified, the frame's contents do not appear on the screen, but an icon -does. If the frame is invisible, it doesn't show on the screen, not -even as an icon. +@dfn{iconified}. If it is visible, you can see its contents, unless +other windows cover it. If it is iconified, the frame's contents do +not appear on the screen, but an icon does. If the frame is +invisible, it doesn't show on the screen, not even as an icon. Visibility is meaningless for terminal frames, since only the selected one is actually displayed in any case. @deffn Command make-frame-visible &optional frame -This function makes frame @var{frame} visible. If you omit @var{frame}, -it makes the selected frame visible. +This function makes frame @var{frame} visible. If you omit +@var{frame}, it makes the selected frame visible. This does not raise +the frame, but you can do that with @code{raise-frame} if you wish +(@pxref{Raising and Lowering}). @end deffn @deffn Command make-frame-invisible &optional frame force @@ -1691,7 +1693,7 @@ the third, and so on through all eight cut buffers. @defvar selection-coding-system This variable specifies the coding system to use when reading and -writing selections, the clipboard, or a cut buffer. @xref{Coding +writing selections or the clipboard. @xref{Coding Systems}. The default is @code{compound-text-with-extensions}, which converts to the text representation that X11 normally uses. @end defvar diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi index 1f017b1f43e..a9b9ca2d512 100644 --- a/lispref/keymaps.texi +++ b/lispref/keymaps.texi @@ -8,12 +8,12 @@ @chapter Keymaps @cindex keymap - The bindings between input events and commands are recorded in data -structures called @dfn{keymaps}. Each binding in a keymap associates -(or @dfn{binds}) an individual event type, either to another keymap or to -a command. When an event type is bound to a keymap, that keymap is used -to look up the next input event; this continues until a command is -found. The whole process is called @dfn{key lookup}. + The command bindings of input events are recorded in data structures +called @dfn{keymaps}. Each entry in a keymap associates (or +@dfn{binds}) an individual event type, either to another keymap or to +a command. When an event type is bound to a keymap, that keymap is +used to look up the next input event; this continues until a command +is found. The whole process is called @dfn{key lookup}. @menu * Key Sequences:: Key sequences as Lisp objects. @@ -32,7 +32,7 @@ found. The whole process is called @dfn{key lookup}. * Key Lookup:: Finding a key's binding in one keymap. * Functions for Key Lookup:: How to request key lookup. * Changing Key Bindings:: Redefining a key in a keymap. -* Remapping Commands:: Bindings that translate one command to another. +* Remapping Commands:: A keymap can translate one command to another. * Translation Keymaps:: Keymaps for translating sequences of events. * Key Binding Commands:: Interactive interfaces for redefining keys. * Scanning Keymaps:: Looking through all keymaps, for printing help. @@ -382,19 +382,21 @@ definition is a keymap; the same symbol appears in the new copy. @dfn{parent keymap}. Such a keymap looks like this: @example -(keymap @var{bindings}@dots{} . @var{parent-keymap}) +(keymap @var{elements}@dots{} . @var{parent-keymap}) @end example @noindent The effect is that this keymap inherits all the bindings of @var{parent-keymap}, whatever they may be at the time a key is looked up, -but can add to them or override them with @var{bindings}. - -If you change the bindings in @var{parent-keymap} using @code{define-key} -or other key-binding functions, these changes are visible in the -inheriting keymap unless shadowed by @var{bindings}. The converse is -not true: if you use @code{define-key} to change the inheriting keymap, -that affects @var{bindings}, but has no effect on @var{parent-keymap}. +but can add to them or override them with @var{elements}. + +If you change the bindings in @var{parent-keymap} using +@code{define-key} or other key-binding functions, these changed +bindings are visible in the inheriting keymap, unless shadowed by the +bindings made by @var{elements}. The converse is not true: if you use +@code{define-key} to change bindings in the inheriting keymap, these +changes are recorded in @var{elements}, but have no effect on +@var{parent-keymap}. The proper way to construct a keymap with a parent is to use @code{set-keymap-parent}; if you have code that directly constructs a diff --git a/lispref/lists.texi b/lispref/lists.texi index 62c7600fd17..cf725413895 100644 --- a/lispref/lists.texi +++ b/lispref/lists.texi @@ -713,12 +713,14 @@ l Two functions modify lists that are the values of variables. -@defun add-to-list symbol element &optional append +@defun add-to-list symbol element &optional append compare-fn This function sets the variable @var{symbol} by consing @var{element} onto the old value, if @var{element} is not already a member of that value. It returns the resulting list, whether updated or not. The value of @var{symbol} had better be a list already before the call. -Membership is tested using @code{equal}. +@code{add-to-list} uses @var{compare-fn} to compare @var{element} +against existing list members; if @var{compare-fn} is @code{nil}, it +uses @code{equal}. Normally, if @var{element} is added, it is added to the front of @var{symbol}, but if the optional argument @var{append} is diff --git a/lispref/makefile.w32-in b/lispref/makefile.w32-in index 93bb5ae6d45..7da88058bd5 100644 --- a/lispref/makefile.w32-in +++ b/lispref/makefile.w32-in @@ -22,7 +22,7 @@ # Standard configure variables. srcdir = . -infodir = ../info +infodir = $(srcdir)/../info usermanualdir = $(srcdir)/../man # Redefine `TEX' if `tex' does not invoke plain TeX. For example: @@ -106,7 +106,7 @@ $(infodir)/dir: $(INSTALL_INFO) --info-dir=$(infodir) $(infodir)/elisp $(infodir)/elisp: $(srcs) - cd $(srcdir); $(MAKEINFO) -I. -I$(infodir) elisp.texi -o $(infodir)/elisp + $(MAKEINFO) -I. -I$(srcdir) -o $(infodir)/elisp $(srcdir)/elisp.texi elisp.dvi: $(srcs) $(texinputdir) $(TEX) -I $(usermanualdir) $(srcdir)/elisp.texi diff --git a/lispref/modes.texi b/lispref/modes.texi index d5e058fa1c8..4f68bb5064b 100644 --- a/lispref/modes.texi +++ b/lispref/modes.texi @@ -3043,16 +3043,19 @@ constructs: @itemize @item -Place a @code{font-lock-multiline} -property on the construct when it is added to the buffer. -@item -Use @code{font-lock-fontify-region-function} hook to extend the scan -so that the scanned text never starts or ends in the middle of a -multiline construct. -@item Add a function to @code{font-lock-extend-region-functions} that does the @emph{identification} and extends the scan so that the scanned text never starts or ends in the middle of a multiline construct. +@item +Use the @code{font-lock-fontify-region-function} hook similarly to +extend the scan so that the scanned text never starts or ends in the +middle of a multiline construct. +@item +Somehow identify the multiline construct right when it gets inserted +into the buffer (or at any point after that but before font-lock +tries to highlight it), and mark it with a @code{font-lock-multiline} +which will instruct font-lock not to start or end the scan in the +middle of the construct. @end itemize There are three ways to do rehighlighting of multiline constructs: @@ -3062,18 +3065,21 @@ text never starts or ends in the middle of a multiline construct. Place a @code{font-lock-multiline} property on the construct. This will rehighlight the whole construct if any part of it is changed. In some cases you can do this automatically by setting the -@code{font-lock-multiline} variable. +@code{font-lock-multiline} variable, which see. @item -Use @code{jit-lock-contextually}. This will only rehighlight the part -of the construct that follows the actual change, and will do it after -a short delay. This only works if the highlighting of the various -parts of your multiline construct never depends on text in subsequent -lines. Since @code{jit-lock-contextually} is activated by default, -this can be an attractive solution. +Make sure @code{jit-lock-contextually} is set and rely on it doing its +job. This will only rehighlight the part of the construct that +follows the actual change, and will do it after a short delay. +This only works if the highlighting of the various parts of your +multiline construct never depends on text in subsequent lines. +Since @code{jit-lock-contextually} is activated by default, this can +be an attractive solution. @item Place a @code{jit-lock-defer-multiline} property on the construct. -This works only if @code{jit-lock-contextually} is used, but it can -handle the case where highlighting depends on subsequent lines. +This works only if @code{jit-lock-contextually} is used, and with the +same delay before rehighlighting, but like @code{font-lock-multiline}, +it also handles the case where highlighting depends on +subsequent lines. @end itemize @menu @@ -3086,7 +3092,7 @@ handle the case where highlighting depends on subsequent lines. @subsubsection Font Lock Multiline One way to ensure reliable rehighlighting of multiline Font Lock -constructs is to put on the text property @code{font-lock-multiline}. +constructs is to put on them the text property @code{font-lock-multiline}. It should be present and non-@code{nil} for text that is part of a multiline construct. diff --git a/lispref/searching.texi b/lispref/searching.texi index 204cfa1d319..bc3fd9ce911 100644 --- a/lispref/searching.texi +++ b/lispref/searching.texi @@ -438,7 +438,8 @@ When matching a string instead of a buffer, @samp{^} matches at the beginning of the string or after a newline character. For historical compatibility reasons, @samp{^} can be used only at the -beginning of the regular expression, or after @samp{\(} or @samp{\|}. +beginning of the regular expression, or after @samp{\(}, @samp{\(?:} +or @samp{\|}. @item @samp{$} @cindex @samp{$} in regexp |