diff options
| author | Xue Fuqiao | 2013-07-30 08:29:09 +0800 |
|---|---|---|
| committer | Xue Fuqiao | 2013-07-30 08:29:09 +0800 |
| commit | d2067333246b676fcf98567d34eec79ed4648d5f (patch) | |
| tree | ad6543d8e7f1db50226907f7278373eef544d252 | |
| parent | 7aa7fff0c8860b72a2c7cdc7d4d0845245754d43 (diff) | |
| parent | 86b192c1479d167c13edb9cdaa026c231c8a0442 (diff) | |
| download | emacs-d2067333246b676fcf98567d34eec79ed4648d5f.tar.gz emacs-d2067333246b676fcf98567d34eec79ed4648d5f.zip | |
Merge from mainline.
79 files changed, 1580 insertions, 853 deletions
| @@ -1,3 +1,23 @@ | |||
| 1 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> | ||
| 2 | |||
| 3 | * INSTALL (DETAILED BUILDING AND INSTALLATION): Add | ||
| 4 | --without-file-notification to --without-all. | ||
| 5 | |||
| 6 | 2013-07-29 Xue Fuqiao <xfq.free@gmail.com> | ||
| 7 | |||
| 8 | * INSTALL: Fix description. | ||
| 9 | |||
| 10 | 2013-07-27 Glenn Morris <rgm@gnu.org> | ||
| 11 | |||
| 12 | * configure.ac: Extend the --with-sound option to allow | ||
| 13 | specification of OSS or ALSA (see bug#14812#64). | ||
| 14 | |||
| 15 | 2013-07-25 Glenn Morris <rgm@gnu.org> | ||
| 16 | |||
| 17 | * info/dir: Add ido. | ||
| 18 | |||
| 19 | * make-dist: Add a --tests option, to include test/. | ||
| 20 | |||
| 1 | 2013-07-24 Glenn Morris <rgm@gnu.org> | 21 | 2013-07-24 Glenn Morris <rgm@gnu.org> |
| 2 | 22 | ||
| 3 | * configure.ac: Use self-descriptive tags for AC_CONFIG_COMMANDS. | 23 | * configure.ac: Use self-descriptive tags for AC_CONFIG_COMMANDS. |
| @@ -55,7 +75,7 @@ | |||
| 55 | * lib/ignore-value.h: Remove this gnulib-imported file. | 75 | * lib/ignore-value.h: Remove this gnulib-imported file. |
| 56 | * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. | 76 | * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. |
| 57 | 77 | ||
| 58 | 2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change) | 78 | 2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change) |
| 59 | 79 | ||
| 60 | * configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798). | 80 | * configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798). |
| 61 | 81 | ||
| @@ -2021,7 +2041,7 @@ | |||
| 2021 | * Makefile.in (install-arch-indep, install-doc, install-info) | 2041 | * Makefile.in (install-arch-indep, install-doc, install-info) |
| 2022 | (uninstall): Scrap superfluous subshells. | 2042 | (uninstall): Scrap superfluous subshells. |
| 2023 | 2043 | ||
| 2024 | 2012-05-19 Ulrich Mueller <ulm@gentoo.org> | 2044 | 2012-05-19 Ulrich Müller <ulm@gentoo.org> |
| 2025 | 2045 | ||
| 2026 | * Makefile.in (install-etc): Respect DESTDIR. (Bug#11518) | 2046 | * Makefile.in (install-etc): Respect DESTDIR. (Bug#11518) |
| 2027 | 2047 | ||
| @@ -3797,7 +3817,7 @@ | |||
| 3797 | * Makefile.in (install-arch-indep, info): | 3817 | * Makefile.in (install-arch-indep, info): |
| 3798 | Replace MAKEINFO = off with HAVE_MAKEINFO = no. | 3818 | Replace MAKEINFO = off with HAVE_MAKEINFO = no. |
| 3799 | 3819 | ||
| 3800 | 2010-12-29 Ulrich Mueller <ulm@gentoo.org> | 3820 | 2010-12-29 Ulrich Müller <ulm@gentoo.org> |
| 3801 | 3821 | ||
| 3802 | * configure.in: Make gameuser configurable (Bug#7717). | 3822 | * configure.in: Make gameuser configurable (Bug#7717). |
| 3803 | 3823 | ||
| @@ -5007,7 +5027,7 @@ | |||
| 5007 | 5027 | ||
| 5008 | * info/dir: Untabify. | 5028 | * info/dir: Untabify. |
| 5009 | 5029 | ||
| 5010 | 2008-11-28 Ulrich Mueller <ulm@gentoo.org> | 5030 | 2008-11-28 Ulrich Müller <ulm@gentoo.org> |
| 5011 | 5031 | ||
| 5012 | * configure.in: Fix last change. | 5032 | * configure.in: Fix last change. |
| 5013 | 5033 | ||
| @@ -5070,7 +5090,7 @@ | |||
| 5070 | * configure (*-sunos5*, *-solaris*): Use the new file sol2-10.h. | 5090 | * configure (*-sunos5*, *-solaris*): Use the new file sol2-10.h. |
| 5071 | Use sol2-6.h for Solaris 7-9. | 5091 | Use sol2-6.h for Solaris 7-9. |
| 5072 | 5092 | ||
| 5073 | 2008-10-18 Ulrich Mueller <ulm@gentoo.org> | 5093 | 2008-10-18 Ulrich Müller <ulm@gentoo.org> |
| 5074 | 5094 | ||
| 5075 | * configure.in: Add support for GNU/Linux on SuperH. | 5095 | * configure.in: Add support for GNU/Linux on SuperH. |
| 5076 | 5096 | ||
| @@ -5154,7 +5174,7 @@ | |||
| 5154 | 5174 | ||
| 5155 | * configure.in (COCOA_EXPERIMENTAL_CTRL_G): Fix 2008-08-04 change. | 5175 | * configure.in (COCOA_EXPERIMENTAL_CTRL_G): Fix 2008-08-04 change. |
| 5156 | 5176 | ||
| 5157 | 2008-08-05 Ulrich Mueller <ulm@gentoo.org> | 5177 | 2008-08-05 Ulrich Müller <ulm@gentoo.org> |
| 5158 | 5178 | ||
| 5159 | * configure.in: Add checks for krb5_error.text and | 5179 | * configure.in: Add checks for krb5_error.text and |
| 5160 | krb5_error.e_text struct members. | 5180 | krb5_error.e_text struct members. |
| @@ -5522,7 +5542,7 @@ | |||
| 5522 | * configure.in (--with-gcc): Remove. | 5542 | * configure.in (--with-gcc): Remove. |
| 5523 | * INSTALL (DETAILED BUILDING AND INSTALLATION): Remove --with-gcc. | 5543 | * INSTALL (DETAILED BUILDING AND INSTALLATION): Remove --with-gcc. |
| 5524 | 5544 | ||
| 5525 | 2008-02-05 Ulrich Mueller <ulm@gentoo.org> | 5545 | 2008-02-05 Ulrich Müller <ulm@gentoo.org> |
| 5526 | 5546 | ||
| 5527 | * INSTALL: Recommend giflib, not libungif. | 5547 | * INSTALL: Recommend giflib, not libungif. |
| 5528 | 5548 | ||
| @@ -5544,7 +5564,7 @@ | |||
| 5544 | * configure.in: For libotf and m17n-flt checks, set shell vars | 5564 | * configure.in: For libotf and m17n-flt checks, set shell vars |
| 5545 | HAVE_LIBOTF and HAVE_M17N_FLT instead of pkg_check_libotf and | 5565 | HAVE_LIBOTF and HAVE_M17N_FLT instead of pkg_check_libotf and |
| 5546 | pkg_check_m17n_flt, respectively, for the sake of the summary output. | 5566 | pkg_check_m17n_flt, respectively, for the sake of the summary output. |
| 5547 | Reported by Ulrich Mueller. | 5567 | Reported by Ulrich Müller. |
| 5548 | 5568 | ||
| 5549 | 2008-02-02 Eli Zaretskii <eliz@gnu.org> | 5569 | 2008-02-02 Eli Zaretskii <eliz@gnu.org> |
| 5550 | 5570 | ||
| @@ -5858,7 +5878,7 @@ | |||
| 5858 | 5878 | ||
| 5859 | * configure.in: Put quotes around nested macro calls. | 5879 | * configure.in: Put quotes around nested macro calls. |
| 5860 | 5880 | ||
| 5861 | 2007-08-31 Ulrich Mueller <ulm@gentoo.org> (tiny change) | 5881 | 2007-08-31 Ulrich Müller <ulm@gentoo.org> (tiny change) |
| 5862 | 5882 | ||
| 5863 | * configure.in: Fix typo. | 5883 | * configure.in: Fix typo. |
| 5864 | * configure: Regenerate. | 5884 | * configure: Regenerate. |
| @@ -98,7 +98,6 @@ sections if you need to. | |||
| 98 | first clean the source directories: | 98 | first clean the source directories: |
| 99 | 99 | ||
| 100 | make distclean | 100 | make distclean |
| 101 | ./configure | ||
| 102 | 101 | ||
| 103 | Note that the install automatically saves space by compressing | 102 | Note that the install automatically saves space by compressing |
| 104 | (provided you have the `gzip' program) those installed Lisp source (.el) | 103 | (provided you have the `gzip' program) those installed Lisp source (.el) |
| @@ -324,14 +323,15 @@ equivalent to --without-sound --without-dbus --without-libotf | |||
| 324 | --without-selinux --without-xft --without-gsettings --without-gnutls | 323 | --without-selinux --without-xft --without-gsettings --without-gnutls |
| 325 | --without-rsvg --without-xml2 --without-gconf --without-imagemagick | 324 | --without-rsvg --without-xml2 --without-gconf --without-imagemagick |
| 326 | --without-m17n-flt --without-jpeg --without-tiff --without-gif | 325 | --without-m17n-flt --without-jpeg --without-tiff --without-gif |
| 327 | --without-png --without-gpm. Note that --without-all leaves X support | 326 | --without-png --without-gpm --without-file-notification. Note that |
| 328 | enabled, and using the GTK2 or GTK3 toolkit creates a lot of library | 327 | --without-all leaves X support enabled, and using the GTK2 or GTK3 |
| 329 | dependencies. So if you want to build a small executable with very basic | 328 | toolkit creates a lot of library dependencies. So if you want to |
| 330 | X support, use --without-all --with-x-toolkit=no. For the smallest possible | 329 | build a small executable with very basic X support, use --without-all |
| 331 | executable without X, use --without-all --without-x. If you want to build | 330 | --with-x-toolkit=no. For the smallest possible executable without X, |
| 332 | with just a few features enabled, you can combine --without-all with | 331 | use --without-all --without-x. If you want to build with just a few |
| 333 | --with-FEATURE. For example, you can use --without-all --with-dbus | 332 | features enabled, you can combine --without-all with --with-FEATURE. |
| 334 | to build with DBus support and nothing more. | 333 | For example, you can use --without-all --with-dbus to build with DBus |
| 334 | support and nothing more. | ||
| 335 | 335 | ||
| 336 | Use --with-wide-int to implement Emacs values with the type 'long long', | 336 | Use --with-wide-int to implement Emacs values with the type 'long long', |
| 337 | even on hosts where a narrower type would do. With this option, on a | 337 | even on hosts where a narrower type would do. With this option, on a |
diff --git a/autogen/configure b/autogen/configure index fc0463a4a8d..3d207e12537 100755 --- a/autogen/configure +++ b/autogen/configure | |||
| @@ -2233,7 +2233,9 @@ Optional Packages: | |||
| 2233 | --with-mail-unlink unlink, rather than empty, mail spool after reading | 2233 | --with-mail-unlink unlink, rather than empty, mail spool after reading |
| 2234 | --with-mailhost=HOSTNAME | 2234 | --with-mailhost=HOSTNAME |
| 2235 | string giving default POP mail host | 2235 | string giving default POP mail host |
| 2236 | --without-sound don't compile with sound support | 2236 | --with-sound=VALUE compile with sound support (VALUE one of: yes, |
| 2237 | ossaudio, alsa, no; default yes). Only for | ||
| 2238 | GNU/Linux, FreeBSD, NetBSD, MinGW. | ||
| 2237 | --with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk2, | 2239 | --with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk2, |
| 2238 | gtk3, lucid or athena, motif, no) | 2240 | gtk3, lucid or athena, motif, no) |
| 2239 | --with-wide-int prefer wide Emacs integers (typically 62-bit) | 2241 | --with-wide-int prefer wide Emacs integers (typically 62-bit) |
| @@ -4116,9 +4118,16 @@ fi | |||
| 4116 | 4118 | ||
| 4117 | # Check whether --with-sound was given. | 4119 | # Check whether --with-sound was given. |
| 4118 | if test "${with_sound+set}" = set; then : | 4120 | if test "${with_sound+set}" = set; then : |
| 4119 | withval=$with_sound; | 4121 | withval=$with_sound; case "${withval}" in |
| 4122 | yes|no|ossaudio|alsa) val=$withval ;; | ||
| 4123 | *) as_fn_error "\`--with-sound=$withval' is invalid; | ||
| 4124 | this option's value should be \`yes', \`no', \`ossaudio', or \`alsa'." "$LINENO" 5 | ||
| 4125 | ;; | ||
| 4126 | esac | ||
| 4127 | with_sound=$val | ||
| 4128 | |||
| 4120 | else | 4129 | else |
| 4121 | with_sound=$with_features | 4130 | with_sound=$with_features |
| 4122 | fi | 4131 | fi |
| 4123 | 4132 | ||
| 4124 | 4133 | ||
| @@ -8995,6 +9004,7 @@ fi | |||
| 8995 | 9004 | ||
| 8996 | 9005 | ||
| 8997 | 9006 | ||
| 9007 | HAVE_SOUND=no | ||
| 8998 | if test "${with_sound}" != "no"; then | 9008 | if test "${with_sound}" != "no"; then |
| 8999 | # Sound support for GNU/Linux, the free BSDs, and MinGW. | 9009 | # Sound support for GNU/Linux, the free BSDs, and MinGW. |
| 9000 | for ac_header in machine/soundcard.h sys/soundcard.h soundcard.h | 9010 | for ac_header in machine/soundcard.h sys/soundcard.h soundcard.h |
| @@ -9017,8 +9027,9 @@ fi | |||
| 9017 | 9027 | ||
| 9018 | done | 9028 | done |
| 9019 | 9029 | ||
| 9020 | # Emulation library used on NetBSD. | 9030 | if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then |
| 9021 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5 | 9031 | # Emulation library used on NetBSD. |
| 9032 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5 | ||
| 9022 | $as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; } | 9033 | $as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; } |
| 9023 | if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then : | 9034 | if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then : |
| 9024 | $as_echo_n "(cached) " >&6 | 9035 | $as_echo_n "(cached) " >&6 |
| @@ -9060,10 +9071,14 @@ else | |||
| 9060 | LIBSOUND= | 9071 | LIBSOUND= |
| 9061 | fi | 9072 | fi |
| 9062 | 9073 | ||
| 9074 | test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \ | ||
| 9075 | as_fn_error "ossaudio sound support requested but not found." "$LINENO" 5 | ||
| 9076 | fi | ||
| 9063 | 9077 | ||
| 9064 | 9078 | ||
| 9065 | ALSA_REQUIRED=1.0.0 | 9079 | if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then |
| 9066 | ALSA_MODULES="alsa >= $ALSA_REQUIRED" | 9080 | ALSA_REQUIRED=1.0.0 |
| 9081 | ALSA_MODULES="alsa >= $ALSA_REQUIRED" | ||
| 9067 | 9082 | ||
| 9068 | succeeded=no | 9083 | succeeded=no |
| 9069 | 9084 | ||
| @@ -9115,12 +9130,12 @@ $as_echo "no" >&6; } | |||
| 9115 | HAVE_ALSA=no | 9130 | HAVE_ALSA=no |
| 9116 | fi | 9131 | fi |
| 9117 | 9132 | ||
| 9118 | if test $HAVE_ALSA = yes; then | 9133 | if test $HAVE_ALSA = yes; then |
| 9119 | SAVE_CFLAGS="$CFLAGS" | 9134 | SAVE_CFLAGS="$CFLAGS" |
| 9120 | SAVE_LIBS="$LIBS" | 9135 | SAVE_LIBS="$LIBS" |
| 9121 | CFLAGS="$ALSA_CFLAGS $CFLAGS" | 9136 | CFLAGS="$ALSA_CFLAGS $CFLAGS" |
| 9122 | LIBS="$ALSA_LIBS $LIBS" | 9137 | LIBS="$ALSA_LIBS $LIBS" |
| 9123 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | 9138 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| 9124 | /* end confdefs.h. */ | 9139 | /* end confdefs.h. */ |
| 9125 | #include <asoundlib.h> | 9140 | #include <asoundlib.h> |
| 9126 | int | 9141 | int |
| @@ -9137,8 +9152,8 @@ else | |||
| 9137 | emacs_alsa_normal=no | 9152 | emacs_alsa_normal=no |
| 9138 | fi | 9153 | fi |
| 9139 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | 9154 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| 9140 | if test "$emacs_alsa_normal" != yes; then | 9155 | if test "$emacs_alsa_normal" != yes; then |
| 9141 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | 9156 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| 9142 | /* end confdefs.h. */ | 9157 | /* end confdefs.h. */ |
| 9143 | #include <alsa/asoundlib.h> | 9158 | #include <alsa/asoundlib.h> |
| 9144 | int | 9159 | int |
| @@ -9155,27 +9170,30 @@ else | |||
| 9155 | emacs_alsa_subdir=no | 9170 | emacs_alsa_subdir=no |
| 9156 | fi | 9171 | fi |
| 9157 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | 9172 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| 9158 | if test "$emacs_alsa_subdir" != yes; then | 9173 | if test "$emacs_alsa_subdir" != yes; then |
| 9159 | as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5 | 9174 | as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5 |
| 9175 | fi | ||
| 9176 | ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE" | ||
| 9160 | fi | 9177 | fi |
| 9161 | ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE" | ||
| 9162 | fi | ||
| 9163 | 9178 | ||
| 9164 | CFLAGS="$SAVE_CFLAGS" | 9179 | CFLAGS="$SAVE_CFLAGS" |
| 9165 | LIBS="$SAVE_LIBS" | 9180 | LIBS="$SAVE_LIBS" |
| 9166 | LIBSOUND="$LIBSOUND $ALSA_LIBS" | 9181 | LIBSOUND="$LIBSOUND $ALSA_LIBS" |
| 9167 | CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" | 9182 | CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" |
| 9168 | 9183 | ||
| 9169 | $as_echo "#define HAVE_ALSA 1" >>confdefs.h | 9184 | $as_echo "#define HAVE_ALSA 1" >>confdefs.h |
| 9170 | 9185 | ||
| 9186 | elif test "${with_sound}" = "alsa"; then | ||
| 9187 | as_fn_error "ALSA sound support requested but not found." "$LINENO" 5 | ||
| 9188 | fi | ||
| 9171 | fi | 9189 | fi |
| 9172 | 9190 | if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then | |
| 9173 | if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then | ||
| 9174 | case "$opsys" in | 9191 | case "$opsys" in |
| 9175 | gnu-linux|freebsd|netbsd|mingw32) | 9192 | gnu-linux|freebsd|netbsd|mingw32) |
| 9176 | 9193 | ||
| 9177 | $as_echo "#define HAVE_SOUND 1" >>confdefs.h | 9194 | $as_echo "#define HAVE_SOUND 1" >>confdefs.h |
| 9178 | 9195 | ||
| 9196 | HAVE_SOUND=yes | ||
| 9179 | ;; | 9197 | ;; |
| 9180 | esac | 9198 | esac |
| 9181 | fi | 9199 | fi |
| @@ -28679,6 +28697,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}" | |||
| 28679 | echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" | 28697 | echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" |
| 28680 | echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" | 28698 | echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" |
| 28681 | 28699 | ||
| 28700 | echo " Does Emacs support sound? ${HAVE_SOUND}" | ||
| 28701 | |||
| 28682 | echo " Does Emacs use -lgpm? ${HAVE_GPM}" | 28702 | echo " Does Emacs use -lgpm? ${HAVE_GPM}" |
| 28683 | echo " Does Emacs use -ldbus? ${HAVE_DBUS}" | 28703 | echo " Does Emacs use -ldbus? ${HAVE_DBUS}" |
| 28684 | echo " Does Emacs use -lgconf? ${HAVE_GCONF}" | 28704 | echo " Does Emacs use -lgconf? ${HAVE_GCONF}" |
diff --git a/configure.ac b/configure.ac index b79f3e005dc..d8557f29898 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -141,7 +141,18 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME], | |||
| 141 | [string giving default POP mail host])], | 141 | [string giving default POP mail host])], |
| 142 | AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.])) | 142 | AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.])) |
| 143 | 143 | ||
| 144 | OPTION_DEFAULT_ON([sound],[don't compile with sound support]) | 144 | AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE], |
| 145 | [compile with sound support (VALUE one of: yes, ossaudio, alsa, no; | ||
| 146 | default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])], | ||
| 147 | [ case "${withval}" in | ||
| 148 | yes|no|ossaudio|alsa) val=$withval ;; | ||
| 149 | *) AC_MSG_ERROR([`--with-sound=$withval' is invalid; | ||
| 150 | this option's value should be `yes', `no', `ossaudio', or `alsa'.]) | ||
| 151 | ;; | ||
| 152 | esac | ||
| 153 | with_sound=$val | ||
| 154 | ], | ||
| 155 | [with_sound=$with_features]) | ||
| 145 | 156 | ||
| 146 | dnl FIXME currently it is not the last. | 157 | dnl FIXME currently it is not the last. |
| 147 | dnl This should be the last --with option, because --with-x is | 158 | dnl This should be the last --with option, because --with-x is |
| @@ -1253,6 +1264,7 @@ AC_DEFUN([PKG_CHECK_MODULES], [ | |||
| 1253 | fi | 1264 | fi |
| 1254 | ]) | 1265 | ]) |
| 1255 | 1266 | ||
| 1267 | HAVE_SOUND=no | ||
| 1256 | if test "${with_sound}" != "no"; then | 1268 | if test "${with_sound}" != "no"; then |
| 1257 | # Sound support for GNU/Linux, the free BSDs, and MinGW. | 1269 | # Sound support for GNU/Linux, the free BSDs, and MinGW. |
| 1258 | AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h], | 1270 | AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h], |
| @@ -1262,47 +1274,61 @@ if test "${with_sound}" != "no"; then | |||
| 1262 | #include <windows.h> | 1274 | #include <windows.h> |
| 1263 | #endif | 1275 | #endif |
| 1264 | ]) | 1276 | ]) |
| 1265 | # Emulation library used on NetBSD. | 1277 | if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then |
| 1266 | AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) | 1278 | # Emulation library used on NetBSD. |
| 1279 | AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=) | ||
| 1280 | test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \ | ||
| 1281 | AC_MSG_ERROR([ossaudio sound support requested but not found.]) | ||
| 1282 | dnl FIXME? If we did find ossaudio, should we set with_sound=ossaudio? | ||
| 1283 | dnl Traditionally, we go on to check for alsa too. Does that make sense? | ||
| 1284 | fi | ||
| 1267 | AC_SUBST(LIBSOUND) | 1285 | AC_SUBST(LIBSOUND) |
| 1268 | 1286 | ||
| 1269 | ALSA_REQUIRED=1.0.0 | 1287 | if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then |
| 1270 | ALSA_MODULES="alsa >= $ALSA_REQUIRED" | 1288 | ALSA_REQUIRED=1.0.0 |
| 1271 | PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no) | 1289 | ALSA_MODULES="alsa >= $ALSA_REQUIRED" |
| 1272 | if test $HAVE_ALSA = yes; then | 1290 | PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no) |
| 1273 | SAVE_CFLAGS="$CFLAGS" | 1291 | if test $HAVE_ALSA = yes; then |
| 1274 | SAVE_LIBS="$LIBS" | 1292 | SAVE_CFLAGS="$CFLAGS" |
| 1275 | CFLAGS="$ALSA_CFLAGS $CFLAGS" | 1293 | SAVE_LIBS="$LIBS" |
| 1276 | LIBS="$ALSA_LIBS $LIBS" | 1294 | CFLAGS="$ALSA_CFLAGS $CFLAGS" |
| 1277 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])], | 1295 | LIBS="$ALSA_LIBS $LIBS" |
| 1278 | emacs_alsa_normal=yes, | 1296 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])], |
| 1279 | emacs_alsa_normal=no) | 1297 | emacs_alsa_normal=yes, |
| 1280 | if test "$emacs_alsa_normal" != yes; then | 1298 | emacs_alsa_normal=no) |
| 1281 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]], | 1299 | if test "$emacs_alsa_normal" != yes; then |
| 1282 | [[snd_lib_error_set_handler (0);]])], | 1300 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]], |
| 1283 | emacs_alsa_subdir=yes, | 1301 | [[snd_lib_error_set_handler (0);]])], |
| 1284 | emacs_alsa_subdir=no) | 1302 | emacs_alsa_subdir=yes, |
| 1285 | if test "$emacs_alsa_subdir" != yes; then | 1303 | emacs_alsa_subdir=no) |
| 1286 | AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.]) | 1304 | if test "$emacs_alsa_subdir" != yes; then |
| 1305 | AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.]) | ||
| 1306 | fi | ||
| 1307 | ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE" | ||
| 1287 | fi | 1308 | fi |
| 1288 | ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE" | ||
| 1289 | fi | ||
| 1290 | 1309 | ||
| 1291 | CFLAGS="$SAVE_CFLAGS" | 1310 | CFLAGS="$SAVE_CFLAGS" |
| 1292 | LIBS="$SAVE_LIBS" | 1311 | LIBS="$SAVE_LIBS" |
| 1293 | LIBSOUND="$LIBSOUND $ALSA_LIBS" | 1312 | LIBSOUND="$LIBSOUND $ALSA_LIBS" |
| 1294 | CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" | 1313 | CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS" |
| 1295 | AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.]) | 1314 | AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.]) |
| 1296 | fi | 1315 | elif test "${with_sound}" = "alsa"; then |
| 1316 | AC_MSG_ERROR([ALSA sound support requested but not found.]) | ||
| 1317 | fi | ||
| 1318 | fi dnl with_sound = alsa|yes | ||
| 1297 | 1319 | ||
| 1298 | dnl Define HAVE_SOUND if we have sound support. We know it works and | 1320 | dnl Define HAVE_SOUND if we have sound support. We know it works and |
| 1299 | dnl compiles only on the specified platforms. For others, it | 1321 | dnl compiles only on the specified platforms. For others, it |
| 1300 | dnl probably doesn't make sense to try. | 1322 | dnl probably doesn't make sense to try. |
| 1323 | dnl FIXME So surely we should bypass this whole section if not using | ||
| 1324 | dnl one of these platforms? | ||
| 1301 | if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then | 1325 | if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then |
| 1302 | case "$opsys" in | 1326 | case "$opsys" in |
| 1303 | dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__ | 1327 | dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__ |
| 1328 | dnl Adjust the --with-sound help text if you change this. | ||
| 1304 | gnu-linux|freebsd|netbsd|mingw32) | 1329 | gnu-linux|freebsd|netbsd|mingw32) |
| 1305 | AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.]) | 1330 | AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.]) |
| 1331 | HAVE_SOUND=yes | ||
| 1306 | ;; | 1332 | ;; |
| 1307 | esac | 1333 | esac |
| 1308 | fi | 1334 | fi |
| @@ -4749,6 +4775,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}" | |||
| 4749 | echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" | 4775 | echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" |
| 4750 | echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" | 4776 | echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" |
| 4751 | 4777 | ||
| 4778 | echo " Does Emacs support sound? ${HAVE_SOUND}" | ||
| 4779 | |||
| 4752 | echo " Does Emacs use -lgpm? ${HAVE_GPM}" | 4780 | echo " Does Emacs use -lgpm? ${HAVE_GPM}" |
| 4753 | echo " Does Emacs use -ldbus? ${HAVE_DBUS}" | 4781 | echo " Does Emacs use -ldbus? ${HAVE_DBUS}" |
| 4754 | echo " Does Emacs use -lgconf? ${HAVE_GCONF}" | 4782 | echo " Does Emacs use -lgconf? ${HAVE_GCONF}" |
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index e634117f89c..eaae7ec5c9f 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog | |||
| @@ -1,3 +1,17 @@ | |||
| 1 | 2013-07-28 Xue Fuqiao <xfq.free@gmail.com> | ||
| 2 | |||
| 3 | * glossary.texi (Glossary): Add some entries. | ||
| 4 | |||
| 5 | 2013-07-27 Xue Fuqiao <xfq.free@gmail.com> | ||
| 6 | |||
| 7 | * maintaining.texi (VC Directory Commands): Mention `D' and `L' in | ||
| 8 | vc-dir. (Bug#14948) | ||
| 9 | |||
| 10 | 2013-07-26 Eli Zaretskii <eliz@gnu.org> | ||
| 11 | |||
| 12 | * display.texi (Fringes): Document the variable fringe-mode. | ||
| 13 | (Bug#14946) | ||
| 14 | |||
| 1 | 2013-07-03 Glenn Morris <rgm@gnu.org> | 15 | 2013-07-03 Glenn Morris <rgm@gnu.org> |
| 2 | 16 | ||
| 3 | * maintaining.texi (EDE): Fix cross-reference. | 17 | * maintaining.texi (EDE): Fix cross-reference. |
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 482d7e7741a..aa9977a52e5 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi | |||
| @@ -1017,12 +1017,15 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}. | |||
| 1017 | 1017 | ||
| 1018 | @findex set-fringe-style | 1018 | @findex set-fringe-style |
| 1019 | @findex fringe-mode | 1019 | @findex fringe-mode |
| 1020 | @vindex fringe-mode @r{(variable)} | ||
| 1020 | On graphical displays, each Emacs window normally has narrow | 1021 | On graphical displays, each Emacs window normally has narrow |
| 1021 | @dfn{fringes} on the left and right edges. The fringes are used to | 1022 | @dfn{fringes} on the left and right edges. The fringes are used to |
| 1022 | display symbols that provide information about the text in the window. | 1023 | display symbols that provide information about the text in the window. |
| 1023 | You can type @kbd{M-x fringe-mode} to disable the fringes, or modify | 1024 | You can type @kbd{M-x fringe-mode} to disable the fringes, or modify |
| 1024 | their width. This command affects fringes in all frames; to modify | 1025 | their width. This command affects fringes in all frames; to modify |
| 1025 | fringes on the selected frame only, use @kbd{M-x set-fringe-style}. | 1026 | fringes on the selected frame only, use @kbd{M-x set-fringe-style}. |
| 1027 | You can make your changes to the fringes permanent by customizing the | ||
| 1028 | variable @code{fringe-mode}. | ||
| 1026 | 1029 | ||
| 1027 | The most common use of the fringes is to indicate a continuation | 1030 | The most common use of the fringes is to indicate a continuation |
| 1028 | line (@pxref{Continuation Lines}). When one line of text is split | 1031 | line (@pxref{Continuation Lines}). When one line of text is split |
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index ee41313c10f..43441c20814 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | @c See file emacs.texi for copying conditions. | 4 | @c See file emacs.texi for copying conditions. |
| 5 | @node Glossary | 5 | @node Glossary |
| 6 | @unnumbered Glossary | 6 | @unnumbered Glossary |
| 7 | @cindex glossary | ||
| 7 | 8 | ||
| 8 | @table @asis | 9 | @table @asis |
| 9 | @anchor{Glossary---Abbrev} | 10 | @anchor{Glossary---Abbrev} |
| @@ -18,7 +19,10 @@ Aborting means getting out of a recursive edit (q.v.). The | |||
| 18 | commands @kbd{C-]} and @kbd{M-x top-level} are used for this. | 19 | commands @kbd{C-]} and @kbd{M-x top-level} are used for this. |
| 19 | @xref{Quitting}. | 20 | @xref{Quitting}. |
| 20 | 21 | ||
| 21 | @c FIXME? Active Region | 22 | @item Active Region |
| 23 | Setting the mark (q.v.@:) at a position in the text also activates it. | ||
| 24 | When the mark is active, we call the region an active region. | ||
| 25 | @xref{Mark}. | ||
| 22 | 26 | ||
| 23 | @item Alt | 27 | @item Alt |
| 24 | Alt is the name of a modifier bit that a keyboard input character may | 28 | Alt is the name of a modifier bit that a keyboard input character may |
| @@ -1365,7 +1369,11 @@ are not in a recursive editing level (q.v.@:) or the minibuffer | |||
| 1365 | (q.v.), and not in the middle of a command. You can get back to top | 1369 | (q.v.), and not in the middle of a command. You can get back to top |
| 1366 | level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}. | 1370 | level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}. |
| 1367 | 1371 | ||
| 1368 | @c FIXME? Transient Mark Mode | 1372 | @item Transient Mark Mode |
| 1373 | The default behavior of the mark (q.v.@:) and region (q.v.), in which | ||
| 1374 | setting the mark activates it and highlights the region, is called | ||
| 1375 | Transient Mark mode. In GNU Emacs 23 and onwards, it is enabled by | ||
| 1376 | default. @xref{Disabled Transient Mark}. | ||
| 1369 | 1377 | ||
| 1370 | @item Transposition | 1378 | @item Transposition |
| 1371 | Transposing two units of text means putting each one into the place | 1379 | Transposing two units of text means putting each one into the place |
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index e89660dfaf5..6184684fbb0 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi | |||
| @@ -1222,7 +1222,7 @@ Revisions}), and @w{@kbd{C-x v u}} (@pxref{VC Undo}). | |||
| 1222 | 1222 | ||
| 1223 | The VC Directory buffer also defines some single-key shortcuts for | 1223 | The VC Directory buffer also defines some single-key shortcuts for |
| 1224 | VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l}, | 1224 | VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l}, |
| 1225 | @kbd{i}, and @kbd{v}. | 1225 | @kbd{i}, @kbd{D}, @kbd{L} and @kbd{v}. |
| 1226 | 1226 | ||
| 1227 | For example, you can commit a set of edited files by opening a VC | 1227 | For example, you can commit a set of edited files by opening a VC |
| 1228 | Directory buffer, where the files are listed with the @samp{edited} | 1228 | Directory buffer, where the files are listed with the @samp{edited} |
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index d8d21794baa..32717946b04 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog | |||
| @@ -1080,7 +1080,7 @@ | |||
| 1080 | * display.texi (Face Attributes): Copyedits. Add a few cindex entries. | 1080 | * display.texi (Face Attributes): Copyedits. Add a few cindex entries. |
| 1081 | Overlining no longer behaves exactly like underlining. | 1081 | Overlining no longer behaves exactly like underlining. |
| 1082 | 1082 | ||
| 1083 | 2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com> | 1083 | 2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com> |
| 1084 | 1084 | ||
| 1085 | * display.texi (Face Attributes): | 1085 | * display.texi (Face Attributes): |
| 1086 | Document wave-style underline face attribute. | 1086 | Document wave-style underline face attribute. |
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index a0413e88845..b306ce5ba0a 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,47 @@ | |||
| 1 | 2013-07-29 David Engster <deng@randomsample.de> | ||
| 2 | |||
| 3 | * eieio.texi (top): Make clear that EIEIO is not a full CLOS | ||
| 4 | implementation. | ||
| 5 | (Introduction): Add further missing features. | ||
| 6 | (Building Classes): Add introductory paragraph. | ||
| 7 | (Wish List): Add metaclasses and EQL specialization. | ||
| 8 | |||
| 9 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> | ||
| 10 | |||
| 11 | * tramp.texi (Frequently Asked Questions): Mention | ||
| 12 | `tramp-use-ssh-controlmaster-options'. | ||
| 13 | |||
| 14 | 2013-07-26 Tassilo Horn <tsdh@gnu.org> | ||
| 15 | |||
| 16 | * gnus.texi (Sorting the Summary Buffer): Document new defcustom | ||
| 17 | `gnus-sort-threads-recursively'. | ||
| 18 | |||
| 19 | 2013-07-25 Glenn Morris <rgm@gnu.org> | ||
| 20 | |||
| 21 | * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add ido. | ||
| 22 | (ido, $(buildinfodir)/ido$(INFO_EXT), ido.dvi, ido.pdf): New rules. | ||
| 23 | |||
| 24 | * erc.texi (Special Features): Update contact information. | ||
| 25 | (History): Avoid using @email. | ||
| 26 | |||
| 27 | * eshell.texi (Bugs and ideas): Minor updates. | ||
| 28 | |||
| 29 | * faq.texi (Reporting bugs, Origin of the term Emacs) | ||
| 30 | (Setting up a customization file) | ||
| 31 | (Using an already running Emacs process, Turning off beeping) | ||
| 32 | (Packages that do not come with Emacs) | ||
| 33 | (Replying to the sender of a message): Avoid using @email. | ||
| 34 | |||
| 35 | * pcl-cvs.texi (Contributors, Bugs): Avoid using @email. | ||
| 36 | |||
| 37 | * reftex.texi (Imprint): Avoid using @email. | ||
| 38 | |||
| 39 | * ses.texi (Top): Update bug reporting instructions. | ||
| 40 | (Acknowledgments): Avoid using @email. | ||
| 41 | |||
| 42 | * woman.texi (Introduction, Background): Remove outdated information. | ||
| 43 | (Bugs, Acknowledgments): Avoid using @email. | ||
| 44 | |||
| 1 | 2013-07-24 Xue Fuqiao <xfq.free@gmail.com> | 45 | 2013-07-24 Xue Fuqiao <xfq.free@gmail.com> |
| 2 | 46 | ||
| 3 | * ido.texi: New file. | 47 | * ido.texi: New file. |
| @@ -1096,7 +1140,7 @@ | |||
| 1096 | corresponding function names, according to | 1140 | corresponding function names, according to |
| 1097 | `org-agenda-view-mode-dispatch'. | 1141 | `org-agenda-view-mode-dispatch'. |
| 1098 | 1142 | ||
| 1099 | 2012-09-30 Jan Bäcker <jan.boecker@jboecker.de> | 1143 | 2012-09-30 Jan Böcker <jan.boecker@jboecker.de> |
| 1100 | 1144 | ||
| 1101 | * org.texi (The spreadsheet): Fix typo. | 1145 | * org.texi (The spreadsheet): Fix typo. |
| 1102 | 1146 | ||
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 712fbccbfde..67a899af8ce 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in | |||
| @@ -45,7 +45,7 @@ MAKEINFO_OPTS = --force -I$(emacsdir) | |||
| 45 | INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \ | 45 | INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \ |
| 46 | dbus dired-x ebrowse ede ediff edt eieio \ | 46 | dbus dired-x ebrowse ede ediff edt eieio \ |
| 47 | emacs-mime epa erc ert eshell eudc efaq \ | 47 | emacs-mime epa erc ert eshell eudc efaq \ |
| 48 | flymake forms gnus emacs-gnutls htmlfontify idlwave info.info \ | 48 | flymake forms gnus emacs-gnutls htmlfontify idlwave ido info.info \ |
| 49 | mairix-el message mh-e newsticker nxml-mode \ | 49 | mairix-el message mh-e newsticker nxml-mode \ |
| 50 | org pcl-cvs pgg rcirc remember reftex sasl \ | 50 | org pcl-cvs pgg rcirc remember reftex sasl \ |
| 51 | sc semantic ses sieve smtpmail speedbar srecode tramp \ | 51 | sc semantic ses sieve smtpmail speedbar srecode tramp \ |
| @@ -79,6 +79,7 @@ DVI_TARGETS = \ | |||
| 79 | emacs-gnutls.dvi \ | 79 | emacs-gnutls.dvi \ |
| 80 | htmlfontify.dvi \ | 80 | htmlfontify.dvi \ |
| 81 | idlwave.dvi \ | 81 | idlwave.dvi \ |
| 82 | ido.dvi \ | ||
| 82 | info.dvi \ | 83 | info.dvi \ |
| 83 | mairix-el.dvi \ | 84 | mairix-el.dvi \ |
| 84 | message.dvi \ | 85 | message.dvi \ |
| @@ -135,6 +136,7 @@ PDF_TARGETS = \ | |||
| 135 | htmlfontify.pdf \ | 136 | htmlfontify.pdf \ |
| 136 | emacs-gnutls.pdf \ | 137 | emacs-gnutls.pdf \ |
| 137 | idlwave.pdf \ | 138 | idlwave.pdf \ |
| 139 | ido.pdf \ | ||
| 138 | info.pdf \ | 140 | info.pdf \ |
| 139 | mairix-el.pdf \ | 141 | mairix-el.pdf \ |
| 140 | message.pdf \ | 142 | message.pdf \ |
| @@ -452,6 +454,15 @@ idlwave.dvi: ${srcdir}/idlwave.texi ${gfdl} | |||
| 452 | idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl} | 454 | idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl} |
| 453 | $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi | 455 | $(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi |
| 454 | 456 | ||
| 457 | ido : $(buildinfodir)/ido$(INFO_EXT) | ||
| 458 | $(buildinfodir)/ido$(INFO_EXT): ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} | ||
| 459 | $(mkinfodir) | ||
| 460 | $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi | ||
| 461 | ido.dvi: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} | ||
| 462 | $(ENVADD) $(TEXI2DVI) ${srcdir}/ido.texi | ||
| 463 | ido.pdf: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl} | ||
| 464 | $(ENVADD) $(TEXI2PDF) ${srcdir}/ido.texi | ||
| 465 | |||
| 455 | # NB this one needs --no-split even without a .info extension. | 466 | # NB this one needs --no-split even without a .info extension. |
| 456 | # Avoid name clash with overall "info" target. | 467 | # Avoid name clash with overall "info" target. |
| 457 | info.info : $(buildinfodir)/info$(INFO_EXT) | 468 | info.info : $(buildinfodir)/info$(INFO_EXT) |
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index b16144e98a2..c8e8fb6d2e2 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi | |||
| @@ -46,10 +46,10 @@ modify this GNU manual.'' | |||
| 46 | @comment node-name, next, previous, up | 46 | @comment node-name, next, previous, up |
| 47 | @top EIEIO | 47 | @top EIEIO |
| 48 | 48 | ||
| 49 | @eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is | 49 | @eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') |
| 50 | a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp. | 50 | provides an Object Oriented layer for Emacs Lisp, following the basic |
| 51 | It provides a framework for writing object-oriented applications in | 51 | concepts of the Common Lisp Object System (CLOS). It provides a |
| 52 | Emacs. | 52 | framework for writing object-oriented applications in Emacs. |
| 53 | 53 | ||
| 54 | @ifnottex | 54 | @ifnottex |
| 55 | @insertcopying | 55 | @insertcopying |
| @@ -201,8 +201,6 @@ Byte compilation support of methods. | |||
| 201 | @item | 201 | @item |
| 202 | Help system extensions for classes and methods. | 202 | Help system extensions for classes and methods. |
| 203 | @item | 203 | @item |
| 204 | Automatic texinfo documentation generator. | ||
| 205 | @item | ||
| 206 | Several base classes for interesting tasks. | 204 | Several base classes for interesting tasks. |
| 207 | @item | 205 | @item |
| 208 | Simple test suite. | 206 | Simple test suite. |
| @@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS) | |||
| 212 | Customization support in a class (extension to CLOS) | 210 | Customization support in a class (extension to CLOS) |
| 213 | @end enumerate | 211 | @end enumerate |
| 214 | 212 | ||
| 215 | Here are some CLOS features that @eieio{} presently lacks: | 213 | Here are some important CLOS features that @eieio{} presently lacks: |
| 216 | 214 | ||
| 217 | @table @asis | 215 | @table @asis |
| 218 | @item Complete @code{defclass} tag support | ||
| 219 | All CLOS tags are currently supported, but the following are not | ||
| 220 | currently implemented correctly: | ||
| 221 | 216 | ||
| 222 | @table @code | 217 | @item Method dispatch |
| 223 | @item :metaclass | 218 | EIEO does not support method dispatch for built-in types and multiple |
| 224 | There is only one base superclass for all @eieio{} classes, which is | 219 | arguments types. In other words, method dispatch only looks at the |
| 225 | the @code{eieio-default-superclass}. | 220 | first argument, and this one must be an @eieio{} type. |
| 226 | @item :default-initargs | 221 | |
| 222 | @item Support for metaclasses | ||
| 223 | There is just one default metaclass, @code{eieio-default-superclass}, | ||
| 224 | and you cannot define your own. The @code{:metaclass} tag in | ||
| 225 | @code{defclass} is ignored. Also, functions like `class-of' and | ||
| 226 | `find-class', which should return instances of the metaclass, behave | ||
| 227 | differently in @eieio{} in that they return symbols or plain structures | ||
| 228 | instead. | ||
| 229 | |||
| 230 | @item EQL specialization | ||
| 231 | EIEIO does not support it. | ||
| 232 | |||
| 233 | @item @code{:around} method tag | ||
| 234 | This CLOS method tag is non-functional. | ||
| 235 | |||
| 236 | @item :default-initargs in @code{defclass} | ||
| 227 | Each slot has an @code{:initarg} tag, so this is not really necessary. | 237 | Each slot has an @code{:initarg} tag, so this is not really necessary. |
| 228 | @end table | ||
| 229 | 238 | ||
| 230 | @item Mock object initializers | 239 | @item Mock object initializers |
| 231 | Each class contains a mock object used for fast initialization of | 240 | Each class contains a mock object used for fast initialization of |
| @@ -233,15 +242,23 @@ instantiated objects. Using functions with side effects on object slot | |||
| 233 | values can potentially cause modifications in the mock object. @eieio{} | 242 | values can potentially cause modifications in the mock object. @eieio{} |
| 234 | should use a deep copy but currently does not. | 243 | should use a deep copy but currently does not. |
| 235 | 244 | ||
| 236 | @item @code{:around} method tag | ||
| 237 | This CLOS method tag is non-functional. | ||
| 238 | |||
| 239 | @end table | 245 | @end table |
| 240 | 246 | ||
| 241 | @node Building Classes | 247 | @node Building Classes |
| 242 | @comment node-name, next, previous, up | 248 | @comment node-name, next, previous, up |
| 243 | @chapter Building Classes | 249 | @chapter Building Classes |
| 244 | 250 | ||
| 251 | First off, please note that this manual cannot serve as a complete | ||
| 252 | introduction to object oriented programming and generic functions in | ||
| 253 | LISP. Although EIEIO is not a complete CLOS implementation and also | ||
| 254 | differs from CLOS in several aspects, it follows the same basic | ||
| 255 | concepts. Therefore, it is highly recommended to learn these from a | ||
| 256 | textbook or tutorial first, especially if you only know OOP from | ||
| 257 | languages like C++ or Java. If on the other hand you are already | ||
| 258 | familiar with CLOS, you should be aware that @eieio{} does not implement | ||
| 259 | the full CLOS specificiation and also differs in some other aspects | ||
| 260 | (@xref{Introduction}, and @ref{CLOS compatibility}). | ||
| 261 | |||
| 245 | A @dfn{class} is a definition for organizing data and methods | 262 | A @dfn{class} is a definition for organizing data and methods |
| 246 | together. An @eieio{} class has structures similar to the classes | 263 | together. An @eieio{} class has structures similar to the classes |
| 247 | found in other object-oriented (OO) languages. | 264 | found in other object-oriented (OO) languages. |
| @@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are: | |||
| 1930 | 1947 | ||
| 1931 | @enumerate | 1948 | @enumerate |
| 1932 | @item | 1949 | @item |
| 1950 | Support for metaclasses and EQL specialization. | ||
| 1951 | @item | ||
| 1933 | @code{:around} method key. | 1952 | @code{:around} method key. |
| 1934 | |||
| 1935 | @item | 1953 | @item |
| 1936 | Method dispatch for built-in types. | 1954 | Method dispatch for built-in types. |
| 1937 | @item | 1955 | @item |
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 33686fd79fd..abf0766ee8f 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi | |||
| @@ -234,9 +234,8 @@ forwards. | |||
| 234 | 234 | ||
| 235 | Different channels and servers may have different language encodings. | 235 | Different channels and servers may have different language encodings. |
| 236 | 236 | ||
| 237 | In addition, it is possible to translate the messages that ERC uses | 237 | multiple languages. Please contact the Emacs developers |
| 238 | into multiple languages. Please contact the developers of Emacs at | 238 | if you are interested in helping with the |
| 239 | @email{emacs-devel@@gnu.org} if you are interested in helping with the | ||
| 240 | translation effort. | 239 | translation effort. |
| 241 | 240 | ||
| 242 | @item user scripting | 241 | @item user scripting |
| @@ -784,9 +783,9 @@ To report a bug in ERC, use @kbd{M-x report-emacs-bug}. | |||
| 784 | @chapter History | 783 | @chapter History |
| 785 | @cindex history, of ERC | 784 | @cindex history, of ERC |
| 786 | 785 | ||
| 787 | ERC was originally written by Alexander L. Belikoff | 786 | @c abel@@bfr.co.il, sergey.berezin@@cs.cmu.edu |
| 788 | @email{abel@@bfr.co.il} and Sergey Berezin | 787 | ERC was originally written by Alexander L. Belikoff and Sergey Berezin. |
| 789 | @email{sergey.berezin@@cs.cmu.edu}. They stopped development around | 788 | They stopped development around |
| 790 | December 1999. Their last released version was ERC 2.0. | 789 | December 1999. Their last released version was ERC 2.0. |
| 791 | 790 | ||
| 792 | P.S.: If one of the original developers of ERC reads this, we'd like to | 791 | P.S.: If one of the original developers of ERC reads this, we'd like to |
| @@ -796,8 +795,9 @@ general. | |||
| 796 | @itemize | 795 | @itemize |
| 797 | @item 2001 | 796 | @item 2001 |
| 798 | 797 | ||
| 799 | In June 2001, Mario Lang @email{mlang@@delysid.org} and Alex Schroeder | 798 | @c mlang@@delysid.org, alex@@gnu.org |
| 800 | @email{alex@@gnu.org} took over development and created a ERC Project at | 799 | In June 2001, Mario Lang and Alex Schroeder |
| 800 | took over development and created a ERC Project at | ||
| 801 | @uref{http://sourceforge.net/projects/erc}. | 801 | @uref{http://sourceforge.net/projects/erc}. |
| 802 | 802 | ||
| 803 | In reaction to a mail about the new ERC development effort, Sergey | 803 | In reaction to a mail about the new ERC development effort, Sergey |
| @@ -825,7 +825,8 @@ ERC 4.0 was released. | |||
| 825 | 825 | ||
| 826 | @item 2005 | 826 | @item 2005 |
| 827 | 827 | ||
| 828 | ERC 5.0 was released. Michael Olson @email{mwolson@@gnu.org} became | 828 | @c mwolson@@gnu.org |
| 829 | ERC 5.0 was released. Michael Olson became | ||
| 829 | the release manager and eventually the maintainer. | 830 | the release manager and eventually the maintainer. |
| 830 | 831 | ||
| 831 | After some discussion between him and the Emacs developers, it was | 832 | After some discussion between him and the Emacs developers, it was |
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index bd0ac0828cc..4604b262e72 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi | |||
| @@ -819,16 +819,18 @@ Eshell module.} You also need to load the following as shown: | |||
| 819 | @cindex known bugs | 819 | @cindex known bugs |
| 820 | @cindex bugs, known | 820 | @cindex bugs, known |
| 821 | 821 | ||
| 822 | If you find a bug or misfeature, don't hesitate to let me know! Send | 822 | If you find a bug or misfeature, don't hesitate to report it, by |
| 823 | email to @email{johnw@@gnu.org}. Feature requests should also be sent | 823 | using @kbd{M-x report-emacs-bug}. The same applies to feature requests. |
| 824 | there. I prefer discussing one thing at a time. If you find several | 824 | It is best to discuss one thing at a time. If you find several |
| 825 | unrelated bugs, please report them separately. | 825 | unrelated bugs, please report them separately. |
| 826 | 826 | ||
| 827 | @ignore | ||
| 827 | If you have ideas for improvements, or if you have written some | 828 | If you have ideas for improvements, or if you have written some |
| 828 | extensions to this package, I would like to hear from you. I hope you | 829 | extensions to this package, I would like to hear from you. I hope you |
| 829 | find this package useful! | 830 | find this package useful! |
| 831 | @end ignore | ||
| 830 | 832 | ||
| 831 | Below is a complete list of known problems with Eshell version 2.4.2, | 833 | Below is a list of some known problems with Eshell version 2.4.2, |
| 832 | which is the version included with Emacs 22. | 834 | which is the version included with Emacs 22. |
| 833 | 835 | ||
| 834 | @table @asis | 836 | @table @asis |
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi index 18e3340a474..1354f68cc9f 100644 --- a/doc/misc/faq.texi +++ b/doc/misc/faq.texi | |||
| @@ -444,9 +444,9 @@ mail-to-news gateway). | |||
| 444 | 444 | ||
| 445 | The correct way to report Emacs bugs is to use the command | 445 | The correct way to report Emacs bugs is to use the command |
| 446 | @kbd{M-x report-emacs-bug}. It sets up a mail buffer with the | 446 | @kbd{M-x report-emacs-bug}. It sets up a mail buffer with the |
| 447 | essential information and the correct e-mail address, which is | 447 | essential information and the correct e-mail address, |
| 448 | @email{bug-gnu-emacs@@gnu.org} for the released versions of Emacs. | 448 | @email{bug-gnu-emacs@@gnu.org}. |
| 449 | Anything sent to @email{bug-gnu-emacs@@gnu.org} also appears in the | 449 | Anything sent there also appears in the |
| 450 | newsgroup @uref{news:gnu.emacs.bug}, but please use e-mail instead of | 450 | newsgroup @uref{news:gnu.emacs.bug}, but please use e-mail instead of |
| 451 | news to submit the bug report. This ensures a reliable return address | 451 | news to submit the bug report. This ensures a reliable return address |
| 452 | so you can be contacted for further details. | 452 | so you can be contacted for further details. |
| @@ -459,13 +459,17 @@ report (@pxref{Bugs, , Reporting Bugs, emacs, The GNU Emacs Manual}). | |||
| 459 | RMS says: | 459 | RMS says: |
| 460 | 460 | ||
| 461 | @quotation | 461 | @quotation |
| 462 | Sending bug reports to @email{help-gnu-emacs@@gnu.org} (which has the | 462 | Sending bug reports to |
| 463 | effect of posting on @uref{news:gnu.emacs.help}) is undesirable because | 463 | @url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs, |
| 464 | it takes the time of an unnecessarily large group of people, most of | 464 | the help-gnu-emacs mailing list} |
| 465 | whom are just users and have no idea how to fix these problem. | 465 | (which has the effect of posting on @uref{news:gnu.emacs.help}) is |
| 466 | @email{bug-gnu-emacs@@gnu.org} reaches a much smaller group of people | 466 | undesirable because it takes the time of an unnecessarily large group |
| 467 | who are more likely to know what to do and have expressed a wish to | 467 | of people, most of whom are just users and have no idea how to fix |
| 468 | receive more messages about Emacs than the others. | 468 | these problem. |
| 469 | @url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs, The | ||
| 470 | bug-gnu-emacs list} reaches a much smaller group of people who are | ||
| 471 | more likely to know what to do and have expressed a wish to receive | ||
| 472 | more messages about Emacs than the others. | ||
| 469 | @end quotation | 473 | @end quotation |
| 470 | 474 | ||
| 471 | RMS says it is sometimes fine to post to @uref{news:gnu.emacs.help}: | 475 | RMS says it is sometimes fine to post to @uref{news:gnu.emacs.help}: |
| @@ -960,7 +964,8 @@ by RMS for the editor TECO (Text Editor and COrrector, originally Tape | |||
| 960 | Editor and COrrector) under ITS (the Incompatible Timesharing System) on | 964 | Editor and COrrector) under ITS (the Incompatible Timesharing System) on |
| 961 | a PDP-10. RMS had already extended TECO with a ``real-time'' | 965 | a PDP-10. RMS had already extended TECO with a ``real-time'' |
| 962 | full-screen mode with reprogrammable keys. Emacs was started by | 966 | full-screen mode with reprogrammable keys. Emacs was started by |
| 963 | @email{gls@@east.sun.com, Guy Steele} as a project to unify the many | 967 | @c gls@@east.sun.com |
| 968 | Guy Steele as a project to unify the many | ||
| 964 | divergent TECO command sets and key bindings at MIT, and completed by | 969 | divergent TECO command sets and key bindings at MIT, and completed by |
| 965 | RMS. | 970 | RMS. |
| 966 | 971 | ||
| @@ -1340,7 +1345,9 @@ of files from Macintosh, Microsoft, and Unix platforms. | |||
| 1340 | 1345 | ||
| 1341 | In general, new Emacs users should not be provided with @file{.emacs} | 1346 | In general, new Emacs users should not be provided with @file{.emacs} |
| 1342 | files, because this can cause confusing non-standard behavior. Then | 1347 | files, because this can cause confusing non-standard behavior. Then |
| 1343 | they send questions to @email{help-gnu-emacs@@gnu.org} asking why Emacs | 1348 | they send questions to |
| 1349 | @url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs, | ||
| 1350 | the help-gnu-emacs mailing list} asking why Emacs | ||
| 1344 | isn't behaving as documented. | 1351 | isn't behaving as documented. |
| 1345 | 1352 | ||
| 1346 | Emacs includes the Customize facility (@pxref{Using Customize}). This | 1353 | Emacs includes the Customize facility (@pxref{Using Customize}). This |
| @@ -1805,7 +1812,8 @@ requested by @code{emacsclient}, Emacs will switch to it; otherwise | |||
| 1805 | 1812 | ||
| 1806 | @cindex @code{gnuserv} | 1813 | @cindex @code{gnuserv} |
| 1807 | There is an alternative version of @samp{emacsclient} called | 1814 | There is an alternative version of @samp{emacsclient} called |
| 1808 | @samp{gnuserv}, written by @email{ange@@hplb.hpl.hp.com, Andy Norman} | 1815 | @c ange@@hplb.hpl.hp.com |
| 1816 | @samp{gnuserv}, written by Andy Norman | ||
| 1809 | (@pxref{Packages that do not come with Emacs}). @samp{gnuserv} uses | 1817 | (@pxref{Packages that do not come with Emacs}). @samp{gnuserv} uses |
| 1810 | Internet domain sockets, so it can work across most network connections. | 1818 | Internet domain sockets, so it can work across most network connections. |
| 1811 | 1819 | ||
| @@ -1973,7 +1981,8 @@ On some systems, @key{Insert} toggles @code{overwrite-mode} on and off. | |||
| 1973 | @cindex Visible bell | 1981 | @cindex Visible bell |
| 1974 | @cindex Bell, visible | 1982 | @cindex Bell, visible |
| 1975 | 1983 | ||
| 1976 | @email{martin@@cc.gatech.edu, Martin R. Frank} writes: | 1984 | @c martin@@cc.gatech.edu |
| 1985 | Martin R. Frank writes: | ||
| 1977 | 1986 | ||
| 1978 | Tell Emacs to use the @dfn{visible bell} instead of the audible bell, | 1987 | Tell Emacs to use the @dfn{visible bell} instead of the audible bell, |
| 1979 | and set the visible bell to nothing. | 1988 | and set the visible bell to nothing. |
| @@ -3304,7 +3313,7 @@ to get more details about the features that it offers, and then if you | |||
| 3304 | wish, Emacs can download and automatically install it for you. | 3313 | wish, Emacs can download and automatically install it for you. |
| 3305 | 3314 | ||
| 3306 | @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs Lisp | 3315 | @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs Lisp |
| 3307 | List (ELL)}, maintained by @email{S.J.Eglen@@damtp.cam.ac.uk, Stephen Eglen}, | 3316 | List (ELL)}, maintained by Stephen Eglen, |
| 3308 | aims to provide one compact list with links to all of the current Emacs | 3317 | aims to provide one compact list with links to all of the current Emacs |
| 3309 | Lisp files on the Internet. The ELL can be browsed over the web, or | 3318 | Lisp files on the Internet. The ELL can be browsed over the web, or |
| 3310 | from Emacs with @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.el, | 3319 | from Emacs with @uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.el, |
| @@ -4313,7 +4322,8 @@ these systems, you should configure @code{movemail} to use @code{flock}. | |||
| 4313 | @cindex Sender, replying only to | 4322 | @cindex Sender, replying only to |
| 4314 | @cindex Rmail, replying to the sender of a message in | 4323 | @cindex Rmail, replying to the sender of a message in |
| 4315 | 4324 | ||
| 4316 | @email{isaacson@@seas.upenn.edu, Ron Isaacson} says: When you hit | 4325 | @c isaacson@@seas.upenn.edu |
| 4326 | Ron Isaacson says: When you hit | ||
| 4317 | @key{r} to reply in Rmail, by default it CCs all of the original | 4327 | @key{r} to reply in Rmail, by default it CCs all of the original |
| 4318 | recipients (everyone on the original @samp{To} and @samp{CC} | 4328 | recipients (everyone on the original @samp{To} and @samp{CC} |
| 4319 | lists). With a prefix argument (i.e., typing @kbd{C-u} before @key{r}), | 4329 | lists). With a prefix argument (i.e., typing @kbd{C-u} before @key{r}), |
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index be0425a679b..5f9e0b9db28 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi | |||
| @@ -7394,6 +7394,11 @@ say something like: | |||
| 7394 | gnus-thread-sort-by-score)) | 7394 | gnus-thread-sort-by-score)) |
| 7395 | @end lisp | 7395 | @end lisp |
| 7396 | 7396 | ||
| 7397 | By default, threads are sorted recursively, that is, first the roots, | ||
| 7398 | then all subthreads, and so on. If you feel more like sorting only | ||
| 7399 | the roots, so that inside a thread the original chronological order is | ||
| 7400 | retained, you can set @code{gnus-sort-threads-recursively} to nil. | ||
| 7401 | |||
| 7397 | @vindex gnus-thread-score-function | 7402 | @vindex gnus-thread-score-function |
| 7398 | The function in the @code{gnus-thread-score-function} variable (default | 7403 | The function in the @code{gnus-thread-score-function} variable (default |
| 7399 | @code{+}) is used for calculating the total score of a thread. Useful | 7404 | @code{+}) is used for calculating the total score of a thread. Useful |
diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi index e61a90463c5..dbc35b09bb8 100644 --- a/doc/misc/ido.texi +++ b/doc/misc/ido.texi | |||
| @@ -273,7 +273,7 @@ To go to the root directory (on the current drive), enter two slashes. | |||
| 273 | On MS-DOS or Windows, to select the root of another drive, enter | 273 | On MS-DOS or Windows, to select the root of another drive, enter |
| 274 | @samp{X:/} where @samp{X} is the drive letter. To go to the home | 274 | @samp{X:/} where @samp{X} is the drive letter. To go to the home |
| 275 | directory, enter @samp{~/}. To enter Dired for this directory, use | 275 | directory, enter @samp{~/}. To enter Dired for this directory, use |
| 276 | @kbd{C-d}. | 276 | @kbd{C-d}. |
| 277 | 277 | ||
| 278 | @c TODO: a new node for ftp hosts | 278 | @c TODO: a new node for ftp hosts |
| 279 | @cindex ftp hosts | 279 | @cindex ftp hosts |
| @@ -587,14 +587,14 @@ if you type a dot as first char (even if @code{ido-enable-prefix} is | |||
| 587 | @c @defvr {User Option} ido-rotate-file-list-default | 587 | @c @defvr {User Option} ido-rotate-file-list-default |
| 588 | @c @defvr {User Option} ido-enter-matching-directory | 588 | @c @defvr {User Option} ido-enter-matching-directory |
| 589 | @c @defvr {User Option} ido-create-new-buffer | 589 | @c @defvr {User Option} ido-create-new-buffer |
| 590 | @c @defvr {User Option} ido-setup-hook | 590 | @c @defvr {User Option} ido-setup-hook |
| 591 | @c @defvr {User Option} ido-separator | 591 | @c @defvr {User Option} ido-separator |
| 592 | @c @defvr {User Option} ido-decorations | 592 | @c @defvr {User Option} ido-decorations |
| 593 | @c @defvr {User Option} ido-use-virtual-buffers | 593 | @c @defvr {User Option} ido-use-virtual-buffers |
| 594 | @c @defvr {User Option} ido-use-faces | 594 | @c @defvr {User Option} ido-use-faces |
| 595 | @c @defvr {User Option} ido-make-file-list-hook | 595 | @c @defvr {User Option} ido-make-file-list-hook |
| 596 | @c @defvr {User Option} ido-make-dir-list-hook | 596 | @c @defvr {User Option} ido-make-dir-list-hook |
| 597 | @c @defvr {User Option} ido-make-buffer-list-hook | 597 | @c @defvr {User Option} ido-make-buffer-list-hook |
| 598 | @c @defvr {User Option} ido-rewrite-file-prompt-functions | 598 | @c @defvr {User Option} ido-rewrite-file-prompt-functions |
| 599 | @c @defvr {User Option} ido-completion-buffer | 599 | @c @defvr {User Option} ido-completion-buffer |
| 600 | @c @defvr {User Option} ido-completion-buffer-all-completions | 600 | @c @defvr {User Option} ido-completion-buffer-all-completions |
| @@ -689,7 +689,7 @@ If you don't want to rely on the @code{ido-everywhere} functionality, | |||
| 689 | @code{ido-read-directory-name} can be used by other packages to read a | 689 | @code{ido-read-directory-name} can be used by other packages to read a |
| 690 | buffer name, a file name, or a directory name in the @emph{Ido} way. | 690 | buffer name, a file name, or a directory name in the @emph{Ido} way. |
| 691 | 691 | ||
| 692 | @c @node Cheetsheet | 692 | @c @node Cheatsheet |
| 693 | 693 | ||
| 694 | @c * History and Acknowledgments:: How Ido came into being | 694 | @c * History and Acknowledgments:: How Ido came into being |
| 695 | @c @node History and Acknowledgments | 695 | @c @node History and Acknowledgments |
diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi index 7c294591d0e..1276eb95aa8 100644 --- a/doc/misc/pcl-cvs.texi +++ b/doc/misc/pcl-cvs.texi | |||
| @@ -172,17 +172,20 @@ Per Cederqvist wrote most of the otherwise unattributed functions in | |||
| 172 | PCL-CVS as well as all the documentation. | 172 | PCL-CVS as well as all the documentation. |
| 173 | 173 | ||
| 174 | @item | 174 | @item |
| 175 | @email{inge@@lysator.liu.se, Inge Wallin} wrote the skeleton of | 175 | @c inge@@lysator.liu.se |
| 176 | Inge Wallin wrote the skeleton of | ||
| 176 | @file{pcl-cvs.texi}, and gave useful comments on it. He also wrote | 177 | @file{pcl-cvs.texi}, and gave useful comments on it. He also wrote |
| 177 | the files @file{elib-node.el} and @file{compile-all.el}. The file | 178 | the files @file{elib-node.el} and @file{compile-all.el}. The file |
| 178 | @file{cookie.el} was inspired by Inge.@refill | 179 | @file{cookie.el} was inspired by Inge.@refill |
| 179 | 180 | ||
| 180 | @item | 181 | @item |
| 181 | @email{linus@@lysator.liu.se, Linus Tolke} contributed useful comments | 182 | @c linus@@lysator.liu.se |
| 183 | Linus Tolke contributed useful comments | ||
| 182 | on both the functionality and the documentation.@refill | 184 | on both the functionality and the documentation.@refill |
| 183 | 185 | ||
| 184 | @item | 186 | @item |
| 185 | @email{jwz@@jwz.com, Jamie Zawinski} contributed | 187 | @c jwz@@jwz.com |
| 188 | Jamie Zawinski contributed | ||
| 186 | @file{pcl-cvs-lucid.el}, which was later renamed to | 189 | @file{pcl-cvs-lucid.el}, which was later renamed to |
| 187 | @file{pcl-cvs-xemacs.el}.@refill | 190 | @file{pcl-cvs-xemacs.el}.@refill |
| 188 | 191 | ||
| @@ -191,34 +194,40 @@ Leif Lonnblad contributed RCVS support (since superseded by the new | |||
| 191 | remote CVS support). | 194 | remote CVS support). |
| 192 | 195 | ||
| 193 | @item | 196 | @item |
| 194 | @email{jimb@@cyclic.com, Jim Blandy} contributed hooks to automatically | 197 | @c jimb@@cyclic.com |
| 198 | Jim Blandy contributed hooks to automatically | ||
| 195 | guess CVS log entries from @file{ChangeLog} contents, and initial support of | 199 | guess CVS log entries from @file{ChangeLog} contents, and initial support of |
| 196 | the new Cygnus / Cyclic remote CVS, as well as various sundry bug fixes | 200 | the new Cygnus / Cyclic remote CVS, as well as various sundry bug fixes |
| 197 | and cleanups. | 201 | and cleanups. |
| 198 | 202 | ||
| 199 | @item | 203 | @item |
| 200 | @email{kingdon@@cyclic.com, Jim Kingdon} contributed lots of fixes to | 204 | @c kingdon@@cyclic.com |
| 205 | Jim Kingdon contributed lots of fixes to | ||
| 201 | the build and installation procedure. | 206 | the build and installation procedure. |
| 202 | 207 | ||
| 203 | @item | 208 | @item |
| 204 | @email{woods@@weird.com, Greg A. Woods} contributed code to implement | 209 | @c woods@@weird.com |
| 210 | Greg A. Woods contributed code to implement | ||
| 205 | the use of per-file diff buffers, and vendor join diffs with emerge and | 211 | the use of per-file diff buffers, and vendor join diffs with emerge and |
| 206 | ediff, as well as various and sundry bug fixes and cleanups. | 212 | ediff, as well as various and sundry bug fixes and cleanups. |
| 207 | 213 | ||
| 208 | @item | 214 | @item |
| 209 | @email{greg.klanderman@@alum.mit.edu, Greg Klanderman} implemented | 215 | @c greg.klanderman@@alum.mit.edu |
| 216 | Greg Klanderman implemented | ||
| 210 | toggling of marked files, setting of CVS command flags via prefix | 217 | toggling of marked files, setting of CVS command flags via prefix |
| 211 | arguments, updated the XEmacs support, updated the manual, and fixed | 218 | arguments, updated the XEmacs support, updated the manual, and fixed |
| 212 | numerous bugs. | 219 | numerous bugs. |
| 213 | 220 | ||
| 214 | @item | 221 | @item |
| 215 | @email{monnier@@gnu.org, Stefan Monnier} added a slew of other | 222 | @c monnier@@gnu.org |
| 223 | Stefan Monnier added a slew of other | ||
| 216 | features and introduced even more new bugs. If there's any bug left, | 224 | features and introduced even more new bugs. If there's any bug left, |
| 217 | you can be sure it's his. | 225 | you can be sure it's his. |
| 218 | 226 | ||
| 219 | @item | 227 | @item |
| 220 | @c wordy to avoid an underfull hbox | 228 | @c wordy to avoid an underfull hbox |
| 221 | @email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} made a gracious | 229 | @c masata-y@@is.aist-nara.ac.jp |
| 230 | Masatake YAMATO made a gracious | ||
| 222 | contribution of his cvstree code to display a tree of tags which was later | 231 | contribution of his cvstree code to display a tree of tags which was later |
| 223 | superseded by the new @code{cvs-status-mode}. | 232 | superseded by the new @code{cvs-status-mode}. |
| 224 | @end itemize | 233 | @end itemize |
| @@ -1369,18 +1378,19 @@ Used to highlight CVS messages. | |||
| 1369 | @cindex FAQ | 1378 | @cindex FAQ |
| 1370 | @cindex Problems, list of common | 1379 | @cindex Problems, list of common |
| 1371 | 1380 | ||
| 1372 | If you find a bug or misfeature, don't hesitate to tell us! Send email | 1381 | If you find a bug or misfeature, don't hesitate to tell us! |
| 1373 | to @email{bug-gnu-emacs@@gnu.org} which is gatewayed to the newsgroup | 1382 | Use @kbd{M-x report-emacs-bug} to send us a report. |
| 1374 | @samp{gnu.emacs.bugs}. Feature requests should also be sent there. We | 1383 | You can follow the same process for feature requests. |
| 1375 | prefer discussing one thing at a time. If you find several unrelated | 1384 | We prefer discussing one thing at a time. If you find several unrelated |
| 1376 | bugs, please report them separately. If you are running PCL-CVS under | 1385 | bugs, please report them separately. If you are running PCL-CVS under |
| 1377 | XEmacs, you should also send a copy of bug reports to | 1386 | XEmacs, you should also send a copy of bug reports to |
| 1378 | @email{xemacs-beta@@xemacs.org}. | 1387 | the @url{http://lists.xemacs.org/mailman/listinfo/xemacs-beta, |
| 1388 | XEmacs mailing list}. | ||
| 1379 | 1389 | ||
| 1380 | If you have problems using PCL-CVS or other questions, send them to | 1390 | If you have problems using PCL-CVS or other questions, send them to |
| 1381 | @email{help-gnu-emacs@@gnu.org}, which is gatewayed to the | 1391 | the @url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs, |
| 1382 | @samp{gnu.emacs.help} newsgroup. This is a good place to get help, as | 1392 | help-gnu-emacs mailing list}. This is a good place to get help, as is |
| 1383 | is @email{cvs-info@@gnu.org}, gatewayed to @samp{gnu.cvs.help}. | 1393 | the @url{http://lists.nongnu.org/mailman/listinfo/info-cvs, info-cvs list}. |
| 1384 | 1394 | ||
| 1385 | If you have ideas for improvements, or if you have written some | 1395 | If you have ideas for improvements, or if you have written some |
| 1386 | extensions to this package, we would like to hear from you. We hope that | 1396 | extensions to this package, we would like to hear from you. We hope that |
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index 312b84146fa..b9cf2335647 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi | |||
| @@ -3639,8 +3639,8 @@ With @i{Viper} mode prior to Vipers version 3.01, you need to protect | |||
| 3639 | @cindex @code{http}, @RefTeX{} home page | 3639 | @cindex @code{http}, @RefTeX{} home page |
| 3640 | @cindex @code{ftp}, @RefTeX{} site | 3640 | @cindex @code{ftp}, @RefTeX{} site |
| 3641 | 3641 | ||
| 3642 | @RefTeX{} was written by @i{Carsten Dominik} | 3642 | @c dominik@@science.uva.nl |
| 3643 | @email{dominik@@science.uva.nl}, with contributions by @i{Stephen | 3643 | @RefTeX{} was written by @i{Carsten Dominik}, with contributions by @i{Stephen |
| 3644 | Eglen}. @RefTeX{} is currently maintained by @value{MAINTAINER}, see | 3644 | Eglen}. @RefTeX{} is currently maintained by @value{MAINTAINER}, see |
| 3645 | the @value{MAINTAINERSITE} for detailed information. | 3645 | the @value{MAINTAINERSITE} for detailed information. |
| 3646 | 3646 | ||
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi index 2c84d04c666..a44d790781d 100644 --- a/doc/misc/ses.texi +++ b/doc/misc/ses.texi | |||
| @@ -60,7 +60,7 @@ by formulas that can refer to the values of other cells. | |||
| 60 | @end display | 60 | @end display |
| 61 | @end ifnottex | 61 | @end ifnottex |
| 62 | 62 | ||
| 63 | To report bugs, send email to @email{jyavner@@member.fsf.org}. | 63 | To report bugs, use @kbd{M-x report-emacs-bug}. |
| 64 | 64 | ||
| 65 | @insertcopying | 65 | @insertcopying |
| 66 | 66 | ||
| @@ -997,39 +997,62 @@ cell. | |||
| 997 | 997 | ||
| 998 | Coding by: | 998 | Coding by: |
| 999 | @quotation | 999 | @quotation |
| 1000 | Jonathan Yavner @email{jyavner@@member.fsf.org}@* | 1000 | @c jyavner@@member.fsf.org |
| 1001 | Stefan Monnier @email{monnier@@gnu.org}@* | 1001 | Jonathan Yavner, |
| 1002 | Shigeru Fukaya @email{shigeru.fukaya@@gmail.com} | 1002 | @c monnier@@gnu.org |
| 1003 | Stefan Monnier, | ||
| 1004 | @c shigeru.fukaya@@gmail.com | ||
| 1005 | Shigeru Fukaya | ||
| 1003 | @end quotation | 1006 | @end quotation |
| 1004 | 1007 | ||
| 1005 | @noindent | 1008 | @noindent |
| 1006 | Texinfo manual by: | 1009 | Texinfo manual by: |
| 1007 | @quotation | 1010 | @quotation |
| 1008 | Jonathan Yavner @email{jyavner@@member.fsf.org}@* | 1011 | @c jyavner@@member.fsf.org |
| 1009 | Brad Collins <brad@@chenla.org> | 1012 | Jonathan Yavner, |
| 1013 | @c brad@@chenla.org | ||
| 1014 | Brad Collins | ||
| 1010 | @end quotation | 1015 | @end quotation |
| 1011 | 1016 | ||
| 1012 | @noindent | 1017 | @noindent |
| 1013 | Ideas from: | 1018 | Ideas from: |
| 1014 | @quotation | 1019 | @quotation |
| 1015 | Christoph Conrad @email{christoph.conrad@@gmx.de}@* | 1020 | @c christoph.conrad@@gmx.de |
| 1016 | CyberBob @email{cyberbob@@redneck.gacracker.org}@* | 1021 | Christoph Conrad, |
| 1017 | Syver Enstad @email{syver-en@@online.no}@* | 1022 | @c cyberbob@@redneck.gacracker.org |
| 1018 | Ami Fischman @email{fischman@@zion.bpnetworks.com}@* | 1023 | CyberBob, |
| 1019 | Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@* | 1024 | @c syver-en@@online.no |
| 1020 | Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@* | 1025 | Syver Enstad, |
| 1021 | Yusong Li @email{lyusong@@hotmail.com}@* | 1026 | @c fischman@@zion.bpnetworks.com |
| 1022 | Juri Linkov @email{juri@@jurta.org}@* | 1027 | Ami Fischman, |
| 1023 | Harald Maier @email{maierh@@myself.com}@* | 1028 | @c Thomas.Gehrlein@@t-online.de |
| 1024 | Alan Nash @email{anash@@san.rr.com}@* | 1029 | Thomas Gehrlein, |
| 1025 | François Pinard @email{pinard@@iro.umontreal.ca}@* | 1030 | @c c.f.a.johnson@@rogers.com |
| 1026 | Pedro Pinto @email{ppinto@@cs.cmu.edu}@* | 1031 | Chris F.A. Johnson, |
| 1027 | Stefan Reichör @email{xsteve@@riic.at}@* | 1032 | @c lyusong@@hotmail.com |
| 1028 | Oliver Scholz @email{epameinondas@@gmx.de}@* | 1033 | Yusong Li, |
| 1029 | Richard M. Stallman @email{rms@@gnu.org}@* | 1034 | @c juri@@jurta.org |
| 1030 | Luc Teirlinck @email{teirllm@@dms.auburn.edu}@* | 1035 | Juri Linkov, |
| 1031 | J. Otto Tennant @email{jotto@@pobox.com}@* | 1036 | @c maierh@@myself.com |
| 1032 | Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr} | 1037 | Harald Maier, |
| 1038 | @c anash@@san.rr.com | ||
| 1039 | Alan Nash, | ||
| 1040 | @c pinard@@iro.umontreal.ca | ||
| 1041 | François Pinard, | ||
| 1042 | @c ppinto@@cs.cmu.edu | ||
| 1043 | Pedro Pinto, | ||
| 1044 | @c xsteve@@riic.at | ||
| 1045 | Stefan Reichör, | ||
| 1046 | @c epameinondas@@gmx.de | ||
| 1047 | Oliver Scholz, | ||
| 1048 | @c rms@@gnu.org | ||
| 1049 | Richard M. Stallman, | ||
| 1050 | @c teirllm@@dms.auburn.edu | ||
| 1051 | Luc Teirlinck, | ||
| 1052 | @c jotto@@pobox.com | ||
| 1053 | J. Otto Tennant, | ||
| 1054 | @c jphil@@acs.pagesjaunes.fr | ||
| 1055 | Jean-Philippe Theberge | ||
| 1033 | @end quotation | 1056 | @end quotation |
| 1034 | 1057 | ||
| 1035 | @c =================================================================== | 1058 | @c =================================================================== |
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 1121a450ebd..03c6da3b73f 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi | |||
| @@ -3186,13 +3186,13 @@ for example: | |||
| 3186 | @end lisp | 3186 | @end lisp |
| 3187 | 3187 | ||
| 3188 | Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and | 3188 | Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and |
| 3189 | "%%p", respectively. The entries of @code{ControlPath}, | 3189 | "%%p", respectively. |
| 3190 | @code{ControlMaster} and @code{ControlPersist} can be removed from | 3190 | |
| 3191 | this setting, if they are configured properly in your | 3191 | These settings can be suppressed, if they are configured properly in |
| 3192 | @file{~/.ssh/config}: | 3192 | your @file{~/.ssh/config}: |
| 3193 | 3193 | ||
| 3194 | @lisp | 3194 | @lisp |
| 3195 | (setq tramp-ssh-controlmaster-options "") | 3195 | (setq tramp-use-ssh-controlmaster-options nil) |
| 3196 | @end lisp | 3196 | @end lisp |
| 3197 | 3197 | ||
| 3198 | 3198 | ||
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi index 9b9f9947da5..44a8b5573fa 100644 --- a/doc/misc/woman.texi +++ b/doc/misc/woman.texi | |||
| @@ -105,10 +105,7 @@ version of Emacs. It was developed primarily on various versions of | |||
| 105 | Microsoft Windows, but has also been tested on MS-DOS, and various | 105 | Microsoft Windows, but has also been tested on MS-DOS, and various |
| 106 | versions of UNIX and GNU/Linux. | 106 | versions of UNIX and GNU/Linux. |
| 107 | 107 | ||
| 108 | WoMan is distributed with GNU Emacs. In addition, the current source | 108 | WoMan is distributed with GNU Emacs. |
| 109 | code and documentation files are available from | ||
| 110 | @uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, the WoMan web | ||
| 111 | server}. | ||
| 112 | 109 | ||
| 113 | WoMan implements a subset of the formatting performed by the Emacs | 110 | WoMan implements a subset of the formatting performed by the Emacs |
| 114 | @code{man} (or @code{manual-entry}) command to format a Unix-style | 111 | @code{man} (or @code{manual-entry}) command to format a Unix-style |
| @@ -148,11 +145,7 @@ which begin with the prefix @code{woman-} (or occasionally | |||
| 148 | either running the command @code{woman-mini-help} or selecting the WoMan | 145 | either running the command @code{woman-mini-help} or selecting the WoMan |
| 149 | menu option @samp{Mini Help}. | 146 | menu option @samp{Mini Help}. |
| 150 | 147 | ||
| 151 | WoMan is (of course) still under development! Please | 148 | Guidance on reporting bugs is given below. @xref{Bugs, , Reporting Bugs}. |
| 152 | @email{F.J.Wright@@qmw.ac.uk, let me know} what doesn't work---I am | ||
| 153 | adding and improving functionality as testing shows that it is | ||
| 154 | necessary. Guidance on reporting bugs is given below. @xref{Bugs, , | ||
| 155 | Reporting Bugs}. | ||
| 156 | 149 | ||
| 157 | @c =================================================================== | 150 | @c =================================================================== |
| 158 | 151 | ||
| @@ -276,6 +269,7 @@ of the facilities implemented in the Emacs @code{man} library. WoMan | |||
| 276 | and man can happily co-exist, which is very useful for comparison and | 269 | and man can happily co-exist, which is very useful for comparison and |
| 277 | debugging purposes. | 270 | debugging purposes. |
| 278 | 271 | ||
| 272 | @ignore | ||
| 279 | @code{nroff} simulates non-@acronym{ASCII} characters by using one or more | 273 | @code{nroff} simulates non-@acronym{ASCII} characters by using one or more |
| 280 | @acronym{ASCII} characters. WoMan should be able to do much better than | 274 | @acronym{ASCII} characters. WoMan should be able to do much better than |
| 281 | this. I have recently begun to add support for WoMan to use more of the | 275 | this. I have recently begun to add support for WoMan to use more of the |
| @@ -284,6 +278,7 @@ aspect that I intend to develop further in the near future. It should | |||
| 284 | be possible to move WoMan from an emulation of @code{nroff} to an | 278 | be possible to move WoMan from an emulation of @code{nroff} to an |
| 285 | emulation of @code{troff} as GNU Emacs moves to providing bit-mapped | 279 | emulation of @code{troff} as GNU Emacs moves to providing bit-mapped |
| 286 | display facilities. | 280 | display facilities. |
| 281 | @end ignore | ||
| 287 | 282 | ||
| 288 | @node Finding | 283 | @node Finding |
| 289 | @chapter Finding and Formatting Man Pages | 284 | @chapter Finding and Formatting Man Pages |
| @@ -1290,8 +1285,8 @@ try the latest version of @file{woman.el} from the Emacs repository | |||
| 1290 | on @uref{http://savannah.gnu.org/projects/emacs/}. If it still fails, please | 1285 | on @uref{http://savannah.gnu.org/projects/emacs/}. If it still fails, please |
| 1291 | 1286 | ||
| 1292 | @item | 1287 | @item |
| 1293 | send a bug report to @email{bug-gnu-emacs@@gnu.org} and to | 1288 | use @kbd{M-x report-emacs-bug} to send a bug report. |
| 1294 | @email{F.J.Wright@@qmw.ac.uk}. Please include the entry from the | 1289 | Please include the entry from the |
| 1295 | @code{*WoMan-Log*} buffer relating to the problem file, together with | 1290 | @code{*WoMan-Log*} buffer relating to the problem file, together with |
| 1296 | a brief description of the problem. Please indicate where you got the | 1291 | a brief description of the problem. Please indicate where you got the |
| 1297 | man source file from, but do not send it unless asked to send it. | 1292 | man source file from, but do not send it unless asked to send it. |
| @@ -1310,43 +1305,80 @@ I also thank the following for helpful suggestions, bug reports, code | |||
| 1310 | fragments, general interest, etc.: | 1305 | fragments, general interest, etc.: |
| 1311 | 1306 | ||
| 1312 | @quotation | 1307 | @quotation |
| 1313 | Jari Aalto, @email{jari.aalto@@cs.tpu.fi}@* | 1308 | @c jari.aalto@@cs.tpu.fi |
| 1314 | Dean Andrews, @email{dean@@dra.com}@* | 1309 | Jari Aalto, |
| 1315 | Juanma Barranquero, @email{barranquero@@laley-actualidad.es}@* | 1310 | @c dean@@dra.com |
| 1316 | Karl Berry, @email{kb@@cs.umb.edu}@* | 1311 | Dean Andrews, |
| 1317 | Jim Chapman, @email{jchapman@@netcomuk.co.uk}@* | 1312 | @c barranquero@@laley-actualidad.es |
| 1318 | Frederic Corne, @email{frederic.corne@@erli.fr}@* | 1313 | Juanma Barranquero, |
| 1319 | Peter Craft, @email{craft@@alacritech.com}@* | 1314 | @c kb@@cs.umb.edu |
| 1320 | Charles Curley, @email{ccurley@@trib.com}@* | 1315 | Karl Berry, |
| 1321 | Jim Davidson, @email{jdavidso@@teknowledge.com}@* | 1316 | @c jchapman@@netcomuk.co.uk |
| 1322 | Kevin D'Elia, @email{Kevin.DElia@@mci.com}@* | 1317 | Jim Chapman, |
| 1323 | John Fitch, @email{jpff@@maths.bath.ac.uk}@* | 1318 | @c frederic.corne@@erli.fr |
| 1324 | Hans Frosch, @email{jwfrosch@@rish.b17c.ingr.com}@* | 1319 | Frederic Corne, |
| 1325 | Guy Gascoigne-Piggford, @email{ggp@@informix.com}@* | 1320 | @c craft@@alacritech.com |
| 1326 | Brian Gorka, @email{gorkab@@sanchez.com}@* | 1321 | Peter Craft, |
| 1327 | Nicolai Henriksen, @email{nhe@@lyngso-industri.dk}@* | 1322 | @c ccurley@@trib.com |
| 1328 | Thomas Herchenroeder, @email{the@@software-ag.de}@* | 1323 | Charles Curley, |
| 1329 | Alexander Hinds, @email{ahinds@@thegrid.net}@* | 1324 | @c jdavidso@@teknowledge.com |
| 1330 | Stefan Hornburg, @email{sth@@hacon.de}@* | 1325 | Jim Davidson, |
| 1331 | Theodore Jump, @email{tjump@@cais.com}@* | 1326 | @c Kevin.DElia@@mci.com |
| 1332 | Paul Kinnucan, @email{paulk@@mathworks.com}@* | 1327 | Kevin D'Elia, |
| 1333 | Jonas Linde, @email{jonas@@init.se}@* | 1328 | @c jpff@@maths.bath.ac.uk |
| 1334 | Andrew McRae, @email{andrewm@@optimation.co.nz}@* | 1329 | John Fitch, |
| 1335 | Howard Melman, @email{howard@@silverstream.com}@* | 1330 | @c jwfrosch@@rish.b17c.ingr.com |
| 1336 | Dennis Pixton, @email{dennis@@math.binghamton.edu}@* | 1331 | Hans Frosch, |
| 1337 | T. V. Raman, @email{raman@@Adobe.com}@* | 1332 | @c ggp@@informix.com |
| 1338 | Bruce Ravel, @email{bruce.ravel@@nist.gov}@* | 1333 | Guy Gascoigne-Piggford, |
| 1339 | Benjamin Riefenstahl, @email{benny@@crocodial.de}@* | 1334 | @c gorkab@@sanchez.com |
| 1340 | Kevin Ruland, @email{kruland@@seistl.com}@* | 1335 | Brian Gorka, |
| 1341 | Tom Schutter, @email{tom@@platte.com}@* | 1336 | @c nhe@@lyngso-industri.dk |
| 1342 | Wei-Xue Shi, @email{wxshi@@ma.neweb.ne.jp}@* | 1337 | Nicolai Henriksen, |
| 1343 | Fabio Somenzi, @email{fabio@@joplin.colorado.edu}@* | 1338 | @c the@@software-ag.de |
| 1344 | Karel Sprenger, @email{ks@@ic.uva.nl}@* | 1339 | Thomas Herchenroeder, |
| 1345 | Chris Szurgot, @email{szurgot@@itribe.net}@* | 1340 | @c ahinds@@thegrid.net |
| 1346 | Paul A. Thompson, @email{pat@@po.cwru.edu}@* | 1341 | Alexander Hinds, |
| 1347 | Arrigo Triulzi, @email{arrigo@@maths.qmw.ac.uk}@* | 1342 | @c sth@@hacon.de |
| 1348 | Geoff Voelker, @email{voelker@@cs.washington.edu}@* | 1343 | Stefan Hornburg, |
| 1349 | Eli Zaretskii, @email{eliz@@is.elta.co.il} | 1344 | @c tjump@@cais.com |
| 1345 | Theodore Jump, | ||
| 1346 | @c paulk@@mathworks.com | ||
| 1347 | Paul Kinnucan, | ||
| 1348 | @c jonas@@init.se | ||
| 1349 | Jonas Linde, | ||
| 1350 | @c andrewm@@optimation.co.nz | ||
| 1351 | Andrew McRae, | ||
| 1352 | @c howard@@silverstream.com | ||
| 1353 | Howard Melman, | ||
| 1354 | @c dennis@@math.binghamton.edu | ||
| 1355 | Dennis Pixton, | ||
| 1356 | @c raman@@Adobe.com | ||
| 1357 | T. V. Raman, | ||
| 1358 | @c bruce.ravel@@nist.gov | ||
| 1359 | Bruce Ravel, | ||
| 1360 | @c benny@@crocodial.de | ||
| 1361 | Benjamin Riefenstahl, | ||
| 1362 | @c kruland@@seistl.com | ||
| 1363 | Kevin Ruland, | ||
| 1364 | @c tom@@platte.com | ||
| 1365 | Tom Schutter, | ||
| 1366 | @c wxshi@@ma.neweb.ne.jp | ||
| 1367 | Wei-Xue Shi, | ||
| 1368 | @c fabio@@joplin.colorado.edu | ||
| 1369 | Fabio Somenzi, | ||
| 1370 | @c ks@@ic.uva.nl | ||
| 1371 | Karel Sprenger, | ||
| 1372 | @c szurgot@@itribe.net | ||
| 1373 | Chris Szurgot, | ||
| 1374 | @c pat@@po.cwru.edu | ||
| 1375 | Paul A. Thompson, | ||
| 1376 | @c arrigo@@maths.qmw.ac.uk | ||
| 1377 | Arrigo Triulzi, | ||
| 1378 | @c voelker@@cs.washington.edu | ||
| 1379 | Geoff Voelker, | ||
| 1380 | @c eliz@@is.elta.co.il | ||
| 1381 | Eli Zaretskii | ||
| 1350 | @end quotation | 1382 | @end quotation |
| 1351 | 1383 | ||
| 1352 | @c =================================================================== | 1384 | @c =================================================================== |
diff --git a/etc/ChangeLog b/etc/ChangeLog index d477f8e3d36..c201772cd93 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2013-07-26 Micah Anderson <micah@riseup.net> (tiny change) | ||
| 2 | |||
| 3 | * spook.lines: Additions. (Bug#14658) | ||
| 4 | |||
| 1 | 2013-07-16 Jan Djärv <jan.h.d@swipnet.se> | 5 | 2013-07-16 Jan Djärv <jan.h.d@swipnet.se> |
| 2 | 6 | ||
| 3 | * NEWS: Document blink-cursor-blinks and blink timers stopped. | 7 | * NEWS: Document blink-cursor-blinks and blink timers stopped. |
| @@ -158,6 +158,10 @@ You can pick the name of the function and the variables with `C-x 4 a'. | |||
| 158 | 158 | ||
| 159 | * Changes in Specialized Modes and Packages in Emacs 24.4 | 159 | * Changes in Specialized Modes and Packages in Emacs 24.4 |
| 160 | 160 | ||
| 161 | ** The debugger's `e' command evaluates the code in the context at point. | ||
| 162 | This includes using the lexical environment at point, which means that | ||
| 163 | `e' now lets you access lexical variables as well. | ||
| 164 | |||
| 161 | ** `eshell' now supports visual subcommands and options | 165 | ** `eshell' now supports visual subcommands and options |
| 162 | Eshell has been able to handle "visual" commands (interactive, | 166 | Eshell has been able to handle "visual" commands (interactive, |
| 163 | non-line oriented commands such as top that require display | 167 | non-line oriented commands such as top that require display |
| @@ -278,6 +282,22 @@ restoring the window/frame configuration. Additional options | |||
| 278 | If set to a number, this can be used to avoid accidentally paste large | 282 | If set to a number, this can be used to avoid accidentally paste large |
| 279 | amounts of data into the ERC input. | 283 | amounts of data into the ERC input. |
| 280 | 284 | ||
| 285 | ** EPA | ||
| 286 | |||
| 287 | *** New option `epa-mail-aliases'. | ||
| 288 | |||
| 289 | You can set this to a list of alias expansions for keys to use | ||
| 290 | in `epa-mail-encrypt'. | ||
| 291 | |||
| 292 | If one element of the variable's value is ("foo@bar.com" "foo@hello.org"), | ||
| 293 | that means: when one of the recipients of the message being encrypted | ||
| 294 | is `foo@bar.com', encrypt the message for `foo@hello.org' instead. | ||
| 295 | |||
| 296 | If one element of the variable's value is ("foo@bar.com"), | ||
| 297 | that means: when one of the recipients of the message being encrypted | ||
| 298 | is `foo@bar.com', ignore that name as regards encryption. | ||
| 299 | This is useful to avoid a query when you have no key for that name. | ||
| 300 | |||
| 281 | --- | 301 | --- |
| 282 | ** New F90 mode option `f90-smart-end-names'. | 302 | ** New F90 mode option `f90-smart-end-names'. |
| 283 | 303 | ||
diff --git a/etc/spook.lines b/etc/spook.lines index 16bc696e0f3..2a1a0ac1cb9 100644 --- a/etc/spook.lines +++ b/etc/spook.lines | |||
| Binary files differ | |||
| @@ -75,6 +75,7 @@ Emacs misc features | |||
| 75 | * Forms: (forms). Emacs package for editing data bases | 75 | * Forms: (forms). Emacs package for editing data bases |
| 76 | by filling in forms. | 76 | by filling in forms. |
| 77 | * Htmlfontify: (htmlfontify). Convert source code to html. | 77 | * Htmlfontify: (htmlfontify). Convert source code to html. |
| 78 | * Ido: (ido). Interactively do things with buffers and files. | ||
| 78 | * PCL-CVS: (pcl-cvs). Emacs front-end to CVS. | 79 | * PCL-CVS: (pcl-cvs). Emacs front-end to CVS. |
| 79 | * RefTeX: (reftex). Emacs support for LaTeX cross-references | 80 | * RefTeX: (reftex). Emacs support for LaTeX cross-references |
| 80 | and citations. | 81 | and citations. |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 29cd88a9186..f27a6fa1945 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,168 @@ | |||
| 1 | 2013-07-29 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * frame.el (frame-notice-user-settings): Avoid inflooping when the | ||
| 4 | initial frame is minibuffer-less. (Bug#14841) | ||
| 5 | |||
| 6 | 2013-07-29 Michael Albinus <michael.albinus@gmx.de> | ||
| 7 | |||
| 8 | * net/tramp.el (tramp-use-ssh-controlmaster-options): New customer | ||
| 9 | option. | ||
| 10 | |||
| 11 | * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band) | ||
| 12 | (tramp-maybe-open-connection): Use it. | ||
| 13 | |||
| 14 | 2013-07-28 Juanma Barranquero <lekktu@gmail.com> | ||
| 15 | |||
| 16 | * desktop.el (desktop--make-frame): Include `minibuffer' in the | ||
| 17 | minimal set of parameters passed when creating a frame, because | ||
| 18 | the minibuffer status of a frame cannot be changed later. | ||
| 19 | |||
| 20 | 2013-07-28 Stephen Berman <stephen.berman@gmx.net> | ||
| 21 | |||
| 22 | * calendar/todo-mode.el (todo-rename-file): Fix incorrect use of | ||
| 23 | replace-regexp-in-string and inadvertent omissions in previous change. | ||
| 24 | (todo-filter-items): Ensure only file names are comma-separated in | ||
| 25 | name of filtered items buffer. | ||
| 26 | |||
| 27 | 2013-07-28 Juanma Barranquero <lekktu@gmail.com> | ||
| 28 | |||
| 29 | * desktop.el: Optionally force offscreen frames back onscreen. | ||
| 30 | (desktop-restoring-reuses-frames): New option. | ||
| 31 | (desktop--compute-pos, desktop--move-onscreen): New functions. | ||
| 32 | (desktop--make-frame): Use desktop--move-onscreen. | ||
| 33 | |||
| 34 | 2013-07-27 Alan Mackenzie <acm@muc.de> | ||
| 35 | |||
| 36 | Fontify a Java generic method as a function. | ||
| 37 | * progmodes/cc-langs.el (c-recognize-<>-arglists): Set the Java | ||
| 38 | value to t. | ||
| 39 | |||
| 40 | 2013-07-27 Stephen Berman <stephen.berman@gmx.net> | ||
| 41 | |||
| 42 | * calendar/todo-mode.el: Add command to rename todo files. | ||
| 43 | (todo-rename-file): New command. | ||
| 44 | (todo-key-bindings-t): Add key binding for it. Change the | ||
| 45 | bindings of todo-filter-regexp-items(-multifile) to use `x' | ||
| 46 | instead of `r', since the latter is better suited to the new | ||
| 47 | renaming command. | ||
| 48 | |||
| 49 | 2013-07-27 Alan Mackenzie <acm@muc.de> | ||
| 50 | |||
| 51 | Make Java try-with-resources statement parse properly. | ||
| 52 | * progmodes/cc-langs.el (c-block-stmt-1-2-kwds) | ||
| 53 | (c-block-stmt-1-2-key): New language constants/variables. | ||
| 54 | * progmodes/cc-engine.el (c-beginning-of-statement-1) | ||
| 55 | (c-after-conditional): Adapt to deal with c-block-stmt-1-2-key. | ||
| 56 | * progmodes/cc-fonts.el (c-font-lock-declarations): Adapt to deal | ||
| 57 | with c-block-stmet-1-2-key. | ||
| 58 | |||
| 59 | 2013-07-27 Juanma Barranquero <lekktu@gmail.com> | ||
| 60 | |||
| 61 | * desktop.el (desktop--make-frame): Apply most frame parameters after | ||
| 62 | creating the frame to force (partially or totally) offscreen frames to | ||
| 63 | be restored as such. | ||
| 64 | |||
| 65 | 2013-07-26 Xue Fuqiao <xfq.free@gmail.com> | ||
| 66 | |||
| 67 | * vc/vc-dir.el (vc-dir-mode-map): Add binding for vc-root-diff. | ||
| 68 | (Bug#14948) | ||
| 69 | |||
| 70 | 2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 71 | |||
| 72 | * emacs-lisp/nadvice.el (advice--called-interactively-skip): Use the new | ||
| 73 | `base' arg of backtrace-frame. | ||
| 74 | |||
| 75 | 2013-07-26 Eli Zaretskii <eliz@gnu.org> | ||
| 76 | |||
| 77 | * simple.el (list-processes): Doc fix. | ||
| 78 | |||
| 79 | 2013-07-26 Juanma Barranquero <lekktu@gmail.com> | ||
| 80 | |||
| 81 | * desktop.el (desktop--select-frame): | ||
| 82 | Try harder to reuse existing frames. | ||
| 83 | |||
| 84 | 2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 85 | |||
| 86 | * emacs-lisp/edebug.el: Use backtrace-eval to handle lexical variables. | ||
| 87 | (edebug-eval): Use backtrace-eval. | ||
| 88 | (edebug--display, edebug--recursive-edit): Don't let-bind the | ||
| 89 | edebug-outer-* vars that keep track of variables we locally let-bind. | ||
| 90 | (edebug-outside-excursion): Don't restore outside values of locally | ||
| 91 | let-bound vars. | ||
| 92 | (edebug--display): Use user-error. | ||
| 93 | (cl-lexical-debug, cl-debug-env): Remove. | ||
| 94 | |||
| 95 | 2013-07-26 Juanma Barranquero <lekktu@gmail.com> | ||
| 96 | |||
| 97 | * desktop.el (desktop-restore-frames): Call `sit-for' once all frames | ||
| 98 | are restored to be sure that they are visible before deleting any | ||
| 99 | remaining ones. | ||
| 100 | |||
| 101 | 2013-07-26 Matthias Meulien <orontee@gmail.com> | ||
| 102 | |||
| 103 | * vc/vc-dir.el (vc-dir-mode-map): Add binding for | ||
| 104 | vc-print-root-log. (Bug#14948) | ||
| 105 | |||
| 106 | 2013-07-26 Richard Stallman <rms@gnu.org> | ||
| 107 | |||
| 108 | Add aliases for encrypting mail. | ||
| 109 | * epa.el (epa-mail-aliases): New option. | ||
| 110 | * epa-mail.el (epa-mail-encrypt): Rewrite to be callable from programs. | ||
| 111 | Bind inhibit-read-only so read-only text doesn't ruin everything. | ||
| 112 | (epa-mail-default-recipients): New subroutine broken out. | ||
| 113 | Handle epa-mail-aliases. | ||
| 114 | |||
| 115 | 2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 116 | |||
| 117 | Add support for lexical variables to the debugger's `e' command. | ||
| 118 | * emacs-lisp/debug.el (debug): Don't let-bind the debugger-outer-* | ||
| 119 | vars, except for debugger-outer-match-data. | ||
| 120 | (debugger-frame-number): Move check for "on a function call" from | ||
| 121 | callers into it. Add `skip-base' argument. | ||
| 122 | (debugger-frame, debugger-frame-clear): Simplify accordingly. | ||
| 123 | (debugger-env-macro): Only reset the state stored in non-variables, | ||
| 124 | i.e. current-buffer and match-data. | ||
| 125 | (debugger-eval-expression): Rewrite using backtrace-eval. | ||
| 126 | * subr.el (internal--called-interactively-p--get-frame): Remove. | ||
| 127 | (called-interactively-p): | ||
| 128 | * emacs-lisp/edebug.el (edebug--called-interactively-skip): Use the new | ||
| 129 | `base' arg of backtrace-frame instead. | ||
| 130 | |||
| 131 | 2013-07-26 Glenn Morris <rgm@gnu.org> | ||
| 132 | |||
| 133 | * align.el (align-regexp): Doc fix. (Bug#14857) | ||
| 134 | (align-region): Explicit error if subexpression missing/does not match. | ||
| 135 | |||
| 136 | * simple.el (global-visual-line-mode): | ||
| 137 | Do not duplicate the mode lighter. (Bug#14858) | ||
| 138 | |||
| 139 | 2013-07-25 Martin Rudalics <rudalics@gmx.at> | ||
| 140 | |||
| 141 | * window.el (display-buffer): In display-buffer bind | ||
| 142 | split-window-keep-point to t, bug#14829. | ||
| 143 | |||
| 144 | 2013-07-25 Juanma Barranquero <lekktu@gmail.com> | ||
| 145 | |||
| 146 | * desktop.el: Rename internal "desktop-X" frame params to "desktop--X". | ||
| 147 | (desktop-filter-parameters-alist, desktop--filter-restore-desktop-parm) | ||
| 148 | (desktop--filter-save-desktop-parm, desktop--process-minibuffer-frames) | ||
| 149 | (desktop--select-frame, desktop--sort-states, desktop-restore-frames): | ||
| 150 | Change accordingly. | ||
| 151 | (desktop--select-frame, desktop--sort-states, desktop-restore-frames): | ||
| 152 | Use pcase-let, pcase-let* to deobfuscate access to desktop--mini values. | ||
| 153 | |||
| 154 | 2013-07-25 Glenn Morris <rgm@gnu.org> | ||
| 155 | |||
| 156 | * dired-x.el (dired-mark-extension): Convert comment to doc string. | ||
| 157 | |||
| 158 | 2013-07-25 Juanma Barranquero <lekktu@gmail.com> | ||
| 159 | |||
| 160 | * desktop.el (desktop--make-frame): Do not pass the `fullscreen' | ||
| 161 | parameter to modify-frame-parameters if the value has not changed; | ||
| 162 | this is a workaround for bug#14949. | ||
| 163 | (desktop--make-frame): On cl-delete-if call, check parameter name, | ||
| 164 | not full parameter. | ||
| 165 | |||
| 1 | 2013-07-30 Xue Fuqiao <xfq.free@gmail.com> | 166 | 2013-07-30 Xue Fuqiao <xfq.free@gmail.com> |
| 2 | 167 | ||
| 3 | * vc/vc.el (vc-ignore): New function. | 168 | * vc/vc.el (vc-ignore): New function. |
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10 index 2d331a2819d..30afe9ce970 100644 --- a/lisp/ChangeLog.10 +++ b/lisp/ChangeLog.10 | |||
| @@ -5182,7 +5182,7 @@ | |||
| 5182 | inserted. | 5182 | inserted. |
| 5183 | (Info-hide-note-references): Fix doc and customize type. | 5183 | (Info-hide-note-references): Fix doc and customize type. |
| 5184 | 5184 | ||
| 5185 | 2003-03-02 Matt Swift <swift@alum.mit.edu> | 5185 | 2003-03-02 Matthew Swift <swift@alum.mit.edu> |
| 5186 | 5186 | ||
| 5187 | * emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column): | 5187 | * emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column): |
| 5188 | New custom variable. | 5188 | New custom variable. |
| @@ -5228,7 +5228,7 @@ | |||
| 5228 | (tramp-send-region): Correct debug message. | 5228 | (tramp-send-region): Correct debug message. |
| 5229 | (tramp-bug): Add `tramp-chunksize'. | 5229 | (tramp-bug): Add `tramp-chunksize'. |
| 5230 | 5230 | ||
| 5231 | 2003-02-26 Matt Swift <swift@alum.mit.edu> | 5231 | 2003-02-26 Matthew Swift <swift@alum.mit.edu> |
| 5232 | 5232 | ||
| 5233 | * startup.el: Streamline code in several functions for efficiency | 5233 | * startup.el: Streamline code in several functions for efficiency |
| 5234 | and readability. Rephrase booleans to avoid `(not noninteractive)'. | 5234 | and readability. Rephrase booleans to avoid `(not noninteractive)'. |
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15 index 4d0ff9a40e2..afa2bce104e 100644 --- a/lisp/ChangeLog.15 +++ b/lisp/ChangeLog.15 | |||
| @@ -5119,7 +5119,7 @@ | |||
| 5119 | (x-setup-function-keys, xw-defined-colors): Merge x- and w32- | 5119 | (x-setup-function-keys, xw-defined-colors): Merge x- and w32- |
| 5120 | definitions here. | 5120 | definitions here. |
| 5121 | 5121 | ||
| 5122 | 2010-10-24 T.V. Raman <tv.raman.tv@gmail.com> (tiny change) | 5122 | 2010-10-24 T. V. Raman <tv.raman.tv@gmail.com> (tiny change) |
| 5123 | 5123 | ||
| 5124 | * net/mairix.el (mairix-searches-mode-map): | 5124 | * net/mairix.el (mairix-searches-mode-map): |
| 5125 | * mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change. | 5125 | * mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change. |
diff --git a/lisp/ChangeLog.16 b/lisp/ChangeLog.16 index d6d1bac43c2..7692a0fffa8 100644 --- a/lisp/ChangeLog.16 +++ b/lisp/ChangeLog.16 | |||
| @@ -4569,7 +4569,7 @@ | |||
| 4569 | * bookmark.el (bookmark-completing-read): Set the completion category | 4569 | * bookmark.el (bookmark-completing-read): Set the completion category |
| 4570 | to `bookmark' (bug#11131). | 4570 | to `bookmark' (bug#11131). |
| 4571 | 4571 | ||
| 4572 | 2012-10-26 Bastien <bzg@altern.org> | 4572 | 2012-10-26 Bastien Guerry <bzg@altern.org> |
| 4573 | Stefan Monnier <monnier@iro.umontreal.ca> | 4573 | Stefan Monnier <monnier@iro.umontreal.ca> |
| 4574 | 4574 | ||
| 4575 | * face-remap.el: Use lexical-binding. | 4575 | * face-remap.el: Use lexical-binding. |
| @@ -9712,7 +9712,7 @@ | |||
| 9712 | * international/mule-cmds.el (mule-menu-keymap) | 9712 | * international/mule-cmds.el (mule-menu-keymap) |
| 9713 | (set-language-environment, set-locale-environment): Doc tweaks. | 9713 | (set-language-environment, set-locale-environment): Doc tweaks. |
| 9714 | 9714 | ||
| 9715 | 2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com> | 9715 | 2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com> |
| 9716 | 9716 | ||
| 9717 | * cus-face.el (custom-face-attributes): Add wave-style underline | 9717 | * cus-face.el (custom-face-attributes): Add wave-style underline |
| 9718 | attribute. | 9718 | attribute. |
diff --git a/lisp/ChangeLog.7 b/lisp/ChangeLog.7 index 4eec1795789..f52fdd7e194 100644 --- a/lisp/ChangeLog.7 +++ b/lisp/ChangeLog.7 | |||
| @@ -7617,7 +7617,7 @@ | |||
| 7617 | Delete the binding for toggle-enable-multibyte-characters. | 7617 | Delete the binding for toggle-enable-multibyte-characters. |
| 7618 | (mule-menu-keymap): Delete the menu item for it. | 7618 | (mule-menu-keymap): Delete the menu item for it. |
| 7619 | 7619 | ||
| 7620 | 1997-12-17 Peter Galbraith <galbraith@mixing.qc.dfo.ca> | 7620 | 1997-12-17 Peter S Galbraith <galbraith@mixing.qc.dfo.ca> |
| 7621 | 7621 | ||
| 7622 | * simple.el (copy-region-as-kill): | 7622 | * simple.el (copy-region-as-kill): |
| 7623 | Deactivate mark in transient-mark-mode. | 7623 | Deactivate mark in transient-mark-mode. |
| @@ -19637,7 +19637,7 @@ | |||
| 19637 | 19637 | ||
| 19638 | * term/x-win.el (function-key-map): Define iso-lefttab. | 19638 | * term/x-win.el (function-key-map): Define iso-lefttab. |
| 19639 | 19639 | ||
| 19640 | 1997-03-24 Vince Del Vecchio <vdelvecc@spd.analog.com> | 19640 | 1997-03-24 Vincent Del Vecchio <vdelvecc@spd.analog.com> |
| 19641 | 19641 | ||
| 19642 | * mh-utils.el (mh-find-progs): When looking for mh-lib, construct | 19642 | * mh-utils.el (mh-find-progs): When looking for mh-lib, construct |
| 19643 | likely paths based on mh-progs rather than using a static list. | 19643 | likely paths based on mh-progs rather than using a static list. |
diff --git a/lisp/align.el b/lisp/align.el index 1b62042be75..3d2ca192245 100644 --- a/lisp/align.el +++ b/lisp/align.el | |||
| @@ -906,15 +906,8 @@ on the format of these lists." | |||
| 906 | ;;;###autoload | 906 | ;;;###autoload |
| 907 | (defun align-regexp (beg end regexp &optional group spacing repeat) | 907 | (defun align-regexp (beg end regexp &optional group spacing repeat) |
| 908 | "Align the current region using an ad-hoc rule read from the minibuffer. | 908 | "Align the current region using an ad-hoc rule read from the minibuffer. |
| 909 | BEG and END mark the limits of the region. This function will prompt | 909 | BEG and END mark the limits of the region. Interactively, this function |
| 910 | for the REGEXP to align with. If no prefix arg was specified, you | 910 | prompts for the regular expression REGEXP to align with. |
| 911 | only need to supply the characters to be lined up and any preceding | ||
| 912 | whitespace is replaced. If a prefix arg was specified, the full | ||
| 913 | regexp with parenthesized whitespace should be supplied; it will also | ||
| 914 | prompt for which parenthesis GROUP within REGEXP to modify, the amount | ||
| 915 | of SPACING to use, and whether or not to REPEAT the rule throughout | ||
| 916 | the line. See `align-rules-list' for more information about these | ||
| 917 | options. | ||
| 918 | 911 | ||
| 919 | For example, let's say you had a list of phone numbers, and wanted to | 912 | For example, let's say you had a list of phone numbers, and wanted to |
| 920 | align them so that the opening parentheses would line up: | 913 | align them so that the opening parentheses would line up: |
| @@ -925,8 +918,29 @@ align them so that the opening parentheses would line up: | |||
| 925 | Joe (123) 456-7890 | 918 | Joe (123) 456-7890 |
| 926 | 919 | ||
| 927 | There is no predefined rule to handle this, but you could easily do it | 920 | There is no predefined rule to handle this, but you could easily do it |
| 928 | using a REGEXP like \"(\". All you would have to do is to mark the | 921 | using a REGEXP like \"(\". Interactively, all you would have to do is |
| 929 | region, call `align-regexp' and type in that regular expression." | 922 | to mark the region, call `align-regexp' and enter that regular expression. |
| 923 | |||
| 924 | REGEXP must contain at least one parenthesized subexpression, typically | ||
| 925 | whitespace of the form \"\\\\(\\\\s-*\\\\)\". In normal interactive use, | ||
| 926 | this is automatically added to the start of your regular expression after | ||
| 927 | you enter it. You only need to supply the characters to be lined up, and | ||
| 928 | any preceding whitespace is replaced. | ||
| 929 | |||
| 930 | If you specify a prefix argument (or use this function non-interactively), | ||
| 931 | you must enter the full regular expression, including the subexpression. | ||
| 932 | The function also then prompts for which subexpression parenthesis GROUP | ||
| 933 | \(default 1) within REGEXP to modify, the amount of SPACING (default | ||
| 934 | `align-default-spacing') to use, and whether or not to REPEAT the rule | ||
| 935 | throughout the line. | ||
| 936 | |||
| 937 | See `align-rules-list' for more information about these options. | ||
| 938 | |||
| 939 | The non-interactive form of the previous example would look something like: | ||
| 940 | \(align-regexp (point-min) (point-max) \"\\\\(\\\\s-*\\\\)(\") | ||
| 941 | |||
| 942 | This function is a nothing more than a small wrapper that helps you | ||
| 943 | construct a rule to pass to `align-region', which does the real work." | ||
| 930 | (interactive | 944 | (interactive |
| 931 | (append | 945 | (append |
| 932 | (list (region-beginning) (region-end)) | 946 | (list (region-beginning) (region-end)) |
| @@ -1498,6 +1512,9 @@ aligner would have dealt with are." | |||
| 1498 | (setq rule-beg (match-beginning first) | 1512 | (setq rule-beg (match-beginning first) |
| 1499 | save-match-data (match-data)) | 1513 | save-match-data (match-data)) |
| 1500 | 1514 | ||
| 1515 | (or rule-beg | ||
| 1516 | (error "No match for subexpression %s" first)) | ||
| 1517 | |||
| 1501 | ;; unless the `valid' attribute is set, and tells | 1518 | ;; unless the `valid' attribute is set, and tells |
| 1502 | ;; us that the rule is not valid at this point in | 1519 | ;; us that the rule is not valid at this point in |
| 1503 | ;; the code.. | 1520 | ;; the code.. |
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index 934dfb92a57..943aa8b34b5 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el | |||
| @@ -1099,6 +1099,52 @@ Noninteractively, return the name of the new file." | |||
| 1099 | (todo-show)) | 1099 | (todo-show)) |
| 1100 | file))) | 1100 | file))) |
| 1101 | 1101 | ||
| 1102 | (defun todo-rename-file (&optional arg) | ||
| 1103 | "Rename the current todo file. | ||
| 1104 | With prefix ARG, prompt for a todo file and rename it. | ||
| 1105 | If there are corresponding archive or filtered items files, | ||
| 1106 | rename these accordingly. If there are live buffers visiting | ||
| 1107 | these files, also rename them accordingly." | ||
| 1108 | (interactive "P") | ||
| 1109 | (let* ((oname (or (and arg | ||
| 1110 | (todo-read-file-name "Choose a file to rename: " | ||
| 1111 | nil t)) | ||
| 1112 | (buffer-file-name))) | ||
| 1113 | (soname (todo-short-file-name oname)) | ||
| 1114 | (nname (todo-read-file-name "New name for this file: ")) | ||
| 1115 | (snname (todo-short-file-name nname)) | ||
| 1116 | (files (directory-files todo-directory t | ||
| 1117 | (concat ".*" (regexp-quote soname) | ||
| 1118 | ".*\.tod[aorty]$") t))) | ||
| 1119 | (dolist (f files) | ||
| 1120 | (let* ((sfname (todo-short-file-name f)) | ||
| 1121 | (fext (file-name-extension f t)) | ||
| 1122 | (fbuf (find-buffer-visiting f)) | ||
| 1123 | (fbname (buffer-name fbuf))) | ||
| 1124 | (when (string-match (regexp-quote soname) sfname) | ||
| 1125 | (let* ((snfname (replace-match snname t t sfname)) | ||
| 1126 | (nfname (concat todo-directory snfname fext))) | ||
| 1127 | (rename-file f nfname) | ||
| 1128 | (when fbuf | ||
| 1129 | (with-current-buffer fbuf | ||
| 1130 | (set-visited-file-name nfname t t) | ||
| 1131 | (cond ((member fext '(".todo" ".toda")) | ||
| 1132 | (setq todo-current-todo-file (buffer-file-name)) | ||
| 1133 | (setq mode-line-buffer-identification | ||
| 1134 | (funcall todo-mode-line-function | ||
| 1135 | (todo-current-category)))) | ||
| 1136 | (t | ||
| 1137 | (rename-buffer | ||
| 1138 | (replace-regexp-in-string | ||
| 1139 | (regexp-quote soname) snname fbname)))))))))) | ||
| 1140 | (setq todo-files (funcall todo-files-function) | ||
| 1141 | todo-archives (funcall todo-files-function t)) | ||
| 1142 | (when (string= todo-default-todo-file soname) | ||
| 1143 | (setq todo-default-todo-file snname)) | ||
| 1144 | (when (string= todo-global-current-todo-file oname) | ||
| 1145 | (setq todo-global-current-todo-file nname)) | ||
| 1146 | (todo-reevaluate-filelist-defcustoms))) | ||
| 1147 | |||
| 1102 | (defun todo-delete-file () | 1148 | (defun todo-delete-file () |
| 1103 | "Delete the current todo, archive or filtered items file. | 1149 | "Delete the current todo, archive or filtered items file. |
| 1104 | If the todo file has a corresponding archive file, or vice versa, | 1150 | If the todo file has a corresponding archive file, or vice versa, |
| @@ -4121,7 +4167,8 @@ multifile commands for further details." | |||
| 4121 | (regexp ".todr"))))) | 4167 | (regexp ".todr"))))) |
| 4122 | (rxfiles (when regexp | 4168 | (rxfiles (when regexp |
| 4123 | (directory-files todo-directory t ".*\\.todr$" t))) | 4169 | (directory-files todo-directory t ".*\\.todr$" t))) |
| 4124 | (file-exists (or (file-exists-p fname) rxfiles))) | 4170 | (file-exists (or (file-exists-p fname) rxfiles)) |
| 4171 | bufname) | ||
| 4125 | (cond ((and top new (natnump new)) | 4172 | (cond ((and top new (natnump new)) |
| 4126 | (todo-filter-items-1 (cons 'top new) flist)) | 4173 | (todo-filter-items-1 (cons 'top new) flist)) |
| 4127 | ((and (not new) file-exists) | 4174 | ((and (not new) file-exists) |
| @@ -4135,10 +4182,15 @@ multifile commands for further details." | |||
| 4135 | (todo-check-filtered-items-file)) | 4182 | (todo-check-filtered-items-file)) |
| 4136 | (t | 4183 | (t |
| 4137 | (todo-filter-items-1 filter flist))) | 4184 | (todo-filter-items-1 filter flist))) |
| 4138 | (setq fname (replace-regexp-in-string "-" ", " | 4185 | (dolist (s (split-string (todo-short-file-name fname) "-")) |
| 4139 | (todo-short-file-name fname))) | 4186 | (setq bufname (if bufname |
| 4187 | (concat bufname (if (member s (mapcar | ||
| 4188 | 'todo-short-file-name | ||
| 4189 | todo-files)) | ||
| 4190 | ", " "-") s) | ||
| 4191 | s))) | ||
| 4140 | (rename-buffer (format (concat "%s for file" (if multi "s" "") | 4192 | (rename-buffer (format (concat "%s for file" (if multi "s" "") |
| 4141 | " \"%s\"") buf fname)))) | 4193 | " \"%s\"") buf bufname)))) |
| 4142 | 4194 | ||
| 4143 | (defun todo-filter-items-1 (filter file-list) | 4195 | (defun todo-filter-items-1 (filter file-list) |
| 4144 | "Build a list of items by applying FILTER to FILE-LIST. | 4196 | "Build a list of items by applying FILTER to FILE-LIST. |
| @@ -6163,6 +6215,7 @@ Filtered Items mode following todo (not done) items." | |||
| 6163 | ("Cey" todo-edit-category-diary-inclusion) | 6215 | ("Cey" todo-edit-category-diary-inclusion) |
| 6164 | ("Cek" todo-edit-category-diary-nonmarking) | 6216 | ("Cek" todo-edit-category-diary-nonmarking) |
| 6165 | ("Fa" todo-add-file) | 6217 | ("Fa" todo-add-file) |
| 6218 | ("Fr" todo-rename-file) | ||
| 6166 | ("Ff" todo-find-filtered-items-file) | 6219 | ("Ff" todo-find-filtered-items-file) |
| 6167 | ("FV" todo-toggle-view-done-only) | 6220 | ("FV" todo-toggle-view-done-only) |
| 6168 | ("V" todo-toggle-view-done-only) | 6221 | ("V" todo-toggle-view-done-only) |
| @@ -6171,8 +6224,8 @@ Filtered Items mode following todo (not done) items." | |||
| 6171 | ("Fts" todo-set-top-priorities-in-file) | 6224 | ("Fts" todo-set-top-priorities-in-file) |
| 6172 | ("Fyy" todo-filter-diary-items) | 6225 | ("Fyy" todo-filter-diary-items) |
| 6173 | ("Fym" todo-filter-diary-items-multifile) | 6226 | ("Fym" todo-filter-diary-items-multifile) |
| 6174 | ("Frr" todo-filter-regexp-items) | 6227 | ("Fxx" todo-filter-regexp-items) |
| 6175 | ("Frm" todo-filter-regexp-items-multifile) | 6228 | ("Fxm" todo-filter-regexp-items-multifile) |
| 6176 | ("ee" todo-edit-item) | 6229 | ("ee" todo-edit-item) |
| 6177 | ("em" todo-edit-multiline-item) | 6230 | ("em" todo-edit-multiline-item) |
| 6178 | ("edt" todo-edit-item-header) | 6231 | ("edt" todo-edit-item-header) |
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog index 705277c97a0..c39a8a700ef 100644 --- a/lisp/cedet/ChangeLog +++ b/lisp/cedet/ChangeLog | |||
| @@ -1,3 +1,38 @@ | |||
| 1 | 2013-07-29 David Engster <deng@randomsample.de> | ||
| 2 | |||
| 3 | * lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its | ||
| 4 | development does no longer happens in CEDET upstream but in Emacs | ||
| 5 | proper. Also remove cedet-contrib and cogre since those are only | ||
| 6 | in upstream. | ||
| 7 | |||
| 8 | * semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE | ||
| 9 | has a parent, return a fully qualified name. | ||
| 10 | |||
| 11 | * semantic/decorate/mode.el | ||
| 12 | (semantic-decoration-on-includes-p-default) | ||
| 13 | (semantic-decoration-on-includes-highlight-default): Declare for | ||
| 14 | byte compiler. | ||
| 15 | |||
| 16 | * semantic/wisent/python.el (semantic/format): New require. | ||
| 17 | |||
| 18 | 2013-07-27 Eric Ludlam <zappo@gnu.org> | ||
| 19 | |||
| 20 | * lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap | ||
| 21 | debug message removing middle tag in semantic-edits-verbose-flag | ||
| 22 | check. | ||
| 23 | |||
| 24 | 2013-07-27 David Engster <deng@randomsample.de> | ||
| 25 | |||
| 26 | * semantic/bovine/el.el (semantic/db-el): New require. | ||
| 27 | |||
| 28 | * semantic/db-el.el (semanticdb-normalize-one-tag): It might be | ||
| 29 | that a symbol comes from a file but cannot be found in its table. | ||
| 30 | This happens for instance when a symbol was dynamically created | ||
| 31 | through a macro like `defstruct'. In this case, return the | ||
| 32 | original tag. | ||
| 33 | (semanticdb-elisp-sym->tag): Deal with autoloaded functions, where | ||
| 34 | the argument list is not available until the file is loaded. | ||
| 35 | |||
| 1 | 2013-06-25 Stefan Monnier <monnier@iro.umontreal.ca> | 36 | 2013-06-25 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 37 | ||
| 3 | * data-debug.el, cedet-idutils.el: Neuter the "Version:" header. | 38 | * data-debug.el, cedet-idutils.el: Neuter the "Version:" header. |
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el index e8720bc6624..f34442996c1 100644 --- a/lisp/cedet/cedet.el +++ b/lisp/cedet/cedet.el | |||
| @@ -46,9 +46,6 @@ | |||
| 46 | (semantic "2.2" nil "semantic/doc") | 46 | (semantic "2.2" nil "semantic/doc") |
| 47 | (srecode "1.2" nil "srecode" ) | 47 | (srecode "1.2" nil "srecode" ) |
| 48 | (ede "1.2" nil "ede" ) | 48 | (ede "1.2" nil "ede" ) |
| 49 | (speedbar "1.0.4" nil "speedbar" ) | ||
| 50 | (cogre "1.2" nil "cogre" ) | ||
| 51 | (cedet-contrib "1.2" "contrib" nil ) | ||
| 52 | ) | 49 | ) |
| 53 | "Table of CEDET packages to install.") | 50 | "Table of CEDET packages to install.") |
| 54 | 51 | ||
diff --git a/lisp/cedet/semantic/analyze/fcn.el b/lisp/cedet/semantic/analyze/fcn.el index 4300c89c9df..7512b7ca15a 100644 --- a/lisp/cedet/semantic/analyze/fcn.el +++ b/lisp/cedet/semantic/analyze/fcn.el | |||
| @@ -165,7 +165,10 @@ SCOPE is the scope object with additional items in which to search for names." | |||
| 165 | The TYPE field in a tag can be nil (return nil) | 165 | The TYPE field in a tag can be nil (return nil) |
| 166 | or a string, or a non-positional tag." | 166 | or a string, or a non-positional tag." |
| 167 | (cond ((semantic-tag-p type) | 167 | (cond ((semantic-tag-p type) |
| 168 | (semantic-tag-name type)) | 168 | (if (semantic-tag-named-parent type) |
| 169 | (semantic-analyze-unsplit-name `(,(semantic-tag-named-parent type) | ||
| 170 | ,(semantic-tag-name type))) | ||
| 171 | (semantic-tag-name type))) | ||
| 169 | ((stringp type) | 172 | ((stringp type) |
| 170 | type) | 173 | type) |
| 171 | ((listp type) | 174 | ((listp type) |
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el index 0bbe3c61d76..c6f1ceb0f94 100644 --- a/lisp/cedet/semantic/bovine/el.el +++ b/lisp/cedet/semantic/bovine/el.el | |||
| @@ -25,6 +25,7 @@ | |||
| 25 | 25 | ||
| 26 | (require 'semantic) | 26 | (require 'semantic) |
| 27 | (require 'semantic/bovine) | 27 | (require 'semantic/bovine) |
| 28 | (require 'semantic/db-el) | ||
| 28 | (require 'find-func) | 29 | (require 'find-func) |
| 29 | 30 | ||
| 30 | (require 'semantic/ctxt) | 31 | (require 'semantic/ctxt) |
diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el index 1b0f3292ad3..3376389c7d5 100644 --- a/lisp/cedet/semantic/db-el.el +++ b/lisp/cedet/semantic/db-el.el | |||
| @@ -173,13 +173,17 @@ If Emacs cannot resolve this symbol to a particular file, then return nil." | |||
| 173 | (newtags (when tab (semanticdb-find-tags-by-name-method | 173 | (newtags (when tab (semanticdb-find-tags-by-name-method |
| 174 | tab (semantic-tag-name tag)))) | 174 | tab (semantic-tag-name tag)))) |
| 175 | (match nil)) | 175 | (match nil)) |
| 176 | ;; Find the best match. | 176 | ;; We might not have a parsed tag in this file, because it |
| 177 | (dolist (T newtags) | 177 | ;; might be generated through a macro like defstruct. |
| 178 | (when (semantic-tag-similar-p T tag) | 178 | (if (null newtags) |
| 179 | (setq match T))) | 179 | (setq match tag) |
| 180 | ;; Backup system. | 180 | ;; Find the best match. |
| 181 | (when (not match) | 181 | (dolist (T newtags) |
| 182 | (setq match (car newtags))) | 182 | (when (semantic-tag-similar-p T tag) |
| 183 | (setq match T))) | ||
| 184 | ;; Backup system. | ||
| 185 | (when (not match) | ||
| 186 | (setq match (car newtags)))) | ||
| 183 | ;; Return it. | 187 | ;; Return it. |
| 184 | (when tab (cons tab match)))))) | 188 | (when tab (cons tab match)))))) |
| 185 | 189 | ||
| @@ -196,15 +200,18 @@ TOKTYPE is a hint to the type of tag desired." | |||
| 196 | (when sym | 200 | (when sym |
| 197 | (cond ((and (eq toktype 'function) (fboundp sym)) | 201 | (cond ((and (eq toktype 'function) (fboundp sym)) |
| 198 | (require 'semantic/bovine/el) | 202 | (require 'semantic/bovine/el) |
| 199 | (semantic-tag-new-function | 203 | (let ((arglist (help-function-arglist sym))) |
| 200 | (symbol-name sym) | 204 | (when (not (listp arglist)) |
| 201 | nil ;; return type | 205 | ;; Function might be autoloaded, in which case |
| 202 | (semantic-elisp-desymbolify | 206 | ;; the arglist is not available yet. |
| 203 | (help-function-arglist sym)) ;; arg-list | 207 | (setq arglist nil)) |
| 204 | :user-visible-flag (condition-case nil | 208 | (semantic-tag-new-function |
| 205 | (interactive-form sym) | 209 | (symbol-name sym) |
| 206 | (error nil)) | 210 | nil ;; return type |
| 207 | )) | 211 | (semantic-elisp-desymbolify arglist) |
| 212 | :user-visible-flag (condition-case nil | ||
| 213 | (interactive-form sym) | ||
| 214 | (error nil))))) | ||
| 208 | ((and (eq toktype 'variable) (boundp sym)) | 215 | ((and (eq toktype 'variable) (boundp sym)) |
| 209 | (semantic-tag-new-variable | 216 | (semantic-tag-new-variable |
| 210 | (symbol-name sym) | 217 | (symbol-name sym) |
diff --git a/lisp/cedet/semantic/decorate/mode.el b/lisp/cedet/semantic/decorate/mode.el index ba06c73936b..cc5e9d9bec2 100644 --- a/lisp/cedet/semantic/decorate/mode.el +++ b/lisp/cedet/semantic/decorate/mode.el | |||
| @@ -541,6 +541,10 @@ Use a primary decoration." | |||
| 541 | 541 | ||
| 542 | ;;; Decoration Modes in other files | 542 | ;;; Decoration Modes in other files |
| 543 | ;; | 543 | ;; |
| 544 | (declare-function semantic-decoration-on-includes-p-default | ||
| 545 | "semantic/decorate/include") | ||
| 546 | (declare-function semantic-decoration-on-includes-highlight-default | ||
| 547 | "semantic/decorate/include") | ||
| 544 | (define-semantic-decoration-style semantic-decoration-on-includes | 548 | (define-semantic-decoration-style semantic-decoration-on-includes |
| 545 | "Highlight class members that are includes. | 549 | "Highlight class members that are includes. |
| 546 | This mode provides a nice context menu on the include statements." | 550 | This mode provides a nice context menu on the include statements." |
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el index a27eab5404c..91455cdb741 100644 --- a/lisp/cedet/semantic/edit.el +++ b/lisp/cedet/semantic/edit.el | |||
| @@ -882,8 +882,9 @@ pre-positioned to a convenient location." | |||
| 882 | ;; reparse | 882 | ;; reparse |
| 883 | (semantic-parse-changes-failed "Splice-remove failed. Empty buffer?") | 883 | (semantic-parse-changes-failed "Splice-remove failed. Empty buffer?") |
| 884 | )) | 884 | )) |
| 885 | (message "To Remove Middle Tag: (%s)" | 885 | (when semantic-edits-verbose-flag |
| 886 | (semantic-format-tag-name first))) | 886 | (message "To Remove Middle Tag: (%s)" |
| 887 | (semantic-format-tag-name first)))) | ||
| 887 | ;; Find in the cache the preceding tag | 888 | ;; Find in the cache the preceding tag |
| 888 | (while (and cachestart (not (eq first (car (cdr cachestart))))) | 889 | (while (and cachestart (not (eq first (car (cdr cachestart))))) |
| 889 | (setq cachestart (cdr cachestart))) | 890 | (setq cachestart (cdr cachestart))) |
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el index 719868f7635..2c0ed5868ce 100644 --- a/lisp/cedet/semantic/wisent/python.el +++ b/lisp/cedet/semantic/wisent/python.el | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | (require 'semantic/find) | 39 | (require 'semantic/find) |
| 40 | (require 'semantic/dep) | 40 | (require 'semantic/dep) |
| 41 | (require 'semantic/ctxt) | 41 | (require 'semantic/ctxt) |
| 42 | (require 'semantic/format) | ||
| 42 | 43 | ||
| 43 | (eval-when-compile | 44 | (eval-when-compile |
| 44 | (require 'cl)) | 45 | (require 'cl)) |
diff --git a/lisp/desktop.el b/lisp/desktop.el index f4622ae4961..299bdc0eeb4 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el | |||
| @@ -387,6 +387,18 @@ If `delete', frames on other displays are deleted instead of restored." | |||
| 387 | :group 'desktop | 387 | :group 'desktop |
| 388 | :version "24.4") | 388 | :version "24.4") |
| 389 | 389 | ||
| 390 | (defcustom desktop-restore-forces-onscreen t | ||
| 391 | "If t, offscreen frames are restored onscreen instead. | ||
| 392 | If `all', frames that are partially offscreen are also forced onscren. | ||
| 393 | NOTE: Checking of frame boundaries is only approximate and can fail | ||
| 394 | to reliably detect frames whose onscreen/offscreen state depends on a | ||
| 395 | few pixels, especially near the right / bottom borders of the screen." | ||
| 396 | :type '(choice (const :tag "Only fully offscreen frames" t) | ||
| 397 | (const :tag "Also partially offscreen frames" 'all) | ||
| 398 | (const :tag "Do not force frames onscreen" nil)) | ||
| 399 | :group 'desktop | ||
| 400 | :version "24.4") | ||
| 401 | |||
| 390 | (defcustom desktop-restoring-reuses-frames t | 402 | (defcustom desktop-restoring-reuses-frames t |
| 391 | "If t, restoring frames reuses existing frames. | 403 | "If t, restoring frames reuses existing frames. |
| 392 | If nil, existing frames are deleted. | 404 | If nil, existing frames are deleted. |
| @@ -878,30 +890,30 @@ DIRNAME must be the directory in which the desktop file will be saved." | |||
| 878 | 890 | ||
| 879 | ;; ---------------------------------------------------------------------------- | 891 | ;; ---------------------------------------------------------------------------- |
| 880 | (defvar desktop-filter-parameters-alist | 892 | (defvar desktop-filter-parameters-alist |
| 881 | '((background-color . desktop--filter-*-color) | 893 | '((background-color . desktop--filter-*-color) |
| 882 | (buffer-list . t) | 894 | (buffer-list . t) |
| 883 | (buffer-predicate . t) | 895 | (buffer-predicate . t) |
| 884 | (buried-buffer-list . t) | 896 | (buried-buffer-list . t) |
| 885 | (desktop-font . desktop--filter-restore-desktop-parm) | 897 | (desktop--font . desktop--filter-restore-desktop-parm) |
| 886 | (desktop-fullscreen . desktop--filter-restore-desktop-parm) | 898 | (desktop--fullscreen . desktop--filter-restore-desktop-parm) |
| 887 | (desktop-height . desktop--filter-restore-desktop-parm) | 899 | (desktop--height . desktop--filter-restore-desktop-parm) |
| 888 | (desktop-width . desktop--filter-restore-desktop-parm) | 900 | (desktop--width . desktop--filter-restore-desktop-parm) |
| 889 | (font . desktop--filter-save-desktop-parm) | 901 | (font . desktop--filter-save-desktop-parm) |
| 890 | (font-backend . t) | 902 | (font-backend . t) |
| 891 | (foreground-color . desktop--filter-*-color) | 903 | (foreground-color . desktop--filter-*-color) |
| 892 | (fullscreen . desktop--filter-save-desktop-parm) | 904 | (fullscreen . desktop--filter-save-desktop-parm) |
| 893 | (height . desktop--filter-save-desktop-parm) | 905 | (height . desktop--filter-save-desktop-parm) |
| 894 | (left . desktop--filter-iconified-position) | 906 | (left . desktop--filter-iconified-position) |
| 895 | (minibuffer . desktop--filter-minibuffer) | 907 | (minibuffer . desktop--filter-minibuffer) |
| 896 | (name . t) | 908 | (name . t) |
| 897 | (outer-window-id . t) | 909 | (outer-window-id . t) |
| 898 | (parent-id . t) | 910 | (parent-id . t) |
| 899 | (top . desktop--filter-iconified-position) | 911 | (top . desktop--filter-iconified-position) |
| 900 | (tty . desktop--filter-tty*) | 912 | (tty . desktop--filter-tty*) |
| 901 | (tty-type . desktop--filter-tty*) | 913 | (tty-type . desktop--filter-tty*) |
| 902 | (width . desktop--filter-save-desktop-parm) | 914 | (width . desktop--filter-save-desktop-parm) |
| 903 | (window-id . t) | 915 | (window-id . t) |
| 904 | (window-system . t)) | 916 | (window-system . t)) |
| 905 | "Alist of frame parameters and filtering functions. | 917 | "Alist of frame parameters and filtering functions. |
| 906 | 918 | ||
| 907 | Each element is a cons (PARAM . FILTER), where PARAM is a parameter | 919 | Each element is a cons (PARAM . FILTER), where PARAM is a parameter |
| @@ -972,27 +984,27 @@ Only meaningful when called from a filtering function in | |||
| 972 | t))) | 984 | t))) |
| 973 | 985 | ||
| 974 | (defun desktop--filter-restore-desktop-parm (current parameters saving) | 986 | (defun desktop--filter-restore-desktop-parm (current parameters saving) |
| 975 | ;; When switching to a GUI frame, convert desktop-XXX parameter to XXX | 987 | ;; When switching to a GUI frame, convert desktop--XXX parameter to XXX |
| 976 | (or saving | 988 | (or saving |
| 977 | (not (desktop-switch-to-gui-p parameters)) | 989 | (not (desktop-switch-to-gui-p parameters)) |
| 978 | (let ((val (cdr current))) | 990 | (let ((val (cdr current))) |
| 979 | (if (eq val :desktop-processed) | 991 | (if (eq val :desktop-processed) |
| 980 | nil | 992 | nil |
| 981 | (cons (intern (substring (symbol-name (car current)) | 993 | (cons (intern (substring (symbol-name (car current)) |
| 982 | 8)) ;; (length "desktop-") | 994 | 9)) ;; (length "desktop--") |
| 983 | val))))) | 995 | val))))) |
| 984 | 996 | ||
| 985 | (defun desktop--filter-save-desktop-parm (current parameters saving) | 997 | (defun desktop--filter-save-desktop-parm (current parameters saving) |
| 986 | ;; When switching to a tty frame, save parameter XXX as desktop-XXX so it | 998 | ;; When switching to a tty frame, save parameter XXX as desktop--XXX so it |
| 987 | ;; can be restored in a subsequent GUI session, unless it already exists. | 999 | ;; can be restored in a subsequent GUI session, unless it already exists. |
| 988 | (cond (saving t) | 1000 | (cond (saving t) |
| 989 | ((desktop-switch-to-tty-p parameters) | 1001 | ((desktop-switch-to-tty-p parameters) |
| 990 | (let ((sym (intern (format "desktop-%s" (car current))))) | 1002 | (let ((sym (intern (format "desktop--%s" (car current))))) |
| 991 | (if (assq sym parameters) | 1003 | (if (assq sym parameters) |
| 992 | nil | 1004 | nil |
| 993 | (cons sym (cdr current))))) | 1005 | (cons sym (cdr current))))) |
| 994 | ((desktop-switch-to-gui-p parameters) | 1006 | ((desktop-switch-to-gui-p parameters) |
| 995 | (let* ((dtp (assq (intern (format "desktop-%s" (car current))) | 1007 | (let* ((dtp (assq (intern (format "desktop--%s" (car current))) |
| 996 | parameters)) | 1008 | parameters)) |
| 997 | (val (cdr dtp))) | 1009 | (val (cdr dtp))) |
| 998 | (if (eq val :desktop-processed) | 1010 | (if (eq val :desktop-processed) |
| @@ -1047,34 +1059,34 @@ Internal use only." | |||
| 1047 | filtered)) | 1059 | filtered)) |
| 1048 | 1060 | ||
| 1049 | (defun desktop--process-minibuffer-frames (frames) | 1061 | (defun desktop--process-minibuffer-frames (frames) |
| 1050 | ;; Adds a desktop-mini parameter to frames | 1062 | ;; Adds a desktop--mini parameter to frames |
| 1051 | ;; desktop-mini is a list (MINIBUFFER NUMBER DEFAULT?) where | 1063 | ;; desktop--mini is a list (MINIBUFFER NUMBER DEFAULT?) where |
| 1052 | ;; MINIBUFFER t if the frame (including minibuffer-only) owns a minibuffer | 1064 | ;; MINIBUFFER t if the frame (including minibuffer-only) owns a minibuffer |
| 1053 | ;; NUMBER if MINIBUFFER = t, an ID for the frame; if nil, the ID of | 1065 | ;; NUMBER if MINIBUFFER = t, an ID for the frame; if nil, the ID of |
| 1054 | ;; the frame containing the minibuffer used by this frame | 1066 | ;; the frame containing the minibuffer used by this frame |
| 1055 | ;; DEFAULT? if t, this frame is the value of default-minibuffer-frame | 1067 | ;; DEFAULT? if t, this frame is the value of default-minibuffer-frame |
| 1056 | (let ((count 0)) | 1068 | (let ((count 0)) |
| 1057 | ;; Reset desktop-mini for all frames | 1069 | ;; Reset desktop--mini for all frames |
| 1058 | (dolist (frame (frame-list)) | 1070 | (dolist (frame (frame-list)) |
| 1059 | (set-frame-parameter frame 'desktop-mini nil)) | 1071 | (set-frame-parameter frame 'desktop--mini nil)) |
| 1060 | ;; Number all frames with its own minibuffer | 1072 | ;; Number all frames with its own minibuffer |
| 1061 | (dolist (frame (minibuffer-frame-list)) | 1073 | (dolist (frame (minibuffer-frame-list)) |
| 1062 | (set-frame-parameter frame 'desktop-mini | 1074 | (set-frame-parameter frame 'desktop--mini |
| 1063 | (list t | 1075 | (list t |
| 1064 | (cl-incf count) | 1076 | (cl-incf count) |
| 1065 | (eq frame default-minibuffer-frame)))) | 1077 | (eq frame default-minibuffer-frame)))) |
| 1066 | ;; Now link minibufferless frames with their minibuffer frames | 1078 | ;; Now link minibufferless frames with their minibuffer frames |
| 1067 | (dolist (frame frames) | 1079 | (dolist (frame frames) |
| 1068 | (unless (frame-parameter frame 'desktop-mini) | 1080 | (unless (frame-parameter frame 'desktop--mini) |
| 1069 | (let ((mb-frame (window-frame (minibuffer-window frame)))) | 1081 | (let ((mb-frame (window-frame (minibuffer-window frame)))) |
| 1070 | ;; Frames whose minibuffer frame has been filtered out will have | 1082 | ;; Frames whose minibuffer frame has been filtered out will have |
| 1071 | ;; desktop-mini = nil, so desktop-restore-frames will restore them | 1083 | ;; desktop--mini = nil, so desktop-restore-frames will restore them |
| 1072 | ;; according to their minibuffer parameter. Set up desktop-mini | 1084 | ;; according to their minibuffer parameter. Set up desktop--mini |
| 1073 | ;; for the rest. | 1085 | ;; for the rest. |
| 1074 | (when (memq mb-frame frames) | 1086 | (when (memq mb-frame frames) |
| 1075 | (set-frame-parameter frame 'desktop-mini | 1087 | (set-frame-parameter frame 'desktop--mini |
| 1076 | (list nil | 1088 | (list nil |
| 1077 | (cl-second (frame-parameter mb-frame 'desktop-mini)) | 1089 | (cl-second (frame-parameter mb-frame 'desktop--mini)) |
| 1078 | nil)))))))) | 1090 | nil)))))))) |
| 1079 | 1091 | ||
| 1080 | (defun desktop-save-frames () | 1092 | (defun desktop-save-frames () |
| @@ -1201,6 +1213,68 @@ This function also sets `desktop-dirname' to nil." | |||
| 1201 | (defvar desktop--reuse-list nil | 1213 | (defvar desktop--reuse-list nil |
| 1202 | "Internal use only.") | 1214 | "Internal use only.") |
| 1203 | 1215 | ||
| 1216 | (defun desktop--compute-pos (value left/top right/bottom) | ||
| 1217 | (pcase value | ||
| 1218 | (`(+ ,val) (+ left/top val)) | ||
| 1219 | (`(- ,val) (+ right/bottom val)) | ||
| 1220 | (val val))) | ||
| 1221 | |||
| 1222 | (defun desktop--move-onscreen (frame) | ||
| 1223 | "If FRAME is offscreen, move it back onscreen and, if necessary, resize it. | ||
| 1224 | When forced onscreen, frames wider than the monitor's workarea are converted | ||
| 1225 | to fullwidth, and frames taller than the workarea are converted to fullheight. | ||
| 1226 | NOTE: This only works for non-iconified frames." | ||
| 1227 | (pcase-let* ((`(,left ,top ,width ,height) (cl-cdadr (frame-monitor-attributes frame))) | ||
| 1228 | (right (+ left width -1)) | ||
| 1229 | (bottom (+ top height -1)) | ||
| 1230 | (fr-left (desktop--compute-pos (frame-parameter frame 'left) left right)) | ||
| 1231 | (fr-top (desktop--compute-pos (frame-parameter frame 'top) top bottom)) | ||
| 1232 | (ch-width (frame-char-width frame)) | ||
| 1233 | (ch-height (frame-char-height frame)) | ||
| 1234 | (fr-width (max (frame-pixel-width frame) (* ch-width (frame-width frame)))) | ||
| 1235 | (fr-height (max (frame-pixel-height frame) (* ch-height (frame-height frame)))) | ||
| 1236 | (fr-right (+ fr-left fr-width -1)) | ||
| 1237 | (fr-bottom (+ fr-top fr-height -1))) | ||
| 1238 | (when (pcase desktop-restore-forces-onscreen | ||
| 1239 | ;; Any corner is outside the screen. | ||
| 1240 | (`all (or (< fr-bottom top) (> fr-bottom bottom) | ||
| 1241 | (< fr-left left) (> fr-left right) | ||
| 1242 | (< fr-right left) (> fr-right right) | ||
| 1243 | (< fr-top top) (> fr-top bottom))) | ||
| 1244 | ;; Displaced to the left, right, above or below the screen. | ||
| 1245 | (`t (or (> fr-left right) | ||
| 1246 | (< fr-right left) | ||
| 1247 | (> fr-top bottom) | ||
| 1248 | (< fr-bottom top))) | ||
| 1249 | (_ nil)) | ||
| 1250 | (let ((fullwidth (> fr-width width)) | ||
| 1251 | (fullheight (> fr-height height)) | ||
| 1252 | (params nil)) | ||
| 1253 | ;; Position frame horizontally. | ||
| 1254 | (cond (fullwidth | ||
| 1255 | (push `(left . ,left) params)) | ||
| 1256 | ((> fr-right right) | ||
| 1257 | (push `(left . ,(+ left (- width fr-width))) params)) | ||
| 1258 | ((< fr-left left) | ||
| 1259 | (push `(left . ,left) params))) | ||
| 1260 | ;; Position frame vertically. | ||
| 1261 | (cond (fullheight | ||
| 1262 | (push `(top . ,top) params)) | ||
| 1263 | ((> fr-bottom bottom) | ||
| 1264 | (push `(top . ,(+ top (- height fr-height))) params)) | ||
| 1265 | ((< fr-top top) | ||
| 1266 | (push `(top . ,top) params))) | ||
| 1267 | ;; Compute fullscreen state, if required. | ||
| 1268 | (when (or fullwidth fullheight) | ||
| 1269 | (push (cons 'fullscreen | ||
| 1270 | (cond ((not fullwidth) 'fullheight) | ||
| 1271 | ((not fullheight) 'fullwidth) | ||
| 1272 | (t 'maximized))) | ||
| 1273 | params)) | ||
| 1274 | ;; Finally, move the frame back onscreen. | ||
| 1275 | (when params | ||
| 1276 | (modify-frame-parameters frame params)))))) | ||
| 1277 | |||
| 1204 | (defun desktop--find-frame (predicate display &rest args) | 1278 | (defun desktop--find-frame (predicate display &rest args) |
| 1205 | "Find a suitable frame in `desktop--reuse-list'. | 1279 | "Find a suitable frame in `desktop--reuse-list'. |
| 1206 | Look through frames whose display property matches DISPLAY and | 1280 | Look through frames whose display property matches DISPLAY and |
| @@ -1228,33 +1302,44 @@ is the parameter list of the frame being restored. Internal use only." | |||
| 1228 | ;; session has already been loaded. The other main use case, which | 1302 | ;; session has already been loaded. The other main use case, which |
| 1229 | ;; is the initial desktop-read upon starting Emacs, should usually | 1303 | ;; is the initial desktop-read upon starting Emacs, should usually |
| 1230 | ;; only have one, or very few, frame(s) to reuse. | 1304 | ;; only have one, or very few, frame(s) to reuse. |
| 1231 | (cond (;; When the target is tty, every existing frame is reusable. | 1305 | (cond ((null display) |
| 1232 | (null display) | 1306 | ;; When the target is tty, every existing frame is reusable. |
| 1233 | (setq frame (desktop--find-frame nil display))) | 1307 | (setq frame (desktop--find-frame nil display))) |
| 1234 | (;; If the frame has its own minibuffer, let's see whether | 1308 | ((car (setq mini (cdr (assq 'desktop--mini frame-cfg)))) |
| 1309 | ;; If the frame has its own minibuffer, let's see whether | ||
| 1235 | ;; that frame has already been loaded (which can happen after | 1310 | ;; that frame has already been loaded (which can happen after |
| 1236 | ;; M-x desktop-read). | 1311 | ;; M-x desktop-read). |
| 1237 | (car (setq mini (cdr (assq 'desktop-mini frame-cfg)))) | 1312 | (setq frame (desktop--find-frame |
| 1238 | (setq frame (or (desktop--find-frame | 1313 | (lambda (f m) |
| 1239 | (lambda (f m) | 1314 | (equal (frame-parameter f 'desktop--mini) m)) |
| 1240 | (equal (frame-parameter f 'desktop-mini) m)) | 1315 | display mini)) |
| 1241 | display mini)))) | 1316 | ;; If it has not been loaded, and it is not a minibuffer-only frame, |
| 1242 | (;; For minibufferless frames, check whether they already exist, | 1317 | ;; let's look for an existing non-minibuffer-only frame to reuse. |
| 1318 | (unless (or frame (eq (cdr (assq 'minibuffer frame-cfg)) 'only)) | ||
| 1319 | (setq frame (desktop--find-frame | ||
| 1320 | (lambda (f) | ||
| 1321 | (let ((w (frame-parameter f 'minibuffer))) | ||
| 1322 | (and (window-live-p w) | ||
| 1323 | (window-minibuffer-p w) | ||
| 1324 | (eq (window-frame w) f)))) | ||
| 1325 | display)))) | ||
| 1326 | (mini | ||
| 1327 | ;; For minibufferless frames, check whether they already exist, | ||
| 1243 | ;; and that they are linked to the right minibuffer frame. | 1328 | ;; and that they are linked to the right minibuffer frame. |
| 1244 | mini | ||
| 1245 | (setq frame (desktop--find-frame | 1329 | (setq frame (desktop--find-frame |
| 1246 | (lambda (f n) | 1330 | (lambda (f n) |
| 1247 | (let ((m (frame-parameter f 'desktop-mini))) | 1331 | (pcase-let (((and m `(,hasmini ,num)) |
| 1332 | (frame-parameter f 'desktop--mini))) | ||
| 1248 | (and m | 1333 | (and m |
| 1249 | (null (cl-first m)) | 1334 | (null hasmini) |
| 1250 | (= (cl-second m) n) | 1335 | (= num n) |
| 1251 | (equal (cl-second (frame-parameter | 1336 | (equal (cl-second (frame-parameter |
| 1252 | (window-frame (minibuffer-window f)) | 1337 | (window-frame (minibuffer-window f)) |
| 1253 | 'desktop-mini)) | 1338 | 'desktop--mini)) |
| 1254 | n)))) | 1339 | n)))) |
| 1255 | display (cl-second mini)))) | 1340 | display (cl-second mini)))) |
| 1256 | (;; Default to just finding a frame in the same display. | 1341 | (t |
| 1257 | t | 1342 | ;; Default to just finding a frame in the same display. |
| 1258 | (setq frame (desktop--find-frame nil display)))) | 1343 | (setq frame (desktop--find-frame nil display)))) |
| 1259 | ;; If found, remove from the list. | 1344 | ;; If found, remove from the list. |
| 1260 | (when frame | 1345 | (when frame |
| @@ -1289,7 +1374,7 @@ its window state. Internal use only." | |||
| 1289 | (visible (assq 'visibility filtered-cfg))) | 1374 | (visible (assq 'visibility filtered-cfg))) |
| 1290 | (setq filtered-cfg (cl-delete-if (lambda (p) | 1375 | (setq filtered-cfg (cl-delete-if (lambda (p) |
| 1291 | (memq p '(visibility fullscreen width height))) | 1376 | (memq p '(visibility fullscreen width height))) |
| 1292 | filtered-cfg)) | 1377 | filtered-cfg :key #'car)) |
| 1293 | (when width | 1378 | (when width |
| 1294 | (setq filtered-cfg (append `((user-size . t) (width . ,width)) | 1379 | (setq filtered-cfg (append `((user-size . t) (width . ,width)) |
| 1295 | filtered-cfg))) | 1380 | filtered-cfg))) |
| @@ -1300,10 +1385,29 @@ its window state. Internal use only." | |||
| 1300 | (push visible alt-cfg) | 1385 | (push visible alt-cfg) |
| 1301 | (push (cons 'fullscreen fullscreen) alt-cfg))) | 1386 | (push (cons 'fullscreen fullscreen) alt-cfg))) |
| 1302 | 1387 | ||
| 1303 | ;; Time to select or create a frame an apply the big bunch of parameters | 1388 | ;; Time to find or create a frame an apply the big bunch of parameters. |
| 1304 | (if (setq frame (desktop--select-frame display filtered-cfg)) | 1389 | ;; If a frame needs to be created and it falls partially or wholly offscreen, |
| 1305 | (modify-frame-parameters frame filtered-cfg) | 1390 | ;; sometimes it gets "pushed back" onscreen; however, moving it afterwards is |
| 1306 | (setq frame (make-frame-on-display display filtered-cfg))) | 1391 | ;; allowed. So we create the frame as invisible and then reapply the full |
| 1392 | ;; parameter list (including position and size parameters). | ||
| 1393 | (setq frame (or (desktop--select-frame display filtered-cfg) | ||
| 1394 | (make-frame-on-display display | ||
| 1395 | (cons '(visibility) | ||
| 1396 | (cl-loop | ||
| 1397 | for param in '(left top width height minibuffer) | ||
| 1398 | collect (assq param filtered-cfg)))))) | ||
| 1399 | (modify-frame-parameters frame | ||
| 1400 | (if (eq (frame-parameter frame 'fullscreen) fullscreen) | ||
| 1401 | ;; Workaround for bug#14949 | ||
| 1402 | (assq-delete-all 'fullscreen filtered-cfg) | ||
| 1403 | filtered-cfg)) | ||
| 1404 | |||
| 1405 | ;; If requested, force frames to be onscreen. | ||
| 1406 | (when (and desktop-restore-forces-onscreen | ||
| 1407 | ;; FIXME: iconified frames should be checked too, | ||
| 1408 | ;; but it is impossible without deiconifying them. | ||
| 1409 | (not (eq (frame-parameter frame 'visibility) 'icon))) | ||
| 1410 | (desktop--move-onscreen frame)) | ||
| 1307 | 1411 | ||
| 1308 | ;; Let's give the finishing touches (visibility, tool-bar, maximization). | 1412 | ;; Let's give the finishing touches (visibility, tool-bar, maximization). |
| 1309 | (when lines (push lines alt-cfg)) | 1413 | (when lines (push lines alt-cfg)) |
| @@ -1316,14 +1420,12 @@ its window state. Internal use only." | |||
| 1316 | ;; Order: default minibuffer frame | 1420 | ;; Order: default minibuffer frame |
| 1317 | ;; other frames with minibuffer, ascending ID | 1421 | ;; other frames with minibuffer, ascending ID |
| 1318 | ;; minibufferless frames, ascending ID | 1422 | ;; minibufferless frames, ascending ID |
| 1319 | (let ((dm1 (cdr (assq 'desktop-mini (car state1)))) | 1423 | (pcase-let ((`(,_p1 ,hasmini1 ,num1 ,default1) (assq 'desktop--mini (car state1))) |
| 1320 | (dm2 (cdr (assq 'desktop-mini (car state2))))) | 1424 | (`(,_p2 ,hasmini2 ,num2 ,default2) (assq 'desktop--mini (car state2)))) |
| 1321 | (cond ((cl-third dm1) t) | 1425 | (cond (default1 t) |
| 1322 | ((cl-third dm2) nil) | 1426 | (default2 nil) |
| 1323 | ((eq (cl-first dm1) (cl-first dm2)) | 1427 | ((eq hasmini1 hasmini2) (< num1 num2)) |
| 1324 | (< (cl-second dm1) (cl-second dm2))) | 1428 | (t hasmini1)))) |
| 1325 | (t | ||
| 1326 | (cl-first dm1))))) | ||
| 1327 | 1429 | ||
| 1328 | (defun desktop-restoring-frames-p () | 1430 | (defun desktop-restoring-frames-p () |
| 1329 | "True if calling `desktop-restore-frames' will actually restore frames." | 1431 | "True if calling `desktop-restore-frames' will actually restore frames." |
| @@ -1349,10 +1451,10 @@ being set (usually, by reading it from the desktop)." | |||
| 1349 | 1451 | ||
| 1350 | (dolist (state desktop-saved-frame-states) | 1452 | (dolist (state desktop-saved-frame-states) |
| 1351 | (condition-case err | 1453 | (condition-case err |
| 1352 | (let* ((frame-cfg (car state)) | 1454 | (pcase-let* ((`(,frame-cfg . ,window-cfg) state) |
| 1353 | (window-cfg (cdr state)) | 1455 | ((and d-mini `(,hasmini ,num ,default)) |
| 1354 | (d-mini (cdr (assq 'desktop-mini frame-cfg))) | 1456 | (cdr (assq 'desktop--mini frame-cfg))) |
| 1355 | num frame to-tty) | 1457 | (frame nil) (to-tty nil)) |
| 1356 | ;; Only set target if forcing displays and the target display is different. | 1458 | ;; Only set target if forcing displays and the target display is different. |
| 1357 | (if (or (not forcing) | 1459 | (if (or (not forcing) |
| 1358 | (equal target (or (assq 'display frame-cfg) '(display . nil)))) | 1460 | (equal target (or (assq 'display frame-cfg) '(display . nil)))) |
| @@ -1373,17 +1475,16 @@ being set (usually, by reading it from the desktop)." | |||
| 1373 | ;; global state; it's best to do it here than add a bunch of global | 1475 | ;; global state; it's best to do it here than add a bunch of global |
| 1374 | ;; variables to pass info back-and-forth to/from the filter function. | 1476 | ;; variables to pass info back-and-forth to/from the filter function. |
| 1375 | (cond | 1477 | (cond |
| 1376 | ((null d-mini)) ;; No desktop-mini. Process as normal frame. | 1478 | ((null d-mini)) ;; No desktop--mini. Process as normal frame. |
| 1377 | (to-tty) ;; Ignore minibuffer stuff and process as normal frame. | 1479 | (to-tty) ;; Ignore minibuffer stuff and process as normal frame. |
| 1378 | ((cl-first d-mini) ;; Frame has minibuffer (or it is minibuffer-only). | 1480 | (hasmini ;; Frame has minibuffer (or it is minibuffer-only). |
| 1379 | (setq num (cl-second d-mini)) | ||
| 1380 | (when (eq (cdr (assq 'minibuffer frame-cfg)) 'only) | 1481 | (when (eq (cdr (assq 'minibuffer frame-cfg)) 'only) |
| 1381 | (setq frame-cfg (append '((tool-bar-lines . 0) (menu-bar-lines . 0)) | 1482 | (setq frame-cfg (append '((tool-bar-lines . 0) (menu-bar-lines . 0)) |
| 1382 | frame-cfg)))) | 1483 | frame-cfg)))) |
| 1383 | (t ;; Frame depends on other frame's minibuffer window. | 1484 | (t ;; Frame depends on other frame's minibuffer window. |
| 1384 | (let ((mb-frame (cdr (assq (cl-second d-mini) frame-mb-map)))) | 1485 | (let ((mb-frame (cdr (assq num frame-mb-map)))) |
| 1385 | (unless (frame-live-p mb-frame) | 1486 | (unless (frame-live-p mb-frame) |
| 1386 | (error "Minibuffer frame %s not found" (cl-second d-mini))) | 1487 | (error "Minibuffer frame %s not found" num)) |
| 1387 | (let ((mb-param (assq 'minibuffer frame-cfg)) | 1488 | (let ((mb-param (assq 'minibuffer frame-cfg)) |
| 1388 | (mb-window (minibuffer-window mb-frame))) | 1489 | (mb-window (minibuffer-window mb-frame))) |
| 1389 | (unless (and (window-live-p mb-window) | 1490 | (unless (and (window-live-p mb-window) |
| @@ -1396,12 +1497,16 @@ being set (usually, by reading it from the desktop)." | |||
| 1396 | ;; restore the window config. | 1497 | ;; restore the window config. |
| 1397 | (setq frame (desktop--make-frame frame-cfg window-cfg)) | 1498 | (setq frame (desktop--make-frame frame-cfg window-cfg)) |
| 1398 | ;; Set default-minibuffer if required. | 1499 | ;; Set default-minibuffer if required. |
| 1399 | (when (cl-third d-mini) (setq default-minibuffer-frame frame)) | 1500 | (when default (setq default-minibuffer-frame frame)) |
| 1400 | ;; Store frame/NUM to assign to minibufferless frames. | 1501 | ;; Store NUM/frame to assign to minibufferless frames. |
| 1401 | (when num (push (cons num frame) frame-mb-map)))) | 1502 | (when hasmini (push (cons num frame) frame-mb-map)))) |
| 1402 | (error | 1503 | (error |
| 1403 | (delay-warning 'desktop (error-message-string err) :error)))) | 1504 | (delay-warning 'desktop (error-message-string err) :error)))) |
| 1404 | 1505 | ||
| 1506 | ;; In case we try to delete the initial frame, we want to make sure that | ||
| 1507 | ;; other frames are already visible (discussed in thread for bug#14841). | ||
| 1508 | (sit-for 0 t) | ||
| 1509 | |||
| 1405 | ;; Delete remaining frames, but do not fail if some resist being deleted. | 1510 | ;; Delete remaining frames, but do not fail if some resist being deleted. |
| 1406 | (unless (eq desktop-restoring-reuses-frames 'keep) | 1511 | (unless (eq desktop-restoring-reuses-frames 'keep) |
| 1407 | (dolist (frame desktop--reuse-list) | 1512 | (dolist (frame desktop--reuse-list) |
diff --git a/lisp/dired-x.el b/lisp/dired-x.el index ddb632db692..0c432593909 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el | |||
| @@ -331,9 +331,9 @@ See also the functions: | |||
| 331 | ;; Mark files with some extension. | 331 | ;; Mark files with some extension. |
| 332 | (defun dired-mark-extension (extension &optional marker-char) | 332 | (defun dired-mark-extension (extension &optional marker-char) |
| 333 | "Mark all files with a certain EXTENSION for use in later commands. | 333 | "Mark all files with a certain EXTENSION for use in later commands. |
| 334 | A `.' is *not* automatically prepended to the string entered." | 334 | A `.' is *not* automatically prepended to the string entered. |
| 335 | ;; EXTENSION may also be a list of extensions instead of a single one. | 335 | EXTENSION may also be a list of extensions instead of a single one. |
| 336 | ;; Optional MARKER-CHAR is marker to use. | 336 | Optional MARKER-CHAR is marker to use." |
| 337 | (interactive "sMarking extension: \nP") | 337 | (interactive "sMarking extension: \nP") |
| 338 | (or (listp extension) | 338 | (or (listp extension) |
| 339 | (setq extension (list extension))) | 339 | (setq extension (list extension))) |
diff --git a/lisp/dired.el b/lisp/dired.el index 2a7d9a297f0..c871761bb3c 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -4367,7 +4367,7 @@ instead. | |||
| 4367 | 4367 | ||
| 4368 | ;;;*** | 4368 | ;;;*** |
| 4369 | 4369 | ||
| 4370 | ;;;### (autoloads nil "dired-x" "dired-x.el" "9bfe6b761cb88b4d3ab78a7905979371") | 4370 | ;;;### (autoloads nil "dired-x" "dired-x.el" "1419d865898f84c17f172320e578380c") |
| 4371 | ;;; Generated autoloads from dired-x.el | 4371 | ;;; Generated autoloads from dired-x.el |
| 4372 | 4372 | ||
| 4373 | (autoload 'dired-jump "dired-x" "\ | 4373 | (autoload 'dired-jump "dired-x" "\ |
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 0728e86d072..aee48eef668 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el | |||
| @@ -102,22 +102,6 @@ The value used here is passed to `quit-restore-window'." | |||
| 102 | This is to optimize `debugger-make-xrefs'.") | 102 | This is to optimize `debugger-make-xrefs'.") |
| 103 | 103 | ||
| 104 | (defvar debugger-outer-match-data) | 104 | (defvar debugger-outer-match-data) |
| 105 | (defvar debugger-outer-load-read-function) | ||
| 106 | (defvar debugger-outer-overriding-local-map) | ||
| 107 | (defvar debugger-outer-overriding-terminal-local-map) | ||
| 108 | (defvar debugger-outer-track-mouse) | ||
| 109 | (defvar debugger-outer-last-command) | ||
| 110 | (defvar debugger-outer-this-command) | ||
| 111 | (defvar debugger-outer-unread-command-events) | ||
| 112 | (defvar debugger-outer-unread-post-input-method-events) | ||
| 113 | (defvar debugger-outer-last-input-event) | ||
| 114 | (defvar debugger-outer-last-command-event) | ||
| 115 | (defvar debugger-outer-last-nonmenu-event) | ||
| 116 | (defvar debugger-outer-last-event-frame) | ||
| 117 | (defvar debugger-outer-standard-input) | ||
| 118 | (defvar debugger-outer-standard-output) | ||
| 119 | (defvar debugger-outer-inhibit-redisplay) | ||
| 120 | (defvar debugger-outer-cursor-in-echo-area) | ||
| 121 | (defvar debugger-will-be-back nil | 105 | (defvar debugger-will-be-back nil |
| 122 | "Non-nil if we expect to get back in the debugger soon.") | 106 | "Non-nil if we expect to get back in the debugger soon.") |
| 123 | 107 | ||
| @@ -174,24 +158,6 @@ first will be printed into the backtrace buffer." | |||
| 174 | ;; Save the outer values of these vars for the `e' command | 158 | ;; Save the outer values of these vars for the `e' command |
| 175 | ;; before we replace the values. | 159 | ;; before we replace the values. |
| 176 | (debugger-outer-match-data (match-data)) | 160 | (debugger-outer-match-data (match-data)) |
| 177 | (debugger-outer-load-read-function load-read-function) | ||
| 178 | (debugger-outer-overriding-local-map overriding-local-map) | ||
| 179 | (debugger-outer-overriding-terminal-local-map | ||
| 180 | overriding-terminal-local-map) | ||
| 181 | (debugger-outer-track-mouse track-mouse) | ||
| 182 | (debugger-outer-last-command last-command) | ||
| 183 | (debugger-outer-this-command this-command) | ||
| 184 | (debugger-outer-unread-command-events unread-command-events) | ||
| 185 | (debugger-outer-unread-post-input-method-events | ||
| 186 | unread-post-input-method-events) | ||
| 187 | (debugger-outer-last-input-event last-input-event) | ||
| 188 | (debugger-outer-last-command-event last-command-event) | ||
| 189 | (debugger-outer-last-nonmenu-event last-nonmenu-event) | ||
| 190 | (debugger-outer-last-event-frame last-event-frame) | ||
| 191 | (debugger-outer-standard-input standard-input) | ||
| 192 | (debugger-outer-standard-output standard-output) | ||
| 193 | (debugger-outer-inhibit-redisplay inhibit-redisplay) | ||
| 194 | (debugger-outer-cursor-in-echo-area cursor-in-echo-area) | ||
| 195 | (debugger-with-timeout-suspend (with-timeout-suspend))) | 161 | (debugger-with-timeout-suspend (with-timeout-suspend))) |
| 196 | ;; Set this instead of binding it, so that `q' | 162 | ;; Set this instead of binding it, so that `q' |
| 197 | ;; will not restore it. | 163 | ;; will not restore it. |
| @@ -294,26 +260,6 @@ first will be printed into the backtrace buffer." | |||
| 294 | (funcall (nth 0 debugger-previous-state)))))) | 260 | (funcall (nth 0 debugger-previous-state)))))) |
| 295 | (with-timeout-unsuspend debugger-with-timeout-suspend) | 261 | (with-timeout-unsuspend debugger-with-timeout-suspend) |
| 296 | (set-match-data debugger-outer-match-data))) | 262 | (set-match-data debugger-outer-match-data))) |
| 297 | ;; Put into effect the modified values of these variables | ||
| 298 | ;; in case the user set them with the `e' command. | ||
| 299 | (setq load-read-function debugger-outer-load-read-function) | ||
| 300 | (setq overriding-local-map debugger-outer-overriding-local-map) | ||
| 301 | (setq overriding-terminal-local-map | ||
| 302 | debugger-outer-overriding-terminal-local-map) | ||
| 303 | (setq track-mouse debugger-outer-track-mouse) | ||
| 304 | (setq last-command debugger-outer-last-command) | ||
| 305 | (setq this-command debugger-outer-this-command) | ||
| 306 | (setq unread-command-events debugger-outer-unread-command-events) | ||
| 307 | (setq unread-post-input-method-events | ||
| 308 | debugger-outer-unread-post-input-method-events) | ||
| 309 | (setq last-input-event debugger-outer-last-input-event) | ||
| 310 | (setq last-command-event debugger-outer-last-command-event) | ||
| 311 | (setq last-nonmenu-event debugger-outer-last-nonmenu-event) | ||
| 312 | (setq last-event-frame debugger-outer-last-event-frame) | ||
| 313 | (setq standard-input debugger-outer-standard-input) | ||
| 314 | (setq standard-output debugger-outer-standard-output) | ||
| 315 | (setq inhibit-redisplay debugger-outer-inhibit-redisplay) | ||
| 316 | (setq cursor-in-echo-area debugger-outer-cursor-in-echo-area) | ||
| 317 | (setq debug-on-next-call debugger-step-after-exit) | 263 | (setq debug-on-next-call debugger-step-after-exit) |
| 318 | debugger-value))) | 264 | debugger-value))) |
| 319 | 265 | ||
| @@ -518,18 +464,21 @@ removes itself from that hook." | |||
| 518 | (setq debugger-jumping-flag nil) | 464 | (setq debugger-jumping-flag nil) |
| 519 | (remove-hook 'post-command-hook 'debugger-reenable)) | 465 | (remove-hook 'post-command-hook 'debugger-reenable)) |
| 520 | 466 | ||
| 521 | (defun debugger-frame-number () | 467 | (defun debugger-frame-number (&optional skip-base) |
| 522 | "Return number of frames in backtrace before the one point points at." | 468 | "Return number of frames in backtrace before the one point points at." |
| 523 | (save-excursion | 469 | (save-excursion |
| 524 | (beginning-of-line) | 470 | (beginning-of-line) |
| 471 | (if (looking-at " *;;;\\|[a-z]") | ||
| 472 | (error "This line is not a function call")) | ||
| 525 | (let ((opoint (point)) | 473 | (let ((opoint (point)) |
| 526 | (count 0)) | 474 | (count 0)) |
| 527 | (while (not (eq (cadr (backtrace-frame count)) 'debug)) | 475 | (unless skip-base |
| 528 | (setq count (1+ count))) | 476 | (while (not (eq (cadr (backtrace-frame count)) 'debug)) |
| 529 | ;; Skip debug--implement-debug-on-entry frame. | 477 | (setq count (1+ count))) |
| 530 | (when (eq 'debug--implement-debug-on-entry | 478 | ;; Skip debug--implement-debug-on-entry frame. |
| 531 | (cadr (backtrace-frame (1+ count)))) | 479 | (when (eq 'debug--implement-debug-on-entry |
| 532 | (setq count (+ 2 count))) | 480 | (cadr (backtrace-frame (1+ count)))) |
| 481 | (setq count (+ 2 count)))) | ||
| 533 | (goto-char (point-min)) | 482 | (goto-char (point-min)) |
| 534 | (when (looking-at "Debugger entered--\\(Lisp error\\|returning value\\):") | 483 | (when (looking-at "Debugger entered--\\(Lisp error\\|returning value\\):") |
| 535 | (goto-char (match-end 0)) | 484 | (goto-char (match-end 0)) |
| @@ -551,12 +500,8 @@ removes itself from that hook." | |||
| 551 | "Request entry to debugger when this frame exits. | 500 | "Request entry to debugger when this frame exits. |
| 552 | Applies to the frame whose line point is on in the backtrace." | 501 | Applies to the frame whose line point is on in the backtrace." |
| 553 | (interactive) | 502 | (interactive) |
| 554 | (save-excursion | ||
| 555 | (beginning-of-line) | ||
| 556 | (if (looking-at " *;;;\\|[a-z]") | ||
| 557 | (error "This line is not a function call"))) | ||
| 558 | (beginning-of-line) | ||
| 559 | (backtrace-debug (debugger-frame-number) t) | 503 | (backtrace-debug (debugger-frame-number) t) |
| 504 | (beginning-of-line) | ||
| 560 | (if (= (following-char) ? ) | 505 | (if (= (following-char) ? ) |
| 561 | (let ((inhibit-read-only t)) | 506 | (let ((inhibit-read-only t)) |
| 562 | (delete-char 1) | 507 | (delete-char 1) |
| @@ -567,12 +512,8 @@ Applies to the frame whose line point is on in the backtrace." | |||
| 567 | "Do not enter debugger when this frame exits. | 512 | "Do not enter debugger when this frame exits. |
| 568 | Applies to the frame whose line point is on in the backtrace." | 513 | Applies to the frame whose line point is on in the backtrace." |
| 569 | (interactive) | 514 | (interactive) |
| 570 | (save-excursion | ||
| 571 | (beginning-of-line) | ||
| 572 | (if (looking-at " *;;;\\|[a-z]") | ||
| 573 | (error "This line is not a function call"))) | ||
| 574 | (beginning-of-line) | ||
| 575 | (backtrace-debug (debugger-frame-number) nil) | 515 | (backtrace-debug (debugger-frame-number) nil) |
| 516 | (beginning-of-line) | ||
| 576 | (if (= (following-char) ?*) | 517 | (if (= (following-char) ?*) |
| 577 | (let ((inhibit-read-only t)) | 518 | (let ((inhibit-read-only t)) |
| 578 | (delete-char 1) | 519 | (delete-char 1) |
| @@ -583,59 +524,33 @@ Applies to the frame whose line point is on in the backtrace." | |||
| 583 | "Run BODY in original environment." | 524 | "Run BODY in original environment." |
| 584 | (declare (indent 0)) | 525 | (declare (indent 0)) |
| 585 | `(save-excursion | 526 | `(save-excursion |
| 586 | (if (null (buffer-name debugger-old-buffer)) | 527 | (if (null (buffer-live-p debugger-old-buffer)) |
| 587 | ;; old buffer deleted | 528 | ;; old buffer deleted |
| 588 | (setq debugger-old-buffer (current-buffer))) | 529 | (setq debugger-old-buffer (current-buffer))) |
| 589 | (set-buffer debugger-old-buffer) | 530 | (set-buffer debugger-old-buffer) |
| 590 | (let ((load-read-function debugger-outer-load-read-function) | 531 | (set-match-data debugger-outer-match-data) |
| 591 | (overriding-terminal-local-map | 532 | (prog1 |
| 592 | debugger-outer-overriding-terminal-local-map) | 533 | (progn ,@body) |
| 593 | (overriding-local-map debugger-outer-overriding-local-map) | 534 | (setq debugger-outer-match-data (match-data))))) |
| 594 | (track-mouse debugger-outer-track-mouse) | ||
| 595 | (last-command debugger-outer-last-command) | ||
| 596 | (this-command debugger-outer-this-command) | ||
| 597 | (unread-command-events debugger-outer-unread-command-events) | ||
| 598 | (unread-post-input-method-events | ||
| 599 | debugger-outer-unread-post-input-method-events) | ||
| 600 | (last-input-event debugger-outer-last-input-event) | ||
| 601 | (last-command-event debugger-outer-last-command-event) | ||
| 602 | (last-nonmenu-event debugger-outer-last-nonmenu-event) | ||
| 603 | (last-event-frame debugger-outer-last-event-frame) | ||
| 604 | (standard-input debugger-outer-standard-input) | ||
| 605 | (standard-output debugger-outer-standard-output) | ||
| 606 | (inhibit-redisplay debugger-outer-inhibit-redisplay) | ||
| 607 | (cursor-in-echo-area debugger-outer-cursor-in-echo-area)) | ||
| 608 | (set-match-data debugger-outer-match-data) | ||
| 609 | (prog1 | ||
| 610 | (progn ,@body) | ||
| 611 | (setq debugger-outer-match-data (match-data)) | ||
| 612 | (setq debugger-outer-load-read-function load-read-function) | ||
| 613 | (setq debugger-outer-overriding-terminal-local-map | ||
| 614 | overriding-terminal-local-map) | ||
| 615 | (setq debugger-outer-overriding-local-map overriding-local-map) | ||
| 616 | (setq debugger-outer-track-mouse track-mouse) | ||
| 617 | (setq debugger-outer-last-command last-command) | ||
| 618 | (setq debugger-outer-this-command this-command) | ||
| 619 | (setq debugger-outer-unread-command-events unread-command-events) | ||
| 620 | (setq debugger-outer-unread-post-input-method-events | ||
| 621 | unread-post-input-method-events) | ||
| 622 | (setq debugger-outer-last-input-event last-input-event) | ||
| 623 | (setq debugger-outer-last-command-event last-command-event) | ||
| 624 | (setq debugger-outer-last-nonmenu-event last-nonmenu-event) | ||
| 625 | (setq debugger-outer-last-event-frame last-event-frame) | ||
| 626 | (setq debugger-outer-standard-input standard-input) | ||
| 627 | (setq debugger-outer-standard-output standard-output) | ||
| 628 | (setq debugger-outer-inhibit-redisplay inhibit-redisplay) | ||
| 629 | (setq debugger-outer-cursor-in-echo-area cursor-in-echo-area) | ||
| 630 | )))) | ||
| 631 | 535 | ||
| 632 | (defun debugger-eval-expression (exp) | 536 | (defun debugger-eval-expression (exp) |
| 633 | "Eval an expression, in an environment like that outside the debugger." | 537 | "Eval an expression, in an environment like that outside the debugger. |
| 538 | The environment used is the one when entering the activation frame at point." | ||
| 634 | (interactive | 539 | (interactive |
| 635 | (list (read-from-minibuffer "Eval: " | 540 | (list (read-from-minibuffer "Eval: " |
| 636 | nil read-expression-map t | 541 | nil read-expression-map t |
| 637 | 'read-expression-history))) | 542 | 'read-expression-history))) |
| 638 | (debugger-env-macro (eval-expression exp))) | 543 | (let ((nframe (condition-case nil (1+ (debugger-frame-number 'skip-base)) |
| 544 | (error 0))) ;; If on first line. | ||
| 545 | (base (if (eq 'debug--implement-debug-on-entry | ||
| 546 | (cadr (backtrace-frame 1 'debug))) | ||
| 547 | 'debug--implement-debug-on-entry 'debug))) | ||
| 548 | (debugger-env-macro | ||
| 549 | (let ((val (backtrace-eval exp nframe base))) | ||
| 550 | (prog1 | ||
| 551 | (prin1 val t) | ||
| 552 | (let ((str (eval-expression-print-format val))) | ||
| 553 | (if str (princ str t)))))))) | ||
| 639 | 554 | ||
| 640 | (defvar debugger-mode-map | 555 | (defvar debugger-mode-map |
| 641 | (let ((map (make-keymap)) | 556 | (let ((map (make-keymap)) |
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 36c72f3a3bd..ae20e5270e1 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el | |||
| @@ -2088,8 +2088,6 @@ expressions; a `progn' form will be returned enclosing these forms." | |||
| 2088 | (defvar edebug-coverage) ; the coverage results of each expression of function. | 2088 | (defvar edebug-coverage) ; the coverage results of each expression of function. |
| 2089 | 2089 | ||
| 2090 | (defvar edebug-buffer) ; which buffer the function is in. | 2090 | (defvar edebug-buffer) ; which buffer the function is in. |
| 2091 | (defvar edebug-outside-executing-macro) | ||
| 2092 | (defvar edebug-outside-defining-kbd-macro) | ||
| 2093 | 2091 | ||
| 2094 | (defvar edebug-execution-mode 'step) ; Current edebug mode set by user. | 2092 | (defvar edebug-execution-mode 'step) ; Current edebug mode set by user. |
| 2095 | (defvar edebug-next-execution-mode nil) ; Use once instead of initial mode. | 2093 | (defvar edebug-next-execution-mode nil) ; Use once instead of initial mode. |
| @@ -2097,12 +2095,6 @@ expressions; a `progn' form will be returned enclosing these forms." | |||
| 2097 | (defvar edebug-outside-debug-on-error) ; the value of debug-on-error outside | 2095 | (defvar edebug-outside-debug-on-error) ; the value of debug-on-error outside |
| 2098 | (defvar edebug-outside-debug-on-quit) ; the value of debug-on-quit outside | 2096 | (defvar edebug-outside-debug-on-quit) ; the value of debug-on-quit outside |
| 2099 | 2097 | ||
| 2100 | |||
| 2101 | (defvar edebug-outside-pre-command-hook) | ||
| 2102 | (defvar edebug-outside-post-command-hook) | ||
| 2103 | |||
| 2104 | (defvar cl-lexical-debug) ;; Defined in cl.el | ||
| 2105 | |||
| 2106 | ;;; Handling signals | 2098 | ;;; Handling signals |
| 2107 | 2099 | ||
| 2108 | (defun edebug-signal (signal-name signal-data) | 2100 | (defun edebug-signal (signal-name signal-data) |
| @@ -2154,10 +2146,7 @@ error is signaled again." | |||
| 2154 | ;; Binding these may not be the right thing to do. | 2146 | ;; Binding these may not be the right thing to do. |
| 2155 | ;; We want to allow the global values to be changed. | 2147 | ;; We want to allow the global values to be changed. |
| 2156 | (debug-on-error (or debug-on-error edebug-on-error)) | 2148 | (debug-on-error (or debug-on-error edebug-on-error)) |
| 2157 | (debug-on-quit edebug-on-quit) | 2149 | (debug-on-quit edebug-on-quit)) |
| 2158 | |||
| 2159 | ;; Lexical bindings must be uncompiled for this to work. | ||
| 2160 | (cl-lexical-debug t)) | ||
| 2161 | (unwind-protect | 2150 | (unwind-protect |
| 2162 | (let ((signal-hook-function 'edebug-signal)) | 2151 | (let ((signal-hook-function 'edebug-signal)) |
| 2163 | (setq edebug-execution-mode (or edebug-next-execution-mode | 2152 | (setq edebug-execution-mode (or edebug-next-execution-mode |
| @@ -2386,9 +2375,6 @@ MSG is printed after `::::} '." | |||
| 2386 | (defvar edebug-window-data) ; window and window-start for current function | 2375 | (defvar edebug-window-data) ; window and window-start for current function |
| 2387 | (defvar edebug-outside-windows) ; outside window configuration | 2376 | (defvar edebug-outside-windows) ; outside window configuration |
| 2388 | (defvar edebug-eval-buffer) ; for the evaluation list. | 2377 | (defvar edebug-eval-buffer) ; for the evaluation list. |
| 2389 | (defvar edebug-outside-o-a-p) ; outside overlay-arrow-position | ||
| 2390 | (defvar edebug-outside-o-a-s) ; outside overlay-arrow-string | ||
| 2391 | (defvar edebug-outside-c-i-e-a) ; outside cursor-in-echo-area | ||
| 2392 | (defvar edebug-outside-d-c-i-n-s-w) ; outside default-cursor-in-non-selected-windows | 2378 | (defvar edebug-outside-d-c-i-n-s-w) ; outside default-cursor-in-non-selected-windows |
| 2393 | 2379 | ||
| 2394 | (defvar edebug-eval-list nil) ;; List of expressions to evaluate. | 2380 | (defvar edebug-eval-list nil) ;; List of expressions to evaluate. |
| @@ -2398,8 +2384,6 @@ MSG is printed after `::::} '." | |||
| 2398 | ;; Emacs 19 adds an arg to mark and mark-marker. | 2384 | ;; Emacs 19 adds an arg to mark and mark-marker. |
| 2399 | (defalias 'edebug-mark-marker 'mark-marker) | 2385 | (defalias 'edebug-mark-marker 'mark-marker) |
| 2400 | 2386 | ||
| 2401 | (defvar edebug-outside-unread-command-events) | ||
| 2402 | |||
| 2403 | (defun edebug--display (value offset-index arg-mode) | 2387 | (defun edebug--display (value offset-index arg-mode) |
| 2404 | (unless (marker-position edebug-def-mark) | 2388 | (unless (marker-position edebug-def-mark) |
| 2405 | ;; The buffer holding the source has been killed. | 2389 | ;; The buffer holding the source has been killed. |
| @@ -2421,7 +2405,6 @@ MSG is printed after `::::} '." | |||
| 2421 | (edebug-outside-buffer (current-buffer)) | 2405 | (edebug-outside-buffer (current-buffer)) |
| 2422 | (edebug-outside-point (point)) | 2406 | (edebug-outside-point (point)) |
| 2423 | (edebug-outside-mark (edebug-mark)) | 2407 | (edebug-outside-mark (edebug-mark)) |
| 2424 | (edebug-outside-unread-command-events unread-command-events) | ||
| 2425 | edebug-outside-windows ; Window or screen configuration. | 2408 | edebug-outside-windows ; Window or screen configuration. |
| 2426 | edebug-buffer-points | 2409 | edebug-buffer-points |
| 2427 | 2410 | ||
| @@ -2431,9 +2414,6 @@ MSG is printed after `::::} '." | |||
| 2431 | edebug-trace-window | 2414 | edebug-trace-window |
| 2432 | edebug-trace-window-start | 2415 | edebug-trace-window-start |
| 2433 | 2416 | ||
| 2434 | (edebug-outside-o-a-p overlay-arrow-position) | ||
| 2435 | (edebug-outside-o-a-s overlay-arrow-string) | ||
| 2436 | (edebug-outside-c-i-e-a cursor-in-echo-area) | ||
| 2437 | (edebug-outside-d-c-i-n-s-w | 2417 | (edebug-outside-d-c-i-n-s-w |
| 2438 | (default-value 'cursor-in-non-selected-windows))) | 2418 | (default-value 'cursor-in-non-selected-windows))) |
| 2439 | (unwind-protect | 2419 | (unwind-protect |
| @@ -2445,8 +2425,7 @@ MSG is printed after `::::} '." | |||
| 2445 | ) | 2425 | ) |
| 2446 | (setq-default cursor-in-non-selected-windows t) | 2426 | (setq-default cursor-in-non-selected-windows t) |
| 2447 | (if (not (buffer-name edebug-buffer)) | 2427 | (if (not (buffer-name edebug-buffer)) |
| 2448 | (let ((debug-on-error nil)) | 2428 | (user-error "Buffer defining %s not found" edebug-function)) |
| 2449 | (error "Buffer defining %s not found" edebug-function))) | ||
| 2450 | 2429 | ||
| 2451 | (if (eq 'after arg-mode) | 2430 | (if (eq 'after arg-mode) |
| 2452 | ;; Compute result string now before windows are modified. | 2431 | ;; Compute result string now before windows are modified. |
| @@ -2486,10 +2465,9 @@ MSG is printed after `::::} '." | |||
| 2486 | ;; Check whether positions are up-to-date. | 2465 | ;; Check whether positions are up-to-date. |
| 2487 | ;; This assumes point is never before symbol. | 2466 | ;; This assumes point is never before symbol. |
| 2488 | (if (not (memq (following-char) '(?\( ?\# ?\` ))) | 2467 | (if (not (memq (following-char) '(?\( ?\# ?\` ))) |
| 2489 | (let ((debug-on-error nil)) | 2468 | (user-error "Source has changed - reevaluate definition of %s" |
| 2490 | (error "Source has changed - reevaluate definition of %s" | 2469 | edebug-function) |
| 2491 | edebug-function) | 2470 | )) |
| 2492 | ))) | ||
| 2493 | 2471 | ||
| 2494 | (setcdr edebug-window-data | 2472 | (setcdr edebug-window-data |
| 2495 | (edebug-adjust-window (cdr edebug-window-data))) | 2473 | (edebug-adjust-window (cdr edebug-window-data))) |
| @@ -2645,11 +2623,6 @@ MSG is printed after `::::} '." | |||
| 2645 | (if edebug-eval-buffer (kill-buffer edebug-eval-buffer)) | 2623 | (if edebug-eval-buffer (kill-buffer edebug-eval-buffer)) |
| 2646 | (with-timeout-unsuspend edebug-with-timeout-suspend) | 2624 | (with-timeout-unsuspend edebug-with-timeout-suspend) |
| 2647 | ;; Reset global variables to outside values in case they were changed. | 2625 | ;; Reset global variables to outside values in case they were changed. |
| 2648 | (setq | ||
| 2649 | unread-command-events edebug-outside-unread-command-events | ||
| 2650 | overlay-arrow-position edebug-outside-o-a-p | ||
| 2651 | overlay-arrow-string edebug-outside-o-a-s | ||
| 2652 | cursor-in-echo-area edebug-outside-c-i-e-a) | ||
| 2653 | (setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w) | 2626 | (setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w) |
| 2654 | ))) | 2627 | ))) |
| 2655 | 2628 | ||
| @@ -2667,27 +2640,6 @@ MSG is printed after `::::} '." | |||
| 2667 | (defvar edebug-inside-windows) | 2640 | (defvar edebug-inside-windows) |
| 2668 | (defvar edebug-interactive-p) | 2641 | (defvar edebug-interactive-p) |
| 2669 | 2642 | ||
| 2670 | (defvar edebug-outside-map) | ||
| 2671 | (defvar edebug-outside-standard-output) | ||
| 2672 | (defvar edebug-outside-standard-input) | ||
| 2673 | (defvar edebug-outside-current-prefix-arg) | ||
| 2674 | (defvar edebug-outside-last-command) | ||
| 2675 | (defvar edebug-outside-this-command) | ||
| 2676 | |||
| 2677 | ;; Note: here we have defvars for variables that are | ||
| 2678 | ;; built-in in certain versions. | ||
| 2679 | ;; Each defvar makes a difference | ||
| 2680 | ;; in versions where the variable is *not* built-in. | ||
| 2681 | |||
| 2682 | ;; Emacs 18 FIXME | ||
| 2683 | |||
| 2684 | ;; Emacs 19. | ||
| 2685 | (defvar edebug-outside-last-command-event) | ||
| 2686 | (defvar edebug-outside-last-input-event) | ||
| 2687 | (defvar edebug-outside-last-event-frame) | ||
| 2688 | (defvar edebug-outside-last-nonmenu-event) | ||
| 2689 | (defvar edebug-outside-track-mouse) | ||
| 2690 | |||
| 2691 | (defun edebug--recursive-edit (arg-mode) | 2643 | (defun edebug--recursive-edit (arg-mode) |
| 2692 | ;; Start up a recursive edit inside of edebug. | 2644 | ;; Start up a recursive edit inside of edebug. |
| 2693 | ;; The current buffer is the edebug-buffer, which is put into edebug-mode. | 2645 | ;; The current buffer is the edebug-buffer, which is put into edebug-mode. |
| @@ -2705,28 +2657,6 @@ MSG is printed after `::::} '." | |||
| 2705 | ;; The window configuration may be saved and restored | 2657 | ;; The window configuration may be saved and restored |
| 2706 | ;; during a recursive-edit | 2658 | ;; during a recursive-edit |
| 2707 | edebug-inside-windows | 2659 | edebug-inside-windows |
| 2708 | |||
| 2709 | ;; Save the outside value of executing macro. (here??) | ||
| 2710 | (edebug-outside-executing-macro executing-kbd-macro) | ||
| 2711 | (edebug-outside-pre-command-hook | ||
| 2712 | (edebug-var-status 'pre-command-hook)) | ||
| 2713 | (edebug-outside-post-command-hook | ||
| 2714 | (edebug-var-status 'post-command-hook)) | ||
| 2715 | |||
| 2716 | (edebug-outside-standard-output standard-output) | ||
| 2717 | (edebug-outside-standard-input standard-input) | ||
| 2718 | (edebug-outside-defining-kbd-macro defining-kbd-macro) | ||
| 2719 | |||
| 2720 | (edebug-outside-last-command last-command) | ||
| 2721 | (edebug-outside-this-command this-command) | ||
| 2722 | |||
| 2723 | (edebug-outside-current-prefix-arg current-prefix-arg) | ||
| 2724 | |||
| 2725 | (edebug-outside-last-input-event last-input-event) | ||
| 2726 | (edebug-outside-last-command-event last-command-event) | ||
| 2727 | (edebug-outside-last-event-frame last-event-frame) | ||
| 2728 | (edebug-outside-last-nonmenu-event last-nonmenu-event) | ||
| 2729 | (edebug-outside-track-mouse track-mouse) | ||
| 2730 | ) | 2660 | ) |
| 2731 | 2661 | ||
| 2732 | (unwind-protect | 2662 | (unwind-protect |
| @@ -2757,7 +2687,7 @@ MSG is printed after `::::} '." | |||
| 2757 | (overriding-local-map nil) | 2687 | (overriding-local-map nil) |
| 2758 | (overriding-terminal-local-map nil) | 2688 | (overriding-terminal-local-map nil) |
| 2759 | 2689 | ||
| 2760 | ;; Bind again to outside values. | 2690 | ;; Bind again to outside values. |
| 2761 | (debug-on-error edebug-outside-debug-on-error) | 2691 | (debug-on-error edebug-outside-debug-on-error) |
| 2762 | (debug-on-quit edebug-outside-debug-on-quit) | 2692 | (debug-on-quit edebug-outside-debug-on-quit) |
| 2763 | 2693 | ||
| @@ -2805,27 +2735,7 @@ MSG is printed after `::::} '." | |||
| 2805 | ;; gotta have a buffer to let its buffer local variables be set | 2735 | ;; gotta have a buffer to let its buffer local variables be set |
| 2806 | (get-buffer-create " bogus edebug buffer")) | 2736 | (get-buffer-create " bogus edebug buffer")) |
| 2807 | ));; inner let | 2737 | ));; inner let |
| 2808 | 2738 | ))) | |
| 2809 | ;; Reset global vars to outside values, in case they have been changed. | ||
| 2810 | (setq | ||
| 2811 | last-command-event edebug-outside-last-command-event | ||
| 2812 | last-command edebug-outside-last-command | ||
| 2813 | this-command edebug-outside-this-command | ||
| 2814 | current-prefix-arg edebug-outside-current-prefix-arg | ||
| 2815 | last-input-event edebug-outside-last-input-event | ||
| 2816 | last-event-frame edebug-outside-last-event-frame | ||
| 2817 | last-nonmenu-event edebug-outside-last-nonmenu-event | ||
| 2818 | track-mouse edebug-outside-track-mouse | ||
| 2819 | |||
| 2820 | standard-output edebug-outside-standard-output | ||
| 2821 | standard-input edebug-outside-standard-input | ||
| 2822 | defining-kbd-macro edebug-outside-defining-kbd-macro) | ||
| 2823 | |||
| 2824 | (setq executing-kbd-macro edebug-outside-executing-macro) | ||
| 2825 | (edebug-restore-status | ||
| 2826 | 'post-command-hook edebug-outside-post-command-hook) | ||
| 2827 | (edebug-restore-status | ||
| 2828 | 'pre-command-hook edebug-outside-pre-command-hook)))) | ||
| 2829 | 2739 | ||
| 2830 | 2740 | ||
| 2831 | ;;; Display related functions | 2741 | ;;; Display related functions |
| @@ -3423,6 +3333,9 @@ edebug-mode." | |||
| 3423 | (defmacro edebug-outside-excursion (&rest body) | 3333 | (defmacro edebug-outside-excursion (&rest body) |
| 3424 | "Evaluate an expression list in the outside context. | 3334 | "Evaluate an expression list in the outside context. |
| 3425 | Return the result of the last expression." | 3335 | Return the result of the last expression." |
| 3336 | ;; Only restores the non-variables context since all the variables let-bound | ||
| 3337 | ;; by Edebug will be properly reset to the appropriate context's value by | ||
| 3338 | ;; backtrace-eval. | ||
| 3426 | (declare (debug t)) | 3339 | (declare (debug t)) |
| 3427 | `(save-excursion ; of current-buffer | 3340 | `(save-excursion ; of current-buffer |
| 3428 | (if edebug-save-windows | 3341 | (if edebug-save-windows |
| @@ -3435,89 +3348,32 @@ Return the result of the last expression." | |||
| 3435 | (edebug-set-windows edebug-outside-windows))) | 3348 | (edebug-set-windows edebug-outside-windows))) |
| 3436 | 3349 | ||
| 3437 | (set-buffer edebug-buffer) ; why? | 3350 | (set-buffer edebug-buffer) ; why? |
| 3438 | ;; (use-local-map edebug-outside-map) | ||
| 3439 | (set-match-data edebug-outside-match-data) | 3351 | (set-match-data edebug-outside-match-data) |
| 3440 | ;; Restore outside context. | 3352 | ;; Restore outside context. |
| 3441 | (let (;; (edebug-inside-map (current-local-map)) ;; restore map?? | 3353 | (setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w) |
| 3442 | (last-command-event edebug-outside-last-command-event) | 3354 | (unwind-protect |
| 3443 | (last-command edebug-outside-last-command) | 3355 | (with-current-buffer edebug-outside-buffer ; of edebug-buffer |
| 3444 | (this-command edebug-outside-this-command) | 3356 | (goto-char edebug-outside-point) |
| 3445 | (unread-command-events edebug-outside-unread-command-events) | 3357 | (if (marker-buffer (edebug-mark-marker)) |
| 3446 | (current-prefix-arg edebug-outside-current-prefix-arg) | 3358 | (set-marker (edebug-mark-marker) edebug-outside-mark)) |
| 3447 | (last-input-event edebug-outside-last-input-event) | 3359 | ,@body) |
| 3448 | (last-event-frame edebug-outside-last-event-frame) | 3360 | |
| 3449 | (last-nonmenu-event edebug-outside-last-nonmenu-event) | 3361 | ;; Back to edebug-buffer. Restore rest of inside context. |
| 3450 | (track-mouse edebug-outside-track-mouse) | 3362 | ;; (use-local-map edebug-inside-map) |
| 3451 | (standard-output edebug-outside-standard-output) | 3363 | (if edebug-save-windows |
| 3452 | (standard-input edebug-outside-standard-input) | 3364 | ;; Restore inside windows. |
| 3453 | 3365 | (edebug-set-windows edebug-inside-windows)) | |
| 3454 | (executing-kbd-macro edebug-outside-executing-macro) | 3366 | |
| 3455 | (defining-kbd-macro edebug-outside-defining-kbd-macro) | 3367 | ;; Save values that may have been changed. |
| 3456 | ;; Get the values out of the saved statuses. | 3368 | (setq edebug-outside-d-c-i-n-s-w |
| 3457 | (pre-command-hook (cdr edebug-outside-pre-command-hook)) | 3369 | (default-value 'cursor-in-non-selected-windows)) |
| 3458 | (post-command-hook (cdr edebug-outside-post-command-hook)) | 3370 | |
| 3459 | 3371 | ;; Restore the outside saved values; don't alter | |
| 3460 | ;; See edebug-display. | 3372 | ;; the outside binding loci. |
| 3461 | (overlay-arrow-position edebug-outside-o-a-p) | 3373 | (setq-default cursor-in-non-selected-windows t)))) |
| 3462 | (overlay-arrow-string edebug-outside-o-a-s) | ||
| 3463 | (cursor-in-echo-area edebug-outside-c-i-e-a) | ||
| 3464 | ) | ||
| 3465 | (setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w) | ||
| 3466 | (unwind-protect | ||
| 3467 | (with-current-buffer edebug-outside-buffer ; of edebug-buffer | ||
| 3468 | (goto-char edebug-outside-point) | ||
| 3469 | (if (marker-buffer (edebug-mark-marker)) | ||
| 3470 | (set-marker (edebug-mark-marker) edebug-outside-mark)) | ||
| 3471 | ,@body) | ||
| 3472 | |||
| 3473 | ;; Back to edebug-buffer. Restore rest of inside context. | ||
| 3474 | ;; (use-local-map edebug-inside-map) | ||
| 3475 | (if edebug-save-windows | ||
| 3476 | ;; Restore inside windows. | ||
| 3477 | (edebug-set-windows edebug-inside-windows)) | ||
| 3478 | |||
| 3479 | ;; Save values that may have been changed. | ||
| 3480 | (setq | ||
| 3481 | edebug-outside-last-command-event last-command-event | ||
| 3482 | edebug-outside-last-command last-command | ||
| 3483 | edebug-outside-this-command this-command | ||
| 3484 | edebug-outside-unread-command-events unread-command-events | ||
| 3485 | edebug-outside-current-prefix-arg current-prefix-arg | ||
| 3486 | edebug-outside-last-input-event last-input-event | ||
| 3487 | edebug-outside-last-event-frame last-event-frame | ||
| 3488 | edebug-outside-last-nonmenu-event last-nonmenu-event | ||
| 3489 | edebug-outside-track-mouse track-mouse | ||
| 3490 | edebug-outside-standard-output standard-output | ||
| 3491 | edebug-outside-standard-input standard-input | ||
| 3492 | |||
| 3493 | edebug-outside-executing-macro executing-kbd-macro | ||
| 3494 | edebug-outside-defining-kbd-macro defining-kbd-macro | ||
| 3495 | |||
| 3496 | edebug-outside-o-a-p overlay-arrow-position | ||
| 3497 | edebug-outside-o-a-s overlay-arrow-string | ||
| 3498 | edebug-outside-c-i-e-a cursor-in-echo-area | ||
| 3499 | edebug-outside-d-c-i-n-s-w (default-value | ||
| 3500 | 'cursor-in-non-selected-windows) | ||
| 3501 | ) | ||
| 3502 | |||
| 3503 | ;; Restore the outside saved values; don't alter | ||
| 3504 | ;; the outside binding loci. | ||
| 3505 | (setcdr edebug-outside-pre-command-hook pre-command-hook) | ||
| 3506 | (setcdr edebug-outside-post-command-hook post-command-hook) | ||
| 3507 | |||
| 3508 | (setq-default cursor-in-non-selected-windows t) | ||
| 3509 | )) ; let | ||
| 3510 | )) | ||
| 3511 | |||
| 3512 | (defvar cl-debug-env) ; defined in cl; non-nil when lexical env used. | ||
| 3513 | 3374 | ||
| 3514 | (defun edebug-eval (expr) | 3375 | (defun edebug-eval (expr) |
| 3515 | ;; Are there cl lexical variables active? | 3376 | (backtrace-eval expr 0 'edebug-after)) |
| 3516 | (eval (if (and (bound-and-true-p cl-debug-env) | ||
| 3517 | (fboundp 'cl-macroexpand-all)) | ||
| 3518 | (cl-macroexpand-all expr cl-debug-env) | ||
| 3519 | expr) | ||
| 3520 | lexical-binding)) | ||
| 3521 | 3377 | ||
| 3522 | (defun edebug-safe-eval (expr) | 3378 | (defun edebug-safe-eval (expr) |
| 3523 | ;; Evaluate EXPR safely. | 3379 | ;; Evaluate EXPR safely. |
| @@ -4268,7 +4124,7 @@ With prefix argument, make it a temporary breakpoint." | |||
| 4268 | (eq (nth 1 (nth 1 frame1)) '()) | 4124 | (eq (nth 1 (nth 1 frame1)) '()) |
| 4269 | (eq (nth 1 frame2) 'edebug-enter)) | 4125 | (eq (nth 1 frame2) 'edebug-enter)) |
| 4270 | ;; `edebug-enter' calls itself on its first invocation. | 4126 | ;; `edebug-enter' calls itself on its first invocation. |
| 4271 | (if (eq (nth 1 (internal--called-interactively-p--get-frame i)) | 4127 | (if (eq (nth 1 (backtrace-frame i 'called-interactively-p)) |
| 4272 | 'edebug-enter) | 4128 | 'edebug-enter) |
| 4273 | 2 1))) | 4129 | 2 1))) |
| 4274 | 4130 | ||
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 8b149aad7bb..edcfc409085 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el | |||
| @@ -425,7 +425,7 @@ of the piece of advice." | |||
| 425 | (get-next-frame | 425 | (get-next-frame |
| 426 | (lambda () | 426 | (lambda () |
| 427 | (setq frame1 frame2) | 427 | (setq frame1 frame2) |
| 428 | (setq frame2 (internal--called-interactively-p--get-frame i)) | 428 | (setq frame2 (backtrace-frame i #'called-interactively-p)) |
| 429 | ;; (message "Advice Frame %d = %S" i frame2) | 429 | ;; (message "Advice Frame %d = %S" i frame2) |
| 430 | (setq i (1+ i))))) | 430 | (setq i (1+ i))))) |
| 431 | (when (and (eq (nth 1 frame2) 'apply) | 431 | (when (and (eq (nth 1 frame2) 'apply) |
diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el index 6ba29d3748f..896fc2a954e 100644 --- a/lisp/epa-mail.el +++ b/lisp/epa-mail.el | |||
| @@ -109,94 +109,127 @@ If no one is selected, default secret key is used. " | |||
| 109 | (if verbose | 109 | (if verbose |
| 110 | (epa--read-signature-type) | 110 | (epa--read-signature-type) |
| 111 | 'clear))))) | 111 | 'clear))))) |
| 112 | (epa-sign-region start end signers mode)) | 112 | (let ((inhibit-read-only t)) |
| 113 | (epa-sign-region start end signers mode))) | ||
| 114 | |||
| 115 | (defun epa-mail-default-recipients () | ||
| 116 | "Return the default list of encryption recipients for a mail buffer." | ||
| 117 | (let ((config (epg-configuration)) | ||
| 118 | recipients-string real-recipients) | ||
| 119 | (save-excursion | ||
| 120 | (goto-char (point-min)) | ||
| 121 | (save-restriction | ||
| 122 | (narrow-to-region (point) | ||
| 123 | (if (search-forward mail-header-separator nil 0) | ||
| 124 | (match-beginning 0) | ||
| 125 | (point))) | ||
| 126 | (setq recipients-string | ||
| 127 | (mapconcat #'identity | ||
| 128 | (nconc (mail-fetch-field "to" nil nil t) | ||
| 129 | (mail-fetch-field "cc" nil nil t) | ||
| 130 | (mail-fetch-field "bcc" nil nil t)) | ||
| 131 | ",")) | ||
| 132 | (setq recipients-string | ||
| 133 | (mail-strip-quoted-names | ||
| 134 | (with-temp-buffer | ||
| 135 | (insert "to: " recipients-string "\n") | ||
| 136 | (expand-mail-aliases (point-min) (point-max)) | ||
| 137 | (car (mail-fetch-field "to" nil nil t)))))) | ||
| 138 | |||
| 139 | (setq real-recipients | ||
| 140 | (split-string recipients-string "," t "[ \t\n]*")) | ||
| 141 | |||
| 142 | ;; Process all the recipients thru the list of GnuPG groups. | ||
| 143 | ;; Expand GnuPG group names to what they stand for. | ||
| 144 | (setq real-recipients | ||
| 145 | (apply #'nconc | ||
| 146 | (mapcar | ||
| 147 | (lambda (recipient) | ||
| 148 | (or (epg-expand-group config recipient) | ||
| 149 | (list recipient))) | ||
| 150 | real-recipients))) | ||
| 151 | |||
| 152 | ;; Process all the recipients thru the user's list | ||
| 153 | ;; of encryption aliases. | ||
| 154 | (setq real-recipients | ||
| 155 | (apply #'nconc | ||
| 156 | (mapcar | ||
| 157 | (lambda (recipient) | ||
| 158 | (let ((tem (assoc recipient epa-mail-aliases))) | ||
| 159 | (if tem (cdr tem) | ||
| 160 | (list recipient)))) | ||
| 161 | real-recipients))) | ||
| 162 | ))) | ||
| 113 | 163 | ||
| 114 | ;;;###autoload | 164 | ;;;###autoload |
| 115 | (defun epa-mail-encrypt (start end recipients sign signers) | 165 | (defun epa-mail-encrypt (&optional recipients signers) |
| 116 | "Encrypt the current buffer. | 166 | "Encrypt the outgoing mail message in the current buffer. |
| 117 | The buffer is expected to contain a mail message. | 167 | Takes the recipients from the text in the header in the buffer |
| 168 | and translates them through `epa-mail-aliases'. | ||
| 169 | With prefix argument, asks you to select among them interactively | ||
| 170 | and also whether and how to sign. | ||
| 118 | 171 | ||
| 119 | Don't use this command in Lisp programs!" | 172 | Called from Lisp, the optional argument RECIPIENTS is a list |
| 173 | of recipient addresses, t to perform symmetric encryption, | ||
| 174 | or nil meaning use the defaults. | ||
| 175 | |||
| 176 | SIGNERS is a list of keys to sign the message with." | ||
| 120 | (interactive | 177 | (interactive |
| 121 | (save-excursion | 178 | (let ((verbose current-prefix-arg) |
| 122 | (let ((verbose current-prefix-arg) | 179 | (context (epg-make-context epa-protocol))) |
| 123 | (config (epg-configuration)) | 180 | (list (if verbose |
| 124 | (context (epg-make-context epa-protocol)) | 181 | (or (epa-select-keys |
| 125 | recipients-string recipients recipient-key sign) | 182 | context |
| 126 | (goto-char (point-min)) | 183 | "Select recipients for encryption. |
| 127 | (save-restriction | ||
| 128 | (narrow-to-region (point) | ||
| 129 | (if (search-forward mail-header-separator nil 0) | ||
| 130 | (match-beginning 0) | ||
| 131 | (point))) | ||
| 132 | (setq recipients-string | ||
| 133 | (mapconcat #'identity | ||
| 134 | (nconc (mail-fetch-field "to" nil nil t) | ||
| 135 | (mail-fetch-field "cc" nil nil t) | ||
| 136 | (mail-fetch-field "bcc" nil nil t)) | ||
| 137 | ",")) | ||
| 138 | (setq recipients | ||
| 139 | (mail-strip-quoted-names | ||
| 140 | (with-temp-buffer | ||
| 141 | (insert "to: " recipients-string "\n") | ||
| 142 | (expand-mail-aliases (point-min) (point-max)) | ||
| 143 | (car (mail-fetch-field "to" nil nil t)))))) | ||
| 144 | (if recipients | ||
| 145 | (setq recipients (delete "" | ||
| 146 | (split-string recipients | ||
| 147 | "[ \t\n]*,[ \t\n]*")))) | ||
| 148 | |||
| 149 | ;; Process all the recipients thru the list of GnuPG groups. | ||
| 150 | ;; Expand GnuPG group names to what they stand for. | ||
| 151 | (setq recipients | ||
| 152 | (apply #'nconc | ||
| 153 | (mapcar | ||
| 154 | (lambda (recipient) | ||
| 155 | (or (epg-expand-group config recipient) | ||
| 156 | (list recipient))) | ||
| 157 | recipients))) | ||
| 158 | |||
| 159 | (goto-char (point-min)) | ||
| 160 | (if (search-forward mail-header-separator nil t) | ||
| 161 | (forward-line)) | ||
| 162 | (setq epa-last-coding-system-specified | ||
| 163 | (or coding-system-for-write | ||
| 164 | (epa--select-safe-coding-system (point) (point-max)))) | ||
| 165 | (list (point) (point-max) | ||
| 166 | (if verbose | ||
| 167 | (epa-select-keys | ||
| 168 | context | ||
| 169 | "Select recipients for encryption. | ||
| 170 | If no one is selected, symmetric encryption will be performed. " | 184 | If no one is selected, symmetric encryption will be performed. " |
| 171 | recipients) | 185 | (epa-mail-default-recipients)) |
| 172 | (if recipients | 186 | t)) |
| 187 | (and verbose (y-or-n-p "Sign? ") | ||
| 188 | (epa-select-keys context | ||
| 189 | "Select keys for signing. "))))) | ||
| 190 | (let (start recipient-keys default-recipients) | ||
| 191 | (save-excursion | ||
| 192 | (setq recipient-keys | ||
| 193 | (cond ((eq recipients t) | ||
| 194 | nil) | ||
| 195 | (recipients recipients) | ||
| 196 | (t | ||
| 197 | (setq default-recipients | ||
| 198 | (epa-mail-default-recipients)) | ||
| 199 | ;; Convert recipients to keys. | ||
| 173 | (apply | 200 | (apply |
| 174 | 'nconc | 201 | 'nconc |
| 175 | (mapcar | 202 | (mapcar |
| 176 | (lambda (recipient) | 203 | (lambda (recipient) |
| 177 | (setq recipient-key | 204 | (let ((recipient-key |
| 178 | (epa-mail--find-usable-key | 205 | (epa-mail--find-usable-key |
| 179 | (epg-list-keys | 206 | (epg-list-keys |
| 180 | (epg-make-context epa-protocol) | 207 | (epg-make-context epa-protocol) |
| 181 | (if (string-match "@" recipient) | 208 | (if (string-match "@" recipient) |
| 182 | (concat "<" recipient ">") | 209 | (concat "<" recipient ">") |
| 183 | recipient)) | 210 | recipient)) |
| 184 | 'encrypt)) | 211 | 'encrypt))) |
| 185 | (unless (or recipient-key | 212 | (unless (or recipient-key |
| 186 | (y-or-n-p | 213 | (y-or-n-p |
| 187 | (format | 214 | (format |
| 188 | "No public key for %s; skip it? " | 215 | "No public key for %s; skip it? " |
| 189 | recipient))) | 216 | recipient))) |
| 190 | (error "No public key for %s" recipient)) | 217 | (error "No public key for %s" recipient)) |
| 191 | (if recipient-key (list recipient-key))) | 218 | (if recipient-key (list recipient-key)))) |
| 192 | recipients)))) | 219 | default-recipients))))) |
| 193 | (setq sign (if verbose (y-or-n-p "Sign? "))) | 220 | |
| 194 | (if sign | 221 | (goto-char (point-min)) |
| 195 | (epa-select-keys context | 222 | (if (search-forward mail-header-separator nil t) |
| 196 | "Select keys for signing. ")))))) | 223 | (forward-line)) |
| 197 | ;; Don't let some read-only text stop us from encrypting. | 224 | (setq start (point)) |
| 198 | (let ((inhibit-read-only t)) | 225 | |
| 199 | (epa-encrypt-region start end recipients sign signers))) | 226 | (setq epa-last-coding-system-specified |
| 227 | (or coding-system-for-write | ||
| 228 | (epa--select-safe-coding-system (point) (point-max))))) | ||
| 229 | |||
| 230 | ;; Don't let some read-only text stop us from encrypting. | ||
| 231 | (let ((inhibit-read-only t)) | ||
| 232 | (epa-encrypt-region start (point-max) recipient-keys signers signers)))) | ||
| 200 | 233 | ||
| 201 | ;;;###autoload | 234 | ;;;###autoload |
| 202 | (defun epa-mail-import-keys () | 235 | (defun epa-mail-import-keys () |
diff --git a/lisp/epa.el b/lisp/epa.el index 68e7a18fe17..a99fb9230e1 100644 --- a/lisp/epa.el +++ b/lisp/epa.el | |||
| @@ -48,6 +48,18 @@ | |||
| 48 | :version "23.1" | 48 | :version "23.1" |
| 49 | :group 'epa) | 49 | :group 'epa) |
| 50 | 50 | ||
| 51 | (defcustom epa-mail-aliases nil | ||
| 52 | "Alist of aliases of email addresses that stand for encryption keys. | ||
| 53 | Each element is (ALIAS EXPANSIONS...). | ||
| 54 | It means that when a message is addressed to ALIAS, | ||
| 55 | instead of encrypting it for ALIAS, encrypt it for EXPANSIONS... | ||
| 56 | If EXPANSIONS is empty, ignore ALIAS as regards encryption. | ||
| 57 | That is a handy way to avoid warnings about addresses | ||
| 58 | that you don't have any key for." | ||
| 59 | :type '(repeat (cons (string :tag "Alias") (repeat '(string :tag "Expansion")))) | ||
| 60 | :group 'epa | ||
| 61 | :version "24.4") | ||
| 62 | |||
| 51 | (defface epa-validity-high | 63 | (defface epa-validity-high |
| 52 | '((default :weight bold) | 64 | '((default :weight bold) |
| 53 | (((class color) (background dark)) :foreground "PaleTurquoise")) | 65 | (((class color) (background dark)) :foreground "PaleTurquoise")) |
diff --git a/lisp/frame.el b/lisp/frame.el index 71e7cc10de2..22cf484e54a 100644 --- a/lisp/frame.el +++ b/lisp/frame.el | |||
| @@ -317,6 +317,9 @@ there (in decreasing order of priority)." | |||
| 317 | t)) | 317 | t)) |
| 318 | ;; Create the new frame. | 318 | ;; Create the new frame. |
| 319 | (let (parms new) | 319 | (let (parms new) |
| 320 | ;; MS-Windows needs this to avoid inflooping below. | ||
| 321 | (if (eq system-type 'windows-nt) | ||
| 322 | (sit-for 0 t)) | ||
| 320 | ;; If the frame isn't visible yet, wait till it is. | 323 | ;; If the frame isn't visible yet, wait till it is. |
| 321 | ;; If the user has to position the window, | 324 | ;; If the user has to position the window, |
| 322 | ;; Emacs doesn't know its real position until | 325 | ;; Emacs doesn't know its real position until |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 5d3de61aa91..c32853a2a9f 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2013-07-26 Tassilo Horn <tsdh@gnu.org> | ||
| 2 | |||
| 3 | * gnus-sum.el (gnus-sort-threads-recursively): New defcustom. | ||
| 4 | (gnus-sort-threads): Use it. | ||
| 5 | |||
| 6 | 2013-07-25 Andreas Schwab <schwab@linux-m68k.org> | ||
| 7 | |||
| 8 | * gnus-art.el (gnus-button-url-regexp): Make it match url in which | ||
| 9 | punctuation characters follow parentheses (bug#14950). | ||
| 10 | |||
| 1 | 2013-07-23 Katsumi Yamaoka <yamaoka@jpl.org> | 11 | 2013-07-23 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 12 | ||
| 3 | * gnus.el (gnus-continuum-version): | 13 | * gnus.el (gnus-continuum-version): |
| @@ -1892,7 +1902,7 @@ | |||
| 1892 | 1902 | ||
| 1893 | * nnmail.el (mail-send-and-exit): Silence the byte compiler. | 1903 | * nnmail.el (mail-send-and-exit): Silence the byte compiler. |
| 1894 | 1904 | ||
| 1895 | 2012-06-26 Peter Munster <pmrb@free.fr> | 1905 | 2012-06-26 Peter Münster <pmrb@free.fr> |
| 1896 | 1906 | ||
| 1897 | * gnus-demon.el (gnus-demon-timers): Now a plist (function -> timer). | 1907 | * gnus-demon.el (gnus-demon-timers): Now a plist (function -> timer). |
| 1898 | (gnus-demon-cancel): Ditto. | 1908 | (gnus-demon-cancel): Ditto. |
| @@ -2119,7 +2129,7 @@ | |||
| 2119 | (spam-check-BBDB): Use it. | 2129 | (spam-check-BBDB): Use it. |
| 2120 | (spam-enter-ham-BBDB): Use it. | 2130 | (spam-enter-ham-BBDB): Use it. |
| 2121 | 2131 | ||
| 2122 | 2012-06-26 Peter Munster <pmrb@free.fr> (tiny change) | 2132 | 2012-06-26 Peter Münster <pmrb@free.fr> (tiny change) |
| 2123 | 2133 | ||
| 2124 | * gnus-group.el (gnus-group-get-new-news): | 2134 | * gnus-group.el (gnus-group-get-new-news): |
| 2125 | New parameter `one-level' for scanning exactly one level. | 2135 | New parameter `one-level' for scanning exactly one level. |
| @@ -8482,7 +8492,7 @@ | |||
| 8482 | * nnimap.el (nnimap-request-group): Low higher than high to signal no | 8492 | * nnimap.el (nnimap-request-group): Low higher than high to signal no |
| 8483 | messages in empty groups. | 8493 | messages in empty groups. |
| 8484 | 8494 | ||
| 8485 | 2010-10-01 Ted Zlatanov <tzz@lifelogs.com> | 8495 | 2010-10-01 Teodor Zlatanov <tzz@lifelogs.com> |
| 8486 | 8496 | ||
| 8487 | * nnimap.el (nnimap-request-group): Don't bug out when there's an empty | 8497 | * nnimap.el (nnimap-request-group): Don't bug out when there's an empty |
| 8488 | non-UIDNEXT group. | 8498 | non-UIDNEXT group. |
| @@ -8623,7 +8633,7 @@ | |||
| 8623 | * nndraft.el (nndraft-request-expire-articles): Use the group name | 8633 | * nndraft.el (nndraft-request-expire-articles): Use the group name |
| 8624 | instead if "nndraft". Fix found by Nils Ackermann. | 8634 | instead if "nndraft". Fix found by Nils Ackermann. |
| 8625 | 8635 | ||
| 8626 | 2010-09-29 Ludovic Courtes <ludo@gnu.org> | 8636 | 2010-09-29 Ludovic Courtès <ludo@gnu.org> |
| 8627 | 8637 | ||
| 8628 | * nnregistry.el: Add. | 8638 | * nnregistry.el: Add. |
| 8629 | 8639 | ||
diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1 index 9043a23361e..9a71bc35b41 100644 --- a/lisp/gnus/ChangeLog.1 +++ b/lisp/gnus/ChangeLog.1 | |||
| @@ -340,7 +340,7 @@ | |||
| 340 | 340 | ||
| 341 | * nnmail.el (nnmail-spool-file): Allow lists of files. | 341 | * nnmail.el (nnmail-spool-file): Allow lists of files. |
| 342 | 342 | ||
| 343 | 1998-08-20 Per Starback <starback@update.uu.se> | 343 | 1998-08-20 Per Starbäck <starback@update.uu.se> |
| 344 | 344 | ||
| 345 | * gnus/gnus-start.el (gnus-check-first-time-used): Change current | 345 | * gnus/gnus-start.el (gnus-check-first-time-used): Change current |
| 346 | buffer before creating help group. | 346 | buffer before creating help group. |
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2 index 4ddd622ce9a..df223bd332b 100644 --- a/lisp/gnus/ChangeLog.2 +++ b/lisp/gnus/ChangeLog.2 | |||
| @@ -210,7 +210,7 @@ | |||
| 210 | * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before | 210 | * mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before |
| 211 | encrypting. | 211 | encrypting. |
| 212 | 212 | ||
| 213 | 2003-12-28 Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change). | 213 | 2003-12-28 Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change) |
| 214 | 214 | ||
| 215 | * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding. | 215 | * mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding. |
| 216 | 216 | ||
| @@ -4490,7 +4490,7 @@ | |||
| 4490 | 4490 | ||
| 4491 | * gnus-start.el (gnus-backup-startup-file): Fixed custom type. | 4491 | * gnus-start.el (gnus-backup-startup-file): Fixed custom type. |
| 4492 | 4492 | ||
| 4493 | 2003-02-24 Ted Zlatanov <tzz@lifelogs.com> | 4493 | 2003-02-24 Teodor Zlatanov <tzz@lifelogs.com> |
| 4494 | 4494 | ||
| 4495 | * spam.el: Disabled spam-get-article-as-filename. | 4495 | * spam.el: Disabled spam-get-article-as-filename. |
| 4496 | 4496 | ||
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 31a108a3c98..e65b9fb99e4 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -7177,15 +7177,17 @@ groups." | |||
| 7177 | "\\(?:" | 7177 | "\\(?:" |
| 7178 | ;; Match paired parentheses, e.g. in Wikipedia URLs: | 7178 | ;; Match paired parentheses, e.g. in Wikipedia URLs: |
| 7179 | ;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com | 7179 | ;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com |
| 7180 | "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" "[" chars "]*" | 7180 | "[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" |
| 7181 | "\\(?:" "[" chars punct "]+" "[" chars "]" "\\)?" | ||
| 7181 | "\\|" | 7182 | "\\|" |
| 7182 | "[" chars punct "]+" "[" chars "]" | 7183 | "[" chars punct "]+" "[" chars "]" |
| 7183 | "\\)")) | 7184 | "\\)")) |
| 7184 | (concat ;; XEmacs 21.4 doesn't support POSIX. | 7185 | (concat ;; XEmacs 21.4 doesn't support POSIX. |
| 7185 | "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+" | 7186 | "\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+" |
| 7186 | "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)")) | 7187 | "\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)")) |
| 7187 | "\\)") | 7188 | "\\)") |
| 7188 | "Regular expression that matches URLs." | 7189 | "Regular expression that matches URLs." |
| 7190 | :version "24.4" | ||
| 7189 | :group 'gnus-article-buttons | 7191 | :group 'gnus-article-buttons |
| 7190 | :type 'regexp) | 7192 | :type 'regexp) |
| 7191 | 7193 | ||
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index f3918b0a215..15cbb5a45e6 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -847,6 +847,13 @@ controls how articles are sorted." | |||
| 847 | (function :tag "other")) | 847 | (function :tag "other")) |
| 848 | (boolean :tag "Reverse order")))) | 848 | (boolean :tag "Reverse order")))) |
| 849 | 849 | ||
| 850 | (defcustom gnus-sort-threads-recursively t | ||
| 851 | "If non-nil, `gnus-thread-sort-functions' are applied recursively. | ||
| 852 | Setting this to nil allows sorting high-score, recent, | ||
| 853 | etc. threads to the top of the summary buffer while still | ||
| 854 | retaining chronological old to new sorting order inside threads." | ||
| 855 | :group 'gnus-summary-sort | ||
| 856 | :type 'boolean) | ||
| 850 | 857 | ||
| 851 | (defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number) | 858 | (defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number) |
| 852 | "*List of functions used for sorting threads in the summary buffer. | 859 | "*List of functions used for sorting threads in the summary buffer. |
| @@ -4876,9 +4883,11 @@ If LINE, insert the rebuilt thread starting on line LINE." | |||
| 4876 | (gnus-message 8 "Sorting threads...") | 4883 | (gnus-message 8 "Sorting threads...") |
| 4877 | (prog1 | 4884 | (prog1 |
| 4878 | (condition-case nil | 4885 | (condition-case nil |
| 4879 | (let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000))) | 4886 | (let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000)) |
| 4880 | (gnus-sort-threads-recursive | 4887 | (sort-func (gnus-make-sort-function gnus-thread-sort-functions))) |
| 4881 | threads (gnus-make-sort-function gnus-thread-sort-functions))) | 4888 | (if gnus-sort-threads-recursively |
| 4889 | (gnus-sort-threads-recursive threads sort-func) | ||
| 4890 | (sort threads sort-func))) | ||
| 4882 | ;; Even after binding max-lisp-eval-depth, the recursive | 4891 | ;; Even after binding max-lisp-eval-depth, the recursive |
| 4883 | ;; sorter might fail for very long threads. In that case, | 4892 | ;; sorter might fail for very long threads. In that case, |
| 4884 | ;; try using a (less well-tested) non-recursive sorter. | 4893 | ;; try using a (less well-tested) non-recursive sorter. |
diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1 index e57911947b1..f90d88ee0de 100644 --- a/lisp/mh-e/ChangeLog.1 +++ b/lisp/mh-e/ChangeLog.1 | |||
| @@ -1403,11 +1403,11 @@ | |||
| 1403 | (mh-x-image-url-display): Don't display image if the URL looks | 1403 | (mh-x-image-url-display): Don't display image if the URL looks |
| 1404 | malformed. | 1404 | malformed. |
| 1405 | 1405 | ||
| 1406 | 2003-10-04 Mark D Baushke <mdb@gnu.org> | 1406 | 2003-10-04 Mark D. Baushke <mdb@gnu.org> |
| 1407 | 1407 | ||
| 1408 | * mh-comp.el (mh-letter-menu): Simplify menu heading. | 1408 | * mh-comp.el (mh-letter-menu): Simplify menu heading. |
| 1409 | 1409 | ||
| 1410 | 2003-10-03 Mark D Baushke <mdb@gnu.org> | 1410 | 2003-10-03 Mark D. Baushke <mdb@gnu.org> |
| 1411 | 1411 | ||
| 1412 | * mh-mime.el (mh-mml-query-cryptographic-method): Avoid | 1412 | * mh-mime.el (mh-mml-query-cryptographic-method): Avoid |
| 1413 | revisionist history and still provide a good default. | 1413 | revisionist history and still provide a good default. |
| @@ -3877,7 +3877,7 @@ | |||
| 3877 | runs checkdoc and lm-verify which is useful before releasing the | 3877 | runs checkdoc and lm-verify which is useful before releasing the |
| 3878 | software. It can and should be expanded to do real unit tests. | 3878 | software. It can and should be expanded to do real unit tests. |
| 3879 | 3879 | ||
| 3880 | 2003-04-22 Mark D Baushke <mdb@gnu.org> | 3880 | 2003-04-22 Mark D. Baushke <mdb@gnu.org> |
| 3881 | 3881 | ||
| 3882 | * mh-alias.el: Update Copyright. | 3882 | * mh-alias.el: Update Copyright. |
| 3883 | * mh-comp.el: Ditto. | 3883 | * mh-comp.el: Ditto. |
| @@ -6106,7 +6106,7 @@ | |||
| 6106 | explicitly stated. | 6106 | explicitly stated. |
| 6107 | (mh-visit-folder): Really fix it this time. | 6107 | (mh-visit-folder): Really fix it this time. |
| 6108 | 6108 | ||
| 6109 | 2003-01-01 Mark D Baushke <mdb@gnu.org> | 6109 | 2003-01-01 Mark D. Baushke <mdb@gnu.org> |
| 6110 | 6110 | ||
| 6111 | * mh-alias.el (mh-alias-from-has-no-alias-p): Needs the | 6111 | * mh-alias.el (mh-alias-from-has-no-alias-p): Needs the |
| 6112 | mh-autoload comment or mh-customize may have problems finding the | 6112 | mh-autoload comment or mh-customize may have problems finding the |
| @@ -6854,7 +6854,7 @@ | |||
| 6854 | * Makefile: Moved .PHONY rule after all rule for compatibility | 6854 | * Makefile: Moved .PHONY rule after all rule for compatibility |
| 6855 | with BSD/OS's old pmake. | 6855 | with BSD/OS's old pmake. |
| 6856 | 6856 | ||
| 6857 | 2002-12-03 Mark D Baushke <mdb@gnu.org> | 6857 | 2002-12-03 Mark D. Baushke <mdb@gnu.org> |
| 6858 | 6858 | ||
| 6859 | * mh-e.el (mh-get-new-mail): Simplify no-new-mail test. | 6859 | * mh-e.el (mh-get-new-mail): Simplify no-new-mail test. |
| 6860 | (mh-add-cur-notation): Remove unnecessary function. | 6860 | (mh-add-cur-notation): Remove unnecessary function. |
| @@ -6878,7 +6878,7 @@ | |||
| 6878 | number of scan lines is fewer than mh-large-folders (closes SF | 6878 | number of scan lines is fewer than mh-large-folders (closes SF |
| 6879 | #646794). | 6879 | #646794). |
| 6880 | 6880 | ||
| 6881 | 2002-12-02 Mark D Baushke <mdb@gnu.org> | 6881 | 2002-12-02 Mark D. Baushke <mdb@gnu.org> |
| 6882 | 6882 | ||
| 6883 | * mh-e.el (mh-add-cur-notation): New function to mark the | 6883 | * mh-e.el (mh-add-cur-notation): New function to mark the |
| 6884 | current message with the mh-note-cur character. | 6884 | current message with the mh-note-cur character. |
| @@ -8312,7 +8312,7 @@ | |||
| 8312 | variable as new-file-flag. | 8312 | variable as new-file-flag. |
| 8313 | This addresses part of SF #627015. | 8313 | This addresses part of SF #627015. |
| 8314 | 8314 | ||
| 8315 | 2002-10-24 Mark D Baushke <mdb@gnu.org> | 8315 | 2002-10-24 Mark D. Baushke <mdb@gnu.org> |
| 8316 | 8316 | ||
| 8317 | * mh-comp.el (mh-forward): Fix mh-mml-compose-insert-p reference | 8317 | * mh-comp.el (mh-forward): Fix mh-mml-compose-insert-p reference |
| 8318 | in last commit to be mh-mml-compose-insert-flag. | 8318 | in last commit to be mh-mml-compose-insert-flag. |
| @@ -8581,7 +8581,7 @@ | |||
| 8581 | 8581 | ||
| 8582 | * mh-comp.el (mh-mml-to-mime autoload): Ditto. | 8582 | * mh-comp.el (mh-mml-to-mime autoload): Ditto. |
| 8583 | 8583 | ||
| 8584 | 2002-10-21 Mark D Baushke <mdb@gnu.org> | 8584 | 2002-10-21 Mark D. Baushke <mdb@gnu.org> |
| 8585 | 8585 | ||
| 8586 | * mh-mime.el (smiley-region): Use load for a non-fatal dependency | 8586 | * mh-mime.el (smiley-region): Use load for a non-fatal dependency |
| 8587 | on the smiley library. | 8587 | on the smiley library. |
| @@ -8735,7 +8735,7 @@ | |||
| 8735 | prompted for the number of messages to display, you got an error. | 8735 | prompted for the number of messages to display, you got an error. |
| 8736 | This has been fixed. | 8736 | This has been fixed. |
| 8737 | 8737 | ||
| 8738 | 2002-10-19 Mark D Baushke <mdb@gnu.org> | 8738 | 2002-10-19 Mark D. Baushke <mdb@gnu.org> |
| 8739 | 8739 | ||
| 8740 | * mh-e.el (mh-last-destination-folder): Destination of last refile | 8740 | * mh-e.el (mh-last-destination-folder): Destination of last refile |
| 8741 | command. | 8741 | command. |
| @@ -8777,7 +8777,7 @@ | |||
| 8777 | macro mh-compat-write-file-hook to use write-file-functions for | 8777 | macro mh-compat-write-file-hook to use write-file-functions for |
| 8778 | Emacs 21.4 and local-write-file-hooks for older versions. | 8778 | Emacs 21.4 and local-write-file-hooks for older versions. |
| 8779 | 8779 | ||
| 8780 | 2002-10-18 Mark D Baushke <mdb@gnu.org> | 8780 | 2002-10-18 Mark D. Baushke <mdb@gnu.org> |
| 8781 | 8781 | ||
| 8782 | * mh-utils.el (mh-invisible-headers): Add more anti-spam headers. | 8782 | * mh-utils.el (mh-invisible-headers): Add more anti-spam headers. |
| 8783 | 8783 | ||
| @@ -9079,7 +9079,7 @@ | |||
| 9079 | (mh-remove-xemacs-horizontal-scrollbar): New macro to avoid | 9079 | (mh-remove-xemacs-horizontal-scrollbar): New macro to avoid |
| 9080 | compiler-warnings. | 9080 | compiler-warnings. |
| 9081 | 9081 | ||
| 9082 | 2002-10-10 Mark D Baushke <mdb@gnu.org> | 9082 | 2002-10-10 Mark D. Baushke <mdb@gnu.org> |
| 9083 | 9083 | ||
| 9084 | * Makefile (EMACS_OPTIONS): New macro for command-line compile | 9084 | * Makefile (EMACS_OPTIONS): New macro for command-line compile |
| 9085 | options. | 9085 | options. |
| @@ -9088,13 +9088,13 @@ | |||
| 9088 | (COMPILE_COMMAND): Combine the compile command with its options. | 9088 | (COMPILE_COMMAND): Combine the compile command with its options. |
| 9089 | (.el.elc): Use the new $(COMPILE_COMMAND). | 9089 | (.el.elc): Use the new $(COMPILE_COMMAND). |
| 9090 | 9090 | ||
| 9091 | 2002-10-10 Mark D Baushke <mdb@gnu.org> | 9091 | 2002-10-10 Mark D. Baushke <mdb@gnu.org> |
| 9092 | 9092 | ||
| 9093 | * mh-speed.el (mh-speed-select-attached-frame): Define a new | 9093 | * mh-speed.el (mh-speed-select-attached-frame): Define a new |
| 9094 | compatibility macro for getting to the attached-frame. | 9094 | compatibility macro for getting to the attached-frame. |
| 9095 | (mh-speed-update-current-folder): Use it. | 9095 | (mh-speed-update-current-folder): Use it. |
| 9096 | 9096 | ||
| 9097 | 2002-10-10 Mark D Baushke <mdb@gnu.org> | 9097 | 2002-10-10 Mark D. Baushke <mdb@gnu.org> |
| 9098 | 9098 | ||
| 9099 | * mh-speed.el (mh-speed-update-current-folder): Use | 9099 | * mh-speed.el (mh-speed-update-current-folder): Use |
| 9100 | 'dframe-select-attached-frame if we are in a newer speedbar | 9100 | 'dframe-select-attached-frame if we are in a newer speedbar |
| @@ -9452,7 +9452,7 @@ | |||
| 9452 | present in the load-path. | 9452 | present in the load-path. |
| 9453 | * mh-mime.el (mh-require): Don't use it anymore. | 9453 | * mh-mime.el (mh-require): Don't use it anymore. |
| 9454 | 9454 | ||
| 9455 | 2002-07-15 Mark D Baushke <mdb@gnu.org> | 9455 | 2002-07-15 Mark D. Baushke <mdb@gnu.org> |
| 9456 | 9456 | ||
| 9457 | * mh-utils.el (mh-update-scan-format): Rewrite for compatibility | 9457 | * mh-utils.el (mh-update-scan-format): Rewrite for compatibility |
| 9458 | with XEmacs as replace-match appears not to have identical | 9458 | with XEmacs as replace-match appears not to have identical |
| @@ -9531,7 +9531,7 @@ | |||
| 9531 | 9531 | ||
| 9532 | * mh-mime.el (mm-destroy-parts): Add definition for old emacs. | 9532 | * mh-mime.el (mm-destroy-parts): Add definition for old emacs. |
| 9533 | 9533 | ||
| 9534 | 2002-06-30 Mark D Baushke <mdb@gnu.org> | 9534 | 2002-06-30 Mark D. Baushke <mdb@gnu.org> |
| 9535 | 9535 | ||
| 9536 | * mh-utils.el (mh-update-scan-format): Add documentation string. | 9536 | * mh-utils.el (mh-update-scan-format): Add documentation string. |
| 9537 | (mh-scan-msg-format-regexp): Update the regexp to find %(msg). | 9537 | (mh-scan-msg-format-regexp): Update the regexp to find %(msg). |
| @@ -9574,7 +9574,7 @@ | |||
| 9574 | * mh-index.el (mh-count-windows): This function works around the | 9574 | * mh-index.el (mh-count-windows): This function works around the |
| 9575 | lack of the window-list builtin function in emacs20. | 9575 | lack of the window-list builtin function in emacs20. |
| 9576 | 9576 | ||
| 9577 | 2002-06-29 Mark D Baushke <mdb@gnu.org> | 9577 | 2002-06-29 Mark D. Baushke <mdb@gnu.org> |
| 9578 | 9578 | ||
| 9579 | * mh-utils.el (mh-message-number-width): New function to scan | 9579 | * mh-utils.el (mh-message-number-width): New function to scan |
| 9580 | the last message of a folder and return its width. | 9580 | the last message of a folder and return its width. |
| @@ -9625,7 +9625,7 @@ | |||
| 9625 | * mh-mime.el (gnus-newsgroup-name): Initialize it to nil, so that | 9625 | * mh-mime.el (gnus-newsgroup-name): Initialize it to nil, so that |
| 9626 | mm-uu-dissect doesn't cause error. | 9626 | mm-uu-dissect doesn't cause error. |
| 9627 | 9627 | ||
| 9628 | 2002-06-27 Mark D Baushke <mdb@gnu.org> | 9628 | 2002-06-27 Mark D. Baushke <mdb@gnu.org> |
| 9629 | 9629 | ||
| 9630 | * mh-utils.el (mh-cmd-note): Make buffer-local. Changes to this | 9630 | * mh-utils.el (mh-cmd-note): Make buffer-local. Changes to this |
| 9631 | variable should be made via the new mh-set-default-cmd-note | 9631 | variable should be made via the new mh-set-default-cmd-note |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index c92eacd4473..441849fd2af 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -2248,7 +2248,10 @@ The method used must be an out-of-band method." | |||
| 2248 | spec (format-spec-make | 2248 | spec (format-spec-make |
| 2249 | ?t (tramp-get-connection-property | 2249 | ?t (tramp-get-connection-property |
| 2250 | (tramp-get-connection-process v) "temp-file" "")) | 2250 | (tramp-get-connection-process v) "temp-file" "")) |
| 2251 | options (format-spec tramp-ssh-controlmaster-options spec) | 2251 | options (format-spec |
| 2252 | (if tramp-use-ssh-controlmaster-options | ||
| 2253 | tramp-ssh-controlmaster-options "") | ||
| 2254 | spec) | ||
| 2252 | spec (format-spec-make | 2255 | spec (format-spec-make |
| 2253 | ?h host ?u user ?p port ?c options | 2256 | ?h host ?u user ?p port ?c options |
| 2254 | ?k (if keep-date " " "")) | 2257 | ?k (if keep-date " " "")) |
| @@ -4416,7 +4419,8 @@ connection if a previous connection has died for some reason." | |||
| 4416 | (let* ((target-alist (tramp-compute-multi-hops vec)) | 4419 | (let* ((target-alist (tramp-compute-multi-hops vec)) |
| 4417 | ;; We will apply `tramp-ssh-controlmaster-options' | 4420 | ;; We will apply `tramp-ssh-controlmaster-options' |
| 4418 | ;; only for the first hop. | 4421 | ;; only for the first hop. |
| 4419 | (options tramp-ssh-controlmaster-options) | 4422 | (options (if tramp-use-ssh-controlmaster-options |
| 4423 | tramp-ssh-controlmaster-options "")) | ||
| 4420 | (process-connection-type tramp-process-connection-type) | 4424 | (process-connection-type tramp-process-connection-type) |
| 4421 | (process-adaptive-read-buffering nil) | 4425 | (process-adaptive-read-buffering nil) |
| 4422 | (coding-system-for-read nil) | 4426 | (coding-system-for-read nil) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index db6a1e381a6..48e13004c36 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -305,6 +305,14 @@ useful only in combination with `tramp-default-proxies-alist'.") | |||
| 305 | "Call ssh to detect whether it supports the Control* arguments. | 305 | "Call ssh to detect whether it supports the Control* arguments. |
| 306 | Return a string to be used in `tramp-methods'.") | 306 | Return a string to be used in `tramp-methods'.") |
| 307 | 307 | ||
| 308 | ;;;###tramp-autoload | ||
| 309 | (defcustom tramp-use-ssh-controlmaster-options | ||
| 310 | (not (zerop (length tramp-ssh-controlmaster-options))) | ||
| 311 | "Whether to use `tramp-ssh-controlmaster-options'." | ||
| 312 | :group 'tramp | ||
| 313 | :version "24.4" | ||
| 314 | :type 'boolean) | ||
| 315 | |||
| 308 | (defcustom tramp-default-method | 316 | (defcustom tramp-default-method |
| 309 | ;; An external copy method seems to be preferred, because it performs | 317 | ;; An external copy method seems to be preferred, because it performs |
| 310 | ;; much better for large files, and it hasn't too serious delays | 318 | ;; much better for large files, and it hasn't too serious delays |
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index 16097c1c0b2..019fa8a358d 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog | |||
| @@ -3983,7 +3983,7 @@ | |||
| 3983 | (org-export-latex-tables-tend): New options. | 3983 | (org-export-latex-tables-tend): New options. |
| 3984 | (org-export-latex-tables): Use the new options. | 3984 | (org-export-latex-tables): Use the new options. |
| 3985 | 3985 | ||
| 3986 | 2012-09-30 tumashu <tumashu@gmail.com> (tiny change) | 3986 | 2012-09-30 Feng Shu <tumashu@gmail.com> (tiny change) |
| 3987 | 3987 | ||
| 3988 | * org-exp.el (org-export-language-setup): Add simplified chinese | 3988 | * org-exp.el (org-export-language-setup): Add simplified chinese |
| 3989 | translation. | 3989 | translation. |
| @@ -9437,7 +9437,7 @@ | |||
| 9437 | (org-update-checkbox-count-maybe): Add an optional argument passed to | 9437 | (org-update-checkbox-count-maybe): Add an optional argument passed to |
| 9438 | org-update-checkbox-count. | 9438 | org-update-checkbox-count. |
| 9439 | 9439 | ||
| 9440 | 2011-07-28 Ted Zlatanov <tzz@lifelogs.com> | 9440 | 2011-07-28 Teodor Zlatanov <tzz@lifelogs.com> |
| 9441 | 9441 | ||
| 9442 | * org.el (org-fontify-meta-lines-and-blocks): Ignore errors. | 9442 | * org.el (org-fontify-meta-lines-and-blocks): Ignore errors. |
| 9443 | 9443 | ||
| @@ -18000,7 +18000,7 @@ | |||
| 18000 | * org-habit.el (org-habit-build-graph): Help-echo date when | 18000 | * org-habit.el (org-habit-build-graph): Help-echo date when |
| 18001 | mouse is over stars. | 18001 | mouse is over stars. |
| 18002 | 18002 | ||
| 18003 | 2010-07-19 Jan Böker <jan.boecker@jboecker.de> | 18003 | 2010-07-19 Jan Böcker <jan.boecker@jboecker.de> |
| 18004 | 18004 | ||
| 18005 | * org.el (org-file-apps): Improve docstring to reflect | 18005 | * org.el (org-file-apps): Improve docstring to reflect |
| 18006 | grouping matches. | 18006 | grouping matches. |
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index a3bd000a4f3..c2ff5011a0e 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -1135,9 +1135,13 @@ comment at the start of cc-engine.el for more info." | |||
| 1135 | (not (memq sym '(boundary ignore nil)))) | 1135 | (not (memq sym '(boundary ignore nil)))) |
| 1136 | ;; Need to investigate closer whether we've crossed | 1136 | ;; Need to investigate closer whether we've crossed |
| 1137 | ;; between a substatement and its containing statement. | 1137 | ;; between a substatement and its containing statement. |
| 1138 | (if (setq saved (if (looking-at c-block-stmt-1-key) | 1138 | (if (setq saved |
| 1139 | ptok | 1139 | (cond ((and (looking-at c-block-stmt-1-2-key) |
| 1140 | pptok)) | 1140 | (eq (char-after ptok) ?\()) |
| 1141 | pptok) | ||
| 1142 | ((looking-at c-block-stmt-1-key) | ||
| 1143 | ptok) | ||
| 1144 | (t pptok))) | ||
| 1141 | (cond ((> start saved) (setq pos saved)) | 1145 | (cond ((> start saved) (setq pos saved)) |
| 1142 | ((= start saved) (setq ret 'up))))) | 1146 | ((= start saved) (setq ret 'up))))) |
| 1143 | 1147 | ||
| @@ -7988,7 +7992,8 @@ comment at the start of cc-engine.el for more info." | |||
| 7988 | (or (looking-at c-block-stmt-1-key) | 7992 | (or (looking-at c-block-stmt-1-key) |
| 7989 | (and (eq (char-after) ?\() | 7993 | (and (eq (char-after) ?\() |
| 7990 | (zerop (c-backward-token-2 1 t lim)) | 7994 | (zerop (c-backward-token-2 1 t lim)) |
| 7991 | (looking-at c-block-stmt-2-key))) | 7995 | (or (looking-at c-block-stmt-2-key) |
| 7996 | (looking-at c-block-stmt-1-2-key)))) | ||
| 7992 | (point)))) | 7997 | (point)))) |
| 7993 | 7998 | ||
| 7994 | (defun c-after-special-operator-id (&optional lim) | 7999 | (defun c-after-special-operator-id (&optional lim) |
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 6a4bfd9e875..4e8ce6bac28 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el | |||
| @@ -1307,7 +1307,8 @@ casts and declarations are fontified. Used on level 2 and higher." | |||
| 1307 | (goto-char match-pos) | 1307 | (goto-char match-pos) |
| 1308 | (backward-char) | 1308 | (backward-char) |
| 1309 | (c-backward-token-2) | 1309 | (c-backward-token-2) |
| 1310 | (looking-at c-block-stmt-2-key))) | 1310 | (or (looking-at c-block-stmt-2-key) |
| 1311 | (looking-at c-block-stmt-1-2-key)))) | ||
| 1311 | (setq context nil | 1312 | (setq context nil |
| 1312 | c-restricted-<>-arglists t)) | 1313 | c-restricted-<>-arglists t)) |
| 1313 | ;; Near BOB. | 1314 | ;; Near BOB. |
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index af52ad53aad..2c0a1317b04 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el | |||
| @@ -2187,6 +2187,18 @@ identifiers that follows the type in a normal declaration." | |||
| 2187 | t (c-make-keywords-re t (c-lang-const c-block-stmt-1-kwds))) | 2187 | t (c-make-keywords-re t (c-lang-const c-block-stmt-1-kwds))) |
| 2188 | (c-lang-defvar c-block-stmt-1-key (c-lang-const c-block-stmt-1-key)) | 2188 | (c-lang-defvar c-block-stmt-1-key (c-lang-const c-block-stmt-1-key)) |
| 2189 | 2189 | ||
| 2190 | (c-lang-defconst c-block-stmt-1-2-kwds | ||
| 2191 | "Statement keywords optionally followed by a paren sexp. | ||
| 2192 | Keywords here should also be in `c-block-stmt-1-kwds'." | ||
| 2193 | t nil | ||
| 2194 | java '("try")) | ||
| 2195 | |||
| 2196 | (c-lang-defconst c-block-stmt-1-2-key | ||
| 2197 | ;; Regexp matching the start of a statement which may be followed by a | ||
| 2198 | ;; paren sexp and will then be followed by a substatement. | ||
| 2199 | t (c-make-keywords-re t (c-lang-const c-block-stmt-1-2-kwds))) | ||
| 2200 | (c-lang-defvar c-block-stmt-1-2-key (c-lang-const c-block-stmt-1-2-key)) | ||
| 2201 | |||
| 2190 | (c-lang-defconst c-block-stmt-2-kwds | 2202 | (c-lang-defconst c-block-stmt-2-kwds |
| 2191 | "Statement keywords followed by a paren sexp and then by a substatement." | 2203 | "Statement keywords followed by a paren sexp and then by a substatement." |
| 2192 | t '("for" "if" "switch" "while") | 2204 | t '("for" "if" "switch" "while") |
| @@ -2938,7 +2950,8 @@ identifier or one of the keywords on `c-<>-type-kwds' or | |||
| 2938 | `c-<>-arglist-kwds'. If there's an identifier before then the whole | 2950 | `c-<>-arglist-kwds'. If there's an identifier before then the whole |
| 2939 | expression is considered to be a type." | 2951 | expression is considered to be a type." |
| 2940 | t (or (consp (c-lang-const c-<>-type-kwds)) | 2952 | t (or (consp (c-lang-const c-<>-type-kwds)) |
| 2941 | (consp (c-lang-const c-<>-arglist-kwds)))) | 2953 | (consp (c-lang-const c-<>-arglist-kwds))) |
| 2954 | java t) | ||
| 2942 | (c-lang-defvar c-recognize-<>-arglists (c-lang-const c-recognize-<>-arglists)) | 2955 | (c-lang-defvar c-recognize-<>-arglists (c-lang-const c-recognize-<>-arglists)) |
| 2943 | 2956 | ||
| 2944 | (c-lang-defconst c-enums-contain-decls | 2957 | (c-lang-defconst c-enums-contain-decls |
diff --git a/lisp/simple.el b/lisp/simple.el index 4b158d31f36..1fb2fa6014c 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -3141,14 +3141,17 @@ Also, delete any process that is exited or signaled." | |||
| 3141 | (display-buffer (button-get button 'process-buffer))) | 3141 | (display-buffer (button-get button 'process-buffer))) |
| 3142 | 3142 | ||
| 3143 | (defun list-processes (&optional query-only buffer) | 3143 | (defun list-processes (&optional query-only buffer) |
| 3144 | "Display a list of all processes. | 3144 | "Display a list of all processes that are Emacs sub-processes. |
| 3145 | If optional argument QUERY-ONLY is non-nil, only processes with | 3145 | If optional argument QUERY-ONLY is non-nil, only processes with |
| 3146 | the query-on-exit flag set are listed. | 3146 | the query-on-exit flag set are listed. |
| 3147 | Any process listed as exited or signaled is actually eliminated | 3147 | Any process listed as exited or signaled is actually eliminated |
| 3148 | after the listing is made. | 3148 | after the listing is made. |
| 3149 | Optional argument BUFFER specifies a buffer to use, instead of | 3149 | Optional argument BUFFER specifies a buffer to use, instead of |
| 3150 | \"*Process List*\". | 3150 | \"*Process List*\". |
| 3151 | The return value is always nil." | 3151 | The return value is always nil. |
| 3152 | |||
| 3153 | This function lists only processes that were launched by Emacs. To | ||
| 3154 | see other processes running on the system, use `list-system-processes'." | ||
| 3152 | (interactive) | 3155 | (interactive) |
| 3153 | (or (fboundp 'process-list) | 3156 | (or (fboundp 'process-list) |
| 3154 | (error "Asynchronous subprocesses are not supported on this system")) | 3157 | (error "Asynchronous subprocesses are not supported on this system")) |
| @@ -5530,8 +5533,7 @@ Mode' for details." | |||
| 5530 | (visual-line-mode 1)) | 5533 | (visual-line-mode 1)) |
| 5531 | 5534 | ||
| 5532 | (define-globalized-minor-mode global-visual-line-mode | 5535 | (define-globalized-minor-mode global-visual-line-mode |
| 5533 | visual-line-mode turn-on-visual-line-mode | 5536 | visual-line-mode turn-on-visual-line-mode) |
| 5534 | :lighter " vl") | ||
| 5535 | 5537 | ||
| 5536 | 5538 | ||
| 5537 | (defun transpose-chars (arg) | 5539 | (defun transpose-chars (arg) |
diff --git a/lisp/subr.el b/lisp/subr.el index 7130639dbe5..3b85a9bedb0 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -4191,22 +4191,6 @@ I is the index of the frame after FRAME2. It should return nil | |||
| 4191 | if those frames don't seem special and otherwise, it should return | 4191 | if those frames don't seem special and otherwise, it should return |
| 4192 | the number of frames to skip (minus 1).") | 4192 | the number of frames to skip (minus 1).") |
| 4193 | 4193 | ||
| 4194 | (defmacro internal--called-interactively-p--get-frame (n) | ||
| 4195 | ;; `sym' will hold a global variable, which will be used kind of like C's | ||
| 4196 | ;; "static" variables. | ||
| 4197 | (let ((sym (make-symbol "base-index"))) | ||
| 4198 | `(progn | ||
| 4199 | (defvar ,sym) | ||
| 4200 | (unless (boundp ',sym) | ||
| 4201 | (let ((i 1)) | ||
| 4202 | (while (not (eq (indirect-function (nth 1 (backtrace-frame i)) t) | ||
| 4203 | (indirect-function 'called-interactively-p))) | ||
| 4204 | (setq i (1+ i))) | ||
| 4205 | (setq ,sym i))) | ||
| 4206 | ;; (unless (eq (nth 1 (backtrace-frame ,sym)) 'called-interactively-p) | ||
| 4207 | ;; (error "called-interactively-p: %s is out-of-sync!" ,sym)) | ||
| 4208 | (backtrace-frame (+ ,sym ,n))))) | ||
| 4209 | |||
| 4210 | (defun called-interactively-p (&optional kind) | 4194 | (defun called-interactively-p (&optional kind) |
| 4211 | "Return t if the containing function was called by `call-interactively'. | 4195 | "Return t if the containing function was called by `call-interactively'. |
| 4212 | If KIND is `interactive', then only return t if the call was made | 4196 | If KIND is `interactive', then only return t if the call was made |
| @@ -4241,7 +4225,7 @@ command is called from a keyboard macro?" | |||
| 4241 | (get-next-frame | 4225 | (get-next-frame |
| 4242 | (lambda () | 4226 | (lambda () |
| 4243 | (setq frame nextframe) | 4227 | (setq frame nextframe) |
| 4244 | (setq nextframe (internal--called-interactively-p--get-frame i)) | 4228 | (setq nextframe (backtrace-frame i 'called-interactively-p)) |
| 4245 | ;; (message "Frame %d = %S" i nextframe) | 4229 | ;; (message "Frame %d = %S" i nextframe) |
| 4246 | (setq i (1+ i))))) | 4230 | (setq i (1+ i))))) |
| 4247 | (funcall get-next-frame) ;; Get the first frame. | 4231 | (funcall get-next-frame) ;; Get the first frame. |
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 4920e85c351..6f03cba1f75 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el | |||
| @@ -237,9 +237,11 @@ See `run-hooks'." | |||
| 237 | ;; VC commands | 237 | ;; VC commands |
| 238 | (define-key map "v" 'vc-next-action) ;; C-x v v | 238 | (define-key map "v" 'vc-next-action) ;; C-x v v |
| 239 | (define-key map "=" 'vc-diff) ;; C-x v = | 239 | (define-key map "=" 'vc-diff) ;; C-x v = |
| 240 | (define-key map "D" 'vc-root-diff) ;; C-x v D | ||
| 240 | (define-key map "i" 'vc-register) ;; C-x v i | 241 | (define-key map "i" 'vc-register) ;; C-x v i |
| 241 | (define-key map "+" 'vc-update) ;; C-x v + | 242 | (define-key map "+" 'vc-update) ;; C-x v + |
| 242 | (define-key map "l" 'vc-print-log) ;; C-x v l | 243 | (define-key map "l" 'vc-print-log) ;; C-x v l |
| 244 | (define-key map "L" 'vc-print-root-log) ;; C-x v L | ||
| 243 | ;; More confusing than helpful, probably | 245 | ;; More confusing than helpful, probably |
| 244 | ;;(define-key map "R" 'vc-revert) ;; u is taken by vc-dir-unmark. | 246 | ;;(define-key map "R" 'vc-revert) ;; u is taken by vc-dir-unmark. |
| 245 | ;;(define-key map "A" 'vc-annotate) ;; g is taken by revert-buffer | 247 | ;;(define-key map "A" 'vc-annotate) ;; g is taken by revert-buffer |
diff --git a/lisp/window.el b/lisp/window.el index a2acd2a81b0..86d93c0a9f6 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -5470,6 +5470,9 @@ argument, ACTION is t." | |||
| 5470 | (let ((buffer (if (bufferp buffer-or-name) | 5470 | (let ((buffer (if (bufferp buffer-or-name) |
| 5471 | buffer-or-name | 5471 | buffer-or-name |
| 5472 | (get-buffer buffer-or-name))) | 5472 | (get-buffer buffer-or-name))) |
| 5473 | ;; Make sure that when we split windows the old window keeps | ||
| 5474 | ;; point, bug#14829. | ||
| 5475 | (split-window-keep-point t) | ||
| 5473 | ;; Handle the old form of the first argument. | 5476 | ;; Handle the old form of the first argument. |
| 5474 | (inhibit-same-window (and action (not (listp action))))) | 5477 | (inhibit-same-window (and action (not (listp action))))) |
| 5475 | (unless (listp action) (setq action nil)) | 5478 | (unless (listp action) (setq action nil)) |
| @@ -1,8 +1,7 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | ### make-dist: create an Emacs distribution tar file from current srcdir | 2 | ### make-dist: create an Emacs distribution tar file from current srcdir |
| 3 | 3 | ||
| 4 | ## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation, | 4 | ## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation, Inc. |
| 5 | ## Inc. | ||
| 6 | 5 | ||
| 7 | ## This file is part of GNU Emacs. | 6 | ## This file is part of GNU Emacs. |
| 8 | 7 | ||
| @@ -51,6 +50,7 @@ clean_up=no | |||
| 51 | make_tar=no | 50 | make_tar=no |
| 52 | default_gzip=gzip | 51 | default_gzip=gzip |
| 53 | newer="" | 52 | newer="" |
| 53 | with_tests=no | ||
| 54 | 54 | ||
| 55 | while [ $# -gt 0 ]; do | 55 | while [ $# -gt 0 ]; do |
| 56 | case "$1" in | 56 | case "$1" in |
| @@ -98,6 +98,12 @@ while [ $# -gt 0 ]; do | |||
| 98 | check=no | 98 | check=no |
| 99 | ;; | 99 | ;; |
| 100 | 100 | ||
| 101 | ## Include the test/ directory. | ||
| 102 | ## This option is mainly for the hydra build server. | ||
| 103 | "--tests") | ||
| 104 | with_tests=yes | ||
| 105 | ;; | ||
| 106 | |||
| 101 | "--help") | 107 | "--help") |
| 102 | echo "Usage: ${progname} [options]" | 108 | echo "Usage: ${progname} [options]" |
| 103 | echo "" | 109 | echo "" |
| @@ -110,6 +116,7 @@ while [ $# -gt 0 ]; do | |||
| 110 | echo " --no-update don't recompile or do analogous things" | 116 | echo " --no-update don't recompile or do analogous things" |
| 111 | echo " --snapshot same as --clean-up --no-update --tar --no-check" | 117 | echo " --snapshot same as --clean-up --no-update --tar --no-check" |
| 112 | echo " --tar make a tar file" | 118 | echo " --tar make a tar file" |
| 119 | echo " --tests include the test/ directory" | ||
| 113 | echo "" | 120 | echo "" |
| 114 | exit 0 | 121 | exit 0 |
| 115 | ;; | 122 | ;; |
| @@ -289,7 +296,7 @@ for subdir in site-lisp \ | |||
| 289 | build-aux build-aux/snippet \ | 296 | build-aux build-aux/snippet \ |
| 290 | src src/bitmaps lib lib-src oldXMenu lwlib \ | 297 | src src/bitmaps lib lib-src oldXMenu lwlib \ |
| 291 | nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \ | 298 | nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \ |
| 292 | `find etc lisp admin -type d` \ | 299 | `find etc lisp admin test -type d` \ |
| 293 | doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \ | 300 | doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \ |
| 294 | info m4 msdos \ | 301 | info m4 msdos \ |
| 295 | nextstep nextstep/templates \ | 302 | nextstep nextstep/templates \ |
| @@ -300,6 +307,13 @@ for subdir in site-lisp \ | |||
| 300 | nextstep/GNUstep/Emacs.base \ | 307 | nextstep/GNUstep/Emacs.base \ |
| 301 | nextstep/GNUstep/Emacs.base/Resources | 308 | nextstep/GNUstep/Emacs.base/Resources |
| 302 | do | 309 | do |
| 310 | |||
| 311 | if [ "$with_tests" != "yes" ]; then | ||
| 312 | case $subdir in | ||
| 313 | test*) continue ;; | ||
| 314 | esac | ||
| 315 | fi | ||
| 316 | |||
| 303 | ## site-lisp for in-place installs (?). | 317 | ## site-lisp for in-place installs (?). |
| 304 | [ "$subdir" = "site-lisp" ] || [ -d "$subdir" ] || \ | 318 | [ "$subdir" = "site-lisp" ] || [ -d "$subdir" ] || \ |
| 305 | echo "WARNING: $subdir not found, making anyway" | 319 | echo "WARNING: $subdir not found, making anyway" |
| @@ -447,6 +461,17 @@ for f in `find admin -type f`; do | |||
| 447 | ln $f $tempdir/$f | 461 | ln $f $tempdir/$f |
| 448 | done | 462 | done |
| 449 | 463 | ||
| 464 | if [ "$with_tests" = "yes" ]; then | ||
| 465 | echo "Making links to \`test' and its subdirectories" | ||
| 466 | for f in `find test -type f`; do | ||
| 467 | case $f in | ||
| 468 | test/automated/flymake/warnpred/a.out) continue ;; | ||
| 469 | test/automated/Makefile) continue ;; | ||
| 470 | esac | ||
| 471 | ln $f $tempdir/$f | ||
| 472 | done | ||
| 473 | fi | ||
| 474 | |||
| 450 | echo "Making links to \`etc' and its subdirectories" | 475 | echo "Making links to \`etc' and its subdirectories" |
| 451 | for f in `find etc -type f`; do | 476 | for f in `find etc -type f`; do |
| 452 | case $f in | 477 | case $f in |
diff --git a/src/ChangeLog b/src/ChangeLog index 64b13a5ac28..b7b2d5fba4b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,58 @@ | |||
| 1 | 2013-07-29 Dmitry Antipov <dmantipov@yandex.ru> | ||
| 2 | |||
| 3 | * fns.c (toplevel): Remove comment before Fsafe_length because | ||
| 4 | it checks for QUIT. | ||
| 5 | |||
| 6 | 2013-07-28 Paul Eggert <eggert@cs.ucla.edu> | ||
| 7 | |||
| 8 | * frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970). | ||
| 9 | |||
| 10 | 2013-07-28 Eli Zaretskii <eliz@gnu.org> | ||
| 11 | |||
| 12 | * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Make sure the | ||
| 13 | frame which got the message is still alive, before dereferencing | ||
| 14 | its pointer. (Bug#14970) | ||
| 15 | |||
| 16 | * frame.c (delete_frame): Test "this" frame's minibuffer window to | ||
| 17 | be a live window, before using it as such. (Bug#14970) | ||
| 18 | |||
| 19 | 2013-07-27 Eli Zaretskii <eliz@gnu.org> | ||
| 20 | |||
| 21 | * w32term.c (w32_read_socket) <WM_KILLFOCUS>: Call | ||
| 22 | w32_detect_focus_change instead of doing part of its job by hand. | ||
| 23 | This fixes the problem whereby FOCUS_OUT events were not sent to | ||
| 24 | the event queue. | ||
| 25 | |||
| 26 | 2013-07-26 Eli Zaretskii <eliz@gnu.org> | ||
| 27 | |||
| 28 | * process.c (Fprocess_list): Doc fix. | ||
| 29 | |||
| 30 | * w32term.c (w32_read_socket) <WM_EMACS_PAINT>: Warn about frame | ||
| 31 | being re-exposed only if it didn't ask to become visible. | ||
| 32 | <WM_SIZE>: Under SIZE_RESTORED, only set the frame visible if it | ||
| 33 | was previously iconified. (Bug#14841) | ||
| 34 | (x_iconify_frame): Mark the frame iconified. | ||
| 35 | |||
| 36 | 2013-07-26 Paul Eggert <eggert@cs.ucla.edu> | ||
| 37 | |||
| 38 | Fix minor problems found by static checking. | ||
| 39 | * eval.c (get_backtrace_frame, backtrace_eval_unrewind): Now static. | ||
| 40 | (backtrace_eval_unrewind): ';' -> '{}' to pacify GCC. | ||
| 41 | |||
| 42 | 2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 43 | |||
| 44 | * eval.c (set_specpdl_old_value): New function. | ||
| 45 | (unbind_to): Minor simplification. | ||
| 46 | (get_backtrace_frame): New function. | ||
| 47 | (Fbacktrace_frame): Use it. Add `base' argument. | ||
| 48 | (backtrace_eval_unrewind, Fbacktrace_eval): New functions. | ||
| 49 | (syms_of_eval): Export backtrace-eval. | ||
| 50 | * xterm.c (x_focus_changed): Simplify. | ||
| 51 | |||
| 52 | 2013-07-25 Paul Eggert <eggert@cs.ucla.edu> | ||
| 53 | |||
| 54 | * fileio.c (Finsert_file_contents): Avoid double-close (Bug#14936). | ||
| 55 | |||
| 1 | 2013-07-24 Eli Zaretskii <eliz@gnu.org> | 56 | 2013-07-24 Eli Zaretskii <eliz@gnu.org> |
| 2 | 57 | ||
| 3 | * xdisp.c (redisplay_window): Instead of moving point out of | 58 | * xdisp.c (redisplay_window): Instead of moving point out of |
diff --git a/src/ChangeLog.12 b/src/ChangeLog.12 index 2b22690bb87..053baa3d487 100644 --- a/src/ChangeLog.12 +++ b/src/ChangeLog.12 | |||
| @@ -69,7 +69,7 @@ | |||
| 69 | 69 | ||
| 70 | * dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW. | 70 | * dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW. |
| 71 | 71 | ||
| 72 | 2013-03-10 handa <handa@gnu.org> | 72 | 2013-03-10 Kenichi Handa <handa@gnu.org> |
| 73 | 73 | ||
| 74 | * lisp.h (adjust_after_replace): Extern it. | 74 | * lisp.h (adjust_after_replace): Extern it. |
| 75 | 75 | ||
| @@ -11043,7 +11043,7 @@ | |||
| 11043 | * nsterm.m (x_free_frame_resources): Move xfree so freed memory isn't | 11043 | * nsterm.m (x_free_frame_resources): Move xfree so freed memory isn't |
| 11044 | referenced (Bug#11583). | 11044 | referenced (Bug#11583). |
| 11045 | 11045 | ||
| 11046 | 2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com> | 11046 | 2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com> |
| 11047 | 11047 | ||
| 11048 | Implement wave-style variant of underlining. | 11048 | Implement wave-style variant of underlining. |
| 11049 | * dispextern.h (face_underline_type): New enum. | 11049 | * dispextern.h (face_underline_type): New enum. |
| @@ -21400,7 +21400,7 @@ | |||
| 21400 | 21400 | ||
| 21401 | * process.c (Fformat_network_address): Doc fix. | 21401 | * process.c (Fformat_network_address): Doc fix. |
| 21402 | 21402 | ||
| 21403 | 2011-04-08 T.V. Raman <tv.raman.tv@gmail.com> (tiny change) | 21403 | 2011-04-08 T. V. Raman <tv.raman.tv@gmail.com> (tiny change) |
| 21404 | 21404 | ||
| 21405 | * xml.c (parse_region): Avoid creating spurious whitespace nodes. | 21405 | * xml.c (parse_region): Avoid creating spurious whitespace nodes. |
| 21406 | 21406 | ||
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9 index b451b78944f..2e1d41b2495 100644 --- a/src/ChangeLog.9 +++ b/src/ChangeLog.9 | |||
| @@ -10644,7 +10644,7 @@ | |||
| 10644 | (syms_of_xfns) [GLYPH_DEBUG]: Don't defsubr removed functions. | 10644 | (syms_of_xfns) [GLYPH_DEBUG]: Don't defsubr removed functions. |
| 10645 | (syms_of_xfns): Initialize Qcenter. | 10645 | (syms_of_xfns): Initialize Qcenter. |
| 10646 | 10646 | ||
| 10647 | * eval.c (Fsignal): If lisp_eval_depth or spepdl_size are near | 10647 | * eval.c (Fsignal): If lisp_eval_depth or specpdl_size are near |
| 10648 | to the limits, increase the limits. | 10648 | to the limits, increase the limits. |
| 10649 | 10649 | ||
| 10650 | 2000-05-01 Kenichi Handa <handa@etl.go.jp> | 10650 | 2000-05-01 Kenichi Handa <handa@etl.go.jp> |
diff --git a/src/eval.c b/src/eval.c index 6cb2b7a92b8..cb716690e3c 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -138,6 +138,13 @@ specpdl_old_value (union specbinding *pdl) | |||
| 138 | return pdl->let.old_value; | 138 | return pdl->let.old_value; |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | static void | ||
| 142 | set_specpdl_old_value (union specbinding *pdl, Lisp_Object val) | ||
| 143 | { | ||
| 144 | eassert (pdl->kind >= SPECPDL_LET); | ||
| 145 | pdl->let.old_value = val; | ||
| 146 | } | ||
| 147 | |||
| 141 | static Lisp_Object | 148 | static Lisp_Object |
| 142 | specpdl_where (union specbinding *pdl) | 149 | specpdl_where (union specbinding *pdl) |
| 143 | { | 150 | { |
| @@ -3301,6 +3308,8 @@ unbind_to (ptrdiff_t count, Lisp_Object value) | |||
| 3301 | case SPECPDL_UNWIND_VOID: | 3308 | case SPECPDL_UNWIND_VOID: |
| 3302 | specpdl_ptr->unwind_void.func (); | 3309 | specpdl_ptr->unwind_void.func (); |
| 3303 | break; | 3310 | break; |
| 3311 | case SPECPDL_BACKTRACE: | ||
| 3312 | break; | ||
| 3304 | case SPECPDL_LET: | 3313 | case SPECPDL_LET: |
| 3305 | /* If variable has a trivial value (no forwarding), we can | 3314 | /* If variable has a trivial value (no forwarding), we can |
| 3306 | just set it. No need to check for constant symbols here, | 3315 | just set it. No need to check for constant symbols here, |
| @@ -3315,27 +3324,20 @@ unbind_to (ptrdiff_t count, Lisp_Object value) | |||
| 3315 | Fset_default (specpdl_symbol (specpdl_ptr), | 3324 | Fset_default (specpdl_symbol (specpdl_ptr), |
| 3316 | specpdl_old_value (specpdl_ptr)); | 3325 | specpdl_old_value (specpdl_ptr)); |
| 3317 | break; | 3326 | break; |
| 3318 | case SPECPDL_BACKTRACE: | 3327 | case SPECPDL_LET_DEFAULT: |
| 3328 | Fset_default (specpdl_symbol (specpdl_ptr), | ||
| 3329 | specpdl_old_value (specpdl_ptr)); | ||
| 3319 | break; | 3330 | break; |
| 3320 | case SPECPDL_LET_LOCAL: | 3331 | case SPECPDL_LET_LOCAL: |
| 3321 | case SPECPDL_LET_DEFAULT: | 3332 | { |
| 3322 | { /* If the symbol is a list, it is really (SYMBOL WHERE | ||
| 3323 | . CURRENT-BUFFER) where WHERE is either nil, a buffer, or a | ||
| 3324 | frame. If WHERE is a buffer or frame, this indicates we | ||
| 3325 | bound a variable that had a buffer-local or frame-local | ||
| 3326 | binding. WHERE nil means that the variable had the default | ||
| 3327 | value when it was bound. CURRENT-BUFFER is the buffer that | ||
| 3328 | was current when the variable was bound. */ | ||
| 3329 | Lisp_Object symbol = specpdl_symbol (specpdl_ptr); | 3333 | Lisp_Object symbol = specpdl_symbol (specpdl_ptr); |
| 3330 | Lisp_Object where = specpdl_where (specpdl_ptr); | 3334 | Lisp_Object where = specpdl_where (specpdl_ptr); |
| 3331 | Lisp_Object old_value = specpdl_old_value (specpdl_ptr); | 3335 | Lisp_Object old_value = specpdl_old_value (specpdl_ptr); |
| 3332 | eassert (BUFFERP (where)); | 3336 | eassert (BUFFERP (where)); |
| 3333 | 3337 | ||
| 3334 | if (specpdl_ptr->kind == SPECPDL_LET_DEFAULT) | ||
| 3335 | Fset_default (symbol, old_value); | ||
| 3336 | /* If this was a local binding, reset the value in the appropriate | 3338 | /* If this was a local binding, reset the value in the appropriate |
| 3337 | buffer, but only if that buffer's binding still exists. */ | 3339 | buffer, but only if that buffer's binding still exists. */ |
| 3338 | else if (!NILP (Flocal_variable_p (symbol, where))) | 3340 | if (!NILP (Flocal_variable_p (symbol, where))) |
| 3339 | set_internal (symbol, old_value, where, 1); | 3341 | set_internal (symbol, old_value, where, 1); |
| 3340 | } | 3342 | } |
| 3341 | break; | 3343 | break; |
| @@ -3422,7 +3424,30 @@ Output stream used is value of `standard-output'. */) | |||
| 3422 | return Qnil; | 3424 | return Qnil; |
| 3423 | } | 3425 | } |
| 3424 | 3426 | ||
| 3425 | DEFUN ("backtrace-frame", Fbacktrace_frame, Sbacktrace_frame, 1, 1, NULL, | 3427 | static union specbinding * |
| 3428 | get_backtrace_frame (Lisp_Object nframes, Lisp_Object base) | ||
| 3429 | { | ||
| 3430 | union specbinding *pdl = backtrace_top (); | ||
| 3431 | register EMACS_INT i; | ||
| 3432 | |||
| 3433 | CHECK_NATNUM (nframes); | ||
| 3434 | |||
| 3435 | if (!NILP (base)) | ||
| 3436 | { /* Skip up to `base'. */ | ||
| 3437 | base = Findirect_function (base, Qt); | ||
| 3438 | while (backtrace_p (pdl) | ||
| 3439 | && !EQ (base, Findirect_function (backtrace_function (pdl), Qt))) | ||
| 3440 | pdl = backtrace_next (pdl); | ||
| 3441 | } | ||
| 3442 | |||
| 3443 | /* Find the frame requested. */ | ||
| 3444 | for (i = XFASTINT (nframes); i > 0 && backtrace_p (pdl); i--) | ||
| 3445 | pdl = backtrace_next (pdl); | ||
| 3446 | |||
| 3447 | return pdl; | ||
| 3448 | } | ||
| 3449 | |||
| 3450 | DEFUN ("backtrace-frame", Fbacktrace_frame, Sbacktrace_frame, 1, 2, NULL, | ||
| 3426 | doc: /* Return the function and arguments NFRAMES up from current execution point. | 3451 | doc: /* Return the function and arguments NFRAMES up from current execution point. |
| 3427 | If that frame has not evaluated the arguments yet (or is a special form), | 3452 | If that frame has not evaluated the arguments yet (or is a special form), |
| 3428 | the value is (nil FUNCTION ARG-FORMS...). | 3453 | the value is (nil FUNCTION ARG-FORMS...). |
| @@ -3431,17 +3456,12 @@ the value is (t FUNCTION ARG-VALUES...). | |||
| 3431 | A &rest arg is represented as the tail of the list ARG-VALUES. | 3456 | A &rest arg is represented as the tail of the list ARG-VALUES. |
| 3432 | FUNCTION is whatever was supplied as car of evaluated list, | 3457 | FUNCTION is whatever was supplied as car of evaluated list, |
| 3433 | or a lambda expression for macro calls. | 3458 | or a lambda expression for macro calls. |
| 3434 | If NFRAMES is more than the number of frames, the value is nil. */) | 3459 | If NFRAMES is more than the number of frames, the value is nil. |
| 3435 | (Lisp_Object nframes) | 3460 | If BASE is non-nil, it should be a function and NFRAMES counts from its |
| 3461 | nearest activation frame. */) | ||
| 3462 | (Lisp_Object nframes, Lisp_Object base) | ||
| 3436 | { | 3463 | { |
| 3437 | union specbinding *pdl = backtrace_top (); | 3464 | union specbinding *pdl = get_backtrace_frame (nframes, base); |
| 3438 | register EMACS_INT i; | ||
| 3439 | |||
| 3440 | CHECK_NATNUM (nframes); | ||
| 3441 | |||
| 3442 | /* Find the frame requested. */ | ||
| 3443 | for (i = 0; backtrace_p (pdl) && i < XFASTINT (nframes); i++) | ||
| 3444 | pdl = backtrace_next (pdl); | ||
| 3445 | 3465 | ||
| 3446 | if (!backtrace_p (pdl)) | 3466 | if (!backtrace_p (pdl)) |
| 3447 | return Qnil; | 3467 | return Qnil; |
| @@ -3456,6 +3476,109 @@ If NFRAMES is more than the number of frames, the value is nil. */) | |||
| 3456 | } | 3476 | } |
| 3457 | } | 3477 | } |
| 3458 | 3478 | ||
| 3479 | /* For backtrace-eval, we want to temporarily unwind the last few elements of | ||
| 3480 | the specpdl stack, and then rewind them. We store the pre-unwind values | ||
| 3481 | directly in the pre-existing specpdl elements (i.e. we swap the current | ||
| 3482 | value and the old value stored in the specpdl), kind of like the inplace | ||
| 3483 | pointer-reversal trick. As it turns out, the rewind does the same as the | ||
| 3484 | unwind, except it starts from the other end of the specpdl stack, so we use | ||
| 3485 | the same function for both unwind and rewind. */ | ||
| 3486 | static void | ||
| 3487 | backtrace_eval_unrewind (int distance) | ||
| 3488 | { | ||
| 3489 | union specbinding *tmp = specpdl_ptr; | ||
| 3490 | int step = -1; | ||
| 3491 | if (distance < 0) | ||
| 3492 | { /* It's a rewind rather than unwind. */ | ||
| 3493 | tmp += distance - 1; | ||
| 3494 | step = 1; | ||
| 3495 | distance = -distance; | ||
| 3496 | } | ||
| 3497 | |||
| 3498 | for (; distance > 0; distance--) | ||
| 3499 | { | ||
| 3500 | tmp += step; | ||
| 3501 | /* */ | ||
| 3502 | switch (tmp->kind) | ||
| 3503 | { | ||
| 3504 | /* FIXME: Ideally we'd like to "temporarily unwind" (some of) those | ||
| 3505 | unwind_protect, but the problem is that we don't know how to | ||
| 3506 | rewind them afterwards. */ | ||
| 3507 | case SPECPDL_UNWIND: | ||
| 3508 | case SPECPDL_UNWIND_PTR: | ||
| 3509 | case SPECPDL_UNWIND_INT: | ||
| 3510 | case SPECPDL_UNWIND_VOID: | ||
| 3511 | case SPECPDL_BACKTRACE: | ||
| 3512 | break; | ||
| 3513 | case SPECPDL_LET: | ||
| 3514 | /* If variable has a trivial value (no forwarding), we can | ||
| 3515 | just set it. No need to check for constant symbols here, | ||
| 3516 | since that was already done by specbind. */ | ||
| 3517 | if (XSYMBOL (specpdl_symbol (tmp))->redirect | ||
| 3518 | == SYMBOL_PLAINVAL) | ||
| 3519 | { | ||
| 3520 | struct Lisp_Symbol *sym = XSYMBOL (specpdl_symbol (tmp)); | ||
| 3521 | Lisp_Object old_value = specpdl_old_value (tmp); | ||
| 3522 | set_specpdl_old_value (tmp, SYMBOL_VAL (sym)); | ||
| 3523 | SET_SYMBOL_VAL (sym, old_value); | ||
| 3524 | break; | ||
| 3525 | } | ||
| 3526 | else | ||
| 3527 | { | ||
| 3528 | /* FALLTHROUGH! | ||
| 3529 | NOTE: we only ever come here if make_local_foo was used for | ||
| 3530 | the first time on this var within this let. */ | ||
| 3531 | } | ||
| 3532 | case SPECPDL_LET_DEFAULT: | ||
| 3533 | { | ||
| 3534 | Lisp_Object sym = specpdl_symbol (tmp); | ||
| 3535 | Lisp_Object old_value = specpdl_old_value (tmp); | ||
| 3536 | set_specpdl_old_value (tmp, Fdefault_value (sym)); | ||
| 3537 | Fset_default (sym, old_value); | ||
| 3538 | } | ||
| 3539 | break; | ||
| 3540 | case SPECPDL_LET_LOCAL: | ||
| 3541 | { | ||
| 3542 | Lisp_Object symbol = specpdl_symbol (tmp); | ||
| 3543 | Lisp_Object where = specpdl_where (tmp); | ||
| 3544 | Lisp_Object old_value = specpdl_old_value (tmp); | ||
| 3545 | eassert (BUFFERP (where)); | ||
| 3546 | |||
| 3547 | /* If this was a local binding, reset the value in the appropriate | ||
| 3548 | buffer, but only if that buffer's binding still exists. */ | ||
| 3549 | if (!NILP (Flocal_variable_p (symbol, where))) | ||
| 3550 | { | ||
| 3551 | set_specpdl_old_value | ||
| 3552 | (tmp, Fbuffer_local_value (symbol, where)); | ||
| 3553 | set_internal (symbol, old_value, where, 1); | ||
| 3554 | } | ||
| 3555 | } | ||
| 3556 | break; | ||
| 3557 | } | ||
| 3558 | } | ||
| 3559 | } | ||
| 3560 | |||
| 3561 | DEFUN ("backtrace-eval", Fbacktrace_eval, Sbacktrace_eval, 2, 3, NULL, | ||
| 3562 | doc: /* Evaluate EXP in the context of some activation frame. | ||
| 3563 | NFRAMES and BASE specify the activation frame to use, as in `backtrace-frame'. */) | ||
| 3564 | (Lisp_Object exp, Lisp_Object nframes, Lisp_Object base) | ||
| 3565 | { | ||
| 3566 | union specbinding *pdl = get_backtrace_frame (nframes, base); | ||
| 3567 | ptrdiff_t count = SPECPDL_INDEX (); | ||
| 3568 | ptrdiff_t distance = specpdl_ptr - pdl; | ||
| 3569 | eassert (distance >= 0); | ||
| 3570 | |||
| 3571 | if (!backtrace_p (pdl)) | ||
| 3572 | error ("Activation frame not found!"); | ||
| 3573 | |||
| 3574 | backtrace_eval_unrewind (distance); | ||
| 3575 | record_unwind_protect_int (backtrace_eval_unrewind, -distance); | ||
| 3576 | |||
| 3577 | /* Use eval_sub rather than Feval since the main motivation behind | ||
| 3578 | backtrace-eval is to be able to get/set the value of lexical variables | ||
| 3579 | from the debugger. */ | ||
| 3580 | return unbind_to (count, eval_sub (exp)); | ||
| 3581 | } | ||
| 3459 | 3582 | ||
| 3460 | void | 3583 | void |
| 3461 | mark_specpdl (void) | 3584 | mark_specpdl (void) |
| @@ -3701,6 +3824,7 @@ alist of active lexical bindings. */); | |||
| 3701 | defsubr (&Sbacktrace_debug); | 3824 | defsubr (&Sbacktrace_debug); |
| 3702 | defsubr (&Sbacktrace); | 3825 | defsubr (&Sbacktrace); |
| 3703 | defsubr (&Sbacktrace_frame); | 3826 | defsubr (&Sbacktrace_frame); |
| 3827 | defsubr (&Sbacktrace_eval); | ||
| 3704 | defsubr (&Sspecial_variable_p); | 3828 | defsubr (&Sspecial_variable_p); |
| 3705 | defsubr (&Sfunctionp); | 3829 | defsubr (&Sfunctionp); |
| 3706 | } | 3830 | } |
diff --git a/src/fileio.c b/src/fileio.c index a19fcd9f663..c47b3533145 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -3860,7 +3860,8 @@ by calling `format-decode', which see. */) | |||
| 3860 | if (same_at_start - BEGV_BYTE == end_offset - beg_offset) | 3860 | if (same_at_start - BEGV_BYTE == end_offset - beg_offset) |
| 3861 | { | 3861 | { |
| 3862 | emacs_close (fd); | 3862 | emacs_close (fd); |
| 3863 | specpdl_ptr--; | 3863 | clear_unwind_protect (fd_index); |
| 3864 | |||
| 3864 | /* Truncate the buffer to the size of the file. */ | 3865 | /* Truncate the buffer to the size of the file. */ |
| 3865 | del_range_1 (same_at_start, same_at_end, 0, 0); | 3866 | del_range_1 (same_at_start, same_at_end, 0, 0); |
| 3866 | goto handled; | 3867 | goto handled; |
| @@ -146,8 +146,6 @@ To get the number of bytes, use `string-bytes'. */) | |||
| 146 | return val; | 146 | return val; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | /* This does not check for quits. That is safe since it must terminate. */ | ||
| 150 | |||
| 151 | DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0, | 149 | DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0, |
| 152 | doc: /* Return the length of a list, but avoid error or infinite loop. | 150 | doc: /* Return the length of a list, but avoid error or infinite loop. |
| 153 | This function never gets an error. If LIST is not really a list, | 151 | This function never gets an error. If LIST is not really a list, |
diff --git a/src/frame.c b/src/frame.c index 5fa54052cd2..95f53569561 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -1157,10 +1157,14 @@ delete_frame (Lisp_Object frame, Lisp_Object force) | |||
| 1157 | 1157 | ||
| 1158 | FOR_EACH_FRAME (frames, this) | 1158 | FOR_EACH_FRAME (frames, this) |
| 1159 | { | 1159 | { |
| 1160 | if (! EQ (this, frame) | 1160 | Lisp_Object fminiw; |
| 1161 | && EQ (frame, | 1161 | |
| 1162 | WINDOW_FRAME (XWINDOW | 1162 | if (EQ (this, frame)) |
| 1163 | (FRAME_MINIBUF_WINDOW (XFRAME (this)))))) | 1163 | continue; |
| 1164 | |||
| 1165 | fminiw = FRAME_MINIBUF_WINDOW (XFRAME (this)); | ||
| 1166 | |||
| 1167 | if (WINDOWP (fminiw) && EQ (frame, WINDOW_FRAME (XWINDOW (fminiw)))) | ||
| 1164 | { | 1168 | { |
| 1165 | /* If we MUST delete this frame, delete the other first. | 1169 | /* If we MUST delete this frame, delete the other first. |
| 1166 | But do this only if FORCE equals `noelisp'. */ | 1170 | But do this only if FORCE equals `noelisp'. */ |
diff --git a/src/nsterm.m b/src/nsterm.m index 61538798337..14706f6b91d 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -4473,9 +4473,9 @@ ns_term_shutdown (int sig) | |||
| 4473 | 4473 | ||
| 4474 | #ifdef NS_IMPL_COCOA | 4474 | #ifdef NS_IMPL_COCOA |
| 4475 | /* If no dialog and none of our frames have focus and it is a move, skip it. | 4475 | /* If no dialog and none of our frames have focus and it is a move, skip it. |
| 4476 | It is a mouse move in an auxillary menu, i.e. on the top right on OSX, | 4476 | It is a mouse move in an auxiliary menu, i.e. on the top right on OSX, |
| 4477 | such as Wifi, sound, date or similar. | 4477 | such as Wifi, sound, date or similar. |
| 4478 | This prevents "spooky" highlightning in the frame under the menu. */ | 4478 | This prevents "spooky" highlighting in the frame under the menu. */ |
| 4479 | if (type == NSMouseMoved && [NSApp modalWindow] == nil) | 4479 | if (type == NSMouseMoved && [NSApp modalWindow] == nil) |
| 4480 | { | 4480 | { |
| 4481 | struct ns_display_info *di; | 4481 | struct ns_display_info *di; |
diff --git a/src/process.c b/src/process.c index 34783fae5fd..d87a1803fe2 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -1330,7 +1330,7 @@ Returns nil if format of ADDRESS is invalid. */) | |||
| 1330 | } | 1330 | } |
| 1331 | 1331 | ||
| 1332 | DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0, | 1332 | DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0, |
| 1333 | doc: /* Return a list of all processes. */) | 1333 | doc: /* Return a list of all processes that are Emacs sub-processes. */) |
| 1334 | (void) | 1334 | (void) |
| 1335 | { | 1335 | { |
| 1336 | return Fmapcar (Qcdr, Vprocess_alist); | 1336 | return Fmapcar (Qcdr, Vprocess_alist); |
diff --git a/src/w32fns.c b/src/w32fns.c index 675b716f3b0..2b06936d119 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -3213,6 +3213,8 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||
| 3213 | described by W was deleted, as indicated by its buffer | 3213 | described by W was deleted, as indicated by its buffer |
| 3214 | field being reset to nil. */ | 3214 | field being reset to nil. */ |
| 3215 | f = x_window_to_frame (dpyinfo, hwnd); | 3215 | f = x_window_to_frame (dpyinfo, hwnd); |
| 3216 | if (!(f && FRAME_LIVE_P (f))) | ||
| 3217 | break; | ||
| 3216 | w = XWINDOW (FRAME_SELECTED_WINDOW (f)); | 3218 | w = XWINDOW (FRAME_SELECTED_WINDOW (f)); |
| 3217 | /* Punt if someone changed the frame's selected window | 3219 | /* Punt if someone changed the frame's selected window |
| 3218 | behind our back. */ | 3220 | behind our back. */ |
diff --git a/src/w32term.c b/src/w32term.c index 2fe3fe07462..a596a487f3d 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -4360,8 +4360,9 @@ w32_read_socket (struct terminal *terminal, | |||
| 4360 | SET_FRAME_VISIBLE (f, 1); | 4360 | SET_FRAME_VISIBLE (f, 1); |
| 4361 | SET_FRAME_ICONIFIED (f, 0); | 4361 | SET_FRAME_ICONIFIED (f, 0); |
| 4362 | SET_FRAME_GARBAGED (f); | 4362 | SET_FRAME_GARBAGED (f); |
| 4363 | DebPrint (("frame %p (%s) reexposed by WM_PAINT\n", f, | 4363 | if (!f->output_data.w32->asked_for_visible) |
| 4364 | SDATA (f->name))); | 4364 | DebPrint (("frame %p (%s) reexposed by WM_PAINT\n", f, |
| 4365 | SDATA (f->name))); | ||
| 4365 | 4366 | ||
| 4366 | /* WM_PAINT serves as MapNotify as well, so report | 4367 | /* WM_PAINT serves as MapNotify as well, so report |
| 4367 | visibility changes properly. */ | 4368 | visibility changes properly. */ |
| @@ -4819,7 +4820,8 @@ w32_read_socket (struct terminal *terminal, | |||
| 4819 | { | 4820 | { |
| 4820 | bool iconified = FRAME_ICONIFIED_P (f); | 4821 | bool iconified = FRAME_ICONIFIED_P (f); |
| 4821 | 4822 | ||
| 4822 | SET_FRAME_VISIBLE (f, 1); | 4823 | if (iconified) |
| 4824 | SET_FRAME_VISIBLE (f, 1); | ||
| 4823 | SET_FRAME_ICONIFIED (f, 0); | 4825 | SET_FRAME_ICONIFIED (f, 0); |
| 4824 | 4826 | ||
| 4825 | /* wait_reading_process_output will notice this | 4827 | /* wait_reading_process_output will notice this |
| @@ -4921,16 +4923,11 @@ w32_read_socket (struct terminal *terminal, | |||
| 4921 | break; | 4923 | break; |
| 4922 | 4924 | ||
| 4923 | case WM_KILLFOCUS: | 4925 | case WM_KILLFOCUS: |
| 4926 | w32_detect_focus_change (dpyinfo, &msg, &inev); | ||
| 4924 | f = x_top_window_to_frame (dpyinfo, msg.msg.hwnd); | 4927 | f = x_top_window_to_frame (dpyinfo, msg.msg.hwnd); |
| 4925 | 4928 | ||
| 4926 | if (f) | 4929 | if (f) |
| 4927 | { | 4930 | { |
| 4928 | if (f == dpyinfo->w32_focus_event_frame) | ||
| 4929 | dpyinfo->w32_focus_event_frame = 0; | ||
| 4930 | |||
| 4931 | if (f == dpyinfo->w32_focus_frame) | ||
| 4932 | x_new_focus_frame (dpyinfo, 0); | ||
| 4933 | |||
| 4934 | if (f == hlinfo->mouse_face_mouse_frame) | 4931 | if (f == hlinfo->mouse_face_mouse_frame) |
| 4935 | { | 4932 | { |
| 4936 | /* If we move outside the frame, then we're | 4933 | /* If we move outside the frame, then we're |
| @@ -6129,6 +6126,9 @@ x_iconify_frame (struct frame *f) | |||
| 6129 | /* Simulate the user minimizing the frame. */ | 6126 | /* Simulate the user minimizing the frame. */ |
| 6130 | SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0); | 6127 | SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0); |
| 6131 | 6128 | ||
| 6129 | SET_FRAME_VISIBLE (f, 0); | ||
| 6130 | SET_FRAME_ICONIFIED (f, 1); | ||
| 6131 | |||
| 6132 | unblock_input (); | 6132 | unblock_input (); |
| 6133 | } | 6133 | } |
| 6134 | 6134 | ||
diff --git a/src/xterm.c b/src/xterm.c index 74e495e5645..b3534871da9 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -3435,17 +3435,10 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra | |||
| 3435 | /* Don't stop displaying the initial startup message | 3435 | /* Don't stop displaying the initial startup message |
| 3436 | for a switch-frame event we don't need. */ | 3436 | for a switch-frame event we don't need. */ |
| 3437 | /* When run as a daemon, Vterminal_frame is always NIL. */ | 3437 | /* When run as a daemon, Vterminal_frame is always NIL. */ |
| 3438 | if ((NILP (Vterminal_frame) || EQ (Fdaemonp(), Qt)) | 3438 | bufp->arg = (((NILP (Vterminal_frame) || EQ (Fdaemonp (), Qt)) |
| 3439 | && CONSP (Vframe_list) | 3439 | && CONSP (Vframe_list) |
| 3440 | && !NILP (XCDR (Vframe_list))) | 3440 | && !NILP (XCDR (Vframe_list))) |
| 3441 | { | 3441 | ? Qt : Qnil); |
| 3442 | bufp->arg = Qt; | ||
| 3443 | } | ||
| 3444 | else | ||
| 3445 | { | ||
| 3446 | bufp->arg = Qnil; | ||
| 3447 | } | ||
| 3448 | |||
| 3449 | bufp->kind = FOCUS_IN_EVENT; | 3442 | bufp->kind = FOCUS_IN_EVENT; |
| 3450 | XSETFRAME (bufp->frame_or_window, frame); | 3443 | XSETFRAME (bufp->frame_or_window, frame); |
| 3451 | } | 3444 | } |