summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 2ca87de957..9b9a7176b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2011-10-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794)
+ * configure.in (AC_STRUCT_TM, AC_STRUCT_TIMEZONE, HAVE_TM_GMTOFF):
+ Remove; no longer needed, now that we defer to strftime for time
+ zone names.
+
+2011-10-18 Jan Djärv <jan.h.d@swipnet.se>
+
+ * configure.in (GLIB_REQUIRED, GTK_REQUIRED): Set to 2.10 (Bug#9786).
+
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * make-dist: Remove Cocoa/Emacs.xcodeproj from distribution.
+
2011-10-13 Glenn Morris <rgm@gnu.org>
* configure.in: Also look for tputs in libcurses. (Bug#9736)
@@ -5,7 +20,7 @@
2011-10-12 Paul Eggert <eggert@cs.ucla.edu>
* configure.in: Remove check for -lintl (Bug#9713).
- The check breaks 'configure' in some CentOS 5.7 x86 configurations.
+ The check could break 'configure' on GNU/Linux with a (broken) libintl.
The check was helpful but not essential in Solaris 2.6 (1997),
and is no longer needed in Solaris 8 (2000). Solaris 2.6 is
obsolete -- Sun dropped support for it in 2006 -- and without
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 26e3de6380..80a66be3fa 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -151,7 +151,7 @@ TUTORIAL.zh
abbrevs.texi
ack.texi
anti.texi
-arevert-xtra.texi
+arevert-xtra.texi cyd
basic.texi cyd
buffers.texi
building.texi
@@ -162,12 +162,12 @@ commands.texi cyd
custom.texi
dired.texi
dired-xtra.texi
-display.texi
+display.texi cyd
emacs.texi
emacs-xtra.texi
emerge-xtra.texi
entering.texi cyd
-files.texi
+files.texi cyd
fixit.texi
fortran-xtra.texi
frames.texi
@@ -175,7 +175,7 @@ glossary.texi
help.texi cyd
indent.texi
killing.texi cyd
-kmacro.texi
+kmacro.texi cyd
macos.texi
maintaining.texi
major.texi
@@ -191,7 +191,7 @@ programs.texi
regs.texi cyd
rmail.texi
screen.texi cyd
-search.texi
+search.texi cyd
sending.texi
text.texi
trouble.texi
diff --git a/admin/notes/changelogs b/admin/notes/changelogs
index 2c3749244f..2e954570ce 100644
--- a/admin/notes/changelogs
+++ b/admin/notes/changelogs
@@ -1,3 +1,7 @@
+If installing changes written by someone else, make the ChangeLog
+entry in their name, not yours.
+
+
http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg00793.html
There is no need to make change log entries for files such as NEWS,
MAINTAINERS, and FOR-RELEASE.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index f4d22f9b27..0ad9990077 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -24,9 +24,8 @@ the file.
2. When installing code written by someone else, the ChangeLog entry
should be in the name of the author of the code, not the person who
-installs it. I think it is helpful to put the author (if not yourself)
-in the commit log as well (you can also use bzr commit's "--author"
-option); and to not install any of your own changes in the same commit.
+installs it. Also use bzr commit's "--author" option.
+Do not install any of your own changes in the same commit.
3. With images, add the legal info to a README file in the directory
containing the image.
diff --git a/autogen/configure b/autogen/configure
index 8f50731f3f..fc906db6fe 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -8803,116 +8803,6 @@ fi
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if test "${ac_cv_struct_tm+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <time.h>
-
-int
-main ()
-{
-struct tm tm;
- int *p = &tm.tm_sec;
- return !p;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_struct_tm=time.h
-else
- ac_cv_struct_tm=sys/time.h
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
-
-$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
-
-fi
-
-ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>
-#include <$ac_cv_struct_tm>
-
-"
-if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_ZONE 1
-_ACEOF
-
-
-fi
-
-if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
-
-$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
-
-else
- ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
-"
-if test "x$ac_cv_have_decl_tzname" = x""yes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TZNAME $ac_have_decl
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
-$as_echo_n "checking for tzname... " >&6; }
-if test "${ac_cv_var_tzname+set}" = set; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <time.h>
-#if !HAVE_DECL_TZNAME
-extern char *tzname[];
-#endif
-
-int
-main ()
-{
-return tzname[0][0];
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_var_tzname=yes
-else
- ac_cv_var_tzname=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
-$as_echo "$ac_cv_var_tzname" >&6; }
- if test $ac_cv_var_tzname = yes; then
-
-$as_echo "#define HAVE_TZNAME 1" >>confdefs.h
-
- fi
-fi
-
-ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
-"
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = x""yes; then :
-
-$as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h
-
-fi
-
ac_fn_c_check_member "$LINENO" "struct ifreq" "ifr_flags" "ac_cv_member_struct_ifreq_ifr_flags" "$ac_includes_default
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
@@ -11140,8 +11030,8 @@ fi
if test "$pkg_check_gtk" != "yes"; then
HAVE_GTK=no
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
- GLIB_REQUIRED=2.6
- GTK_REQUIRED=2.6
+ GLIB_REQUIRED=2.10
+ GTK_REQUIRED=2.10
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
@@ -18884,6 +18774,108 @@ $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
REPLACE_VSNPRINTF=0;
REPLACE_VSPRINTF=0;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test "${ac_cv_struct_tm+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm tm;
+ int *p = &tm.tm_sec;
+ return !p;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_struct_tm=time.h
+else
+ ac_cv_struct_tm=sys/time.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>
+#include <$ac_cv_struct_tm>
+
+"
+if test "x$ac_cv_member_struct_tm_tm_zone" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM_TM_ZONE 1
+_ACEOF
+
+
+fi
+
+if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
+
+$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
+
+else
+ ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
+"
+if test "x$ac_cv_have_decl_tzname" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TZNAME $ac_have_decl
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
+$as_echo_n "checking for tzname... " >&6; }
+if test "${ac_cv_var_tzname+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <time.h>
+#if !HAVE_DECL_TZNAME
+extern char *tzname[];
+#endif
+
+int
+main ()
+{
+return tzname[0][0];
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_var_tzname=yes
+else
+ ac_cv_var_tzname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
+$as_echo "$ac_cv_var_tzname" >&6; }
+ if test $ac_cv_var_tzname = yes; then
+
+$as_echo "#define HAVE_TZNAME 1" >>confdefs.h
+
+ fi
+fi
+
ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include <time.h>
"
diff --git a/configure.in b/configure.in
index 67ab4e22d7..5b32e10853 100644
--- a/configure.in
+++ b/configure.in
@@ -1315,12 +1315,6 @@ AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
AC_CHECK_FUNCS(getifaddrs freeifaddrs)
dnl checks for structure members
-AC_STRUCT_TM
-AC_STRUCT_TIMEZONE
-AC_CHECK_MEMBER(struct tm.tm_gmtoff,
- [AC_DEFINE(HAVE_TM_GMTOFF, 1,
- [Define to 1 if `tm_gmtoff' is member of `struct tm'.])],,
- [#include <time.h>])
AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
struct ifreq.ifr_addr,
@@ -1925,8 +1919,8 @@ fi
if test "$pkg_check_gtk" != "yes"; then
HAVE_GTK=no
if test "${with_gtk}" = "yes" || test "$USE_X_TOOLKIT" = "maybe"; then
- GLIB_REQUIRED=2.6
- GTK_REQUIRED=2.6
+ GLIB_REQUIRED=2.10
+ GTK_REQUIRED=2.10
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
dnl Checks for libraries.
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index a39b703b4d..726f565e83 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,89 @@
+2011-10-23 Chong Yidong <cyd@gnu.org>
+
+ * buffers.texi (Misc Buffer): Don't mention vc-toggle-read-only.
+
+2011-10-22 Chong Yidong <cyd@gnu.org>
+
+ * windows.texi (Displaying Buffers): Fix broken lispref link.
+
+2011-10-22 Chong Yidong <cyd@gnu.org>
+
+ * mini.texi (Minibuffer Exit): Rename from Strict Completion.
+ Move confirm-nonexistent-file-or-buffer discussion here.
+
+ * files.texi (File Names, Visiting): Move detailed discussion of
+ minibuffer confirmation to Minibuffer Exit.
+
+ * buffers.texi (Buffers): Tweak mention of mail buffer name.
+ (Select Buffer): Move confirmation discussion to Minibuffer Exit.
+
+2011-10-21 Chong Yidong <cyd@gnu.org>
+
+ * files.texi (File Names, Visiting, Interlocking): Copyedits.
+ (Backup Copying): backup-by-copying-when-mismatch is now t.
+ (Customize Save): Fix description of require-final-newline.
+ (Reverting): Note that revert-buffer can't be undone. Mention VC.
+ (Auto Save Control): Clarify.
+ (File Archives): Add 7z.
+ (Remote Files): ange-ftp-make-backup-files defaults to nil.
+
+ * arevert-xtra.texi (Autorevert): Copyedits.
+
+2011-10-20 Chong Yidong <cyd@gnu.org>
+
+ * custom.texi (Hooks, Init Examples):
+ * display.texi (Font Lock):
+ * fixit.texi (Spelling):
+ * rmail.texi (Rmail Display): Minor mode function with no arg now
+ enables it.
+
+ * fixit.texi (Spelling): Fix description of inline completion.
+
+2011-10-19 Chong Yidong <cyd@gnu.org>
+
+ * search.texi (Repeat Isearch, Error in Isearch): Add kindex
+ entries.
+ (Isearch Yank): Document isearch-yank-pop.
+ (Isearch Scroll): Refer to C-l instead of unbound `recenter'.
+ (Other Repeating Search): Document Occur Edit mode.
+
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * display.texi (Fringes): Move overflow-newline-into-fringe here,
+ from Line Truncation node.
+ (Standard Faces): Note that only the background of the cursor face
+ has an effect.
+ (Cursor Display): Fix descriptions of cursor face
+ and bar cursor blinking.
+ (Text Display): Document nobreak-char-display more clearly.
+ (Line Truncation): Add xref to Split Window node.
+ (Display Custom): Don't bother documenting baud-rate or
+ no-redraw-on-reenter.
+
+ * search.texi (Slow Isearch): Node removed.
+
+2011-10-18 Glenn Morris <rgm@gnu.org>
+
+ * maintaining.texi (Registering): Remove vc-initial-comment. (Bug#9745)
+
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * display.texi (Faces): Simplify discussion. Move documentation
+ of list-faces-display here, from Standard Faces node. Note
+ special role of `default' background.
+ (Standard Faces): Note special role of `default' background. Note
+ that region face may be taken fom GTK. Add xref to Text Display.
+ (Text Scale): Rename from "Temporary Face Changes". Callers
+ changed. Don't bother documenting variable-pitch-mode.
+ (Font Lock): Copyedits. Remove font-lock-maximum-size.
+ (Useless Whitespace): Simplify description of
+ delete-trailing-whitespace. Note active region case.
+ (Text Display): Fix description of escape-glyph face assignment.
+ Remove unibye mode discussion. Update some parts for Unicode.
+ Move glyphless chars documentation to Lisp manual.
+
+ * frames.texi (Tooltips): Document x-gtk-use-system-tooltips.
+
2011-10-15 Chong Yidong <cyd@stupidchicken.com>
* display.texi (Scrolling): Tweak explanation of scroll direction.
diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi
index 374886cd95..6a24646b5f 100644
--- a/doc/emacs/arevert-xtra.texi
+++ b/doc/emacs/arevert-xtra.texi
@@ -8,11 +8,11 @@
@section Auto Reverting Non-File Buffers
Global Auto Revert Mode normally only reverts file buffers. There are
-two ways to auto-revert certain non-file buffers: enabling Auto Revert
-Mode in those buffers (using @kbd{M-x auto-revert-mode}); and setting
-@code{global-auto-revert-non-file-buffers} non-@code{nil}. The latter
-enables Auto Reverting for all types of buffers for which it is
-implemented (listed in the menu below).
+two ways to auto-revert certain non-file buffers: by enabling Auto
+Revert Mode in those buffers (using @kbd{M-x auto-revert-mode}); and
+by setting @code{global-auto-revert-non-file-buffers} to a
+non-@code{nil} value. The latter enables Auto Reverting for all types
+of buffers for which it is implemented (listed in the menu below).
Like file buffers, non-file buffers should normally not revert while
you are working on them, or while they contain information that might
diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi
index e4e7dadd54..abb6598287 100644
--- a/doc/emacs/basic.texi
+++ b/doc/emacs/basic.texi
@@ -109,7 +109,7 @@ command provides completion (@pxref{Completion}). If you enter a
code-point, it should be a hexadecimal number (which is the convention
for Unicode). The command then inserts the corresponding character
into the buffer. For example, both of the following insert the
-infinity sign (Unicode code-point @code{#x221E}):
+infinity sign (Unicode code-point @code{U+221E}):
@example
@kbd{C-x 8 @key{RET} infinity @key{RET}}
@@ -367,7 +367,7 @@ the preceding newline, joining this line to the previous one.
If, however, the region is active, @kbd{@key{DEL}} instead deletes
the text in the region. @xref{Mark}, for a description of the region.
- On most keyboards, @key{DEL} is labelled @key{Backspace}, but we
+ On most keyboards, @key{DEL} is labeled @key{Backspace}, but we
refer to it as @key{DEL} in this manual. (Do not confuse @key{DEL}
with the @key{Delete} key; we will discuss @key{Delete} momentarily.)
On 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 b82f3fac7d..aed5473ac1 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -7,11 +7,11 @@
@cindex buffers
The text you are editing in Emacs resides in an object called a
-@dfn{buffer}. Each time you visit a file, a buffer is created to hold the
-file's text. Each time you invoke Dired, a buffer is created to hold the
-directory listing. If you send a message with @kbd{C-x m}, a buffer named
-@samp{*mail*} is used to hold the text of the message. When you ask for a
-command's documentation, that appears in a buffer called @samp{*Help*}.
+@dfn{buffer}. Each time you visit a file, a buffer is used to hold
+the file's text. Each time you invoke Dired, a buffer is used to hold
+the directory listing. If you send a message with @kbd{C-x m}, a
+buffer is used to hold the text of the message. When you ask for a
+command's documentation, that appears in a buffer named @samp{*Help*}.
Each buffer has a unique name, which can be of any length. When a
buffer 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
matters in buffer names. Most buffers are made by visiting files, and
their names are derived from the files' names; however, you can also
create an empty buffer with any name you want. A newly started Emacs
-has a buffer named @samp{*scratch*}, which is not associated with any
-file and can be used for evaluating Lisp expressions in Emacs
-(@pxref{Lisp Interaction}).
+has several buffers, including one named @samp{*scratch*}, which can
+be used for evaluating Lisp expressions and is not associated with any
+file (@pxref{Lisp Interaction}).
@cindex selected buffer
@cindex current buffer
- At any time, one and only one buffer is @dfn{current}. This is also
-called the @dfn{selected buffer}. We often say that a command
-operates on ``the buffer''; this really means that the command
-operates on the current buffer (most commands do). When there is only
-one Emacs window, the buffer displayed in that window is current.
-When there are multiple windows present, the buffer displayed in the
-@dfn{selected window} is current. @xref{Windows}.
-
- Each buffer records individually what file it is visiting (if any),
-whether it is modified, and what major mode and minor modes are in
-effect (@pxref{Major Modes}). Any Emacs variable can be made
-@dfn{local to} a particular buffer, meaning its value in that buffer
-can be different from the value in other buffers. @xref{Locals}.
+ At any time, one and only one buffer is @dfn{selected}; we call it
+the @dfn{current buffer}. We sometimes say that a command operates on
+``the buffer''; this really means that it operates on the current
+buffer. When there is only one Emacs window, the buffer displayed in
+that window is current. When there are multiple windows, the buffer
+displayed in the @dfn{selected window} is current. @xref{Windows}.
+
+ Aside from its textual contents, each buffer records several pieces
+of information, such as what file it is visiting (if any), whether it
+is modified, and what major mode and minor modes are in effect
+(@pxref{Modes}). These are stored in @dfn{buffer-local
+variables}---variables that can have a different value in each buffer.
+@xref{Locals}.
@cindex buffer size, maximum
A buffer's size cannot be larger than some maximum, which is defined
-by the largest buffer position representable by the @dfn{Emacs
-integer} data type. This is because Emacs tracks buffer positions
-using that data type. For typical 64-bit machines, the maximum buffer size
-enforced by the data types is @math{2^61 - 2} bytes, or about 2 EiB.
-For typical 32-bit machines, the maximum is @math{2^29 - 2} bytes, or
-about 512 MiB. Buffer sizes are also limited by the size of Emacs's
-virtual memory.
+by the largest buffer position representable by @dfn{Emacs integers}.
+This is because Emacs tracks buffer positions using that data type.
+For typical 64-bit machines, this maximum buffer size is @math{2^61 -
+2} bytes, or about 2 EiB. For typical 32-bit machines, the maximum is
+usually @math{2^29 - 2} bytes, or about 512 MiB. Buffer sizes are
+also limited by the amount of memory present in the system.
@menu
* Select Buffer:: Creating a new buffer or reselecting an old one.
@@ -76,9 +75,9 @@ Similar, but select @var{buffer} in another window
Similar, but select @var{buffer} in a separate frame
(@code{switch-to-buffer-other-frame}).
@item C-x @key{LEFT}
-Select the previous buffer in the list of existing buffers.
+Select the previous buffer in the buffer list (@code{previous-buffer}).
@item C-x @key{RIGHT}
-Select the next buffer in the list of existing buffers.
+Select the next buffer in the buffer list (@code{next-buffer}).
@item C-u M-g M-g
@itemx C-u M-g g
Read 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.
@kindex C-x b
@findex switch-to-buffer
- To select the buffer named @var{bufname}, type @kbd{C-x b
-@var{bufname} @key{RET}}. This runs the command
-@code{switch-to-buffer} with argument @var{bufname}. While entering
-the buffer name, you can use the usual minibuffer completion and
-history commands (@pxref{Minibuffer}). An empty input specifies the
-buffer that was current most recently among those not now displayed in
-any window.
-
-@cindex minibuffer confirmation
-@cindex confirming in the minibuffer
- If you specify a buffer that does not exist, @kbd{C-x b} creates a
-new, empty buffer that is not visiting any file, and selects it for
-editing. First, however, Emacs might prompt you for confirmation, in
-case you entered the wrong buffer name. Emacs asks for confirmation
-only if the last key you typed, before submitting the minibuffer input
-with @key{RET}, was @key{TAB} (@code{minibuffer-complete}). This
-catches a common mistake, in which one types @key{RET} before
-realizing that @key{TAB} did not complete far enough to yield the
-desired buffer name (@pxref{Completion}). Emacs asks for confirmation
-by putting the message @samp{[Confirm]} in the minibuffer; type
-@key{RET} again to confirm and visit the buffer. @xref{Visiting}, for
-information about modifying this behavior.
+ The @kbd{C-x b} (@code{switch-to-buffer}) command reads a buffer
+name using the minibuffer. Then it makes that buffer current, and
+displays it in the currently-selected window. An empty input
+specifies the buffer that was current most recently among those not
+now displayed in any window. If you specify a buffer that does not
+exist, @kbd{C-x b} creates a new, empty buffer that is not visiting
+any file, and selects it for editing.
+
+ While entering the buffer name, you can use the usual completion and
+history commands (@pxref{Minibuffer}). Note that @kbd{C-x b}, and
+related commands, use ``permissive completion with confirmation'' for
+minibuffer completion: if you type @key{RET} immediately after
+completing up to a nonexistent buffer name, Emacs prints
+@samp{[Confirm]} and you must type a second @key{RET} to submit that
+buffer name. @xref{Completion Exit}, for details.
One reason to create a new buffer is to use it for making temporary
notes. 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.
@findex toggle-read-only
If you wish to make changes in a read-only buffer, use the command
@kbd{C-x C-q} (@code{toggle-read-only}). It makes a read-only buffer
-writable, and makes a writable buffer read-only. This
-works by setting the variable @code{buffer-read-only}, which has a local
-value in each buffer and makes the buffer read-only if its value is
-non-@code{nil}. If you have files under version control, you may find
-it convenient to bind @kbd{C-x C-q} to @code{vc-toggle-read-only}
-instead. This will guard you against an operation that will confuse
-most modern version-conmtrol systems. @xref{Version Control}.
+writable, and makes a writable buffer read-only. This works by
+setting the variable @code{buffer-read-only}, which has a local value
+in each buffer and makes the buffer read-only if its value is
+non-@code{nil}.
@findex rename-buffer
@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 71a2dba7d0..4a09d6e3d9 100644
--- a/doc/emacs/calendar.texi
+++ b/doc/emacs/calendar.texi
@@ -893,11 +893,12 @@ Move to a date specified in the Ethiopic calendar
(@code{calendar-ethiopic-goto-date}).
@end table
- These commands ask you for a date on the other calendar, move point to
-the Gregorian calendar date equivalent to that date, and display the
-other calendar's date in the echo area. Emacs uses strict completion
-(@pxref{Strict Completion}) whenever it asks you to type a month name, so you
-don't have to worry about the spelling of Hebrew, Islamic, or French names.
+ These commands ask you for a date on the other calendar, move point
+to the Gregorian calendar date equivalent to that date, and display
+the other calendar's date in the echo area. Emacs uses strict
+completion (@pxref{Completion Exit}) whenever it asks you to type a
+month name, so you don't have to worry about the spelling of Hebrew,
+Islamic, or French names.
@c FIXME move?
@findex calendar-hebrew-list-yahrzeits
@@ -993,7 +994,7 @@ occurrence of that combination. Use @kbd{g m n c} to move point to the
next occurrence of a combination. These commands signal an error if the
haab/tzolkin date combination you have typed is impossible.
- Emacs uses strict completion (@pxref{Strict Completion}) whenever it
+ Emacs uses strict completion (@pxref{Completion Exit}) whenever it
asks you to type a Mayan name, so you don't have to worry about
spelling.
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index de6e7539c2..817cfc369d 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -46,7 +46,7 @@ are certain characters found on non-English keyboards
@cindex M-
Emacs also recognizes control characters that are entered using
@dfn{modifier keys}. Two commonly-used modifier keys are
-@key{Control} (usually labelled @key{Ctrl}), and @key{Meta} (usually
+@key{Control} (usually labeled @key{Ctrl}), and @key{Meta} (usually
labeled @key{Alt})@footnote{We refer to @key{Alt} as @key{Meta} for
historical reasons.}. For example, @kbd{Control-a} is entered by
holding 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 6af77374d0..d87c22ec28 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
Text mode and other modes based on Text mode:
@example
-(add-hook 'text-mode-hook 'turn-on-auto-fill)
+(add-hook 'text-mode-hook 'auto-fill-mode)
@end example
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.
Turn on Auto Fill mode automatically in Text mode and related modes.
@example
-(add-hook 'text-mode-hook
- '(lambda () (auto-fill-mode 1)))
+(add-hook 'text-mode-hook 'auto-fill-mode)
@end example
This 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
@code{lambda}, with a single-quote in front of it to make it a list
constant rather than an expression.
-It's beyond the scope of this manual to explain Lisp functions, but for
-this example it is enough to know that the effect is to execute
-@code{(auto-fill-mode 1)} when Text mode is entered. You can replace
-that with any other expression that you like, or with several
-expressions in a row.
-
-Emacs comes with a function named @code{turn-on-auto-fill} whose
-definition is @code{(lambda () (auto-fill-mode 1))}. Thus, a simpler
-way to write the above example is as follows:
-
-@example
-(add-hook 'text-mode-hook 'turn-on-auto-fill)
-@end example
+It's beyond the scope of this manual to explain Lisp functions, but
+for this example it is enough to know that the effect is to execute
+the @code{auto-fill-mode} function when Text mode is entered.
@item
Load the installed Lisp library named @file{foo} (actually a file
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index d2f49c62e4..b72e24bf24 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -21,7 +21,7 @@ the text is displayed.
* Follow Mode:: Follow mode lets two windows scroll as one.
* Faces:: How to change the display style using faces.
* Standard Faces:: Emacs' predefined faces.
-* Temporary Face Changes:: Commands to temporarily modify the default text face
+* Text Scale:: Increasing or decreasing text size in a buffer.
* Font Lock:: Minor mode for syntactic highlighting using faces.
* Highlight Interactively:: Tell Emacs what text to highlight.
* Fringes:: Enabling or disabling window fringes.
@@ -55,7 +55,7 @@ direction that the window moves relative to the text; this terminology
was taken up by Emacs before the modern meaning of ``scrolling up''
and ``scrolling down'' became widely adopted. Hence the strange
result that @key{PageDown} scrolls ``up'' in the Emacs sense. In this
-manual, we refer to scrolling ``foward'' and ``backward'' where
+manual, we refer to scrolling ``forward'' and ``backward'' where
possible, in order to minimize confusion.
The portion of a buffer displayed in a window always contains point.
@@ -439,76 +439,69 @@ one large window.
@section Faces: Controlling Text Display Style
@cindex faces
- Emacs can display text in several different styles, which are called
+ Emacs can display text in several different styles, called
@dfn{faces}. Each face can specify various @dfn{face attributes},
-such as the font, height, weight and slant, the foreground and
-background color, and underlining or overlining. A face does not have
-to specify all of these attributes; often it inherits most of them
-from another face.
-
- On a text-only terminal, not all face attributes are meaningful.
-Some text-only terminals support inverse video, bold, and underline
-attributes; some support colors. Text-only terminals generally do not
-support changing the height, width or font.
-
- Most major modes assign faces to the text automatically through the
-work of Font Lock mode. @xref{Font Lock}, for more information about
-Font Lock mode and syntactic highlighting. You can print the current
-buffer with the highlighting that appears on your screen using the
-command @code{ps-print-buffer-with-faces}. @xref{PostScript}.
-
- Enriched mode, the mode for editing formatted text, provides
-commands and menus for specifying faces for text in the buffer.
-@xref{Format Faces}.
+such as the font, height, weight, slant, foreground and background
+color, and underlining or overlining. Most major modes assign faces
+to the text automatically, via Font Lock mode. @xref{Font Lock}, for
+more information about how these faces are assigned.
+
+@findex list-faces-display
+ To see what faces are currently defined, and what they look like,
+type @kbd{M-x list-faces-display}. With a prefix argument, this
+prompts for a regular expression, and displays only faces with names
+matching that regular expression (@pxref{Regexps}).
+
+ It's possible for a given face to look different in different
+frames. For instance, some text-only terminals do not support all
+face attributes, particularly font, height, and width, and some
+support a limited range of colors. The @code{list-faces-display}
+command shows the appearance for the selected frame.
@cindex face colors, setting
- To alter the appearance of a face, use the customization buffer.
-@xref{Face Customization}. You can also use X resources to specify
-attributes of any particular face (@pxref{Resources}). When
-displaying a character, any attribute that isn't specified by its face
-is taken from the @code{default} face, whose attributes reflect the
-default settings of the frame itself.
+@cindex background color
+@cindex default face
+ You can customize a face to alter its appearance, and save those
+changes for future Emacs sessions. @xref{Face Customization}. A face
+does not have to specify every single attribute; often it inherits
+most attributes from another face. Any ultimately unspecified
+attribute is taken from a face named @code{default}, whose attributes
+are all specified. The @code{default} face is the default for
+displaying text, and its background color is also used as the frame's
+background color.
+
+ You can also use X resources to specify attributes of any particular
+face. @xref{Resources}.
@findex set-face-foreground
@findex set-face-background
- You can also change the foreground and background colors of a
-specific face with @kbd{M-x set-face-foreground} and @kbd{M-x
-set-face-background}. These commands prompt in the minibuffer for a
-face name and a color name, with completion, and then set that face to
-use the specified color. @xref{Face Customization}, for information
-about color names. These commands affect the face colors on all
-frames, both existing and those to be created in the future. These
-changes do not, however, persist for future Emacs sessions; to make
-lasting changes, use the customization buffer (@pxref{Face
-Customization}).
-
- You can also set foreground and background colors for the current
-frame only; see @ref{Frame Parameters}.
-
- Emacs can display variable-width fonts, but some of the Emacs
-commands that calculate width and indentation do not know how to
-calculate variable widths. This can sometimes lead to incorrect
-results when you use variable-width fonts. In particular, indentation
-commands can give inconsistent results, so we recommend you avoid
-variable-width fonts, especially for editing program source code.
+ You can also change the foreground and background colors of a face
+with @kbd{M-x set-face-foreground} and @kbd{M-x set-face-background}.
+These commands prompt in the minibuffer for a face name and a color
+name, with completion, and then set that face to use the specified
+color (@pxref{Face Customization}, for information about color names).
+They affect the face colors on all frames, but their effects do not
+persist for future Emacs sessions, unlike using the customization
+buffer or X resources. You can also use frame parameters to set
+foreground and background colors for a specific frame; see @ref{Frame
+Parameters}.
+
+ Emacs can display variable-width fonts, but some Emacs commands,
+particularly indentation commands, do not account for variable
+character display widths. Therefore, we recommend not using
+variable-width fonts for most faces, particularly those assigned by
+Font Lock mode.
@node Standard Faces
@section Standard Faces
-@findex list-faces-display
- To see what faces are currently defined, and what they look like,
-type @kbd{M-x list-faces-display}. It's possible for a given face to
-look different in different frames; this command shows the appearance
-in the frame in which you type it. With a prefix argument, this
-prompts for a regular expression, and displays only faces with names
-matching that regular expression.
-
Here are the standard faces for specifying text appearance. You can
apply them to specific text when you want the effects they produce.
@table @code
@item default
This face is used for ordinary text that doesn't specify any face.
+Its background color is used as the frame's background color.
@item bold
This face uses a bold variant of the default font.
@item italic
@@ -535,37 +528,38 @@ their own faces for this purpose.)
@table @code
@item highlight
-This face is used for highlighting portions of text, in various modes.
-For example, mouse-sensitive text is highlighted using this face.
+This face is used for text highlighting in various contexts, such as
+when the mouse cursor is moved over a hyperlink.
@item isearch
-This face is used for highlighting the current Isearch match
+This face is used to highlight the current Isearch match
(@pxref{Incremental Search}).
@item query-replace
-This face is used for highlighting the current Query Replace match
+This face is used to highlight the current Query Replace match
(@pxref{Replace}).
@item lazy-highlight
-This face is used for lazy highlighting of Isearch and Query Replace
-matches other than the current one.
+This face is used to highlight ``lazy matches'' for Isearch and Query
+Replace (matches other than the current one).
@item region
-This face is used for displaying a selected region (@pxref{Mark}).
+This face is used for displaying an active region (@pxref{Mark}).
+When Emacs is built with GTK support, its colors are taken from the
+current GTK theme.
@item secondary-selection
This face is used for displaying a secondary X selection (@pxref{Secondary
Selection}).
@item trailing-whitespace
The face for highlighting excess spaces and tabs at the end of a line
-when @code{show-trailing-whitespace} is non-@code{nil}; see
-@ref{Useless Whitespace}.
-@item nobreak-space
-The face for displaying the character ``nobreak space.''
+when @code{show-trailing-whitespace} is non-@code{nil} (@pxref{Useless
+Whitespace}).
@item escape-glyph
-The face for highlighting the @samp{\} or @samp{^} that indicates
-a control character. It's also used when @samp{\} indicates a
-nobreak space or nobreak (soft) hyphen.
+The face for displaying control characters and escape sequences
+(@pxref{Text Display}).
+@item nobreak-space
+The face for displaying ``no-break'' space characters (@pxref{Text
+Display}).
@end table
- These faces control the appearance of parts of the Emacs frame.
-They exist as faces to provide a consistent way to customize the
-appearance of these parts of the frame.
+ The following faces control the appearance of parts of the Emacs
+frame:
@table @code
@item mode-line
@@ -588,11 +582,8 @@ at the top of a window just as the mode line appears at the bottom.
Most windows do not have a header line---only some special modes, such
Info mode, create one.
@item vertical-border
-This face is used for the vertical divider between windows.
-By default this face inherits from the @code{mode-line-inactive} face
-on character terminals. On graphical displays the foreground color of
-this face is used for the vertical line between windows without
-scrollbars.
+This face is used for the vertical divider between windows on
+text-only terminals.
@item minibuffer-prompt
@cindex @code{minibuffer-prompt} face
@vindex minibuffer-prompt-properties
@@ -607,35 +598,38 @@ The face for the fringes to the left and right of windows on graphic
displays. (The fringes are the narrow portions of the Emacs frame
between the text area and the window's right and left borders.)
@xref{Fringes}.
-@item scroll-bar
-This face determines the visual appearance of the scroll bar.
-@xref{Scroll Bars}.
-@item border
-This face determines the color of the frame border.
@item cursor
-This face determines the color of the cursor.
+The @code{:background} attribute of this face specifies the color of
+the text cursor. @xref{Cursor Display}.
+@item tooltip
+This face is used for tooltip text. By default, if Emacs is built
+with GTK support, tooltips are drawn via GTK and this face has no
+effect. @xref{Tooltips}.
@item mouse
This face determines the color of the mouse pointer.
+@end table
+
+ The following faces likewise control the appearance of parts of the
+Emacs frame, but only on text-only terminals, or when Emacs is built
+on X with no toolkit support. (For all other cases, the appearance of
+the respective frame elements is determined by system-wide settings.)
+
+@table @code
+@item scroll-bar
+This face determines the visual appearance of the scroll bar.
+@xref{Scroll Bars}.
@item tool-bar
This face determines the color of tool bar icons. @xref{Tool Bars}.
-@item tooltip
-This face is used for tooltips. @xref{Tooltips}.
@item menu
@cindex menu bar appearance
@cindex @code{menu} face, no effect if customized
@cindex customization of @code{menu} face
This face determines the colors and font of Emacs's menus. @xref{Menu
-Bars}. This has no effect in Emacs built with GTK and in the
-MS-Windows/Mac ports; you need to use system-wide styles and options
-to change the appearance of GTK, Windows, or Mac menus. Setting the
-font of LessTif/Motif menus is currently not supported; attempts to
-set the font are ignored in this case.
+Bars}.
@end table
-@node Temporary Face Changes
-@section Temporary Face Changes
-
-The following commands change the default face within a buffer.
+@node Text Scale
+@section Text Scale
@cindex adjust buffer face height
@findex text-scale-adjust
@@ -652,9 +646,11 @@ determine which action to take.
The final key of these commands may be repeated without the leading
@kbd{C-x}. For instance, @kbd{C-x C-= C-= C-=} increases the face
-height by three steps. Each step scales the height of the default
-face by the value of the variable @code{text-scale-mode-step}. As a
-special case, an argument of 0 removes any scaling currently active.
+height by three steps. Each step scales the text height by a factor
+of 1.2; to change this factor, customize the variable
+@code{text-scale-mode-step}. As an exception, a numeric argument of 0
+to the @code{text-scale-adjust} command restores the default height,
+similar to typing @kbd{C-x C-0}.
@cindex increase buffer face height
@findex text-scale-increase
@@ -668,21 +664,14 @@ You may find it convenient to bind to these commands, rather than
@cindex set buffer face height
@findex text-scale-set
-The command @code{text-scale-set} sets the height of the default face
-in the current buffer to an absolute level specified by its prefix
-argument.
+ The command @code{text-scale-set} scales the height of the default
+face in the current buffer to an absolute level specified by its
+prefix argument.
@findex text-scale-mode
- The above commands automatically enable or disable the minor mode
-@code{text-scale-mode}, depending on whether the current font scaling
-is other than 1 or not.
-
-@cindex variable pitch mode
-@findex variable-pitch-mode
- To temporarily change the face in the current buffer to a
-variable-pitch (``proportional'') font, use the command @kbd{M-x
-variable-pitch-mode} to enable or disable the Variable Pitch minor
-mode.
+ The above commands automatically enable the minor mode
+@code{text-scale-mode} if the current font scaling is other than 1,
+and disable it otherwise.
@node Font Lock
@section Font Lock mode
@@ -691,44 +680,37 @@ mode.
@cindex syntax highlighting and coloring
Font Lock mode is a minor mode, always local to a particular buffer,
-which highlights (or ``fontifies'') the buffer contents according to
-the syntax of the text you are editing. It can recognize comments and
-strings in most programming languages; in several languages, it can
-also recognize and properly highlight various other important
-constructs, such as names of functions being defined or reserved
-keywords. Some special modes, such as Occur mode and Info mode, have
-completely specialized ways of assigning fonts for Font Lock mode.
+which assigns faces to (or @dfn{fontifies}) the text in the buffer.
+Each buffer's major mode tells Font Lock mode which text to fontify;
+for instance, programming language modes fontify syntactically
+relevant constructs like comments, strings, and function names.
@findex font-lock-mode
- Font Lock mode is turned on by default in all modes which support it.
-You can toggle font-lock for each buffer with the command @kbd{M-x
-font-lock-mode}. Using a positive argument unconditionally turns Font
-Lock mode on, and a negative or zero argument turns it off.
+ Font Lock mode is enabled by default. To toggle it in the current
+buffer, type @kbd{M-x font-lock-mode}. A positive numeric argument
+unconditionally enables Font Lock mode, and a negative or zero
+argument disables it.
@findex global-font-lock-mode
@vindex global-font-lock-mode
- If you do not wish Font Lock mode to be turned on by default,
-customize the variable @code{global-font-lock-mode} using the Customize
-interface (@pxref{Easy Customization}), or use the function
-@code{global-font-lock-mode} in your @file{.emacs} file, like this:
+ To toggle Font Lock mode in all buffers, type @kbd{M-x
+global-font-lock-mode}. To impose this setting for future Emacs
+sessions, customize the variable @code{global-font-lock-mode}
+(@pxref{Easy Customization}), or add the following line to your init
+file:
@example
(global-font-lock-mode 0)
@end example
@noindent
-This variable, like all the variables that control Font Lock mode,
-take effect whenever fontification is done; that is, potentially at
-any time.
-
-@findex turn-on-font-lock
- If you have disabled Global Font Lock mode, you can still enable Font
+If you have disabled Global Font Lock mode, you can still enable Font
Lock for specific major modes by adding the function
-@code{turn-on-font-lock} to the mode hooks (@pxref{Hooks}). For
-example, to enable Font Lock mode for editing C files, you can do this:
+@code{font-lock-mode} to the mode hooks (@pxref{Hooks}). For example,
+to enable Font Lock mode for editing C files, you can do this:
@example
-(add-hook 'c-mode-hook 'turn-on-font-lock)
+(add-hook 'c-mode-hook 'font-lock-mode)
@end example
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
faces. @xref{Face Customization}.
@vindex font-lock-maximum-decoration
- The variable @code{font-lock-maximum-decoration} specifies the
-preferred level of fontification, for modes that provide multiple
-levels. Level 1 is the least amount of fontification; some modes
-support levels as high as 3. The normal default is ``as high as
-possible.'' You can specify an integer, which applies to all modes, or
-you can specify different numbers for particular major modes; for
-example, to use level 1 for C/C++ modes, and the default level
-otherwise, use this:
+ You can customize the variable @code{font-lock-maximum-decoration}
+to alter the amount of fontification applied by Font Lock mode, for
+major modes that support this feature. The value should be a number
+(with 1 representing a minimal amount of fontification; some modes
+support levels as high as 3); or @code{t}, meaning ``as high as
+possible'' (the default). You can also specify different numbers for
+particular major modes; for example, to use level 1 for C/C++ modes,
+and the default level otherwise, use the value
@example
-(setq font-lock-maximum-decoration
- '((c-mode . 1) (c++-mode . 1)))
+'((c-mode . 1) (c++-mode . 1)))
@end example
-@vindex font-lock-maximum-size
- Fontification can be too slow for large buffers, so you can suppress
-it for buffers above a certain size. The variable
-@code{font-lock-maximum-size} specifies a buffer size, beyond which
-buffer fontification is suppressed.
-
-@c @w is used below to prevent a bad page-break.
@vindex font-lock-beginning-of-syntax-function
@cindex incorrect fontification
@cindex parenthesis in column zero and fontification
@@ -768,11 +742,10 @@ buffer fontification is suppressed.
relies on analysis of the syntactic structure of the buffer text. For
the sake of speed, some modes, including Lisp mode, rely on a special
convention: an open-parenthesis or open-brace in the leftmost column
-always defines the @w{beginning} of a defun, and is thus always
-outside any string or comment. (@xref{Left Margin Paren}.) If you
-don't follow this convention, Font Lock mode can misfontify the text
-that follows an open-parenthesis or open-brace in the leftmost column
-that is inside a string or comment.
+always defines the beginning of a defun, and is thus always outside
+any string or comment. Therefore, you should avoid placing a an
+open-parenthesis or open-brace in the leftmost column, if it is inside
+a string or comment. @xref{Left Margin Paren}, for details.
@cindex slow display during scrolling
The variable @code{font-lock-beginning-of-syntax-function}, which is
@@ -788,11 +761,11 @@ considerably slow down redisplay while scrolling, particularly if you
are close to the end of a large buffer.
@findex font-lock-add-keywords
- Font Lock highlighting patterns already exist for many modes, but you
-may want to fontify additional patterns. You can use the function
-@code{font-lock-add-keywords}, to add your own highlighting patterns for
-a particular mode. For example, to highlight @samp{FIXME:} words in C
-comments, use this:
+ Font Lock highlighting patterns already exist for most modes, but
+you may want to fontify additional patterns. You can use the function
+@code{font-lock-add-keywords}, to add your own highlighting patterns
+for a particular mode. For example, to highlight @samp{FIXME:} words
+in C comments, use this:
@example
(add-hook 'c-mode-hook
@@ -803,19 +776,20 @@ comments, use this:
@end example
@findex font-lock-remove-keywords
- To remove keywords from the font-lock highlighting patterns, use the
+@noindent
+To remove keywords from the font-lock highlighting patterns, use the
function @code{font-lock-remove-keywords}. @xref{Search-based
Fontification,,, elisp, The Emacs Lisp Reference Manual}.
@cindex just-in-time (JIT) font-lock
@cindex background syntax highlighting
Fontifying large buffers can take a long time. To avoid large
-delays when a file is visited, Emacs fontifies only the visible
-portion of a buffer. As you scroll through the buffer, each portion
-that becomes visible is fontified as soon as it is displayed; this
-type of Font Lock is called @dfn{Just-In-Time} (or @dfn{JIT}) Lock.
-You can control how JIT Lock behaves, including telling it to perform
-fontification while idle, by customizing variables in the
+delays when a file is visited, Emacs initially fontifies only the
+visible portion of a buffer. As you scroll through the buffer, each
+portion that becomes visible is fontified as soon as it is displayed;
+this type of Font Lock is called @dfn{Just-In-Time} (or @dfn{JIT})
+Lock. You can control how JIT Lock behaves, including telling it to
+perform fontification while idle, by customizing variables in the
customization group @samp{jit-lock}. @xref{Specific Customization}.
@node Highlight Interactively
@@ -826,7 +800,7 @@ customization group @samp{jit-lock}. @xref{Specific Customization}.
@findex highlight-changes-mode
Highlight Changes mode is a minor mode that @dfn{highlights} the parts
-of the buffer were changed most recently, by giving that text a
+of the buffer that were changed most recently, by giving that text a
different face. To enable or disable Highlight Changes mode, use
@kbd{M-x highlight-changes-mode}.
@@ -926,42 +900,50 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
@section Window Fringes
@cindex fringes
- On a graphical display, each Emacs window normally has narrow
+@findex set-fringe-style
+@findex fringe-mode
+ On graphical displays, each Emacs window normally has narrow
@dfn{fringes} on the left and right edges. The fringes are used to
display symbols that provide information about the text in the window.
+You can type @kbd{M-x fringe-mode} to disable the fringes, or modify
+their width. This command affects fringes in all frames; to modify
+fringes on the selected frame only, use @kbd{M-x set-fringe-style}.
The most common use of the fringes is to indicate a continuation
-line, when one line of text is split into multiple lines on the
-screen. The left fringe shows a curving arrow for each screen line
-except the first, indicating that ``this is not the real beginning.''
-The right fringe shows a curving arrow for each screen line except the
-last, indicating that ``this is not the real end.'' If the line's
-direction is right-to-left (@pxref{Bidirectional Editing}), the
-meaning of the curving arrows in the left and right fringes are
+line (@pxref{Continuation Lines}). When one line of text is split
+into multiple screen lines, the left fringe shows a curving arrow for
+each screen line except the first, indicating that ``this is not the
+real beginning.'' The right fringe shows a curving arrow for each
+screen line except the last, indicating that ``this is not the real
+end.'' If the line's direction is right-to-left (@pxref{Bidirectional
+Editing}), the meanings of the curving arrows in the fringes are
swapped.
The fringes indicate line truncation with short horizontal arrows
meaning ``there's more text on this line which is scrolled
-horizontally out of view;'' clicking the mouse on one of the arrows
-scrolls the display horizontally in the direction of the arrow. The
-fringes can also indicate other things, such as empty lines, or where a
-program you are debugging is executing (@pxref{Debuggers}).
+horizontally out of view.'' Clicking the mouse on one of the arrows
+scrolls the display horizontally in the direction of the arrow.
-@findex set-fringe-style
-@findex fringe-mode
- You can enable and disable the fringes for all frames using
-@kbd{M-x fringe-mode}. To enable and disable the fringes
-for the selected frame, use @kbd{M-x set-fringe-style}.
+ The fringes can also indicate other things, such as buffer
+boundaries (@pxref{Displaying Boundaries}), and where a program you
+are debugging is executing (@pxref{Debuggers}).
+
+@vindex overflow-newline-into-fringe
+ The fringe is also used for drawing the cursor, if the current line
+is exactly as wide as the window and point is at the end of the line.
+To disable this, change the variable
+@code{overflow-newline-into-fringe} to @code{nil}; this causes Emacs
+to continue or truncate lines that are exactly as wide as the window.
@node Displaying Boundaries
@section Displaying Boundaries
@vindex indicate-buffer-boundaries
- On a graphical display, Emacs can indicate the buffer boundaries in
-the fringes. It indicates the first line and the last line with
-angle images in the fringes. This can be combined with up and down
-arrow images which say whether it is possible to scroll the window up
-and down.
+ On graphical displays, Emacs can indicate the buffer boundaries in
+the fringes. If you enable this feature, the first line and the last
+line are marked with angle images in the fringes. This can be
+combined with up and down arrow images which say whether it is
+possible to scroll the window.
The buffer-local variable @code{indicate-buffer-boundaries} controls
how 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
present.
@findex delete-trailing-whitespace
- Type @kbd{M-x delete-trailing-whitespace @key{RET}} to delete all
-trailing whitespace within the buffer's accessible portion
-(@pxref{Narrowing}). This command does not remove newline characters.
+ Type @kbd{M-x delete-trailing-whitespace} to delete all trailing
+whitespace within the buffer. If the region is active, it deletes all
+trailing whitespace in the region instead.
@vindex indicate-empty-lines
@cindex unused lines
@cindex fringes, and unused line indication
- Emacs can indicate unused lines at the end of the window with a
-small image in the left fringe (@pxref{Fringes}). The image appears
-for window lines that do not correspond to any buffer text. Blank
-lines at the end of the buffer then stand out because they do not have
-this image in the fringe.
-
- To enable this feature, set the buffer-local variable
-@code{indicate-empty-lines} to a non-@code{nil} value. You can enable
-or disable this feature for all new buffers by setting the default
-value of this variable, e.g.@: @code{(setq-default
-indicate-empty-lines t)};. (This feature currently doesn't work on
-text-only terminals.)
+ On graphical displays, Emacs can indicate unused lines at the end of
+the window with a small image in the left fringe (@pxref{Fringes}).
+The image appears for window lines that do not correspond to any
+buffer text. Blank lines at the end of the buffer then stand out
+because they do not have this image in the fringe. To enable this
+feature, set the buffer-local variable @code{indicate-empty-lines} to
+a non-@code{nil} value. You can enable or disable this feature for
+all new buffers by setting the default value of this variable,
+e.g.@:@code{(setq-default indicate-empty-lines t)}.
@node Selective Display
@section Selective Display
@@ -1153,14 +1132,15 @@ set the variable @code{display-time-24hr-format} to @code{t}.
@vindex display-time-mail-file
@vindex display-time-mail-directory
The word @samp{Mail} appears after the load level if there is mail
-for you that you have not read yet. On a graphical display you can use
-an icon instead of @samp{Mail} by customizing
-@code{display-time-use-mail-icon}; this may save some space on the mode
-line. You can customize @code{display-time-mail-face} to make the mail
-indicator prominent. Use @code{display-time-mail-file} to specify
-the mail file to check, or set @code{display-time-mail-directory}
-to specify the directory to check for incoming mail (any nonempty regular
-file in the directory is considered as ``newly arrived mail'').
+for you that you have not read yet. On graphical displays, you can
+use an icon instead of @samp{Mail} by customizing
+@code{display-time-use-mail-icon}; this may save some space on the
+mode line. You can customize @code{display-time-mail-face} to make
+the mail indicator prominent. Use @code{display-time-mail-file} to
+specify the mail file to check, or set
+@code{display-time-mail-directory} to specify the directory to check
+for incoming mail (any nonempty regular file in the directory is
+considered as ``newly arrived mail'').
@cindex mail (on mode line)
@findex display-battery-mode
@@ -1178,11 +1158,10 @@ percentage of the total charge.
@cindex mode line, 3D appearance
@cindex attributes of mode line, changing
@cindex non-integral number of lines in a window
- By default, the mode line is drawn on graphics displays with
-3D-style highlighting, like that of a button when it is not being
-pressed. If you don't like this effect, you can disable the 3D
-highlighting of the mode line, by customizing the attributes of the
-@code{mode-line} face. @xref{Face Customization}.
+ On graphical displays, the mode line is drawn as a 3D box. If you
+don't like this effect, you can disable it by customizing the
+@code{mode-line} face and setting its @code{box} attribute to
+@code{nil}. @xref{Face Customization}.
@cindex non-selected windows, mode line appearance
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},
@node Text Display
@section How Text Is Displayed
@cindex characters (in text)
+@cindex printing character
- @acronym{ASCII} printing characters (octal codes 040 through 0176) in Emacs
-buffers are displayed with their graphics, as are non-@acronym{ASCII} multibyte
-printing characters (octal codes above 0400).
+ Most characters are @dfn{printing characters}: when they appear in a
+buffer, they are displayed literally on the screen. Printing
+characters include @acronym{ASCII} numbers, letters, and punctuation
+characters, as well as many non-@acronym{ASCII} characters.
@vindex tab-width
- Some @acronym{ASCII} control characters are displayed in special
-ways. The newline character (octal code 012) is displayed by starting
-a new line. The tab character (octal code 011) is displayed by moving
-to the next tab stop column (normally every 8 columns). The number of
-spaces per tab is controlled by the variable @code{tab-width}, which
-must have an integer value between 1 and 1000, inclusive, and is made
-buffer-local by changing it. Note that how the tab character in the buffer
-is displayed has nothing to do with the definition of @key{TAB} as a
-command.
-
- Other @acronym{ASCII} control characters are normally displayed as a caret
-(@samp{^}) followed by the non-control version of the character; thus,
-control-A is displayed as @samp{^A}. The caret appears in face
-@code{escape-glyph}.
-
- Non-@acronym{ASCII} characters 0200 through 0237 (octal) are
-displayed with octal escape sequences; thus, character code 0230
-(octal) is displayed as @samp{\230}. The backslash appears in face
-@code{escape-glyph}.
+@cindex control character
+ The @acronym{ASCII} character set contains non-printing @dfn{control
+characters}. Two of these are displayed specially: the newline
+character (Unicode code point @code{U+000A}) is displayed by starting
+a new line, while the tab character (@code{U+0009}) is displayed as a
+space that extends to the next tab stop column (normally every 8
+columns). The number of spaces per tab is controlled by the
+buffer-local variable @code{tab-width}, which must have an integer
+value between 1 and 1000, inclusive. Note that how the tab character
+in the buffer is displayed has nothing to do with the definition of
+@key{TAB} as a command.
+
+ Other @acronym{ASCII} control characters are displayed as a caret
+(@samp{^}) followed by the non-control version of the character, with
+the @code{escape-glyph} face. For instance, the @samp{control-A}
+character, @code{U+0001}, is displayed as @samp{^A}.
@vindex ctl-arrow
- If the variable @code{ctl-arrow} is @code{nil}, control characters in
-the buffer are displayed with octal escape sequences, except for newline
-and tab. Altering the value of @code{ctl-arrow} makes it local to the
-current buffer; until that time, the default value is in effect. The
-default is initially @code{t}.
-
- The display of character codes 0240 through 0377 (octal) may be
-either as escape sequences or as graphics. They do not normally occur
-in multibyte buffers, but if they do, they are displayed as Latin-1
-graphics. In unibyte mode, if you enable European display they are
-displayed using their graphics (assuming your terminal supports them),
-otherwise as escape sequences. @xref{Unibyte Mode}.
+ The non-@acronym{ASCII}, non-printing characters @code{U+0080}
+(octal 200) through @code{U+009F} (octal 237) are displayed as octal
+escape sequences, with the @code{escape-glyph} face. For instance,
+character code @code{U+0098} (octal 230) is displayed as @samp{\230}.
+If you change the buffer-local variable @code{ctl-arrow} to
+@code{nil}, @acronym{ASCII} control characters are also displayed as
+octal escape sequences instead of caret escape sequences.
@vindex nobreak-char-display
-@cindex no-break space, display
-@cindex no-break hyphen, display
-@cindex soft hyphen, display
- Some character sets define ``no-break'' versions of the space and
-hyphen characters, which are used where a line should not be broken.
-Emacs normally displays these characters with special faces
-(respectively, @code{nobreak-space} and @code{escape-glyph}) to
-distinguish them from ordinary spaces and hyphens. You can turn off
-this feature by setting the variable @code{nobreak-char-display} to
-@code{nil}. If you set the variable to any other value, that means to
-prefix these characters with an escape character.
+@cindex non-breaking space
+@cindex non-breaking hyphen
+@cindex soft hyphen
+ Some non-@acronym{ASCII} characters have the same appearance as an
+@acronym{ASCII} space or hyphen (minus) character. Such characters
+can cause problems if they are entered into a buffer without your
+realization, e.g. by yanking; for instance, source code compilers
+typically do not treat non-@acronym{ASCII} spaces as whitespace
+characters. To deal with this problem, Emacs displays such characters
+specially: it displays @code{U+00A0} (no-break space) with the
+@code{nobreak-space} face, and it displays @code{U+00AD} (soft
+hyphen), @code{U+2010} (hyphen), and @code{U+2011} (non-breaking
+hyphen) with the @code{escape-glyph} face. To disable this, change
+the variable @code{nobreak-char-display} to @code{nil}. If you give
+this variable a non-@code{nil} and non-@code{t} value, Emacs instead
+displays such characters as a highlighted backslash followed by a
+space or hyphen.
You can customize the way any particular character code is displayed
by means of a display table. @xref{Display Tables,, Display Tables,
@@ -1269,90 +1248,71 @@ elisp, The Emacs Lisp Reference Manual}.
@cindex glyphless characters
@cindex characters with no font glyphs
- On graphics displays, some characters could have no glyphs in any of
-the fonts available to Emacs. On text terminals, some characters
-could be impossible to encode with the terminal coding system
-(@pxref{Terminal Coding}). Emacs can display such @dfn{glyphless}
-characters using one of the following methods:
-
-@table @code
-@item zero-width
-Don't display the character.
-
-@item thin-space
-Display a thin space, 1-pixel wide on graphics displays or 1-character
-wide on text terminals.
-
-@item empty-box
-Display an empty box.
-
-@item acronym
-Display the acronym of the character's name (such as @sc{zwnj} or
-@sc{rlm}) in a box.
-
-@item hex-code
-Display the Unicode codepoint of the character in hexadecimal
-notation, in a box.
-@end table
-
-@noindent
-@cindex @code{glyphless-char} face
-With the exception of @code{zero-width}, all other methods draw these
-characters in a special face @code{glyphless-char}, which you can
-customize.
-
-@vindex glyphless-char-display-control
-@vindex char-acronym-table
-To control what glyphless characters are displayed using which method,
-customize the variable @code{glyphless-char-display-control}; see its
-doc string for the details. For even finer control, set the elements
-of 2 char-tables: @code{glyphless-char-display} and
-@code{char-acronym-table}.
+ On graphical displays, some characters may have no glyphs in any of
+the fonts available to Emacs. These @dfn{glyphless characters} are
+normally displayed as boxes containing the hexadecimal character code.
+You can control the display method by customizing the variable
+@code{glyphless-char-display-control}. @xref{Glyphless Chars,,
+Glyphless Character Display, elisp, The Emacs Lisp Reference Manual},
+for details.
@node Cursor Display
@section Displaying the Cursor
-
-@findex blink-cursor-mode
-@vindex blink-cursor-alist
-@cindex cursor, locating visually
-@cindex cursor, blinking
- You can customize the cursor's color, and whether it blinks, using
-the @code{cursor} Custom group (@pxref{Easy Customization}). On
-a graphical display, the command @kbd{M-x blink-cursor-mode} enables
-or disables the blinking of the cursor. (On text terminals, the
-terminal itself blinks the cursor, and Emacs has no control over it.)
-You can control how the cursor appears when it blinks off by setting
-the variable @code{blink-cursor-alist}.
-
-@vindex cursor-type
- You can change the shape of the cursor from the default ``box'' look
-to a bar by altering the @code{cursor-type} variable.
+@cindex text cursor
@vindex visible-cursor
- Some text terminals offer two different cursors: the normal cursor
-and the very visible cursor, where the latter may be e.g. bigger or
-blinking. By default Emacs uses the very visible cursor, and switches
-to it when you start or resume Emacs. If the variable
-@code{visible-cursor} is @code{nil} when Emacs starts or resumes, it
-doesn't switch, so it uses the normal cursor.
+ On a text terminal, the cursor's appearance is controlled by the
+terminal, largely out of the control of Emacs. Some terminals offer
+two different cursors: a ``visible'' static cursor, and a ``very
+visible'' blinking cursor. By default, Emacs uses the very visible
+cursor, and switches to it when you start or resume Emacs. If the
+variable @code{visible-cursor} is @code{nil} when Emacs starts or
+resumes, it uses the normal cursor.
+
+@cindex cursor face
+@vindex cursor-type
+ On a graphical display, many more properties of the text cursor can
+be altered. To customize its color, change the @code{:background}
+attribute of the face named @code{cursor} (@pxref{Face
+Customization}). (The other attributes of this face have no effect;
+the text shown under the cursor is drawn using the frame's background
+color.) To change its shape, customize the buffer-local variable
+@code{cursor-type}; possible values are @code{box} (the default),
+@code{hollow} (a hollow box), @code{bar} (a vertical bar), @code{(bar
+. @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar} (a
+horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n}
+pixels tall), or @code{nil} (no cursor at all).
-@cindex cursor in non-selected windows
-@vindex cursor-in-non-selected-windows
- Normally, the cursor appears in non-selected windows without
-blinking, with the same appearance as when the blinking cursor blinks
-``off.'' For a box cursor, this is a hollow box; for a bar cursor,
-this is a thinner bar. To turn off cursors in non-selected windows,
-customize the variable @code{cursor-in-non-selected-windows} and
-assign it a @code{nil} value.
+@findex blink-cursor-mode
+@cindex cursor, blinking
+@cindex blinking cursor
+@vindex blink-cursor-alist
+ To disable cursor blinking, change the variable
+@code{blink-cursor-mode} to @code{nil} (@pxref{Easy Customization}),
+or add the line @code{(blink-cursor-mode 0)} to your init file.
+Alternatively, you can change how the cursor looks when it ``blinks
+off'' by customizing the list variable @code{blink-cursor-alist}.
+Each element in the list should have the form @code{(@var{on-type}
+. @var{off-type})}; this means that if the cursor is displayed as
+@var{on-type} when it blinks on (where @var{on-type} is one of the
+cursor types described above), then it is displayed as @var{off-type}
+when it blinks off.
@vindex x-stretch-cursor
@cindex wide block cursor
- On graphical displays, Emacs can optionally draw the block cursor
-as wide as the character under the cursor---for example, if the cursor
-is on a tab character, it would cover the full width occupied by that
-tab character. To enable this feature, set the variable
+ Some characters, such as tab characters, are ``extra wide''. When
+the cursor is positioned over such a character, it is normally drawn
+with the default character width. You can make the cursor stretch to
+cover wide characters, by changing the variable
@code{x-stretch-cursor} to a non-@code{nil} value.
+@cindex cursor in non-selected windows
+@vindex cursor-in-non-selected-windows
+ The cursor normally appears in non-selected windows as a
+non-blinking hollow box. (For a bar cursor, it instead appears as a
+thinner bar.) To turn off cursors in non-selected windows, change the
+variable @code{cursor-in-non-selected-windows} to @code{nil}.
+
@findex hl-line-mode
@findex global-hl-line-mode
@cindex highlight current line
@@ -1362,18 +1322,17 @@ hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x
global-hl-line-mode} enables or disables the same mode globally.
@node Line Truncation
-@section Truncation of Lines
+@section Line Truncation
@cindex truncation
@cindex line truncation, and fringes
- As an alternative to continuation (@pxref{Continuation Lines}), Emacs
-can display long lines by @dfn{truncation}. This means that all the
-characters that do not fit in the width of the screen or window do not
-appear at all. On graphical displays, a small straight arrow in the
-fringe indicates truncation at either end of the line. On text-only
-terminals, @samp{$} appears in the leftmost column when there is text
-truncated to the left, and in the rightmost column when there is text
-truncated to the right.
+ As an alternative to continuation (@pxref{Continuation Lines}),
+Emacs can display long lines by @dfn{truncation}. This means that all
+the characters that do not fit in the width of the screen or window do
+not appear at all. On graphical displays, a small straight arrow in
+the fringe indicates truncation at either end of the line. On
+text-only terminals, this is indicated with @samp{$} signs in the
+leftmost and/or rightmost columns.
@vindex truncate-lines
@findex toggle-truncate-lines
@@ -1385,21 +1344,12 @@ toggle-truncate-lines}. This works by locally changing the variable
are truncated; if it is @code{nil}, they are continued onto multiple
screen lines. Setting the variable @code{truncate-lines} in any way
makes it local to the current buffer; until that time, the default
-value is in effect. The default value is normally @code{nil}.
+value, which is normally @code{nil}, is in effect.
-@c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows.
- If the variable @code{truncate-partial-width-windows} is
-non-@code{nil}, it forces truncation rather than continuation in any
-window less than the full width of the screen or frame, regardless of
-the value of @code{truncate-lines}. See also @ref{Display,, Display,
-elisp, The Emacs Lisp Reference Manual}.
-
-@vindex overflow-newline-into-fringe
- If the variable @code{overflow-newline-into-fringe} is
-non-@code{nil} on a graphical display, then Emacs does not continue or
-truncate a line which is exactly as wide as the window. Instead, the
-newline overflows into the right fringe, and the cursor appears in the
-fringe when positioned on that newline.
+@vindex truncate-partial-width-windows
+ If a split window becomes too narrow, Emacs may automatically enable
+line truncation. @xref{Split Window}, for the variable
+@code{truncate-partial-width-windows} which controls this.
@node Visual Line Mode
@section Visual Line Mode
@@ -1452,11 +1402,8 @@ variable @code{visual-line-fringe-indicators}.
@node Display Custom
@section Customization of Display
- This section describes variables (@pxref{Variables}) that you can
-change to customize how Emacs displays. Beginning users can skip
-it.
-@c the reason for that pxref is because an xref early in the
-@c ``echo area'' section leads here.
+ This section describes variables that control miscellaneous aspects
+of the appearance of the Emacs screen. Beginning users can skip it.
@vindex visible-bell
If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts
@@ -1468,19 +1415,7 @@ to make the screen blink.
The variable @code{echo-keystrokes} controls the echoing of multi-character
keys; its value is the number of seconds of pause required to cause echoing
to start, or zero, meaning don't echo at all. The value takes effect when
-there is someting to echo. @xref{Echo Area}.
-
-@vindex baud-rate
- The variable @anchor{baud-rate}@code{baud-rate} holds the output
-speed of the terminal. Setting this variable does not change the
-speed of actual data transmission, but the value is used for
-calculations. On text-only terminals, it affects padding, and
-decisions about whether to scroll part of the screen or redraw it
-instead. It also affects the behavior of incremental search. On
-graphical displays, @code{baud-rate} is only used to determine how
-frequently to look for pending input during display updating. A
-higher value of @code{baud-rate} means that check for pending input
-will be done less frequently.
+there is something to echo. @xref{Echo Area}.
@cindex mouse pointer
@cindex hourglass pointer display
@@ -1523,15 +1458,3 @@ itself, in pixels; the default is 2.
result in text that is hard to read. Call the function
@code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil}
argument to suppress the effect of bold-face in this case.
-
-@vindex no-redraw-on-reenter
- On a text-only terminal, when you reenter Emacs after suspending, Emacs
-normally clears the screen and redraws the entire display. On some
-terminals with more than one page of memory, it is possible to arrange
-the termcap entry so that the @samp{ti} and @samp{te} strings (output
-to the terminal when Emacs is entered and exited, respectively) switch
-between pages of memory so as to use one page for Emacs and another
-page for other output. On such terminals, you might want to set the variable
-@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to
-assume, when resumed, that the screen page it is using still contains
-what Emacs last wrote there.
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 8a15c783fc..cad0e4db3c 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -281,7 +281,7 @@ Completion
* Completion Example:: Examples of using completion.
* Completion Commands:: A list of completion commands.
-* Strict Completion:: Different types of completion.
+* Completion Exit:: Completion and minibuffer text submission.
* Completion Styles:: How completion matches are chosen.
* Completion Options:: Options for completion.
@@ -350,7 +350,7 @@ Controlling the Display
* Follow Mode:: Follow mode lets two windows scroll as one.
* Faces:: How to change the display style using faces.
* Standard Faces:: Emacs' predefined faces.
-* Temporary Face Changes:: Commands to temporarily modify the default text face
+* Text Scale:: Increasing or decreasing text size in a buffer.
* Font Lock:: Minor mode for syntactic highlighting using faces.
* Highlight Interactively:: Tell Emacs what text to highlight.
* Fringes:: Enabling or disabling window fringes.
@@ -388,7 +388,6 @@ Incremental Search
or else edit the search string.
* Isearch Scroll:: Scrolling during an incremental search.
* Isearch Minibuffer:: Incremental search of the minibuffer history.
-* Slow Isearch:: Incremental search features for slow terminals.
Replacement Commands
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 433bf61759..2317f876b0 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -47,58 +47,58 @@ on file directories.
@section File Names
@cindex file names
- Many Emacs commands that operate on a file require you to specify
-the file name, using the minibuffer (@pxref{Minibuffer}). You can use
-@dfn{completion} to specify long file names (@pxref{Completion}).
-Note that file name completion ignores file names whose extensions
-appear in the variable @code{completion-ignored-extensions}
-(@pxref{Completion Options}).
-
@cindex default file name
- For most operations, there is a @dfn{default file name} which is
-used if you type just @key{RET} to enter an empty argument. Normally,
-the default file name is the name of the file visited in the current
-buffer.
+ Many Emacs commands that operate on a file require you to specify
+the file name, using the minibuffer (@pxref{Minibuffer File}).
+
+ While in the minibuffer, you can use the usual completion and
+history commands (@pxref{Minibuffer}). Note that file name completion
+ignores file names whose extensions appear in the variable
+@code{completion-ignored-extensions} (@pxref{Completion Options}).
+Note also that most commands use ``permissive completion with
+confirmation'' for reading file names: you are allowed to submit a
+nonexistent file name, but if you type @key{RET} immediately after
+completing up to a nonexistent file name, Emacs prints
+@samp{[Confirm]} and you must type a second @key{RET} to confirm.
+@xref{Completion Exit}, for details.
@cindex default directory
@vindex default-directory
@vindex insert-default-directory
- Each buffer has a @dfn{default directory} which is normally the same
-as the directory of the file visited in that buffer. For example, if
-the default file name is @file{/u/rms/gnu/gnu.tasks}, the default
-directory is normally @file{/u/rms/gnu/}. The default directory is
-kept in the variable @code{default-directory}, which has a separate
-value in every buffer. When a command reads a file name using the
-minibuffer, the default directory usually serves as the initial
-contents of the minibuffer. To inhibit the insertion of the default
-directory, set the variable @code{insert-default-directory} to
-@code{nil}.
+ Each buffer has a @dfn{default directory}, stored in the
+buffer-local variable @code{default-directory}. Whenever Emacs reads
+a file name using the minibuffer, it usually inserts the default
+directory into the minibuffer as the initial contents. You can
+inhibit this insertion by changing the variable
+@code{insert-default-directory} to @code{nil} (@pxref{Minibuffer
+File}). Regardless, Emacs always assumes that any relative file name
+is relative to the default directory, e.g. entering a file name
+without a directory specifies a file in the default directory.
- If you enter a file name without a directory, that specifies a file
-in the default directory. If you specify a directory in a relative
-fashion, with a name that does not start with a slash, it is
-interpreted with respect to the default directory. For example,
-suppose the default directory is @file{/u/rms/gnu/}. Entering just
-@samp{foo} in the minibuffer, with a directory omitted, specifies the
-file @file{/u/rms/gnu/foo}; entering @samp{../.login} specifies
+@findex cd
+@findex pwd
+ When you visit a file, Emacs sets @code{default-directory} in the
+visiting buffer to the directory of its file. When you create a new
+buffer that is not visiting a file, via a command like @kbd{C-x b},
+its default directory is usually copied from the buffer that was
+current at the time (@pxref{Select Buffer}). You can use the command
+@kbd{M-x pwd} to see the value of @code{default-directory} in the
+current buffer. The command @kbd{M-x cd} prompts for a directory
+name, and sets the buffer's @code{default-directory} to that directory
+(doing this does not change the buffer's file name, if any).
+
+ As an example, when you visit the file @file{/u/rms/gnu/gnu.tasks},
+the default directory is set to @file{/u/rms/gnu/}. If you invoke a
+command that reads a file name, entering just @samp{foo} in the
+minibuffer, with a directory omitted, specifies the file
+@file{/u/rms/gnu/foo}; entering @samp{../.login} specifies
@file{/u/rms/.login}; and entering @samp{new/foo} specifies
@file{/u/rms/gnu/new/foo}.
When typing a file name into the minibuffer, you can make use of a
couple of shortcuts: a double slash is interpreted as ``ignore
everything before the second slash in the pair,'' and @samp{~/} is
-interpreted as your home directory. @xref{Minibuffer File}, for more
-information about these shortcuts.
-
-@findex cd
-@findex pwd
- The command @kbd{M-x pwd} displays the default directory, and the
-command @kbd{M-x cd} sets it to a value read using the minibuffer. A
-buffer's default directory changes only when the @code{cd} command is
-used. A file-visiting buffer's default directory is initialized to
-the directory of the file it visits. If you create a buffer with
-@kbd{C-x b}, its default directory is copied from that of the buffer
-that was current at the time (@pxref{Select Buffer}).
+interpreted as your home directory. @xref{Minibuffer File}.
@cindex environment variables in file names
@cindex expansion of environment variables
@@ -113,10 +113,8 @@ the @samp{$}; alternatively, it can be enclosed in braces after the
@file{/u/$@{FOO@}/test.c} are abbreviations for
@file{/u/rms/hacks/test.c}. If the environment variable is not
defined, no substitution occurs, so that the character @samp{$} stands
-for itself.
-
- Note that environment variables affect Emacs only if they are
-applied before Emacs is started.
+for itself. Note that environment variables affect Emacs only if they
+are applied before Emacs is started.
To access a file with @samp{$} in its name, if the @samp{$} causes
expansion, type @samp{$$}. This pair is converted to a single
@@ -125,8 +123,7 @@ a single @samp{$}. Alternatively, quote the whole file name with
@samp{/:} (@pxref{Quoted File Names}). File names which begin with a
literal @samp{~} should also be quoted with @samp{/:}.
- You can include non-@acronym{ASCII} characters in file names if you set the
-variable @code{file-name-coding-system} to a non-@code{nil} value.
+ You can include non-@acronym{ASCII} characters in file names.
@xref{File Name Coding}.
@node Visiting
@@ -159,48 +156,43 @@ Visit a file with no conversion of the contents.
buffer so you can edit them. Emacs makes a new buffer for each file
that you visit.
- Emacs normally constructs the buffer name from the file name,
-omitting the directory name. For example, a file named
-@file{/usr/rms/emacs.tex} is visited in a buffer named
-@samp{emacs.tex}. If there is already a buffer with that name, Emacs
-constructs a unique name; the normal method is to append @samp{<2>},
-@samp{<3>}, and so on, but you can select other methods.
+@kindex C-x C-f
+@findex find-file
+ To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the
+minibuffer to enter the name of the desired file. While in the
+minibuffer, you can abort the command by typing @kbd{C-g}. @xref{File
+Names}, for details about entering file names into minibuffers.
+
+ If the specified file exists but the system does not allow you to
+read it, an error message is displayed in the echo area. Otherwise,
+you can tell that @kbd{C-x C-f} has completed successfully by the
+appearance of new text on the screen, and by the buffer name shown in
+the mode line (@pxref{Mode Line}). Emacs normally constructs the
+buffer name from the file name, omitting the directory name. For
+example, a file named @file{/usr/rms/emacs.tex} is visited in a buffer
+named @samp{emacs.tex}. If there is already a buffer with that name,
+Emacs constructs a unique name; the normal method is to append
+@samp{<2>}, @samp{<3>}, and so on, but you can select other methods.
@xref{Uniquify}.
- Each window's mode line shows the name of the buffer that is being
-displayed in that window, so you can always tell what buffer you are
-editing. @pxref{Mode Line}.
-
- The changes you make with editing commands are made in the Emacs
-buffer. They do not take effect in the file that you visited, or any
-permanent place, until you @dfn{save} the buffer (@pxref{Saving}).
+@cindex creating files
+ To create a new file, just visit it using the same command, @kbd{C-x
+C-f}. Emacs displays @samp{(New file)} in the echo area, but in other
+respects behaves as if you had visited an existing empty file.
@cindex modified (buffer)
- If a buffer contains changes that have not been saved, we say the
-buffer is @dfn{modified}. This implies that some changes will be lost
-if the buffer is not saved. The mode line displays two stars near the
-left margin to indicate that the buffer is modified.
-
-@kindex C-x C-f
-@findex find-file
- To visit a file, type @kbd{C-x C-f} (@code{find-file}) and use the
-minibuffer to enter the name of the desired file. The usual
-defaulting and completion behavior is available in this minibuffer
-(@pxref{Minibuffer File}). Note, also, that completion ignores
-certain file names (@pxref{Completion Options}). While in the
-minibuffer, you can abort @kbd{C-x C-f} by typing @kbd{C-g}.
-
- Your can tell that @kbd{C-x C-f} has completed successfully by the
-appearance of new text on the screen and a new buffer name in the mode
-line. If the specified file does not exist and you could not create
-it, or exists but you can't read it, an error message is displayed in
-the echo area.
-
- If you visit a file that is already in Emacs, @kbd{C-x C-f} does not make
-another copy. It selects the existing buffer containing that file.
-However, before doing so, it checks whether the file itself has changed
-since you visited or saved it last. If the file has changed, Emacs offers
-to reread it.
+ After visiting a file, the changes you make with editing commands are
+made in the Emacs buffer. They do not take effect in the visited
+file, until you @dfn{save} the buffer (@pxref{Saving}). If a buffer
+contains changes that have not been saved, we say the buffer is
+@dfn{modified}. This implies that some changes will be lost if the
+buffer is not saved. The mode line displays two stars near the left
+margin to indicate that the buffer is modified.
+
+ If you visit a file that is already in Emacs, @kbd{C-x C-f} switches
+to the existing buffer instead of making another copy. Before doing
+so, it checks whether the file has changed since you last visited or
+saved it. If the file has changed, Emacs offers to reread it.
@vindex large-file-warning-threshold
@cindex file, warning when size is large
@@ -211,10 +203,10 @@ to reread it.
about 10 megabytes), Emacs asks you for confirmation first. You can
answer @kbd{y} to proceed with visiting the file. Note, however, that
Emacs cannot visit files that are larger than the maximum Emacs buffer
-size, which is limited by the amount of memory Emacs can allocate
-and by the integers that Emacs can represent
-(@pxref{Buffers}). If you try, Emacs will display an error message
-saying that the maximum buffer size has been exceeded.
+size, which is limited by the amount of memory Emacs can allocate and
+by the integers that Emacs can represent (@pxref{Buffers}). If you
+try, Emacs displays an error message saying that the maximum buffer
+size has been exceeded.
@cindex wildcard characters in file names
@vindex find-file-wildcards
@@ -228,63 +220,21 @@ File Names}, for information on how to visit a file whose name
actually contains wildcard characters. You can disable the wildcard
feature by customizing @code{find-file-wildcards}.
-@cindex file selection dialog
- On graphical displays, there are two additional methods for visiting
-files. Firstly, when Emacs is built with a suitable GUI toolkit,
-commands invoked with the mouse (by clicking on the menu bar or tool
-bar) use the toolkit's standard ``File Selection'' dialog instead of
-prompting for the file name in the minibuffer. On GNU/Linux and Unix
-platforms, Emacs does this when built with GTK, LessTif, and Motif
-toolkits; on MS-Windows and Mac, the GUI version does that by default.
-For information on how to customize this, see @ref{Dialog Boxes}.
-
- Secondly, Emacs supports ``drag and drop'': dropping a file into an
-ordinary Emacs window visits the file using that window. As an
-exception, dropping a file into a window displaying a Dired buffer
-moves or copies the file into the displayed directory. For details,
-see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
-
-@cindex creating files
- What if you want to create a new file? Just visit it. Emacs
-displays @samp{(New file)} in the echo area, but in other respects
-behaves as if you had visited an existing empty file. If you make
-changes and save them, the file is created.
-
-@cindex minibuffer confirmation
-@cindex confirming in the minibuffer
-@vindex confirm-nonexistent-file-or-buffer
- When @key{TAB} completion results in a nonexistent file name and you
-type @key{RET} immediately to visit it, Emacs asks for confirmation;
-this is because it's possible that you expected completion to go
-further and give you an existing file's name. The string
-@samp{[Confirm]} appears for a short time after the file name to
-indicate the need to confirm in this way. Type @key{RET} to confirm
-and visit the nonexistent file. The variable
-@code{confirm-nonexistent-file-or-buffer} controls whether Emacs asks
-for confirmation before visiting a new file. The default value,
-@code{after-completion}, gives the behavior we have just described.
-If the value is @code{nil}, Emacs never asks for confirmation; for any
-other non-@code{nil} value, Emacs always asks for confirmation. This
-variable also affects the @code{switch-to-buffer} command
-(@pxref{Select Buffer}). @xref{Completion}, for more information
-about completion.
-
@kindex C-x C-v
@findex find-alternate-file
- If you visit a nonexistent file unintentionally (because you typed
-the wrong file name), type @kbd{C-x C-v} (@code{find-alternate-file})
-to visit the file you really wanted. @kbd{C-x C-v} is similar to
-@kbd{C-x C-f}, but it kills the current buffer (after first offering
-to save it if it is modified). When @kbd{C-x C-v} reads the file name
-to visit, it inserts the entire default file name in the buffer, with
-point just after the directory part; this is convenient if you made a
-slight error in typing the name.
+ If you visit the wrong file unintentionally by typing its name
+incorrectly, type @kbd{C-x C-v} (@code{find-alternate-file}) to visit
+the file you really wanted. @kbd{C-x C-v} is similar to @kbd{C-x
+C-f}, but it kills the current buffer (after first offering to save it
+if it is modified). When @kbd{C-x C-v} reads the file name to visit,
+it inserts the entire default file name in the buffer, with point just
+after the directory part; this is convenient if you made a slight
+error in typing the name.
@vindex find-file-run-dired
If you ``visit'' a file that is actually a directory, Emacs invokes
-Dired, the Emacs directory browser; this lets you ``edit'' the
-contents of the directory. @xref{Dired}. You can disable this
-behavior by setting the variable @code{find-file-run-dired} to
+Dired, the Emacs directory browser. @xref{Dired}. You can disable
+this behavior by setting the variable @code{find-file-run-dired} to
@code{nil}; in that case, it is an error to try to visit a directory.
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
seek. This feature is available only when you are using a window
system. @xref{Frames}.
- Emacs recognizes from the contents of a file which end-of-line
-convention it uses to separate lines---newline (used on GNU/Linux and
-on Unix), carriage-return linefeed (used on Microsoft systems), or
-just carriage-return (used on the Macintosh)---and automatically
-converts the contents to the normal Emacs convention, which is that
-the newline character separates lines. This is a part of the general
-feature of coding system conversion (@pxref{Coding Systems}), and
-makes it possible to edit files imported from different operating
-systems with equal convenience. If you change the text and save the
-file, Emacs performs the inverse conversion, changing newlines back
-into carriage-return linefeed or just carriage-return if appropriate.
+@cindex file selection dialog
+ On graphical displays, there are two additional methods for visiting
+files. Firstly, when Emacs is built with a suitable GUI toolkit,
+commands invoked with the mouse (by clicking on the menu bar or tool
+bar) use the toolkit's standard ``File Selection'' dialog instead of
+prompting for the file name in the minibuffer. On GNU/Linux and Unix
+platforms, Emacs does this when built with GTK, LessTif, and Motif
+toolkits; on MS-Windows and Mac, the GUI version does that by default.
+For information on how to customize this, see @ref{Dialog Boxes}.
+
+ Secondly, Emacs supports ``drag and drop'': dropping a file into an
+ordinary Emacs window visits the file using that window. As an
+exception, dropping a file into a window displaying a Dired buffer
+moves or copies the file into the displayed directory. For details,
+see @ref{Drag and Drop}, and @ref{Misc Dired Features}.
+
+ Each time you visit a file, Emacs automatically scans its contents
+to detect what character encoding and end-of-line convention it uses,
+and converts these to Emacs' internal encoding and end-of-line
+convention within the buffer. When you save the buffer, Emacs
+performs the inverse conversion, writing the file to disk with its
+original encoding and end-of-line convention. @xref{Coding Systems}.
@findex find-file-literally
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.
@vindex find-file-hook
@vindex find-file-not-found-functions
- Two special hook variables allow extensions to modify the operation of
-visiting files. Visiting a file that does not exist runs the functions
-in the list @code{find-file-not-found-functions}; this variable holds a list
-of functions, and the functions are called one by one (with no
-arguments) until one of them returns non-@code{nil}. This is not a
-normal hook, and the name ends in @samp{-functions} rather than @samp{-hook}
-to indicate that fact.
+ Two special hook variables allow extensions to modify the operation
+of visiting files. Visiting a file that does not exist runs the
+functions in @code{find-file-not-found-functions}; this variable holds
+a list of functions, which are called one by one (with no arguments)
+until one of them returns non-@code{nil}. This is not a normal hook,
+and the name ends in @samp{-functions} rather than @samp{-hook} to
+indicate that fact.
Successful visiting of any file, whether existing or not, calls the
-functions in the list @code{find-file-hook}, with no arguments.
-This variable is a normal hook. In the case of a nonexistent file, the
+functions in @code{find-file-hook}, with no arguments. This variable
+is a normal hook. In the case of a nonexistent file, the
@code{find-file-not-found-functions} are run first. @xref{Hooks}.
There are several ways to specify automatically the major mode for
@@ -386,9 +347,9 @@ that was visited in the buffer.
@table @kbd
@item C-x C-s
-Save the current buffer in its visited file on disk (@code{save-buffer}).
+Save the current buffer to its file (@code{save-buffer}).
@item C-x s
-Save any or all buffers in their visited files (@code{save-some-buffers}).
+Save any or all buffers to their files (@code{save-some-buffers}).
@item M-~
Forget that the current buffer has been changed (@code{not-modified}).
With prefix argument (@kbd{C-u}), mark the current buffer as changed.
@@ -409,10 +370,10 @@ Wrote /u/rms/gnu/gnu.tasks
@end example
@noindent
-If the selected buffer is not modified (no changes have been made in it
-since the buffer was created or last saved), saving is not really done,
-because it would have no effect. Instead, @kbd{C-x C-s} displays a message
-like this in the echo area:
+If the current buffer is not modified (no changes have been made in it
+since the buffer was created or last saved), saving is not really
+done, because it would have no effect. Instead, @kbd{C-x C-s}
+displays a message like this in the echo area:
@example
(No changes need to be saved)
@@ -597,8 +558,8 @@ Never make numbered backups; always make single backups.
@end table
@noindent
-The usual way to set this variable is globally, through your
-@file{.emacs} file or the customization buffer. However, you can set
+The usual way to set this variable is globally, through your init file
+or the customization buffer. However, you can set
@code{version-control} locally in an individual buffer to control the
making of backups for that buffer's file (@pxref{Locals}). You can
have 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,
you become the file's owner, and the file's group becomes the default
(different operating systems have different defaults for the group).
- Having the owner change is usually a good idea, because then the owner
-always shows who last edited the file. Also, the owners of the backups
-show who produced those versions. Occasionally there is a file whose
-owner should not change; it is a good idea for such files to contain
-local variable lists to set @code{backup-by-copying-when-mismatch}
-locally (@pxref{File Variables}).
-
@vindex backup-by-copying
@vindex backup-by-copying-when-linked
@vindex backup-by-copying-when-mismatch
@vindex backup-by-copying-when-privileged-mismatch
@cindex file ownership, and backup
@cindex backup, and user-id
- The choice of renaming or copying is controlled by four variables.
-Renaming is the default choice. If the variable
-@code{backup-by-copying} is non-@code{nil}, copying is used. Otherwise,
-if the variable @code{backup-by-copying-when-linked} is non-@code{nil},
-then copying is used for files that have multiple names, but renaming
-may still be used when the file being edited has only one name. If the
-variable @code{backup-by-copying-when-mismatch} is non-@code{nil}, then
-copying is used if renaming would cause the file's owner or group to
-change. @code{backup-by-copying-when-mismatch} is @code{t} by default
-if you start Emacs as the superuser. The fourth variable,
-@code{backup-by-copying-when-privileged-mismatch}, gives the highest
-numeric user-id for which @code{backup-by-copying-when-mismatch} will be
-forced on. This is useful when low-numbered user-ids are assigned to
-special system users, such as @code{root}, @code{bin}, @code{daemon},
-etc., which must maintain ownership of files.
+ The choice of renaming or copying is made as follows:
+
+@itemize
+@item
+If the variable @code{backup-by-copying} is non-@code{nil} (the
+default is @code{nil}), use copying.
+
+@item
+Otherwise, if the variable @code{backup-by-copying-when-linked} is
+non-@code{nil} (the default is @code{nil}), and the file has multiple
+names, use copying.
+
+@item
+Otherwise, if the variable @code{backup-by-copying-when-mismatch} is
+non-@code{nil} (the default is @code{t}), and renaming would change
+the file's owner or group, use copying.
+
+If you change @code{backup-by-copying-when-mismatch} to @code{nil},
+Emacs checks the numeric user-id of the file's owner. If this is
+higher than @code{backup-by-copying-when-privileged-mismatch}, then it
+behaves as though @code{backup-by-copying-when-mismatch} is
+non-@code{nil} anyway.
+
+@item
+Otherwise, renaming is the default choice.
+@end itemize
When a file is managed with a version control system (@pxref{Version
Control}), Emacs does not normally make backups in the usual way for
@@ -725,28 +690,28 @@ Emacs---the version control system does it.
if there isn't already one there. If the value is @code{visit}, Emacs
adds a newline at the end of any file that doesn't have one, just
after it visits the file. (This marks the buffer as modified, and you
-can undo it.) If the value is @code{visit-save}, that means to add
+can undo it.) If the value is @code{visit-save}, Emacs adds such
newlines both on visiting and on saving. If the value is @code{nil},
-Emacs leaves the end of the file unchanged; if it's neither @code{nil}
-nor @code{t}, Emacs asks you whether to add a newline. The default is
+Emacs leaves the end of the file unchanged; any other non-@code{nil}
+value means to asks you whether to add a newline. The default is
@code{nil}.
@vindex mode-require-final-newline
- Many major modes are designed for specific kinds of files that are
-always supposed to end in newlines. These major modes set the
-variable @code{require-final-newline} according to
-@code{mode-require-final-newline}. By setting the latter variable,
-you can control how these modes handle final newlines.
+ Some major modes are designed for specific kinds of files that are
+always supposed to end in newlines. Such major modes set the variable
+@code{require-final-newline} to the value of
+@code{mode-require-final-newline}, which defaults to @code{t}. By
+setting the latter variable, you can control how these modes handle
+final newlines.
@vindex write-region-inhibit-fsync
When Emacs saves a file, it invokes the @code{fsync} system call to
force the data immediately out to disk. This is important for safety
if the system crashes or in case of power outage. However, it can be
-disruptive on laptops using power saving, because it requires the disk
-to spin up each time you save a file. Setting
-@code{write-region-inhibit-fsync} to a non-@code{nil} value disables
-this synchronization. Be careful---this means increased risk of data
-loss.
+disruptive on laptops using power saving, as it may force a disk
+spin-up each time you save a file. If you accept an increased risk of
+data loss, you can set @code{write-region-inhibit-fsync} to a
+non-@code{nil} value to disable the synchronization.
@node Interlocking
@subsection Protection against Simultaneous Editing
@@ -754,9 +719,9 @@ loss.
@cindex file dates
@cindex simultaneous editing
Simultaneous editing occurs when two users visit the same file, both
-make changes, and then both save them. If nobody were informed that
-this was happening, whichever user saved first would later find that his
-changes were lost.
+make changes, and then both save them. If nobody is informed that
+this is happening, whichever user saves first would later find that
+his changes were lost.
On some systems, Emacs notices immediately when the second user starts
to 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
does not actually take place.
@end table
- Note that locking works on the basis of a file name; if a file has
-multiple names, Emacs does not realize that the two names are the same file
-and cannot prevent two users from editing it simultaneously under different
-names. However, basing locking on names means that Emacs can interlock the
-editing of new files that will not really exist until they are saved.
-
- Some systems are not configured to allow Emacs to make locks, and
-there are cases where lock files cannot be written. In these cases,
-Emacs cannot detect trouble in advance, but it still can detect the
-collision when you try to save a file and overwrite someone else's
-changes. Every time Emacs saves a buffer, it first checks the
-last-modification date of the existing file on disk to verify that it
-has not changed since the file was last visited or saved. If the date
-does not match, it implies that changes were made in the file in some
-other way, and these changes are about to be lost if Emacs actually
-does save. To prevent this, Emacs displays a warning message and asks
-for confirmation before saving. Occasionally you will know why the
-file was changed and know that it does not matter; then you can answer
-@kbd{yes} and proceed. Otherwise, you should cancel the save with
-@kbd{C-g} and investigate the situation.
-
If Emacs or the operating system crashes, this may leave behind lock
files which are stale, so you may occasionally get warnings about
-spurious collisions. When you determine that the collision is spurious,
-just use @kbd{p} to tell Emacs to go ahead anyway.
+spurious collisions. When you determine that the collision is
+spurious, just use @kbd{p} to tell Emacs to go ahead anyway.
- The first thing you should do when notified that simultaneous editing
-has already taken place is to list the directory with @kbd{C-u C-x C-d}
-(@pxref{Directories}). This shows the file's current author. You
-should attempt to contact him to warn him not to continue editing.
-Often the next step is to save the contents of your Emacs buffer under a
-different name, and use @code{diff} to compare the two files.@refill
+ Note that locking works on the basis of a file name; if a file has
+multiple names, Emacs does not prevent two users from editing it
+simultaneously under different names.
+
+ A lock file cannot be written in some circumstances, e.g. if Emacs
+lacks the system permissions or the system does not support symbolic
+links. In these cases, Emacs can still detect the collision when you
+try to save a file, by checking the file's last-modification date. If
+the file has changed since the last time Emacs visited or saved it,
+that implies that changes have been made in some other way, and will
+be lost if Emacs proceeds with saving. Emacs then displays a warning
+message and asks for confirmation before saving; answer @kbd{yes} to
+save, and @kbd{no} or @kbd{C-g} cancel the save.
+
+ If you are notified that simultaneous editing has already taken
+place, one way to compare the buffer to its file is the @kbd{M-x
+diff-buffer-with-file} command. @xref{Comparing Files}.
@node File Shadowing
@subsection Shadowing Files
@@ -881,10 +836,10 @@ shadow-define-cluster}.
@cindex modification dates
@cindex locale, date format
-You can arrange to put a time stamp in a file, so that it will be updated
+You can arrange to put a time stamp in a file, so that it is updated
automatically each time you edit and save the file. The time stamp
-has to be in the first eight lines of the file, and you should
-insert it like this:
+must be in the first eight lines of the file, and you should insert it
+like this:
@example
Time-stamp: <>
@@ -898,13 +853,13 @@ Time-stamp: " "
@end example
@findex time-stamp
- Then add the hook function @code{time-stamp} to the hook
-@code{before-save-hook}; that hook function will automatically update
-the time stamp, inserting the current date and time when you save the
-file. You can also use the command @kbd{M-x time-stamp} to update the
-time stamp manually. For other customizations, see the Custom group
-@code{time-stamp}. Note that non-numeric fields in the time stamp are
-formatted according to your locale setting (@pxref{Environment}).
+ Then add the function @code{time-stamp} to the hook
+@code{before-save-hook} (@pxref{Hooks}). When you save the file, this
+function then automatically updates the time stamp with the current
+date and time. You can also use the command @kbd{M-x time-stamp} to
+update the time stamp manually. For other customizations, see the
+Custom group @code{time-stamp}. Note that the time stamp is formatted
+according to your locale setting (@pxref{Environment}).
@node Reverting
@section Reverting a Buffer
@@ -912,18 +867,21 @@ formatted according to your locale setting (@pxref{Environment}).
@cindex drastic changes
@cindex reread a file
- If you have made extensive changes to a file and then change your mind
-about them, you can get rid of them by reading in the previous version
-of the file. To do this, use @kbd{M-x revert-buffer}, which operates on
-the current buffer. Since reverting a buffer unintentionally could lose
-a lot of work, you must confirm this command with @kbd{yes}.
+ If you have made extensive changes to a file-visiting buffer and
+then change your mind, you can @dfn{revert} the changes and go back to
+the saved version of the file. To do this, type @kbd{M-x
+revert-buffer}. Since reverting unintentionally could lose a lot of
+work, Emacs asks for confirmation first.
- @code{revert-buffer} tries to position point in such a way that, if
-the file was edited only slightly, you will be at approximately the
-same piece of text after reverting as before. However, if you have made
-drastic changes, point may wind up in a totally different piece of text.
+ The @code{revert-buffer} command tries to position point in such a
+way that, if the file was edited only slightly, you will be at
+approximately the same part of the text as before. But if you have
+made major changes, point may end up in a totally different location.
- Reverting marks the buffer as ``not modified''.
+ Reverting marks the buffer as ``not modified''. It also clears the
+buffer's undo history (@pxref{Undo}). Thus, the reversion cannot be
+undone---if you change your mind yet again, you can't use the undo
+commands to bring the reverted changes back.
Some kinds of buffers that are not associated with files, such as
Dired buffers, can also be reverted. For them, reverting means
@@ -950,15 +908,14 @@ discard your changes.)
@findex auto-revert-mode
@findex auto-revert-tail-mode
@vindex auto-revert-interval
-
- In addition, you can tell Emacs to periodically revert a buffer by
-typing @kbd{M-x auto-revert-mode}. This turns on Auto-Revert mode, a
-minor mode that makes Emacs automatically revert the current buffer
-every five seconds. You can change this interval through the variable
-@code{auto-revert-interval}. Typing @kbd{M-x global-auto-revert-mode}
-enables Global Auto-Revert mode, which does the same for all file
-buffers. Auto-Revert mode and Global Auto-Revert modes do not check
-or revert remote files, because that is usually too slow.
+ You can also tell Emacs to revert buffers periodically. To do this
+for a specific buffer, enable the minor mode Auto-Revert mode by
+typing @kbd{M-x auto-revert-mode}. This automatically reverts the
+current buffer every five seconds; you can change the interval through
+the variable @code{auto-revert-interval}. To do the same for all file
+buffers, type @kbd{M-x global-auto-revert-mode} to enable Global
+Auto-Revert mode. These minor modes do not check or revert remote
+files, because that is usually too slow.
One use of Auto-Revert mode is to ``tail'' a file such as a system
log, so that changes made to that file by other programs are
@@ -969,8 +926,9 @@ the end, use Auto-Revert Tail mode instead
(@code{auto-revert-tail-mode}). It is more efficient for this.
Auto-Revert Tail mode works also for remote files.
- @xref{VC Mode Line}, for Auto Revert peculiarities in buffers that
-visit files under version control.
+ @xref{VC Undo}, for commands to revert to earlier versions of files
+under version control. @xref{VC Mode Line}, for Auto Revert
+peculiarities when visiting files under version control.
@ifnottex
@include arevert-xtra.texi
@@ -1061,40 +1019,41 @@ any auto-save file to go with the new visited name.
@vindex auto-save-default
@findex auto-save-mode
Each time you visit a file, auto-saving is turned on for that file's
-buffer if the variable @code{auto-save-default} is non-@code{nil} (but not
-in batch mode; @pxref{Entering Emacs}). The default for this variable is
-@code{t}, so auto-saving is the usual practice for file-visiting buffers.
-Auto-saving can be turned on or off for any existing buffer with the
-command @kbd{M-x auto-save-mode}. Like other minor mode commands, @kbd{M-x
-auto-save-mode} turns auto-saving on with a positive argument, off with a
-zero or negative argument; with no argument, it toggles.
+buffer if the variable @code{auto-save-default} is non-@code{nil} (but
+not in batch mode; @pxref{Initial Options}). The default for this
+variable is @code{t}, so auto-saving is the usual practice for
+file-visiting buffers. To toggle auto-saving in the current buffer,
+type @kbd{M-x auto-save-mode}. Auto Save mode acts as a buffer-local
+minor mode (@pxref{Minor Modes}).
@vindex auto-save-interval
- Emacs does auto-saving periodically based on counting how many characters
-you have typed since the last time auto-saving was done. The variable
-@code{auto-save-interval} specifies how many characters there are between
-auto-saves. By default, it is 300. Emacs doesn't accept values that are
-too small: if you customize @code{auto-save-interval} to a value less
-than 20, Emacs will behave as if the value is 20.
+ Emacs auto-saves periodically based on how many characters you have
+typed since the last auto-save. The variable
+@code{auto-save-interval} specifies how many characters there are
+between auto-saves. By default, it is 300. Emacs doesn't accept
+values that are too small: if you customize @code{auto-save-interval}
+to a value less than 20, Emacs will behave as if the value is 20.
@vindex auto-save-timeout
- Auto-saving also takes place when you stop typing for a while. The
-variable @code{auto-save-timeout} says how many seconds Emacs should
-wait before it does an auto save (and perhaps also a garbage
-collection). (The actual time period is longer if the current buffer is
-long; this is a heuristic which aims to keep out of your way when you
-are editing long buffers, in which auto-save takes an appreciable amount
-of time.) Auto-saving during idle periods accomplishes two things:
-first, it makes sure all your work is saved if you go away from the
-terminal for a while; second, it may avoid some auto-saving while you
-are actually typing.
+ Auto-saving also takes place when you stop typing for a while. By
+default, it does this after 30 seconds of idleness (at this time,
+Emacs may also perform garbage collection; @pxref{Garbage
+Collection,,, elisp, The Emacs Lisp Reference Manual}). To change
+this interval, customize the variable @code{auto-save-timeout}. The
+actual time period is longer if the current buffer is long; this is a
+heuristic which aims to keep out of your way when you are editing long
+buffers, in which auto-save takes an appreciable amount of time.
+Auto-saving during idle periods accomplishes two things: first, it
+makes sure all your work is saved if you go away from the terminal for
+a while; second, it may avoid some auto-saving while you are actually
+typing.
Emacs also does auto-saving whenever it gets a fatal error. This
includes killing the Emacs job with a shell command such as @samp{kill
%emacs}, or disconnecting a phone line or network connection.
@findex do-auto-save
- You can request an auto-save explicitly with the command @kbd{M-x
+ You can perform an auto-save explicitly with the command @kbd{M-x
do-auto-save}.
@node Recover
@@ -1138,13 +1097,11 @@ this---saving them---updates the files themselves.
@vindex auto-save-list-file-prefix
Emacs records information about interrupted sessions for later
-recovery in files named
-@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. The
-directory used, @file{~/.emacs.d/auto-save-list/}, is determined by
-the variable @code{auto-save-list-file-prefix}. You can record
-sessions in a different place by customizing that variable. If you
-set @code{auto-save-list-file-prefix} to @code{nil} in your
-@file{.emacs} file, sessions are not recorded for recovery.
+recovery in files named @file{.saves-@var{pid}-@var{hostname}} in the
+directory @file{~/.emacs.d/auto-save-list/}. This directory is
+determined by the variable @code{auto-save-list-file-prefix}. If you
+set @code{auto-save-list-file-prefix} to @code{nil}, sessions are not
+recorded for recovery.
@node File Aliases
@section File Name Aliases
@@ -1292,8 +1249,8 @@ buffer named @samp{*diff*}. This works by running the @command{diff}
program, using options taken from the variable @code{diff-switches}.
The value of @code{diff-switches} should be a string; the default is
@code{"-c"} to specify a context diff. @xref{Top,, Diff, diff,
-Comparing and Merging Files}, for more information about
-@command{diff} output formats.
+Comparing and Merging Files}, for more information about the
+@command{diff} program.
The output of the @code{diff} command is shown using a major mode
called Diff mode. @xref{Diff Mode}.
@@ -1361,11 +1318,10 @@ merging files.
@cindex patches, editing
Diff mode is a major mode used for the output of @kbd{M-x diff} and
-other similar commands, as well as the output of the @command{diff}
-program. This kind of output is called a @dfn{patch}, because it can
-be passed to the @command{patch} command to automatically apply the
-specified changes. To select Diff mode manually, type @kbd{M-x
-diff-mode}.
+other similar commands. This kind of output is called a @dfn{patch},
+because it can be passed to the @command{patch} command to
+automatically apply the specified changes. To select Diff mode
+manually, type @kbd{M-x diff-mode}.
@cindex hunk, diff
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
The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
into its own buffer. You can edit it there, and if you save the
buffer, the edited version will replace the version in the Tar buffer.
-@kbd{v} extracts a file into a buffer in View mode (@pxref{View
-Mode}). @kbd{o} extracts the file and displays it in another window,
-so you could edit the file and operate on the archive simultaneously.
-@kbd{d} marks a file for deletion when you later use @kbd{x}, and
+Clicking with the mouse on the file name in the Tar buffer does
+likewise. @kbd{v} extracts a file into a buffer in View mode
+(@pxref{View Mode}). @kbd{o} extracts the file and displays it in
+another window, so you could edit the file and operate on the archive
+simultaneously.
+
+ @kbd{d} marks a file for deletion when you later use @kbd{x}, and
@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the
archive to disk and @kbd{R} renames a file within the archive.
-@kbd{g} reverts the buffer from the archive on disk.
-
- The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission
-bits, group, and owner, respectively.
-
- If your display supports colors and the mouse, moving the mouse
-pointer across a file name highlights that file name, indicating that
-you can click on it. Clicking @kbd{Mouse-2} on the highlighted file
-name extracts the file into a buffer and displays that buffer.
+@kbd{g} reverts the buffer from the archive on disk. The keys
+@kbd{M}, @kbd{G}, and @kbd{O} change the file's permission bits,
+group, and owner, respectively.
Saving the Tar buffer writes a new version of the archive to disk with
the changes you made to the components.
@@ -1690,19 +1643,20 @@ requires the appropriate uncompression program.
@cindex @code{zip}
@cindex @code{lzh}
@cindex @code{zoo}
+@cindex @code{7z}
@pindex arc
@pindex jar
@pindex zip
@pindex rar
@pindex lzh
@pindex zoo
+@pindex 7z
@cindex Java class archives
@cindex unzip archives
- A separate but similar Archive mode is used for archives produced by
-the programs @code{arc}, @code{jar}, @code{lzh}, @code{zip},
-@code{rar}, and @code{zoo}, which have extensions corresponding to the
-program names. Archive mode also works for those @code{exe} files
-that are self-extracting executables.
+ A separate but similar Archive mode is used for @code{arc},
+@code{jar}, @code{lzh}, @code{zip}, @code{rar}, @code{7z}, and
+@code{zoo} archives, as well as @code{exe} files that are
+self-extracting executables.
The key bindings of Archive mode are similar to those in Tar mode,
with 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
line. Operations such as renaming a subfile, or changing its mode or
owner, are supported only for some of the archive formats.
- Unlike Tar mode, Archive mode runs the archiving program to unpack
-and repack archives. Details of the program names and their options
-can be set in the @samp{Archive} Customize group. However, you don't
-need these programs to look at the archive table of contents, only to
-extract or manipulate the subfiles in the archive.
+ Unlike Tar mode, Archive mode runs the archiving programs to unpack
+and repack archives. However, you don't need these programs to look
+at the archive table of contents, only to extract or manipulate the
+subfiles in the archive. Details of the program names and their
+options can be set in the @samp{Archive} Customize group.
@node Remote Files
@section Remote Files
@@ -1748,16 +1702,14 @@ Emacs chooses the method as follows:
@enumerate
@item
-If the host name starts with @samp{ftp.} (with dot), then Emacs uses
-FTP.
+If the host name starts with @samp{ftp.} (with dot), Emacs uses FTP.
@item
-If the user name is @samp{ftp} or @samp{anonymous}, then Emacs uses
-FTP.
+If the user name is @samp{ftp} or @samp{anonymous}, Emacs uses FTP.
@item
If the variable @code{tramp-default-method} is set to @samp{ftp},
-then Emacs uses FTP.
+Emacs uses FTP.
@item
-If @command{ssh-agent} is running, then Emacs uses @command{scp}.
+If @command{ssh-agent} is running, Emacs uses @command{scp}.
@item
Otherwise, Emacs uses @command{ssh}.
@end enumerate
@@ -1769,32 +1721,31 @@ variable @code{tramp-mode} to @code{nil}. You can turn off the
feature in individual cases by quoting the file name with @samp{/:}
(@pxref{Quoted File Names}).
+@cindex ange-ftp
Remote file access through FTP is handled by the Ange-FTP package, which
is documented in the following. Remote file access through the other
methods is handled by the Tramp package, which has its own manual.
@xref{Top, The Tramp Manual,, tramp, The Tramp Manual}.
-When the Ange-FTP package is used, Emacs logs in through FTP using
-your user name or the name @var{user}. It may ask you for a password
-from time to time (@pxref{Passwords}); this is used for logging in on
-@var{host}. The form using @var{port} allows you to access servers
-running on a non-default TCP port.
+@vindex ange-ftp-default-user
+@cindex user name for remote file access
+ When the Ange-FTP package is used, Emacs logs in through FTP using
+the name @var{user}, if that is specified in the remote file name. If
+@var{user} is unspecified, Emacs logs in using your user name on the
+local system; but if you set the variable @code{ange-ftp-default-user}
+to a string, that string is used instead. When logging in, Emacs may
+also ask for a password.
@cindex backups for remote files
@vindex ange-ftp-make-backup-files
- If you want to disable backups for remote files, set the variable
-@code{ange-ftp-make-backup-files} to @code{nil}.
+ For performance reasons, Emacs does not make backup files for files
+accessed via FTP by default. To make it do so, change the variable
+@code{ange-ftp-make-backup-files} to a non-@code{nil} value.
- By default, the auto-save files (@pxref{Auto Save Files}) for remote
-files are made in the temporary file directory on the local machine.
-This is achieved using the variable @code{auto-save-file-name-transforms}.
-
-@cindex ange-ftp
-@vindex ange-ftp-default-user
-@cindex user name for remote file access
- Normally, if you do not specify a user name in a remote file name,
-that means to use your own user name. But if you set the variable
-@code{ange-ftp-default-user} to a string, that string is used instead.
+ By default, auto-save files for remote files are made in the
+temporary file directory on the local machine, as specified by the
+variable @code{auto-save-file-name-transforms}. @xref{Auto Save
+Files}.
@cindex anonymous FTP
@vindex ange-ftp-generate-anonymous-password
@@ -1950,10 +1901,10 @@ images as thumbnails.
@findex filesets-init
If you regularly edit a certain group of files, you can define them
as a @dfn{fileset}. This lets you perform certain operations, such as
-visiting, @code{query-replace}, and shell commands on all the files
-at once. To make use of filesets, you must first add the expression
-@code{(filesets-init)} to your @file{.emacs} file (@pxref{Init File}).
-This adds a @samp{Filesets} menu to the menu bar.
+visiting, @code{query-replace}, and shell commands on all the files at
+once. To make use of filesets, you must first add the expression
+@code{(filesets-init)} to your init file (@pxref{Init File}). This
+adds a @samp{Filesets} menu to the menu bar.
@findex filesets-add-buffer
@findex filesets-remove-buffer
@@ -1980,7 +1931,7 @@ files in a fileset, and @kbd{M-x filesets-close} to close them. Use
a fileset. These commands are also available from the @samp{Filesets}
menu, where each existing fileset is represented by a submenu.
- Emacs uses the concept of a fileset elsewhere @pxref{Version
-Control} to describe sets of files to be treated as a group for
-purposes of version control operations. Those filesets are unnamed
-and do not persist across Emacs sessions.
+ @xref{Version Control}, for a different concept of ``filesets'':
+groups of files bundled together for version control operations.
+Filesets of that type are unnamed, and do not persist across Emacs
+sessions.
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index 7a60510079..bae78d9474 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -7,17 +7,14 @@
@cindex typos, fixing
@cindex mistakes, correcting
- In this chapter we describe the commands that are especially useful
-when you catch a mistake in your text after you have made it, or
-change your mind while composing text on the fly.
-
- The most fundamental command for correcting erroneous editing is the
-undo command @kbd{C-/} (which is also bound to @kbd{C-x u} and
-@kbd{C-_}). This undoes a single command, or a part of a command (as
-in the case of @code{query-replace}), or several consecutive
-self-inserting characters. Consecutive repetitions of @kbd{C-/} undo
-earlier and earlier changes, back to the limit of the undo information
-available.
+ In this chapter we describe commands that are useful when you catch
+a mistake while editing. The most fundamental command for correcting
+erroneous editing is the undo command @kbd{C-/} (which is also bound
+to @kbd{C-x u} and @kbd{C-_}). This undoes a single command, or a
+part of a command (as in the case of @code{query-replace}), or several
+consecutive character insertions. Consecutive repetitions of
+@kbd{C-/} undo earlier and earlier changes, back to the limit of the
+undo information available.
Aside from the commands described here, you can erase text using
deletion commands such as @key{DEL} (@code{delete-backward-char}).
@@ -231,18 +228,19 @@ case-convert it and go on typing. @xref{Case}.@refill
This section describes the commands to check the spelling of a
single word or of a portion of a buffer. These commands only work if
the spelling checker program Aspell, Ispell or Hunspell is installed.
-Aspell, Ispell or Hunspell are not part of Emacs, but one or the other
-is usually installed in GNU/Linux and other free operating systems.
+These programs are not part of Emacs, but one of them is usually
+installed in GNU/Linux and other free operating systems.
@ifnottex
@xref{Top, Aspell,, aspell, The Aspell Manual}.
@end ifnottex
@table @kbd
@item M-$
-Check and correct spelling of the active region or the word at point
-(@code{ispell-word}).
+Check and correct spelling of the word at point (@code{ispell-word}).
+If the region is active, do it for all words in the region instead.
@item M-x ispell
-Check and correct spelling in the active region or the entire buffer.
+Check and correct spelling of all words in the buffer. If the region
+is active, do it for all words in the region instead.
@item M-x ispell-buffer
Check and correct spelling in the buffer.
@item M-x ispell-region
@@ -355,14 +353,13 @@ Show the list of options.
@end table
@findex ispell-complete-word
- In Text mode and related modes, the command @kbd{M-@key{TAB}}
-(@code{ispell-complete-word}) shows a list of completions based on
+ In Text mode and related modes, @kbd{M-@key{TAB}}
+(@code{ispell-complete-word}) performs in-buffer completion based on
spelling correction. Insert the beginning of a word, and then type
-@kbd{M-@key{TAB}}; the command displays a completion list window. (If
-your window manager intercepts @kbd{M-@key{TAB}}, type @kbd{@key{ESC}
-@key{TAB}} or @kbd{C-M-i}.) To choose one of the completions listed,
-click @kbd{Mouse-2} or @kbd{Mouse-1} fast on it, or move the cursor
-there in the completions window and type @key{RET}. @xref{Text Mode}.
+@kbd{M-@key{TAB}}; this shows shows a list of completions. (If your
+window manager intercepts @kbd{M-@key{TAB}}, type @kbd{@key{ESC}
+@key{TAB}} or @kbd{C-M-i}.) Each completion is listed with a digit or
+character; type that digit or character to choose it.
@cindex @code{ispell} program
@findex ispell-kill-ispell
@@ -370,29 +367,27 @@ there in the completions window and type @key{RET}. @xref{Text Mode}.
to run, waiting for something to do, so that subsequent spell checking
commands complete more quickly. If you want to get rid of the
process, use @kbd{M-x ispell-kill-ispell}. This is not usually
-necessary, since the process uses no time except when you do spelling
-correction.
+necessary, since the process uses no processor time except when you do
+spelling correction.
@vindex ispell-dictionary
@vindex ispell-local-dictionary
@vindex ispell-personal-dictionary
-@vindex ispell-complete-word-dict
- Ispell, Aspell and Hunspell use two dictionaries together for spell checking:
-the standard dictionary and your private dictionary. The standard
-dictionary is specified by @code{ispell-local-dictionary} or,
-if @code{nil}, by @code{ispell-dictionary}. If both are @code{nil}
-the default dictionary is selected. The command
-@kbd{M-x ispell-change-dictionary} sets the standard dictionary for
-the buffer and then restarts the subprocess, so that it will use a
-different standard dictionary. Personal dictionary is specified by
-@code{ispell-personal-dictionary}. If @code{nil}, default value is
-used.
-
- Set variable @code{ispell-dictionary} to select a specific default
-dictionary for all your documents. Set variable
-@code{ispell-local-dictionary} in the local variables section to
-select a specific dictionary for a given document.
+@findex ispell-change-dictionary
+ Ispell, Aspell and Hunspell look up spelling in two dictionaries:
+the standard dictionary and your personal dictionary. The standard
+dictionary is specified by the variable @code{ispell-local-dictionary}
+or, if that is @code{nil}, by the variable @code{ispell-dictionary}.
+If both are @code{nil}, the spelling program's default dictionary is
+used. The command @kbd{M-x ispell-change-dictionary} sets the
+standard dictionary for the buffer and then restarts the subprocess,
+so that it will use a different standard dictionary. Your personal
+dictionary is specified by the variable
+@code{ispell-personal-dictionary}. If that is @code{nil}, the
+spelling program looks for a personal dictionary in a default
+location.
+@vindex ispell-complete-word-dict
A separate dictionary is used for word completion. The variable
@code{ispell-complete-word-dict} specifies the file name of this
dictionary. The completion dictionary must be different because it
@@ -400,16 +395,14 @@ cannot use root and affix information. For some languages, there
is a spell checking dictionary but no word completion dictionary.
@cindex Flyspell mode
+@cindex mode, Flyspell
@findex flyspell-mode
-@findex turn-on-flyspell
- Flyspell mode is a fully-automatic way to check spelling as you edit
-in Emacs. It operates by checking words as you change or insert them.
-When it finds a word that it does not recognize, it highlights that
-word. This does not interfere with your editing, but when you see the
-highlighted word, you can move to it and fix it. Type @kbd{M-x
-flyspell-mode} to enable or disable this mode in the current buffer.
-To enable Flyspell mode in all text mode buffers, add
-@code{turn-on-flyspell} to @code{text-mode-hook}.
+ Flyspell mode is a minor mode that performs automatic spell checking
+as you type. When it finds a word that it does not recognize, it
+highlights that word. Type @kbd{M-x flyspell-mode} to toggle Flyspell
+mode in the current buffer. To enable Flyspell mode in all text mode
+buffers, add @code{flyspell-mode} to @code{text-mode-hook}.
+@xref{Hooks}.
When Flyspell mode highlights a word as misspelled, you can click on
it 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 ee41762412..e5853a17dd 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}.
Otherwise (and by default), the break comes before the delimiter.
To enable Auto Fill in all Fortran buffers, add
-@code{turn-on-auto-fill} to @code{fortran-mode-hook}.
+@code{auto-fill-mode} to @code{fortran-mode-hook}.
@iftex
@xref{Hooks,,, emacs, the Emacs Manual}.
@end iftex
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi
index 14fdb3121a..4c239d364f 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.
@item S-Mouse-1
This menu is for changing the default face within the window's buffer.
-@xref{Temporary Face Changes}.
+@xref{Text Scale}.
@end table
@node Mode Line Mouse
@@ -1185,6 +1185,13 @@ options for displaying tooltips, use @kbd{M-x customize-group
@key{RET} tooltip @key{RET}}. @xref{X Resources}, for information on
customizing the windows that display tooltips.
+@vindex x-gtk-use-system-tooltips
+ If Emacs is built with GTK support, it displays tooltips via GTK,
+using the default appearance of GTK tooltips. To disable this, change
+the variable @code{x-gtk-use-system-tooltips} to @code{nil}. If you
+do this, or if Emacs is built without GTK support, the @code{tooltip}
+face specifies most attributes of the tooltip text.
+
@node Mouse Avoidance
@section Mouse Avoidance
@cindex avoiding mouse in the way of your typing
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index a85edf101e..c024d42851 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.)
* Package Keywords:: Finding Lisp libraries by keywords (topics).
* Language Help:: Help relating to international language support.
* Misc Help:: Other help commands.
-* Help Files:: Commands to display auxilliary help files.
+* Help Files:: Commands to display auxiliary help files.
* Help Echo:: Help on active text and tooltips (`balloon help').
@end menu
diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi
index 8689e9c832..6237b00c2e 100644
--- a/doc/emacs/killing.texi
+++ b/doc/emacs/killing.texi
@@ -736,7 +736,7 @@ insert rectangles, and commands to make blank rectangles.
k} (@code{kill-rectangle}) to remove the text and and save it as the
@dfn{last killed rectangle}. In both cases, erasing the
region-rectangle is like erasing the specified text on each line of
-the rectange; if there is any following text on the line, it moves
+the rectangle; if there is any following text on the line, it moves
backwards to fill the gap.
``Killing'' a rectangle is not killing in the usual sense; the
diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi
index 85d92c9fcd..f4a5a2858c 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
instead). To discard the settings, create a new frame and close the
altered one.
- @key{S-Mouse-1} (i.e., clicking the left mouse button
-while holding down the @key{Shift} key) adjusts the region to the
-click position, just like @key{Mouse-3} (@code{mouse-save-then-kill});
-it does not pop up a menu for changing the default face, as
-@key{S-Mouse-1} normally does (@pxref{Temporary Face Changes}). This
-change makes Emacs behave more like other Mac / GNUstep applications.
+ @key{S-Mouse-1} (i.e., clicking the left mouse button while holding
+down the @key{Shift} key) adjusts the region to the click position,
+just like @key{Mouse-3} (@code{mouse-save-then-kill}); it does not pop
+up a menu for changing the default face, as @key{S-Mouse-1} normally
+does (@pxref{Text Scale}). This change makes Emacs behave more like
+other Mac / GNUstep applications.
When you open or save files using the menus, or using the
@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 dafc9327c7..354812edc1 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
numeric argument; then it reads the initial revision ID for this
particular file using the minibuffer.
-@vindex vc-initial-comment
- If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
-initial comment to describe the purpose of this source file. Reading
-the initial comment works like reading a log entry (@pxref{Log Buffer}).
+@c See http://debbugs.gnu.org/9745
+@c @vindex vc-initial-comment
+@c If @code{vc-initial-comment} is non-@code{nil}, @kbd{C-x v i} reads an
+@c initial comment to describe the purpose of this source file. Reading
+@c the initial comment works like reading a log entry (@pxref{Log Buffer}).
@node VC Change Log
@subsubsection VC Change Log
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index e84b4c9f08..bbe4255134 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -219,11 +219,11 @@ is sometimes available in ordinary buffers too. @xref{Symbol
Completion}.
@menu
-* Example: Completion Example. Examples of using completion.
-* Commands: Completion Commands. A list of completion commands.
-* Strict Completion:: Different types of completion.
-* Completion Styles:: How completion matches are chosen.
-* Options: Completion Options. Options for completion.
+* Completion Example:: Examples of using completion.
+* Completion Commands:: A list of completion commands.
+* Completion Exit:: Completion and minibuffer text submission.
+* Completion Styles:: How completion matches are chosen.
+* Completion Options:: Options for completion.
@end menu
@node Completion Example
@@ -274,7 +274,7 @@ Complete up to one word from the minibuffer text before point
arguments that often include spaces, such as file names.
@item @key{RET}
Submit the text in the minibuffer as the argument, possibly completing
-first (@code{minibuffer-complete-and-exit}). @xref{Strict Completion}.
+first (@code{minibuffer-complete-and-exit}). @xref{Completion Exit}.
@item ?
Display a list of completions (@code{minibuffer-completion-help}).
@end table
@@ -337,42 +337,68 @@ While in the completion list buffer, this moves point to the previous
completion alternative (@code{previous-completion}).
@end table
-@node Strict Completion
-@subsection Strict Completion
+@node Completion Exit
+@subsection Completion Exit
- There are three ways that the @key{RET}
-(@code{minibuffer-complete-and-exit}) completion command can act,
-depending on how the argument will be used.
+@kindex RET @r{(completion in minibuffer)}
+@findex minibuffer-complete-and-exit
+ When a command reads an argument using the minibuffer with
+completion, it also controls what happens when you type @key{RET}
+(@code{minibuffer-complete-and-exit}) to submit the argument. There
+are four types of behavior:
@itemize @bullet
@item
-@dfn{Strict} completion accepts only known completion candidates. For
-example, when @kbd{C-x k} reads the name of a buffer to kill, only the
-name of an existing buffer makes sense. In strict completion,
-@key{RET} refuses to exit if the text in the minibuffer does not
-complete to an exact match.
+@dfn{Strict completion} accepts only exact completion matches. Typing
+@key{RET} exits the minibuffer only if the minibuffer text is an exact
+match, or completes to one. Otherwise, Emacs refuses to exit the
+minibuffer; instead it tries to complete, and if no completion can be
+done it momentarily displays @samp{[No match]} after the minibuffer
+text. (You can still leave the minibuffer by typing @kbd{C-g} to
+cancel the command.)
+
+An example of a command that uses this behavior is @kbd{M-x}, since it
+is meaningless for it to accept a non-existent command name.
@item
-@dfn{Cautious} completion is similar to strict completion, except that
-@key{RET} exits only if the text is an already exact match.
-Otherwise, @key{RET} does not exit, but it does complete the text. If
-that completes to an exact match, a second @key{RET} will exit.
+@dfn{Cautious completion} is like strict completion, except @key{RET}
+exits only if the text is already an exact match. If the text
+completes to an exact match, @key{RET} performs that completion but
+does not exit yet; you must type a second @key{RET} to exit.
Cautious completion is used for reading file names for files that must
already exist, for example.
@item
-@dfn{Permissive} completion allows any input; the completion
-candidates are just suggestions. For example, when @kbd{C-x C-f}
-reads the name of a file to visit, any file name is allowed, including
-nonexistent file (in case you want to create a file). In permissive
-completion, @key{RET} does not complete, it just submits the argument
-as you have entered it.
-@end itemize
+@dfn{Permissive completion} allows any input; the completion
+candidates are just suggestions. Typing @key{RET} does not complete,
+it just submits the argument as you have entered it.
- Like the other completion commands, @key{RET} displays a list of all
-possible completions whenever it is supposed to complete but is unable
-to complete any further.
+@cindex minibuffer confirmation
+@cindex confirming in the minibuffer
+@item
+@dfn{Permissive completion with confirmation} is like permissive
+completion, with an exception: if you typed @key{TAB} and this
+completed the text up to some intermediate state (i.e. one that is not
+yet an exact completion match), typing @key{RET} right afterward does
+not submit the argument. Instead, Emacs asks for confirmation by
+momentarily displaying @samp{[Confirm]} after the text; type @key{RET}
+again to confirm and submit the text. This catches a common mistake,
+in which one types @key{RET} before realizing that @key{TAB} did not
+complete as far as desired.
+
+@vindex confirm-nonexistent-file-or-buffer
+You can tweak the confirmation behavior by customizing the variable
+@code{confirm-nonexistent-file-or-buffer}. The default value,
+@code{after-completion}, gives the behavior we have just described.
+If you change it to @code{nil}, Emacs does not ask for confirmation,
+falling back on permissive completion. If you change it to any other
+non-@code{nil} value, Emacs asks for confirmation whether or not the
+preceding command was @key{TAB}.
+
+This behavior is used by most commands that read file names, like
+@kbd{C-x C-f}, and commands that read buffer names, like @kbd{C-x b}.
+@end itemize
@node Completion Styles
@subsection How Completion Alternatives Are Chosen
diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi
index b894d01b9b..9e30b65728 100644
--- a/doc/emacs/rmail.texi
+++ b/doc/emacs/rmail.texi
@@ -1198,7 +1198,7 @@ Address mode:
@c FIXME goto-addr.el commentary says to use goto-address instead.
@smallexample
-(add-hook 'rmail-show-message-hook (lambda () (goto-address-mode 1)))
+(add-hook 'rmail-show-message-hook 'goto-address-mode)
@end smallexample
@noindent
diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi
index 14d4c67808..fcc31e3098 100644
--- a/doc/emacs/screen.texi
+++ b/doc/emacs/screen.texi
@@ -189,7 +189,7 @@ is sometimes useful to have this information.
@var{cs} describes the character set of the text in the buffer
(@pxref{Coding Systems}). If it is a dash (@samp{-}), that indicates
-no special character set handling (with the possible expection of
+no special character set handling (with the possible exception of
end-of-line conventions, described in the next paragraph). @samp{=}
means no conversion whatsoever, and is usually used for files
containing non-textual data. Other characters represent various
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index caf03291fb..31b5aa37f8 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -60,7 +60,6 @@ Incremental search backward (@code{isearch-backward}).
or else edit the search string.
* Isearch Scroll:: Scrolling during an incremental search.
* Isearch Minibuffer:: Incremental search of the minibuffer history.
-* Slow Isearch:: Incremental search features for slow terminals.
@end menu
@node Basic Isearch
@@ -167,23 +166,27 @@ going past the original starting point of the search, it changes to
you have already seen.
@cindex search ring
+@kindex M-n @r{(Incremental search)}
+@kindex M-p @r{(Incremental search)}
To reuse earlier search strings, use the @dfn{search ring}. The
commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a
search string to reuse. These commands leave the selected search ring
-element in the minibuffer, where you can edit it. To edit the current
-search string in the minibuffer without replacing it with items from
-the search ring, type @kbd{M-e}. Type @kbd{C-s} or @kbd{C-r} to
-terminate editing the string and search for it.
+element in the minibuffer, where you can edit it.
+
+@kindex M-e @r{(Incremental search)}
+ To edit the current search string in the minibuffer without
+replacing it with items from the search ring, type @kbd{M-e}. Type
+@kbd{C-s} or @kbd{C-r} to finish editing the string and search for it.
@node Error in Isearch
@subsection Errors in Incremental Search
If your string is not found at all, the echo area says @samp{Failing
-I-Search}. The cursor is after the place where Emacs found as much of
-your string as it could. Thus, if you search for @samp{FOOT}, and
-there is no @samp{FOOT}, you might see the cursor after the @samp{FOO}
-in @samp{FOOL}. In the echo area, the part of the search string that
-failed to match is highlighted using the customizable face
+I-Search}, and the cursor moves past the place where Emacs found as
+much of your string as it could. Thus, if you search for @samp{FOOT},
+and there is no @samp{FOOT}, you might see the cursor after the
+@samp{FOO} in @samp{FOOL}. In the echo area, the part of the search
+string that failed to match is highlighted using the face
@code{isearch-fail}.
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
entirely, returning point to where it was when the search started.
@cindex quitting (in search)
+@kindex C-g @r{(Incremental search)}
The quit command, @kbd{C-g}, does special things during searches;
just what it does depends on the status of the search. If the search
has found what you specified and is waiting for input, @kbd{C-g}
@@ -271,62 +275,70 @@ keybindings. These keybindings are part of the keymap
@node Isearch Yank
@subsection Isearch Yanking
+@kindex C-y @r{(Incremental search)}
+@kindex M-y @r{(Incremental search)}
+@findex isearch-yank-kill
+@findex isearch-yank-pop
Within incremental search, @kbd{C-y} (@code{isearch-yank-kill})
-copies text from the kill ring into the search string. It uses the
-same text that @kbd{C-y}, outside of incremental search, would
-normally yank into the buffer. @kbd{Mouse-2} in the echo area does
-the same. @xref{Yanking}.
-
- @kbd{C-w} (@code{isearch-yank-word-or-char}) grabs the next
-character or word at point, and adds it to the search string. This is
-convenient for searching for another occurrence of the text at point.
-(The decision, whether to copy a character or a word, is heuristic.)
-
- Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) grabs the rest
-of the current line, and adds it to the search string. If point is
-already at the end of a line, it grabs the entire next line.
+appends the current kill to the search string. @kbd{M-y}
+(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that
+appended text with an earlier kill, similar to the usual @kbd{M-y}
+(@code{yank-pop}) command (@pxref{Yanking}). @kbd{Mouse-2} appends
+the current X selection (@pxref{Primary Selection}).
+
+@kindex C-w @r{(Incremental search)}
+@findex isearch-yank-word-or-char
+ @kbd{C-w} (@code{isearch-yank-word-or-char}) appends the next
+character or word at point to the search string. This is an easy way
+to search for another occurrence of the text at point. (The decision
+of whether to copy a character or a word is heuristic.)
+
+@kindex M-s C-e @r{(Incremental search)}
+@findex isearch-yank-line
+ Similarly, @kbd{M-s C-e} (@code{isearch-yank-line}) appends the rest
+of the current line to the search string. If point is already at the
+end of a line, it appends the next line.
If the search is currently case-insensitive, both @kbd{C-w} and
@kbd{M-s C-e} convert the text they copy to lower case, so that the
search remains case-insensitive.
- @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one
-character at a time: @kbd{C-M-w} deletes the last character from the
-search string and @kbd{C-M-y} copies the character after point to the
-end of the search string. An alternative method to add the character
-after point into the search string is to enter the minibuffer by
-@kbd{M-e} and to type @kbd{C-f} at the end of the search string in the
-minibuffer.
+@kindex C-M-w @r{(Incremental search)}
+@kindex C-M-y @r{(Incremental search)}
+@findex isearch-del-char
+@findex isearch-yank-char
+ @kbd{C-M-w} (@code{isearch-del-char}) deletes the last character
+from the search string, and @kbd{C-M-y} (@code{isearch-yank-char})
+appends the character after point to the the search string. An
+alternative method to add the character after point is to enter the
+minibuffer with @kbd{M-e} (@pxref{Repeat Isearch}) and type @kbd{C-f}
+at the end of the search string in the minibuffer.
@node Isearch Scroll
@subsection Scrolling During Incremental Search
@vindex isearch-allow-scroll
- You can enable the use of vertical scrolling during incremental
-search (without exiting the search) by setting the customizable
-variable @code{isearch-allow-scroll} to a non-@code{nil} value. This
-applies to using the vertical scroll-bar and to certain keyboard
-commands such as @code{scroll-down-command}, @code{scroll-up-command}
-and @code{recenter} (@pxref{Scrolling}). You must run these commands
-via their key sequences to stay in the search---typing @kbd{M-x} will
-terminate the search. You can give prefix arguments to these commands
-in the usual way.
-
- This feature won't let you scroll the current match out of visibility,
-however.
-
- The feature also affects some other commands, such as @kbd{C-x 2}
-(@code{split-window-vertically}) and @kbd{C-x ^}
-(@code{enlarge-window}) which don't exactly scroll but do affect where
-the text appears on the screen. In general, it applies to any command
-whose name has a non-@code{nil} @code{isearch-scroll} property. So you
-can control which commands are affected by changing these properties.
+ Normally, scrolling commands exit incremental search. If you change
+the variable @code{isearch-allow-scroll} to a non-@code{nil} value,
+that enables the use of the scroll-bar, as well as keyboard scrolling
+commands like @kbd{C-v}, @kbd{M-v}, and @kbd{C-l} (@pxref{Scrolling}).
+This applies only to calling these commands via their bound key
+sequences---typing @kbd{M-x} will still exit the search. You can give
+prefix arguments to these commands in the usual way. This feature
+won't let you scroll the current match out of visibility, however.
+
+ The @code{isearch-allow-scroll} feature also affects some other
+commands, such as @kbd{C-x 2} (@code{split-window-vertically}) and
+@kbd{C-x ^} (@code{enlarge-window}), which don't exactly scroll but do
+affect where the text appears on the screen. It applies to any
+command whose name has a non-@code{nil} @code{isearch-scroll}
+property. So you can control which commands are affected by changing
+these properties.
For example, to make @kbd{C-h l} usable within an incremental search
in all future Emacs sessions, use @kbd{C-h c} to find what command it
-runs. (You type @kbd{C-h c C-h l}; it says @code{view-lossage}.)
-Then you can put the following line in your @file{.emacs} file
-(@pxref{Init File}):
+runs (@pxref{Key Help}), which is @code{view-lossage}. Then you can
+put the following line in your init file (@pxref{Init File}):
@example
(put 'view-lossage 'isearch-scroll t)
@@ -359,33 +371,9 @@ wrap around, going from the last page to the first page or vice versa.
When the current match is on a history element, that history element
is pulled into the minibuffer. If you exit the incremental search
normally (e.g. by typing @key{RET}), it remains in the minibuffer
-afterwards. Cancelling the search, with @kbd{C-g}, restores the
+afterwards. Canceling the search, with @kbd{C-g}, restores the
contents of the minibuffer when you began the search.
-@node Slow Isearch
-@subsection Slow Terminal Incremental Search
-
- Incremental search on a slow terminal uses a modified style of display
-that is designed to take less time. Instead of redisplaying the buffer at
-each place the search gets to, it creates a new single-line window and uses
-that to display the line that the search has found. The single-line window
-comes into play as soon as point moves outside of the text that is already
-on the screen.
-
- When you terminate the search, the single-line window is removed.
-Emacs then redisplays the window in which the search was done, to show
-its new position of point.
-
-@vindex search-slow-speed
- The slow terminal style of display is used when the terminal baud rate is
-less than or equal to the value of the variable @code{search-slow-speed},
-initially 1200. See also the discussion of the variable @code{baud-rate}
-(@pxref{baud-rate,, Customization of Display}).
-
-@vindex search-slow-window-lines
- The number of lines to use in slow terminal search display is controlled
-by the variable @code{search-slow-window-lines}. Its normal value is 1.
-
@node Nonincremental Search
@section Nonincremental Search
@cindex nonincremental search
@@ -405,18 +393,14 @@ This enters the minibuffer to read the search string; terminate the
string with @key{RET}, and then the search takes place. If the string
is not found, the search command signals an error.
- When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental
-search as usual. That command is specially programmed to invoke
-nonincremental search, @code{search-forward}, if the string you
-specify is empty. (Such an empty argument would otherwise be
-useless.) @kbd{C-r @key{RET}} does likewise, for a reverse
-incremental search.
-
@findex search-forward
@findex search-backward
- Forward and backward nonincremental searches are implemented by the
-commands @code{search-forward} and @code{search-backward}. These
-commands may be bound to other keys in the usual manner.
+ When you type @kbd{C-s @key{RET}}, the @kbd{C-s} invokes incremental
+search as usual. That command is specially programmed to invoke the
+command for nonincremental search, @code{search-forward}, if the
+string you specify is empty. (Such an empty argument would otherwise
+be useless.) @kbd{C-r @key{RET}} does likewise, invoking the command
+@code{search-backward}.
@node Word Search
@section Word Search
@@ -476,7 +460,7 @@ apply to the lazy highlight, which always matches whole words.
that denotes a class of alternative strings to match. GNU Emacs
provides both incremental and nonincremental ways to search for a
match for a regexp. The syntax of regular expressions is explained in
-the following section.
+the next section.
@table @kbd
@item C-M-s
@@ -531,7 +515,7 @@ starting position. These search methods are not mirror images.
@findex re-search-forward
@findex re-search-backward
- Nonincremental search for a regexp is done by the functions
+ Nonincremental search for a regexp is done with the commands
@code{re-search-forward} and @code{re-search-backward}. You can
invoke these with @kbd{M-x}, or by way of incremental regexp search
with @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.
Searches in Emacs normally ignore the case of the text they are
searching through, if you specify the text in lower case. Thus, if
you specify searching for @samp{foo}, then @samp{Foo} and @samp{foo}
-are also considered a match. Regexps, and in particular character
-sets, are included: @samp{[ab]} would match @samp{a} or @samp{A} or
-@samp{b} or @samp{B}.@refill
+also match. Regexps, and in particular character sets, behave
+likewise: @samp{[ab]} matches @samp{a} or @samp{A} or @samp{b} or
+@samp{B}.@refill
An upper-case letter anywhere in the incremental search string makes
the 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
each occurrence of the pattern and asks you whether to replace it.
The replace commands normally operate on the text from point to the
-end of the buffer. When the mark is active, they operate on the
-region instead (@pxref{Mark}). The basic replace commands replace one
+end of the buffer. When the region is active, they operate on it
+instead (@pxref{Mark}). The basic replace commands replace one
@dfn{search string} (or regexp) with one @dfn{replacement string}. It
is possible to perform several replacements in parallel, using the
command @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.
@xref{Mark Ring}.
A prefix argument restricts replacement to matches that are
-surrounded by word boundaries. The argument's value doesn't matter.
+surrounded by word boundaries.
@xref{Replacement and Case}, for details about case-sensitivity in
replace commands.
@@ -1153,10 +1137,8 @@ replacement is done without case conversion.
@table @kbd
@item M-% @var{string} @key{RET} @var{newstring} @key{RET}
-@itemx M-x query-replace @key{RET} @var{string} @key{RET} @var{newstring} @key{RET}
Replace some occurrences of @var{string} with @var{newstring}.
@item C-M-% @var{regexp} @key{RET} @var{newstring} @key{RET}
-@itemx M-x query-replace-regexp @key{RET} @var{regexp} @key{RET} @var{newstring} @key{RET}
Replace some matches for @var{regexp} with @var{newstring}.
@end table
@@ -1169,7 +1151,7 @@ occurrence and asks you whether to replace it. Aside from querying,
@code{query-replace} works just like @code{replace-string}
(@pxref{Unconditional Replace}). In particular, it preserves case
provided @code{case-replace} is non-@code{nil}, as it normally is
-(@pxref{Replacement and Case}). A numeric argument means consider
+(@pxref{Replacement and Case}). A numeric argument means to consider
only occurrences that are bounded by word-delimiter characters.
@kindex C-M-%
@@ -1182,7 +1164,7 @@ like @code{query-replace}.
These commands highlight the current match using the face
@code{query-replace}. They highlight other matches using
@code{lazy-highlight} just like incremental search (@pxref{Incremental
-Search}). By default, @code{query-replace-regexp} will show
+Search}). By default, @code{query-replace-regexp} will show the
substituted replacement string for the current match in the
minibuffer. If you want to keep special sequences @samp{\&} and
@samp{\@var{n}} unexpanded, customize
@@ -1315,6 +1297,8 @@ matching that regexp.
This command is just like @code{multi-isearch-buffers}, except it
performs an incremental regexp search.
+@cindex Occur mode
+@cindex mode, Occur
@item M-x occur
Prompt for a regexp, and display a list showing each line in the
buffer that contains a match for it. To limit the search to part of
@@ -1325,16 +1309,22 @@ displayed before and after each matching line.
@kindex RET @r{(Occur mode)}
@kindex o @r{(Occur mode)}
@kindex C-o @r{(Occur mode)}
-The buffer @samp{*Occur*} containing the output serves as a menu for
-finding the occurrences in their original context. Click
-@kbd{Mouse-2} on an occurrence listed in @samp{*Occur*}, or position
-point there and type @key{RET}; this switches to the buffer that was
-searched and moves point to the original of the chosen occurrence.
-@kbd{o} and @kbd{C-o} display the match in another window; @kbd{C-o}
-does not select it.
-
-After using @kbd{M-x occur}, you can use @code{next-error} to visit
-the occurrences found, one by one. @ref{Compilation Mode}.
+In the @samp{*Occur*} buffer, you can click on each entry, or move
+point there and type @key{RET}, to visit the corresponding position in
+the buffer that was searched. @kbd{o} and @kbd{C-o} display the match
+in another window; @kbd{C-o} does not select it. Alternatively, you
+can use the @kbd{C-x `} (@code{next-error}) command to visit the
+occurrences one by one (@pxref{Compilation Mode}).
+
+@cindex Occur Edit mode
+@cindex mode, Occur Edit
+Typing @kbd{e} in the @samp{*Occur*} buffer switches to Occur Edit
+mode, in which edits made to the entries are also applied to the text
+in the originating buffer. Type @kbd{C-c C-c} to return to Occur
+mode.
+
+The command @kbd{M-x list-matching-lines} is a synonym for @kbd{M-x
+occur}.
@kindex M-s o
@item M-s o
@@ -1342,9 +1332,6 @@ Run @code{occur} using the search string of the last incremental
string search. You can also run @kbd{M-s o} when an incremental
search is active; this uses the current search string.
-@item M-x list-matching-lines
-Synonym for @kbd{M-x occur}.
-
@item M-x multi-occur
This command is just like @code{occur}, except it is able to search
through multiple buffers. It asks you to specify the buffer names one
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index dc92e4a519..600d0b0781 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -343,8 +343,8 @@ details.
additionally select the displaying window so that you can begin
editing its buffer. The command @kbd{C-x `} (@code{next-error}) is
one example (@pxref{Compilation Mode}). Such commands work by calling
-@code{pop-to-buffer} internally. @xref{Displaying Buffers,,Displaying
-Buffers in Windows, elisp, The Emacs Lisp Reference Manual}.
+@code{pop-to-buffer} internally. @xref{Switching Buffers,,Switching
+to a Buffer in a Window, elisp, The Emacs Lisp Reference Manual}.
Commands with names ending in @code{-other-window} behave like
@code{display-buffer}, except that they never display in the selected
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 345e69e698..490280dae2 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * display.texi (Glyphless Chars): New node.
+
2011-10-13 Chong Yidong <cyd@stupidchicken.com>
* text.texi (Yanking): Document yank-excluded-properties.
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 18cb93557e..034d92f78c 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -36,6 +36,7 @@ that Emacs presents to the user.
* Window Systems:: Which window system is being used.
* Bidirectional Display:: Display of bidirectional scripts, such as
Arabic and Farsi.
+* Glyphless Chars:: How glyphless characters are drawn.
@end menu
@node Refresh Screen
@@ -6242,3 +6243,96 @@ affect all Emacs frames and windows.
appropriate mirrored character in the reordered text. Lisp programs
can affect the mirrored display by changing this property. Again, any
such changes affect all of Emacs display.
+
+@node Glyphless Chars
+@section Glyphless Character Display
+@cindex glyphless characters
+
+ @dfn{Glyphless characters} are not displayed in the usual way when
+they appear in a buffer, but in some special way (e.g. as a box
+containing a hexadecimal code). These include characters that cannot
+be displayed with any available font (on a graphical display), or that
+cannot be encoded by the terminal's coding system (on a text-only
+terminal). Specific characters can also be defined to be glyphless.
+
+@defvar glyphless-char-display
+The value of this variable is a char-table that defines glyphless
+characters and how they are displayed. If an entry is @code{nil}, the
+corresponding character is displayed in its usual way. Otherwise, an
+entry should be one of the following display methods:
+
+@table @asis
+@item @code{zero-width}
+Don't display the character.
+
+@item @code{thin-space}
+Display a thin space, 1-pixel wide on graphical displays, or
+1-character wide on text-only terminals.
+
+@item @code{empty-box}
+Display an empty box.
+
+@item @code{hex-code}
+Display a box containing the Unicode codepoint of the character, in
+hexadecimal notation.
+
+@item an @acronym{ASCII} string
+Display a box containing that string.
+@end table
+
+@noindent
+Except for @code{zero-width}, these methods display using the
+@code{glyphless-char} face.
+
+An entry can also be a cons cell @code{(@var{graphical}
+. @var{text})}, where @var{graphical} and @var{text} are the display
+methods on graphical displays and text-only terminals respectively.
+
+The char-table has one extra slot, which determines how to display any
+character that cannot be displayed with any available font, or cannot
+be encoded by the terminal's coding system. Its value should be one
+of the above display methods, except @code{zero-width} or a cons cell.
+@end defvar
+
+@defopt glyphless-char-display-control
+This user option provides a convenient way to set
+@code{glyphless-char-display} for groups of similar characters. It
+takes effect via a custom @code{:set} function (@pxref{Variable
+Definitions}), which update @code{glyphless-char-display}.
+
+Its value should be an alist of elements @code{(@var{group}
+. @var{method})}, where @var{group} is a symbol specifying a group of
+characters, and @var{method} is a symbol specifying how to display
+them.
+
+@var{group} should be one of the following:
+
+@table @code
+@item c0-control
+@acronym{ASCII} control characters @code{U+0000} to @code{U+001F},
+excluding the newline and tab characters (normally displayed as escape
+sequences like @samp{^A}; @pxref{Text Display,, How Text Is Displayed,
+emacs, The GNU Emacs Manual}).
+
+@item c1-control
+Non-@acronym{ASCII}, non-printing characters @code{U+0080} to
+@code{U+009F} (normally displayed as octal escape sequences like
+@samp{\230}).
+
+@item format-control
+Characters of Unicode General Category `Cf', such as @samp{U+200E}
+(Left-to-Right Mark), but excluding characters that have graphic
+images, such as @samp{U+00AD} (Soft Hyphen).
+
+@item no-font
+Characters for there is no suitable font, or which cannot be encoded
+by the terminal's coding system.
+@end table
+
+@c FIXME: this can also be `acronym', but that's not currently
+@c completely implemented; it applies only to the format-control
+@c group, and only works if the acronym is in `char-acronym-table'.
+The @var{method} symbol should be one of @code{zero-width},
+@code{thin-space}, @code{empty-box}, or @code{hex-code}. These have
+the same meanings as in @code{glyphless-char-display}, above.
+@end defopt
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index 8350c9b708..cefa917a4e 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -1278,6 +1278,9 @@ Emacs Display
* Display Tables:: How to specify other conventions.
* Beeping:: Audible signal to the user.
* Window Systems:: Which window system is being used.
+* Bidirectional Display:: Display of bidirectional scripts, such as
+ Arabic and Farsi.
+* Glyphless Chars:: How glyphless characters are drawn.
The Echo Area
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 0fa23d6412..914ba5b1fd 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -1299,6 +1299,9 @@ Emacs Display
* Display Tables:: How to specify other conventions.
* Beeping:: Audible signal to the user.
* Window Systems:: Which window system is being used.
+* Bidirectional Display:: Display of bidirectional scripts, such as
+ Arabic and Farsi.
+* Glyphless Chars:: How glyphless characters are drawn.
The Echo Area
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 2469a74290..1f84b267c9 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -1298,6 +1298,9 @@ Emacs Display
* Display Tables:: How to specify other conventions.
* Beeping:: Audible signal to the user.
* Window Systems:: Which window system is being used.
+* Bidirectional Display:: Display of bidirectional scripts, such as
+ Arabic and Farsi.
+* Glyphless Chars:: How glyphless characters are drawn.
The Echo Area
diff --git a/etc/NEWS b/etc/NEWS
index d8d0741f92..68e5720330 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -51,6 +51,8 @@ This is not a new feature; only the configure flag is new.
---
** There is a new configure option --with-wide-int.
With it, Emacs integers typically have 62 bits, even on 32-bit machines.
+On 32-bit hosts, this raises the limit on buffer sizes from about 512 MiB
+to about 2 GiB.
---
** New translation of the Emacs Tutorial in Hebrew is available.
@@ -107,9 +109,9 @@ and pops down the *Completions* buffer accordingly.
*** Completion can cycle, depending on completion-cycle-threshold.
+++
*** New completion style `substring'.
-
++++
*** Completion style can be set per-category `completion-category-overrides'.
-
++++
*** Completion of buffers now uses substring completion by default.
** Mail changes
@@ -223,6 +225,10 @@ cannot be encoded by the `terminal-coding-system'.
---
*** New input methods for Farsi: farsi and farsi-translit.
++++
+*** `nobreak-char-display' now also highlights Unicode hyphen chars
+(U+2010 and U+2011).
+
** Improved GTK integration
*** GTK scroll-bars are now placed on the right by default.
@@ -236,10 +242,10 @@ is taken from the desktop settings.
The frame-parameter tool-bar-position controls this. It takes the values
top, left, right or bottom. The Options => Show/Hide menu has entries
for this.
-
-*** The colors for selected text (the region face) are taken from the GTK
-theme when Emacs is built with GTK.
-
++++
+*** The colors for selected text (the `region' face) are taken from
+the GTK theme when Emacs is built with GTK.
++++
*** Emacs uses GTK tooltips by default if built with GTK. You can turn that
off by customizing x-gtk-use-system-tooltips.
@@ -266,7 +272,7 @@ context in their return values.
*** The new functions file-selinux-context and set-file-selinux-context
get and set the SELinux context of a file.
-
+---
*** Tramp offers handlers for file-selinux-context and set-file-selinux-context
for remote machines which support SELinux.
@@ -442,7 +448,7 @@ pops up *Messages*" feature, which can now easily be changed.
+++
*** C-y in Isearch is now bound to isearch-yank-kill, instead of
isearch-yank-line.
----
++++
*** M-y in Isearch is now bound to isearch-yank-pop, instead of
isearch-yank-kill.
+++
@@ -454,6 +460,7 @@ isearch-yank-kill.
*** `count-lines-region' is now an alias for `count-words-region',
bound to M-=, which shows the number of lines, words, and characters.
++++
** The default value of `backup-by-copying-when-mismatch' is now t.
+++
@@ -554,6 +561,7 @@ updates later on, and Emacs appears to be unable to keep up.
* Changes in Specialized Modes and Packages in Emacs 24.1
++++
** Archive Mode has basic support for browsing and updating 7z archives.
** browse-url has a new variable `browse-url-mailto-function'
@@ -798,12 +806,12 @@ additional details about each column.
*** latex-electric-env-pair-mode keeps \begin..\end matched on the fly.
** Tramp
-
+---
*** There exists a new inline access method "ksu" (kerberized su).
-
+---
*** The following access methods are discontinued: "ssh1_old",
"ssh2_old", "scp1_old", "scp2_old", "imap", "imaps" and "fish".
-
+---
*** The option `ange-ftp-binary-file-name-regexp' has changed its
default value to "".
@@ -844,6 +852,15 @@ binding `log-view-expanded-log-entry-function' to a suitable function.
*** New command `vc-ediff' allows visual comparison of two revisions
of a file similar to `vc-diff', but using ediff backend.
++++
+*** The option `vc-initial-comment' was removed in Emacs 23.2, but
+this was not advertised at the time.
+
++++
+*** `vc-toggle-read-only' is an obsolete alias for `toggle-read-only'.
+Since Emacs 23, it has done the same thing as `toggle-read-only', but
+this was not advertised at the time.
+
** FIXME: xdg-open for browse-url and reportbug, 2010/08.
** Obsolete modes
@@ -873,6 +890,7 @@ They are superseded by shift-select-mode enabled by default in 23.1.
* New Modes and Packages in Emacs 24.1
++++
** Occur Edit mode applies edits made in *Occur* buffers to the
original buffers. It is bound to "e" in Occur mode.
@@ -1146,6 +1164,7 @@ combined with minibuffer-local-must-match-map.
*** New variable `completing-read-function' allows overriding the
behavior of `completing-read'.
++++
** `glyphless-char-display' can now distinguish between graphical and
text terminal display, via a char-table entry that is a cons cell.
@@ -1311,6 +1330,8 @@ Use `filter-buffer-substring-functions' instead.
*** `byte-compile-disable-print-circle' is obsolete.
*** `deferred-action-list' and `deferred-action-function' are obsolete.
++++
+*** `font-lock-maximum-size' is obsolete.
* Changes in Emacs 24.1 on non-free operating systems
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 9e473156a7..e85972f0bf 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -171,6 +171,14 @@ optimization. To do this, configure Emacs with
CFLAGS="-g -O2 -fno-optimize-sibling-calls" ./configure
+** Emacs compiled with GCC 4.6.1 crashes on MS-Windows when C-g is pressed
+
+This is known to happen when Emacs is compiled with MinGW GCC 4.6.1
+with the -O2 option (which is the default in the Windows build). The
+reason is a bug in MinGW GCC 4.6.1; to work around, either add the
+`-fno-omit-frame-pointer' switch to GCC or compile without
+optimizations (`--no-opt' switch to the configure.bat script).
+
** Emacs crashes in x-popup-dialog.
This 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 5c93e84d07..0fbd949696 100644
--- a/etc/themes/deeper-blue-theme.el
+++ b/etc/themes/deeper-blue-theme.el
@@ -37,7 +37,7 @@
`(compilation-line-number ((,class (:foreground "LightGreen"))))
`(cperl-array-face ((,class (:foreground "yellow2"))))
`(cperl-hash-face ((,class (:foreground "coral1"))))
- `(cursor ((,class (:background "green" :foreground "black"))))
+ `(cursor ((,class (:background "green"))))
`(default ((,class (:background "#181a26" :foreground "gray80"))))
`(diff-added ((,class (nil))))
`(diff-changed ((,class (nil))))
diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el
index 3c260118b2..80215e564f 100644
--- a/etc/themes/dichromacy-theme.el
+++ b/etc/themes/dichromacy-theme.el
@@ -42,7 +42,7 @@ Ansi-Color faces are included.")
(custom-theme-set-faces
'dichromacy
`(default ((,class (:foreground "black" :background "white"))))
- `(cursor ((,class (:foreground "white" :background "black"))))
+ `(cursor ((,class (:background "black"))))
;; Highlighting faces
`(fringe ((,class (:background "#f7f7f7"))))
`(highlight ((,class (:foreground ,blue :background "#e5e5e5"))))
diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el
index ab4b2bc619..6e38a43a4f 100644
--- a/etc/themes/misterioso-theme.el
+++ b/etc/themes/misterioso-theme.el
@@ -33,7 +33,7 @@
(:background "#2d3743" :foreground "#e1e1e0"))
(,class
(:background "#3a3a3a" :foreground "#e1e1e0"))))
- `(cursor ((,class (:background "#415160" :foreground "#415160"))))
+ `(cursor ((,class (:background "#415160"))))
;; Highlighting faces
`(fringe ((,class (:background "#2e3748"))))
`(highlight ((,class (:background "#338f86" :foreground "#e1e1e0"))))
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index 8f91d35e6a..ae45966b34 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.")
(:foreground ,alum-1 :background "#222"))
(,class
(:foreground ,alum-1 :background "black"))))
- `(cursor ((,class (:foreground ,alum-6 :background ,butter-1))))
+ `(cursor ((,class (:background ,butter-1))))
;; Highlighting faces
`(fringe ((,class (:background ,alum-7))))
`(highlight ((,class (:foreground ,alum-6 :background ,butter-2))))
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index f504d76427..b46bd677f2 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -49,7 +49,7 @@ Semantic, and Ansi-Color faces are included.")
(custom-theme-set-faces
'tango
`(default ((,class (:foreground ,alum-6 :background ,alum-1))))
- `(cursor ((,class (:foreground ,alum-1 :background ,blue-3))))
+ `(cursor ((,class (:background ,blue-3))))
;; Highlighting faces
`(fringe ((,class (:background ,alum-2))))
`(highlight ((,class (:background ,alum-3))))
diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el
index 63ebc247b9..50db2661a9 100644
--- a/etc/themes/wheatgrass-theme.el
+++ b/etc/themes/wheatgrass-theme.el
@@ -29,7 +29,7 @@ of green, brown, and blue.")
(custom-theme-set-faces
'wheatgrass
`(default ((,class (:foreground "wheat" :background "black"))))
- `(cursor ((,class (:foreground "black" :background "thistle"))))
+ `(cursor ((,class (:background "thistle"))))
`(error ((,class (:foreground "salmon1"))))
`(warning ((,class (:foreground "orange"))))
`(success ((,class (:foreground "yellow green"))))
diff --git a/etc/themes/whiteboard-theme.el b/etc/themes/whiteboard-theme.el
index e0fa7ff7ff..e5c808df68 100644
--- a/etc/themes/whiteboard-theme.el
+++ b/etc/themes/whiteboard-theme.el
@@ -38,7 +38,7 @@
`(cperl-array-face ((,class (:foreground "SlateBlue3"))))
`(cperl-hash-face ((,class (:foreground "turquoise3"))))
`(cperl-nonoverridable-face ((,class (:foreground "orchid3"))))
- `(cursor ((,class (:background "Green4" :foreground "gainsboro"))))
+ `(cursor ((,class (:background "Green4"))))
`(default ((,class (:background "whitesmoke" :foreground "black"))))
`(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
`(flymake-errline ((,class (:background nil :underline "red"))))
diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el
index 2aa64f894b..6691b4a401 100644
--- a/etc/themes/wombat-theme.el
+++ b/etc/themes/wombat-theme.el
@@ -31,7 +31,7 @@ are included.")
(custom-theme-set-faces
'wombat
`(default ((,class (:background "#242424" :foreground "#f6f3e8"))))
- `(cursor ((,class (:background "#656565" :foreground "#f6f3e8"))))
+ `(cursor ((,class (:background "#656565"))))
;; Highlighting faces
`(fringe ((,class (:background "#303030"))))
`(highlight ((,class (:background "#454545" :foreground "#ffffff"
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index abae693d0c..09e2e7dc1d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,278 @@
+2011-10-23 Chong Yidong <cyd@gnu.org>
+
+ * files.el (toggle-read-only): Remove obsolete comment about
+ version control.
+
+ * vc/vc-hooks.el (vc-toggle-read-only): Make it an obsolete alias
+ for toggle-read-only. Note that this hasn't called vc-next-action
+ since 2008-05-02, though it wasn't documented at the time.
+
+ * vc/ediff-init.el (ediff-toggle-read-only-function): Use
+ toggle-read-only.
+
+2011-10-22 Alan Mackenzie <bug-cc-mode@gnu.org>
+
+ Fix bug #9560, sporadic wrong indentation; improve instrumentation
+ of c-parse-state.
+
+ * cc-engine.el (c-append-lower-brace-pair-to-state-cache): correct
+ faulty logical expression.
+ (c-parse-state-state, c-record-parse-state-state):
+ (c-replay-parse-state-state): New defvar/defuns.
+ (c-debug-parse-state): Use new functions.
+
+2011-10-22 Martin Rudalics <rudalics@gmx.at>
+
+ * mouse.el (mouse-drag-line): Fix minibuffer resizing broken by
+ last fix. Use window-in-direction correctly.
+
+2011-10-21 Chong Yidong <cyd@gnu.org>
+
+ * progmodes/idlwave.el (idlwave-mode):
+ * progmodes/vera-mode.el (vera-mode): No need to set
+ require-final-newline; that's done in prog-mode. Suggested by
+ Stefan Monnier.
+
+2011-10-21 Martin Rudalics <rudalics@gmx.at>
+
+ * mouse.el (mouse-drag-window-above)
+ (mouse-drag-move-window-bottom, mouse-drag-move-window-top)
+ (mouse-drag-mode-line-1, mouse-drag-header-line)
+ (mouse-drag-vertical-line-rightward-window): Remove.
+ (mouse-drag-line): New function.
+ (mouse-drag-mode-line, mouse-drag-header-line)
+ (mouse-drag-vertical-line): Call mouse-drag-line.
+ * window.el (window-at-side-p, windows-at-side): New functions.
+
+2011-10-21 Ulrich Mueller <ulm@gentoo.org>
+
+ * tar-mode.el (tar-grind-file-mode):
+ Fix handling of setuid/setgid, handle sticky bit. (Bug#9817)
+
+2011-10-21 Chong Yidong <cyd@gnu.org>
+
+ * progmodes/idlwave.el (idlwave-mode):
+ * progmodes/vera-mode.el (vera-mode): Use
+ mode-require-final-newline.
+
+2011-10-20 Glenn Morris <rgm@gnu.org>
+
+ * vc/vc.el (vc-next-action): Handle removed directories. (Bug#9781)
+
+2011-10-20 Christoph Scholtes <cschol2112@googlemail.com>
+
+ * emulation/cua-base.el (cua-set-mark): Fix case of string.
+
+2011-10-20 Chong Yidong <cyd@gnu.org>
+
+ * emulation/cua-base.el (cua-mode):
+ * mail/footnote.el (footnote-mode):
+ * mail/mailabbrev.el (mail-abbrevs-mode):
+ * net/xesam.el (xesam-minor-mode):
+ * progmodes/bug-reference.el (bug-reference-mode):
+ * progmodes/cap-words.el (capitalized-words-mode):
+ * progmodes/compile.el (compilation-minor-mode)
+ (compilation-shell-minor-mode):
+ * progmodes/gud.el (gud-tooltip-mode):
+ * progmodes/hideif.el (hide-ifdef-mode):
+ * progmodes/idlw-shell.el (idlwave-shell-electric-debug-mode):
+ * progmodes/subword.el (subword-mode):
+ * progmodes/vhdl-mode.el (vhdl-electric-mode, vhdl-stutter-mode):
+ * progmodes/which-func.el (which-function-mode):
+ * term/tvi970.el (tvi970-set-keypad-mode):
+ * term/vt100.el (vt100-wide-mode):
+ * textmodes/flyspell.el (flyspell-mode):
+ * textmodes/ispell.el (ispell-minor-mode):
+ * textmodes/nroff-mode.el (nroff-electric-mode):
+ * textmodes/paragraphs.el (use-hard-newlines):
+ * textmodes/refill.el (refill-mode):
+ * textmodes/reftex.el (reftex-mode):
+ * textmodes/rst.el (rst-minor-mode):
+ * textmodes/sgml-mode.el (html-autoview-mode)
+ (sgml-electric-tag-pair-mode):
+ * textmodes/tex-mode.el (latex-electric-env-pair-mode):
+ * vc/diff-mode.el (diff-auto-refine-mode, diff-minor-mode):
+ * emulation/crisp.el (crisp-mode):
+ * emacs-lisp/eldoc.el (eldoc-mode):
+ * emacs-lisp/checkdoc.el (checkdoc-minor-mode): Doc fixes for new
+ minor mode behavior.
+
+2011-10-19 Juri Linkov <juri@jurta.org>
+
+ * descr-text.el (describe-char): Add #x2010 and #x2011 to
+ the list of hard-coded chars with escape-glyph face.
+
+2011-10-19 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc/log-edit.el (log-edit-empty-buffer-p): Ignore empty headers.
+
+2011-10-19 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-connectable-p): Make a stronger check on a
+ running process.
+
+2011-10-19 Glenn Morris <rgm@gnu.org>
+
+ * vc/vc-bzr.el (vc-bzr-after-dir-status):
+ Ignore ignored files. (Bug#9726)
+
+2011-10-19 Chong Yidong <cyd@gnu.org>
+
+ Doc fix for minor modes, stating that an omitted argument enables
+ the mode unconditionally when called from Lisp.
+
+ * abbrev.el (abbrev-mode):
+ * allout.el (allout-mode):
+ * autoinsert.el (auto-insert-mode):
+ * autoarg.el (autoarg-mode, autoarg-kp-mode):
+ * autorevert.el (auto-revert-mode, auto-revert-tail-mode)
+ (global-auto-revert-mode):
+ * battery.el (display-battery-mode):
+ * composite.el (global-auto-composition-mode)
+ (auto-composition-mode):
+ * delsel.el (delete-selection-mode):
+ * desktop.el (desktop-save-mode):
+ * dired-x.el (dired-omit-mode):
+ * dirtrack.el (dirtrack-mode):
+ * doc-view.el (doc-view-minor-mode):
+ * double.el (double-mode):
+ * electric.el (electric-indent-mode, electric-pair-mode):
+ * emacs-lock.el (emacs-lock-mode):
+ * epa-hook.el (auto-encryption-mode):
+ * follow.el (follow-mode):
+ * font-core.el (font-lock-mode):
+ * frame.el (auto-raise-mode, auto-lower-mode, blink-cursor-mode):
+ * help.el (temp-buffer-resize-mode):
+ * hilit-chg.el (highlight-changes-mode)
+ (highlight-changes-visible-mode):
+ * hi-lock.el (hi-lock-mode):
+ * hl-line.el (hl-line-mode, global-hl-line-mode):
+ * icomplete.el (icomplete-mode):
+ * ido.el (ido-everywhere):
+ * image-file.el (auto-image-file-mode):
+ * image-mode.el (image-minor-mode):
+ * iswitchb.el (iswitchb-mode):
+ * jka-cmpr-hook.el (auto-compression-mode):
+ * linum.el (linum-mode):
+ * longlines.el (longlines-mode):
+ * master.el (master-mode):
+ * mb-depth.el (minibuffer-depth-indicate-mode):
+ * menu-bar.el (menu-bar-mode):
+ * minibuf-eldef.el (minibuffer-electric-default-mode):
+ * mouse-sel.el (mouse-sel-mode):
+ * msb.el (msb-mode):
+ * mwheel.el (mouse-wheel-mode):
+ * outline.el (outline-minor-mode):
+ * paren.el (show-paren-mode):
+ * recentf.el (recentf-mode):
+ * reveal.el (reveal-mode, global-reveal-mode):
+ * rfn-eshadow.el (file-name-shadow-mode):
+ * ruler-mode.el (ruler-mode):
+ * savehist.el (savehist-mode):
+ * scroll-all.el (scroll-all-mode):
+ * scroll-bar.el (scroll-bar-mode):
+ * server.el (server-mode):
+ * shell.el (shell-dirtrack-mode):
+ * simple.el (auto-fill-mode, transient-mark-mode)
+ (visual-line-mode, overwrite-mode, binary-overwrite-mode)
+ (line-number-mode, column-number-mode, size-indication-mode)
+ (auto-save-mode, normal-erase-is-backspace-mode, visible-mode):
+ * strokes.el (strokes-mode):
+ * time.el (display-time-mode):
+ * t-mouse.el (gpm-mouse-mode):
+ * tool-bar.el (tool-bar-mode):
+ * tooltip.el (tooltip-mode):
+ * type-break.el (type-break-mode-line-message-mode)
+ (type-break-query-mode):
+ * view.el (view-mode):
+ * whitespace.el (whitespace-mode, whitespace-newline-mode)
+ (global-whitespace-mode, global-whitespace-newline-mode):
+ * xt-mouse.el (xterm-mouse-mode): Doc fix.
+
+ * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Fix
+ autogenerated docstring.
+
+2011-10-19 Juri Linkov <juri@jurta.org>
+
+ * net/browse-url.el (browse-url-can-use-xdg-open): Support LXDE
+ by checking environment variables "DESKTOP_SESSION" and
+ "XDG_CURRENT_DESKTOP". (Bug#9779)
+
+2011-10-19 Juri Linkov <juri@jurta.org>
+
+ * net/browse-url.el (browse-url-browser-function): Add "Chromium".
+ (browse-url-chromium-program, browse-url-chromium-arguments):
+ New defcustoms.
+ (browse-url-default-browser): Check for `browse-url-chromium' and
+ call `browse-url-chromium-program'.
+ (browse-url-chromium): New command. (Bug#9779)
+
+2011-10-18 Juanma Barranquero <lekktu@gmail.com>
+
+ * facemenu.el (list-colors-duplicates): On Windows, detect more
+ duplicates by assuming that only colors matching "^System" are
+ special "system colors". (Bug#9722)
+
+2011-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc/log-edit.el (log-edit): Add "Author:" header to encourage people
+ to distinguish the author from the committer.
+
+2011-10-18 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-file-name-handler): Load Tramp packages silently.
+
+2011-10-18 Jirka Kosek <jirka@kosek.cz> (tiny change)
+
+ * international/mule.el (sgml-html-meta-auto-coding-function):
+ Add support for detecting encoding in HTML5 specified only as
+ <meta charset="UTF-8">. Implementation just makes http-equiv and
+ content-type parts from HTML4 encoding string optional. (Bug#9716)
+
+2011-10-18 Glenn Morris <rgm@gnu.org>
+
+ * vc/vc.el (vc-initial-comment): Mark as obsolete. (Bug#9745)
+
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * faces.el (cursor): Doc fix.
+
+2011-10-17 Chong Yidong <cyd@gnu.org>
+
+ * font-lock.el (font-lock-maximum-size): Mark as obsolete.
+
+2011-10-17 Ryan Barrett <emacs@ryanb.org> (tiny change)
+
+ * dirtrack.el (dirtrack): Support shell buffers with path
+ prefixes, e.g. tramp-based remote shells. (Bug#9647)
+
+2011-10-17 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * json.el: Bump version to 1.3 and note change in History.
+ (json-alist-p, json-plist-p): Rewrite to avoid recursion.
+
+2011-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * comint.el (comint-insert-input, comint-send-input)
+ (comint-get-old-input-default, comint-backward-matching-input)
+ (comint-next-prompt): Use nil instead of `input' for field property of
+ past user input (bug#114).
+
+ * minibuffer.el (completion--replace): Inherit surrounding properties
+ (bug#114).
+ (minibuffer-complete-and-exit): Use it.
+
+ * comint.el (comint--table-subvert): Quote the all-completions output
+ (bug#9160).
+
+2011-10-17 Martin Rudalics <rudalics@gmx.at>
+
+ * ido.el (ido-default-buffer-method): Remove redundant :type entry.
+
+ * menu-bar.el (menu-bar-file-menu): Add entry for making new
+ window on right of selected. (Bug#9350) Reword other window
+ entries and separate them from frame entries.
+
2011-10-15 Glenn Morris <rgm@gnu.org>
* emacs-lisp/ert.el (ert--explain-equal-rec, ert-select-tests):
@@ -5,8 +280,8 @@
2011-10-15 Chong Yidong <cyd@stupidchicken.com>
- * net/network-stream.el (network-stream-open-starttls): Improve
- detection of failure due to lack of TLS support.
+ * net/network-stream.el (network-stream-open-starttls):
+ Improve detection of failure due to lack of TLS support.
* mail/sendmail.el (sendmail-query-once): Tweak prompt message,
putting the input text in front and in bold.
@@ -405,8 +680,8 @@
* net/newst-reader.el (newsticker-html-renderer)
(newsticker-show-news): Automatically
- load html rendering package if newsticker-html-renderer is
- set. Fixes "Warning: defvar ignored because w3m-fill-column is
+ load html rendering package if newsticker-html-renderer is set.
+ Fixes "Warning: defvar ignored because w3m-fill-column is
let-bound" and the error "Symbol's value as variable is void:
w3m-fill-column".
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index 2acf847cdd..9cb24baeb1 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -22676,7 +22676,7 @@
(vc-next-action, vc-transfer-file, vc-rename-file): Also pass the
backend when calling vc-mode-line.
(vc-register): Do not create a closure for calling the vc register
- function, call it directly.
+ function, call it directly. No longer obey vc-initial-comment.
2009-06-23 Dan Nicolaescu <dann@ics.uci.edu>
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 5a7a741a3a..395810772c 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -54,9 +54,12 @@ define global abbrevs instead."
(define-minor-mode abbrev-mode
"Toggle Abbrev mode in the current buffer.
-With optional argument ARG, turn abbrev mode on if ARG is
-positive, otherwise turn it off. In Abbrev mode, inserting an
-abbreviation causes it to expand and be replaced by its expansion."
+With a prefix argument ARG, enable Abbrev mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Abbrev mode if ARG is omitted or nil.
+
+In Abbrev mode, inserting an abbreviation causes it to expand and
+be replaced by its expansion."
;; It's defined in C, this stops the d-m-m macro defining it again.
:variable abbrev-mode)
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index ef75e7157e..162da1f481 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -486,13 +486,14 @@ happens in the buffer.")
;;;_ > define-minor-mode allout-widgets-mode (arg)
;;;###autoload
(define-minor-mode allout-widgets-mode
- "Allout-mode extension, providing graphical decoration of outline structure.
-
-This is meant to operate along with allout-mode, via `allout-mode-hook'.
-
-If optional argument ARG is greater than 0, enable.
-If optional argument ARG is less than 0, disable.
-Anything else, toggle between active and inactive.
+ "Toggle Allout Widgets mode.
+With a prefix argument ARG, enable Allout Widgets mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Allout Widgets mode is an extension of Allout mode that provides
+graphical decoration of outline structure. It is meant to
+operate along with `allout-mode', via `allout-mode-hook'.
The graphics include:
diff --git a/lisp/allout.el b/lisp/allout.el
index 4002f12e26..18cc3c80dc 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -1702,17 +1702,19 @@ valid values."
;;;###autoload
(define-minor-mode allout-mode
;;;_ . Doc string:
- "Toggle minor mode for controlling exposure and editing of text outlines.
-\\<allout-mode-map-value>
-
-Allout outline mode always runs as a minor mode.
+ "Toggle Allout outline mode.
+With a prefix argument ARG, enable Allout outline mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-Allout outline mode provides extensive outline oriented
-formatting and manipulation. It enables structural editing of
-outlines, as well as navigation and exposure. It also is
-specifically aimed at accommodating syntax-sensitive text like
-programming languages. \(For example, see the allout code itself,
-which is organized as an allout outline.)
+\\<allout-mode-map-value>
+Allout outline mode is a minor mode that provides extensive
+outline oriented formatting and manipulation. It enables
+structural editing of outlines, as well as navigation and
+exposure. It also is specifically aimed at accommodating
+syntax-sensitive text like programming languages. \(For example,
+see the allout code itself, which is organized as an allout
+outline.)
In addition to typical outline navigation and exposure, allout includes:
diff --git a/lisp/autoarg.el b/lisp/autoarg.el
index 378ec1318b..57f5bcd809 100644
--- a/lisp/autoarg.el
+++ b/lisp/autoarg.el
@@ -90,15 +90,19 @@
;;;###autoload
(define-minor-mode autoarg-mode
- "Toggle Autoarg minor mode globally.
-With ARG, turn Autoarg mode on if ARG is positive, off otherwise.
+ "Toggle Autoarg mode, a global minor mode.
+With a prefix argument ARG, enable Autoarg mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
\\<autoarg-mode-map>
-In Autoarg mode digits are bound to `digit-argument' -- i.e. they
-supply prefix arguments as C-DIGIT and M-DIGIT normally do -- and
-C-DIGIT inserts DIGIT. \\[autoarg-terminate] terminates the prefix sequence
-and inserts the digits of the autoarg sequence into the buffer.
-Without a numeric prefix arg the normal binding of \\[autoarg-terminate] is
-invoked, i.e. what it would be with Autoarg mode off.
+In Autoarg mode, digits are bound to `digit-argument', i.e. they
+supply prefix arguments as C-DIGIT and M-DIGIT normally do.
+Furthermore, C-DIGIT inserts DIGIT.
+\\[autoarg-terminate] terminates the prefix sequence and inserts
+the digits of the autoarg sequence into the buffer.
+Without a numeric prefix arg, the normal binding of \\[autoarg-terminate]
+is invoked, i.e. what it would be with Autoarg mode off.
For example:
`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].
;;;###autoload
(define-minor-mode autoarg-kp-mode
- "Toggle Autoarg-KP minor mode globally.
-With ARG, turn Autoarg mode on if ARG is positive, off otherwise.
+ "Toggle Autoarg-KP mode, a global minor mode.
+With a prefix argument ARG, enable Autoarg-KP mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
\\<autoarg-kp-mode-map>
-This is similar to \\[autoarg-mode] but rebinds the keypad keys `kp-1'
-etc. to supply digit arguments.
+This is similar to `autoarg-mode' but rebinds the keypad keys
+`kp-1' etc. to supply digit arguments.
\\{autoarg-kp-mode-map}"
nil " Aakp" autoarg-kp-mode-map :global t :group 'keyboard
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index 5793c3180b..6d002f4a21 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -397,9 +397,10 @@ or if CONDITION had no actions, after all other CONDITIONs."
;;;###autoload
(define-minor-mode auto-insert-mode
- "Toggle Auto-insert mode.
-With prefix ARG, turn Auto-insert mode on if and only if ARG is positive.
-Returns the new status of Auto-insert mode (non-nil means on).
+ "Toggle Auto-insert mode, a global minor mode.
+With a prefix argument ARG, enable Auto-insert mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
When Auto-insert mode is enabled, when new files are created you can
insert a template for the file depending on the mode of the buffer."
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index c67b6663bd..817aaff55c 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -284,10 +284,15 @@ the list of old buffers.")
;;;###autoload
(define-minor-mode auto-revert-mode
- "Toggle reverting buffer when file on disk changes.
+ "Toggle reverting buffer when the file changes (Auto Revert mode).
+With a prefix argument ARG, enable Auto Revert mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Auto Revert mode is a minor mode that affects only the current
+buffer. When enabled, it reverts the buffer when the file on
+disk changes.
-With arg, turn Auto Revert mode on if and only if arg is positive.
-This is a minor mode that affects only the current buffer.
Use `global-auto-revert-mode' to automatically revert all buffers.
Use `auto-revert-tail-mode' if you know that the file will only grow
without 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:
;;;###autoload
(define-minor-mode auto-revert-tail-mode
- "Toggle reverting tail of buffer when file on disk grows.
-With arg, turn Tail mode on if arg is positive, otherwise turn it off.
+ "Toggle reverting tail of buffer when the file grows.
+With a prefix argument ARG, enable Auto-Revert Tail mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
-When Tail mode is enabled, the tail of the file is constantly
-followed, as with the shell command `tail -f'. This means that
-whenever the file grows on disk (presumably because some
-background process is appending to it from time to time), this is
-reflected in the current buffer.
+When Auto Revert Tail mode is enabled, the tail of the file is
+constantly followed, as with the shell command `tail -f'. This
+means that whenever the file grows on disk (presumably because
+some background process is appending to it from time to time),
+this is reflected in the current buffer.
You can edit the buffer and turn this mode off and on again as
you please. But make sure the background process has stopped
@@ -367,7 +374,7 @@ Perform a full revert? ")
;;;###autoload
(defun turn-on-auto-revert-tail-mode ()
- "Turn on Auto-Revert Tail Mode.
+ "Turn on Auto-Revert Tail mode.
This function is designed to be added to hooks, for example:
(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:
;;;###autoload
(define-minor-mode global-auto-revert-mode
"Toggle Global Auto Revert mode.
-With optional prefix argument ARG, enable Global Auto Revert Mode
-if ARG > 0, else disable it.
+With a prefix argument ARG, enable Global Auto Revert mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
-This is a global minor mode that reverts any buffer associated
-with a file when the file changes on disk. Use `auto-revert-mode'
-to revert a particular buffer.
+Global Auto Revert mode is a global minor mode that reverts any
+buffer associated with a file when the file changes on disk. Use
+`auto-revert-mode' to revert a particular buffer.
If `global-auto-revert-non-file-buffers' is non-nil, this mode
may also revert some non-file buffers, as described in the
diff --git a/lisp/battery.el b/lisp/battery.el
index f5c01fbef5..3b245ed644 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
;;;###autoload
(define-minor-mode display-battery-mode
- "Display battery status information in the mode line.
-The text being displayed in the mode line is controlled by the variables
+ "Toggle battery status display in mode line (Display Battery mode).
+With a prefix argument ARG, enable Display Battery mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+The text displayed in the mode line is controlled by
`battery-mode-line-format' and `battery-status-function'.
-The mode line will be updated automatically every `battery-update-interval'
+The mode line is be updated every `battery-update-interval'
seconds."
:global t :group 'battery
(setq battery-mode-line-string "")
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 093e592c47..3dd0e6f78f 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,20 @@
+2011-10-23 Chong Yidong <cyd@gnu.org>
+
+ * ede.el (ede-maybe-checkout): Function deleted;
+ vc-toggle-read-only does not do version control now.
+
+ * ede/util.el (ede-make-buffer-writable): Don't use
+ vc-toggle-read-only.
+
+ * ede/project-am.el (project-remove-file, project-add-file)
+ (project-new-target): Don't call ede-maybe-checkout.
+
+2011-10-19 Chong Yidong <cyd@gnu.org>
+
+ * ede.el (ede-minor-mode,global-ede-mode):
+ * semantic.el (semantic-mode): Doc fix to reflect new
+ define-minor-mode calling behavior.
+
2011-07-30 Chong Yidong <cyd@stupidchicken.com>
* semantic/grammar.el (semantic-grammar-insert-defanalyzers): Fix
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 307ccfdadd..14f09517b1 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -398,8 +398,9 @@ To be used in hook functions."
(define-minor-mode ede-minor-mode
"Toggle EDE (Emacs Development Environment) minor mode.
-With non-nil argument ARG, enable EDE minor mode if ARG is
-positive; otherwise, disable it.
+With a prefix argument ARG, enable EDE minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+EDE minor mode if ARG is omitted or nil.
If this file is contained, or could be contained in an EDE
controlled project, then this mode is activated automatically
@@ -458,8 +459,9 @@ ONOFF indicates enabling or disabling the mode."
;;;###autoload
(define-minor-mode global-ede-mode
"Toggle global EDE (Emacs Development Environment) mode.
-With non-nil argument ARG, enable global EDE mode if ARG is
-positive; otherwise, disable it.
+With a prefix argument ARG, enable global EDE mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
This global minor mode enables `ede-minor-mode' in all buffers in
an EDE controlled project."
@@ -1177,16 +1179,6 @@ See also `ede-map-subprojects'."
Return the first non-nil value returned by PROC."
(eval (cons 'or (ede-map-targets this proc))))
-;;; VC Handling
-;;
-(defun ede-maybe-checkout (&optional buffer)
- "Check BUFFER out of VC if necessary."
- (save-excursion
- (if buffer (set-buffer buffer))
- (if (and buffer-read-only vc-mode
- (y-or-n-p "Checkout Makefile.am from VC? "))
- (vc-toggle-read-only))))
-
;;; Some language specific methods.
;;
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 88cf67e22e..ec54d8151b 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."
target (project-am-preferred-target-type (buffer-file-name)))))
(ede-with-projectfile ot
(makefile-move-to-macro (project-am-macro ot))
- (ede-maybe-checkout)
(makefile-end-of-command)
(insert " " ofn)
(makefile-fill-paragraph nil)
@@ -226,10 +225,6 @@ OT is the object target. DIR is the directory to start in."
"Remove the current buffer from any project targets."
(ede-with-projectfile ot
(makefile-move-to-macro (project-am-macro ot))
- (if (and buffer-read-only vc-mode
- (y-or-n-p "Checkout Makefile.am from VC? "))
- (vc-toggle-read-only t))
- (ede-maybe-checkout)
(makefile-navigate-macro (concat " *" (regexp-quote (ede-name fnnd))))
(replace-match "" t t nil 0)
(makefile-fill-paragraph nil)
@@ -271,7 +266,6 @@ buffer being in order to provide a smart default target type."
(if (not ot) (error "Error creating target object %S" ntype))
(ede-with-projectfile ot
(goto-char (point-min))
- (ede-maybe-checkout)
(makefile-next-dependency)
(if (= (point) (point-min))
(goto-char (point-max))
diff --git a/lisp/cedet/ede/util.el b/lisp/cedet/ede/util.el
index fc4536ba88..053180d4a8 100644
--- a/lisp/cedet/ede/util.el
+++ b/lisp/cedet/ede/util.el
@@ -87,12 +87,7 @@ their sources to VERSION."
If BUFFER isn't specified, use the current buffer."
(save-excursion
(if buffer (set-buffer buffer))
- (if buffer-read-only
- (if (and vc-mode
- (y-or-n-p (format "Check out %s? " (buffer-file-name))))
- (vc-toggle-read-only)
- (if (not vc-mode)
- (toggle-read-only -1))))))
+ (toggle-read-only -1)))
(provide 'ede/util)
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index ce9af0e12b..34d886b680 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -1055,8 +1055,10 @@ The possible elements of this list include the following:
;;;###autoload
(define-minor-mode semantic-mode
- "Toggle Semantic mode.
-With ARG, turn Semantic mode on if ARG is positive, off otherwise.
+ "Toggle parser features (Semantic mode).
+With a prefix argument ARG, enable Semantic mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Semantic mode if ARG is omitted or nil.
In Semantic mode, Emacs parses the buffers you visit for their
semantic content. This information is used by a variety of
diff --git a/lisp/comint.el b/lisp/comint.el
index 52580db618..591be5e2d9 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -847,10 +847,10 @@ by the global keymap (usually `mouse-yank-at-click')."
;; If pos is at the very end of a field, the mouse-click was
;; probably outside (to the right) of the field.
(and (< pos (field-end pos))
- (setq field (field-at-pos pos))
- (setq input (field-string-no-properties pos))))
- (if (or (null comint-accum-marker)
- (not (eq field 'input)))
+ (< (field-end pos) (point-max))
+ (progn (setq field (field-at-pos pos))
+ (setq input (field-string-no-properties pos)))))
+ (if (or (null input) (null comint-accum-marker) field)
;; Fall back to the global definition if (i) the selected
;; buffer is not a comint buffer (which can happen if a
;; non-comint window was selected and we clicked in a comint
@@ -1803,8 +1803,7 @@ Similarly for Soar, Scheme, etc."
(add-text-properties
beg end
'(mouse-face highlight
- help-echo "mouse-2: insert after prompt as new input"
- field input))))
+ help-echo "mouse-2: insert after prompt as new input"))))
(unless (or no-newline comint-use-prompt-regexp)
;; Cover the terminating newline
(add-text-properties end (1+ end)
@@ -2153,7 +2152,7 @@ If `comint-use-prompt-regexp' is non-nil, then return
the current line with any initial string matching the regexp
`comint-prompt-regexp' removed."
(let ((bof (field-beginning)))
- (if (eq (get-char-property bof 'field) 'input)
+ (if (null (get-char-property bof 'field)) ;Not `output'.
(field-string-no-properties bof)
(comint-bol)
(buffer-substring-no-properties (point) (line-end-position)))))
@@ -2473,7 +2472,7 @@ If N is negative, find the next or Nth next match."
(while (/= n 0)
(unless (re-search-backward regexp nil t dir)
(error "Not found"))
- (when (eq (get-char-property (point) 'field) 'input)
+ (unless (get-char-property (point) 'field)
(setq n (- n dir))))
(field-beginning))))
(goto-char pos))))
@@ -2520,7 +2519,7 @@ text matching `comint-prompt-regexp'."
(setq input-pos (point-max)))
;; stop iterating
(setq n 0))
- ((eq (get-char-property pos 'field) 'input)
+ ((null (get-char-property pos 'field))
(setq n (if (< n 0) (1+ n) (1- n)))
(setq input-pos pos))))
(when input-pos
@@ -3079,9 +3078,9 @@ SS1 = (unquote SS2)."
(defun comint--table-subvert (table s1 s2 &optional quote-fun unquote-fun)
"Completion table that replaces the prefix S1 with S2 in STRING.
-When TABLE, S1 and S2 are provided by `apply-partially', the result
-is a completion table which completes strings of the form (concat S1 S)
-in the same way as TABLE completes strings of the form (concat S2 S)."
+The result is a completion table which completes strings of the
+form (concat S1 S) in the same way as TABLE completes strings of
+the form (concat S2 S)."
(lambda (string pred action)
(let* ((str (if (eq t (compare-strings string 0 (length s1) s1 nil nil
completion-ignore-case))
@@ -3106,13 +3105,15 @@ in the same way as TABLE completes strings of the form (concat S2 S)."
((eq action t)
(let ((bounds (completion-boundaries str table pred "")))
(if (>= (car bounds) (length s2))
- res
+ (if quote-fun (mapcar quote-fun res) res)
(let ((re (concat "\\`"
(regexp-quote (substring s2 (car bounds))))))
(delq nil
(mapcar (lambda (c)
(if (string-match re c)
- (substring c (match-end 0))))
+ (let ((str (substring c (match-end 0))))
+ (if quote-fun
+ (funcall quote-fun str) str))))
res))))))
;; E.g. action=nil and it's the only completion.
(res))))))
diff --git a/lisp/composite.el b/lisp/composite.el
index 11a3d5ba38..487962ee07 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)."
;;;###autoload
(define-minor-mode auto-composition-mode
"Toggle Auto Composition mode.
-With ARG, turn Auto Composition mode off if and only if ARG is a non-positive
-number; if ARG is nil, toggle Auto Composition mode; anything else turns Auto
-Composition on.
+With a prefix argument ARG, enable Auto Composition mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
-When Auto Composition is enabled, text characters are automatically composed
-by functions registered in `composition-function-table' (which see).
+When Auto Composition mode is enabled, text characters are
+automatically composed by functions registered in
+`composition-function-table'.
You can use `global-auto-composition-mode' to turn on
Auto Composition mode in all buffers (this is the default)."
@@ -744,10 +745,13 @@ Auto Composition mode in all buffers (this is the default)."
;;;###autoload
(define-minor-mode global-auto-composition-mode
- "Toggle Auto-Composition mode in every possible buffer.
-With prefix arg, turn Global-Auto-Composition mode on if and only if arg
-is positive.
-See `auto-composition-mode' for more information on Auto-Composition mode."
+ "Toggle Auto Composition mode in all buffers.
+With a prefix argument ARG, enable it if ARG is positive, and
+disable it otherwise. If called from Lisp, enable it if ARG is
+omitted or nil.
+
+For more information on Auto Composition mode, see
+`auto-composition-mode' ."
:variable (default-value 'auto-composition-mode))
(defalias 'toggle-auto-composition 'auto-composition-mode)
diff --git a/lisp/delsel.el b/lisp/delsel.el
index 705b64be89..6d2c47f395 100644
--- a/lisp/delsel.el
+++ b/lisp/delsel.el
@@ -56,8 +56,9 @@
;;;###autoload
(define-minor-mode delete-selection-mode
"Toggle Delete Selection mode.
-With prefix ARG, turn Delete Selection mode on if ARG is
-positive, off if ARG is not positive.
+With a prefix argument ARG, enable Delete Selection mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
When Delete Selection mode is enabled, Transient Mark mode is also
enabled and typed text replaces the selection if the selection is
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 7d267cec48..c175bd7c3c 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -606,7 +606,8 @@ as well as widgets, buttons, overlays, and text properties."
'trailing-whitespace)
((and nobreak-char-display char (eq char '#xa0))
'nobreak-space)
- ((and nobreak-char-display char (eq char '#xad))
+ ((and nobreak-char-display char
+ (memq char '(#xad #x2010 #x2011)))
'escape-glyph)
((and (< char 32) (not (memq char '(9 10))))
'escape-glyph)))))
diff --git a/lisp/desktop.el b/lisp/desktop.el
index c60745a6b1..cdc787dfde 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -147,11 +147,14 @@ backward compatibility.")
;;;###autoload
(define-minor-mode desktop-save-mode
- "Toggle desktop saving mode.
-With numeric ARG, turn desktop saving on if ARG is positive, off
-otherwise. If desktop saving is turned on, the state of Emacs is
-saved from one session to another. See variable `desktop-save'
-and function `desktop-read' for details."
+ "Toggle desktop saving (Desktop Save mode).
+With a prefix argument ARG, enable Desktop Save mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+If Desktop Save mode is enabled, the state of Emacs is saved from
+one session to another. See variable `desktop-save' and function
+`desktop-read' for details."
:global t
:group 'desktop)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 0f2cfd4973..aaddc479b2 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -133,16 +133,20 @@ If nil, there is no maximum size."
:group 'dired-x)
(define-minor-mode dired-omit-mode
- "Toggle Dired-Omit mode.
-With numeric ARG, enable Dired-Omit mode if ARG is positive, disable
-otherwise. Enabling and disabling is buffer-local.
-If enabled, \"uninteresting\" files are not listed.
-Uninteresting files are those whose filenames match regexp `dired-omit-files',
-plus those ending with extensions in `dired-omit-extensions'.
+ "Toggle omission of uninteresting files in Dired (Dired-Omit mode).
+With a prefix argument ARG, enable Dired-Omit mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-To enable omitting in every Dired buffer, you can put in your ~/.emacs
+Dired-Omit mode is a buffer-local minor mode. When enabled in a
+Dired buffer, Dired does not list files whose filenames match
+regexp `dired-omit-files', nor files ending with extensions in
+`dired-omit-extensions'.
- (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1)))
+To enable omitting in every Dired buffer, you can put this in
+your init file:
+
+ (add-hook 'dired-mode-hook (lambda () (dired-omit-mode)))
See Info node `(dired-x) Omitting Variables' for more information."
:group 'dired-x
diff --git a/lisp/dired.el b/lisp/dired.el
index 60ba14ade8..3ff86869a7 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -4128,7 +4128,7 @@ instead.
;;;***
;;;### (autoloads (dired-do-relsymlink dired-jump-other-window dired-jump)
-;;;;;; "dired-x" "dired-x.el" "219648338c42c7912fa336680b434db0")
+;;;;;; "dired-x" "dired-x.el" "0a19e4cb2cadf007be715af1035c9c36")
;;; Generated autoloads from dired-x.el
(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el
index c3dfc74777..eef8c111da 100644
--- a/lisp/dirtrack.el
+++ b/lisp/dirtrack.el
@@ -183,7 +183,11 @@ and ends with a forward slash."
;;;###autoload
(define-minor-mode dirtrack-mode
- "Enable or disable Dirtrack directory tracking in a shell buffer.
+ "Toggle directory tracking in shell buffers (Dirtrack mode).
+With a prefix argument ARG, enable Dirtrack mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
This method requires that your shell prompt contain the full
current working directory at all times, and that `dirtrack-list'
is set to match the prompt. This is an alternative to
@@ -199,7 +203,7 @@ and similar commands which change the shell working directory."
(define-minor-mode dirtrack-debug-mode
- "Enable or disable Dirtrack debugging."
+ "Toggle Dirtrack debugging."
nil nil nil
(if dirtrack-debug-mode
(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
function `dirtrack-debug-mode' to turn on debugging output."
(unless (or (null dirtrack-mode)
(eq (point) (point-min))) ; no output?
- (let (prompt-path
+ (let (prompt-path orig-prompt-path
(current-dir default-directory)
(dirtrack-regexp (nth 0 dirtrack-list))
(match-num (nth 1 dirtrack-list)))
@@ -243,8 +247,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
(if (not (> (length prompt-path) 0))
(dirtrack-debug-message "Match is empty string")
;; Transform prompts into canonical forms
- (setq prompt-path (funcall dirtrack-directory-function
- prompt-path)
+ (setq orig-prompt-path (funcall dirtrack-directory-function
+ prompt-path)
+ prompt-path (shell-prefixed-directory-name orig-prompt-path)
current-dir (funcall dirtrack-canonicalize-function
current-dir))
(dirtrack-debug-message
@@ -257,8 +262,9 @@ function `dirtrack-debug-mode' to turn on debugging output."
;; It's possible that Emacs will think the directory
;; won't exist (eg, rlogin buffers)
(if (file-accessible-directory-p prompt-path)
- ;; Change directory
- (and (shell-process-cd prompt-path)
+ ;; Change directory. shell-process-cd adds the prefix, so we
+ ;; need to give it the original (un-prefixed) path.
+ (and (shell-process-cd orig-prompt-path)
(run-hooks 'dirtrack-directory-change-hook)
(dirtrack-debug-message
(format "Changing directory to %s" prompt-path)))
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 872b2172c7..ceaad83cd7 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -1502,8 +1502,11 @@ to the next best mode."
;;;###autoload
(define-minor-mode doc-view-minor-mode
- "Toggle Doc view minor mode.
-With arg, turn Doc view minor mode on if arg is positive, off otherwise.
+ "Toggle displaying buffer via Doc View (Doc View minor mode).
+With a prefix argument ARG, enable Doc View minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
See the command `doc-view-mode' for more information on this mode."
nil " DocView" doc-view-minor-mode-map
:group 'doc-view
diff --git a/lisp/double.el b/lisp/double.el
index 4aa8da72af..2a845f6194 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."
;;;###autoload
(define-minor-mode double-mode
- "Toggle Double mode.
-With prefix argument ARG, turn Double mode on if ARG is positive, otherwise
-turn it off.
+ "Toggle special insertion on double keypresses (Double mode).
+With a prefix argument ARG, enable Double mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-When Double mode is on, some keys will insert different strings
-when pressed twice. See variable `double-map' for details."
+When Double mode is enabled, some keys will insert different
+strings when pressed twice. See `double-map' for details."
:lighter " Double"
:link '(emacs-commentary-link "double")
(kill-local-variable 'key-translation-map)
diff --git a/lisp/electric.el b/lisp/electric.el
index 17c33c7d5c..26fba20ea1 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -241,8 +241,14 @@ Returns nil when we can't find this char."
;;;###autoload
(define-minor-mode electric-indent-mode
- "Automatically reindent lines of code when inserting particular chars.
-`electric-indent-chars' specifies the set of chars that should cause reindentation."
+ "Toggle on-the-fly reindentation (Electric Indent mode).
+With a prefix argument ARG, enable Electric Indent mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Electric Indent mode is a global minor mode. When enabled,
+reindentation is triggered whenever you insert a character listed
+in `electric-indent-chars'."
:global t
:group 'electricity
(if electric-indent-mode
@@ -330,7 +336,14 @@ This can be convenient for people who find it easier to hit ) than C-f."
;;;###autoload
(define-minor-mode electric-pair-mode
- "Automatically pair-up parens when inserting an open paren."
+ "Toggle automatic parens pairing (Electric Pair mode).
+With a prefix argument ARG, enable Electric Pair mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Electric Pair mode is a global minor mode. When enabled, typing
+an open parenthesis automatically inserts the corresponding
+closing parenthesis. \(Likewise for brackets, etc.)"
:global t
:group 'electricity
(if electric-pair-mode
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 7eb6e6ef76..c9e3202318 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1237,9 +1237,10 @@ generating a buffered list of errors."
;;;###autoload
(define-minor-mode checkdoc-minor-mode
- "Toggle Checkdoc minor mode, a mode for checking Lisp doc strings.
-With prefix ARG, turn Checkdoc minor mode on if ARG is positive, otherwise
-turn it off.
+ "Toggle automatic docstring checking (Checkdoc minor mode).
+With a prefix argument ARG, enable Checkdoc minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
In Checkdoc minor mode, the usual bindings for `eval-defun' which is
bound 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 46dc1f162b..b1cb0615e4 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."
(define-minor-mode ,global-mode
;; Very short lines to avoid too long lines in the generated
;; doc string.
- ,(format "Toggle %s in every possible buffer.
-With prefix ARG, turn %s on if and only if
-ARG is positive.
+ ,(format "Toggle %s in all buffers.
+With prefix ARG, enable %s if ARG is positive;
+otherwise, disable it. If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
%s is enabled in all buffers where
\`%s' would do it.
See `%s' for more information on %s."
- pretty-name pretty-global-name pretty-name turn-on
- mode pretty-name)
+ pretty-name pretty-global-name
+ pretty-name turn-on mode pretty-name)
:global t ,@group ,@(nreverse extra-keywords)
;; 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 cd9b779bee..901b6d1bf6 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.")
;;;###autoload
(define-minor-mode eldoc-mode
- "Toggle ElDoc mode on or off.
-In ElDoc mode, the echo area displays information about a
-function or variable in the text where point is. If point is
-on a documented variable, it displays the first line of that
-variable's doc string. Otherwise it displays the argument list
-of the function called in the expression point is on.
-
-With prefix ARG, turn ElDoc mode on if and only if ARG is positive."
+ "Toggle echo area display of Lisp objects at point (ElDoc mode).
+With a prefix argument ARG, enable ElDoc mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable ElDoc mode
+if ARG is omitted or nil.
+
+ElDoc mode is a buffer-local minor mode. When enabled, the echo
+area displays information about a function or variable in the
+text where point is. If point is on a documented variable, it
+displays the first line of that variable's doc string. Otherwise
+it displays the argument list of the function called in the
+expression point is on."
:group 'eldoc :lighter eldoc-minor-mode-string
(setq eldoc-last-message nil)
(if eldoc-mode
diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el
index 18411f7d2e..f2c9347301 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)."
;;;###autoload
(define-minor-mode emacs-lock-mode
- "Toggle Emacs Lock mode in the current buffer.
-
-With \\[universal-argument], ask for the locking mode to be used.
-With other prefix ARG, turn mode on if ARG is positive, off otherwise.
-
-Initially, if the user does not pass an explicit locking mode, it defaults
-to `emacs-lock-default-locking-mode' (which see); afterwards, the locking
-mode most recently set on the buffer is used instead.
+ "Toggle Emacs Lock mode in the current buffer.
+If called with a plain prefix argument, ask for the locking mode
+to be used. With any other prefix ARG, turn mode on if ARG is
+positive, off otherwise. If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Initially, if the user does not pass an explicit locking mode, it
+defaults to `emacs-lock-default-locking-mode' (which see);
+afterwards, the locking mode most recently set on the buffer is
+used instead.
When called from Elisp code, ARG can be any locking mode:
diff --git a/lisp/emulation/crisp.el b/lisp/emulation/crisp.el
index b2806e8f8e..567a57949b 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
;;;###autoload
(define-minor-mode crisp-mode
- "Toggle CRiSP/Brief emulation minor mode.
-With ARG, turn CRiSP mode on if ARG is positive, off otherwise."
+ "Toggle CRiSP/Brief emulation (CRiSP mode).
+With a prefix argument ARG, enable CRiSP mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil."
:keymap crisp-mode-map
:lighter crisp-mode-modeline-string
(when crisp-mode
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index b643d521ad..9a50352d50 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."
(pop-to-mark-command)))
((and cua-toggle-set-mark mark-active)
(cua--deactivate)
- (message "Mark Cleared"))
+ (message "Mark cleared"))
(t
(push-mark-command nil nil)
(setq cua--explicit-region-start t)
@@ -1531,16 +1531,17 @@ If ARG is the atom `-', scroll upward by nearly full screen."
;;;###autoload
(define-minor-mode cua-mode
- "Toggle CUA key-binding mode.
-When enabled, using shifted movement keys will activate the
-region (and highlight the region using `transient-mark-mode'),
-and typed text replaces the active selection.
-
-Also when enabled, you can use C-z, C-x, C-c, and C-v to undo,
-cut, copy, and paste in addition to the normal Emacs bindings.
-The C-x and C-c keys only do cut and copy when the region is
-active, so in most cases, they do not conflict with the normal
-function of these prefix keys.
+ "Toggle Common User Access style editing (CUA mode).
+With a prefix argument ARG, enable CUA mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+CUA mode is a global minor mode. When enabled, typed text
+replaces the active selection, and you can use C-z, C-x, C-c, and
+C-v to undo, cut, copy, and paste in addition to the normal Emacs
+bindings. The C-x and C-c keys only do cut and copy when the
+region is active, so in most cases, they do not conflict with the
+normal function of these prefix keys.
If you really need to perform a command which starts with one of
the prefix keys even when the region is active, you have three
diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el
index 652ab19ba6..ea036e836e 100644
--- a/lisp/epa-hook.el
+++ b/lisp/epa-hook.el
@@ -49,7 +49,7 @@ does that automatically."
:group 'epa-file)
(defvar epa-file-encrypt-to nil
- "*Recipient(s) used for encrypting files.
+ "Recipient(s) used for encrypting files.
May either be a string or a list of strings.")
(put 'epa-file-encrypt-to 'safe-local-variable
@@ -83,9 +83,10 @@ May either be a string or a list of strings.")
(auto-save-mode 0)))
(define-minor-mode auto-encryption-mode
- "Toggle automatic file encryption and decryption.
-With prefix argument ARG, turn auto encryption on if positive, else off.
-Return the new status of auto encryption (non-nil means on)."
+ "Toggle automatic file encryption/decryption (Auto Encryption mode).
+With a prefix argument ARG, enable Auto Encryption mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:global t :init-value t :group 'epa-file :version "23.1"
;; We'd like to use custom-initialize-set here so the setup is done
;; before dumping, but at the point where the defcustom is evaluated,
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 7c7f10de2c..d72d3f51bb 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,11 @@
+2011-10-20 Chong Yidong <cyd@gnu.org>
+
+ * erc.el (define-erc-module): Fix autogenerated docstring to
+ reflect Emacs 24 minor mode changes.
+
+ * erc-fill.el (erc-fill-mode):
+ * erc-track.el (erc-track-minor-mode): Doc fix.
+
2011-09-23 Antoine Levitt <antoine.levitt@gmail.com>
* erc-button.el (erc-button-next-function): Scoping fix
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 0b9a4051d6..3940cfbc9a 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -39,9 +39,12 @@
;;;###autoload (autoload 'erc-fill-mode "erc-fill" nil t)
(erc-define-minor-mode erc-fill-mode
"Toggle ERC fill mode.
-With numeric arg, turn ERC fill mode on if and only if arg is
-positive. In ERC fill mode, messages in the channel buffers are
-filled."
+With a prefix argument ARG, enable ERC fill mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+ERC fill mode is a global minor mode. When enabled, messages in
+the channel buffers are filled."
nil nil nil
:global t :group 'erc-fill
(if erc-fill-mode
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 28c1ced91c..b663aeed42 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."
;;;###autoload
(define-minor-mode erc-track-minor-mode
- "Global minor mode for tracking ERC buffers and showing activity in the
-mode line.
-
-This exists for the sole purpose of providing the C-c C-SPC and
-C-c C-@ keybindings. Make sure that you have enabled the track
-module, otherwise the keybindings will not do anything useful."
+ "Toggle mode line display of ERC activity (ERC Track minor mode).
+With a prefix argument ARG, enable ERC Track minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+ERC Track minor mode is a global minor mode. It exists for the
+sole purpose of providing the C-c C-SPC and C-c C-@ keybindings.
+Make sure that you have enabled the track module, otherwise the
+keybindings will not do anything useful."
:init-value nil
:lighter ""
:keymap erc-track-minor-mode-map
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index a4040b239c..2d8c2565f6 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1242,7 +1242,9 @@ Example:
(erc-define-minor-mode
,mode
,(format "Toggle ERC %S mode.
-With arg, turn ERC %S mode on if and only if arg is positive.
+With a prefix argument ARG, enable %s if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
%s" name name doc)
nil nil nil
:global ,(not local-p) :group (quote ,group)
diff --git a/lisp/face-remap.el b/lisp/face-remap.el
index 9e5ab58636..bfd973a299 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."
(make-variable-buffer-local 'text-scale-mode-amount)
(define-minor-mode text-scale-mode
- "Minor mode for displaying buffer text in a larger/smaller font than usual.
+ "Minor mode for displaying buffer text in a larger/smaller font.
The amount of scaling is determined by the variable
`text-scale-mode-amount': one step scales the global default
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index a18b892efe..54b17d58f3 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -639,8 +639,15 @@ a list of colors that the current display can handle."
(l list))
(while (cdr l)
(if (and (facemenu-color-equal (car (car l)) (car (car (cdr l))))
- (not (if (fboundp 'w32-default-color-map)
- (not (assoc (car (car l)) (w32-default-color-map))))))
+ ;; On MS-Windows, there are logical colors that might have
+ ;; the same value but different names and meanings. For
+ ;; example, `SystemMenuText' (the color w32 uses for the
+ ;; text in menu entries) and `SystemWindowText' (the default
+ ;; color w32 uses for the text in windows and dialogs) may
+ ;; be the same display color and be adjacent in the list.
+ ;; This makes them different to any other color. Bug#9722
+ (not (and (eq system-type 'windows-nt)
+ (string-match-p "^System" (car (car l))))))
(progn
(setcdr (car l) (cons (car (car (cdr l))) (cdr (car l))))
(setcdr l (cdr (cdr l))))
diff --git a/lisp/faces.el b/lisp/faces.el
index d5f0ef90ee..45173eb35d 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2366,6 +2366,10 @@ used to display the prompt text."
'((((background light)) :background "black")
(((background dark)) :background "white"))
"Basic face for the cursor color under X.
+Currently, only the `:background' attribute is meaningful; all
+other attributes are ignored. The cursor foreground color is
+taken from the background color of the underlying text.
+
Note: Other faces cannot inherit from the cursor face."
:version "21.1"
:group 'cursor
diff --git a/lisp/files.el b/lisp/files.el
index 6321cff91f..3ed9bd5a27 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4700,11 +4700,7 @@ and `view-read-only' is non-nil, enter view mode."
(not (eq (get major-mode 'mode-class) 'special)))
(view-mode-enter))
(t (setq buffer-read-only (not buffer-read-only))
- (force-mode-line-update)))
- (if (memq (vc-backend buffer-file-name) '(RCS SCCS))
- (message "%s" (substitute-command-keys
- (concat "File is under version-control; "
- "use \\[vc-next-action] to check in/out"))))))
+ (force-mode-line-update)))))
(defun insert-file (filename)
"Insert contents of file FILENAME into buffer after point.
diff --git a/lisp/follow.el b/lisp/follow.el
index 94a542f101..37295cc533 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -484,10 +484,13 @@ Used by `follow-window-size-change'.")
(put 'follow-mode 'permanent-local t)
;;;###autoload
(define-minor-mode follow-mode
- "Minor mode that combines windows into one tall virtual window.
+ "Toggle Follow mode.
+With a prefix argument ARG, enable Follow mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-The feeling of a \"virtual window\" has been accomplished by the use
-of two major techniques:
+Follow mode is a minor mode that combines windows into one tall
+virtual window. This is accomplished by two main techniques:
* The windows always displays adjacent sections of the buffer.
This means that whenever one window is moved, all the
diff --git a/lisp/font-core.el b/lisp/font-core.el
index fcaaf33b71..0db17efd7b 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
;; The mode for which font-lock was initialized, or nil if none.
(defvar font-lock-major-mode)
+
(define-minor-mode font-lock-mode
- "Toggle Font Lock mode.
-With arg, turn Font Lock mode off if and only if arg is a non-positive
-number; if arg is nil, toggle Font Lock mode; anything else turns Font
-Lock on.
-\(Font Lock is also known as \"syntax highlighting\".)
+ "Toggle syntax highlighting in this buffer (Font Lock mode).
+With a prefix argument ARG, enable Font Lock mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
When Font Lock mode is enabled, text is fontified as you type it:
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index c37a9ae916..2f4b7413dc 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -228,8 +228,11 @@
;; User variables.
(defcustom font-lock-maximum-size 256000
- "Maximum size of a buffer for buffer fontification.
-Only buffers less than this can be fontified when Font Lock mode is turned on.
+ "Maximum buffer size for unsupported buffer fontification.
+When `font-lock-support-mode' is nil, only buffers smaller than
+this are fontified. This variable has no effect if a Font Lock
+support mode (usually `jit-lock-mode') is enabled.
+
If nil, means size is irrelevant.
If a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),
where 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."
(const :tag "none" nil)
(integer :tag "size")))))
:group 'font-lock)
+(make-obsolete-variable 'font-lock-maximum-size nil "24.1")
(defcustom font-lock-maximum-decoration t
"Maximum decoration level for fontification.
diff --git a/lisp/frame.el b/lisp/frame.el
index ab9b085f1d..8359fed14a 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1134,7 +1134,10 @@ To get the frame's current border color, use `frame-parameters'."
(define-minor-mode auto-raise-mode
"Toggle whether or not the selected frame should auto-raise.
-With ARG, turn auto-raise mode on if and only if ARG is positive.
+With a prefix argument ARG, enable Auto Raise mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
Note that this controls Emacs's own auto-raise feature.
Some window managers allow you to enable auto-raise for certain windows.
You 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."
(define-minor-mode auto-lower-mode
"Toggle whether or not the selected frame should auto-lower.
-With ARG, turn auto-lower mode on if and only if ARG is positive.
+With a prefix argument ARG, enable Auto Lower mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
Note that this controls Emacs's own auto-lower feature.
Some window managers allow you to enable auto-lower for certain windows.
You can use that for Emacs windows if you wish, but if you do,
@@ -1556,14 +1562,13 @@ itself as a pre-command hook."
(setq blink-cursor-timer nil)))
(define-minor-mode blink-cursor-mode
- "Toggle blinking cursor mode.
-With a numeric argument, turn blinking cursor mode on if ARG is positive,
-otherwise turn it off. When blinking cursor mode is enabled, the
-cursor of the selected window blinks.
-
-Note that this command is effective only when Emacs
-displays through a window system, because then Emacs does its own
-cursor display. On a text-only terminal, this is not implemented."
+ "Toggle cursor blinking (Blink Cursor mode).
+With a prefix argument ARG, enable Blink Cursor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+This command is effective only on graphical frames. On text-only
+terminals, cursor blinking is controlled by the terminal."
:init-value (not (or noninteractive
no-blinking-cursor
(eq system-type 'ms-dos)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index cc2568a364..592d0671c2 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,9 +1,47 @@
+2011-10-20 Chong Yidong <cyd@gnu.org>
+
+ * gnus-cite.el (gnus-message-citation-mode): Doc fix (in Emacs 24,
+ calling a minor mode from Lisp with nil arg enables it, so we have to
+ make the working a bit ambiguous here).
+
+2011-10-18 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus-util.el (gnus-bound-and-true-p): Macro for XEmacs compatibility.
+ * nnir.el (nnir-mode): Use it.
+ * nnmairix.el (nnmairix-determine-original-group-from-registry):
+ Use it.
+
+ * nnir.el (gnus-registry-enabled): Defvar to keep the compiler happy.
+ * nnmairix.el (gnus-registry-enabled): Ditto.
+
+2011-10-17 Dave Abrahams <dave@boostpro.com>
+
+ * gnus-registry.el (gnus-registry-enabled): Add new variable. (Bug#9691)
+ (gnus-registry-install-shortcuts): Set `gnus-registry-install' to 'ask
+ only while we need to find out if it should be t or nil.
+ (gnus-registry-initialize): Don't set `gnus-registry-install' to t.
+ (gnus-registry-install-hooks): Set `gnus-registry-enabled' to t when
+ the registry is installed. Set it to nil when it's unloaded.
+ (gnus-registry-install-p): Provide user guidance for the initial value
+ of `gnus-registry-install' when it's 'ask, otherwise return its value.
+ * nnregistry.el (nnregistry-open-server, nnregistry-server-opened):
+ Use `gnus-registry-enabled' instead of `gnus-registry-install'.
+ * nnmairix.el (nnmairix-determine-original-group-from-registry):
+ Use `gnus-registry-enabled' instead of `gnus-registry-install'.
+ * nnir.el (nnir-mode): Use `gnus-registry-enabled' instead of
+ `gnus-registry-install'.
+
2011-10-17 Daiki Ueno <ueno@unixuser.org>
+ * mml2015.el (mml2015-epg-find-usable-key): Add comment about the
+ previous change.
+ * mml1991.el (mml1991-epg-find-usable-key): Skip the whole key if the
+ primary key is marked as disabled.
+
+2011-10-17 Christian von Roques <roques@mti.ag> (tiny change)
+
* mml2015.el (mml2015-epg-find-usable-key): Skip the whole key if the
primary key is marked as disabled.
- * mml1991.el (mml1991-epg-find-usable-key): Ditto.
- Thanks to Christian von Roques <roques@mti.ag>.
2011-10-11 Andreas Schwab <schwab@linux-m68k.org>
@@ -13071,13 +13109,11 @@
(mml-secure-cache-passphrase): New user option.
(mml-secure-passphrase-cache-expiry): New user option.
-2006-07-24 Daiki Ueno <ueno@unixuser.org>
+2006-07-24 David Smith <davidsmith@acm.org> (tiny change)
+ Andreas Vögele <andreas@altroot.de> (tiny change)
- * pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8
- letters from the end. Thanks to "David Smith" <davidsmith@acm.org> and
- andreas@altroot.de (Andreas Vögele).
-
- FIXME: Use `tiny change'?
+ * pgg-def.el (pgg-truncate-key-identifier):
+ Truncate the key ID to 8 letters from the end.
2006-07-19 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
@@ -19773,7 +19809,7 @@
* dns.el (dns-read-type): Add support for SVR. (small patch)
-2004-05-20 Teodor Zlatanov <tzz@lifelogs.com>
+2004-05-20 Adam Sjøgren <asjo@koldfront.dk>
* spam.el (spam-use-crm114, spam-crm114, spam-crm114-program)
(spam-crm114-header, spam-crm114-spam-switch)
@@ -19790,7 +19826,8 @@
(spam-crm114-unregister-spam-routine)
(spam-crm114-register-ham-routine)
(spam-crm114-unregister-ham-routine): Add CRM114 support.
- From asjo@koldfront.dk (Adam Sjøgren).
+
+2004-05-20 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.el: Add spam-use-crm114.
@@ -19927,10 +19964,13 @@
2004-05-18 Reiner Steib <Reiner.Steib@gmx.de>
+ * gnus-picon.el (gnus-picon-insert-glyph):
+ Add optional `nostring' argument.
+
+2004-05-18 Jesper Harder <harder@ifa.au.dk>
+
* gnus-picon.el (gnus-picon-style): New variable.
- (gnus-picon-insert-glyph): Add optional `nostring' argument.
(gnus-picon-transform-address): Support `gnus-picon-style'.
- From Jesper Harder <harder@ifa.au.dk>.
2004-05-18 Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -20189,13 +20229,10 @@
* spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage.
Use mapc when appropriate.
-2004-04-22 Teodor Zlatanov <tzz@lifelogs.com>
-
- FIXME: Make separate entries for each person.
-
- From Dan Christensen <jdc@uwo.ca>, asjo@koldfront.dk (Adam
- Sjøgren), Wes Hardaker <wes@hardakers.net>, and Michael Shields
- <shields@msrl.com>:
+2004-04-22 Dan Christensen <jdc@uwo.ca>
+ Adam Sjøgren <asjo@koldfront.dk>
+ Wes Hardaker <wes@hardakers.net>
+ Michael Shields <shields@msrl.com>
* spam.el (spam-necessary-extra-headers): Get the extra headers we
may need for spam sorting and scoring.
@@ -20205,7 +20242,7 @@
sorting.
(spam-extra-header-to-number): Add function to get a score from a
header.
- (spam-summary-score): Add function to get a numeric score from the
+ (spam-summary-score): Add function to get a numeric score from the
headers.
(spam-generic-score): Fix function doc, was in wrong place.
(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 d205437b81..7c36311356 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."
(autoload 'font-lock-set-defaults "font-lock")))
(define-minor-mode gnus-message-citation-mode
- "Toggle `gnus-message-citation-mode' in current buffer.
-This buffer local minor mode provides additional font-lock support for
-nested citations.
-With prefix ARG, turn `gnus-message-citation-mode' on if and only if ARG
-is positive.
-Automatically turn `font-lock-mode' on when `gnus-message-citation-mode'
-is turned on."
+ "Minor mode providing more font-lock support for nested citations.
+When enabled, it automatically turns on `font-lock-mode'."
nil ;; init-value
"" ;; lighter
nil ;; keymap
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index f8ff52f128..652e816e56 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."
(const :tag "Always Install" t)
(const :tag "Ask Me" ask)))
+(defvar gnus-registry-enabled)
+
(defvar gnus-summary-misc-menu) ;; Avoid byte compiler warning.
(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."
;; if this is called and the user doesn't want the
;; registry enabled, we'll ask anyhow
- (when (eq gnus-registry-install nil)
- (setq gnus-registry-install 'ask))
+ (unless gnus-registry-install
+ (let ((gnus-registry-install 'ask))
+ (gnus-registry-install-p)))
;; now the user is asked if gnus-registry-install is 'ask
(when (gnus-registry-install-p)
@@ -1151,7 +1154,6 @@ only the last one's marks are returned."
"Initialize the Gnus registry."
(interactive)
(gnus-message 5 "Initializing the registry")
- (setq gnus-registry-install t) ; in case it was 'ask or nil
(gnus-registry-install-hooks)
(gnus-registry-install-shortcuts)
(gnus-registry-read))
@@ -1160,6 +1162,7 @@ only the last one's marks are returned."
(defun gnus-registry-install-hooks ()
"Install the registry hooks."
(interactive)
+ (setq gnus-registry-enabled t)
(add-hook 'gnus-summary-article-move-hook 'gnus-registry-action)
(add-hook 'gnus-summary-article-delete-hook 'gnus-registry-action)
(add-hook 'gnus-summary-article-expire-hook 'gnus-registry-action)
@@ -1181,23 +1184,25 @@ only the last one's marks are returned."
(remove-hook 'gnus-save-newsrc-hook 'gnus-registry-save)
(remove-hook 'gnus-read-newsrc-el-hook 'gnus-registry-read)
- (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids))
+ (remove-hook 'gnus-summary-prepare-hook 'gnus-registry-register-message-ids)
+ (setq gnus-registry-enabled nil))
(add-hook 'gnus-registry-unload-hook 'gnus-registry-unload-hook)
(defun gnus-registry-install-p ()
+ "If the registry is not already enabled, and `gnus-registry-install' is t,
+the registry is enabled. If `gnus-registry-install' is `ask',
+the user is asked first. Returns non-nil iff the registry is enabled."
(interactive)
- (when (eq gnus-registry-install 'ask)
- (setq gnus-registry-install
- (gnus-y-or-n-p
- (concat "Enable the Gnus registry? "
- "See the variable `gnus-registry-install' "
- "to get rid of this query permanently. ")))
- (when gnus-registry-install
- ;; we just set gnus-registry-install to t, so initialize the registry!
+ (unless gnus-registry-enabled
+ (when (if (eq gnus-registry-install 'ask)
+ (gnus-y-or-n-p
+ (concat "Enable the Gnus registry? "
+ "See the variable `gnus-registry-install' "
+ "to get rid of this query permanently. "))
+ gnus-registry-install)
(gnus-registry-initialize)))
-;;; we could call it here: (customize-variable 'gnus-registry-install)
- gnus-registry-install)
+ gnus-registry-enabled)
;; TODO: a few things
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index e9d6ba423f..9c5e6e8312 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."
(gnus-macroexpand-all expanded environment)))
form))))
+(eval-when-compile
+ ;; This is unnecessary in the compiled version as it is a macro.
+ (if (fboundp 'bound-and-true-p)
+ (defalias 'gnus-bound-and-true-p 'bound-and-true-p)
+ (defmacro gnus-bound-and-true-p (var)
+ "Return the value of symbol VAR if it is bound, else nil."
+ `(and (boundp (quote ,var)) ,var))))
+
(provide 'gnus-util)
;;; gnus-util.el ends here
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 0be6a17d50..2d3c05864e 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -290,9 +290,10 @@ is `(valuefunc member)'."
(autoload 'nnimap-command "nnimap")
(autoload 'nnimap-possibly-change-group "nnimap")
(autoload 'nnimap-make-thread-query "nnimap")
- (autoload 'gnus-registry-action "gnus-registry")
- (defvar gnus-registry-install))
+ (autoload 'gnus-registry-action "gnus-registry"))
+;; Suppress byte-compiler warning `reference to free variable'
+(defvar gnus-registry-enabled)
(nnoo-declare nnir)
(nnoo-define-basics nnir)
@@ -1741,8 +1742,7 @@ environment unless `not-global' is non-nil."
(when (eq (car (gnus-find-method-for-group gnus-newsgroup-name)) 'nnir)
(setq gnus-summary-line-format
(or nnir-summary-line-format gnus-summary-line-format))
- (when (and (boundp 'gnus-registry-install)
- (eq gnus-registry-install t))
+ (when (gnus-bound-and-true-p gnus-registry-enabled)
(remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
(remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
(remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 3d1ac02b6a..1bf28c5d32 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -603,9 +603,11 @@ Other back ends might or might not work.")
nil))
;; Silence byte-compiler.
-(defvar gnus-registry-install)
(autoload 'gnus-registry-get-id-key "gnus-registry")
+;; Suppress byte-compiler warning `reference to free variable'
+(defvar gnus-registry-enabled)
+
(deffoo nnmairix-request-set-mark (group actions &optional server)
(when server
(nnmairix-open-server server))
@@ -1636,8 +1638,7 @@ search in raw mode."
(defun nnmairix-determine-original-group-from-registry (mid)
"Try to determinale original group for message-id MID from the registry."
- (when (and (boundp 'gnus-registry-install)
- gnus-registry-install)
+ (when (gnus-bound-and-true-p gnus-registry-enabled)
(unless (string-match "^<" mid)
(set mid (concat "<" mid)))
(unless (string-match ">$" mid)
diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el
index 359050c356..75a640a428 100644
--- a/lisp/gnus/nnregistry.el
+++ b/lisp/gnus/nnregistry.el
@@ -36,8 +36,11 @@
(nnoo-declare nnregistry)
+;; Suppress byte-compiler warning `reference to free variable'
+(defvar gnus-registry-enabled)
+
(deffoo nnregistry-server-opened (server)
- (eq gnus-registry-install t))
+ gnus-registry-enabled)
(deffoo nnregistry-close-server (server)
t)
@@ -46,7 +49,7 @@
nil)
(deffoo nnregistry-open-server (server &optional defs)
- (eq gnus-registry-install t))
+ gnus-registry-enabled)
(defvar nnregistry-within-nnregistry nil)
diff --git a/lisp/help.el b/lisp/help.el
index e2af0759a6..508a4e3262 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -977,13 +977,15 @@ function is called, the window to be resized is selected."
:version "20.4")
(define-minor-mode temp-buffer-resize-mode
- "Toggle mode which makes windows smaller for temporary buffers.
-With prefix argument ARG, turn the resizing of windows displaying
-temporary buffers on if ARG is positive or off otherwise.
-
-This mode makes a window the right height for its contents, but
-never more than `temp-buffer-max-height' nor less than
-`window-min-height'.
+ "Toggle auto-shrinking temp buffer windows (Temp Buffer Resize mode).
+With a prefix argument ARG, enable Temp Buffer Resize mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+When Temp Buffer Resize mode is enabled, the windows in which we
+show a temporary buffer are automatically reduced in height to
+fit the buffer's contents, but never more than
+`temp-buffer-max-height' nor less than `window-min-height'.
This mode is used by `help', `apropos' and `completion' buffers,
and some others."
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index a254abe33a..f659a7e8ee 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -283,14 +283,17 @@ a library is being loaded.")
;;;###autoload
(define-minor-mode hi-lock-mode
- "Toggle minor mode for interactively adding font-lock highlighting patterns.
-
-If ARG positive, turn hi-lock on. Issuing a hi-lock command will also
-turn hi-lock on. To turn hi-lock on in all buffers use
-`global-hi-lock-mode' or in your .emacs file (global-hi-lock-mode 1).
-When hi-lock is turned on, a \"Regexp Highlighting\" submenu is added
-to the \"Edit\" menu. The commands in the submenu, which can be
-called interactively, are:
+ "Toggle selective highlighting of patterns (Hi Lock mode).
+With a prefix argument ARG, enable Hi Lock mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Issuing one the highlighting commands listed below will
+automatically enable Hi Lock mode. To enable Hi Lock mode in all
+buffers, use `global-hi-lock-mode' or add (global-hi-lock-mode 1)
+to your init file. When Hi Lock mode is enabled, a \"Regexp
+Highlighting\" submenu is added to the \"Edit\" menu. The
+commands in the submenu, which can be called interactively, are:
\\[highlight-regexp] REGEXP FACE
Highlight matches of pattern REGEXP in current buffer with FACE.
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 041c1ee938..46db428068 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -326,14 +326,15 @@ remove it from existing buffers."
;;;###autoload
(define-minor-mode highlight-changes-mode
- "Toggle Highlight Changes mode.
+ "Toggle highlighting changes in this buffer (Highlight Changes mode).
+With a prefix argument ARG, enable Highlight Changes mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
-With ARG, turn Highlight Changes mode on if and only if arg is positive.
-
-In Highlight Changes mode changes are recorded with a text property.
-Normally they are displayed in a distinctive face, but command
-\\[highlight-changes-visible-mode] can be used to toggles this
-on and off.
+When Highlight Changes is enabled, changes are marked with a text
+property. Normally they are displayed in a distinctive face, but
+command \\[highlight-changes-visible-mode] can be used to toggles
+this on and off.
Other functions for buffers in this mode include:
\\[highlight-changes-next-change] - move point to beginning of next change
@@ -366,14 +367,17 @@ buffer with the contents of a file
;;;###autoload
(define-minor-mode highlight-changes-visible-mode
- "Toggle visiblility of changes when buffer is in Highlight Changes mode.
+ "Toggle visiblility of highlighting due to Highlight Changes mode.
+With a prefix argument ARG, enable Highlight Changes Visible mode
+if ARG is positive, and disable it otherwise. If called from
+Lisp, enable the mode if ARG is omitted or nil.
-This mode only has an effect when Highlight Changes mode is on.
-It allows toggling between whether or not the changed text is displayed
+Highlight Changes Visible mode only has an effect when Highlight
+Changes mode is on. When enabled, the changed text is displayed
in a distinctive face.
The default value can be customized with variable
-`highlight-changes-visibility-initial-state'
+`highlight-changes-visibility-initial-state'.
This command does not itself set highlight-changes mode."
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 846f5f9518..b535398f10 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.")
;;;###autoload
(define-minor-mode hl-line-mode
- "Buffer-local minor mode to highlight the line about point.
-With ARG, turn Hl-Line mode on if ARG is positive, off otherwise.
+ "Toggle highlighting of the current line (Hl-Line mode).
+With a prefix argument ARG, enable Hl-Line mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-If `hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the
+Hl-Line mode is a buffer-local minor mode. If
+`hl-line-sticky-flag' is non-nil, Hl-Line mode highlights the
line about the buffer's point in all windows. Caveat: the
buffer's point might be different from the point of a
non-selected window. Hl-Line mode uses the function
@@ -171,8 +174,10 @@ addition to `hl-line-highlight' on `post-command-hook'."
;;;###autoload
(define-minor-mode global-hl-line-mode
- "Global minor mode to highlight the line about point in the current window.
-With ARG, turn Global-Hl-Line mode on if ARG is positive, off otherwise.
+ "Toggle line highlighting in all buffers (Global Hl-Line mode).
+With a prefix argument ARG, enable Global Hl-Line mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
If `global-hl-line-sticky-flag' is non-nil, Global Hl-Line mode
highlights the line about the current buffer's point in all
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 073efaeee2..6c8db872c0 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -217,8 +217,10 @@ Currently, this only applies to `ibuffer-saved-filters' and
;;;###autoload
(define-minor-mode ibuffer-auto-mode
- "Toggle use of Ibuffer's auto-update facility.
-With numeric ARG, enable auto-update if and only if ARG is positive."
+ "Toggle use of Ibuffer's auto-update facility (Ibuffer Auto mode).
+With a prefix argument ARG, enable Ibuffer Auto mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
nil nil nil
(unless (derived-mode-p 'ibuffer-mode)
(error "This buffer is not in Ibuffer mode"))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 5a86508e14..17ddddbd17 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -2648,12 +2648,14 @@ will be inserted before the group at point."
;;;;;; ibuffer-backward-filter-group ibuffer-forward-filter-group
;;;;;; ibuffer-toggle-filter-group ibuffer-mouse-toggle-filter-group
;;;;;; ibuffer-interactive-filter-by-mode ibuffer-mouse-filter-by-mode
-;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "617b36fc8479547d679cf0103f82e3ff")
+;;;;;; ibuffer-auto-mode) "ibuf-ext" "ibuf-ext.el" "25e69a1e030791b3a3e7d91d4377173a")
;;; Generated autoloads from ibuf-ext.el
(autoload 'ibuffer-auto-mode "ibuf-ext" "\
-Toggle use of Ibuffer's auto-update facility.
-With numeric ARG, enable auto-update if and only if ARG is positive.
+Toggle use of Ibuffer's auto-update facility (Ibuffer Auto mode).
+With a prefix argument ARG, enable Ibuffer Auto mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
\(fn &optional ARG)" t nil)
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index bdd19194c2..53876f48a0 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -172,9 +172,10 @@ except those on this list.")
;;;_ > icomplete-mode (&optional prefix)
;;;###autoload
(define-minor-mode icomplete-mode
- "Toggle incremental minibuffer completion for this Emacs session.
-With a numeric argument, turn Icomplete mode on if ARG is positive,
-otherwise turn it off."
+ "Toggle incremental minibuffer completion (Icomplete mode).
+With a prefix argument ARG, enable Icomplete mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:global t :group 'icomplete
(if icomplete-mode
;; The following is not really necessary after first time -
diff --git a/lisp/ido.el b/lisp/ido.el
index 46ac5784d0..88599013ce 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -461,12 +461,6 @@ See `ido-default-file-method' for details."
(const :tag "Show in other frame" other-frame)
(const :tag "Ask to show in other frame" maybe-frame)
(const :tag "Raise frame if already shown" raise-frame))
- :type '(choice (const selected-window)
- (const other-window)
- (const display)
- (const other-frame)
- (const maybe-frame)
- (const raise-frame))
:group 'ido)
(defcustom ido-enable-flex-matching nil
@@ -1475,8 +1469,10 @@ Removes badly formatted data and ignored directories."
(add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
(define-minor-mode ido-everywhere
- "Toggle using ido-mode everywhere file and directory names are read.
-With ARG, turn ido-mode on if arg is positive, off otherwise."
+ "Toggle use of Ido for all buffer/file reading.
+With a prefix argument ARG, enable this feature if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:global t
:group 'ido
(when (get 'ido-everywhere 'file)
diff --git a/lisp/image-file.el b/lisp/image-file.el
index bd1c101d52..52012b12a5 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."
;;;###autoload
(define-minor-mode auto-image-file-mode
- "Toggle visiting of image files as images.
-With prefix argument ARG, turn on if positive, otherwise off.
-Returns non-nil if the new state is enabled.
+ "Toggle visiting of image files as images (Auto Image File mode).
+With a prefix argument ARG, enable Auto Image File mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-Image files are those whose name has an extension in
+An image file is one whose name has an extension in
`image-file-name-extensions', or matches a regexp in
`image-file-name-regexps'."
:global t
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 0995048fce..30223e69ae 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."
;;;###autoload
(define-minor-mode image-minor-mode
- "Toggle Image minor mode.
-With arg, turn Image minor mode on if arg is positive, off otherwise.
-It provides the key \\<image-mode-map>\\[image-toggle-display] \
-to switch back to `image-mode'
-to display an image file as the actual image."
+ "Toggle Image minor mode in this buffer.
+With a prefix argument ARG, enable Image minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Image minor mode provides the key \\<image-mode-map>\\[image-toggle-display],
+to switch back to `image-mode' and display an image file as the
+actual image."
nil (:eval (if image-type (format " Image[%s]" image-type) " Image"))
image-minor-mode-map
:group 'image
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 4a387a233a..cac37b3b8c 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'."
;; (allowing for whitespace at bob). Note: 'DOCTYPE NETSCAPE' is
;; useful for Mozilla bookmark files.
(when (and (re-search-forward "\\`[[:space:]\n]*\\(<!doctype[[:space:]\n]+\\(html\\|netscape\\)\\|<html\\)" size t)
- (re-search-forward "<meta\\s-+http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*charset=\\(.+?\\)[\"']" size t))
- (let* ((match (match-string 1))
+ (re-search-forward "<meta\\s-+\\(http-equiv=[\"']?content-type[\"']?\\s-+content=[\"']text/\\sw+;\\s-*\\)?charset=[\"']?\\(.+?\\)[\"'\\s-/>]" size t))
+ (let* ((match (match-string 2))
(sym (intern (downcase match))))
(if (coding-system-p sym)
sym
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index 70dda5442d..a7d3328526 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -1424,10 +1424,13 @@ See the variable `iswitchb-case' for details."
;;;###autoload
(define-minor-mode iswitchb-mode
- "Toggle Iswitchb global minor mode.
-With arg, turn Iswitchb mode on if ARG is positive, otherwise turn it off.
-This mode enables switching between buffers using substrings. See
-`iswitchb' for details."
+ "Toggle Iswitchb mode.
+With a prefix argument ARG, enable Iswitchb mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Iswitchb mode is a global minor mode that enables switching
+between buffers using substrings. See `iswitchb' for details."
nil nil iswitchb-global-map :global t :group 'iswitchb
(if iswitchb-mode
(add-hook 'minibuffer-setup-hook 'iswitchb-minibuffer-setup)
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index d28fde0b21..bf312445f1 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."
:group 'jka-compr)
(define-minor-mode auto-compression-mode
- "Toggle automatic file compression and uncompression.
-With prefix argument ARG, turn auto compression on if positive, else off.
-Return the new status of auto compression (non-nil means on)."
+ "Toggle Auto Compression mode.
+With a prefix argument ARG, enable Auto Compression mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+Auto Compression mode is a global minor mode. When enabled,
+compressed files are automatically uncompressed for reading, and
+compressed when writing."
:global t :init-value t :group 'jka-compr :version "22.1"
(let* ((installed (jka-compr-installed-p))
(flag auto-compression-mode))
diff --git a/lisp/json.el b/lisp/json.el
index 47448f4702..33e985abbe 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -3,7 +3,7 @@
;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
;; Author: Edward O'Connor <ted@oconnor.cx>
-;; Version: 1.2
+;; Version: 1.3
;; Keywords: convenience
;; This file is part of GNU Emacs.
@@ -47,6 +47,7 @@
;; other cleanups, bugfixes, and improvements.
;; 2006-12-29 - XEmacs support, from Aidan Kehoe <kehoea@parhasard.net>.
;; 2008-02-21 - Installed in GNU Emacs.
+;; 2011-10-17 - Patch `json-alist-p' and `json-plist-p' to avoid recursion -tzz
;;; Code:
@@ -108,16 +109,20 @@ this around your call to `json-read' instead of `setq'ing it.")
(defun json-alist-p (list)
"Non-null if and only if LIST is an alist."
- (or (null list)
- (and (consp (car list))
- (json-alist-p (cdr list)))))
+ (while (consp list)
+ (setq list (if (consp (car list))
+ (cdr list)
+ 'not-alist)))
+ (null list))
(defun json-plist-p (list)
"Non-null if and only if LIST is a plist."
- (or (null list)
- (and (keywordp (car list))
- (consp (cdr list))
- (json-plist-p (cddr list)))))
+ (while (consp list)
+ (setq list (if (and (keywordp (car list))
+ (consp (cdr list)))
+ (cddr list)
+ 'not-plist)))
+ (null list))
;; Reader utilities
diff --git a/lisp/linum.el b/lisp/linum.el
index db6e4c4997..4e58a1b711 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."
;;;###autoload
(define-minor-mode linum-mode
- "Toggle display of line numbers in the left margin."
+ "Toggle display of line numbers in the left margin (Linum mode).
+With a prefix argument ARG, enable Linum mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+Linum mode is a buffer-local minor mode."
:lighter "" ; for desktop.el
(if linum-mode
(progn
diff --git a/lisp/longlines.el b/lisp/longlines.el
index f625d8fcac..b4d15da78a 100644
--- a/lisp/longlines.el
+++ b/lisp/longlines.el
@@ -95,21 +95,22 @@ This is used when `longlines-show-hard-newlines' is on."
;;;###autoload
(define-minor-mode longlines-mode
- "Minor mode to wrap long lines.
-In Long Lines mode, long lines are wrapped if they extend beyond
-`fill-column'. The soft newlines used for line wrapping will not
-show up when the text is yanked or saved to disk.
-
-With no argument, this command toggles Long Lines mode.
-With a prefix argument ARG, turn Long Lines minor mode on if ARG is positive,
-otherwise turn it off.
-
-If the variable `longlines-auto-wrap' is non-nil, lines are automatically
-wrapped whenever the buffer is changed. You can always call
-`fill-paragraph' to fill individual paragraphs.
-
-If the variable `longlines-show-hard-newlines' is non-nil, hard newlines
-are indicated with a symbol."
+ "Toggle Long Lines mode in this buffer.
+With a prefix argument ARG, enable Long Lines mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Long Lines mode is enabled, long lines are wrapped if they
+extend beyond `fill-column'. The soft newlines used for line
+wrapping will not show up when the text is yanked or saved to
+disk.
+
+If the variable `longlines-auto-wrap' is non-nil, lines are
+automatically wrapped whenever the buffer is changed. You can
+always call `fill-paragraph' to fill individual paragraphs.
+
+If the variable `longlines-show-hard-newlines' is non-nil, hard
+newlines are indicated with a symbol."
:group 'longlines :lighter " ll"
(if longlines-mode
;; Turn on longlines mode
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 8dac3be0e5..0f1669562d 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -788,9 +788,14 @@ being set it is automatically widened."
;;;###autoload
(define-minor-mode footnote-mode
- "Toggle footnote minor mode.
-This minor mode provides footnote support for `message-mode'. To get
-started, play around with the following keys:
+ "Toggle Footnote mode.
+With a prefix argument ARG, enable Footnote mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Footnode mode is a buffer-local minor mode. If enabled, it
+provides footnote support for `message-mode'. To get started,
+play around with the following keys:
\\{footnote-minor-mode-map}"
:lighter footnote-mode-line-string
:keymap footnote-minor-mode-map
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index 901eb002dc..2472b8a187 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -133,7 +133,15 @@
;;;###autoload
(define-minor-mode mail-abbrevs-mode
- "Non-nil means expand mail aliases as abbrevs, in certain message headers."
+ "Toggle abbrev expansion of mail aliases (Mail Abbrevs mode).
+With a prefix argument ARG, enable Mail Abbrevs mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Mail Abbrevs mode is a global minor mode. When enabled,
+abbrev-like expansion is performed when editing certain mail
+headers (those specified by `mail-abbrev-mode-regexp'), based on
+the entries in your `mail-personal-alias-file'."
:global t
:group 'mail-abbrev
:version "20.3"
diff --git a/lisp/master.el b/lisp/master.el
index 1ea0a24ca9..c3e9004ca0 100644
--- a/lisp/master.el
+++ b/lisp/master.el
@@ -72,12 +72,12 @@ You can set this variable using `master-set-slave'.")
;;;###autoload
(define-minor-mode master-mode
"Toggle Master mode.
-With no argument, this command toggles the mode.
-Non-null prefix argument turns on the mode.
-Null prefix argument turns off the mode.
+With a prefix argument ARG, enable Master mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-When Master mode is enabled, you can scroll the slave buffer using the
-following commands:
+When Master mode is enabled, you can scroll the slave buffer
+using the following commands:
\\{master-mode-map}
diff --git a/lisp/mb-depth.el b/lisp/mb-depth.el
index 2ed692c1b8..22fd84a67a 100644
--- a/lisp/mb-depth.el
+++ b/lisp/mb-depth.el
@@ -56,12 +56,14 @@ The prompt should already have been inserted."
;;;###autoload
(define-minor-mode minibuffer-depth-indicate-mode
"Toggle Minibuffer Depth Indication mode.
-When active, any recursive use of the minibuffer will show
-the recursion depth in the minibuffer prompt. This is only
-useful if `enable-recursive-minibuffers' is non-nil.
+With a prefix argument ARG, enable Minibuffer Depth Indication
+mode if ARG is positive, and disable it otherwise. If called
+from Lisp, enable the mode if ARG is omitted or nil.
-With prefix argument ARG, turn on if positive, otherwise off.
-Returns non-nil if the new state is enabled."
+Minibuffer Depth Indication mode is a global minor mode. When
+enabled, any recursive use of the minibuffer will show the
+recursion depth in the minibuffer prompt. This is only useful if
+`enable-recursive-minibuffers' is non-nil."
:global t
:group 'minibuffer
(if minibuffer-depth-indicate-mode
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index eceb3afc14..75a2d70da5 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -92,17 +92,25 @@
:visible (fboundp 'make-frame-command)
:help ,(purecopy "Open a new frame")))
+ (define-key menu [separator-frame]
+ menu-bar-separator)
+
(define-key menu [one-window]
- `(menu-item ,(purecopy "Remove Splits") delete-other-windows
+ `(menu-item ,(purecopy "Remove Other Windows") delete-other-windows
:enable (not (one-window-p t nil))
- :help ,(purecopy
- "Selected window grows to fill the whole frame")))
+ :help ,(purecopy "Make selected window fill whole frame")))
- (define-key menu [split-window]
- `(menu-item ,(purecopy "Split Window") split-window-vertically
+ (define-key menu [new-window-on-right]
+ `(menu-item ,(purecopy "New Window on Right") split-window-side-by-side
:enable (and (menu-bar-menu-frame-live-and-visible-p)
(menu-bar-non-minibuffer-window-p))
- :help ,(purecopy "Split selected window in two windows")))
+ :help ,(purecopy "Make new window on right of selected one")))
+
+ (define-key menu [new-window-below]
+ `(menu-item ,(purecopy "New Window Below") split-window-above-each-other
+ :enable (and (menu-bar-menu-frame-live-and-visible-p)
+ (menu-bar-non-minibuffer-window-p))
+ :help ,(purecopy "Make new window below selected one")))
(define-key menu [separator-window]
menu-bar-separator)
@@ -433,7 +441,7 @@
(defvar menu-bar-edit-menu
(let ((menu (make-sparse-keymap "Edit")))
-
+
(define-key menu [props]
`(menu-item ,(purecopy "Text Properties") facemenu-menu))
@@ -1645,7 +1653,7 @@ key, a click, or a menu-item")))
(defvar menu-bar-search-documentation-menu
(let ((menu (make-sparse-keymap "Search Documentation")))
-
+
(define-key menu [search-documentation-strings]
`(menu-item ,(purecopy "Search Documentation Strings...") apropos-documentation
:help
@@ -2161,11 +2169,13 @@ It must accept a buffer as its only required argument.")
:help ,(purecopy "Put previous minibuffer history element in the minibuffer"))))
(define-minor-mode menu-bar-mode
- "Toggle display of a menu bar on each frame.
+ "Toggle display of a menu bar on each frame (Menu Bar mode).
+With a prefix argument ARG, enable Menu Bar mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Menu Bar mode if ARG is omitted or nil.
+
This command applies to all frames that exist and frames to be
-created in the future.
-With a numeric argument, if the argument is positive,
-turn on menu bars; otherwise, turn off menu bars."
+created in the future."
:init-value t
:global t
;; 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 e6ebe3c53f..405721f97e 100644
--- a/lisp/minibuf-eldef.el
+++ b/lisp/minibuf-eldef.el
@@ -131,14 +131,16 @@ been set up by `minibuf-eldef-setup-minibuffer'."
;;;###autoload
(define-minor-mode minibuffer-electric-default-mode
"Toggle Minibuffer Electric Default mode.
-When active, minibuffer prompts that show a default value only show the
-default when it's applicable -- that is, when hitting RET would yield
-the default value. If the user modifies the input such that hitting RET
-would enter a non-default value, the prompt is modified to remove the
-default indication.
-
-With prefix argument ARG, turn on if positive, otherwise off.
-Returns non-nil if the new state is enabled."
+With a prefix argument ARG, enable Minibuffer Electric Default
+mode if ARG is positive, and disable it otherwise. If called
+from Lisp, enable the mode if ARG is omitted or nil.
+
+Minibuffer Electric Default mode is a global minor mode. When
+enabled, minibuffer prompts that show a default value only show
+the default when it's applicable -- that is, when hitting RET
+would yield the default value. If the user modifies the input
+such that hitting RET would enter a non-default value, the prompt
+is modified to remove the default indication."
:global t
:group 'minibuffer
(if minibuffer-electric-default-mode
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index acb71d115d..38785fc48e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -596,7 +596,7 @@ Moves point to the end of the new text."
(setq end (- end suffix-len))
(setq newtext (substring newtext 0 (- suffix-len))))
(goto-char beg)
- (insert newtext)
+ (insert-and-inherit newtext)
(delete-region (point) (+ (point) (- end beg)))
(forward-char suffix-len)))
@@ -927,9 +927,7 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
;; file, so `try-completion' actually completes to
;; that file.
(= (length string) (length compl)))
- (goto-char end)
- (insert compl)
- (delete-region beg end))))
+ (completion--replace beg end compl))))
(exit-minibuffer))
((memq minibuffer-completion-confirm '(confirm confirm-after-completion))
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index 50d221b6fa..bcf1749e13 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."
;;;###autoload
(define-minor-mode mouse-sel-mode
"Toggle Mouse Sel mode.
-With prefix ARG, turn Mouse Sel mode on if and only if ARG is positive.
-Returns the new status of Mouse Sel mode (non-nil means on).
+With a prefix argument ARG, enable Mouse Sel mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-When Mouse Sel mode is enabled, mouse selection is enhanced in
-various ways:
+Mouse Sel mode is a global minor mode. When enabled, mouse
+selection is enhanced in various ways:
- Double-clicking on symbol constituents selects symbols.
Double-clicking on quotes or parentheses selects sexps.
diff --git a/lisp/mouse.el b/lisp/mouse.el
index ff17528844..9b1cf48ccd 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -372,300 +372,167 @@ This command must be bound to a mouse click."
(split-window-horizontally
(min (max new-width first-col) last-col))))))
-(defun mouse-drag-window-above (window)
- "Return the (or a) window directly above WINDOW.
-That means one whose bottom edge is at the same height as WINDOW's top edge."
- (let ((start-top (nth 1 (window-edges window)))
- (start-left (nth 0 (window-edges window)))
- (start-right (nth 2 (window-edges window)))
- (start-window window)
- above-window)
- (setq window (previous-window window 0))
- (while (and (not above-window) (not (eq window start-window)))
- (let ((left (nth 0 (window-edges window)))
- (right (nth 2 (window-edges window))))
- (when (and (= (+ (window-height window) (nth 1 (window-edges window)))
- start-top)
- (or (and (<= left start-left) (<= start-right right))
- (and (<= start-left left) (<= left start-right))
- (and (<= start-left right) (<= right start-right))))
- (setq above-window window)))
- (setq window (previous-window window)))
- above-window))
-
-(defun mouse-drag-move-window-bottom (window growth)
- "Move the bottom of WINDOW up or down by GROWTH lines.
-Move it down if GROWTH is positive, or up if GROWTH is negative.
-If this would make WINDOW too short,
-shrink the window or windows above it to make room."
- (condition-case nil
- (adjust-window-trailing-edge window growth nil)
- (error nil)))
-
-(defsubst mouse-drag-move-window-top (window growth)
- "Move the top of WINDOW up or down by GROWTH lines.
-Move it down if GROWTH is positive, or up if GROWTH is negative.
-If this would make WINDOW too short, shrink the window or windows
-above it to make room."
- ;; Moving the top of WINDOW is actually moving the bottom of the
- ;; window above.
- (let ((window-above (mouse-drag-window-above window)))
- (and window-above
- (mouse-drag-move-window-bottom window-above (- growth)))))
-
-(defun mouse-drag-mode-line-1 (start-event mode-line-p)
- "Change the height of a window by dragging on the mode or header line.
-START-EVENT is the starting mouse-event of the drag action.
-MODE-LINE-P non-nil means dragging a mode line; nil means a header line."
+;; `mouse-drag-line' is now the common routine for handling all line
+;; dragging events combining the earlier `mouse-drag-mode-line-1' and
+;; `mouse-drag-vertical-line'. It should improve the behavior of line
+;; dragging wrt Emacs 23 as follows:
+
+;; (1) Gratuitous error messages and restrictions have been (hopefully)
+;; removed. (The help-echo that dragging the mode-line can resize a
+;; one-window-frame's window will still show through via bindings.el.)
+
+;; (2) No gratuitous selection of other windows should happen. (This
+;; has not been completely fixed for mouse-autoselected windows yet.)
+
+;; (3) Mouse clicks below a scroll-bar should pass through via unread
+;; command events.
+
+;; Note that `window-in-direction' replaces `mouse-drag-window-above'
+;; and `mouse-drag-vertical-line-rightward-window' with Emacs 24.1.
+(defun mouse-drag-line (start-event line)
+ "Drag some line with the mouse.
+START-EVENT is the starting mouse-event of the drag action. LINE
+must be one of the symbols header, mode, or vertical."
;; Give temporary modes such as isearch a chance to turn off.
(run-hooks 'mouse-leave-buffer-hook)
- (let* ((done nil)
- (echo-keystrokes 0)
+ (let* ((echo-keystrokes 0)
(start (event-start start-event))
- (start-event-window (posn-window start))
- (start-event-frame (window-frame start-event-window))
- (start-nwindows (count-windows t))
+ (window (posn-window start))
+ (frame (window-frame window))
+ (minibuffer-window (minibuffer-window frame))
(on-link (and mouse-1-click-follows-link
(or mouse-1-click-in-non-selected-windows
- (eq (posn-window start) (selected-window)))
- (mouse-on-link-p start)))
- (minibuffer (frame-parameter nil 'minibuffer))
- should-enlarge-minibuffer event mouse y top bot edges wconfig growth)
+ (eq window (selected-window)))
+ (mouse-on-link-p start)))
+ (enlarge-minibuffer
+ (and (eq line 'mode)
+ (not resize-mini-windows)
+ (eq (window-frame minibuffer-window) frame)
+ (not (one-window-p t frame))
+ (= (nth 1 (window-edges minibuffer-window))
+ (nth 3 (window-edges window)))))
+ (which-side
+ (and (eq line 'vertical)
+ (or (cdr (assq 'vertical-scroll-bars (frame-parameters frame)))
+ 'right)))
+ done event mouse growth dragged)
+ (cond
+ ((eq line 'header)
+ ;; Check whether header-line can be dragged at all.
+ (if (window-at-side-p window 'top)
+ (setq done t)
+ (setq window (window-in-direction 'above window t))))
+ ((eq line 'mode)
+ ;; Check whether mode-line can be dragged at all.
+ (when (and (window-at-side-p window 'bottom)
+ (not enlarge-minibuffer))
+ (setq done t)))
+ ((eq line 'vertical)
+ ;; Get the window to adjust for the vertical case.
+ (setq window
+ (if (eq which-side 'right)
+ ;; If the scroll bar is on the window's right or there's
+ ;; no scroll bar at all, adjust the window where the
+ ;; start-event occurred.
+ window
+ ;; If the scroll bar is on the start-event window's left,
+ ;; adjust the window on the left of it.
+ (window-in-direction 'left window t)))))
+
+ ;; Start tracking.
(track-mouse
- (progn
- ;; if this is the bottommost ordinary window, then to
- ;; move its modeline the minibuffer must be enlarged.
- (setq should-enlarge-minibuffer
- (and minibuffer
- mode-line-p
- (not (one-window-p t))
- (= (nth 1 (window-edges minibuffer))
- (nth 3 (window-edges start-event-window)))))
-
- ;; loop reading events and sampling the position of
- ;; the mouse.
- (while (not done)
- (setq event (read-event)
- mouse (mouse-position))
-
- ;; do nothing if
- ;; - there is a switch-frame event.
- ;; - the mouse isn't in the frame that we started in
- ;; - the mouse isn't in any Emacs frame
- ;; drag if
- ;; - there is a mouse-movement event
- ;; - there is a scroll-bar-movement event
- ;; (same as mouse movement for our purposes)
- ;; quit if
- ;; - there is a keyboard event or some other unknown event.
- (cond ((not (consp event))
- (setq done t))
-
- ((memq (car event) '(switch-frame select-window))
- nil)
-
- ((not (memq (car event) '(mouse-movement scroll-bar-movement)))
- (when (consp event)
- ;; Do not unread a drag-mouse-1 event since it will cause the
- ;; selection of the window above when dragging the modeline
- ;; above the selected window.
- (unless (eq (car event) 'drag-mouse-1)
- (push event unread-command-events)))
- (setq done t))
-
- ((not (eq (car mouse) start-event-frame))
- nil)
-
- ((null (car (cdr mouse)))
- nil)
-
- (t
- (setq y (cdr (cdr mouse))
- edges (window-edges start-event-window)
- top (nth 1 edges)
- bot (nth 3 edges))
-
- ;; compute size change needed
- (cond (mode-line-p
- (setq growth (- y bot -1)))
- (t ; header line
- (when (< (- bot y) window-min-height)
- (setq y (- bot window-min-height)))
- ;; The window's top includes the header line!
- (setq growth (- top y))))
- (setq wconfig (current-window-configuration))
-
- ;; Check for an error case.
- (when (and (/= growth 0)
- (not minibuffer)
- (one-window-p t))
- (error "Attempt to resize sole window"))
-
- ;; If we ever move, make sure we don't mistakenly treat
- ;; some unexpected `mouse-1' final event as a sign that
- ;; this whole drag was nothing more than a click.
- (if (/= growth 0) (setq on-link nil))
-
- ;; grow/shrink minibuffer?
- (if should-enlarge-minibuffer
- (unless resize-mini-windows
- (mouse-drag-move-window-bottom start-event-window growth))
- ;; no. grow/shrink the selected window
- ;(message "growth = %d" growth)
- (if mode-line-p
- (mouse-drag-move-window-bottom start-event-window growth)
- (mouse-drag-move-window-top start-event-window growth)))
-
- ;; if this window's growth caused another
- ;; window to be deleted because it was too
- ;; short, rescind the change.
- ;;
- ;; if size change caused space to be stolen
- ;; from a window above this one, rescind the
- ;; change, but only if we didn't grow/shrink
- ;; the minibuffer. minibuffer size changes
- ;; can cause all windows to shrink... no way
- ;; around it.
- (when (or (/= start-nwindows (count-windows t))
- (and (not should-enlarge-minibuffer)
- (> growth 0)
- mode-line-p
- (/= top
- (nth 1 (window-edges
- ;; Choose right window.
- start-event-window)))))
- (set-window-configuration wconfig)))))
-
- ;; Presumably if this was just a click, the last event should
- ;; be `mouse-1', whereas if this did move the mouse, it should be
- ;; a `drag-mouse-1'. In any case `on-link' would have been nulled
- ;; above if there had been any significant mouse movement.
- (when (and on-link
- (eq 'mouse-1 (car-safe (car unread-command-events))))
- ;; If mouse-2 has never been done by the user, it doesn't
- ;; have the necessary property to be interpreted correctly.
- (put 'mouse-2 'event-kind 'mouse-click)
- (setcar unread-command-events
- (cons 'mouse-2 (cdar unread-command-events))))))))
+ ;; Loop reading events and sampling the position of the mouse.
+ (while (not done)
+ (setq event (read-event))
+ (setq mouse (mouse-position))
+ ;; Do nothing if
+ ;; - there is a switch-frame event.
+ ;; - the mouse isn't in the frame that we started in
+ ;; - the mouse isn't in any Emacs frame
+ ;; Drag if
+ ;; - there is a mouse-movement event
+ ;; - there is a scroll-bar-movement event (??)
+ ;; (same as mouse movement for our purposes)
+ ;; Quit if
+ ;; - there is a keyboard event or some other unknown event.
+ (cond
+ ((not (consp event))
+ (setq done t))
+ ((memq (car event) '(switch-frame select-window))
+ nil)
+ ((not (memq (car event) '(mouse-movement scroll-bar-movement)))
+ (when (consp event)
+ ;; Do not unread a drag-mouse-1 event to avoid selecting
+ ;; some other window. For vertical line dragging do not
+ ;; unread mouse-1 events either (but only if we dragged at
+ ;; least once to allow mouse-1 clicks get through.
+ (unless (and dragged
+ (if (eq line 'vertical)
+ (memq (car event) '(drag-mouse-1 mouse-1))
+ (eq (car event) 'drag-mouse-1)))
+ (push event unread-command-events)))
+ (setq done t))
+ ((or (not (eq (car mouse) frame)) (null (car (cdr mouse))))
+ nil)
+ ((eq line 'vertical)
+ ;; Drag vertical divider (the calculations below are those
+ ;; from Emacs 23).
+ (setq growth
+ (- (- (cadr mouse)
+ (if (eq which-side 'right) 0 2))
+ (nth 2 (window-edges window))
+ -1))
+ (unless (zerop growth)
+ ;; Remember that we dragged.
+ (setq dragged t))
+ (adjust-window-trailing-edge window growth t))
+ (t
+ ;; Drag horizontal divider (the calculations below are those
+ ;; from Emacs 23).
+ (setq growth
+ (if (eq line 'mode)
+ (- (cddr mouse) (nth 3 (window-edges window)) -1)
+ ;; The window's top includes the header line!
+ (- (nth 3 (window-edges window)) (cddr mouse))))
+
+ (unless (zerop growth)
+ ;; Remember that we dragged.
+ (setq dragged t))
+
+ (cond
+ (enlarge-minibuffer
+ (adjust-window-trailing-edge window growth))
+ ((eq line 'mode)
+ (adjust-window-trailing-edge window growth))
+ (t
+ (adjust-window-trailing-edge window (- growth)))))))
+
+ ;; Presumably, if this was just a click, the last event should be
+ ;; `mouse-1', whereas if this did move the mouse, it should be a
+ ;; `drag-mouse-1'. `dragged' nil tells us that we never dragged
+ ;; and `on-link' tells us that there is a link to follow.
+ (when (and on-link (not dragged)
+ (eq 'mouse-1 (car-safe (car unread-command-events))))
+ ;; If mouse-2 has never been done by the user, it doesn't
+ ;; have the necessary property to be interpreted correctly.
+ (put 'mouse-2 'event-kind 'mouse-click)
+ (setcar unread-command-events
+ (cons 'mouse-2 (cdar unread-command-events)))))))
(defun mouse-drag-mode-line (start-event)
"Change the height of a window by dragging on the mode line."
(interactive "e")
- (mouse-drag-mode-line-1 start-event t))
+ (mouse-drag-line start-event 'mode))
(defun mouse-drag-header-line (start-event)
- "Change the height of a window by dragging on the header line.
-Windows whose header-lines are at the top of the frame cannot be
-resized by dragging their header-line."
+ "Change the height of a window by dragging on the header line."
(interactive "e")
- ;; Changing the window's size by dragging its header-line when the
- ;; header-line is at the top of the frame is somewhat strange,
- ;; because the header-line doesn't move, so don't do it.
- (let* ((start (event-start start-event))
- (window (posn-window start))
- (frame (window-frame window))
- (first-window (frame-first-window frame)))
- (unless (or (eq window first-window)
- (= (nth 1 (window-edges window))
- (nth 1 (window-edges first-window))))
- (mouse-drag-mode-line-1 start-event nil))))
-
-
-(defun mouse-drag-vertical-line-rightward-window (window)
- "Return a window that is immediately to the right of WINDOW, or nil."
- (let ((bottom (nth 3 (window-inside-edges window)))
- (left (nth 0 (window-inside-edges window)))
- best best-right
- (try (previous-window window)))
- (while (not (eq try window))
- (let ((try-top (nth 1 (window-inside-edges try)))
- (try-bottom (nth 3 (window-inside-edges try)))
- (try-right (nth 2 (window-inside-edges try))))
- (if (and (< try-top bottom)
- (>= try-bottom bottom)
- (< try-right left)
- (or (null best-right) (> try-right best-right)))
- (setq best-right try-right best try)))
- (setq try (previous-window try)))
- best))
+ (mouse-drag-line start-event 'header))
(defun mouse-drag-vertical-line (start-event)
"Change the width of a window by dragging on the vertical line."
(interactive "e")
- ;; Give temporary modes such as isearch a chance to turn off.
- (run-hooks 'mouse-leave-buffer-hook)
- (let* ((done nil)
- (echo-keystrokes 0)
- (start-event-frame (window-frame (car (car (cdr start-event)))))
- (start-event-window (car (car (cdr start-event))))
- event mouse x left right edges growth
- (which-side
- (or (cdr (assq 'vertical-scroll-bars (frame-parameters start-event-frame)))
- 'right)))
- (cond
- ((one-window-p t)
- (error "Attempt to resize sole ordinary window"))
- ((and (eq which-side 'right)
- (>= (nth 2 (window-inside-edges start-event-window))
- (frame-width start-event-frame)))
- (error "Attempt to drag rightmost scrollbar"))
- ((and (eq which-side 'left)
- (= (nth 0 (window-inside-edges start-event-window)) 0))
- (error "Attempt to drag leftmost scrollbar")))
- (track-mouse
- (progn
- ;; loop reading events and sampling the position of
- ;; the mouse.
- (while (not done)
- (setq event (read-event)
- mouse (mouse-position))
- ;; do nothing if
- ;; - there is a switch-frame event.
- ;; - the mouse isn't in the frame that we started in
- ;; - the mouse isn't in any Emacs frame
- ;; drag if
- ;; - there is a mouse-movement event
- ;; - there is a scroll-bar-movement event
- ;; (same as mouse movement for our purposes)
- ;; quit if
- ;; - there is a keyboard event or some other unknown event
- ;; unknown event.
- (cond ((integerp event)
- (setq done t))
- ((memq (car event) '(switch-frame select-window))
- nil)
- ((not (memq (car event)
- '(mouse-movement scroll-bar-movement)))
- (if (consp event)
- (setq unread-command-events
- (cons event unread-command-events)))
- (setq done t))
- ((not (eq (car mouse) start-event-frame))
- nil)
- ((null (car (cdr mouse)))
- nil)
- (t
- (let ((window
- ;; If the scroll bar is on the window's left,
- ;; adjust the window on the left.
- (if (eq which-side 'right)
- start-event-window
- (mouse-drag-vertical-line-rightward-window
- start-event-window))))
- (setq x (- (car (cdr mouse))
- (if (eq which-side 'right) 0 2))
- edges (window-edges window)
- left (nth 0 edges)
- right (nth 2 edges))
- ;; scale back a move that would make the
- ;; window too thin.
- (if (< (- x left -1) window-min-width)
- (setq x (+ left window-min-width -1)))
- ;; compute size change needed
- (setq growth (- x right -1))
- (condition-case nil
- (adjust-window-trailing-edge window growth t)
- (error nil))))))))))
+ (mouse-drag-line start-event 'vertical))
(defun mouse-set-point (event)
"Move point to the position clicked on with the mouse.
diff --git a/lisp/msb.el b/lisp/msb.el
index 12e5a0192f..74ceff1a9c 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -1133,7 +1133,10 @@ variable `msb-menu-cond'."
;;;###autoload
(define-minor-mode msb-mode
"Toggle Msb mode.
-With arg, turn Msb mode on if and only if arg is positive.
+With a prefix argument ARG, enable Msb mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
This mode overrides the binding(s) of `mouse-buffer-menu' to provide a
different buffer menu using the function `msb'."
:global t :group 'msb
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 4ead168b18..05aeb12acf 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -250,11 +250,11 @@ This should only be bound to mouse buttons 4 and 5."
(defvar mwheel-installed-bindings nil)
-;; preloaded ;;;###autoload
(define-minor-mode mouse-wheel-mode
- "Toggle mouse wheel support.
-With prefix argument ARG, turn on if positive, otherwise off.
-Return non-nil if the new state is enabled."
+ "Toggle mouse wheel support (Mouse Wheel mode).
+With a prefix argument ARG, enable Mouse Wheel mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:init-value t
;; We'd like to use custom-initialize-set here so the setup is done
;; 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 f9bc13e1e2..10a1fa5afc 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -36,6 +36,7 @@
;; Function Browser Earliest version
;; browse-url-mozilla Mozilla Don't know
;; browse-url-firefox Firefox Don't know (tried with 1.0.1)
+;; browse-url-chromium Chromium 3.0
;; browse-url-galeon Galeon Don't know
;; browse-url-epiphany Epiphany Don't know
;; browse-url-netscape Netscape 1.1b1
@@ -47,6 +48,7 @@
;; browse-url-generic arbitrary
;; browse-url-default-windows-browser MS-Windows browser
;; browse-url-default-macosx-browser Mac OS X browser
+;; browse-url-xdg-open Free Desktop xdg-open on Gnome, KDE, Xfce4, LXDE
;; browse-url-gnome-moz GNOME interface to Mozilla
;; browse-url-kde KDE konqueror (kfm)
;; 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."
:value browse-url-w3-gnudoit)
(function-item :tag "Mozilla" :value browse-url-mozilla)
(function-item :tag "Firefox" :value browse-url-firefox)
+ (function-item :tag "Chromium" :value browse-url-chromium)
(function-item :tag "Galeon" :value browse-url-galeon)
(function-item :tag "Epiphany" :value browse-url-epiphany)
(function-item :tag "Netscape" :value browse-url-netscape)
@@ -336,6 +339,22 @@ Defaults to the value of `browse-url-firefox-arguments' at the time
:type '(repeat (string :tag "Argument"))
:group 'browse-url)
+(defcustom browse-url-chromium-program
+ (let ((candidates '("chromium" "chromium-browser")))
+ (while (and candidates (not (executable-find (car candidates))))
+ (setq candidates (cdr candidates)))
+ (or (car candidates) "chromium"))
+ "The name by which to invoke Chromium."
+ :type 'string
+ :version "24.1"
+ :group 'browse-url)
+
+(defcustom browse-url-chromium-arguments nil
+ "A list of strings to pass to Chromium as arguments."
+ :type '(repeat (string :tag "Argument"))
+ :version "24.1"
+ :group 'browse-url)
+
(defcustom browse-url-galeon-program "galeon"
"The name by which to invoke Galeon."
:type 'string
@@ -913,6 +932,7 @@ used instead of `browse-url-new-window-flag'."
((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
((executable-find browse-url-firefox-program) 'browse-url-firefox)
+ ((executable-find browse-url-chromium-program) 'browse-url-chromium)
((executable-find browse-url-galeon-program) 'browse-url-galeon)
((executable-find browse-url-kde-program) 'browse-url-kde)
((executable-find browse-url-netscape-program) 'browse-url-netscape)
@@ -924,12 +944,13 @@ used instead of `browse-url-new-window-flag'."
url args))
(defun browse-url-can-use-xdg-open ()
- "Check if xdg-open can be used, i.e. we are on Gnome, KDE or xfce4."
+ "Check if xdg-open can be used, i.e. we are on Gnome, KDE, Xfce4 or LXDE."
(and (getenv "DISPLAY")
(executable-find "xdg-open")
;; xdg-open may call gnome-open and that does not wait for its child
;; to finish. This child may then be killed when the parent dies.
- ;; Use nohup to work around.
+ ;; Use nohup to work around. See bug#7166, bug#8917, bug#9779 and
+ ;; http://lists.gnu.org/archive/html/emacs-devel/2009-07/msg00279.html
(executable-find "nohup")
(or (getenv "GNOME_DESKTOP_SESSION_ID")
;; GNOME_DESKTOP_SESSION_ID is deprecated, check on Dbus also.
@@ -947,7 +968,9 @@ used instead of `browse-url-new-window-flag'."
"/bin/sh" nil nil nil
"-c"
"xprop -root _DT_SAVE_MODE|grep xfce4"))
- (error nil)))))
+ (error nil))
+ (member (getenv "DESKTOP_SESSION") '("LXDE" "Lubuntu"))
+ (equal (getenv "XDG_CURRENT_DESKTOP") "LXDE"))))
;;;###autoload
@@ -1141,6 +1164,22 @@ URL in a new window."
(append browse-url-firefox-startup-arguments (list url))))))
;;;###autoload
+(defun browse-url-chromium (url &optional new-window)
+ "Ask the Chromium WWW browser to load URL.
+Default to the URL around or before point. The strings in
+variable `browse-url-chromium-arguments' are also passed to
+Chromium."
+ (interactive (browse-url-interactive-arg "URL: "))
+ (setq url (browse-url-encode-url url))
+ (let* ((process-environment (browse-url-process-environment)))
+ (apply 'start-process
+ (concat "chromium " url) nil
+ browse-url-chromium-program
+ (append
+ browse-url-chromium-arguments
+ (list url)))))
+
+;;;###autoload
(defun browse-url-galeon (url &optional new-window)
"Ask the Galeon WWW browser to load URL.
Default 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 4e78a7d42c..1432c1e516 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
;;;###autoload
(define-minor-mode goto-address-prog-mode
- "Turn on `goto-address-mode', but only in comments and strings."
+ "Like `goto-address-mode', but only for comments and strings."
nil
""
nil
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index adc66f6766..5fca101809 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."
(when (and (listp sf) (eq (car sf) 'autoload))
(let ((default-directory
(tramp-compat-temporary-file-directory)))
- (load (cadr sf) 'noerror)))
+ (load (cadr sf) 'noerror 'nomessage)))
(apply foreign operation args))
;; 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
not in completion mode."
(and (tramp-tramp-file-p filename)
(with-parsed-tramp-file-name filename nil
- (or (get-buffer (tramp-buffer-name v))
- (not (tramp-completion-mode-p))))))
+ (or (not (tramp-completion-mode-p))
+ (let ((p (tramp-get-connection-process v)))
+ (and p (processp p) (memq (process-status p) '(run open))))))))
;; Method, host name and user name completion.
;; `tramp-completion-dissect-file-name' returns a list of
diff --git a/lisp/net/xesam.el b/lisp/net/xesam.el
index 64c26cfb2c..56e9cb68c6 100644
--- a/lisp/net/xesam.el
+++ b/lisp/net/xesam.el
@@ -516,9 +516,9 @@ engine specific, widget :notify function to visualize xesam:url."
(define-minor-mode xesam-minor-mode
"Toggle Xesam minor mode.
-With no argument, this command toggles the mode.
-Non-null prefix argument turns on the mode.
-Null prefix argument turns off the mode.
+With a prefix argument ARG, enable Xesam minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
When Xesam minor mode is enabled, all text which matches a
previous Xesam query in this buffer is highlighted."
diff --git a/lisp/outline.el b/lisp/outline.el
index f864058c6f..34d30fc459 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -356,7 +356,10 @@ After that, changing the prefix key requires manipulating keymaps."
;;;###autoload
(define-minor-mode outline-minor-mode
"Toggle Outline minor mode.
-With arg, turn Outline minor mode on if arg is positive, off otherwise.
+With a prefix argument ARG, enable Outline minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
See the command `outline-mode' for more information on this mode."
nil " Outl" (list (cons [menu-bar] outline-minor-mode-menu-bar-map)
(cons outline-minor-mode-prefix outline-mode-prefix-map))
diff --git a/lisp/paren.el b/lisp/paren.el
index fb5c0bf36e..ee550228d4 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -102,12 +102,14 @@ otherwise)."
;;;###autoload
(define-minor-mode show-paren-mode
- "Toggle Show Paren mode.
-With prefix ARG, turn Show Paren mode on if and only if ARG is positive.
-Returns the new status of Show Paren mode (non-nil means on).
+ "Toggle visualization of matching parens (Show Paren mode).
+With a prefix argument ARG, enable Show Paren mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-When Show Paren mode is enabled, any matching parenthesis is highlighted
-in `show-paren-style' after `show-paren-delay' seconds of Emacs idle time."
+Show Paren mode is a global minor mode. When enabled, any
+matching parenthesis is highlighted in `show-paren-style' after
+`show-paren-delay' seconds of Emacs idle time."
:global t :group 'paren-showing
;; Enable or disable the mechanism.
;; First get rid of the old idle timer.
diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el
index 8ec379afab..12eddfef1a 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'.")
;;;###autoload
(define-minor-mode bug-reference-mode
- "Minor mode to buttonize bugzilla references in the current buffer."
+ "Toggle hyperlinking bug references in the buffer (Bug Reference mode).
+With a prefix argument ARG, enable Bug Reference mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
nil
""
nil
diff --git a/lisp/progmodes/cap-words.el b/lisp/progmodes/cap-words.el
index 0ce84ae33a..d7b7dfef1e 100644
--- a/lisp/progmodes/cap-words.el
+++ b/lisp/progmodes/cap-words.el
@@ -60,9 +60,13 @@ Looks for word boundaries before capitals."
;;;###autoload
(define-minor-mode capitalized-words-mode
"Toggle Capitalized Words mode.
+With a prefix argument ARG, enable Capitalized Words mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
-In this minor mode, a word boundary occurs immediately before an
-uppercase letter in a symbol. This is in addition to all the normal
+Capitalized Words mode is a buffer-local minor mode. When
+enabled, a word boundary occurs immediately before an uppercase
+letter in a symbol. This is in addition to all the normal
boundaries given by the syntax and category tables. There is no
restriction to ASCII.
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index a1cbdc1656..b2c548847c 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."
(<= from (cdr c-state-brace-pair-desert)))
;; Only search what we absolutely need to:
(if (and c-state-brace-pair-desert
- (> from (cdr c-state-brace-pair-desert)))
+ (eq cache-pos (car c-state-brace-pair-desert)))
(narrow-to-region (cdr c-state-brace-pair-desert) (point-max)))
;; 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."
(unless (fboundp 'c-real-parse-state)
(fset 'c-real-parse-state (symbol-function 'c-parse-state)))
(cc-bytecomp-defun c-real-parse-state)
+
+(defvar c-parse-state-state nil)
+(defun c-record-parse-state-state ()
+ (setq c-parse-state-state
+ (mapcar
+ (lambda (arg)
+ (cons arg (symbol-value arg)))
+ '(c-state-cache
+ c-state-cache-good-pos
+ c-state-nonlit-pos-cache
+ c-state-nonlit-pos-cache-limit
+ c-state-brace-pair-desert
+ c-state-point-min
+ c-state-point-min-lit-type
+ c-state-point-min-lit-start
+ c-state-min-scan-pos
+ c-state-old-cpp-beg
+ c-state-old-cpp-end))))
+(defun c-replay-parse-state-state ()
+ (message
+ (concat "(setq "
+ (mapconcat
+ (lambda (arg)
+ (format "%s %s%s" (car arg) (if (atom (cdr arg)) "" "'") (cdr arg)))
+ c-parse-state-state " ")
+ ")")))
+
(defun c-debug-parse-state ()
(let ((here (point)) (res1 (c-real-parse-state)) res2)
(let ((c-state-cache nil)
@@ -3145,15 +3172,21 @@ comment at the start of cc-engine.el for more info."
;; The cache can actually go further back due to the ad-hoc way
;; the first paren is found, so try to whack off a bit of its
;; start before complaining.
- (save-excursion
- (goto-char (or (c-least-enclosing-brace res2) (point)))
- (c-beginning-of-defun-1)
- (while (not (or (bobp) (eq (char-after) ?{)))
- (c-beginning-of-defun-1))
- (unless (equal (c-whack-state-before (point) res1) res2)
- (message (concat "c-parse-state inconsistency at %s: "
- "using cache: %s, from scratch: %s")
- here res1 res2))))
+ ;; (save-excursion
+ ;; (goto-char (or (c-least-enclosing-brace res2) (point)))
+ ;; (c-beginning-of-defun-1)
+ ;; (while (not (or (bobp) (eq (char-after) ?{)))
+ ;; (c-beginning-of-defun-1))
+ ;; (unless (equal (c-whack-state-before (point) res1) res2)
+ ;; (message (concat "c-parse-state inconsistency at %s: "
+ ;; "using cache: %s, from scratch: %s")
+ ;; here res1 res2)))
+ (message (concat "c-parse-state inconsistency at %s: "
+ "using cache: %s, from scratch: %s")
+ here res1 res2)
+ (message "Old state:")
+ (c-replay-parse-state-state))
+ (c-record-parse-state-state)
res1))
(defun c-toggle-parse-state-debug (&optional arg)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 619c423902..156c90159c 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1968,12 +1968,15 @@ Optional argument MINOR indicates this is called from
;;;###autoload
(define-minor-mode compilation-shell-minor-mode
- "Toggle compilation shell minor mode.
-With arg, turn compilation mode on if and only if arg is positive.
-In this minor mode, all the error-parsing commands of the
-Compilation major mode are available but bound to keys that don't
-collide with Shell mode. See `compilation-mode'.
-Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'."
+ "Toggle Compilation Shell minor mode.
+With a prefix argument ARG, enable Compilation Shell minor mode
+if ARG is positive, and disable it otherwise. If called from
+Lisp, enable the mode if ARG is omitted or nil.
+
+When Compilation Shell minor mode is enabled, all the
+error-parsing commands of the Compilation major mode are
+available but bound to keys that don't collide with Shell mode.
+See `compilation-mode'."
nil " Shell-Compile"
:group 'compilation
(if compilation-shell-minor-mode
@@ -1982,11 +1985,14 @@ Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'."
;;;###autoload
(define-minor-mode compilation-minor-mode
- "Toggle compilation minor mode.
-With arg, turn compilation mode on if and only if arg is positive.
-In this minor mode, all the error-parsing commands of the
-Compilation major mode are available. See `compilation-mode'.
-Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
+ "Toggle Compilation minor mode.
+With a prefix argument ARG, enable Compilation minor mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+When Compilation minor mode is enabled, all the error-parsing
+commands of Compilation major mode are available. See
+`compilation-mode'."
nil " Compilation"
:group 'compilation
(if compilation-minor-mode
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 25a23fed29..7b3a289361 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -3255,7 +3255,10 @@ Treats actions as defuns."
;;;###autoload
(define-minor-mode gud-tooltip-mode
- "Toggle the display of GUD tooltips."
+ "Toggle the display of GUD tooltips.
+With a prefix argument ARG, enable the feature if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+it if ARG is omitted or nil."
:global t
:group 'gud
:group 'tooltip
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 48d1ac4b85..374a45acec 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -214,11 +214,15 @@
;;;###autoload
(define-minor-mode hide-ifdef-mode
- "Toggle Hide-Ifdef mode. This is a minor mode, albeit a large one.
-With ARG, turn Hide-Ifdef mode on if arg is positive, off otherwise.
-In Hide-Ifdef mode, code within #ifdef constructs that the C preprocessor
-would eliminate may be hidden from view. Several variables affect
-how the hiding is done:
+ "Toggle features to hide/show #ifdef blocks (Hide-Ifdef mode).
+With a prefix argument ARG, enable Hide-Ifdef mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Hide-Ifdef mode is a buffer-local minor mode for use with C and
+C-like major modes. When enabled, code within #ifdef constructs
+that the C preprocessor would eliminate may be hidden from view.
+Several variables affect how the hiding is done:
`hide-ifdef-env'
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 b2cd24f0f9..18f47d14a3 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -4277,16 +4277,14 @@ Otherwise, just expand the file name."
(defvar idlwave-shell-electric-debug-buffers nil)
(define-minor-mode idlwave-shell-electric-debug-mode
- "Toggle Electric Debug mode.
-With no argument, this command toggles the mode.
-Non-null prefix argument turns on the mode.
-Null prefix argument turns off the mode.
-
-When Electric Debug mode is enabled, the many debugging commands are
-available as single key sequences."
-nil
-" *Debugging*"
-idlwave-shell-electric-debug-mode-map)
+ "Toggle Idlwave Shell Electric Debug mode.
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+When Idlwave Shell Electric Debug mode is enabled, the Idlwave
+Shell debugging commands are available as single key sequences."
+ nil " *Debugging*" idlwave-shell-electric-debug-mode-map)
(add-hook
'idlwave-shell-electric-debug-mode-on-hook
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 8066e1c3a7..c77ee4b76a 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -1907,7 +1907,6 @@ The main features of this mode are
(set (make-local-variable 'comment-start-skip) ";+[ \t]*")
(set (make-local-variable 'comment-start) ";")
(set (make-local-variable 'comment-add) 1) ; ";;" for new and regions
- (set (make-local-variable 'require-final-newline) t)
(set (make-local-variable 'abbrev-all-caps) t)
(set (make-local-variable 'indent-tabs-mode) nil)
(set (make-local-variable 'completion-ignore-case) t)
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el
index 1a403f50b1..9c61da8900 100644
--- a/lisp/progmodes/subword.el
+++ b/lisp/progmodes/subword.el
@@ -94,13 +94,19 @@
;;;###autoload
(define-minor-mode subword-mode
- "Mode enabling subword movement and editing keys.
-In spite of GNU Coding Standards, it is popular to name a symbol by
-mixing uppercase and lowercase letters, e.g. \"GtkWidget\",
-\"EmacsFrameClass\", \"NSGraphicsContext\", etc. Here we call these
-mixed case symbols `nomenclatures'. Also, each capitalized (or
-completely uppercase) part of a nomenclature is called a `subword'.
-Here are some examples:
+ "Toggle subword movement and editing (Subword mode).
+With a prefix argument ARG, enable Subword mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Subword mode is a buffer-local minor mode. Enabling it remaps
+word-based editing commands to subword-based commands that handle
+symbols with mixed uppercase and lowercase letters,
+e.g. \"GtkWidget\", \"EmacsFrameClass\", \"NSGraphicsContext\".
+
+Here we call these mixed case symbols `nomenclatures'. Each
+capitalized (or completely uppercase) part of a nomenclature is
+called a `subword'. Here are some examples:
Nomenclature Subwords
===========================================================
diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el
index 1f33f5f3aa..b02324871f 100644
--- a/lisp/progmodes/vera-mode.el
+++ b/lisp/progmodes/vera-mode.el
@@ -310,7 +310,6 @@ Key bindings:
(set (make-local-variable 'comment-indent-function) 'c-comment-indent)
(set (make-local-variable 'paragraph-start) "^$")
(set (make-local-variable 'paragraph-separate) paragraph-start)
- (set (make-local-variable 'require-final-newline) t)
(set (make-local-variable 'indent-tabs-mode) nil)
(set (make-local-variable 'indent-line-function) 'vera-indent-line)
(set (make-local-variable 'parse-sexp-ignore-comments) t)
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 9aaf3059b7..d7aa82aee1 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -8029,12 +8029,16 @@ project is defined."
(define-minor-mode vhdl-electric-mode
"Toggle VHDL electric mode.
-Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil."
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable it if ARG
+is omitted or nil."
:global t)
(define-minor-mode vhdl-stutter-mode
"Toggle VHDL stuttering mode.
-Turn on if ARG positive, turn off if ARG negative, toggle if ARG zero or nil."
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable it if ARG
+is omitted or nil."
:global t)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el
index 97e188139e..e27d07854c 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."
;; This is the name people would normally expect.
;;;###autoload
(define-minor-mode which-function-mode
- "Toggle Which Function mode, globally.
-When Which Function mode is enabled, the current function name is
-continuously displayed in the mode line, in certain major modes.
-
-With prefix ARG, turn Which Function mode on if arg is positive,
-and off otherwise."
+ "Toggle mode line display of current function (Which Function mode).
+With a prefix argument ARG, enable Which Function mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Which Function mode is a global minor mode. When enabled, the
+current function name is continuously displayed in the mode line,
+in certain major modes."
:global t :group 'which-func
(when (timerp which-func-update-timer)
(cancel-timer which-func-update-timer))
diff --git a/lisp/recentf.el b/lisp/recentf.el
index fc9b788173..79f4eb437d 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1336,12 +1336,14 @@ That is, remove duplicates, non-kept, and excluded files."
;;;###autoload
(define-minor-mode recentf-mode
- "Toggle recentf mode.
-With prefix argument ARG, turn on if positive, otherwise off.
-Returns non-nil if the new state is enabled.
-
-When recentf mode is enabled, it maintains a menu for visiting files
-that were operated on recently."
+ "Toggle \"Open Recent\" menu (Recentf mode).
+With a prefix argument ARG, enable Recentf mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Recentf mode if ARG is omitted or nil.
+
+When Recentf mode is enabled, a \"Open Recent\" submenu is
+displayed in the \"File\" menu, containing a list of files that
+were operated on recently."
:global t
:group 'recentf
:keymap recentf-mode-map
diff --git a/lisp/reveal.el b/lisp/reveal.el
index bf18602379..ea46cfd1dd 100644
--- a/lisp/reveal.el
+++ b/lisp/reveal.el
@@ -189,12 +189,13 @@ Each element has the form (WINDOW . OVERLAY).")
;;;###autoload
(define-minor-mode reveal-mode
- "Toggle Reveal mode on or off.
-Reveal mode renders invisible text around point visible again.
+ "Toggle decloaking of invisible text near point (Reveal mode).
+With a prefix argument ARG, enable Reveal mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Reveal mode if ARG is omitted or nil.
-Interactively, with no prefix argument, toggle the mode.
-With universal prefix ARG (or if ARG is nil) turn mode on.
-With zero or negative ARG turn mode off."
+Reveral mode is a buffer-local minor mode. When enabled, it
+reveals invisible text around point."
:group 'reveal
:lighter (global-reveal-mode nil " Reveal")
:keymap reveal-mode-map
@@ -207,12 +208,12 @@ With zero or negative ARG turn mode off."
;;;###autoload
(define-minor-mode global-reveal-mode
- "Toggle Reveal mode in all buffers on or off.
+ "Toggle Reveal mode in all buffers (Global Reveal mode).
Reveal mode renders invisible text around point visible again.
-Interactively, with no prefix argument, toggle the mode.
-With universal prefix ARG (or if ARG is nil) turn mode on.
-With zero or negative ARG turn mode off."
+With a prefix argument ARG, enable Global Reveal mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:global t :group 'reveal
(setq-default reveal-mode global-reveal-mode)
(if global-reveal-mode
diff --git a/lisp/rfn-eshadow.el b/lisp/rfn-eshadow.el
index 9eb2d2abde..2d8c6e0964 100644
--- a/lisp/rfn-eshadow.el
+++ b/lisp/rfn-eshadow.el
@@ -207,15 +207,17 @@ been set up by `rfn-eshadow-setup-minibuffer'."
(error nil)))
(define-minor-mode file-name-shadow-mode
- "Toggle File-Name Shadow mode.
-When active, any part of a filename being read in the minibuffer
-that would be ignored (because the result is passed through
+ "Toggle file-name shadowing in minibuffers (File-Name Shadow mode).
+With a prefix argument ARG, enable File-Name Shadow mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+File-Name Shadow mode is a global minor mode. When enabled, any
+part of a filename being read in the minibuffer that would be
+ignored (because the result is passed through
`substitute-in-file-name') is given the properties in
-`file-name-shadow-properties', which can be used to make
-that portion dim, invisible, or otherwise less visually noticeable.
-
-With prefix argument ARG, turn on if positive, otherwise off.
-Returns non-nil if the new state is enabled."
+`file-name-shadow-properties', which can be used to make that
+portion dim, invisible, or otherwise less visually noticeable."
:global t
;; We'd like to use custom-initialize-set here so the setup is done
;; before dumping, but at the point where the defcustom is evaluated,
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index fc62bf6b63..046c29471a 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -567,8 +567,10 @@ format first."
;;;###autoload
(define-minor-mode ruler-mode
- "Toggle Ruler mode.
-In Ruler mode, Emacs displays a ruler in the header line."
+ "Toggle display of ruler in header line (Ruler mode).
+With a prefix argument ARG, enable Ruler mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil."
nil nil
ruler-mode-map
:group 'ruler-mode
diff --git a/lisp/savehist.el b/lisp/savehist.el
index 653d0312a1..faeab324e5 100644
--- a/lisp/savehist.el
+++ b/lisp/savehist.el
@@ -170,15 +170,19 @@ minibuffer history.")
;;;###autoload
(define-minor-mode savehist-mode
- "Toggle savehist-mode.
-Positive ARG turns on `savehist-mode'. When on, savehist-mode causes
-minibuffer history to be saved periodically and when exiting Emacs.
-When turned on for the first time in an Emacs session, it causes the
-previous minibuffer history to be loaded from `savehist-file'.
+ "Toggle saving of minibuffer history (Savehist mode).
+With a prefix argument ARG, enable Savehist mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Savehist mode is enabled, minibuffer history is saved
+periodically and when exiting Emacs. When Savehist mode is
+enabled for the first time in an Emacs session, it loads the
+previous minibuffer history from `savehist-file'.
This mode should normally be turned on from your Emacs init file.
-Calling it at any other time replaces your current minibuffer histories,
-which is probably undesirable."
+Calling it at any other time replaces your current minibuffer
+histories, which is probably undesirable."
:global t
(if (not savehist-mode)
(savehist-uninstall)
diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el
index 6dbdc9ab90..81a4d2c86e 100644
--- a/lisp/scroll-all.el
+++ b/lisp/scroll-all.el
@@ -101,10 +101,13 @@
;;;###autoload
(define-minor-mode scroll-all-mode
- "Toggle Scroll-All minor mode.
-With ARG, turn Scroll-All minor mode on if ARG is positive, off otherwise.
-When Scroll-All mode is on, scrolling commands entered in one window
-apply to all visible windows in the same frame."
+ "Toggle shared scrolling in same-frame windows (Scroll-All mode).
+With a prefix argument ARG, enable Scroll-All mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Scroll-All mode is enabled, scrolling commands invoked in
+one window apply to all visible windows in the same frame."
nil " *SL*" nil
:global t
:group 'windows
diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el
index 0c68bca4d2..37a31460cd 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."
(defun get-scroll-bar-mode () scroll-bar-mode)
(defsetf get-scroll-bar-mode set-scroll-bar-mode)
+
(define-minor-mode scroll-bar-mode
- "Toggle display of vertical scroll bars on all frames.
+ "Toggle vertical scroll bars on all frames (Scroll Bar mode).
+With a prefix argument ARG, enable Scroll Bar mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
This command applies to all frames that exist and frames to be
-created in the future.
-With a numeric argument, if the argument is positive
-turn on scroll bars; otherwise turn off scroll bars."
+created in the future."
:variable (eq (get-scroll-bar-mode)
(or previous-scroll-bar-mode
default-frame-scroll-bars)))
diff --git a/lisp/server.el b/lisp/server.el
index 63d46a365c..bc989c55ed 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -669,9 +669,13 @@ Return values:
;;;###autoload
(define-minor-mode server-mode
"Toggle Server mode.
-With ARG, turn Server mode on if ARG is positive, off otherwise.
+With a prefix argument ARG, enable Server mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Server mode if ARG is omitted or nil.
+
Server mode runs a process that accepts commands from the
-`emacsclient' program. See `server-start' and Info node `Emacs server'."
+`emacsclient' program. See Info node `Emacs server' and
+`server-start' for details."
:global t
:group 'server
:version "22.1"
diff --git a/lisp/shell.el b/lisp/shell.el
index cefe42bb3e..c75594ddbe 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -890,9 +890,13 @@ Environment variables are expanded, see function `substitute-in-file-name'."
(defvaralias 'shell-dirtrack-mode 'shell-dirtrackp)
(define-minor-mode shell-dirtrack-mode
- "Turn directory tracking on and off in a shell buffer.
-The `dirtrack' package provides an alternative implementation of this
-feature - see the function `dirtrack-mode'."
+ "Toggle directory tracking in this shell buffer (Shell Dirtrack mode).
+With a prefix argument ARG, enable Shell Dirtrack mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+The `dirtrack' package provides an alternative implementation of
+this feature; see the function `dirtrack-mode'."
nil nil nil
(setq list-buffers-directory (if shell-dirtrack-mode default-directory))
(if shell-dirtrack-mode
diff --git a/lisp/simple.el b/lisp/simple.el
index 6d0e754354..79de6aea3d 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4086,13 +4086,15 @@ its earlier value."
(define-minor-mode transient-mark-mode
"Toggle Transient Mark mode.
-With ARG, turn Transient Mark mode on if ARG is positive, off otherwise.
+With a prefix argument ARG, enable Transient Mark mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Transient Mark mode if ARG is omitted or nil.
-In Transient Mark mode, when the mark is active, the region is highlighted.
-Changing the buffer \"deactivates\" the mark.
-So do certain other operations that set the mark
-but whose main purpose is something else--for example,
-incremental search, \\[beginning-of-buffer], and \\[end-of-buffer].
+Transient Mark mode is a global minor mode. When enabled, the
+region is highlighted whenever the mark is active. The mark is
+\"deactivated\" by changing the buffer, and after certain other
+operations that set the mark but whose main purpose is something
+else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-buffer].
You can also deactivate the mark by typing \\[keyboard-quit] or
\\[keyboard-escape-quit].
@@ -4906,8 +4908,15 @@ other purposes."
(defvar visual-line--saved-state nil)
(define-minor-mode visual-line-mode
- "Redefine simple editing commands to act on visual lines, not logical lines.
-This also turns on `word-wrap' in the buffer."
+ "Toggle visual line based editing (Visual Line mode).
+With a prefix argument ARG, enable Visual Line mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Visual Line mode is enabled, `word-wrap' is turned on in
+this buffer, and simple editing commands are redefined to act on
+visual lines, not logical lines. See Info node `Visual Line
+Mode' for details."
:keymap visual-line-mode-map
:group 'visual-line
:lighter " Wrap"
@@ -5301,10 +5310,14 @@ Some major modes set this.")
(put 'auto-fill-function 'safe-local-variable 'null)
(define-minor-mode auto-fill-mode
- "Toggle Auto Fill mode.
-With ARG, turn Auto Fill mode on if and only if ARG is positive.
-In Auto Fill mode, inserting a space at a column beyond `current-fill-column'
-automatically breaks the line at a previous space.
+ "Toggle automatic line breaking (Auto Fill mode).
+With a prefix argument ARG, enable Auto Fill mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Auto Fill mode is enabled, inserting a space at a column
+beyond `current-fill-column' automatically breaks the line at a
+previous space.
When `auto-fill-mode' is on, the `auto-fill-function' variable is
non-`nil'.
@@ -5412,36 +5425,44 @@ if long lines are truncated."
"The string displayed in the mode line when in binary overwrite mode.")
(define-minor-mode overwrite-mode
- "Toggle overwrite mode.
-With prefix argument ARG, turn overwrite mode on if ARG is positive,
-otherwise turn it off. In overwrite mode, printing characters typed
-in replace existing text on a one-for-one basis, rather than pushing
-it to the right. At the end of a line, such characters extend the line.
-Before a tab, such characters insert until the tab is filled in.
-\\[quoted-insert] still inserts characters in overwrite mode; this
-is supposed to make it easier to insert characters when necessary."
+ "Toggle Overwrite mode.
+With a prefix argument ARG, enable Overwrite mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+When Overwrite mode is enabled, printing characters typed in
+replace existing text on a one-for-one basis, rather than pushing
+it to the right. At the end of a line, such characters extend
+the line. Before a tab, such characters insert until the tab is
+filled in. \\[quoted-insert] still inserts characters in
+overwrite mode; this is supposed to make it easier to insert
+characters when necessary."
:variable (eq overwrite-mode 'overwrite-mode-textual))
(define-minor-mode binary-overwrite-mode
- "Toggle binary overwrite mode.
-With prefix argument ARG, turn binary overwrite mode on if ARG is
-positive, otherwise turn it off. In binary overwrite mode, printing
-characters typed in replace existing text. Newlines are not treated
-specially, so typing at the end of a line joins the line to the next,
-with the typed character between them. Typing before a tab character
-simply replaces the tab with the character typed. \\[quoted-insert]
-replaces the text at the cursor, just as ordinary typing characters do.
-
-Note that binary overwrite mode is not its own minor mode; it is a
-specialization of overwrite mode, entered by setting the
+ "Toggle Binary Overwrite mode.
+With a prefix argument ARG, enable Binary Overwrite mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+When Binary Overwrite mode is enabled, printing characters typed
+in replace existing text. Newlines are not treated specially, so
+typing at the end of a line joins the line to the next, with the
+typed character between them. Typing before a tab character
+simply replaces the tab with the character typed.
+\\[quoted-insert] replaces the text at the cursor, just as
+ordinary typing characters do.
+
+Note that Binary Overwrite mode is not its own minor mode; it is
+a specialization of overwrite mode, entered by setting the
`overwrite-mode' variable to `overwrite-mode-binary'."
:variable (eq overwrite-mode 'overwrite-mode-binary))
(define-minor-mode line-number-mode
- "Toggle Line Number mode.
-With ARG, turn Line Number mode on if ARG is positive, otherwise
-turn it off. When Line Number mode is enabled, the line number
-appears in the mode line.
+ "Toggle line number display in the mode line (Line Number mode).
+With a prefix argument ARG, enable Line Number mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
Line numbers do not appear for very large buffers and buffers
with very long lines; see variables `line-number-display-limit'
@@ -5449,22 +5470,27 @@ and `line-number-display-limit-width'."
:init-value t :global t :group 'mode-line)
(define-minor-mode column-number-mode
- "Toggle Column Number mode.
-With ARG, turn Column Number mode on if ARG is positive,
-otherwise turn it off. When Column Number mode is enabled, the
-column number appears in the mode line."
+ "Toggle column number display in the mode line (Column Number mode).
+With a prefix argument ARG, enable Column Number mode if ARG is
+positive, and disable it otherwise.
+
+If called from Lisp, enable the mode if ARG is omitted or nil."
:global t :group 'mode-line)
(define-minor-mode size-indication-mode
- "Toggle Size Indication mode.
-With ARG, turn Size Indication mode on if ARG is positive,
-otherwise turn it off. When Size Indication mode is enabled, the
-size of the accessible part of the buffer appears in the mode line."
+ "Toggle buffer size display in the mode line (Size Indication mode).
+With a prefix argument ARG, enable Size Indication mode if ARG is
+positive, and disable it otherwise.
+
+If called from Lisp, enable the mode if ARG is omitted or nil."
:global t :group 'mode-line)
(define-minor-mode auto-save-mode
- "Toggle auto-saving of contents of current buffer.
-With prefix argument ARG, turn auto-saving on if positive, else off."
+ "Toggle auto-saving in the current buffer (Auto Save mode).
+With a prefix argument ARG, enable Auto Save mode if ARG is
+positive, and disable it otherwise.
+
+If called from Lisp, enable the mode if ARG is omitted or nil."
:variable ((and buffer-auto-save-file-name
;; If auto-save is off because buffer has shrunk,
;; then toggling should turn it on.
@@ -6634,8 +6660,9 @@ call `normal-erase-is-backspace-mode' (which see) instead."
(define-minor-mode normal-erase-is-backspace-mode
"Toggle the Erase and Delete mode of the Backspace and Delete keys.
-
-With numeric ARG, turn the mode on if and only if ARG is positive.
+With a prefix argument ARG, enable this feature if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
On window systems, when this mode is on, Delete is mapped to C-d
and Backspace is mapped to DEL; when this mode is off, both
@@ -6709,13 +6736,13 @@ See also `normal-erase-is-backspace'."
"Saved value of `buffer-invisibility-spec' when Visible mode is on.")
(define-minor-mode visible-mode
- "Toggle Visible mode.
-With argument ARG turn Visible mode on if ARG is positive, otherwise
-turn it off.
+ "Toggle making all invisible text temporarily visible (Visible mode).
+With a prefix argument ARG, enable Visible mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-Enabling Visible mode makes all invisible text temporarily visible.
-Disabling Visible mode turns off that effect. Visible mode works by
-saving the value of `buffer-invisibility-spec' and setting it to nil."
+This mode works by saving the value of `buffer-invisibility-spec'
+and setting it to nil."
:lighter " Vis"
:group 'editing-basics
(when (local-variable-p 'vis-mode-saved-buffer-invisibility-spec)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index ca0086b3b9..5ff94bb22c 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."
;;;###autoload
(define-minor-mode strokes-mode
- "Toggle Strokes global minor mode.\\<strokes-mode-map>
-With ARG, turn strokes on if and only if ARG is positive.
+ "Toggle Strokes mode, a global minor mode.
+With a prefix argument ARG, enable Strokes mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+\\<strokes-mode-map>
Strokes are pictographic mouse gestures which invoke commands.
Strokes are invoked with \\[strokes-do-stroke]. You can define
new strokes with \\[strokes-global-set-stroke]. See also
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index 059024c4bc..78857b0414 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -33,7 +33,7 @@
;; mev. Now the interface with gpm is directly through a Unix socket, so this
;; file is reduced to a single minor mode macro call.
-;;
+;;
;;; Code:
@@ -65,9 +65,10 @@
(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
;;;###autoload
(define-minor-mode gpm-mouse-mode
- "Toggle gpm-mouse mode to use the mouse in GNU/Linux consoles.
-With prefix arg, turn gpm-mouse mode on if arg is positive,
-otherwise turn it off.
+ "Toggle mouse support in GNU/Linux consoles (GPM Mouse mode).
+With a prefix argument ARG, enable GPM Mouse mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
This allows the use of the mouse when operating on a GNU/Linux console,
in the same way as you can use the mouse under X11.
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 6217132897..cfa406c2b4 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."
(string
(if (zerop (logand 256 mode)) ?- ?r)
(if (zerop (logand 128 mode)) ?- ?w)
- (if (zerop (logand 1024 mode)) (if (zerop (logand 64 mode)) ?- ?x) ?s)
+ (if (zerop (logand 2048 mode))
+ (if (zerop (logand 64 mode)) ?- ?x)
+ (if (zerop (logand 64 mode)) ?S ?s))
(if (zerop (logand 32 mode)) ?- ?r)
(if (zerop (logand 16 mode)) ?- ?w)
- (if (zerop (logand 2048 mode)) (if (zerop (logand 8 mode)) ?- ?x) ?s)
+ (if (zerop (logand 1024 mode))
+ (if (zerop (logand 8 mode)) ?- ?x)
+ (if (zerop (logand 8 mode)) ?S ?s))
(if (zerop (logand 4 mode)) ?- ?r)
(if (zerop (logand 2 mode)) ?- ?w)
- (if (zerop (logand 1 mode)) ?- ?x)))
+ (if (zerop (logand 512 mode))
+ (if (zerop (logand 1 mode)) ?- ?x)
+ (if (zerop (logand 1 mode)) ?T ?t))))
(defun tar-header-block-summarize (tar-hblock &optional mod-p)
"Return a line similar to the output of `tar -vtf'."
diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el
index 5d852e5210..e154074a03 100644
--- a/lisp/term/tvi970.el
+++ b/lisp/term/tvi970.el
@@ -104,14 +104,17 @@
;; Should keypad numbers send ordinary digits or distinct escape sequences?
(define-minor-mode tvi970-set-keypad-mode
- "Set the current mode of the TVI 970 numeric keypad.
-In ``numeric keypad mode'', the number keys on the keypad act as
-ordinary digits. In ``alternate keypad mode'', the keys send distinct
-escape sequences, meaning that they can have their own bindings,
+ "Toggle alternate keypad mode on TVI 970 keypad.
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+In ``alternate keypad mode'', the keys send distinct escape
+sequences, meaning that they can have their own bindings,
independent of the normal number keys.
-With no argument, toggle between the two possible modes.
-With a positive argument, select alternate keypad mode.
-With a negative argument, select numeric keypad mode."
+
+When disabled, the terminal enters ``numeric keypad mode'', in
+which the keypad's keys act as ordinary digits."
:variable (terminal-parameter nil 'tvi970-keypad-numeric)
(send-string-to-terminal
(if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>")))
diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el
index 406c20a0e8..ca16f356b2 100644
--- a/lisp/term/vt100.el
+++ b/lisp/term/vt100.el
@@ -42,8 +42,9 @@
;;; Controlling the screen width.
(define-minor-mode vt100-wide-mode
"Toggle 132/80 column mode for vt100s.
-With positive argument, switch to 132-column mode.
-With negative argument, switch to 80-column mode."
+With a prefix argument ARG, switch to 132-column mode if ARG is
+positive, and 80-column mode otherwise. If called from Lisp,
+switch to 132-column mode if ARG is omitted or nil."
:global t :init-value (= (frame-width) 132)
(send-string-to-terminal (if vt100-wide-mode "\e[?3h" "\e[?3l"))
(set-frame-width terminal-frame (if vt100-wide-mode 132 80)))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index d496298768..4a57d00d70 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -469,12 +469,14 @@ See also `flyspell-duplicate-distance'."
;;;###autoload(defvar flyspell-mode nil)
;;;###autoload
(define-minor-mode flyspell-mode
- "Minor mode performing on-the-fly spelling checking.
-This spawns a single Ispell process and checks each word.
-The default flyspell behavior is to highlight incorrect words.
-With no argument, this command toggles Flyspell mode.
-With a prefix argument ARG, turn Flyspell minor mode on if ARG is positive,
-otherwise turn it off.
+ "Toggle on-the-fly spell checking (Flyspell mode).
+With a prefix argument ARG, enable Flyspell mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Flyspell mode is a buffer-local minor mode. When enabled, it
+spawns a single Ispell process and checks each word. The default
+flyspell behavior is to highlight incorrect words.
Bindings:
\\[ispell-word]: correct words (using Ispell).
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index b76b0a303d..62f899d173 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -3462,15 +3462,21 @@ available on the net."
;;;###autoload
(define-minor-mode ispell-minor-mode
- "Toggle Ispell minor mode.
-With prefix argument ARG, turn Ispell minor mode on if ARG is positive,
-otherwise turn it off.
+ "Toggle last-word spell checking (Ispell minor mode).
+With a prefix argument ARG, enable Ispell minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-In Ispell minor mode, pressing SPC or RET
-warns you if the previous word is incorrectly spelled.
+Ispell minor mode is a buffer-local mior mode. When enabled,
+typing SPC or RET warns you if the previous word is incorrectly
+spelled.
-All the buffer-local variables and dictionaries are ignored -- to read
-them into the running ispell process, type \\[ispell-word] SPC."
+All the buffer-local variables and dictionaries are ignored. To
+read them into the running ispell process, type \\[ispell-word]
+SPC.
+
+For spell-checking \"on the fly\", not just after typing SPC or
+RET, use `flyspell-mode'."
nil " Spell" ispell-minor-keymap)
(defun ispell-minor-check ()
diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el
index 8fb0bd85da..1be78ed293 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."
(forward-char 1))))
(define-minor-mode nroff-electric-mode
- "Toggle `nroff-electric-newline' minor mode.
-`nroff-electric-newline' forces Emacs to check for an nroff request at the
-beginning of the line, and insert the matching closing request if necessary.
-This command toggles that mode (off->on, on->off), with an argument,
-turns it on if arg is positive, otherwise off."
+ "Toggle automatic nroff request pairing (Nroff Electric mode).
+With a prefix argument ARG, enable Nroff Electric mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Nroff Electric mode is a buffer-local minor mode, for use with
+`nroff-mode'. When enabled, Emacs checks for an nroff request at
+the beginning of the line, and inserts the matching closing
+request if necessary. This command toggles that mode (off->on,
+on->off), with an argument, turns it on if arg is positive,
+otherwise off."
:lighter " Electric"
(or (derived-mode-p 'nroff-mode) (error "Must be in nroff mode")))
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 8fd055f7d8..b47924bc1f 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -35,19 +35,23 @@
(put 'use-hard-newlines 'permanent-local t)
(define-minor-mode use-hard-newlines
- "Minor mode to distinguish hard and soft newlines.
-When active, the functions `newline' and `open-line' add the
+ "Toggle distinguishing between hard and soft newlines.
+With a prefix argument ARG, enable the feature if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+it if ARG is omitted or nil.
+
+When enabled, the functions `newline' and `open-line' add the
text-property `hard' to newlines that they insert, and a line is
only considered as a candidate to match `paragraph-start' or
`paragraph-separate' if it follows a hard newline.
-Prefix argument says to turn mode on if positive, off if negative.
-When the mode is turned on, if there are newlines in the buffer but no hard
-newlines, ask the user whether to mark as hard any newlines preceding a
-`paragraph-start' line. From a program, second arg INSERT specifies whether
-to do this; it can be `never' to change nothing, t or `always' to force
-marking, `guess' to try to do the right thing with no questions, nil
-or anything else to ask the user.
+When enabling, if there are newlines in the buffer but no hard
+newlines, ask the user whether to mark as hard any newlines
+preceding a `paragraph-start' line. From a program, second arg
+INSERT specifies whether to do this; it can be `never' to change
+nothing, t or `always' to force marking, `guess' to try to do the
+right thing with no questions, nil or anything else to ask the
+user.
Newlines not marked hard are called \"soft\", and are always internal
to paragraphs. The fill functions insert and delete only soft newlines."
diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el
index 474872955b..d60b7594c0 100644
--- a/lisp/textmodes/refill.el
+++ b/lisp/textmodes/refill.el
@@ -213,12 +213,17 @@ complex processing.")
;;;###autoload
(define-minor-mode refill-mode
- "Toggle Refill minor mode.
-With prefix arg, turn Refill mode on if arg is positive, otherwise turn it off.
+ "Toggle automatic refilling (Refill mode).
+With a prefix argument ARG, enable Refill mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
-When Refill mode is on, the current paragraph will be formatted when
-changes are made within it. Self-inserting characters only cause
-refilling if they would cause auto-filling."
+Refill mode is a buffer-local minor mode. When enabled, the
+current paragraph is refilled as you edit. Self-inserting
+characters only cause refilling if they would cause
+auto-filling.
+
+For true \"word wrap\" behavior, use `visual-line-mode' instead."
:group 'refill
:lighter " Refill"
:keymap '(("\177" . backward-delete-char-untabify))
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 7e150bff99..6f6993980d 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -503,7 +503,13 @@
(put 'reftex-mode :menu-tag "RefTeX Mode")
;;;###autoload
(define-minor-mode reftex-mode
- "Minor mode with distinct support for \\label, \\ref and \\cite in LaTeX.
+ "Toggle RefTeX mode.
+With a prefix argument ARG, enable RefTeX mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+RefTeX mode is a buffer-local minor mode with distinct support
+for \\label, \\ref and \\cite in LaTeX.
\\<reftex-mode-map>A Table of Contents of the entire (multifile) document with browsing
capabilities is available with `\\[reftex-toc]'.
diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el
index c1ce950522..f9fda7e0a7 100644
--- a/lisp/textmodes/rst.el
+++ b/lisp/textmodes/rst.el
@@ -442,11 +442,10 @@ font-locking of blocks.
;;;###autoload
(define-minor-mode rst-minor-mode
- "ReST Minor Mode.
-Toggle ReST minor mode.
-With no argument, this command toggles the mode.
-Non-null prefix argument turns on the mode.
-Null prefix argument turns off the mode.
+ "Toggle ReST minor mode.
+With a prefix argument ARG, enable ReST minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
When ReST minor mode is enabled, the ReST mode keybindings
are 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 314fbf9671..be8dd9c913 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."
(delete-overlay (pop sgml-electric-tag-pair-overlays))))
(define-minor-mode sgml-electric-tag-pair-mode
- "Automatically update the closing tag when editing the opening one."
+ "Toggle SGML Electric Tag Pair mode.
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable the mode
+if ARG is omitted or nil.
+
+SGML Electric Tag Pair mode is a buffer-local minor mode for use
+with `sgml-mode' and related maor modes. When enabled, editing
+an opening markup tag automatically updates the closing tag."
:lighter "/e"
(if sgml-electric-tag-pair-mode
(progn
@@ -2024,9 +2031,14 @@ The third `match-string' will be the used in the menu.")
(nreverse toc-index)))
(define-minor-mode html-autoview-mode
- "Toggle automatic viewing via `browse-url-of-buffer' upon saving buffer.
-With positive prefix ARG always turns viewing on, with negative ARG always off.
-Can be used as a value for `html-mode-hook'."
+ "Toggle viewing of HTML files on save (HTML Autoview mode).
+With a prefix argument ARG, enable HTML Autoview mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+HTML Autoview mode is a buffer-local minor mode for use with
+`html-mode'. If enabled, saving the file automatically runs
+`browse-url-of-buffer' to view it."
nil nil nil
:group 'sgml
(if html-autoview-mode
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 428fc1db3a..deb92fc024 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."
(put-text-property start end 'latex-env-pair t)))
(define-minor-mode latex-electric-env-pair-mode
- "Automatically update the \\end arg when editing the \\begin one.
-And vice-versa."
+ "Toggle Latex Electric Env Pair mode.
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable it if ARG
+is omitted or nil.
+
+Latex Electric Env Pair mode is a buffer-local minor mode for use
+with `latex-mode'. When enabled, typing a \\begin or \\end tag
+automatically inserts its partner."
:lighter "/e"
(if latex-electric-env-pair-mode
(add-hook 'before-change-functions
diff --git a/lisp/time.el b/lisp/time.el
index f8fea0c64a..ac4a011bdf 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -484,14 +484,15 @@ update which can wait for the next redisplay."
;;;###autoload
(define-minor-mode display-time-mode
"Toggle display of time, load level, and mail flag in mode lines.
-With a numeric arg, enable this display if arg is positive.
-
-When this display is enabled, it updates automatically every minute
-\(you can control the number of seconds between updates by
-customizing `display-time-interval').
-If `display-time-day-and-date' is non-nil, the current day and date
-are displayed as well.
-This runs the normal hook `display-time-hook' after each update."
+With a prefix argument ARG, enable Display Time mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+it if ARG is omitted or nil.
+
+When Display Time mode is enabled, it updates every minute (you
+can control the number of seconds between updates by customizing
+`display-time-interval'). If `display-time-day-and-date' is
+non-nil, the current day and date are displayed as well. This
+runs the normal hook `display-time-hook' after each update."
:global t :group 'display-time
(and display-time-timer (cancel-timer display-time-timer))
(setq display-time-timer nil)
diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el
index 05208abb72..8759e0f77f 100644
--- a/lisp/tool-bar.el
+++ b/lisp/tool-bar.el
@@ -43,9 +43,10 @@
;; Deleting it means invoking this command won't work
;; when you are on a tty. I hope that won't cause too much trouble -- rms.
(define-minor-mode tool-bar-mode
- "Toggle use of the tool bar.
-With a numeric argument, if the argument is positive, turn on the
-tool bar; otherwise, turn off the tool bar.
+ "Toggle the tool bar in all graphical frames (Tool Bar mode).
+With a prefix argument ARG, enable Tool Bar mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+Tool Bar mode if ARG is omitted or nil.
See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for
conveniently adding tool bar items."
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index bfe53dc71b..59115122c3 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -39,11 +39,14 @@
;;; Switching tooltips on/off
(define-minor-mode tooltip-mode
- "Toggle Tooltip mode.
-With ARG, turn Tooltip mode on if and only if ARG is positive.
-When this minor mode is enabled, Emacs displays help text
-in a pop-up window for buttons and menu items that you put the mouse on.
-\(However, if `tooltip-use-echo-area' is non-nil, this and
+ "Toggle use of graphical tooltips (Tooltip mode).
+With a prefix argument ARG, enable Tooltip mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+it if ARG is omitted or nil.
+
+When Tooltip mode is enabled, Emacs displays help text in a
+pop-up window for buttons and menu items that you put the mouse
+on. \(However, if `tooltip-use-echo-area' is non-nil, this and
all pop-up help appears in the echo area.)
When Tooltip mode is disabled, Emacs displays one line of
diff --git a/lisp/type-break.el b/lisp/type-break.el
index d276e64f6d..da3129ec57 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -431,13 +431,13 @@ problems."
type-break-mode)
(define-minor-mode type-break-mode-line-message-mode
- "Enable or disable warnings in the mode line about typing breaks.
+ "Toggle warnings about typing breaks in the mode line.
+With a prefix argument ARG, enable these warnings if ARG is
+positive, and disable them otherwise. If called from Lisp,
+enable them if ARG is omitted or nil.
-A negative PREFIX argument disables this mode.
-No argument or any non-negative argument enables it.
-
-The user may also enable or disable this mode simply by setting the
-variable of the same name.
+The user may also enable or disable this mode simply by setting
+the variable of the same name.
Variables controlling the display of messages in the mode line include:
@@ -448,17 +448,13 @@ Variables controlling the display of messages in the mode line include:
:global t)
(define-minor-mode type-break-query-mode
- "Enable or disable warnings in the mode line about typing breaks.
-
-When enabled, the user is periodically queried about whether to take a
-typing break at that moment. The function which does this query is
-specified by the variable `type-break-query-function'.
-
-A negative PREFIX argument disables this mode.
-No argument or any non-negative argument enables it.
+ "Toggle typing break queries.
+With a prefix argument ARG, enable these queries if ARG is
+positive, and disable them otherwise. If called from Lisp,
+enable them if ARG is omitted or nil.
-The user may also enable or disable this mode simply by setting the
-variable of the same name."
+The user may also enable or disable this mode simply by setting
+the variable of the same name."
:global t)
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index fbc267df44..1b6890e525 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-19 Chong Yidong <cyd@gnu.org>
+
+ * url-handlers.el (url-handler-mode): Doc fix.
+
2011-09-24 Christopher J. White <chris@grierwhite.com> (tiny change)
* 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 fef0ef15e9..d5f7eb7dd3 100644
--- a/lisp/url/url-handlers.el
+++ b/lisp/url/url-handlers.el
@@ -100,7 +100,10 @@ particularly bad at this\).")
;;;###autoload
(define-minor-mode url-handler-mode
- "Use URL to handle URL-like file names."
+ "Toggle using `url' library for URL filenames (URL Handler mode).
+With a prefix argument ARG, enable URL Handler mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil."
:global t :group 'url
(if (not (boundp 'file-name-handler-alist))
;; Can't be turned ON anyway.
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 392973e08f..9f0fa584b0 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -225,9 +225,16 @@ when editing big diffs)."
"Keymap for `diff-minor-mode'. See also `diff-mode-shared-map'.")
(define-minor-mode diff-auto-refine-mode
- "Automatically highlight changes in detail as the user visits hunks.
-When transitioning from disabled to enabled,
-try to refine the current hunk, as well."
+ "Toggle automatic diff hunk highlighting (Diff Auto Refine mode).
+With a prefix argument ARG, enable Diff Auto Refine mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
+
+Diff Auto Refine mode is a buffer-local minor mode used with
+`diff-mode'. When enabled, Emacs automatically highlights
+changes in detail as the user visits hunks. When transitioning
+from disabled to enabled, it tries to refine the current hunk, as
+well."
:group 'diff-mode :init-value t :lighter nil ;; " Auto-Refine"
(when diff-auto-refine-mode
(condition-case-no-debug nil (diff-refine-hunk) (error nil))))
@@ -1306,7 +1313,11 @@ a diff with \\[diff-reverse-direction].
;;;###autoload
(define-minor-mode diff-minor-mode
- "Minor mode for viewing/editing context diffs.
+ "Toggle Diff minor mode.
+With a prefix argument ARG, enable Diff minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
\\{diff-minor-mode-map}"
:group 'diff-mode :lighter " Diff"
;; FIXME: setup font-lock
diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el
index 0d904ec85c..eeaa2cfa92 100644
--- a/lisp/vc/ediff-init.el
+++ b/lisp/vc/ediff-init.el
@@ -1340,11 +1340,9 @@ this variable represents.")
ovr-list))))))))
-(defvar ediff-toggle-read-only-function nil
- "*Specifies the function to be used to toggle read-only.
-If nil, Ediff tries to deduce the function from the binding of C-x C-q.
-Normally, this is the `toggle-read-only' function, but, if version
-control is used, it could be `vc-toggle-read-only' or `rcs-toggle-read-only'.")
+(defvar ediff-toggle-read-only-function 'toggle-read-only
+ "Function to be used to toggle read-only status of the buffer.
+If nil, Ediff tries using the command bound to C-x C-q.")
(defcustom ediff-make-buffers-readonly-at-startup nil
"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 b3f5cfb78f..c421304442 100644
--- a/lisp/vc/log-edit.el
+++ b/lisp/vc/log-edit.el
@@ -386,7 +386,7 @@ uses the current buffer."
(setq setup (not setup)))
(when setup
(erase-buffer)
- (insert "Summary: ")
+ (insert "Summary: \nAuthor: ")
(save-excursion (insert "\n\n")))
(if mode
(funcall mode)
@@ -536,7 +536,7 @@ If you want to abort the commit, simply delete the buffer."
(or (= (point-min) (point-max))
(save-excursion
(goto-char (point-min))
- (while (and (looking-at "^\\(Summary: \\)?$")
+ (while (and (looking-at "^\\([a-zA-Z]+: \\)?$")
(zerop (forward-line 1))))
(eobp))))
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index 3ab1caf286..cc28db689e 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -866,7 +866,7 @@ stream. Standard error output is discarded."
(" M " . edited) ;; file text modified
(" *" . edited) ;; execute bit changed
(" M*" . edited) ;; text modified + execute bit changed
- ;; FIXME: what about ignored files?
+ ("I " . ignored)
(" D " . missing)
;; For conflicts, should we list the .THIS/.BASE/.OTHER?
("C " . conflict)
@@ -916,7 +916,7 @@ stream. Standard error output is discarded."
(push (list new-name 'edited
(vc-bzr-create-extra-fileinfo old-name)) result)))
;; do nothing for non existent files
- ((eq translated 'not-found))
+ ((memq translated '(not-found ignored)))
(t
(push (list (file-relative-name
(buffer-substring-no-properties
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index e7bfd27373..35fa11c2e5 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -648,22 +648,8 @@ this function."
(throw 'found trial))))
templates))))
-(defun vc-toggle-read-only (&optional verbose)
- "Change read-only status of current buffer, perhaps via version control.
-
-If the buffer is visiting a file registered with version control,
-throw an error, because this is not a safe or really meaningful operation
-on any version-control system newer than RCS.
-
-Otherwise, just change the read-only flag of the buffer.
-
-If you bind this function to \\[toggle-read-only], then Emacs
-will properly intercept all attempts to toggle the read-only flag
-on version-controlled buffer."
- (interactive "P")
- (if (vc-backend buffer-file-name)
- (error "Toggling the readability of a version controlled file is likely to wreak havoc")
- (toggle-read-only)))
+(define-obsolete-function-alias
+ 'vc-toggle-read-only 'toggle-read-only "24.1")
(defun vc-default-make-version-backups-p (backend file)
"Return non-nil if unmodified versions should be backed up locally.
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 62536fd94b..909585138f 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -675,6 +675,8 @@
:type 'boolean
:group 'vc)
+(make-obsolete-variable 'vc-initial-comment "it has no effect." "23.2")
+
(defcustom vc-default-init-revision "1.1"
"A string used as the default revision number when a new file is registered.
This can be overridden by giving a prefix argument to \\[vc-register]. This
@@ -1118,9 +1120,13 @@ merge in the changes into your working copy."
;; Files have local changes
((vc-compatible-state state 'edited)
(let ((ready-for-commit files))
- ;; If files are edited but read-only, give user a chance to correct
+ ;; If files are edited but read-only, give user a chance to correct.
(dolist (file files)
- (unless (file-writable-p file)
+ ;; If committing a mix of removed and edited files, the
+ ;; fileset has state = 'edited. Rather than checking the
+ ;; state of each individual file in the fileset, it seems
+ ;; simplest to just check if the file exists. Bug#9781.
+ (when (and (file-exists-p file) (not (file-writable-p file)))
;; Make the file+buffer read-write.
(unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue? " file))
(error "Aborted"))
diff --git a/lisp/view.el b/lisp/view.el
index 11cbc79449..ef86500733 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -369,19 +369,24 @@ this argument instead of explicitly setting `view-exit-action'."
;; bindings instead of using the \\[] construction. The reason for this
;; is that most commands have more than one key binding.
"Toggle View mode, a minor mode for viewing text but not editing it.
-With prefix argument ARG, turn View mode on if ARG is positive, otherwise
-turn it off.
+With a prefix argument ARG, enable View mode if ARG is positive,
+and disable it otherwise. If called from Lisp, enable View mode
+if ARG is omitted or nil.
+
+When View mode is enabled, commands that do not change the buffer
+contents are available as usual. Kill commands insert text in
+kill buffers but do not delete. Most other commands beep and
+tell the user that the buffer is read-only.
-Emacs commands that do not change the buffer contents are available as usual.
-Kill commands insert text in kill buffers but do not delete. Other commands
-\(among them most letters and punctuation) beep and tell that the buffer is
-read-only.
\\<view-mode-map>
-The following additional commands are provided. Most commands take prefix
-arguments. Page commands default to \"page size\" lines which is almost a whole
-window 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
-and set \"half page size\" lines which initially is half a window full. Search
-commands default to a repeat count of one.
+
+The following additional commands are provided. Most commands
+take prefix arguments. Page commands default to \"page size\"
+lines which is almost a whole window, 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 and set \"half page size\" lines
+which initially is half a window full. Search commands default
+to a repeat count of one.
H, h, ? This message.
Digits provide prefix arguments.
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index e0bc74343d..8dc1996734 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1064,11 +1064,10 @@ Any other value is treated as nil."
;;;###autoload
(define-minor-mode whitespace-mode
- "Toggle whitespace minor mode visualization (\"ws\" on modeline).
-
-If ARG is null, toggle whitespace visualization.
-If ARG is a number greater than zero, turn on visualization;
-otherwise, turn off visualization.
+ "Toggle whitespace visualization (Whitespace mode).
+With a prefix argument ARG, enable Whitespace mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
See also `whitespace-style', `whitespace-newline' and
`whitespace-display-mappings'."
@@ -1088,11 +1087,10 @@ See also `whitespace-style', `whitespace-newline' and
;;;###autoload
(define-minor-mode whitespace-newline-mode
- "Toggle NEWLINE minor mode visualization (\"nl\" on modeline).
-
-If ARG is null, toggle NEWLINE visualization.
-If ARG is a number greater than zero, turn on visualization;
-otherwise, turn off visualization.
+ "Toggle newline visualization (Whitespace Newline mode).
+With a prefix argument ARG, enable Whitespace Newline mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable the mode if ARG is omitted or nil.
Use `whitespace-newline-mode' only for NEWLINE visualization
exclusively. For other visualizations, including NEWLINE
@@ -1116,11 +1114,10 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
;;;###autoload
(define-minor-mode global-whitespace-mode
- "Toggle whitespace global minor mode visualization (\"WS\" on modeline).
-
-If ARG is null, toggle whitespace visualization.
-If ARG is a number greater than zero, turn on visualization;
-otherwise, turn off visualization.
+ "Toggle whitespace visualization globally (Global Whitespace mode).
+With a prefix argument ARG, enable Global Whitespace mode if ARG
+is positive, and disable it otherwise. If called from Lisp,
+enable it if ARG is omitted or nil.
See also `whitespace-style', `whitespace-newline' and
`whitespace-display-mappings'."
@@ -1174,11 +1171,10 @@ See also `whitespace-style', `whitespace-newline' and
;;;###autoload
(define-minor-mode global-whitespace-newline-mode
- "Toggle NEWLINE global minor mode visualization (\"NL\" on modeline).
-
-If ARG is null, toggle NEWLINE visualization.
-If ARG is a number greater than zero, turn on visualization;
-otherwise, turn off visualization.
+ "Toggle global newline visualization (Global Whitespace Newline mode).
+With a prefix argument ARG, enable Global Whitespace Newline mode
+if ARG is positive, and disable it otherwise. If called from
+Lisp, enable it if ARG is omitted or nil.
Use `global-whitespace-newline-mode' only for NEWLINE
visualization exclusively. For other visualizations, including
diff --git a/lisp/wid-browse.el b/lisp/wid-browse.el
index b765e46b9c..7ca13baeb5 100644
--- a/lisp/wid-browse.el
+++ b/lisp/wid-browse.el
@@ -270,8 +270,7 @@ VALUE is assumed to be a list of widgets."
;;;###autoload
(define-minor-mode widget-minor-mode
- "Togle minor mode for traversing widgets.
-With arg, turn widget mode on if and only if arg is positive."
+ "Minor mode for traversing widgets."
:lighter " Widget")
;;; The End:
diff --git a/lisp/window.el b/lisp/window.el
index 4d8b3c92b9..968f47f4f3 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -1084,6 +1084,35 @@ regardless of whether that buffer is current or not."
(goto-char pos))
(set-window-point window pos)))
+(defun window-at-side-p (&optional window side)
+ "Return t if WINDOW is at SIDE of its containing frame.
+WINDOW can be any window and defaults to the selected one. SIDE
+can be any of the symbols `left', `top', `right' or `bottom'.
+The default value nil is handled like `bottom'."
+ (setq window (window-normalize-any-window window))
+ (let ((edge
+ (cond
+ ((eq side 'left) 0)
+ ((eq side 'top) 1)
+ ((eq side 'right) 2)
+ ((memq side '(bottom nil)) 3))))
+ (= (nth edge (window-edges window))
+ (nth edge (window-edges (frame-root-window window))))))
+
+(defun windows-at-side (&optional frame side)
+ "Return list of all windows on SIDE of FRAME.
+FRAME must be a live frame and defaults to the selected frame.
+SIDE can be any of the symbols `left', `top', `right' or
+`bottom'. The default value nil is handled like `bottom'."
+ (setq frame (window-normalize-frame frame))
+ (let (windows)
+ (walk-window-tree
+ (lambda (window)
+ (when (window-at-side-p window side)
+ (setq windows (cons window windows))))
+ frame)
+ (nreverse windows)))
+
(defun window-in-direction-2 (window posn &optional horizontal)
"Support function for `window-in-direction'."
(if horizontal
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index eca5f813ca..09b2a7b88b 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -199,8 +199,9 @@
;;;###autoload
(define-minor-mode xterm-mouse-mode
"Toggle XTerm mouse mode.
-With prefix arg, turn XTerm mouse mode on if arg is positive, otherwise turn
-it off.
+With a prefix argument ARG, enable XTerm mouse mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
Turn it on to use Emacs mouse commands, and off to use xterm mouse commands.
This works in terminal emulators compatible with xterm. It only
diff --git a/make-dist b/make-dist
index 2dbb35cdc5..a428686cc8 100755
--- a/make-dist
+++ b/make-dist
@@ -302,7 +302,6 @@ for subdir in site-lisp \
nextstep/Cocoa/Emacs.base/Contents \
nextstep/Cocoa/Emacs.base/Contents/Resources \
nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj \
- nextstep/Cocoa/Emacs.xcodeproj \
nextstep/GNUstep \
nextstep/GNUstep/Emacs.base \
nextstep/GNUstep/Emacs.base/Resources
@@ -438,10 +437,6 @@ echo "Making links to \`nextstep/Cocoa/Emacs.base/Contents/Resources/English.lpr
(cd nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj
ln InfoPlist.strings ../../../../../../${tempdir}/nextstep/Cocoa/Emacs.base/Contents/Resources/English.lproj)
-echo "Making links to \`nextstep/Cocoa/Emacs.xcodeproj'"
-(cd nextstep/Cocoa/Emacs.xcodeproj
- ln project.pbxproj ../../../${tempdir}/nextstep/Cocoa/Emacs.xcodeproj)
-
echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
(cd nextstep/GNUstep/Emacs.base/Resources
ln Emacs.desktop Info-gnustep.plist README emacs.tiff ../../../../${tempdir}/nextstep/GNUstep/Emacs.base/Resources )
diff --git a/nextstep/ChangeLog b/nextstep/ChangeLog
index 263bd923f0..4e8fe39997 100644
--- a/nextstep/ChangeLog
+++ b/nextstep/ChangeLog
@@ -1,3 +1,13 @@
+2011-10-19 Jan Djärv <jan.h.d@swipnet.se>
+
+ * INSTALL: Remove XCode part.
+
+2011-10-18 Jan Djärv <jan.h.d@swipnet.se>
+
+ * Cocoa/Emacs.xcodeproj:
+ * Cocoa/Emacs.xcodeproj/project.pbxproj:
+ Removed.
+
2011-03-07 Chong Yidong <cyd@stupidchicken.com>
* 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 fe5acce2c3..0000000000
--- a/nextstep/Cocoa/Emacs.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,798 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXBuildFile section */
- 3C3AF9CA0FC10CDF001240E9 /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C3AF9C90FC10CDF001240E9 /* menu.c */; };
- 3C3AF9D50FC10D85001240E9 /* libncurses.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */; };
- 3CED87390FC0F581005ACB89 /* alloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC50902EA8200B2EF7E /* alloc.c */; };
- 3CED873A0FC0F581005ACB89 /* atimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCD0902EA8200B2EF7E /* atimer.c */; };
- 3CED873B0FC0F581005ACB89 /* buffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8B0902EA8200B2EF7E /* buffer.c */; };
- 3CED873C0FC0F581005ACB89 /* bytecode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC60902EA8200B2EF7E /* bytecode.c */; };
- 3CED873D0FC0F581005ACB89 /* callint.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB40902EA8200B2EF7E /* callint.c */; };
- 3CED873E0FC0F581005ACB89 /* callproc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC70902EA8200B2EF7E /* callproc.c */; };
- 3CED873F0FC0F581005ACB89 /* casefiddle.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */; };
- 3CED87400FC0F581005ACB89 /* casetab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC10902EA8200B2EF7E /* casetab.c */; };
- 3CED87410FC0F581005ACB89 /* category.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7B0902EA8200B2EF7E /* category.c */; };
- 3CED87420FC0F581005ACB89 /* ccl.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB60902EA8200B2EF7E /* ccl.c */; };
- 3CED87430FC0F581005ACB89 /* character.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED8C0902EA8200B2EF7E /* character.c */; };
- 3CED87440FC0F581005ACB89 /* charset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC40902EA8200B2EF7E /* charset.c */; };
- 3CED87450FC0F581005ACB89 /* chartab.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCC0902EA8200B2EF7E /* chartab.c */; };
- 3CED87460FC0F581005ACB89 /* cm.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC80902EA8200B2EF7E /* cm.c */; };
- 3CED87470FC0F581005ACB89 /* cmds.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7A0902EA8200B2EF7E /* cmds.c */; };
- 3CED87480FC0F581005ACB89 /* coding.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED7C0902EA8200B2EF7E /* coding.c */; };
- 3CED87490FC0F581005ACB89 /* composite.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC20902EA8200B2EF7E /* composite.c */; };
- 3CED874A0FC0F581005ACB89 /* data.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB30902EA8200B2EF7E /* data.c */; };
- 3CED874B0FC0F581005ACB89 /* dired.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB20902EA8200B2EF7E /* dired.c */; };
- 3CED874C0FC0F581005ACB89 /* dispnew.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC30902EA8200B2EF7E /* dispnew.c */; };
- 3CED874D0FC0F581005ACB89 /* doc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB10902EA8200B2EF7E /* doc.c */; };
- 3CED874E0FC0F581005ACB89 /* doprnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB00902EA8200B2EF7E /* doprnt.c */; };
- 3CED874F0FC0F581005ACB89 /* editfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBE0902EA8200B2EF7E /* editfns.c */; };
- 3CED87500FC0F581005ACB89 /* emacs.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBD0902EA8200B2EF7E /* emacs.c */; };
- 3CED87510FC0F581005ACB89 /* eval.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDC00902EA8200B2EF7E /* eval.c */; };
- 3CED87520FC0F581005ACB89 /* fileio.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBF0902EA8200B2EF7E /* fileio.c */; };
- 3CED87530FC0F581005ACB89 /* filelock.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBC0902EA8200B2EF7E /* filelock.c */; };
- 3CED87540FC0F581005ACB89 /* filemode.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDBB0902EA8200B2EF7E /* filemode.c */; };
- 3CED87550FC0F581005ACB89 /* floatfns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB90902EA8200B2EF7E /* floatfns.c */; };
- 3CED87560FC0F581005ACB89 /* fns.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB80902EA8200B2EF7E /* fns.c */; };
- 3CED87570FC0F581005ACB89 /* font.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D660DE50D2300B20D4E /* font.c */; };
- 3CED87580FC0F581005ACB89 /* fontset.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDB70902EA8200B2EF7E /* fontset.c */; };
- 3CED87590FC0F581005ACB89 /* frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCB0902EA8200B2EF7E /* frame.c */; };
- 3CED875A0FC0F581005ACB89 /* fringe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCEDCA0902EA8200B2EF7E /* fringe.c */; };
- 3CED875B0FC0F581005ACB89 /* image.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED780902EA8200B2EF7E /* image.c */; };
- 3CED875C0FC0F581005ACB89 /* indent.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED770902EA8200B2EF7E /* indent.c */; };
- 3CED875D0FC0F581005ACB89 /* insdel.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED760902EA8200B2EF7E /* insdel.c */; };
- 3CED875E0FC0F581005ACB89 /* intervals.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED750902EA8200B2EF7E /* intervals.c */; };
- 3CED875F0FC0F581005ACB89 /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED740902EA8200B2EF7E /* keyboard.c */; };
- 3CED87600FC0F581005ACB89 /* keymap.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED730902EA8100B2EF7E /* keymap.c */; };
- 3CED87610FC0F581005ACB89 /* lastfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED720902EA8100B2EF7E /* lastfile.c */; };
- 3CED87620FC0F581005ACB89 /* lread.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED710902EA8100B2EF7E /* lread.c */; };
- 3CED87630FC0F581005ACB89 /* macros.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED6D0902EA8100B2EF7E /* macros.c */; };
- 3CED87640FC0F581005ACB89 /* marker.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED690902EA8100B2EF7E /* marker.c */; };
- 3CED87650FC0F581005ACB89 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED680902EA8100B2EF7E /* md5.c */; };
- 3CED87660FC0F581005ACB89 /* minibuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED670902EA8100B2EF7E /* minibuf.c */; };
- 3CED87670FC0F581005ACB89 /* nsfns.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF67E00C61DCD7F000001 /* nsfns.m */; };
- 3CED87680FC0F581005ACB89 /* nsfont.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D710DE50D5D00B20D4E /* nsfont.m */; };
- 3CED87690FC0F581005ACB89 /* nsimage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C15C1A70902D97100A8542F /* nsimage.m */; };
- 3CED876A0FC0F581005ACB89 /* nsmenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68000C61DCD7F000001 /* nsmenu.m */; };
- 3CED876B0FC0F581005ACB89 /* nsselect.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68100C61DCD7F000001 /* nsselect.m */; };
- 3CED876C0FC0F581005ACB89 /* nsterm.m in Sources */ = {isa = PBXBuildFile; fileRef = 090AF68300C61DCD7F000001 /* nsterm.m */; };
- 3CED876D0FC0F581005ACB89 /* pre-crt0.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED640902EA8100B2EF7E /* pre-crt0.c */; };
- 3CED876E0FC0F581005ACB89 /* print.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED620902EA8100B2EF7E /* print.c */; };
- 3CED876F0FC0F581005ACB89 /* process.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED610902EA8100B2EF7E /* process.c */; };
- 3CED87700FC0F581005ACB89 /* regex.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5F0902EA8100B2EF7E /* regex.c */; };
- 3CED87710FC0F581005ACB89 /* region-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5E0902EA8100B2EF7E /* region-cache.c */; };
- 3CED87720FC0F581005ACB89 /* scroll.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5D0902EA8100B2EF7E /* scroll.c */; };
- 3CED87730FC0F581005ACB89 /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5C0902EA8100B2EF7E /* search.c */; };
- 3CED87740FC0F581005ACB89 /* sound.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED5A0902EA8100B2EF7E /* sound.c */; };
- 3CED87750FC0F581005ACB89 /* strftime.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED590902EA8100B2EF7E /* strftime.c */; };
- 3CED87760FC0F581005ACB89 /* syntax.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED570902EA8100B2EF7E /* syntax.c */; };
- 3CED87770FC0F581005ACB89 /* sysdep.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED560902EA8100B2EF7E /* sysdep.c */; };
- 3CED87780FC0F581005ACB89 /* term.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED550902EA8100B2EF7E /* term.c */; };
- 3CED877A0FC0F581005ACB89 /* terminal.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4D6D690DE50D2300B20D4E /* terminal.c */; };
- 3CED877B0FC0F581005ACB89 /* terminfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED950902EA8200B2EF7E /* terminfo.c */; };
- 3CED877C0FC0F581005ACB89 /* textprop.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED940902EA8200B2EF7E /* textprop.c */; };
- 3CED877E0FC0F581005ACB89 /* undo.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED920902EA8200B2EF7E /* undo.c */; };
- 3CED877F0FC0F581005ACB89 /* unexmacosx.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED830902EA8200B2EF7E /* unexmacosx.c */; };
- 3CED87800FC0F581005ACB89 /* window.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9E0902EA8200B2EF7E /* window.c */; };
- 3CED87810FC0F581005ACB89 /* xdisp.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9D0902EA8200B2EF7E /* xdisp.c */; };
- 3CED87820FC0F581005ACB89 /* xfaces.c in Sources */ = {isa = PBXBuildFile; fileRef = 3CDCED9C0902EA8200B2EF7E /* xfaces.c */; };
- 3CED88190FC0F5B3005ACB89 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CFDFC3A08E79A6800B05918 /* AppKit.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 3CED88220FC0FE5C005ACB89 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 3CED87320FC0F557005ACB89;
- remoteInfo = temacs;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 090AF67E00C61DCD7F000001 /* nsfns.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsfns.m; path = ../../src/nsfns.m; sourceTree = "<group>"; };
- 090AF68000C61DCD7F000001 /* nsmenu.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsmenu.m; path = ../../src/nsmenu.m; sourceTree = "<group>"; };
- 090AF68100C61DCD7F000001 /* nsselect.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsselect.m; path = ../../src/nsselect.m; sourceTree = "<group>"; };
- 090AF68300C61DCD7F000001 /* nsterm.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsterm.m; path = ../../src/nsterm.m; sourceTree = "<group>"; };
- 3C15C02F0902D89500A8542F /* termhooks.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termhooks.h; path = ../../src/termhooks.h; sourceTree = "<group>"; };
- 3C15C0300902D89500A8542F /* termchar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termchar.h; path = ../../src/termchar.h; sourceTree = "<group>"; };
- 3C15C0330902D89500A8542F /* syswait.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syswait.h; path = ../../src/syswait.h; sourceTree = "<group>"; };
- 3C15C0340902D89500A8542F /* systty.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systty.h; path = ../../src/systty.h; sourceTree = "<group>"; };
- 3C15C0350902D89500A8542F /* systime.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = systime.h; path = ../../src/systime.h; sourceTree = "<group>"; };
- 3C15C0360902D89500A8542F /* syssignal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syssignal.h; path = ../../src/syssignal.h; sourceTree = "<group>"; };
- 3C15C0370902D89500A8542F /* sysselect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sysselect.h; path = ../../src/sysselect.h; sourceTree = "<group>"; };
- 3C15C0390902D89500A8542F /* syntax.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = syntax.h; path = ../../src/syntax.h; sourceTree = "<group>"; };
- 3C15C0410902D89500A8542F /* region-cache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "region-cache.h"; path = "../../src/region-cache.h"; sourceTree = "<group>"; };
- 3C15C0430902D89500A8542F /* regex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = regex.h; path = ../../src/regex.h; sourceTree = "<group>"; };
- 3C15C0460902D89500A8542F /* puresize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = puresize.h; path = ../../src/puresize.h; sourceTree = "<group>"; };
- 3C15C0470902D89500A8542F /* process.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = process.h; path = ../../src/process.h; sourceTree = "<group>"; };
- 3C15C04C0902D89500A8542F /* point.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = point.h; path = ../../src/point.h; sourceTree = "<group>"; };
- 3C15C04F0902D89500A8542F /* nsgui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsgui.h; path = ../../src/nsgui.h; sourceTree = "<group>"; };
- 3C15C0500902D89500A8542F /* ndir.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ndir.h; path = ../../src/ndir.h; sourceTree = "<group>"; };
- 3C15C0550902D89500A8542F /* mem-limits.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "mem-limits.h"; path = "../../src/mem-limits.h"; sourceTree = "<group>"; };
- 3C15C0560902D89500A8542F /* md5.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = md5.h; path = ../../src/md5.h; sourceTree = "<group>"; };
- 3C15C05D0902D89500A8542F /* macros.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = macros.h; path = ../../src/macros.h; sourceTree = "<group>"; };
- 3C15C0660902D89500A8542F /* keymap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keymap.h; path = ../../src/keymap.h; sourceTree = "<group>"; };
- 3C15C0680902D89500A8542F /* keyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keyboard.h; path = ../../src/keyboard.h; sourceTree = "<group>"; };
- 3C15C06B0902D89500A8542F /* intervals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = intervals.h; path = ../../src/intervals.h; sourceTree = "<group>"; };
- 3C15C06E0902D89500A8542F /* indent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = indent.h; path = ../../src/indent.h; sourceTree = "<group>"; };
- 3C15C0760902D89500A8542F /* category.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = category.h; path = ../../src/category.h; sourceTree = "<group>"; };
- 3C15C0770902D89500A8542F /* coding.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = coding.h; path = ../../src/coding.h; sourceTree = "<group>"; };
- 3C15C0780902D89500A8542F /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = buffer.h; path = ../../src/buffer.h; sourceTree = "<group>"; };
- 3C15C0890902D89500A8542F /* cm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cm.h; path = ../../src/cm.h; sourceTree = "<group>"; };
- 3C15C0950902D89500A8542F /* termopts.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = termopts.h; path = ../../src/termopts.h; sourceTree = "<group>"; };
- 3C15C0A00902D89500A8542F /* window.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = window.h; path = ../../src/window.h; sourceTree = "<group>"; };
- 3C15C0B80902D89500A8542F /* getpagesize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = getpagesize.h; path = ../../src/getpagesize.h; sourceTree = "<group>"; };
- 3C15C0BF0902D89500A8542F /* disptab.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = disptab.h; path = ../../src/disptab.h; sourceTree = "<group>"; };
- 3C15C0C20902D89500A8542F /* epaths.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = epaths.h; path = ../../src/epaths.h; sourceTree = "<group>"; };
- 3C15C0C50902D89500A8542F /* ccl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ccl.h; path = ../../src/ccl.h; sourceTree = "<group>"; };
- 3C15C0C70902D89500A8542F /* composite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = composite.h; path = ../../src/composite.h; sourceTree = "<group>"; };
- 3C15C0C80902D89500A8542F /* charset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = charset.h; path = ../../src/charset.h; sourceTree = "<group>"; };
- 3C15C0C90902D89500A8542F /* fontset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fontset.h; path = ../../src/fontset.h; sourceTree = "<group>"; };
- 3C15C0D70902D89500A8542F /* commands.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = commands.h; path = ../../src/commands.h; sourceTree = "<group>"; };
- 3C15C0D90902D89500A8542F /* dispextern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = dispextern.h; path = ../../src/dispextern.h; sourceTree = "<group>"; };
- 3C15C0DE0902D89500A8542F /* character.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = character.h; path = ../../src/character.h; sourceTree = "<group>"; };
- 3C15C0E40902D89500A8542F /* frame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = frame.h; path = ../../src/frame.h; sourceTree = "<group>"; };
- 3C15C0E60902D89500A8542F /* atimer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atimer.h; path = ../../src/atimer.h; sourceTree = "<group>"; };
- 3C15C0E70902D89500A8542F /* blockinput.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = blockinput.h; path = ../../src/blockinput.h; sourceTree = "<group>"; };
- 3C15C1A70902D97100A8542F /* nsimage.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = nsimage.m; path = ../../src/nsimage.m; sourceTree = "<group>"; };
- 3C3AF9C90FC10CDF001240E9 /* menu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = menu.c; path = ../../src/menu.c; sourceTree = SOURCE_ROOT; };
- 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.dylib; path = /usr/lib/libncurses.dylib; sourceTree = "<absolute>"; };
- 3C4D6D660DE50D2300B20D4E /* font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = font.c; path = ../../src/font.c; sourceTree = SOURCE_ROOT; };
- 3C4D6D670DE50D2300B20D4E /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = font.h; path = ../../src/font.h; sourceTree = SOURCE_ROOT; };
- 3C4D6D690DE50D2300B20D4E /* terminal.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = terminal.c; path = ../../src/terminal.c; sourceTree = SOURCE_ROOT; };
- 3C4D6D710DE50D5D00B20D4E /* nsfont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = nsfont.m; path = ../../src/nsfont.m; sourceTree = SOURCE_ROOT; };
- 3C7F3C3A07EB3B05003C8A4D /* nsterm.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = nsterm.h; path = ../../src/nsterm.h; sourceTree = "<group>"; };
- 3CB8E29D0E2CE73A003F3104 /* Emacs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Emacs.icns; path = Emacs.base/Contents/Resources/Emacs.icns; sourceTree = "<group>"; };
- 3CB8E29F0E2CE7F5003F3104 /* Credits.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Credits.html; path = Emacs.base/Contents/Resources/Credits.html; sourceTree = "<group>"; };
- 3CB8E2A60E2CE856003F3104 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; };
- 3CC5434C07E2315800C271A9 /* Emacs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Emacs.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 3CDCED330902E99700B2EF7E /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../../src/config.h; sourceTree = "<group>"; };
- 3CDCED550902EA8100B2EF7E /* term.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = term.c; path = ../../src/term.c; sourceTree = "<group>"; };
- 3CDCED560902EA8100B2EF7E /* sysdep.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sysdep.c; path = ../../src/sysdep.c; sourceTree = "<group>"; };
- 3CDCED570902EA8100B2EF7E /* syntax.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = syntax.c; path = ../../src/syntax.c; sourceTree = "<group>"; };
- 3CDCED590902EA8100B2EF7E /* strftime.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = strftime.c; path = ../../src/strftime.c; sourceTree = "<group>"; };
- 3CDCED5A0902EA8100B2EF7E /* sound.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = sound.c; path = ../../src/sound.c; sourceTree = "<group>"; };
- 3CDCED5C0902EA8100B2EF7E /* search.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = search.c; path = ../../src/search.c; sourceTree = "<group>"; };
- 3CDCED5D0902EA8100B2EF7E /* scroll.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scroll.c; path = ../../src/scroll.c; sourceTree = "<group>"; };
- 3CDCED5E0902EA8100B2EF7E /* region-cache.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "region-cache.c"; path = "../../src/region-cache.c"; sourceTree = "<group>"; };
- 3CDCED5F0902EA8100B2EF7E /* regex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = regex.c; path = ../../src/regex.c; sourceTree = "<group>"; };
- 3CDCED610902EA8100B2EF7E /* process.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = process.c; path = ../../src/process.c; sourceTree = "<group>"; };
- 3CDCED620902EA8100B2EF7E /* print.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = print.c; path = ../../src/print.c; sourceTree = "<group>"; };
- 3CDCED640902EA8100B2EF7E /* pre-crt0.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = "pre-crt0.c"; path = "../../src/pre-crt0.c"; sourceTree = "<group>"; };
- 3CDCED670902EA8100B2EF7E /* minibuf.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = minibuf.c; path = ../../src/minibuf.c; sourceTree = "<group>"; };
- 3CDCED680902EA8100B2EF7E /* md5.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../../src/md5.c; sourceTree = "<group>"; };
- 3CDCED690902EA8100B2EF7E /* marker.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = marker.c; path = ../../src/marker.c; sourceTree = "<group>"; };
- 3CDCED6D0902EA8100B2EF7E /* macros.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = macros.c; path = ../../src/macros.c; sourceTree = "<group>"; };
- 3CDCED710902EA8100B2EF7E /* lread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lread.c; path = ../../src/lread.c; sourceTree = "<group>"; };
- 3CDCED720902EA8100B2EF7E /* lastfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lastfile.c; path = ../../src/lastfile.c; sourceTree = "<group>"; };
- 3CDCED730902EA8100B2EF7E /* keymap.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keymap.c; path = ../../src/keymap.c; sourceTree = "<group>"; };
- 3CDCED740902EA8200B2EF7E /* keyboard.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = keyboard.c; path = ../../src/keyboard.c; sourceTree = "<group>"; };
- 3CDCED750902EA8200B2EF7E /* intervals.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = intervals.c; path = ../../src/intervals.c; sourceTree = "<group>"; };
- 3CDCED760902EA8200B2EF7E /* insdel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = insdel.c; path = ../../src/insdel.c; sourceTree = "<group>"; };
- 3CDCED770902EA8200B2EF7E /* indent.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = indent.c; path = ../../src/indent.c; sourceTree = "<group>"; };
- 3CDCED780902EA8200B2EF7E /* image.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../../src/image.c; sourceTree = "<group>"; };
- 3CDCED7A0902EA8200B2EF7E /* cmds.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cmds.c; path = ../../src/cmds.c; sourceTree = "<group>"; };
- 3CDCED7B0902EA8200B2EF7E /* category.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = category.c; path = ../../src/category.c; sourceTree = "<group>"; };
- 3CDCED7C0902EA8200B2EF7E /* coding.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = coding.c; path = ../../src/coding.c; sourceTree = "<group>"; };
- 3CDCED830902EA8200B2EF7E /* unexmacosx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = unexmacosx.c; path = ../../src/unexmacosx.c; sourceTree = "<group>"; };
- 3CDCED8B0902EA8200B2EF7E /* buffer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = buffer.c; path = ../../src/buffer.c; sourceTree = "<group>"; };
- 3CDCED8C0902EA8200B2EF7E /* character.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = character.c; path = ../../src/character.c; sourceTree = "<group>"; };
- 3CDCED920902EA8200B2EF7E /* undo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = undo.c; path = ../../src/undo.c; sourceTree = "<group>"; };
- 3CDCED940902EA8200B2EF7E /* textprop.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = textprop.c; path = ../../src/textprop.c; sourceTree = "<group>"; };
- 3CDCED950902EA8200B2EF7E /* terminfo.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = terminfo.c; path = ../../src/terminfo.c; sourceTree = "<group>"; };
- 3CDCED9C0902EA8200B2EF7E /* xfaces.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xfaces.c; path = ../../src/xfaces.c; sourceTree = "<group>"; };
- 3CDCED9D0902EA8200B2EF7E /* xdisp.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = xdisp.c; path = ../../src/xdisp.c; sourceTree = "<group>"; };
- 3CDCED9E0902EA8200B2EF7E /* window.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = window.c; path = ../../src/window.c; sourceTree = "<group>"; };
- 3CDCEDB00902EA8200B2EF7E /* doprnt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doprnt.c; path = ../../src/doprnt.c; sourceTree = "<group>"; };
- 3CDCEDB10902EA8200B2EF7E /* doc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = doc.c; path = ../../src/doc.c; sourceTree = "<group>"; };
- 3CDCEDB20902EA8200B2EF7E /* dired.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dired.c; path = ../../src/dired.c; sourceTree = "<group>"; };
- 3CDCEDB30902EA8200B2EF7E /* data.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = data.c; path = ../../src/data.c; sourceTree = "<group>"; };
- 3CDCEDB40902EA8200B2EF7E /* callint.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callint.c; path = ../../src/callint.c; sourceTree = "<group>"; };
- 3CDCEDB60902EA8200B2EF7E /* ccl.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ccl.c; path = ../../src/ccl.c; sourceTree = "<group>"; };
- 3CDCEDB70902EA8200B2EF7E /* fontset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fontset.c; path = ../../src/fontset.c; sourceTree = "<group>"; };
- 3CDCEDB80902EA8200B2EF7E /* fns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fns.c; path = ../../src/fns.c; sourceTree = "<group>"; };
- 3CDCEDB90902EA8200B2EF7E /* floatfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = floatfns.c; path = ../../src/floatfns.c; sourceTree = "<group>"; };
- 3CDCEDBB0902EA8200B2EF7E /* filemode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filemode.c; path = ../../src/filemode.c; sourceTree = "<group>"; };
- 3CDCEDBC0902EA8200B2EF7E /* filelock.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = filelock.c; path = ../../src/filelock.c; sourceTree = "<group>"; };
- 3CDCEDBD0902EA8200B2EF7E /* emacs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = emacs.c; path = ../../src/emacs.c; sourceTree = "<group>"; };
- 3CDCEDBE0902EA8200B2EF7E /* editfns.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = editfns.c; path = ../../src/editfns.c; sourceTree = "<group>"; };
- 3CDCEDBF0902EA8200B2EF7E /* fileio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fileio.c; path = ../../src/fileio.c; sourceTree = "<group>"; };
- 3CDCEDC00902EA8200B2EF7E /* eval.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = eval.c; path = ../../src/eval.c; sourceTree = "<group>"; };
- 3CDCEDC10902EA8200B2EF7E /* casetab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casetab.c; path = ../../src/casetab.c; sourceTree = "<group>"; };
- 3CDCEDC20902EA8200B2EF7E /* composite.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = composite.c; path = ../../src/composite.c; sourceTree = "<group>"; };
- 3CDCEDC30902EA8200B2EF7E /* dispnew.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = dispnew.c; path = ../../src/dispnew.c; sourceTree = "<group>"; };
- 3CDCEDC40902EA8200B2EF7E /* charset.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = charset.c; path = ../../src/charset.c; sourceTree = "<group>"; };
- 3CDCEDC50902EA8200B2EF7E /* alloc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = alloc.c; path = ../../src/alloc.c; sourceTree = "<group>"; };
- 3CDCEDC60902EA8200B2EF7E /* bytecode.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bytecode.c; path = ../../src/bytecode.c; sourceTree = "<group>"; };
- 3CDCEDC70902EA8200B2EF7E /* callproc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = callproc.c; path = ../../src/callproc.c; sourceTree = "<group>"; };
- 3CDCEDC80902EA8200B2EF7E /* cm.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cm.c; path = ../../src/cm.c; sourceTree = "<group>"; };
- 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = casefiddle.c; path = ../../src/casefiddle.c; sourceTree = "<group>"; };
- 3CDCEDCA0902EA8200B2EF7E /* fringe.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = fringe.c; path = ../../src/fringe.c; sourceTree = "<group>"; };
- 3CDCEDCB0902EA8200B2EF7E /* frame.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = frame.c; path = ../../src/frame.c; sourceTree = "<group>"; };
- 3CDCEDCC0902EA8200B2EF7E /* chartab.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = chartab.c; path = ../../src/chartab.c; sourceTree = "<group>"; };
- 3CDCEDCD0902EA8200B2EF7E /* atimer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = atimer.c; path = ../../src/atimer.c; sourceTree = "<group>"; };
- 3CED87260FBE696B005ACB89 /* lisp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lisp.h; path = ../../src/lisp.h; sourceTree = SOURCE_ROOT; };
- 3CED87280FBE6993005ACB89 /* menu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = menu.h; path = ../../src/menu.h; sourceTree = SOURCE_ROOT; };
- 3CED87330FC0F557005ACB89 /* temacs */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = temacs; sourceTree = BUILT_PRODUCTS_DIR; };
- 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>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 3CED87310FC0F557005ACB89 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3CED88190FC0F5B3005ACB89 /* AppKit.framework in Frameworks */,
- 3C3AF9D50FC10D85001240E9 /* libncurses.dylib in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 3CC5434C07E2315800C271A9 /* Emacs.app */,
- 3CED87330FC0F557005ACB89 /* temacs */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 289FC26B00C69A287F000001 /* NeXTstep */ = {
- isa = PBXGroup;
- children = (
- 3C4D6D710DE50D5D00B20D4E /* nsfont.m */,
- 3C15C1A70902D97100A8542F /* nsimage.m */,
- 3C15C04F0902D89500A8542F /* nsgui.h */,
- 3C7F3C3A07EB3B05003C8A4D /* nsterm.h */,
- 090AF67E00C61DCD7F000001 /* nsfns.m */,
- 090AF68000C61DCD7F000001 /* nsmenu.m */,
- 090AF68100C61DCD7F000001 /* nsselect.m */,
- 090AF68300C61DCD7F000001 /* nsterm.m */,
- );
- name = NeXTstep;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* Emacs */ = {
- isa = PBXGroup;
- children = (
- 289FC26B00C69A287F000001 /* NeXTstep */,
- 3C15C23E0902E6B000A8542F /* emacs-hdr */,
- 3CDCED4D0902EA6800B2EF7E /* emacs-src */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = Emacs;
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 3CB8E2A40E2CE856003F3104 /* English.lproj */,
- 3CB8E29F0E2CE7F5003F3104 /* Credits.html */,
- 739637F200C4DF3C7F000001 /* Images */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 3C3AF9D40FC10D85001240E9 /* libncurses.dylib */,
- 3CFDFC3A08E79A6800B05918 /* AppKit.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- 3C15C23E0902E6B000A8542F /* emacs-hdr */ = {
- isa = PBXGroup;
- children = (
- 3CED87280FBE6993005ACB89 /* menu.h */,
- 3CED87260FBE696B005ACB89 /* lisp.h */,
- 3C4D6D670DE50D2300B20D4E /* font.h */,
- 3C15C0E60902D89500A8542F /* atimer.h */,
- 3C15C0E70902D89500A8542F /* blockinput.h */,
- 3C15C0780902D89500A8542F /* buffer.h */,
- 3C15C0760902D89500A8542F /* category.h */,
- 3C15C0C50902D89500A8542F /* ccl.h */,
- 3C15C0DE0902D89500A8542F /* character.h */,
- 3C15C0C80902D89500A8542F /* charset.h */,
- 3C15C0890902D89500A8542F /* cm.h */,
- 3CDCED330902E99700B2EF7E /* config.h */,
- 3C15C0770902D89500A8542F /* coding.h */,
- 3C15C0D70902D89500A8542F /* commands.h */,
- 3C15C0C70902D89500A8542F /* composite.h */,
- 3C15C0D90902D89500A8542F /* dispextern.h */,
- 3C15C0BF0902D89500A8542F /* disptab.h */,
- 3C15C0C20902D89500A8542F /* epaths.h */,
- 3C15C0C90902D89500A8542F /* fontset.h */,
- 3C15C0E40902D89500A8542F /* frame.h */,
- 3C15C0B80902D89500A8542F /* getpagesize.h */,
- 3C15C06E0902D89500A8542F /* indent.h */,
- 3C15C06B0902D89500A8542F /* intervals.h */,
- 3C15C0660902D89500A8542F /* keymap.h */,
- 3C15C0680902D89500A8542F /* keyboard.h */,
- 3C15C05D0902D89500A8542F /* macros.h */,
- 3C15C0560902D89500A8542F /* md5.h */,
- 3C15C0550902D89500A8542F /* mem-limits.h */,
- 3C15C0500902D89500A8542F /* ndir.h */,
- 3C15C04C0902D89500A8542F /* point.h */,
- 3C15C0470902D89500A8542F /* process.h */,
- 3C15C0460902D89500A8542F /* puresize.h */,
- 3C15C0430902D89500A8542F /* regex.h */,
- 3C15C0410902D89500A8542F /* region-cache.h */,
- 3C15C0390902D89500A8542F /* syntax.h */,
- 3C15C0370902D89500A8542F /* sysselect.h */,
- 3C15C0330902D89500A8542F /* syswait.h */,
- 3C15C0360902D89500A8542F /* syssignal.h */,
- 3C15C0350902D89500A8542F /* systime.h */,
- 3C15C0340902D89500A8542F /* systty.h */,
- 3C15C0300902D89500A8542F /* termchar.h */,
- 3C15C02F0902D89500A8542F /* termhooks.h */,
- 3C15C0950902D89500A8542F /* termopts.h */,
- 3C15C0A00902D89500A8542F /* window.h */,
- );
- name = "emacs-hdr";
- sourceTree = "<group>";
- };
- 3CB8E2A40E2CE856003F3104 /* English.lproj */ = {
- isa = PBXGroup;
- children = (
- 3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */,
- );
- name = English.lproj;
- path = Emacs.base/Contents/Resources/English.lproj;
- sourceTree = "<group>";
- };
- 3CDCED4D0902EA6800B2EF7E /* emacs-src */ = {
- isa = PBXGroup;
- children = (
- 3C3AF9C90FC10CDF001240E9 /* menu.c */,
- 3C4D6D660DE50D2300B20D4E /* font.c */,
- 3C4D6D690DE50D2300B20D4E /* terminal.c */,
- 3CDCED550902EA8100B2EF7E /* term.c */,
- 3CDCED560902EA8100B2EF7E /* sysdep.c */,
- 3CDCED570902EA8100B2EF7E /* syntax.c */,
- 3CDCED590902EA8100B2EF7E /* strftime.c */,
- 3CDCED5A0902EA8100B2EF7E /* sound.c */,
- 3CDCED5C0902EA8100B2EF7E /* search.c */,
- 3CDCED5D0902EA8100B2EF7E /* scroll.c */,
- 3CDCED5E0902EA8100B2EF7E /* region-cache.c */,
- 3CDCED5F0902EA8100B2EF7E /* regex.c */,
- 3CDCED610902EA8100B2EF7E /* process.c */,
- 3CDCED620902EA8100B2EF7E /* print.c */,
- 3CDCED640902EA8100B2EF7E /* pre-crt0.c */,
- 3CDCED670902EA8100B2EF7E /* minibuf.c */,
- 3CDCED680902EA8100B2EF7E /* md5.c */,
- 3CDCED690902EA8100B2EF7E /* marker.c */,
- 3CDCED6D0902EA8100B2EF7E /* macros.c */,
- 3CDCED710902EA8100B2EF7E /* lread.c */,
- 3CDCED720902EA8100B2EF7E /* lastfile.c */,
- 3CDCED730902EA8100B2EF7E /* keymap.c */,
- 3CDCED740902EA8200B2EF7E /* keyboard.c */,
- 3CDCED750902EA8200B2EF7E /* intervals.c */,
- 3CDCED760902EA8200B2EF7E /* insdel.c */,
- 3CDCED770902EA8200B2EF7E /* indent.c */,
- 3CDCED780902EA8200B2EF7E /* image.c */,
- 3CDCED7A0902EA8200B2EF7E /* cmds.c */,
- 3CDCED7B0902EA8200B2EF7E /* category.c */,
- 3CDCED7C0902EA8200B2EF7E /* coding.c */,
- 3CDCED830902EA8200B2EF7E /* unexmacosx.c */,
- 3CDCED8B0902EA8200B2EF7E /* buffer.c */,
- 3CDCED8C0902EA8200B2EF7E /* character.c */,
- 3CDCED920902EA8200B2EF7E /* undo.c */,
- 3CDCED940902EA8200B2EF7E /* textprop.c */,
- 3CDCED950902EA8200B2EF7E /* terminfo.c */,
- 3CDCED9C0902EA8200B2EF7E /* xfaces.c */,
- 3CDCED9D0902EA8200B2EF7E /* xdisp.c */,
- 3CDCED9E0902EA8200B2EF7E /* window.c */,
- 3CDCEDB00902EA8200B2EF7E /* doprnt.c */,
- 3CDCEDB10902EA8200B2EF7E /* doc.c */,
- 3CDCEDB20902EA8200B2EF7E /* dired.c */,
- 3CDCEDB30902EA8200B2EF7E /* data.c */,
- 3CDCEDB40902EA8200B2EF7E /* callint.c */,
- 3CDCEDB60902EA8200B2EF7E /* ccl.c */,
- 3CDCEDB70902EA8200B2EF7E /* fontset.c */,
- 3CDCEDB80902EA8200B2EF7E /* fns.c */,
- 3CDCEDB90902EA8200B2EF7E /* floatfns.c */,
- 3CDCEDBB0902EA8200B2EF7E /* filemode.c */,
- 3CDCEDBC0902EA8200B2EF7E /* filelock.c */,
- 3CDCEDBD0902EA8200B2EF7E /* emacs.c */,
- 3CDCEDBE0902EA8200B2EF7E /* editfns.c */,
- 3CDCEDBF0902EA8200B2EF7E /* fileio.c */,
- 3CDCEDC00902EA8200B2EF7E /* eval.c */,
- 3CDCEDC10902EA8200B2EF7E /* casetab.c */,
- 3CDCEDC20902EA8200B2EF7E /* composite.c */,
- 3CDCEDC30902EA8200B2EF7E /* dispnew.c */,
- 3CDCEDC40902EA8200B2EF7E /* charset.c */,
- 3CDCEDC50902EA8200B2EF7E /* alloc.c */,
- 3CDCEDC60902EA8200B2EF7E /* bytecode.c */,
- 3CDCEDC70902EA8200B2EF7E /* callproc.c */,
- 3CDCEDC80902EA8200B2EF7E /* cm.c */,
- 3CDCEDC90902EA8200B2EF7E /* casefiddle.c */,
- 3CDCEDCA0902EA8200B2EF7E /* fringe.c */,
- 3CDCEDCB0902EA8200B2EF7E /* frame.c */,
- 3CDCEDCC0902EA8200B2EF7E /* chartab.c */,
- 3CDCEDCD0902EA8200B2EF7E /* atimer.c */,
- );
- name = "emacs-src";
- sourceTree = "<group>";
- };
- 739637F200C4DF3C7F000001 /* Images */ = {
- isa = PBXGroup;
- children = (
- 3CB8E29D0E2CE73A003F3104 /* Emacs.icns */,
- );
- name = Images;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 3CC542FE07E2315800C271A9 /* Emacs */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */;
- buildPhases = (
- 3CED88240FC0FE7C005ACB89 /* ShellScript */,
- 3CED883D0FC0FF6E005ACB89 /* ShellScript */,
- );
- buildRules = (
- );
- dependencies = (
- 3CED88230FC0FE5C005ACB89 /* PBXTargetDependency */,
- );
- name = Emacs;
- productInstallPath = "$(HOME)/Applications";
- productName = Emacs;
- productReference = 3CC5434C07E2315800C271A9 /* Emacs.app */;
- productType = "com.apple.product-type.application";
- };
- 3CED87320FC0F557005ACB89 /* temacs */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 3CED87350FC0F576005ACB89 /* Build configuration list for PBXNativeTarget "temacs" */;
- buildPhases = (
- 3CED87300FC0F557005ACB89 /* Sources */,
- 3CED87310FC0F557005ACB89 /* Frameworks */,
- 3CED88460FC100EC005ACB89 /* ShellScript */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = temacs;
- productName = "emacs-bin";
- productReference = 3CED87330FC0F557005ACB89 /* temacs */;
- productType = "com.apple.product-type.tool";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */;
- hasScannedForEncodings = 1;
- mainGroup = 29B97314FDCFA39411CA2CEA /* Emacs */;
- projectDirPath = "";
- projectRoot = ../..;
- targets = (
- 3CC542FE07E2315800C271A9 /* Emacs */,
- 3CED87320FC0F557005ACB89 /* temacs */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 3CED88240FC0FE7C005ACB89 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- 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";
- };
- 3CED883D0FC0FF6E005ACB89 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 12;
- files = (
- );
- inputPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- 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";
- };
- 3CED88460FC100EC005ACB89 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "$(BUILT_PRODUCTS_DIR)/temacs",
- );
- outputPaths = (
- ../../src/temacs,
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- 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";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 3CED87300FC0F557005ACB89 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 3CED876D0FC0F581005ACB89 /* pre-crt0.c in Sources */,
- 3CED87390FC0F581005ACB89 /* alloc.c in Sources */,
- 3CED873A0FC0F581005ACB89 /* atimer.c in Sources */,
- 3CED873B0FC0F581005ACB89 /* buffer.c in Sources */,
- 3CED873C0FC0F581005ACB89 /* bytecode.c in Sources */,
- 3CED873D0FC0F581005ACB89 /* callint.c in Sources */,
- 3CED873E0FC0F581005ACB89 /* callproc.c in Sources */,
- 3CED873F0FC0F581005ACB89 /* casefiddle.c in Sources */,
- 3CED87400FC0F581005ACB89 /* casetab.c in Sources */,
- 3CED87410FC0F581005ACB89 /* category.c in Sources */,
- 3CED87420FC0F581005ACB89 /* ccl.c in Sources */,
- 3CED87430FC0F581005ACB89 /* character.c in Sources */,
- 3CED87440FC0F581005ACB89 /* charset.c in Sources */,
- 3CED87450FC0F581005ACB89 /* chartab.c in Sources */,
- 3CED87460FC0F581005ACB89 /* cm.c in Sources */,
- 3CED87470FC0F581005ACB89 /* cmds.c in Sources */,
- 3CED87480FC0F581005ACB89 /* coding.c in Sources */,
- 3CED87490FC0F581005ACB89 /* composite.c in Sources */,
- 3CED874A0FC0F581005ACB89 /* data.c in Sources */,
- 3CED874B0FC0F581005ACB89 /* dired.c in Sources */,
- 3CED874C0FC0F581005ACB89 /* dispnew.c in Sources */,
- 3CED874D0FC0F581005ACB89 /* doc.c in Sources */,
- 3CED874E0FC0F581005ACB89 /* doprnt.c in Sources */,
- 3CED874F0FC0F581005ACB89 /* editfns.c in Sources */,
- 3CED87500FC0F581005ACB89 /* emacs.c in Sources */,
- 3CED87510FC0F581005ACB89 /* eval.c in Sources */,
- 3CED87520FC0F581005ACB89 /* fileio.c in Sources */,
- 3CED87530FC0F581005ACB89 /* filelock.c in Sources */,
- 3CED87540FC0F581005ACB89 /* filemode.c in Sources */,
- 3CED87550FC0F581005ACB89 /* floatfns.c in Sources */,
- 3CED87560FC0F581005ACB89 /* fns.c in Sources */,
- 3CED87570FC0F581005ACB89 /* font.c in Sources */,
- 3CED87580FC0F581005ACB89 /* fontset.c in Sources */,
- 3CED87590FC0F581005ACB89 /* frame.c in Sources */,
- 3CED875A0FC0F581005ACB89 /* fringe.c in Sources */,
- 3CED875B0FC0F581005ACB89 /* image.c in Sources */,
- 3CED875C0FC0F581005ACB89 /* indent.c in Sources */,
- 3CED875D0FC0F581005ACB89 /* insdel.c in Sources */,
- 3CED875E0FC0F581005ACB89 /* intervals.c in Sources */,
- 3CED875F0FC0F581005ACB89 /* keyboard.c in Sources */,
- 3CED87600FC0F581005ACB89 /* keymap.c in Sources */,
- 3CED87620FC0F581005ACB89 /* lread.c in Sources */,
- 3CED87630FC0F581005ACB89 /* macros.c in Sources */,
- 3CED87640FC0F581005ACB89 /* marker.c in Sources */,
- 3CED87650FC0F581005ACB89 /* md5.c in Sources */,
- 3C3AF9CA0FC10CDF001240E9 /* menu.c in Sources */,
- 3CED87660FC0F581005ACB89 /* minibuf.c in Sources */,
- 3CED87670FC0F581005ACB89 /* nsfns.m in Sources */,
- 3CED87680FC0F581005ACB89 /* nsfont.m in Sources */,
- 3CED87690FC0F581005ACB89 /* nsimage.m in Sources */,
- 3CED876A0FC0F581005ACB89 /* nsmenu.m in Sources */,
- 3CED876B0FC0F581005ACB89 /* nsselect.m in Sources */,
- 3CED876C0FC0F581005ACB89 /* nsterm.m in Sources */,
- 3CED876E0FC0F581005ACB89 /* print.c in Sources */,
- 3CED876F0FC0F581005ACB89 /* process.c in Sources */,
- 3CED87700FC0F581005ACB89 /* regex.c in Sources */,
- 3CED87710FC0F581005ACB89 /* region-cache.c in Sources */,
- 3CED87720FC0F581005ACB89 /* scroll.c in Sources */,
- 3CED87730FC0F581005ACB89 /* search.c in Sources */,
- 3CED87740FC0F581005ACB89 /* sound.c in Sources */,
- 3CED87750FC0F581005ACB89 /* strftime.c in Sources */,
- 3CED87760FC0F581005ACB89 /* syntax.c in Sources */,
- 3CED87770FC0F581005ACB89 /* sysdep.c in Sources */,
- 3CED87780FC0F581005ACB89 /* term.c in Sources */,
- 3CED877A0FC0F581005ACB89 /* terminal.c in Sources */,
- 3CED877B0FC0F581005ACB89 /* terminfo.c in Sources */,
- 3CED877C0FC0F581005ACB89 /* textprop.c in Sources */,
- 3CED877E0FC0F581005ACB89 /* undo.c in Sources */,
- 3CED877F0FC0F581005ACB89 /* unexmacosx.c in Sources */,
- 3CED87800FC0F581005ACB89 /* window.c in Sources */,
- 3CED87810FC0F581005ACB89 /* xdisp.c in Sources */,
- 3CED87820FC0F581005ACB89 /* xfaces.c in Sources */,
- 3CED87610FC0F581005ACB89 /* lastfile.c in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 3CED88230FC0FE5C005ACB89 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 3CED87320FC0F557005ACB89 /* temacs */;
- targetProxy = 3CED88220FC0FE5C005ACB89 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 3CB8E2A50E2CE856003F3104 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 3CB8E2A60E2CE856003F3104 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 3CA115980C825A540007AFC2 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = Emacs;
- WRAPPER_EXTENSION = app;
- };
- name = Development;
- };
- 3CA115990C825A540007AFC2 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = Emacs;
- WRAPPER_EXTENSION = app;
- };
- name = Deployment;
- };
- 3CA1159A0C825A540007AFC2 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = Emacs;
- WRAPPER_EXTENSION = app;
- };
- name = Default;
- };
- 3CA1159C0C825A540007AFC2 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- MACOSX_DEPLOYMENT_TARGET = "";
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Development;
- };
- 3CA1159D0C825A540007AFC2 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- MACOSX_DEPLOYMENT_TARGET = "";
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Deployment;
- };
- 3CA1159E0C825A540007AFC2 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- MACOSX_DEPLOYMENT_TARGET = "";
- SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
- };
- name = Default;
- };
- 3CED87360FC0F576005ACB89 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- emacs,
- temacs,
- HAVE_CONFIG_H,
- );
- OTHER_LDFLAGS = (
- "-Xlinker",
- "-headerpad",
- "-Xlinker",
- 6C8,
- );
- PREBINDING = NO;
- PRODUCT_NAME = temacs;
- WARNING_CFLAGS = "-Wno-pointer-sign";
- ZERO_LINK = NO;
- };
- name = Development;
- };
- 3CED87370FC0F576005ACB89 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
- GCC_MODEL_TUNING = G5;
- GCC_PREPROCESSOR_DEFINITIONS = (
- emacs,
- temacs,
- HAVE_CONFIG_H,
- );
- OTHER_LDFLAGS = (
- "-Xlinker",
- "-headerpad",
- "-Xlinker",
- 6C8,
- );
- PREBINDING = NO;
- PRODUCT_NAME = temacs;
- WARNING_CFLAGS = "-Wno-pointer-sign";
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- 3CED87380FC0F576005ACB89 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_MODEL_TUNING = G5;
- GCC_PREPROCESSOR_DEFINITIONS = (
- emacs,
- temacs,
- HAVE_CONFIG_H,
- );
- OTHER_LDFLAGS = (
- "-Xlinker",
- "-headerpad",
- "-Xlinker",
- 6C8,
- );
- PREBINDING = NO;
- PRODUCT_NAME = temacs;
- WARNING_CFLAGS = "-Wno-pointer-sign";
- ZERO_LINK = YES;
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 3CA115970C825A540007AFC2 /* Build configuration list for PBXNativeTarget "Emacs" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3CA115980C825A540007AFC2 /* Development */,
- 3CA115990C825A540007AFC2 /* Deployment */,
- 3CA1159A0C825A540007AFC2 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- 3CA1159B0C825A540007AFC2 /* Build configuration list for PBXProject "Emacs" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3CA1159C0C825A540007AFC2 /* Development */,
- 3CA1159D0C825A540007AFC2 /* Deployment */,
- 3CA1159E0C825A540007AFC2 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- 3CED87350FC0F576005ACB89 /* Build configuration list for PBXNativeTarget "temacs" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 3CED87360FC0F576005ACB89 /* Development */,
- 3CED87370FC0F576005ACB89 /* Deployment */,
- 3CED87380FC0F576005ACB89 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/nextstep/INSTALL b/nextstep/INSTALL
index 5bc59c6c6f..2a3e163198 100644
--- a/nextstep/INSTALL
+++ b/nextstep/INSTALL
@@ -30,27 +30,6 @@ Installation
Move nextstep/Emacs.app to any desired install location.
-Xcode
------
-
-On OS X Emacs can be built under Xcode. You need to run "configure"
-as described above first. There are two targets: 'temacs' and 'Emacs.app'.
-
-'temacs' will build the undumped emacs executable, and copy it and the
-*.o files to the src directory. These steps are necessary so the next target
-works.
-
-'Emacs.app' uses "Run Script" build phases to assemble the Emacs.app bundle.
-It uses the 'ns-app' target in src/Makefile together with the 'install' target
-in the top level Makefile.
-
-The source files under the temacs target must list "pre-crt0" first
-and "lastfile" last, so that dumping works.
-
-(Note, under GNUstep, you CAN'T use ProjectCenter, since PC cannot work
-with files outside of its project directory.)
-
-
Distributions and Universal Binaries
------------------------------------
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 8c2ca056aa..fb3a168ebf 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-19 Eli Zaretskii <eliz@gnu.org>
+
+ * config.nt (HAVE_TZNAME, HAVE_DECL_TZNAME): Define.
+ (Bug#9794) (Bug#641)
+
2011-09-04 Paul Eggert <eggert@cs.ucla.edu>
* config.nt (HAVE_SNPRINTF): New macro.
diff --git a/nt/config.nt b/nt/config.nt
index 923143cf13..7ab89add0f 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/>. */
#undef TM_IN_SYS_TIME
#undef HAVE_TM_ZONE
-#undef HAVE_TZNAME
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#define HAVE_TZNAME 1
+
+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
+ */
+#define HAVE_DECL_TZNAME 1
#undef const
diff --git a/src/ChangeLog b/src/ChangeLog
index 7b21a47d59..34914c96c6 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
-2011-10-17 Paul Eggert <eggert@cs.ucla.edu>
+2011-10-23 Paul Eggert <eggert@cs.ucla.edu>
Fix integer width and related bugs.
* alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
@@ -789,6 +789,83 @@
rather than rolling our own approximation.
(SCROLL_BAR_VEC_SIZE): Remove; not used.
+2011-10-20 Eli Zaretskii <eliz@gnu.org>
+
+ * dispextern.h (struct bidi_it): New member next_en_type.
+
+ * bidi.c (bidi_line_init): Initialize the next_en_type member.
+ (bidi_resolve_explicit_1): When next_en_pos is valid for the
+ current character, check also for next_en_type being WEAK_EN.
+ (bidi_resolve_weak): Don't enter the expensive loop if the current
+ position is before next_en_pos. Record the bidi type of the first
+ non-ET, non-BN character we find, in addition to its position.
+ (bidi_level_of_next_char): Invalidate next_en_type when
+ next_en_pos is over-stepped.
+
+2011-10-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794)
+ * editfns.c: Rewrite current-time-zone so that it invokes
+ the equivalent of (format-time-string "%Z") to get the time zone name.
+ This fixes a bug when the time zone name contains characters that
+ need converting from the system time locale to Emacs internal format.
+ This fixes a shortcoming that I introduced in my 1999-10-19 patch:
+ that patch fixed format-time-string to do the conversion, but
+ I forgot to fix current-time-zone.
+ (format_time_string): New function, containing most of
+ what Fformat_time_string used to contain.
+ (Fformat_time_string): Rewrite in terms of format_time_string.
+ This doesn't change this function's behavior.
+ (current-time-zone): Rewrite to use format_time_string.
+ This fixes the bug reported by Michael Schierl in
+ <http://lists.gnu.org/archive/html/emacs-devel/2007-06/msg00334.html>.
+ Jason Rumney's 2007-06-07 change worked around this bug, but
+ didn't fix it.
+ * systime.h (tzname, timezone): Remove no-longer-used declarations.
+
+2011-10-19 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (start_display): If the character at POS is displayed
+ via a display vector, reset IT->current.dpvec_index to zero.
+ (try_window_reusing_current_matrix): If a line ends in a display
+ vector or the next line starts in a display vector, continue
+ redrawing the window even though the character position of
+ start_row was reached.
+ (Bug#9771, part 2)
+
+2011-10-18 Chong Yidong <cyd@gnu.org>
+
+ * xdisp.c (get_next_display_element): Handle U+2010 and U+2011
+ with nobreak-char-display too.
+
+2011-10-18 Eli Zaretskii <eliz@gnu.org>
+
+ Fix part 3 of bug#9771.
+ * bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1.
+ (bidi_resolve_neutral): Don't enter the expensive loop looking for
+ non-neutral characters if the current character is a paragraph
+ separator (a.k.a. Newline). This avoids running the same
+ expensive loop twice, once when we consume the preceding newline
+ and the other time when the line actually needs to be displayed.
+ Avoid the loop when we see neutrals on the base embedding level
+ following a character whose directionality is the same as the
+ paragraph's. This avoids running the expensive loop when a line
+ ends in a long sequence of neutrals, like control characters.
+ Add assertion against STRONG_AL type. Slightly rearrange code
+ that determines the type of a neutral given the first non-neutral
+ that follows it.
+ (bidi_level_of_next_char): Set next_en_pos to zero when
+ invalidating its info.
+
+2011-10-17 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (push_display_prop): Determine whether to record string
+ or buffer position by IT->string, not by IT->method. Allow
+ GET_FROM_DISPLAY_VECTOR as IT->method on entry. (Bug#9771, part 4)
+ (move_it_vertically_backward): Don't look for character position
+ immediately after the newline when in a continuation line.
+ (Bug#9771, part 1)
+
2011-10-15 Martin Rudalics <rudalics@gmx.at>
* window.c (coordinates_in_window): Rewrite and delabelize
diff --git a/src/bidi.c b/src/bidi.c
index c6d7db9657..e8f2df89a9 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -846,7 +846,10 @@ bidi_line_init (struct bidi_it *bidi_it)
bidi_it->level_stack[0].override = NEUTRAL_DIR; /* X1 */
bidi_it->invalid_levels = 0;
bidi_it->invalid_rl_levels = -1;
- bidi_it->next_en_pos = -1;
+ /* Setting this to zero will force its recomputation the first time
+ we need it for W5. */
+ bidi_it->next_en_pos = 0;
+ bidi_it->next_en_type = UNKNOWN_BT;
bidi_it->next_for_ws.type = UNKNOWN_BT;
bidi_set_sor_type (bidi_it,
(bidi_it->paragraph_dir == R2L ? 1 : 0),
@@ -1435,7 +1438,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
}
}
else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
- || bidi_it->next_en_pos > bidi_it->charpos)
+ || (bidi_it->next_en_pos > bidi_it->charpos
+ && bidi_it->next_en_type == WEAK_EN))
type = WEAK_EN;
break;
case LRE: /* X3 */
@@ -1471,7 +1475,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
}
}
else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
- || bidi_it->next_en_pos > bidi_it->charpos)
+ || (bidi_it->next_en_pos > bidi_it->charpos
+ && bidi_it->next_en_type == WEAK_EN))
type = WEAK_EN;
break;
case PDF: /* X7 */
@@ -1497,7 +1502,8 @@ bidi_resolve_explicit_1 (struct bidi_it *bidi_it)
}
}
else if (bidi_it->prev.type_after_w1 == WEAK_EN /* W5/Retaining */
- || bidi_it->next_en_pos > bidi_it->charpos)
+ || (bidi_it->next_en_pos > bidi_it->charpos
+ && bidi_it->next_en_type == WEAK_EN))
type = WEAK_EN;
break;
default:
@@ -1729,10 +1735,15 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
else if (type == WEAK_ET /* W5: ET with EN before or after it */
|| type == WEAK_BN) /* W5/Retaining */
{
- if (bidi_it->prev.type_after_w1 == WEAK_EN /* ET/BN w/EN before it */
- || bidi_it->next_en_pos > bidi_it->charpos)
+ if (bidi_it->prev.type_after_w1 == WEAK_EN) /* ET/BN w/EN before it */
type = WEAK_EN;
- else /* W5: ET/BN with EN after it. */
+ else if (bidi_it->next_en_pos > bidi_it->charpos
+ && bidi_it->next_en_type != WEAK_BN)
+ {
+ if (bidi_it->next_en_type == WEAK_EN) /* ET/BN with EN after it */
+ type = WEAK_EN;
+ }
+ else if (bidi_it->next_en_pos >=0)
{
ptrdiff_t en_pos = bidi_it->charpos + bidi_it->nchars;
const unsigned char *s = (STRINGP (bidi_it->string.lstring)
@@ -1761,20 +1772,27 @@ bidi_resolve_weak (struct bidi_it *bidi_it)
en_pos = bidi_it->charpos;
bidi_copy_it (bidi_it, &saved_it);
}
+ /* Remember this position, to speed up processing of the
+ next ETs. */
+ bidi_it->next_en_pos = en_pos;
if (type_of_next == WEAK_EN)
{
/* If the last strong character is AL, the EN we've
found will become AN when we get to it (W2). */
- if (bidi_it->last_strong.type_after_w1 != STRONG_AL)
- {
- type = WEAK_EN;
- /* Remember this EN position, to speed up processing
- of the next ETs. */
- bidi_it->next_en_pos = en_pos;
- }
+ if (bidi_it->last_strong.type_after_w1 == STRONG_AL)
+ type_of_next = WEAK_AN;
else if (type == WEAK_BN)
type = NEUTRAL_ON; /* W6/Retaining */
+ else
+ type = WEAK_EN;
}
+ else if (type_of_next == NEUTRAL_B)
+ /* Record the fact that there are no more ENs from
+ here to the end of paragraph, to avoid entering the
+ loop above ever again in this paragraph. */
+ bidi_it->next_en_pos = -1;
+ /* Record the type of the character where we ended our search. */
+ bidi_it->next_en_type = type_of_next;
}
}
}
@@ -1843,13 +1861,45 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
|| type == NEUTRAL_ON))
abort ();
- if (bidi_get_category (type) == NEUTRAL
+ if ((type != NEUTRAL_B /* Don't risk entering the long loop below if
+ we are already at paragraph end. */
+ && bidi_get_category (type) == NEUTRAL)
|| (type == WEAK_BN && prev_level == current_level))
{
if (bidi_it->next_for_neutral.type != UNKNOWN_BT)
type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
bidi_it->next_for_neutral.type,
current_level);
+ /* The next two "else if" clauses are shortcuts for the
+ important special case when we have a long sequence of
+ neutral or WEAK_BN characters, such as whitespace or nulls or
+ other control characters, on the base embedding level of the
+ paragraph, and that sequence goes all the way to the end of
+ the paragraph and follows a character whose resolved
+ directionality is identical to the base embedding level.
+ (This is what happens in a buffer with plain L2R text that
+ happens to include long sequences of control characters.) By
+ virtue of N1, the result of examining this long sequence will
+ always be either STRONG_L or STRONG_R, depending on the base
+ embedding level. So we use this fact directly instead of
+ entering the expensive loop in the "else" clause. */
+ else if (current_level == 0
+ && bidi_it->prev_for_neutral.type == STRONG_L
+ && !bidi_explicit_dir_char (bidi_it->ch))
+ type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
+ STRONG_L, current_level);
+ else if (/* current level is 1 */
+ current_level == 1
+ /* base embedding level is also 1 */
+ && bidi_it->level_stack[0].level == 1
+ /* previous character is one of those considered R for
+ the purposes of W5 */
+ && (bidi_it->prev_for_neutral.type == STRONG_R
+ || bidi_it->prev_for_neutral.type == WEAK_EN
+ || bidi_it->prev_for_neutral.type == WEAK_AN)
+ && !bidi_explicit_dir_char (bidi_it->ch))
+ type = bidi_resolve_neutral_1 (bidi_it->prev_for_neutral.type,
+ STRONG_R, current_level);
else
{
/* Arrrgh!! The UAX#9 algorithm is too deeply entrenched in
@@ -1900,6 +1950,9 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
case STRONG_L:
case STRONG_R:
case STRONG_AL:
+ /* Actually, STRONG_AL cannot happen here, because
+ bidi_resolve_weak converts it to STRONG_R, per W3. */
+ xassert (type != STRONG_AL);
next_type = type;
break;
case WEAK_EN:
@@ -1907,7 +1960,6 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
/* N1: ``European and Arabic numbers are treated as
though they were R.'' */
next_type = STRONG_R;
- saved_it.next_for_neutral.type = STRONG_R;
break;
case WEAK_BN:
if (!bidi_explicit_dir_char (bidi_it->ch))
@@ -1920,11 +1972,7 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
member. */
if (saved_it.type != WEAK_BN
|| bidi_get_category (bidi_it->prev.type_after_w1) == NEUTRAL)
- {
- next_type = bidi_it->prev_for_neutral.type;
- saved_it.next_for_neutral.type = next_type;
- bidi_check_type (next_type);
- }
+ next_type = bidi_it->prev_for_neutral.type;
else
{
/* This is a BN which does not adjoin neutrals.
@@ -1938,7 +1986,9 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
}
type = bidi_resolve_neutral_1 (saved_it.prev_for_neutral.type,
next_type, current_level);
+ saved_it.next_for_neutral.type = next_type;
saved_it.type = type;
+ bidi_check_type (next_type);
bidi_check_type (type);
bidi_copy_it (bidi_it, &saved_it);
}
@@ -2014,7 +2064,10 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
bidi_it->next_for_neutral.type = UNKNOWN_BT;
if (bidi_it->next_en_pos >= 0
&& bidi_it->charpos >= bidi_it->next_en_pos)
- bidi_it->next_en_pos = -1;
+ {
+ bidi_it->next_en_pos = 0;
+ bidi_it->next_en_type = UNKNOWN_BT;
+ }
if (bidi_it->next_for_ws.type != UNKNOWN_BT
&& bidi_it->charpos >= bidi_it->next_for_ws.charpos)
bidi_it->next_for_ws.type = UNKNOWN_BT;
@@ -2140,7 +2193,7 @@ bidi_level_of_next_char (struct bidi_it *bidi_it)
}
/* Resolve implicit levels, with a twist: PDFs get the embedding
- level of the enbedding they terminate. See below for the
+ level of the embedding they terminate. See below for the
reason. */
if (bidi_it->orig_type == PDF
/* Don't do this if this formatting code didn't change the
diff --git a/src/dispextern.h b/src/dispextern.h
index dfef288429..5f2c844b58 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1856,7 +1856,8 @@ struct bidi_it {
struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
struct bidi_saved_info next_for_ws; /* character after sequence of ws */
- ptrdiff_t next_en_pos; /* position of next EN char for ET */
+ ptrdiff_t next_en_pos; /* pos. of next char for determining ET type */
+ bidi_type_t next_en_type; /* type of char at next_en_pos */
ptrdiff_t ignore_bn_limit; /* position until which to ignore BNs */
bidi_dir_t sor; /* direction of start-of-run in effect */
int scan_dir; /* direction of text scan, 1: forw, -1: back */
diff --git a/src/editfns.c b/src/editfns.c
index b376c3a7c5..16e552afe1 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -85,6 +85,8 @@ extern Lisp_Object w32_get_internal_run_time (void);
#endif
static void time_overflow (void) NO_RETURN;
+static Lisp_Object format_time_string (char const *, ptrdiff_t, Lisp_Object,
+ int, time_t *, struct tm **);
static int tm_diff (struct tm *, struct tm *);
static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
@@ -1687,32 +1689,40 @@ For example, to produce full ISO 8601 format, use "%Y-%m-%dT%T%z".
usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
(Lisp_Object format_string, Lisp_Object timeval, Lisp_Object universal)
{
- time_t value;
+ time_t t;
+ struct tm *tm;
+
+ CHECK_STRING (format_string);
+ format_string = code_convert_string_norecord (format_string,
+ Vlocale_coding_system, 1);
+ return format_time_string (SSDATA (format_string), SBYTES (format_string),
+ timeval, ! NILP (universal), &t, &tm);
+}
+
+static Lisp_Object
+format_time_string (char const *format, ptrdiff_t formatlen,
+ Lisp_Object timeval, int ut, time_t *tval, struct tm **tmp)
+{
ptrdiff_t size;
int usec;
int ns;
struct tm *tm;
- int ut = ! NILP (universal);
-
- CHECK_STRING (format_string);
- if (! lisp_time_argument (timeval, &value, &usec))
+ if (! lisp_time_argument (timeval, tval, &usec))
error ("Invalid time specification");
ns = usec * 1000;
- format_string = code_convert_string_norecord (format_string,
- Vlocale_coding_system, 1);
-
/* This is probably enough. */
- size = SBYTES (format_string);
+ size = formatlen;
if (size <= (STRING_BYTES_BOUND - 50) / 6)
size = size * 6 + 50;
BLOCK_INPUT;
- tm = ut ? gmtime (&value) : localtime (&value);
+ tm = ut ? gmtime (tval) : localtime (tval);
UNBLOCK_INPUT;
if (! tm)
time_overflow ();
+ *tmp = tm;
synchronize_system_time_locale ();
@@ -1723,9 +1733,7 @@ usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
buf[0] = '\1';
BLOCK_INPUT;
- result = emacs_nmemftime (buf, size, SSDATA (format_string),
- SBYTES (format_string),
- tm, ut, ns);
+ result = emacs_nmemftime (buf, size, format, formatlen, tm, ut, ns);
UNBLOCK_INPUT;
if ((result > 0 && result < size) || (result == 0 && buf[0] == '\0'))
return code_convert_string_norecord (make_unibyte_string (buf, result),
@@ -1733,9 +1741,7 @@ usage: (format-time-string FORMAT-STRING &optional TIME UNIVERSAL) */)
/* If buffer was too small, make it bigger and try again. */
BLOCK_INPUT;
- result = emacs_nmemftime (NULL, (size_t) -1,
- SSDATA (format_string),
- SBYTES (format_string),
+ result = emacs_nmemftime (NULL, (size_t) -1, format, formatlen,
tm, ut, ns);
UNBLOCK_INPUT;
if (STRING_BYTES_BOUND <= result)
@@ -1983,51 +1989,34 @@ the data it can't find. */)
{
time_t value;
struct tm *t;
- struct tm gmt;
-
- if (!lisp_time_argument (specified_time, &value, NULL))
- t = NULL;
- else
- {
- BLOCK_INPUT;
- t = gmtime (&value);
- if (t)
- {
- gmt = *t;
- t = localtime (&value);
- }
- UNBLOCK_INPUT;
- }
+ struct tm localtm;
+ struct tm *localt;
+ Lisp_Object zone_offset, zone_name;
+
+ zone_offset = Qnil;
+ zone_name = format_time_string ("%Z", sizeof "%Z" - 1, specified_time,
+ 0, &value, &localt);
+ localtm = *localt;
+ BLOCK_INPUT;
+ t = gmtime (&value);
+ UNBLOCK_INPUT;
if (t)
{
- int offset = tm_diff (t, &gmt);
- char *s = 0;
- char buf[sizeof "+00" + INT_STRLEN_BOUND (int)];
-
-#ifdef HAVE_TM_ZONE
- if (t->tm_zone)
- s = (char *)t->tm_zone;
-#else /* not HAVE_TM_ZONE */
-#ifdef HAVE_TZNAME
- if (t->tm_isdst == 0 || t->tm_isdst == 1)
- s = tzname[t->tm_isdst];
-#endif
-#endif /* not HAVE_TM_ZONE */
-
- if (!s)
+ int offset = tm_diff (&localtm, t);
+ zone_offset = make_number (offset);
+ if (SCHARS (zone_name) == 0)
{
/* No local time zone name is available; use "+-NNNN" instead. */
int m = offset / 60;
int am = offset < 0 ? - m : m;
+ char buf[sizeof "+00" + INT_STRLEN_BOUND (int)];
sprintf (buf, "%c%02d%02d", (offset < 0 ? '-' : '+'), am/60, am%60);
- s = buf;
+ zone_name = build_string (buf);
}
-
- return Fcons (make_number (offset), Fcons (build_string (s), Qnil));
}
- else
- return Fmake_list (make_number (2), Qnil);
+
+ return list2 (zone_offset, zone_name);
}
/* This holds the value of `environ' produced by the previous
diff --git a/src/systime.h b/src/systime.h
index bed9ed4aa7..b90372dbe2 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -38,17 +38,6 @@ typedef unsigned long Time;
# endif
#endif
-#ifdef HAVE_TZNAME
-#ifndef tzname /* For SGI. */
-extern char *tzname[]; /* RS6000 and others want it this way. */
-#endif
-#endif
-
-/* SVr4 doesn't actually declare this in its #include files. */
-#ifdef USG5_4
-extern time_t timezone;
-#endif
-
/* On some configurations (hpux8.0, X11R4), sys/time.h and X11/Xos.h
disagree about the name of the guard symbol. */
#ifdef HPUX
diff --git a/src/xdisp.c b/src/xdisp.c
index a264da3892..cb68969ae2 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)
it->continuation_lines_width += it->current_x;
}
+ /* If the character at POS is displayed via a display
+ vector, move_it_to above stops at the final glyph of
+ IT->dpvec. To make the caller redisplay that character
+ again (a.k.a. start at POS), we need to reset the
+ dpvec_index to the beginning of IT->dpvec. */
+ else if (it->current.dpvec_index >= 0)
+ it->current.dpvec_index = 0;
/* We're starting a new display line, not affected by the
height of the continued line, so clear the appropriate
@@ -6379,8 +6386,8 @@ get_next_display_element (struct it *it)
{
Lisp_Object dv;
struct charset *unibyte = CHARSET_FROM_ID (charset_unibyte);
- enum { char_is_other = 0, char_is_nbsp, char_is_soft_hyphen }
- nbsp_or_shy = char_is_other;
+ int nonascii_space_p = 0;
+ int nonascii_hyphen_p = 0;
int c = it->c; /* This is the character to display. */
if (! it->multibyte_p && ! ASCII_CHAR_P (c))
@@ -6432,10 +6439,15 @@ get_next_display_element (struct it *it)
goto get_next;
}
+ /* If `nobreak-char-display' is non-nil, we display
+ non-ASCII spaces and hyphens specially. */
if (! ASCII_CHAR_P (c) && ! NILP (Vnobreak_char_display))
- nbsp_or_shy = (c == 0xA0 ? char_is_nbsp
- : c == 0xAD ? char_is_soft_hyphen
- : char_is_other);
+ {
+ if (c == 0xA0)
+ nonascii_space_p = 1;
+ else if (c == 0xAD || c == 0x2010 || c == 0x2011)
+ nonascii_hyphen_p = 1;
+ }
/* Translate control characters into `\003' or `^C' form.
Control characters coming from a display table entry are
@@ -6443,7 +6455,8 @@ get_next_display_element (struct it *it)
the translation. This could easily be changed but I
don't believe that it is worth doing.
- NBSP and SOFT-HYPEN are property translated too.
+ The characters handled by `nobreak-char-display' must be
+ translated too.
Non-printable characters and raw-byte characters are also
translated to octal form. */
@@ -6454,14 +6467,15 @@ get_next_display_element (struct it *it)
&& it->glyph_row
&& (it->glyph_row->mode_line_p || it->avoid_cursor_p))
|| (c != '\n' && c != '\t'))
- : (nbsp_or_shy
+ : (nonascii_space_p
+ || nonascii_hyphen_p
|| CHAR_BYTE8_P (c)
|| ! CHAR_PRINTABLE_P (c))))
{
- /* C is a control character, NBSP, SOFT-HYPEN, raw-byte,
- or a non-printable character which must be displayed
- either as '\003' or as `^C' where the '\\' and '^'
- can be defined in the display table. Fill
+ /* C is a control character, non-ASCII space/hyphen,
+ raw-byte, or a non-printable character which must be
+ displayed either as '\003' or as `^C' where the '\\'
+ and '^' can be defined in the display table. Fill
IT->ctl_chars with glyphs for what we have to
display. Then, set IT->dpvec to these glyphs. */
Lisp_Object gc;
@@ -6509,17 +6523,14 @@ get_next_display_element (struct it *it)
goto display_control;
}
- /* Handle non-break space in the mode where it only gets
+ /* Handle non-ascii space in the mode where it only gets
highlighting. */
- if (EQ (Vnobreak_char_display, Qt)
- && nbsp_or_shy == char_is_nbsp)
+ if (nonascii_space_p && EQ (Vnobreak_char_display, Qt))
{
- /* Merge the no-break-space face into the current face. */
+ /* Merge `nobreak-space' into the current face. */
face_id = merge_faces (it->f, Qnobreak_space, 0,
it->face_id);
-
- c = ' ';
XSETINT (it->ctl_chars[0], ' ');
ctl_len = 1;
goto display_control;
@@ -6558,25 +6569,21 @@ get_next_display_element (struct it *it)
last_escape_glyph_merged_face_id = face_id;
}
- /* Handle soft hyphens in the mode where they only get
- highlighting. */
+ /* Draw non-ASCII hyphen with just highlighting: */
- if (EQ (Vnobreak_char_display, Qt)
- && nbsp_or_shy == char_is_soft_hyphen)
+ if (nonascii_hyphen_p && EQ (Vnobreak_char_display, Qt))
{
XSETINT (it->ctl_chars[0], '-');
ctl_len = 1;
goto display_control;
}
- /* Handle non-break space and soft hyphen
- with the escape glyph. */
+ /* Draw non-ASCII space/hyphen with escape glyph: */
- if (nbsp_or_shy)
+ if (nonascii_space_p || nonascii_hyphen_p)
{
XSETINT (it->ctl_chars[0], escape_glyph);
- c = (nbsp_or_shy == char_is_nbsp ? ' ' : '-');
- XSETINT (it->ctl_chars[1], c);
+ XSETINT (it->ctl_chars[1], nonascii_space_p ? ' ' : '-');
ctl_len = 2;
goto display_control;
}
@@ -8774,7 +8781,10 @@ move_it_vertically_backward (struct it *it, int dy)
reordering. We want to get to the character position
that is immediately after the newline of the previous
line. */
- if (it->bidi_p && IT_CHARPOS (*it) > BEGV
+ if (it->bidi_p
+ && !it->continuation_lines_width
+ && !STRINGP (it->string)
+ && IT_CHARPOS (*it) > BEGV
&& FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n')
{
ptrdiff_t nl_pos =
@@ -16075,13 +16085,20 @@ try_window_reusing_current_matrix (struct window *w)
start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix);
}
- /* If we have reached alignment,
- we can copy the rest of the rows. */
- if (IT_CHARPOS (it) == CHARPOS (start))
+ /* If we have reached alignment, we can copy the rest of the
+ rows. */
+ if (IT_CHARPOS (it) == CHARPOS (start)
+ /* Don't accept "alignment" inside a display vector,
+ since start_row could have started in the middle of
+ that same display vector (thus their character
+ positions match), and we have no way of telling if
+ that is the case. */
+ && it.current.dpvec_index < 0)
break;
if (display_line (&it))
last_text_row = it.glyph_row - 1;
+
}
/* A value of current_y < last_visible_y means that we stopped
@@ -18434,9 +18451,10 @@ static int
push_display_prop (struct it *it, Lisp_Object prop)
{
struct text_pos pos =
- (it->method == GET_FROM_STRING) ? it->current.string_pos : it->current.pos;
+ STRINGP (it->string) ? it->current.string_pos : it->current.pos;
xassert (it->method == GET_FROM_BUFFER
+ || it->method == GET_FROM_DISPLAY_VECTOR
|| it->method == GET_FROM_STRING);
/* 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'. */);
Vshow_trailing_whitespace = Qnil;
DEFVAR_LISP ("nobreak-char-display", Vnobreak_char_display,
- doc: /* *Control highlighting of nobreak space and soft hyphen.
-A value of t means highlight the character itself (for nobreak space,
-use face `nobreak-space').
-A value of nil means no highlighting.
-Other values mean display the escape glyph followed by an ordinary
-space or ordinary hyphen. */);
+ doc: /* Control highlighting of non-ASCII space and hyphen chars.
+If the value is t, Emacs highlights non-ASCII chars which have the
+same appearance as an ASCII space or hyphen, using the `nobreak-space'
+or `escape-glyph' face respectively.
+
+U+00A0 (no-break space), U+00AD (soft hyphen), U+2010 (hyphen), and
+U+2011 (non-breaking hyphen) are affected.
+
+Any other non-nil value means to display these characters as a escape
+glyph followed by an ordinary space or hyphen.
+
+A value of nil means no special handling of these characters. */);
Vnobreak_char_display = Qt;
DEFVAR_LISP ("void-text-area-pointer", Vvoid_text_area_pointer,
diff --git a/test/ChangeLog b/test/ChangeLog
index ea6d90b534..396273bab3 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-20 Glenn Morris <rgm@gnu.org>
+
+ * automated/vc-bzr.el (vc-bzr-test-bug9781): New test.
+
+ * automated/vc-bzr.el: New file.
+
2011-10-15 Glenn Morris <rgm@gnu.org>
* automated/f90.el: New file.
diff --git a/test/automated/vc-bzr.el b/test/automated/vc-bzr.el
new file mode 100644
index 0000000000..b2cbda4d66
--- /dev/null
+++ b/test/automated/vc-bzr.el
@@ -0,0 +1,101 @@
+;;; vc-bzr.el --- tests for vc/vc-bzr.el
+
+;; Copyright (C) 2011 Free Software Foundation, Inc.
+
+;; Author: Glenn Morris <rgm@gnu.org>
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'ert)
+(require 'vc-bzr)
+(require 'vc-dir)
+
+;; FIXME it would be better to skip all these tests if there is no
+;; bzr installed. We could just put everything inside an IF
+;; statement, but it would be nice if ERT had a "skipped" facility (?).
+
+(ert-deftest vc-bzr-test-bug9726 ()
+ "Test for http://debbugs.gnu.org/9726 ."
+ :expected-result (if (executable-find vc-bzr-program) :passed :failed)
+ (should (executable-find vc-bzr-program))
+ (let* ((tempdir (make-temp-file "vc-bzr-test" t))
+ (ignored-dir (expand-file-name "ignored-dir" tempdir))
+ (default-directory (file-name-as-directory tempdir)))
+ (unwind-protect
+ (progn
+ (make-directory ignored-dir)
+ (with-temp-buffer
+ (insert (file-name-nondirectory ignored-dir))
+ (write-region nil nil (expand-file-name ".bzrignore" tempdir)
+ nil 'silent))
+ (call-process vc-bzr-program nil nil nil "init")
+ (call-process vc-bzr-program nil nil nil "add")
+ (call-process vc-bzr-program nil nil nil "commit" "-m" "Commit 1")
+ (with-temp-buffer
+ (insert "unregistered file")
+ (write-region nil nil (expand-file-name "testfile2" ignored-dir)
+ nil 'silent))
+ (vc-dir ignored-dir)
+ (while (vc-dir-busy)
+ (sit-for 0.1))
+ ;; FIXME better to explicitly test for error from process sentinel.
+ (with-current-buffer "*vc-dir*"
+ (goto-char (point-min))
+ (should (search-forward "unregistered" nil t))))
+ (delete-directory tempdir t))))
+
+;; Not specific to bzr.
+(ert-deftest vc-bzr-test-bug9781 ()
+ "Test for http://debbugs.gnu.org/9781 ."
+ :expected-result (if (executable-find vc-bzr-program) :passed :failed)
+ (should (executable-find vc-bzr-program))
+ (let* ((tempdir (make-temp-file "vc-bzr-test" t))
+ (subdir (expand-file-name "subdir" tempdir))
+ (file (expand-file-name "file" tempdir))
+ (default-directory (file-name-as-directory tempdir)))
+ (unwind-protect
+ (progn
+ (call-process vc-bzr-program nil nil nil "init")
+ (make-directory subdir)
+ (with-temp-buffer
+ (insert "text")
+ (write-region nil nil file nil 'silent)
+ (write-region nil nil (expand-file-name "subfile" subdir)
+ nil 'silent))
+ (call-process vc-bzr-program nil nil nil "add")
+ (call-process vc-bzr-program nil nil nil "commit" "-m" "Commit 1")
+ (call-process vc-bzr-program nil nil nil "remove" subdir)
+ (with-temp-buffer
+ (insert "different text")
+ (write-region nil nil file nil 'silent))
+ (vc-dir tempdir)
+ (while (vc-dir-busy)
+ (sit-for 0.1))
+ (vc-dir-mark-all-files t)
+ (let ((f (symbol-function 'y-or-n-p)))
+ (unwind-protect
+ (progn
+ (fset 'y-or-n-p (lambda (prompt) t))
+ (vc-next-action nil))
+ (fset 'y-or-n-p f)))
+ (should (get-buffer "*vc-log*")))
+ (delete-directory tempdir t))))
+
+;;; vc-bzr.el ends here