aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-10-22 23:38:24 -0700
committerPaul Eggert2011-10-22 23:38:24 -0700
commitcfc09582247ffef6a46b6249e2fba9136a62d21e (patch)
tree50e102f64a2b88c692d9110990abd416c78c32f0
parent92c938895c639463681ae1c58a944cae62b70b87 (diff)
parent86c606818495d9411fd5d6b1477f9a097eb18020 (diff)
downloademacs-cfc09582247ffef6a46b6249e2fba9136a62d21e.tar.gz
emacs-cfc09582247ffef6a46b6249e2fba9136a62d21e.zip
Merge from trunk.
-rw-r--r--ChangeLog17
-rw-r--r--admin/FOR-RELEASE10
-rw-r--r--admin/notes/changelogs4
-rw-r--r--admin/notes/copyright5
-rwxr-xr-xautogen/configure216
-rw-r--r--configure.in10
-rw-r--r--doc/emacs/ChangeLog86
-rw-r--r--doc/emacs/arevert-xtra.texi10
-rw-r--r--doc/emacs/basic.texi4
-rw-r--r--doc/emacs/buffers.texi107
-rw-r--r--doc/emacs/calendar.texi13
-rw-r--r--doc/emacs/commands.texi2
-rw-r--r--doc/emacs/custom.texi21
-rw-r--r--doc/emacs/display.texi705
-rw-r--r--doc/emacs/emacs.texi5
-rw-r--r--doc/emacs/files.texi667
-rw-r--r--doc/emacs/fixit.texi93
-rw-r--r--doc/emacs/fortran-xtra.texi2
-rw-r--r--doc/emacs/frames.texi9
-rw-r--r--doc/emacs/help.texi2
-rw-r--r--doc/emacs/killing.texi2
-rw-r--r--doc/emacs/macos.texi12
-rw-r--r--doc/emacs/maintaining.texi9
-rw-r--r--doc/emacs/mini.texi86
-rw-r--r--doc/emacs/rmail.texi2
-rw-r--r--doc/emacs/screen.texi2
-rw-r--r--doc/emacs/search.texi211
-rw-r--r--doc/emacs/windows.texi4
-rw-r--r--doc/lispref/ChangeLog4
-rw-r--r--doc/lispref/display.texi94
-rw-r--r--doc/lispref/elisp.texi3
-rw-r--r--doc/lispref/vol1.texi3
-rw-r--r--doc/lispref/vol2.texi3
-rw-r--r--etc/NEWS43
-rw-r--r--etc/PROBLEMS8
-rw-r--r--etc/themes/deeper-blue-theme.el2
-rw-r--r--etc/themes/dichromacy-theme.el2
-rw-r--r--etc/themes/misterioso-theme.el2
-rw-r--r--etc/themes/tango-dark-theme.el2
-rw-r--r--etc/themes/tango-theme.el2
-rw-r--r--etc/themes/wheatgrass-theme.el2
-rw-r--r--etc/themes/whiteboard-theme.el2
-rw-r--r--etc/themes/wombat-theme.el2
-rw-r--r--lisp/ChangeLog283
-rw-r--r--lisp/ChangeLog.152
-rw-r--r--lisp/abbrev.el9
-rw-r--r--lisp/allout-widgets.el15
-rw-r--r--lisp/allout.el22
-rw-r--r--lisp/autoarg.el31
-rw-r--r--lisp/autoinsert.el7
-rw-r--r--lisp/autorevert.el40
-rw-r--r--lisp/battery.el10
-rw-r--r--lisp/cedet/ChangeLog17
-rw-r--r--lisp/cedet/ede.el20
-rw-r--r--lisp/cedet/ede/project-am.el6
-rw-r--r--lisp/cedet/ede/util.el7
-rw-r--r--lisp/cedet/semantic.el6
-rw-r--r--lisp/comint.el29
-rw-r--r--lisp/composite.el22
-rw-r--r--lisp/delsel.el5
-rw-r--r--lisp/descr-text.el3
-rw-r--r--lisp/desktop.el13
-rw-r--r--lisp/dired-x.el20
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/dirtrack.el20
-rw-r--r--lisp/doc-view.el7
-rw-r--r--lisp/double.el11
-rw-r--r--lisp/electric.el19
-rw-r--r--lisp/emacs-lisp/checkdoc.el7
-rw-r--r--lisp/emacs-lisp/easy-mmode.el12
-rw-r--r--lisp/emacs-lisp/eldoc.el19
-rw-r--r--lisp/emacs-lock.el18
-rw-r--r--lisp/emulation/crisp.el6
-rw-r--r--lisp/emulation/cua-base.el23
-rw-r--r--lisp/epa-hook.el9
-rw-r--r--lisp/erc/ChangeLog8
-rw-r--r--lisp/erc/erc-fill.el9
-rw-r--r--lisp/erc/erc-track.el15
-rw-r--r--lisp/erc/erc.el4
-rw-r--r--lisp/face-remap.el2
-rw-r--r--lisp/facemenu.el11
-rw-r--r--lisp/faces.el4
-rw-r--r--lisp/files.el6
-rw-r--r--lisp/follow.el9
-rw-r--r--lisp/font-core.el10
-rw-r--r--lisp/font-lock.el8
-rw-r--r--lisp/frame.el25
-rw-r--r--lisp/gnus/ChangeLog77
-rw-r--r--lisp/gnus/gnus-cite.el9
-rw-r--r--lisp/gnus/gnus-registry.el33
-rw-r--r--lisp/gnus/gnus-util.el8
-rw-r--r--lisp/gnus/nnir.el8
-rw-r--r--lisp/gnus/nnmairix.el7
-rw-r--r--lisp/gnus/nnregistry.el7
-rw-r--r--lisp/help.el16
-rw-r--r--lisp/hi-lock.el19
-rw-r--r--lisp/hilit-chg.el26
-rw-r--r--lisp/hl-line.el15
-rw-r--r--lisp/ibuf-ext.el6
-rw-r--r--lisp/ibuffer.el8
-rw-r--r--lisp/icomplete.el7
-rw-r--r--lisp/ido.el12
-rw-r--r--lisp/image-file.el9
-rw-r--r--lisp/image-mode.el13
-rw-r--r--lisp/international/mule.el4
-rw-r--r--lisp/iswitchb.el11
-rw-r--r--lisp/jka-cmpr-hook.el11
-rw-r--r--lisp/json.el21
-rw-r--r--lisp/linum.el7
-rw-r--r--lisp/longlines.el31
-rw-r--r--lisp/mail/footnote.el11
-rw-r--r--lisp/mail/mailabbrev.el10
-rw-r--r--lisp/master.el10
-rw-r--r--lisp/mb-depth.el12
-rw-r--r--lisp/menu-bar.el34
-rw-r--r--lisp/minibuf-eldef.el18
-rw-r--r--lisp/minibuffer.el6
-rw-r--r--lisp/mouse-sel.el9
-rw-r--r--lisp/mouse.el421
-rw-r--r--lisp/msb.el5
-rw-r--r--lisp/mwheel.el8
-rw-r--r--lisp/net/browse-url.el45
-rw-r--r--lisp/net/goto-addr.el2
-rw-r--r--lisp/net/tramp.el7
-rw-r--r--lisp/net/xesam.el6
-rw-r--r--lisp/outline.el5
-rw-r--r--lisp/paren.el12
-rw-r--r--lisp/progmodes/bug-reference.el5
-rw-r--r--lisp/progmodes/cap-words.el8
-rw-r--r--lisp/progmodes/cc-engine.el53
-rw-r--r--lisp/progmodes/compile.el28
-rw-r--r--lisp/progmodes/gud.el5
-rw-r--r--lisp/progmodes/hideif.el14
-rw-r--r--lisp/progmodes/idlw-shell.el18
-rw-r--r--lisp/progmodes/idlwave.el1
-rw-r--r--lisp/progmodes/subword.el20
-rw-r--r--lisp/progmodes/vera-mode.el1
-rw-r--r--lisp/progmodes/vhdl-mode.el8
-rw-r--r--lisp/progmodes/which-func.el14
-rw-r--r--lisp/recentf.el14
-rw-r--r--lisp/reveal.el19
-rw-r--r--lisp/rfn-eshadow.el18
-rw-r--r--lisp/ruler-mode.el6
-rw-r--r--lisp/savehist.el18
-rw-r--r--lisp/scroll-all.el11
-rw-r--r--lisp/scroll-bar.el11
-rw-r--r--lisp/server.el8
-rw-r--r--lisp/shell.el10
-rw-r--r--lisp/simple.el133
-rw-r--r--lisp/strokes.el8
-rw-r--r--lisp/t-mouse.el9
-rw-r--r--lisp/tar-mode.el12
-rw-r--r--lisp/term/tvi970.el17
-rw-r--r--lisp/term/vt100.el5
-rw-r--r--lisp/textmodes/flyspell.el14
-rw-r--r--lisp/textmodes/ispell.el20
-rw-r--r--lisp/textmodes/nroff-mode.el16
-rw-r--r--lisp/textmodes/paragraphs.el22
-rw-r--r--lisp/textmodes/refill.el15
-rw-r--r--lisp/textmodes/reftex.el8
-rw-r--r--lisp/textmodes/rst.el9
-rw-r--r--lisp/textmodes/sgml-mode.el20
-rw-r--r--lisp/textmodes/tex-mode.el10
-rw-r--r--lisp/time.el17
-rw-r--r--lisp/tool-bar.el7
-rw-r--r--lisp/tooltip.el13
-rw-r--r--lisp/type-break.el28
-rw-r--r--lisp/url/ChangeLog4
-rw-r--r--lisp/url/url-handlers.el5
-rw-r--r--lisp/vc/diff-mode.el19
-rw-r--r--lisp/vc/ediff-init.el8
-rw-r--r--lisp/vc/log-edit.el4
-rw-r--r--lisp/vc/vc-bzr.el4
-rw-r--r--lisp/vc/vc-hooks.el18
-rw-r--r--lisp/vc/vc.el10
-rw-r--r--lisp/view.el27
-rw-r--r--lisp/whitespace.el36
-rw-r--r--lisp/wid-browse.el3
-rw-r--r--lisp/window.el29
-rw-r--r--lisp/xt-mouse.el5
-rwxr-xr-xmake-dist5
-rw-r--r--nextstep/ChangeLog10
-rw-r--r--nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj798
-rw-r--r--nextstep/INSTALL21
-rw-r--r--nt/ChangeLog5
-rw-r--r--nt/config.nt9
-rw-r--r--src/ChangeLog79
-rw-r--r--src/bidi.c99
-rw-r--r--src/dispextern.h3
-rw-r--r--src/editfns.c91
-rw-r--r--src/systime.h11
-rw-r--r--src/xdisp.c98
-rw-r--r--test/ChangeLog6
-rw-r--r--test/automated/vc-bzr.el101
194 files changed, 3322 insertions, 3166 deletions
diff --git a/ChangeLog b/ChangeLog
index 2ca87de9570..9b9a7176b05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
12011-10-20 Paul Eggert <eggert@cs.ucla.edu>
2
3 Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794)
4 * configure.in (AC_STRUCT_TM, AC_STRUCT_TIMEZONE, HAVE_TM_GMTOFF):
5 Remove; no longer needed, now that we defer to strftime for time
6 zone names.
7
82011-10-18 Jan Djärv <jan.h.d@swipnet.se>
9
10 * configure.in (GLIB_REQUIRED, GTK_REQUIRED): Set to 2.10 (Bug#9786).
11
122011-10-18 Chong Yidong <cyd@gnu.org>
13
14 * make-dist: Remove Cocoa/Emacs.xcodeproj from distribution.
15
12011-10-13 Glenn Morris <rgm@gnu.org> 162011-10-13 Glenn Morris <rgm@gnu.org>
2 17
3 * configure.in: Also look for tputs in libcurses. (Bug#9736) 18 * configure.in: Also look for tputs in libcurses. (Bug#9736)
@@ -5,7 +20,7 @@
52011-10-12 Paul Eggert <eggert@cs.ucla.edu> 202011-10-12 Paul Eggert <eggert@cs.ucla.edu>
6 21
7 * configure.in: Remove check for -lintl (Bug#9713). 22 * configure.in: Remove check for -lintl (Bug#9713).
8 The check breaks 'configure' in some CentOS 5.7 x86 configurations. 23 The check could break 'configure' on GNU/Linux with a (broken) libintl.
9 The check was helpful but not essential in Solaris 2.6 (1997), 24 The check was helpful but not essential in Solaris 2.6 (1997),
10 and is no longer needed in Solaris 8 (2000). Solaris 2.6 is 25 and is no longer needed in Solaris 8 (2000). Solaris 2.6 is
11 obsolete -- Sun dropped support for it in 2006 -- and without 26 obsolete -- Sun dropped support for it in 2006 -- and without
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 26e3de63808..80a66be3fa4 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -151,7 +151,7 @@ TUTORIAL.zh
151abbrevs.texi 151abbrevs.texi
152ack.texi 152ack.texi
153anti.texi 153anti.texi
154arevert-xtra.texi 154arevert-xtra.texi cyd
155basic.texi cyd 155basic.texi cyd
156buffers.texi 156buffers.texi
157building.texi 157building.texi
@@ -162,12 +162,12 @@ commands.texi cyd
162custom.texi 162custom.texi
163dired.texi 163dired.texi
164dired-xtra.texi 164dired-xtra.texi
165display.texi 165display.texi cyd
166emacs.texi 166emacs.texi
167emacs-xtra.texi 167emacs-xtra.texi
168emerge-xtra.texi 168emerge-xtra.texi
169entering.texi cyd 169entering.texi cyd
170files.texi 170files.texi cyd
171fixit.texi 171fixit.texi
172fortran-xtra.texi 172fortran-xtra.texi
173frames.texi 173frames.texi
@@ -175,7 +175,7 @@ glossary.texi
175help.texi cyd 175help.texi cyd
176indent.texi 176indent.texi
177killing.texi cyd 177killing.texi cyd
178kmacro.texi 178kmacro.texi cyd
179macos.texi 179macos.texi
180maintaining.texi 180maintaining.texi
181major.texi 181major.texi
@@ -191,7 +191,7 @@ programs.texi
191regs.texi cyd 191regs.texi cyd
192rmail.texi 192rmail.texi
193screen.texi cyd 193screen.texi cyd
194search.texi 194search.texi cyd
195sending.texi 195sending.texi
196text.texi 196text.texi
197trouble.texi 197trouble.texi
diff --git a/admin/notes/changelogs b/admin/notes/changelogs
index 2c3749244fb..2e954570ce8 100644
--- a/admin/notes/changelogs
+++ b/admin/notes/changelogs
@@ -1,3 +1,7 @@
1If installing changes written by someone else, make the ChangeLog
2entry in their name, not yours.
3
4
1http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00793.html 5http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00793.html
2 There is no need to make change log entries for files such as NEWS, 6 There is no need to make change log entries for files such as NEWS,
3 MAINTAINERS, and FOR-RELEASE. 7 MAINTAINERS, and FOR-RELEASE.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index f4d22f9b270..0ad99900779 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -24,9 +24,8 @@ the file.
24 24
252. When installing code written by someone else, the ChangeLog entry 252. When installing code written by someone else, the ChangeLog entry
26should be in the name of the author of the code, not the person who 26should be in the name of the author of the code, not the person who
27installs it. I think it is helpful to put the author (if not yourself) 27installs it. Also use bzr commit's "--author" option.
28in the commit log as well (you can also use bzr commit's "--author" 28Do not install any of your own changes in the same commit.
29option); and to not install any of your own changes in the same commit.
30 29
313. With images, add the legal info to a README file in the directory 303. With images, add the legal info to a README file in the directory
32containing the image. 31containing the image.
diff --git a/autogen/configure b/autogen/configure
index 8f50731f3f1..fc906db6fea 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -8803,116 +8803,6 @@ fi
8803done 8803done
8804 8804
8805 8805
8806{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
8807$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
8808if test "${ac_cv_struct_tm+set}" = set; then :
8809 $as_echo_n "(cached) " >&6
8810else
8811 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8812/* end confdefs.h. */
8813#include <sys/types.h>
8814#include <time.h>
8815
8816int
8817main ()
8818{
8819struct tm tm;
8820 int *p = &tm.tm_sec;
8821 return !p;
8822 ;
8823 return 0;
8824}
8825_ACEOF
8826if ac_fn_c_try_compile "$LINENO"; then :
8827 ac_cv_struct_tm=time.h
8828else
8829 ac_cv_struct_tm=sys/time.h
8830fi
8831rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8832fi
8833{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
8834$as_echo "$ac_cv_struct_tm" >&6; }
8835if test $ac_cv_struct_tm = sys/time.h; then
8836
8837$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
8838
8839fi
8840
8841ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>
8842#include <$ac_cv_struct_tm>
8843
8844"
8845if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
8846
8847cat >>confdefs.h <<_ACEOF
8848#define HAVE_STRUCT_TM_TM_ZONE 1
8849_ACEOF
8850
8851
8852fi
8853
8854if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
8855
8856$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
8857
8858else
8859 ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
8860"
8861if test "x$ac_cv_have_decl_tzname" = x""yes; then :
8862 ac_have_decl=1
8863else
8864 ac_have_decl=0
8865fi
8866
8867cat >>confdefs.h <<_ACEOF
8868#define HAVE_DECL_TZNAME $ac_have_decl
8869_ACEOF
8870
8871 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
8872$as_echo_n "checking for tzname... " >&6; }
8873if test "${ac_cv_var_tzname+set}" = set; then :
8874 $as_echo_n "(cached) " >&6
8875else
8876 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8877/* end confdefs.h. */
8878#include <time.h>
8879#if !HAVE_DECL_TZNAME
8880extern char *tzname[];
8881#endif
8882
8883int
8884main ()
8885{
8886return tzname[0][0];
8887 ;
8888 return 0;
8889}
8890_ACEOF
8891if ac_fn_c_try_link "$LINENO"; then :
8892 ac_cv_var_tzname=yes
8893else
8894 ac_cv_var_tzname=no
8895fi
8896rm -f core conftest.err conftest.$ac_objext \
8897 conftest$ac_exeext conftest.$ac_ext
8898fi
8899{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
8900$as_echo "$ac_cv_var_tzname" >&6; }
8901 if test $ac_cv_var_tzname = yes; then
8902
8903$as_echo "#define HAVE_TZNAME 1" >>confdefs.h
8904
8905 fi
8906fi
8907
8908ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
8909"
8910if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
8911
8912$as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
8913
8914fi
8915
8916ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_flags" "ac_cv_member_struct_ifreq_ifr_flags" "$ac_includes_default 8806ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_flags" "ac_cv_member_struct_ifreq_ifr_flags" "$ac_includes_default
8917#if HAVE_SYS_SOCKET_H 8807#if HAVE_SYS_SOCKET_H
8918#include <sys/socket.h> 8808#include <sys/socket.h>
@@ -11140,8 +11030,8 @@ fi
11140if test "$pkg_check_gtk" != "yes"; then 11030if test "$pkg_check_gtk" != "yes"; then
11141 HAVE_GTK=no 11031 HAVE_GTK=no
11142if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then 11032if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
11143 GLIB_REQUIRED=2.6 11033 GLIB_REQUIRED=2.10
11144 GTK_REQUIRED=2.6 11034 GTK_REQUIRED=2.10
11145 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" 11035 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
11146 11036
11147 11037
@@ -18884,6 +18774,108 @@ $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
18884 REPLACE_VSNPRINTF=0; 18774 REPLACE_VSNPRINTF=0;
18885 REPLACE_VSPRINTF=0; 18775 REPLACE_VSPRINTF=0;
18886 18776
18777{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
18778$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
18779if test "${ac_cv_struct_tm+set}" = set; then :
18780 $as_echo_n "(cached) " >&6
18781else
18782 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
18783/* end confdefs.h. */
18784#include <sys/types.h>
18785#include <time.h>
18786
18787int
18788main ()
18789{
18790struct tm tm;
18791 int *p = &tm.tm_sec;
18792 return !p;
18793 ;
18794 return 0;
18795}
18796_ACEOF
18797if ac_fn_c_try_compile "$LINENO"; then :
18798 ac_cv_struct_tm=time.h
18799else
18800 ac_cv_struct_tm=sys/time.h
18801fi
18802rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
18803fi
18804{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
18805$as_echo "$ac_cv_struct_tm" >&6; }
18806if test $ac_cv_struct_tm = sys/time.h; then
18807
18808$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
18809
18810fi
18811
18812ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>
18813#include <$ac_cv_struct_tm>
18814
18815"
18816if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
18817
18818cat >>confdefs.h <<_ACEOF
18819#define HAVE_STRUCT_TM_TM_ZONE 1
18820_ACEOF
18821
18822
18823fi
18824
18825if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
18826
18827$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
18828
18829else
18830 ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
18831"
18832if test "x$ac_cv_have_decl_tzname" = x""yes; then :
18833 ac_have_decl=1
18834else
18835 ac_have_decl=0
18836fi
18837
18838cat >>confdefs.h <<_ACEOF
18839#define HAVE_DECL_TZNAME $ac_have_decl
18840_ACEOF
18841
18842 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
18843$as_echo_n "checking for tzname... " >&6; }
18844if test "${ac_cv_var_tzname+set}" = set; then :
18845 $as_echo_n "(cached) " >&6
18846else
18847 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
18848/* end confdefs.h. */
18849#include <time.h>
18850#if !HAVE_DECL_TZNAME
18851extern char *tzname[];
18852#endif
18853
18854int
18855main ()
18856{
18857return tzname[0][0];
18858 ;
18859 return 0;
18860}
18861_ACEOF
18862if ac_fn_c_try_link "$LINENO"; then :
18863 ac_cv_var_tzname=yes
18864else
18865 ac_cv_var_tzname=no
18866fi
18867rm -f core conftest.err conftest.$ac_objext \
18868 conftest$ac_exeext conftest.$ac_ext
18869fi
18870{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
18871$as_echo "$ac_cv_var_tzname" >&6; }
18872 if test $ac_cv_var_tzname = yes; then
18873
18874$as_echo "#define HAVE_TZNAME 1" >>confdefs.h
18875
18876 fi
18877fi
18878
18887 18879
18888 ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h> 18880 ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
18889" 18881"
diff --git a/configure.in b/configure.in
index 67ab4e22d77..5b32e10853f 100644
--- a/configure.in
+++ b/configure.in
@@ -1315,12 +1315,6 @@ AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
1315AC_CHECK_FUNCS(getifaddrs freeifaddrs) 1315AC_CHECK_FUNCS(getifaddrs freeifaddrs)
1316 1316
1317dnl checks for structure members 1317dnl checks for structure members
1318AC_STRUCT_TM
1319AC_STRUCT_TIMEZONE
1320AC_CHECK_MEMBER(struct tm.tm_gmtoff,
1321 [AC_DEFINE(HAVE_TM_GMTOFF, 1,
1322 [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],,
1323 [#include <time.h>])
1324AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr, 1318AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
1325 struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr, 1319 struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
1326 struct ifreq.ifr_addr, 1320 struct ifreq.ifr_addr,
@@ -1925,8 +1919,8 @@ fi
1925if test "$pkg_check_gtk" != "yes"; then 1919if test "$pkg_check_gtk" != "yes"; then
1926 HAVE_GTK=no 1920 HAVE_GTK=no
1927if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then 1921if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
1928 GLIB_REQUIRED=2.6 1922 GLIB_REQUIRED=2.10
1929 GTK_REQUIRED=2.6 1923 GTK_REQUIRED=2.10
1930 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED" 1924 GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
1931 1925
1932 dnl Checks for libraries. 1926 dnl Checks for libraries.
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a39b703b4dd..726f565e83e 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,89 @@
12011-10-23 Chong Yidong <cyd@gnu.org>
2
3 * buffers.texi (Misc Buffer): Don't mention vc-toggle-read-only.
4
52011-10-22 Chong Yidong <cyd@gnu.org>
6
7 * windows.texi (Displaying Buffers): Fix broken lispref link.
8
92011-10-22 Chong Yidong <cyd@gnu.org>
10
11 * mini.texi (Minibuffer Exit): Rename from Strict Completion.
12 Move confirm-nonexistent-file-or-buffer discussion here.
13
14 * files.texi (File Names, Visiting): Move detailed discussion of
15 minibuffer confirmation to Minibuffer Exit.
16
17 * buffers.texi (Buffers): Tweak mention of mail buffer name.
18 (Select Buffer): Move confirmation discussion to Minibuffer Exit.
19
202011-10-21 Chong Yidong <cyd@gnu.org>
21
22 * files.texi (File Names, Visiting, Interlocking): Copyedits.
23 (Backup Copying): backup-by-copying-when-mismatch is now t.
24 (Customize Save): Fix description of require-final-newline.
25 (Reverting): Note that revert-buffer can't be undone. Mention VC.
26 (Auto Save Control): Clarify.
27 (File Archives): Add 7z.
28 (Remote Files): ange-ftp-make-backup-files defaults to nil.
29
30 * arevert-xtra.texi (Autorevert): Copyedits.
31
322011-10-20 Chong Yidong <cyd@gnu.org>
33
34 * custom.texi (Hooks, Init Examples):
35 * display.texi (Font Lock):
36 * fixit.texi (Spelling):
37 * rmail.texi (Rmail Display): Minor mode function with no arg now
38 enables it.
39
40 * fixit.texi (Spelling): Fix description of inline completion.
41
422011-10-19 Chong Yidong <cyd@gnu.org>
43
44 * search.texi (Repeat Isearch, Error in Isearch): Add kindex
45 entries.
46 (Isearch Yank): Document isearch-yank-pop.
47 (Isearch Scroll): Refer to C-l instead of unbound `recenter'.
48 (Other Repeating Search): Document Occur Edit mode.
49
502011-10-18 Chong Yidong <cyd@gnu.org>
51
52 * display.texi (Fringes): Move overflow-newline-into-fringe here,
53 from Line Truncation node.
54 (Standard Faces): Note that only the background of the cursor face
55 has an effect.
56 (Cursor Display): Fix descriptions of cursor face
57 and bar cursor blinking.
58 (Text Display): Document nobreak-char-display more clearly.
59 (Line Truncation): Add xref to Split Window node.
60 (Display Custom): Don't bother documenting baud-rate or
61 no-redraw-on-reenter.
62
63 * search.texi (Slow Isearch): Node removed.
64
652011-10-18 Glenn Morris <rgm@gnu.org>
66
67 * maintaining.texi (Registering): Remove vc-initial-comment. (Bug#9745)
68
692011-10-18 Chong Yidong <cyd@gnu.org>
70
71 * display.texi (Faces): Simplify discussion. Move documentation
72 of list-faces-display here, from Standard Faces node. Note
73 special role of `default' background.
74 (Standard Faces): Note special role of `default' background. Note
75 that region face may be taken fom GTK. Add xref to Text Display.
76 (Text Scale): Rename from "Temporary Face Changes". Callers
77 changed. Don't bother documenting variable-pitch-mode.
78 (Font Lock): Copyedits. Remove font-lock-maximum-size.
79 (Useless Whitespace): Simplify description of
80 delete-trailing-whitespace. Note active region case.
81 (Text Display): Fix description of escape-glyph face assignment.
82 Remove unibye mode discussion. Update some parts for Unicode.
83 Move glyphless chars documentation to Lisp manual.
84
85 * frames.texi (Tooltips): Document x-gtk-use-system-tooltips.
86
12011-10-15 Chong Yidong <cyd@stupidchicken.com> 872011-10-15 Chong Yidong <cyd@stupidchicken.com>
2 88
3 * display.texi (Scrolling): Tweak explanation of scroll direction. 89 * display.texi (Scrolling): Tweak explanation of scroll direction.
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 374886cd956..6a24646b5f7 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -8,11 +8,11 @@
8@section Auto Reverting Non-File Buffers 8@section Auto Reverting Non-File Buffers
9 9
10Global Auto Revert Mode normally only reverts file buffers. There are 10Global Auto Revert Mode normally only reverts file buffers. There are
11two ways to auto-revert certain non-file buffers: enabling Auto Revert 11two ways to auto-revert certain non-file buffers: by enabling Auto
12Mode in those buffers (using @kbd{M-x auto-revert-mode}); and setting 12Revert Mode in those buffers (using @kbd{M-x auto-revert-mode}); and
13@code{global-auto-revert-non-file-buffers} non-@code{nil}. The latter 13by setting @code{global-auto-revert-non-file-buffers} to a
14enables Auto Reverting for all types of buffers for which it is 14non-@code{nil} value. The latter enables Auto Reverting for all types
15implemented (listed in the menu below). 15of buffers for which it is implemented (listed in the menu below).
16 16
17Like file buffers, non-file buffers should normally not revert while 17Like file buffers, non-file buffers should normally not revert while
18you are working on them, or while they contain information that might 18you are working on them, or while they contain information that might
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index e4e7dadd548..abb65982873 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -109,7 +109,7 @@ command provides completion (@pxref{Completion}). If you enter a
109code-point, it should be a hexadecimal number (which is the convention 109code-point, it should be a hexadecimal number (which is the convention
110for Unicode). The command then inserts the corresponding character 110for Unicode). The command then inserts the corresponding character
111into the buffer. For example, both of the following insert the 111into the buffer. For example, both of the following insert the
112infinity sign (Unicode code-point @code{#x221E}): 112infinity sign (Unicode code-point @code{U+221E}):
113 113
114@example 114@example
115@kbd{C-x 8 @key{RET} infinity @key{RET}} 115@kbd{C-x 8 @key{RET} infinity @key{RET}}
@@ -367,7 +367,7 @@ the preceding newline, joining this line to the previous one.
367 If, however, the region is active, @kbd{@key{DEL}} instead deletes 367 If, however, the region is active, @kbd{@key{DEL}} instead deletes
368the text in the region. @xref{Mark}, for a description of the region. 368the text in the region. @xref{Mark}, for a description of the region.
369 369
370 On most keyboards, @key{DEL} is labelled @key{Backspace}, but we 370 On most keyboards, @key{DEL} is labeled @key{Backspace}, but we
371refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL} 371refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL}
372with the @key{Delete} key; we will discuss @key{Delete} momentarily.) 372with the @key{Delete} key; we will discuss @key{Delete} momentarily.)
373On some text-only terminals, Emacs may not recognize the @key{DEL} key 373On some text-only terminals, Emacs may not recognize the @key{DEL} key
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index b82f3fac7d4..aed5473ac15 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -7,11 +7,11 @@
7 7
8@cindex buffers 8@cindex buffers
9 The text you are editing in Emacs resides in an object called a 9 The text you are editing in Emacs resides in an object called a
10@dfn{buffer}. Each time you visit a file, a buffer is created to hold the 10@dfn{buffer}. Each time you visit a file, a buffer is used to hold
11file's text. Each time you invoke Dired, a buffer is created to hold the 11the file's text. Each time you invoke Dired, a buffer is used to hold
12directory listing. If you send a message with @kbd{C-x m}, a buffer named 12the directory listing. If you send a message with @kbd{C-x m}, a
13@samp{*mail*} is used to hold the text of the message. When you ask for a 13buffer is used to hold the text of the message. When you ask for a
14command's documentation, that appears in a buffer called @samp{*Help*}. 14command's documentation, that appears in a buffer named @samp{*Help*}.
15 15
16 Each buffer has a unique name, which can be of any length. When a 16 Each buffer has a unique name, which can be of any length. When a
17buffer is displayed in a window, its name is shown in the mode line 17buffer is displayed in a window, its name is shown in the mode line
@@ -19,35 +19,34 @@ buffer is displayed in a window, its name is shown in the mode line
19matters in buffer names. Most buffers are made by visiting files, and 19matters in buffer names. Most buffers are made by visiting files, and
20their names are derived from the files' names; however, you can also 20their names are derived from the files' names; however, you can also
21create an empty buffer with any name you want. A newly started Emacs 21create an empty buffer with any name you want. A newly started Emacs
22has a buffer named @samp{*scratch*}, which is not associated with any 22has several buffers, including one named @samp{*scratch*}, which can
23file and can be used for evaluating Lisp expressions in Emacs 23be used for evaluating Lisp expressions and is not associated with any
24(@pxref{Lisp Interaction}). 24file (@pxref{Lisp Interaction}).
25 25
26@cindex selected buffer 26@cindex selected buffer
27@cindex current buffer 27@cindex current buffer
28 At any time, one and only one buffer is @dfn{current}. This is also 28 At any time, one and only one buffer is @dfn{selected}; we call it
29called the @dfn{selected buffer}. We often say that a command 29the @dfn{current buffer}. We sometimes say that a command operates on
30operates on ``the buffer''; this really means that the command 30``the buffer''; this really means that it operates on the current
31operates on the current buffer (most commands do). When there is only 31buffer. When there is only one Emacs window, the buffer displayed in
32one Emacs window, the buffer displayed in that window is current. 32that window is current. When there are multiple windows, the buffer
33When there are multiple windows present, the buffer displayed in the 33displayed in the @dfn{selected window} is current. @xref{Windows}.
34@dfn{selected window} is current. @xref{Windows}. 34
35 35 Aside from its textual contents, each buffer records several pieces
36 Each buffer records individually what file it is visiting (if any), 36of information, such as what file it is visiting (if any), whether it
37whether it is modified, and what major mode and minor modes are in 37is modified, and what major mode and minor modes are in effect
38effect (@pxref{Major Modes}). Any Emacs variable can be made 38(@pxref{Modes}). These are stored in @dfn{buffer-local
39@dfn{local to} a particular buffer, meaning its value in that buffer 39variables}---variables that can have a different value in each buffer.
40can be different from the value in other buffers. @xref{Locals}. 40@xref{Locals}.
41 41
42@cindex buffer size, maximum 42@cindex buffer size, maximum
43 A buffer's size cannot be larger than some maximum, which is defined 43 A buffer's size cannot be larger than some maximum, which is defined
44by the largest buffer position representable by the @dfn{Emacs 44by the largest buffer position representable by @dfn{Emacs integers}.
45integer} data type. This is because Emacs tracks buffer positions 45This is because Emacs tracks buffer positions using that data type.
46using that data type. For typical 64-bit machines, the maximum buffer size 46For typical 64-bit machines, this maximum buffer size is @math{2^61 -
47enforced by the data types is @math{2^61 - 2} bytes, or about 2 EiB. 472} bytes, or about 2 EiB. For typical 32-bit machines, the maximum is
48For typical 32-bit machines, the maximum is @math{2^29 - 2} bytes, or 48usually @math{2^29 - 2} bytes, or about 512 MiB. Buffer sizes are
49about 512 MiB. Buffer sizes are also limited by the size of Emacs's 49also limited by the amount of memory present in the system.
50virtual memory.
51 50
52@menu 51@menu
53* Select Buffer:: Creating a new buffer or reselecting an old one. 52* Select Buffer:: Creating a new buffer or reselecting an old one.
@@ -76,9 +75,9 @@ Similar, but select @var{buffer} in another window
76Similar, but select @var{buffer} in a separate frame 75Similar, but select @var{buffer} in a separate frame
77(@code{switch-to-buffer-other-frame}). 76(@code{switch-to-buffer-other-frame}).
78@item C-x @key{LEFT} 77@item C-x @key{LEFT}
79Select the previous buffer in the list of existing buffers. 78Select the previous buffer in the buffer list (@code{previous-buffer}).
80@item C-x @key{RIGHT} 79@item C-x @key{RIGHT}
81Select the next buffer in the list of existing buffers. 80Select the next buffer in the buffer list (@code{next-buffer}).
82@item C-u M-g M-g 81@item C-u M-g M-g
83@itemx C-u M-g g 82@itemx C-u M-g g
84Read a number @var{n} and move to line @var{n} in the most recently 83Read a number @var{n} and move to line @var{n} in the most recently
@@ -87,28 +86,21 @@ selected buffer other than the current buffer.
87 86
88@kindex C-x b 87@kindex C-x b
89@findex switch-to-buffer 88@findex switch-to-buffer
90 To select the buffer named @var{bufname}, type @kbd{C-x b 89 The @kbd{C-x b} (@code{switch-to-buffer}) command reads a buffer
91@var{bufname} @key{RET}}. This runs the command 90name using the minibuffer. Then it makes that buffer current, and
92@code{switch-to-buffer} with argument @var{bufname}. While entering 91displays it in the currently-selected window. An empty input
93the buffer name, you can use the usual minibuffer completion and 92specifies the buffer that was current most recently among those not
94history commands (@pxref{Minibuffer}). An empty input specifies the 93now displayed in any window. If you specify a buffer that does not
95buffer that was current most recently among those not now displayed in 94exist, @kbd{C-x b} creates a new, empty buffer that is not visiting
96any window. 95any file, and selects it for editing.
97 96
98@cindex minibuffer confirmation 97 While entering the buffer name, you can use the usual completion and
99@cindex confirming in the minibuffer 98history commands (@pxref{Minibuffer}). Note that @kbd{C-x b}, and
100 If you specify a buffer that does not exist, @kbd{C-x b} creates a 99related commands, use ``permissive completion with confirmation'' for
101new, empty buffer that is not visiting any file, and selects it for 100minibuffer completion: if you type @key{RET} immediately after
102editing. First, however, Emacs might prompt you for confirmation, in 101completing up to a nonexistent buffer name, Emacs prints
103case you entered the wrong buffer name. Emacs asks for confirmation 102@samp{[Confirm]} and you must type a second @key{RET} to submit that
104only if the last key you typed, before submitting the minibuffer input 103buffer name. @xref{Completion Exit}, for details.
105with @key{RET}, was @key{TAB} (@code{minibuffer-complete}). This
106catches a common mistake, in which one types @key{RET} before
107realizing that @key{TAB} did not complete far enough to yield the
108desired buffer name (@pxref{Completion}). Emacs asks for confirmation
109by putting the message @samp{[Confirm]} in the minibuffer; type
110@key{RET} again to confirm and visit the buffer. @xref{Visiting}, for
111information about modifying this behavior.
112 104
113 One reason to create a new buffer is to use it for making temporary 105 One reason to create a new buffer is to use it for making temporary
114notes. If you try to save it, Emacs asks for the file name to use. 106notes. If you try to save it, Emacs asks for the file name to use.
@@ -239,13 +231,10 @@ whose access control says you cannot write it.
239@findex toggle-read-only 231@findex toggle-read-only
240 If you wish to make changes in a read-only buffer, use the command 232 If you wish to make changes in a read-only buffer, use the command
241@kbd{C-x C-q} (@code{toggle-read-only}). It makes a read-only buffer 233@kbd{C-x C-q} (@code{toggle-read-only}). It makes a read-only buffer
242writable, and makes a writable buffer read-only. This 234writable, and makes a writable buffer read-only. This works by
243works by setting the variable @code{buffer-read-only}, which has a local 235setting the variable @code{buffer-read-only}, which has a local value
244value in each buffer and makes the buffer read-only if its value is 236in each buffer and makes the buffer read-only if its value is
245non-@code{nil}. If you have files under version control, you may find 237non-@code{nil}.
246it convenient to bind @kbd{C-x C-q} to @code{vc-toggle-read-only}
247instead. This will guard you against an operation that will confuse
248most modern version-conmtrol systems. @xref{Version Control}.
249 238
250@findex rename-buffer 239@findex rename-buffer
251 @kbd{M-x rename-buffer} changes the name of the current buffer. You 240 @kbd{M-x rename-buffer} changes the name of the current buffer. You
diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi
index 71a2dba7d08..4a09d6e3d9c 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -893,11 +893,12 @@ Move to a date specified in the Ethiopic calendar
893(@code{calendar-ethiopic-goto-date}). 893(@code{calendar-ethiopic-goto-date}).
894@end table 894@end table
895 895
896 These commands ask you for a date on the other calendar, move point to 896 These commands ask you for a date on the other calendar, move point
897the Gregorian calendar date equivalent to that date, and display the 897to the Gregorian calendar date equivalent to that date, and display
898other calendar's date in the echo area. Emacs uses strict completion 898the other calendar's date in the echo area. Emacs uses strict
899(@pxref{Strict Completion}) whenever it asks you to type a month name, so you 899completion (@pxref{Completion Exit}) whenever it asks you to type a
900don't have to worry about the spelling of Hebrew, Islamic, or French names. 900month name, so you don't have to worry about the spelling of Hebrew,
901Islamic, or French names.
901 902
902@c FIXME move? 903@c FIXME move?
903@findex calendar-hebrew-list-yahrzeits 904@findex calendar-hebrew-list-yahrzeits
@@ -993,7 +994,7 @@ occurrence of that combination. Use @kbd{g m n c} to move point to the
993next occurrence of a combination. These commands signal an error if the 994next occurrence of a combination. These commands signal an error if the
994haab/tzolkin date combination you have typed is impossible. 995haab/tzolkin date combination you have typed is impossible.
995 996
996 Emacs uses strict completion (@pxref{Strict Completion}) whenever it 997 Emacs uses strict completion (@pxref{Completion Exit}) whenever it
997asks you to type a Mayan name, so you don't have to worry about 998asks you to type a Mayan name, so you don't have to worry about
998spelling. 999spelling.
999 1000
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index de6e7539c27..817cfc369d1 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -46,7 +46,7 @@ are certain characters found on non-English keyboards
46@cindex M- 46@cindex M-
47 Emacs also recognizes control characters that are entered using 47 Emacs also recognizes control characters that are entered using
48@dfn{modifier keys}. Two commonly-used modifier keys are 48@dfn{modifier keys}. Two commonly-used modifier keys are
49@key{Control} (usually labelled @key{Ctrl}), and @key{Meta} (usually 49@key{Control} (usually labeled @key{Ctrl}), and @key{Meta} (usually
50labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{Meta} for 50labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{Meta} for
51historical reasons.}. For example, @kbd{Control-a} is entered by 51historical reasons.}. For example, @kbd{Control-a} is entered by
52holding down the @key{Ctrl} key while pressing @kbd{a}; we will refer 52holding down the @key{Ctrl} key while pressing @kbd{a}; we will refer
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 6af77374d07..d87c22ec28e 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -770,7 +770,7 @@ here's how to set up a hook to turn on Auto Fill mode when entering
770Text mode and other modes based on Text mode: 770Text mode and other modes based on Text mode:
771 771
772@example 772@example
773(add-hook 'text-mode-hook 'turn-on-auto-fill) 773(add-hook 'text-mode-hook 'auto-fill-mode)
774@end example 774@end example
775 775
776 Here is another example, showing how to use a hook to customize the 776 Here is another example, showing how to use a hook to customize the
@@ -2174,8 +2174,7 @@ Turn off Line Number mode, a global minor mode.
2174Turn on Auto Fill mode automatically in Text mode and related modes. 2174Turn on Auto Fill mode automatically in Text mode and related modes.
2175 2175
2176@example 2176@example
2177(add-hook 'text-mode-hook 2177(add-hook 'text-mode-hook 'auto-fill-mode)
2178 '(lambda () (auto-fill-mode 1)))
2179@end example 2178@end example
2180 2179
2181This shows how to add a hook function to a normal hook variable 2180This shows how to add a hook function to a normal hook variable
@@ -2183,19 +2182,9 @@ This shows how to add a hook function to a normal hook variable
2183@code{lambda}, with a single-quote in front of it to make it a list 2182@code{lambda}, with a single-quote in front of it to make it a list
2184constant rather than an expression. 2183constant rather than an expression.
2185 2184
2186It's beyond the scope of this manual to explain Lisp functions, but for 2185It's beyond the scope of this manual to explain Lisp functions, but
2187this example it is enough to know that the effect is to execute 2186for this example it is enough to know that the effect is to execute
2188@code{(auto-fill-mode 1)} when Text mode is entered. You can replace 2187the @code{auto-fill-mode} function when Text mode is entered.
2189that with any other expression that you like, or with several
2190expressions in a row.
2191
2192Emacs comes with a function named @code{turn-on-auto-fill} whose
2193definition is @code{(lambda () (auto-fill-mode 1))}. Thus, a simpler
2194way to write the above example is as follows:
2195
2196@example
2197(add-hook 'text-mode-hook 'turn-on-auto-fill)
2198@end example
2199 2188
2200@item 2189@item
2201Load the installed Lisp library named @file{foo} (actually a file 2190Load the installed Lisp library named @file{foo} (actually a file
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index d2f49c62e4a..b72e24bf243 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -21,7 +21,7 @@ the text is displayed.
21* Follow Mode:: Follow mode lets two windows scroll as one. 21* Follow Mode:: Follow mode lets two windows scroll as one.
22* Faces:: How to change the display style using faces. 22* Faces:: How to change the display style using faces.
23* Standard Faces:: Emacs' predefined faces. 23* Standard Faces:: Emacs' predefined faces.
24* Temporary Face Changes:: Commands to temporarily modify the default text face 24* Text Scale:: Increasing or decreasing text size in a buffer.
25* Font Lock:: Minor mode for syntactic highlighting using faces. 25* Font Lock:: Minor mode for syntactic highlighting using faces.
26* Highlight Interactively:: Tell Emacs what text to highlight. 26* Highlight Interactively:: Tell Emacs what text to highlight.
27* Fringes:: Enabling or disabling window fringes. 27* Fringes:: Enabling or disabling window fringes.
@@ -55,7 +55,7 @@ direction that the window moves relative to the text; this terminology
55was taken up by Emacs before the modern meaning of ``scrolling up'' 55was taken up by Emacs before the modern meaning of ``scrolling up''
56and ``scrolling down'' became widely adopted. Hence the strange 56and ``scrolling down'' became widely adopted. Hence the strange
57result that @key{PageDown} scrolls ``up'' in the Emacs sense. In this 57result that @key{PageDown} scrolls ``up'' in the Emacs sense. In this
58manual, we refer to scrolling ``foward'' and ``backward'' where 58manual, we refer to scrolling ``forward'' and ``backward'' where
59possible, in order to minimize confusion. 59possible, in order to minimize confusion.
60 60
61 The portion of a buffer displayed in a window always contains point. 61 The portion of a buffer displayed in a window always contains point.
@@ -439,76 +439,69 @@ one large window.
439@section Faces: Controlling Text Display Style 439@section Faces: Controlling Text Display Style
440@cindex faces 440@cindex faces
441 441
442 Emacs can display text in several different styles, which are called 442 Emacs can display text in several different styles, called
443@dfn{faces}. Each face can specify various @dfn{face attributes}, 443@dfn{faces}. Each face can specify various @dfn{face attributes},
444such as the font, height, weight and slant, the foreground and 444such as the font, height, weight, slant, foreground and background
445background color, and underlining or overlining. A face does not have 445color, and underlining or overlining. Most major modes assign faces
446to specify all of these attributes; often it inherits most of them 446to the text automatically, via Font Lock mode. @xref{Font Lock}, for
447from another face. 447more information about how these faces are assigned.
448 448
449 On a text-only terminal, not all face attributes are meaningful. 449@findex list-faces-display
450Some text-only terminals support inverse video, bold, and underline 450 To see what faces are currently defined, and what they look like,
451attributes; some support colors. Text-only terminals generally do not 451type @kbd{M-x list-faces-display}. With a prefix argument, this
452support changing the height, width or font. 452prompts for a regular expression, and displays only faces with names
453 453matching that regular expression (@pxref{Regexps}).
454 Most major modes assign faces to the text automatically through the 454
455work of Font Lock mode. @xref{Font Lock}, for more information about 455 It's possible for a given face to look different in different
456Font Lock mode and syntactic highlighting. You can print the current 456frames. For instance, some text-only terminals do not support all
457buffer with the highlighting that appears on your screen using the 457face attributes, particularly font, height, and width, and some
458command @code{ps-print-buffer-with-faces}. @xref{PostScript}. 458support a limited range of colors. The @code{list-faces-display}
459 459command shows the appearance for the selected frame.
460 Enriched mode, the mode for editing formatted text, provides
461commands and menus for specifying faces for text in the buffer.
462@xref{Format Faces}.
463 460
464@cindex face colors, setting 461@cindex face colors, setting
465 To alter the appearance of a face, use the customization buffer. 462@cindex background color
466@xref{Face Customization}. You can also use X resources to specify 463@cindex default face
467attributes of any particular face (@pxref{Resources}). When 464 You can customize a face to alter its appearance, and save those
468displaying a character, any attribute that isn't specified by its face 465changes for future Emacs sessions. @xref{Face Customization}. A face
469is taken from the @code{default} face, whose attributes reflect the 466does not have to specify every single attribute; often it inherits
470default settings of the frame itself. 467most attributes from another face. Any ultimately unspecified
468attribute is taken from a face named @code{default}, whose attributes
469are all specified. The @code{default} face is the default for
470displaying text, and its background color is also used as the frame's
471background color.
472
473 You can also use X resources to specify attributes of any particular
474face. @xref{Resources}.
471 475
472@findex set-face-foreground 476@findex set-face-foreground
473@findex set-face-background 477@findex set-face-background
474 You can also change the foreground and background colors of a 478 You can also change the foreground and background colors of a face
475specific face with @kbd{M-x set-face-foreground} and @kbd{M-x 479with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
476set-face-background}. These commands prompt in the minibuffer for a 480These commands prompt in the minibuffer for a face name and a color
477face name and a color name, with completion, and then set that face to 481name, with completion, and then set that face to use the specified
478use the specified color. @xref{Face Customization}, for information 482color (@pxref{Face Customization}, for information about color names).
479about color names. These commands affect the face colors on all 483They affect the face colors on all frames, but their effects do not
480frames, both existing and those to be created in the future. These 484persist for future Emacs sessions, unlike using the customization
481changes do not, however, persist for future Emacs sessions; to make 485buffer or X resources. You can also use frame parameters to set
482lasting changes, use the customization buffer (@pxref{Face 486foreground and background colors for a specific frame; see @ref{Frame
483Customization}). 487Parameters}.
484 488
485 You can also set foreground and background colors for the current 489 Emacs can display variable-width fonts, but some Emacs commands,
486frame only; see @ref{Frame Parameters}. 490particularly indentation commands, do not account for variable
487 491character display widths. Therefore, we recommend not using
488 Emacs can display variable-width fonts, but some of the Emacs 492variable-width fonts for most faces, particularly those assigned by
489commands that calculate width and indentation do not know how to 493Font Lock mode.
490calculate variable widths. This can sometimes lead to incorrect
491results when you use variable-width fonts. In particular, indentation
492commands can give inconsistent results, so we recommend you avoid
493variable-width fonts, especially for editing program source code.
494 494
495@node Standard Faces 495@node Standard Faces
496@section Standard Faces 496@section Standard Faces
497 497
498@findex list-faces-display
499 To see what faces are currently defined, and what they look like,
500type @kbd{M-x list-faces-display}. It's possible for a given face to
501look different in different frames; this command shows the appearance
502in the frame in which you type it. With a prefix argument, this
503prompts for a regular expression, and displays only faces with names
504matching that regular expression.
505
506 Here are the standard faces for specifying text appearance. You can 498 Here are the standard faces for specifying text appearance. You can
507apply them to specific text when you want the effects they produce. 499apply them to specific text when you want the effects they produce.
508 500
509@table @code 501@table @code
510@item default 502@item default
511This face is used for ordinary text that doesn't specify any face. 503This face is used for ordinary text that doesn't specify any face.
504Its background color is used as the frame's background color.
512@item bold 505@item bold
513This face uses a bold variant of the default font. 506This face uses a bold variant of the default font.
514@item italic 507@item italic
@@ -535,37 +528,38 @@ their own faces for this purpose.)
535 528
536@table @code 529@table @code
537@item highlight 530@item highlight
538This face is used for highlighting portions of text, in various modes. 531This face is used for text highlighting in various contexts, such as
539For example, mouse-sensitive text is highlighted using this face. 532when the mouse cursor is moved over a hyperlink.
540@item isearch 533@item isearch
541This face is used for highlighting the current Isearch match 534This face is used to highlight the current Isearch match
542(@pxref{Incremental Search}). 535(@pxref{Incremental Search}).
543@item query-replace 536@item query-replace
544This face is used for highlighting the current Query Replace match 537This face is used to highlight the current Query Replace match
545(@pxref{Replace}). 538(@pxref{Replace}).
546@item lazy-highlight 539@item lazy-highlight
547This face is used for lazy highlighting of Isearch and Query Replace 540This face is used to highlight ``lazy matches'' for Isearch and Query
548matches other than the current one. 541Replace (matches other than the current one).
549@item region 542@item region
550This face is used for displaying a selected region (@pxref{Mark}). 543This face is used for displaying an active region (@pxref{Mark}).
544When Emacs is built with GTK support, its colors are taken from the
545current GTK theme.
551@item secondary-selection 546@item secondary-selection
552This face is used for displaying a secondary X selection (@pxref{Secondary 547This face is used for displaying a secondary X selection (@pxref{Secondary
553Selection}). 548Selection}).
554@item trailing-whitespace 549@item trailing-whitespace
555The face for highlighting excess spaces and tabs at the end of a line 550The face for highlighting excess spaces and tabs at the end of a line
556when @code{show-trailing-whitespace} is non-@code{nil}; see 551when @code{show-trailing-whitespace} is non-@code{nil} (@pxref{Useless
557@ref{Useless Whitespace}. 552Whitespace}).
558@item nobreak-space
559The face for displaying the character ``nobreak space.''
560@item escape-glyph 553@item escape-glyph
561The face for highlighting the @samp{\} or @samp{^} that indicates 554The face for displaying control characters and escape sequences
562a control character. It's also used when @samp{\} indicates a 555(@pxref{Text Display}).
563nobreak space or nobreak (soft) hyphen. 556@item nobreak-space
557The face for displaying ``no-break'' space characters (@pxref{Text
558Display}).
564@end table 559@end table
565 560
566 These faces control the appearance of parts of the Emacs frame. 561 The following faces control the appearance of parts of the Emacs
567They exist as faces to provide a consistent way to customize the 562frame:
568appearance of these parts of the frame.
569 563
570@table @code 564@table @code
571@item mode-line 565@item mode-line
@@ -588,11 +582,8 @@ at the top of a window just as the mode line appears at the bottom.
588Most windows do not have a header line---only some special modes, such 582Most windows do not have a header line---only some special modes, such
589Info mode, create one. 583Info mode, create one.
590@item vertical-border 584@item vertical-border
591This face is used for the vertical divider between windows. 585This face is used for the vertical divider between windows on
592By default this face inherits from the @code{mode-line-inactive} face 586text-only terminals.
593on character terminals. On graphical displays the foreground color of
594this face is used for the vertical line between windows without
595scrollbars.
596@item minibuffer-prompt 587@item minibuffer-prompt
597@cindex @code{minibuffer-prompt} face 588@cindex @code{minibuffer-prompt} face
598@vindex minibuffer-prompt-properties 589@vindex minibuffer-prompt-properties
@@ -607,35 +598,38 @@ The face for the fringes to the left and right of windows on graphic
607displays. (The fringes are the narrow portions of the Emacs frame 598displays. (The fringes are the narrow portions of the Emacs frame
608between the text area and the window's right and left borders.) 599between the text area and the window's right and left borders.)
609@xref{Fringes}. 600@xref{Fringes}.
610@item scroll-bar
611This face determines the visual appearance of the scroll bar.
612@xref{Scroll Bars}.
613@item border
614This face determines the color of the frame border.
615@item cursor 601@item cursor
616This face determines the color of the cursor. 602The @code{:background} attribute of this face specifies the color of
603the text cursor. @xref{Cursor Display}.
604@item tooltip
605This face is used for tooltip text. By default, if Emacs is built
606with GTK support, tooltips are drawn via GTK and this face has no
607effect. @xref{Tooltips}.
617@item mouse 608@item mouse
618This face determines the color of the mouse pointer. 609This face determines the color of the mouse pointer.
610@end table
611
612 The following faces likewise control the appearance of parts of the
613Emacs frame, but only on text-only terminals, or when Emacs is built
614on X with no toolkit support. (For all other cases, the appearance of
615the respective frame elements is determined by system-wide settings.)
616
617@table @code
618@item scroll-bar
619This face determines the visual appearance of the scroll bar.
620@xref{Scroll Bars}.
619@item tool-bar 621@item tool-bar
620This face determines the color of tool bar icons. @xref{Tool Bars}. 622This face determines the color of tool bar icons. @xref{Tool Bars}.
621@item tooltip
622This face is used for tooltips. @xref{Tooltips}.
623@item menu 623@item menu
624@cindex menu bar appearance 624@cindex menu bar appearance
625@cindex @code{menu} face, no effect if customized 625@cindex @code{menu} face, no effect if customized
626@cindex customization of @code{menu} face 626@cindex customization of @code{menu} face
627This face determines the colors and font of Emacs's menus. @xref{Menu 627This face determines the colors and font of Emacs's menus. @xref{Menu
628Bars}. This has no effect in Emacs built with GTK and in the 628Bars}.
629MS-Windows/Mac ports; you need to use system-wide styles and options
630to change the appearance of GTK, Windows, or Mac menus. Setting the
631font of LessTif/Motif menus is currently not supported; attempts to
632set the font are ignored in this case.
633@end table 629@end table
634 630
635@node Temporary Face Changes 631@node Text Scale
636@section Temporary Face Changes 632@section Text Scale
637
638The following commands change the default face within a buffer.
639 633
640@cindex adjust buffer face height 634@cindex adjust buffer face height
641@findex text-scale-adjust 635@findex text-scale-adjust
@@ -652,9 +646,11 @@ determine which action to take.
652 646
653 The final key of these commands may be repeated without the leading 647 The final key of these commands may be repeated without the leading
654@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face 648@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face
655height by three steps. Each step scales the height of the default 649height by three steps. Each step scales the text height by a factor
656face by the value of the variable @code{text-scale-mode-step}. As a 650of 1.2; to change this factor, customize the variable
657special case, an argument of 0 removes any scaling currently active. 651@code{text-scale-mode-step}. As an exception, a numeric argument of 0
652to the @code{text-scale-adjust} command restores the default height,
653similar to typing @kbd{C-x C-0}.
658 654
659@cindex increase buffer face height 655@cindex increase buffer face height
660@findex text-scale-increase 656@findex text-scale-increase
@@ -668,21 +664,14 @@ You may find it convenient to bind to these commands, rather than
668 664
669@cindex set buffer face height 665@cindex set buffer face height
670@findex text-scale-set 666@findex text-scale-set
671The command @code{text-scale-set} sets the height of the default face 667 The command @code{text-scale-set} scales the height of the default
672in the current buffer to an absolute level specified by its prefix 668face in the current buffer to an absolute level specified by its
673argument. 669prefix argument.
674 670
675@findex text-scale-mode 671@findex text-scale-mode
676 The above commands automatically enable or disable the minor mode 672 The above commands automatically enable the minor mode
677@code{text-scale-mode}, depending on whether the current font scaling 673@code{text-scale-mode} if the current font scaling is other than 1,
678is other than 1 or not. 674and disable it otherwise.
679
680@cindex variable pitch mode
681@findex variable-pitch-mode
682 To temporarily change the face in the current buffer to a
683variable-pitch (``proportional'') font, use the command @kbd{M-x
684variable-pitch-mode} to enable or disable the Variable Pitch minor
685mode.
686 675
687@node Font Lock 676@node Font Lock
688@section Font Lock mode 677@section Font Lock mode
@@ -691,44 +680,37 @@ mode.
691@cindex syntax highlighting and coloring 680@cindex syntax highlighting and coloring
692 681
693 Font Lock mode is a minor mode, always local to a particular buffer, 682 Font Lock mode is a minor mode, always local to a particular buffer,
694which highlights (or ``fontifies'') the buffer contents according to 683which assigns faces to (or @dfn{fontifies}) the text in the buffer.
695the syntax of the text you are editing. It can recognize comments and 684Each buffer's major mode tells Font Lock mode which text to fontify;
696strings in most programming languages; in several languages, it can 685for instance, programming language modes fontify syntactically
697also recognize and properly highlight various other important 686relevant constructs like comments, strings, and function names.
698constructs, such as names of functions being defined or reserved
699keywords. Some special modes, such as Occur mode and Info mode, have
700completely specialized ways of assigning fonts for Font Lock mode.
701 687
702@findex font-lock-mode 688@findex font-lock-mode
703 Font Lock mode is turned on by default in all modes which support it. 689 Font Lock mode is enabled by default. To toggle it in the current
704You can toggle font-lock for each buffer with the command @kbd{M-x 690buffer, type @kbd{M-x font-lock-mode}. A positive numeric argument
705font-lock-mode}. Using a positive argument unconditionally turns Font 691unconditionally enables Font Lock mode, and a negative or zero
706Lock mode on, and a negative or zero argument turns it off. 692argument disables it.
707 693
708@findex global-font-lock-mode 694@findex global-font-lock-mode
709@vindex global-font-lock-mode 695@vindex global-font-lock-mode
710 If you do not wish Font Lock mode to be turned on by default, 696 To toggle Font Lock mode in all buffers, type @kbd{M-x
711customize the variable @code{global-font-lock-mode} using the Customize 697global-font-lock-mode}. To impose this setting for future Emacs
712interface (@pxref{Easy Customization}), or use the function 698sessions, customize the variable @code{global-font-lock-mode}
713@code{global-font-lock-mode} in your @file{.emacs} file, like this: 699(@pxref{Easy Customization}), or add the following line to your init
700file:
714 701
715@example 702@example
716(global-font-lock-mode 0) 703(global-font-lock-mode 0)
717@end example 704@end example
718 705
719@noindent 706@noindent
720This variable, like all the variables that control Font Lock mode, 707If you have disabled Global Font Lock mode, you can still enable Font
721take effect whenever fontification is done; that is, potentially at
722any time.
723
724@findex turn-on-font-lock
725 If you have disabled Global Font Lock mode, you can still enable Font
726Lock for specific major modes by adding the function 708Lock for specific major modes by adding the function
727@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For 709@code{font-lock-mode} to the mode hooks (@pxref{Hooks}). For example,
728example, to enable Font Lock mode for editing C files, you can do this: 710to enable Font Lock mode for editing C files, you can do this:
729 711
730@example 712@example
731(add-hook 'c-mode-hook 'turn-on-font-lock) 713(add-hook 'c-mode-hook 'font-lock-mode)
732@end example 714@end example
733 715
734 Font Lock mode uses several specifically named faces to do its job, 716 Font Lock mode uses several specifically named faces to do its job,
@@ -739,27 +721,19 @@ use that customization buffer to customize the appearance of these
739faces. @xref{Face Customization}. 721faces. @xref{Face Customization}.
740 722
741@vindex font-lock-maximum-decoration 723@vindex font-lock-maximum-decoration
742 The variable @code{font-lock-maximum-decoration} specifies the 724 You can customize the variable @code{font-lock-maximum-decoration}
743preferred level of fontification, for modes that provide multiple 725to alter the amount of fontification applied by Font Lock mode, for
744levels. Level 1 is the least amount of fontification; some modes 726major modes that support this feature. The value should be a number
745support levels as high as 3. The normal default is ``as high as 727(with 1 representing a minimal amount of fontification; some modes
746possible.'' You can specify an integer, which applies to all modes, or 728support levels as high as 3); or @code{t}, meaning ``as high as
747you can specify different numbers for particular major modes; for 729possible'' (the default). You can also specify different numbers for
748example, to use level 1 for C/C++ modes, and the default level 730particular major modes; for example, to use level 1 for C/C++ modes,
749otherwise, use this: 731and the default level otherwise, use the value
750 732
751@example 733@example
752(setq font-lock-maximum-decoration 734'((c-mode . 1) (c++-mode . 1)))
753 '((c-mode . 1) (c++-mode . 1)))
754@end example 735@end example
755 736
756@vindex font-lock-maximum-size
757 Fontification can be too slow for large buffers, so you can suppress
758it for buffers above a certain size. The variable
759@code{font-lock-maximum-size} specifies a buffer size, beyond which
760buffer fontification is suppressed.
761
762@c @w is used below to prevent a bad page-break.
763@vindex font-lock-beginning-of-syntax-function 737@vindex font-lock-beginning-of-syntax-function
764@cindex incorrect fontification 738@cindex incorrect fontification
765@cindex parenthesis in column zero and fontification 739@cindex parenthesis in column zero and fontification
@@ -768,11 +742,10 @@ buffer fontification is suppressed.
768relies on analysis of the syntactic structure of the buffer text. For 742relies on analysis of the syntactic structure of the buffer text. For
769the sake of speed, some modes, including Lisp mode, rely on a special 743the sake of speed, some modes, including Lisp mode, rely on a special
770convention: an open-parenthesis or open-brace in the leftmost column 744convention: an open-parenthesis or open-brace in the leftmost column
771always defines the @w{beginning} of a defun, and is thus always 745always defines the beginning of a defun, and is thus always outside
772outside any string or comment. (@xref{Left Margin Paren}.) If you 746any string or comment. Therefore, you should avoid placing a an
773don't follow this convention, Font Lock mode can misfontify the text 747open-parenthesis or open-brace in the leftmost column, if it is inside
774that follows an open-parenthesis or open-brace in the leftmost column 748a string or comment. @xref{Left Margin Paren}, for details.
775that is inside a string or comment.
776 749
777@cindex slow display during scrolling 750@cindex slow display during scrolling
778 The variable @code{font-lock-beginning-of-syntax-function}, which is 751 The variable @code{font-lock-beginning-of-syntax-function}, which is
@@ -788,11 +761,11 @@ considerably slow down redisplay while scrolling, particularly if you
788are close to the end of a large buffer. 761are close to the end of a large buffer.
789 762
790@findex font-lock-add-keywords 763@findex font-lock-add-keywords
791 Font Lock highlighting patterns already exist for many modes, but you 764 Font Lock highlighting patterns already exist for most modes, but
792may want to fontify additional patterns. You can use the function 765you may want to fontify additional patterns. You can use the function
793@code{font-lock-add-keywords}, to add your own highlighting patterns for 766@code{font-lock-add-keywords}, to add your own highlighting patterns
794a particular mode. For example, to highlight @samp{FIXME:} words in C 767for a particular mode. For example, to highlight @samp{FIXME:} words
795comments, use this: 768in C comments, use this:
796 769
797@example 770@example
798(add-hook 'c-mode-hook 771(add-hook 'c-mode-hook
@@ -803,19 +776,20 @@ comments, use this:
803@end example 776@end example
804 777
805@findex font-lock-remove-keywords 778@findex font-lock-remove-keywords
806 To remove keywords from the font-lock highlighting patterns, use the 779@noindent
780To remove keywords from the font-lock highlighting patterns, use the
807function @code{font-lock-remove-keywords}. @xref{Search-based 781function @code{font-lock-remove-keywords}. @xref{Search-based
808Fontification,,, elisp, The Emacs Lisp Reference Manual}. 782Fontification,,, elisp, The Emacs Lisp Reference Manual}.
809 783
810@cindex just-in-time (JIT) font-lock 784@cindex just-in-time (JIT) font-lock
811@cindex background syntax highlighting 785@cindex background syntax highlighting
812 Fontifying large buffers can take a long time. To avoid large 786 Fontifying large buffers can take a long time. To avoid large
813delays when a file is visited, Emacs fontifies only the visible 787delays when a file is visited, Emacs initially fontifies only the
814portion of a buffer. As you scroll through the buffer, each portion 788visible portion of a buffer. As you scroll through the buffer, each
815that becomes visible is fontified as soon as it is displayed; this 789portion that becomes visible is fontified as soon as it is displayed;
816type of Font Lock is called @dfn{Just-In-Time} (or @dfn{JIT}) Lock. 790this type of Font Lock is called @dfn{Just-In-Time} (or @dfn{JIT})
817You can control how JIT Lock behaves, including telling it to perform 791Lock. You can control how JIT Lock behaves, including telling it to
818fontification while idle, by customizing variables in the 792perform fontification while idle, by customizing variables in the
819customization group @samp{jit-lock}. @xref{Specific Customization}. 793customization group @samp{jit-lock}. @xref{Specific Customization}.
820 794
821@node Highlight Interactively 795@node Highlight Interactively
@@ -826,7 +800,7 @@ customization group @samp{jit-lock}. @xref{Specific Customization}.
826 800
827@findex highlight-changes-mode 801@findex highlight-changes-mode
828Highlight Changes mode is a minor mode that @dfn{highlights} the parts 802Highlight Changes mode is a minor mode that @dfn{highlights} the parts
829of the buffer were changed most recently, by giving that text a 803of the buffer that were changed most recently, by giving that text a
830different face. To enable or disable Highlight Changes mode, use 804different face. To enable or disable Highlight Changes mode, use
831@kbd{M-x highlight-changes-mode}. 805@kbd{M-x highlight-changes-mode}.
832 806
@@ -926,42 +900,50 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
926@section Window Fringes 900@section Window Fringes
927@cindex fringes 901@cindex fringes
928 902
929 On a graphical display, each Emacs window normally has narrow 903@findex set-fringe-style
904@findex fringe-mode
905 On graphical displays, each Emacs window normally has narrow
930@dfn{fringes} on the left and right edges. The fringes are used to 906@dfn{fringes} on the left and right edges. The fringes are used to
931display symbols that provide information about the text in the window. 907display symbols that provide information about the text in the window.
908You can type @kbd{M-x fringe-mode} to disable the fringes, or modify
909their width. This command affects fringes in all frames; to modify
910fringes on the selected frame only, use @kbd{M-x set-fringe-style}.
932 911
933 The most common use of the fringes is to indicate a continuation 912 The most common use of the fringes is to indicate a continuation
934line, when one line of text is split into multiple lines on the 913line (@pxref{Continuation Lines}). When one line of text is split
935screen. The left fringe shows a curving arrow for each screen line 914into multiple screen lines, the left fringe shows a curving arrow for
936except the first, indicating that ``this is not the real beginning.'' 915each screen line except the first, indicating that ``this is not the
937The right fringe shows a curving arrow for each screen line except the 916real beginning.'' The right fringe shows a curving arrow for each
938last, indicating that ``this is not the real end.'' If the line's 917screen line except the last, indicating that ``this is not the real
939direction is right-to-left (@pxref{Bidirectional Editing}), the 918end.'' If the line's direction is right-to-left (@pxref{Bidirectional
940meaning of the curving arrows in the left and right fringes are 919Editing}), the meanings of the curving arrows in the fringes are
941swapped. 920swapped.
942 921
943 The fringes indicate line truncation with short horizontal arrows 922 The fringes indicate line truncation with short horizontal arrows
944meaning ``there's more text on this line which is scrolled 923meaning ``there's more text on this line which is scrolled
945horizontally out of view;'' clicking the mouse on one of the arrows 924horizontally out of view.'' Clicking the mouse on one of the arrows
946scrolls the display horizontally in the direction of the arrow. The 925scrolls the display horizontally in the direction of the arrow.
947fringes can also indicate other things, such as empty lines, or where a
948program you are debugging is executing (@pxref{Debuggers}).
949 926
950@findex set-fringe-style 927 The fringes can also indicate other things, such as buffer
951@findex fringe-mode 928boundaries (@pxref{Displaying Boundaries}), and where a program you
952 You can enable and disable the fringes for all frames using 929are debugging is executing (@pxref{Debuggers}).
953@kbd{M-x fringe-mode}. To enable and disable the fringes 930
954for the selected frame, use @kbd{M-x set-fringe-style}. 931@vindex overflow-newline-into-fringe
932 The fringe is also used for drawing the cursor, if the current line
933is exactly as wide as the window and point is at the end of the line.
934To disable this, change the variable
935@code{overflow-newline-into-fringe} to @code{nil}; this causes Emacs
936to continue or truncate lines that are exactly as wide as the window.
955 937
956@node Displaying Boundaries 938@node Displaying Boundaries
957@section Displaying Boundaries 939@section Displaying Boundaries
958 940
959@vindex indicate-buffer-boundaries 941@vindex indicate-buffer-boundaries
960 On a graphical display, Emacs can indicate the buffer boundaries in 942 On graphical displays, Emacs can indicate the buffer boundaries in
961the fringes. It indicates the first line and the last line with 943the fringes. If you enable this feature, the first line and the last
962angle images in the fringes. This can be combined with up and down 944line are marked with angle images in the fringes. This can be
963arrow images which say whether it is possible to scroll the window up 945combined with up and down arrow images which say whether it is
964and down. 946possible to scroll the window.
965 947
966 The buffer-local variable @code{indicate-buffer-boundaries} controls 948 The buffer-local variable @code{indicate-buffer-boundaries} controls
967how the buffer boundaries and window scrolling is indicated in the 949how the buffer boundaries and window scrolling is indicated in the
@@ -1006,25 +988,22 @@ the location of point is enough to show you that the spaces are
1006present. 988present.
1007 989
1008@findex delete-trailing-whitespace 990@findex delete-trailing-whitespace
1009 Type @kbd{M-x delete-trailing-whitespace @key{RET}} to delete all 991 Type @kbd{M-x delete-trailing-whitespace} to delete all trailing
1010trailing whitespace within the buffer's accessible portion 992whitespace within the buffer. If the region is active, it deletes all
1011(@pxref{Narrowing}). This command does not remove newline characters. 993trailing whitespace in the region instead.
1012 994
1013@vindex indicate-empty-lines 995@vindex indicate-empty-lines
1014@cindex unused lines 996@cindex unused lines
1015@cindex fringes, and unused line indication 997@cindex fringes, and unused line indication
1016 Emacs can indicate unused lines at the end of the window with a 998 On graphical displays, Emacs can indicate unused lines at the end of
1017small image in the left fringe (@pxref{Fringes}). The image appears 999the window with a small image in the left fringe (@pxref{Fringes}).
1018for window lines that do not correspond to any buffer text. Blank 1000The image appears for window lines that do not correspond to any
1019lines at the end of the buffer then stand out because they do not have 1001buffer text. Blank lines at the end of the buffer then stand out
1020this image in the fringe. 1002because they do not have this image in the fringe. To enable this
1021 1003feature, set the buffer-local variable @code{indicate-empty-lines} to
1022 To enable this feature, set the buffer-local variable 1004a non-@code{nil} value. You can enable or disable this feature for
1023@code{indicate-empty-lines} to a non-@code{nil} value. You can enable 1005all new buffers by setting the default value of this variable,
1024or disable this feature for all new buffers by setting the default 1006e.g.@:@code{(setq-default indicate-empty-lines t)}.
1025value of this variable, e.g.@: @code{(setq-default
1026indicate-empty-lines t)};. (This feature currently doesn't work on
1027text-only terminals.)
1028 1007
1029@node Selective Display 1008@node Selective Display
1030@section Selective Display 1009@section Selective Display
@@ -1153,14 +1132,15 @@ set the variable @code{display-time-24hr-format} to @code{t}.
1153@vindex display-time-mail-file 1132@vindex display-time-mail-file
1154@vindex display-time-mail-directory 1133@vindex display-time-mail-directory
1155 The word @samp{Mail} appears after the load level if there is mail 1134 The word @samp{Mail} appears after the load level if there is mail
1156for you that you have not read yet. On a graphical display you can use 1135for you that you have not read yet. On graphical displays, you can
1157an icon instead of @samp{Mail} by customizing 1136use an icon instead of @samp{Mail} by customizing
1158@code{display-time-use-mail-icon}; this may save some space on the mode 1137@code{display-time-use-mail-icon}; this may save some space on the
1159line. You can customize @code{display-time-mail-face} to make the mail 1138mode line. You can customize @code{display-time-mail-face} to make
1160indicator prominent. Use @code{display-time-mail-file} to specify 1139the mail indicator prominent. Use @code{display-time-mail-file} to
1161the mail file to check, or set @code{display-time-mail-directory} 1140specify the mail file to check, or set
1162to specify the directory to check for incoming mail (any nonempty regular 1141@code{display-time-mail-directory} to specify the directory to check
1163file in the directory is considered as ``newly arrived mail''). 1142for incoming mail (any nonempty regular file in the directory is
1143considered as ``newly arrived mail'').
1164 1144
1165@cindex mail (on mode line) 1145@cindex mail (on mode line)
1166@findex display-battery-mode 1146@findex display-battery-mode
@@ -1178,11 +1158,10 @@ percentage of the total charge.
1178@cindex mode line, 3D appearance 1158@cindex mode line, 3D appearance
1179@cindex attributes of mode line, changing 1159@cindex attributes of mode line, changing
1180@cindex non-integral number of lines in a window 1160@cindex non-integral number of lines in a window
1181 By default, the mode line is drawn on graphics displays with 1161 On graphical displays, the mode line is drawn as a 3D box. If you
11823D-style highlighting, like that of a button when it is not being 1162don't like this effect, you can disable it by customizing the
1183pressed. If you don't like this effect, you can disable the 3D 1163@code{mode-line} face and setting its @code{box} attribute to
1184highlighting of the mode line, by customizing the attributes of the 1164@code{nil}. @xref{Face Customization}.
1185@code{mode-line} face. @xref{Face Customization}.
1186 1165
1187@cindex non-selected windows, mode line appearance 1166@cindex non-selected windows, mode line appearance
1188 By default, the mode line of nonselected windows is displayed in a 1167 By default, the mode line of nonselected windows is displayed in a
@@ -1210,58 +1189,58 @@ formats by setting each of the variables @code{eol-mnemonic-unix},
1210@node Text Display 1189@node Text Display
1211@section How Text Is Displayed 1190@section How Text Is Displayed
1212@cindex characters (in text) 1191@cindex characters (in text)
1192@cindex printing character
1213 1193
1214 @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs 1194 Most characters are @dfn{printing characters}: when they appear in a
1215buffers are displayed with their graphics, as are non-@acronym{ASCII} multibyte 1195buffer, they are displayed literally on the screen. Printing
1216printing characters (octal codes above 0400). 1196characters include @acronym{ASCII} numbers, letters, and punctuation
1197characters, as well as many non-@acronym{ASCII} characters.
1217 1198
1218@vindex tab-width 1199@vindex tab-width
1219 Some @acronym{ASCII} control characters are displayed in special 1200@cindex control character
1220ways. The newline character (octal code 012) is displayed by starting 1201 The @acronym{ASCII} character set contains non-printing @dfn{control
1221a new line. The tab character (octal code 011) is displayed by moving 1202characters}. Two of these are displayed specially: the newline
1222to the next tab stop column (normally every 8 columns). The number of 1203character (Unicode code point @code{U+000A}) is displayed by starting
1223spaces per tab is controlled by the variable @code{tab-width}, which 1204a new line, while the tab character (@code{U+0009}) is displayed as a
1224must have an integer value between 1 and 1000, inclusive, and is made 1205space that extends to the next tab stop column (normally every 8
1225buffer-local by changing it. Note that how the tab character in the buffer 1206columns). The number of spaces per tab is controlled by the
1226is displayed has nothing to do with the definition of @key{TAB} as a 1207buffer-local variable @code{tab-width}, which must have an integer
1227command. 1208value between 1 and 1000, inclusive. Note that how the tab character
1228 1209in the buffer is displayed has nothing to do with the definition of
1229 Other @acronym{ASCII} control characters are normally displayed as a caret 1210@key{TAB} as a command.
1230(@samp{^}) followed by the non-control version of the character; thus, 1211
1231control-A is displayed as @samp{^A}. The caret appears in face 1212 Other @acronym{ASCII} control characters are displayed as a caret
1232@code{escape-glyph}. 1213(@samp{^}) followed by the non-control version of the character, with
1233 1214the @code{escape-glyph} face. For instance, the @samp{control-A}
1234 Non-@acronym{ASCII} characters 0200 through 0237 (octal) are 1215character, @code{U+0001}, is displayed as @samp{^A}.
1235displayed with octal escape sequences; thus, character code 0230
1236(octal) is displayed as @samp{\230}. The backslash appears in face
1237@code{escape-glyph}.
1238 1216
1239@vindex ctl-arrow 1217@vindex ctl-arrow
1240 If the variable @code{ctl-arrow} is @code{nil}, control characters in 1218 The non-@acronym{ASCII}, non-printing characters @code{U+0080}
1241the buffer are displayed with octal escape sequences, except for newline 1219(octal 200) through @code{U+009F} (octal 237) are displayed as octal
1242and tab. Altering the value of @code{ctl-arrow} makes it local to the 1220escape sequences, with the @code{escape-glyph} face. For instance,
1243current buffer; until that time, the default value is in effect. The 1221character code @code{U+0098} (octal 230) is displayed as @samp{\230}.
1244default is initially @code{t}. 1222If you change the buffer-local variable @code{ctl-arrow} to
1245 1223@code{nil}, @acronym{ASCII} control characters are also displayed as
1246 The display of character codes 0240 through 0377 (octal) may be 1224octal escape sequences instead of caret escape sequences.
1247either as escape sequences or as graphics. They do not normally occur
1248in multibyte buffers, but if they do, they are displayed as Latin-1
1249graphics. In unibyte mode, if you enable European display they are
1250displayed using their graphics (assuming your terminal supports them),
1251otherwise as escape sequences. @xref{Unibyte Mode}.
1252 1225
1253@vindex nobreak-char-display 1226@vindex nobreak-char-display
1254@cindex no-break space, display 1227@cindex non-breaking space
1255@cindex no-break hyphen, display 1228@cindex non-breaking hyphen
1256@cindex soft hyphen, display 1229@cindex soft hyphen
1257 Some character sets define ``no-break'' versions of the space and 1230 Some non-@acronym{ASCII} characters have the same appearance as an
1258hyphen characters, which are used where a line should not be broken. 1231@acronym{ASCII} space or hyphen (minus) character. Such characters
1259Emacs normally displays these characters with special faces 1232can cause problems if they are entered into a buffer without your
1260(respectively, @code{nobreak-space} and @code{escape-glyph}) to 1233realization, e.g. by yanking; for instance, source code compilers
1261distinguish them from ordinary spaces and hyphens. You can turn off 1234typically do not treat non-@acronym{ASCII} spaces as whitespace
1262this feature by setting the variable @code{nobreak-char-display} to 1235characters. To deal with this problem, Emacs displays such characters
1263@code{nil}. If you set the variable to any other value, that means to 1236specially: it displays @code{U+00A0} (no-break space) with the
1264prefix these characters with an escape character. 1237@code{nobreak-space} face, and it displays @code{U+00AD} (soft
1238hyphen), @code{U+2010} (hyphen), and @code{U+2011} (non-breaking
1239hyphen) with the @code{escape-glyph} face. To disable this, change
1240the variable @code{nobreak-char-display} to @code{nil}. If you give
1241this variable a non-@code{nil} and non-@code{t} value, Emacs instead
1242displays such characters as a highlighted backslash followed by a
1243space or hyphen.
1265 1244
1266 You can customize the way any particular character code is displayed 1245 You can customize the way any particular character code is displayed
1267by means of a display table. @xref{Display Tables,, Display Tables, 1246by means of a display table. @xref{Display Tables,, Display Tables,
@@ -1269,90 +1248,71 @@ elisp, The Emacs Lisp Reference Manual}.
1269 1248
1270@cindex glyphless characters 1249@cindex glyphless characters
1271@cindex characters with no font glyphs 1250@cindex characters with no font glyphs
1272 On graphics displays, some characters could have no glyphs in any of 1251 On graphical displays, some characters may have no glyphs in any of
1273the fonts available to Emacs. On text terminals, some characters 1252the fonts available to Emacs. These @dfn{glyphless characters} are
1274could be impossible to encode with the terminal coding system 1253normally displayed as boxes containing the hexadecimal character code.
1275(@pxref{Terminal Coding}). Emacs can display such @dfn{glyphless} 1254You can control the display method by customizing the variable
1276characters using one of the following methods: 1255@code{glyphless-char-display-control}. @xref{Glyphless Chars,,
1277 1256Glyphless Character Display, elisp, The Emacs Lisp Reference Manual},
1278@table @code 1257for details.
1279@item zero-width
1280Don't display the character.
1281
1282@item thin-space
1283Display a thin space, 1-pixel wide on graphics displays or 1-character
1284wide on text terminals.
1285
1286@item empty-box
1287Display an empty box.
1288
1289@item acronym
1290Display the acronym of the character's name (such as @sc{zwnj} or
1291@sc{rlm}) in a box.
1292
1293@item hex-code
1294Display the Unicode codepoint of the character in hexadecimal
1295notation, in a box.
1296@end table
1297
1298@noindent
1299@cindex @code{glyphless-char} face
1300With the exception of @code{zero-width}, all other methods draw these
1301characters in a special face @code{glyphless-char}, which you can
1302customize.
1303
1304@vindex glyphless-char-display-control
1305@vindex char-acronym-table
1306To control what glyphless characters are displayed using which method,
1307customize the variable @code{glyphless-char-display-control}; see its
1308doc string for the details. For even finer control, set the elements
1309of 2 char-tables: @code{glyphless-char-display} and
1310@code{char-acronym-table}.
1311 1258
1312@node Cursor Display 1259@node Cursor Display
1313@section Displaying the Cursor 1260@section Displaying the Cursor
1314 1261@cindex text cursor
1315@findex blink-cursor-mode
1316@vindex blink-cursor-alist
1317@cindex cursor, locating visually
1318@cindex cursor, blinking
1319 You can customize the cursor's color, and whether it blinks, using
1320the @code{cursor} Custom group (@pxref{Easy Customization}). On
1321a graphical display, the command @kbd{M-x blink-cursor-mode} enables
1322or disables the blinking of the cursor. (On text terminals, the
1323terminal itself blinks the cursor, and Emacs has no control over it.)
1324You can control how the cursor appears when it blinks off by setting
1325the variable @code{blink-cursor-alist}.
1326
1327@vindex cursor-type
1328 You can change the shape of the cursor from the default ``box'' look
1329to a bar by altering the @code{cursor-type} variable.
1330 1262
1331@vindex visible-cursor 1263@vindex visible-cursor
1332 Some text terminals offer two different cursors: the normal cursor 1264 On a text terminal, the cursor's appearance is controlled by the
1333and the very visible cursor, where the latter may be e.g. bigger or 1265terminal, largely out of the control of Emacs. Some terminals offer
1334blinking. By default Emacs uses the very visible cursor, and switches 1266two different cursors: a ``visible'' static cursor, and a ``very
1335to it when you start or resume Emacs. If the variable 1267visible'' blinking cursor. By default, Emacs uses the very visible
1336@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it 1268cursor, and switches to it when you start or resume Emacs. If the
1337doesn't switch, so it uses the normal cursor. 1269variable @code{visible-cursor} is @code{nil} when Emacs starts or
1270resumes, it uses the normal cursor.
1271
1272@cindex cursor face
1273@vindex cursor-type
1274 On a graphical display, many more properties of the text cursor can
1275be altered. To customize its color, change the @code{:background}
1276attribute of the face named @code{cursor} (@pxref{Face
1277Customization}). (The other attributes of this face have no effect;
1278the text shown under the cursor is drawn using the frame's background
1279color.) To change its shape, customize the buffer-local variable
1280@code{cursor-type}; possible values are @code{box} (the default),
1281@code{hollow} (a hollow box), @code{bar} (a vertical bar), @code{(bar
1282. @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar} (a
1283horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n}
1284pixels tall), or @code{nil} (no cursor at all).
1338 1285
1339@cindex cursor in non-selected windows 1286@findex blink-cursor-mode
1340@vindex cursor-in-non-selected-windows 1287@cindex cursor, blinking
1341 Normally, the cursor appears in non-selected windows without 1288@cindex blinking cursor
1342blinking, with the same appearance as when the blinking cursor blinks 1289@vindex blink-cursor-alist
1343``off.'' For a box cursor, this is a hollow box; for a bar cursor, 1290 To disable cursor blinking, change the variable
1344this is a thinner bar. To turn off cursors in non-selected windows, 1291@code{blink-cursor-mode} to @code{nil} (@pxref{Easy Customization}),
1345customize the variable @code{cursor-in-non-selected-windows} and 1292or add the line @code{(blink-cursor-mode 0)} to your init file.
1346assign it a @code{nil} value. 1293Alternatively, you can change how the cursor looks when it ``blinks
1294off'' by customizing the list variable @code{blink-cursor-alist}.
1295Each element in the list should have the form @code{(@var{on-type}
1296. @var{off-type})}; this means that if the cursor is displayed as
1297@var{on-type} when it blinks on (where @var{on-type} is one of the
1298cursor types described above), then it is displayed as @var{off-type}
1299when it blinks off.
1347 1300
1348@vindex x-stretch-cursor 1301@vindex x-stretch-cursor
1349@cindex wide block cursor 1302@cindex wide block cursor
1350 On graphical displays, Emacs can optionally draw the block cursor 1303 Some characters, such as tab characters, are ``extra wide''. When
1351as wide as the character under the cursor---for example, if the cursor 1304the cursor is positioned over such a character, it is normally drawn
1352is on a tab character, it would cover the full width occupied by that 1305with the default character width. You can make the cursor stretch to
1353tab character. To enable this feature, set the variable 1306cover wide characters, by changing the variable
1354@code{x-stretch-cursor} to a non-@code{nil} value. 1307@code{x-stretch-cursor} to a non-@code{nil} value.
1355 1308
1309@cindex cursor in non-selected windows
1310@vindex cursor-in-non-selected-windows
1311 The cursor normally appears in non-selected windows as a
1312non-blinking hollow box. (For a bar cursor, it instead appears as a
1313thinner bar.) To turn off cursors in non-selected windows, change the
1314variable @code{cursor-in-non-selected-windows} to @code{nil}.
1315
1356@findex hl-line-mode 1316@findex hl-line-mode
1357@findex global-hl-line-mode 1317@findex global-hl-line-mode
1358@cindex highlight current line 1318@cindex highlight current line
@@ -1362,18 +1322,17 @@ hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
1362global-hl-line-mode} enables or disables the same mode globally. 1322global-hl-line-mode} enables or disables the same mode globally.
1363 1323
1364@node Line Truncation 1324@node Line Truncation
1365@section Truncation of Lines 1325@section Line Truncation
1366 1326
1367@cindex truncation 1327@cindex truncation
1368@cindex line truncation, and fringes 1328@cindex line truncation, and fringes
1369 As an alternative to continuation (@pxref{Continuation Lines}), Emacs 1329 As an alternative to continuation (@pxref{Continuation Lines}),
1370can display long lines by @dfn{truncation}. This means that all the 1330Emacs can display long lines by @dfn{truncation}. This means that all
1371characters that do not fit in the width of the screen or window do not 1331the characters that do not fit in the width of the screen or window do
1372appear at all. On graphical displays, a small straight arrow in the 1332not appear at all. On graphical displays, a small straight arrow in
1373fringe indicates truncation at either end of the line. On text-only 1333the fringe indicates truncation at either end of the line. On
1374terminals, @samp{$} appears in the leftmost column when there is text 1334text-only terminals, this is indicated with @samp{$} signs in the
1375truncated to the left, and in the rightmost column when there is text 1335leftmost and/or rightmost columns.
1376truncated to the right.
1377 1336
1378@vindex truncate-lines 1337@vindex truncate-lines
1379@findex toggle-truncate-lines 1338@findex toggle-truncate-lines
@@ -1385,21 +1344,12 @@ toggle-truncate-lines}. This works by locally changing the variable
1385are truncated; if it is @code{nil}, they are continued onto multiple 1344are truncated; if it is @code{nil}, they are continued onto multiple
1386screen lines. Setting the variable @code{truncate-lines} in any way 1345screen lines. Setting the variable @code{truncate-lines} in any way
1387makes it local to the current buffer; until that time, the default 1346makes it local to the current buffer; until that time, the default
1388value is in effect. The default value is normally @code{nil}. 1347value, which is normally @code{nil}, is in effect.
1389 1348
1390@c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows. 1349@vindex truncate-partial-width-windows
1391 If the variable @code{truncate-partial-width-windows} is 1350 If a split window becomes too narrow, Emacs may automatically enable
1392non-@code{nil}, it forces truncation rather than continuation in any 1351line truncation. @xref{Split Window}, for the variable
1393window less than the full width of the screen or frame, regardless of 1352@code{truncate-partial-width-windows} which controls this.
1394the value of @code{truncate-lines}. See also @ref{Display,, Display,
1395elisp, The Emacs Lisp Reference Manual}.
1396
1397@vindex overflow-newline-into-fringe
1398 If the variable @code{overflow-newline-into-fringe} is
1399non-@code{nil} on a graphical display, then Emacs does not continue or
1400truncate a line which is exactly as wide as the window. Instead, the
1401newline overflows into the right fringe, and the cursor appears in the
1402fringe when positioned on that newline.
1403 1353
1404@node Visual Line Mode 1354@node Visual Line Mode
1405@section Visual Line Mode 1355@section Visual Line Mode
@@ -1452,11 +1402,8 @@ variable @code{visual-line-fringe-indicators}.
1452@node Display Custom 1402@node Display Custom
1453@section Customization of Display 1403@section Customization of Display
1454 1404
1455 This section describes variables (@pxref{Variables}) that you can 1405 This section describes variables that control miscellaneous aspects
1456change to customize how Emacs displays. Beginning users can skip 1406of the appearance of the Emacs screen. Beginning users can skip it.
1457it.
1458@c the reason for that pxref is because an xref early in the
1459@c ``echo area'' section leads here.
1460 1407
1461@vindex visible-bell 1408@vindex visible-bell
1462 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts 1409 If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
@@ -1468,19 +1415,7 @@ to make the screen blink.
1468 The variable @code{echo-keystrokes} controls the echoing of multi-character 1415 The variable @code{echo-keystrokes} controls the echoing of multi-character
1469keys; its value is the number of seconds of pause required to cause echoing 1416keys; its value is the number of seconds of pause required to cause echoing
1470to start, or zero, meaning don't echo at all. The value takes effect when 1417to start, or zero, meaning don't echo at all. The value takes effect when
1471there is someting to echo. @xref{Echo Area}. 1418there is something to echo. @xref{Echo Area}.
1472
1473@vindex baud-rate
1474 The variable @anchor{baud-rate}@code{baud-rate} holds the output
1475speed of the terminal. Setting this variable does not change the
1476speed of actual data transmission, but the value is used for
1477calculations. On text-only terminals, it affects padding, and
1478decisions about whether to scroll part of the screen or redraw it
1479instead. It also affects the behavior of incremental search. On
1480graphical displays, @code{baud-rate} is only used to determine how
1481frequently to look for pending input during display updating. A
1482higher value of @code{baud-rate} means that check for pending input
1483will be done less frequently.
1484 1419
1485@cindex mouse pointer 1420@cindex mouse pointer
1486@cindex hourglass pointer display 1421@cindex hourglass pointer display
@@ -1523,15 +1458,3 @@ itself, in pixels; the default is 2.
1523result in text that is hard to read. Call the function 1458result in text that is hard to read. Call the function
1524@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil} 1459@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
1525argument to suppress the effect of bold-face in this case. 1460argument to suppress the effect of bold-face in this case.
1526
1527@vindex no-redraw-on-reenter
1528 On a text-only terminal, when you reenter Emacs after suspending, Emacs
1529normally clears the screen and redraws the entire display. On some
1530terminals with more than one page of memory, it is possible to arrange
1531the termcap entry so that the @samp{ti} and @samp{te} strings (output
1532to the terminal when Emacs is entered and exited, respectively) switch
1533between pages of memory so as to use one page for Emacs and another
1534page for other output. On such terminals, you might want to set the variable
1535@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
1536assume, when resumed, that the screen page it is using still contains
1537what Emacs last wrote there.
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 8a15c783fc0..cad0e4db3c0 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -281,7 +281,7 @@ Completion
281 281
282* Completion Example:: Examples of using completion. 282* Completion Example:: Examples of using completion.
283* Completion Commands:: A list of completion commands. 283* Completion Commands:: A list of completion commands.
284* Strict Completion:: Different types of completion. 284* Completion Exit:: Completion and minibuffer text submission.
285* Completion Styles:: How completion matches are chosen. 285* Completion Styles:: How completion matches are chosen.
286* Completion Options:: Options for completion. 286* Completion Options:: Options for completion.
287 287
@@ -350,7 +350,7 @@ Controlling the Display
350* Follow Mode:: Follow mode lets two windows scroll as one. 350* Follow Mode:: Follow mode lets two windows scroll as one.
351* Faces:: How to change the display style using faces. 351* Faces:: How to change the display style using faces.
352* Standard Faces:: Emacs' predefined faces. 352* Standard Faces:: Emacs' predefined faces.
353* Temporary Face Changes:: Commands to temporarily modify the default text face 353* Text Scale:: Increasing or decreasing text size in a buffer.
354* Font Lock:: Minor mode for syntactic highlighting using faces. 354* Font Lock:: Minor mode for syntactic highlighting using faces.
355* Highlight Interactively:: Tell Emacs what text to highlight. 355* Highlight Interactively:: Tell Emacs what text to highlight.
356* Fringes:: Enabling or disabling window fringes. 356* Fringes:: Enabling or disabling window fringes.
@@ -388,7 +388,6 @@ Incremental Search
388 or else edit the search string. 388 or else edit the search string.
389* Isearch Scroll:: Scrolling during an incremental search. 389* Isearch Scroll:: Scrolling during an incremental search.
390* Isearch Minibuffer:: Incremental search of the minibuffer history. 390* Isearch Minibuffer:: Incremental search of the minibuffer history.
391* Slow Isearch:: Incremental search features for slow terminals.
392 391
393Replacement Commands 392Replacement Commands
394 393
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 433bf617598..2317f876b08 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -47,58 +47,58 @@ on file directories.
47@section File Names 47@section File Names
48@cindex file names 48@cindex file names
49 49
50 Many Emacs commands that operate on a file require you to specify
51the file name, using the minibuffer (@pxref{Minibuffer}). You can use
52@dfn{completion} to specify long file names (@pxref{Completion}).
53Note that file name completion ignores file names whose extensions
54appear in the variable @code{completion-ignored-extensions}
55(@pxref{Completion Options}).
56
57@cindex default file name 50@cindex default file name
58 For most operations, there is a @dfn{default file name} which is 51 Many Emacs commands that operate on a file require you to specify
59used if you type just @key{RET} to enter an empty argument. Normally, 52the file name, using the minibuffer (@pxref{Minibuffer File}).
60the default file name is the name of the file visited in the current 53
61buffer. 54 While in the minibuffer, you can use the usual completion and
55history commands (@pxref{Minibuffer}). Note that file name completion
56ignores file names whose extensions appear in the variable
57@code{completion-ignored-extensions} (@pxref{Completion Options}).
58Note also that most commands use ``permissive completion with
59confirmation'' for reading file names: you are allowed to submit a
60nonexistent file name, but if you type @key{RET} immediately after
61completing up to a nonexistent file name, Emacs prints
62@samp{[Confirm]} and you must type a second @key{RET} to confirm.
63@xref{Completion Exit}, for details.
62 64
63@cindex default directory 65@cindex default directory
64@vindex default-directory 66@vindex default-directory
65@vindex insert-default-directory 67@vindex insert-default-directory
66 Each buffer has a @dfn{default directory} which is normally the same 68 Each buffer has a @dfn{default directory}, stored in the
67as the directory of the file visited in that buffer. For example, if 69buffer-local variable @code{default-directory}. Whenever Emacs reads
68the default file name is @file{/u/rms/gnu/gnu.tasks}, the default 70a file name using the minibuffer, it usually inserts the default
69directory is normally @file{/u/rms/gnu/}. The default directory is 71directory into the minibuffer as the initial contents. You can
70kept in the variable @code{default-directory}, which has a separate 72inhibit this insertion by changing the variable
71value in every buffer. When a command reads a file name using the 73@code{insert-default-directory} to @code{nil} (@pxref{Minibuffer
72minibuffer, the default directory usually serves as the initial 74File}). Regardless, Emacs always assumes that any relative file name
73contents of the minibuffer. To inhibit the insertion of the default 75is relative to the default directory, e.g. entering a file name
74directory, set the variable @code{insert-default-directory} to 76without a directory specifies a file in the default directory.
75@code{nil}.
76 77
77 If you enter a file name without a directory, that specifies a file 78@findex cd
78in the default directory. If you specify a directory in a relative 79@findex pwd
79fashion, with a name that does not start with a slash, it is 80 When you visit a file, Emacs sets @code{default-directory} in the
80interpreted with respect to the default directory. For example, 81visiting buffer to the directory of its file. When you create a new
81suppose the default directory is @file{/u/rms/gnu/}. Entering just 82buffer that is not visiting a file, via a command like @kbd{C-x b},
82@samp{foo} in the minibuffer, with a directory omitted, specifies the 83its default directory is usually copied from the buffer that was
83file @file{/u/rms/gnu/foo}; entering @samp{../.login} specifies 84current at the time (@pxref{Select Buffer}). You can use the command
85@kbd{M-x pwd} to see the value of @code{default-directory} in the
86current buffer. The command @kbd{M-x cd} prompts for a directory
87name, and sets the buffer's @code{default-directory} to that directory
88(doing this does not change the buffer's file name, if any).
89
90 As an example, when you visit the file @file{/u/rms/gnu/gnu.tasks},
91the default directory is set to @file{/u/rms/gnu/}. If you invoke a
92command that reads a file name, entering just @samp{foo} in the
93minibuffer, with a directory omitted, specifies the file
94@file{/u/rms/gnu/foo}; entering @samp{../.login} specifies
84@file{/u/rms/.login}; and entering @samp{new/foo} specifies 95@file{/u/rms/.login}; and entering @samp{new/foo} specifies
85@file{/u/rms/gnu/new/foo}. 96@file{/u/rms/gnu/new/foo}.
86 97
87 When typing a file name into the minibuffer, you can make use of a 98 When typing a file name into the minibuffer, you can make use of a
88couple of shortcuts: a double slash is interpreted as ``ignore 99couple of shortcuts: a double slash is interpreted as ``ignore
89everything before the second slash in the pair,'' and @samp{~/} is 100everything before the second slash in the pair,'' and @samp{~/} is
90interpreted as your home directory. @xref{Minibuffer File}, for more 101interpreted as your home directory. @xref{Minibuffer File}.
91information about these shortcuts.
92
93@findex cd
94@findex pwd
95 The command @kbd{M-x pwd} displays the default directory, and the
96command @kbd{M-x cd} sets it to a value read using the minibuffer. A
97buffer's default directory changes only when the @code{cd} command is
98used. A file-visiting buffer's default directory is initialized to
99the directory of the file it visits. If you create a buffer with
100@kbd{C-x b}, its default directory is copied from that of the buffer
101that was current at the time (@pxref{Select Buffer}).
102 102
103@cindex environment variables in file names 103@cindex environment variables in file names
104@cindex expansion of environment variables 104@cindex expansion of environment variables
@@ -113,10 +113,8 @@ the @samp{$}; alternatively, it can be enclosed in braces after the
113@file{/u/$@{FOO@}/test.c} are abbreviations for 113@file{/u/$@{FOO@}/test.c} are abbreviations for
114@file{/u/rms/hacks/test.c}. If the environment variable is not 114@file{/u/rms/hacks/test.c}. If the environment variable is not
115defined, no substitution occurs, so that the character @samp{$} stands 115defined, no substitution occurs, so that the character @samp{$} stands
116for itself. 116for itself. Note that environment variables affect Emacs only if they
117 117are applied before Emacs is started.
118 Note that environment variables affect Emacs only if they are
119applied before Emacs is started.
120 118
121 To access a file with @samp{$} in its name, if the @samp{$} causes 119 To access a file with @samp{$} in its name, if the @samp{$} causes
122expansion, type @samp{$$}. This pair is converted to a single 120expansion, type @samp{$$}. This pair is converted to a single
@@ -125,8 +123,7 @@ a single @samp{$}. Alternatively, quote the whole file name with
125@samp{/:} (@pxref{Quoted File Names}). File names which begin with a 123@samp{/:} (@pxref{Quoted File Names}). File names which begin with a
126literal @samp{~} should also be quoted with @samp{/:}. 124literal @samp{~} should also be quoted with @samp{/:}.
127 125
128 You can include non-@acronym{ASCII} characters in file names if you set the 126 You can include non-@acronym{ASCII} characters in file names.
129variable @code{file-name-coding-system} to a non-@code{nil} value.
130@xref{File Name Coding}. 127@xref{File Name Coding}.
131 128
132@node Visiting 129@node Visiting
@@ -159,48 +156,43 @@ Visit a file with no conversion of the contents.
159buffer so you can edit them. Emacs makes a new buffer for each file 156buffer so you can edit them. Emacs makes a new buffer for each file
160that you visit. 157that you visit.
161 158
162 Emacs normally constructs the buffer name from the file name, 159@kindex C-x C-f
163omitting the directory name. For example, a file named 160@findex find-file
164@file{/usr/rms/emacs.tex} is visited in a buffer named 161 To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the
165@samp{emacs.tex}. If there is already a buffer with that name, Emacs 162minibuffer to enter the name of the desired file. While in the
166constructs a unique name; the normal method is to append @samp{<2>}, 163minibuffer, you can abort the command by typing @kbd{C-g}. @xref{File
167@samp{<3>}, and so on, but you can select other methods. 164Names}, for details about entering file names into minibuffers.
165
166 If the specified file exists but the system does not allow you to
167read it, an error message is displayed in the echo area. Otherwise,
168you can tell that @kbd{C-x C-f} has completed successfully by the
169appearance of new text on the screen, and by the buffer name shown in
170the mode line (@pxref{Mode Line}). Emacs normally constructs the
171buffer name from the file name, omitting the directory name. For
172example, a file named @file{/usr/rms/emacs.tex} is visited in a buffer
173named @samp{emacs.tex}. If there is already a buffer with that name,
174Emacs constructs a unique name; the normal method is to append
175@samp{<2>}, @samp{<3>}, and so on, but you can select other methods.
168@xref{Uniquify}. 176@xref{Uniquify}.
169 177
170 Each window's mode line shows the name of the buffer that is being 178@cindex creating files
171displayed in that window, so you can always tell what buffer you are 179 To create a new file, just visit it using the same command, @kbd{C-x
172editing. @pxref{Mode Line}. 180C-f}. Emacs displays @samp{(New file)} in the echo area, but in other
173 181respects behaves as if you had visited an existing empty file.
174 The changes you make with editing commands are made in the Emacs
175buffer. They do not take effect in the file that you visited, or any
176permanent place, until you @dfn{save} the buffer (@pxref{Saving}).
177 182
178@cindex modified (buffer) 183@cindex modified (buffer)
179 If a buffer contains changes that have not been saved, we say the 184 After visiting a file, the changes you make with editing commands are
180buffer is @dfn{modified}. This implies that some changes will be lost 185made in the Emacs buffer. They do not take effect in the visited
181if the buffer is not saved. The mode line displays two stars near the 186file, until you @dfn{save} the buffer (@pxref{Saving}). If a buffer
182left margin to indicate that the buffer is modified. 187contains changes that have not been saved, we say the buffer is
183 188@dfn{modified}. This implies that some changes will be lost if the
184@kindex C-x C-f 189buffer is not saved. The mode line displays two stars near the left
185@findex find-file 190margin to indicate that the buffer is modified.
186 To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the 191
187minibuffer to enter the name of the desired file. The usual 192 If you visit a file that is already in Emacs, @kbd{C-x C-f} switches
188defaulting and completion behavior is available in this minibuffer 193to the existing buffer instead of making another copy. Before doing
189(@pxref{Minibuffer File}). Note, also, that completion ignores 194so, it checks whether the file has changed since you last visited or
190certain file names (@pxref{Completion Options}). While in the 195saved it. If the file has changed, Emacs offers to reread it.
191minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
192
193 Your can tell that @kbd{C-x C-f} has completed successfully by the
194appearance of new text on the screen and a new buffer name in the mode
195line. If the specified file does not exist and you could not create
196it, or exists but you can't read it, an error message is displayed in
197the echo area.
198
199 If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
200another copy. It selects the existing buffer containing that file.
201However, before doing so, it checks whether the file itself has changed
202since you visited or saved it last. If the file has changed, Emacs offers
203to reread it.
204 196
205@vindex large-file-warning-threshold 197@vindex large-file-warning-threshold
206@cindex file, warning when size is large 198@cindex file, warning when size is large
@@ -211,10 +203,10 @@ to reread it.
211about 10 megabytes), Emacs asks you for confirmation first. You can 203about 10 megabytes), Emacs asks you for confirmation first. You can
212answer @kbd{y} to proceed with visiting the file. Note, however, that 204answer @kbd{y} to proceed with visiting the file. Note, however, that
213Emacs cannot visit files that are larger than the maximum Emacs buffer 205Emacs cannot visit files that are larger than the maximum Emacs buffer
214size, which is limited by the amount of memory Emacs can allocate 206size, which is limited by the amount of memory Emacs can allocate and
215and by the integers that Emacs can represent 207by the integers that Emacs can represent (@pxref{Buffers}). If you
216(@pxref{Buffers}). If you try, Emacs will display an error message 208try, Emacs displays an error message saying that the maximum buffer
217saying that the maximum buffer size has been exceeded. 209size has been exceeded.
218 210
219@cindex wildcard characters in file names 211@cindex wildcard characters in file names
220@vindex find-file-wildcards 212@vindex find-file-wildcards
@@ -228,63 +220,21 @@ File Names}, for information on how to visit a file whose name
228actually contains wildcard characters. You can disable the wildcard 220actually contains wildcard characters. You can disable the wildcard
229feature by customizing @code{find-file-wildcards}. 221feature by customizing @code{find-file-wildcards}.
230 222
231@cindex file selection dialog
232 On graphical displays, there are two additional methods for visiting
233files. Firstly, when Emacs is built with a suitable GUI toolkit,
234commands invoked with the mouse (by clicking on the menu bar or tool
235bar) use the toolkit's standard ``File Selection'' dialog instead of
236prompting for the file name in the minibuffer. On GNU/Linux and Unix
237platforms, Emacs does this when built with GTK, LessTif, and Motif
238toolkits; on MS-Windows and Mac, the GUI version does that by default.
239For information on how to customize this, see @ref{Dialog Boxes}.
240
241 Secondly, Emacs supports ``drag and drop'': dropping a file into an
242ordinary Emacs window visits the file using that window. As an
243exception, dropping a file into a window displaying a Dired buffer
244moves or copies the file into the displayed directory. For details,
245see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
246
247@cindex creating files
248 What if you want to create a new file? Just visit it. Emacs
249displays @samp{(New file)} in the echo area, but in other respects
250behaves as if you had visited an existing empty file. If you make
251changes and save them, the file is created.
252
253@cindex minibuffer confirmation
254@cindex confirming in the minibuffer
255@vindex confirm-nonexistent-file-or-buffer
256 When @key{TAB} completion results in a nonexistent file name and you
257type @key{RET} immediately to visit it, Emacs asks for confirmation;
258this is because it's possible that you expected completion to go
259further and give you an existing file's name. The string
260@samp{[Confirm]} appears for a short time after the file name to
261indicate the need to confirm in this way. Type @key{RET} to confirm
262and visit the nonexistent file. The variable
263@code{confirm-nonexistent-file-or-buffer} controls whether Emacs asks
264for confirmation before visiting a new file. The default value,
265@code{after-completion}, gives the behavior we have just described.
266If the value is @code{nil}, Emacs never asks for confirmation; for any
267other non-@code{nil} value, Emacs always asks for confirmation. This
268variable also affects the @code{switch-to-buffer} command
269(@pxref{Select Buffer}). @xref{Completion}, for more information
270about completion.
271
272@kindex C-x C-v 223@kindex C-x C-v
273@findex find-alternate-file 224@findex find-alternate-file
274 If you visit a nonexistent file unintentionally (because you typed 225 If you visit the wrong file unintentionally by typing its name
275the wrong file name), type @kbd{C-x C-v} (@code{find-alternate-file}) 226incorrectly, type @kbd{C-x C-v} (@code{find-alternate-file}) to visit
276to visit the file you really wanted. @kbd{C-x C-v} is similar to 227the file you really wanted. @kbd{C-x C-v} is similar to @kbd{C-x
277@kbd{C-x C-f}, but it kills the current buffer (after first offering 228C-f}, but it kills the current buffer (after first offering to save it
278to save it if it is modified). When @kbd{C-x C-v} reads the file name 229if it is modified). When @kbd{C-x C-v} reads the file name to visit,
279to visit, it inserts the entire default file name in the buffer, with 230it inserts the entire default file name in the buffer, with point just
280point just after the directory part; this is convenient if you made a 231after the directory part; this is convenient if you made a slight
281slight error in typing the name. 232error in typing the name.
282 233
283@vindex find-file-run-dired 234@vindex find-file-run-dired
284 If you ``visit'' a file that is actually a directory, Emacs invokes 235 If you ``visit'' a file that is actually a directory, Emacs invokes
285Dired, the Emacs directory browser; this lets you ``edit'' the 236Dired, the Emacs directory browser. @xref{Dired}. You can disable
286contents of the directory. @xref{Dired}. You can disable this 237this behavior by setting the variable @code{find-file-run-dired} to
287behavior by setting the variable @code{find-file-run-dired} to
288@code{nil}; in that case, it is an error to try to visit a directory. 238@code{nil}; in that case, it is an error to try to visit a directory.
289 239
290 Files which are actually collections of other files, or @dfn{file 240 Files which are actually collections of other files, or @dfn{file
@@ -321,17 +271,28 @@ new frame, or makes visible any existing frame showing the file you
321seek. This feature is available only when you are using a window 271seek. This feature is available only when you are using a window
322system. @xref{Frames}. 272system. @xref{Frames}.
323 273
324 Emacs recognizes from the contents of a file which end-of-line 274@cindex file selection dialog
325convention it uses to separate lines---newline (used on GNU/Linux and 275 On graphical displays, there are two additional methods for visiting
326on Unix), carriage-return linefeed (used on Microsoft systems), or 276files. Firstly, when Emacs is built with a suitable GUI toolkit,
327just carriage-return (used on the Macintosh)---and automatically 277commands invoked with the mouse (by clicking on the menu bar or tool
328converts the contents to the normal Emacs convention, which is that 278bar) use the toolkit's standard ``File Selection'' dialog instead of
329the newline character separates lines. This is a part of the general 279prompting for the file name in the minibuffer. On GNU/Linux and Unix
330feature of coding system conversion (@pxref{Coding Systems}), and 280platforms, Emacs does this when built with GTK, LessTif, and Motif
331makes it possible to edit files imported from different operating 281toolkits; on MS-Windows and Mac, the GUI version does that by default.
332systems with equal convenience. If you change the text and save the 282For information on how to customize this, see @ref{Dialog Boxes}.
333file, Emacs performs the inverse conversion, changing newlines back 283
334into carriage-return linefeed or just carriage-return if appropriate. 284 Secondly, Emacs supports ``drag and drop'': dropping a file into an
285ordinary Emacs window visits the file using that window. As an
286exception, dropping a file into a window displaying a Dired buffer
287moves or copies the file into the displayed directory. For details,
288see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
289
290 Each time you visit a file, Emacs automatically scans its contents
291to detect what character encoding and end-of-line convention it uses,
292and converts these to Emacs' internal encoding and end-of-line
293convention within the buffer. When you save the buffer, Emacs
294performs the inverse conversion, writing the file to disk with its
295original encoding and end-of-line convention. @xref{Coding Systems}.
335 296
336@findex find-file-literally 297@findex find-file-literally
337 If you wish to edit a file as a sequence of @acronym{ASCII} 298 If you wish to edit a file as a sequence of @acronym{ASCII}
@@ -346,17 +307,17 @@ command asks you whether to visit it literally instead.
346 307
347@vindex find-file-hook 308@vindex find-file-hook
348@vindex find-file-not-found-functions 309@vindex find-file-not-found-functions
349 Two special hook variables allow extensions to modify the operation of 310 Two special hook variables allow extensions to modify the operation
350visiting files. Visiting a file that does not exist runs the functions 311of visiting files. Visiting a file that does not exist runs the
351in the list @code{find-file-not-found-functions}; this variable holds a list 312functions in @code{find-file-not-found-functions}; this variable holds
352of functions, and the functions are called one by one (with no 313a list of functions, which are called one by one (with no arguments)
353arguments) until one of them returns non-@code{nil}. This is not a 314until one of them returns non-@code{nil}. This is not a normal hook,
354normal hook, and the name ends in @samp{-functions} rather than @samp{-hook} 315and the name ends in @samp{-functions} rather than @samp{-hook} to
355to indicate that fact. 316indicate that fact.
356 317
357 Successful visiting of any file, whether existing or not, calls the 318 Successful visiting of any file, whether existing or not, calls the
358functions in the list @code{find-file-hook}, with no arguments. 319functions in @code{find-file-hook}, with no arguments. This variable
359This variable is a normal hook. In the case of a nonexistent file, the 320is a normal hook. In the case of a nonexistent file, the
360@code{find-file-not-found-functions} are run first. @xref{Hooks}. 321@code{find-file-not-found-functions} are run first. @xref{Hooks}.
361 322
362 There are several ways to specify automatically the major mode for 323 There are several ways to specify automatically the major mode for
@@ -386,9 +347,9 @@ that was visited in the buffer.
386 347
387@table @kbd 348@table @kbd
388@item C-x C-s 349@item C-x C-s
389Save the current buffer in its visited file on disk (@code{save-buffer}). 350Save the current buffer to its file (@code{save-buffer}).
390@item C-x s 351@item C-x s
391Save any or all buffers in their visited files (@code{save-some-buffers}). 352Save any or all buffers to their files (@code{save-some-buffers}).
392@item M-~ 353@item M-~
393Forget that the current buffer has been changed (@code{not-modified}). 354Forget that the current buffer has been changed (@code{not-modified}).
394With prefix argument (@kbd{C-u}), mark the current buffer as changed. 355With prefix argument (@kbd{C-u}), mark the current buffer as changed.
@@ -409,10 +370,10 @@ Wrote /u/rms/gnu/gnu.tasks
409@end example 370@end example
410 371
411@noindent 372@noindent
412If the selected buffer is not modified (no changes have been made in it 373If the current buffer is not modified (no changes have been made in it
413since the buffer was created or last saved), saving is not really done, 374since the buffer was created or last saved), saving is not really
414because it would have no effect. Instead, @kbd{C-x C-s} displays a message 375done, because it would have no effect. Instead, @kbd{C-x C-s}
415like this in the echo area: 376displays a message like this in the echo area:
416 377
417@example 378@example
418(No changes need to be saved) 379(No changes need to be saved)
@@ -597,8 +558,8 @@ Never make numbered backups; always make single backups.
597@end table 558@end table
598 559
599@noindent 560@noindent
600The usual way to set this variable is globally, through your 561The usual way to set this variable is globally, through your init file
601@file{.emacs} file or the customization buffer. However, you can set 562or the customization buffer. However, you can set
602@code{version-control} locally in an individual buffer to control the 563@code{version-control} locally in an individual buffer to control the
603making of backups for that buffer's file (@pxref{Locals}). You can 564making of backups for that buffer's file (@pxref{Locals}). You can
604have Emacs set @code{version-control} locally whenever you visit a 565have Emacs set @code{version-control} locally whenever you visit a
@@ -679,34 +640,38 @@ and group. If copying is used, these do not change. If renaming is used,
679you become the file's owner, and the file's group becomes the default 640you become the file's owner, and the file's group becomes the default
680(different operating systems have different defaults for the group). 641(different operating systems have different defaults for the group).
681 642
682 Having the owner change is usually a good idea, because then the owner
683always shows who last edited the file. Also, the owners of the backups
684show who produced those versions. Occasionally there is a file whose
685owner should not change; it is a good idea for such files to contain
686local variable lists to set @code{backup-by-copying-when-mismatch}
687locally (@pxref{File Variables}).
688
689@vindex backup-by-copying 643@vindex backup-by-copying
690@vindex backup-by-copying-when-linked 644@vindex backup-by-copying-when-linked
691@vindex backup-by-copying-when-mismatch 645@vindex backup-by-copying-when-mismatch
692@vindex backup-by-copying-when-privileged-mismatch 646@vindex backup-by-copying-when-privileged-mismatch
693@cindex file ownership, and backup 647@cindex file ownership, and backup
694@cindex backup, and user-id 648@cindex backup, and user-id
695 The choice of renaming or copying is controlled by four variables. 649 The choice of renaming or copying is made as follows:
696Renaming is the default choice. If the variable 650
697@code{backup-by-copying} is non-@code{nil}, copying is used. Otherwise, 651@itemize
698if the variable @code{backup-by-copying-when-linked} is non-@code{nil}, 652@item
699then copying is used for files that have multiple names, but renaming 653If the variable @code{backup-by-copying} is non-@code{nil} (the
700may still be used when the file being edited has only one name. If the 654default is @code{nil}), use copying.
701variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then 655
702copying is used if renaming would cause the file's owner or group to 656@item
703change. @code{backup-by-copying-when-mismatch} is @code{t} by default 657Otherwise, if the variable @code{backup-by-copying-when-linked} is
704if you start Emacs as the superuser. The fourth variable, 658non-@code{nil} (the default is @code{nil}), and the file has multiple
705@code{backup-by-copying-when-privileged-mismatch}, gives the highest 659names, use copying.
706numeric user-id for which @code{backup-by-copying-when-mismatch} will be 660
707forced on. This is useful when low-numbered user-ids are assigned to 661@item
708special system users, such as @code{root}, @code{bin}, @code{daemon}, 662Otherwise, if the variable @code{backup-by-copying-when-mismatch} is
709etc., which must maintain ownership of files. 663non-@code{nil} (the default is @code{t}), and renaming would change
664the file's owner or group, use copying.
665
666If you change @code{backup-by-copying-when-mismatch} to @code{nil},
667Emacs checks the numeric user-id of the file's owner. If this is
668higher than @code{backup-by-copying-when-privileged-mismatch}, then it
669behaves as though @code{backup-by-copying-when-mismatch} is
670non-@code{nil} anyway.
671
672@item
673Otherwise, renaming is the default choice.
674@end itemize
710 675
711 When a file is managed with a version control system (@pxref{Version 676 When a file is managed with a version control system (@pxref{Version
712Control}), Emacs does not normally make backups in the usual way for 677Control}), Emacs does not normally make backups in the usual way for
@@ -725,28 +690,28 @@ Emacs---the version control system does it.
725if there isn't already one there. If the value is @code{visit}, Emacs 690if there isn't already one there. If the value is @code{visit}, Emacs
726adds a newline at the end of any file that doesn't have one, just 691adds a newline at the end of any file that doesn't have one, just
727after it visits the file. (This marks the buffer as modified, and you 692after it visits the file. (This marks the buffer as modified, and you
728can undo it.) If the value is @code{visit-save}, that means to add 693can undo it.) If the value is @code{visit-save}, Emacs adds such
729newlines both on visiting and on saving. If the value is @code{nil}, 694newlines both on visiting and on saving. If the value is @code{nil},
730Emacs leaves the end of the file unchanged; if it's neither @code{nil} 695Emacs leaves the end of the file unchanged; any other non-@code{nil}
731nor @code{t}, Emacs asks you whether to add a newline. The default is 696value means to asks you whether to add a newline. The default is
732@code{nil}. 697@code{nil}.
733 698
734@vindex mode-require-final-newline 699@vindex mode-require-final-newline
735 Many major modes are designed for specific kinds of files that are 700 Some major modes are designed for specific kinds of files that are
736always supposed to end in newlines. These major modes set the 701always supposed to end in newlines. Such major modes set the variable
737variable @code{require-final-newline} according to 702@code{require-final-newline} to the value of
738@code{mode-require-final-newline}. By setting the latter variable, 703@code{mode-require-final-newline}, which defaults to @code{t}. By
739you can control how these modes handle final newlines. 704setting the latter variable, you can control how these modes handle
705final newlines.
740 706
741@vindex write-region-inhibit-fsync 707@vindex write-region-inhibit-fsync
742 When Emacs saves a file, it invokes the @code{fsync} system call to 708 When Emacs saves a file, it invokes the @code{fsync} system call to
743force the data immediately out to disk. This is important for safety 709force the data immediately out to disk. This is important for safety
744if the system crashes or in case of power outage. However, it can be 710if the system crashes or in case of power outage. However, it can be
745disruptive on laptops using power saving, because it requires the disk 711disruptive on laptops using power saving, as it may force a disk
746to spin up each time you save a file. Setting 712spin-up each time you save a file. If you accept an increased risk of
747@code{write-region-inhibit-fsync} to a non-@code{nil} value disables 713data loss, you can set @code{write-region-inhibit-fsync} to a
748this synchronization. Be careful---this means increased risk of data 714non-@code{nil} value to disable the synchronization.
749loss.
750 715
751@node Interlocking 716@node Interlocking
752@subsection Protection against Simultaneous Editing 717@subsection Protection against Simultaneous Editing
@@ -754,9 +719,9 @@ loss.
754@cindex file dates 719@cindex file dates
755@cindex simultaneous editing 720@cindex simultaneous editing
756 Simultaneous editing occurs when two users visit the same file, both 721 Simultaneous editing occurs when two users visit the same file, both
757make changes, and then both save them. If nobody were informed that 722make changes, and then both save them. If nobody is informed that
758this was happening, whichever user saved first would later find that his 723this is happening, whichever user saves first would later find that
759changes were lost. 724his changes were lost.
760 725
761 On some systems, Emacs notices immediately when the second user starts 726 On some systems, Emacs notices immediately when the second user starts
762to change the file, and issues an immediate warning. On all systems, 727to change the file, and issues an immediate warning. On all systems,
@@ -794,38 +759,28 @@ contents remain unchanged---the modification you were trying to make
794does not actually take place. 759does not actually take place.
795@end table 760@end table
796 761
797 Note that locking works on the basis of a file name; if a file has
798multiple names, Emacs does not realize that the two names are the same file
799and cannot prevent two users from editing it simultaneously under different
800names. However, basing locking on names means that Emacs can interlock the
801editing of new files that will not really exist until they are saved.
802
803 Some systems are not configured to allow Emacs to make locks, and
804there are cases where lock files cannot be written. In these cases,
805Emacs cannot detect trouble in advance, but it still can detect the
806collision when you try to save a file and overwrite someone else's
807changes. Every time Emacs saves a buffer, it first checks the
808last-modification date of the existing file on disk to verify that it
809has not changed since the file was last visited or saved. If the date
810does not match, it implies that changes were made in the file in some
811other way, and these changes are about to be lost if Emacs actually
812does save. To prevent this, Emacs displays a warning message and asks
813for confirmation before saving. Occasionally you will know why the
814file was changed and know that it does not matter; then you can answer
815@kbd{yes} and proceed. Otherwise, you should cancel the save with
816@kbd{C-g} and investigate the situation.
817
818 If Emacs or the operating system crashes, this may leave behind lock 762 If Emacs or the operating system crashes, this may leave behind lock
819files which are stale, so you may occasionally get warnings about 763files which are stale, so you may occasionally get warnings about
820spurious collisions. When you determine that the collision is spurious, 764spurious collisions. When you determine that the collision is
821just use @kbd{p} to tell Emacs to go ahead anyway. 765spurious, just use @kbd{p} to tell Emacs to go ahead anyway.
822 766
823 The first thing you should do when notified that simultaneous editing 767 Note that locking works on the basis of a file name; if a file has
824has already taken place is to list the directory with @kbd{C-u C-x C-d} 768multiple names, Emacs does not prevent two users from editing it
825(@pxref{Directories}). This shows the file's current author. You 769simultaneously under different names.
826should attempt to contact him to warn him not to continue editing. 770
827Often the next step is to save the contents of your Emacs buffer under a 771 A lock file cannot be written in some circumstances, e.g. if Emacs
828different name, and use @code{diff} to compare the two files.@refill 772lacks the system permissions or the system does not support symbolic
773links. In these cases, Emacs can still detect the collision when you
774try to save a file, by checking the file's last-modification date. If
775the file has changed since the last time Emacs visited or saved it,
776that implies that changes have been made in some other way, and will
777be lost if Emacs proceeds with saving. Emacs then displays a warning
778message and asks for confirmation before saving; answer @kbd{yes} to
779save, and @kbd{no} or @kbd{C-g} cancel the save.
780
781 If you are notified that simultaneous editing has already taken
782place, one way to compare the buffer to its file is the @kbd{M-x
783diff-buffer-with-file} command. @xref{Comparing Files}.
829 784
830@node File Shadowing 785@node File Shadowing
831@subsection Shadowing Files 786@subsection Shadowing Files
@@ -881,10 +836,10 @@ shadow-define-cluster}.
881@cindex modification dates 836@cindex modification dates
882@cindex locale, date format 837@cindex locale, date format
883 838
884You can arrange to put a time stamp in a file, so that it will be updated 839You can arrange to put a time stamp in a file, so that it is updated
885automatically each time you edit and save the file. The time stamp 840automatically each time you edit and save the file. The time stamp
886has to be in the first eight lines of the file, and you should 841must be in the first eight lines of the file, and you should insert it
887insert it like this: 842like this:
888 843
889@example 844@example
890Time-stamp: <> 845Time-stamp: <>
@@ -898,13 +853,13 @@ Time-stamp: " "
898@end example 853@end example
899 854
900@findex time-stamp 855@findex time-stamp
901 Then add the hook function @code{time-stamp} to the hook 856 Then add the function @code{time-stamp} to the hook
902@code{before-save-hook}; that hook function will automatically update 857@code{before-save-hook} (@pxref{Hooks}). When you save the file, this
903the time stamp, inserting the current date and time when you save the 858function then automatically updates the time stamp with the current
904file. You can also use the command @kbd{M-x time-stamp} to update the 859date and time. You can also use the command @kbd{M-x time-stamp} to
905time stamp manually. For other customizations, see the Custom group 860update the time stamp manually. For other customizations, see the
906@code{time-stamp}. Note that non-numeric fields in the time stamp are 861Custom group @code{time-stamp}. Note that the time stamp is formatted
907formatted according to your locale setting (@pxref{Environment}). 862according to your locale setting (@pxref{Environment}).
908 863
909@node Reverting 864@node Reverting
910@section Reverting a Buffer 865@section Reverting a Buffer
@@ -912,18 +867,21 @@ formatted according to your locale setting (@pxref{Environment}).
912@cindex drastic changes 867@cindex drastic changes
913@cindex reread a file 868@cindex reread a file
914 869
915 If you have made extensive changes to a file and then change your mind 870 If you have made extensive changes to a file-visiting buffer and
916about them, you can get rid of them by reading in the previous version 871then change your mind, you can @dfn{revert} the changes and go back to
917of the file. To do this, use @kbd{M-x revert-buffer}, which operates on 872the saved version of the file. To do this, type @kbd{M-x
918the current buffer. Since reverting a buffer unintentionally could lose 873revert-buffer}. Since reverting unintentionally could lose a lot of
919a lot of work, you must confirm this command with @kbd{yes}. 874work, Emacs asks for confirmation first.
920 875
921 @code{revert-buffer} tries to position point in such a way that, if 876 The @code{revert-buffer} command tries to position point in such a
922the file was edited only slightly, you will be at approximately the 877way that, if the file was edited only slightly, you will be at
923same piece of text after reverting as before. However, if you have made 878approximately the same part of the text as before. But if you have
924drastic changes, point may wind up in a totally different piece of text. 879made major changes, point may end up in a totally different location.
925 880
926 Reverting marks the buffer as ``not modified''. 881 Reverting marks the buffer as ``not modified''. It also clears the
882buffer's undo history (@pxref{Undo}). Thus, the reversion cannot be
883undone---if you change your mind yet again, you can't use the undo
884commands to bring the reverted changes back.
927 885
928 Some kinds of buffers that are not associated with files, such as 886 Some kinds of buffers that are not associated with files, such as
929Dired buffers, can also be reverted. For them, reverting means 887Dired buffers, can also be reverted. For them, reverting means
@@ -950,15 +908,14 @@ discard your changes.)
950@findex auto-revert-mode 908@findex auto-revert-mode
951@findex auto-revert-tail-mode 909@findex auto-revert-tail-mode
952@vindex auto-revert-interval 910@vindex auto-revert-interval
953 911 You can also tell Emacs to revert buffers periodically. To do this
954 In addition, you can tell Emacs to periodically revert a buffer by 912for a specific buffer, enable the minor mode Auto-Revert mode by
955typing @kbd{M-x auto-revert-mode}. This turns on Auto-Revert mode, a 913typing @kbd{M-x auto-revert-mode}. This automatically reverts the
956minor mode that makes Emacs automatically revert the current buffer 914current buffer every five seconds; you can change the interval through
957every five seconds. You can change this interval through the variable 915the variable @code{auto-revert-interval}. To do the same for all file
958@code{auto-revert-interval}. Typing @kbd{M-x global-auto-revert-mode} 916buffers, type @kbd{M-x global-auto-revert-mode} to enable Global
959enables Global Auto-Revert mode, which does the same for all file 917Auto-Revert mode. These minor modes do not check or revert remote
960buffers. Auto-Revert mode and Global Auto-Revert modes do not check 918files, because that is usually too slow.
961or revert remote files, because that is usually too slow.
962 919
963 One use of Auto-Revert mode is to ``tail'' a file such as a system 920 One use of Auto-Revert mode is to ``tail'' a file such as a system
964log, so that changes made to that file by other programs are 921log, so that changes made to that file by other programs are
@@ -969,8 +926,9 @@ the end, use Auto-Revert Tail mode instead
969(@code{auto-revert-tail-mode}). It is more efficient for this. 926(@code{auto-revert-tail-mode}). It is more efficient for this.
970Auto-Revert Tail mode works also for remote files. 927Auto-Revert Tail mode works also for remote files.
971 928
972 @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that 929 @xref{VC Undo}, for commands to revert to earlier versions of files
973visit files under version control. 930under version control. @xref{VC Mode Line}, for Auto Revert
931peculiarities when visiting files under version control.
974 932
975@ifnottex 933@ifnottex
976@include arevert-xtra.texi 934@include arevert-xtra.texi
@@ -1061,40 +1019,41 @@ any auto-save file to go with the new visited name.
1061@vindex auto-save-default 1019@vindex auto-save-default
1062@findex auto-save-mode 1020@findex auto-save-mode
1063 Each time you visit a file, auto-saving is turned on for that file's 1021 Each time you visit a file, auto-saving is turned on for that file's
1064buffer if the variable @code{auto-save-default} is non-@code{nil} (but not 1022buffer if the variable @code{auto-save-default} is non-@code{nil} (but
1065in batch mode; @pxref{Entering Emacs}). The default for this variable is 1023not in batch mode; @pxref{Initial Options}). The default for this
1066@code{t}, so auto-saving is the usual practice for file-visiting buffers. 1024variable is @code{t}, so auto-saving is the usual practice for
1067Auto-saving can be turned on or off for any existing buffer with the 1025file-visiting buffers. To toggle auto-saving in the current buffer,
1068command @kbd{M-x auto-save-mode}. Like other minor mode commands, @kbd{M-x 1026type @kbd{M-x auto-save-mode}. Auto Save mode acts as a buffer-local
1069auto-save-mode} turns auto-saving on with a positive argument, off with a 1027minor mode (@pxref{Minor Modes}).
1070zero or negative argument; with no argument, it toggles.
1071 1028
1072@vindex auto-save-interval 1029@vindex auto-save-interval
1073 Emacs does auto-saving periodically based on counting how many characters 1030 Emacs auto-saves periodically based on how many characters you have
1074you have typed since the last time auto-saving was done. The variable 1031typed since the last auto-save. The variable
1075@code{auto-save-interval} specifies how many characters there are between 1032@code{auto-save-interval} specifies how many characters there are
1076auto-saves. By default, it is 300. Emacs doesn't accept values that are 1033between auto-saves. By default, it is 300. Emacs doesn't accept
1077too small: if you customize @code{auto-save-interval} to a value less 1034values that are too small: if you customize @code{auto-save-interval}
1078than 20, Emacs will behave as if the value is 20. 1035to a value less than 20, Emacs will behave as if the value is 20.
1079 1036
1080@vindex auto-save-timeout 1037@vindex auto-save-timeout
1081 Auto-saving also takes place when you stop typing for a while. The 1038 Auto-saving also takes place when you stop typing for a while. By
1082variable @code{auto-save-timeout} says how many seconds Emacs should 1039default, it does this after 30 seconds of idleness (at this time,
1083wait before it does an auto save (and perhaps also a garbage 1040Emacs may also perform garbage collection; @pxref{Garbage
1084collection). (The actual time period is longer if the current buffer is 1041Collection,,, elisp, The Emacs Lisp Reference Manual}). To change
1085long; this is a heuristic which aims to keep out of your way when you 1042this interval, customize the variable @code{auto-save-timeout}. The
1086are editing long buffers, in which auto-save takes an appreciable amount 1043actual time period is longer if the current buffer is long; this is a
1087of time.) Auto-saving during idle periods accomplishes two things: 1044heuristic which aims to keep out of your way when you are editing long
1088first, it makes sure all your work is saved if you go away from the 1045buffers, in which auto-save takes an appreciable amount of time.
1089terminal for a while; second, it may avoid some auto-saving while you 1046Auto-saving during idle periods accomplishes two things: first, it
1090are actually typing. 1047makes sure all your work is saved if you go away from the terminal for
1048a while; second, it may avoid some auto-saving while you are actually
1049typing.
1091 1050
1092 Emacs also does auto-saving whenever it gets a fatal error. This 1051 Emacs also does auto-saving whenever it gets a fatal error. This
1093includes killing the Emacs job with a shell command such as @samp{kill 1052includes killing the Emacs job with a shell command such as @samp{kill
1094%emacs}, or disconnecting a phone line or network connection. 1053%emacs}, or disconnecting a phone line or network connection.
1095 1054
1096@findex do-auto-save 1055@findex do-auto-save
1097 You can request an auto-save explicitly with the command @kbd{M-x 1056 You can perform an auto-save explicitly with the command @kbd{M-x
1098do-auto-save}. 1057do-auto-save}.
1099 1058
1100@node Recover 1059@node Recover
@@ -1138,13 +1097,11 @@ this---saving them---updates the files themselves.
1138 1097
1139@vindex auto-save-list-file-prefix 1098@vindex auto-save-list-file-prefix
1140 Emacs records information about interrupted sessions for later 1099 Emacs records information about interrupted sessions for later
1141recovery in files named 1100recovery in files named @file{.saves-@var{pid}-@var{hostname}} in the
1142@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. The 1101directory @file{~/.emacs.d/auto-save-list/}. This directory is
1143directory used, @file{~/.emacs.d/auto-save-list/}, is determined by 1102determined by the variable @code{auto-save-list-file-prefix}. If you
1144the variable @code{auto-save-list-file-prefix}. You can record 1103set @code{auto-save-list-file-prefix} to @code{nil}, sessions are not
1145sessions in a different place by customizing that variable. If you 1104recorded for recovery.
1146set @code{auto-save-list-file-prefix} to @code{nil} in your
1147@file{.emacs} file, sessions are not recorded for recovery.
1148 1105
1149@node File Aliases 1106@node File Aliases
1150@section File Name Aliases 1107@section File Name Aliases
@@ -1292,8 +1249,8 @@ buffer named @samp{*diff*}. This works by running the @command{diff}
1292program, using options taken from the variable @code{diff-switches}. 1249program, using options taken from the variable @code{diff-switches}.
1293The value of @code{diff-switches} should be a string; the default is 1250The value of @code{diff-switches} should be a string; the default is
1294@code{"-c"} to specify a context diff. @xref{Top,, Diff, diff, 1251@code{"-c"} to specify a context diff. @xref{Top,, Diff, diff,
1295Comparing and Merging Files}, for more information about 1252Comparing and Merging Files}, for more information about the
1296@command{diff} output formats. 1253@command{diff} program.
1297 1254
1298 The output of the @code{diff} command is shown using a major mode 1255 The output of the @code{diff} command is shown using a major mode
1299called Diff mode. @xref{Diff Mode}. 1256called Diff mode. @xref{Diff Mode}.
@@ -1361,11 +1318,10 @@ merging files.
1361@cindex patches, editing 1318@cindex patches, editing
1362 1319
1363 Diff mode is a major mode used for the output of @kbd{M-x diff} and 1320 Diff mode is a major mode used for the output of @kbd{M-x diff} and
1364other similar commands, as well as the output of the @command{diff} 1321other similar commands. This kind of output is called a @dfn{patch},
1365program. This kind of output is called a @dfn{patch}, because it can 1322because it can be passed to the @command{patch} command to
1366be passed to the @command{patch} command to automatically apply the 1323automatically apply the specified changes. To select Diff mode
1367specified changes. To select Diff mode manually, type @kbd{M-x 1324manually, type @kbd{M-x diff-mode}.
1368diff-mode}.
1369 1325
1370@cindex hunk, diff 1326@cindex hunk, diff
1371 The changes specified in a patch are grouped into @dfn{hunks}, which 1327 The changes specified in a patch are grouped into @dfn{hunks}, which
@@ -1659,21 +1615,18 @@ Tar mode is used also for compressed archives---files with extensions
1659 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file 1615 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
1660into its own buffer. You can edit it there, and if you save the 1616into its own buffer. You can edit it there, and if you save the
1661buffer, the edited version will replace the version in the Tar buffer. 1617buffer, the edited version will replace the version in the Tar buffer.
1662@kbd{v} extracts a file into a buffer in View mode (@pxref{View 1618Clicking with the mouse on the file name in the Tar buffer does
1663Mode}). @kbd{o} extracts the file and displays it in another window, 1619likewise. @kbd{v} extracts a file into a buffer in View mode
1664so you could edit the file and operate on the archive simultaneously. 1620(@pxref{View Mode}). @kbd{o} extracts the file and displays it in
1665@kbd{d} marks a file for deletion when you later use @kbd{x}, and 1621another window, so you could edit the file and operate on the archive
1622simultaneously.
1623
1624 @kbd{d} marks a file for deletion when you later use @kbd{x}, and
1666@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the 1625@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the
1667archive to disk and @kbd{R} renames a file within the archive. 1626archive to disk and @kbd{R} renames a file within the archive.
1668@kbd{g} reverts the buffer from the archive on disk. 1627@kbd{g} reverts the buffer from the archive on disk. The keys
1669 1628@kbd{M}, @kbd{G}, and @kbd{O} change the file's permission bits,
1670 The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission 1629group, and owner, respectively.
1671bits, group, and owner, respectively.
1672
1673 If your display supports colors and the mouse, moving the mouse
1674pointer across a file name highlights that file name, indicating that
1675you can click on it. Clicking @kbd{Mouse-2} on the highlighted file
1676name extracts the file into a buffer and displays that buffer.
1677 1630
1678 Saving the Tar buffer writes a new version of the archive to disk with 1631 Saving the Tar buffer writes a new version of the archive to disk with
1679the changes you made to the components. 1632the changes you made to the components.
@@ -1690,19 +1643,20 @@ requires the appropriate uncompression program.
1690@cindex @code{zip} 1643@cindex @code{zip}
1691@cindex @code{lzh} 1644@cindex @code{lzh}
1692@cindex @code{zoo} 1645@cindex @code{zoo}
1646@cindex @code{7z}
1693@pindex arc 1647@pindex arc
1694@pindex jar 1648@pindex jar
1695@pindex zip 1649@pindex zip
1696@pindex rar 1650@pindex rar
1697@pindex lzh 1651@pindex lzh
1698@pindex zoo 1652@pindex zoo
1653@pindex 7z
1699@cindex Java class archives 1654@cindex Java class archives
1700@cindex unzip archives 1655@cindex unzip archives
1701 A separate but similar Archive mode is used for archives produced by 1656 A separate but similar Archive mode is used for @code{arc},
1702the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip}, 1657@code{jar}, @code{lzh}, @code{zip}, @code{rar}, @code{7z}, and
1703@code{rar}, and @code{zoo}, which have extensions corresponding to the 1658@code{zoo} archives, as well as @code{exe} files that are
1704program names. Archive mode also works for those @code{exe} files 1659self-extracting executables.
1705that are self-extracting executables.
1706 1660
1707 The key bindings of Archive mode are similar to those in Tar mode, 1661 The key bindings of Archive mode are similar to those in Tar mode,
1708with the addition of the @kbd{m} key which marks a file for subsequent 1662with the addition of the @kbd{m} key which marks a file for subsequent
@@ -1712,11 +1666,11 @@ information, for those archive types where it won't fit in a single
1712line. Operations such as renaming a subfile, or changing its mode or 1666line. Operations such as renaming a subfile, or changing its mode or
1713owner, are supported only for some of the archive formats. 1667owner, are supported only for some of the archive formats.
1714 1668
1715 Unlike Tar mode, Archive mode runs the archiving program to unpack 1669 Unlike Tar mode, Archive mode runs the archiving programs to unpack
1716and repack archives. Details of the program names and their options 1670and repack archives. However, you don't need these programs to look
1717can be set in the @samp{Archive} Customize group. However, you don't 1671at the archive table of contents, only to extract or manipulate the
1718need these programs to look at the archive table of contents, only to 1672subfiles in the archive. Details of the program names and their
1719extract or manipulate the subfiles in the archive. 1673options can be set in the @samp{Archive} Customize group.
1720 1674
1721@node Remote Files 1675@node Remote Files
1722@section Remote Files 1676@section Remote Files
@@ -1748,16 +1702,14 @@ Emacs chooses the method as follows:
1748 1702
1749@enumerate 1703@enumerate
1750@item 1704@item
1751If the host name starts with @samp{ftp.} (with dot), then Emacs uses 1705If the host name starts with @samp{ftp.} (with dot), Emacs uses FTP.
1752FTP.
1753@item 1706@item
1754If the user name is @samp{ftp} or @samp{anonymous}, then Emacs uses 1707If the user name is @samp{ftp} or @samp{anonymous}, Emacs uses FTP.
1755FTP.
1756@item 1708@item
1757If the variable @code{tramp-default-method} is set to @samp{ftp}, 1709If the variable @code{tramp-default-method} is set to @samp{ftp},
1758then Emacs uses FTP. 1710Emacs uses FTP.
1759@item 1711@item
1760If @command{ssh-agent} is running, then Emacs uses @command{scp}. 1712If @command{ssh-agent} is running, Emacs uses @command{scp}.
1761@item 1713@item
1762Otherwise, Emacs uses @command{ssh}. 1714Otherwise, Emacs uses @command{ssh}.
1763@end enumerate 1715@end enumerate
@@ -1769,32 +1721,31 @@ variable @code{tramp-mode} to @code{nil}. You can turn off the
1769feature in individual cases by quoting the file name with @samp{/:} 1721feature in individual cases by quoting the file name with @samp{/:}
1770(@pxref{Quoted File Names}). 1722(@pxref{Quoted File Names}).
1771 1723
1724@cindex ange-ftp
1772 Remote file access through FTP is handled by the Ange-FTP package, which 1725 Remote file access through FTP is handled by the Ange-FTP package, which
1773is documented in the following. Remote file access through the other 1726is documented in the following. Remote file access through the other
1774methods is handled by the Tramp package, which has its own manual. 1727methods is handled by the Tramp package, which has its own manual.
1775@xref{Top, The Tramp Manual,, tramp, The Tramp Manual}. 1728@xref{Top, The Tramp Manual,, tramp, The Tramp Manual}.
1776 1729
1777When the Ange-FTP package is used, Emacs logs in through FTP using 1730@vindex ange-ftp-default-user
1778your user name or the name @var{user}. It may ask you for a password 1731@cindex user name for remote file access
1779from time to time (@pxref{Passwords}); this is used for logging in on 1732 When the Ange-FTP package is used, Emacs logs in through FTP using
1780@var{host}. The form using @var{port} allows you to access servers 1733the name @var{user}, if that is specified in the remote file name. If
1781running on a non-default TCP port. 1734@var{user} is unspecified, Emacs logs in using your user name on the
1735local system; but if you set the variable @code{ange-ftp-default-user}
1736to a string, that string is used instead. When logging in, Emacs may
1737also ask for a password.
1782 1738
1783@cindex backups for remote files 1739@cindex backups for remote files
1784@vindex ange-ftp-make-backup-files 1740@vindex ange-ftp-make-backup-files
1785 If you want to disable backups for remote files, set the variable 1741 For performance reasons, Emacs does not make backup files for files
1786@code{ange-ftp-make-backup-files} to @code{nil}. 1742accessed via FTP by default. To make it do so, change the variable
1743@code{ange-ftp-make-backup-files} to a non-@code{nil} value.
1787 1744
1788 By default, the auto-save files (@pxref{Auto Save Files}) for remote 1745 By default, auto-save files for remote files are made in the
1789files are made in the temporary file directory on the local machine. 1746temporary file directory on the local machine, as specified by the
1790This is achieved using the variable @code{auto-save-file-name-transforms}. 1747variable @code{auto-save-file-name-transforms}. @xref{Auto Save
1791 1748Files}.
1792@cindex ange-ftp
1793@vindex ange-ftp-default-user
1794@cindex user name for remote file access
1795 Normally, if you do not specify a user name in a remote file name,
1796that means to use your own user name. But if you set the variable
1797@code{ange-ftp-default-user} to a string, that string is used instead.
1798 1749
1799@cindex anonymous FTP 1750@cindex anonymous FTP
1800@vindex ange-ftp-generate-anonymous-password 1751@vindex ange-ftp-generate-anonymous-password
@@ -1950,10 +1901,10 @@ images as thumbnails.
1950@findex filesets-init 1901@findex filesets-init
1951 If you regularly edit a certain group of files, you can define them 1902 If you regularly edit a certain group of files, you can define them
1952as a @dfn{fileset}. This lets you perform certain operations, such as 1903as a @dfn{fileset}. This lets you perform certain operations, such as
1953visiting, @code{query-replace}, and shell commands on all the files 1904visiting, @code{query-replace}, and shell commands on all the files at
1954at once. To make use of filesets, you must first add the expression 1905once. To make use of filesets, you must first add the expression
1955@code{(filesets-init)} to your @file{.emacs} file (@pxref{Init File}). 1906@code{(filesets-init)} to your init file (@pxref{Init File}). This
1956This adds a @samp{Filesets} menu to the menu bar. 1907adds a @samp{Filesets} menu to the menu bar.
1957 1908
1958@findex filesets-add-buffer 1909@findex filesets-add-buffer
1959@findex filesets-remove-buffer 1910@findex filesets-remove-buffer
@@ -1980,7 +1931,7 @@ files in a fileset, and @kbd{M-x filesets-close} to close them. Use
1980a fileset. These commands are also available from the @samp{Filesets} 1931a fileset. These commands are also available from the @samp{Filesets}
1981menu, where each existing fileset is represented by a submenu. 1932menu, where each existing fileset is represented by a submenu.
1982 1933
1983 Emacs uses the concept of a fileset elsewhere @pxref{Version 1934 @xref{Version Control}, for a different concept of ``filesets'':
1984Control} to describe sets of files to be treated as a group for 1935groups of files bundled together for version control operations.
1985purposes of version control operations. Those filesets are unnamed 1936Filesets of that type are unnamed, and do not persist across Emacs
1986and do not persist across Emacs sessions. 1937sessions.
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index 7a605100796..bae78d94744 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -7,17 +7,14 @@
7@cindex typos, fixing 7@cindex typos, fixing
8@cindex mistakes, correcting 8@cindex mistakes, correcting
9 9
10 In this chapter we describe the commands that are especially useful 10 In this chapter we describe commands that are useful when you catch
11when you catch a mistake in your text after you have made it, or 11a mistake while editing. The most fundamental command for correcting
12change your mind while composing text on the fly. 12erroneous editing is the undo command @kbd{C-/} (which is also bound
13 13to @kbd{C-x u} and @kbd{C-_}). This undoes a single command, or a
14 The most fundamental command for correcting erroneous editing is the 14part of a command (as in the case of @code{query-replace}), or several
15undo command @kbd{C-/} (which is also bound to @kbd{C-x u} and 15consecutive character insertions. Consecutive repetitions of
16@kbd{C-_}). This undoes a single command, or a part of a command (as 16@kbd{C-/} undo earlier and earlier changes, back to the limit of the
17in the case of @code{query-replace}), or several consecutive 17undo information available.
18self-inserting characters. Consecutive repetitions of @kbd{C-/} undo
19earlier and earlier changes, back to the limit of the undo information
20available.
21 18
22 Aside from the commands described here, you can erase text using 19 Aside from the commands described here, you can erase text using
23deletion commands such as @key{DEL} (@code{delete-backward-char}). 20deletion commands such as @key{DEL} (@code{delete-backward-char}).
@@ -231,18 +228,19 @@ case-convert it and go on typing. @xref{Case}.@refill
231 This section describes the commands to check the spelling of a 228 This section describes the commands to check the spelling of a
232single word or of a portion of a buffer. These commands only work if 229single word or of a portion of a buffer. These commands only work if
233the spelling checker program Aspell, Ispell or Hunspell is installed. 230the spelling checker program Aspell, Ispell or Hunspell is installed.
234Aspell, Ispell or Hunspell are not part of Emacs, but one or the other 231These programs are not part of Emacs, but one of them is usually
235is usually installed in GNU/Linux and other free operating systems. 232installed in GNU/Linux and other free operating systems.
236@ifnottex 233@ifnottex
237@xref{Top, Aspell,, aspell, The Aspell Manual}. 234@xref{Top, Aspell,, aspell, The Aspell Manual}.
238@end ifnottex 235@end ifnottex
239 236
240@table @kbd 237@table @kbd
241@item M-$ 238@item M-$
242Check and correct spelling of the active region or the word at point 239Check and correct spelling of the word at point (@code{ispell-word}).
243(@code{ispell-word}). 240If the region is active, do it for all words in the region instead.
244@item M-x ispell 241@item M-x ispell
245Check and correct spelling in the active region or the entire buffer. 242Check and correct spelling of all words in the buffer. If the region
243is active, do it for all words in the region instead.
246@item M-x ispell-buffer 244@item M-x ispell-buffer
247Check and correct spelling in the buffer. 245Check and correct spelling in the buffer.
248@item M-x ispell-region 246@item M-x ispell-region
@@ -355,14 +353,13 @@ Show the list of options.
355@end table 353@end table
356 354
357@findex ispell-complete-word 355@findex ispell-complete-word
358 In Text mode and related modes, the command @kbd{M-@key{TAB}} 356 In Text mode and related modes, @kbd{M-@key{TAB}}
359(@code{ispell-complete-word}) shows a list of completions based on 357(@code{ispell-complete-word}) performs in-buffer completion based on
360spelling correction. Insert the beginning of a word, and then type 358spelling correction. Insert the beginning of a word, and then type
361@kbd{M-@key{TAB}}; the command displays a completion list window. (If 359@kbd{M-@key{TAB}}; this shows shows a list of completions. (If your
362your window manager intercepts @kbd{M-@key{TAB}}, type @kbd{@key{ESC} 360window manager intercepts @kbd{M-@key{TAB}}, type @kbd{@key{ESC}
363@key{TAB}} or @kbd{C-M-i}.) To choose one of the completions listed, 361@key{TAB}} or @kbd{C-M-i}.) Each completion is listed with a digit or
364click @kbd{Mouse-2} or @kbd{Mouse-1} fast on it, or move the cursor 362character; type that digit or character to choose it.
365there in the completions window and type @key{RET}. @xref{Text Mode}.
366 363
367@cindex @code{ispell} program 364@cindex @code{ispell} program
368@findex ispell-kill-ispell 365@findex ispell-kill-ispell
@@ -370,29 +367,27 @@ there in the completions window and type @key{RET}. @xref{Text Mode}.
370to run, waiting for something to do, so that subsequent spell checking 367to run, waiting for something to do, so that subsequent spell checking
371commands complete more quickly. If you want to get rid of the 368commands complete more quickly. If you want to get rid of the
372process, use @kbd{M-x ispell-kill-ispell}. This is not usually 369process, use @kbd{M-x ispell-kill-ispell}. This is not usually
373necessary, since the process uses no time except when you do spelling 370necessary, since the process uses no processor time except when you do
374correction. 371spelling correction.
375 372
376@vindex ispell-dictionary 373@vindex ispell-dictionary
377@vindex ispell-local-dictionary 374@vindex ispell-local-dictionary
378@vindex ispell-personal-dictionary 375@vindex ispell-personal-dictionary
379@vindex ispell-complete-word-dict 376@findex ispell-change-dictionary
380 Ispell, Aspell and Hunspell use two dictionaries together for spell checking: 377 Ispell, Aspell and Hunspell look up spelling in two dictionaries:
381the standard dictionary and your private dictionary. The standard 378the standard dictionary and your personal dictionary. The standard
382dictionary is specified by @code{ispell-local-dictionary} or, 379dictionary is specified by the variable @code{ispell-local-dictionary}
383if @code{nil}, by @code{ispell-dictionary}. If both are @code{nil} 380or, if that is @code{nil}, by the variable @code{ispell-dictionary}.
384the default dictionary is selected. The command 381If both are @code{nil}, the spelling program's default dictionary is
385@kbd{M-x ispell-change-dictionary} sets the standard dictionary for 382used. The command @kbd{M-x ispell-change-dictionary} sets the
386the buffer and then restarts the subprocess, so that it will use a 383standard dictionary for the buffer and then restarts the subprocess,
387different standard dictionary. Personal dictionary is specified by 384so that it will use a different standard dictionary. Your personal
388@code{ispell-personal-dictionary}. If @code{nil}, default value is 385dictionary is specified by the variable
389used. 386@code{ispell-personal-dictionary}. If that is @code{nil}, the
390 387spelling program looks for a personal dictionary in a default
391 Set variable @code{ispell-dictionary} to select a specific default 388location.
392dictionary for all your documents. Set variable
393@code{ispell-local-dictionary} in the local variables section to
394select a specific dictionary for a given document.
395 389
390@vindex ispell-complete-word-dict
396 A separate dictionary is used for word completion. The variable 391 A separate dictionary is used for word completion. The variable
397@code{ispell-complete-word-dict} specifies the file name of this 392@code{ispell-complete-word-dict} specifies the file name of this
398dictionary. The completion dictionary must be different because it 393dictionary. The completion dictionary must be different because it
@@ -400,16 +395,14 @@ cannot use root and affix information. For some languages, there
400is a spell checking dictionary but no word completion dictionary. 395is a spell checking dictionary but no word completion dictionary.
401 396
402@cindex Flyspell mode 397@cindex Flyspell mode
398@cindex mode, Flyspell
403@findex flyspell-mode 399@findex flyspell-mode
404@findex turn-on-flyspell 400 Flyspell mode is a minor mode that performs automatic spell checking
405 Flyspell mode is a fully-automatic way to check spelling as you edit 401as you type. When it finds a word that it does not recognize, it
406in Emacs. It operates by checking words as you change or insert them. 402highlights that word. Type @kbd{M-x flyspell-mode} to toggle Flyspell
407When it finds a word that it does not recognize, it highlights that 403mode in the current buffer. To enable Flyspell mode in all text mode
408word. This does not interfere with your editing, but when you see the 404buffers, add @code{flyspell-mode} to @code{text-mode-hook}.
409highlighted word, you can move to it and fix it. Type @kbd{M-x 405@xref{Hooks}.
410flyspell-mode} to enable or disable this mode in the current buffer.
411To enable Flyspell mode in all text mode buffers, add
412@code{turn-on-flyspell} to @code{text-mode-hook}.
413 406
414 When Flyspell mode highlights a word as misspelled, you can click on 407 When Flyspell mode highlights a word as misspelled, you can click on
415it with @kbd{Mouse-2} to display a menu of possible corrections and 408it with @kbd{Mouse-2} to display a menu of possible corrections and
diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi
index ee417624120..e5853a17dd0 100644
--- a/doc/emacs/fortran-xtra.texi
+++ b/doc/emacs/fortran-xtra.texi
@@ -479,7 +479,7 @@ variable @code{fortran-break-before-delimiters} is @code{nil}.
479Otherwise (and by default), the break comes before the delimiter. 479Otherwise (and by default), the break comes before the delimiter.
480 480
481 To enable Auto Fill in all Fortran buffers, add 481 To enable Auto Fill in all Fortran buffers, add
482@code{turn-on-auto-fill} to @code{fortran-mode-hook}. 482@code{auto-fill-mode} to @code{fortran-mode-hook}.
483@iftex 483@iftex
484@xref{Hooks,,, emacs, the Emacs Manual}. 484@xref{Hooks,,, emacs, the Emacs Manual}.
485@end iftex 485@end iftex
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 14fdb3121a4..4c239d364f0 100644
--- a/doc/emacs/frames.texi
+++ b/doc/emacs/frames.texi
@@ -299,7 +299,7 @@ you can access them without having to display the menu bar.
299 299
300@item S-Mouse-1 300@item S-Mouse-1
301This menu is for changing the default face within the window's buffer. 301This menu is for changing the default face within the window's buffer.
302@xref{Temporary Face Changes}. 302@xref{Text Scale}.
303@end table 303@end table
304 304
305@node Mode Line Mouse 305@node Mode Line Mouse
@@ -1185,6 +1185,13 @@ options for displaying tooltips, use @kbd{M-x customize-group
1185@key{RET} tooltip @key{RET}}. @xref{X Resources}, for information on 1185@key{RET} tooltip @key{RET}}. @xref{X Resources}, for information on
1186customizing the windows that display tooltips. 1186customizing the windows that display tooltips.
1187 1187
1188@vindex x-gtk-use-system-tooltips
1189 If Emacs is built with GTK support, it displays tooltips via GTK,
1190using the default appearance of GTK tooltips. To disable this, change
1191the variable @code{x-gtk-use-system-tooltips} to @code{nil}. If you
1192do this, or if Emacs is built without GTK support, the @code{tooltip}
1193face specifies most attributes of the tooltip text.
1194
1188@node Mouse Avoidance 1195@node Mouse Avoidance
1189@section Mouse Avoidance 1196@section Mouse Avoidance
1190@cindex avoiding mouse in the way of your typing 1197@cindex avoiding mouse in the way of your typing
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index a85edf101e5..c024d428511 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -70,7 +70,7 @@ meanings for it, but they all support @key{F1} for help.)
70* Package Keywords:: Finding Lisp libraries by keywords (topics). 70* Package Keywords:: Finding Lisp libraries by keywords (topics).
71* Language Help:: Help relating to international language support. 71* Language Help:: Help relating to international language support.
72* Misc Help:: Other help commands. 72* Misc Help:: Other help commands.
73* Help Files:: Commands to display auxilliary help files. 73* Help Files:: Commands to display auxiliary help files.
74* Help Echo:: Help on active text and tooltips (`balloon help'). 74* Help Echo:: Help on active text and tooltips (`balloon help').
75@end menu 75@end menu
76 76
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 8689e9c8324..6237b00c2ee 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -736,7 +736,7 @@ insert rectangles, and commands to make blank rectangles.
736k} (@code{kill-rectangle}) to remove the text and and save it as the 736k} (@code{kill-rectangle}) to remove the text and and save it as the
737@dfn{last killed rectangle}. In both cases, erasing the 737@dfn{last killed rectangle}. In both cases, erasing the
738region-rectangle is like erasing the specified text on each line of 738region-rectangle is like erasing the specified text on each line of
739the rectange; if there is any following text on the line, it moves 739the rectangle; if there is any following text on the line, it moves
740backwards to fill the gap. 740backwards to fill the gap.
741 741
742 ``Killing'' a rectangle is not killing in the usual sense; the 742 ``Killing'' a rectangle is not killing in the usual sense; the
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index 85d92c9fcd7..f4a5a2858cf 100644
--- a/doc/emacs/macos.texi
+++ b/doc/emacs/macos.texi
@@ -54,12 +54,12 @@ to change the foreground color of the face at that position (if the
54instead). To discard the settings, create a new frame and close the 54instead). To discard the settings, create a new frame and close the
55altered one. 55altered one.
56 56
57 @key{S-Mouse-1} (i.e., clicking the left mouse button 57 @key{S-Mouse-1} (i.e., clicking the left mouse button while holding
58while holding down the @key{Shift} key) adjusts the region to the 58down the @key{Shift} key) adjusts the region to the click position,
59click position, just like @key{Mouse-3} (@code{mouse-save-then-kill}); 59just like @key{Mouse-3} (@code{mouse-save-then-kill}); it does not pop
60it does not pop up a menu for changing the default face, as 60up a menu for changing the default face, as @key{S-Mouse-1} normally
61@key{S-Mouse-1} normally does (@pxref{Temporary Face Changes}). This 61does (@pxref{Text Scale}). This change makes Emacs behave more like
62change makes Emacs behave more like other Mac / GNUstep applications. 62other Mac / GNUstep applications.
63 63
64 When you open or save files using the menus, or using the 64 When you open or save files using the menus, or using the
65@key{Cmd-o} and @key{Cmd-S} bindings, Emacs uses graphical file 65@key{Cmd-o} and @key{Cmd-S} bindings, Emacs uses graphical file
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index dafc9327c74..354812edc1f 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -898,10 +898,11 @@ You can specify a different default by setting the variable
898numeric argument; then it reads the initial revision ID for this 898numeric argument; then it reads the initial revision ID for this
899particular file using the minibuffer. 899particular file using the minibuffer.
900 900
901@vindex vc-initial-comment 901@c See http://debbugs.gnu.org/9745
902 If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an 902@c @vindex vc-initial-comment
903initial comment to describe the purpose of this source file. Reading 903@c If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
904the initial comment works like reading a log entry (@pxref{Log Buffer}). 904@c initial comment to describe the purpose of this source file. Reading
905@c the initial comment works like reading a log entry (@pxref{Log Buffer}).
905 906
906@node VC Change Log 907@node VC Change Log
907@subsubsection VC Change Log 908@subsubsection VC Change Log
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index e84b4c9f080..bbe42551345 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -219,11 +219,11 @@ is sometimes available in ordinary buffers too. @xref{Symbol
219Completion}. 219Completion}.
220 220
221@menu 221@menu
222* Example: Completion Example. Examples of using completion. 222* Completion Example:: Examples of using completion.
223* Commands: Completion Commands. A list of completion commands. 223* Completion Commands:: A list of completion commands.
224* Strict Completion:: Different types of completion. 224* Completion Exit:: Completion and minibuffer text submission.
225* Completion Styles:: How completion matches are chosen. 225* Completion Styles:: How completion matches are chosen.
226* Options: Completion Options. Options for completion. 226* Completion Options:: Options for completion.
227@end menu 227@end menu
228 228
229@node Completion Example 229@node Completion Example
@@ -274,7 +274,7 @@ Complete up to one word from the minibuffer text before point
274arguments that often include spaces, such as file names. 274arguments that often include spaces, such as file names.
275@item @key{RET} 275@item @key{RET}
276Submit the text in the minibuffer as the argument, possibly completing 276Submit the text in the minibuffer as the argument, possibly completing
277first (@code{minibuffer-complete-and-exit}). @xref{Strict Completion}. 277first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}.
278@item ? 278@item ?
279Display a list of completions (@code{minibuffer-completion-help}). 279Display a list of completions (@code{minibuffer-completion-help}).
280@end table 280@end table
@@ -337,42 +337,68 @@ While in the completion list buffer, this moves point to the previous
337completion alternative (@code{previous-completion}). 337completion alternative (@code{previous-completion}).
338@end table 338@end table
339 339
340@node Strict Completion 340@node Completion Exit
341@subsection Strict Completion 341@subsection Completion Exit
342 342
343 There are three ways that the @key{RET} 343@kindex RET @r{(completion in minibuffer)}
344(@code{minibuffer-complete-and-exit}) completion command can act, 344@findex minibuffer-complete-and-exit
345depending on how the argument will be used. 345 When a command reads an argument using the minibuffer with
346completion, it also controls what happens when you type @key{RET}
347(@code{minibuffer-complete-and-exit}) to submit the argument. There
348are four types of behavior:
346 349
347@itemize @bullet 350@itemize @bullet
348@item 351@item
349@dfn{Strict} completion accepts only known completion candidates. For 352@dfn{Strict completion} accepts only exact completion matches. Typing
350example, when @kbd{C-x k} reads the name of a buffer to kill, only the 353@key{RET} exits the minibuffer only if the minibuffer text is an exact
351name of an existing buffer makes sense. In strict completion, 354match, or completes to one. Otherwise, Emacs refuses to exit the
352@key{RET} refuses to exit if the text in the minibuffer does not 355minibuffer; instead it tries to complete, and if no completion can be
353complete to an exact match. 356done it momentarily displays @samp{[No match]} after the minibuffer
357text. (You can still leave the minibuffer by typing @kbd{C-g} to
358cancel the command.)
359
360An example of a command that uses this behavior is @kbd{M-x}, since it
361is meaningless for it to accept a non-existent command name.
354 362
355@item 363@item
356@dfn{Cautious} completion is similar to strict completion, except that 364@dfn{Cautious completion} is like strict completion, except @key{RET}
357@key{RET} exits only if the text is an already exact match. 365exits only if the text is already an exact match. If the text
358Otherwise, @key{RET} does not exit, but it does complete the text. If 366completes to an exact match, @key{RET} performs that completion but
359that completes to an exact match, a second @key{RET} will exit. 367does not exit yet; you must type a second @key{RET} to exit.
360 368
361Cautious completion is used for reading file names for files that must 369Cautious completion is used for reading file names for files that must
362already exist, for example. 370already exist, for example.
363 371
364@item 372@item
365@dfn{Permissive} completion allows any input; the completion 373@dfn{Permissive completion} allows any input; the completion
366candidates are just suggestions. For example, when @kbd{C-x C-f} 374candidates are just suggestions. Typing @key{RET} does not complete,
367reads the name of a file to visit, any file name is allowed, including 375it just submits the argument as you have entered it.
368nonexistent file (in case you want to create a file). In permissive
369completion, @key{RET} does not complete, it just submits the argument
370as you have entered it.
371@end itemize
372 376
373 Like the other completion commands, @key{RET} displays a list of all 377@cindex minibuffer confirmation
374possible completions whenever it is supposed to complete but is unable 378@cindex confirming in the minibuffer
375to complete any further. 379@item
380@dfn{Permissive completion with confirmation} is like permissive
381completion, with an exception: if you typed @key{TAB} and this
382completed the text up to some intermediate state (i.e. one that is not
383yet an exact completion match), typing @key{RET} right afterward does
384not submit the argument. Instead, Emacs asks for confirmation by
385momentarily displaying @samp{[Confirm]} after the text; type @key{RET}
386again to confirm and submit the text. This catches a common mistake,
387in which one types @key{RET} before realizing that @key{TAB} did not
388complete as far as desired.
389
390@vindex confirm-nonexistent-file-or-buffer
391You can tweak the confirmation behavior by customizing the variable
392@code{confirm-nonexistent-file-or-buffer}. The default value,
393@code{after-completion}, gives the behavior we have just described.
394If you change it to @code{nil}, Emacs does not ask for confirmation,
395falling back on permissive completion. If you change it to any other
396non-@code{nil} value, Emacs asks for confirmation whether or not the
397preceding command was @key{TAB}.
398
399This behavior is used by most commands that read file names, like
400@kbd{C-x C-f}, and commands that read buffer names, like @kbd{C-x b}.
401@end itemize
376 402
377@node Completion Styles 403@node Completion Styles
378@subsection How Completion Alternatives Are Chosen 404@subsection How Completion Alternatives Are Chosen
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index b894d01b9bb..9e30b657284 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1198,7 +1198,7 @@ Address mode:
1198 1198
1199@c FIXME goto-addr.el commentary says to use goto-address instead. 1199@c FIXME goto-addr.el commentary says to use goto-address instead.
1200@smallexample 1200@smallexample
1201(add-hook 'rmail-show-message-hook (lambda () (goto-address-mode 1))) 1201(add-hook 'rmail-show-message-hook 'goto-address-mode)
1202@end smallexample 1202@end smallexample
1203 1203
1204@noindent 1204@noindent
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index 14d4c678085..fcc31e30988 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -189,7 +189,7 @@ is sometimes useful to have this information.
189 189
190 @var{cs} describes the character set of the text in the buffer 190 @var{cs} describes the character set of the text in the buffer
191(@pxref{Coding Systems}). If it is a dash (@samp{-}), that indicates 191(@pxref{Coding Systems}). If it is a dash (@samp{-}), that indicates
192no special character set handling (with the possible expection of 192no special character set handling (with the possible exception of
193end-of-line conventions, described in the next paragraph). @samp{=} 193end-of-line conventions, described in the next paragraph). @samp{=}
194means no conversion whatsoever, and is usually used for files 194means no conversion whatsoever, and is usually used for files
195containing non-textual data. Other characters represent various 195containing non-textual data. Other characters represent various
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index caf03291fbc..31b5aa37f83 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -60,7 +60,6 @@ Incremental search backward (@code{isearch-backward}).
60 or else edit the search string. 60 or else edit the search string.
61* Isearch Scroll:: Scrolling during an incremental search. 61* Isearch Scroll:: Scrolling during an incremental search.
62* Isearch Minibuffer:: Incremental search of the minibuffer history. 62* Isearch Minibuffer:: Incremental search of the minibuffer history.
63* Slow Isearch:: Incremental search features for slow terminals.
64@end menu 63@end menu
65 64
66@node Basic Isearch 65@node Basic Isearch
@@ -167,23 +166,27 @@ going past the original starting point of the search, it changes to
167you have already seen. 166you have already seen.
168 167
169@cindex search ring 168@cindex search ring
169@kindex M-n @r{(Incremental search)}
170@kindex M-p @r{(Incremental search)}
170 To reuse earlier search strings, use the @dfn{search ring}. The 171 To reuse earlier search strings, use the @dfn{search ring}. The
171commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a 172commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a
172search string to reuse. These commands leave the selected search ring 173search string to reuse. These commands leave the selected search ring
173element in the minibuffer, where you can edit it. To edit the current 174element in the minibuffer, where you can edit it.
174search string in the minibuffer without replacing it with items from 175
175the search ring, type @kbd{M-e}. Type @kbd{C-s} or @kbd{C-r} to 176@kindex M-e @r{(Incremental search)}
176terminate editing the string and search for it. 177 To edit the current search string in the minibuffer without
178replacing it with items from the search ring, type @kbd{M-e}. Type
179@kbd{C-s} or @kbd{C-r} to finish editing the string and search for it.
177 180
178@node Error in Isearch 181@node Error in Isearch
179@subsection Errors in Incremental Search 182@subsection Errors in Incremental Search
180 183
181 If your string is not found at all, the echo area says @samp{Failing 184 If your string is not found at all, the echo area says @samp{Failing
182I-Search}. The cursor is after the place where Emacs found as much of 185I-Search}, and the cursor moves past the place where Emacs found as
183your string as it could. Thus, if you search for @samp{FOOT}, and 186much of your string as it could. Thus, if you search for @samp{FOOT},
184there is no @samp{FOOT}, you might see the cursor after the @samp{FOO} 187and there is no @samp{FOOT}, you might see the cursor after the
185in @samp{FOOL}. In the echo area, the part of the search string that 188@samp{FOO} in @samp{FOOL}. In the echo area, the part of the search
186failed to match is highlighted using the customizable face 189string that failed to match is highlighted using the face
187@code{isearch-fail}. 190@code{isearch-fail}.
188 191
189 At this point, there are several things you can do. If your string 192 At this point, there are several things you can do. If your string
@@ -196,6 +199,7 @@ search string the characters that could not be found (the @samp{T} in
196entirely, returning point to where it was when the search started. 199entirely, returning point to where it was when the search started.
197 200
198@cindex quitting (in search) 201@cindex quitting (in search)
202@kindex C-g @r{(Incremental search)}
199 The quit command, @kbd{C-g}, does special things during searches; 203 The quit command, @kbd{C-g}, does special things during searches;
200just what it does depends on the status of the search. If the search 204just what it does depends on the status of the search. If the search
201has found what you specified and is waiting for input, @kbd{C-g} 205has found what you specified and is waiting for input, @kbd{C-g}
@@ -271,62 +275,70 @@ keybindings. These keybindings are part of the keymap
271@node Isearch Yank 275@node Isearch Yank
272@subsection Isearch Yanking 276@subsection Isearch Yanking
273 277
278@kindex C-y @r{(Incremental search)}
279@kindex M-y @r{(Incremental search)}
280@findex isearch-yank-kill
281@findex isearch-yank-pop
274 Within incremental search, @kbd{C-y} (@code{isearch-yank-kill}) 282 Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
275copies text from the kill ring into the search string. It uses the 283appends the current kill to the search string. @kbd{M-y}
276same text that @kbd{C-y}, outside of incremental search, would 284(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that
277normally yank into the buffer. @kbd{Mouse-2} in the echo area does 285appended text with an earlier kill, similar to the usual @kbd{M-y}
278the same. @xref{Yanking}. 286(@code{yank-pop}) command (@pxref{Yanking}). @kbd{Mouse-2} appends
279 287the current X selection (@pxref{Primary Selection}).
280 @kbd{C-w} (@code{isearch-yank-word-or-char}) grabs the next 288
281character or word at point, and adds it to the search string. This is 289@kindex C-w @r{(Incremental search)}
282convenient for searching for another occurrence of the text at point. 290@findex isearch-yank-word-or-char
283(The decision, whether to copy a character or a word, is heuristic.) 291 @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next
284 292character or word at point to the search string. This is an easy way
285 Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) grabs the rest 293to search for another occurrence of the text at point. (The decision
286of the current line, and adds it to the search string. If point is 294of whether to copy a character or a word is heuristic.)
287already at the end of a line, it grabs the entire next line. 295
296@kindex M-s C-e @r{(Incremental search)}
297@findex isearch-yank-line
298 Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) appends the rest
299of the current line to the search string. If point is already at the
300end of a line, it appends the next line.
288 301
289 If the search is currently case-insensitive, both @kbd{C-w} and 302 If the search is currently case-insensitive, both @kbd{C-w} and
290@kbd{M-s C-e} convert the text they copy to lower case, so that the 303@kbd{M-s C-e} convert the text they copy to lower case, so that the
291search remains case-insensitive. 304search remains case-insensitive.
292 305
293 @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one 306@kindex C-M-w @r{(Incremental search)}
294character at a time: @kbd{C-M-w} deletes the last character from the 307@kindex C-M-y @r{(Incremental search)}
295search string and @kbd{C-M-y} copies the character after point to the 308@findex isearch-del-char
296end of the search string. An alternative method to add the character 309@findex isearch-yank-char
297after point into the search string is to enter the minibuffer by 310 @kbd{C-M-w} (@code{isearch-del-char}) deletes the last character
298@kbd{M-e} and to type @kbd{C-f} at the end of the search string in the 311from the search string, and @kbd{C-M-y} (@code{isearch-yank-char})
299minibuffer. 312appends the character after point to the the search string. An
313alternative method to add the character after point is to enter the
314minibuffer with @kbd{M-e} (@pxref{Repeat Isearch}) and type @kbd{C-f}
315at the end of the search string in the minibuffer.
300 316
301@node Isearch Scroll 317@node Isearch Scroll
302@subsection Scrolling During Incremental Search 318@subsection Scrolling During Incremental Search
303 319
304@vindex isearch-allow-scroll 320@vindex isearch-allow-scroll
305 You can enable the use of vertical scrolling during incremental 321 Normally, scrolling commands exit incremental search. If you change
306search (without exiting the search) by setting the customizable 322the variable @code{isearch-allow-scroll} to a non-@code{nil} value,
307variable @code{isearch-allow-scroll} to a non-@code{nil} value. This 323that enables the use of the scroll-bar, as well as keyboard scrolling
308applies to using the vertical scroll-bar and to certain keyboard 324commands like @kbd{C-v}, @kbd{M-v}, and @kbd{C-l} (@pxref{Scrolling}).
309commands such as @code{scroll-down-command}, @code{scroll-up-command} 325This applies only to calling these commands via their bound key
310and @code{recenter} (@pxref{Scrolling}). You must run these commands 326sequences---typing @kbd{M-x} will still exit the search. You can give
311via their key sequences to stay in the search---typing @kbd{M-x} will 327prefix arguments to these commands in the usual way. This feature
312terminate the search. You can give prefix arguments to these commands 328won't let you scroll the current match out of visibility, however.
313in the usual way. 329
314 330 The @code{isearch-allow-scroll} feature also affects some other
315 This feature won't let you scroll the current match out of visibility, 331commands, such as @kbd{C-x 2} (@code{split-window-vertically}) and
316however. 332@kbd{C-x ^} (@code{enlarge-window}), which don't exactly scroll but do
317 333affect where the text appears on the screen. It applies to any
318 The feature also affects some other commands, such as @kbd{C-x 2} 334command whose name has a non-@code{nil} @code{isearch-scroll}
319(@code{split-window-vertically}) and @kbd{C-x ^} 335property. So you can control which commands are affected by changing
320(@code{enlarge-window}) which don't exactly scroll but do affect where 336these properties.
321the text appears on the screen. In general, it applies to any command
322whose name has a non-@code{nil} @code{isearch-scroll} property. So you
323can control which commands are affected by changing these properties.
324 337
325 For example, to make @kbd{C-h l} usable within an incremental search 338 For example, to make @kbd{C-h l} usable within an incremental search
326in all future Emacs sessions, use @kbd{C-h c} to find what command it 339in all future Emacs sessions, use @kbd{C-h c} to find what command it
327runs. (You type @kbd{C-h c C-h l}; it says @code{view-lossage}.) 340runs (@pxref{Key Help}), which is @code{view-lossage}. Then you can
328Then you can put the following line in your @file{.emacs} file 341put the following line in your init file (@pxref{Init File}):
329(@pxref{Init File}):
330 342
331@example 343@example
332(put 'view-lossage 'isearch-scroll t) 344(put 'view-lossage 'isearch-scroll t)
@@ -359,33 +371,9 @@ wrap around, going from the last page to the first page or vice versa.
359When the current match is on a history element, that history element 371When the current match is on a history element, that history element
360is pulled into the minibuffer. If you exit the incremental search 372is pulled into the minibuffer. If you exit the incremental search
361normally (e.g. by typing @key{RET}), it remains in the minibuffer 373normally (e.g. by typing @key{RET}), it remains in the minibuffer
362afterwards. Cancelling the search, with @kbd{C-g}, restores the 374afterwards. Canceling the search, with @kbd{C-g}, restores the
363contents of the minibuffer when you began the search. 375contents of the minibuffer when you began the search.
364 376
365@node Slow Isearch
366@subsection Slow Terminal Incremental Search
367
368 Incremental search on a slow terminal uses a modified style of display
369that is designed to take less time. Instead of redisplaying the buffer at
370each place the search gets to, it creates a new single-line window and uses
371that to display the line that the search has found. The single-line window
372comes into play as soon as point moves outside of the text that is already
373on the screen.
374
375 When you terminate the search, the single-line window is removed.
376Emacs then redisplays the window in which the search was done, to show
377its new position of point.
378
379@vindex search-slow-speed
380 The slow terminal style of display is used when the terminal baud rate is
381less than or equal to the value of the variable @code{search-slow-speed},
382initially 1200. See also the discussion of the variable @code{baud-rate}
383(@pxref{baud-rate,, Customization of Display}).
384
385@vindex search-slow-window-lines
386 The number of lines to use in slow terminal search display is controlled
387by the variable @code{search-slow-window-lines}. Its normal value is 1.
388
389@node Nonincremental Search 377@node Nonincremental Search
390@section Nonincremental Search 378@section Nonincremental Search
391@cindex nonincremental search 379@cindex nonincremental search
@@ -405,18 +393,14 @@ This enters the minibuffer to read the search string; terminate the
405string with @key{RET}, and then the search takes place. If the string 393string with @key{RET}, and then the search takes place. If the string
406is not found, the search command signals an error. 394is not found, the search command signals an error.
407 395
408 When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental
409search as usual. That command is specially programmed to invoke
410nonincremental search, @code{search-forward}, if the string you
411specify is empty. (Such an empty argument would otherwise be
412useless.) @kbd{C-r @key{RET}} does likewise, for a reverse
413incremental search.
414
415@findex search-forward 396@findex search-forward
416@findex search-backward 397@findex search-backward
417 Forward and backward nonincremental searches are implemented by the 398 When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental
418commands @code{search-forward} and @code{search-backward}. These 399search as usual. That command is specially programmed to invoke the
419commands may be bound to other keys in the usual manner. 400command for nonincremental search, @code{search-forward}, if the
401string you specify is empty. (Such an empty argument would otherwise
402be useless.) @kbd{C-r @key{RET}} does likewise, invoking the command
403@code{search-backward}.
420 404
421@node Word Search 405@node Word Search
422@section Word Search 406@section Word Search
@@ -476,7 +460,7 @@ apply to the lazy highlight, which always matches whole words.
476that denotes a class of alternative strings to match. GNU Emacs 460that denotes a class of alternative strings to match. GNU Emacs
477provides both incremental and nonincremental ways to search for a 461provides both incremental and nonincremental ways to search for a
478match for a regexp. The syntax of regular expressions is explained in 462match for a regexp. The syntax of regular expressions is explained in
479the following section. 463the next section.
480 464
481@table @kbd 465@table @kbd
482@item C-M-s 466@item C-M-s
@@ -531,7 +515,7 @@ starting position. These search methods are not mirror images.
531 515
532@findex re-search-forward 516@findex re-search-forward
533@findex re-search-backward 517@findex re-search-backward
534 Nonincremental search for a regexp is done by the functions 518 Nonincremental search for a regexp is done with the commands
535@code{re-search-forward} and @code{re-search-backward}. You can 519@code{re-search-forward} and @code{re-search-backward}. You can
536invoke these with @kbd{M-x}, or by way of incremental regexp search 520invoke these with @kbd{M-x}, or by way of incremental regexp search
537with @kbd{C-M-s @key{RET}} and @kbd{C-M-r @key{RET}}. 521with @kbd{C-M-s @key{RET}} and @kbd{C-M-r @key{RET}}.
@@ -941,9 +925,9 @@ close-brackets, quotes, or parentheses, repeated zero or more times.
941 Searches in Emacs normally ignore the case of the text they are 925 Searches in Emacs normally ignore the case of the text they are
942searching through, if you specify the text in lower case. Thus, if 926searching through, if you specify the text in lower case. Thus, if
943you specify searching for @samp{foo}, then @samp{Foo} and @samp{foo} 927you specify searching for @samp{foo}, then @samp{Foo} and @samp{foo}
944are also considered a match. Regexps, and in particular character 928also match. Regexps, and in particular character sets, behave
945sets, are included: @samp{[ab]} would match @samp{a} or @samp{A} or 929likewise: @samp{[ab]} matches @samp{a} or @samp{A} or @samp{b} or
946@samp{b} or @samp{B}.@refill 930@samp{B}.@refill
947 931
948 An upper-case letter anywhere in the incremental search string makes 932 An upper-case letter anywhere in the incremental search string makes
949the search case-sensitive. Thus, searching for @samp{Foo} does not find 933the search case-sensitive. Thus, searching for @samp{Foo} does not find
@@ -985,8 +969,8 @@ command, there is @kbd{M-%} (@code{query-replace}), which presents
985each occurrence of the pattern and asks you whether to replace it. 969each occurrence of the pattern and asks you whether to replace it.
986 970
987 The replace commands normally operate on the text from point to the 971 The replace commands normally operate on the text from point to the
988end of the buffer. When the mark is active, they operate on the 972end of the buffer. When the region is active, they operate on it
989region instead (@pxref{Mark}). The basic replace commands replace one 973instead (@pxref{Mark}). The basic replace commands replace one
990@dfn{search string} (or regexp) with one @dfn{replacement string}. It 974@dfn{search string} (or regexp) with one @dfn{replacement string}. It
991is possible to perform several replacements in parallel, using the 975is possible to perform several replacements in parallel, using the
992command @code{expand-region-abbrevs} (@pxref{Expanding Abbrevs}). 976command @code{expand-region-abbrevs} (@pxref{Expanding Abbrevs}).
@@ -1023,7 +1007,7 @@ activating the mark; use @kbd{C-u C-@key{SPC}} to move back there.
1023@xref{Mark Ring}. 1007@xref{Mark Ring}.
1024 1008
1025 A prefix argument restricts replacement to matches that are 1009 A prefix argument restricts replacement to matches that are
1026surrounded by word boundaries. The argument's value doesn't matter. 1010surrounded by word boundaries.
1027 1011
1028 @xref{Replacement and Case}, for details about case-sensitivity in 1012 @xref{Replacement and Case}, for details about case-sensitivity in
1029replace commands. 1013replace commands.
@@ -1153,10 +1137,8 @@ replacement is done without case conversion.
1153 1137
1154@table @kbd 1138@table @kbd
1155@item M-% @var{string} @key{RET} @var{newstring} @key{RET} 1139@item M-% @var{string} @key{RET} @var{newstring} @key{RET}
1156@itemx M-x query-replace @key{RET} @var{string} @key{RET} @var{newstring} @key{RET}
1157Replace some occurrences of @var{string} with @var{newstring}. 1140Replace some occurrences of @var{string} with @var{newstring}.
1158@item C-M-% @var{regexp} @key{RET} @var{newstring} @key{RET} 1141@item C-M-% @var{regexp} @key{RET} @var{newstring} @key{RET}
1159@itemx M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} @var{newstring} @key{RET}
1160Replace some matches for @var{regexp} with @var{newstring}. 1142Replace some matches for @var{regexp} with @var{newstring}.
1161@end table 1143@end table
1162 1144
@@ -1169,7 +1151,7 @@ occurrence and asks you whether to replace it. Aside from querying,
1169@code{query-replace} works just like @code{replace-string} 1151@code{query-replace} works just like @code{replace-string}
1170(@pxref{Unconditional Replace}). In particular, it preserves case 1152(@pxref{Unconditional Replace}). In particular, it preserves case
1171provided @code{case-replace} is non-@code{nil}, as it normally is 1153provided @code{case-replace} is non-@code{nil}, as it normally is
1172(@pxref{Replacement and Case}). A numeric argument means consider 1154(@pxref{Replacement and Case}). A numeric argument means to consider
1173only occurrences that are bounded by word-delimiter characters. 1155only occurrences that are bounded by word-delimiter characters.
1174 1156
1175@kindex C-M-% 1157@kindex C-M-%
@@ -1182,7 +1164,7 @@ like @code{query-replace}.
1182 These commands highlight the current match using the face 1164 These commands highlight the current match using the face
1183@code{query-replace}. They highlight other matches using 1165@code{query-replace}. They highlight other matches using
1184@code{lazy-highlight} just like incremental search (@pxref{Incremental 1166@code{lazy-highlight} just like incremental search (@pxref{Incremental
1185Search}). By default, @code{query-replace-regexp} will show 1167Search}). By default, @code{query-replace-regexp} will show the
1186substituted replacement string for the current match in the 1168substituted replacement string for the current match in the
1187minibuffer. If you want to keep special sequences @samp{\&} and 1169minibuffer. If you want to keep special sequences @samp{\&} and
1188@samp{\@var{n}} unexpanded, customize 1170@samp{\@var{n}} unexpanded, customize
@@ -1315,6 +1297,8 @@ matching that regexp.
1315This command is just like @code{multi-isearch-buffers}, except it 1297This command is just like @code{multi-isearch-buffers}, except it
1316performs an incremental regexp search. 1298performs an incremental regexp search.
1317 1299
1300@cindex Occur mode
1301@cindex mode, Occur
1318@item M-x occur 1302@item M-x occur
1319Prompt for a regexp, and display a list showing each line in the 1303Prompt for a regexp, and display a list showing each line in the
1320buffer that contains a match for it. To limit the search to part of 1304buffer that contains a match for it. To limit the search to part of
@@ -1325,16 +1309,22 @@ displayed before and after each matching line.
1325@kindex RET @r{(Occur mode)} 1309@kindex RET @r{(Occur mode)}
1326@kindex o @r{(Occur mode)} 1310@kindex o @r{(Occur mode)}
1327@kindex C-o @r{(Occur mode)} 1311@kindex C-o @r{(Occur mode)}
1328The buffer @samp{*Occur*} containing the output serves as a menu for 1312In the @samp{*Occur*} buffer, you can click on each entry, or move
1329finding the occurrences in their original context. Click 1313point there and type @key{RET}, to visit the corresponding position in
1330@kbd{Mouse-2} on an occurrence listed in @samp{*Occur*}, or position 1314the buffer that was searched. @kbd{o} and @kbd{C-o} display the match
1331point there and type @key{RET}; this switches to the buffer that was 1315in another window; @kbd{C-o} does not select it. Alternatively, you
1332searched and moves point to the original of the chosen occurrence. 1316can use the @kbd{C-x `} (@code{next-error}) command to visit the
1333@kbd{o} and @kbd{C-o} display the match in another window; @kbd{C-o} 1317occurrences one by one (@pxref{Compilation Mode}).
1334does not select it. 1318
1335 1319@cindex Occur Edit mode
1336After using @kbd{M-x occur}, you can use @code{next-error} to visit 1320@cindex mode, Occur Edit
1337the occurrences found, one by one. @ref{Compilation Mode}. 1321Typing @kbd{e} in the @samp{*Occur*} buffer switches to Occur Edit
1322mode, in which edits made to the entries are also applied to the text
1323in the originating buffer. Type @kbd{C-c C-c} to return to Occur
1324mode.
1325
1326The command @kbd{M-x list-matching-lines} is a synonym for @kbd{M-x
1327occur}.
1338 1328
1339@kindex M-s o 1329@kindex M-s o
1340@item M-s o 1330@item M-s o
@@ -1342,9 +1332,6 @@ Run @code{occur} using the search string of the last incremental
1342string search. You can also run @kbd{M-s o} when an incremental 1332string search. You can also run @kbd{M-s o} when an incremental
1343search is active; this uses the current search string. 1333search is active; this uses the current search string.
1344 1334
1345@item M-x list-matching-lines
1346Synonym for @kbd{M-x occur}.
1347
1348@item M-x multi-occur 1335@item M-x multi-occur
1349This command is just like @code{occur}, except it is able to search 1336This command is just like @code{occur}, except it is able to search
1350through multiple buffers. It asks you to specify the buffer names one 1337through multiple buffers. It asks you to specify the buffer names one
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index dc92e4a519c..600d0b07818 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -343,8 +343,8 @@ details.
343additionally select the displaying window so that you can begin 343additionally select the displaying window so that you can begin
344editing its buffer. The command @kbd{C-x `} (@code{next-error}) is 344editing its buffer. The command @kbd{C-x `} (@code{next-error}) is
345one example (@pxref{Compilation Mode}). Such commands work by calling 345one example (@pxref{Compilation Mode}). Such commands work by calling
346@code{pop-to-buffer} internally. @xref{Displaying Buffers,,Displaying 346@code{pop-to-buffer} internally. @xref{Switching Buffers,,Switching
347Buffers in Windows, elisp, The Emacs Lisp Reference Manual}. 347to a Buffer in a Window, elisp, The Emacs Lisp Reference Manual}.
348 348
349 Commands with names ending in @code{-other-window} behave like 349 Commands with names ending in @code{-other-window} behave like
350@code{display-buffer}, except that they never display in the selected 350@code{display-buffer}, except that they never display in the selected
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 345e69e6989..490280dae29 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,7 @@
12011-10-18 Chong Yidong <cyd@gnu.org>
2
3 * display.texi (Glyphless Chars): New node.
4
12011-10-13 Chong Yidong <cyd@stupidchicken.com> 52011-10-13 Chong Yidong <cyd@stupidchicken.com>
2 6
3 * text.texi (Yanking): Document yank-excluded-properties. 7 * text.texi (Yanking): Document yank-excluded-properties.
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 18cb93557e9..034d92f78c3 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -36,6 +36,7 @@ that Emacs presents to the user.
36* Window Systems:: Which window system is being used. 36* Window Systems:: Which window system is being used.
37* Bidirectional Display:: Display of bidirectional scripts, such as 37* Bidirectional Display:: Display of bidirectional scripts, such as
38 Arabic and Farsi. 38 Arabic and Farsi.
39* Glyphless Chars:: How glyphless characters are drawn.
39@end menu 40@end menu
40 41
41@node Refresh Screen 42@node Refresh Screen
@@ -6242,3 +6243,96 @@ affect all Emacs frames and windows.
6242appropriate mirrored character in the reordered text. Lisp programs 6243appropriate mirrored character in the reordered text. Lisp programs
6243can affect the mirrored display by changing this property. Again, any 6244can affect the mirrored display by changing this property. Again, any
6244such changes affect all of Emacs display. 6245such changes affect all of Emacs display.
6246
6247@node Glyphless Chars
6248@section Glyphless Character Display
6249@cindex glyphless characters
6250
6251 @dfn{Glyphless characters} are not displayed in the usual way when
6252they appear in a buffer, but in some special way (e.g. as a box
6253containing a hexadecimal code). These include characters that cannot
6254be displayed with any available font (on a graphical display), or that
6255cannot be encoded by the terminal's coding system (on a text-only
6256terminal). Specific characters can also be defined to be glyphless.
6257
6258@defvar glyphless-char-display
6259The value of this variable is a char-table that defines glyphless
6260characters and how they are displayed. If an entry is @code{nil}, the
6261corresponding character is displayed in its usual way. Otherwise, an
6262entry should be one of the following display methods:
6263
6264@table @asis
6265@item @code{zero-width}
6266Don't display the character.
6267
6268@item @code{thin-space}
6269Display a thin space, 1-pixel wide on graphical displays, or
62701-character wide on text-only terminals.
6271
6272@item @code{empty-box}
6273Display an empty box.
6274
6275@item @code{hex-code}
6276Display a box containing the Unicode codepoint of the character, in
6277hexadecimal notation.
6278
6279@item an @acronym{ASCII} string
6280Display a box containing that string.
6281@end table
6282
6283@noindent
6284Except for @code{zero-width}, these methods display using the
6285@code{glyphless-char} face.
6286
6287An entry can also be a cons cell @code{(@var{graphical}
6288. @var{text})}, where @var{graphical} and @var{text} are the display
6289methods on graphical displays and text-only terminals respectively.
6290
6291The char-table has one extra slot, which determines how to display any
6292character that cannot be displayed with any available font, or cannot
6293be encoded by the terminal's coding system. Its value should be one
6294of the above display methods, except @code{zero-width} or a cons cell.
6295@end defvar
6296
6297@defopt glyphless-char-display-control
6298This user option provides a convenient way to set
6299@code{glyphless-char-display} for groups of similar characters. It
6300takes effect via a custom @code{:set} function (@pxref{Variable
6301Definitions}), which update @code{glyphless-char-display}.
6302
6303Its value should be an alist of elements @code{(@var{group}
6304. @var{method})}, where @var{group} is a symbol specifying a group of
6305characters, and @var{method} is a symbol specifying how to display
6306them.
6307
6308@var{group} should be one of the following:
6309
6310@table @code
6311@item c0-control
6312@acronym{ASCII} control characters @code{U+0000} to @code{U+001F},
6313excluding the newline and tab characters (normally displayed as escape
6314sequences like @samp{^A}; @pxref{Text Display,, How Text Is Displayed,
6315emacs, The GNU Emacs Manual}).
6316
6317@item c1-control
6318Non-@acronym{ASCII}, non-printing characters @code{U+0080} to
6319@code{U+009F} (normally displayed as octal escape sequences like
6320@samp{\230}).
6321
6322@item format-control
6323Characters of Unicode General Category `Cf', such as @samp{U+200E}
6324(Left-to-Right Mark), but excluding characters that have graphic
6325images, such as @samp{U+00AD} (Soft Hyphen).
6326
6327@item no-font
6328Characters for there is no suitable font, or which cannot be encoded
6329by the terminal's coding system.
6330@end table
6331
6332@c FIXME: this can also be `acronym', but that's not currently
6333@c completely implemented; it applies only to the format-control
6334@c group, and only works if the acronym is in `char-acronym-table'.
6335The @var{method} symbol should be one of @code{zero-width},
6336@code{thin-space}, @code{empty-box}, or @code{hex-code}. These have
6337the same meanings as in @code{glyphless-char-display}, above.
6338@end defopt
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 8350c9b7080..cefa917a4e1 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -1278,6 +1278,9 @@ Emacs Display
1278* Display Tables:: How to specify other conventions. 1278* Display Tables:: How to specify other conventions.
1279* Beeping:: Audible signal to the user. 1279* Beeping:: Audible signal to the user.
1280* Window Systems:: Which window system is being used. 1280* Window Systems:: Which window system is being used.
1281* Bidirectional Display:: Display of bidirectional scripts, such as
1282 Arabic and Farsi.
1283* Glyphless Chars:: How glyphless characters are drawn.
1281 1284
1282The Echo Area 1285The Echo Area
1283 1286
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 0fa23d6412c..914ba5b1fd8 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -1299,6 +1299,9 @@ Emacs Display
1299* Display Tables:: How to specify other conventions. 1299* Display Tables:: How to specify other conventions.
1300* Beeping:: Audible signal to the user. 1300* Beeping:: Audible signal to the user.
1301* Window Systems:: Which window system is being used. 1301* Window Systems:: Which window system is being used.
1302* Bidirectional Display:: Display of bidirectional scripts, such as
1303 Arabic and Farsi.
1304* Glyphless Chars:: How glyphless characters are drawn.
1302 1305
1303The Echo Area 1306The Echo Area
1304 1307
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 2469a742900..1f84b267c9b 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -1298,6 +1298,9 @@ Emacs Display
1298* Display Tables:: How to specify other conventions. 1298* Display Tables:: How to specify other conventions.
1299* Beeping:: Audible signal to the user. 1299* Beeping:: Audible signal to the user.
1300* Window Systems:: Which window system is being used. 1300* Window Systems:: Which window system is being used.
1301* Bidirectional Display:: Display of bidirectional scripts, such as
1302 Arabic and Farsi.
1303* Glyphless Chars:: How glyphless characters are drawn.
1301 1304
1302The Echo Area 1305The Echo Area
1303 1306
diff --git a/etc/NEWS b/etc/NEWS
index d8d0741f928..68e5720330d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -51,6 +51,8 @@ This is not a new feature; only the configure flag is new.
51--- 51---
52** There is a new configure option --with-wide-int. 52** There is a new configure option --with-wide-int.
53With 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.
54On 32-bit hosts, this raises the limit on buffer sizes from about 512 MiB
55to about 2 GiB.
54 56
55--- 57---
56** New translation of the Emacs Tutorial in Hebrew is available. 58** New translation of the Emacs Tutorial in Hebrew is available.
@@ -107,9 +109,9 @@ and pops down the *Completions* buffer accordingly.
107*** Completion can cycle, depending on completion-cycle-threshold. 109*** Completion can cycle, depending on completion-cycle-threshold.
108+++ 110+++
109*** New completion style `substring'. 111*** New completion style `substring'.
110 112+++
111*** Completion style can be set per-category `completion-category-overrides'. 113*** Completion style can be set per-category `completion-category-overrides'.
112 114+++
113*** Completion of buffers now uses substring completion by default. 115*** Completion of buffers now uses substring completion by default.
114 116
115** Mail changes 117** Mail changes
@@ -223,6 +225,10 @@ cannot be encoded by the `terminal-coding-system'.
223--- 225---
224*** New input methods for Farsi: farsi and farsi-translit. 226*** New input methods for Farsi: farsi and farsi-translit.
225 227
228+++
229*** `nobreak-char-display' now also highlights Unicode hyphen chars
230(U+2010 and U+2011).
231
226** Improved GTK integration 232** Improved GTK integration
227 233
228*** GTK scroll-bars are now placed on the right by default. 234*** GTK scroll-bars are now placed on the right by default.
@@ -236,10 +242,10 @@ is taken from the desktop settings.
236The frame-parameter tool-bar-position controls this. It takes the values 242The frame-parameter tool-bar-position controls this. It takes the values
237top, left, right or bottom. The Options => Show/Hide menu has entries 243top, left, right or bottom. The Options => Show/Hide menu has entries
238for this. 244for this.
239 245+++
240*** The colors for selected text (the region face) are taken from the GTK 246*** The colors for selected text (the `region' face) are taken from
241theme when Emacs is built with GTK. 247the GTK theme when Emacs is built with GTK.
242 248+++
243*** Emacs uses GTK tooltips by default if built with GTK. You can turn that 249*** Emacs uses GTK tooltips by default if built with GTK. You can turn that
244off by customizing x-gtk-use-system-tooltips. 250off by customizing x-gtk-use-system-tooltips.
245 251
@@ -266,7 +272,7 @@ context in their return values.
266 272
267*** The new functions file-selinux-context and set-file-selinux-context 273*** The new functions file-selinux-context and set-file-selinux-context
268get and set the SELinux context of a file. 274get and set the SELinux context of a file.
269 275---
270*** Tramp offers handlers for file-selinux-context and set-file-selinux-context 276*** Tramp offers handlers for file-selinux-context and set-file-selinux-context
271for remote machines which support SELinux. 277for remote machines which support SELinux.
272 278
@@ -442,7 +448,7 @@ pops up *Messages*" feature, which can now easily be changed.
442+++ 448+++
443*** C-y in Isearch is now bound to isearch-yank-kill, instead of 449*** C-y in Isearch is now bound to isearch-yank-kill, instead of
444isearch-yank-line. 450isearch-yank-line.
445--- 451+++
446*** M-y in Isearch is now bound to isearch-yank-pop, instead of 452*** M-y in Isearch is now bound to isearch-yank-pop, instead of
447isearch-yank-kill. 453isearch-yank-kill.
448+++ 454+++
@@ -454,6 +460,7 @@ isearch-yank-kill.
454*** `count-lines-region' is now an alias for `count-words-region', 460*** `count-lines-region' is now an alias for `count-words-region',
455bound to M-=, which shows the number of lines, words, and characters. 461bound to M-=, which shows the number of lines, words, and characters.
456 462
463+++
457** The default value of `backup-by-copying-when-mismatch' is now t. 464** The default value of `backup-by-copying-when-mismatch' is now t.
458 465
459+++ 466+++
@@ -554,6 +561,7 @@ updates later on, and Emacs appears to be unable to keep up.
554 561
555* Changes in Specialized Modes and Packages in Emacs 24.1 562* Changes in Specialized Modes and Packages in Emacs 24.1
556 563
564+++
557** Archive Mode has basic support for browsing and updating 7z archives. 565** Archive Mode has basic support for browsing and updating 7z archives.
558 566
559** browse-url has a new variable `browse-url-mailto-function' 567** browse-url has a new variable `browse-url-mailto-function'
@@ -798,12 +806,12 @@ additional details about each column.
798*** latex-electric-env-pair-mode keeps \begin..\end matched on the fly. 806*** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
799 807
800** Tramp 808** Tramp
801 809---
802*** There exists a new inline access method "ksu" (kerberized su). 810*** There exists a new inline access method "ksu" (kerberized su).
803 811---
804*** The following access methods are discontinued: "ssh1_old", 812*** The following access methods are discontinued: "ssh1_old",
805"ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish". 813"ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish".
806 814---
807*** The option `ange-ftp-binary-file-name-regexp' has changed its 815*** The option `ange-ftp-binary-file-name-regexp' has changed its
808default value to "". 816default value to "".
809 817
@@ -844,6 +852,15 @@ binding `log-view-expanded-log-entry-function' to a suitable function.
844*** New command `vc-ediff' allows visual comparison of two revisions 852*** New command `vc-ediff' allows visual comparison of two revisions
845of a file similar to `vc-diff', but using ediff backend. 853of a file similar to `vc-diff', but using ediff backend.
846 854
855+++
856*** The option `vc-initial-comment' was removed in Emacs 23.2, but
857this was not advertised at the time.
858
859+++
860*** `vc-toggle-read-only' is an obsolete alias for `toggle-read-only'.
861Since Emacs 23, it has done the same thing as `toggle-read-only', but
862this was not advertised at the time.
863
847** FIXME: xdg-open for browse-url and reportbug, 2010/08. 864** FIXME: xdg-open for browse-url and reportbug, 2010/08.
848 865
849** Obsolete modes 866** Obsolete modes
@@ -873,6 +890,7 @@ They are superseded by shift-select-mode enabled by default in 23.1.
873 890
874* New Modes and Packages in Emacs 24.1 891* New Modes and Packages in Emacs 24.1
875 892
893+++
876** Occur Edit mode applies edits made in *Occur* buffers to the 894** Occur Edit mode applies edits made in *Occur* buffers to the
877original buffers. It is bound to "e" in Occur mode. 895original buffers. It is bound to "e" in Occur mode.
878 896
@@ -1146,6 +1164,7 @@ combined with minibuffer-local-must-match-map.
1146*** New variable `completing-read-function' allows overriding the 1164*** New variable `completing-read-function' allows overriding the
1147behavior of `completing-read'. 1165behavior of `completing-read'.
1148 1166
1167+++
1149** `glyphless-char-display' can now distinguish between graphical and 1168** `glyphless-char-display' can now distinguish between graphical and
1150text terminal display, via a char-table entry that is a cons cell. 1169text terminal display, via a char-table entry that is a cons cell.
1151 1170
@@ -1311,6 +1330,8 @@ Use `filter-buffer-substring-functions' instead.
1311*** `byte-compile-disable-print-circle' is obsolete. 1330*** `byte-compile-disable-print-circle' is obsolete.
1312 1331
1313*** `deferred-action-list' and `deferred-action-function' are obsolete. 1332*** `deferred-action-list' and `deferred-action-function' are obsolete.
1333+++
1334*** `font-lock-maximum-size' is obsolete.
1314 1335
1315 1336
1316* Changes in Emacs 24.1 on non-free operating systems 1337* Changes in Emacs 24.1 on non-free operating systems
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 9e473156a78..e85972f0bfd 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -171,6 +171,14 @@ optimization. To do this, configure Emacs with
171 171
172 CFLAGS="-g -O2 -fno-optimize-sibling-calls" ./configure 172 CFLAGS="-g -O2 -fno-optimize-sibling-calls" ./configure
173 173
174** Emacs compiled with GCC 4.6.1 crashes on MS-Windows when C-g is pressed
175
176This is known to happen when Emacs is compiled with MinGW GCC 4.6.1
177with the -O2 option (which is the default in the Windows build). The
178reason is a bug in MinGW GCC 4.6.1; to work around, either add the
179`-fno-omit-frame-pointer' switch to GCC or compile without
180optimizations (`--no-opt' switch to the configure.bat script).
181
174** Emacs crashes in x-popup-dialog. 182** Emacs crashes in x-popup-dialog.
175 183
176This can happen if the dialog widget cannot find the font it wants to 184This can happen if the dialog widget cannot find the font it wants to
diff --git a/etc/themes/deeper-blue-theme.el b/etc/themes/deeper-blue-theme.el
index 5c93e84d078..0fbd9496969 100644
--- a/etc/themes/deeper-blue-theme.el
+++ b/etc/themes/deeper-blue-theme.el
@@ -37,7 +37,7 @@
37 `(compilation-line-number ((,class (:foreground "LightGreen")))) 37 `(compilation-line-number ((,class (:foreground "LightGreen"))))
38 `(cperl-array-face ((,class (:foreground "yellow2")))) 38 `(cperl-array-face ((,class (:foreground "yellow2"))))
39 `(cperl-hash-face ((,class (:foreground "coral1")))) 39 `(cperl-hash-face ((,class (:foreground "coral1"))))
40 `(cursor ((,class (:background "green" :foreground "black")))) 40 `(cursor ((,class (:background "green"))))
41 `(default ((,class (:background "#181a26" :foreground "gray80")))) 41 `(default ((,class (:background "#181a26" :foreground "gray80"))))
42 `(diff-added ((,class (nil)))) 42 `(diff-added ((,class (nil))))
43 `(diff-changed ((,class (nil)))) 43 `(diff-changed ((,class (nil))))
diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el
index 3c260118b26..80215e564f5 100644
--- a/etc/themes/dichromacy-theme.el
+++ b/etc/themes/dichromacy-theme.el
@@ -42,7 +42,7 @@ Ansi-Color faces are included.")
42 (custom-theme-set-faces 42 (custom-theme-set-faces
43 'dichromacy 43 'dichromacy
44 `(default ((,class (:foreground "black" :background "white")))) 44 `(default ((,class (:foreground "black" :background "white"))))
45 `(cursor ((,class (:foreground "white" :background "black")))) 45 `(cursor ((,class (:background "black"))))
46 ;; Highlighting faces 46 ;; Highlighting faces
47 `(fringe ((,class (:background "#f7f7f7")))) 47 `(fringe ((,class (:background "#f7f7f7"))))
48 `(highlight ((,class (:foreground ,blue :background "#e5e5e5")))) 48 `(highlight ((,class (:foreground ,blue :background "#e5e5e5"))))
diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el
index ab4b2bc6191..6e38a43a4f0 100644
--- a/etc/themes/misterioso-theme.el
+++ b/etc/themes/misterioso-theme.el
@@ -33,7 +33,7 @@
33 (:background "#2d3743" :foreground "#e1e1e0")) 33 (:background "#2d3743" :foreground "#e1e1e0"))
34 (,class 34 (,class
35 (:background "#3a3a3a" :foreground "#e1e1e0")))) 35 (:background "#3a3a3a" :foreground "#e1e1e0"))))
36 `(cursor ((,class (:background "#415160" :foreground "#415160")))) 36 `(cursor ((,class (:background "#415160"))))
37 ;; Highlighting faces 37 ;; Highlighting faces
38 `(fringe ((,class (:background "#2e3748")))) 38 `(fringe ((,class (:background "#2e3748"))))
39 `(highlight ((,class (:background "#338f86" :foreground "#e1e1e0")))) 39 `(highlight ((,class (:background "#338f86" :foreground "#e1e1e0"))))
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index 8f91d35e6a1..ae45966b347 100644
--- a/etc/themes/tango-dark-theme.el
+++ b/etc/themes/tango-dark-theme.el
@@ -56,7 +56,7 @@ Semantic, and Ansi-Color faces are included.")
56 (:foreground ,alum-1 :background "#222")) 56 (:foreground ,alum-1 :background "#222"))
57 (,class 57 (,class
58 (:foreground ,alum-1 :background "black")))) 58 (:foreground ,alum-1 :background "black"))))
59 `(cursor ((,class (:foreground ,alum-6 :background ,butter-1)))) 59 `(cursor ((,class (:background ,butter-1))))
60 ;; Highlighting faces 60 ;; Highlighting faces
61 `(fringe ((,class (:background ,alum-7)))) 61 `(fringe ((,class (:background ,alum-7))))
62 `(highlight ((,class (:foreground ,alum-6 :background ,butter-2)))) 62 `(highlight ((,class (:foreground ,alum-6 :background ,butter-2))))
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index f504d764277..b46bd677f21 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -49,7 +49,7 @@ Semantic, and Ansi-Color faces are included.")
49 (custom-theme-set-faces 49 (custom-theme-set-faces
50 'tango 50 'tango
51 `(default ((,class (:foreground ,alum-6 :background ,alum-1)))) 51 `(default ((,class (:foreground ,alum-6 :background ,alum-1))))
52 `(cursor ((,class (:foreground ,alum-1 :background ,blue-3)))) 52 `(cursor ((,class (:background ,blue-3))))
53 ;; Highlighting faces 53 ;; Highlighting faces
54 `(fringe ((,class (:background ,alum-2)))) 54 `(fringe ((,class (:background ,alum-2))))
55 `(highlight ((,class (:background ,alum-3)))) 55 `(highlight ((,class (:background ,alum-3))))
diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el
index 63ebc247b9d..50db2661a99 100644
--- a/etc/themes/wheatgrass-theme.el
+++ b/etc/themes/wheatgrass-theme.el
@@ -29,7 +29,7 @@ of green, brown, and blue.")
29 (custom-theme-set-faces 29 (custom-theme-set-faces
30 'wheatgrass 30 'wheatgrass
31 `(default ((,class (:foreground "wheat" :background "black")))) 31 `(default ((,class (:foreground "wheat" :background "black"))))
32 `(cursor ((,class (:foreground "black" :background "thistle")))) 32 `(cursor ((,class (:background "thistle"))))
33 `(error ((,class (:foreground "salmon1")))) 33 `(error ((,class (:foreground "salmon1"))))
34 `(warning ((,class (:foreground "orange")))) 34 `(warning ((,class (:foreground "orange"))))
35 `(success ((,class (:foreground "yellow green")))) 35 `(success ((,class (:foreground "yellow green"))))
diff --git a/etc/themes/whiteboard-theme.el b/etc/themes/whiteboard-theme.el
index e0fa7ff7ff7..e5c808df68d 100644
--- a/etc/themes/whiteboard-theme.el
+++ b/etc/themes/whiteboard-theme.el
@@ -38,7 +38,7 @@
38 `(cperl-array-face ((,class (:foreground "SlateBlue3")))) 38 `(cperl-array-face ((,class (:foreground "SlateBlue3"))))
39 `(cperl-hash-face ((,class (:foreground "turquoise3")))) 39 `(cperl-hash-face ((,class (:foreground "turquoise3"))))
40 `(cperl-nonoverridable-face ((,class (:foreground "orchid3")))) 40 `(cperl-nonoverridable-face ((,class (:foreground "orchid3"))))
41 `(cursor ((,class (:background "Green4" :foreground "gainsboro")))) 41 `(cursor ((,class (:background "Green4"))))
42 `(default ((,class (:background "whitesmoke" :foreground "black")))) 42 `(default ((,class (:background "whitesmoke" :foreground "black"))))
43 `(dired-marked ((,class (:background "dodgerblue3" :foreground "white")))) 43 `(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
44 `(flymake-errline ((,class (:background nil :underline "red")))) 44 `(flymake-errline ((,class (:background nil :underline "red"))))
diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el
index 2aa64f894bf..6691b4a4016 100644
--- a/etc/themes/wombat-theme.el
+++ b/etc/themes/wombat-theme.el
@@ -31,7 +31,7 @@ are included.")
31 (custom-theme-set-faces 31 (custom-theme-set-faces
32 'wombat 32 'wombat
33 `(default ((,class (:background "#242424" :foreground "#f6f3e8")))) 33 `(default ((,class (:background "#242424" :foreground "#f6f3e8"))))
34 `(cursor ((,class (:background "#656565" :foreground "#f6f3e8")))) 34 `(cursor ((,class (:background "#656565"))))
35 ;; Highlighting faces 35 ;; Highlighting faces
36 `(fringe ((,class (:background "#303030")))) 36 `(fringe ((,class (:background "#303030"))))
37 `(highlight ((,class (:background "#454545" :foreground "#ffffff" 37 `(highlight ((,class (:background "#454545" :foreground "#ffffff"
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index abae693d0c8..09e2e7dc1de 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,278 @@
12011-10-23 Chong Yidong <cyd@gnu.org>
2
3 * files.el (toggle-read-only): Remove obsolete comment about
4 version control.
5
6 * vc/vc-hooks.el (vc-toggle-read-only): Make it an obsolete alias
7 for toggle-read-only. Note that this hasn't called vc-next-action
8 since 2008-05-02, though it wasn't documented at the time.
9
10 * vc/ediff-init.el (ediff-toggle-read-only-function): Use
11 toggle-read-only.
12
132011-10-22 Alan Mackenzie <bug-cc-mode@gnu.org>
14
15 Fix bug #9560, sporadic wrong indentation; improve instrumentation
16 of c-parse-state.
17
18 * cc-engine.el (c-append-lower-brace-pair-to-state-cache): correct
19 faulty logical expression.
20 (c-parse-state-state, c-record-parse-state-state):
21 (c-replay-parse-state-state): New defvar/defuns.
22 (c-debug-parse-state): Use new functions.
23
242011-10-22 Martin Rudalics <rudalics@gmx.at>
25
26 * mouse.el (mouse-drag-line): Fix minibuffer resizing broken by
27 last fix. Use window-in-direction correctly.
28
292011-10-21 Chong Yidong <cyd@gnu.org>
30
31 * progmodes/idlwave.el (idlwave-mode):
32 * progmodes/vera-mode.el (vera-mode): No need to set
33 require-final-newline; that's done in prog-mode. Suggested by
34 Stefan Monnier.
35
362011-10-21 Martin Rudalics <rudalics@gmx.at>
37
38 * mouse.el (mouse-drag-window-above)
39 (mouse-drag-move-window-bottom, mouse-drag-move-window-top)
40 (mouse-drag-mode-line-1, mouse-drag-header-line)
41 (mouse-drag-vertical-line-rightward-window): Remove.
42 (mouse-drag-line): New function.
43 (mouse-drag-mode-line, mouse-drag-header-line)
44 (mouse-drag-vertical-line): Call mouse-drag-line.
45 * window.el (window-at-side-p, windows-at-side): New functions.
46
472011-10-21 Ulrich Mueller <ulm@gentoo.org>
48
49 * tar-mode.el (tar-grind-file-mode):
50 Fix handling of setuid/setgid, handle sticky bit. (Bug#9817)
51
522011-10-21 Chong Yidong <cyd@gnu.org>
53
54 * progmodes/idlwave.el (idlwave-mode):
55 * progmodes/vera-mode.el (vera-mode): Use
56 mode-require-final-newline.
57
582011-10-20 Glenn Morris <rgm@gnu.org>
59
60 * vc/vc.el (vc-next-action): Handle removed directories. (Bug#9781)
61
622011-10-20 Christoph Scholtes <cschol2112@googlemail.com>
63
64 * emulation/cua-base.el (cua-set-mark): Fix case of string.
65
662011-10-20 Chong Yidong <cyd@gnu.org>
67
68 * emulation/cua-base.el (cua-mode):
69 * mail/footnote.el (footnote-mode):
70 * mail/mailabbrev.el (mail-abbrevs-mode):
71 * net/xesam.el (xesam-minor-mode):
72 * progmodes/bug-reference.el (bug-reference-mode):
73 * progmodes/cap-words.el (capitalized-words-mode):
74 * progmodes/compile.el (compilation-minor-mode)
75 (compilation-shell-minor-mode):
76 * progmodes/gud.el (gud-tooltip-mode):
77 * progmodes/hideif.el (hide-ifdef-mode):
78 * progmodes/idlw-shell.el (idlwave-shell-electric-debug-mode):
79 * progmodes/subword.el (subword-mode):
80 * progmodes/vhdl-mode.el (vhdl-electric-mode, vhdl-stutter-mode):
81 * progmodes/which-func.el (which-function-mode):
82 * term/tvi970.el (tvi970-set-keypad-mode):
83 * term/vt100.el (vt100-wide-mode):
84 * textmodes/flyspell.el (flyspell-mode):
85 * textmodes/ispell.el (ispell-minor-mode):
86 * textmodes/nroff-mode.el (nroff-electric-mode):
87 * textmodes/paragraphs.el (use-hard-newlines):
88 * textmodes/refill.el (refill-mode):
89 * textmodes/reftex.el (reftex-mode):
90 * textmodes/rst.el (rst-minor-mode):
91 * textmodes/sgml-mode.el (html-autoview-mode)
92 (sgml-electric-tag-pair-mode):
93 * textmodes/tex-mode.el (latex-electric-env-pair-mode):
94 * vc/diff-mode.el (diff-auto-refine-mode, diff-minor-mode):
95 * emulation/crisp.el (crisp-mode):
96 * emacs-lisp/eldoc.el (eldoc-mode):
97 * emacs-lisp/checkdoc.el (checkdoc-minor-mode): Doc fixes for new
98 minor mode behavior.
99
1002011-10-19 Juri Linkov <juri@jurta.org>
101
102 * descr-text.el (describe-char): Add #x2010 and #x2011 to
103 the list of hard-coded chars with escape-glyph face.
104
1052011-10-19 Stefan Monnier <monnier@iro.umontreal.ca>
106
107 * vc/log-edit.el (log-edit-empty-buffer-p): Ignore empty headers.
108
1092011-10-19 Michael Albinus <michael.albinus@gmx.de>
110
111 * net/tramp.el (tramp-connectable-p): Make a stronger check on a
112 running process.
113
1142011-10-19 Glenn Morris <rgm@gnu.org>
115
116 * vc/vc-bzr.el (vc-bzr-after-dir-status):
117 Ignore ignored files. (Bug#9726)
118
1192011-10-19 Chong Yidong <cyd@gnu.org>
120
121 Doc fix for minor modes, stating that an omitted argument enables
122 the mode unconditionally when called from Lisp.
123
124 * abbrev.el (abbrev-mode):
125 * allout.el (allout-mode):
126 * autoinsert.el (auto-insert-mode):
127 * autoarg.el (autoarg-mode, autoarg-kp-mode):
128 * autorevert.el (auto-revert-mode, auto-revert-tail-mode)
129 (global-auto-revert-mode):
130 * battery.el (display-battery-mode):
131 * composite.el (global-auto-composition-mode)
132 (auto-composition-mode):
133 * delsel.el (delete-selection-mode):
134 * desktop.el (desktop-save-mode):
135 * dired-x.el (dired-omit-mode):
136 * dirtrack.el (dirtrack-mode):
137 * doc-view.el (doc-view-minor-mode):
138 * double.el (double-mode):
139 * electric.el (electric-indent-mode, electric-pair-mode):
140 * emacs-lock.el (emacs-lock-mode):
141 * epa-hook.el (auto-encryption-mode):
142 * follow.el (follow-mode):
143 * font-core.el (font-lock-mode):
144 * frame.el (auto-raise-mode, auto-lower-mode, blink-cursor-mode):
145 * help.el (temp-buffer-resize-mode):
146 * hilit-chg.el (highlight-changes-mode)
147 (highlight-changes-visible-mode):
148 * hi-lock.el (hi-lock-mode):
149 * hl-line.el (hl-line-mode, global-hl-line-mode):
150 * icomplete.el (icomplete-mode):
151 * ido.el (ido-everywhere):
152 * image-file.el (auto-image-file-mode):
153 * image-mode.el (image-minor-mode):
154 * iswitchb.el (iswitchb-mode):
155 * jka-cmpr-hook.el (auto-compression-mode):
156 * linum.el (linum-mode):
157 * longlines.el (longlines-mode):
158 * master.el (master-mode):
159 * mb-depth.el (minibuffer-depth-indicate-mode):
160 * menu-bar.el (menu-bar-mode):
161 * minibuf-eldef.el (minibuffer-electric-default-mode):
162 * mouse-sel.el (mouse-sel-mode):
163 * msb.el (msb-mode):
164 * mwheel.el (mouse-wheel-mode):
165 * outline.el (outline-minor-mode):
166 * paren.el (show-paren-mode):
167 * recentf.el (recentf-mode):
168 * reveal.el (reveal-mode, global-reveal-mode):
169 * rfn-eshadow.el (file-name-shadow-mode):
170 * ruler-mode.el (ruler-mode):
171 * savehist.el (savehist-mode):
172 * scroll-all.el (scroll-all-mode):
173 * scroll-bar.el (scroll-bar-mode):
174 * server.el (server-mode):
175 * shell.el (shell-dirtrack-mode):
176 * simple.el (auto-fill-mode, transient-mark-mode)
177 (visual-line-mode, overwrite-mode, binary-overwrite-mode)
178 (line-number-mode, column-number-mode, size-indication-mode)
179 (auto-save-mode, normal-erase-is-backspace-mode, visible-mode):
180 * strokes.el (strokes-mode):
181 * time.el (display-time-mode):
182 * t-mouse.el (gpm-mouse-mode):
183 * tool-bar.el (tool-bar-mode):
184 * tooltip.el (tooltip-mode):
185 * type-break.el (type-break-mode-line-message-mode)
186 (type-break-query-mode):
187 * view.el (view-mode):
188 * whitespace.el (whitespace-mode, whitespace-newline-mode)
189 (global-whitespace-mode, global-whitespace-newline-mode):
190 * xt-mouse.el (xterm-mouse-mode): Doc fix.
191
192 * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Fix
193 autogenerated docstring.
194
1952011-10-19 Juri Linkov <juri@jurta.org>
196
197 * net/browse-url.el (browse-url-can-use-xdg-open): Support LXDE
198 by checking environment variables "DESKTOP_SESSION" and
199 "XDG_CURRENT_DESKTOP". (Bug#9779)
200
2012011-10-19 Juri Linkov <juri@jurta.org>
202
203 * net/browse-url.el (browse-url-browser-function): Add "Chromium".
204 (browse-url-chromium-program, browse-url-chromium-arguments):
205 New defcustoms.
206 (browse-url-default-browser): Check for `browse-url-chromium' and
207 call `browse-url-chromium-program'.
208 (browse-url-chromium): New command. (Bug#9779)
209
2102011-10-18 Juanma Barranquero <lekktu@gmail.com>
211
212 * facemenu.el (list-colors-duplicates): On Windows, detect more
213 duplicates by assuming that only colors matching "^System" are
214 special "system colors". (Bug#9722)
215
2162011-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
217
218 * vc/log-edit.el (log-edit): Add "Author:" header to encourage people
219 to distinguish the author from the committer.
220
2212011-10-18 Michael Albinus <michael.albinus@gmx.de>
222
223 * net/tramp.el (tramp-file-name-handler): Load Tramp packages silently.
224
2252011-10-18 Jirka Kosek <jirka@kosek.cz> (tiny change)
226
227 * international/mule.el (sgml-html-meta-auto-coding-function):
228 Add support for detecting encoding in HTML5 specified only as
229 <meta charset="UTF-8">. Implementation just makes http-equiv and
230 content-type parts from HTML4 encoding string optional. (Bug#9716)
231
2322011-10-18 Glenn Morris <rgm@gnu.org>
233
234 * vc/vc.el (vc-initial-comment): Mark as obsolete. (Bug#9745)
235
2362011-10-18 Chong Yidong <cyd@gnu.org>
237
238 * faces.el (cursor): Doc fix.
239
2402011-10-17 Chong Yidong <cyd@gnu.org>
241
242 * font-lock.el (font-lock-maximum-size): Mark as obsolete.
243
2442011-10-17 Ryan Barrett <emacs@ryanb.org> (tiny change)
245
246 * dirtrack.el (dirtrack): Support shell buffers with path
247 prefixes, e.g. tramp-based remote shells. (Bug#9647)
248
2492011-10-17 Teodor Zlatanov <tzz@lifelogs.com>
250
251 * json.el: Bump version to 1.3 and note change in History.
252 (json-alist-p, json-plist-p): Rewrite to avoid recursion.
253
2542011-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
255
256 * comint.el (comint-insert-input, comint-send-input)
257 (comint-get-old-input-default, comint-backward-matching-input)
258 (comint-next-prompt): Use nil instead of `input' for field property of
259 past user input (bug#114).
260
261 * minibuffer.el (completion--replace): Inherit surrounding properties
262 (bug#114).
263 (minibuffer-complete-and-exit): Use it.
264
265 * comint.el (comint--table-subvert): Quote the all-completions output
266 (bug#9160).
267
2682011-10-17 Martin Rudalics <rudalics@gmx.at>
269
270 * ido.el (ido-default-buffer-method): Remove redundant :type entry.
271
272 * menu-bar.el (menu-bar-file-menu): Add entry for making new
273 window on right of selected. (Bug#9350) Reword other window
274 entries and separate them from frame entries.
275
12011-10-15 Glenn Morris <rgm@gnu.org> 2762011-10-15 Glenn Morris <rgm@gnu.org>
2 277
3 * emacs-lisp/ert.el (ert--explain-equal-rec, ert-select-tests): 278 * emacs-lisp/ert.el (ert--explain-equal-rec, ert-select-tests):
@@ -5,8 +280,8 @@
5 280
62011-10-15 Chong Yidong <cyd@stupidchicken.com> 2812011-10-15 Chong Yidong <cyd@stupidchicken.com>
7 282
8 * net/network-stream.el (network-stream-open-starttls): Improve 283 * net/network-stream.el (network-stream-open-starttls):
9 detection of failure due to lack of TLS support. 284 Improve detection of failure due to lack of TLS support.
10 285
11 * mail/sendmail.el (sendmail-query-once): Tweak prompt message, 286 * mail/sendmail.el (sendmail-query-once): Tweak prompt message,
12 putting the input text in front and in bold. 287 putting the input text in front and in bold.
@@ -405,8 +680,8 @@
405 680
406 * net/newst-reader.el (newsticker-html-renderer) 681 * net/newst-reader.el (newsticker-html-renderer)
407 (newsticker-show-news): Automatically 682 (newsticker-show-news): Automatically
408 load html rendering package if newsticker-html-renderer is 683 load html rendering package if newsticker-html-renderer is set.
409 set. Fixes "Warning: defvar ignored because w3m-fill-column is 684 Fixes "Warning: defvar ignored because w3m-fill-column is
410 let-bound" and the error "Symbol's value as variable is void: 685 let-bound" and the error "Symbol's value as variable is void:
411 w3m-fill-column". 686 w3m-fill-column".
412 687
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index 2acf847cddc..9cb24baeb1f 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -22676,7 +22676,7 @@
22676 (vc-next-action, vc-transfer-file, vc-rename-file): Also pass the 22676 (vc-next-action, vc-transfer-file, vc-rename-file): Also pass the
22677 backend when calling vc-mode-line. 22677 backend when calling vc-mode-line.
22678 (vc-register): Do not create a closure for calling the vc register 22678 (vc-register): Do not create a closure for calling the vc register
22679 function, call it directly. 22679 function, call it directly. No longer obey vc-initial-comment.
22680 22680
226812009-06-23 Dan Nicolaescu <dann@ics.uci.edu> 226812009-06-23 Dan Nicolaescu <dann@ics.uci.edu>
22682 22682
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 5a7a741a3a6..395810772c5 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -54,9 +54,12 @@ define global abbrevs instead."
54 54
55(define-minor-mode abbrev-mode 55(define-minor-mode abbrev-mode
56 "Toggle Abbrev mode in the current buffer. 56 "Toggle Abbrev mode in the current buffer.
57With optional argument ARG, turn abbrev mode on if ARG is 57With a prefix argument ARG, enable Abbrev mode if ARG is
58positive, otherwise turn it off. In Abbrev mode, inserting an 58positive, and disable it otherwise. If called from Lisp, enable
59abbreviation causes it to expand and be replaced by its expansion." 59Abbrev mode if ARG is omitted or nil.
60
61In Abbrev mode, inserting an abbreviation causes it to expand and
62be replaced by its expansion."
60 ;; It's defined in C, this stops the d-m-m macro defining it again. 63 ;; It's defined in C, this stops the d-m-m macro defining it again.
61 :variable abbrev-mode) 64 :variable abbrev-mode)
62 65
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index ef75e7157e6..162da1f4815 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -486,13 +486,14 @@ happens in the buffer.")
486;;;_ > define-minor-mode allout-widgets-mode (arg) 486;;;_ > define-minor-mode allout-widgets-mode (arg)
487;;;###autoload 487;;;###autoload
488(define-minor-mode allout-widgets-mode 488(define-minor-mode allout-widgets-mode
489 "Allout-mode extension, providing graphical decoration of outline structure. 489 "Toggle Allout Widgets mode.
490 490With a prefix argument ARG, enable Allout Widgets mode if ARG is
491This is meant to operate along with allout-mode, via `allout-mode-hook'. 491positive, and disable it otherwise. If called from Lisp, enable
492 492the mode if ARG is omitted or nil.
493If optional argument ARG is greater than 0, enable. 493
494If optional argument ARG is less than 0, disable. 494Allout Widgets mode is an extension of Allout mode that provides
495Anything else, toggle between active and inactive. 495graphical decoration of outline structure. It is meant to
496operate along with `allout-mode', via `allout-mode-hook'.
496 497
497The graphics include: 498The graphics include:
498 499
diff --git a/lisp/allout.el b/lisp/allout.el
index 4002f12e264..18cc3c80dc6 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -1702,17 +1702,19 @@ valid values."
1702;;;###autoload 1702;;;###autoload
1703(define-minor-mode allout-mode 1703(define-minor-mode allout-mode
1704;;;_ . Doc string: 1704;;;_ . Doc string:
1705 "Toggle minor mode for controlling exposure and editing of text outlines. 1705 "Toggle Allout outline mode.
1706\\<allout-mode-map-value> 1706With a prefix argument ARG, enable Allout outline mode if ARG is
1707 1707positive, and disable it otherwise. If called from Lisp, enable
1708Allout outline mode always runs as a minor mode. 1708the mode if ARG is omitted or nil.
1709 1709
1710Allout outline mode provides extensive outline oriented 1710\\<allout-mode-map-value>
1711formatting and manipulation. It enables structural editing of 1711Allout outline mode is a minor mode that provides extensive
1712outlines, as well as navigation and exposure. It also is 1712outline oriented formatting and manipulation. It enables
1713specifically aimed at accommodating syntax-sensitive text like 1713structural editing of outlines, as well as navigation and
1714programming languages. \(For example, see the allout code itself, 1714exposure. It also is specifically aimed at accommodating
1715which is organized as an allout outline.) 1715syntax-sensitive text like programming languages. \(For example,
1716see the allout code itself, which is organized as an allout
1717outline.)
1716 1718
1717In addition to typical outline navigation and exposure, allout includes: 1719In addition to typical outline navigation and exposure, allout includes:
1718 1720
diff --git a/lisp/autoarg.el b/lisp/autoarg.el
index 378ec1318b1..57f5bcd809c 100644
--- a/lisp/autoarg.el
+++ b/lisp/autoarg.el
@@ -90,15 +90,19 @@
90 90
91;;;###autoload 91;;;###autoload
92(define-minor-mode autoarg-mode 92(define-minor-mode autoarg-mode
93 "Toggle Autoarg minor mode globally. 93 "Toggle Autoarg mode, a global minor mode.
94With ARG, turn Autoarg mode on if ARG is positive, off otherwise. 94With a prefix argument ARG, enable Autoarg mode if ARG is
95positive, and disable it otherwise. If called from Lisp, enable
96the mode if ARG is omitted or nil.
97
95\\<autoarg-mode-map> 98\\<autoarg-mode-map>
96In Autoarg mode digits are bound to `digit-argument' -- i.e. they 99In Autoarg mode, digits are bound to `digit-argument', i.e. they
97supply prefix arguments as C-DIGIT and M-DIGIT normally do -- and 100supply prefix arguments as C-DIGIT and M-DIGIT normally do.
98C-DIGIT inserts DIGIT. \\[autoarg-terminate] terminates the prefix sequence 101Furthermore, C-DIGIT inserts DIGIT.
99and inserts the digits of the autoarg sequence into the buffer. 102\\[autoarg-terminate] terminates the prefix sequence and inserts
100Without a numeric prefix arg the normal binding of \\[autoarg-terminate] is 103the digits of the autoarg sequence into the buffer.
101invoked, i.e. what it would be with Autoarg mode off. 104Without a numeric prefix arg, the normal binding of \\[autoarg-terminate]
105is invoked, i.e. what it would be with Autoarg mode off.
102 106
103For example: 107For example:
104`6 9 \\[autoarg-terminate]' inserts `69' into the buffer, as does `C-6 C-9'. 108`6 9 \\[autoarg-terminate]' inserts `69' into the buffer, as does `C-6 C-9'.
@@ -112,11 +116,14 @@ then invokes the normal binding of \\[autoarg-terminate].
112 116
113;;;###autoload 117;;;###autoload
114(define-minor-mode autoarg-kp-mode 118(define-minor-mode autoarg-kp-mode
115 "Toggle Autoarg-KP minor mode globally. 119 "Toggle Autoarg-KP mode, a global minor mode.
116With ARG, turn Autoarg mode on if ARG is positive, off otherwise. 120With a prefix argument ARG, enable Autoarg-KP mode if ARG is
121positive, and disable it otherwise. If called from Lisp, enable
122the mode if ARG is omitted or nil.
123
117\\<autoarg-kp-mode-map> 124\\<autoarg-kp-mode-map>
118This is similar to \\[autoarg-mode] but rebinds the keypad keys `kp-1' 125This is similar to `autoarg-mode' but rebinds the keypad keys
119etc. to supply digit arguments. 126`kp-1' etc. to supply digit arguments.
120 127
121\\{autoarg-kp-mode-map}" 128\\{autoarg-kp-mode-map}"
122 nil " Aakp" autoarg-kp-mode-map :global t :group 'keyboard 129 nil " Aakp" autoarg-kp-mode-map :global t :group 'keyboard
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index 5793c3180be..6d002f4a217 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -397,9 +397,10 @@ or if CONDITION had no actions, after all other CONDITIONs."
397 397
398;;;###autoload 398;;;###autoload
399(define-minor-mode auto-insert-mode 399(define-minor-mode auto-insert-mode
400 "Toggle Auto-insert mode. 400 "Toggle Auto-insert mode, a global minor mode.
401With prefix ARG, turn Auto-insert mode on if and only if ARG is positive. 401With a prefix argument ARG, enable Auto-insert mode if ARG is
402Returns the new status of Auto-insert mode (non-nil means on). 402positive, and disable it otherwise. If called from Lisp, enable
403the mode if ARG is omitted or nil.
403 404
404When Auto-insert mode is enabled, when new files are created you can 405When Auto-insert mode is enabled, when new files are created you can
405insert a template for the file depending on the mode of the buffer." 406insert a template for the file depending on the mode of the buffer."
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index c67b6663bd0..817aaff55ca 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -284,10 +284,15 @@ the list of old buffers.")
284 284
285;;;###autoload 285;;;###autoload
286(define-minor-mode auto-revert-mode 286(define-minor-mode auto-revert-mode
287 "Toggle reverting buffer when file on disk changes. 287 "Toggle reverting buffer when the file changes (Auto Revert mode).
288With a prefix argument ARG, enable Auto Revert mode if ARG is
289positive, and disable it otherwise. If called from Lisp, enable
290the mode if ARG is omitted or nil.
291
292Auto Revert mode is a minor mode that affects only the current
293buffer. When enabled, it reverts the buffer when the file on
294disk changes.
288 295
289With arg, turn Auto Revert mode on if and only if arg is positive.
290This is a minor mode that affects only the current buffer.
291Use `global-auto-revert-mode' to automatically revert all buffers. 296Use `global-auto-revert-mode' to automatically revert all buffers.
292Use `auto-revert-tail-mode' if you know that the file will only grow 297Use `auto-revert-tail-mode' if you know that the file will only grow
293without being changed in the part that is already in the buffer." 298without being changed in the part that is already in the buffer."
@@ -314,14 +319,16 @@ This function is designed to be added to hooks, for example:
314 319
315;;;###autoload 320;;;###autoload
316(define-minor-mode auto-revert-tail-mode 321(define-minor-mode auto-revert-tail-mode
317 "Toggle reverting tail of buffer when file on disk grows. 322 "Toggle reverting tail of buffer when the file grows.
318With arg, turn Tail mode on if arg is positive, otherwise turn it off. 323With a prefix argument ARG, enable Auto-Revert Tail mode if ARG
324is positive, and disable it otherwise. If called from Lisp,
325enable the mode if ARG is omitted or nil.
319 326
320When Tail mode is enabled, the tail of the file is constantly 327When Auto Revert Tail mode is enabled, the tail of the file is
321followed, as with the shell command `tail -f'. This means that 328constantly followed, as with the shell command `tail -f'. This
322whenever the file grows on disk (presumably because some 329means that whenever the file grows on disk (presumably because
323background process is appending to it from time to time), this is 330some background process is appending to it from time to time),
324reflected in the current buffer. 331this is reflected in the current buffer.
325 332
326You can edit the buffer and turn this mode off and on again as 333You can edit the buffer and turn this mode off and on again as
327you please. But make sure the background process has stopped 334you please. But make sure the background process has stopped
@@ -367,7 +374,7 @@ Perform a full revert? ")
367 374
368;;;###autoload 375;;;###autoload
369(defun turn-on-auto-revert-tail-mode () 376(defun turn-on-auto-revert-tail-mode ()
370 "Turn on Auto-Revert Tail Mode. 377 "Turn on Auto-Revert Tail mode.
371 378
372This function is designed to be added to hooks, for example: 379This function is designed to be added to hooks, for example:
373 (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)" 380 (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)"
@@ -377,12 +384,13 @@ This function is designed to be added to hooks, for example:
377;;;###autoload 384;;;###autoload
378(define-minor-mode global-auto-revert-mode 385(define-minor-mode global-auto-revert-mode
379 "Toggle Global Auto Revert mode. 386 "Toggle Global Auto Revert mode.
380With optional prefix argument ARG, enable Global Auto Revert Mode 387With a prefix argument ARG, enable Global Auto Revert mode if ARG
381if ARG > 0, else disable it. 388is positive, and disable it otherwise. If called from Lisp,
389enable the mode if ARG is omitted or nil.
382 390
383This is a global minor mode that reverts any buffer associated 391Global Auto Revert mode is a global minor mode that reverts any
384with a file when the file changes on disk. Use `auto-revert-mode' 392buffer associated with a file when the file changes on disk. Use
385to revert a particular buffer. 393`auto-revert-mode' to revert a particular buffer.
386 394
387If `global-auto-revert-non-file-buffers' is non-nil, this mode 395If `global-auto-revert-non-file-buffers' is non-nil, this mode
388may also revert some non-file buffers, as described in the 396may also revert some non-file buffers, as described in the
diff --git a/lisp/battery.el b/lisp/battery.el
index f5c01fbef58..3b245ed644d 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -164,10 +164,14 @@ The text being displayed in the echo area is controlled by the variables
164 164
165;;;###autoload 165;;;###autoload
166(define-minor-mode display-battery-mode 166(define-minor-mode display-battery-mode
167 "Display battery status information in the mode line. 167 "Toggle battery status display in mode line (Display Battery mode).
168The text being displayed in the mode line is controlled by the variables 168With a prefix argument ARG, enable Display Battery mode if ARG is
169positive, and disable it otherwise. If called from Lisp, enable
170the mode if ARG is omitted or nil.
171
172The text displayed in the mode line is controlled by
169`battery-mode-line-format' and `battery-status-function'. 173`battery-mode-line-format' and `battery-status-function'.
170The mode line will be updated automatically every `battery-update-interval' 174The mode line is be updated every `battery-update-interval'
171seconds." 175seconds."
172 :global t :group 'battery 176 :global t :group 'battery
173 (setq battery-mode-line-string "") 177 (setq battery-mode-line-string "")
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 093e592c475..3dd0e6f78fd 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,20 @@
12011-10-23 Chong Yidong <cyd@gnu.org>
2
3 * ede.el (ede-maybe-checkout): Function deleted;
4 vc-toggle-read-only does not do version control now.
5
6 * ede/util.el (ede-make-buffer-writable): Don't use
7 vc-toggle-read-only.
8
9 * ede/project-am.el (project-remove-file, project-add-file)
10 (project-new-target): Don't call ede-maybe-checkout.
11
122011-10-19 Chong Yidong <cyd@gnu.org>
13
14 * ede.el (ede-minor-mode,global-ede-mode):
15 * semantic.el (semantic-mode): Doc fix to reflect new
16 define-minor-mode calling behavior.
17
12011-07-30 Chong Yidong <cyd@stupidchicken.com> 182011-07-30 Chong Yidong <cyd@stupidchicken.com>
2 19
3 * semantic/grammar.el (semantic-grammar-insert-defanalyzers): Fix 20 * semantic/grammar.el (semantic-grammar-insert-defanalyzers): Fix
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 307ccfdadd7..14f09517b1d 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -398,8 +398,9 @@ To be used in hook functions."
398 398
399(define-minor-mode ede-minor-mode 399(define-minor-mode ede-minor-mode
400 "Toggle EDE (Emacs Development Environment) minor mode. 400 "Toggle EDE (Emacs Development Environment) minor mode.
401With non-nil argument ARG, enable EDE minor mode if ARG is 401With a prefix argument ARG, enable EDE minor mode if ARG is
402positive; otherwise, disable it. 402positive, and disable it otherwise. If called from Lisp, enable
403EDE minor mode if ARG is omitted or nil.
403 404
404If this file is contained, or could be contained in an EDE 405If this file is contained, or could be contained in an EDE
405controlled project, then this mode is activated automatically 406controlled project, then this mode is activated automatically
@@ -458,8 +459,9 @@ ONOFF indicates enabling or disabling the mode."
458;;;###autoload 459;;;###autoload
459(define-minor-mode global-ede-mode 460(define-minor-mode global-ede-mode
460 "Toggle global EDE (Emacs Development Environment) mode. 461 "Toggle global EDE (Emacs Development Environment) mode.
461With non-nil argument ARG, enable global EDE mode if ARG is 462With a prefix argument ARG, enable global EDE mode if ARG is
462positive; otherwise, disable it. 463positive, and disable it otherwise. If called from Lisp, enable
464the mode if ARG is omitted or nil.
463 465
464This global minor mode enables `ede-minor-mode' in all buffers in 466This global minor mode enables `ede-minor-mode' in all buffers in
465an EDE controlled project." 467an EDE controlled project."
@@ -1177,16 +1179,6 @@ See also `ede-map-subprojects'."
1177Return the first non-nil value returned by PROC." 1179Return the first non-nil value returned by PROC."
1178 (eval (cons 'or (ede-map-targets this proc)))) 1180 (eval (cons 'or (ede-map-targets this proc))))
1179 1181
1180;;; VC Handling
1181;;
1182(defun ede-maybe-checkout (&optional buffer)
1183 "Check BUFFER out of VC if necessary."
1184 (save-excursion
1185 (if buffer (set-buffer buffer))
1186 (if (and buffer-read-only vc-mode
1187 (y-or-n-p "Checkout Makefile.am from VC? "))
1188 (vc-toggle-read-only))))
1189
1190 1182
1191;;; Some language specific methods. 1183;;; Some language specific methods.
1192;; 1184;;
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 88cf67e22ed..ec54d8151bc 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -214,7 +214,6 @@ OT is the object target. DIR is the directory to start in."
214 target (project-am-preferred-target-type (buffer-file-name))))) 214 target (project-am-preferred-target-type (buffer-file-name)))))
215 (ede-with-projectfile ot 215 (ede-with-projectfile ot
216 (makefile-move-to-macro (project-am-macro ot)) 216 (makefile-move-to-macro (project-am-macro ot))
217 (ede-maybe-checkout)
218 (makefile-end-of-command) 217 (makefile-end-of-command)
219 (insert " " ofn) 218 (insert " " ofn)
220 (makefile-fill-paragraph nil) 219 (makefile-fill-paragraph nil)
@@ -226,10 +225,6 @@ OT is the object target. DIR is the directory to start in."
226 "Remove the current buffer from any project targets." 225 "Remove the current buffer from any project targets."
227 (ede-with-projectfile ot 226 (ede-with-projectfile ot
228 (makefile-move-to-macro (project-am-macro ot)) 227 (makefile-move-to-macro (project-am-macro ot))
229 (if (and buffer-read-only vc-mode
230 (y-or-n-p "Checkout Makefile.am from VC? "))
231 (vc-toggle-read-only t))
232 (ede-maybe-checkout)
233 (makefile-navigate-macro (concat " *" (regexp-quote (ede-name fnnd)))) 228 (makefile-navigate-macro (concat " *" (regexp-quote (ede-name fnnd))))
234 (replace-match "" t t nil 0) 229 (replace-match "" t t nil 0)
235 (makefile-fill-paragraph nil) 230 (makefile-fill-paragraph nil)
@@ -271,7 +266,6 @@ buffer being in order to provide a smart default target type."
271 (if (not ot) (error "Error creating target object %S" ntype)) 266 (if (not ot) (error "Error creating target object %S" ntype))
272 (ede-with-projectfile ot 267 (ede-with-projectfile ot
273 (goto-char (point-min)) 268 (goto-char (point-min))
274 (ede-maybe-checkout)
275 (makefile-next-dependency) 269 (makefile-next-dependency)
276 (if (= (point) (point-min)) 270 (if (= (point) (point-min))
277 (goto-char (point-max)) 271 (goto-char (point-max))
diff --git a/lisp/cedet/ede/util.el b/lisp/cedet/ede/util.el
index fc4536ba88a..053180d4a8b 100644
--- a/lisp/cedet/ede/util.el
+++ b/lisp/cedet/ede/util.el
@@ -87,12 +87,7 @@ their sources to VERSION."
87If BUFFER isn't specified, use the current buffer." 87If BUFFER isn't specified, use the current buffer."
88 (save-excursion 88 (save-excursion
89 (if buffer (set-buffer buffer)) 89 (if buffer (set-buffer buffer))
90 (if buffer-read-only 90 (toggle-read-only -1)))
91 (if (and vc-mode
92 (y-or-n-p (format "Check out %s? " (buffer-file-name))))
93 (vc-toggle-read-only)
94 (if (not vc-mode)
95 (toggle-read-only -1))))))
96 91
97(provide 'ede/util) 92(provide 'ede/util)
98 93
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index ce9af0e12b5..34d886b6807 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -1055,8 +1055,10 @@ The possible elements of this list include the following:
1055 1055
1056;;;###autoload 1056;;;###autoload
1057(define-minor-mode semantic-mode 1057(define-minor-mode semantic-mode
1058 "Toggle Semantic mode. 1058 "Toggle parser features (Semantic mode).
1059With ARG, turn Semantic mode on if ARG is positive, off otherwise. 1059With a prefix argument ARG, enable Semantic mode if ARG is
1060positive, and disable it otherwise. If called from Lisp, enable
1061Semantic mode if ARG is omitted or nil.
1060 1062
1061In Semantic mode, Emacs parses the buffers you visit for their 1063In Semantic mode, Emacs parses the buffers you visit for their
1062semantic content. This information is used by a variety of 1064semantic content. This information is used by a variety of
diff --git a/lisp/comint.el b/lisp/comint.el
index 52580db6186..591be5e2d9d 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -847,10 +847,10 @@ by the global keymap (usually `mouse-yank-at-click')."
847 ;; If pos is at the very end of a field, the mouse-click was 847 ;; If pos is at the very end of a field, the mouse-click was
848 ;; probably outside (to the right) of the field. 848 ;; probably outside (to the right) of the field.
849 (and (< pos (field-end pos)) 849 (and (< pos (field-end pos))
850 (setq field (field-at-pos pos)) 850 (< (field-end pos) (point-max))
851 (setq input (field-string-no-properties pos)))) 851 (progn (setq field (field-at-pos pos))
852 (if (or (null comint-accum-marker) 852 (setq input (field-string-no-properties pos)))))
853 (not (eq field 'input))) 853 (if (or (null input) (null comint-accum-marker) field)
854 ;; Fall back to the global definition if (i) the selected 854 ;; Fall back to the global definition if (i) the selected
855 ;; buffer is not a comint buffer (which can happen if a 855 ;; buffer is not a comint buffer (which can happen if a
856 ;; non-comint window was selected and we clicked in a comint 856 ;; non-comint window was selected and we clicked in a comint
@@ -1803,8 +1803,7 @@ Similarly for Soar, Scheme, etc."
1803 (add-text-properties 1803 (add-text-properties
1804 beg end 1804 beg end
1805 '(mouse-face highlight 1805 '(mouse-face highlight
1806 help-echo "mouse-2: insert after prompt as new input" 1806 help-echo "mouse-2: insert after prompt as new input"))))
1807 field input))))
1808 (unless (or no-newline comint-use-prompt-regexp) 1807 (unless (or no-newline comint-use-prompt-regexp)
1809 ;; Cover the terminating newline 1808 ;; Cover the terminating newline
1810 (add-text-properties end (1+ end) 1809 (add-text-properties end (1+ end)
@@ -2153,7 +2152,7 @@ If `comint-use-prompt-regexp' is non-nil, then return
2153the current line with any initial string matching the regexp 2152the current line with any initial string matching the regexp
2154`comint-prompt-regexp' removed." 2153`comint-prompt-regexp' removed."
2155 (let ((bof (field-beginning))) 2154 (let ((bof (field-beginning)))
2156 (if (eq (get-char-property bof 'field) 'input) 2155 (if (null (get-char-property bof 'field)) ;Not `output'.
2157 (field-string-no-properties bof) 2156 (field-string-no-properties bof)
2158 (comint-bol) 2157 (comint-bol)
2159 (buffer-substring-no-properties (point) (line-end-position))))) 2158 (buffer-substring-no-properties (point) (line-end-position)))))
@@ -2473,7 +2472,7 @@ If N is negative, find the next or Nth next match."
2473 (while (/= n 0) 2472 (while (/= n 0)
2474 (unless (re-search-backward regexp nil t dir) 2473 (unless (re-search-backward regexp nil t dir)
2475 (error "Not found")) 2474 (error "Not found"))
2476 (when (eq (get-char-property (point) 'field) 'input) 2475 (unless (get-char-property (point) 'field)
2477 (setq n (- n dir)))) 2476 (setq n (- n dir))))
2478 (field-beginning)))) 2477 (field-beginning))))
2479 (goto-char pos)))) 2478 (goto-char pos))))
@@ -2520,7 +2519,7 @@ text matching `comint-prompt-regexp'."
2520 (setq input-pos (point-max))) 2519 (setq input-pos (point-max)))
2521 ;; stop iterating 2520 ;; stop iterating
2522 (setq n 0)) 2521 (setq n 0))
2523 ((eq (get-char-property pos 'field) 'input) 2522 ((null (get-char-property pos 'field))
2524 (setq n (if (< n 0) (1+ n) (1- n))) 2523 (setq n (if (< n 0) (1+ n) (1- n)))
2525 (setq input-pos pos)))) 2524 (setq input-pos pos))))
2526 (when input-pos 2525 (when input-pos
@@ -3079,9 +3078,9 @@ SS1 = (unquote SS2)."
3079 3078
3080(defun comint--table-subvert (table s1 s2 &optional quote-fun unquote-fun) 3079(defun comint--table-subvert (table s1 s2 &optional quote-fun unquote-fun)
3081 "Completion table that replaces the prefix S1 with S2 in STRING. 3080 "Completion table that replaces the prefix S1 with S2 in STRING.
3082When TABLE, S1 and S2 are provided by `apply-partially', the result 3081The result is a completion table which completes strings of the
3083is a completion table which completes strings of the form (concat S1 S) 3082form (concat S1 S) in the same way as TABLE completes strings of
3084in the same way as TABLE completes strings of the form (concat S2 S)." 3083the form (concat S2 S)."
3085 (lambda (string pred action) 3084 (lambda (string pred action)
3086 (let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil 3085 (let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil
3087 completion-ignore-case)) 3086 completion-ignore-case))
@@ -3106,13 +3105,15 @@ in the same way as TABLE completes strings of the form (concat S2 S)."
3106 ((eq action t) 3105 ((eq action t)
3107 (let ((bounds (completion-boundaries str table pred ""))) 3106 (let ((bounds (completion-boundaries str table pred "")))
3108 (if (>= (car bounds) (length s2)) 3107 (if (>= (car bounds) (length s2))
3109 res 3108 (if quote-fun (mapcar quote-fun res) res)
3110 (let ((re (concat "\\`" 3109 (let ((re (concat "\\`"
3111 (regexp-quote (substring s2 (car bounds)))))) 3110 (regexp-quote (substring s2 (car bounds))))))
3112 (delq nil 3111 (delq nil
3113 (mapcar (lambda (c) 3112 (mapcar (lambda (c)
3114 (if (string-match re c) 3113 (if (string-match re c)
3115 (substring c (match-end 0)))) 3114 (let ((str (substring c (match-end 0))))
3115 (if quote-fun
3116 (funcall quote-fun str) str))))
3116 res)))))) 3117 res))))))
3117 ;; E.g. action=nil and it's the only completion. 3118 ;; E.g. action=nil and it's the only completion.
3118 (res)))))) 3119 (res))))))
diff --git a/lisp/composite.el b/lisp/composite.el
index 11a3d5ba388..487962ee07c 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -728,12 +728,13 @@ This function is the default value of `auto-composition-function' (which see)."
728;;;###autoload 728;;;###autoload
729(define-minor-mode auto-composition-mode 729(define-minor-mode auto-composition-mode
730 "Toggle Auto Composition mode. 730 "Toggle Auto Composition mode.
731With ARG, turn Auto Composition mode off if and only if ARG is a non-positive 731With a prefix argument ARG, enable Auto Composition mode if ARG
732number; if ARG is nil, toggle Auto Composition mode; anything else turns Auto 732is positive, and disable it otherwise. If called from Lisp,
733Composition on. 733enable the mode if ARG is omitted or nil.
734 734
735When Auto Composition is enabled, text characters are automatically composed 735When Auto Composition mode is enabled, text characters are
736by functions registered in `composition-function-table' (which see). 736automatically composed by functions registered in
737`composition-function-table'.
737 738
738You can use `global-auto-composition-mode' to turn on 739You can use `global-auto-composition-mode' to turn on
739Auto Composition mode in all buffers (this is the default)." 740Auto Composition mode in all buffers (this is the default)."
@@ -744,10 +745,13 @@ Auto Composition mode in all buffers (this is the default)."
744 745
745;;;###autoload 746;;;###autoload
746(define-minor-mode global-auto-composition-mode 747(define-minor-mode global-auto-composition-mode
747 "Toggle Auto-Composition mode in every possible buffer. 748 "Toggle Auto Composition mode in all buffers.
748With prefix arg, turn Global-Auto-Composition mode on if and only if arg 749With a prefix argument ARG, enable it if ARG is positive, and
749is positive. 750disable it otherwise. If called from Lisp, enable it if ARG is
750See `auto-composition-mode' for more information on Auto-Composition mode." 751omitted or nil.
752
753For more information on Auto Composition mode, see
754`auto-composition-mode' ."
751 :variable (default-value 'auto-composition-mode)) 755 :variable (default-value 'auto-composition-mode))
752 756
753(defalias 'toggle-auto-composition 'auto-composition-mode) 757(defalias 'toggle-auto-composition 'auto-composition-mode)
diff --git a/lisp/delsel.el b/lisp/delsel.el
index 705b64be89d..6d2c47f3957 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -56,8 +56,9 @@
56;;;###autoload 56;;;###autoload
57(define-minor-mode delete-selection-mode 57(define-minor-mode delete-selection-mode
58 "Toggle Delete Selection mode. 58 "Toggle Delete Selection mode.
59With prefix ARG, turn Delete Selection mode on if ARG is 59With a prefix argument ARG, enable Delete Selection mode if ARG
60positive, off if ARG is not positive. 60is positive, and disable it otherwise. If called from Lisp,
61enable the mode if ARG is omitted or nil.
61 62
62When Delete Selection mode is enabled, Transient Mark mode is also 63When Delete Selection mode is enabled, Transient Mark mode is also
63enabled and typed text replaces the selection if the selection is 64enabled and typed text replaces the selection if the selection is
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 7d267cec480..c175bd7c3c7 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -606,7 +606,8 @@ as well as widgets, buttons, overlays, and text properties."
606 'trailing-whitespace) 606 'trailing-whitespace)
607 ((and nobreak-char-display char (eq char '#xa0)) 607 ((and nobreak-char-display char (eq char '#xa0))
608 'nobreak-space) 608 'nobreak-space)
609 ((and nobreak-char-display char (eq char '#xad)) 609 ((and nobreak-char-display char
610 (memq char '(#xad #x2010 #x2011)))
610 'escape-glyph) 611 'escape-glyph)
611 ((and (< char 32) (not (memq char '(9 10)))) 612 ((and (< char 32) (not (memq char '(9 10))))
612 'escape-glyph))))) 613 'escape-glyph)))))
diff --git a/lisp/desktop.el b/lisp/desktop.el
index c60745a6b16..cdc787dfde9 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -147,11 +147,14 @@ backward compatibility.")
147 147
148;;;###autoload 148;;;###autoload
149(define-minor-mode desktop-save-mode 149(define-minor-mode desktop-save-mode
150 "Toggle desktop saving mode. 150 "Toggle desktop saving (Desktop Save mode).
151With numeric ARG, turn desktop saving on if ARG is positive, off 151With a prefix argument ARG, enable Desktop Save mode if ARG is
152otherwise. If desktop saving is turned on, the state of Emacs is 152positive, and disable it otherwise. If called from Lisp, enable
153saved from one session to another. See variable `desktop-save' 153the mode if ARG is omitted or nil.
154and function `desktop-read' for details." 154
155If Desktop Save mode is enabled, the state of Emacs is saved from
156one session to another. See variable `desktop-save' and function
157`desktop-read' for details."
155 :global t 158 :global t
156 :group 'desktop) 159 :group 'desktop)
157 160
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 0f2cfd4973f..aaddc479b2a 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -133,16 +133,20 @@ If nil, there is no maximum size."
133 :group 'dired-x) 133 :group 'dired-x)
134 134
135(define-minor-mode dired-omit-mode 135(define-minor-mode dired-omit-mode
136 "Toggle Dired-Omit mode. 136 "Toggle omission of uninteresting files in Dired (Dired-Omit mode).
137With numeric ARG, enable Dired-Omit mode if ARG is positive, disable 137With a prefix argument ARG, enable Dired-Omit mode if ARG is
138otherwise. Enabling and disabling is buffer-local. 138positive, and disable it otherwise. If called from Lisp, enable
139If enabled, \"uninteresting\" files are not listed. 139the mode if ARG is omitted or nil.
140Uninteresting files are those whose filenames match regexp `dired-omit-files',
141plus those ending with extensions in `dired-omit-extensions'.
142 140
143To enable omitting in every Dired buffer, you can put in your ~/.emacs 141Dired-Omit mode is a buffer-local minor mode. When enabled in a
142Dired buffer, Dired does not list files whose filenames match
143regexp `dired-omit-files', nor files ending with extensions in
144`dired-omit-extensions'.
144 145
145 (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1))) 146To enable omitting in every Dired buffer, you can put this in
147your init file:
148
149 (add-hook 'dired-mode-hook (lambda () (dired-omit-mode)))
146 150
147See Info node `(dired-x) Omitting Variables' for more information." 151See Info node `(dired-x) Omitting Variables' for more information."
148 :group 'dired-x 152 :group 'dired-x
diff --git a/lisp/dired.el b/lisp/dired.el
index 60ba14ade84..3ff86869a78 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -4128,7 +4128,7 @@ instead.
4128;;;*** 4128;;;***
4129 4129
4130;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump) 4130;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump)
4131;;;;;; "dired-x" "dired-x.el" "219648338c42c7912fa336680b434db0") 4131;;;;;; "dired-x" "dired-x.el" "0a19e4cb2cadf007be715af1035c9c36")
4132;;; Generated autoloads from dired-x.el 4132;;; Generated autoloads from dired-x.el
4133 4133
4134(autoload 'dired-jump "dired-x" "\ 4134(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el
index c3dfc747772..eef8c111da5 100644
--- a/lisp/dirtrack.el
+++ b/lisp/dirtrack.el
@@ -183,7 +183,11 @@ and ends with a forward slash."
183 183
184;;;###autoload 184;;;###autoload
185(define-minor-mode dirtrack-mode 185(define-minor-mode dirtrack-mode
186 "Enable or disable Dirtrack directory tracking in a shell buffer. 186 "Toggle directory tracking in shell buffers (Dirtrack mode).
187With a prefix argument ARG, enable Dirtrack mode if ARG is
188positive, and disable it otherwise. If called from Lisp, enable
189the mode if ARG is omitted or nil.
190
187This method requires that your shell prompt contain the full 191This method requires that your shell prompt contain the full
188current working directory at all times, and that `dirtrack-list' 192current working directory at all times, and that `dirtrack-list'
189is set to match the prompt. This is an alternative to 193is set to match the prompt. This is an alternative to
@@ -199,7 +203,7 @@ and similar commands which change the shell working directory."
199 203
200 204
201(define-minor-mode dirtrack-debug-mode 205(define-minor-mode dirtrack-debug-mode
202 "Enable or disable Dirtrack debugging." 206 "Toggle Dirtrack debugging."
203 nil nil nil 207 nil nil nil
204 (if dirtrack-debug-mode 208 (if dirtrack-debug-mode
205 (display-buffer (get-buffer-create dirtrack-debug-buffer)))) 209 (display-buffer (get-buffer-create dirtrack-debug-buffer))))
@@ -227,7 +231,7 @@ If directory tracking does not seem to be working, you can use the
227function `dirtrack-debug-mode' to turn on debugging output." 231function `dirtrack-debug-mode' to turn on debugging output."
228 (unless (or (null dirtrack-mode) 232 (unless (or (null dirtrack-mode)
229 (eq (point) (point-min))) ; no output? 233 (eq (point) (point-min))) ; no output?
230 (let (prompt-path 234 (let (prompt-path orig-prompt-path
231 (current-dir default-directory) 235 (current-dir default-directory)
232 (dirtrack-regexp (nth 0 dirtrack-list)) 236 (dirtrack-regexp (nth 0 dirtrack-list))
233 (match-num (nth 1 dirtrack-list))) 237 (match-num (nth 1 dirtrack-list)))
@@ -243,8 +247,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
243 (if (not (> (length prompt-path) 0)) 247 (if (not (> (length prompt-path) 0))
244 (dirtrack-debug-message "Match is empty string") 248 (dirtrack-debug-message "Match is empty string")
245 ;; Transform prompts into canonical forms 249 ;; Transform prompts into canonical forms
246 (setq prompt-path (funcall dirtrack-directory-function 250 (setq orig-prompt-path (funcall dirtrack-directory-function
247 prompt-path) 251 prompt-path)
252 prompt-path (shell-prefixed-directory-name orig-prompt-path)
248 current-dir (funcall dirtrack-canonicalize-function 253 current-dir (funcall dirtrack-canonicalize-function
249 current-dir)) 254 current-dir))
250 (dirtrack-debug-message 255 (dirtrack-debug-message
@@ -257,8 +262,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
257 ;; It's possible that Emacs will think the directory 262 ;; It's possible that Emacs will think the directory
258 ;; won't exist (eg, rlogin buffers) 263 ;; won't exist (eg, rlogin buffers)
259 (if (file-accessible-directory-p prompt-path) 264 (if (file-accessible-directory-p prompt-path)
260 ;; Change directory 265 ;; Change directory. shell-process-cd adds the prefix, so we
261 (and (shell-process-cd prompt-path) 266 ;; need to give it the original (un-prefixed) path.
267 (and (shell-process-cd orig-prompt-path)
262 (run-hooks 'dirtrack-directory-change-hook) 268 (run-hooks 'dirtrack-directory-change-hook)
263 (dirtrack-debug-message 269 (dirtrack-debug-message
264 (format "Changing directory to %s" prompt-path))) 270 (format "Changing directory to %s" prompt-path)))
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 872b2172c7e..ceaad83cd7c 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -1502,8 +1502,11 @@ to the next best mode."
1502 1502
1503;;;###autoload 1503;;;###autoload
1504(define-minor-mode doc-view-minor-mode 1504(define-minor-mode doc-view-minor-mode
1505 "Toggle Doc view minor mode. 1505 "Toggle displaying buffer via Doc View (Doc View minor mode).
1506With arg, turn Doc view minor mode on if arg is positive, off otherwise. 1506With a prefix argument ARG, enable Doc View minor mode if ARG is
1507positive, and disable it otherwise. If called from Lisp, enable
1508the mode if ARG is omitted or nil.
1509
1507See the command `doc-view-mode' for more information on this mode." 1510See the command `doc-view-mode' for more information on this mode."
1508 nil " DocView" doc-view-minor-mode-map 1511 nil " DocView" doc-view-minor-mode-map
1509 :group 'doc-view 1512 :group 'doc-view
diff --git a/lisp/double.el b/lisp/double.el
index 4aa8da72af7..2a845f61942 100644
--- a/lisp/double.el
+++ b/lisp/double.el
@@ -146,12 +146,13 @@ but not `C-u X' or `ESC X' since the X is not the prefix key."
146 146
147;;;###autoload 147;;;###autoload
148(define-minor-mode double-mode 148(define-minor-mode double-mode
149 "Toggle Double mode. 149 "Toggle special insertion on double keypresses (Double mode).
150With prefix argument ARG, turn Double mode on if ARG is positive, otherwise 150With a prefix argument ARG, enable Double mode if ARG is
151turn it off. 151positive, and disable it otherwise. If called from Lisp, enable
152the mode if ARG is omitted or nil.
152 153
153When Double mode is on, some keys will insert different strings 154When Double mode is enabled, some keys will insert different
154when pressed twice. See variable `double-map' for details." 155strings when pressed twice. See `double-map' for details."
155 :lighter " Double" 156 :lighter " Double"
156 :link '(emacs-commentary-link "double") 157 :link '(emacs-commentary-link "double")
157 (kill-local-variable 'key-translation-map) 158 (kill-local-variable 'key-translation-map)
diff --git a/lisp/electric.el b/lisp/electric.el
index 17c33c7d5cd..26fba20ea12 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -241,8 +241,14 @@ Returns nil when we can't find this char."
241 241
242;;;###autoload 242;;;###autoload
243(define-minor-mode electric-indent-mode 243(define-minor-mode electric-indent-mode
244 "Automatically reindent lines of code when inserting particular chars. 244 "Toggle on-the-fly reindentation (Electric Indent mode).
245`electric-indent-chars' specifies the set of chars that should cause reindentation." 245With a prefix argument ARG, enable Electric Indent mode if ARG is
246positive, and disable it otherwise. If called from Lisp, enable
247the mode if ARG is omitted or nil.
248
249Electric Indent mode is a global minor mode. When enabled,
250reindentation is triggered whenever you insert a character listed
251in `electric-indent-chars'."
246 :global t 252 :global t
247 :group 'electricity 253 :group 'electricity
248 (if electric-indent-mode 254 (if electric-indent-mode
@@ -330,7 +336,14 @@ This can be convenient for people who find it easier to hit ) than C-f."
330 336
331;;;###autoload 337;;;###autoload
332(define-minor-mode electric-pair-mode 338(define-minor-mode electric-pair-mode
333 "Automatically pair-up parens when inserting an open paren." 339 "Toggle automatic parens pairing (Electric Pair mode).
340With a prefix argument ARG, enable Electric Pair mode if ARG is
341positive, and disable it otherwise. If called from Lisp, enable
342the mode if ARG is omitted or nil.
343
344Electric Pair mode is a global minor mode. When enabled, typing
345an open parenthesis automatically inserts the corresponding
346closing parenthesis. \(Likewise for brackets, etc.)"
334 :global t 347 :global t
335 :group 'electricity 348 :group 'electricity
336 (if electric-pair-mode 349 (if electric-pair-mode
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 7eb6e6ef765..c9e32023187 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1237,9 +1237,10 @@ generating a buffered list of errors."
1237 1237
1238;;;###autoload 1238;;;###autoload
1239(define-minor-mode checkdoc-minor-mode 1239(define-minor-mode checkdoc-minor-mode
1240 "Toggle Checkdoc minor mode, a mode for checking Lisp doc strings. 1240 "Toggle automatic docstring checking (Checkdoc minor mode).
1241With prefix ARG, turn Checkdoc minor mode on if ARG is positive, otherwise 1241With a prefix argument ARG, enable Checkdoc minor mode if ARG is
1242turn it off. 1242positive, and disable it otherwise. If called from Lisp, enable
1243the mode if ARG is omitted or nil.
1243 1244
1244In Checkdoc minor mode, the usual bindings for `eval-defun' which is 1245In Checkdoc minor mode, the usual bindings for `eval-defun' which is
1245bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include 1246bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 46dc1f162ba..b1cb0615e43 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -350,14 +350,16 @@ call another major mode in their body."
350 (define-minor-mode ,global-mode 350 (define-minor-mode ,global-mode
351 ;; Very short lines to avoid too long lines in the generated 351 ;; Very short lines to avoid too long lines in the generated
352 ;; doc string. 352 ;; doc string.
353 ,(format "Toggle %s in every possible buffer. 353 ,(format "Toggle %s in all buffers.
354With prefix ARG, turn %s on if and only if 354With prefix ARG, enable %s if ARG is positive;
355ARG is positive. 355otherwise, disable it. If called from Lisp, enable the mode if
356ARG is omitted or nil.
357
356%s is enabled in all buffers where 358%s is enabled in all buffers where
357\`%s' would do it. 359\`%s' would do it.
358See `%s' for more information on %s." 360See `%s' for more information on %s."
359 pretty-name pretty-global-name pretty-name turn-on 361 pretty-name pretty-global-name
360 mode pretty-name) 362 pretty-name turn-on mode pretty-name)
361 :global t ,@group ,@(nreverse extra-keywords) 363 :global t ,@group ,@(nreverse extra-keywords)
362 364
363 ;; Setup hook to handle future mode changes and new buffers. 365 ;; Setup hook to handle future mode changes and new buffers.
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index cd9b779bee9..901b6d1bf6a 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -149,14 +149,17 @@ This is used to determine if `eldoc-idle-delay' is changed by the user.")
149 149
150;;;###autoload 150;;;###autoload
151(define-minor-mode eldoc-mode 151(define-minor-mode eldoc-mode
152 "Toggle ElDoc mode on or off. 152 "Toggle echo area display of Lisp objects at point (ElDoc mode).
153In ElDoc mode, the echo area displays information about a 153With a prefix argument ARG, enable ElDoc mode if ARG is positive,
154function or variable in the text where point is. If point is 154and disable it otherwise. If called from Lisp, enable ElDoc mode
155on a documented variable, it displays the first line of that 155if ARG is omitted or nil.
156variable's doc string. Otherwise it displays the argument list 156
157of the function called in the expression point is on. 157ElDoc mode is a buffer-local minor mode. When enabled, the echo
158 158area displays information about a function or variable in the
159With prefix ARG, turn ElDoc mode on if and only if ARG is positive." 159text where point is. If point is on a documented variable, it
160displays the first line of that variable's doc string. Otherwise
161it displays the argument list of the function called in the
162expression point is on."
160 :group 'eldoc :lighter eldoc-minor-mode-string 163 :group 'eldoc :lighter eldoc-minor-mode-string
161 (setq eldoc-last-message nil) 164 (setq eldoc-last-message nil)
162 (if eldoc-mode 165 (if eldoc-mode
diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el
index 18411f7d2ef..f2c93473015 100644
--- a/lisp/emacs-lock.el
+++ b/lisp/emacs-lock.el
@@ -176,14 +176,16 @@ Return a value appropriate for `kill-buffer-query-functions' (which see)."
176 176
177;;;###autoload 177;;;###autoload
178(define-minor-mode emacs-lock-mode 178(define-minor-mode emacs-lock-mode
179 "Toggle Emacs Lock mode in the current buffer. 179 "Toggle Emacs Lock mode in the current buffer.
180 180If called with a plain prefix argument, ask for the locking mode
181With \\[universal-argument], ask for the locking mode to be used. 181to be used. With any other prefix ARG, turn mode on if ARG is
182With other prefix ARG, turn mode on if ARG is positive, off otherwise. 182positive, off otherwise. If called from Lisp, enable the mode if
183 183ARG is omitted or nil.
184Initially, if the user does not pass an explicit locking mode, it defaults 184
185to `emacs-lock-default-locking-mode' (which see); afterwards, the locking 185Initially, if the user does not pass an explicit locking mode, it
186mode most recently set on the buffer is used instead. 186defaults to `emacs-lock-default-locking-mode' (which see);
187afterwards, the locking mode most recently set on the buffer is
188used instead.
187 189
188When called from Elisp code, ARG can be any locking mode: 190When called from Elisp code, ARG can be any locking mode:
189 191
diff --git a/lisp/emulation/crisp.el b/lisp/emulation/crisp.el
index b2806e8f8eb..567a57949b3 100644
--- a/lisp/emulation/crisp.el
+++ b/lisp/emulation/crisp.el
@@ -349,8 +349,10 @@ normal CRiSP binding) and when it is nil M-x will run
349 349
350;;;###autoload 350;;;###autoload
351(define-minor-mode crisp-mode 351(define-minor-mode crisp-mode
352 "Toggle CRiSP/Brief emulation minor mode. 352 "Toggle CRiSP/Brief emulation (CRiSP mode).
353With ARG, turn CRiSP mode on if ARG is positive, off otherwise." 353With a prefix argument ARG, enable CRiSP mode if ARG is positive,
354and disable it otherwise. If called from Lisp, enable the mode
355if ARG is omitted or nil."
354 :keymap crisp-mode-map 356 :keymap crisp-mode-map
355 :lighter crisp-mode-modeline-string 357 :lighter crisp-mode-modeline-string
356 (when crisp-mode 358 (when crisp-mode
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index b643d521ad6..9a50352d507 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1121,7 +1121,7 @@ With a double \\[universal-argument] prefix argument, unconditionally set mark."
1121 (pop-to-mark-command))) 1121 (pop-to-mark-command)))
1122 ((and cua-toggle-set-mark mark-active) 1122 ((and cua-toggle-set-mark mark-active)
1123 (cua--deactivate) 1123 (cua--deactivate)
1124 (message "Mark Cleared")) 1124 (message "Mark cleared"))
1125 (t 1125 (t
1126 (push-mark-command nil nil) 1126 (push-mark-command nil nil)
1127 (setq cua--explicit-region-start t) 1127 (setq cua--explicit-region-start t)
@@ -1531,16 +1531,17 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1531 1531
1532;;;###autoload 1532;;;###autoload
1533(define-minor-mode cua-mode 1533(define-minor-mode cua-mode
1534 "Toggle CUA key-binding mode. 1534 "Toggle Common User Access style editing (CUA mode).
1535When enabled, using shifted movement keys will activate the 1535With a prefix argument ARG, enable CUA mode if ARG is positive,
1536region (and highlight the region using `transient-mark-mode'), 1536and disable it otherwise. If called from Lisp, enable the mode
1537and typed text replaces the active selection. 1537if ARG is omitted or nil.
1538 1538
1539Also when enabled, you can use C-z, C-x, C-c, and C-v to undo, 1539CUA mode is a global minor mode. When enabled, typed text
1540cut, copy, and paste in addition to the normal Emacs bindings. 1540replaces the active selection, and you can use C-z, C-x, C-c, and
1541The C-x and C-c keys only do cut and copy when the region is 1541C-v to undo, cut, copy, and paste in addition to the normal Emacs
1542active, so in most cases, they do not conflict with the normal 1542bindings. The C-x and C-c keys only do cut and copy when the
1543function of these prefix keys. 1543region is active, so in most cases, they do not conflict with the
1544normal function of these prefix keys.
1544 1545
1545If you really need to perform a command which starts with one of 1546If you really need to perform a command which starts with one of
1546the prefix keys even when the region is active, you have three 1547the prefix keys even when the region is active, you have three
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index 652ab19ba65..ea036e836e4 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -49,7 +49,7 @@ does that automatically."
49 :group 'epa-file) 49 :group 'epa-file)
50 50
51(defvar epa-file-encrypt-to nil 51(defvar epa-file-encrypt-to nil
52 "*Recipient(s) used for encrypting files. 52 "Recipient(s) used for encrypting files.
53May either be a string or a list of strings.") 53May either be a string or a list of strings.")
54 54
55(put 'epa-file-encrypt-to 'safe-local-variable 55(put 'epa-file-encrypt-to 'safe-local-variable
@@ -83,9 +83,10 @@ May either be a string or a list of strings.")
83 (auto-save-mode 0))) 83 (auto-save-mode 0)))
84 84
85(define-minor-mode auto-encryption-mode 85(define-minor-mode auto-encryption-mode
86 "Toggle automatic file encryption and decryption. 86 "Toggle automatic file encryption/decryption (Auto Encryption mode).
87With prefix argument ARG, turn auto encryption on if positive, else off. 87With a prefix argument ARG, enable Auto Encryption mode if ARG is
88Return the new status of auto encryption (non-nil means on)." 88positive, and disable it otherwise. If called from Lisp, enable
89the mode if ARG is omitted or nil."
89 :global t :init-value t :group 'epa-file :version "23.1" 90 :global t :init-value t :group 'epa-file :version "23.1"
90 ;; We'd like to use custom-initialize-set here so the setup is done 91 ;; We'd like to use custom-initialize-set here so the setup is done
91 ;; before dumping, but at the point where the defcustom is evaluated, 92 ;; before dumping, but at the point where the defcustom is evaluated,
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 7c7f10de2c8..d72d3f51bb1 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,11 @@
12011-10-20 Chong Yidong <cyd@gnu.org>
2
3 * erc.el (define-erc-module): Fix autogenerated docstring to
4 reflect Emacs 24 minor mode changes.
5
6 * erc-fill.el (erc-fill-mode):
7 * erc-track.el (erc-track-minor-mode): Doc fix.
8
12011-09-23 Antoine Levitt <antoine.levitt@gmail.com> 92011-09-23 Antoine Levitt <antoine.levitt@gmail.com>
2 10
3 * erc-button.el (erc-button-next-function): Scoping fix 11 * erc-button.el (erc-button-next-function): Scoping fix
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 0b9a4051d65..3940cfbc9a4 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -39,9 +39,12 @@
39;;;###autoload (autoload 'erc-fill-mode "erc-fill" nil t) 39;;;###autoload (autoload 'erc-fill-mode "erc-fill" nil t)
40(erc-define-minor-mode erc-fill-mode 40(erc-define-minor-mode erc-fill-mode
41 "Toggle ERC fill mode. 41 "Toggle ERC fill mode.
42With numeric arg, turn ERC fill mode on if and only if arg is 42With a prefix argument ARG, enable ERC fill mode if ARG is
43positive. In ERC fill mode, messages in the channel buffers are 43positive, and disable it otherwise. If called from Lisp, enable
44filled." 44the mode if ARG is omitted or nil.
45
46ERC fill mode is a global minor mode. When enabled, messages in
47the channel buffers are filled."
45 nil nil nil 48 nil nil nil
46 :global t :group 'erc-fill 49 :global t :group 'erc-fill
47 (if erc-fill-mode 50 (if erc-fill-mode
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 28c1ced91c6..b663aeed423 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -588,12 +588,15 @@ START is the minimum length of the name used."
588 588
589;;;###autoload 589;;;###autoload
590(define-minor-mode erc-track-minor-mode 590(define-minor-mode erc-track-minor-mode
591 "Global minor mode for tracking ERC buffers and showing activity in the 591 "Toggle mode line display of ERC activity (ERC Track minor mode).
592mode line. 592With a prefix argument ARG, enable ERC Track minor mode if ARG is
593 593positive, and disable it otherwise. If called from Lisp, enable
594This exists for the sole purpose of providing the C-c C-SPC and 594the mode if ARG is omitted or nil.
595C-c C-@ keybindings. Make sure that you have enabled the track 595
596module, otherwise the keybindings will not do anything useful." 596ERC Track minor mode is a global minor mode. It exists for the
597sole purpose of providing the C-c C-SPC and C-c C-@ keybindings.
598Make sure that you have enabled the track module, otherwise the
599keybindings will not do anything useful."
597 :init-value nil 600 :init-value nil
598 :lighter "" 601 :lighter ""
599 :keymap erc-track-minor-mode-map 602 :keymap erc-track-minor-mode-map
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index a4040b239c1..2d8c2565f69 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1242,7 +1242,9 @@ Example:
1242 (erc-define-minor-mode 1242 (erc-define-minor-mode
1243 ,mode 1243 ,mode
1244 ,(format "Toggle ERC %S mode. 1244 ,(format "Toggle ERC %S mode.
1245With arg, turn ERC %S mode on if and only if arg is positive. 1245With a prefix argument ARG, enable %s if ARG is positive,
1246and disable it otherwise. If called from Lisp, enable the mode
1247if ARG is omitted or nil.
1246%s" name name doc) 1248%s" name name doc)
1247 nil nil nil 1249 nil nil nil
1248 :global ,(not local-p) :group (quote ,group) 1250 :global ,(not local-p) :group (quote ,group)
diff --git a/lisp/face-remap.el b/lisp/face-remap.el
index 9e5ab58636b..bfd973a299f 100644
--- a/lisp/face-remap.el
+++ b/lisp/face-remap.el
@@ -204,7 +204,7 @@ Each positive or negative step scales the default face height by this amount."
204(make-variable-buffer-local 'text-scale-mode-amount) 204(make-variable-buffer-local 'text-scale-mode-amount)
205 205
206(define-minor-mode text-scale-mode 206(define-minor-mode text-scale-mode
207 "Minor mode for displaying buffer text in a larger/smaller font than usual. 207 "Minor mode for displaying buffer text in a larger/smaller font.
208 208
209The amount of scaling is determined by the variable 209The amount of scaling is determined by the variable
210`text-scale-mode-amount': one step scales the global default 210`text-scale-mode-amount': one step scales the global default
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index a18b892efe8..54b17d58f33 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -639,8 +639,15 @@ a list of colors that the current display can handle."
639 (l list)) 639 (l list))
640 (while (cdr l) 640 (while (cdr l)
641 (if (and (facemenu-color-equal (car (car l)) (car (car (cdr l)))) 641 (if (and (facemenu-color-equal (car (car l)) (car (car (cdr l))))
642 (not (if (fboundp 'w32-default-color-map) 642 ;; On MS-Windows, there are logical colors that might have
643 (not (assoc (car (car l)) (w32-default-color-map)))))) 643 ;; the same value but different names and meanings. For
644 ;; example, `SystemMenuText' (the color w32 uses for the
645 ;; text in menu entries) and `SystemWindowText' (the default
646 ;; color w32 uses for the text in windows and dialogs) may
647 ;; be the same display color and be adjacent in the list.
648 ;; This makes them different to any other color. Bug#9722
649 (not (and (eq system-type 'windows-nt)
650 (string-match-p "^System" (car (car l))))))
644 (progn 651 (progn
645 (setcdr (car l) (cons (car (car (cdr l))) (cdr (car l)))) 652 (setcdr (car l) (cons (car (car (cdr l))) (cdr (car l))))
646 (setcdr l (cdr (cdr l)))) 653 (setcdr l (cdr (cdr l))))
diff --git a/lisp/faces.el b/lisp/faces.el
index d5f0ef90ee0..45173eb35da 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2366,6 +2366,10 @@ used to display the prompt text."
2366 '((((background light)) :background "black") 2366 '((((background light)) :background "black")
2367 (((background dark)) :background "white")) 2367 (((background dark)) :background "white"))
2368 "Basic face for the cursor color under X. 2368 "Basic face for the cursor color under X.
2369Currently, only the `:background' attribute is meaningful; all
2370other attributes are ignored. The cursor foreground color is
2371taken from the background color of the underlying text.
2372
2369Note: Other faces cannot inherit from the cursor face." 2373Note: Other faces cannot inherit from the cursor face."
2370 :version "21.1" 2374 :version "21.1"
2371 :group 'cursor 2375 :group 'cursor
diff --git a/lisp/files.el b/lisp/files.el
index 6321cff91fd..3ed9bd5a272 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4700,11 +4700,7 @@ and `view-read-only' is non-nil, enter view mode."
4700 (not (eq (get major-mode 'mode-class) 'special))) 4700 (not (eq (get major-mode 'mode-class) 'special)))
4701 (view-mode-enter)) 4701 (view-mode-enter))
4702 (t (setq buffer-read-only (not buffer-read-only)) 4702 (t (setq buffer-read-only (not buffer-read-only))
4703 (force-mode-line-update))) 4703 (force-mode-line-update)))))
4704 (if (memq (vc-backend buffer-file-name) '(RCS SCCS))
4705 (message "%s" (substitute-command-keys
4706 (concat "File is under version-control; "
4707 "use \\[vc-next-action] to check in/out"))))))
4708 4704
4709(defun insert-file (filename) 4705(defun insert-file (filename)
4710 "Insert contents of file FILENAME into buffer after point. 4706 "Insert contents of file FILENAME into buffer after point.
diff --git a/lisp/follow.el b/lisp/follow.el
index 94a542f1016..37295cc533b 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -484,10 +484,13 @@ Used by `follow-window-size-change'.")
484(put 'follow-mode 'permanent-local t) 484(put 'follow-mode 'permanent-local t)
485;;;###autoload 485;;;###autoload
486(define-minor-mode follow-mode 486(define-minor-mode follow-mode
487 "Minor mode that combines windows into one tall virtual window. 487 "Toggle Follow mode.
488With a prefix argument ARG, enable Follow mode if ARG is
489positive, and disable it otherwise. If called from Lisp, enable
490the mode if ARG is omitted or nil.
488 491
489The feeling of a \"virtual window\" has been accomplished by the use 492Follow mode is a minor mode that combines windows into one tall
490of two major techniques: 493virtual window. This is accomplished by two main techniques:
491 494
492* The windows always displays adjacent sections of the buffer. 495* The windows always displays adjacent sections of the buffer.
493 This means that whenever one window is moved, all the 496 This means that whenever one window is moved, all the
diff --git a/lisp/font-core.el b/lisp/font-core.el
index fcaaf33b718..0db17efd7b7 100644
--- a/lisp/font-core.el
+++ b/lisp/font-core.el
@@ -86,12 +86,12 @@ It will be passed one argument, which is the current value of
86 86
87;; The mode for which font-lock was initialized, or nil if none. 87;; The mode for which font-lock was initialized, or nil if none.
88(defvar font-lock-major-mode) 88(defvar font-lock-major-mode)
89
89(define-minor-mode font-lock-mode 90(define-minor-mode font-lock-mode
90 "Toggle Font Lock mode. 91 "Toggle syntax highlighting in this buffer (Font Lock mode).
91With arg, turn Font Lock mode off if and only if arg is a non-positive 92With a prefix argument ARG, enable Font Lock mode if ARG is
92number; if arg is nil, toggle Font Lock mode; anything else turns Font 93positive, and disable it otherwise. If called from Lisp, enable
93Lock on. 94the mode if ARG is omitted or nil.
94\(Font Lock is also known as \"syntax highlighting\".)
95 95
96When Font Lock mode is enabled, text is fontified as you type it: 96When Font Lock mode is enabled, text is fontified as you type it:
97 97
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index c37a9ae916e..2f4b7413dcc 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -228,8 +228,11 @@
228;; User variables. 228;; User variables.
229 229
230(defcustom font-lock-maximum-size 256000 230(defcustom font-lock-maximum-size 256000
231 "Maximum size of a buffer for buffer fontification. 231 "Maximum buffer size for unsupported buffer fontification.
232Only buffers less than this can be fontified when Font Lock mode is turned on. 232When `font-lock-support-mode' is nil, only buffers smaller than
233this are fontified. This variable has no effect if a Font Lock
234support mode (usually `jit-lock-mode') is enabled.
235
233If nil, means size is irrelevant. 236If nil, means size is irrelevant.
234If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE), 237If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
235where MAJOR-MODE is a symbol or t (meaning the default). For example: 238where MAJOR-MODE is a symbol or t (meaning the default). For example:
@@ -248,6 +251,7 @@ for buffers in Rmail mode, and size is irrelevant otherwise."
248 (const :tag "none" nil) 251 (const :tag "none" nil)
249 (integer :tag "size"))))) 252 (integer :tag "size")))))
250 :group 'font-lock) 253 :group 'font-lock)
254(make-obsolete-variable 'font-lock-maximum-size nil "24.1")
251 255
252(defcustom font-lock-maximum-decoration t 256(defcustom font-lock-maximum-decoration t
253 "Maximum decoration level for fontification. 257 "Maximum decoration level for fontification.
diff --git a/lisp/frame.el b/lisp/frame.el
index ab9b085f1d9..8359fed14a4 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1134,7 +1134,10 @@ To get the frame's current border color, use `frame-parameters'."
1134 1134
1135(define-minor-mode auto-raise-mode 1135(define-minor-mode auto-raise-mode
1136 "Toggle whether or not the selected frame should auto-raise. 1136 "Toggle whether or not the selected frame should auto-raise.
1137With ARG, turn auto-raise mode on if and only if ARG is positive. 1137With a prefix argument ARG, enable Auto Raise mode if ARG is
1138positive, and disable it otherwise. If called from Lisp, enable
1139the mode if ARG is omitted or nil.
1140
1138Note that this controls Emacs's own auto-raise feature. 1141Note that this controls Emacs's own auto-raise feature.
1139Some window managers allow you to enable auto-raise for certain windows. 1142Some window managers allow you to enable auto-raise for certain windows.
1140You can use that for Emacs windows if you wish, but if you do, 1143You can use that for Emacs windows if you wish, but if you do,
@@ -1145,7 +1148,10 @@ that is beyond the control of Emacs and this command has no effect on it."
1145 1148
1146(define-minor-mode auto-lower-mode 1149(define-minor-mode auto-lower-mode
1147 "Toggle whether or not the selected frame should auto-lower. 1150 "Toggle whether or not the selected frame should auto-lower.
1148With ARG, turn auto-lower mode on if and only if ARG is positive. 1151With a prefix argument ARG, enable Auto Lower mode if ARG is
1152positive, and disable it otherwise. If called from Lisp, enable
1153the mode if ARG is omitted or nil.
1154
1149Note that this controls Emacs's own auto-lower feature. 1155Note that this controls Emacs's own auto-lower feature.
1150Some window managers allow you to enable auto-lower for certain windows. 1156Some window managers allow you to enable auto-lower for certain windows.
1151You can use that for Emacs windows if you wish, but if you do, 1157You can use that for Emacs windows if you wish, but if you do,
@@ -1556,14 +1562,13 @@ itself as a pre-command hook."
1556 (setq blink-cursor-timer nil))) 1562 (setq blink-cursor-timer nil)))
1557 1563
1558(define-minor-mode blink-cursor-mode 1564(define-minor-mode blink-cursor-mode
1559 "Toggle blinking cursor mode. 1565 "Toggle cursor blinking (Blink Cursor mode).
1560With a numeric argument, turn blinking cursor mode on if ARG is positive, 1566With a prefix argument ARG, enable Blink Cursor mode if ARG is
1561otherwise turn it off. When blinking cursor mode is enabled, the 1567positive, and disable it otherwise. If called from Lisp, enable
1562cursor of the selected window blinks. 1568the mode if ARG is omitted or nil.
1563 1569
1564Note that this command is effective only when Emacs 1570This command is effective only on graphical frames. On text-only
1565displays through a window system, because then Emacs does its own 1571terminals, cursor blinking is controlled by the terminal."
1566cursor display. On a text-only terminal, this is not implemented."
1567 :init-value (not (or noninteractive 1572 :init-value (not (or noninteractive
1568 no-blinking-cursor 1573 no-blinking-cursor
1569 (eq system-type 'ms-dos) 1574 (eq system-type 'ms-dos)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index cc2568a3647..592d0671c26 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,9 +1,47 @@
12011-10-20 Chong Yidong <cyd@gnu.org>
2
3 * gnus-cite.el (gnus-message-citation-mode): Doc fix (in Emacs 24,
4 calling a minor mode from Lisp with nil arg enables it, so we have to
5 make the working a bit ambiguous here).
6
72011-10-18 Teodor Zlatanov <tzz@lifelogs.com>
8
9 * gnus-util.el (gnus-bound-and-true-p): Macro for XEmacs compatibility.
10 * nnir.el (nnir-mode): Use it.
11 * nnmairix.el (nnmairix-determine-original-group-from-registry):
12 Use it.
13
14 * nnir.el (gnus-registry-enabled): Defvar to keep the compiler happy.
15 * nnmairix.el (gnus-registry-enabled): Ditto.
16
172011-10-17 Dave Abrahams <dave@boostpro.com>
18
19 * gnus-registry.el (gnus-registry-enabled): Add new variable. (Bug#9691)
20 (gnus-registry-install-shortcuts): Set `gnus-registry-install' to 'ask
21 only while we need to find out if it should be t or nil.
22 (gnus-registry-initialize): Don't set `gnus-registry-install' to t.
23 (gnus-registry-install-hooks): Set `gnus-registry-enabled' to t when
24 the registry is installed. Set it to nil when it's unloaded.
25 (gnus-registry-install-p): Provide user guidance for the initial value
26 of `gnus-registry-install' when it's 'ask, otherwise return its value.
27 * nnregistry.el (nnregistry-open-server, nnregistry-server-opened):
28 Use `gnus-registry-enabled' instead of `gnus-registry-install'.
29 * nnmairix.el (nnmairix-determine-original-group-from-registry):
30 Use `gnus-registry-enabled' instead of `gnus-registry-install'.
31 * nnir.el (nnir-mode): Use `gnus-registry-enabled' instead of
32 `gnus-registry-install'.
33
12011-10-17 Daiki Ueno <ueno@unixuser.org> 342011-10-17 Daiki Ueno <ueno@unixuser.org>
2 35
36 * mml2015.el (mml2015-epg-find-usable-key): Add comment about the
37 previous change.
38 * mml1991.el (mml1991-epg-find-usable-key): Skip the whole key if the
39 primary key is marked as disabled.
40
412011-10-17 Christian von Roques <roques@mti.ag> (tiny change)
42
3 * mml2015.el (mml2015-epg-find-usable-key): Skip the whole key if the 43 * mml2015.el (mml2015-epg-find-usable-key): Skip the whole key if the
4 primary key is marked as disabled. 44 primary key is marked as disabled.
5 * mml1991.el (mml1991-epg-find-usable-key): Ditto.
6 Thanks to Christian von Roques <roques@mti.ag>.
7 45
82011-10-11 Andreas Schwab <schwab@linux-m68k.org> 462011-10-11 Andreas Schwab <schwab@linux-m68k.org>
9 47
@@ -13071,13 +13109,11 @@
13071 (mml-secure-cache-passphrase): New user option. 13109 (mml-secure-cache-passphrase): New user option.
13072 (mml-secure-passphrase-cache-expiry): New user option. 13110 (mml-secure-passphrase-cache-expiry): New user option.
13073 13111
130742006-07-24 Daiki Ueno <ueno@unixuser.org> 131122006-07-24 David Smith <davidsmith@acm.org> (tiny change)
13113 Andreas Vögele <andreas@altroot.de> (tiny change)
13075 13114
13076 * pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8 13115 * pgg-def.el (pgg-truncate-key-identifier):
13077 letters from the end. Thanks to "David Smith" <davidsmith@acm.org> and 13116 Truncate the key ID to 8 letters from the end.
13078 andreas@altroot.de (Andreas Vögele).
13079
13080 FIXME: Use `tiny change'?
13081 13117
130822006-07-19 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de> 131182006-07-19 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
13083 13119
@@ -19773,7 +19809,7 @@
19773 19809
19774 * dns.el (dns-read-type): Add support for SVR. (small patch) 19810 * dns.el (dns-read-type): Add support for SVR. (small patch)
19775 19811
197762004-05-20 Teodor Zlatanov <tzz@lifelogs.com> 198122004-05-20 Adam Sjøgren <asjo@koldfront.dk>
19777 19813
19778 * spam.el (spam-use-crm114, spam-crm114, spam-crm114-program) 19814 * spam.el (spam-use-crm114, spam-crm114, spam-crm114-program)
19779 (spam-crm114-header, spam-crm114-spam-switch) 19815 (spam-crm114-header, spam-crm114-spam-switch)
@@ -19790,7 +19826,8 @@
19790 (spam-crm114-unregister-spam-routine) 19826 (spam-crm114-unregister-spam-routine)
19791 (spam-crm114-register-ham-routine) 19827 (spam-crm114-register-ham-routine)
19792 (spam-crm114-unregister-ham-routine): Add CRM114 support. 19828 (spam-crm114-unregister-ham-routine): Add CRM114 support.
19793 From asjo@koldfront.dk (Adam Sjøgren). 19829
198302004-05-20 Teodor Zlatanov <tzz@lifelogs.com>
19794 19831
19795 * gnus.el: Add spam-use-crm114. 19832 * gnus.el: Add spam-use-crm114.
19796 19833
@@ -19927,10 +19964,13 @@
19927 19964
199282004-05-18 Reiner Steib <Reiner.Steib@gmx.de> 199652004-05-18 Reiner Steib <Reiner.Steib@gmx.de>
19929 19966
19967 * gnus-picon.el (gnus-picon-insert-glyph):
19968 Add optional `nostring' argument.
19969
199702004-05-18 Jesper Harder <harder@ifa.au.dk>
19971
19930 * gnus-picon.el (gnus-picon-style): New variable. 19972 * gnus-picon.el (gnus-picon-style): New variable.
19931 (gnus-picon-insert-glyph): Add optional `nostring' argument.
19932 (gnus-picon-transform-address): Support `gnus-picon-style'. 19973 (gnus-picon-transform-address): Support `gnus-picon-style'.
19933 From Jesper Harder <harder@ifa.au.dk>.
19934 19974
199352004-05-18 Lars Magne Ingebrigtsen <larsi@gnus.org> 199752004-05-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
19936 19976
@@ -20189,13 +20229,10 @@
20189 * spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage. 20229 * spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage.
20190 Use mapc when appropriate. 20230 Use mapc when appropriate.
20191 20231
201922004-04-22 Teodor Zlatanov <tzz@lifelogs.com> 202322004-04-22 Dan Christensen <jdc@uwo.ca>
20193 20233 Adam Sjøgren <asjo@koldfront.dk>
20194 FIXME: Make separate entries for each person. 20234 Wes Hardaker <wes@hardakers.net>
20195 20235 Michael Shields <shields@msrl.com>
20196 From Dan Christensen <jdc@uwo.ca>, asjo@koldfront.dk (Adam
20197 Sjøgren), Wes Hardaker <wes@hardakers.net>, and Michael Shields
20198 <shields@msrl.com>:
20199 20236
20200 * spam.el (spam-necessary-extra-headers): Get the extra headers we 20237 * spam.el (spam-necessary-extra-headers): Get the extra headers we
20201 may need for spam sorting and scoring. 20238 may need for spam sorting and scoring.
@@ -20205,7 +20242,7 @@
20205 sorting. 20242 sorting.
20206 (spam-extra-header-to-number): Add function to get a score from a 20243 (spam-extra-header-to-number): Add function to get a score from a
20207 header. 20244 header.
20208 (spam-summary-score): Add function to get a numeric score from the 20245 (spam-summary-score): Add function to get a numeric score from the
20209 headers. 20246 headers.
20210 (spam-generic-score): Fix function doc, was in wrong place. 20247 (spam-generic-score): Fix function doc, was in wrong place.
20211 (spam-initialize): Take symbols when it's run, and install the 20248 (spam-initialize): Take symbols when it's run, and install the
diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el
index d205437b811..7c36311356f 100644
--- a/lisp/gnus/gnus-cite.el
+++ b/lisp/gnus/gnus-cite.el
@@ -1224,13 +1224,8 @@ Returns nil if there is no such line before LIMIT, t otherwise."
1224 (autoload 'font-lock-set-defaults "font-lock"))) 1224 (autoload 'font-lock-set-defaults "font-lock")))
1225 1225
1226(define-minor-mode gnus-message-citation-mode 1226(define-minor-mode gnus-message-citation-mode
1227 "Toggle `gnus-message-citation-mode' in current buffer. 1227 "Minor mode providing more font-lock support for nested citations.
1228This buffer local minor mode provides additional font-lock support for 1228When enabled, it automatically turns on `font-lock-mode'."
1229nested citations.
1230With prefix ARG, turn `gnus-message-citation-mode' on if and only if ARG
1231is positive.
1232Automatically turn `font-lock-mode' on when `gnus-message-citation-mode'
1233is turned on."
1234 nil ;; init-value 1229 nil ;; init-value
1235 "" ;; lighter 1230 "" ;; lighter
1236 nil ;; keymap 1231 nil ;; keymap
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index f8ff52f128f..652e816e56a 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -164,6 +164,8 @@ nnmairix groups are specifically excluded because they are ephemeral."
164 (const :tag "Always Install" t) 164 (const :tag "Always Install" t)
165 (const :tag "Ask Me" ask))) 165 (const :tag "Ask Me" ask)))
166 166
167(defvar gnus-registry-enabled)
168
167(defvar gnus-summary-misc-menu) ;; Avoid byte compiler warning. 169(defvar gnus-summary-misc-menu) ;; Avoid byte compiler warning.
168 170
169(defvar gnus-registry-misc-menus nil) ; ugly way to keep the menus 171(defvar gnus-registry-misc-menus nil) ; ugly way to keep the menus
@@ -873,8 +875,9 @@ Uses `gnus-registry-marks' to find what shortcuts to install."
873 875
874 ;; if this is called and the user doesn't want the 876 ;; if this is called and the user doesn't want the
875 ;; registry enabled, we'll ask anyhow 877 ;; registry enabled, we'll ask anyhow
876 (when (eq gnus-registry-install nil) 878 (unless gnus-registry-install
877 (setq gnus-registry-install 'ask)) 879 (let ((gnus-registry-install 'ask))
880 (gnus-registry-install-p)))
878 881
879 ;; now the user is asked if gnus-registry-install is 'ask 882 ;; now the user is asked if gnus-registry-install is 'ask
880 (when (gnus-registry-install-p) 883 (when (gnus-registry-install-p)
@@ -1151,7 +1154,6 @@ only the last one's marks are returned."
1151"Initialize the Gnus registry." 1154"Initialize the Gnus registry."
1152 (interactive) 1155 (interactive)
1153 (gnus-message 5 "Initializing the registry") 1156 (gnus-message 5 "Initializing the registry")
1154 (setq gnus-registry-install t) ; in case it was 'ask or nil
1155 (gnus-registry-install-hooks) 1157 (gnus-registry-install-hooks)
1156 (gnus-registry-install-shortcuts) 1158 (gnus-registry-install-shortcuts)
1157 (gnus-registry-read)) 1159 (gnus-registry-read))
@@ -1160,6 +1162,7 @@ only the last one's marks are returned."
1160(defun gnus-registry-install-hooks () 1162(defun gnus-registry-install-hooks ()
1161 "Install the registry hooks." 1163 "Install the registry hooks."
1162 (interactive) 1164 (interactive)
1165 (setq gnus-registry-enabled t)
1163 (add-hook 'gnus-summary-article-move-hook 'gnus-registry-action) 1166 (add-hook 'gnus-summary-article-move-hook 'gnus-registry-action)
1164 (add-hook 'gnus-summary-article-delete-hook 'gnus-registry-action) 1167 (add-hook 'gnus-summary-article-delete-hook 'gnus-registry-action)
1165 (add-hook 'gnus-summary-article-expire-hook 'gnus-registry-action) 1168 (add-hook 'gnus-summary-article-expire-hook 'gnus-registry-action)
@@ -1181,23 +1184,25 @@ only the last one's marks are returned."
1181 (remove-hook 'gnus-save-newsrc-hook 'gnus-registry-save) 1184 (remove-hook 'gnus-save-newsrc-hook 'gnus-registry-save)
1182 (remove-hook 'gnus-read-newsrc-el-hook 'gnus-registry-read) 1185 (remove-hook 'gnus-read-newsrc-el-hook 'gnus-registry-read)
1183 1186
1184 (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids)) 1187 (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids)
1188 (setq gnus-registry-enabled nil))
1185 1189
1186(add-hook 'gnus-registry-unload-hook 'gnus-registry-unload-hook) 1190(add-hook 'gnus-registry-unload-hook 'gnus-registry-unload-hook)
1187 1191
1188(defun gnus-registry-install-p () 1192(defun gnus-registry-install-p ()
1193 "If the registry is not already enabled, and `gnus-registry-install' is t,
1194the registry is enabled. If `gnus-registry-install' is `ask',
1195the user is asked first. Returns non-nil iff the registry is enabled."
1189 (interactive) 1196 (interactive)
1190 (when (eq gnus-registry-install 'ask) 1197 (unless gnus-registry-enabled
1191 (setq gnus-registry-install 1198 (when (if (eq gnus-registry-install 'ask)
1192 (gnus-y-or-n-p 1199 (gnus-y-or-n-p
1193 (concat "Enable the Gnus registry? " 1200 (concat "Enable the Gnus registry? "
1194 "See the variable `gnus-registry-install' " 1201 "See the variable `gnus-registry-install' "
1195 "to get rid of this query permanently. "))) 1202 "to get rid of this query permanently. "))
1196 (when gnus-registry-install 1203 gnus-registry-install)
1197 ;; we just set gnus-registry-install to t, so initialize the registry!
1198 (gnus-registry-initialize))) 1204 (gnus-registry-initialize)))
1199;;; we could call it here: (customize-variable 'gnus-registry-install) 1205 gnus-registry-enabled)
1200 gnus-registry-install)
1201 1206
1202;; TODO: a few things 1207;; TODO: a few things
1203 1208
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index e9d6ba423fd..9c5e6e8312b 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1986,6 +1986,14 @@ definitions to shadow the loaded ones for use in file byte-compilation."
1986 (gnus-macroexpand-all expanded environment))) 1986 (gnus-macroexpand-all expanded environment)))
1987 form)))) 1987 form))))
1988 1988
1989(eval-when-compile
1990 ;; This is unnecessary in the compiled version as it is a macro.
1991 (if (fboundp 'bound-and-true-p)
1992 (defalias 'gnus-bound-and-true-p 'bound-and-true-p)
1993 (defmacro gnus-bound-and-true-p (var)
1994 "Return the value of symbol VAR if it is bound, else nil."
1995 `(and (boundp (quote ,var)) ,var))))
1996
1989(provide 'gnus-util) 1997(provide 'gnus-util)
1990 1998
1991;;; gnus-util.el ends here 1999;;; gnus-util.el ends here
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 0be6a17d50e..2d3c05864e8 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -290,9 +290,10 @@ is `(valuefunc member)'."
290 (autoload 'nnimap-command "nnimap") 290 (autoload 'nnimap-command "nnimap")
291 (autoload 'nnimap-possibly-change-group "nnimap") 291 (autoload 'nnimap-possibly-change-group "nnimap")
292 (autoload 'nnimap-make-thread-query "nnimap") 292 (autoload 'nnimap-make-thread-query "nnimap")
293 (autoload 'gnus-registry-action "gnus-registry") 293 (autoload 'gnus-registry-action "gnus-registry"))
294 (defvar gnus-registry-install))
295 294
295;; Suppress byte-compiler warning `reference to free variable'
296(defvar gnus-registry-enabled)
296 297
297(nnoo-declare nnir) 298(nnoo-declare nnir)
298(nnoo-define-basics nnir) 299(nnoo-define-basics nnir)
@@ -1741,8 +1742,7 @@ environment unless `not-global' is non-nil."
1741 (when (eq (car (gnus-find-method-for-group gnus-newsgroup-name)) 'nnir) 1742 (when (eq (car (gnus-find-method-for-group gnus-newsgroup-name)) 'nnir)
1742 (setq gnus-summary-line-format 1743 (setq gnus-summary-line-format
1743 (or nnir-summary-line-format gnus-summary-line-format)) 1744 (or nnir-summary-line-format gnus-summary-line-format))
1744 (when (and (boundp 'gnus-registry-install) 1745 (when (gnus-bound-and-true-p gnus-registry-enabled)
1745 (eq gnus-registry-install t))
1746 (remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t) 1746 (remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
1747 (remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t) 1747 (remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
1748 (remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t) 1748 (remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 3d1ac02b6aa..1bf28c5d32f 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -603,9 +603,11 @@ Other back ends might or might not work.")
603 nil)) 603 nil))
604 604
605;; Silence byte-compiler. 605;; Silence byte-compiler.
606(defvar gnus-registry-install)
607(autoload 'gnus-registry-get-id-key "gnus-registry") 606(autoload 'gnus-registry-get-id-key "gnus-registry")
608 607
608;; Suppress byte-compiler warning `reference to free variable'
609(defvar gnus-registry-enabled)
610
609(deffoo nnmairix-request-set-mark (group actions &optional server) 611(deffoo nnmairix-request-set-mark (group actions &optional server)
610 (when server 612 (when server
611 (nnmairix-open-server server)) 613 (nnmairix-open-server server))
@@ -1636,8 +1638,7 @@ search in raw mode."
1636 1638
1637(defun nnmairix-determine-original-group-from-registry (mid) 1639(defun nnmairix-determine-original-group-from-registry (mid)
1638 "Try to determinale original group for message-id MID from the registry." 1640 "Try to determinale original group for message-id MID from the registry."
1639 (when (and (boundp 'gnus-registry-install) 1641 (when (gnus-bound-and-true-p gnus-registry-enabled)
1640 gnus-registry-install)
1641 (unless (string-match "^<" mid) 1642 (unless (string-match "^<" mid)
1642 (set mid (concat "<" mid))) 1643 (set mid (concat "<" mid)))
1643 (unless (string-match ">$" mid) 1644 (unless (string-match ">$" mid)
diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el
index 359050c356c..75a640a428a 100644
--- a/lisp/gnus/nnregistry.el
+++ b/lisp/gnus/nnregistry.el
@@ -36,8 +36,11 @@
36 36
37(nnoo-declare nnregistry) 37(nnoo-declare nnregistry)
38 38
39;; Suppress byte-compiler warning `reference to free variable'
40(defvar gnus-registry-enabled)
41
39(deffoo nnregistry-server-opened (server) 42(deffoo nnregistry-server-opened (server)
40 (eq gnus-registry-install t)) 43 gnus-registry-enabled)
41 44
42(deffoo nnregistry-close-server (server) 45(deffoo nnregistry-close-server (server)
43 t) 46 t)
@@ -46,7 +49,7 @@
46 nil) 49 nil)
47 50
48(deffoo nnregistry-open-server (server &optional defs) 51(deffoo nnregistry-open-server (server &optional defs)
49 (eq gnus-registry-install t)) 52 gnus-registry-enabled)
50 53
51(defvar nnregistry-within-nnregistry nil) 54(defvar nnregistry-within-nnregistry nil)
52 55
diff --git a/lisp/help.el b/lisp/help.el
index e2af0759a65..508a4e3262c 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -977,13 +977,15 @@ function is called, the window to be resized is selected."
977 :version "20.4") 977 :version "20.4")
978 978
979(define-minor-mode temp-buffer-resize-mode 979(define-minor-mode temp-buffer-resize-mode
980 "Toggle mode which makes windows smaller for temporary buffers. 980 "Toggle auto-shrinking temp buffer windows (Temp Buffer Resize mode).
981With prefix argument ARG, turn the resizing of windows displaying 981With a prefix argument ARG, enable Temp Buffer Resize mode if ARG
982temporary buffers on if ARG is positive or off otherwise. 982is positive, and disable it otherwise. If called from Lisp,
983 983enable the mode if ARG is omitted or nil.
984This mode makes a window the right height for its contents, but 984
985never more than `temp-buffer-max-height' nor less than 985When Temp Buffer Resize mode is enabled, the windows in which we
986`window-min-height'. 986show a temporary buffer are automatically reduced in height to
987fit the buffer's contents, but never more than
988`temp-buffer-max-height' nor less than `window-min-height'.
987 989
988This mode is used by `help', `apropos' and `completion' buffers, 990This mode is used by `help', `apropos' and `completion' buffers,
989and some others." 991and some others."
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index a254abe33ac..f659a7e8eef 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -283,14 +283,17 @@ a library is being loaded.")
283 283
284;;;###autoload 284;;;###autoload
285(define-minor-mode hi-lock-mode 285(define-minor-mode hi-lock-mode
286 "Toggle minor mode for interactively adding font-lock highlighting patterns. 286 "Toggle selective highlighting of patterns (Hi Lock mode).
287 287With a prefix argument ARG, enable Hi Lock mode if ARG is
288If ARG positive, turn hi-lock on. Issuing a hi-lock command will also 288positive, and disable it otherwise. If called from Lisp, enable
289turn hi-lock on. To turn hi-lock on in all buffers use 289the mode if ARG is omitted or nil.
290`global-hi-lock-mode' or in your .emacs file (global-hi-lock-mode 1). 290
291When hi-lock is turned on, a \"Regexp Highlighting\" submenu is added 291Issuing one the highlighting commands listed below will
292to the \"Edit\" menu. The commands in the submenu, which can be 292automatically enable Hi Lock mode. To enable Hi Lock mode in all
293called interactively, are: 293buffers, use `global-hi-lock-mode' or add (global-hi-lock-mode 1)
294to your init file. When Hi Lock mode is enabled, a \"Regexp
295Highlighting\" submenu is added to the \"Edit\" menu. The
296commands in the submenu, which can be called interactively, are:
294 297
295\\[highlight-regexp] REGEXP FACE 298\\[highlight-regexp] REGEXP FACE
296 Highlight matches of pattern REGEXP in current buffer with FACE. 299 Highlight matches of pattern REGEXP in current buffer with FACE.
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 041c1ee938b..46db4280688 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -326,14 +326,15 @@ remove it from existing buffers."
326 326
327;;;###autoload 327;;;###autoload
328(define-minor-mode highlight-changes-mode 328(define-minor-mode highlight-changes-mode
329 "Toggle Highlight Changes mode. 329 "Toggle highlighting changes in this buffer (Highlight Changes mode).
330With a prefix argument ARG, enable Highlight Changes mode if ARG
331is positive, and disable it otherwise. If called from Lisp,
332enable the mode if ARG is omitted or nil.
330 333
331With ARG, turn Highlight Changes mode on if and only if arg is positive. 334When Highlight Changes is enabled, changes are marked with a text
332 335property. Normally they are displayed in a distinctive face, but
333In Highlight Changes mode changes are recorded with a text property. 336command \\[highlight-changes-visible-mode] can be used to toggles
334Normally they are displayed in a distinctive face, but command 337this on and off.
335\\[highlight-changes-visible-mode] can be used to toggles this
336on and off.
337 338
338Other functions for buffers in this mode include: 339Other functions for buffers in this mode include:
339\\[highlight-changes-next-change] - move point to beginning of next change 340\\[highlight-changes-next-change] - move point to beginning of next change
@@ -366,14 +367,17 @@ buffer with the contents of a file
366 367
367;;;###autoload 368;;;###autoload
368(define-minor-mode highlight-changes-visible-mode 369(define-minor-mode highlight-changes-visible-mode
369 "Toggle visiblility of changes when buffer is in Highlight Changes mode. 370 "Toggle visiblility of highlighting due to Highlight Changes mode.
371With a prefix argument ARG, enable Highlight Changes Visible mode
372if ARG is positive, and disable it otherwise. If called from
373Lisp, enable the mode if ARG is omitted or nil.
370 374
371This mode only has an effect when Highlight Changes mode is on. 375Highlight Changes Visible mode only has an effect when Highlight
372It allows toggling between whether or not the changed text is displayed 376Changes mode is on. When enabled, the changed text is displayed
373in a distinctive face. 377in a distinctive face.
374 378
375The default value can be customized with variable 379The default value can be customized with variable
376`highlight-changes-visibility-initial-state' 380`highlight-changes-visibility-initial-state'.
377 381
378This command does not itself set highlight-changes mode." 382This command does not itself set highlight-changes mode."
379 383
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 846f5f95187..b535398f107 100644
--- a/lisp/hl-line.el
+++ b/lisp/hl-line.el
@@ -124,10 +124,13 @@ This variable is expected to be made buffer-local by modes.")
124 124
125;;;###autoload 125;;;###autoload
126(define-minor-mode hl-line-mode 126(define-minor-mode hl-line-mode
127 "Buffer-local minor mode to highlight the line about point. 127 "Toggle highlighting of the current line (Hl-Line mode).
128With ARG, turn Hl-Line mode on if ARG is positive, off otherwise. 128With a prefix argument ARG, enable Hl-Line mode if ARG is
129positive, and disable it otherwise. If called from Lisp, enable
130the mode if ARG is omitted or nil.
129 131
130If `hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the 132Hl-Line mode is a buffer-local minor mode. If
133`hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the
131line about the buffer's point in all windows. Caveat: the 134line about the buffer's point in all windows. Caveat: the
132buffer's point might be different from the point of a 135buffer's point might be different from the point of a
133non-selected window. Hl-Line mode uses the function 136non-selected window. Hl-Line mode uses the function
@@ -171,8 +174,10 @@ addition to `hl-line-highlight' on `post-command-hook'."
171 174
172;;;###autoload 175;;;###autoload
173(define-minor-mode global-hl-line-mode 176(define-minor-mode global-hl-line-mode
174 "Global minor mode to highlight the line about point in the current window. 177 "Toggle line highlighting in all buffers (Global Hl-Line mode).
175With ARG, turn Global-Hl-Line mode on if ARG is positive, off otherwise. 178With a prefix argument ARG, enable Global Hl-Line mode if ARG is
179positive, and disable it otherwise. If called from Lisp, enable
180the mode if ARG is omitted or nil.
176 181
177If `global-hl-line-sticky-flag' is non-nil, Global Hl-Line mode 182If `global-hl-line-sticky-flag' is non-nil, Global Hl-Line mode
178highlights the line about the current buffer's point in all 183highlights the line about the current buffer's point in all
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 073efaeee2a..6c8db872c0b 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -217,8 +217,10 @@ Currently, this only applies to `ibuffer-saved-filters' and
217 217
218;;;###autoload 218;;;###autoload
219(define-minor-mode ibuffer-auto-mode 219(define-minor-mode ibuffer-auto-mode
220 "Toggle use of Ibuffer's auto-update facility. 220 "Toggle use of Ibuffer's auto-update facility (Ibuffer Auto mode).
221With numeric ARG, enable auto-update if and only if ARG is positive." 221With a prefix argument ARG, enable Ibuffer Auto mode if ARG is
222positive, and disable it otherwise. If called from Lisp, enable
223the mode if ARG is omitted or nil."
222 nil nil nil 224 nil nil nil
223 (unless (derived-mode-p 'ibuffer-mode) 225 (unless (derived-mode-p 'ibuffer-mode)
224 (error "This buffer is not in Ibuffer mode")) 226 (error "This buffer is not in Ibuffer mode"))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 5a86508e144..17ddddbd17a 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -2648,12 +2648,14 @@ will be inserted before the group at point."
2648;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group 2648;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group
2649;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group 2649;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group
2650;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode 2650;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode
2651;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "617b36fc8479547d679cf0103f82e3ff") 2651;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "25e69a1e030791b3a3e7d91d4377173a")
2652;;; Generated autoloads from ibuf-ext.el 2652;;; Generated autoloads from ibuf-ext.el
2653 2653
2654(autoload 'ibuffer-auto-mode "ibuf-ext" "\ 2654(autoload 'ibuffer-auto-mode "ibuf-ext" "\
2655Toggle use of Ibuffer's auto-update facility. 2655Toggle use of Ibuffer's auto-update facility (Ibuffer Auto mode).
2656With numeric ARG, enable auto-update if and only if ARG is positive. 2656With a prefix argument ARG, enable Ibuffer Auto mode if ARG is
2657positive, and disable it otherwise. If called from Lisp, enable
2658the mode if ARG is omitted or nil.
2657 2659
2658\(fn &optional ARG)" t nil) 2660\(fn &optional ARG)" t nil)
2659 2661
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index bdd19194c22..53876f48a06 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -172,9 +172,10 @@ except those on this list.")
172;;;_ > icomplete-mode (&optional prefix) 172;;;_ > icomplete-mode (&optional prefix)
173;;;###autoload 173;;;###autoload
174(define-minor-mode icomplete-mode 174(define-minor-mode icomplete-mode
175 "Toggle incremental minibuffer completion for this Emacs session. 175 "Toggle incremental minibuffer completion (Icomplete mode).
176With a numeric argument, turn Icomplete mode on if ARG is positive, 176With a prefix argument ARG, enable Icomplete mode if ARG is
177otherwise turn it off." 177positive, and disable it otherwise. If called from Lisp, enable
178the mode if ARG is omitted or nil."
178 :global t :group 'icomplete 179 :global t :group 'icomplete
179 (if icomplete-mode 180 (if icomplete-mode
180 ;; The following is not really necessary after first time - 181 ;; The following is not really necessary after first time -
diff --git a/lisp/ido.el b/lisp/ido.el
index 46ac5784d0e..88599013ce6 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -461,12 +461,6 @@ See `ido-default-file-method' for details."
461 (const :tag "Show in other frame" other-frame) 461 (const :tag "Show in other frame" other-frame)
462 (const :tag "Ask to show in other frame" maybe-frame) 462 (const :tag "Ask to show in other frame" maybe-frame)
463 (const :tag "Raise frame if already shown" raise-frame)) 463 (const :tag "Raise frame if already shown" raise-frame))
464 :type '(choice (const selected-window)
465 (const other-window)
466 (const display)
467 (const other-frame)
468 (const maybe-frame)
469 (const raise-frame))
470 :group 'ido) 464 :group 'ido)
471 465
472(defcustom ido-enable-flex-matching nil 466(defcustom ido-enable-flex-matching nil
@@ -1475,8 +1469,10 @@ Removes badly formatted data and ignored directories."
1475 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)) 1469 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
1476 1470
1477(define-minor-mode ido-everywhere 1471(define-minor-mode ido-everywhere
1478 "Toggle using ido-mode everywhere file and directory names are read. 1472 "Toggle use of Ido for all buffer/file reading.
1479With ARG, turn ido-mode on if arg is positive, off otherwise." 1473With a prefix argument ARG, enable this feature if ARG is
1474positive, and disable it otherwise. If called from Lisp, enable
1475the mode if ARG is omitted or nil."
1480 :global t 1476 :global t
1481 :group 'ido 1477 :group 'ido
1482 (when (get 'ido-everywhere 'file) 1478 (when (get 'ido-everywhere 'file)
diff --git a/lisp/image-file.el b/lisp/image-file.el
index bd1c101d529..52012b12a56 100644
--- a/lisp/image-file.el
+++ b/lisp/image-file.el
@@ -178,11 +178,12 @@ Optional argument ARGS are the arguments to call FUNCTION with."
178 178
179;;;###autoload 179;;;###autoload
180(define-minor-mode auto-image-file-mode 180(define-minor-mode auto-image-file-mode
181 "Toggle visiting of image files as images. 181 "Toggle visiting of image files as images (Auto Image File mode).
182With prefix argument ARG, turn on if positive, otherwise off. 182With a prefix argument ARG, enable Auto Image File mode if ARG is
183Returns non-nil if the new state is enabled. 183positive, and disable it otherwise. If called from Lisp, enable
184the mode if ARG is omitted or nil.
184 185
185Image files are those whose name has an extension in 186An image file is one whose name has an extension in
186`image-file-name-extensions', or matches a regexp in 187`image-file-name-extensions', or matches a regexp in
187`image-file-name-regexps'." 188`image-file-name-regexps'."
188 :global t 189 :global t
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 0995048fce5..30223e69ae0 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -396,11 +396,14 @@ to toggle between display as an image and display as text."
396 396
397;;;###autoload 397;;;###autoload
398(define-minor-mode image-minor-mode 398(define-minor-mode image-minor-mode
399 "Toggle Image minor mode. 399 "Toggle Image minor mode in this buffer.
400With arg, turn Image minor mode on if arg is positive, off otherwise. 400With a prefix argument ARG, enable Image minor mode if ARG is
401It provides the key \\<image-mode-map>\\[image-toggle-display] \ 401positive, and disable it otherwise. If called from Lisp, enable
402to switch back to `image-mode' 402the mode if ARG is omitted or nil.
403to display an image file as the actual image." 403
404Image minor mode provides the key \\<image-mode-map>\\[image-toggle-display],
405to switch back to `image-mode' and display an image file as the
406actual image."
404 nil (:eval (if image-type (format " Image[%s]" image-type) " Image")) 407 nil (:eval (if image-type (format " Image[%s]" image-type) " Image"))
405 image-minor-mode-map 408 image-minor-mode-map
406 :group 'image 409 :group 'image
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 4a387a233a0..cac37b3b8c5 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -2403,8 +2403,8 @@ This function is intended to be added to `auto-coding-functions'."
2403 ;; (allowing for whitespace at bob). Note: 'DOCTYPE NETSCAPE' is 2403 ;; (allowing for whitespace at bob). Note: 'DOCTYPE NETSCAPE' is
2404 ;; useful for Mozilla bookmark files. 2404 ;; useful for Mozilla bookmark files.
2405 (when (and (re-search-forward "\\`[[:space:]\n]*\\(<!doctype[[:space:]\n]+\\(html\\|netscape\\)\\|<html\\)" size t) 2405 (when (and (re-search-forward "\\`[[:space:]\n]*\\(<!doctype[[:space:]\n]+\\(html\\|netscape\\)\\|<html\\)" size t)
2406 (re-search-forward "<meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*charset=\\(.+?\\)[\"']" size t)) 2406 (re-search-forward "<meta\\s-+\\(http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*\\)?charset=[\"']?\\(.+?\\)[\"'\\s-/>]" size t))
2407 (let* ((match (match-string 1)) 2407 (let* ((match (match-string 2))
2408 (sym (intern (downcase match)))) 2408 (sym (intern (downcase match))))
2409 (if (coding-system-p sym) 2409 (if (coding-system-p sym)
2410 sym 2410 sym
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index 70dda5442d5..a7d3328526a 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -1424,10 +1424,13 @@ See the variable `iswitchb-case' for details."
1424 1424
1425;;;###autoload 1425;;;###autoload
1426(define-minor-mode iswitchb-mode 1426(define-minor-mode iswitchb-mode
1427 "Toggle Iswitchb global minor mode. 1427 "Toggle Iswitchb mode.
1428With arg, turn Iswitchb mode on if ARG is positive, otherwise turn it off. 1428With a prefix argument ARG, enable Iswitchb mode if ARG is
1429This mode enables switching between buffers using substrings. See 1429positive, and disable it otherwise. If called from Lisp, enable
1430`iswitchb' for details." 1430the mode if ARG is omitted or nil.
1431
1432Iswitchb mode is a global minor mode that enables switching
1433between buffers using substrings. See `iswitchb' for details."
1431 nil nil iswitchb-global-map :global t :group 'iswitchb 1434 nil nil iswitchb-global-map :global t :group 'iswitchb
1432 (if iswitchb-mode 1435 (if iswitchb-mode
1433 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup) 1436 (add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index d28fde0b214..bf312445f17 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -333,9 +333,14 @@ variables. Setting this through Custom does that automatically."
333 :group 'jka-compr) 333 :group 'jka-compr)
334 334
335(define-minor-mode auto-compression-mode 335(define-minor-mode auto-compression-mode
336 "Toggle automatic file compression and uncompression. 336 "Toggle Auto Compression mode.
337With prefix argument ARG, turn auto compression on if positive, else off. 337With a prefix argument ARG, enable Auto Compression mode if ARG
338Return the new status of auto compression (non-nil means on)." 338is positive, and disable it otherwise. If called from Lisp,
339enable the mode if ARG is omitted or nil.
340
341Auto Compression mode is a global minor mode. When enabled,
342compressed files are automatically uncompressed for reading, and
343compressed when writing."
339 :global t :init-value t :group 'jka-compr :version "22.1" 344 :global t :init-value t :group 'jka-compr :version "22.1"
340 (let* ((installed (jka-compr-installed-p)) 345 (let* ((installed (jka-compr-installed-p))
341 (flag auto-compression-mode)) 346 (flag auto-compression-mode))
diff --git a/lisp/json.el b/lisp/json.el
index 47448f4702a..33e985abbee 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2006-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
4 4
5;; Author: Edward O'Connor <ted@oconnor.cx> 5;; Author: Edward O'Connor <ted@oconnor.cx>
6;; Version: 1.2 6;; Version: 1.3
7;; Keywords: convenience 7;; Keywords: convenience
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -47,6 +47,7 @@
47;; other cleanups, bugfixes, and improvements. 47;; other cleanups, bugfixes, and improvements.
48;; 2006-12-29 - XEmacs support, from Aidan Kehoe <kehoea@parhasard.net>. 48;; 2006-12-29 - XEmacs support, from Aidan Kehoe <kehoea@parhasard.net>.
49;; 2008-02-21 - Installed in GNU Emacs. 49;; 2008-02-21 - Installed in GNU Emacs.
50;; 2011-10-17 - Patch `json-alist-p' and `json-plist-p' to avoid recursion -tzz
50 51
51;;; Code: 52;;; Code:
52 53
@@ -108,16 +109,20 @@ this around your call to `json-read' instead of `setq'ing it.")
108 109
109(defun json-alist-p (list) 110(defun json-alist-p (list)
110 "Non-null if and only if LIST is an alist." 111 "Non-null if and only if LIST is an alist."
111 (or (null list) 112 (while (consp list)
112 (and (consp (car list)) 113 (setq list (if (consp (car list))
113 (json-alist-p (cdr list))))) 114 (cdr list)
115 'not-alist)))
116 (null list))
114 117
115(defun json-plist-p (list) 118(defun json-plist-p (list)
116 "Non-null if and only if LIST is a plist." 119 "Non-null if and only if LIST is a plist."
117 (or (null list) 120 (while (consp list)
118 (and (keywordp (car list)) 121 (setq list (if (and (keywordp (car list))
119 (consp (cdr list)) 122 (consp (cdr list)))
120 (json-plist-p (cddr list))))) 123 (cddr list)
124 'not-plist)))
125 (null list))
121 126
122;; Reader utilities 127;; Reader utilities
123 128
diff --git a/lisp/linum.el b/lisp/linum.el
index db6e4c49977..4e58a1b7118 100644
--- a/lisp/linum.el
+++ b/lisp/linum.el
@@ -73,7 +73,12 @@ and you have to scroll or press \\[recenter-top-bottom] to update the numbers."
73 73
74;;;###autoload 74;;;###autoload
75(define-minor-mode linum-mode 75(define-minor-mode linum-mode
76 "Toggle display of line numbers in the left margin." 76 "Toggle display of line numbers in the left margin (Linum mode).
77With a prefix argument ARG, enable Linum mode if ARG is positive,
78and disable it otherwise. If called from Lisp, enable the mode
79if ARG is omitted or nil.
80
81Linum mode is a buffer-local minor mode."
77 :lighter "" ; for desktop.el 82 :lighter "" ; for desktop.el
78 (if linum-mode 83 (if linum-mode
79 (progn 84 (progn
diff --git a/lisp/longlines.el b/lisp/longlines.el
index f625d8fcac7..b4d15da78a7 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -95,21 +95,22 @@ This is used when `longlines-show-hard-newlines' is on."
95 95
96;;;###autoload 96;;;###autoload
97(define-minor-mode longlines-mode 97(define-minor-mode longlines-mode
98 "Minor mode to wrap long lines. 98 "Toggle Long Lines mode in this buffer.
99In Long Lines mode, long lines are wrapped if they extend beyond 99With a prefix argument ARG, enable Long Lines mode if ARG is
100`fill-column'. The soft newlines used for line wrapping will not 100positive, and disable it otherwise. If called from Lisp, enable
101show up when the text is yanked or saved to disk. 101the mode if ARG is omitted or nil.
102 102
103With no argument, this command toggles Long Lines mode. 103When Long Lines mode is enabled, long lines are wrapped if they
104With a prefix argument ARG, turn Long Lines minor mode on if ARG is positive, 104extend beyond `fill-column'. The soft newlines used for line
105otherwise turn it off. 105wrapping will not show up when the text is yanked or saved to
106 106disk.
107If the variable `longlines-auto-wrap' is non-nil, lines are automatically 107
108wrapped whenever the buffer is changed. You can always call 108If the variable `longlines-auto-wrap' is non-nil, lines are
109`fill-paragraph' to fill individual paragraphs. 109automatically wrapped whenever the buffer is changed. You can
110 110always call `fill-paragraph' to fill individual paragraphs.
111If the variable `longlines-show-hard-newlines' is non-nil, hard newlines 111
112are indicated with a symbol." 112If the variable `longlines-show-hard-newlines' is non-nil, hard
113newlines are indicated with a symbol."
113 :group 'longlines :lighter " ll" 114 :group 'longlines :lighter " ll"
114 (if longlines-mode 115 (if longlines-mode
115 ;; Turn on longlines mode 116 ;; Turn on longlines mode
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 8dac3be0e5f..0f1669562de 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -788,9 +788,14 @@ being set it is automatically widened."
788 788
789;;;###autoload 789;;;###autoload
790(define-minor-mode footnote-mode 790(define-minor-mode footnote-mode
791 "Toggle footnote minor mode. 791 "Toggle Footnote mode.
792This minor mode provides footnote support for `message-mode'. To get 792With a prefix argument ARG, enable Footnote mode if ARG is
793started, play around with the following keys: 793positive, and disable it otherwise. If called from Lisp, enable
794the mode if ARG is omitted or nil.
795
796Footnode mode is a buffer-local minor mode. If enabled, it
797provides footnote support for `message-mode'. To get started,
798play around with the following keys:
794\\{footnote-minor-mode-map}" 799\\{footnote-minor-mode-map}"
795 :lighter footnote-mode-line-string 800 :lighter footnote-mode-line-string
796 :keymap footnote-minor-mode-map 801 :keymap footnote-minor-mode-map
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index 901eb002dc1..2472b8a1870 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -133,7 +133,15 @@
133 133
134;;;###autoload 134;;;###autoload
135(define-minor-mode mail-abbrevs-mode 135(define-minor-mode mail-abbrevs-mode
136 "Non-nil means expand mail aliases as abbrevs, in certain message headers." 136 "Toggle abbrev expansion of mail aliases (Mail Abbrevs mode).
137With a prefix argument ARG, enable Mail Abbrevs mode if ARG is
138positive, and disable it otherwise. If called from Lisp, enable
139the mode if ARG is omitted or nil.
140
141Mail Abbrevs mode is a global minor mode. When enabled,
142abbrev-like expansion is performed when editing certain mail
143headers (those specified by `mail-abbrev-mode-regexp'), based on
144the entries in your `mail-personal-alias-file'."
137 :global t 145 :global t
138 :group 'mail-abbrev 146 :group 'mail-abbrev
139 :version "20.3" 147 :version "20.3"
diff --git a/lisp/master.el b/lisp/master.el
index 1ea0a24ca94..c3e9004ca0b 100644
--- a/lisp/master.el
+++ b/lisp/master.el
@@ -72,12 +72,12 @@ You can set this variable using `master-set-slave'.")
72;;;###autoload 72;;;###autoload
73(define-minor-mode master-mode 73(define-minor-mode master-mode
74 "Toggle Master mode. 74 "Toggle Master mode.
75With no argument, this command toggles the mode. 75With a prefix argument ARG, enable Master mode if ARG is
76Non-null prefix argument turns on the mode. 76positive, and disable it otherwise. If called from Lisp, enable
77Null prefix argument turns off the mode. 77the mode if ARG is omitted or nil.
78 78
79When Master mode is enabled, you can scroll the slave buffer using the 79When Master mode is enabled, you can scroll the slave buffer
80following commands: 80using the following commands:
81 81
82\\{master-mode-map} 82\\{master-mode-map}
83 83
diff --git a/lisp/mb-depth.el b/lisp/mb-depth.el
index 2ed692c1b84..22fd84a67aa 100644
--- a/lisp/mb-depth.el
+++ b/lisp/mb-depth.el
@@ -56,12 +56,14 @@ The prompt should already have been inserted."
56;;;###autoload 56;;;###autoload
57(define-minor-mode minibuffer-depth-indicate-mode 57(define-minor-mode minibuffer-depth-indicate-mode
58 "Toggle Minibuffer Depth Indication mode. 58 "Toggle Minibuffer Depth Indication mode.
59When active, any recursive use of the minibuffer will show 59With a prefix argument ARG, enable Minibuffer Depth Indication
60the recursion depth in the minibuffer prompt. This is only 60mode if ARG is positive, and disable it otherwise. If called
61useful if `enable-recursive-minibuffers' is non-nil. 61from Lisp, enable the mode if ARG is omitted or nil.
62 62
63With prefix argument ARG, turn on if positive, otherwise off. 63Minibuffer Depth Indication mode is a global minor mode. When
64Returns non-nil if the new state is enabled." 64enabled, any recursive use of the minibuffer will show the
65recursion depth in the minibuffer prompt. This is only useful if
66`enable-recursive-minibuffers' is non-nil."
65 :global t 67 :global t
66 :group 'minibuffer 68 :group 'minibuffer
67 (if minibuffer-depth-indicate-mode 69 (if minibuffer-depth-indicate-mode
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index eceb3afc147..75a2d70da5e 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -92,17 +92,25 @@
92 :visible (fboundp 'make-frame-command) 92 :visible (fboundp 'make-frame-command)
93 :help ,(purecopy "Open a new frame"))) 93 :help ,(purecopy "Open a new frame")))
94 94
95 (define-key menu [separator-frame]
96 menu-bar-separator)
97
95 (define-key menu [one-window] 98 (define-key menu [one-window]
96 `(menu-item ,(purecopy "Remove Splits") delete-other-windows 99 `(menu-item ,(purecopy "Remove Other Windows") delete-other-windows
97 :enable (not (one-window-p t nil)) 100 :enable (not (one-window-p t nil))
98 :help ,(purecopy 101 :help ,(purecopy "Make selected window fill whole frame")))
99 "Selected window grows to fill the whole frame")))
100 102
101 (define-key menu [split-window] 103 (define-key menu [new-window-on-right]
102 `(menu-item ,(purecopy "Split Window") split-window-vertically 104 `(menu-item ,(purecopy "New Window on Right") split-window-side-by-side
103 :enable (and (menu-bar-menu-frame-live-and-visible-p) 105 :enable (and (menu-bar-menu-frame-live-and-visible-p)
104 (menu-bar-non-minibuffer-window-p)) 106 (menu-bar-non-minibuffer-window-p))
105 :help ,(purecopy "Split selected window in two windows"))) 107 :help ,(purecopy "Make new window on right of selected one")))
108
109 (define-key menu [new-window-below]
110 `(menu-item ,(purecopy "New Window Below") split-window-above-each-other
111 :enable (and (menu-bar-menu-frame-live-and-visible-p)
112 (menu-bar-non-minibuffer-window-p))
113 :help ,(purecopy "Make new window below selected one")))
106 114
107 (define-key menu [separator-window] 115 (define-key menu [separator-window]
108 menu-bar-separator) 116 menu-bar-separator)
@@ -433,7 +441,7 @@
433 441
434(defvar menu-bar-edit-menu 442(defvar menu-bar-edit-menu
435 (let ((menu (make-sparse-keymap "Edit"))) 443 (let ((menu (make-sparse-keymap "Edit")))
436 444
437 (define-key menu [props] 445 (define-key menu [props]
438 `(menu-item ,(purecopy "Text Properties") facemenu-menu)) 446 `(menu-item ,(purecopy "Text Properties") facemenu-menu))
439 447
@@ -1645,7 +1653,7 @@ key, a click, or a menu-item")))
1645 1653
1646(defvar menu-bar-search-documentation-menu 1654(defvar menu-bar-search-documentation-menu
1647 (let ((menu (make-sparse-keymap "Search Documentation"))) 1655 (let ((menu (make-sparse-keymap "Search Documentation")))
1648 1656
1649 (define-key menu [search-documentation-strings] 1657 (define-key menu [search-documentation-strings]
1650 `(menu-item ,(purecopy "Search Documentation Strings...") apropos-documentation 1658 `(menu-item ,(purecopy "Search Documentation Strings...") apropos-documentation
1651 :help 1659 :help
@@ -2161,11 +2169,13 @@ It must accept a buffer as its only required argument.")
2161 :help ,(purecopy "Put previous minibuffer history element in the minibuffer")))) 2169 :help ,(purecopy "Put previous minibuffer history element in the minibuffer"))))
2162 2170
2163(define-minor-mode menu-bar-mode 2171(define-minor-mode menu-bar-mode
2164 "Toggle display of a menu bar on each frame. 2172 "Toggle display of a menu bar on each frame (Menu Bar mode).
2173With a prefix argument ARG, enable Menu Bar mode if ARG is
2174positive, and disable it otherwise. If called from Lisp, enable
2175Menu Bar mode if ARG is omitted or nil.
2176
2165This command applies to all frames that exist and frames to be 2177This command applies to all frames that exist and frames to be
2166created in the future. 2178created in the future."
2167With a numeric argument, if the argument is positive,
2168turn on menu bars; otherwise, turn off menu bars."
2169 :init-value t 2179 :init-value t
2170 :global t 2180 :global t
2171 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again. 2181 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el
index e6ebe3c53f1..405721f97ee 100644
--- a/lisp/minibuf-eldef.el
+++ b/lisp/minibuf-eldef.el
@@ -131,14 +131,16 @@ been set up by `minibuf-eldef-setup-minibuffer'."
131;;;###autoload 131;;;###autoload
132(define-minor-mode minibuffer-electric-default-mode 132(define-minor-mode minibuffer-electric-default-mode
133 "Toggle Minibuffer Electric Default mode. 133 "Toggle Minibuffer Electric Default mode.
134When active, minibuffer prompts that show a default value only show the 134With a prefix argument ARG, enable Minibuffer Electric Default
135default when it's applicable -- that is, when hitting RET would yield 135mode if ARG is positive, and disable it otherwise. If called
136the default value. If the user modifies the input such that hitting RET 136from Lisp, enable the mode if ARG is omitted or nil.
137would enter a non-default value, the prompt is modified to remove the 137
138default indication. 138Minibuffer Electric Default mode is a global minor mode. When
139 139enabled, minibuffer prompts that show a default value only show
140With prefix argument ARG, turn on if positive, otherwise off. 140the default when it's applicable -- that is, when hitting RET
141Returns non-nil if the new state is enabled." 141would yield the default value. If the user modifies the input
142such that hitting RET would enter a non-default value, the prompt
143is modified to remove the default indication."
142 :global t 144 :global t
143 :group 'minibuffer 145 :group 'minibuffer
144 (if minibuffer-electric-default-mode 146 (if minibuffer-electric-default-mode
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index acb71d115d1..38785fc48e8 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -596,7 +596,7 @@ Moves point to the end of the new text."
596 (setq end (- end suffix-len)) 596 (setq end (- end suffix-len))
597 (setq newtext (substring newtext 0 (- suffix-len)))) 597 (setq newtext (substring newtext 0 (- suffix-len))))
598 (goto-char beg) 598 (goto-char beg)
599 (insert newtext) 599 (insert-and-inherit newtext)
600 (delete-region (point) (+ (point) (- end beg))) 600 (delete-region (point) (+ (point) (- end beg)))
601 (forward-char suffix-len))) 601 (forward-char suffix-len)))
602 602
@@ -927,9 +927,7 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
927 ;; file, so `try-completion' actually completes to 927 ;; file, so `try-completion' actually completes to
928 ;; that file. 928 ;; that file.
929 (= (length string) (length compl))) 929 (= (length string) (length compl)))
930 (goto-char end) 930 (completion--replace beg end compl))))
931 (insert compl)
932 (delete-region beg end))))
933 (exit-minibuffer)) 931 (exit-minibuffer))
934 932
935 ((memq minibuffer-completion-confirm '(confirm confirm-after-completion)) 933 ((memq minibuffer-completion-confirm '(confirm confirm-after-completion))
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index 50d221b6fa0..bcf1749e13f 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/mouse-sel.el
@@ -199,11 +199,12 @@ If nil, point will always be placed at the beginning of the region."
199;;;###autoload 199;;;###autoload
200(define-minor-mode mouse-sel-mode 200(define-minor-mode mouse-sel-mode
201 "Toggle Mouse Sel mode. 201 "Toggle Mouse Sel mode.
202With prefix ARG, turn Mouse Sel mode on if and only if ARG is positive. 202With a prefix argument ARG, enable Mouse Sel mode if ARG is
203Returns the new status of Mouse Sel mode (non-nil means on). 203positive, and disable it otherwise. If called from Lisp, enable
204the mode if ARG is omitted or nil.
204 205
205When Mouse Sel mode is enabled, mouse selection is enhanced in 206Mouse Sel mode is a global minor mode. When enabled, mouse
206various ways: 207selection is enhanced in various ways:
207 208
208- Double-clicking on symbol constituents selects symbols. 209- Double-clicking on symbol constituents selects symbols.
209Double-clicking on quotes or parentheses selects sexps. 210Double-clicking on quotes or parentheses selects sexps.
diff --git a/lisp/mouse.el b/lisp/mouse.el
index ff175288445..9b1cf48ccdc 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -372,300 +372,167 @@ This command must be bound to a mouse click."
372 (split-window-horizontally 372 (split-window-horizontally
373 (min (max new-width first-col) last-col)))))) 373 (min (max new-width first-col) last-col))))))
374 374
375(defun mouse-drag-window-above (window) 375;; `mouse-drag-line' is now the common routine for handling all line
376 "Return the (or a) window directly above WINDOW. 376;; dragging events combining the earlier `mouse-drag-mode-line-1' and
377That means one whose bottom edge is at the same height as WINDOW's top edge." 377;; `mouse-drag-vertical-line'. It should improve the behavior of line
378 (let ((start-top (nth 1 (window-edges window))) 378;; dragging wrt Emacs 23 as follows:
379 (start-left (nth 0 (window-edges window))) 379
380 (start-right (nth 2 (window-edges window))) 380;; (1) Gratuitous error messages and restrictions have been (hopefully)
381 (start-window window) 381;; removed. (The help-echo that dragging the mode-line can resize a
382 above-window) 382;; one-window-frame's window will still show through via bindings.el.)
383 (setq window (previous-window window 0)) 383
384 (while (and (not above-window) (not (eq window start-window))) 384;; (2) No gratuitous selection of other windows should happen. (This
385 (let ((left (nth 0 (window-edges window))) 385;; has not been completely fixed for mouse-autoselected windows yet.)
386 (right (nth 2 (window-edges window)))) 386
387 (when (and (= (+ (window-height window) (nth 1 (window-edges window))) 387;; (3) Mouse clicks below a scroll-bar should pass through via unread
388 start-top) 388;; command events.
389 (or (and (<= left start-left) (<= start-right right)) 389
390 (and (<= start-left left) (<= left start-right)) 390;; Note that `window-in-direction' replaces `mouse-drag-window-above'
391 (and (<= start-left right) (<= right start-right)))) 391;; and `mouse-drag-vertical-line-rightward-window' with Emacs 24.1.
392 (setq above-window window))) 392(defun mouse-drag-line (start-event line)
393 (setq window (previous-window window))) 393 "Drag some line with the mouse.
394 above-window)) 394START-EVENT is the starting mouse-event of the drag action. LINE
395 395must be one of the symbols header, mode, or vertical."
396(defun mouse-drag-move-window-bottom (window growth)
397 "Move the bottom of WINDOW up or down by GROWTH lines.
398Move it down if GROWTH is positive, or up if GROWTH is negative.
399If this would make WINDOW too short,
400shrink the window or windows above it to make room."
401 (condition-case nil
402 (adjust-window-trailing-edge window growth nil)
403 (error nil)))
404
405(defsubst mouse-drag-move-window-top (window growth)
406 "Move the top of WINDOW up or down by GROWTH lines.
407Move it down if GROWTH is positive, or up if GROWTH is negative.
408If this would make WINDOW too short, shrink the window or windows
409above it to make room."
410 ;; Moving the top of WINDOW is actually moving the bottom of the
411 ;; window above.
412 (let ((window-above (mouse-drag-window-above window)))
413 (and window-above
414 (mouse-drag-move-window-bottom window-above (- growth)))))
415
416(defun mouse-drag-mode-line-1 (start-event mode-line-p)
417 "Change the height of a window by dragging on the mode or header line.
418START-EVENT is the starting mouse-event of the drag action.
419MODE-LINE-P non-nil means dragging a mode line; nil means a header line."
420 ;; Give temporary modes such as isearch a chance to turn off. 396 ;; Give temporary modes such as isearch a chance to turn off.
421 (run-hooks 'mouse-leave-buffer-hook) 397 (run-hooks 'mouse-leave-buffer-hook)
422 (let* ((done nil) 398 (let* ((echo-keystrokes 0)
423 (echo-keystrokes 0)
424 (start (event-start start-event)) 399 (start (event-start start-event))
425 (start-event-window (posn-window start)) 400 (window (posn-window start))
426 (start-event-frame (window-frame start-event-window)) 401 (frame (window-frame window))
427 (start-nwindows (count-windows t)) 402 (minibuffer-window (minibuffer-window frame))
428 (on-link (and mouse-1-click-follows-link 403 (on-link (and mouse-1-click-follows-link
429 (or mouse-1-click-in-non-selected-windows 404 (or mouse-1-click-in-non-selected-windows
430 (eq (posn-window start) (selected-window))) 405 (eq window (selected-window)))
431 (mouse-on-link-p start))) 406 (mouse-on-link-p start)))
432 (minibuffer (frame-parameter nil 'minibuffer)) 407 (enlarge-minibuffer
433 should-enlarge-minibuffer event mouse y top bot edges wconfig growth) 408 (and (eq line 'mode)
409 (not resize-mini-windows)
410 (eq (window-frame minibuffer-window) frame)
411 (not (one-window-p t frame))
412 (= (nth 1 (window-edges minibuffer-window))
413 (nth 3 (window-edges window)))))
414 (which-side
415 (and (eq line 'vertical)
416 (or (cdr (assq 'vertical-scroll-bars (frame-parameters frame)))
417 'right)))
418 done event mouse growth dragged)
419 (cond
420 ((eq line 'header)
421 ;; Check whether header-line can be dragged at all.
422 (if (window-at-side-p window 'top)
423 (setq done t)
424 (setq window (window-in-direction 'above window t))))
425 ((eq line 'mode)
426 ;; Check whether mode-line can be dragged at all.
427 (when (and (window-at-side-p window 'bottom)
428 (not enlarge-minibuffer))
429 (setq done t)))
430 ((eq line 'vertical)
431 ;; Get the window to adjust for the vertical case.
432 (setq window
433 (if (eq which-side 'right)
434 ;; If the scroll bar is on the window's right or there's
435 ;; no scroll bar at all, adjust the window where the
436 ;; start-event occurred.
437 window
438 ;; If the scroll bar is on the start-event window's left,
439 ;; adjust the window on the left of it.
440 (window-in-direction 'left window t)))))
441
442 ;; Start tracking.
434 (track-mouse 443 (track-mouse
435 (progn 444 ;; Loop reading events and sampling the position of the mouse.
436 ;; if this is the bottommost ordinary window, then to 445 (while (not done)
437 ;; move its modeline the minibuffer must be enlarged. 446 (setq event (read-event))
438 (setq should-enlarge-minibuffer 447 (setq mouse (mouse-position))
439 (and minibuffer 448 ;; Do nothing if
440 mode-line-p 449 ;; - there is a switch-frame event.
441 (not (one-window-p t)) 450 ;; - the mouse isn't in the frame that we started in
442 (= (nth 1 (window-edges minibuffer)) 451 ;; - the mouse isn't in any Emacs frame
443 (nth 3 (window-edges start-event-window))))) 452 ;; Drag if
444 453 ;; - there is a mouse-movement event
445 ;; loop reading events and sampling the position of 454 ;; - there is a scroll-bar-movement event (??)
446 ;; the mouse. 455 ;; (same as mouse movement for our purposes)
447 (while (not done) 456 ;; Quit if
448 (setq event (read-event) 457 ;; - there is a keyboard event or some other unknown event.
449 mouse (mouse-position)) 458 (cond
450 459 ((not (consp event))
451 ;; do nothing if 460 (setq done t))
452 ;; - there is a switch-frame event. 461 ((memq (car event) '(switch-frame select-window))
453 ;; - the mouse isn't in the frame that we started in 462 nil)
454 ;; - the mouse isn't in any Emacs frame 463 ((not (memq (car event) '(mouse-movement scroll-bar-movement)))
455 ;; drag if 464 (when (consp event)
456 ;; - there is a mouse-movement event 465 ;; Do not unread a drag-mouse-1 event to avoid selecting
457 ;; - there is a scroll-bar-movement event 466 ;; some other window. For vertical line dragging do not
458 ;; (same as mouse movement for our purposes) 467 ;; unread mouse-1 events either (but only if we dragged at
459 ;; quit if 468 ;; least once to allow mouse-1 clicks get through.
460 ;; - there is a keyboard event or some other unknown event. 469 (unless (and dragged
461 (cond ((not (consp event)) 470 (if (eq line 'vertical)
462 (setq done t)) 471 (memq (car event) '(drag-mouse-1 mouse-1))
463 472 (eq (car event) 'drag-mouse-1)))
464 ((memq (car event) '(switch-frame select-window)) 473 (push event unread-command-events)))
465 nil) 474 (setq done t))
466 475 ((or (not (eq (car mouse) frame)) (null (car (cdr mouse))))
467 ((not (memq (car event) '(mouse-movement scroll-bar-movement))) 476 nil)
468 (when (consp event) 477 ((eq line 'vertical)
469 ;; Do not unread a drag-mouse-1 event since it will cause the 478 ;; Drag vertical divider (the calculations below are those
470 ;; selection of the window above when dragging the modeline 479 ;; from Emacs 23).
471 ;; above the selected window. 480 (setq growth
472 (unless (eq (car event) 'drag-mouse-1) 481 (- (- (cadr mouse)
473 (push event unread-command-events))) 482 (if (eq which-side 'right) 0 2))
474 (setq done t)) 483 (nth 2 (window-edges window))
475 484 -1))
476 ((not (eq (car mouse) start-event-frame)) 485 (unless (zerop growth)
477 nil) 486 ;; Remember that we dragged.
478 487 (setq dragged t))
479 ((null (car (cdr mouse))) 488 (adjust-window-trailing-edge window growth t))
480 nil) 489 (t
481 490 ;; Drag horizontal divider (the calculations below are those
482 (t 491 ;; from Emacs 23).
483 (setq y (cdr (cdr mouse)) 492 (setq growth
484 edges (window-edges start-event-window) 493 (if (eq line 'mode)
485 top (nth 1 edges) 494 (- (cddr mouse) (nth 3 (window-edges window)) -1)
486 bot (nth 3 edges)) 495 ;; The window's top includes the header line!
487 496 (- (nth 3 (window-edges window)) (cddr mouse))))
488 ;; compute size change needed 497
489 (cond (mode-line-p 498 (unless (zerop growth)
490 (setq growth (- y bot -1))) 499 ;; Remember that we dragged.
491 (t ; header line 500 (setq dragged t))
492 (when (< (- bot y) window-min-height) 501
493 (setq y (- bot window-min-height))) 502 (cond
494 ;; The window's top includes the header line! 503 (enlarge-minibuffer
495 (setq growth (- top y)))) 504 (adjust-window-trailing-edge window growth))
496 (setq wconfig (current-window-configuration)) 505 ((eq line 'mode)
497 506 (adjust-window-trailing-edge window growth))
498 ;; Check for an error case. 507 (t
499 (when (and (/= growth 0) 508 (adjust-window-trailing-edge window (- growth)))))))
500 (not minibuffer) 509
501 (one-window-p t)) 510 ;; Presumably, if this was just a click, the last event should be
502 (error "Attempt to resize sole window")) 511 ;; `mouse-1', whereas if this did move the mouse, it should be a
503 512 ;; `drag-mouse-1'. `dragged' nil tells us that we never dragged
504 ;; If we ever move, make sure we don't mistakenly treat 513 ;; and `on-link' tells us that there is a link to follow.
505 ;; some unexpected `mouse-1' final event as a sign that 514 (when (and on-link (not dragged)
506 ;; this whole drag was nothing more than a click. 515 (eq 'mouse-1 (car-safe (car unread-command-events))))
507 (if (/= growth 0) (setq on-link nil)) 516 ;; If mouse-2 has never been done by the user, it doesn't
508 517 ;; have the necessary property to be interpreted correctly.
509 ;; grow/shrink minibuffer? 518 (put 'mouse-2 'event-kind 'mouse-click)
510 (if should-enlarge-minibuffer 519 (setcar unread-command-events
511 (unless resize-mini-windows 520 (cons 'mouse-2 (cdar unread-command-events)))))))
512 (mouse-drag-move-window-bottom start-event-window growth))
513 ;; no. grow/shrink the selected window
514 ;(message "growth = %d" growth)
515 (if mode-line-p
516 (mouse-drag-move-window-bottom start-event-window growth)
517 (mouse-drag-move-window-top start-event-window growth)))
518
519 ;; if this window's growth caused another
520 ;; window to be deleted because it was too
521 ;; short, rescind the change.
522 ;;
523 ;; if size change caused space to be stolen
524 ;; from a window above this one, rescind the
525 ;; change, but only if we didn't grow/shrink
526 ;; the minibuffer. minibuffer size changes
527 ;; can cause all windows to shrink... no way
528 ;; around it.
529 (when (or (/= start-nwindows (count-windows t))
530 (and (not should-enlarge-minibuffer)
531 (> growth 0)
532 mode-line-p
533 (/= top
534 (nth 1 (window-edges
535 ;; Choose right window.
536 start-event-window)))))
537 (set-window-configuration wconfig)))))
538
539 ;; Presumably if this was just a click, the last event should
540 ;; be `mouse-1', whereas if this did move the mouse, it should be
541 ;; a `drag-mouse-1'. In any case `on-link' would have been nulled
542 ;; above if there had been any significant mouse movement.
543 (when (and on-link
544 (eq 'mouse-1 (car-safe (car unread-command-events))))
545 ;; If mouse-2 has never been done by the user, it doesn't
546 ;; have the necessary property to be interpreted correctly.
547 (put 'mouse-2 'event-kind 'mouse-click)
548 (setcar unread-command-events
549 (cons 'mouse-2 (cdar unread-command-events))))))))
550 521
551(defun mouse-drag-mode-line (start-event) 522(defun mouse-drag-mode-line (start-event)
552 "Change the height of a window by dragging on the mode line." 523 "Change the height of a window by dragging on the mode line."
553 (interactive "e") 524 (interactive "e")
554 (mouse-drag-mode-line-1 start-event t)) 525 (mouse-drag-line start-event 'mode))
555 526
556(defun mouse-drag-header-line (start-event) 527(defun mouse-drag-header-line (start-event)
557 "Change the height of a window by dragging on the header line. 528 "Change the height of a window by dragging on the header line."
558Windows whose header-lines are at the top of the frame cannot be
559resized by dragging their header-line."
560 (interactive "e") 529 (interactive "e")
561 ;; Changing the window's size by dragging its header-line when the 530 (mouse-drag-line start-event 'header))
562 ;; header-line is at the top of the frame is somewhat strange,
563 ;; because the header-line doesn't move, so don't do it.
564 (let* ((start (event-start start-event))
565 (window (posn-window start))
566 (frame (window-frame window))
567 (first-window (frame-first-window frame)))
568 (unless (or (eq window first-window)
569 (= (nth 1 (window-edges window))
570 (nth 1 (window-edges first-window))))
571 (mouse-drag-mode-line-1 start-event nil))))
572
573
574(defun mouse-drag-vertical-line-rightward-window (window)
575 "Return a window that is immediately to the right of WINDOW, or nil."
576 (let ((bottom (nth 3 (window-inside-edges window)))
577 (left (nth 0 (window-inside-edges window)))
578 best best-right
579 (try (previous-window window)))
580 (while (not (eq try window))
581 (let ((try-top (nth 1 (window-inside-edges try)))
582 (try-bottom (nth 3 (window-inside-edges try)))
583 (try-right (nth 2 (window-inside-edges try))))
584 (if (and (< try-top bottom)
585 (>= try-bottom bottom)
586 (< try-right left)
587 (or (null best-right) (> try-right best-right)))
588 (setq best-right try-right best try)))
589 (setq try (previous-window try)))
590 best))
591 531
592(defun mouse-drag-vertical-line (start-event) 532(defun mouse-drag-vertical-line (start-event)
593 "Change the width of a window by dragging on the vertical line." 533 "Change the width of a window by dragging on the vertical line."
594 (interactive "e") 534 (interactive "e")
595 ;; Give temporary modes such as isearch a chance to turn off. 535 (mouse-drag-line start-event 'vertical))
596 (run-hooks 'mouse-leave-buffer-hook)
597 (let* ((done nil)
598 (echo-keystrokes 0)
599 (start-event-frame (window-frame (car (car (cdr start-event)))))
600 (start-event-window (car (car (cdr start-event))))
601 event mouse x left right edges growth
602 (which-side
603 (or (cdr (assq 'vertical-scroll-bars (frame-parameters start-event-frame)))
604 'right)))
605 (cond
606 ((one-window-p t)
607 (error "Attempt to resize sole ordinary window"))
608 ((and (eq which-side 'right)
609 (>= (nth 2 (window-inside-edges start-event-window))
610 (frame-width start-event-frame)))
611 (error "Attempt to drag rightmost scrollbar"))
612 ((and (eq which-side 'left)
613 (= (nth 0 (window-inside-edges start-event-window)) 0))
614 (error "Attempt to drag leftmost scrollbar")))
615 (track-mouse
616 (progn
617 ;; loop reading events and sampling the position of
618 ;; the mouse.
619 (while (not done)
620 (setq event (read-event)
621 mouse (mouse-position))
622 ;; do nothing if
623 ;; - there is a switch-frame event.
624 ;; - the mouse isn't in the frame that we started in
625 ;; - the mouse isn't in any Emacs frame
626 ;; drag if
627 ;; - there is a mouse-movement event
628 ;; - there is a scroll-bar-movement event
629 ;; (same as mouse movement for our purposes)
630 ;; quit if
631 ;; - there is a keyboard event or some other unknown event
632 ;; unknown event.
633 (cond ((integerp event)
634 (setq done t))
635 ((memq (car event) '(switch-frame select-window))
636 nil)
637 ((not (memq (car event)
638 '(mouse-movement scroll-bar-movement)))
639 (if (consp event)
640 (setq unread-command-events
641 (cons event unread-command-events)))
642 (setq done t))
643 ((not (eq (car mouse) start-event-frame))
644 nil)
645 ((null (car (cdr mouse)))
646 nil)
647 (t
648 (let ((window
649 ;; If the scroll bar is on the window's left,
650 ;; adjust the window on the left.
651 (if (eq which-side 'right)
652 start-event-window
653 (mouse-drag-vertical-line-rightward-window
654 start-event-window))))
655 (setq x (- (car (cdr mouse))
656 (if (eq which-side 'right) 0 2))
657 edges (window-edges window)
658 left (nth 0 edges)
659 right (nth 2 edges))
660 ;; scale back a move that would make the
661 ;; window too thin.
662 (if (< (- x left -1) window-min-width)
663 (setq x (+ left window-min-width -1)))
664 ;; compute size change needed
665 (setq growth (- x right -1))
666 (condition-case nil
667 (adjust-window-trailing-edge window growth t)
668 (error nil))))))))))
669 536
670(defun mouse-set-point (event) 537(defun mouse-set-point (event)
671 "Move point to the position clicked on with the mouse. 538 "Move point to the position clicked on with the mouse.
diff --git a/lisp/msb.el b/lisp/msb.el
index 12e5a0192fe..74ceff1a9cd 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -1133,7 +1133,10 @@ variable `msb-menu-cond'."
1133;;;###autoload 1133;;;###autoload
1134(define-minor-mode msb-mode 1134(define-minor-mode msb-mode
1135 "Toggle Msb mode. 1135 "Toggle Msb mode.
1136With arg, turn Msb mode on if and only if arg is positive. 1136With a prefix argument ARG, enable Msb mode if ARG is positive,
1137and disable it otherwise. If called from Lisp, enable the mode
1138if ARG is omitted or nil.
1139
1137This mode overrides the binding(s) of `mouse-buffer-menu' to provide a 1140This mode overrides the binding(s) of `mouse-buffer-menu' to provide a
1138different buffer menu using the function `msb'." 1141different buffer menu using the function `msb'."
1139 :global t :group 'msb 1142 :global t :group 'msb
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 4ead168b188..05aeb12acf4 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -250,11 +250,11 @@ This should only be bound to mouse buttons 4 and 5."
250 250
251(defvar mwheel-installed-bindings nil) 251(defvar mwheel-installed-bindings nil)
252 252
253;; preloaded ;;;###autoload
254(define-minor-mode mouse-wheel-mode 253(define-minor-mode mouse-wheel-mode
255 "Toggle mouse wheel support. 254 "Toggle mouse wheel support (Mouse Wheel mode).
256With prefix argument ARG, turn on if positive, otherwise off. 255With a prefix argument ARG, enable Mouse Wheel mode if ARG is
257Return non-nil if the new state is enabled." 256positive, and disable it otherwise. If called from Lisp, enable
257the mode if ARG is omitted or nil."
258 :init-value t 258 :init-value t
259 ;; We'd like to use custom-initialize-set here so the setup is done 259 ;; We'd like to use custom-initialize-set here so the setup is done
260 ;; before dumping, but at the point where the defcustom is evaluated, 260 ;; before dumping, but at the point where the defcustom is evaluated,
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index f9bc13e1e25..10a1fa5afc5 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -36,6 +36,7 @@
36;; Function Browser Earliest version 36;; Function Browser Earliest version
37;; browse-url-mozilla Mozilla Don't know 37;; browse-url-mozilla Mozilla Don't know
38;; browse-url-firefox Firefox Don't know (tried with 1.0.1) 38;; browse-url-firefox Firefox Don't know (tried with 1.0.1)
39;; browse-url-chromium Chromium 3.0
39;; browse-url-galeon Galeon Don't know 40;; browse-url-galeon Galeon Don't know
40;; browse-url-epiphany Epiphany Don't know 41;; browse-url-epiphany Epiphany Don't know
41;; browse-url-netscape Netscape 1.1b1 42;; browse-url-netscape Netscape 1.1b1
@@ -47,6 +48,7 @@
47;; browse-url-generic arbitrary 48;; browse-url-generic arbitrary
48;; browse-url-default-windows-browser MS-Windows browser 49;; browse-url-default-windows-browser MS-Windows browser
49;; browse-url-default-macosx-browser Mac OS X browser 50;; browse-url-default-macosx-browser Mac OS X browser
51;; browse-url-xdg-open Free Desktop xdg-open on Gnome, KDE, Xfce4, LXDE
50;; browse-url-gnome-moz GNOME interface to Mozilla 52;; browse-url-gnome-moz GNOME interface to Mozilla
51;; browse-url-kde KDE konqueror (kfm) 53;; browse-url-kde KDE konqueror (kfm)
52;; browse-url-elinks Elinks Don't know (tried with 0.12.GIT) 54;; browse-url-elinks Elinks Don't know (tried with 0.12.GIT)
@@ -230,6 +232,7 @@ regexp should probably be \".\" to specify a default browser."
230 :value browse-url-w3-gnudoit) 232 :value browse-url-w3-gnudoit)
231 (function-item :tag "Mozilla" :value browse-url-mozilla) 233 (function-item :tag "Mozilla" :value browse-url-mozilla)
232 (function-item :tag "Firefox" :value browse-url-firefox) 234 (function-item :tag "Firefox" :value browse-url-firefox)
235 (function-item :tag "Chromium" :value browse-url-chromium)
233 (function-item :tag "Galeon" :value browse-url-galeon) 236 (function-item :tag "Galeon" :value browse-url-galeon)
234 (function-item :tag "Epiphany" :value browse-url-epiphany) 237 (function-item :tag "Epiphany" :value browse-url-epiphany)
235 (function-item :tag "Netscape" :value browse-url-netscape) 238 (function-item :tag "Netscape" :value browse-url-netscape)
@@ -336,6 +339,22 @@ Defaults to the value of `browse-url-firefox-arguments' at the time
336 :type '(repeat (string :tag "Argument")) 339 :type '(repeat (string :tag "Argument"))
337 :group 'browse-url) 340 :group 'browse-url)
338 341
342(defcustom browse-url-chromium-program
343 (let ((candidates '("chromium" "chromium-browser")))
344 (while (and candidates (not (executable-find (car candidates))))
345 (setq candidates (cdr candidates)))
346 (or (car candidates) "chromium"))
347 "The name by which to invoke Chromium."
348 :type 'string
349 :version "24.1"
350 :group 'browse-url)
351
352(defcustom browse-url-chromium-arguments nil
353 "A list of strings to pass to Chromium as arguments."
354 :type '(repeat (string :tag "Argument"))
355 :version "24.1"
356 :group 'browse-url)
357
339(defcustom browse-url-galeon-program "galeon" 358(defcustom browse-url-galeon-program "galeon"
340 "The name by which to invoke Galeon." 359 "The name by which to invoke Galeon."
341 :type 'string 360 :type 'string
@@ -913,6 +932,7 @@ used instead of `browse-url-new-window-flag'."
913 ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz) 932 ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
914 ((executable-find browse-url-mozilla-program) 'browse-url-mozilla) 933 ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
915 ((executable-find browse-url-firefox-program) 'browse-url-firefox) 934 ((executable-find browse-url-firefox-program) 'browse-url-firefox)
935 ((executable-find browse-url-chromium-program) 'browse-url-chromium)
916 ((executable-find browse-url-galeon-program) 'browse-url-galeon) 936 ((executable-find browse-url-galeon-program) 'browse-url-galeon)
917 ((executable-find browse-url-kde-program) 'browse-url-kde) 937 ((executable-find browse-url-kde-program) 'browse-url-kde)
918 ((executable-find browse-url-netscape-program) 'browse-url-netscape) 938 ((executable-find browse-url-netscape-program) 'browse-url-netscape)
@@ -924,12 +944,13 @@ used instead of `browse-url-new-window-flag'."
924 url args)) 944 url args))
925 945
926(defun browse-url-can-use-xdg-open () 946(defun browse-url-can-use-xdg-open ()
927 "Check if xdg-open can be used, i.e. we are on Gnome, KDE or xfce4." 947 "Check if xdg-open can be used, i.e. we are on Gnome, KDE, Xfce4 or LXDE."
928 (and (getenv "DISPLAY") 948 (and (getenv "DISPLAY")
929 (executable-find "xdg-open") 949 (executable-find "xdg-open")
930 ;; xdg-open may call gnome-open and that does not wait for its child 950 ;; xdg-open may call gnome-open and that does not wait for its child
931 ;; to finish. This child may then be killed when the parent dies. 951 ;; to finish. This child may then be killed when the parent dies.
932 ;; Use nohup to work around. 952 ;; Use nohup to work around. See bug#7166, bug#8917, bug#9779 and
953 ;; http://lists.gnu.org/archive/html/emacs-devel/2009-07/msg00279.html
933 (executable-find "nohup") 954 (executable-find "nohup")
934 (or (getenv "GNOME_DESKTOP_SESSION_ID") 955 (or (getenv "GNOME_DESKTOP_SESSION_ID")
935 ;; GNOME_DESKTOP_SESSION_ID is deprecated, check on Dbus also. 956 ;; GNOME_DESKTOP_SESSION_ID is deprecated, check on Dbus also.
@@ -947,7 +968,9 @@ used instead of `browse-url-new-window-flag'."
947 "/bin/sh" nil nil nil 968 "/bin/sh" nil nil nil
948 "-c" 969 "-c"
949 "xprop -root _DT_SAVE_MODE|grep xfce4")) 970 "xprop -root _DT_SAVE_MODE|grep xfce4"))
950 (error nil))))) 971 (error nil))
972 (member (getenv "DESKTOP_SESSION") '("LXDE" "Lubuntu"))
973 (equal (getenv "XDG_CURRENT_DESKTOP") "LXDE"))))
951 974
952 975
953;;;###autoload 976;;;###autoload
@@ -1141,6 +1164,22 @@ URL in a new window."
1141 (append browse-url-firefox-startup-arguments (list url)))))) 1164 (append browse-url-firefox-startup-arguments (list url))))))
1142 1165
1143;;;###autoload 1166;;;###autoload
1167(defun browse-url-chromium (url &optional new-window)
1168 "Ask the Chromium WWW browser to load URL.
1169Default to the URL around or before point. The strings in
1170variable `browse-url-chromium-arguments' are also passed to
1171Chromium."
1172 (interactive (browse-url-interactive-arg "URL: "))
1173 (setq url (browse-url-encode-url url))
1174 (let* ((process-environment (browse-url-process-environment)))
1175 (apply 'start-process
1176 (concat "chromium " url) nil
1177 browse-url-chromium-program
1178 (append
1179 browse-url-chromium-arguments
1180 (list url)))))
1181
1182;;;###autoload
1144(defun browse-url-galeon (url &optional new-window) 1183(defun browse-url-galeon (url &optional new-window)
1145 "Ask the Galeon WWW browser to load URL. 1184 "Ask the Galeon WWW browser to load URL.
1146Default to the URL around or before point. The strings in variable 1185Default to the URL around or before point. The strings in variable
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index 4e78a7d42c0..1432c1e516b 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -288,7 +288,7 @@ Also fontifies the buffer appropriately (see `goto-address-fontify-p' and
288 288
289;;;###autoload 289;;;###autoload
290(define-minor-mode goto-address-prog-mode 290(define-minor-mode goto-address-prog-mode
291 "Turn on `goto-address-mode', but only in comments and strings." 291 "Like `goto-address-mode', but only for comments and strings."
292 nil 292 nil
293 "" 293 ""
294 nil 294 nil
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index adc66f6766c..5fca1018095 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1886,7 +1886,7 @@ Falls back to normal file name handler if no Tramp file name handler exists."
1886 (when (and (listp sf) (eq (car sf) 'autoload)) 1886 (when (and (listp sf) (eq (car sf) 'autoload))
1887 (let ((default-directory 1887 (let ((default-directory
1888 (tramp-compat-temporary-file-directory))) 1888 (tramp-compat-temporary-file-directory)))
1889 (load (cadr sf) 'noerror))) 1889 (load (cadr sf) 'noerror 'nomessage)))
1890 (apply foreign operation args)) 1890 (apply foreign operation args))
1891 1891
1892 ;; Trace that somebody has interrupted the operation. 1892 ;; Trace that somebody has interrupted the operation.
@@ -2103,8 +2103,9 @@ This is true, if either the remote host is already connected, or if we are
2103not in completion mode." 2103not in completion mode."
2104 (and (tramp-tramp-file-p filename) 2104 (and (tramp-tramp-file-p filename)
2105 (with-parsed-tramp-file-name filename nil 2105 (with-parsed-tramp-file-name filename nil
2106 (or (get-buffer (tramp-buffer-name v)) 2106 (or (not (tramp-completion-mode-p))
2107 (not (tramp-completion-mode-p)))))) 2107 (let ((p (tramp-get-connection-process v)))
2108 (and p (processp p) (memq (process-status p) '(run open))))))))
2108 2109
2109;; Method, host name and user name completion. 2110;; Method, host name and user name completion.
2110;; `tramp-completion-dissect-file-name' returns a list of 2111;; `tramp-completion-dissect-file-name' returns a list of
diff --git a/lisp/net/xesam.el b/lisp/net/xesam.el
index 64c26cfb2c9..56e9cb68c61 100644
--- a/lisp/net/xesam.el
+++ b/lisp/net/xesam.el
@@ -516,9 +516,9 @@ engine specific, widget :notify function to visualize xesam:url."
516 516
517(define-minor-mode xesam-minor-mode 517(define-minor-mode xesam-minor-mode
518 "Toggle Xesam minor mode. 518 "Toggle Xesam minor mode.
519With no argument, this command toggles the mode. 519With a prefix argument ARG, enable Xesam minor mode if ARG is
520Non-null prefix argument turns on the mode. 520positive, and disable it otherwise. If called from Lisp, enable
521Null prefix argument turns off the mode. 521the mode if ARG is omitted or nil.
522 522
523When Xesam minor mode is enabled, all text which matches a 523When Xesam minor mode is enabled, all text which matches a
524previous Xesam query in this buffer is highlighted." 524previous Xesam query in this buffer is highlighted."
diff --git a/lisp/outline.el b/lisp/outline.el
index f864058c6fc..34d30fc4591 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -356,7 +356,10 @@ After that, changing the prefix key requires manipulating keymaps."
356;;;###autoload 356;;;###autoload
357(define-minor-mode outline-minor-mode 357(define-minor-mode outline-minor-mode
358 "Toggle Outline minor mode. 358 "Toggle Outline minor mode.
359With arg, turn Outline minor mode on if arg is positive, off otherwise. 359With a prefix argument ARG, enable Outline minor mode if ARG is
360positive, and disable it otherwise. If called from Lisp, enable
361the mode if ARG is omitted or nil.
362
360See the command `outline-mode' for more information on this mode." 363See the command `outline-mode' for more information on this mode."
361 nil " Outl" (list (cons [menu-bar] outline-minor-mode-menu-bar-map) 364 nil " Outl" (list (cons [menu-bar] outline-minor-mode-menu-bar-map)
362 (cons outline-minor-mode-prefix outline-mode-prefix-map)) 365 (cons outline-minor-mode-prefix outline-mode-prefix-map))
diff --git a/lisp/paren.el b/lisp/paren.el
index fb5c0bf36e9..ee550228d48 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -102,12 +102,14 @@ otherwise)."
102 102
103;;;###autoload 103;;;###autoload
104(define-minor-mode show-paren-mode 104(define-minor-mode show-paren-mode
105 "Toggle Show Paren mode. 105 "Toggle visualization of matching parens (Show Paren mode).
106With prefix ARG, turn Show Paren mode on if and only if ARG is positive. 106With a prefix argument ARG, enable Show Paren mode if ARG is
107Returns the new status of Show Paren mode (non-nil means on). 107positive, and disable it otherwise. If called from Lisp, enable
108the mode if ARG is omitted or nil.
108 109
109When Show Paren mode is enabled, any matching parenthesis is highlighted 110Show Paren mode is a global minor mode. When enabled, any
110in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time." 111matching parenthesis is highlighted in `show-paren-style' after
112`show-paren-delay' seconds of Emacs idle time."
111 :global t :group 'paren-showing 113 :global t :group 'paren-showing
112 ;; Enable or disable the mechanism. 114 ;; Enable or disable the mechanism.
113 ;; First get rid of the old idle timer. 115 ;; First get rid of the old idle timer.
diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el
index 8ec379afab2..12eddfef1aa 100644
--- a/lisp/progmodes/bug-reference.el
+++ b/lisp/progmodes/bug-reference.el
@@ -127,7 +127,10 @@ so that it is considered safe, see `enable-local-variables'.")
127 127
128;;;###autoload 128;;;###autoload
129(define-minor-mode bug-reference-mode 129(define-minor-mode bug-reference-mode
130 "Minor mode to buttonize bugzilla references in the current buffer." 130 "Toggle hyperlinking bug references in the buffer (Bug Reference mode).
131With a prefix argument ARG, enable Bug Reference mode if ARG is
132positive, and disable it otherwise. If called from Lisp, enable
133the mode if ARG is omitted or nil."
131 nil 134 nil
132 "" 135 ""
133 nil 136 nil
diff --git a/lisp/progmodes/cap-words.el b/lisp/progmodes/cap-words.el
index 0ce84ae33a7..d7b7dfef1ec 100644
--- a/lisp/progmodes/cap-words.el
+++ b/lisp/progmodes/cap-words.el
@@ -60,9 +60,13 @@ Looks for word boundaries before capitals."
60;;;###autoload 60;;;###autoload
61(define-minor-mode capitalized-words-mode 61(define-minor-mode capitalized-words-mode
62 "Toggle Capitalized Words mode. 62 "Toggle Capitalized Words mode.
63With a prefix argument ARG, enable Capitalized Words mode if ARG
64is positive, and disable it otherwise. If called from Lisp,
65enable the mode if ARG is omitted or nil.
63 66
64In this minor mode, a word boundary occurs immediately before an 67Capitalized Words mode is a buffer-local minor mode. When
65uppercase letter in a symbol. This is in addition to all the normal 68enabled, a word boundary occurs immediately before an uppercase
69letter in a symbol. This is in addition to all the normal
66boundaries given by the syntax and category tables. There is no 70boundaries given by the syntax and category tables. There is no
67restriction to ASCII. 71restriction to ASCII.
68 72
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index a1cbdc16560..b2c548847c3 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -2456,7 +2456,7 @@ comment at the start of cc-engine.el for more info."
2456 (<= from (cdr c-state-brace-pair-desert))) 2456 (<= from (cdr c-state-brace-pair-desert)))
2457 ;; Only search what we absolutely need to: 2457 ;; Only search what we absolutely need to:
2458 (if (and c-state-brace-pair-desert 2458 (if (and c-state-brace-pair-desert
2459 (> from (cdr c-state-brace-pair-desert))) 2459 (eq cache-pos (car c-state-brace-pair-desert)))
2460 (narrow-to-region (cdr c-state-brace-pair-desert) (point-max))) 2460 (narrow-to-region (cdr c-state-brace-pair-desert) (point-max)))
2461 2461
2462 ;; In the next pair of nested loops, the inner one moves back past a 2462 ;; In the next pair of nested loops, the inner one moves back past a
@@ -3127,6 +3127,33 @@ comment at the start of cc-engine.el for more info."
3127(unless (fboundp 'c-real-parse-state) 3127(unless (fboundp 'c-real-parse-state)
3128 (fset 'c-real-parse-state (symbol-function 'c-parse-state))) 3128 (fset 'c-real-parse-state (symbol-function 'c-parse-state)))
3129(cc-bytecomp-defun c-real-parse-state) 3129(cc-bytecomp-defun c-real-parse-state)
3130
3131(defvar c-parse-state-state nil)
3132(defun c-record-parse-state-state ()
3133 (setq c-parse-state-state
3134 (mapcar
3135 (lambda (arg)
3136 (cons arg (symbol-value arg)))
3137 '(c-state-cache
3138 c-state-cache-good-pos
3139 c-state-nonlit-pos-cache
3140 c-state-nonlit-pos-cache-limit
3141 c-state-brace-pair-desert
3142 c-state-point-min
3143 c-state-point-min-lit-type
3144 c-state-point-min-lit-start
3145 c-state-min-scan-pos
3146 c-state-old-cpp-beg
3147 c-state-old-cpp-end))))
3148(defun c-replay-parse-state-state ()
3149 (message
3150 (concat "(setq "
3151 (mapconcat
3152 (lambda (arg)
3153 (format "%s %s%s" (car arg) (if (atom (cdr arg)) "" "'") (cdr arg)))
3154 c-parse-state-state " ")
3155 ")")))
3156
3130(defun c-debug-parse-state () 3157(defun c-debug-parse-state ()
3131 (let ((here (point)) (res1 (c-real-parse-state)) res2) 3158 (let ((here (point)) (res1 (c-real-parse-state)) res2)
3132 (let ((c-state-cache nil) 3159 (let ((c-state-cache nil)
@@ -3145,15 +3172,21 @@ comment at the start of cc-engine.el for more info."
3145 ;; The cache can actually go further back due to the ad-hoc way 3172 ;; The cache can actually go further back due to the ad-hoc way
3146 ;; the first paren is found, so try to whack off a bit of its 3173 ;; the first paren is found, so try to whack off a bit of its
3147 ;; start before complaining. 3174 ;; start before complaining.
3148 (save-excursion 3175 ;; (save-excursion
3149 (goto-char (or (c-least-enclosing-brace res2) (point))) 3176 ;; (goto-char (or (c-least-enclosing-brace res2) (point)))
3150 (c-beginning-of-defun-1) 3177 ;; (c-beginning-of-defun-1)
3151 (while (not (or (bobp) (eq (char-after) ?{))) 3178 ;; (while (not (or (bobp) (eq (char-after) ?{)))
3152 (c-beginning-of-defun-1)) 3179 ;; (c-beginning-of-defun-1))
3153 (unless (equal (c-whack-state-before (point) res1) res2) 3180 ;; (unless (equal (c-whack-state-before (point) res1) res2)
3154 (message (concat "c-parse-state inconsistency at %s: " 3181 ;; (message (concat "c-parse-state inconsistency at %s: "
3155 "using cache: %s, from scratch: %s") 3182 ;; "using cache: %s, from scratch: %s")
3156 here res1 res2)))) 3183 ;; here res1 res2)))
3184 (message (concat "c-parse-state inconsistency at %s: "
3185 "using cache: %s, from scratch: %s")
3186 here res1 res2)
3187 (message "Old state:")
3188 (c-replay-parse-state-state))
3189 (c-record-parse-state-state)
3157 res1)) 3190 res1))
3158 3191
3159(defun c-toggle-parse-state-debug (&optional arg) 3192(defun c-toggle-parse-state-debug (&optional arg)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 619c423902c..156c90159cd 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1968,12 +1968,15 @@ Optional argument MINOR indicates this is called from
1968 1968
1969;;;###autoload 1969;;;###autoload
1970(define-minor-mode compilation-shell-minor-mode 1970(define-minor-mode compilation-shell-minor-mode
1971 "Toggle compilation shell minor mode. 1971 "Toggle Compilation Shell minor mode.
1972With arg, turn compilation mode on if and only if arg is positive. 1972With a prefix argument ARG, enable Compilation Shell minor mode
1973In this minor mode, all the error-parsing commands of the 1973if ARG is positive, and disable it otherwise. If called from
1974Compilation major mode are available but bound to keys that don't 1974Lisp, enable the mode if ARG is omitted or nil.
1975collide with Shell mode. See `compilation-mode'. 1975
1976Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'." 1976When Compilation Shell minor mode is enabled, all the
1977error-parsing commands of the Compilation major mode are
1978available but bound to keys that don't collide with Shell mode.
1979See `compilation-mode'."
1977 nil " Shell-Compile" 1980 nil " Shell-Compile"
1978 :group 'compilation 1981 :group 'compilation
1979 (if compilation-shell-minor-mode 1982 (if compilation-shell-minor-mode
@@ -1982,11 +1985,14 @@ Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'."
1982 1985
1983;;;###autoload 1986;;;###autoload
1984(define-minor-mode compilation-minor-mode 1987(define-minor-mode compilation-minor-mode
1985 "Toggle compilation minor mode. 1988 "Toggle Compilation minor mode.
1986With arg, turn compilation mode on if and only if arg is positive. 1989With a prefix argument ARG, enable Compilation minor mode if ARG
1987In this minor mode, all the error-parsing commands of the 1990is positive, and disable it otherwise. If called from Lisp,
1988Compilation major mode are available. See `compilation-mode'. 1991enable the mode if ARG is omitted or nil.
1989Turning the mode on runs the normal hook `compilation-minor-mode-hook'." 1992
1993When Compilation minor mode is enabled, all the error-parsing
1994commands of Compilation major mode are available. See
1995`compilation-mode'."
1990 nil " Compilation" 1996 nil " Compilation"
1991 :group 'compilation 1997 :group 'compilation
1992 (if compilation-minor-mode 1998 (if compilation-minor-mode
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 25a23fed293..7b3a2893610 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -3255,7 +3255,10 @@ Treats actions as defuns."
3255 3255
3256;;;###autoload 3256;;;###autoload
3257(define-minor-mode gud-tooltip-mode 3257(define-minor-mode gud-tooltip-mode
3258 "Toggle the display of GUD tooltips." 3258 "Toggle the display of GUD tooltips.
3259With a prefix argument ARG, enable the feature if ARG is
3260positive, and disable it otherwise. If called from Lisp, enable
3261it if ARG is omitted or nil."
3259 :global t 3262 :global t
3260 :group 'gud 3263 :group 'gud
3261 :group 'tooltip 3264 :group 'tooltip
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 48d1ac4b85e..374a45acec6 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -214,11 +214,15 @@
214 214
215;;;###autoload 215;;;###autoload
216(define-minor-mode hide-ifdef-mode 216(define-minor-mode hide-ifdef-mode
217 "Toggle Hide-Ifdef mode. This is a minor mode, albeit a large one. 217 "Toggle features to hide/show #ifdef blocks (Hide-Ifdef mode).
218With ARG, turn Hide-Ifdef mode on if arg is positive, off otherwise. 218With a prefix argument ARG, enable Hide-Ifdef mode if ARG is
219In Hide-Ifdef mode, code within #ifdef constructs that the C preprocessor 219positive, and disable it otherwise. If called from Lisp, enable
220would eliminate may be hidden from view. Several variables affect 220the mode if ARG is omitted or nil.
221how the hiding is done: 221
222Hide-Ifdef mode is a buffer-local minor mode for use with C and
223C-like major modes. When enabled, code within #ifdef constructs
224that the C preprocessor would eliminate may be hidden from view.
225Several variables affect how the hiding is done:
222 226
223`hide-ifdef-env' 227`hide-ifdef-env'
224 An association list of defined and undefined symbols for the 228 An association list of defined and undefined symbols for the
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index b2cd24f0f98..18f47d14a3f 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -4277,16 +4277,14 @@ Otherwise, just expand the file name."
4277(defvar idlwave-shell-electric-debug-buffers nil) 4277(defvar idlwave-shell-electric-debug-buffers nil)
4278 4278
4279(define-minor-mode idlwave-shell-electric-debug-mode 4279(define-minor-mode idlwave-shell-electric-debug-mode
4280 "Toggle Electric Debug mode. 4280 "Toggle Idlwave Shell Electric Debug mode.
4281With no argument, this command toggles the mode. 4281With a prefix argument ARG, enable the mode if ARG is positive,
4282Non-null prefix argument turns on the mode. 4282and disable it otherwise. If called from Lisp, enable the mode
4283Null prefix argument turns off the mode. 4283if ARG is omitted or nil.
4284 4284
4285When Electric Debug mode is enabled, the many debugging commands are 4285When Idlwave Shell Electric Debug mode is enabled, the Idlwave
4286available as single key sequences." 4286Shell debugging commands are available as single key sequences."
4287nil 4287 nil " *Debugging*" idlwave-shell-electric-debug-mode-map)
4288" *Debugging*"
4289idlwave-shell-electric-debug-mode-map)
4290 4288
4291(add-hook 4289(add-hook
4292 'idlwave-shell-electric-debug-mode-on-hook 4290 'idlwave-shell-electric-debug-mode-on-hook
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 8066e1c3a7f..c77ee4b76a9 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1907,7 +1907,6 @@ The main features of this mode are
1907 (set (make-local-variable 'comment-start-skip) ";+[ \t]*") 1907 (set (make-local-variable 'comment-start-skip) ";+[ \t]*")
1908 (set (make-local-variable 'comment-start) ";") 1908 (set (make-local-variable 'comment-start) ";")
1909 (set (make-local-variable 'comment-add) 1) ; ";;" for new and regions 1909 (set (make-local-variable 'comment-add) 1) ; ";;" for new and regions
1910 (set (make-local-variable 'require-final-newline) t)
1911 (set (make-local-variable 'abbrev-all-caps) t) 1910 (set (make-local-variable 'abbrev-all-caps) t)
1912 (set (make-local-variable 'indent-tabs-mode) nil) 1911 (set (make-local-variable 'indent-tabs-mode) nil)
1913 (set (make-local-variable 'completion-ignore-case) t) 1912 (set (make-local-variable 'completion-ignore-case) t)
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el
index 1a403f50b1b..9c61da89008 100644
--- a/lisp/progmodes/subword.el
+++ b/lisp/progmodes/subword.el
@@ -94,13 +94,19 @@
94 94
95;;;###autoload 95;;;###autoload
96(define-minor-mode subword-mode 96(define-minor-mode subword-mode
97 "Mode enabling subword movement and editing keys. 97 "Toggle subword movement and editing (Subword mode).
98In spite of GNU Coding Standards, it is popular to name a symbol by 98With a prefix argument ARG, enable Subword mode if ARG is
99mixing uppercase and lowercase letters, e.g. \"GtkWidget\", 99positive, and disable it otherwise. If called from Lisp, enable
100\"EmacsFrameClass\", \"NSGraphicsContext\", etc. Here we call these 100the mode if ARG is omitted or nil.
101mixed case symbols `nomenclatures'. Also, each capitalized (or 101
102completely uppercase) part of a nomenclature is called a `subword'. 102Subword mode is a buffer-local minor mode. Enabling it remaps
103Here are some examples: 103word-based editing commands to subword-based commands that handle
104symbols with mixed uppercase and lowercase letters,
105e.g. \"GtkWidget\", \"EmacsFrameClass\", \"NSGraphicsContext\".
106
107Here we call these mixed case symbols `nomenclatures'. Each
108capitalized (or completely uppercase) part of a nomenclature is
109called a `subword'. Here are some examples:
104 110
105 Nomenclature Subwords 111 Nomenclature Subwords
106 =========================================================== 112 ===========================================================
diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el
index 1f33f5f3aaf..b02324871ff 100644
--- a/lisp/progmodes/vera-mode.el
+++ b/lisp/progmodes/vera-mode.el
@@ -310,7 +310,6 @@ Key bindings:
310 (set (make-local-variable 'comment-indent-function) 'c-comment-indent) 310 (set (make-local-variable 'comment-indent-function) 'c-comment-indent)
311 (set (make-local-variable 'paragraph-start) "^$") 311 (set (make-local-variable 'paragraph-start) "^$")
312 (set (make-local-variable 'paragraph-separate) paragraph-start) 312 (set (make-local-variable 'paragraph-separate) paragraph-start)
313 (set (make-local-variable 'require-final-newline) t)
314 (set (make-local-variable 'indent-tabs-mode) nil) 313 (set (make-local-variable 'indent-tabs-mode) nil)
315 (set (make-local-variable 'indent-line-function) 'vera-indent-line) 314 (set (make-local-variable 'indent-line-function) 'vera-indent-line)
316 (set (make-local-variable 'parse-sexp-ignore-comments) t) 315 (set (make-local-variable 'parse-sexp-ignore-comments) t)
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 9aaf3059b78..d7aa82aee1b 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -8029,12 +8029,16 @@ project is defined."
8029 8029
8030(define-minor-mode vhdl-electric-mode 8030(define-minor-mode vhdl-electric-mode
8031 "Toggle VHDL electric mode. 8031 "Toggle VHDL electric mode.
8032Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil." 8032With a prefix argument ARG, enable the mode if ARG is positive,
8033and disable it otherwise. If called from Lisp, enable it if ARG
8034is omitted or nil."
8033 :global t) 8035 :global t)
8034 8036
8035(define-minor-mode vhdl-stutter-mode 8037(define-minor-mode vhdl-stutter-mode
8036 "Toggle VHDL stuttering mode. 8038 "Toggle VHDL stuttering mode.
8037Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil." 8039With a prefix argument ARG, enable the mode if ARG is positive,
8040and disable it otherwise. If called from Lisp, enable it if ARG
8041is omitted or nil."
8038 :global t) 8042 :global t)
8039 8043
8040;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 8044;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 97e188139e9..e27d07854c8 100644
--- a/lisp/progmodes/which-func.el
+++ b/lisp/progmodes/which-func.el
@@ -236,12 +236,14 @@ It creates the Imenu index for the buffer, if necessary."
236;; This is the name people would normally expect. 236;; This is the name people would normally expect.
237;;;###autoload 237;;;###autoload
238(define-minor-mode which-function-mode 238(define-minor-mode which-function-mode
239 "Toggle Which Function mode, globally. 239 "Toggle mode line display of current function (Which Function mode).
240When Which Function mode is enabled, the current function name is 240With a prefix argument ARG, enable Which Function mode if ARG is
241continuously displayed in the mode line, in certain major modes. 241positive, and disable it otherwise. If called from Lisp, enable
242 242the mode if ARG is omitted or nil.
243With prefix ARG, turn Which Function mode on if arg is positive, 243
244and off otherwise." 244Which Function mode is a global minor mode. When enabled, the
245current function name is continuously displayed in the mode line,
246in certain major modes."
245 :global t :group 'which-func 247 :global t :group 'which-func
246 (when (timerp which-func-update-timer) 248 (when (timerp which-func-update-timer)
247 (cancel-timer which-func-update-timer)) 249 (cancel-timer which-func-update-timer))
diff --git a/lisp/recentf.el b/lisp/recentf.el
index fc9b7881733..79f4eb437d9 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1336,12 +1336,14 @@ That is, remove duplicates, non-kept, and excluded files."
1336 1336
1337;;;###autoload 1337;;;###autoload
1338(define-minor-mode recentf-mode 1338(define-minor-mode recentf-mode
1339 "Toggle recentf mode. 1339 "Toggle \"Open Recent\" menu (Recentf mode).
1340With prefix argument ARG, turn on if positive, otherwise off. 1340With a prefix argument ARG, enable Recentf mode if ARG is
1341Returns non-nil if the new state is enabled. 1341positive, and disable it otherwise. If called from Lisp, enable
1342 1342Recentf mode if ARG is omitted or nil.
1343When recentf mode is enabled, it maintains a menu for visiting files 1343
1344that were operated on recently." 1344When Recentf mode is enabled, a \"Open Recent\" submenu is
1345displayed in the \"File\" menu, containing a list of files that
1346were operated on recently."
1345 :global t 1347 :global t
1346 :group 'recentf 1348 :group 'recentf
1347 :keymap recentf-mode-map 1349 :keymap recentf-mode-map
diff --git a/lisp/reveal.el b/lisp/reveal.el
index bf18602379c..ea46cfd1dd3 100644
--- a/lisp/reveal.el
+++ b/lisp/reveal.el
@@ -189,12 +189,13 @@ Each element has the form (WINDOW . OVERLAY).")
189 189
190;;;###autoload 190;;;###autoload
191(define-minor-mode reveal-mode 191(define-minor-mode reveal-mode
192 "Toggle Reveal mode on or off. 192 "Toggle decloaking of invisible text near point (Reveal mode).
193Reveal mode renders invisible text around point visible again. 193With a prefix argument ARG, enable Reveal mode if ARG is
194positive, and disable it otherwise. If called from Lisp, enable
195Reveal mode if ARG is omitted or nil.
194 196
195Interactively, with no prefix argument, toggle the mode. 197Reveral mode is a buffer-local minor mode. When enabled, it
196With universal prefix ARG (or if ARG is nil) turn mode on. 198reveals invisible text around point."
197With zero or negative ARG turn mode off."
198 :group 'reveal 199 :group 'reveal
199 :lighter (global-reveal-mode nil " Reveal") 200 :lighter (global-reveal-mode nil " Reveal")
200 :keymap reveal-mode-map 201 :keymap reveal-mode-map
@@ -207,12 +208,12 @@ With zero or negative ARG turn mode off."
207 208
208;;;###autoload 209;;;###autoload
209(define-minor-mode global-reveal-mode 210(define-minor-mode global-reveal-mode
210 "Toggle Reveal mode in all buffers on or off. 211 "Toggle Reveal mode in all buffers (Global Reveal mode).
211Reveal mode renders invisible text around point visible again. 212Reveal mode renders invisible text around point visible again.
212 213
213Interactively, with no prefix argument, toggle the mode. 214With a prefix argument ARG, enable Global Reveal mode if ARG is
214With universal prefix ARG (or if ARG is nil) turn mode on. 215positive, and disable it otherwise. If called from Lisp, enable
215With zero or negative ARG turn mode off." 216the mode if ARG is omitted or nil."
216 :global t :group 'reveal 217 :global t :group 'reveal
217 (setq-default reveal-mode global-reveal-mode) 218 (setq-default reveal-mode global-reveal-mode)
218 (if global-reveal-mode 219 (if global-reveal-mode
diff --git a/lisp/rfn-eshadow.el b/lisp/rfn-eshadow.el
index 9eb2d2abdee..2d8c6e0964d 100644
--- a/lisp/rfn-eshadow.el
+++ b/lisp/rfn-eshadow.el
@@ -207,15 +207,17 @@ been set up by `rfn-eshadow-setup-minibuffer'."
207 (error nil))) 207 (error nil)))
208 208
209(define-minor-mode file-name-shadow-mode 209(define-minor-mode file-name-shadow-mode
210 "Toggle File-Name Shadow mode. 210 "Toggle file-name shadowing in minibuffers (File-Name Shadow mode).
211When active, any part of a filename being read in the minibuffer 211With a prefix argument ARG, enable File-Name Shadow mode if ARG
212that would be ignored (because the result is passed through 212is positive, and disable it otherwise. If called from Lisp,
213enable the mode if ARG is omitted or nil.
214
215File-Name Shadow mode is a global minor mode. When enabled, any
216part of a filename being read in the minibuffer that would be
217ignored (because the result is passed through
213`substitute-in-file-name') is given the properties in 218`substitute-in-file-name') is given the properties in
214`file-name-shadow-properties', which can be used to make 219`file-name-shadow-properties', which can be used to make that
215that portion dim, invisible, or otherwise less visually noticeable. 220portion dim, invisible, or otherwise less visually noticeable."
216
217With prefix argument ARG, turn on if positive, otherwise off.
218Returns non-nil if the new state is enabled."
219 :global t 221 :global t
220 ;; We'd like to use custom-initialize-set here so the setup is done 222 ;; We'd like to use custom-initialize-set here so the setup is done
221 ;; before dumping, but at the point where the defcustom is evaluated, 223 ;; before dumping, but at the point where the defcustom is evaluated,
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index fc62bf6b633..046c29471ac 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -567,8 +567,10 @@ format first."
567 567
568;;;###autoload 568;;;###autoload
569(define-minor-mode ruler-mode 569(define-minor-mode ruler-mode
570 "Toggle Ruler mode. 570 "Toggle display of ruler in header line (Ruler mode).
571In Ruler mode, Emacs displays a ruler in the header line." 571With a prefix argument ARG, enable Ruler mode if ARG is positive,
572and disable it otherwise. If called from Lisp, enable the mode
573if ARG is omitted or nil."
572 nil nil 574 nil nil
573 ruler-mode-map 575 ruler-mode-map
574 :group 'ruler-mode 576 :group 'ruler-mode
diff --git a/lisp/savehist.el b/lisp/savehist.el
index 653d0312a19..faeab324e5a 100644
--- a/lisp/savehist.el
+++ b/lisp/savehist.el
@@ -170,15 +170,19 @@ minibuffer history.")
170 170
171;;;###autoload 171;;;###autoload
172(define-minor-mode savehist-mode 172(define-minor-mode savehist-mode
173 "Toggle savehist-mode. 173 "Toggle saving of minibuffer history (Savehist mode).
174Positive ARG turns on `savehist-mode'. When on, savehist-mode causes 174With a prefix argument ARG, enable Savehist mode if ARG is
175minibuffer history to be saved periodically and when exiting Emacs. 175positive, and disable it otherwise. If called from Lisp, enable
176When turned on for the first time in an Emacs session, it causes the 176the mode if ARG is omitted or nil.
177previous minibuffer history to be loaded from `savehist-file'. 177
178When Savehist mode is enabled, minibuffer history is saved
179periodically and when exiting Emacs. When Savehist mode is
180enabled for the first time in an Emacs session, it loads the
181previous minibuffer history from `savehist-file'.
178 182
179This mode should normally be turned on from your Emacs init file. 183This mode should normally be turned on from your Emacs init file.
180Calling it at any other time replaces your current minibuffer histories, 184Calling it at any other time replaces your current minibuffer
181which is probably undesirable." 185histories, which is probably undesirable."
182 :global t 186 :global t
183 (if (not savehist-mode) 187 (if (not savehist-mode)
184 (savehist-uninstall) 188 (savehist-uninstall)
diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el
index 6dbdc9ab90d..81a4d2c86e1 100644
--- a/lisp/scroll-all.el
+++ b/lisp/scroll-all.el
@@ -101,10 +101,13 @@
101 101
102;;;###autoload 102;;;###autoload
103(define-minor-mode scroll-all-mode 103(define-minor-mode scroll-all-mode
104 "Toggle Scroll-All minor mode. 104 "Toggle shared scrolling in same-frame windows (Scroll-All mode).
105With ARG, turn Scroll-All minor mode on if ARG is positive, off otherwise. 105With a prefix argument ARG, enable Scroll-All mode if ARG is
106When Scroll-All mode is on, scrolling commands entered in one window 106positive, and disable it otherwise. If called from Lisp, enable
107apply to all visible windows in the same frame." 107the mode if ARG is omitted or nil.
108
109When Scroll-All mode is enabled, scrolling commands invoked in
110one window apply to all visible windows in the same frame."
108 nil " *SL*" nil 111 nil " *SL*" nil
109 :global t 112 :global t
110 :group 'windows 113 :group 'windows
diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el
index 0c68bca4d2e..37a31460cdb 100644
--- a/lisp/scroll-bar.el
+++ b/lisp/scroll-bar.el
@@ -114,12 +114,15 @@ Setting the variable with a customization buffer also takes effect."
114 114
115(defun get-scroll-bar-mode () scroll-bar-mode) 115(defun get-scroll-bar-mode () scroll-bar-mode)
116(defsetf get-scroll-bar-mode set-scroll-bar-mode) 116(defsetf get-scroll-bar-mode set-scroll-bar-mode)
117
117(define-minor-mode scroll-bar-mode 118(define-minor-mode scroll-bar-mode
118 "Toggle display of vertical scroll bars on all frames. 119 "Toggle vertical scroll bars on all frames (Scroll Bar mode).
120With a prefix argument ARG, enable Scroll Bar mode if ARG is
121positive, and disable it otherwise. If called from Lisp, enable
122the mode if ARG is omitted or nil.
123
119This command applies to all frames that exist and frames to be 124This command applies to all frames that exist and frames to be
120created in the future. 125created in the future."
121With a numeric argument, if the argument is positive
122turn on scroll bars; otherwise turn off scroll bars."
123 :variable (eq (get-scroll-bar-mode) 126 :variable (eq (get-scroll-bar-mode)
124 (or previous-scroll-bar-mode 127 (or previous-scroll-bar-mode
125 default-frame-scroll-bars))) 128 default-frame-scroll-bars)))
diff --git a/lisp/server.el b/lisp/server.el
index 63d46a365c9..bc989c55ed1 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -669,9 +669,13 @@ Return values:
669;;;###autoload 669;;;###autoload
670(define-minor-mode server-mode 670(define-minor-mode server-mode
671 "Toggle Server mode. 671 "Toggle Server mode.
672With ARG, turn Server mode on if ARG is positive, off otherwise. 672With a prefix argument ARG, enable Server mode if ARG is
673positive, and disable it otherwise. If called from Lisp, enable
674Server mode if ARG is omitted or nil.
675
673Server mode runs a process that accepts commands from the 676Server mode runs a process that accepts commands from the
674`emacsclient' program. See `server-start' and Info node `Emacs server'." 677`emacsclient' program. See Info node `Emacs server' and
678`server-start' for details."
675 :global t 679 :global t
676 :group 'server 680 :group 'server
677 :version "22.1" 681 :version "22.1"
diff --git a/lisp/shell.el b/lisp/shell.el
index cefe42bb3ec..c75594ddbe4 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -890,9 +890,13 @@ Environment variables are expanded, see function `substitute-in-file-name'."
890 890
891(defvaralias 'shell-dirtrack-mode 'shell-dirtrackp) 891(defvaralias 'shell-dirtrack-mode 'shell-dirtrackp)
892(define-minor-mode shell-dirtrack-mode 892(define-minor-mode shell-dirtrack-mode
893 "Turn directory tracking on and off in a shell buffer. 893 "Toggle directory tracking in this shell buffer (Shell Dirtrack mode).
894The `dirtrack' package provides an alternative implementation of this 894With a prefix argument ARG, enable Shell Dirtrack mode if ARG is
895feature - see the function `dirtrack-mode'." 895positive, and disable it otherwise. If called from Lisp, enable
896the mode if ARG is omitted or nil.
897
898The `dirtrack' package provides an alternative implementation of
899this feature; see the function `dirtrack-mode'."
896 nil nil nil 900 nil nil nil
897 (setq list-buffers-directory (if shell-dirtrack-mode default-directory)) 901 (setq list-buffers-directory (if shell-dirtrack-mode default-directory))
898 (if shell-dirtrack-mode 902 (if shell-dirtrack-mode
diff --git a/lisp/simple.el b/lisp/simple.el
index 6d0e7543549..79de6aea3dd 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4086,13 +4086,15 @@ its earlier value."
4086 4086
4087(define-minor-mode transient-mark-mode 4087(define-minor-mode transient-mark-mode
4088 "Toggle Transient Mark mode. 4088 "Toggle Transient Mark mode.
4089With ARG, turn Transient Mark mode on if ARG is positive, off otherwise. 4089With a prefix argument ARG, enable Transient Mark mode if ARG is
4090positive, and disable it otherwise. If called from Lisp, enable
4091Transient Mark mode if ARG is omitted or nil.
4090 4092
4091In Transient Mark mode, when the mark is active, the region is highlighted. 4093Transient Mark mode is a global minor mode. When enabled, the
4092Changing the buffer \"deactivates\" the mark. 4094region is highlighted whenever the mark is active. The mark is
4093So do certain other operations that set the mark 4095\"deactivated\" by changing the buffer, and after certain other
4094but whose main purpose is something else--for example, 4096operations that set the mark but whose main purpose is something
4095incremental search, \\[beginning-of-buffer], and \\[end-of-buffer]. 4097else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-buffer].
4096 4098
4097You can also deactivate the mark by typing \\[keyboard-quit] or 4099You can also deactivate the mark by typing \\[keyboard-quit] or
4098\\[keyboard-escape-quit]. 4100\\[keyboard-escape-quit].
@@ -4906,8 +4908,15 @@ other purposes."
4906(defvar visual-line--saved-state nil) 4908(defvar visual-line--saved-state nil)
4907 4909
4908(define-minor-mode visual-line-mode 4910(define-minor-mode visual-line-mode
4909 "Redefine simple editing commands to act on visual lines, not logical lines. 4911 "Toggle visual line based editing (Visual Line mode).
4910This also turns on `word-wrap' in the buffer." 4912With a prefix argument ARG, enable Visual Line mode if ARG is
4913positive, and disable it otherwise. If called from Lisp, enable
4914the mode if ARG is omitted or nil.
4915
4916When Visual Line mode is enabled, `word-wrap' is turned on in
4917this buffer, and simple editing commands are redefined to act on
4918visual lines, not logical lines. See Info node `Visual Line
4919Mode' for details."
4911 :keymap visual-line-mode-map 4920 :keymap visual-line-mode-map
4912 :group 'visual-line 4921 :group 'visual-line
4913 :lighter " Wrap" 4922 :lighter " Wrap"
@@ -5301,10 +5310,14 @@ Some major modes set this.")
5301(put 'auto-fill-function 'safe-local-variable 'null) 5310(put 'auto-fill-function 'safe-local-variable 'null)
5302 5311
5303(define-minor-mode auto-fill-mode 5312(define-minor-mode auto-fill-mode
5304 "Toggle Auto Fill mode. 5313 "Toggle automatic line breaking (Auto Fill mode).
5305With ARG, turn Auto Fill mode on if and only if ARG is positive. 5314With a prefix argument ARG, enable Auto Fill mode if ARG is
5306In Auto Fill mode, inserting a space at a column beyond `current-fill-column' 5315positive, and disable it otherwise. If called from Lisp, enable
5307automatically breaks the line at a previous space. 5316the mode if ARG is omitted or nil.
5317
5318When Auto Fill mode is enabled, inserting a space at a column
5319beyond `current-fill-column' automatically breaks the line at a
5320previous space.
5308 5321
5309When `auto-fill-mode' is on, the `auto-fill-function' variable is 5322When `auto-fill-mode' is on, the `auto-fill-function' variable is
5310non-`nil'. 5323non-`nil'.
@@ -5412,36 +5425,44 @@ if long lines are truncated."
5412 "The string displayed in the mode line when in binary overwrite mode.") 5425 "The string displayed in the mode line when in binary overwrite mode.")
5413 5426
5414(define-minor-mode overwrite-mode 5427(define-minor-mode overwrite-mode
5415 "Toggle overwrite mode. 5428 "Toggle Overwrite mode.
5416With prefix argument ARG, turn overwrite mode on if ARG is positive, 5429With a prefix argument ARG, enable Overwrite mode if ARG is
5417otherwise turn it off. In overwrite mode, printing characters typed 5430positive, and disable it otherwise. If called from Lisp, enable
5418in replace existing text on a one-for-one basis, rather than pushing 5431the mode if ARG is omitted or nil.
5419it to the right. At the end of a line, such characters extend the line. 5432
5420Before a tab, such characters insert until the tab is filled in. 5433When Overwrite mode is enabled, printing characters typed in
5421\\[quoted-insert] still inserts characters in overwrite mode; this 5434replace existing text on a one-for-one basis, rather than pushing
5422is supposed to make it easier to insert characters when necessary." 5435it to the right. At the end of a line, such characters extend
5436the line. Before a tab, such characters insert until the tab is
5437filled in. \\[quoted-insert] still inserts characters in
5438overwrite mode; this is supposed to make it easier to insert
5439characters when necessary."
5423 :variable (eq overwrite-mode 'overwrite-mode-textual)) 5440 :variable (eq overwrite-mode 'overwrite-mode-textual))
5424 5441
5425(define-minor-mode binary-overwrite-mode 5442(define-minor-mode binary-overwrite-mode
5426 "Toggle binary overwrite mode. 5443 "Toggle Binary Overwrite mode.
5427With prefix argument ARG, turn binary overwrite mode on if ARG is 5444With a prefix argument ARG, enable Binary Overwrite mode if ARG
5428positive, otherwise turn it off. In binary overwrite mode, printing 5445is positive, and disable it otherwise. If called from Lisp,
5429characters typed in replace existing text. Newlines are not treated 5446enable the mode if ARG is omitted or nil.
5430specially, so typing at the end of a line joins the line to the next, 5447
5431with the typed character between them. Typing before a tab character 5448When Binary Overwrite mode is enabled, printing characters typed
5432simply replaces the tab with the character typed. \\[quoted-insert] 5449in replace existing text. Newlines are not treated specially, so
5433replaces the text at the cursor, just as ordinary typing characters do. 5450typing at the end of a line joins the line to the next, with the
5434 5451typed character between them. Typing before a tab character
5435Note that binary overwrite mode is not its own minor mode; it is a 5452simply replaces the tab with the character typed.
5436specialization of overwrite mode, entered by setting the 5453\\[quoted-insert] replaces the text at the cursor, just as
5454ordinary typing characters do.
5455
5456Note that Binary Overwrite mode is not its own minor mode; it is
5457a specialization of overwrite mode, entered by setting the
5437`overwrite-mode' variable to `overwrite-mode-binary'." 5458`overwrite-mode' variable to `overwrite-mode-binary'."
5438 :variable (eq overwrite-mode 'overwrite-mode-binary)) 5459 :variable (eq overwrite-mode 'overwrite-mode-binary))
5439 5460
5440(define-minor-mode line-number-mode 5461(define-minor-mode line-number-mode
5441 "Toggle Line Number mode. 5462 "Toggle line number display in the mode line (Line Number mode).
5442With ARG, turn Line Number mode on if ARG is positive, otherwise 5463With a prefix argument ARG, enable Line Number mode if ARG is
5443turn it off. When Line Number mode is enabled, the line number 5464positive, and disable it otherwise. If called from Lisp, enable
5444appears in the mode line. 5465the mode if ARG is omitted or nil.
5445 5466
5446Line numbers do not appear for very large buffers and buffers 5467Line numbers do not appear for very large buffers and buffers
5447with very long lines; see variables `line-number-display-limit' 5468with very long lines; see variables `line-number-display-limit'
@@ -5449,22 +5470,27 @@ and `line-number-display-limit-width'."
5449 :init-value t :global t :group 'mode-line) 5470 :init-value t :global t :group 'mode-line)
5450 5471
5451(define-minor-mode column-number-mode 5472(define-minor-mode column-number-mode
5452 "Toggle Column Number mode. 5473 "Toggle column number display in the mode line (Column Number mode).
5453With ARG, turn Column Number mode on if ARG is positive, 5474With a prefix argument ARG, enable Column Number mode if ARG is
5454otherwise turn it off. When Column Number mode is enabled, the 5475positive, and disable it otherwise.
5455column number appears in the mode line." 5476
5477If called from Lisp, enable the mode if ARG is omitted or nil."
5456 :global t :group 'mode-line) 5478 :global t :group 'mode-line)
5457 5479
5458(define-minor-mode size-indication-mode 5480(define-minor-mode size-indication-mode
5459 "Toggle Size Indication mode. 5481 "Toggle buffer size display in the mode line (Size Indication mode).
5460With ARG, turn Size Indication mode on if ARG is positive, 5482With a prefix argument ARG, enable Size Indication mode if ARG is
5461otherwise turn it off. When Size Indication mode is enabled, the 5483positive, and disable it otherwise.
5462size of the accessible part of the buffer appears in the mode line." 5484
5485If called from Lisp, enable the mode if ARG is omitted or nil."
5463 :global t :group 'mode-line) 5486 :global t :group 'mode-line)
5464 5487
5465(define-minor-mode auto-save-mode 5488(define-minor-mode auto-save-mode
5466 "Toggle auto-saving of contents of current buffer. 5489 "Toggle auto-saving in the current buffer (Auto Save mode).
5467With prefix argument ARG, turn auto-saving on if positive, else off." 5490With a prefix argument ARG, enable Auto Save mode if ARG is
5491positive, and disable it otherwise.
5492
5493If called from Lisp, enable the mode if ARG is omitted or nil."
5468 :variable ((and buffer-auto-save-file-name 5494 :variable ((and buffer-auto-save-file-name
5469 ;; If auto-save is off because buffer has shrunk, 5495 ;; If auto-save is off because buffer has shrunk,
5470 ;; then toggling should turn it on. 5496 ;; then toggling should turn it on.
@@ -6634,8 +6660,9 @@ call `normal-erase-is-backspace-mode' (which see) instead."
6634 6660
6635(define-minor-mode normal-erase-is-backspace-mode 6661(define-minor-mode normal-erase-is-backspace-mode
6636 "Toggle the Erase and Delete mode of the Backspace and Delete keys. 6662 "Toggle the Erase and Delete mode of the Backspace and Delete keys.
6637 6663With a prefix argument ARG, enable this feature if ARG is
6638With numeric ARG, turn the mode on if and only if ARG is positive. 6664positive, and disable it otherwise. If called from Lisp, enable
6665the mode if ARG is omitted or nil.
6639 6666
6640On window systems, when this mode is on, Delete is mapped to C-d 6667On window systems, when this mode is on, Delete is mapped to C-d
6641and Backspace is mapped to DEL; when this mode is off, both 6668and Backspace is mapped to DEL; when this mode is off, both
@@ -6709,13 +6736,13 @@ See also `normal-erase-is-backspace'."
6709 "Saved value of `buffer-invisibility-spec' when Visible mode is on.") 6736 "Saved value of `buffer-invisibility-spec' when Visible mode is on.")
6710 6737
6711(define-minor-mode visible-mode 6738(define-minor-mode visible-mode
6712 "Toggle Visible mode. 6739 "Toggle making all invisible text temporarily visible (Visible mode).
6713With argument ARG turn Visible mode on if ARG is positive, otherwise 6740With a prefix argument ARG, enable Visible mode if ARG is
6714turn it off. 6741positive, and disable it otherwise. If called from Lisp, enable
6742the mode if ARG is omitted or nil.
6715 6743
6716Enabling Visible mode makes all invisible text temporarily visible. 6744This mode works by saving the value of `buffer-invisibility-spec'
6717Disabling Visible mode turns off that effect. Visible mode works by 6745and setting it to nil."
6718saving the value of `buffer-invisibility-spec' and setting it to nil."
6719 :lighter " Vis" 6746 :lighter " Vis"
6720 :group 'editing-basics 6747 :group 'editing-basics
6721 (when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec) 6748 (when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index ca0086b3b97..5ff94bb22c6 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -1386,8 +1386,12 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
1386 1386
1387;;;###autoload 1387;;;###autoload
1388(define-minor-mode strokes-mode 1388(define-minor-mode strokes-mode
1389 "Toggle Strokes global minor mode.\\<strokes-mode-map> 1389 "Toggle Strokes mode, a global minor mode.
1390With ARG, turn strokes on if and only if ARG is positive. 1390With a prefix argument ARG, enable Strokes mode if ARG is
1391positive, and disable it otherwise. If called from Lisp, enable
1392the mode if ARG is omitted or nil.
1393
1394\\<strokes-mode-map>
1391Strokes are pictographic mouse gestures which invoke commands. 1395Strokes are pictographic mouse gestures which invoke commands.
1392Strokes are invoked with \\[strokes-do-stroke]. You can define 1396Strokes are invoked with \\[strokes-do-stroke]. You can define
1393new strokes with \\[strokes-global-set-stroke]. See also 1397new strokes with \\[strokes-global-set-stroke]. See also
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index 059024c4bce..78857b04143 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -33,7 +33,7 @@
33;; mev. Now the interface with gpm is directly through a Unix socket, so this 33;; mev. Now the interface with gpm is directly through a Unix socket, so this
34;; file is reduced to a single minor mode macro call. 34;; file is reduced to a single minor mode macro call.
35 35
36;; 36;;
37 37
38;;; Code: 38;;; Code:
39 39
@@ -65,9 +65,10 @@
65(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") 65(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
66;;;###autoload 66;;;###autoload
67(define-minor-mode gpm-mouse-mode 67(define-minor-mode gpm-mouse-mode
68 "Toggle gpm-mouse mode to use the mouse in GNU/Linux consoles. 68 "Toggle mouse support in GNU/Linux consoles (GPM Mouse mode).
69With prefix arg, turn gpm-mouse mode on if arg is positive, 69With a prefix argument ARG, enable GPM Mouse mode if ARG is
70otherwise turn it off. 70positive, and disable it otherwise. If called from Lisp, enable
71the mode if ARG is omitted or nil.
71 72
72This allows the use of the mouse when operating on a GNU/Linux console, 73This allows the use of the mouse when operating on a GNU/Linux console,
73in the same way as you can use the mouse under X11. 74in the same way as you can use the mouse under X11.
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 62171328979..cfa406c2b48 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -404,13 +404,19 @@ MODE should be an integer which is a file mode value."
404 (string 404 (string
405 (if (zerop (logand 256 mode)) ?- ?r) 405 (if (zerop (logand 256 mode)) ?- ?r)
406 (if (zerop (logand 128 mode)) ?- ?w) 406 (if (zerop (logand 128 mode)) ?- ?w)
407 (if (zerop (logand 1024 mode)) (if (zerop (logand 64 mode)) ?- ?x) ?s) 407 (if (zerop (logand 2048 mode))
408 (if (zerop (logand 64 mode)) ?- ?x)
409 (if (zerop (logand 64 mode)) ?S ?s))
408 (if (zerop (logand 32 mode)) ?- ?r) 410 (if (zerop (logand 32 mode)) ?- ?r)
409 (if (zerop (logand 16 mode)) ?- ?w) 411 (if (zerop (logand 16 mode)) ?- ?w)
410 (if (zerop (logand 2048 mode)) (if (zerop (logand 8 mode)) ?- ?x) ?s) 412 (if (zerop (logand 1024 mode))
413 (if (zerop (logand 8 mode)) ?- ?x)
414 (if (zerop (logand 8 mode)) ?S ?s))
411 (if (zerop (logand 4 mode)) ?- ?r) 415 (if (zerop (logand 4 mode)) ?- ?r)
412 (if (zerop (logand 2 mode)) ?- ?w) 416 (if (zerop (logand 2 mode)) ?- ?w)
413 (if (zerop (logand 1 mode)) ?- ?x))) 417 (if (zerop (logand 512 mode))
418 (if (zerop (logand 1 mode)) ?- ?x)
419 (if (zerop (logand 1 mode)) ?T ?t))))
414 420
415(defun tar-header-block-summarize (tar-hblock &optional mod-p) 421(defun tar-header-block-summarize (tar-hblock &optional mod-p)
416 "Return a line similar to the output of `tar -vtf'." 422 "Return a line similar to the output of `tar -vtf'."
diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el
index 5d852e52105..e154074a033 100644
--- a/lisp/term/tvi970.el
+++ b/lisp/term/tvi970.el
@@ -104,14 +104,17 @@
104 104
105;; Should keypad numbers send ordinary digits or distinct escape sequences? 105;; Should keypad numbers send ordinary digits or distinct escape sequences?
106(define-minor-mode tvi970-set-keypad-mode 106(define-minor-mode tvi970-set-keypad-mode
107 "Set the current mode of the TVI 970 numeric keypad. 107 "Toggle alternate keypad mode on TVI 970 keypad.
108In ``numeric keypad mode'', the number keys on the keypad act as 108With a prefix argument ARG, enable the mode if ARG is positive,
109ordinary digits. In ``alternate keypad mode'', the keys send distinct 109and disable it otherwise. If called from Lisp, enable the mode
110escape sequences, meaning that they can have their own bindings, 110if ARG is omitted or nil.
111
112In ``alternate keypad mode'', the keys send distinct escape
113sequences, meaning that they can have their own bindings,
111independent of the normal number keys. 114independent of the normal number keys.
112With no argument, toggle between the two possible modes. 115
113With a positive argument, select alternate keypad mode. 116When disabled, the terminal enters ``numeric keypad mode'', in
114With a negative argument, select numeric keypad mode." 117which the keypad's keys act as ordinary digits."
115 :variable (terminal-parameter nil 'tvi970-keypad-numeric) 118 :variable (terminal-parameter nil 'tvi970-keypad-numeric)
116 (send-string-to-terminal 119 (send-string-to-terminal
117 (if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>"))) 120 (if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>")))
diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el
index 406c20a0e81..ca16f356b20 100644
--- a/lisp/term/vt100.el
+++ b/lisp/term/vt100.el
@@ -42,8 +42,9 @@
42;;; Controlling the screen width. 42;;; Controlling the screen width.
43(define-minor-mode vt100-wide-mode 43(define-minor-mode vt100-wide-mode
44 "Toggle 132/80 column mode for vt100s. 44 "Toggle 132/80 column mode for vt100s.
45With positive argument, switch to 132-column mode. 45With a prefix argument ARG, switch to 132-column mode if ARG is
46With negative argument, switch to 80-column mode." 46positive, and 80-column mode otherwise. If called from Lisp,
47switch to 132-column mode if ARG is omitted or nil."
47 :global t :init-value (= (frame-width) 132) 48 :global t :init-value (= (frame-width) 132)
48 (send-string-to-terminal (if vt100-wide-mode "\e[?3h" "\e[?3l")) 49 (send-string-to-terminal (if vt100-wide-mode "\e[?3h" "\e[?3l"))
49 (set-frame-width terminal-frame (if vt100-wide-mode 132 80))) 50 (set-frame-width terminal-frame (if vt100-wide-mode 132 80)))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index d496298768d..4a57d00d702 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -469,12 +469,14 @@ See also `flyspell-duplicate-distance'."
469;;;###autoload(defvar flyspell-mode nil) 469;;;###autoload(defvar flyspell-mode nil)
470;;;###autoload 470;;;###autoload
471(define-minor-mode flyspell-mode 471(define-minor-mode flyspell-mode
472 "Minor mode performing on-the-fly spelling checking. 472 "Toggle on-the-fly spell checking (Flyspell mode).
473This spawns a single Ispell process and checks each word. 473With a prefix argument ARG, enable Flyspell mode if ARG is
474The default flyspell behavior is to highlight incorrect words. 474positive, and disable it otherwise. If called from Lisp, enable
475With no argument, this command toggles Flyspell mode. 475the mode if ARG is omitted or nil.
476With a prefix argument ARG, turn Flyspell minor mode on if ARG is positive, 476
477otherwise turn it off. 477Flyspell mode is a buffer-local minor mode. When enabled, it
478spawns a single Ispell process and checks each word. The default
479flyspell behavior is to highlight incorrect words.
478 480
479Bindings: 481Bindings:
480\\[ispell-word]: correct words (using Ispell). 482\\[ispell-word]: correct words (using Ispell).
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index b76b0a303df..62f899d1730 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -3462,15 +3462,21 @@ available on the net."
3462 3462
3463;;;###autoload 3463;;;###autoload
3464(define-minor-mode ispell-minor-mode 3464(define-minor-mode ispell-minor-mode
3465 "Toggle Ispell minor mode. 3465 "Toggle last-word spell checking (Ispell minor mode).
3466With prefix argument ARG, turn Ispell minor mode on if ARG is positive, 3466With a prefix argument ARG, enable Ispell minor mode if ARG is
3467otherwise turn it off. 3467positive, and disable it otherwise. If called from Lisp, enable
3468the mode if ARG is omitted or nil.
3468 3469
3469In Ispell minor mode, pressing SPC or RET 3470Ispell minor mode is a buffer-local mior mode. When enabled,
3470warns you if the previous word is incorrectly spelled. 3471typing SPC or RET warns you if the previous word is incorrectly
3472spelled.
3471 3473
3472All the buffer-local variables and dictionaries are ignored -- to read 3474All the buffer-local variables and dictionaries are ignored. To
3473them into the running ispell process, type \\[ispell-word] SPC." 3475read them into the running ispell process, type \\[ispell-word]
3476SPC.
3477
3478For spell-checking \"on the fly\", not just after typing SPC or
3479RET, use `flyspell-mode'."
3474 nil " Spell" ispell-minor-keymap) 3480 nil " Spell" ispell-minor-keymap)
3475 3481
3476(defun ispell-minor-check () 3482(defun ispell-minor-check ()
diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el
index 8fb0bd85dab..1be78ed293f 100644
--- a/lisp/textmodes/nroff-mode.el
+++ b/lisp/textmodes/nroff-mode.el
@@ -297,11 +297,17 @@ automatically inserts the matching closing request after point."
297 (forward-char 1)))) 297 (forward-char 1))))
298 298
299(define-minor-mode nroff-electric-mode 299(define-minor-mode nroff-electric-mode
300 "Toggle `nroff-electric-newline' minor mode. 300 "Toggle automatic nroff request pairing (Nroff Electric mode).
301`nroff-electric-newline' forces Emacs to check for an nroff request at the 301With a prefix argument ARG, enable Nroff Electric mode if ARG is
302beginning of the line, and insert the matching closing request if necessary. 302positive, and disable it otherwise. If called from Lisp, enable
303This command toggles that mode (off->on, on->off), with an argument, 303the mode if ARG is omitted or nil.
304turns it on if arg is positive, otherwise off." 304
305Nroff Electric mode is a buffer-local minor mode, for use with
306`nroff-mode'. When enabled, Emacs checks for an nroff request at
307the beginning of the line, and inserts the matching closing
308request if necessary. This command toggles that mode (off->on,
309on->off), with an argument, turns it on if arg is positive,
310otherwise off."
305 :lighter " Electric" 311 :lighter " Electric"
306 (or (derived-mode-p 'nroff-mode) (error "Must be in nroff mode"))) 312 (or (derived-mode-p 'nroff-mode) (error "Must be in nroff mode")))
307 313
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 8fd055f7d87..b47924bc1f2 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -35,19 +35,23 @@
35 35
36(put 'use-hard-newlines 'permanent-local t) 36(put 'use-hard-newlines 'permanent-local t)
37(define-minor-mode use-hard-newlines 37(define-minor-mode use-hard-newlines
38 "Minor mode to distinguish hard and soft newlines. 38 "Toggle distinguishing between hard and soft newlines.
39When active, the functions `newline' and `open-line' add the 39With a prefix argument ARG, enable the feature if ARG is
40positive, and disable it otherwise. If called from Lisp, enable
41it if ARG is omitted or nil.
42
43When enabled, the functions `newline' and `open-line' add the
40text-property `hard' to newlines that they insert, and a line is 44text-property `hard' to newlines that they insert, and a line is
41only considered as a candidate to match `paragraph-start' or 45only considered as a candidate to match `paragraph-start' or
42`paragraph-separate' if it follows a hard newline. 46`paragraph-separate' if it follows a hard newline.
43 47
44Prefix argument says to turn mode on if positive, off if negative. 48When enabling, if there are newlines in the buffer but no hard
45When the mode is turned on, if there are newlines in the buffer but no hard 49newlines, ask the user whether to mark as hard any newlines
46newlines, ask the user whether to mark as hard any newlines preceding a 50preceding a `paragraph-start' line. From a program, second arg
47`paragraph-start' line. From a program, second arg INSERT specifies whether 51INSERT specifies whether to do this; it can be `never' to change
48to do this; it can be `never' to change nothing, t or `always' to force 52nothing, t or `always' to force marking, `guess' to try to do the
49marking, `guess' to try to do the right thing with no questions, nil 53right thing with no questions, nil or anything else to ask the
50or anything else to ask the user. 54user.
51 55
52Newlines not marked hard are called \"soft\", and are always internal 56Newlines not marked hard are called \"soft\", and are always internal
53to paragraphs. The fill functions insert and delete only soft newlines." 57to paragraphs. The fill functions insert and delete only soft newlines."
diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el
index 474872955b4..d60b7594c07 100644
--- a/lisp/textmodes/refill.el
+++ b/lisp/textmodes/refill.el
@@ -213,12 +213,17 @@ complex processing.")
213 213
214;;;###autoload 214;;;###autoload
215(define-minor-mode refill-mode 215(define-minor-mode refill-mode
216 "Toggle Refill minor mode. 216 "Toggle automatic refilling (Refill mode).
217With prefix arg, turn Refill mode on if arg is positive, otherwise turn it off. 217With a prefix argument ARG, enable Refill mode if ARG is
218positive, and disable it otherwise. If called from Lisp, enable
219the mode if ARG is omitted or nil.
218 220
219When Refill mode is on, the current paragraph will be formatted when 221Refill mode is a buffer-local minor mode. When enabled, the
220changes are made within it. Self-inserting characters only cause 222current paragraph is refilled as you edit. Self-inserting
221refilling if they would cause auto-filling." 223characters only cause refilling if they would cause
224auto-filling.
225
226For true \"word wrap\" behavior, use `visual-line-mode' instead."
222 :group 'refill 227 :group 'refill
223 :lighter " Refill" 228 :lighter " Refill"
224 :keymap '(("\177" . backward-delete-char-untabify)) 229 :keymap '(("\177" . backward-delete-char-untabify))
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 7e150bff997..6f6993980db 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -503,7 +503,13 @@
503(put 'reftex-mode :menu-tag "RefTeX Mode") 503(put 'reftex-mode :menu-tag "RefTeX Mode")
504;;;###autoload 504;;;###autoload
505(define-minor-mode reftex-mode 505(define-minor-mode reftex-mode
506 "Minor mode with distinct support for \\label, \\ref and \\cite in LaTeX. 506 "Toggle RefTeX mode.
507With a prefix argument ARG, enable RefTeX mode if ARG is
508positive, and disable it otherwise. If called from Lisp, enable
509the mode if ARG is omitted or nil.
510
511RefTeX mode is a buffer-local minor mode with distinct support
512for \\label, \\ref and \\cite in LaTeX.
507 513
508\\<reftex-mode-map>A Table of Contents of the entire (multifile) document with browsing 514\\<reftex-mode-map>A Table of Contents of the entire (multifile) document with browsing
509capabilities is available with `\\[reftex-toc]'. 515capabilities is available with `\\[reftex-toc]'.
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index c1ce950522c..f9fda7e0a74 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -442,11 +442,10 @@ font-locking of blocks.
442 442
443;;;###autoload 443;;;###autoload
444(define-minor-mode rst-minor-mode 444(define-minor-mode rst-minor-mode
445 "ReST Minor Mode. 445 "Toggle ReST minor mode.
446Toggle ReST minor mode. 446With a prefix argument ARG, enable ReST minor mode if ARG is
447With no argument, this command toggles the mode. 447positive, and disable it otherwise. If called from Lisp, enable
448Non-null prefix argument turns on the mode. 448the mode if ARG is omitted or nil.
449Null prefix argument turns off the mode.
450 449
451When ReST minor mode is enabled, the ReST mode keybindings 450When ReST minor mode is enabled, the ReST mode keybindings
452are installed on top of the major mode bindings. Use this 451are installed on top of the major mode bindings. Use this
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 314fbf9671b..be8dd9c9130 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -841,7 +841,14 @@ Return non-nil if we skipped over matched tags."
841 (delete-overlay (pop sgml-electric-tag-pair-overlays)))) 841 (delete-overlay (pop sgml-electric-tag-pair-overlays))))
842 842
843(define-minor-mode sgml-electric-tag-pair-mode 843(define-minor-mode sgml-electric-tag-pair-mode
844 "Automatically update the closing tag when editing the opening one." 844 "Toggle SGML Electric Tag Pair mode.
845With a prefix argument ARG, enable the mode if ARG is positive,
846and disable it otherwise. If called from Lisp, enable the mode
847if ARG is omitted or nil.
848
849SGML Electric Tag Pair mode is a buffer-local minor mode for use
850with `sgml-mode' and related maor modes. When enabled, editing
851an opening markup tag automatically updates the closing tag."
845 :lighter "/e" 852 :lighter "/e"
846 (if sgml-electric-tag-pair-mode 853 (if sgml-electric-tag-pair-mode
847 (progn 854 (progn
@@ -2024,9 +2031,14 @@ The third `match-string' will be the used in the menu.")
2024 (nreverse toc-index))) 2031 (nreverse toc-index)))
2025 2032
2026(define-minor-mode html-autoview-mode 2033(define-minor-mode html-autoview-mode
2027 "Toggle automatic viewing via `browse-url-of-buffer' upon saving buffer. 2034 "Toggle viewing of HTML files on save (HTML Autoview mode).
2028With positive prefix ARG always turns viewing on, with negative ARG always off. 2035With a prefix argument ARG, enable HTML Autoview mode if ARG is
2029Can be used as a value for `html-mode-hook'." 2036positive, and disable it otherwise. If called from Lisp, enable
2037the mode if ARG is omitted or nil.
2038
2039HTML Autoview mode is a buffer-local minor mode for use with
2040`html-mode'. If enabled, saving the file automatically runs
2041`browse-url-of-buffer' to view it."
2030 nil nil nil 2042 nil nil nil
2031 :group 'sgml 2043 :group 'sgml
2032 (if html-autoview-mode 2044 (if html-autoview-mode
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 428fc1db3a9..deb92fc0243 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -677,8 +677,14 @@ An alternative value is \" . \", if you use a font with a narrow period."
677 (put-text-property start end 'latex-env-pair t))) 677 (put-text-property start end 'latex-env-pair t)))
678 678
679(define-minor-mode latex-electric-env-pair-mode 679(define-minor-mode latex-electric-env-pair-mode
680 "Automatically update the \\end arg when editing the \\begin one. 680 "Toggle Latex Electric Env Pair mode.
681And vice-versa." 681With a prefix argument ARG, enable the mode if ARG is positive,
682and disable it otherwise. If called from Lisp, enable it if ARG
683is omitted or nil.
684
685Latex Electric Env Pair mode is a buffer-local minor mode for use
686with `latex-mode'. When enabled, typing a \\begin or \\end tag
687automatically inserts its partner."
682 :lighter "/e" 688 :lighter "/e"
683 (if latex-electric-env-pair-mode 689 (if latex-electric-env-pair-mode
684 (add-hook 'before-change-functions 690 (add-hook 'before-change-functions
diff --git a/lisp/time.el b/lisp/time.el
index f8fea0c64a2..ac4a011bdf8 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -484,14 +484,15 @@ update which can wait for the next redisplay."
484;;;###autoload 484;;;###autoload
485(define-minor-mode display-time-mode 485(define-minor-mode display-time-mode
486 "Toggle display of time, load level, and mail flag in mode lines. 486 "Toggle display of time, load level, and mail flag in mode lines.
487With a numeric arg, enable this display if arg is positive. 487With a prefix argument ARG, enable Display Time mode if ARG is
488 488positive, and disable it otherwise. If called from Lisp, enable
489When this display is enabled, it updates automatically every minute 489it if ARG is omitted or nil.
490\(you can control the number of seconds between updates by 490
491customizing `display-time-interval'). 491When Display Time mode is enabled, it updates every minute (you
492If `display-time-day-and-date' is non-nil, the current day and date 492can control the number of seconds between updates by customizing
493are displayed as well. 493`display-time-interval'). If `display-time-day-and-date' is
494This runs the normal hook `display-time-hook' after each update." 494non-nil, the current day and date are displayed as well. This
495runs the normal hook `display-time-hook' after each update."
495 :global t :group 'display-time 496 :global t :group 'display-time
496 (and display-time-timer (cancel-timer display-time-timer)) 497 (and display-time-timer (cancel-timer display-time-timer))
497 (setq display-time-timer nil) 498 (setq display-time-timer nil)
diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el
index 05208abb720..8759e0f77fb 100644
--- a/lisp/tool-bar.el
+++ b/lisp/tool-bar.el
@@ -43,9 +43,10 @@
43;; Deleting it means invoking this command won't work 43;; Deleting it means invoking this command won't work
44;; when you are on a tty. I hope that won't cause too much trouble -- rms. 44;; when you are on a tty. I hope that won't cause too much trouble -- rms.
45(define-minor-mode tool-bar-mode 45(define-minor-mode tool-bar-mode
46 "Toggle use of the tool bar. 46 "Toggle the tool bar in all graphical frames (Tool Bar mode).
47With a numeric argument, if the argument is positive, turn on the 47With a prefix argument ARG, enable Tool Bar mode if ARG is
48tool bar; otherwise, turn off the tool bar. 48positive, and disable it otherwise. If called from Lisp, enable
49Tool Bar mode if ARG is omitted or nil.
49 50
50See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for 51See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for
51conveniently adding tool bar items." 52conveniently adding tool bar items."
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index bfe53dc71b7..59115122c34 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -39,11 +39,14 @@
39;;; Switching tooltips on/off 39;;; Switching tooltips on/off
40 40
41(define-minor-mode tooltip-mode 41(define-minor-mode tooltip-mode
42 "Toggle Tooltip mode. 42 "Toggle use of graphical tooltips (Tooltip mode).
43With ARG, turn Tooltip mode on if and only if ARG is positive. 43With a prefix argument ARG, enable Tooltip mode if ARG is
44When this minor mode is enabled, Emacs displays help text 44positive, and disable it otherwise. If called from Lisp, enable
45in a pop-up window for buttons and menu items that you put the mouse on. 45it if ARG is omitted or nil.
46\(However, if `tooltip-use-echo-area' is non-nil, this and 46
47When Tooltip mode is enabled, Emacs displays help text in a
48pop-up window for buttons and menu items that you put the mouse
49on. \(However, if `tooltip-use-echo-area' is non-nil, this and
47all pop-up help appears in the echo area.) 50all pop-up help appears in the echo area.)
48 51
49When Tooltip mode is disabled, Emacs displays one line of 52When Tooltip mode is disabled, Emacs displays one line of
diff --git a/lisp/type-break.el b/lisp/type-break.el
index d276e64f6db..da3129ec576 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -431,13 +431,13 @@ problems."
431 type-break-mode) 431 type-break-mode)
432 432
433(define-minor-mode type-break-mode-line-message-mode 433(define-minor-mode type-break-mode-line-message-mode
434 "Enable or disable warnings in the mode line about typing breaks. 434 "Toggle warnings about typing breaks in the mode line.
435With a prefix argument ARG, enable these warnings if ARG is
436positive, and disable them otherwise. If called from Lisp,
437enable them if ARG is omitted or nil.
435 438
436A negative PREFIX argument disables this mode. 439The user may also enable or disable this mode simply by setting
437No argument or any non-negative argument enables it. 440the variable of the same name.
438
439The user may also enable or disable this mode simply by setting the
440variable of the same name.
441 441
442Variables controlling the display of messages in the mode line include: 442Variables controlling the display of messages in the mode line include:
443 443
@@ -448,17 +448,13 @@ Variables controlling the display of messages in the mode line include:
448 :global t) 448 :global t)
449 449
450(define-minor-mode type-break-query-mode 450(define-minor-mode type-break-query-mode
451 "Enable or disable warnings in the mode line about typing breaks. 451 "Toggle typing break queries.
452 452With a prefix argument ARG, enable these queries if ARG is
453When enabled, the user is periodically queried about whether to take a 453positive, and disable them otherwise. If called from Lisp,
454typing break at that moment. The function which does this query is 454enable them if ARG is omitted or nil.
455specified by the variable `type-break-query-function'.
456
457A negative PREFIX argument disables this mode.
458No argument or any non-negative argument enables it.
459 455
460The user may also enable or disable this mode simply by setting the 456The user may also enable or disable this mode simply by setting
461variable of the same name." 457the variable of the same name."
462 :global t) 458 :global t)
463 459
464 460
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index fbc267df44a..1b6890e5252 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,7 @@
12011-10-19 Chong Yidong <cyd@gnu.org>
2
3 * url-handlers.el (url-handler-mode): Doc fix.
4
12011-09-24 Christopher J. White <chris@grierwhite.com> (tiny change) 52011-09-24 Christopher J. White <chris@grierwhite.com> (tiny change)
2 6
3 * url-http.el (url-http-create-request): Avoid adding extra CRLF 7 * url-http.el (url-http-create-request): Avoid adding extra CRLF
diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el
index fef0ef15e95..d5f7eb7dd36 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -100,7 +100,10 @@ particularly bad at this\).")
100 100
101;;;###autoload 101;;;###autoload
102(define-minor-mode url-handler-mode 102(define-minor-mode url-handler-mode
103 "Use URL to handle URL-like file names." 103 "Toggle using `url' library for URL filenames (URL Handler mode).
104With a prefix argument ARG, enable URL Handler mode if ARG is
105positive, and disable it otherwise. If called from Lisp, enable
106the mode if ARG is omitted or nil."
104 :global t :group 'url 107 :global t :group 'url
105 (if (not (boundp 'file-name-handler-alist)) 108 (if (not (boundp 'file-name-handler-alist))
106 ;; Can't be turned ON anyway. 109 ;; Can't be turned ON anyway.
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 392973e08fe..9f0fa584b0d 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -225,9 +225,16 @@ when editing big diffs)."
225 "Keymap for `diff-minor-mode'. See also `diff-mode-shared-map'.") 225 "Keymap for `diff-minor-mode'. See also `diff-mode-shared-map'.")
226 226
227(define-minor-mode diff-auto-refine-mode 227(define-minor-mode diff-auto-refine-mode
228 "Automatically highlight changes in detail as the user visits hunks. 228 "Toggle automatic diff hunk highlighting (Diff Auto Refine mode).
229When transitioning from disabled to enabled, 229With a prefix argument ARG, enable Diff Auto Refine mode if ARG
230try to refine the current hunk, as well." 230is positive, and disable it otherwise. If called from Lisp,
231enable the mode if ARG is omitted or nil.
232
233Diff Auto Refine mode is a buffer-local minor mode used with
234`diff-mode'. When enabled, Emacs automatically highlights
235changes in detail as the user visits hunks. When transitioning
236from disabled to enabled, it tries to refine the current hunk, as
237well."
231 :group 'diff-mode :init-value t :lighter nil ;; " Auto-Refine" 238 :group 'diff-mode :init-value t :lighter nil ;; " Auto-Refine"
232 (when diff-auto-refine-mode 239 (when diff-auto-refine-mode
233 (condition-case-no-debug nil (diff-refine-hunk) (error nil)))) 240 (condition-case-no-debug nil (diff-refine-hunk) (error nil))))
@@ -1306,7 +1313,11 @@ a diff with \\[diff-reverse-direction].
1306 1313
1307;;;###autoload 1314;;;###autoload
1308(define-minor-mode diff-minor-mode 1315(define-minor-mode diff-minor-mode
1309 "Minor mode for viewing/editing context diffs. 1316 "Toggle Diff minor mode.
1317With a prefix argument ARG, enable Diff minor mode if ARG is
1318positive, and disable it otherwise. If called from Lisp, enable
1319the mode if ARG is omitted or nil.
1320
1310\\{diff-minor-mode-map}" 1321\\{diff-minor-mode-map}"
1311 :group 'diff-mode :lighter " Diff" 1322 :group 'diff-mode :lighter " Diff"
1312 ;; FIXME: setup font-lock 1323 ;; FIXME: setup font-lock
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index 0d904ec85c4..eeaa2cfa927 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -1340,11 +1340,9 @@ this variable represents.")
1340 ovr-list)))))))) 1340 ovr-list))))))))
1341 1341
1342 1342
1343(defvar ediff-toggle-read-only-function nil 1343(defvar ediff-toggle-read-only-function 'toggle-read-only
1344 "*Specifies the function to be used to toggle read-only. 1344 "Function to be used to toggle read-only status of the buffer.
1345If nil, Ediff tries to deduce the function from the binding of C-x C-q. 1345If nil, Ediff tries using the command bound to C-x C-q.")
1346Normally, this is the `toggle-read-only' function, but, if version
1347control is used, it could be `vc-toggle-read-only' or `rcs-toggle-read-only'.")
1348 1346
1349(defcustom ediff-make-buffers-readonly-at-startup nil 1347(defcustom ediff-make-buffers-readonly-at-startup nil
1350 "Make all variant buffers read-only when Ediff starts up. 1348 "Make all variant buffers read-only when Ediff starts up.
diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el
index b3f5cfb78f7..c421304442f 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -386,7 +386,7 @@ uses the current buffer."
386 (setq setup (not setup))) 386 (setq setup (not setup)))
387 (when setup 387 (when setup
388 (erase-buffer) 388 (erase-buffer)
389 (insert "Summary: ") 389 (insert "Summary: \nAuthor: ")
390 (save-excursion (insert "\n\n"))) 390 (save-excursion (insert "\n\n")))
391 (if mode 391 (if mode
392 (funcall mode) 392 (funcall mode)
@@ -536,7 +536,7 @@ If you want to abort the commit, simply delete the buffer."
536 (or (= (point-min) (point-max)) 536 (or (= (point-min) (point-max))
537 (save-excursion 537 (save-excursion
538 (goto-char (point-min)) 538 (goto-char (point-min))
539 (while (and (looking-at "^\\(Summary: \\)?$") 539 (while (and (looking-at "^\\([a-zA-Z]+: \\)?$")
540 (zerop (forward-line 1)))) 540 (zerop (forward-line 1))))
541 (eobp)))) 541 (eobp))))
542 542
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 3ab1caf2864..cc28db689e9 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -866,7 +866,7 @@ stream. Standard error output is discarded."
866 (" M " . edited) ;; file text modified 866 (" M " . edited) ;; file text modified
867 (" *" . edited) ;; execute bit changed 867 (" *" . edited) ;; execute bit changed
868 (" M*" . edited) ;; text modified + execute bit changed 868 (" M*" . edited) ;; text modified + execute bit changed
869 ;; FIXME: what about ignored files? 869 ("I " . ignored)
870 (" D " . missing) 870 (" D " . missing)
871 ;; For conflicts, should we list the .THIS/.BASE/.OTHER? 871 ;; For conflicts, should we list the .THIS/.BASE/.OTHER?
872 ("C " . conflict) 872 ("C " . conflict)
@@ -916,7 +916,7 @@ stream. Standard error output is discarded."
916 (push (list new-name 'edited 916 (push (list new-name 'edited
917 (vc-bzr-create-extra-fileinfo old-name)) result))) 917 (vc-bzr-create-extra-fileinfo old-name)) result)))
918 ;; do nothing for non existent files 918 ;; do nothing for non existent files
919 ((eq translated 'not-found)) 919 ((memq translated '(not-found ignored)))
920 (t 920 (t
921 (push (list (file-relative-name 921 (push (list (file-relative-name
922 (buffer-substring-no-properties 922 (buffer-substring-no-properties
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index e7bfd273732..35fa11c2e5e 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -648,22 +648,8 @@ this function."
648 (throw 'found trial)))) 648 (throw 'found trial))))
649 templates)))) 649 templates))))
650 650
651(defun vc-toggle-read-only (&optional verbose) 651(define-obsolete-function-alias
652 "Change read-only status of current buffer, perhaps via version control. 652 'vc-toggle-read-only 'toggle-read-only "24.1")
653
654If the buffer is visiting a file registered with version control,
655throw an error, because this is not a safe or really meaningful operation
656on any version-control system newer than RCS.
657
658Otherwise, just change the read-only flag of the buffer.
659
660If you bind this function to \\[toggle-read-only], then Emacs
661will properly intercept all attempts to toggle the read-only flag
662on version-controlled buffer."
663 (interactive "P")
664 (if (vc-backend buffer-file-name)
665 (error "Toggling the readability of a version controlled file is likely to wreak havoc")
666 (toggle-read-only)))
667 653
668(defun vc-default-make-version-backups-p (backend file) 654(defun vc-default-make-version-backups-p (backend file)
669 "Return non-nil if unmodified versions should be backed up locally. 655 "Return non-nil if unmodified versions should be backed up locally.
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 62536fd94be..909585138fc 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -675,6 +675,8 @@
675 :type 'boolean 675 :type 'boolean
676 :group 'vc) 676 :group 'vc)
677 677
678(make-obsolete-variable 'vc-initial-comment "it has no effect." "23.2")
679
678(defcustom vc-default-init-revision "1.1" 680(defcustom vc-default-init-revision "1.1"
679 "A string used as the default revision number when a new file is registered. 681 "A string used as the default revision number when a new file is registered.
680This can be overridden by giving a prefix argument to \\[vc-register]. This 682This can be overridden by giving a prefix argument to \\[vc-register]. This
@@ -1118,9 +1120,13 @@ merge in the changes into your working copy."
1118 ;; Files have local changes 1120 ;; Files have local changes
1119 ((vc-compatible-state state 'edited) 1121 ((vc-compatible-state state 'edited)
1120 (let ((ready-for-commit files)) 1122 (let ((ready-for-commit files))
1121 ;; If files are edited but read-only, give user a chance to correct 1123 ;; If files are edited but read-only, give user a chance to correct.
1122 (dolist (file files) 1124 (dolist (file files)
1123 (unless (file-writable-p file) 1125 ;; If committing a mix of removed and edited files, the
1126 ;; fileset has state = 'edited. Rather than checking the
1127 ;; state of each individual file in the fileset, it seems
1128 ;; simplest to just check if the file exists. Bug#9781.
1129 (when (and (file-exists-p file) (not (file-writable-p file)))
1124 ;; Make the file+buffer read-write. 1130 ;; Make the file+buffer read-write.
1125 (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file)) 1131 (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file))
1126 (error "Aborted")) 1132 (error "Aborted"))
diff --git a/lisp/view.el b/lisp/view.el
index 11cbc79449f..ef865007332 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -369,19 +369,24 @@ this argument instead of explicitly setting `view-exit-action'."
369 ;; bindings instead of using the \\[] construction. The reason for this 369 ;; bindings instead of using the \\[] construction. The reason for this
370 ;; is that most commands have more than one key binding. 370 ;; is that most commands have more than one key binding.
371 "Toggle View mode, a minor mode for viewing text but not editing it. 371 "Toggle View mode, a minor mode for viewing text but not editing it.
372With prefix argument ARG, turn View mode on if ARG is positive, otherwise 372With a prefix argument ARG, enable View mode if ARG is positive,
373turn it off. 373and disable it otherwise. If called from Lisp, enable View mode
374if ARG is omitted or nil.
375
376When View mode is enabled, commands that do not change the buffer
377contents are available as usual. Kill commands insert text in
378kill buffers but do not delete. Most other commands beep and
379tell the user that the buffer is read-only.
374 380
375Emacs commands that do not change the buffer contents are available as usual.
376Kill commands insert text in kill buffers but do not delete. Other commands
377\(among them most letters and punctuation) beep and tell that the buffer is
378read-only.
379\\<view-mode-map> 381\\<view-mode-map>
380The following additional commands are provided. Most commands take prefix 382
381arguments. Page commands default to \"page size\" lines which is almost a whole 383The following additional commands are provided. Most commands
382window full, or number of lines set by \\[View-scroll-page-forward-set-page-size] or \\[View-scroll-page-backward-set-page-size]. Half page commands default to 384take prefix arguments. Page commands default to \"page size\"
383and set \"half page size\" lines which initially is half a window full. Search 385lines which is almost a whole window, or number of lines set by
384commands default to a repeat count of one. 386\\[View-scroll-page-forward-set-page-size] or \\[View-scroll-page-backward-set-page-size].
387Half page commands default to and set \"half page size\" lines
388which initially is half a window full. Search commands default
389to a repeat count of one.
385 390
386H, h, ? This message. 391H, h, ? This message.
387Digits provide prefix arguments. 392Digits provide prefix arguments.
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index e0bc74343d2..8dc1996734d 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1064,11 +1064,10 @@ Any other value is treated as nil."
1064 1064
1065;;;###autoload 1065;;;###autoload
1066(define-minor-mode whitespace-mode 1066(define-minor-mode whitespace-mode
1067 "Toggle whitespace minor mode visualization (\"ws\" on modeline). 1067 "Toggle whitespace visualization (Whitespace mode).
1068 1068With a prefix argument ARG, enable Whitespace mode if ARG is
1069If ARG is null, toggle whitespace visualization. 1069positive, and disable it otherwise. If called from Lisp, enable
1070If ARG is a number greater than zero, turn on visualization; 1070the mode if ARG is omitted or nil.
1071otherwise, turn off visualization.
1072 1071
1073See also `whitespace-style', `whitespace-newline' and 1072See also `whitespace-style', `whitespace-newline' and
1074`whitespace-display-mappings'." 1073`whitespace-display-mappings'."
@@ -1088,11 +1087,10 @@ See also `whitespace-style', `whitespace-newline' and
1088 1087
1089;;;###autoload 1088;;;###autoload
1090(define-minor-mode whitespace-newline-mode 1089(define-minor-mode whitespace-newline-mode
1091 "Toggle NEWLINE minor mode visualization (\"nl\" on modeline). 1090 "Toggle newline visualization (Whitespace Newline mode).
1092 1091With a prefix argument ARG, enable Whitespace Newline mode if ARG
1093If ARG is null, toggle NEWLINE visualization. 1092is positive, and disable it otherwise. If called from Lisp,
1094If ARG is a number greater than zero, turn on visualization; 1093enable the mode if ARG is omitted or nil.
1095otherwise, turn off visualization.
1096 1094
1097Use `whitespace-newline-mode' only for NEWLINE visualization 1095Use `whitespace-newline-mode' only for NEWLINE visualization
1098exclusively. For other visualizations, including NEWLINE 1096exclusively. For other visualizations, including NEWLINE
@@ -1116,11 +1114,10 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
1116 1114
1117;;;###autoload 1115;;;###autoload
1118(define-minor-mode global-whitespace-mode 1116(define-minor-mode global-whitespace-mode
1119 "Toggle whitespace global minor mode visualization (\"WS\" on modeline). 1117 "Toggle whitespace visualization globally (Global Whitespace mode).
1120 1118With a prefix argument ARG, enable Global Whitespace mode if ARG
1121If ARG is null, toggle whitespace visualization. 1119is positive, and disable it otherwise. If called from Lisp,
1122If ARG is a number greater than zero, turn on visualization; 1120enable it if ARG is omitted or nil.
1123otherwise, turn off visualization.
1124 1121
1125See also `whitespace-style', `whitespace-newline' and 1122See also `whitespace-style', `whitespace-newline' and
1126`whitespace-display-mappings'." 1123`whitespace-display-mappings'."
@@ -1174,11 +1171,10 @@ See also `whitespace-style', `whitespace-newline' and
1174 1171
1175;;;###autoload 1172;;;###autoload
1176(define-minor-mode global-whitespace-newline-mode 1173(define-minor-mode global-whitespace-newline-mode
1177 "Toggle NEWLINE global minor mode visualization (\"NL\" on modeline). 1174 "Toggle global newline visualization (Global Whitespace Newline mode).
1178 1175With a prefix argument ARG, enable Global Whitespace Newline mode
1179If ARG is null, toggle NEWLINE visualization. 1176if ARG is positive, and disable it otherwise. If called from
1180If ARG is a number greater than zero, turn on visualization; 1177Lisp, enable it if ARG is omitted or nil.
1181otherwise, turn off visualization.
1182 1178
1183Use `global-whitespace-newline-mode' only for NEWLINE 1179Use `global-whitespace-newline-mode' only for NEWLINE
1184visualization exclusively. For other visualizations, including 1180visualization exclusively. For other visualizations, including
diff --git a/lisp/wid-browse.el b/lisp/wid-browse.el
index b765e46b9c6..7ca13baeb53 100644
--- a/lisp/wid-browse.el
+++ b/lisp/wid-browse.el
@@ -270,8 +270,7 @@ VALUE is assumed to be a list of widgets."
270 270
271;;;###autoload 271;;;###autoload
272(define-minor-mode widget-minor-mode 272(define-minor-mode widget-minor-mode
273 "Togle minor mode for traversing widgets. 273 "Minor mode for traversing widgets."
274With arg, turn widget mode on if and only if arg is positive."
275 :lighter " Widget") 274 :lighter " Widget")
276 275
277;;; The End: 276;;; The End:
diff --git a/lisp/window.el b/lisp/window.el
index 4d8b3c92b95..968f47f4f31 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1084,6 +1084,35 @@ regardless of whether that buffer is current or not."
1084 (goto-char pos)) 1084 (goto-char pos))
1085 (set-window-point window pos))) 1085 (set-window-point window pos)))
1086 1086
1087(defun window-at-side-p (&optional window side)
1088 "Return t if WINDOW is at SIDE of its containing frame.
1089WINDOW can be any window and defaults to the selected one. SIDE
1090can be any of the symbols `left', `top', `right' or `bottom'.
1091The default value nil is handled like `bottom'."
1092 (setq window (window-normalize-any-window window))
1093 (let ((edge
1094 (cond
1095 ((eq side 'left) 0)
1096 ((eq side 'top) 1)
1097 ((eq side 'right) 2)
1098 ((memq side '(bottom nil)) 3))))
1099 (= (nth edge (window-edges window))
1100 (nth edge (window-edges (frame-root-window window))))))
1101
1102(defun windows-at-side (&optional frame side)
1103 "Return list of all windows on SIDE of FRAME.
1104FRAME must be a live frame and defaults to the selected frame.
1105SIDE can be any of the symbols `left', `top', `right' or
1106`bottom'. The default value nil is handled like `bottom'."
1107 (setq frame (window-normalize-frame frame))
1108 (let (windows)
1109 (walk-window-tree
1110 (lambda (window)
1111 (when (window-at-side-p window side)
1112 (setq windows (cons window windows))))
1113 frame)
1114 (nreverse windows)))
1115
1087(defun window-in-direction-2 (window posn &optional horizontal) 1116(defun window-in-direction-2 (window posn &optional horizontal)
1088 "Support function for `window-in-direction'." 1117 "Support function for `window-in-direction'."
1089 (if horizontal 1118 (if horizontal
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index eca5f813ca2..09b2a7b88bd 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -199,8 +199,9 @@
199;;;###autoload 199;;;###autoload
200(define-minor-mode xterm-mouse-mode 200(define-minor-mode xterm-mouse-mode
201 "Toggle XTerm mouse mode. 201 "Toggle XTerm mouse mode.
202With prefix arg, turn XTerm mouse mode on if arg is positive, otherwise turn 202With a prefix argument ARG, enable XTerm mouse mode if ARG is
203it off. 203positive, and disable it otherwise. If called from Lisp, enable
204the mode if ARG is omitted or nil.
204 205
205Turn it on to use Emacs mouse commands, and off to use xterm mouse commands. 206Turn it on to use Emacs mouse commands, and off to use xterm mouse commands.
206This works in terminal emulators compatible with xterm. It only 207This works in terminal emulators compatible with xterm. It only
diff --git a/make-dist b/make-dist
index 2dbb35cdc5b..a428686cc84 100755
--- a/make-dist
+++ b/make-dist
@@ -302,7 +302,6 @@ for subdir in site-lisp \
302 nextstep/Cocoa/Emacs.base/Contents \ 302 nextstep/Cocoa/Emacs.base/Contents \
303 nextstep/Cocoa/Emacs.base/Contents/Resources \ 303 nextstep/Cocoa/Emacs.base/Contents/Resources \
304 nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj \ 304 nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj \
305 nextstep/Cocoa/Emacs.xcodeproj \
306 nextstep/GNUstep \ 305 nextstep/GNUstep \
307 nextstep/GNUstep/Emacs.base \ 306 nextstep/GNUstep/Emacs.base \
308 nextstep/GNUstep/Emacs.base/Resources 307 nextstep/GNUstep/Emacs.base/Resources
@@ -438,10 +437,6 @@ echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents/Resources/English.lpr
438(cd nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj 437(cd nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj
439 ln InfoPlist.strings ../../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj) 438 ln InfoPlist.strings ../../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj)
440 439
441echo "Making links to \`nextstep/Cocoa/Emacs.xcodeproj'"
442(cd nextstep/Cocoa/Emacs.xcodeproj
443 ln project.pbxproj ../../../${tempdir}/nextstep/Cocoa/Emacs.xcodeproj)
444
445echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'" 440echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
446(cd nextstep/GNUstep/Emacs.base/Resources 441(cd nextstep/GNUstep/Emacs.base/Resources
447 ln Emacs.desktop Info-gnustep.plist README emacs.tiff ../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources ) 442 ln Emacs.desktop Info-gnustep.plist README emacs.tiff ../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources )
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog
index 263bd923f0f..4e8fe399970 100644
--- a/nextstep/ChangeLog
+++ b/nextstep/ChangeLog
@@ -1,3 +1,13 @@
12011-10-19 Jan Djärv <jan.h.d@swipnet.se>
2
3 * INSTALL: Remove XCode part.
4
52011-10-18 Jan Djärv <jan.h.d@swipnet.se>
6
7 * Cocoa/Emacs.xcodeproj:
8 * Cocoa/Emacs.xcodeproj/project.pbxproj:
9 Removed.
10
12011-03-07 Chong Yidong <cyd@stupidchicken.com> 112011-03-07 Chong Yidong <cyd@stupidchicken.com>
2 12
3 * Version 23.3 released. 13 * Version 23.3 released.
diff --git a/nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj b/nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
deleted file mode 100644
index fe5acce2c3c..00000000000
--- a/nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,798 +0,0 @@
1// !$*UTF8*$!
2{
3 archiveVersion = 1;
4 classes = {
5 };
6 objectVersion = 42;
7 objects = {
8
9/* Begin PBXBuildFile section */
10 3C3AF9CA0FC10CDF001240E9 /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C3AF9C90FC10CDF001240E9 /* menu.c */; };
11 3C3AF9D50FC10D85001240E9 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */; };
12 3CED87390FC0F581005ACB89 /* alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC50902EA8200B2EF7E /* alloc.c */; };
13 3CED873A0FC0F581005ACB89 /* atimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCD0902EA8200B2EF7E /* atimer.c */; };
14 3CED873B0FC0F581005ACB89 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8B0902EA8200B2EF7E /* buffer.c */; };
15 3CED873C0FC0F581005ACB89 /* bytecode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC60902EA8200B2EF7E /* bytecode.c */; };
16 3CED873D0FC0F581005ACB89 /* callint.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB40902EA8200B2EF7E /* callint.c */; };
17 3CED873E0FC0F581005ACB89 /* callproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC70902EA8200B2EF7E /* callproc.c */; };
18 3CED873F0FC0F581005ACB89 /* casefiddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */; };
19 3CED87400FC0F581005ACB89 /* casetab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC10902EA8200B2EF7E /* casetab.c */; };
20 3CED87410FC0F581005ACB89 /* category.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7B0902EA8200B2EF7E /* category.c */; };
21 3CED87420FC0F581005ACB89 /* ccl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB60902EA8200B2EF7E /* ccl.c */; };
22 3CED87430FC0F581005ACB89 /* character.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8C0902EA8200B2EF7E /* character.c */; };
23 3CED87440FC0F581005ACB89 /* charset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC40902EA8200B2EF7E /* charset.c */; };
24 3CED87450FC0F581005ACB89 /* chartab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCC0902EA8200B2EF7E /* chartab.c */; };
25 3CED87460FC0F581005ACB89 /* cm.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC80902EA8200B2EF7E /* cm.c */; };
26 3CED87470FC0F581005ACB89 /* cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7A0902EA8200B2EF7E /* cmds.c */; };
27 3CED87480FC0F581005ACB89 /* coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7C0902EA8200B2EF7E /* coding.c */; };
28 3CED87490FC0F581005ACB89 /* composite.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC20902EA8200B2EF7E /* composite.c */; };
29 3CED874A0FC0F581005ACB89 /* data.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB30902EA8200B2EF7E /* data.c */; };
30 3CED874B0FC0F581005ACB89 /* dired.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB20902EA8200B2EF7E /* dired.c */; };
31 3CED874C0FC0F581005ACB89 /* dispnew.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC30902EA8200B2EF7E /* dispnew.c */; };
32 3CED874D0FC0F581005ACB89 /* doc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB10902EA8200B2EF7E /* doc.c */; };
33 3CED874E0FC0F581005ACB89 /* doprnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB00902EA8200B2EF7E /* doprnt.c */; };
34 3CED874F0FC0F581005ACB89 /* editfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBE0902EA8200B2EF7E /* editfns.c */; };
35 3CED87500FC0F581005ACB89 /* emacs.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBD0902EA8200B2EF7E /* emacs.c */; };
36 3CED87510FC0F581005ACB89 /* eval.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC00902EA8200B2EF7E /* eval.c */; };
37 3CED87520FC0F581005ACB89 /* fileio.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBF0902EA8200B2EF7E /* fileio.c */; };
38 3CED87530FC0F581005ACB89 /* filelock.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBC0902EA8200B2EF7E /* filelock.c */; };
39 3CED87540FC0F581005ACB89 /* filemode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBB0902EA8200B2EF7E /* filemode.c */; };
40 3CED87550FC0F581005ACB89 /* floatfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB90902EA8200B2EF7E /* floatfns.c */; };
41 3CED87560FC0F581005ACB89 /* fns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB80902EA8200B2EF7E /* fns.c */; };
42 3CED87570FC0F581005ACB89 /* font.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D660DE50D2300B20D4E /* font.c */; };
43 3CED87580FC0F581005ACB89 /* fontset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB70902EA8200B2EF7E /* fontset.c */; };
44 3CED87590FC0F581005ACB89 /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCB0902EA8200B2EF7E /* frame.c */; };
45 3CED875A0FC0F581005ACB89 /* fringe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCA0902EA8200B2EF7E /* fringe.c */; };
46 3CED875B0FC0F581005ACB89 /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED780902EA8200B2EF7E /* image.c */; };
47 3CED875C0FC0F581005ACB89 /* indent.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED770902EA8200B2EF7E /* indent.c */; };
48 3CED875D0FC0F581005ACB89 /* insdel.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED760902EA8200B2EF7E /* insdel.c */; };
49 3CED875E0FC0F581005ACB89 /* intervals.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED750902EA8200B2EF7E /* intervals.c */; };
50 3CED875F0FC0F581005ACB89 /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED740902EA8200B2EF7E /* keyboard.c */; };
51 3CED87600FC0F581005ACB89 /* keymap.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED730902EA8100B2EF7E /* keymap.c */; };
52 3CED87610FC0F581005ACB89 /* lastfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED720902EA8100B2EF7E /* lastfile.c */; };
53 3CED87620FC0F581005ACB89 /* lread.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED710902EA8100B2EF7E /* lread.c */; };
54 3CED87630FC0F581005ACB89 /* macros.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED6D0902EA8100B2EF7E /* macros.c */; };
55 3CED87640FC0F581005ACB89 /* marker.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED690902EA8100B2EF7E /* marker.c */; };
56 3CED87650FC0F581005ACB89 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED680902EA8100B2EF7E /* md5.c */; };
57 3CED87660FC0F581005ACB89 /* minibuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED670902EA8100B2EF7E /* minibuf.c */; };
58 3CED87670FC0F581005ACB89 /* nsfns.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF67E00C61DCD7F000001 /* nsfns.m */; };
59 3CED87680FC0F581005ACB89 /* nsfont.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D710DE50D5D00B20D4E /* nsfont.m */; };
60 3CED87690FC0F581005ACB89 /* nsimage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C15C1A70902D97100A8542F /* nsimage.m */; };
61 3CED876A0FC0F581005ACB89 /* nsmenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68000C61DCD7F000001 /* nsmenu.m */; };
62 3CED876B0FC0F581005ACB89 /* nsselect.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68100C61DCD7F000001 /* nsselect.m */; };
63 3CED876C0FC0F581005ACB89 /* nsterm.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68300C61DCD7F000001 /* nsterm.m */; };
64 3CED876D0FC0F581005ACB89 /* pre-crt0.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED640902EA8100B2EF7E /* pre-crt0.c */; };
65 3CED876E0FC0F581005ACB89 /* print.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED620902EA8100B2EF7E /* print.c */; };
66 3CED876F0FC0F581005ACB89 /* process.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED610902EA8100B2EF7E /* process.c */; };
67 3CED87700FC0F581005ACB89 /* regex.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5F0902EA8100B2EF7E /* regex.c */; };
68 3CED87710FC0F581005ACB89 /* region-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5E0902EA8100B2EF7E /* region-cache.c */; };
69 3CED87720FC0F581005ACB89 /* scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5D0902EA8100B2EF7E /* scroll.c */; };
70 3CED87730FC0F581005ACB89 /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5C0902EA8100B2EF7E /* search.c */; };
71 3CED87740FC0F581005ACB89 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5A0902EA8100B2EF7E /* sound.c */; };
72 3CED87750FC0F581005ACB89 /* strftime.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED590902EA8100B2EF7E /* strftime.c */; };
73 3CED87760FC0F581005ACB89 /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED570902EA8100B2EF7E /* syntax.c */; };
74 3CED87770FC0F581005ACB89 /* sysdep.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED560902EA8100B2EF7E /* sysdep.c */; };
75 3CED87780FC0F581005ACB89 /* term.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED550902EA8100B2EF7E /* term.c */; };
76 3CED877A0FC0F581005ACB89 /* terminal.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D690DE50D2300B20D4E /* terminal.c */; };
77 3CED877B0FC0F581005ACB89 /* terminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED950902EA8200B2EF7E /* terminfo.c */; };
78 3CED877C0FC0F581005ACB89 /* textprop.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED940902EA8200B2EF7E /* textprop.c */; };
79 3CED877E0FC0F581005ACB89 /* undo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED920902EA8200B2EF7E /* undo.c */; };
80 3CED877F0FC0F581005ACB89 /* unexmacosx.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED830902EA8200B2EF7E /* unexmacosx.c */; };
81 3CED87800FC0F581005ACB89 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9E0902EA8200B2EF7E /* window.c */; };
82 3CED87810FC0F581005ACB89 /* xdisp.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9D0902EA8200B2EF7E /* xdisp.c */; };
83 3CED87820FC0F581005ACB89 /* xfaces.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9C0902EA8200B2EF7E /* xfaces.c */; };
84 3CED88190FC0F5B3005ACB89 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CFDFC3A08E79A6800B05918 /* AppKit.framework */; };
85/* End PBXBuildFile section */
86
87/* Begin PBXContainerItemProxy section */
88 3CED88220FC0FE5C005ACB89 /* PBXContainerItemProxy */ = {
89 isa = PBXContainerItemProxy;
90 containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
91 proxyType = 1;
92 remoteGlobalIDString = 3CED87320FC0F557005ACB89;
93 remoteInfo = temacs;
94 };
95/* End PBXContainerItemProxy section */
96
97/* Begin PBXFileReference section */
98 090AF67E00C61DCD7F000001 /* nsfns.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsfns.m; path = ../../src/nsfns.m; sourceTree = "<group>"; };
99 090AF68000C61DCD7F000001 /* nsmenu.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsmenu.m; path = ../../src/nsmenu.m; sourceTree = "<group>"; };
100 090AF68100C61DCD7F000001 /* nsselect.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsselect.m; path = ../../src/nsselect.m; sourceTree = "<group>"; };
101 090AF68300C61DCD7F000001 /* nsterm.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsterm.m; path = ../../src/nsterm.m; sourceTree = "<group>"; };
102 3C15C02F0902D89500A8542F /* termhooks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termhooks.h; path = ../../src/termhooks.h; sourceTree = "<group>"; };
103 3C15C0300902D89500A8542F /* termchar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termchar.h; path = ../../src/termchar.h; sourceTree = "<group>"; };
104 3C15C0330902D89500A8542F /* syswait.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syswait.h; path = ../../src/syswait.h; sourceTree = "<group>"; };
105 3C15C0340902D89500A8542F /* systty.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systty.h; path = ../../src/systty.h; sourceTree = "<group>"; };
106 3C15C0350902D89500A8542F /* systime.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systime.h; path = ../../src/systime.h; sourceTree = "<group>"; };
107 3C15C0360902D89500A8542F /* syssignal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syssignal.h; path = ../../src/syssignal.h; sourceTree = "<group>"; };
108 3C15C0370902D89500A8542F /* sysselect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sysselect.h; path = ../../src/sysselect.h; sourceTree = "<group>"; };
109 3C15C0390902D89500A8542F /* syntax.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syntax.h; path = ../../src/syntax.h; sourceTree = "<group>"; };
110 3C15C0410902D89500A8542F /* region-cache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "region-cache.h"; path = "../../src/region-cache.h"; sourceTree = "<group>"; };
111 3C15C0430902D89500A8542F /* regex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = regex.h; path = ../../src/regex.h; sourceTree = "<group>"; };
112 3C15C0460902D89500A8542F /* puresize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = puresize.h; path = ../../src/puresize.h; sourceTree = "<group>"; };
113 3C15C0470902D89500A8542F /* process.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = process.h; path = ../../src/process.h; sourceTree = "<group>"; };
114 3C15C04C0902D89500A8542F /* point.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = point.h; path = ../../src/point.h; sourceTree = "<group>"; };
115 3C15C04F0902D89500A8542F /* nsgui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsgui.h; path = ../../src/nsgui.h; sourceTree = "<group>"; };
116 3C15C0500902D89500A8542F /* ndir.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ndir.h; path = ../../src/ndir.h; sourceTree = "<group>"; };
117 3C15C0550902D89500A8542F /* mem-limits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "mem-limits.h"; path = "../../src/mem-limits.h"; sourceTree = "<group>"; };
118 3C15C0560902D89500A8542F /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../src/md5.h; sourceTree = "<group>"; };
119 3C15C05D0902D89500A8542F /* macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macros.h; path = ../../src/macros.h; sourceTree = "<group>"; };
120 3C15C0660902D89500A8542F /* keymap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keymap.h; path = ../../src/keymap.h; sourceTree = "<group>"; };
121 3C15C0680902D89500A8542F /* keyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keyboard.h; path = ../../src/keyboard.h; sourceTree = "<group>"; };
122 3C15C06B0902D89500A8542F /* intervals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intervals.h; path = ../../src/intervals.h; sourceTree = "<group>"; };
123 3C15C06E0902D89500A8542F /* indent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = indent.h; path = ../../src/indent.h; sourceTree = "<group>"; };
124 3C15C0760902D89500A8542F /* category.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = category.h; path = ../../src/category.h; sourceTree = "<group>"; };
125 3C15C0770902D89500A8542F /* coding.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../src/coding.h; sourceTree = "<group>"; };
126 3C15C0780902D89500A8542F /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = buffer.h; path = ../../src/buffer.h; sourceTree = "<group>"; };
127 3C15C0890902D89500A8542F /* cm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cm.h; path = ../../src/cm.h; sourceTree = "<group>"; };
128 3C15C0950902D89500A8542F /* termopts.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termopts.h; path = ../../src/termopts.h; sourceTree = "<group>"; };
129 3C15C0A00902D89500A8542F /* window.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = window.h; path = ../../src/window.h; sourceTree = "<group>"; };
130 3C15C0B80902D89500A8542F /* getpagesize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = getpagesize.h; path = ../../src/getpagesize.h; sourceTree = "<group>"; };
131 3C15C0BF0902D89500A8542F /* disptab.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = disptab.h; path = ../../src/disptab.h; sourceTree = "<group>"; };
132 3C15C0C20902D89500A8542F /* epaths.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = epaths.h; path = ../../src/epaths.h; sourceTree = "<group>"; };
133 3C15C0C50902D89500A8542F /* ccl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ccl.h; path = ../../src/ccl.h; sourceTree = "<group>"; };
134 3C15C0C70902D89500A8542F /* composite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = composite.h; path = ../../src/composite.h; sourceTree = "<group>"; };
135 3C15C0C80902D89500A8542F /* charset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = charset.h; path = ../../src/charset.h; sourceTree = "<group>"; };
136 3C15C0C90902D89500A8542F /* fontset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fontset.h; path = ../../src/fontset.h; sourceTree = "<group>"; };
137 3C15C0D70902D89500A8542F /* commands.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = commands.h; path = ../../src/commands.h; sourceTree = "<group>"; };
138 3C15C0D90902D89500A8542F /* dispextern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dispextern.h; path = ../../src/dispextern.h; sourceTree = "<group>"; };
139 3C15C0DE0902D89500A8542F /* character.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = character.h; path = ../../src/character.h; sourceTree = "<group>"; };
140 3C15C0E40902D89500A8542F /* frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = frame.h; path = ../../src/frame.h; sourceTree = "<group>"; };
141 3C15C0E60902D89500A8542F /* atimer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atimer.h; path = ../../src/atimer.h; sourceTree = "<group>"; };
142 3C15C0E70902D89500A8542F /* blockinput.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = blockinput.h; path = ../../src/blockinput.h; sourceTree = "<group>"; };
143 3C15C1A70902D97100A8542F /* nsimage.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsimage.m; path = ../../src/nsimage.m; sourceTree = "<group>"; };
144 3C3AF9C90FC10CDF001240E9 /* menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = menu.c; path = ../../src/menu.c; sourceTree = SOURCE_ROOT; };
145 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.dylib; path = /usr/lib/libncurses.dylib; sourceTree = "<absolute>"; };
146 3C4D6D660DE50D2300B20D4E /* font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = font.c; path = ../../src/font.c; sourceTree = SOURCE_ROOT; };
147 3C4D6D670DE50D2300B20D4E /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = font.h; path = ../../src/font.h; sourceTree = SOURCE_ROOT; };
148 3C4D6D690DE50D2300B20D4E /* terminal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = terminal.c; path = ../../src/terminal.c; sourceTree = SOURCE_ROOT; };
149 3C4D6D710DE50D5D00B20D4E /* nsfont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = nsfont.m; path = ../../src/nsfont.m; sourceTree = SOURCE_ROOT; };
150 3C7F3C3A07EB3B05003C8A4D /* nsterm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsterm.h; path = ../../src/nsterm.h; sourceTree = "<group>"; };
151 3CB8E29D0E2CE73A003F3104 /* Emacs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Emacs.icns; path = Emacs.base/Contents/Resources/Emacs.icns; sourceTree = "<group>"; };
152 3CB8E29F0E2CE7F5003F3104 /* Credits.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Credits.html; path = Emacs.base/Contents/Resources/Credits.html; sourceTree = "<group>"; };
153 3CB8E2A60E2CE856003F3104 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; };
154 3CC5434C07E2315800C271A9 /* Emacs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Emacs.app; sourceTree = BUILT_PRODUCTS_DIR; };
155 3CDCED330902E99700B2EF7E /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../../src/config.h; sourceTree = "<group>"; };
156 3CDCED550902EA8100B2EF7E /* term.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = term.c; path = ../../src/term.c; sourceTree = "<group>"; };
157 3CDCED560902EA8100B2EF7E /* sysdep.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sysdep.c; path = ../../src/sysdep.c; sourceTree = "<group>"; };
158 3CDCED570902EA8100B2EF7E /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = ../../src/syntax.c; sourceTree = "<group>"; };
159 3CDCED590902EA8100B2EF7E /* strftime.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = strftime.c; path = ../../src/strftime.c; sourceTree = "<group>"; };
160 3CDCED5A0902EA8100B2EF7E /* sound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sound.c; path = ../../src/sound.c; sourceTree = "<group>"; };
161 3CDCED5C0902EA8100B2EF7E /* search.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = search.c; path = ../../src/search.c; sourceTree = "<group>"; };
162 3CDCED5D0902EA8100B2EF7E /* scroll.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scroll.c; path = ../../src/scroll.c; sourceTree = "<group>"; };
163 3CDCED5E0902EA8100B2EF7E /* region-cache.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "region-cache.c"; path = "../../src/region-cache.c"; sourceTree = "<group>"; };
164 3CDCED5F0902EA8100B2EF7E /* regex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = regex.c; path = ../../src/regex.c; sourceTree = "<group>"; };
165 3CDCED610902EA8100B2EF7E /* process.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = process.c; path = ../../src/process.c; sourceTree = "<group>"; };
166 3CDCED620902EA8100B2EF7E /* print.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = print.c; path = ../../src/print.c; sourceTree = "<group>"; };
167 3CDCED640902EA8100B2EF7E /* pre-crt0.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "pre-crt0.c"; path = "../../src/pre-crt0.c"; sourceTree = "<group>"; };
168 3CDCED670902EA8100B2EF7E /* minibuf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = minibuf.c; path = ../../src/minibuf.c; sourceTree = "<group>"; };
169 3CDCED680902EA8100B2EF7E /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../src/md5.c; sourceTree = "<group>"; };
170 3CDCED690902EA8100B2EF7E /* marker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = marker.c; path = ../../src/marker.c; sourceTree = "<group>"; };
171 3CDCED6D0902EA8100B2EF7E /* macros.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = macros.c; path = ../../src/macros.c; sourceTree = "<group>"; };
172 3CDCED710902EA8100B2EF7E /* lread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lread.c; path = ../../src/lread.c; sourceTree = "<group>"; };
173 3CDCED720902EA8100B2EF7E /* lastfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lastfile.c; path = ../../src/lastfile.c; sourceTree = "<group>"; };
174 3CDCED730902EA8100B2EF7E /* keymap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keymap.c; path = ../../src/keymap.c; sourceTree = "<group>"; };
175 3CDCED740902EA8200B2EF7E /* keyboard.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keyboard.c; path = ../../src/keyboard.c; sourceTree = "<group>"; };
176 3CDCED750902EA8200B2EF7E /* intervals.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = intervals.c; path = ../../src/intervals.c; sourceTree = "<group>"; };
177 3CDCED760902EA8200B2EF7E /* insdel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = insdel.c; path = ../../src/insdel.c; sourceTree = "<group>"; };
178 3CDCED770902EA8200B2EF7E /* indent.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = indent.c; path = ../../src/indent.c; sourceTree = "<group>"; };
179 3CDCED780902EA8200B2EF7E /* image.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../../src/image.c; sourceTree = "<group>"; };
180 3CDCED7A0902EA8200B2EF7E /* cmds.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cmds.c; path = ../../src/cmds.c; sourceTree = "<group>"; };
181 3CDCED7B0902EA8200B2EF7E /* category.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = category.c; path = ../../src/category.c; sourceTree = "<group>"; };
182 3CDCED7C0902EA8200B2EF7E /* coding.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coding.c; path = ../../src/coding.c; sourceTree = "<group>"; };
183 3CDCED830902EA8200B2EF7E /* unexmacosx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = unexmacosx.c; path = ../../src/unexmacosx.c; sourceTree = "<group>"; };
184 3CDCED8B0902EA8200B2EF7E /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = buffer.c; path = ../../src/buffer.c; sourceTree = "<group>"; };
185 3CDCED8C0902EA8200B2EF7E /* character.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = character.c; path = ../../src/character.c; sourceTree = "<group>"; };
186 3CDCED920902EA8200B2EF7E /* undo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = undo.c; path = ../../src/undo.c; sourceTree = "<group>"; };
187 3CDCED940902EA8200B2EF7E /* textprop.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = textprop.c; path = ../../src/textprop.c; sourceTree = "<group>"; };
188 3CDCED950902EA8200B2EF7E /* terminfo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = terminfo.c; path = ../../src/terminfo.c; sourceTree = "<group>"; };
189 3CDCED9C0902EA8200B2EF7E /* xfaces.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xfaces.c; path = ../../src/xfaces.c; sourceTree = "<group>"; };
190 3CDCED9D0902EA8200B2EF7E /* xdisp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xdisp.c; path = ../../src/xdisp.c; sourceTree = "<group>"; };
191 3CDCED9E0902EA8200B2EF7E /* window.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = window.c; path = ../../src/window.c; sourceTree = "<group>"; };
192 3CDCEDB00902EA8200B2EF7E /* doprnt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doprnt.c; path = ../../src/doprnt.c; sourceTree = "<group>"; };
193 3CDCEDB10902EA8200B2EF7E /* doc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doc.c; path = ../../src/doc.c; sourceTree = "<group>"; };
194 3CDCEDB20902EA8200B2EF7E /* dired.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dired.c; path = ../../src/dired.c; sourceTree = "<group>"; };
195 3CDCEDB30902EA8200B2EF7E /* data.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = data.c; path = ../../src/data.c; sourceTree = "<group>"; };
196 3CDCEDB40902EA8200B2EF7E /* callint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callint.c; path = ../../src/callint.c; sourceTree = "<group>"; };
197 3CDCEDB60902EA8200B2EF7E /* ccl.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ccl.c; path = ../../src/ccl.c; sourceTree = "<group>"; };
198 3CDCEDB70902EA8200B2EF7E /* fontset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fontset.c; path = ../../src/fontset.c; sourceTree = "<group>"; };
199 3CDCEDB80902EA8200B2EF7E /* fns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fns.c; path = ../../src/fns.c; sourceTree = "<group>"; };
200 3CDCEDB90902EA8200B2EF7E /* floatfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = floatfns.c; path = ../../src/floatfns.c; sourceTree = "<group>"; };
201 3CDCEDBB0902EA8200B2EF7E /* filemode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filemode.c; path = ../../src/filemode.c; sourceTree = "<group>"; };
202 3CDCEDBC0902EA8200B2EF7E /* filelock.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filelock.c; path = ../../src/filelock.c; sourceTree = "<group>"; };
203 3CDCEDBD0902EA8200B2EF7E /* emacs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = emacs.c; path = ../../src/emacs.c; sourceTree = "<group>"; };
204 3CDCEDBE0902EA8200B2EF7E /* editfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = editfns.c; path = ../../src/editfns.c; sourceTree = "<group>"; };
205 3CDCEDBF0902EA8200B2EF7E /* fileio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fileio.c; path = ../../src/fileio.c; sourceTree = "<group>"; };
206 3CDCEDC00902EA8200B2EF7E /* eval.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = eval.c; path = ../../src/eval.c; sourceTree = "<group>"; };
207 3CDCEDC10902EA8200B2EF7E /* casetab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casetab.c; path = ../../src/casetab.c; sourceTree = "<group>"; };
208 3CDCEDC20902EA8200B2EF7E /* composite.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = composite.c; path = ../../src/composite.c; sourceTree = "<group>"; };
209 3CDCEDC30902EA8200B2EF7E /* dispnew.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dispnew.c; path = ../../src/dispnew.c; sourceTree = "<group>"; };
210 3CDCEDC40902EA8200B2EF7E /* charset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = charset.c; path = ../../src/charset.c; sourceTree = "<group>"; };
211 3CDCEDC50902EA8200B2EF7E /* alloc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = alloc.c; path = ../../src/alloc.c; sourceTree = "<group>"; };
212 3CDCEDC60902EA8200B2EF7E /* bytecode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bytecode.c; path = ../../src/bytecode.c; sourceTree = "<group>"; };
213 3CDCEDC70902EA8200B2EF7E /* callproc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callproc.c; path = ../../src/callproc.c; sourceTree = "<group>"; };
214 3CDCEDC80902EA8200B2EF7E /* cm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cm.c; path = ../../src/cm.c; sourceTree = "<group>"; };
215 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casefiddle.c; path = ../../src/casefiddle.c; sourceTree = "<group>"; };
216 3CDCEDCA0902EA8200B2EF7E /* fringe.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fringe.c; path = ../../src/fringe.c; sourceTree = "<group>"; };
217 3CDCEDCB0902EA8200B2EF7E /* frame.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frame.c; path = ../../src/frame.c; sourceTree = "<group>"; };
218 3CDCEDCC0902EA8200B2EF7E /* chartab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = chartab.c; path = ../../src/chartab.c; sourceTree = "<group>"; };
219 3CDCEDCD0902EA8200B2EF7E /* atimer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = atimer.c; path = ../../src/atimer.c; sourceTree = "<group>"; };
220 3CED87260FBE696B005ACB89 /* lisp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lisp.h; path = ../../src/lisp.h; sourceTree = SOURCE_ROOT; };
221 3CED87280FBE6993005ACB89 /* menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = menu.h; path = ../../src/menu.h; sourceTree = SOURCE_ROOT; };
222 3CED87330FC0F557005ACB89 /* temacs */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = temacs; sourceTree = BUILT_PRODUCTS_DIR; };
223 3CFDFC3A08E79A6800B05918 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
224/* End PBXFileReference section */
225
226/* Begin PBXFrameworksBuildPhase section */
227 3CED87310FC0F557005ACB89 /* Frameworks */ = {
228 isa = PBXFrameworksBuildPhase;
229 buildActionMask = 2147483647;
230 files = (
231 3CED88190FC0F5B3005ACB89 /* AppKit.framework in Frameworks */,
232 3C3AF9D50FC10D85001240E9 /* libncurses.dylib in Frameworks */,
233 );
234 runOnlyForDeploymentPostprocessing = 0;
235 };
236/* End PBXFrameworksBuildPhase section */
237
238/* Begin PBXGroup section */
239 19C28FACFE9D520D11CA2CBB /* Products */ = {
240 isa = PBXGroup;
241 children = (
242 3CC5434C07E2315800C271A9 /* Emacs.app */,
243 3CED87330FC0F557005ACB89 /* temacs */,
244 );
245 name = Products;
246 sourceTree = "<group>";
247 };
248 289FC26B00C69A287F000001 /* NeXTstep */ = {
249 isa = PBXGroup;
250 children = (
251 3C4D6D710DE50D5D00B20D4E /* nsfont.m */,
252 3C15C1A70902D97100A8542F /* nsimage.m */,
253 3C15C04F0902D89500A8542F /* nsgui.h */,
254 3C7F3C3A07EB3B05003C8A4D /* nsterm.h */,
255 090AF67E00C61DCD7F000001 /* nsfns.m */,
256 090AF68000C61DCD7F000001 /* nsmenu.m */,
257 090AF68100C61DCD7F000001 /* nsselect.m */,
258 090AF68300C61DCD7F000001 /* nsterm.m */,
259 );
260 name = NeXTstep;
261 sourceTree = "<group>";
262 };
263 29B97314FDCFA39411CA2CEA /* Emacs */ = {
264 isa = PBXGroup;
265 children = (
266 289FC26B00C69A287F000001 /* NeXTstep */,
267 3C15C23E0902E6B000A8542F /* emacs-hdr */,
268 3CDCED4D0902EA6800B2EF7E /* emacs-src */,
269 29B97317FDCFA39411CA2CEA /* Resources */,
270 29B97323FDCFA39411CA2CEA /* Frameworks */,
271 19C28FACFE9D520D11CA2CBB /* Products */,
272 );
273 name = Emacs;
274 sourceTree = "<group>";
275 };
276 29B97317FDCFA39411CA2CEA /* Resources */ = {
277 isa = PBXGroup;
278 children = (
279 3CB8E2A40E2CE856003F3104 /* English.lproj */,
280 3CB8E29F0E2CE7F5003F3104 /* Credits.html */,
281 739637F200C4DF3C7F000001 /* Images */,
282 );
283 name = Resources;
284 sourceTree = "<group>";
285 };
286 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
287 isa = PBXGroup;
288 children = (
289 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */,
290 3CFDFC3A08E79A6800B05918 /* AppKit.framework */,
291 );
292 name = Frameworks;
293 sourceTree = "<group>";
294 };
295 3C15C23E0902E6B000A8542F /* emacs-hdr */ = {
296 isa = PBXGroup;
297 children = (
298 3CED87280FBE6993005ACB89 /* menu.h */,
299 3CED87260FBE696B005ACB89 /* lisp.h */,
300 3C4D6D670DE50D2300B20D4E /* font.h */,
301 3C15C0E60902D89500A8542F /* atimer.h */,
302 3C15C0E70902D89500A8542F /* blockinput.h */,
303 3C15C0780902D89500A8542F /* buffer.h */,
304 3C15C0760902D89500A8542F /* category.h */,
305 3C15C0C50902D89500A8542F /* ccl.h */,
306 3C15C0DE0902D89500A8542F /* character.h */,
307 3C15C0C80902D89500A8542F /* charset.h */,
308 3C15C0890902D89500A8542F /* cm.h */,
309 3CDCED330902E99700B2EF7E /* config.h */,
310 3C15C0770902D89500A8542F /* coding.h */,
311 3C15C0D70902D89500A8542F /* commands.h */,
312 3C15C0C70902D89500A8542F /* composite.h */,
313 3C15C0D90902D89500A8542F /* dispextern.h */,
314 3C15C0BF0902D89500A8542F /* disptab.h */,
315 3C15C0C20902D89500A8542F /* epaths.h */,
316 3C15C0C90902D89500A8542F /* fontset.h */,
317 3C15C0E40902D89500A8542F /* frame.h */,
318 3C15C0B80902D89500A8542F /* getpagesize.h */,
319 3C15C06E0902D89500A8542F /* indent.h */,
320 3C15C06B0902D89500A8542F /* intervals.h */,
321 3C15C0660902D89500A8542F /* keymap.h */,
322 3C15C0680902D89500A8542F /* keyboard.h */,
323 3C15C05D0902D89500A8542F /* macros.h */,
324 3C15C0560902D89500A8542F /* md5.h */,
325 3C15C0550902D89500A8542F /* mem-limits.h */,
326 3C15C0500902D89500A8542F /* ndir.h */,
327 3C15C04C0902D89500A8542F /* point.h */,
328 3C15C0470902D89500A8542F /* process.h */,
329 3C15C0460902D89500A8542F /* puresize.h */,
330 3C15C0430902D89500A8542F /* regex.h */,
331 3C15C0410902D89500A8542F /* region-cache.h */,
332 3C15C0390902D89500A8542F /* syntax.h */,
333 3C15C0370902D89500A8542F /* sysselect.h */,
334 3C15C0330902D89500A8542F /* syswait.h */,
335 3C15C0360902D89500A8542F /* syssignal.h */,
336 3C15C0350902D89500A8542F /* systime.h */,
337 3C15C0340902D89500A8542F /* systty.h */,
338 3C15C0300902D89500A8542F /* termchar.h */,
339 3C15C02F0902D89500A8542F /* termhooks.h */,
340 3C15C0950902D89500A8542F /* termopts.h */,
341 3C15C0A00902D89500A8542F /* window.h */,
342 );
343 name = "emacs-hdr";
344 sourceTree = "<group>";
345 };
346 3CB8E2A40E2CE856003F3104 /* English.lproj */ = {
347 isa = PBXGroup;
348 children = (
349 3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */,
350 );
351 name = English.lproj;
352 path = Emacs.base/Contents/Resources/English.lproj;
353 sourceTree = "<group>";
354 };
355 3CDCED4D0902EA6800B2EF7E /* emacs-src */ = {
356 isa = PBXGroup;
357 children = (
358 3C3AF9C90FC10CDF001240E9 /* menu.c */,
359 3C4D6D660DE50D2300B20D4E /* font.c */,
360 3C4D6D690DE50D2300B20D4E /* terminal.c */,
361 3CDCED550902EA8100B2EF7E /* term.c */,
362 3CDCED560902EA8100B2EF7E /* sysdep.c */,
363 3CDCED570902EA8100B2EF7E /* syntax.c */,
364 3CDCED590902EA8100B2EF7E /* strftime.c */,
365 3CDCED5A0902EA8100B2EF7E /* sound.c */,
366 3CDCED5C0902EA8100B2EF7E /* search.c */,
367 3CDCED5D0902EA8100B2EF7E /* scroll.c */,
368 3CDCED5E0902EA8100B2EF7E /* region-cache.c */,
369 3CDCED5F0902EA8100B2EF7E /* regex.c */,
370 3CDCED610902EA8100B2EF7E /* process.c */,
371 3CDCED620902EA8100B2EF7E /* print.c */,
372 3CDCED640902EA8100B2EF7E /* pre-crt0.c */,
373 3CDCED670902EA8100B2EF7E /* minibuf.c */,
374 3CDCED680902EA8100B2EF7E /* md5.c */,
375 3CDCED690902EA8100B2EF7E /* marker.c */,
376 3CDCED6D0902EA8100B2EF7E /* macros.c */,
377 3CDCED710902EA8100B2EF7E /* lread.c */,
378 3CDCED720902EA8100B2EF7E /* lastfile.c */,
379 3CDCED730902EA8100B2EF7E /* keymap.c */,
380 3CDCED740902EA8200B2EF7E /* keyboard.c */,
381 3CDCED750902EA8200B2EF7E /* intervals.c */,
382 3CDCED760902EA8200B2EF7E /* insdel.c */,
383 3CDCED770902EA8200B2EF7E /* indent.c */,
384 3CDCED780902EA8200B2EF7E /* image.c */,
385 3CDCED7A0902EA8200B2EF7E /* cmds.c */,
386 3CDCED7B0902EA8200B2EF7E /* category.c */,
387 3CDCED7C0902EA8200B2EF7E /* coding.c */,
388 3CDCED830902EA8200B2EF7E /* unexmacosx.c */,
389 3CDCED8B0902EA8200B2EF7E /* buffer.c */,
390 3CDCED8C0902EA8200B2EF7E /* character.c */,
391 3CDCED920902EA8200B2EF7E /* undo.c */,
392 3CDCED940902EA8200B2EF7E /* textprop.c */,
393 3CDCED950902EA8200B2EF7E /* terminfo.c */,
394 3CDCED9C0902EA8200B2EF7E /* xfaces.c */,
395 3CDCED9D0902EA8200B2EF7E /* xdisp.c */,
396 3CDCED9E0902EA8200B2EF7E /* window.c */,
397 3CDCEDB00902EA8200B2EF7E /* doprnt.c */,
398 3CDCEDB10902EA8200B2EF7E /* doc.c */,
399 3CDCEDB20902EA8200B2EF7E /* dired.c */,
400 3CDCEDB30902EA8200B2EF7E /* data.c */,
401 3CDCEDB40902EA8200B2EF7E /* callint.c */,
402 3CDCEDB60902EA8200B2EF7E /* ccl.c */,
403 3CDCEDB70902EA8200B2EF7E /* fontset.c */,
404 3CDCEDB80902EA8200B2EF7E /* fns.c */,
405 3CDCEDB90902EA8200B2EF7E /* floatfns.c */,
406 3CDCEDBB0902EA8200B2EF7E /* filemode.c */,
407 3CDCEDBC0902EA8200B2EF7E /* filelock.c */,
408 3CDCEDBD0902EA8200B2EF7E /* emacs.c */,
409 3CDCEDBE0902EA8200B2EF7E /* editfns.c */,
410 3CDCEDBF0902EA8200B2EF7E /* fileio.c */,
411 3CDCEDC00902EA8200B2EF7E /* eval.c */,
412 3CDCEDC10902EA8200B2EF7E /* casetab.c */,
413 3CDCEDC20902EA8200B2EF7E /* composite.c */,
414 3CDCEDC30902EA8200B2EF7E /* dispnew.c */,
415 3CDCEDC40902EA8200B2EF7E /* charset.c */,
416 3CDCEDC50902EA8200B2EF7E /* alloc.c */,
417 3CDCEDC60902EA8200B2EF7E /* bytecode.c */,
418 3CDCEDC70902EA8200B2EF7E /* callproc.c */,
419 3CDCEDC80902EA8200B2EF7E /* cm.c */,
420 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */,
421 3CDCEDCA0902EA8200B2EF7E /* fringe.c */,
422 3CDCEDCB0902EA8200B2EF7E /* frame.c */,
423 3CDCEDCC0902EA8200B2EF7E /* chartab.c */,
424 3CDCEDCD0902EA8200B2EF7E /* atimer.c */,
425 );
426 name = "emacs-src";
427 sourceTree = "<group>";
428 };
429 739637F200C4DF3C7F000001 /* Images */ = {
430 isa = PBXGroup;
431 children = (
432 3CB8E29D0E2CE73A003F3104 /* Emacs.icns */,
433 );
434 name = Images;
435 sourceTree = "<group>";
436 };
437/* End PBXGroup section */
438
439/* Begin PBXNativeTarget section */
440 3CC542FE07E2315800C271A9 /* Emacs */ = {
441 isa = PBXNativeTarget;
442 buildConfigurationList = 3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */;
443 buildPhases = (
444 3CED88240FC0FE7C005ACB89 /* ShellScript */,
445 3CED883D0FC0FF6E005ACB89 /* ShellScript */,
446 );
447 buildRules = (
448 );
449 dependencies = (
450 3CED88230FC0FE5C005ACB89 /* PBXTargetDependency */,
451 );
452 name = Emacs;
453 productInstallPath = "$(HOME)/Applications";
454 productName = Emacs;
455 productReference = 3CC5434C07E2315800C271A9 /* Emacs.app */;
456 productType = "com.apple.product-type.application";
457 };
458 3CED87320FC0F557005ACB89 /* temacs */ = {
459 isa = PBXNativeTarget;
460 buildConfigurationList = 3CED87350FC0F576005ACB89 /* Build configuration list for PBXNativeTarget "temacs" */;
461 buildPhases = (
462 3CED87300FC0F557005ACB89 /* Sources */,
463 3CED87310FC0F557005ACB89 /* Frameworks */,
464 3CED88460FC100EC005ACB89 /* ShellScript */,
465 );
466 buildRules = (
467 );
468 dependencies = (
469 );
470 name = temacs;
471 productName = "emacs-bin";
472 productReference = 3CED87330FC0F557005ACB89 /* temacs */;
473 productType = "com.apple.product-type.tool";
474 };
475/* End PBXNativeTarget section */
476
477/* Begin PBXProject section */
478 29B97313FDCFA39411CA2CEA /* Project object */ = {
479 isa = PBXProject;
480 buildConfigurationList = 3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */;
481 hasScannedForEncodings = 1;
482 mainGroup = 29B97314FDCFA39411CA2CEA /* Emacs */;
483 projectDirPath = "";
484 projectRoot = ../..;
485 targets = (
486 3CC542FE07E2315800C271A9 /* Emacs */,
487 3CED87320FC0F557005ACB89 /* temacs */,
488 );
489 };
490/* End PBXProject section */
491
492/* Begin PBXShellScriptBuildPhase section */
493 3CED88240FC0FE7C005ACB89 /* ShellScript */ = {
494 isa = PBXShellScriptBuildPhase;
495 buildActionMask = 2147483647;
496 files = (
497 );
498 inputPaths = (
499 );
500 outputPaths = (
501 );
502 runOnlyForDeploymentPostprocessing = 0;
503 shellPath = /bin/sh;
504 shellScript = "# This script sets up the Emacs.app bundle by copying from Cocoa/Emacs.base,\n# and copying the binary emacs. It runs the ns-app target in src/Makefile.\n# This depends on emacs target, so temacs resulting from previous step is\n# dumped into emacs.\n\ncd ../../src\n\nmake ns-app\n";
505 };
506 3CED883D0FC0FF6E005ACB89 /* ShellScript */ = {
507 isa = PBXShellScriptBuildPhase;
508 buildActionMask = 12;
509 files = (
510 );
511 inputPaths = (
512 );
513 outputPaths = (
514 );
515 runOnlyForDeploymentPostprocessing = 0;
516 shellPath = /bin/sh;
517 shellScript = "# This script copies the lisp and other files into the bundle\n# (if self-contained configuration was selected at configure time),\n# or the install location (otherwise).\n\n# Xcode was supposed to make this check based on input/output files,\n# but it didn't work for some reason, so run every time and do it ourselves.\nif [ -x ../Emacs.app/Contents/Resources/lisp ]; then\n\texit\nfi\n\ncd ../..\nmake install\nln -sf $BUILD_ROOT/../../Emacs.app $BUILT_PRODUCTS_DIR/Emacs.app\n";
518 };
519 3CED88460FC100EC005ACB89 /* ShellScript */ = {
520 isa = PBXShellScriptBuildPhase;
521 buildActionMask = 2147483647;
522 files = (
523 );
524 inputPaths = (
525 "$(BUILT_PRODUCTS_DIR)/temacs",
526 );
527 outputPaths = (
528 ../../src/temacs,
529 );
530 runOnlyForDeploymentPostprocessing = 0;
531 shellPath = /bin/sh;
532 shellScript = "# Move the build results to emacs src dir so scripts in Emacs target invoking\n# make operations can use them.\n# *.o files included because make-docfile uses object files for some reason\n\ncp -f ${OBJECT_FILE_DIR_normal}/${NATIVE_ARCH_ACTUAL}/*.o ../../src\ncp -f ${BUILT_PRODUCTS_DIR}/temacs ../../src";
533 };
534/* End PBXShellScriptBuildPhase section */
535
536/* Begin PBXSourcesBuildPhase section */
537 3CED87300FC0F557005ACB89 /* Sources */ = {
538 isa = PBXSourcesBuildPhase;
539 buildActionMask = 2147483647;
540 files = (
541 3CED876D0FC0F581005ACB89 /* pre-crt0.c in Sources */,
542 3CED87390FC0F581005ACB89 /* alloc.c in Sources */,
543 3CED873A0FC0F581005ACB89 /* atimer.c in Sources */,
544 3CED873B0FC0F581005ACB89 /* buffer.c in Sources */,
545 3CED873C0FC0F581005ACB89 /* bytecode.c in Sources */,
546 3CED873D0FC0F581005ACB89 /* callint.c in Sources */,
547 3CED873E0FC0F581005ACB89 /* callproc.c in Sources */,
548 3CED873F0FC0F581005ACB89 /* casefiddle.c in Sources */,
549 3CED87400FC0F581005ACB89 /* casetab.c in Sources */,
550 3CED87410FC0F581005ACB89 /* category.c in Sources */,
551 3CED87420FC0F581005ACB89 /* ccl.c in Sources */,
552 3CED87430FC0F581005ACB89 /* character.c in Sources */,
553 3CED87440FC0F581005ACB89 /* charset.c in Sources */,
554 3CED87450FC0F581005ACB89 /* chartab.c in Sources */,
555 3CED87460FC0F581005ACB89 /* cm.c in Sources */,
556 3CED87470FC0F581005ACB89 /* cmds.c in Sources */,
557 3CED87480FC0F581005ACB89 /* coding.c in Sources */,
558 3CED87490FC0F581005ACB89 /* composite.c in Sources */,
559 3CED874A0FC0F581005ACB89 /* data.c in Sources */,
560 3CED874B0FC0F581005ACB89 /* dired.c in Sources */,
561 3CED874C0FC0F581005ACB89 /* dispnew.c in Sources */,
562 3CED874D0FC0F581005ACB89 /* doc.c in Sources */,
563 3CED874E0FC0F581005ACB89 /* doprnt.c in Sources */,
564 3CED874F0FC0F581005ACB89 /* editfns.c in Sources */,
565 3CED87500FC0F581005ACB89 /* emacs.c in Sources */,
566 3CED87510FC0F581005ACB89 /* eval.c in Sources */,
567 3CED87520FC0F581005ACB89 /* fileio.c in Sources */,
568 3CED87530FC0F581005ACB89 /* filelock.c in Sources */,
569 3CED87540FC0F581005ACB89 /* filemode.c in Sources */,
570 3CED87550FC0F581005ACB89 /* floatfns.c in Sources */,
571 3CED87560FC0F581005ACB89 /* fns.c in Sources */,
572 3CED87570FC0F581005ACB89 /* font.c in Sources */,
573 3CED87580FC0F581005ACB89 /* fontset.c in Sources */,
574 3CED87590FC0F581005ACB89 /* frame.c in Sources */,
575 3CED875A0FC0F581005ACB89 /* fringe.c in Sources */,
576 3CED875B0FC0F581005ACB89 /* image.c in Sources */,
577 3CED875C0FC0F581005ACB89 /* indent.c in Sources */,
578 3CED875D0FC0F581005ACB89 /* insdel.c in Sources */,
579 3CED875E0FC0F581005ACB89 /* intervals.c in Sources */,
580 3CED875F0FC0F581005ACB89 /* keyboard.c in Sources */,
581 3CED87600FC0F581005ACB89 /* keymap.c in Sources */,
582 3CED87620FC0F581005ACB89 /* lread.c in Sources */,
583 3CED87630FC0F581005ACB89 /* macros.c in Sources */,
584 3CED87640FC0F581005ACB89 /* marker.c in Sources */,
585 3CED87650FC0F581005ACB89 /* md5.c in Sources */,
586 3C3AF9CA0FC10CDF001240E9 /* menu.c in Sources */,
587 3CED87660FC0F581005ACB89 /* minibuf.c in Sources */,
588 3CED87670FC0F581005ACB89 /* nsfns.m in Sources */,
589 3CED87680FC0F581005ACB89 /* nsfont.m in Sources */,
590 3CED87690FC0F581005ACB89 /* nsimage.m in Sources */,
591 3CED876A0FC0F581005ACB89 /* nsmenu.m in Sources */,
592 3CED876B0FC0F581005ACB89 /* nsselect.m in Sources */,
593 3CED876C0FC0F581005ACB89 /* nsterm.m in Sources */,
594 3CED876E0FC0F581005ACB89 /* print.c in Sources */,
595 3CED876F0FC0F581005ACB89 /* process.c in Sources */,
596 3CED87700FC0F581005ACB89 /* regex.c in Sources */,
597 3CED87710FC0F581005ACB89 /* region-cache.c in Sources */,
598 3CED87720FC0F581005ACB89 /* scroll.c in Sources */,
599 3CED87730FC0F581005ACB89 /* search.c in Sources */,
600 3CED87740FC0F581005ACB89 /* sound.c in Sources */,
601 3CED87750FC0F581005ACB89 /* strftime.c in Sources */,
602 3CED87760FC0F581005ACB89 /* syntax.c in Sources */,
603 3CED87770FC0F581005ACB89 /* sysdep.c in Sources */,
604 3CED87780FC0F581005ACB89 /* term.c in Sources */,
605 3CED877A0FC0F581005ACB89 /* terminal.c in Sources */,
606 3CED877B0FC0F581005ACB89 /* terminfo.c in Sources */,
607 3CED877C0FC0F581005ACB89 /* textprop.c in Sources */,
608 3CED877E0FC0F581005ACB89 /* undo.c in Sources */,
609 3CED877F0FC0F581005ACB89 /* unexmacosx.c in Sources */,
610 3CED87800FC0F581005ACB89 /* window.c in Sources */,
611 3CED87810FC0F581005ACB89 /* xdisp.c in Sources */,
612 3CED87820FC0F581005ACB89 /* xfaces.c in Sources */,
613 3CED87610FC0F581005ACB89 /* lastfile.c in Sources */,
614 );
615 runOnlyForDeploymentPostprocessing = 0;
616 };
617/* End PBXSourcesBuildPhase section */
618
619/* Begin PBXTargetDependency section */
620 3CED88230FC0FE5C005ACB89 /* PBXTargetDependency */ = {
621 isa = PBXTargetDependency;
622 target = 3CED87320FC0F557005ACB89 /* temacs */;
623 targetProxy = 3CED88220FC0FE5C005ACB89 /* PBXContainerItemProxy */;
624 };
625/* End PBXTargetDependency section */
626
627/* Begin PBXVariantGroup section */
628 3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */ = {
629 isa = PBXVariantGroup;
630 children = (
631 3CB8E2A60E2CE856003F3104 /* English */,
632 );
633 name = InfoPlist.strings;
634 sourceTree = "<group>";
635 };
636/* End PBXVariantGroup section */
637
638/* Begin XCBuildConfiguration section */
639 3CA115980C825A540007AFC2 /* Development */ = {
640 isa = XCBuildConfiguration;
641 buildSettings = {
642 PRODUCT_NAME = Emacs;
643 WRAPPER_EXTENSION = app;
644 };
645 name = Development;
646 };
647 3CA115990C825A540007AFC2 /* Deployment */ = {
648 isa = XCBuildConfiguration;
649 buildSettings = {
650 PRODUCT_NAME = Emacs;
651 WRAPPER_EXTENSION = app;
652 };
653 name = Deployment;
654 };
655 3CA1159A0C825A540007AFC2 /* Default */ = {
656 isa = XCBuildConfiguration;
657 buildSettings = {
658 PRODUCT_NAME = Emacs;
659 WRAPPER_EXTENSION = app;
660 };
661 name = Default;
662 };
663 3CA1159C0C825A540007AFC2 /* Development */ = {
664 isa = XCBuildConfiguration;
665 buildSettings = {
666 MACOSX_DEPLOYMENT_TARGET = "";
667 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
668 };
669 name = Development;
670 };
671 3CA1159D0C825A540007AFC2 /* Deployment */ = {
672 isa = XCBuildConfiguration;
673 buildSettings = {
674 MACOSX_DEPLOYMENT_TARGET = "";
675 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
676 };
677 name = Deployment;
678 };
679 3CA1159E0C825A540007AFC2 /* Default */ = {
680 isa = XCBuildConfiguration;
681 buildSettings = {
682 MACOSX_DEPLOYMENT_TARGET = "";
683 SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
684 };
685 name = Default;
686 };
687 3CED87360FC0F576005ACB89 /* Development */ = {
688 isa = XCBuildConfiguration;
689 buildSettings = {
690 COPY_PHASE_STRIP = NO;
691 GCC_DYNAMIC_NO_PIC = NO;
692 GCC_ENABLE_FIX_AND_CONTINUE = NO;
693 GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
694 GCC_MODEL_TUNING = G5;
695 GCC_OPTIMIZATION_LEVEL = 0;
696 GCC_PREPROCESSOR_DEFINITIONS = (
697 emacs,
698 temacs,
699 HAVE_CONFIG_H,
700 );
701 OTHER_LDFLAGS = (
702 "-Xlinker",
703 "-headerpad",
704 "-Xlinker",
705 6C8,
706 );
707 PREBINDING = NO;
708 PRODUCT_NAME = temacs;
709 WARNING_CFLAGS = "-Wno-pointer-sign";
710 ZERO_LINK = NO;
711 };
712 name = Development;
713 };
714 3CED87370FC0F576005ACB89 /* Deployment */ = {
715 isa = XCBuildConfiguration;
716 buildSettings = {
717 COPY_PHASE_STRIP = YES;
718 GCC_ENABLE_FIX_AND_CONTINUE = NO;
719 GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
720 GCC_MODEL_TUNING = G5;
721 GCC_PREPROCESSOR_DEFINITIONS = (
722 emacs,
723 temacs,
724 HAVE_CONFIG_H,
725 );
726 OTHER_LDFLAGS = (
727 "-Xlinker",
728 "-headerpad",
729 "-Xlinker",
730 6C8,
731 );
732 PREBINDING = NO;
733 PRODUCT_NAME = temacs;
734 WARNING_CFLAGS = "-Wno-pointer-sign";
735 ZERO_LINK = NO;
736 };
737 name = Deployment;
738 };
739 3CED87380FC0F576005ACB89 /* Default */ = {
740 isa = XCBuildConfiguration;
741 buildSettings = {
742 GCC_ENABLE_FIX_AND_CONTINUE = YES;
743 GCC_MODEL_TUNING = G5;
744 GCC_PREPROCESSOR_DEFINITIONS = (
745 emacs,
746 temacs,
747 HAVE_CONFIG_H,
748 );
749 OTHER_LDFLAGS = (
750 "-Xlinker",
751 "-headerpad",
752 "-Xlinker",
753 6C8,
754 );
755 PREBINDING = NO;
756 PRODUCT_NAME = temacs;
757 WARNING_CFLAGS = "-Wno-pointer-sign";
758 ZERO_LINK = YES;
759 };
760 name = Default;
761 };
762/* End XCBuildConfiguration section */
763
764/* Begin XCConfigurationList section */
765 3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */ = {
766 isa = XCConfigurationList;
767 buildConfigurations = (
768 3CA115980C825A540007AFC2 /* Development */,
769 3CA115990C825A540007AFC2 /* Deployment */,
770 3CA1159A0C825A540007AFC2 /* Default */,
771 );
772 defaultConfigurationIsVisible = 0;
773 defaultConfigurationName = Default;
774 };
775 3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */ = {
776 isa = XCConfigurationList;
777 buildConfigurations = (
778 3CA1159C0C825A540007AFC2 /* Development */,
779 3CA1159D0C825A540007AFC2 /* Deployment */,
780 3CA1159E0C825A540007AFC2 /* Default */,
781 );
782 defaultConfigurationIsVisible = 0;
783 defaultConfigurationName = Default;
784 };
785 3CED87350FC0F576005ACB89 /* Build configuration list for PBXNativeTarget "temacs" */ = {
786 isa = XCConfigurationList;
787 buildConfigurations = (
788 3CED87360FC0F576005ACB89 /* Development */,
789 3CED87370FC0F576005ACB89 /* Deployment */,
790 3CED87380FC0F576005ACB89 /* Default */,
791 );
792 defaultConfigurationIsVisible = 0;
793 defaultConfigurationName = Default;
794 };
795/* End XCConfigurationList section */
796 };
797 rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
798}
diff --git a/nextstep/INSTALL b/nextstep/INSTALL
index 5bc59c6c6fa..2a3e1631986 100644
--- a/nextstep/INSTALL
+++ b/nextstep/INSTALL
@@ -30,27 +30,6 @@ Installation
30Move nextstep/Emacs.app to any desired install location. 30Move nextstep/Emacs.app to any desired install location.
31 31
32 32
33Xcode
34-----
35
36On OS X Emacs can be built under Xcode. You need to run "configure"
37as described above first. There are two targets: 'temacs' and 'Emacs.app'.
38
39'temacs' will build the undumped emacs executable, and copy it and the
40*.o files to the src directory. These steps are necessary so the next target
41works.
42
43'Emacs.app' uses "Run Script" build phases to assemble the Emacs.app bundle.
44It uses the 'ns-app' target in src/Makefile together with the 'install' target
45in the top level Makefile.
46
47The source files under the temacs target must list "pre-crt0" first
48and "lastfile" last, so that dumping works.
49
50(Note, under GNUstep, you CAN'T use ProjectCenter, since PC cannot work
51with files outside of its project directory.)
52
53
54Distributions and Universal Binaries 33Distributions and Universal Binaries
55------------------------------------ 34------------------------------------
56 35
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 8c2ca056aa1..fb3a168ebfe 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,8 @@
12011-10-19 Eli Zaretskii <eliz@gnu.org>
2
3 * config.nt (HAVE_TZNAME, HAVE_DECL_TZNAME): Define.
4 (Bug#9794) (Bug#641)
5
12011-09-04 Paul Eggert <eggert@cs.ucla.edu> 62011-09-04 Paul Eggert <eggert@cs.ucla.edu>
2 7
3 * config.nt (HAVE_SNPRINTF): New macro. 8 * config.nt (HAVE_SNPRINTF): New macro.
diff --git a/nt/config.nt b/nt/config.nt
index 923143cf13e..7ab89add0fc 100644
--- a/nt/config.nt
+++ b/nt/config.nt
@@ -187,7 +187,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
187 187
188#undef TM_IN_SYS_TIME 188#undef TM_IN_SYS_TIME
189#undef HAVE_TM_ZONE 189#undef HAVE_TM_ZONE
190#undef HAVE_TZNAME 190
191/* Define to 1 if you don't have `tm_zone' but do have the external array
192 `tzname'. */
193#define HAVE_TZNAME 1
194
195/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
196 */
197#define HAVE_DECL_TZNAME 1
191 198
192#undef const 199#undef const
193 200
diff --git a/src/ChangeLog b/src/ChangeLog
index 7b21a47d59a..34914c96c6c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
12011-10-17 Paul Eggert <eggert@cs.ucla.edu> 12011-10-23 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Fix integer width and related bugs. 3 Fix integer width and related bugs.
4 * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): 4 * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
@@ -789,6 +789,83 @@
789 rather than rolling our own approximation. 789 rather than rolling our own approximation.
790 (SCROLL_BAR_VEC_SIZE): Remove; not used. 790 (SCROLL_BAR_VEC_SIZE): Remove; not used.
791 791
7922011-10-20 Eli Zaretskii <eliz@gnu.org>
793
794 * dispextern.h (struct bidi_it): New member next_en_type.
795
796 * bidi.c (bidi_line_init): Initialize the next_en_type member.
797 (bidi_resolve_explicit_1): When next_en_pos is valid for the
798 current character, check also for next_en_type being WEAK_EN.
799 (bidi_resolve_weak): Don't enter the expensive loop if the current
800 position is before next_en_pos. Record the bidi type of the first
801 non-ET, non-BN character we find, in addition to its position.
802 (bidi_level_of_next_char): Invalidate next_en_type when
803 next_en_pos is over-stepped.
804
8052011-10-20 Paul Eggert <eggert@cs.ucla.edu>
806
807 Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794)
808 * editfns.c: Rewrite current-time-zone so that it invokes
809 the equivalent of (format-time-string "%Z") to get the time zone name.
810 This fixes a bug when the time zone name contains characters that
811 need converting from the system time locale to Emacs internal format.
812 This fixes a shortcoming that I introduced in my 1999-10-19 patch:
813 that patch fixed format-time-string to do the conversion, but
814 I forgot to fix current-time-zone.
815 (format_time_string): New function, containing most of
816 what Fformat_time_string used to contain.
817 (Fformat_time_string): Rewrite in terms of format_time_string.
818 This doesn't change this function's behavior.
819 (current-time-zone): Rewrite to use format_time_string.
820 This fixes the bug reported by Michael Schierl in
821 <http://lists.gnu.org/archive/html/emacs-devel/2007-06/msg00334.html>.
822 Jason Rumney's 2007-06-07 change worked around this bug, but
823 didn't fix it.
824 * systime.h (tzname, timezone): Remove no-longer-used declarations.
825
8262011-10-19 Eli Zaretskii <eliz@gnu.org>
827
828 * xdisp.c (start_display): If the character at POS is displayed
829 via a display vector, reset IT->current.dpvec_index to zero.
830 (try_window_reusing_current_matrix): If a line ends in a display
831 vector or the next line starts in a display vector, continue
832 redrawing the window even though the character position of
833 start_row was reached.
834 (Bug#9771, part 2)
835
8362011-10-18 Chong Yidong <cyd@gnu.org>
837
838 * xdisp.c (get_next_display_element): Handle U+2010 and U+2011
839 with nobreak-char-display too.
840
8412011-10-18 Eli Zaretskii <eliz@gnu.org>
842
843 Fix part 3 of bug#9771.
844 * bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1.
845 (bidi_resolve_neutral): Don't enter the expensive loop looking for
846 non-neutral characters if the current character is a paragraph
847 separator (a.k.a. Newline). This avoids running the same
848 expensive loop twice, once when we consume the preceding newline
849 and the other time when the line actually needs to be displayed.
850 Avoid the loop when we see neutrals on the base embedding level
851 following a character whose directionality is the same as the
852 paragraph's. This avoids running the expensive loop when a line
853 ends in a long sequence of neutrals, like control characters.
854 Add assertion against STRONG_AL type. Slightly rearrange code
855 that determines the type of a neutral given the first non-neutral
856 that follows it.
857 (bidi_level_of_next_char): Set next_en_pos to zero when
858 invalidating its info.
859
8602011-10-17 Eli Zaretskii <eliz@gnu.org>
861
862 * xdisp.c (push_display_prop): Determine whether to record string
863 or buffer position by IT->string, not by IT->method. Allow
864 GET_FROM_DISPLAY_VECTOR as IT->method on entry. (Bug#9771, part 4)
865 (move_it_vertically_backward): Don't look for character position
866 immediately after the newline when in a continuation line.
867 (Bug#9771, part 1)
868
7922011-10-15 Martin Rudalics <rudalics@gmx.at> 8692011-10-15 Martin Rudalics <rudalics@gmx.at>
793 870
794 * window.c (coordinates_in_window): Rewrite and delabelize 871 * window.c (coordinates_in_window): Rewrite and delabelize
diff --git a/src/bidi.c b/src/bidi.c
index c6d7db96576..e8f2df89a9e 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -846,7 +846,10 @@ bidi_line_init (struct bidi_it *bidi_it)
846 bidi_it->level_stack[0].override = NEUTRAL_DIR; /* X1 */ 846 bidi_it->level_stack[0].override = NEUTRAL_DIR; /* X1 */
847 bidi_it->invalid_levels = 0; 847 bidi_it->invalid_levels = 0;
848 bidi_it->invalid_rl_levels = -1; 848 bidi_it->invalid_rl_levels = -1;
849 bidi_it->next_en_pos = -1; 849 /* Setting this to zero will force its recomputation the first time
850 we need it for W5. */
851 bidi_it->next_en_pos = 0;
852 bidi_it->next_en_type = UNKNOWN_BT;
850 bidi_it->next_for_ws.type = UNKNOWN_BT; 853 bidi_it->next_for_ws.type = UNKNOWN_BT;
851 bidi_set_sor_type (bidi_it, 854 bidi_set_sor_type (bidi_it,
852 (bidi_it->paragraph_dir == R2L ? 1 : 0), 855 (bidi_it->paragraph_dir == R2L ? 1 : 0),
@@ -1435,7 +1438,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
1435 } 1438 }
1436 } 1439 }
1437 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */ 1440 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
1438 || bidi_it->next_en_pos > bidi_it->charpos) 1441 || (bidi_it->next_en_pos > bidi_it->charpos
1442 && bidi_it->next_en_type == WEAK_EN))
1439 type = WEAK_EN; 1443 type = WEAK_EN;
1440 break; 1444 break;
1441 case LRE: /* X3 */ 1445 case LRE: /* X3 */
@@ -1471,7 +1475,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
1471 } 1475 }
1472 } 1476 }
1473 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */ 1477 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
1474 || bidi_it->next_en_pos > bidi_it->charpos) 1478 || (bidi_it->next_en_pos > bidi_it->charpos
1479 && bidi_it->next_en_type == WEAK_EN))
1475 type = WEAK_EN; 1480 type = WEAK_EN;
1476 break; 1481 break;
1477 case PDF: /* X7 */ 1482 case PDF: /* X7 */
@@ -1497,7 +1502,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
1497 } 1502 }
1498 } 1503 }
1499 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */ 1504 else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
1500 || bidi_it->next_en_pos > bidi_it->charpos) 1505 || (bidi_it->next_en_pos > bidi_it->charpos
1506 && bidi_it->next_en_type == WEAK_EN))
1501 type = WEAK_EN; 1507 type = WEAK_EN;
1502 break; 1508 break;
1503 default: 1509 default:
@@ -1729,10 +1735,15 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
1729 else if (type == WEAK_ET /* W5: ET with EN before or after it */ 1735 else if (type == WEAK_ET /* W5: ET with EN before or after it */
1730 || type == WEAK_BN) /* W5/Retaining */ 1736 || type == WEAK_BN) /* W5/Retaining */
1731 { 1737 {
1732 if (bidi_it->prev.type_after_w1 == WEAK_EN /* ET/BN w/EN before it */ 1738 if (bidi_it->prev.type_after_w1 == WEAK_EN) /* ET/BN w/EN before it */
1733 || bidi_it->next_en_pos > bidi_it->charpos)
1734 type = WEAK_EN; 1739 type = WEAK_EN;
1735 else /* W5: ET/BN with EN after it. */ 1740 else if (bidi_it->next_en_pos > bidi_it->charpos
1741 && bidi_it->next_en_type != WEAK_BN)
1742 {
1743 if (bidi_it->next_en_type == WEAK_EN) /* ET/BN with EN after it */
1744 type = WEAK_EN;
1745 }
1746 else if (bidi_it->next_en_pos >=0)
1736 { 1747 {
1737 ptrdiff_t en_pos = bidi_it->charpos + bidi_it->nchars; 1748 ptrdiff_t en_pos = bidi_it->charpos + bidi_it->nchars;
1738 const unsigned char *s = (STRINGP (bidi_it->string.lstring) 1749 const unsigned char *s = (STRINGP (bidi_it->string.lstring)
@@ -1761,20 +1772,27 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
1761 en_pos = bidi_it->charpos; 1772 en_pos = bidi_it->charpos;
1762 bidi_copy_it (bidi_it, &saved_it); 1773 bidi_copy_it (bidi_it, &saved_it);
1763 } 1774 }
1775 /* Remember this position, to speed up processing of the
1776 next ETs. */
1777 bidi_it->next_en_pos = en_pos;
1764 if (type_of_next == WEAK_EN) 1778 if (type_of_next == WEAK_EN)
1765 { 1779 {
1766 /* If the last strong character is AL, the EN we've 1780 /* If the last strong character is AL, the EN we've
1767 found will become AN when we get to it (W2). */ 1781 found will become AN when we get to it (W2). */
1768 if (bidi_it->last_strong.type_after_w1 != STRONG_AL) 1782 if (bidi_it->last_strong.type_after_w1 == STRONG_AL)
1769 { 1783 type_of_next = WEAK_AN;
1770 type = WEAK_EN;
1771 /* Remember this EN position, to speed up processing
1772 of the next ETs. */
1773 bidi_it->next_en_pos = en_pos;
1774 }
1775 else if (type == WEAK_BN) 1784 else if (type == WEAK_BN)
1776 type = NEUTRAL_ON; /* W6/Retaining */ 1785 type = NEUTRAL_ON; /* W6/Retaining */
1786 else
1787 type = WEAK_EN;
1777 } 1788 }
1789 else if (type_of_next == NEUTRAL_B)
1790 /* Record the fact that there are no more ENs from
1791 here to the end of paragraph, to avoid entering the
1792 loop above ever again in this paragraph. */
1793 bidi_it->next_en_pos = -1;
1794 /* Record the type of the character where we ended our search. */
1795 bidi_it->next_en_type = type_of_next;
1778 } 1796 }
1779 } 1797 }
1780 } 1798 }
@@ -1843,13 +1861,45 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1843 || type == NEUTRAL_ON)) 1861 || type == NEUTRAL_ON))
1844 abort (); 1862 abort ();
1845 1863
1846 if (bidi_get_category (type) == NEUTRAL 1864 if ((type != NEUTRAL_B /* Don't risk entering the long loop below if
1865 we are already at paragraph end. */
1866 && bidi_get_category (type) == NEUTRAL)
1847 || (type == WEAK_BN && prev_level == current_level)) 1867 || (type == WEAK_BN && prev_level == current_level))
1848 { 1868 {
1849 if (bidi_it->next_for_neutral.type != UNKNOWN_BT) 1869 if (bidi_it->next_for_neutral.type != UNKNOWN_BT)
1850 type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type, 1870 type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
1851 bidi_it->next_for_neutral.type, 1871 bidi_it->next_for_neutral.type,
1852 current_level); 1872 current_level);
1873 /* The next two "else if" clauses are shortcuts for the
1874 important special case when we have a long sequence of
1875 neutral or WEAK_BN characters, such as whitespace or nulls or
1876 other control characters, on the base embedding level of the
1877 paragraph, and that sequence goes all the way to the end of
1878 the paragraph and follows a character whose resolved
1879 directionality is identical to the base embedding level.
1880 (This is what happens in a buffer with plain L2R text that
1881 happens to include long sequences of control characters.) By
1882 virtue of N1, the result of examining this long sequence will
1883 always be either STRONG_L or STRONG_R, depending on the base
1884 embedding level. So we use this fact directly instead of
1885 entering the expensive loop in the "else" clause. */
1886 else if (current_level == 0
1887 && bidi_it->prev_for_neutral.type == STRONG_L
1888 && !bidi_explicit_dir_char (bidi_it->ch))
1889 type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
1890 STRONG_L, current_level);
1891 else if (/* current level is 1 */
1892 current_level == 1
1893 /* base embedding level is also 1 */
1894 && bidi_it->level_stack[0].level == 1
1895 /* previous character is one of those considered R for
1896 the purposes of W5 */
1897 && (bidi_it->prev_for_neutral.type == STRONG_R
1898 || bidi_it->prev_for_neutral.type == WEAK_EN
1899 || bidi_it->prev_for_neutral.type == WEAK_AN)
1900 && !bidi_explicit_dir_char (bidi_it->ch))
1901 type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
1902 STRONG_R, current_level);
1853 else 1903 else
1854 { 1904 {
1855 /* Arrrgh!! The UAX#9 algorithm is too deeply entrenched in 1905 /* Arrrgh!! The UAX#9 algorithm is too deeply entrenched in
@@ -1900,6 +1950,9 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1900 case STRONG_L: 1950 case STRONG_L:
1901 case STRONG_R: 1951 case STRONG_R:
1902 case STRONG_AL: 1952 case STRONG_AL:
1953 /* Actually, STRONG_AL cannot happen here, because
1954 bidi_resolve_weak converts it to STRONG_R, per W3. */
1955 xassert (type != STRONG_AL);
1903 next_type = type; 1956 next_type = type;
1904 break; 1957 break;
1905 case WEAK_EN: 1958 case WEAK_EN:
@@ -1907,7 +1960,6 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1907 /* N1: ``European and Arabic numbers are treated as 1960 /* N1: ``European and Arabic numbers are treated as
1908 though they were R.'' */ 1961 though they were R.'' */
1909 next_type = STRONG_R; 1962 next_type = STRONG_R;
1910 saved_it.next_for_neutral.type = STRONG_R;
1911 break; 1963 break;
1912 case WEAK_BN: 1964 case WEAK_BN:
1913 if (!bidi_explicit_dir_char (bidi_it->ch)) 1965 if (!bidi_explicit_dir_char (bidi_it->ch))
@@ -1920,11 +1972,7 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1920 member. */ 1972 member. */
1921 if (saved_it.type != WEAK_BN 1973 if (saved_it.type != WEAK_BN
1922 || bidi_get_category (bidi_it->prev.type_after_w1) == NEUTRAL) 1974 || bidi_get_category (bidi_it->prev.type_after_w1) == NEUTRAL)
1923 { 1975 next_type = bidi_it->prev_for_neutral.type;
1924 next_type = bidi_it->prev_for_neutral.type;
1925 saved_it.next_for_neutral.type = next_type;
1926 bidi_check_type (next_type);
1927 }
1928 else 1976 else
1929 { 1977 {
1930 /* This is a BN which does not adjoin neutrals. 1978 /* This is a BN which does not adjoin neutrals.
@@ -1938,7 +1986,9 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1938 } 1986 }
1939 type = bidi_resolve_neutral_1 (saved_it.prev_for_neutral.type, 1987 type = bidi_resolve_neutral_1 (saved_it.prev_for_neutral.type,
1940 next_type, current_level); 1988 next_type, current_level);
1989 saved_it.next_for_neutral.type = next_type;
1941 saved_it.type = type; 1990 saved_it.type = type;
1991 bidi_check_type (next_type);
1942 bidi_check_type (type); 1992 bidi_check_type (type);
1943 bidi_copy_it (bidi_it, &saved_it); 1993 bidi_copy_it (bidi_it, &saved_it);
1944 } 1994 }
@@ -2014,7 +2064,10 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
2014 bidi_it->next_for_neutral.type = UNKNOWN_BT; 2064 bidi_it->next_for_neutral.type = UNKNOWN_BT;
2015 if (bidi_it->next_en_pos >= 0 2065 if (bidi_it->next_en_pos >= 0
2016 && bidi_it->charpos >= bidi_it->next_en_pos) 2066 && bidi_it->charpos >= bidi_it->next_en_pos)
2017 bidi_it->next_en_pos = -1; 2067 {
2068 bidi_it->next_en_pos = 0;
2069 bidi_it->next_en_type = UNKNOWN_BT;
2070 }
2018 if (bidi_it->next_for_ws.type != UNKNOWN_BT 2071 if (bidi_it->next_for_ws.type != UNKNOWN_BT
2019 && bidi_it->charpos >= bidi_it->next_for_ws.charpos) 2072 && bidi_it->charpos >= bidi_it->next_for_ws.charpos)
2020 bidi_it->next_for_ws.type = UNKNOWN_BT; 2073 bidi_it->next_for_ws.type = UNKNOWN_BT;
@@ -2140,7 +2193,7 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
2140 } 2193 }
2141 2194
2142 /* Resolve implicit levels, with a twist: PDFs get the embedding 2195 /* Resolve implicit levels, with a twist: PDFs get the embedding
2143 level of the enbedding they terminate. See below for the 2196 level of the embedding they terminate. See below for the
2144 reason. */ 2197 reason. */
2145 if (bidi_it->orig_type == PDF 2198 if (bidi_it->orig_type == PDF
2146 /* Don't do this if this formatting code didn't change the 2199 /* Don't do this if this formatting code didn't change the
diff --git a/src/dispextern.h b/src/dispextern.h
index dfef2884297..5f2c844b58d 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1856,7 +1856,8 @@ struct bidi_it {
1856 struct bidi_saved_info next_for_neutral; /* surrounding characters for... */ 1856 struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
1857 struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */ 1857 struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
1858 struct bidi_saved_info next_for_ws; /* character after sequence of ws */ 1858 struct bidi_saved_info next_for_ws; /* character after sequence of ws */
1859 ptrdiff_t next_en_pos; /* position of next EN char for ET */ 1859 ptrdiff_t next_en_pos; /* pos. of next char for determining ET type */
1860 bidi_type_t next_en_type; /* type of char at next_en_pos */
1860 ptrdiff_t ignore_bn_limit; /* position until which to ignore BNs */ 1861 ptrdiff_t ignore_bn_limit; /* position until which to ignore BNs */
1861 bidi_dir_t sor; /* direction of start-of-run in effect */ 1862 bidi_dir_t sor; /* direction of start-of-run in effect */
1862 int scan_dir; /* direction of text scan, 1: forw, -1: back */ 1863 int scan_dir; /* direction of text scan, 1: forw, -1: back */
diff --git a/src/editfns.c b/src/editfns.c
index b376c3a7c51..16e552afe1d 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -85,6 +85,8 @@ extern Lisp_Object w32_get_internal_run_time (void);
85#endif 85#endif
86 86
87static void time_overflow (void) NO_RETURN; 87static void time_overflow (void) NO_RETURN;
88static Lisp_Object format_time_string (char const *, ptrdiff_t, Lisp_Object,
89 int, time_t *, struct tm **);
88static int tm_diff (struct tm *, struct tm *); 90static int tm_diff (struct tm *, struct tm *);
89static void update_buffer_properties (ptrdiff_t, ptrdiff_t); 91static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
90 92
@@ -1687,32 +1689,40 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z".
1687usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */) 1689usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
1688 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal) 1690 (Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal)
1689{ 1691{
1690 time_t value; 1692 time_t t;
1693 struct tm *tm;
1694
1695 CHECK_STRING (format_string);
1696 format_string = code_convert_string_norecord (format_string,
1697 Vlocale_coding_system, 1);
1698 return format_time_string (SSDATA (format_string), SBYTES (format_string),
1699 timeval, ! NILP (universal), &t, &tm);
1700}
1701
1702static Lisp_Object
1703format_time_string (char const *format, ptrdiff_t formatlen,
1704 Lisp_Object timeval, int ut, time_t *tval, struct tm **tmp)
1705{
1691 ptrdiff_t size; 1706 ptrdiff_t size;
1692 int usec; 1707 int usec;
1693 int ns; 1708 int ns;
1694 struct tm *tm; 1709 struct tm *tm;
1695 int ut = ! NILP (universal);
1696
1697 CHECK_STRING (format_string);
1698 1710
1699 if (! lisp_time_argument (timeval, &value, &usec)) 1711 if (! lisp_time_argument (timeval, tval, &usec))
1700 error ("Invalid time specification"); 1712 error ("Invalid time specification");
1701 ns = usec * 1000; 1713 ns = usec * 1000;
1702 1714
1703 format_string = code_convert_string_norecord (format_string,
1704 Vlocale_coding_system, 1);
1705
1706 /* This is probably enough. */ 1715 /* This is probably enough. */
1707 size = SBYTES (format_string); 1716 size = formatlen;
1708 if (size <= (STRING_BYTES_BOUND - 50) / 6) 1717 if (size <= (STRING_BYTES_BOUND - 50) / 6)
1709 size = size * 6 + 50; 1718 size = size * 6 + 50;
1710 1719
1711 BLOCK_INPUT; 1720 BLOCK_INPUT;
1712 tm = ut ? gmtime (&value) : localtime (&value); 1721 tm = ut ? gmtime (tval) : localtime (tval);
1713 UNBLOCK_INPUT; 1722 UNBLOCK_INPUT;
1714 if (! tm) 1723 if (! tm)
1715 time_overflow (); 1724 time_overflow ();
1725 *tmp = tm;
1716 1726
1717 synchronize_system_time_locale (); 1727 synchronize_system_time_locale ();
1718 1728
@@ -1723,9 +1733,7 @@ usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
1723 1733
1724 buf[0] = '\1'; 1734 buf[0] = '\1';
1725 BLOCK_INPUT; 1735 BLOCK_INPUT;
1726 result = emacs_nmemftime (buf, size, SSDATA (format_string), 1736 result = emacs_nmemftime (buf, size, format, formatlen, tm, ut, ns);
1727 SBYTES (format_string),
1728 tm, ut, ns);
1729 UNBLOCK_INPUT; 1737 UNBLOCK_INPUT;
1730 if ((result > 0 && result < size) || (result == 0 && buf[0] == '\0')) 1738 if ((result > 0 && result < size) || (result == 0 && buf[0] == '\0'))
1731 return code_convert_string_norecord (make_unibyte_string (buf, result), 1739 return code_convert_string_norecord (make_unibyte_string (buf, result),
@@ -1733,9 +1741,7 @@ usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
1733 1741
1734 /* If buffer was too small, make it bigger and try again. */ 1742 /* If buffer was too small, make it bigger and try again. */
1735 BLOCK_INPUT; 1743 BLOCK_INPUT;
1736 result = emacs_nmemftime (NULL, (size_t) -1, 1744 result = emacs_nmemftime (NULL, (size_t) -1, format, formatlen,
1737 SSDATA (format_string),
1738 SBYTES (format_string),
1739 tm, ut, ns); 1745 tm, ut, ns);
1740 UNBLOCK_INPUT; 1746 UNBLOCK_INPUT;
1741 if (STRING_BYTES_BOUND <= result) 1747 if (STRING_BYTES_BOUND <= result)
@@ -1983,51 +1989,34 @@ the data it can't find. */)
1983{ 1989{
1984 time_t value; 1990 time_t value;
1985 struct tm *t; 1991 struct tm *t;
1986 struct tm gmt; 1992 struct tm localtm;
1987 1993 struct tm *localt;
1988 if (!lisp_time_argument (specified_time, &value, NULL)) 1994 Lisp_Object zone_offset, zone_name;
1989 t = NULL; 1995
1990 else 1996 zone_offset = Qnil;
1991 { 1997 zone_name = format_time_string ("%Z", sizeof "%Z" - 1, specified_time,
1992 BLOCK_INPUT; 1998 0, &value, &localt);
1993 t = gmtime (&value); 1999 localtm = *localt;
1994 if (t) 2000 BLOCK_INPUT;
1995 { 2001 t = gmtime (&value);
1996 gmt = *t; 2002 UNBLOCK_INPUT;
1997 t = localtime (&value);
1998 }
1999 UNBLOCK_INPUT;
2000 }
2001 2003
2002 if (t) 2004 if (t)
2003 { 2005 {
2004 int offset = tm_diff (t, &gmt); 2006 int offset = tm_diff (&localtm, t);
2005 char *s = 0; 2007 zone_offset = make_number (offset);
2006 char buf[sizeof "+00" + INT_STRLEN_BOUND (int)]; 2008 if (SCHARS (zone_name) == 0)
2007
2008#ifdef HAVE_TM_ZONE
2009 if (t->tm_zone)
2010 s = (char *)t->tm_zone;
2011#else /* not HAVE_TM_ZONE */
2012#ifdef HAVE_TZNAME
2013 if (t->tm_isdst == 0 || t->tm_isdst == 1)
2014 s = tzname[t->tm_isdst];
2015#endif
2016#endif /* not HAVE_TM_ZONE */
2017
2018 if (!s)
2019 { 2009 {
2020 /* No local time zone name is available; use "+-NNNN" instead. */ 2010 /* No local time zone name is available; use "+-NNNN" instead. */
2021 int m = offset / 60; 2011 int m = offset / 60;
2022 int am = offset < 0 ? - m : m; 2012 int am = offset < 0 ? - m : m;
2013 char buf[sizeof "+00" + INT_STRLEN_BOUND (int)];
2023 sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60); 2014 sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
2024 s = buf; 2015 zone_name = build_string (buf);
2025 } 2016 }
2026
2027 return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
2028 } 2017 }
2029 else 2018
2030 return Fmake_list (make_number (2), Qnil); 2019 return list2 (zone_offset, zone_name);
2031} 2020}
2032 2021
2033/* This holds the value of `environ' produced by the previous 2022/* This holds the value of `environ' produced by the previous
diff --git a/src/systime.h b/src/systime.h
index bed9ed4aa71..b90372dbe20 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -38,17 +38,6 @@ typedef unsigned long Time;
38# endif 38# endif
39#endif 39#endif
40 40
41#ifdef HAVE_TZNAME
42#ifndef tzname /* For SGI. */
43extern char *tzname[]; /* RS6000 and others want it this way. */
44#endif
45#endif
46
47/* SVr4 doesn't actually declare this in its #include files. */
48#ifdef USG5_4
49extern time_t timezone;
50#endif
51
52/* On some configurations (hpux8.0, X11R4), sys/time.h and X11/Xos.h 41/* On some configurations (hpux8.0, X11R4), sys/time.h and X11/Xos.h
53 disagree about the name of the guard symbol. */ 42 disagree about the name of the guard symbol. */
54#ifdef HPUX 43#ifdef HPUX
diff --git a/src/xdisp.c b/src/xdisp.c
index a264da3892a..cb68969ae2d 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -2854,6 +2854,13 @@ start_display (struct it *it, struct window *w, struct text_pos pos)
2854 2854
2855 it->continuation_lines_width += it->current_x; 2855 it->continuation_lines_width += it->current_x;
2856 } 2856 }
2857 /* If the character at POS is displayed via a display
2858 vector, move_it_to above stops at the final glyph of
2859 IT->dpvec. To make the caller redisplay that character
2860 again (a.k.a. start at POS), we need to reset the
2861 dpvec_index to the beginning of IT->dpvec. */
2862 else if (it->current.dpvec_index >= 0)
2863 it->current.dpvec_index = 0;
2857 2864
2858 /* We're starting a new display line, not affected by the 2865 /* We're starting a new display line, not affected by the
2859 height of the continued line, so clear the appropriate 2866 height of the continued line, so clear the appropriate
@@ -6379,8 +6386,8 @@ get_next_display_element (struct it *it)
6379 { 6386 {
6380 Lisp_Object dv; 6387 Lisp_Object dv;
6381 struct charset *unibyte = CHARSET_FROM_ID (charset_unibyte); 6388 struct charset *unibyte = CHARSET_FROM_ID (charset_unibyte);
6382 enum { char_is_other = 0, char_is_nbsp, char_is_soft_hyphen } 6389 int nonascii_space_p = 0;
6383 nbsp_or_shy = char_is_other; 6390 int nonascii_hyphen_p = 0;
6384 int c = it->c; /* This is the character to display. */ 6391 int c = it->c; /* This is the character to display. */
6385 6392
6386 if (! it->multibyte_p && ! ASCII_CHAR_P (c)) 6393 if (! it->multibyte_p && ! ASCII_CHAR_P (c))
@@ -6432,10 +6439,15 @@ get_next_display_element (struct it *it)
6432 goto get_next; 6439 goto get_next;
6433 } 6440 }
6434 6441
6442 /* If `nobreak-char-display' is non-nil, we display
6443 non-ASCII spaces and hyphens specially. */
6435 if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display)) 6444 if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display))
6436 nbsp_or_shy = (c == 0xA0 ? char_is_nbsp 6445 {
6437 : c == 0xAD ? char_is_soft_hyphen 6446 if (c == 0xA0)
6438 : char_is_other); 6447 nonascii_space_p = 1;
6448 else if (c == 0xAD || c == 0x2010 || c == 0x2011)
6449 nonascii_hyphen_p = 1;
6450 }
6439 6451
6440 /* Translate control characters into `\003' or `^C' form. 6452 /* Translate control characters into `\003' or `^C' form.
6441 Control characters coming from a display table entry are 6453 Control characters coming from a display table entry are
@@ -6443,7 +6455,8 @@ get_next_display_element (struct it *it)
6443 the translation. This could easily be changed but I 6455 the translation. This could easily be changed but I
6444 don't believe that it is worth doing. 6456 don't believe that it is worth doing.
6445 6457
6446 NBSP and SOFT-HYPEN are property translated too. 6458 The characters handled by `nobreak-char-display' must be
6459 translated too.
6447 6460
6448 Non-printable characters and raw-byte characters are also 6461 Non-printable characters and raw-byte characters are also
6449 translated to octal form. */ 6462 translated to octal form. */
@@ -6454,14 +6467,15 @@ get_next_display_element (struct it *it)
6454 && it->glyph_row 6467 && it->glyph_row
6455 && (it->glyph_row->mode_line_p || it->avoid_cursor_p)) 6468 && (it->glyph_row->mode_line_p || it->avoid_cursor_p))
6456 || (c != '\n' && c != '\t')) 6469 || (c != '\n' && c != '\t'))
6457 : (nbsp_or_shy 6470 : (nonascii_space_p
6471 || nonascii_hyphen_p
6458 || CHAR_BYTE8_P (c) 6472 || CHAR_BYTE8_P (c)
6459 || ! CHAR_PRINTABLE_P (c)))) 6473 || ! CHAR_PRINTABLE_P (c))))
6460 { 6474 {
6461 /* C is a control character, NBSP, SOFT-HYPEN, raw-byte, 6475 /* C is a control character, non-ASCII space/hyphen,
6462 or a non-printable character which must be displayed 6476 raw-byte, or a non-printable character which must be
6463 either as '\003' or as `^C' where the '\\' and '^' 6477 displayed either as '\003' or as `^C' where the '\\'
6464 can be defined in the display table. Fill 6478 and '^' can be defined in the display table. Fill
6465 IT->ctl_chars with glyphs for what we have to 6479 IT->ctl_chars with glyphs for what we have to
6466 display. Then, set IT->dpvec to these glyphs. */ 6480 display. Then, set IT->dpvec to these glyphs. */
6467 Lisp_Object gc; 6481 Lisp_Object gc;
@@ -6509,17 +6523,14 @@ get_next_display_element (struct it *it)
6509 goto display_control; 6523 goto display_control;
6510 } 6524 }
6511 6525
6512 /* Handle non-break space in the mode where it only gets 6526 /* Handle non-ascii space in the mode where it only gets
6513 highlighting. */ 6527 highlighting. */
6514 6528
6515 if (EQ (Vnobreak_char_display, Qt) 6529 if (nonascii_space_p && EQ (Vnobreak_char_display, Qt))
6516 && nbsp_or_shy == char_is_nbsp)
6517 { 6530 {
6518 /* Merge the no-break-space face into the current face. */ 6531 /* Merge `nobreak-space' into the current face. */
6519 face_id = merge_faces (it->f, Qnobreak_space, 0, 6532 face_id = merge_faces (it->f, Qnobreak_space, 0,
6520 it->face_id); 6533 it->face_id);
6521
6522 c = ' ';
6523 XSETINT (it->ctl_chars[0], ' '); 6534 XSETINT (it->ctl_chars[0], ' ');
6524 ctl_len = 1; 6535 ctl_len = 1;
6525 goto display_control; 6536 goto display_control;
@@ -6558,25 +6569,21 @@ get_next_display_element (struct it *it)
6558 last_escape_glyph_merged_face_id = face_id; 6569 last_escape_glyph_merged_face_id = face_id;
6559 } 6570 }
6560 6571
6561 /* Handle soft hyphens in the mode where they only get 6572 /* Draw non-ASCII hyphen with just highlighting: */
6562 highlighting. */
6563 6573
6564 if (EQ (Vnobreak_char_display, Qt) 6574 if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
6565 && nbsp_or_shy == char_is_soft_hyphen)
6566 { 6575 {
6567 XSETINT (it->ctl_chars[0], '-'); 6576 XSETINT (it->ctl_chars[0], '-');
6568 ctl_len = 1; 6577 ctl_len = 1;
6569 goto display_control; 6578 goto display_control;
6570 } 6579 }
6571 6580
6572 /* Handle non-break space and soft hyphen 6581 /* Draw non-ASCII space/hyphen with escape glyph: */
6573 with the escape glyph. */
6574 6582
6575 if (nbsp_or_shy) 6583 if (nonascii_space_p || nonascii_hyphen_p)
6576 { 6584 {
6577 XSETINT (it->ctl_chars[0], escape_glyph); 6585 XSETINT (it->ctl_chars[0], escape_glyph);
6578 c = (nbsp_or_shy == char_is_nbsp ? ' ' : '-'); 6586 XSETINT (it->ctl_chars[1], nonascii_space_p ? ' ' : '-');
6579 XSETINT (it->ctl_chars[1], c);
6580 ctl_len = 2; 6587 ctl_len = 2;
6581 goto display_control; 6588 goto display_control;
6582 } 6589 }
@@ -8774,7 +8781,10 @@ move_it_vertically_backward (struct it *it, int dy)
8774 reordering. We want to get to the character position 8781 reordering. We want to get to the character position
8775 that is immediately after the newline of the previous 8782 that is immediately after the newline of the previous
8776 line. */ 8783 line. */
8777 if (it->bidi_p && IT_CHARPOS (*it) > BEGV 8784 if (it->bidi_p
8785 && !it->continuation_lines_width
8786 && !STRINGP (it->string)
8787 && IT_CHARPOS (*it) > BEGV
8778 && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n') 8788 && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n')
8779 { 8789 {
8780 ptrdiff_t nl_pos = 8790 ptrdiff_t nl_pos =
@@ -16075,13 +16085,20 @@ try_window_reusing_current_matrix (struct window *w)
16075 16085
16076 start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); 16086 start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix);
16077 } 16087 }
16078 /* If we have reached alignment, 16088 /* If we have reached alignment, we can copy the rest of the
16079 we can copy the rest of the rows. */ 16089 rows. */
16080 if (IT_CHARPOS (it) == CHARPOS (start)) 16090 if (IT_CHARPOS (it) == CHARPOS (start)
16091 /* Don't accept "alignment" inside a display vector,
16092 since start_row could have started in the middle of
16093 that same display vector (thus their character
16094 positions match), and we have no way of telling if
16095 that is the case. */
16096 && it.current.dpvec_index < 0)
16081 break; 16097 break;
16082 16098
16083 if (display_line (&it)) 16099 if (display_line (&it))
16084 last_text_row = it.glyph_row - 1; 16100 last_text_row = it.glyph_row - 1;
16101
16085 } 16102 }
16086 16103
16087 /* A value of current_y < last_visible_y means that we stopped 16104 /* A value of current_y < last_visible_y means that we stopped
@@ -18434,9 +18451,10 @@ static int
18434push_display_prop (struct it *it, Lisp_Object prop) 18451push_display_prop (struct it *it, Lisp_Object prop)
18435{ 18452{
18436 struct text_pos pos = 18453 struct text_pos pos =
18437 (it->method == GET_FROM_STRING) ? it->current.string_pos : it->current.pos; 18454 STRINGP (it->string) ? it->current.string_pos : it->current.pos;
18438 18455
18439 xassert (it->method == GET_FROM_BUFFER 18456 xassert (it->method == GET_FROM_BUFFER
18457 || it->method == GET_FROM_DISPLAY_VECTOR
18440 || it->method == GET_FROM_STRING); 18458 || it->method == GET_FROM_STRING);
18441 18459
18442 /* We need to save the current buffer/string position, so it will be 18460 /* We need to save the current buffer/string position, so it will be
@@ -28004,12 +28022,18 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
28004 Vshow_trailing_whitespace = Qnil; 28022 Vshow_trailing_whitespace = Qnil;
28005 28023
28006 DEFVAR_LISP ("nobreak-char-display", Vnobreak_char_display, 28024 DEFVAR_LISP ("nobreak-char-display", Vnobreak_char_display,
28007 doc: /* *Control highlighting of nobreak space and soft hyphen. 28025 doc: /* Control highlighting of non-ASCII space and hyphen chars.
28008A value of t means highlight the character itself (for nobreak space, 28026If the value is t, Emacs highlights non-ASCII chars which have the
28009use face `nobreak-space'). 28027same appearance as an ASCII space or hyphen, using the `nobreak-space'
28010A value of nil means no highlighting. 28028or `escape-glyph' face respectively.
28011Other values mean display the escape glyph followed by an ordinary 28029
28012space or ordinary hyphen. */); 28030U+00A0 (no-break space), U+00AD (soft hyphen), U+2010 (hyphen), and
28031U+2011 (non-breaking hyphen) are affected.
28032
28033Any other non-nil value means to display these characters as a escape
28034glyph followed by an ordinary space or hyphen.
28035
28036A value of nil means no special handling of these characters. */);
28013 Vnobreak_char_display = Qt; 28037 Vnobreak_char_display = Qt;
28014 28038
28015 DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer, 28039 DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer,
diff --git a/test/ChangeLog b/test/ChangeLog
index ea6d90b534c..396273bab37 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,9 @@
12011-10-20 Glenn Morris <rgm@gnu.org>
2
3 * automated/vc-bzr.el (vc-bzr-test-bug9781): New test.
4
5 * automated/vc-bzr.el: New file.
6
12011-10-15 Glenn Morris <rgm@gnu.org> 72011-10-15 Glenn Morris <rgm@gnu.org>
2 8
3 * automated/f90.el: New file. 9 * automated/f90.el: New file.
diff --git a/test/automated/vc-bzr.el b/test/automated/vc-bzr.el
new file mode 100644
index 00000000000..b2cbda4d669
--- /dev/null
+++ b/test/automated/vc-bzr.el
@@ -0,0 +1,101 @@
1;;; vc-bzr.el --- tests for vc/vc-bzr.el
2
3;; Copyright (C) 2011 Free Software Foundation, Inc.
4
5;; Author: Glenn Morris <rgm@gnu.org>
6
7;; This file is part of GNU Emacs.
8
9;; GNU Emacs is free software: you can redistribute it and/or modify
10;; it under the terms of the GNU General Public License as published by
11;; the Free Software Foundation, either version 3 of the License, or
12;; (at your option) any later version.
13
14;; GNU Emacs is distributed in the hope that it will be useful,
15;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;; GNU General Public License for more details.
18
19;; You should have received a copy of the GNU General Public License
20;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
21
22;;; Commentary:
23
24;;; Code:
25
26(require 'ert)
27(require 'vc-bzr)
28(require 'vc-dir)
29
30;; FIXME it would be better to skip all these tests if there is no
31;; bzr installed. We could just put everything inside an IF
32;; statement, but it would be nice if ERT had a "skipped" facility (?).
33
34(ert-deftest vc-bzr-test-bug9726 ()
35 "Test for http://debbugs.gnu.org/9726 ."
36 :expected-result (if (executable-find vc-bzr-program) :passed :failed)
37 (should (executable-find vc-bzr-program))
38 (let* ((tempdir (make-temp-file "vc-bzr-test" t))
39 (ignored-dir (expand-file-name "ignored-dir" tempdir))
40 (default-directory (file-name-as-directory tempdir)))
41 (unwind-protect
42 (progn
43 (make-directory ignored-dir)
44 (with-temp-buffer
45 (insert (file-name-nondirectory ignored-dir))
46 (write-region nil nil (expand-file-name ".bzrignore" tempdir)
47 nil 'silent))
48 (call-process vc-bzr-program nil nil nil "init")
49 (call-process vc-bzr-program nil nil nil "add")
50 (call-process vc-bzr-program nil nil nil "commit" "-m" "Commit 1")
51 (with-temp-buffer
52 (insert "unregistered file")
53 (write-region nil nil (expand-file-name "testfile2" ignored-dir)
54 nil 'silent))
55 (vc-dir ignored-dir)
56 (while (vc-dir-busy)
57 (sit-for 0.1))
58 ;; FIXME better to explicitly test for error from process sentinel.
59 (with-current-buffer "*vc-dir*"
60 (goto-char (point-min))
61 (should (search-forward "unregistered" nil t))))
62 (delete-directory tempdir t))))
63
64;; Not specific to bzr.
65(ert-deftest vc-bzr-test-bug9781 ()
66 "Test for http://debbugs.gnu.org/9781 ."
67 :expected-result (if (executable-find vc-bzr-program) :passed :failed)
68 (should (executable-find vc-bzr-program))
69 (let* ((tempdir (make-temp-file "vc-bzr-test" t))
70 (subdir (expand-file-name "subdir" tempdir))
71 (file (expand-file-name "file" tempdir))
72 (default-directory (file-name-as-directory tempdir)))
73 (unwind-protect
74 (progn
75 (call-process vc-bzr-program nil nil nil "init")
76 (make-directory subdir)
77 (with-temp-buffer
78 (insert "text")
79 (write-region nil nil file nil 'silent)
80 (write-region nil nil (expand-file-name "subfile" subdir)
81 nil 'silent))
82 (call-process vc-bzr-program nil nil nil "add")
83 (call-process vc-bzr-program nil nil nil "commit" "-m" "Commit 1")
84 (call-process vc-bzr-program nil nil nil "remove" subdir)
85 (with-temp-buffer
86 (insert "different text")
87 (write-region nil nil file nil 'silent))
88 (vc-dir tempdir)
89 (while (vc-dir-busy)
90 (sit-for 0.1))
91 (vc-dir-mark-all-files t)
92 (let ((f (symbol-function 'y-or-n-p)))
93 (unwind-protect
94 (progn
95 (fset 'y-or-n-p (lambda (prompt) t))
96 (vc-next-action nil))
97 (fset 'y-or-n-p f)))
98 (should (get-buffer "*vc-log*")))
99 (delete-directory tempdir t))))
100
101;;; vc-bzr.el ends here