aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-08-29 23:19:35 -0700
committerPaul Eggert2011-08-29 23:19:35 -0700
commitf00b626d886d32b08aa6fb47e1cee124c1926897 (patch)
tree0a59d9093e02dea55a0aca750cd5059231196e33
parent6e1a67fbe915e6fdc1d63a8e6c434aa79e4e7fb4 (diff)
parent393aa9d403dda96b2fa061311cc76bbad40489cf (diff)
downloademacs-f00b626d886d32b08aa6fb47e1cee124c1926897.tar.gz
emacs-f00b626d886d32b08aa6fb47e1cee124c1926897.zip
Merge from trunk.
-rw-r--r--doc/emacs/ChangeLog4
-rw-r--r--doc/emacs/modes.texi13
-rw-r--r--doc/lispref/ChangeLog7
-rw-r--r--doc/lispref/elisp.texi5
-rw-r--r--doc/lispref/modes.texi337
-rw-r--r--doc/lispref/vol1.texi7
-rw-r--r--doc/lispref/vol2.texi7
-rw-r--r--etc/ChangeLog6
-rw-r--r--etc/MACHINES276
-rw-r--r--etc/NEWS15
-rw-r--r--etc/PROBLEMS37
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/isearch.el2
13 files changed, 267 insertions, 454 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 58b98189e29..2407d7dd18f 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,7 @@
12011-08-29 Chong Yidong <cyd@stupidchicken.com>
2
3 * modes.texi (Choosing Modes): auto-mode-case-fold is now t.
4
12011-08-28 Chong Yidong <cyd@stupidchicken.com> 52011-08-28 Chong Yidong <cyd@stupidchicken.com>
2 6
3 * files.texi (File Archives): 7 * files.texi (File Archives):
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
index 314d5d4347e..d82423a73b4 100644
--- a/doc/emacs/modes.texi
+++ b/doc/emacs/modes.texi
@@ -353,12 +353,13 @@ the element has the form @code{(@var{regexp} @var{mode-function}
353@var{regexp} and searches the list again for another match. 353@var{regexp} and searches the list again for another match.
354 354
355@vindex auto-mode-case-fold 355@vindex auto-mode-case-fold
356 On systems with case-insensitive file names, such as Microsoft 356 On GNU/Linux and other systems with case-sensitive file names, Emacs
357Windows, Emacs performs a single case-insensitive search through 357performs a case-sensitive search through @code{auto-mode-alist}; if
358@code{auto-mode-alist}. On other systems, Emacs normally performs a 358this search fails, it performs a second case-insensitive search
359single case-sensitive search through the alist. However, if you 359through the alist. To suppress the second search, change the variable
360change the variable @code{auto-mode-case-fold} to @code{t}, Emacs 360@code{auto-mode-case-fold} to @code{nil}. On systems with
361performs a second case-insensitive search if the first search fails. 361case-insensitive file names, such as Microsoft Windows, Emacs performs
362a single case-insensitive search through @code{auto-mode-alist}.
362 363
363@vindex magic-fallback-mode-alist 364@vindex magic-fallback-mode-alist
364 Finally, if Emacs @emph{still} hasn't found a major mode to use, it 365 Finally, if Emacs @emph{still} hasn't found a major mode to use, it
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index aae0be5a054..57dde5ac4cb 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,10 @@
12011-08-29 Chong Yidong <cyd@stupidchicken.com>
2
3 * modes.texi (Basic Major Modes): New node. Callers updated.
4 (Major Modes): Document fundamental-mode and major-mode.
5 (Major Mode Basics): Node deleted; text moved to Major Modes.
6 (Derived Modes): Document derived-mode-p.
7
12011-08-28 Chong Yidong <cyd@stupidchicken.com> 82011-08-28 Chong Yidong <cyd@stupidchicken.com>
2 9
3 * files.texi (Changing Files, Create/Delete Dirs): Document new 10 * files.texi (Changing Files, Create/Delete Dirs): Document new
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index bb05f1b4a0b..a19af903027 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -765,8 +765,7 @@ Major and Minor Modes
765* Major Modes:: Defining major modes. 765* Major Modes:: Defining major modes.
766* Minor Modes:: Defining minor modes. 766* Minor Modes:: Defining minor modes.
767* Mode Line Format:: Customizing the text that appears in the mode line. 767* Mode Line Format:: Customizing the text that appears in the mode line.
768* Imenu:: How a mode can provide a menu 768* Imenu:: Providing a menu of definitions made in a buffer.
769 of definitions in the buffer.
770* Font Lock Mode:: How modes can highlight text according to syntax. 769* Font Lock Mode:: How modes can highlight text according to syntax.
771* Desktop Save Mode:: How modes can have buffer state saved between 770* Desktop Save Mode:: How modes can have buffer state saved between
772 Emacs sessions. 771 Emacs sessions.
@@ -778,12 +777,12 @@ Hooks
778 777
779Major Modes 778Major Modes
780 779
781* Major Mode Basics::
782* Major Mode Conventions:: Coding conventions for keymaps, etc. 780* Major Mode Conventions:: Coding conventions for keymaps, etc.
783* Auto Major Mode:: How Emacs chooses the major mode automatically. 781* Auto Major Mode:: How Emacs chooses the major mode automatically.
784* Mode Help:: Finding out how to use a mode. 782* Mode Help:: Finding out how to use a mode.
785* Derived Modes:: Defining a new major mode based on another major 783* Derived Modes:: Defining a new major mode based on another major
786 mode. 784 mode.
785* Basic Major Modes:: Modes that other modes are often derived from.
787* Generic Modes:: Defining a simple major mode that supports 786* Generic Modes:: Defining a simple major mode that supports
788 comment syntax and Font Lock mode. 787 comment syntax and Font Lock mode.
789* Mode Hooks:: Hooks run at the end of major mode functions. 788* Mode Hooks:: Hooks run at the end of major mode functions.
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index a354265b365..586fc0bbbfb 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -19,16 +19,15 @@ user. For related topics such as keymaps and syntax tables, see
19@ref{Keymaps}, and @ref{Syntax Tables}. 19@ref{Keymaps}, and @ref{Syntax Tables}.
20 20
21@menu 21@menu
22* Hooks:: How to use hooks; how to write code that provides hooks. 22* Hooks:: How to use hooks; how to write code that provides hooks.
23* Major Modes:: Defining major modes. 23* Major Modes:: Defining major modes.
24* Minor Modes:: Defining minor modes. 24* Minor Modes:: Defining minor modes.
25* Mode Line Format:: Customizing the text that appears in the mode line. 25* Mode Line Format:: Customizing the text that appears in the mode line.
26* Imenu:: How a mode can provide a menu 26* Imenu:: Providing a menu of definitions made in a buffer.
27 of definitions in the buffer. 27* Font Lock Mode:: How modes can highlight text according to syntax.
28* Font Lock Mode:: How modes can highlight text according to syntax. 28* Auto-Indentation:: How to teach Emacs to indent for a major mode.
29* Auto-Indentation:: How to teach Emacs to indent for a major mode. 29* Desktop Save Mode:: How modes can have buffer state saved between
30* Desktop Save Mode:: How modes can have buffer state saved between 30 Emacs sessions.
31 Emacs sessions.
32@end menu 31@end menu
33 32
34@node Hooks 33@node Hooks
@@ -48,12 +47,12 @@ convention, whenever the hook name ends in @samp{-hook}, that tells
48you it is normal. We try to make all hooks normal, as much as 47you it is normal. We try to make all hooks normal, as much as
49possible, so that you can use them in a uniform way. 48possible, so that you can use them in a uniform way.
50 49
51 Every major mode function is supposed to run a normal hook called 50 Every major mode command is supposed to run a normal hook called the
52the @dfn{mode hook} as the one of the last steps of initialization. 51@dfn{mode hook} as the one of the last steps of initialization. This
53This makes it easy for a user to customize the behavior of the mode, 52makes it easy for a user to customize the behavior of the mode, by
54by overriding the buffer-local variable assignments already made by 53overriding the buffer-local variable assignments already made by the
55the mode. Most minor mode functions also run a mode hook at the end. 54mode. Most minor mode functions also run a mode hook at the end. But
56But hooks are used in other contexts too. For example, the hook 55hooks are used in other contexts too. For example, the hook
57@code{suspend-hook} runs just before Emacs suspends itself 56@code{suspend-hook} runs just before Emacs suspends itself
58(@pxref{Suspending Emacs}). 57(@pxref{Suspending Emacs}).
59 58
@@ -78,8 +77,8 @@ convention.
78its value is just a single function, not a list of functions. 77its value is just a single function, not a list of functions.
79 78
80@menu 79@menu
81* Running Hooks:: How to run a hook. 80* Running Hooks:: How to run a hook.
82* Setting Hooks:: How to put functions on a hook, or remove them. 81* Setting Hooks:: How to put functions on a hook, or remove them.
83@end menu 82@end menu
84 83
85@node Running Hooks 84@node Running Hooks
@@ -195,115 +194,98 @@ from the buffer-local hook list instead of from the global hook list.
195@section Major Modes 194@section Major Modes
196@cindex major mode 195@cindex major mode
197 196
197@cindex major mode command
198 Major modes specialize Emacs for editing particular kinds of text. 198 Major modes specialize Emacs for editing particular kinds of text.
199Each buffer has only one major mode at a time. For each major mode 199Each buffer has one major mode at a time. Every major mode is
200there is a function to switch to that mode in the current buffer; its 200associated with a @dfn{major mode command}, whose name should end in
201name should end in @samp{-mode}. These functions work by setting 201@samp{-mode}. This command takes care of switching to that mode in the
202buffer-local variable bindings and other data associated with the 202current buffer, by setting various buffer-local variables such as a
203buffer, such as a local keymap. The effect lasts until you switch 203local keymap. @xref{Major Mode Conventions}.
204to another major mode in the same buffer. 204
205 The least specialized major mode is called @dfn{Fundamental mode},
206which has no mode-specific definitions or variable settings.
207
208@deffn Command fundamental-mode
209This is the major mode command for Fundamental mode. Unlike other mode
210commands, it does @emph{not} run any mode hooks (@pxref{Major Mode
211Conventions}), since you are not supposed to customize this mode.
212@end deffn
213
214 The easiest way to write a major mode is to use the macro
215@code{define-derived-mode}, which sets up the new mode as a variant of
216an existing major mode. @xref{Derived Modes}. We recommend using
217@code{define-derived-mode} even if the new mode is not an obvious
218derivative of another mode, as it automatically enforces many coding
219conventions for you. @xref{Basic Major Modes}, for common modes to
220derive from.
221
222 The standard GNU Emacs Lisp directory tree contains the code for
223several major modes, in files such as @file{text-mode.el},
224@file{texinfo.el}, @file{lisp-mode.el}, and @file{rmail.el}. You can
225study these libraries to see how modes are written.
226
227@defopt major-mode
228The buffer-local value of this variable is a symbol naming the buffer's
229current major mode. Its default value holds the default major mode for
230new buffers. The standard default value is @code{fundamental-mode}.
231
232If the default value is @code{nil}, then whenever Emacs creates a new
233buffer via a command such as @kbd{C-x b} (@code{switch-to-buffer}), the
234new buffer is put in the major mode of the previously current buffer.
235As an exception, if the major mode of the previous buffer has a
236@code{mode-class} symbol property with value @code{special}, the new
237buffer is put in Fundamental mode (@pxref{Major Mode Conventions}).
238@end defopt
205 239
206@menu 240@menu
207* Major Mode Basics:: 241* Major Mode Conventions:: Coding conventions for keymaps, etc.
208* Major Mode Conventions:: Coding conventions for keymaps, etc. 242* Auto Major Mode:: How Emacs chooses the major mode automatically.
209* Auto Major Mode:: How Emacs chooses the major mode automatically. 243* Mode Help:: Finding out how to use a mode.
210* Mode Help:: Finding out how to use a mode. 244* Derived Modes:: Defining a new major mode based on another major
211* Derived Modes:: Defining a new major mode based on another major
212 mode. 245 mode.
213* Generic Modes:: Defining a simple major mode that supports 246* Basic Major Modes:: Modes that other modes are often derived from.
247* Generic Modes:: Defining a simple major mode that supports
214 comment syntax and Font Lock mode. 248 comment syntax and Font Lock mode.
215* Mode Hooks:: Hooks run at the end of major mode functions. 249* Mode Hooks:: Hooks run at the end of major mode commands.
216* Example Major Modes:: Text mode and Lisp modes. 250* Example Major Modes:: Text mode and Lisp modes.
217@end menu 251@end menu
218 252
219@node Major Mode Basics
220@subsection Major Mode Basics
221@cindex Fundamental mode
222
223 The least specialized major mode is called @dfn{Fundamental mode}.
224This mode has no mode-specific definitions or variable settings, so each
225Emacs command behaves in its default manner, and each option is in its
226default state. All other major modes redefine various keys and options.
227For example, Lisp Interaction mode provides special key bindings for
228@kbd{C-j} (@code{eval-print-last-sexp}), @key{TAB}
229(@code{lisp-indent-line}), and other keys.
230
231 When you need to write several editing commands to help you perform a
232specialized editing task, creating a new major mode is usually a good
233idea. In practice, writing a major mode is easy (in contrast to
234writing a minor mode, which is often difficult).
235
236 If the new mode is similar to an old one, it is often unwise to
237modify the old one to serve two purposes, since it may become harder
238to use and maintain. Instead, copy and rename an existing major mode
239definition and alter the copy---or use the @code{define-derived-mode}
240macro to define a @dfn{derived mode} (@pxref{Derived Modes}). For
241example, Rmail Edit mode is a major mode that is very similar to Text
242mode except that it provides two additional commands. Its definition
243is distinct from that of Text mode, but uses that of Text mode.
244
245 Even if the new mode is not an obvious derivative of any other mode,
246we recommend to use @code{define-derived-mode}, since it automatically
247enforces the most important coding conventions for you.
248
249 For a very simple programming language major mode that handles
250comments and fontification, you can use @code{define-generic-mode}.
251@xref{Generic Modes}.
252
253 Rmail Edit mode offers an example of changing the major mode
254temporarily for a buffer, so it can be edited in a different way (with
255ordinary Emacs commands rather than Rmail commands). In such cases, the
256temporary major mode usually provides a command to switch back to the
257buffer's usual mode (Rmail mode, in this case). You might be tempted to
258present the temporary redefinitions inside a recursive edit and restore
259the usual ones when the user exits; but this is a bad idea because it
260constrains the user's options when it is done in more than one buffer:
261recursive edits must be exited most-recently-entered first. Using an
262alternative major mode avoids this limitation. @xref{Recursive
263Editing}.
264
265 The standard GNU Emacs Lisp library directory tree contains the code
266for several major modes, in files such as @file{text-mode.el},
267@file{texinfo.el}, @file{lisp-mode.el}, @file{c-mode.el}, and
268@file{rmail.el}. They are found in various subdirectories of the
269@file{lisp} directory. You can study these libraries to see how modes
270are written. Text mode is perhaps the simplest major mode aside from
271Fundamental mode. Rmail mode is a complicated and specialized mode.
272
273@node Major Mode Conventions 253@node Major Mode Conventions
274@subsection Major Mode Conventions 254@subsection Major Mode Conventions
275@cindex major mode conventions 255@cindex major mode conventions
276@cindex conventions for writing major modes 256@cindex conventions for writing major modes
277 257
278 The code for existing major modes follows various coding conventions, 258 The code for every major mode should follow various coding
279including conventions for local keymap and syntax table initialization, 259conventions, including conventions for local keymap and syntax table
280global names, and hooks. Please follow these conventions when you 260initialization, function and variable names, and hooks.
281define a new major mode. (Fundamental mode is an exception to many 261
282of these conventions, because its definition is to present the global 262 If you use the @code{define-derived-mode} macro, it will take care of
283state of Emacs.) 263many of these conventions automatically. @xref{Derived Modes}. Note
264also that fundamental mode is an exception to many of these conventions,
265because its definition is to present the global state of Emacs.
284 266
285 This list of conventions is only partial, because each major mode 267 The following list of conventions is only partial. Each major mode
286should aim for consistency in general with other Emacs major modes. 268should aim for consistency in general with other Emacs major modes, as
287This makes Emacs as a whole more coherent. It is impossible to list 269this makes Emacs as a whole more coherent. It is impossible to list
288here all the possible points where this issue might come up; if the 270here all the possible points where this issue might come up; if the
289Emacs developers point out an area where your major mode deviates from 271Emacs developers point out an area where your major mode deviates from
290the usual conventions, please make it compatible. 272the usual conventions, please make it compatible.
291 273
292@itemize @bullet 274@itemize @bullet
293@item 275@item
294Define a command whose name ends in @samp{-mode}, with no arguments, 276Define a major mode command whose name ends in @samp{-mode}. When
295that switches to the new mode in the current buffer. This command 277called with no arguments, this command should switch to the new mode in
296should set up the keymap, syntax table, and buffer-local variables in an 278the current buffer by setting up the keymap, syntax table, and
297existing buffer, without changing the buffer's contents. 279buffer-local variables in an existing buffer. It should not change the
280buffer's contents.
298 281
299@item 282@item
300Write a documentation string for this command that describes the 283Write a documentation string for this command that describes the special
301special commands available in this mode. @kbd{C-h m} 284commands available in this mode. @xref{Mode Help}.
302(@code{describe-mode}) in your mode will display this string.
303 285
304The documentation string may include the special documentation 286The documentation string may include the special documentation
305substrings, @samp{\[@var{command}]}, @samp{\@{@var{keymap}@}}, and 287substrings, @samp{\[@var{command}]}, @samp{\@{@var{keymap}@}}, and
306@samp{\<@var{keymap}>}, which enable the documentation to adapt 288@samp{\<@var{keymap}>}, which allow the help display to adapt
307automatically to the user's own key bindings. @xref{Keys in 289automatically to the user's own key bindings. @xref{Keys in
308Documentation}. 290Documentation}.
309 291
@@ -527,10 +509,9 @@ mode when creating new buffers (@pxref{Auto Major Mode}), but with such
527Dired, Rmail, and Buffer List use this feature. 509Dired, Rmail, and Buffer List use this feature.
528 510
529The @code{define-derived-mode} macro automatically marks the derived 511The @code{define-derived-mode} macro automatically marks the derived
530mode as special if the parent mode is special. The special mode 512mode as special if the parent mode is special. Special mode is a
531@code{special-mode} provides a convenient parent for other special 513convenient parent for such modes to inherit from; @xref{Basic Major
532modes to inherit from; it sets @code{buffer-read-only} to @code{t}, 514Modes}.
533and does little else.
534 515
535@item 516@item
536If you want to make the new mode the default for files with certain 517If you want to make the new mode the default for files with certain
@@ -564,16 +545,6 @@ Even if you never load the file more than once, someone else will.
564automatically selects a major mode for the new buffer when a file is 545automatically selects a major mode for the new buffer when a file is
565visited. It also processes local variables specified in the file text. 546visited. It also processes local variables specified in the file text.
566 547
567@deffn Command fundamental-mode
568 Fundamental mode is a major mode that is not specialized for anything
569in particular. Other major modes are defined in effect by comparison
570with this one---their definitions say what to change, starting from
571Fundamental mode. The @code{fundamental-mode} function does @emph{not}
572run any mode hooks; you're not supposed to customize it. (If you want Emacs
573to behave differently in Fundamental mode, change the @emph{global}
574state of Emacs.)
575@end deffn
576
577@deffn Command normal-mode &optional find-file 548@deffn Command normal-mode &optional find-file
578This function establishes the proper major mode and buffer-local variable 549This function establishes the proper major mode and buffer-local variable
579bindings for the current buffer. First it calls @code{set-auto-mode} 550bindings for the current buffer. First it calls @code{set-auto-mode}
@@ -599,23 +570,22 @@ by the default value of @code{major-mode} (see below).
599 570
600@cindex file mode specification error 571@cindex file mode specification error
601@code{normal-mode} uses @code{condition-case} around the call to the 572@code{normal-mode} uses @code{condition-case} around the call to the
602major mode function, so errors are caught and reported as a @samp{File 573major mode command, so errors are caught and reported as a @samp{File
603mode specification error}, followed by the original error message. 574mode specification error}, followed by the original error message.
604@end deffn 575@end deffn
605 576
606@defun set-auto-mode &optional keep-mode-if-same 577@defun set-auto-mode &optional keep-mode-if-same
607@cindex visited file mode 578@cindex visited file mode
608 This function selects the major mode that is appropriate for the 579 This function selects the major mode that is appropriate for the
609current buffer. It bases its decision (in order of precedence) on 580current buffer. It bases its decision (in order of precedence) on the
610the @w{@samp{-*-}} line, on any @samp{mode:} local variable near the 581@w{@samp{-*-}} line, on any @samp{mode:} local variable near the end of
611end of a file, on the @w{@samp{#!}} line (using 582a file, on the @w{@samp{#!}} line (using @code{interpreter-mode-alist}),
612@code{interpreter-mode-alist}), on the text at the beginning of the 583on the text at the beginning of the buffer (using
613buffer (using @code{magic-mode-alist}), and finally on the visited 584@code{magic-mode-alist}), and finally on the visited file name (using
614file name (using @code{auto-mode-alist}). @xref{Choosing Modes, , How 585@code{auto-mode-alist}). @xref{Choosing Modes, , How Major Modes are
615Major Modes are Chosen, emacs, The GNU Emacs Manual}. 586Chosen, emacs, The GNU Emacs Manual}. If @code{enable-local-variables}
616If @code{enable-local-variables} is @code{nil}, @code{set-auto-mode} 587is @code{nil}, @code{set-auto-mode} does not check the @w{@samp{-*-}}
617does not check the @w{@samp{-*-}} line, or near the end of the file, 588line, or near the end of the file, for any mode tag.
618for any mode tag.
619 589
620If @var{keep-mode-if-same} is non-@code{nil}, this function does not 590If @var{keep-mode-if-same} is non-@code{nil}, this function does not
621call the mode command if the buffer is already in the proper major 591call the mode command if the buffer is already in the proper major
@@ -624,21 +594,6 @@ mode. For instance, @code{set-visited-file-name} sets this to
624have set. 594have set.
625@end defun 595@end defun
626 596
627@defopt major-mode
628The buffer-local value of this variable holds the major mode
629currently active. The default value of this variable holds the
630default major mode for new buffers. The standard default value is
631@code{fundamental-mode}.
632
633If the default value of @code{major-mode} is @code{nil}, Emacs uses
634the (previously) current buffer's major mode as the default major mode
635of a new buffer. However, if that major mode symbol has a @code{mode-class}
636property with value @code{special}, then it is not used for new buffers;
637Fundamental mode is used instead. The modes that have this property are
638those such as Dired and Rmail that are useful only with text that has
639been specially prepared.
640@end defopt
641
642@defun set-buffer-major-mode buffer 597@defun set-buffer-major-mode buffer
643This function sets the major mode of @var{buffer} to the default value of 598This function sets the major mode of @var{buffer} to the default value of
644@code{major-mode}; if that is @code{nil}, it uses the 599@code{major-mode}; if that is @code{nil}, it uses the
@@ -745,18 +700,17 @@ init file.)
745@cindex help for major mode 700@cindex help for major mode
746@cindex documentation for major mode 701@cindex documentation for major mode
747 702
748 The @code{describe-mode} function is used to provide information 703 The @code{describe-mode} function is provides information about major
749about major modes. It is normally called with @kbd{C-h m}. The 704modes. It is normally bound to @kbd{C-h m}. It uses the value of the
750@code{describe-mode} function uses the value of @code{major-mode}, 705variable @code{major-mode} (which is why every major mode command needs
751which is why every major mode function needs to set the 706to set this variable).
752@code{major-mode} variable.
753 707
754@deffn Command describe-mode 708@deffn Command describe-mode
755This function displays the documentation of the current major mode. 709This function displays the documentation of the current major mode.
756 710
757The @code{describe-mode} function calls the @code{documentation} 711The @code{describe-mode} function calls the @code{documentation}
758function using the value of @code{major-mode} as an argument. Thus, it 712function using the value of @code{major-mode} as an argument. Thus, it
759displays the documentation string of the major mode function. 713displays the documentation string of the major mode command.
760(@xref{Accessing Documentation}.) 714(@xref{Accessing Documentation}.)
761@end deffn 715@end deffn
762 716
@@ -772,11 +726,12 @@ documentation of the major mode.
772@subsection Defining Derived Modes 726@subsection Defining Derived Modes
773@cindex derived mode 727@cindex derived mode
774 728
775 The recommended way to define a new major mode is to derive it 729 The recommended way to define a new major mode is to derive it from an
776from an existing one using @code{define-derived-mode}. If there is no 730existing one using @code{define-derived-mode}. If there is no closely
777closely related mode, you can inherit from @code{text-mode}, 731related mode, you should inherit from either @code{text-mode},
778@code{special-mode}, @code{prog-mode}, or in the worst case 732@code{special-mode}, or @code{prog-mode}. @xref{Basic Major Modes}. If
779@code{fundamental-mode}. 733none of these are suitable, you can inherit from @code{fundamental-mode}
734(@pxref{Major Modes}).
780 735
781@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{} 736@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{}
782This macro defines @var{variant} as a major mode command, using 737This macro defines @var{variant} as a major mode command, using
@@ -877,6 +832,64 @@ Do not write an @code{interactive} spec in the definition;
877@code{define-derived-mode} does that automatically. 832@code{define-derived-mode} does that automatically.
878@end defmac 833@end defmac
879 834
835@defun derived-mode-p &rest modes
836This function returns non-@code{nil} if the current major mode is
837derived from any of the major modes given by the symbols @var{modes}.
838@end defun
839
840@node Basic Major Modes
841@subsection Basic Major Modes
842
843 Apart from Fundamental mode, there are three major modes that other
844major modes commonly derive from: Text mode, Prog mode, and Special
845mode. While Text mode is useful in its own right (e.g. for editing
846files ending in @file{.txt}), Prog mode and Special mode exist mainly to
847let other modes derive from them.
848
849@vindex prog-mode-hook
850 As far as possible, new major modes should be derived, either directly
851or indirectly, from one of these three modes. One reason is that this
852allows users to customize a single mode hook
853(e.g. @code{prog-mode-hook}) for an entire family of relevant modes
854(e.g. all programming language modes).
855
856@deffn Command text-mode
857Text mode is a major mode for editing human languages. It defines the
858@samp{"} and @samp{\} characters as having punctuation syntax
859(@pxref{Syntax Class Table}), and binds @kbd{M-@key{TAB}} to
860@code{ispell-complete-word} (@pxref{Spelling,,, emacs, The GNU Emacs
861Manual}).
862
863An example of a major mode derived from Text mode is HTML mode.
864@xref{HTML Mode,,SGML and HTML Modes, emacs, The GNU Emacs Manual}.
865@end deffn
866
867@deffn Command prog-mode
868Prog mode is a basic major mode for buffers containing programming
869language source code. Most of the programming language major modes
870built into Emacs are derived from it.
871
872Prog mode binds @code{parse-sexp-ignore-comments} to @code{t}
873(@pxref{Motion via Parsing}) and @code{bidi-paragraph-direction} to
874@code{left-to-right} (@pxref{Bidirectional Display}).
875@end deffn
876
877@deffn Command special-mode
878Special mode is a basic major mode for buffers containing text that is
879produced specially by Emacs, rather than from a file. Major modes
880derived from Special mode are given a @code{mode-class} property of
881@code{special} (@pxref{Major Mode Conventions}).
882
883Special mode sets the buffer to read-only. Its keymap defines several
884common bindings, including @kbd{q} for @code{quit-window}, @kbd{z} for
885@code{kill-this-buffer}, and @kbd{g} for @code{revert-buffer}
886(@pxref{Reverting}).
887
888An example of a major mode derived from Special mode is Buffer Menu
889mode, which is used by the @samp{*Buffer List*} buffer. @xref{List
890Buffers,,Listing Existing Buffers, emacs, The GNU Emacs Manual}.
891@end deffn
892
880@node Generic Modes 893@node Generic Modes
881@subsection Generic Modes 894@subsection Generic Modes
882@cindex generic mode 895@cindex generic mode
@@ -921,7 +934,7 @@ before it runs the mode hook variable @code{@var{mode}-hook}.
921@node Mode Hooks 934@node Mode Hooks
922@subsection Mode Hooks 935@subsection Mode Hooks
923 936
924 Every major mode function should finish by running its mode hook and 937 Every major mode command should finish by running its mode hook and
925the mode-independent normal hook @code{after-change-major-mode-hook}. 938the mode-independent normal hook @code{after-change-major-mode-hook}.
926It does this by calling @code{run-mode-hooks}. If the major mode is a 939It does this by calling @code{run-mode-hooks}. If the major mode is a
927derived mode, that is if it calls another major mode (the parent mode) 940derived mode, that is if it calls another major mode (the parent mode)
@@ -966,7 +979,7 @@ construct.
966 979
967@defvar after-change-major-mode-hook 980@defvar after-change-major-mode-hook
968This is a normal hook run by @code{run-mode-hooks}. It is run at the 981This is a normal hook run by @code{run-mode-hooks}. It is run at the
969very end of every properly-written major mode function. 982very end of every properly-written major mode command.
970@end defvar 983@end defvar
971 984
972@node Example Major Modes 985@node Example Major Modes
@@ -1194,8 +1207,8 @@ And here is the code to set up the keymap for Lisp mode:
1194@end group 1207@end group
1195@end smallexample 1208@end smallexample
1196 1209
1197 Finally, here is the complete major mode function definition for 1210 Finally, here is the complete major mode command definition for Lisp
1198Lisp mode. 1211mode.
1199 1212
1200@smallexample 1213@smallexample
1201@group 1214@group
@@ -2752,10 +2765,10 @@ highlighting patterns. See the variables
2752@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types}, 2765@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types},
2753and @code{java-font-lock-extra-types}, for example. 2766and @code{java-font-lock-extra-types}, for example.
2754 2767
2755@strong{Warning:} major mode functions must not call 2768@strong{Warning:} major mode commands must not call
2756@code{font-lock-add-keywords} under any circumstances, either directly 2769@code{font-lock-add-keywords} under any circumstances, either directly
2757or indirectly, except through their mode hooks. (Doing so would lead 2770or indirectly, except through their mode hooks. (Doing so would lead to
2758to incorrect behavior for some minor modes.) They should set up their 2771incorrect behavior for some minor modes.) They should set up their
2759rules for search-based fontification by setting 2772rules for search-based fontification by setting
2760@code{font-lock-keywords}. 2773@code{font-lock-keywords}.
2761@end defun 2774@end defun
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 3b7718814b5..c192e3bf4b7 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -786,8 +786,7 @@ Major and Minor Modes
786* Major Modes:: Defining major modes. 786* Major Modes:: Defining major modes.
787* Minor Modes:: Defining minor modes. 787* Minor Modes:: Defining minor modes.
788* Mode Line Format:: Customizing the text that appears in the mode line. 788* Mode Line Format:: Customizing the text that appears in the mode line.
789* Imenu:: How a mode can provide a menu 789* Imenu:: Providing a menu of definitions made in a buffer.
790 of definitions in the buffer.
791* Font Lock Mode:: How modes can highlight text according to syntax. 790* Font Lock Mode:: How modes can highlight text according to syntax.
792* Desktop Save Mode:: How modes can have buffer state saved between 791* Desktop Save Mode:: How modes can have buffer state saved between
793 Emacs sessions. 792 Emacs sessions.
@@ -799,15 +798,15 @@ Hooks
799 798
800Major Modes 799Major Modes
801 800
802* Major Mode Basics::
803* Major Mode Conventions:: Coding conventions for keymaps, etc. 801* Major Mode Conventions:: Coding conventions for keymaps, etc.
804* Auto Major Mode:: How Emacs chooses the major mode automatically. 802* Auto Major Mode:: How Emacs chooses the major mode automatically.
805* Mode Help:: Finding out how to use a mode. 803* Mode Help:: Finding out how to use a mode.
806* Derived Modes:: Defining a new major mode based on another major 804* Derived Modes:: Defining a new major mode based on another major
807 mode. 805 mode.
806* Basic Major Modes:: Modes that other modes are often derived from.
808* Generic Modes:: Defining a simple major mode that supports 807* Generic Modes:: Defining a simple major mode that supports
809 comment syntax and Font Lock mode. 808 comment syntax and Font Lock mode.
810* Mode Hooks:: Hooks run at the end of major mode functions. 809* Mode Hooks:: Hooks run at the end of major mode commands.
811* Example Major Modes:: Text mode and Lisp modes. 810* Example Major Modes:: Text mode and Lisp modes.
812 811
813Minor Modes 812Minor Modes
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 22a51d3235c..8e78a5fb5ca 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -785,8 +785,7 @@ Major and Minor Modes
785* Major Modes:: Defining major modes. 785* Major Modes:: Defining major modes.
786* Minor Modes:: Defining minor modes. 786* Minor Modes:: Defining minor modes.
787* Mode Line Format:: Customizing the text that appears in the mode line. 787* Mode Line Format:: Customizing the text that appears in the mode line.
788* Imenu:: How a mode can provide a menu 788* Imenu:: Providing a menu of definitions made in a buffer.
789 of definitions in the buffer.
790* Font Lock Mode:: How modes can highlight text according to syntax. 789* Font Lock Mode:: How modes can highlight text according to syntax.
791* Desktop Save Mode:: How modes can have buffer state saved between 790* Desktop Save Mode:: How modes can have buffer state saved between
792 Emacs sessions. 791 Emacs sessions.
@@ -798,15 +797,15 @@ Hooks
798 797
799Major Modes 798Major Modes
800 799
801* Major Mode Basics::
802* Major Mode Conventions:: Coding conventions for keymaps, etc. 800* Major Mode Conventions:: Coding conventions for keymaps, etc.
803* Auto Major Mode:: How Emacs chooses the major mode automatically. 801* Auto Major Mode:: How Emacs chooses the major mode automatically.
804* Mode Help:: Finding out how to use a mode. 802* Mode Help:: Finding out how to use a mode.
805* Derived Modes:: Defining a new major mode based on another major 803* Derived Modes:: Defining a new major mode based on another major
806 mode. 804 mode.
805* Basic Major Modes:: Modes that other modes are often derived from.
807* Generic Modes:: Defining a simple major mode that supports 806* Generic Modes:: Defining a simple major mode that supports
808 comment syntax and Font Lock mode. 807 comment syntax and Font Lock mode.
809* Mode Hooks:: Hooks run at the end of major mode functions. 808* Mode Hooks:: Hooks run at the end of major mode commands.
810* Example Major Modes:: Text mode and Lisp modes. 809* Example Major Modes:: Text mode and Lisp modes.
811 810
812Minor Modes 811Minor Modes
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 092aa6fb387..24c0fd54422 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,9 @@
12011-08-30 Paul Eggert <eggert@cs.ucla.edu>
2
3 * MACHINES: Remove obsolete info and update a bit (Bug#9404).
4
5 * PROBLEMS: Remove obsolete comment re Yellow Dog (Bug#9403).
6
12011-08-24 Steve Chapel <schapel@laptop.stevechapel.com> (tiny change) 72011-08-24 Steve Chapel <schapel@laptop.stevechapel.com> (tiny change)
2 8
3 * refcards/refcard.tex: Add a few more commands. (Bug#9343) 9 * refcards/refcard.tex: Add a few more commands. (Bug#9343)
diff --git a/etc/MACHINES b/etc/MACHINES
index 126ae40cb57..1e68376b94a 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -24,227 +24,13 @@ file, and then edit the `configure' script to tell it which
24configuration name(s) should select your new machine description and 24configuration name(s) should select your new machine description and
25system description files. 25system description files.
26 26
27Some obsolete platforms are unsupported beginning with Emacs 23.1, see 27Some obsolete platforms are unsupported beginning with Emacs 23.1. See
28the list at the end of this file. 28the list at the end of this file.
29 29
30 30
31** Alpha (DEC) running GNU/Linux (alpha-dec-linux-gnu)
32
33 DEC C compiler version 5.9 (DEC C V5.9-005 on Digital UNIX V4.0f)
34 is reported to produce bogus binaries of Emacs 21.2 when the
35 command-line switches "-O4 -arch ev6 -tune ev6" are used. Using
36 just -O4 produces a good executable.
37
38 For 4.0 revision 564, and 4.0A and 4.0B, Emacs 20 seems to work
39 with no special configuration options. However, if you use GCC as
40 your compiler, you will need version 2.8.1 or later, as older
41 versions fail to build with a message "Invalid dimension for the
42 charset-ID 160".
43
44** Apple Macintosh running Mac OS X
45
46** Apple PowerPC Macintosh running GNU/Linux
47
48** HP 9000 series 700 or 800 (Spectrum) (hppa1.0-hp-hpux or hppa1.1-hp-hpux)
49
50 Emacs 20 may work on HPUX 10. You need patch PHSS_6202 to install
51 the Xaw and Xmu libraries. On HPUX 10.20 you may need to compile with GCC;
52 when Emacs was compiled with HP's C compiler, HP92453-01 A.10.32.03,
53 the subprocess features failed to work.
54
55 If you turn on the DSUSP character (delayed suspend), Emacs 19.26
56 does not know how to turn it off on HPUX. You need to turn it off manually.
57
58 If you are running HP/UX release 8.0 or later, you need the optional
59 "C/ANSI C" software in order to build Emacs (older releases of HP/UX
60 do not require any special software). If the file "/etc/filesets/C"
61 exists on your machine, you have this software, otherwise you do not.
62
63** IBM RS/6000 (rs6000-ibm-aix*)
64
65 Emacs 19.26 is believed to work; its pretest was tested.
66
67 Compiling with the system's `cc' and CFLAGS containing `-O5' might
68 fail because libXbsd isn't found. This is a compiler bug;
69 re-configure Emacs so that it isn't compiled with `-O5'.
70
71 On AIX 4.3.x and 4.4, compiling with /bin/c89 fails because it
72 treats certain warnings as errors. Use `cc' instead.
73
74 At last report, Emacs didn't run well on terminals. Informed
75 persons say that the tty VMIN and VTIME settings have been
76 corrupted; if you have a fix, please send it to us.
77
78 Compiling with -O using the IBM compiler has been known to make
79 Emacs work incorrectly. There are reports that IBM compiler versions
80 earlier than 1.03.00.02 fail even without -O.
81
82 As of 19.11, if you strip the Emacs executable, it ceases to work.
83
84 If anyone can fix the above problems, or confirm that they don't happen
85 with certain versions of various programs, we would appreciate it.
86
87** IBM System/390 running GNU/Linux (s390-*-linux-gnu)
88
89 As of Emacs 21.2, a 31-bit only version is supported on this system.
90
91** Intel 386 (i386-*-freebsd, i386-*-linux-gnu,
92 i386-*-cygwin, i386-*-msdos, i386-*-windowsnt.
93 i386 can be replaced with i486, i586, or i686)
94
95 In the above configurations, * means that the manufacturer's name
96 you specify does not matter, and you can use any name you like
97 (but it should not contain any dashes or stars).
98
99 Use i386-*-linux-gnu for GNU/Linux systems; Emacs runs as of version 19.26.
100 Use i386-*-cygwin for Cygwin; Emacs builds as of version 22.1, in both X11
101 and non-X11 modes. (The Cygwin site has source and binaries for 21.2.)
102
103 On GNU/Linux systems, Emacs 19.23 was said to work properly with libc
104 version 4.5.21, but not with 4.5.19.
105
106 On GNU/Linux, configure may fail to put these definitions in config.h:
107
108 #define HAVE_GETTIMEOFDAY
109 #define HAVE_MKDIR
110 #define HAVE_RMDIR
111 #define HAVE_XSCREENNUMBEROFSCREEN
112
113 To work around the problem, add those definitions by hand.
114 It is possible that this problem happens only with X11R6.
115 Newer system versions have fixed it.
116
117 On NetBSD and FreeBSD, at one time, it was necessary to use
118 GNU make, not the system's make. Assuming it's installed as gmake,
119 do `gmake install MAKE=gmake'. However, more recently it is
120 reported that using the system Make on NetBSD 1.3.1 works ok.
121
122 Note that use of Linux with GCC 2.4 and the DLL 4.4 libraries
123 requires the experimental "net 2" network patches (no relation to
124 Berkeley Net 2). There is a report that (some version of) Linux
125 requires including `/usr/src/linux/include/linux' in buffer.c
126 but no coherent explanation of why that might be so. If it is so,
127 in current versions of Linux, something else should probably be changed.
128
129 You may find that adding -I/usr/X/include or -I/usr/netinclude or both
130 to CFLAGS avoids compilation errors on certain systems.
131
132 Some versions convince sysdep.c to try to use `struct tchars'
133 but define `struct tc' instead; add `#define tchars tc'
134 to config.h to solve this problem.
135
136** Iris 4D (mips-sgi-irix6.*)
137
138 Emacs 21.3 is reported to work on IRIX 6.5.x.
139
140 You can build a 64-bit executable (with larger maximum buffer size)
141 on Irix 6.5 by specifying the 64-bit ABI using the `-64' compiler
142 flag or otherwise (see cc(1)).
143
144 If compiling with GCC on Irix 6 yields an error "conflicting types
145 for `initstate'", install GCC 2.95 or a newer version, and this
146 problem should go away. It is possible that this problem results
147 from upgrading the operating system without reinstalling GCC; so you
148 could also try reinstalling the same version of GCC, and telling us
149 whether that fixes the problem.
150
151** Sun 4 (sparc), Sun 386 (sparc-sun-solaris2.*,
152 i386-sun-solaris2.*, sparc*-*-linux-gnu)
153
154 To build a 32-bit Emacs (i.e. if you are having any sort of problem
155 bootstrapping a 64-bit version), you can use the Sun Studio compiler
156 and configure Emacs with:
157 env CC="cc -xarch=v7" CFLAGS='' ./configure # on SPARC systems
158 env CC="cc -xarch=386" CFLAGS='' ./configure # on x86 systems
159 On Solaris 2.10, it is also possible to use /usr/sfw/bin/gcc to build
160 a 32-bit version of Emacs. Just make sure you point ./configure to
161 the right compiler:
162
163 env CC='/usr/sfw/bin/gcc -m32' ./configure
164
165 To build a 64-bit Emacs (with larger maximum buffer size and
166 including large file support) on a Solaris system which supports
167 64-bit executables, use the Sun compiler, configuring something like
168 this (see the cc documentation for information on 64-bit
169 compilation):
170
171 env CC="cc -xarch=v9" CFLAGS='' ./configure # on SPARC systems
172 env CC="cc -xarch=amd64" CFLAGS='' ./configure # on x86 systems
173
174 As of version 2.95, GCC doesn't support the 64-bit ABI properly, but
175 later releases may.
176
177 Some versions of Solaris 8 have a bug in their XIM (X Input Method)
178 implementation which causes Emacs to dump core when one of several
179 frames is closed. To avoid this, either install patch 108773-12
180 (for Sparc) or 108874-12 (for x86), or configure Emacs with the
181 `--with-xim=no' switch (you can use Leim input methods instead).
182
183 On Solaris 2.7, building Emacs with WorkShop Compilers 5.0 98/12/15
184 C 5.0 failed, apparently with non-default CFLAGS, most probably due to
185 compiler bugs. Using Sun Solaris 2.7 Sun WorkShop 6 update 1 C
186 release was reported to work without problems. It worked OK on
187 another system with Solaris 8 using apparently the same 5.0 compiler
188 and the default CFLAGS.
189
190 Emacs 21.1 and 21.2 built with Sun's ProWorks PC3.0.1 compiler on
191 Intel/Solaris 8 was reported to abort and dump core during startup.
192 Using GCC or a newer SUN compiler (Sun WokShop 6 update 2 C 5.3
193 2001/05/15) solves the problem.
194
195 Emacs 20.5 and later work on SPARC GNU/Linux with the 32-bit ABI.
196 As of release 2.95, GCC doesn't work properly with the 64-bit ABI
197 (applicable on UltraSPARC), but that isn't the default mode.
198
199 There are reports that using SunSoft cc with -xO4 -xdepend produces
200 bad code for some part of Emacs.
201
202 Some people report that Emacs crashes immediately on startup when
203 used with a non-X terminal, but we think this is due to compiling
204 with GCC and failing to use GCC's "fixed" system header files.
205
206 Some Sun versions of X windows use the clipboard, not the selections,
207 for transferring text between clients. The Cut, Paste and Copy items
208 in the menu bar Edit menu work with the clipboard.
209
210 If you compile with Sun's ANSI compiler acc, you need additional options
211 when linking temacs, such as
212 /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1
213 (those should be added just before the libraries) and you need to
214 add -lansi just before -lc. The precise file names depend on the
215 compiler version, so we cannot easily arrange to supply them.
216
217 On Solaris 2, you need to install patch 100947-02 to fix a system bug.
218 Presumably this patch comes from Sun. You must alter the definition of
219 LD_SWITCH_SYSTEM if your X11 libraries are not in /usr/openwin/lib.
220 You must make sure that /usr/ucblib is not in your LD_LIBRARY_PATH.
221
222 On Solaris, do not use /usr/ucb/cc. Use /opt/SUNWspro/bin/cc. Make
223 sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before
224 /usr/ucb. (Most free software packages have the same requirement on
225 Solaris.) With this compiler, use `/opt/SUNWspro/bin/cc -E' as the
226 preprocessor. If this inserts extra whitespace into its output (see
227 the PROBLEMS file) then add the option `-Xs'.
228
229 If you have trouble using open-network-stream, get the distribution
230 of `bind' (the BSD name-server), build libresolv.a, and link Emacs
231 with -lresolv, by editing LIBRESOLV in src/Makefile. This problem is
232 due to obsolete software in the nonshared standard library.
233
234 Note that Emacs on a Sun is not really as big as it looks. As
235 dumped, it includes around 200k of zeros between the original text
236 section and the original data section (now remapped as part of the
237 text). These are never swapped in.
238
239** SuperH (sh[34]*-*-linux-gnu)
240
241 Emacs 23.0.60 was reported to work on GNU/Linux (October 2008).
242 Tested on a little-endian sh4 system (cpu type SH7751R) running
243 Gentoo Linux 2008.0.
244
245* Here are notes about some of the systems supported: 31* Here are notes about some of the systems supported:
246 32
247** Linux (actually GNU/Linux) 33** GNU/Linux
248 34
249 Most of the complete systems which use the Linux kernel are close 35 Most of the complete systems which use the Linux kernel are close
250 enough to the GNU system to be considered variant GNU systems. We 36 enough to the GNU system to be considered variant GNU systems. We
@@ -263,31 +49,63 @@ the list at the end of this file.
263 people to write more free software. See the file LINUX-GNU in this 49 people to write more free software. See the file LINUX-GNU in this
264 directory for more explanation. 50 directory for more explanation.
265 51
52*** 64-bit GNU/Linux
53
54 No special procedures should be needed to build a 64-bit Emacs on a
55 64-bit GNU/Linux system. To build a 32-bit Emacs, first ensure that
56 the necessary 32-bit system libraries and include files are
57 installed. Then use:
58
59 ./configure CC='gcc -m32' --build=i386-linux-gnu \
60 --x-libraries=/usr/X11R6/lib
61
62 (using the location of the 32-bit X libraries on your system).
63
64*** IBM System/390 running GNU/Linux (s390-*-linux-gnu)
65
66 As of Emacs 21.2, a 31-bit only version is supported on this system.
67
68*** SuperH (sh[34]*-*-linux-gnu)
69
70 Emacs 23.0.60 was reported to work on GNU/Linux (October 2008).
71 This was tested on a little-endian sh4 system (cpu type SH7751R) running
72 Gentoo Linux 2008.0.
73
266** Mac OS X 74** Mac OS X
267 75
268 For installation instructions see the file nextstep/INSTALL. 76 For installation instructions see the file nextstep/INSTALL.
269 77
270** MSDOS 78** Microsoft Windows
271 79
272 For installation on MSDOS, see the file msdos/INSTALL. 80 For installation instructions see the file nt/INSTALL.
81
82** MS-DOS
83
84 For installation instructions see the file msdos/INSTALL.
273 See the "MS-DOS" chapter of the manual for information about using 85 See the "MS-DOS" chapter of the manual for information about using
274 Emacs on MSDOS. 86 Emacs on MS-DOS.
275 87
276** MS-Windows NT/95/98/ME/2000 88** Solaris
277 89
278 For installation on all versions of the MS-Windows platform, see the 90 On Solaris it is also possible to use either GCC or Solaris Studio
279 file nt/INSTALL. 91 to build Emacs, by pointing ./configure to the right compiler:
280 92
281** X86_64 GNU/Linux 93 ./configure CC='/usr/sfw/bin/gcc' # GCC
94 ./configure CC='cc' # Solaris Studio
282 95
283 No special procedures should be needed to build a 64-bit Emacs. To 96 On Solaris, do not use /usr/ucb/cc. Use /opt/SUNWspro/bin/cc. Make
284 build a 32-bit Emacs, first ensure that the necessary 32-bit system 97 sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before
285 libraries and include files are installed. Then use: 98 /usr/ucb. (Most free software packages have the same requirement on
99 Solaris.) With this compiler, use `/opt/SUNWspro/bin/cc -E' as the
100 preprocessor. If this inserts extra whitespace into its output (see
101 the PROBLEMS file) then add the option `-Xs'.
286 102
287 env CC="gcc -m32" ./configure --build=i386-linux-gnu \ 103 To build a 64-bit Emacs (with larger maximum buffer size) on a
288 --x-libraries=/usr/X11R6/lib 104 Solaris system which supports 64-bit executables, specify the -m64
105 compiler option. For example:
289 106
290 (using the location of the 32-bit X libraries on your system). 107 ./configure CC='/usr/sfw/bin/gcc -m64' # GCC
108 ./configure CC='cc -m64' # Solaris Studio
291 109
292 110
293* Obsolete platforms 111* Obsolete platforms
diff --git a/etc/NEWS b/etc/NEWS
index afd004c5bb3..bbaa46c7222 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -43,10 +43,12 @@ to configure. Note that other libraries used by Emacs, RSVG and GConf,
43also depend on Gtk+. You can disable them with --without-rsvg and 43also depend on Gtk+. You can disable them with --without-rsvg and
44--without-gconf. 44--without-gconf.
45 45
46---
46** There is a new configure option --enable-use-lisp-union-type. 47** There is a new configure option --enable-use-lisp-union-type.
47This is only useful for Emacs developers to debug certain types of bugs. 48This is only useful for Emacs developers to debug certain types of bugs.
48This is not a new feature; only the configure flag is new. 49This is not a new feature; only the configure flag is new.
49 50
51---
50** There is a new configure option --with-wide-int. 52** There is a new configure option --with-wide-int.
51With it, Emacs integers typically have 62 bits, even on 32-bit machines. 53With it, Emacs integers typically have 62 bits, even on 32-bit machines.
52 54
@@ -87,6 +89,7 @@ and also when HOME is set to C:\ by default.
87 89
88* Changes in Emacs 24.1 90* Changes in Emacs 24.1
89 91
92+++
90** auto-mode-case-fold is now enabled by default. 93** auto-mode-case-fold is now enabled by default.
91 94
92** Completion 95** Completion
@@ -314,15 +317,12 @@ for `list-colors-display'.
314 317
315** An Emacs Lisp package manager is now included. 318** An Emacs Lisp package manager is now included.
316This is a convenient way to download and install additional packages, 319This is a convenient way to download and install additional packages,
317from a package repository at elpa.gnu.org. 320from a package repository at http://elpa.gnu.org.
318
319+++ 321+++
320*** `M-x list-packages' shows a list of packages, which can be 322*** `M-x list-packages' shows a list of packages, which can be
321selected for installation. 323selected for installation.
322
323+++ 324+++
324*** New command `describe-package', bound to `C-h P'. 325*** New command `describe-package', bound to `C-h P'.
325
326+++ 326+++
327*** By default, all installed packages are loaded and activated 327*** By default, all installed packages are loaded and activated
328automatically when Emacs starts up. To disable this, set 328automatically when Emacs starts up. To disable this, set
@@ -479,10 +479,8 @@ between applications.
479+++ 479+++
480*** Support for X cut buffers has been removed. 480*** Support for X cut buffers has been removed.
481 481
482*** Support for X clipboard managers has been added. 482*** X clipboard managers are now supported.
483 483To inhibit this, change `x-select-enable-clipboard-manager' to nil.
484**** To inhibit use of the clipboard manager, set
485`x-select-enable-clipboard-manager' to nil.
486 484
487** New command `rectangle-number-lines', bound to `C-x r N', numbers 485** New command `rectangle-number-lines', bound to `C-x r N', numbers
488the lines in the current rectangle. With an prefix argument, this 486the lines in the current rectangle. With an prefix argument, this
@@ -1032,6 +1030,7 @@ syntactic rules.
1032 1030
1033** frame-local variables cannot be let-bound any more. 1031** frame-local variables cannot be let-bound any more.
1034 1032
1033+++
1035** prog-mode is a new major-mode meant to be the parent of programming mode. 1034** prog-mode is a new major-mode meant to be the parent of programming mode.
1036The prog-mode-hook it defines can be used to enable features for 1035The prog-mode-hook it defines can be used to enable features for
1037programming modes. For example: 1036programming modes. For example:
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 2f344955cb2..1869124987a 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -2648,43 +2648,6 @@ of PURESIZE in puresize.h.
2648But in some of the cases listed above, this problem is a consequence 2648But in some of the cases listed above, this problem is a consequence
2649of something else that is wrong. Be sure to check and fix the real problem. 2649of something else that is wrong. Be sure to check and fix the real problem.
2650 2650
2651*** Linux: Emacs crashes when dumping itself on Mac PPC running Yellow Dog GNU/Linux.
2652
2653The crashes happen inside the function Fmake_symbol; here's a typical
2654C backtrace printed by GDB:
2655
2656 0x190c0c0 in Fmake_symbol ()
2657 (gdb) where
2658 #0 0x190c0c0 in Fmake_symbol ()
2659 #1 0x1942ca4 in init_obarray ()
2660 #2 0x18b3500 in main ()
2661 #3 0x114371c in __libc_start_main (argc=5, argv=0x7ffff5b4, envp=0x7ffff5cc,
2662
2663This could happen because GCC version 2.95 and later changed the base
2664of the load address to 0x10000000. Emacs needs to be told about this,
2665but we currently cannot do that automatically, because that breaks
2666other versions of GNU/Linux on the MacPPC. Until we find a way to
2667distinguish between the Yellow Dog and the other varieties of
2668GNU/Linux systems on the PPC, you will have to manually uncomment the
2669following section near the end of the file src/m/macppc.h in the Emacs
2670distribution:
2671
2672 #if 0 /* This breaks things on PPC GNU/Linux except for Yellowdog,
2673 even with identical GCC, as, ld. Let's take it out until we
2674 know what's really going on here. */
2675 /* GCC 2.95 and newer on GNU/Linux PPC changed the load address to
2676 0x10000000. */
2677 #if defined __linux__
2678 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
2679 #define DATA_SEG_BITS 0x10000000
2680 #endif
2681 #endif
2682 #endif /* 0 */
2683
2684Remove the "#if 0" and "#endif" directives which surround this, save
2685the file, and then reconfigure and rebuild Emacs. The dumping process
2686should now succeed.
2687
2688*** OpenBSD 4.0 macppc: Segfault during dumping. 2651*** OpenBSD 4.0 macppc: Segfault during dumping.
2689 2652
2690The build aborts with signal 11 when the command `./temacs --batch 2653The build aborts with signal 11 when the command `./temacs --batch
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 03423942f4f..15296e09b46 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12011-08-29 Juri Linkov <juri@jurta.org>
2
3 * isearch.el (isearch-done): Don't display message "Mark saved"
4 when arg `edit' is non-nil to prevent its flicker in the echo area.
5
12011-08-28 Chong Yidong <cyd@stupidchicken.com> 62011-08-28 Chong Yidong <cyd@stupidchicken.com>
2 7
3 * emacs-lisp/package.el (package-menu-mark-delete): Allow marking 8 * emacs-lisp/package.el (package-menu-mark-delete): Allow marking
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 8764952dbf5..6eab3dbcbc4 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -952,7 +952,7 @@ NOPUSH is t and EDIT is t."
952 (or (and transient-mark-mode mark-active) 952 (or (and transient-mark-mode mark-active)
953 (progn 953 (progn
954 (push-mark isearch-opoint t) 954 (push-mark isearch-opoint t)
955 (or executing-kbd-macro (> (minibuffer-depth) 0) 955 (or executing-kbd-macro (> (minibuffer-depth) 0) edit
956 (message "Mark saved where search started"))))) 956 (message "Mark saved where search started")))))
957 957
958 (and (not edit) isearch-recursive-edit (exit-recursive-edit))) 958 (and (not edit) isearch-recursive-edit (exit-recursive-edit)))