Merge from mainline.

This commit is contained in:
Xue Fuqiao 2013-07-30 08:29:09 +08:00
commit d206733324
79 changed files with 1577 additions and 850 deletions

View file

@ -1,3 +1,23 @@
2013-07-29 Michael Albinus <michael.albinus@gmx.de>
* INSTALL (DETAILED BUILDING AND INSTALLATION): Add
--without-file-notification to --without-all.
2013-07-29 Xue Fuqiao <xfq.free@gmail.com>
* INSTALL: Fix description.
2013-07-27 Glenn Morris <rgm@gnu.org>
* configure.ac: Extend the --with-sound option to allow
specification of OSS or ALSA (see bug#14812#64).
2013-07-25 Glenn Morris <rgm@gnu.org>
* info/dir: Add ido.
* make-dist: Add a --tests option, to include test/.
2013-07-24 Glenn Morris <rgm@gnu.org>
* configure.ac: Use self-descriptive tags for AC_CONFIG_COMMANDS.
@ -55,7 +75,7 @@
* lib/ignore-value.h: Remove this gnulib-imported file.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
* configure.ac (HAVE_IMAGEMAGICK): Check on NS also (Bug#14798).
@ -2021,7 +2041,7 @@
* Makefile.in (install-arch-indep, install-doc, install-info)
(uninstall): Scrap superfluous subshells.
2012-05-19 Ulrich Mueller <ulm@gentoo.org>
2012-05-19 Ulrich Müller <ulm@gentoo.org>
* Makefile.in (install-etc): Respect DESTDIR. (Bug#11518)
@ -3797,7 +3817,7 @@
* Makefile.in (install-arch-indep, info):
Replace MAKEINFO = off with HAVE_MAKEINFO = no.
2010-12-29 Ulrich Mueller <ulm@gentoo.org>
2010-12-29 Ulrich Müller <ulm@gentoo.org>
* configure.in: Make gameuser configurable (Bug#7717).
@ -5007,7 +5027,7 @@
* info/dir: Untabify.
2008-11-28 Ulrich Mueller <ulm@gentoo.org>
2008-11-28 Ulrich Müller <ulm@gentoo.org>
* configure.in: Fix last change.
@ -5070,7 +5090,7 @@
* configure (*-sunos5*, *-solaris*): Use the new file sol2-10.h.
Use sol2-6.h for Solaris 7-9.
2008-10-18 Ulrich Mueller <ulm@gentoo.org>
2008-10-18 Ulrich Müller <ulm@gentoo.org>
* configure.in: Add support for GNU/Linux on SuperH.
@ -5154,7 +5174,7 @@
* configure.in (COCOA_EXPERIMENTAL_CTRL_G): Fix 2008-08-04 change.
2008-08-05 Ulrich Mueller <ulm@gentoo.org>
2008-08-05 Ulrich Müller <ulm@gentoo.org>
* configure.in: Add checks for krb5_error.text and
krb5_error.e_text struct members.
@ -5522,7 +5542,7 @@
* configure.in (--with-gcc): Remove.
* INSTALL (DETAILED BUILDING AND INSTALLATION): Remove --with-gcc.
2008-02-05 Ulrich Mueller <ulm@gentoo.org>
2008-02-05 Ulrich Müller <ulm@gentoo.org>
* INSTALL: Recommend giflib, not libungif.
@ -5544,7 +5564,7 @@
* configure.in: For libotf and m17n-flt checks, set shell vars
HAVE_LIBOTF and HAVE_M17N_FLT instead of pkg_check_libotf and
pkg_check_m17n_flt, respectively, for the sake of the summary output.
Reported by Ulrich Mueller.
Reported by Ulrich Müller.
2008-02-02 Eli Zaretskii <eliz@gnu.org>
@ -5858,7 +5878,7 @@
* configure.in: Put quotes around nested macro calls.
2007-08-31 Ulrich Mueller <ulm@gentoo.org> (tiny change)
2007-08-31 Ulrich Müller <ulm@gentoo.org> (tiny change)
* configure.in: Fix typo.
* configure: Regenerate.

18
INSTALL
View file

@ -98,7 +98,6 @@ sections if you need to.
first clean the source directories:
make distclean
./configure
Note that the install automatically saves space by compressing
(provided you have the `gzip' program) those installed Lisp source (.el)
@ -324,14 +323,15 @@ equivalent to --without-sound --without-dbus --without-libotf
--without-selinux --without-xft --without-gsettings --without-gnutls
--without-rsvg --without-xml2 --without-gconf --without-imagemagick
--without-m17n-flt --without-jpeg --without-tiff --without-gif
--without-png --without-gpm. Note that --without-all leaves X support
enabled, and using the GTK2 or GTK3 toolkit creates a lot of library
dependencies. So if you want to build a small executable with very basic
X support, use --without-all --with-x-toolkit=no. For the smallest possible
executable without X, use --without-all --without-x. If you want to build
with just a few features enabled, you can combine --without-all with
--with-FEATURE. For example, you can use --without-all --with-dbus
to build with DBus support and nothing more.
--without-png --without-gpm --without-file-notification. Note that
--without-all leaves X support enabled, and using the GTK2 or GTK3
toolkit creates a lot of library dependencies. So if you want to
build a small executable with very basic X support, use --without-all
--with-x-toolkit=no. For the smallest possible executable without X,
use --without-all --without-x. If you want to build with just a few
features enabled, you can combine --without-all with --with-FEATURE.
For example, you can use --without-all --with-dbus to build with DBus
support and nothing more.
Use --with-wide-int to implement Emacs values with the type 'long long',
even on hosts where a narrower type would do. With this option, on a

72
autogen/configure vendored
View file

@ -2233,7 +2233,9 @@ Optional Packages:
--with-mail-unlink unlink, rather than empty, mail spool after reading
--with-mailhost=HOSTNAME
string giving default POP mail host
--without-sound don't compile with sound support
--with-sound=VALUE compile with sound support (VALUE one of: yes,
ossaudio, alsa, no; default yes). Only for
GNU/Linux, FreeBSD, NetBSD, MinGW.
--with-x-toolkit=KIT use an X toolkit (KIT one of: yes or gtk, gtk2,
gtk3, lucid or athena, motif, no)
--with-wide-int prefer wide Emacs integers (typically 62-bit)
@ -4116,9 +4118,16 @@ fi
# Check whether --with-sound was given.
if test "${with_sound+set}" = set; then :
withval=$with_sound;
withval=$with_sound; case "${withval}" in
yes|no|ossaudio|alsa) val=$withval ;;
*) as_fn_error "\`--with-sound=$withval' is invalid;
this option's value should be \`yes', \`no', \`ossaudio', or \`alsa'." "$LINENO" 5
;;
esac
with_sound=$val
else
with_sound=$with_features
with_sound=$with_features
fi
@ -8995,6 +9004,7 @@ fi
HAVE_SOUND=no
if test "${with_sound}" != "no"; then
# Sound support for GNU/Linux, the free BSDs, and MinGW.
for ac_header in machine/soundcard.h sys/soundcard.h soundcard.h
@ -9017,8 +9027,9 @@ fi
done
# Emulation library used on NetBSD.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then
# Emulation library used on NetBSD.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _oss_ioctl in -lossaudio" >&5
$as_echo_n "checking for _oss_ioctl in -lossaudio... " >&6; }
if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then :
$as_echo_n "(cached) " >&6
@ -9060,10 +9071,14 @@ else
LIBSOUND=
fi
test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \
as_fn_error "ossaudio sound support requested but not found." "$LINENO" 5
fi
ALSA_REQUIRED=1.0.0
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
ALSA_REQUIRED=1.0.0
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
succeeded=no
@ -9115,12 +9130,12 @@ $as_echo "no" >&6; }
HAVE_ALSA=no
fi
if test $HAVE_ALSA = yes; then
SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
CFLAGS="$ALSA_CFLAGS $CFLAGS"
LIBS="$ALSA_LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
if test $HAVE_ALSA = yes; then
SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
CFLAGS="$ALSA_CFLAGS $CFLAGS"
LIBS="$ALSA_LIBS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <asoundlib.h>
int
@ -9137,8 +9152,8 @@ else
emacs_alsa_normal=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$emacs_alsa_normal" != yes; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
if test "$emacs_alsa_normal" != yes; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <alsa/asoundlib.h>
int
@ -9155,27 +9170,30 @@ else
emacs_alsa_subdir=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
if test "$emacs_alsa_subdir" != yes; then
as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5
if test "$emacs_alsa_subdir" != yes; then
as_fn_error "pkg-config found alsa, but it does not compile. See config.log for error messages." "$LINENO" 5
fi
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
fi
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
fi
CFLAGS="$SAVE_CFLAGS"
LIBS="$SAVE_LIBS"
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
CFLAGS="$SAVE_CFLAGS"
LIBS="$SAVE_LIBS"
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
$as_echo "#define HAVE_ALSA 1" >>confdefs.h
elif test "${with_sound}" = "alsa"; then
as_fn_error "ALSA sound support requested but not found." "$LINENO" 5
fi
fi
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
case "$opsys" in
gnu-linux|freebsd|netbsd|mingw32)
gnu-linux|freebsd|netbsd|mingw32)
$as_echo "#define HAVE_SOUND 1" >>confdefs.h
HAVE_SOUND=yes
;;
esac
fi
@ -28679,6 +28697,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
echo " Does Emacs support sound? ${HAVE_SOUND}"
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"

View file

@ -141,7 +141,18 @@ AC_ARG_WITH([mailhost],[AS_HELP_STRING([--with-mailhost=HOSTNAME],
[string giving default POP mail host])],
AC_DEFINE_UNQUOTED(MAILHOST, ["$withval"], [String giving fallback POP mail host.]))
OPTION_DEFAULT_ON([sound],[don't compile with sound support])
AC_ARG_WITH([sound],[AS_HELP_STRING([--with-sound=VALUE],
[compile with sound support (VALUE one of: yes, ossaudio, alsa, no;
default yes). Only for GNU/Linux, FreeBSD, NetBSD, MinGW.])],
[ case "${withval}" in
yes|no|ossaudio|alsa) val=$withval ;;
*) AC_MSG_ERROR([`--with-sound=$withval' is invalid;
this option's value should be `yes', `no', `ossaudio', or `alsa'.])
;;
esac
with_sound=$val
],
[with_sound=$with_features])
dnl FIXME currently it is not the last.
dnl This should be the last --with option, because --with-x is
@ -1253,6 +1264,7 @@ AC_DEFUN([PKG_CHECK_MODULES], [
fi
])
HAVE_SOUND=no
if test "${with_sound}" != "no"; then
# Sound support for GNU/Linux, the free BSDs, and MinGW.
AC_CHECK_HEADERS([machine/soundcard.h sys/soundcard.h soundcard.h],
@ -1262,47 +1274,61 @@ if test "${with_sound}" != "no"; then
#include <windows.h>
#endif
])
# Emulation library used on NetBSD.
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
if test "${with_sound}" = "ossaudio" || test "${with_sound}" = "yes"; then
# Emulation library used on NetBSD.
AC_CHECK_LIB(ossaudio, _oss_ioctl, LIBSOUND=-lossaudio, LIBSOUND=)
test "${with_sound}" = "ossaudio" && test -z "$LIBSOUND" && \
AC_MSG_ERROR([ossaudio sound support requested but not found.])
dnl FIXME? If we did find ossaudio, should we set with_sound=ossaudio?
dnl Traditionally, we go on to check for alsa too. Does that make sense?
fi
AC_SUBST(LIBSOUND)
ALSA_REQUIRED=1.0.0
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
if test $HAVE_ALSA = yes; then
SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
CFLAGS="$ALSA_CFLAGS $CFLAGS"
LIBS="$ALSA_LIBS $LIBS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
emacs_alsa_normal=yes,
emacs_alsa_normal=no)
if test "$emacs_alsa_normal" != yes; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
[[snd_lib_error_set_handler (0);]])],
emacs_alsa_subdir=yes,
emacs_alsa_subdir=no)
if test "$emacs_alsa_subdir" != yes; then
AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
if test "${with_sound}" = "alsa" || test "${with_sound}" = "yes"; then
ALSA_REQUIRED=1.0.0
ALSA_MODULES="alsa >= $ALSA_REQUIRED"
PKG_CHECK_MODULES(ALSA, $ALSA_MODULES, HAVE_ALSA=yes, HAVE_ALSA=no)
if test $HAVE_ALSA = yes; then
SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
CFLAGS="$ALSA_CFLAGS $CFLAGS"
LIBS="$ALSA_LIBS $LIBS"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <asoundlib.h>]], [[snd_lib_error_set_handler (0);]])],
emacs_alsa_normal=yes,
emacs_alsa_normal=no)
if test "$emacs_alsa_normal" != yes; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <alsa/asoundlib.h>]],
[[snd_lib_error_set_handler (0);]])],
emacs_alsa_subdir=yes,
emacs_alsa_subdir=no)
if test "$emacs_alsa_subdir" != yes; then
AC_MSG_ERROR([pkg-config found alsa, but it does not compile. See config.log for error messages.])
fi
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
fi
ALSA_CFLAGS="$ALSA_CFLAGS -DALSA_SUBDIR_INCLUDE"
fi
CFLAGS="$SAVE_CFLAGS"
LIBS="$SAVE_LIBS"
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
fi
CFLAGS="$SAVE_CFLAGS"
LIBS="$SAVE_LIBS"
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
elif test "${with_sound}" = "alsa"; then
AC_MSG_ERROR([ALSA sound support requested but not found.])
fi
fi dnl with_sound = alsa|yes
dnl Define HAVE_SOUND if we have sound support. We know it works and
dnl compiles only on the specified platforms. For others, it
dnl probably doesn't make sense to try.
dnl FIXME So surely we should bypass this whole section if not using
dnl one of these platforms?
if test x$have_sound_header = xyes || test $HAVE_ALSA = yes; then
case "$opsys" in
dnl defined __FreeBSD__ || defined __NetBSD__ || defined __linux__
dnl Adjust the --with-sound help text if you change this.
gnu-linux|freebsd|netbsd|mingw32)
AC_DEFINE(HAVE_SOUND, 1, [Define to 1 if you have sound support.])
HAVE_SOUND=yes
;;
esac
fi
@ -4749,6 +4775,8 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}"
echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}"
echo " Does Emacs support sound? ${HAVE_SOUND}"
echo " Does Emacs use -lgpm? ${HAVE_GPM}"
echo " Does Emacs use -ldbus? ${HAVE_DBUS}"
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"

View file

@ -1,3 +1,17 @@
2013-07-28 Xue Fuqiao <xfq.free@gmail.com>
* glossary.texi (Glossary): Add some entries.
2013-07-27 Xue Fuqiao <xfq.free@gmail.com>
* maintaining.texi (VC Directory Commands): Mention `D' and `L' in
vc-dir. (Bug#14948)
2013-07-26 Eli Zaretskii <eliz@gnu.org>
* display.texi (Fringes): Document the variable fringe-mode.
(Bug#14946)
2013-07-03 Glenn Morris <rgm@gnu.org>
* maintaining.texi (EDE): Fix cross-reference.

View file

@ -1017,12 +1017,15 @@ mode's symbol is a member of the list @code{hi-lock-exclude-modes}.
@findex set-fringe-style
@findex fringe-mode
@vindex fringe-mode @r{(variable)}
On graphical displays, each Emacs window normally has narrow
@dfn{fringes} on the left and right edges. The fringes are used to
display symbols that provide information about the text in the window.
You can type @kbd{M-x fringe-mode} to disable the fringes, or modify
their width. This command affects fringes in all frames; to modify
fringes on the selected frame only, use @kbd{M-x set-fringe-style}.
You can make your changes to the fringes permanent by customizing the
variable @code{fringe-mode}.
The most common use of the fringes is to indicate a continuation
line (@pxref{Continuation Lines}). When one line of text is split

View file

@ -4,6 +4,7 @@
@c See file emacs.texi for copying conditions.
@node Glossary
@unnumbered Glossary
@cindex glossary
@table @asis
@anchor{Glossary---Abbrev}
@ -18,7 +19,10 @@ Aborting means getting out of a recursive edit (q.v.). The
commands @kbd{C-]} and @kbd{M-x top-level} are used for this.
@xref{Quitting}.
@c FIXME? Active Region
@item Active Region
Setting the mark (q.v.@:) at a position in the text also activates it.
When the mark is active, we call the region an active region.
@xref{Mark}.
@item Alt
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
(q.v.), and not in the middle of a command. You can get back to top
level by aborting (q.v.@:) and quitting (q.v.). @xref{Quitting}.
@c FIXME? Transient Mark Mode
@item Transient Mark Mode
The default behavior of the mark (q.v.@:) and region (q.v.), in which
setting the mark activates it and highlights the region, is called
Transient Mark mode. In GNU Emacs 23 and onwards, it is enabled by
default. @xref{Disabled Transient Mark}.
@item Transposition
Transposing two units of text means putting each one into the place

View file

@ -1222,7 +1222,7 @@ Revisions}), and @w{@kbd{C-x v u}} (@pxref{VC Undo}).
The VC Directory buffer also defines some single-key shortcuts for
VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l},
@kbd{i}, and @kbd{v}.
@kbd{i}, @kbd{D}, @kbd{L} and @kbd{v}.
For example, you can commit a set of edited files by opening a VC
Directory buffer, where the files are listed with the @samp{edited}

View file

@ -1080,7 +1080,7 @@
* display.texi (Face Attributes): Copyedits. Add a few cindex entries.
Overlining no longer behaves exactly like underlining.
2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com>
2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com>
* display.texi (Face Attributes):
Document wave-style underline face attribute.

View file

@ -1,3 +1,47 @@
2013-07-29 David Engster <deng@randomsample.de>
* eieio.texi (top): Make clear that EIEIO is not a full CLOS
implementation.
(Introduction): Add further missing features.
(Building Classes): Add introductory paragraph.
(Wish List): Add metaclasses and EQL specialization.
2013-07-29 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Frequently Asked Questions): Mention
`tramp-use-ssh-controlmaster-options'.
2013-07-26 Tassilo Horn <tsdh@gnu.org>
* gnus.texi (Sorting the Summary Buffer): Document new defcustom
`gnus-sort-threads-recursively'.
2013-07-25 Glenn Morris <rgm@gnu.org>
* Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add ido.
(ido, $(buildinfodir)/ido$(INFO_EXT), ido.dvi, ido.pdf): New rules.
* erc.texi (Special Features): Update contact information.
(History): Avoid using @email.
* eshell.texi (Bugs and ideas): Minor updates.
* faq.texi (Reporting bugs, Origin of the term Emacs)
(Setting up a customization file)
(Using an already running Emacs process, Turning off beeping)
(Packages that do not come with Emacs)
(Replying to the sender of a message): Avoid using @email.
* pcl-cvs.texi (Contributors, Bugs): Avoid using @email.
* reftex.texi (Imprint): Avoid using @email.
* ses.texi (Top): Update bug reporting instructions.
(Acknowledgments): Avoid using @email.
* woman.texi (Introduction, Background): Remove outdated information.
(Bugs, Acknowledgments): Avoid using @email.
2013-07-24 Xue Fuqiao <xfq.free@gmail.com>
* ido.texi: New file.
@ -1096,7 +1140,7 @@
corresponding function names, according to
`org-agenda-view-mode-dispatch'.
2012-09-30 Jan Bäcker <jan.boecker@jboecker.de>
2012-09-30 Jan Böcker <jan.boecker@jboecker.de>
* org.texi (The spreadsheet): Fix typo.

View file

@ -45,7 +45,7 @@ MAKEINFO_OPTS = --force -I$(emacsdir)
INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \
dbus dired-x ebrowse ede ediff edt eieio \
emacs-mime epa erc ert eshell eudc efaq \
flymake forms gnus emacs-gnutls htmlfontify idlwave info.info \
flymake forms gnus emacs-gnutls htmlfontify idlwave ido info.info \
mairix-el message mh-e newsticker nxml-mode \
org pcl-cvs pgg rcirc remember reftex sasl \
sc semantic ses sieve smtpmail speedbar srecode tramp \
@ -79,6 +79,7 @@ DVI_TARGETS = \
emacs-gnutls.dvi \
htmlfontify.dvi \
idlwave.dvi \
ido.dvi \
info.dvi \
mairix-el.dvi \
message.dvi \
@ -135,6 +136,7 @@ PDF_TARGETS = \
htmlfontify.pdf \
emacs-gnutls.pdf \
idlwave.pdf \
ido.pdf \
info.pdf \
mairix-el.pdf \
message.pdf \
@ -452,6 +454,15 @@ idlwave.dvi: ${srcdir}/idlwave.texi ${gfdl}
idlwave.pdf: ${srcdir}/idlwave.texi ${gfdl}
$(ENVADD) $(TEXI2PDF) ${srcdir}/idlwave.texi
ido : $(buildinfodir)/ido$(INFO_EXT)
$(buildinfodir)/ido$(INFO_EXT): ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
$(mkinfodir)
$(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/ido.texi
ido.dvi: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
$(ENVADD) $(TEXI2DVI) ${srcdir}/ido.texi
ido.pdf: ${srcdir}/ido.texi $(emacsdir)/emacsver.texi ${gfdl}
$(ENVADD) $(TEXI2PDF) ${srcdir}/ido.texi
# NB this one needs --no-split even without a .info extension.
# Avoid name clash with overall "info" target.
info.info : $(buildinfodir)/info$(INFO_EXT)

View file

@ -46,10 +46,10 @@ modify this GNU manual.''
@comment node-name, next, previous, up
@top EIEIO
@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'') is
a CLOS (Common Lisp Object System) compatibility layer for Emacs Lisp.
It provides a framework for writing object-oriented applications in
Emacs.
@eieio{} (``Enhanced Implementation of Emacs Interpreted Objects'')
provides an Object Oriented layer for Emacs Lisp, following the basic
concepts of the Common Lisp Object System (CLOS). It provides a
framework for writing object-oriented applications in Emacs.
@ifnottex
@insertcopying
@ -201,8 +201,6 @@ Byte compilation support of methods.
@item
Help system extensions for classes and methods.
@item
Automatic texinfo documentation generator.
@item
Several base classes for interesting tasks.
@item
Simple test suite.
@ -212,20 +210,31 @@ Public and private classifications for slots (extensions to CLOS)
Customization support in a class (extension to CLOS)
@end enumerate
Here are some CLOS features that @eieio{} presently lacks:
Here are some important CLOS features that @eieio{} presently lacks:
@table @asis
@item Complete @code{defclass} tag support
All CLOS tags are currently supported, but the following are not
currently implemented correctly:
@table @code
@item :metaclass
There is only one base superclass for all @eieio{} classes, which is
the @code{eieio-default-superclass}.
@item :default-initargs
@item Method dispatch
EIEO does not support method dispatch for built-in types and multiple
arguments types. In other words, method dispatch only looks at the
first argument, and this one must be an @eieio{} type.
@item Support for metaclasses
There is just one default metaclass, @code{eieio-default-superclass},
and you cannot define your own. The @code{:metaclass} tag in
@code{defclass} is ignored. Also, functions like `class-of' and
`find-class', which should return instances of the metaclass, behave
differently in @eieio{} in that they return symbols or plain structures
instead.
@item EQL specialization
EIEIO does not support it.
@item @code{:around} method tag
This CLOS method tag is non-functional.
@item :default-initargs in @code{defclass}
Each slot has an @code{:initarg} tag, so this is not really necessary.
@end table
@item Mock object initializers
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
values can potentially cause modifications in the mock object. @eieio{}
should use a deep copy but currently does not.
@item @code{:around} method tag
This CLOS method tag is non-functional.
@end table
@node Building Classes
@comment node-name, next, previous, up
@chapter Building Classes
First off, please note that this manual cannot serve as a complete
introduction to object oriented programming and generic functions in
LISP. Although EIEIO is not a complete CLOS implementation and also
differs from CLOS in several aspects, it follows the same basic
concepts. Therefore, it is highly recommended to learn these from a
textbook or tutorial first, especially if you only know OOP from
languages like C++ or Java. If on the other hand you are already
familiar with CLOS, you should be aware that @eieio{} does not implement
the full CLOS specificiation and also differs in some other aspects
(@xref{Introduction}, and @ref{CLOS compatibility}).
A @dfn{class} is a definition for organizing data and methods
together. An @eieio{} class has structures similar to the classes
found in other object-oriented (OO) languages.
@ -1930,8 +1947,9 @@ Some important compatibility features that would be good to add are:
@enumerate
@item
Support for metaclasses and EQL specialization.
@item
@code{:around} method key.
@item
Method dispatch for built-in types.
@item

View file

@ -234,9 +234,8 @@ forwards.
Different channels and servers may have different language encodings.
In addition, it is possible to translate the messages that ERC uses
into multiple languages. Please contact the developers of Emacs at
@email{emacs-devel@@gnu.org} if you are interested in helping with the
multiple languages. Please contact the Emacs developers
if you are interested in helping with the
translation effort.
@item user scripting
@ -784,9 +783,9 @@ To report a bug in ERC, use @kbd{M-x report-emacs-bug}.
@chapter History
@cindex history, of ERC
ERC was originally written by Alexander L. Belikoff
@email{abel@@bfr.co.il} and Sergey Berezin
@email{sergey.berezin@@cs.cmu.edu}. They stopped development around
@c abel@@bfr.co.il, sergey.berezin@@cs.cmu.edu
ERC was originally written by Alexander L. Belikoff and Sergey Berezin.
They stopped development around
December 1999. Their last released version was ERC 2.0.
P.S.: If one of the original developers of ERC reads this, we'd like to
@ -796,8 +795,9 @@ general.
@itemize
@item 2001
In June 2001, Mario Lang @email{mlang@@delysid.org} and Alex Schroeder
@email{alex@@gnu.org} took over development and created a ERC Project at
@c mlang@@delysid.org, alex@@gnu.org
In June 2001, Mario Lang and Alex Schroeder
took over development and created a ERC Project at
@uref{http://sourceforge.net/projects/erc}.
In reaction to a mail about the new ERC development effort, Sergey
@ -825,7 +825,8 @@ ERC 4.0 was released.
@item 2005
ERC 5.0 was released. Michael Olson @email{mwolson@@gnu.org} became
@c mwolson@@gnu.org
ERC 5.0 was released. Michael Olson became
the release manager and eventually the maintainer.
After some discussion between him and the Emacs developers, it was

View file

@ -819,16 +819,18 @@ Eshell module.} You also need to load the following as shown:
@cindex known bugs
@cindex bugs, known
If you find a bug or misfeature, don't hesitate to let me know! Send
email to @email{johnw@@gnu.org}. Feature requests should also be sent
there. I prefer discussing one thing at a time. If you find several
If you find a bug or misfeature, don't hesitate to report it, by
using @kbd{M-x report-emacs-bug}. The same applies to feature requests.
It is best to discuss one thing at a time. If you find several
unrelated bugs, please report them separately.
@ignore
If you have ideas for improvements, or if you have written some
extensions to this package, I would like to hear from you. I hope you
find this package useful!
@end ignore
Below is a complete list of known problems with Eshell version 2.4.2,
Below is a list of some known problems with Eshell version 2.4.2,
which is the version included with Emacs 22.
@table @asis

View file

@ -444,9 +444,9 @@ mail-to-news gateway).
The correct way to report Emacs bugs is to use the command
@kbd{M-x report-emacs-bug}. It sets up a mail buffer with the
essential information and the correct e-mail address, which is
@email{bug-gnu-emacs@@gnu.org} for the released versions of Emacs.
Anything sent to @email{bug-gnu-emacs@@gnu.org} also appears in the
essential information and the correct e-mail address,
@email{bug-gnu-emacs@@gnu.org}.
Anything sent there also appears in the
newsgroup @uref{news:gnu.emacs.bug}, but please use e-mail instead of
news to submit the bug report. This ensures a reliable return address
so you can be contacted for further details.
@ -459,13 +459,17 @@ report (@pxref{Bugs, , Reporting Bugs, emacs, The GNU Emacs Manual}).
RMS says:
@quotation
Sending bug reports to @email{help-gnu-emacs@@gnu.org} (which has the
effect of posting on @uref{news:gnu.emacs.help}) is undesirable because
it takes the time of an unnecessarily large group of people, most of
whom are just users and have no idea how to fix these problem.
@email{bug-gnu-emacs@@gnu.org} reaches a much smaller group of people
who are more likely to know what to do and have expressed a wish to
receive more messages about Emacs than the others.
Sending bug reports to
@url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
the help-gnu-emacs mailing list}
(which has the effect of posting on @uref{news:gnu.emacs.help}) is
undesirable because it takes the time of an unnecessarily large group
of people, most of whom are just users and have no idea how to fix
these problem.
@url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs, The
bug-gnu-emacs list} reaches a much smaller group of people who are
more likely to know what to do and have expressed a wish to receive
more messages about Emacs than the others.
@end quotation
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
Editor and COrrector) under ITS (the Incompatible Timesharing System) on
a PDP-10. RMS had already extended TECO with a ``real-time''
full-screen mode with reprogrammable keys. Emacs was started by
@email{gls@@east.sun.com, Guy Steele} as a project to unify the many
@c gls@@east.sun.com
Guy Steele as a project to unify the many
divergent TECO command sets and key bindings at MIT, and completed by
RMS.
@ -1340,7 +1345,9 @@ of files from Macintosh, Microsoft, and Unix platforms.
In general, new Emacs users should not be provided with @file{.emacs}
files, because this can cause confusing non-standard behavior. Then
they send questions to @email{help-gnu-emacs@@gnu.org} asking why Emacs
they send questions to
@url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
the help-gnu-emacs mailing list} asking why Emacs
isn't behaving as documented.
Emacs includes the Customize facility (@pxref{Using Customize}). This
@ -1805,7 +1812,8 @@ requested by @code{emacsclient}, Emacs will switch to it; otherwise
@cindex @code{gnuserv}
There is an alternative version of @samp{emacsclient} called
@samp{gnuserv}, written by @email{ange@@hplb.hpl.hp.com, Andy Norman}
@c ange@@hplb.hpl.hp.com
@samp{gnuserv}, written by Andy Norman
(@pxref{Packages that do not come with Emacs}). @samp{gnuserv} uses
Internet domain sockets, so it can work across most network connections.
@ -1973,7 +1981,8 @@ On some systems, @key{Insert} toggles @code{overwrite-mode} on and off.
@cindex Visible bell
@cindex Bell, visible
@email{martin@@cc.gatech.edu, Martin R. Frank} writes:
@c martin@@cc.gatech.edu
Martin R. Frank writes:
Tell Emacs to use the @dfn{visible bell} instead of the audible bell,
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
wish, Emacs can download and automatically install it for you.
@uref{http://www.damtp.cam.ac.uk/user/sje30/emacs/ell.html, The Emacs Lisp
List (ELL)}, maintained by @email{S.J.Eglen@@damtp.cam.ac.uk, Stephen Eglen},
List (ELL)}, maintained by Stephen Eglen,
aims to provide one compact list with links to all of the current Emacs
Lisp files on the Internet. The ELL can be browsed over the web, or
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}.
@cindex Sender, replying only to
@cindex Rmail, replying to the sender of a message in
@email{isaacson@@seas.upenn.edu, Ron Isaacson} says: When you hit
@c isaacson@@seas.upenn.edu
Ron Isaacson says: When you hit
@key{r} to reply in Rmail, by default it CCs all of the original
recipients (everyone on the original @samp{To} and @samp{CC}
lists). With a prefix argument (i.e., typing @kbd{C-u} before @key{r}),

View file

@ -7394,6 +7394,11 @@ say something like:
gnus-thread-sort-by-score))
@end lisp
By default, threads are sorted recursively, that is, first the roots,
then all subthreads, and so on. If you feel more like sorting only
the roots, so that inside a thread the original chronological order is
retained, you can set @code{gnus-sort-threads-recursively} to nil.
@vindex gnus-thread-score-function
The function in the @code{gnus-thread-score-function} variable (default
@code{+}) is used for calculating the total score of a thread. Useful

View file

@ -273,7 +273,7 @@ To go to the root directory (on the current drive), enter two slashes.
On MS-DOS or Windows, to select the root of another drive, enter
@samp{X:/} where @samp{X} is the drive letter. To go to the home
directory, enter @samp{~/}. To enter Dired for this directory, use
@kbd{C-d}.
@kbd{C-d}.
@c TODO: a new node for ftp hosts
@cindex ftp hosts
@ -587,14 +587,14 @@ if you type a dot as first char (even if @code{ido-enable-prefix} is
@c @defvr {User Option} ido-rotate-file-list-default
@c @defvr {User Option} ido-enter-matching-directory
@c @defvr {User Option} ido-create-new-buffer
@c @defvr {User Option} ido-setup-hook
@c @defvr {User Option} ido-setup-hook
@c @defvr {User Option} ido-separator
@c @defvr {User Option} ido-decorations
@c @defvr {User Option} ido-use-virtual-buffers
@c @defvr {User Option} ido-use-faces
@c @defvr {User Option} ido-make-file-list-hook
@c @defvr {User Option} ido-make-dir-list-hook
@c @defvr {User Option} ido-make-buffer-list-hook
@c @defvr {User Option} ido-make-file-list-hook
@c @defvr {User Option} ido-make-dir-list-hook
@c @defvr {User Option} ido-make-buffer-list-hook
@c @defvr {User Option} ido-rewrite-file-prompt-functions
@c @defvr {User Option} ido-completion-buffer
@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,
@code{ido-read-directory-name} can be used by other packages to read a
buffer name, a file name, or a directory name in the @emph{Ido} way.
@c @node Cheetsheet
@c @node Cheatsheet
@c * History and Acknowledgments:: How Ido came into being
@c @node History and Acknowledgments

View file

@ -172,17 +172,20 @@ Per Cederqvist wrote most of the otherwise unattributed functions in
PCL-CVS as well as all the documentation.
@item
@email{inge@@lysator.liu.se, Inge Wallin} wrote the skeleton of
@c inge@@lysator.liu.se
Inge Wallin wrote the skeleton of
@file{pcl-cvs.texi}, and gave useful comments on it. He also wrote
the files @file{elib-node.el} and @file{compile-all.el}. The file
@file{cookie.el} was inspired by Inge.@refill
@item
@email{linus@@lysator.liu.se, Linus Tolke} contributed useful comments
@c linus@@lysator.liu.se
Linus Tolke contributed useful comments
on both the functionality and the documentation.@refill
@item
@email{jwz@@jwz.com, Jamie Zawinski} contributed
@c jwz@@jwz.com
Jamie Zawinski contributed
@file{pcl-cvs-lucid.el}, which was later renamed to
@file{pcl-cvs-xemacs.el}.@refill
@ -191,34 +194,40 @@ Leif Lonnblad contributed RCVS support (since superseded by the new
remote CVS support).
@item
@email{jimb@@cyclic.com, Jim Blandy} contributed hooks to automatically
@c jimb@@cyclic.com
Jim Blandy contributed hooks to automatically
guess CVS log entries from @file{ChangeLog} contents, and initial support of
the new Cygnus / Cyclic remote CVS, as well as various sundry bug fixes
and cleanups.
@item
@email{kingdon@@cyclic.com, Jim Kingdon} contributed lots of fixes to
@c kingdon@@cyclic.com
Jim Kingdon contributed lots of fixes to
the build and installation procedure.
@item
@email{woods@@weird.com, Greg A. Woods} contributed code to implement
@c woods@@weird.com
Greg A. Woods contributed code to implement
the use of per-file diff buffers, and vendor join diffs with emerge and
ediff, as well as various and sundry bug fixes and cleanups.
@item
@email{greg.klanderman@@alum.mit.edu, Greg Klanderman} implemented
@c greg.klanderman@@alum.mit.edu
Greg Klanderman implemented
toggling of marked files, setting of CVS command flags via prefix
arguments, updated the XEmacs support, updated the manual, and fixed
numerous bugs.
@item
@email{monnier@@gnu.org, Stefan Monnier} added a slew of other
@c monnier@@gnu.org
Stefan Monnier added a slew of other
features and introduced even more new bugs. If there's any bug left,
you can be sure it's his.
@item
@c wordy to avoid an underfull hbox
@email{masata-y@@is.aist-nara.ac.jp, Masatake YAMATO} made a gracious
@c masata-y@@is.aist-nara.ac.jp
Masatake YAMATO made a gracious
contribution of his cvstree code to display a tree of tags which was later
superseded by the new @code{cvs-status-mode}.
@end itemize
@ -1369,18 +1378,19 @@ Used to highlight CVS messages.
@cindex FAQ
@cindex Problems, list of common
If you find a bug or misfeature, don't hesitate to tell us! Send email
to @email{bug-gnu-emacs@@gnu.org} which is gatewayed to the newsgroup
@samp{gnu.emacs.bugs}. Feature requests should also be sent there. We
prefer discussing one thing at a time. If you find several unrelated
If you find a bug or misfeature, don't hesitate to tell us!
Use @kbd{M-x report-emacs-bug} to send us a report.
You can follow the same process for feature requests.
We prefer discussing one thing at a time. If you find several unrelated
bugs, please report them separately. If you are running PCL-CVS under
XEmacs, you should also send a copy of bug reports to
@email{xemacs-beta@@xemacs.org}.
the @url{http://lists.xemacs.org/mailman/listinfo/xemacs-beta,
XEmacs mailing list}.
If you have problems using PCL-CVS or other questions, send them to
@email{help-gnu-emacs@@gnu.org}, which is gatewayed to the
@samp{gnu.emacs.help} newsgroup. This is a good place to get help, as
is @email{cvs-info@@gnu.org}, gatewayed to @samp{gnu.cvs.help}.
the @url{http://lists.gnu.org/mailman/listinfo/help-gnu-emacs,
help-gnu-emacs mailing list}. This is a good place to get help, as is
the @url{http://lists.nongnu.org/mailman/listinfo/info-cvs, info-cvs list}.
If you have ideas for improvements, or if you have written some
extensions to this package, we would like to hear from you. We hope that

View file

@ -3639,8 +3639,8 @@ With @i{Viper} mode prior to Vipers version 3.01, you need to protect
@cindex @code{http}, @RefTeX{} home page
@cindex @code{ftp}, @RefTeX{} site
@RefTeX{} was written by @i{Carsten Dominik}
@email{dominik@@science.uva.nl}, with contributions by @i{Stephen
@c dominik@@science.uva.nl
@RefTeX{} was written by @i{Carsten Dominik}, with contributions by @i{Stephen
Eglen}. @RefTeX{} is currently maintained by @value{MAINTAINER}, see
the @value{MAINTAINERSITE} for detailed information.

View file

@ -60,7 +60,7 @@ by formulas that can refer to the values of other cells.
@end display
@end ifnottex
To report bugs, send email to @email{jyavner@@member.fsf.org}.
To report bugs, use @kbd{M-x report-emacs-bug}.
@insertcopying
@ -997,39 +997,62 @@ cell.
Coding by:
@quotation
Jonathan Yavner @email{jyavner@@member.fsf.org}@*
Stefan Monnier @email{monnier@@gnu.org}@*
Shigeru Fukaya @email{shigeru.fukaya@@gmail.com}
@c jyavner@@member.fsf.org
Jonathan Yavner,
@c monnier@@gnu.org
Stefan Monnier,
@c shigeru.fukaya@@gmail.com
Shigeru Fukaya
@end quotation
@noindent
Texinfo manual by:
@quotation
Jonathan Yavner @email{jyavner@@member.fsf.org}@*
Brad Collins <brad@@chenla.org>
@c jyavner@@member.fsf.org
Jonathan Yavner,
@c brad@@chenla.org
Brad Collins
@end quotation
@noindent
Ideas from:
@quotation
Christoph Conrad @email{christoph.conrad@@gmx.de}@*
CyberBob @email{cyberbob@@redneck.gacracker.org}@*
Syver Enstad @email{syver-en@@online.no}@*
Ami Fischman @email{fischman@@zion.bpnetworks.com}@*
Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@*
Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@*
Yusong Li @email{lyusong@@hotmail.com}@*
Juri Linkov @email{juri@@jurta.org}@*
Harald Maier @email{maierh@@myself.com}@*
Alan Nash @email{anash@@san.rr.com}@*
François Pinard @email{pinard@@iro.umontreal.ca}@*
Pedro Pinto @email{ppinto@@cs.cmu.edu}@*
Stefan Reichör @email{xsteve@@riic.at}@*
Oliver Scholz @email{epameinondas@@gmx.de}@*
Richard M. Stallman @email{rms@@gnu.org}@*
Luc Teirlinck @email{teirllm@@dms.auburn.edu}@*
J. Otto Tennant @email{jotto@@pobox.com}@*
Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
@c christoph.conrad@@gmx.de
Christoph Conrad,
@c cyberbob@@redneck.gacracker.org
CyberBob,
@c syver-en@@online.no
Syver Enstad,
@c fischman@@zion.bpnetworks.com
Ami Fischman,
@c Thomas.Gehrlein@@t-online.de
Thomas Gehrlein,
@c c.f.a.johnson@@rogers.com
Chris F.A. Johnson,
@c lyusong@@hotmail.com
Yusong Li,
@c juri@@jurta.org
Juri Linkov,
@c maierh@@myself.com
Harald Maier,
@c anash@@san.rr.com
Alan Nash,
@c pinard@@iro.umontreal.ca
François Pinard,
@c ppinto@@cs.cmu.edu
Pedro Pinto,
@c xsteve@@riic.at
Stefan Reichör,
@c epameinondas@@gmx.de
Oliver Scholz,
@c rms@@gnu.org
Richard M. Stallman,
@c teirllm@@dms.auburn.edu
Luc Teirlinck,
@c jotto@@pobox.com
J. Otto Tennant,
@c jphil@@acs.pagesjaunes.fr
Jean-Philippe Theberge
@end quotation
@c ===================================================================

View file

@ -3186,13 +3186,13 @@ for example:
@end lisp
Note, that "%r", "%h" and "%p" must be encoded as "%%r", "%%h" and
"%%p", respectively. The entries of @code{ControlPath},
@code{ControlMaster} and @code{ControlPersist} can be removed from
this setting, if they are configured properly in your
@file{~/.ssh/config}:
"%%p", respectively.
These settings can be suppressed, if they are configured properly in
your @file{~/.ssh/config}:
@lisp
(setq tramp-ssh-controlmaster-options "")
(setq tramp-use-ssh-controlmaster-options nil)
@end lisp

View file

@ -105,10 +105,7 @@ version of Emacs. It was developed primarily on various versions of
Microsoft Windows, but has also been tested on MS-DOS, and various
versions of UNIX and GNU/Linux.
WoMan is distributed with GNU Emacs. In addition, the current source
code and documentation files are available from
@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, the WoMan web
server}.
WoMan is distributed with GNU Emacs.
WoMan implements a subset of the formatting performed by the Emacs
@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
either running the command @code{woman-mini-help} or selecting the WoMan
menu option @samp{Mini Help}.
WoMan is (of course) still under development! Please
@email{F.J.Wright@@qmw.ac.uk, let me know} what doesn't work---I am
adding and improving functionality as testing shows that it is
necessary. Guidance on reporting bugs is given below. @xref{Bugs, ,
Reporting Bugs}.
Guidance on reporting bugs is given below. @xref{Bugs, , Reporting Bugs}.
@c ===================================================================
@ -276,6 +269,7 @@ of the facilities implemented in the Emacs @code{man} library. WoMan
and man can happily co-exist, which is very useful for comparison and
debugging purposes.
@ignore
@code{nroff} simulates non-@acronym{ASCII} characters by using one or more
@acronym{ASCII} characters. WoMan should be able to do much better than
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
be possible to move WoMan from an emulation of @code{nroff} to an
emulation of @code{troff} as GNU Emacs moves to providing bit-mapped
display facilities.
@end ignore
@node Finding
@chapter Finding and Formatting Man Pages
@ -1290,8 +1285,8 @@ try the latest version of @file{woman.el} from the Emacs repository
on @uref{http://savannah.gnu.org/projects/emacs/}. If it still fails, please
@item
send a bug report to @email{bug-gnu-emacs@@gnu.org} and to
@email{F.J.Wright@@qmw.ac.uk}. Please include the entry from the
use @kbd{M-x report-emacs-bug} to send a bug report.
Please include the entry from the
@code{*WoMan-Log*} buffer relating to the problem file, together with
a brief description of the problem. Please indicate where you got the
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
fragments, general interest, etc.:
@quotation
Jari Aalto, @email{jari.aalto@@cs.tpu.fi}@*
Dean Andrews, @email{dean@@dra.com}@*
Juanma Barranquero, @email{barranquero@@laley-actualidad.es}@*
Karl Berry, @email{kb@@cs.umb.edu}@*
Jim Chapman, @email{jchapman@@netcomuk.co.uk}@*
Frederic Corne, @email{frederic.corne@@erli.fr}@*
Peter Craft, @email{craft@@alacritech.com}@*
Charles Curley, @email{ccurley@@trib.com}@*
Jim Davidson, @email{jdavidso@@teknowledge.com}@*
Kevin D'Elia, @email{Kevin.DElia@@mci.com}@*
John Fitch, @email{jpff@@maths.bath.ac.uk}@*
Hans Frosch, @email{jwfrosch@@rish.b17c.ingr.com}@*
Guy Gascoigne-Piggford, @email{ggp@@informix.com}@*
Brian Gorka, @email{gorkab@@sanchez.com}@*
Nicolai Henriksen, @email{nhe@@lyngso-industri.dk}@*
Thomas Herchenroeder, @email{the@@software-ag.de}@*
Alexander Hinds, @email{ahinds@@thegrid.net}@*
Stefan Hornburg, @email{sth@@hacon.de}@*
Theodore Jump, @email{tjump@@cais.com}@*
Paul Kinnucan, @email{paulk@@mathworks.com}@*
Jonas Linde, @email{jonas@@init.se}@*
Andrew McRae, @email{andrewm@@optimation.co.nz}@*
Howard Melman, @email{howard@@silverstream.com}@*
Dennis Pixton, @email{dennis@@math.binghamton.edu}@*
T. V. Raman, @email{raman@@Adobe.com}@*
Bruce Ravel, @email{bruce.ravel@@nist.gov}@*
Benjamin Riefenstahl, @email{benny@@crocodial.de}@*
Kevin Ruland, @email{kruland@@seistl.com}@*
Tom Schutter, @email{tom@@platte.com}@*
Wei-Xue Shi, @email{wxshi@@ma.neweb.ne.jp}@*
Fabio Somenzi, @email{fabio@@joplin.colorado.edu}@*
Karel Sprenger, @email{ks@@ic.uva.nl}@*
Chris Szurgot, @email{szurgot@@itribe.net}@*
Paul A. Thompson, @email{pat@@po.cwru.edu}@*
Arrigo Triulzi, @email{arrigo@@maths.qmw.ac.uk}@*
Geoff Voelker, @email{voelker@@cs.washington.edu}@*
Eli Zaretskii, @email{eliz@@is.elta.co.il}
@c jari.aalto@@cs.tpu.fi
Jari Aalto,
@c dean@@dra.com
Dean Andrews,
@c barranquero@@laley-actualidad.es
Juanma Barranquero,
@c kb@@cs.umb.edu
Karl Berry,
@c jchapman@@netcomuk.co.uk
Jim Chapman,
@c frederic.corne@@erli.fr
Frederic Corne,
@c craft@@alacritech.com
Peter Craft,
@c ccurley@@trib.com
Charles Curley,
@c jdavidso@@teknowledge.com
Jim Davidson,
@c Kevin.DElia@@mci.com
Kevin D'Elia,
@c jpff@@maths.bath.ac.uk
John Fitch,
@c jwfrosch@@rish.b17c.ingr.com
Hans Frosch,
@c ggp@@informix.com
Guy Gascoigne-Piggford,
@c gorkab@@sanchez.com
Brian Gorka,
@c nhe@@lyngso-industri.dk
Nicolai Henriksen,
@c the@@software-ag.de
Thomas Herchenroeder,
@c ahinds@@thegrid.net
Alexander Hinds,
@c sth@@hacon.de
Stefan Hornburg,
@c tjump@@cais.com
Theodore Jump,
@c paulk@@mathworks.com
Paul Kinnucan,
@c jonas@@init.se
Jonas Linde,
@c andrewm@@optimation.co.nz
Andrew McRae,
@c howard@@silverstream.com
Howard Melman,
@c dennis@@math.binghamton.edu
Dennis Pixton,
@c raman@@Adobe.com
T. V. Raman,
@c bruce.ravel@@nist.gov
Bruce Ravel,
@c benny@@crocodial.de
Benjamin Riefenstahl,
@c kruland@@seistl.com
Kevin Ruland,
@c tom@@platte.com
Tom Schutter,
@c wxshi@@ma.neweb.ne.jp
Wei-Xue Shi,
@c fabio@@joplin.colorado.edu
Fabio Somenzi,
@c ks@@ic.uva.nl
Karel Sprenger,
@c szurgot@@itribe.net
Chris Szurgot,
@c pat@@po.cwru.edu
Paul A. Thompson,
@c arrigo@@maths.qmw.ac.uk
Arrigo Triulzi,
@c voelker@@cs.washington.edu
Geoff Voelker,
@c eliz@@is.elta.co.il
Eli Zaretskii
@end quotation
@c ===================================================================

View file

@ -1,3 +1,7 @@
2013-07-26 Micah Anderson <micah@riseup.net> (tiny change)
* spook.lines: Additions. (Bug#14658)
2013-07-16 Jan Djärv <jan.h.d@swipnet.se>
* NEWS: Document blink-cursor-blinks and blink timers stopped.

View file

@ -158,6 +158,10 @@ You can pick the name of the function and the variables with `C-x 4 a'.
* Changes in Specialized Modes and Packages in Emacs 24.4
** The debugger's `e' command evaluates the code in the context at point.
This includes using the lexical environment at point, which means that
`e' now lets you access lexical variables as well.
** `eshell' now supports visual subcommands and options
Eshell has been able to handle "visual" commands (interactive,
non-line oriented commands such as top that require display
@ -278,6 +282,22 @@ restoring the window/frame configuration. Additional options
If set to a number, this can be used to avoid accidentally paste large
amounts of data into the ERC input.
** EPA
*** New option `epa-mail-aliases'.
You can set this to a list of alias expansions for keys to use
in `epa-mail-encrypt'.
If one element of the variable's value is ("foo@bar.com" "foo@hello.org"),
that means: when one of the recipients of the message being encrypted
is `foo@bar.com', encrypt the message for `foo@hello.org' instead.
If one element of the variable's value is ("foo@bar.com"),
that means: when one of the recipients of the message being encrypted
is `foo@bar.com', ignore that name as regards encryption.
This is useful to avoid a query when you have no key for that name.
---
** New F90 mode option `f90-smart-end-names'.

Binary file not shown.

View file

@ -75,6 +75,7 @@ Emacs misc features
* Forms: (forms). Emacs package for editing data bases
by filling in forms.
* Htmlfontify: (htmlfontify). Convert source code to html.
* Ido: (ido). Interactively do things with buffers and files.
* PCL-CVS: (pcl-cvs). Emacs front-end to CVS.
* RefTeX: (reftex). Emacs support for LaTeX cross-references
and citations.

View file

@ -1,3 +1,168 @@
2013-07-29 Eli Zaretskii <eliz@gnu.org>
* frame.el (frame-notice-user-settings): Avoid inflooping when the
initial frame is minibuffer-less. (Bug#14841)
2013-07-29 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-use-ssh-controlmaster-options): New customer
option.
* net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band)
(tramp-maybe-open-connection): Use it.
2013-07-28 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop--make-frame): Include `minibuffer' in the
minimal set of parameters passed when creating a frame, because
the minibuffer status of a frame cannot be changed later.
2013-07-28 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el (todo-rename-file): Fix incorrect use of
replace-regexp-in-string and inadvertent omissions in previous change.
(todo-filter-items): Ensure only file names are comma-separated in
name of filtered items buffer.
2013-07-28 Juanma Barranquero <lekktu@gmail.com>
* desktop.el: Optionally force offscreen frames back onscreen.
(desktop-restoring-reuses-frames): New option.
(desktop--compute-pos, desktop--move-onscreen): New functions.
(desktop--make-frame): Use desktop--move-onscreen.
2013-07-27 Alan Mackenzie <acm@muc.de>
Fontify a Java generic method as a function.
* progmodes/cc-langs.el (c-recognize-<>-arglists): Set the Java
value to t.
2013-07-27 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el: Add command to rename todo files.
(todo-rename-file): New command.
(todo-key-bindings-t): Add key binding for it. Change the
bindings of todo-filter-regexp-items(-multifile) to use `x'
instead of `r', since the latter is better suited to the new
renaming command.
2013-07-27 Alan Mackenzie <acm@muc.de>
Make Java try-with-resources statement parse properly.
* progmodes/cc-langs.el (c-block-stmt-1-2-kwds)
(c-block-stmt-1-2-key): New language constants/variables.
* progmodes/cc-engine.el (c-beginning-of-statement-1)
(c-after-conditional): Adapt to deal with c-block-stmt-1-2-key.
* progmodes/cc-fonts.el (c-font-lock-declarations): Adapt to deal
with c-block-stmet-1-2-key.
2013-07-27 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop--make-frame): Apply most frame parameters after
creating the frame to force (partially or totally) offscreen frames to
be restored as such.
2013-07-26 Xue Fuqiao <xfq.free@gmail.com>
* vc/vc-dir.el (vc-dir-mode-map): Add binding for vc-root-diff.
(Bug#14948)
2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/nadvice.el (advice--called-interactively-skip): Use the new
`base' arg of backtrace-frame.
2013-07-26 Eli Zaretskii <eliz@gnu.org>
* simple.el (list-processes): Doc fix.
2013-07-26 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop--select-frame):
Try harder to reuse existing frames.
2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/edebug.el: Use backtrace-eval to handle lexical variables.
(edebug-eval): Use backtrace-eval.
(edebug--display, edebug--recursive-edit): Don't let-bind the
edebug-outer-* vars that keep track of variables we locally let-bind.
(edebug-outside-excursion): Don't restore outside values of locally
let-bound vars.
(edebug--display): Use user-error.
(cl-lexical-debug, cl-debug-env): Remove.
2013-07-26 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop-restore-frames): Call `sit-for' once all frames
are restored to be sure that they are visible before deleting any
remaining ones.
2013-07-26 Matthias Meulien <orontee@gmail.com>
* vc/vc-dir.el (vc-dir-mode-map): Add binding for
vc-print-root-log. (Bug#14948)
2013-07-26 Richard Stallman <rms@gnu.org>
Add aliases for encrypting mail.
* epa.el (epa-mail-aliases): New option.
* epa-mail.el (epa-mail-encrypt): Rewrite to be callable from programs.
Bind inhibit-read-only so read-only text doesn't ruin everything.
(epa-mail-default-recipients): New subroutine broken out.
Handle epa-mail-aliases.
2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
Add support for lexical variables to the debugger's `e' command.
* emacs-lisp/debug.el (debug): Don't let-bind the debugger-outer-*
vars, except for debugger-outer-match-data.
(debugger-frame-number): Move check for "on a function call" from
callers into it. Add `skip-base' argument.
(debugger-frame, debugger-frame-clear): Simplify accordingly.
(debugger-env-macro): Only reset the state stored in non-variables,
i.e. current-buffer and match-data.
(debugger-eval-expression): Rewrite using backtrace-eval.
* subr.el (internal--called-interactively-p--get-frame): Remove.
(called-interactively-p):
* emacs-lisp/edebug.el (edebug--called-interactively-skip): Use the new
`base' arg of backtrace-frame instead.
2013-07-26 Glenn Morris <rgm@gnu.org>
* align.el (align-regexp): Doc fix. (Bug#14857)
(align-region): Explicit error if subexpression missing/does not match.
* simple.el (global-visual-line-mode):
Do not duplicate the mode lighter. (Bug#14858)
2013-07-25 Martin Rudalics <rudalics@gmx.at>
* window.el (display-buffer): In display-buffer bind
split-window-keep-point to t, bug#14829.
2013-07-25 Juanma Barranquero <lekktu@gmail.com>
* desktop.el: Rename internal "desktop-X" frame params to "desktop--X".
(desktop-filter-parameters-alist, desktop--filter-restore-desktop-parm)
(desktop--filter-save-desktop-parm, desktop--process-minibuffer-frames)
(desktop--select-frame, desktop--sort-states, desktop-restore-frames):
Change accordingly.
(desktop--select-frame, desktop--sort-states, desktop-restore-frames):
Use pcase-let, pcase-let* to deobfuscate access to desktop--mini values.
2013-07-25 Glenn Morris <rgm@gnu.org>
* dired-x.el (dired-mark-extension): Convert comment to doc string.
2013-07-25 Juanma Barranquero <lekktu@gmail.com>
* desktop.el (desktop--make-frame): Do not pass the `fullscreen'
parameter to modify-frame-parameters if the value has not changed;
this is a workaround for bug#14949.
(desktop--make-frame): On cl-delete-if call, check parameter name,
not full parameter.
2013-07-30 Xue Fuqiao <xfq.free@gmail.com>
* vc/vc.el (vc-ignore): New function.

View file

@ -5182,7 +5182,7 @@
inserted.
(Info-hide-note-references): Fix doc and customize type.
2003-03-02 Matt Swift <swift@alum.mit.edu>
2003-03-02 Matthew Swift <swift@alum.mit.edu>
* emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column):
New custom variable.
@ -5228,7 +5228,7 @@
(tramp-send-region): Correct debug message.
(tramp-bug): Add `tramp-chunksize'.
2003-02-26 Matt Swift <swift@alum.mit.edu>
2003-02-26 Matthew Swift <swift@alum.mit.edu>
* startup.el: Streamline code in several functions for efficiency
and readability. Rephrase booleans to avoid `(not noninteractive)'.

View file

@ -5119,7 +5119,7 @@
(x-setup-function-keys, xw-defined-colors): Merge x- and w32-
definitions here.
2010-10-24 T.V. Raman <tv.raman.tv@gmail.com> (tiny change)
2010-10-24 T. V. Raman <tv.raman.tv@gmail.com> (tiny change)
* net/mairix.el (mairix-searches-mode-map):
* mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change.

View file

@ -4569,7 +4569,7 @@
* bookmark.el (bookmark-completing-read): Set the completion category
to `bookmark' (bug#11131).
2012-10-26 Bastien <bzg@altern.org>
2012-10-26 Bastien Guerry <bzg@altern.org>
Stefan Monnier <monnier@iro.umontreal.ca>
* face-remap.el: Use lexical-binding.
@ -9712,7 +9712,7 @@
* international/mule-cmds.el (mule-menu-keymap)
(set-language-environment, set-locale-environment): Doc tweaks.
2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com>
2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com>
* cus-face.el (custom-face-attributes): Add wave-style underline
attribute.

View file

@ -7617,7 +7617,7 @@
Delete the binding for toggle-enable-multibyte-characters.
(mule-menu-keymap): Delete the menu item for it.
1997-12-17 Peter Galbraith <galbraith@mixing.qc.dfo.ca>
1997-12-17 Peter S Galbraith <galbraith@mixing.qc.dfo.ca>
* simple.el (copy-region-as-kill):
Deactivate mark in transient-mark-mode.
@ -19637,7 +19637,7 @@
* term/x-win.el (function-key-map): Define iso-lefttab.
1997-03-24 Vince Del Vecchio <vdelvecc@spd.analog.com>
1997-03-24 Vincent Del Vecchio <vdelvecc@spd.analog.com>
* mh-utils.el (mh-find-progs): When looking for mh-lib, construct
likely paths based on mh-progs rather than using a static list.

View file

@ -906,15 +906,8 @@ on the format of these lists."
;;;###autoload
(defun align-regexp (beg end regexp &optional group spacing repeat)
"Align the current region using an ad-hoc rule read from the minibuffer.
BEG and END mark the limits of the region. This function will prompt
for the REGEXP to align with. If no prefix arg was specified, you
only need to supply the characters to be lined up and any preceding
whitespace is replaced. If a prefix arg was specified, the full
regexp with parenthesized whitespace should be supplied; it will also
prompt for which parenthesis GROUP within REGEXP to modify, the amount
of SPACING to use, and whether or not to REPEAT the rule throughout
the line. See `align-rules-list' for more information about these
options.
BEG and END mark the limits of the region. Interactively, this function
prompts for the regular expression REGEXP to align with.
For example, let's say you had a list of phone numbers, and wanted to
align them so that the opening parentheses would line up:
@ -925,8 +918,29 @@ align them so that the opening parentheses would line up:
Joe (123) 456-7890
There is no predefined rule to handle this, but you could easily do it
using a REGEXP like \"(\". All you would have to do is to mark the
region, call `align-regexp' and type in that regular expression."
using a REGEXP like \"(\". Interactively, all you would have to do is
to mark the region, call `align-regexp' and enter that regular expression.
REGEXP must contain at least one parenthesized subexpression, typically
whitespace of the form \"\\\\(\\\\s-*\\\\)\". In normal interactive use,
this is automatically added to the start of your regular expression after
you enter it. You only need to supply the characters to be lined up, and
any preceding whitespace is replaced.
If you specify a prefix argument (or use this function non-interactively),
you must enter the full regular expression, including the subexpression.
The function also then prompts for which subexpression parenthesis GROUP
\(default 1) within REGEXP to modify, the amount of SPACING (default
`align-default-spacing') to use, and whether or not to REPEAT the rule
throughout the line.
See `align-rules-list' for more information about these options.
The non-interactive form of the previous example would look something like:
\(align-regexp (point-min) (point-max) \"\\\\(\\\\s-*\\\\)(\")
This function is a nothing more than a small wrapper that helps you
construct a rule to pass to `align-region', which does the real work."
(interactive
(append
(list (region-beginning) (region-end))
@ -1498,6 +1512,9 @@ aligner would have dealt with are."
(setq rule-beg (match-beginning first)
save-match-data (match-data))
(or rule-beg
(error "No match for subexpression %s" first))
;; unless the `valid' attribute is set, and tells
;; us that the rule is not valid at this point in
;; the code..

View file

@ -1099,6 +1099,52 @@ Noninteractively, return the name of the new file."
(todo-show))
file)))
(defun todo-rename-file (&optional arg)
"Rename the current todo file.
With prefix ARG, prompt for a todo file and rename it.
If there are corresponding archive or filtered items files,
rename these accordingly. If there are live buffers visiting
these files, also rename them accordingly."
(interactive "P")
(let* ((oname (or (and arg
(todo-read-file-name "Choose a file to rename: "
nil t))
(buffer-file-name)))
(soname (todo-short-file-name oname))
(nname (todo-read-file-name "New name for this file: "))
(snname (todo-short-file-name nname))
(files (directory-files todo-directory t
(concat ".*" (regexp-quote soname)
".*\.tod[aorty]$") t)))
(dolist (f files)
(let* ((sfname (todo-short-file-name f))
(fext (file-name-extension f t))
(fbuf (find-buffer-visiting f))
(fbname (buffer-name fbuf)))
(when (string-match (regexp-quote soname) sfname)
(let* ((snfname (replace-match snname t t sfname))
(nfname (concat todo-directory snfname fext)))
(rename-file f nfname)
(when fbuf
(with-current-buffer fbuf
(set-visited-file-name nfname t t)
(cond ((member fext '(".todo" ".toda"))
(setq todo-current-todo-file (buffer-file-name))
(setq mode-line-buffer-identification
(funcall todo-mode-line-function
(todo-current-category))))
(t
(rename-buffer
(replace-regexp-in-string
(regexp-quote soname) snname fbname))))))))))
(setq todo-files (funcall todo-files-function)
todo-archives (funcall todo-files-function t))
(when (string= todo-default-todo-file soname)
(setq todo-default-todo-file snname))
(when (string= todo-global-current-todo-file oname)
(setq todo-global-current-todo-file nname))
(todo-reevaluate-filelist-defcustoms)))
(defun todo-delete-file ()
"Delete the current todo, archive or filtered items file.
If the todo file has a corresponding archive file, or vice versa,
@ -4121,7 +4167,8 @@ multifile commands for further details."
(regexp ".todr")))))
(rxfiles (when regexp
(directory-files todo-directory t ".*\\.todr$" t)))
(file-exists (or (file-exists-p fname) rxfiles)))
(file-exists (or (file-exists-p fname) rxfiles))
bufname)
(cond ((and top new (natnump new))
(todo-filter-items-1 (cons 'top new) flist))
((and (not new) file-exists)
@ -4135,10 +4182,15 @@ multifile commands for further details."
(todo-check-filtered-items-file))
(t
(todo-filter-items-1 filter flist)))
(setq fname (replace-regexp-in-string "-" ", "
(todo-short-file-name fname)))
(dolist (s (split-string (todo-short-file-name fname) "-"))
(setq bufname (if bufname
(concat bufname (if (member s (mapcar
'todo-short-file-name
todo-files))
", " "-") s)
s)))
(rename-buffer (format (concat "%s for file" (if multi "s" "")
" \"%s\"") buf fname))))
" \"%s\"") buf bufname))))
(defun todo-filter-items-1 (filter file-list)
"Build a list of items by applying FILTER to FILE-LIST.
@ -6163,6 +6215,7 @@ Filtered Items mode following todo (not done) items."
("Cey" todo-edit-category-diary-inclusion)
("Cek" todo-edit-category-diary-nonmarking)
("Fa" todo-add-file)
("Fr" todo-rename-file)
("Ff" todo-find-filtered-items-file)
("FV" todo-toggle-view-done-only)
("V" todo-toggle-view-done-only)
@ -6171,8 +6224,8 @@ Filtered Items mode following todo (not done) items."
("Fts" todo-set-top-priorities-in-file)
("Fyy" todo-filter-diary-items)
("Fym" todo-filter-diary-items-multifile)
("Frr" todo-filter-regexp-items)
("Frm" todo-filter-regexp-items-multifile)
("Fxx" todo-filter-regexp-items)
("Fxm" todo-filter-regexp-items-multifile)
("ee" todo-edit-item)
("em" todo-edit-multiline-item)
("edt" todo-edit-item-header)

View file

@ -1,3 +1,38 @@
2013-07-29 David Engster <deng@randomsample.de>
* lisp/cedet/cedet.el (cedet-packages): Remove speedbar since its
development does no longer happens in CEDET upstream but in Emacs
proper. Also remove cedet-contrib and cogre since those are only
in upstream.
* semantic/analyze/fcn.el (semantic-analyze-type-to-name): If TYPE
has a parent, return a fully qualified name.
* semantic/decorate/mode.el
(semantic-decoration-on-includes-p-default)
(semantic-decoration-on-includes-highlight-default): Declare for
byte compiler.
* semantic/wisent/python.el (semantic/format): New require.
2013-07-27 Eric Ludlam <zappo@gnu.org>
* lisp/cedet/semantic/edit.el (semantic-edits-splice-remove): Wrap
debug message removing middle tag in semantic-edits-verbose-flag
check.
2013-07-27 David Engster <deng@randomsample.de>
* semantic/bovine/el.el (semantic/db-el): New require.
* semantic/db-el.el (semanticdb-normalize-one-tag): It might be
that a symbol comes from a file but cannot be found in its table.
This happens for instance when a symbol was dynamically created
through a macro like `defstruct'. In this case, return the
original tag.
(semanticdb-elisp-sym->tag): Deal with autoloaded functions, where
the argument list is not available until the file is loaded.
2013-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
* data-debug.el, cedet-idutils.el: Neuter the "Version:" header.

View file

@ -46,9 +46,6 @@
(semantic "2.2" nil "semantic/doc")
(srecode "1.2" nil "srecode" )
(ede "1.2" nil "ede" )
(speedbar "1.0.4" nil "speedbar" )
(cogre "1.2" nil "cogre" )
(cedet-contrib "1.2" "contrib" nil )
)
"Table of CEDET packages to install.")

View file

@ -165,7 +165,10 @@ SCOPE is the scope object with additional items in which to search for names."
The TYPE field in a tag can be nil (return nil)
or a string, or a non-positional tag."
(cond ((semantic-tag-p type)
(semantic-tag-name type))
(if (semantic-tag-named-parent type)
(semantic-analyze-unsplit-name `(,(semantic-tag-named-parent type)
,(semantic-tag-name type)))
(semantic-tag-name type)))
((stringp type)
type)
((listp type)

View file

@ -25,6 +25,7 @@
(require 'semantic)
(require 'semantic/bovine)
(require 'semantic/db-el)
(require 'find-func)
(require 'semantic/ctxt)

View file

@ -173,13 +173,17 @@ If Emacs cannot resolve this symbol to a particular file, then return nil."
(newtags (when tab (semanticdb-find-tags-by-name-method
tab (semantic-tag-name tag))))
(match nil))
;; Find the best match.
(dolist (T newtags)
(when (semantic-tag-similar-p T tag)
(setq match T)))
;; Backup system.
(when (not match)
(setq match (car newtags)))
;; We might not have a parsed tag in this file, because it
;; might be generated through a macro like defstruct.
(if (null newtags)
(setq match tag)
;; Find the best match.
(dolist (T newtags)
(when (semantic-tag-similar-p T tag)
(setq match T)))
;; Backup system.
(when (not match)
(setq match (car newtags))))
;; Return it.
(when tab (cons tab match))))))
@ -196,15 +200,18 @@ TOKTYPE is a hint to the type of tag desired."
(when sym
(cond ((and (eq toktype 'function) (fboundp sym))
(require 'semantic/bovine/el)
(semantic-tag-new-function
(symbol-name sym)
nil ;; return type
(semantic-elisp-desymbolify
(help-function-arglist sym)) ;; arg-list
:user-visible-flag (condition-case nil
(interactive-form sym)
(error nil))
))
(let ((arglist (help-function-arglist sym)))
(when (not (listp arglist))
;; Function might be autoloaded, in which case
;; the arglist is not available yet.
(setq arglist nil))
(semantic-tag-new-function
(symbol-name sym)
nil ;; return type
(semantic-elisp-desymbolify arglist)
:user-visible-flag (condition-case nil
(interactive-form sym)
(error nil)))))
((and (eq toktype 'variable) (boundp sym))
(semantic-tag-new-variable
(symbol-name sym)

View file

@ -541,6 +541,10 @@ Use a primary decoration."
;;; Decoration Modes in other files
;;
(declare-function semantic-decoration-on-includes-p-default
"semantic/decorate/include")
(declare-function semantic-decoration-on-includes-highlight-default
"semantic/decorate/include")
(define-semantic-decoration-style semantic-decoration-on-includes
"Highlight class members that are includes.
This mode provides a nice context menu on the include statements."

View file

@ -882,8 +882,9 @@ pre-positioned to a convenient location."
;; reparse
(semantic-parse-changes-failed "Splice-remove failed. Empty buffer?")
))
(message "To Remove Middle Tag: (%s)"
(semantic-format-tag-name first)))
(when semantic-edits-verbose-flag
(message "To Remove Middle Tag: (%s)"
(semantic-format-tag-name first))))
;; Find in the cache the preceding tag
(while (and cachestart (not (eq first (car (cdr cachestart)))))
(setq cachestart (cdr cachestart)))

View file

@ -39,6 +39,7 @@
(require 'semantic/find)
(require 'semantic/dep)
(require 'semantic/ctxt)
(require 'semantic/format)
(eval-when-compile
(require 'cl))

View file

@ -387,6 +387,18 @@ If `delete', frames on other displays are deleted instead of restored."
:group 'desktop
:version "24.4")
(defcustom desktop-restore-forces-onscreen t
"If t, offscreen frames are restored onscreen instead.
If `all', frames that are partially offscreen are also forced onscren.
NOTE: Checking of frame boundaries is only approximate and can fail
to reliably detect frames whose onscreen/offscreen state depends on a
few pixels, especially near the right / bottom borders of the screen."
:type '(choice (const :tag "Only fully offscreen frames" t)
(const :tag "Also partially offscreen frames" 'all)
(const :tag "Do not force frames onscreen" nil))
:group 'desktop
:version "24.4")
(defcustom desktop-restoring-reuses-frames t
"If t, restoring frames reuses existing frames.
If nil, existing frames are deleted.
@ -878,30 +890,30 @@ DIRNAME must be the directory in which the desktop file will be saved."
;; ----------------------------------------------------------------------------
(defvar desktop-filter-parameters-alist
'((background-color . desktop--filter-*-color)
(buffer-list . t)
(buffer-predicate . t)
(buried-buffer-list . t)
(desktop-font . desktop--filter-restore-desktop-parm)
(desktop-fullscreen . desktop--filter-restore-desktop-parm)
(desktop-height . desktop--filter-restore-desktop-parm)
(desktop-width . desktop--filter-restore-desktop-parm)
(font . desktop--filter-save-desktop-parm)
(font-backend . t)
(foreground-color . desktop--filter-*-color)
(fullscreen . desktop--filter-save-desktop-parm)
(height . desktop--filter-save-desktop-parm)
(left . desktop--filter-iconified-position)
(minibuffer . desktop--filter-minibuffer)
(name . t)
(outer-window-id . t)
(parent-id . t)
(top . desktop--filter-iconified-position)
(tty . desktop--filter-tty*)
(tty-type . desktop--filter-tty*)
(width . desktop--filter-save-desktop-parm)
(window-id . t)
(window-system . t))
'((background-color . desktop--filter-*-color)
(buffer-list . t)
(buffer-predicate . t)
(buried-buffer-list . t)
(desktop--font . desktop--filter-restore-desktop-parm)
(desktop--fullscreen . desktop--filter-restore-desktop-parm)
(desktop--height . desktop--filter-restore-desktop-parm)
(desktop--width . desktop--filter-restore-desktop-parm)
(font . desktop--filter-save-desktop-parm)
(font-backend . t)
(foreground-color . desktop--filter-*-color)
(fullscreen . desktop--filter-save-desktop-parm)
(height . desktop--filter-save-desktop-parm)
(left . desktop--filter-iconified-position)
(minibuffer . desktop--filter-minibuffer)
(name . t)
(outer-window-id . t)
(parent-id . t)
(top . desktop--filter-iconified-position)
(tty . desktop--filter-tty*)
(tty-type . desktop--filter-tty*)
(width . desktop--filter-save-desktop-parm)
(window-id . t)
(window-system . t))
"Alist of frame parameters and filtering functions.
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
t)))
(defun desktop--filter-restore-desktop-parm (current parameters saving)
;; When switching to a GUI frame, convert desktop-XXX parameter to XXX
;; When switching to a GUI frame, convert desktop--XXX parameter to XXX
(or saving
(not (desktop-switch-to-gui-p parameters))
(let ((val (cdr current)))
(if (eq val :desktop-processed)
nil
(cons (intern (substring (symbol-name (car current))
8)) ;; (length "desktop-")
9)) ;; (length "desktop--")
val)))))
(defun desktop--filter-save-desktop-parm (current parameters saving)
;; When switching to a tty frame, save parameter XXX as desktop-XXX so it
;; When switching to a tty frame, save parameter XXX as desktop--XXX so it
;; can be restored in a subsequent GUI session, unless it already exists.
(cond (saving t)
((desktop-switch-to-tty-p parameters)
(let ((sym (intern (format "desktop-%s" (car current)))))
(let ((sym (intern (format "desktop--%s" (car current)))))
(if (assq sym parameters)
nil
(cons sym (cdr current)))))
((desktop-switch-to-gui-p parameters)
(let* ((dtp (assq (intern (format "desktop-%s" (car current)))
(let* ((dtp (assq (intern (format "desktop--%s" (car current)))
parameters))
(val (cdr dtp)))
(if (eq val :desktop-processed)
@ -1047,34 +1059,34 @@ Internal use only."
filtered))
(defun desktop--process-minibuffer-frames (frames)
;; Adds a desktop-mini parameter to frames
;; desktop-mini is a list (MINIBUFFER NUMBER DEFAULT?) where
;; Adds a desktop--mini parameter to frames
;; desktop--mini is a list (MINIBUFFER NUMBER DEFAULT?) where
;; MINIBUFFER t if the frame (including minibuffer-only) owns a minibuffer
;; NUMBER if MINIBUFFER = t, an ID for the frame; if nil, the ID of
;; the frame containing the minibuffer used by this frame
;; DEFAULT? if t, this frame is the value of default-minibuffer-frame
(let ((count 0))
;; Reset desktop-mini for all frames
;; Reset desktop--mini for all frames
(dolist (frame (frame-list))
(set-frame-parameter frame 'desktop-mini nil))
(set-frame-parameter frame 'desktop--mini nil))
;; Number all frames with its own minibuffer
(dolist (frame (minibuffer-frame-list))
(set-frame-parameter frame 'desktop-mini
(set-frame-parameter frame 'desktop--mini
(list t
(cl-incf count)
(eq frame default-minibuffer-frame))))
;; Now link minibufferless frames with their minibuffer frames
(dolist (frame frames)
(unless (frame-parameter frame 'desktop-mini)
(unless (frame-parameter frame 'desktop--mini)
(let ((mb-frame (window-frame (minibuffer-window frame))))
;; Frames whose minibuffer frame has been filtered out will have
;; desktop-mini = nil, so desktop-restore-frames will restore them
;; according to their minibuffer parameter. Set up desktop-mini
;; desktop--mini = nil, so desktop-restore-frames will restore them
;; according to their minibuffer parameter. Set up desktop--mini
;; for the rest.
(when (memq mb-frame frames)
(set-frame-parameter frame 'desktop-mini
(set-frame-parameter frame 'desktop--mini
(list nil
(cl-second (frame-parameter mb-frame 'desktop-mini))
(cl-second (frame-parameter mb-frame 'desktop--mini))
nil))))))))
(defun desktop-save-frames ()
@ -1201,6 +1213,68 @@ This function also sets `desktop-dirname' to nil."
(defvar desktop--reuse-list nil
"Internal use only.")
(defun desktop--compute-pos (value left/top right/bottom)
(pcase value
(`(+ ,val) (+ left/top val))
(`(- ,val) (+ right/bottom val))
(val val)))
(defun desktop--move-onscreen (frame)
"If FRAME is offscreen, move it back onscreen and, if necessary, resize it.
When forced onscreen, frames wider than the monitor's workarea are converted
to fullwidth, and frames taller than the workarea are converted to fullheight.
NOTE: This only works for non-iconified frames."
(pcase-let* ((`(,left ,top ,width ,height) (cl-cdadr (frame-monitor-attributes frame)))
(right (+ left width -1))
(bottom (+ top height -1))
(fr-left (desktop--compute-pos (frame-parameter frame 'left) left right))
(fr-top (desktop--compute-pos (frame-parameter frame 'top) top bottom))
(ch-width (frame-char-width frame))
(ch-height (frame-char-height frame))
(fr-width (max (frame-pixel-width frame) (* ch-width (frame-width frame))))
(fr-height (max (frame-pixel-height frame) (* ch-height (frame-height frame))))
(fr-right (+ fr-left fr-width -1))
(fr-bottom (+ fr-top fr-height -1)))
(when (pcase desktop-restore-forces-onscreen
;; Any corner is outside the screen.
(`all (or (< fr-bottom top) (> fr-bottom bottom)
(< fr-left left) (> fr-left right)
(< fr-right left) (> fr-right right)
(< fr-top top) (> fr-top bottom)))
;; Displaced to the left, right, above or below the screen.
(`t (or (> fr-left right)
(< fr-right left)
(> fr-top bottom)
(< fr-bottom top)))
(_ nil))
(let ((fullwidth (> fr-width width))
(fullheight (> fr-height height))
(params nil))
;; Position frame horizontally.
(cond (fullwidth
(push `(left . ,left) params))
((> fr-right right)
(push `(left . ,(+ left (- width fr-width))) params))
((< fr-left left)
(push `(left . ,left) params)))
;; Position frame vertically.
(cond (fullheight
(push `(top . ,top) params))
((> fr-bottom bottom)
(push `(top . ,(+ top (- height fr-height))) params))
((< fr-top top)
(push `(top . ,top) params)))
;; Compute fullscreen state, if required.
(when (or fullwidth fullheight)
(push (cons 'fullscreen
(cond ((not fullwidth) 'fullheight)
((not fullheight) 'fullwidth)
(t 'maximized)))
params))
;; Finally, move the frame back onscreen.
(when params
(modify-frame-parameters frame params))))))
(defun desktop--find-frame (predicate display &rest args)
"Find a suitable frame in `desktop--reuse-list'.
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."
;; session has already been loaded. The other main use case, which
;; is the initial desktop-read upon starting Emacs, should usually
;; only have one, or very few, frame(s) to reuse.
(cond (;; When the target is tty, every existing frame is reusable.
(null display)
(cond ((null display)
;; When the target is tty, every existing frame is reusable.
(setq frame (desktop--find-frame nil display)))
(;; If the frame has its own minibuffer, let's see whether
((car (setq mini (cdr (assq 'desktop--mini frame-cfg))))
;; If the frame has its own minibuffer, let's see whether
;; that frame has already been loaded (which can happen after
;; M-x desktop-read).
(car (setq mini (cdr (assq 'desktop-mini frame-cfg))))
(setq frame (or (desktop--find-frame
(lambda (f m)
(equal (frame-parameter f 'desktop-mini) m))
display mini))))
(;; For minibufferless frames, check whether they already exist,
(setq frame (desktop--find-frame
(lambda (f m)
(equal (frame-parameter f 'desktop--mini) m))
display mini))
;; If it has not been loaded, and it is not a minibuffer-only frame,
;; let's look for an existing non-minibuffer-only frame to reuse.
(unless (or frame (eq (cdr (assq 'minibuffer frame-cfg)) 'only))
(setq frame (desktop--find-frame
(lambda (f)
(let ((w (frame-parameter f 'minibuffer)))
(and (window-live-p w)
(window-minibuffer-p w)
(eq (window-frame w) f))))
display))))
(mini
;; For minibufferless frames, check whether they already exist,
;; and that they are linked to the right minibuffer frame.
mini
(setq frame (desktop--find-frame
(lambda (f n)
(let ((m (frame-parameter f 'desktop-mini)))
(pcase-let (((and m `(,hasmini ,num))
(frame-parameter f 'desktop--mini)))
(and m
(null (cl-first m))
(= (cl-second m) n)
(null hasmini)
(= num n)
(equal (cl-second (frame-parameter
(window-frame (minibuffer-window f))
'desktop-mini))
'desktop--mini))
n))))
display (cl-second mini))))
(;; Default to just finding a frame in the same display.
t
(t
;; Default to just finding a frame in the same display.
(setq frame (desktop--find-frame nil display))))
;; If found, remove from the list.
(when frame
@ -1289,7 +1374,7 @@ its window state. Internal use only."
(visible (assq 'visibility filtered-cfg)))
(setq filtered-cfg (cl-delete-if (lambda (p)
(memq p '(visibility fullscreen width height)))
filtered-cfg))
filtered-cfg :key #'car))
(when width
(setq filtered-cfg (append `((user-size . t) (width . ,width))
filtered-cfg)))
@ -1300,10 +1385,29 @@ its window state. Internal use only."
(push visible alt-cfg)
(push (cons 'fullscreen fullscreen) alt-cfg)))
;; Time to select or create a frame an apply the big bunch of parameters
(if (setq frame (desktop--select-frame display filtered-cfg))
(modify-frame-parameters frame filtered-cfg)
(setq frame (make-frame-on-display display filtered-cfg)))
;; Time to find or create a frame an apply the big bunch of parameters.
;; If a frame needs to be created and it falls partially or wholly offscreen,
;; sometimes it gets "pushed back" onscreen; however, moving it afterwards is
;; allowed. So we create the frame as invisible and then reapply the full
;; parameter list (including position and size parameters).
(setq frame (or (desktop--select-frame display filtered-cfg)
(make-frame-on-display display
(cons '(visibility)
(cl-loop
for param in '(left top width height minibuffer)
collect (assq param filtered-cfg))))))
(modify-frame-parameters frame
(if (eq (frame-parameter frame 'fullscreen) fullscreen)
;; Workaround for bug#14949
(assq-delete-all 'fullscreen filtered-cfg)
filtered-cfg))
;; If requested, force frames to be onscreen.
(when (and desktop-restore-forces-onscreen
;; FIXME: iconified frames should be checked too,
;; but it is impossible without deiconifying them.
(not (eq (frame-parameter frame 'visibility) 'icon)))
(desktop--move-onscreen frame))
;; Let's give the finishing touches (visibility, tool-bar, maximization).
(when lines (push lines alt-cfg))
@ -1316,14 +1420,12 @@ its window state. Internal use only."
;; Order: default minibuffer frame
;; other frames with minibuffer, ascending ID
;; minibufferless frames, ascending ID
(let ((dm1 (cdr (assq 'desktop-mini (car state1))))
(dm2 (cdr (assq 'desktop-mini (car state2)))))
(cond ((cl-third dm1) t)
((cl-third dm2) nil)
((eq (cl-first dm1) (cl-first dm2))
(< (cl-second dm1) (cl-second dm2)))
(t
(cl-first dm1)))))
(pcase-let ((`(,_p1 ,hasmini1 ,num1 ,default1) (assq 'desktop--mini (car state1)))
(`(,_p2 ,hasmini2 ,num2 ,default2) (assq 'desktop--mini (car state2))))
(cond (default1 t)
(default2 nil)
((eq hasmini1 hasmini2) (< num1 num2))
(t hasmini1))))
(defun desktop-restoring-frames-p ()
"True if calling `desktop-restore-frames' will actually restore frames."
@ -1349,10 +1451,10 @@ being set (usually, by reading it from the desktop)."
(dolist (state desktop-saved-frame-states)
(condition-case err
(let* ((frame-cfg (car state))
(window-cfg (cdr state))
(d-mini (cdr (assq 'desktop-mini frame-cfg)))
num frame to-tty)
(pcase-let* ((`(,frame-cfg . ,window-cfg) state)
((and d-mini `(,hasmini ,num ,default))
(cdr (assq 'desktop--mini frame-cfg)))
(frame nil) (to-tty nil))
;; Only set target if forcing displays and the target display is different.
(if (or (not forcing)
(equal target (or (assq 'display frame-cfg) '(display . nil))))
@ -1373,17 +1475,16 @@ being set (usually, by reading it from the desktop)."
;; global state; it's best to do it here than add a bunch of global
;; variables to pass info back-and-forth to/from the filter function.
(cond
((null d-mini)) ;; No desktop-mini. Process as normal frame.
((null d-mini)) ;; No desktop--mini. Process as normal frame.
(to-tty) ;; Ignore minibuffer stuff and process as normal frame.
((cl-first d-mini) ;; Frame has minibuffer (or it is minibuffer-only).
(setq num (cl-second d-mini))
(hasmini ;; Frame has minibuffer (or it is minibuffer-only).
(when (eq (cdr (assq 'minibuffer frame-cfg)) 'only)
(setq frame-cfg (append '((tool-bar-lines . 0) (menu-bar-lines . 0))
frame-cfg))))
(t ;; Frame depends on other frame's minibuffer window.
(let ((mb-frame (cdr (assq (cl-second d-mini) frame-mb-map))))
(let ((mb-frame (cdr (assq num frame-mb-map))))
(unless (frame-live-p mb-frame)
(error "Minibuffer frame %s not found" (cl-second d-mini)))
(error "Minibuffer frame %s not found" num))
(let ((mb-param (assq 'minibuffer frame-cfg))
(mb-window (minibuffer-window mb-frame)))
(unless (and (window-live-p mb-window)
@ -1396,12 +1497,16 @@ being set (usually, by reading it from the desktop)."
;; restore the window config.
(setq frame (desktop--make-frame frame-cfg window-cfg))
;; Set default-minibuffer if required.
(when (cl-third d-mini) (setq default-minibuffer-frame frame))
;; Store frame/NUM to assign to minibufferless frames.
(when num (push (cons num frame) frame-mb-map))))
(when default (setq default-minibuffer-frame frame))
;; Store NUM/frame to assign to minibufferless frames.
(when hasmini (push (cons num frame) frame-mb-map))))
(error
(delay-warning 'desktop (error-message-string err) :error))))
;; In case we try to delete the initial frame, we want to make sure that
;; other frames are already visible (discussed in thread for bug#14841).
(sit-for 0 t)
;; Delete remaining frames, but do not fail if some resist being deleted.
(unless (eq desktop-restoring-reuses-frames 'keep)
(dolist (frame desktop--reuse-list)

View file

@ -331,9 +331,9 @@ See also the functions:
;; Mark files with some extension.
(defun dired-mark-extension (extension &optional marker-char)
"Mark all files with a certain EXTENSION for use in later commands.
A `.' is *not* automatically prepended to the string entered."
;; EXTENSION may also be a list of extensions instead of a single one.
;; Optional MARKER-CHAR is marker to use.
A `.' is *not* automatically prepended to the string entered.
EXTENSION may also be a list of extensions instead of a single one.
Optional MARKER-CHAR is marker to use."
(interactive "sMarking extension: \nP")
(or (listp extension)
(setq extension (list extension)))

View file

@ -4367,7 +4367,7 @@ instead.
;;;***
;;;### (autoloads nil "dired-x" "dired-x.el" "9bfe6b761cb88b4d3ab78a7905979371")
;;;### (autoloads nil "dired-x" "dired-x.el" "1419d865898f84c17f172320e578380c")
;;; Generated autoloads from dired-x.el
(autoload 'dired-jump "dired-x" "\

View file

@ -102,22 +102,6 @@ The value used here is passed to `quit-restore-window'."
This is to optimize `debugger-make-xrefs'.")
(defvar debugger-outer-match-data)
(defvar debugger-outer-load-read-function)
(defvar debugger-outer-overriding-local-map)
(defvar debugger-outer-overriding-terminal-local-map)
(defvar debugger-outer-track-mouse)
(defvar debugger-outer-last-command)
(defvar debugger-outer-this-command)
(defvar debugger-outer-unread-command-events)
(defvar debugger-outer-unread-post-input-method-events)
(defvar debugger-outer-last-input-event)
(defvar debugger-outer-last-command-event)
(defvar debugger-outer-last-nonmenu-event)
(defvar debugger-outer-last-event-frame)
(defvar debugger-outer-standard-input)
(defvar debugger-outer-standard-output)
(defvar debugger-outer-inhibit-redisplay)
(defvar debugger-outer-cursor-in-echo-area)
(defvar debugger-will-be-back nil
"Non-nil if we expect to get back in the debugger soon.")
@ -174,24 +158,6 @@ first will be printed into the backtrace buffer."
;; Save the outer values of these vars for the `e' command
;; before we replace the values.
(debugger-outer-match-data (match-data))
(debugger-outer-load-read-function load-read-function)
(debugger-outer-overriding-local-map overriding-local-map)
(debugger-outer-overriding-terminal-local-map
overriding-terminal-local-map)
(debugger-outer-track-mouse track-mouse)
(debugger-outer-last-command last-command)
(debugger-outer-this-command this-command)
(debugger-outer-unread-command-events unread-command-events)
(debugger-outer-unread-post-input-method-events
unread-post-input-method-events)
(debugger-outer-last-input-event last-input-event)
(debugger-outer-last-command-event last-command-event)
(debugger-outer-last-nonmenu-event last-nonmenu-event)
(debugger-outer-last-event-frame last-event-frame)
(debugger-outer-standard-input standard-input)
(debugger-outer-standard-output standard-output)
(debugger-outer-inhibit-redisplay inhibit-redisplay)
(debugger-outer-cursor-in-echo-area cursor-in-echo-area)
(debugger-with-timeout-suspend (with-timeout-suspend)))
;; Set this instead of binding it, so that `q'
;; will not restore it.
@ -294,26 +260,6 @@ first will be printed into the backtrace buffer."
(funcall (nth 0 debugger-previous-state))))))
(with-timeout-unsuspend debugger-with-timeout-suspend)
(set-match-data debugger-outer-match-data)))
;; Put into effect the modified values of these variables
;; in case the user set them with the `e' command.
(setq load-read-function debugger-outer-load-read-function)
(setq overriding-local-map debugger-outer-overriding-local-map)
(setq overriding-terminal-local-map
debugger-outer-overriding-terminal-local-map)
(setq track-mouse debugger-outer-track-mouse)
(setq last-command debugger-outer-last-command)
(setq this-command debugger-outer-this-command)
(setq unread-command-events debugger-outer-unread-command-events)
(setq unread-post-input-method-events
debugger-outer-unread-post-input-method-events)
(setq last-input-event debugger-outer-last-input-event)
(setq last-command-event debugger-outer-last-command-event)
(setq last-nonmenu-event debugger-outer-last-nonmenu-event)
(setq last-event-frame debugger-outer-last-event-frame)
(setq standard-input debugger-outer-standard-input)
(setq standard-output debugger-outer-standard-output)
(setq inhibit-redisplay debugger-outer-inhibit-redisplay)
(setq cursor-in-echo-area debugger-outer-cursor-in-echo-area)
(setq debug-on-next-call debugger-step-after-exit)
debugger-value)))
@ -518,18 +464,21 @@ removes itself from that hook."
(setq debugger-jumping-flag nil)
(remove-hook 'post-command-hook 'debugger-reenable))
(defun debugger-frame-number ()
(defun debugger-frame-number (&optional skip-base)
"Return number of frames in backtrace before the one point points at."
(save-excursion
(beginning-of-line)
(if (looking-at " *;;;\\|[a-z]")
(error "This line is not a function call"))
(let ((opoint (point))
(count 0))
(while (not (eq (cadr (backtrace-frame count)) 'debug))
(setq count (1+ count)))
;; Skip debug--implement-debug-on-entry frame.
(when (eq 'debug--implement-debug-on-entry
(cadr (backtrace-frame (1+ count))))
(setq count (+ 2 count)))
(unless skip-base
(while (not (eq (cadr (backtrace-frame count)) 'debug))
(setq count (1+ count)))
;; Skip debug--implement-debug-on-entry frame.
(when (eq 'debug--implement-debug-on-entry
(cadr (backtrace-frame (1+ count))))
(setq count (+ 2 count))))
(goto-char (point-min))
(when (looking-at "Debugger entered--\\(Lisp error\\|returning value\\):")
(goto-char (match-end 0))
@ -551,12 +500,8 @@ removes itself from that hook."
"Request entry to debugger when this frame exits.
Applies to the frame whose line point is on in the backtrace."
(interactive)
(save-excursion
(beginning-of-line)
(if (looking-at " *;;;\\|[a-z]")
(error "This line is not a function call")))
(beginning-of-line)
(backtrace-debug (debugger-frame-number) t)
(beginning-of-line)
(if (= (following-char) ? )
(let ((inhibit-read-only t))
(delete-char 1)
@ -567,12 +512,8 @@ Applies to the frame whose line point is on in the backtrace."
"Do not enter debugger when this frame exits.
Applies to the frame whose line point is on in the backtrace."
(interactive)
(save-excursion
(beginning-of-line)
(if (looking-at " *;;;\\|[a-z]")
(error "This line is not a function call")))
(beginning-of-line)
(backtrace-debug (debugger-frame-number) nil)
(beginning-of-line)
(if (= (following-char) ?*)
(let ((inhibit-read-only t))
(delete-char 1)
@ -583,59 +524,33 @@ Applies to the frame whose line point is on in the backtrace."
"Run BODY in original environment."
(declare (indent 0))
`(save-excursion
(if (null (buffer-name debugger-old-buffer))
(if (null (buffer-live-p debugger-old-buffer))
;; old buffer deleted
(setq debugger-old-buffer (current-buffer)))
(set-buffer debugger-old-buffer)
(let ((load-read-function debugger-outer-load-read-function)
(overriding-terminal-local-map
debugger-outer-overriding-terminal-local-map)
(overriding-local-map debugger-outer-overriding-local-map)
(track-mouse debugger-outer-track-mouse)
(last-command debugger-outer-last-command)
(this-command debugger-outer-this-command)
(unread-command-events debugger-outer-unread-command-events)
(unread-post-input-method-events
debugger-outer-unread-post-input-method-events)
(last-input-event debugger-outer-last-input-event)
(last-command-event debugger-outer-last-command-event)
(last-nonmenu-event debugger-outer-last-nonmenu-event)
(last-event-frame debugger-outer-last-event-frame)
(standard-input debugger-outer-standard-input)
(standard-output debugger-outer-standard-output)
(inhibit-redisplay debugger-outer-inhibit-redisplay)
(cursor-in-echo-area debugger-outer-cursor-in-echo-area))
(set-match-data debugger-outer-match-data)
(prog1
(progn ,@body)
(setq debugger-outer-match-data (match-data))
(setq debugger-outer-load-read-function load-read-function)
(setq debugger-outer-overriding-terminal-local-map
overriding-terminal-local-map)
(setq debugger-outer-overriding-local-map overriding-local-map)
(setq debugger-outer-track-mouse track-mouse)
(setq debugger-outer-last-command last-command)
(setq debugger-outer-this-command this-command)
(setq debugger-outer-unread-command-events unread-command-events)
(setq debugger-outer-unread-post-input-method-events
unread-post-input-method-events)
(setq debugger-outer-last-input-event last-input-event)
(setq debugger-outer-last-command-event last-command-event)
(setq debugger-outer-last-nonmenu-event last-nonmenu-event)
(setq debugger-outer-last-event-frame last-event-frame)
(setq debugger-outer-standard-input standard-input)
(setq debugger-outer-standard-output standard-output)
(setq debugger-outer-inhibit-redisplay inhibit-redisplay)
(setq debugger-outer-cursor-in-echo-area cursor-in-echo-area)
))))
(set-match-data debugger-outer-match-data)
(prog1
(progn ,@body)
(setq debugger-outer-match-data (match-data)))))
(defun debugger-eval-expression (exp)
"Eval an expression, in an environment like that outside the debugger."
"Eval an expression, in an environment like that outside the debugger.
The environment used is the one when entering the activation frame at point."
(interactive
(list (read-from-minibuffer "Eval: "
nil read-expression-map t
'read-expression-history)))
(debugger-env-macro (eval-expression exp)))
(let ((nframe (condition-case nil (1+ (debugger-frame-number 'skip-base))
(error 0))) ;; If on first line.
(base (if (eq 'debug--implement-debug-on-entry
(cadr (backtrace-frame 1 'debug)))
'debug--implement-debug-on-entry 'debug)))
(debugger-env-macro
(let ((val (backtrace-eval exp nframe base)))
(prog1
(prin1 val t)
(let ((str (eval-expression-print-format val)))
(if str (princ str t))))))))
(defvar debugger-mode-map
(let ((map (make-keymap))

View file

@ -2088,8 +2088,6 @@ expressions; a `progn' form will be returned enclosing these forms."
(defvar edebug-coverage) ; the coverage results of each expression of function.
(defvar edebug-buffer) ; which buffer the function is in.
(defvar edebug-outside-executing-macro)
(defvar edebug-outside-defining-kbd-macro)
(defvar edebug-execution-mode 'step) ; Current edebug mode set by user.
(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."
(defvar edebug-outside-debug-on-error) ; the value of debug-on-error outside
(defvar edebug-outside-debug-on-quit) ; the value of debug-on-quit outside
(defvar edebug-outside-pre-command-hook)
(defvar edebug-outside-post-command-hook)
(defvar cl-lexical-debug) ;; Defined in cl.el
;;; Handling signals
(defun edebug-signal (signal-name signal-data)
@ -2154,10 +2146,7 @@ error is signaled again."
;; Binding these may not be the right thing to do.
;; We want to allow the global values to be changed.
(debug-on-error (or debug-on-error edebug-on-error))
(debug-on-quit edebug-on-quit)
;; Lexical bindings must be uncompiled for this to work.
(cl-lexical-debug t))
(debug-on-quit edebug-on-quit))
(unwind-protect
(let ((signal-hook-function 'edebug-signal))
(setq edebug-execution-mode (or edebug-next-execution-mode
@ -2386,9 +2375,6 @@ MSG is printed after `::::} '."
(defvar edebug-window-data) ; window and window-start for current function
(defvar edebug-outside-windows) ; outside window configuration
(defvar edebug-eval-buffer) ; for the evaluation list.
(defvar edebug-outside-o-a-p) ; outside overlay-arrow-position
(defvar edebug-outside-o-a-s) ; outside overlay-arrow-string
(defvar edebug-outside-c-i-e-a) ; outside cursor-in-echo-area
(defvar edebug-outside-d-c-i-n-s-w) ; outside default-cursor-in-non-selected-windows
(defvar edebug-eval-list nil) ;; List of expressions to evaluate.
@ -2398,8 +2384,6 @@ MSG is printed after `::::} '."
;; Emacs 19 adds an arg to mark and mark-marker.
(defalias 'edebug-mark-marker 'mark-marker)
(defvar edebug-outside-unread-command-events)
(defun edebug--display (value offset-index arg-mode)
(unless (marker-position edebug-def-mark)
;; The buffer holding the source has been killed.
@ -2421,7 +2405,6 @@ MSG is printed after `::::} '."
(edebug-outside-buffer (current-buffer))
(edebug-outside-point (point))
(edebug-outside-mark (edebug-mark))
(edebug-outside-unread-command-events unread-command-events)
edebug-outside-windows ; Window or screen configuration.
edebug-buffer-points
@ -2431,9 +2414,6 @@ MSG is printed after `::::} '."
edebug-trace-window
edebug-trace-window-start
(edebug-outside-o-a-p overlay-arrow-position)
(edebug-outside-o-a-s overlay-arrow-string)
(edebug-outside-c-i-e-a cursor-in-echo-area)
(edebug-outside-d-c-i-n-s-w
(default-value 'cursor-in-non-selected-windows)))
(unwind-protect
@ -2445,8 +2425,7 @@ MSG is printed after `::::} '."
)
(setq-default cursor-in-non-selected-windows t)
(if (not (buffer-name edebug-buffer))
(let ((debug-on-error nil))
(error "Buffer defining %s not found" edebug-function)))
(user-error "Buffer defining %s not found" edebug-function))
(if (eq 'after arg-mode)
;; Compute result string now before windows are modified.
@ -2486,10 +2465,9 @@ MSG is printed after `::::} '."
;; Check whether positions are up-to-date.
;; This assumes point is never before symbol.
(if (not (memq (following-char) '(?\( ?\# ?\` )))
(let ((debug-on-error nil))
(error "Source has changed - reevaluate definition of %s"
edebug-function)
)))
(user-error "Source has changed - reevaluate definition of %s"
edebug-function)
))
(setcdr edebug-window-data
(edebug-adjust-window (cdr edebug-window-data)))
@ -2645,11 +2623,6 @@ MSG is printed after `::::} '."
(if edebug-eval-buffer (kill-buffer edebug-eval-buffer))
(with-timeout-unsuspend edebug-with-timeout-suspend)
;; Reset global variables to outside values in case they were changed.
(setq
unread-command-events edebug-outside-unread-command-events
overlay-arrow-position edebug-outside-o-a-p
overlay-arrow-string edebug-outside-o-a-s
cursor-in-echo-area edebug-outside-c-i-e-a)
(setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w)
)))
@ -2667,27 +2640,6 @@ MSG is printed after `::::} '."
(defvar edebug-inside-windows)
(defvar edebug-interactive-p)
(defvar edebug-outside-map)
(defvar edebug-outside-standard-output)
(defvar edebug-outside-standard-input)
(defvar edebug-outside-current-prefix-arg)
(defvar edebug-outside-last-command)
(defvar edebug-outside-this-command)
;; Note: here we have defvars for variables that are
;; built-in in certain versions.
;; Each defvar makes a difference
;; in versions where the variable is *not* built-in.
;; Emacs 18 FIXME
;; Emacs 19.
(defvar edebug-outside-last-command-event)
(defvar edebug-outside-last-input-event)
(defvar edebug-outside-last-event-frame)
(defvar edebug-outside-last-nonmenu-event)
(defvar edebug-outside-track-mouse)
(defun edebug--recursive-edit (arg-mode)
;; Start up a recursive edit inside of edebug.
;; The current buffer is the edebug-buffer, which is put into edebug-mode.
@ -2705,28 +2657,6 @@ MSG is printed after `::::} '."
;; The window configuration may be saved and restored
;; during a recursive-edit
edebug-inside-windows
;; Save the outside value of executing macro. (here??)
(edebug-outside-executing-macro executing-kbd-macro)
(edebug-outside-pre-command-hook
(edebug-var-status 'pre-command-hook))
(edebug-outside-post-command-hook
(edebug-var-status 'post-command-hook))
(edebug-outside-standard-output standard-output)
(edebug-outside-standard-input standard-input)
(edebug-outside-defining-kbd-macro defining-kbd-macro)
(edebug-outside-last-command last-command)
(edebug-outside-this-command this-command)
(edebug-outside-current-prefix-arg current-prefix-arg)
(edebug-outside-last-input-event last-input-event)
(edebug-outside-last-command-event last-command-event)
(edebug-outside-last-event-frame last-event-frame)
(edebug-outside-last-nonmenu-event last-nonmenu-event)
(edebug-outside-track-mouse track-mouse)
)
(unwind-protect
@ -2757,7 +2687,7 @@ MSG is printed after `::::} '."
(overriding-local-map nil)
(overriding-terminal-local-map nil)
;; Bind again to outside values.
;; Bind again to outside values.
(debug-on-error edebug-outside-debug-on-error)
(debug-on-quit edebug-outside-debug-on-quit)
@ -2805,27 +2735,7 @@ MSG is printed after `::::} '."
;; gotta have a buffer to let its buffer local variables be set
(get-buffer-create " bogus edebug buffer"))
));; inner let
;; Reset global vars to outside values, in case they have been changed.
(setq
last-command-event edebug-outside-last-command-event
last-command edebug-outside-last-command
this-command edebug-outside-this-command
current-prefix-arg edebug-outside-current-prefix-arg
last-input-event edebug-outside-last-input-event
last-event-frame edebug-outside-last-event-frame
last-nonmenu-event edebug-outside-last-nonmenu-event
track-mouse edebug-outside-track-mouse
standard-output edebug-outside-standard-output
standard-input edebug-outside-standard-input
defining-kbd-macro edebug-outside-defining-kbd-macro)
(setq executing-kbd-macro edebug-outside-executing-macro)
(edebug-restore-status
'post-command-hook edebug-outside-post-command-hook)
(edebug-restore-status
'pre-command-hook edebug-outside-pre-command-hook))))
)))
;;; Display related functions
@ -3423,6 +3333,9 @@ edebug-mode."
(defmacro edebug-outside-excursion (&rest body)
"Evaluate an expression list in the outside context.
Return the result of the last expression."
;; Only restores the non-variables context since all the variables let-bound
;; by Edebug will be properly reset to the appropriate context's value by
;; backtrace-eval.
(declare (debug t))
`(save-excursion ; of current-buffer
(if edebug-save-windows
@ -3435,89 +3348,32 @@ Return the result of the last expression."
(edebug-set-windows edebug-outside-windows)))
(set-buffer edebug-buffer) ; why?
;; (use-local-map edebug-outside-map)
(set-match-data edebug-outside-match-data)
;; Restore outside context.
(let (;; (edebug-inside-map (current-local-map)) ;; restore map??
(last-command-event edebug-outside-last-command-event)
(last-command edebug-outside-last-command)
(this-command edebug-outside-this-command)
(unread-command-events edebug-outside-unread-command-events)
(current-prefix-arg edebug-outside-current-prefix-arg)
(last-input-event edebug-outside-last-input-event)
(last-event-frame edebug-outside-last-event-frame)
(last-nonmenu-event edebug-outside-last-nonmenu-event)
(track-mouse edebug-outside-track-mouse)
(standard-output edebug-outside-standard-output)
(standard-input edebug-outside-standard-input)
(setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w)
(unwind-protect
(with-current-buffer edebug-outside-buffer ; of edebug-buffer
(goto-char edebug-outside-point)
(if (marker-buffer (edebug-mark-marker))
(set-marker (edebug-mark-marker) edebug-outside-mark))
,@body)
(executing-kbd-macro edebug-outside-executing-macro)
(defining-kbd-macro edebug-outside-defining-kbd-macro)
;; Get the values out of the saved statuses.
(pre-command-hook (cdr edebug-outside-pre-command-hook))
(post-command-hook (cdr edebug-outside-post-command-hook))
;; Back to edebug-buffer. Restore rest of inside context.
;; (use-local-map edebug-inside-map)
(if edebug-save-windows
;; Restore inside windows.
(edebug-set-windows edebug-inside-windows))
;; See edebug-display.
(overlay-arrow-position edebug-outside-o-a-p)
(overlay-arrow-string edebug-outside-o-a-s)
(cursor-in-echo-area edebug-outside-c-i-e-a)
)
(setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w)
(unwind-protect
(with-current-buffer edebug-outside-buffer ; of edebug-buffer
(goto-char edebug-outside-point)
(if (marker-buffer (edebug-mark-marker))
(set-marker (edebug-mark-marker) edebug-outside-mark))
,@body)
;; Save values that may have been changed.
(setq edebug-outside-d-c-i-n-s-w
(default-value 'cursor-in-non-selected-windows))
;; Back to edebug-buffer. Restore rest of inside context.
;; (use-local-map edebug-inside-map)
(if edebug-save-windows
;; Restore inside windows.
(edebug-set-windows edebug-inside-windows))
;; Save values that may have been changed.
(setq
edebug-outside-last-command-event last-command-event
edebug-outside-last-command last-command
edebug-outside-this-command this-command
edebug-outside-unread-command-events unread-command-events
edebug-outside-current-prefix-arg current-prefix-arg
edebug-outside-last-input-event last-input-event
edebug-outside-last-event-frame last-event-frame
edebug-outside-last-nonmenu-event last-nonmenu-event
edebug-outside-track-mouse track-mouse
edebug-outside-standard-output standard-output
edebug-outside-standard-input standard-input
edebug-outside-executing-macro executing-kbd-macro
edebug-outside-defining-kbd-macro defining-kbd-macro
edebug-outside-o-a-p overlay-arrow-position
edebug-outside-o-a-s overlay-arrow-string
edebug-outside-c-i-e-a cursor-in-echo-area
edebug-outside-d-c-i-n-s-w (default-value
'cursor-in-non-selected-windows)
)
;; Restore the outside saved values; don't alter
;; the outside binding loci.
(setcdr edebug-outside-pre-command-hook pre-command-hook)
(setcdr edebug-outside-post-command-hook post-command-hook)
(setq-default cursor-in-non-selected-windows t)
)) ; let
))
(defvar cl-debug-env) ; defined in cl; non-nil when lexical env used.
;; Restore the outside saved values; don't alter
;; the outside binding loci.
(setq-default cursor-in-non-selected-windows t))))
(defun edebug-eval (expr)
;; Are there cl lexical variables active?
(eval (if (and (bound-and-true-p cl-debug-env)
(fboundp 'cl-macroexpand-all))
(cl-macroexpand-all expr cl-debug-env)
expr)
lexical-binding))
(backtrace-eval expr 0 'edebug-after))
(defun edebug-safe-eval (expr)
;; Evaluate EXPR safely.
@ -4268,7 +4124,7 @@ With prefix argument, make it a temporary breakpoint."
(eq (nth 1 (nth 1 frame1)) '())
(eq (nth 1 frame2) 'edebug-enter))
;; `edebug-enter' calls itself on its first invocation.
(if (eq (nth 1 (internal--called-interactively-p--get-frame i))
(if (eq (nth 1 (backtrace-frame i 'called-interactively-p))
'edebug-enter)
2 1)))

View file

@ -425,7 +425,7 @@ of the piece of advice."
(get-next-frame
(lambda ()
(setq frame1 frame2)
(setq frame2 (internal--called-interactively-p--get-frame i))
(setq frame2 (backtrace-frame i #'called-interactively-p))
;; (message "Advice Frame %d = %S" i frame2)
(setq i (1+ i)))))
(when (and (eq (nth 1 frame2) 'apply)

View file

@ -109,94 +109,127 @@ If no one is selected, default secret key is used. "
(if verbose
(epa--read-signature-type)
'clear)))))
(epa-sign-region start end signers mode))
(let ((inhibit-read-only t))
(epa-sign-region start end signers mode)))
(defun epa-mail-default-recipients ()
"Return the default list of encryption recipients for a mail buffer."
(let ((config (epg-configuration))
recipients-string real-recipients)
(save-excursion
(goto-char (point-min))
(save-restriction
(narrow-to-region (point)
(if (search-forward mail-header-separator nil 0)
(match-beginning 0)
(point)))
(setq recipients-string
(mapconcat #'identity
(nconc (mail-fetch-field "to" nil nil t)
(mail-fetch-field "cc" nil nil t)
(mail-fetch-field "bcc" nil nil t))
","))
(setq recipients-string
(mail-strip-quoted-names
(with-temp-buffer
(insert "to: " recipients-string "\n")
(expand-mail-aliases (point-min) (point-max))
(car (mail-fetch-field "to" nil nil t))))))
(setq real-recipients
(split-string recipients-string "," t "[ \t\n]*"))
;; Process all the recipients thru the list of GnuPG groups.
;; Expand GnuPG group names to what they stand for.
(setq real-recipients
(apply #'nconc
(mapcar
(lambda (recipient)
(or (epg-expand-group config recipient)
(list recipient)))
real-recipients)))
;; Process all the recipients thru the user's list
;; of encryption aliases.
(setq real-recipients
(apply #'nconc
(mapcar
(lambda (recipient)
(let ((tem (assoc recipient epa-mail-aliases)))
(if tem (cdr tem)
(list recipient))))
real-recipients)))
)))
;;;###autoload
(defun epa-mail-encrypt (start end recipients sign signers)
"Encrypt the current buffer.
The buffer is expected to contain a mail message.
(defun epa-mail-encrypt (&optional recipients signers)
"Encrypt the outgoing mail message in the current buffer.
Takes the recipients from the text in the header in the buffer
and translates them through `epa-mail-aliases'.
With prefix argument, asks you to select among them interactively
and also whether and how to sign.
Don't use this command in Lisp programs!"
Called from Lisp, the optional argument RECIPIENTS is a list
of recipient addresses, t to perform symmetric encryption,
or nil meaning use the defaults.
SIGNERS is a list of keys to sign the message with."
(interactive
(save-excursion
(let ((verbose current-prefix-arg)
(config (epg-configuration))
(context (epg-make-context epa-protocol))
recipients-string recipients recipient-key sign)
(goto-char (point-min))
(save-restriction
(narrow-to-region (point)
(if (search-forward mail-header-separator nil 0)
(match-beginning 0)
(point)))
(setq recipients-string
(mapconcat #'identity
(nconc (mail-fetch-field "to" nil nil t)
(mail-fetch-field "cc" nil nil t)
(mail-fetch-field "bcc" nil nil t))
","))
(setq recipients
(mail-strip-quoted-names
(with-temp-buffer
(insert "to: " recipients-string "\n")
(expand-mail-aliases (point-min) (point-max))
(car (mail-fetch-field "to" nil nil t))))))
(if recipients
(setq recipients (delete ""
(split-string recipients
"[ \t\n]*,[ \t\n]*"))))
;; Process all the recipients thru the list of GnuPG groups.
;; Expand GnuPG group names to what they stand for.
(setq recipients
(apply #'nconc
(mapcar
(lambda (recipient)
(or (epg-expand-group config recipient)
(list recipient)))
recipients)))
(goto-char (point-min))
(if (search-forward mail-header-separator nil t)
(forward-line))
(setq epa-last-coding-system-specified
(or coding-system-for-write
(epa--select-safe-coding-system (point) (point-max))))
(list (point) (point-max)
(if verbose
(epa-select-keys
context
"Select recipients for encryption.
(let ((verbose current-prefix-arg)
(context (epg-make-context epa-protocol)))
(list (if verbose
(or (epa-select-keys
context
"Select recipients for encryption.
If no one is selected, symmetric encryption will be performed. "
recipients)
(if recipients
(epa-mail-default-recipients))
t))
(and verbose (y-or-n-p "Sign? ")
(epa-select-keys context
"Select keys for signing. ")))))
(let (start recipient-keys default-recipients)
(save-excursion
(setq recipient-keys
(cond ((eq recipients t)
nil)
(recipients recipients)
(t
(setq default-recipients
(epa-mail-default-recipients))
;; Convert recipients to keys.
(apply
'nconc
(mapcar
(lambda (recipient)
(setq recipient-key
(epa-mail--find-usable-key
(epg-list-keys
(epg-make-context epa-protocol)
(if (string-match "@" recipient)
(concat "<" recipient ">")
recipient))
'encrypt))
(unless (or recipient-key
(y-or-n-p
(format
"No public key for %s; skip it? "
recipient)))
(error "No public key for %s" recipient))
(if recipient-key (list recipient-key)))
recipients))))
(setq sign (if verbose (y-or-n-p "Sign? ")))
(if sign
(epa-select-keys context
"Select keys for signing. "))))))
;; Don't let some read-only text stop us from encrypting.
(let ((inhibit-read-only t))
(epa-encrypt-region start end recipients sign signers)))
(let ((recipient-key
(epa-mail--find-usable-key
(epg-list-keys
(epg-make-context epa-protocol)
(if (string-match "@" recipient)
(concat "<" recipient ">")
recipient))
'encrypt)))
(unless (or recipient-key
(y-or-n-p
(format
"No public key for %s; skip it? "
recipient)))
(error "No public key for %s" recipient))
(if recipient-key (list recipient-key))))
default-recipients)))))
(goto-char (point-min))
(if (search-forward mail-header-separator nil t)
(forward-line))
(setq start (point))
(setq epa-last-coding-system-specified
(or coding-system-for-write
(epa--select-safe-coding-system (point) (point-max)))))
;; Don't let some read-only text stop us from encrypting.
(let ((inhibit-read-only t))
(epa-encrypt-region start (point-max) recipient-keys signers signers))))
;;;###autoload
(defun epa-mail-import-keys ()

View file

@ -48,6 +48,18 @@
:version "23.1"
:group 'epa)
(defcustom epa-mail-aliases nil
"Alist of aliases of email addresses that stand for encryption keys.
Each element is (ALIAS EXPANSIONS...).
It means that when a message is addressed to ALIAS,
instead of encrypting it for ALIAS, encrypt it for EXPANSIONS...
If EXPANSIONS is empty, ignore ALIAS as regards encryption.
That is a handy way to avoid warnings about addresses
that you don't have any key for."
:type '(repeat (cons (string :tag "Alias") (repeat '(string :tag "Expansion"))))
:group 'epa
:version "24.4")
(defface epa-validity-high
'((default :weight bold)
(((class color) (background dark)) :foreground "PaleTurquoise"))

View file

@ -317,6 +317,9 @@ there (in decreasing order of priority)."
t))
;; Create the new frame.
(let (parms new)
;; MS-Windows needs this to avoid inflooping below.
(if (eq system-type 'windows-nt)
(sit-for 0 t))
;; If the frame isn't visible yet, wait till it is.
;; If the user has to position the window,
;; Emacs doesn't know its real position until

View file

@ -1,3 +1,13 @@
2013-07-26 Tassilo Horn <tsdh@gnu.org>
* gnus-sum.el (gnus-sort-threads-recursively): New defcustom.
(gnus-sort-threads): Use it.
2013-07-25 Andreas Schwab <schwab@linux-m68k.org>
* gnus-art.el (gnus-button-url-regexp): Make it match url in which
punctuation characters follow parentheses (bug#14950).
2013-07-23 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.el (gnus-continuum-version):
@ -1892,7 +1902,7 @@
* nnmail.el (mail-send-and-exit): Silence the byte compiler.
2012-06-26 Peter Munster <pmrb@free.fr>
2012-06-26 Peter Münster <pmrb@free.fr>
* gnus-demon.el (gnus-demon-timers): Now a plist (function -> timer).
(gnus-demon-cancel): Ditto.
@ -2119,7 +2129,7 @@
(spam-check-BBDB): Use it.
(spam-enter-ham-BBDB): Use it.
2012-06-26 Peter Munster <pmrb@free.fr> (tiny change)
2012-06-26 Peter Münster <pmrb@free.fr> (tiny change)
* gnus-group.el (gnus-group-get-new-news):
New parameter `one-level' for scanning exactly one level.
@ -8482,7 +8492,7 @@
* nnimap.el (nnimap-request-group): Low higher than high to signal no
messages in empty groups.
2010-10-01 Ted Zlatanov <tzz@lifelogs.com>
2010-10-01 Teodor Zlatanov <tzz@lifelogs.com>
* nnimap.el (nnimap-request-group): Don't bug out when there's an empty
non-UIDNEXT group.
@ -8623,7 +8633,7 @@
* nndraft.el (nndraft-request-expire-articles): Use the group name
instead if "nndraft". Fix found by Nils Ackermann.
2010-09-29 Ludovic Courtes <ludo@gnu.org>
2010-09-29 Ludovic Courtès <ludo@gnu.org>
* nnregistry.el: Add.

View file

@ -340,7 +340,7 @@
* nnmail.el (nnmail-spool-file): Allow lists of files.
1998-08-20 Per Starback <starback@update.uu.se>
1998-08-20 Per Starbäck <starback@update.uu.se>
* gnus/gnus-start.el (gnus-check-first-time-used): Change current
buffer before creating help group.

View file

@ -210,7 +210,7 @@
* mml1991.el (mml1991-pgg-encrypt): Decode according to CTE before
encrypting.
2003-12-28 Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change).
2003-12-28 Ivan Boldyrev <boldyrev@uiggm.nsc.ru> (tiny change)
* mml1991.el (mml1991-pgg-sign): Use unibyte when re-encoding.
@ -4490,7 +4490,7 @@
* gnus-start.el (gnus-backup-startup-file): Fixed custom type.
2003-02-24 Ted Zlatanov <tzz@lifelogs.com>
2003-02-24 Teodor Zlatanov <tzz@lifelogs.com>
* spam.el: Disabled spam-get-article-as-filename.

View file

@ -7177,15 +7177,17 @@ groups."
"\\(?:"
;; Match paired parentheses, e.g. in Wikipedia URLs:
;; http://thread.gmane.org/47B4E3B2.3050402@gmail.com
"[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)" "[" chars "]*"
"[" chars punct "]+" "(" "[" chars punct "]+" "[" chars "]*)"
"\\(?:" "[" chars punct "]+" "[" chars "]" "\\)?"
"\\|"
"[" chars punct "]+" "[" chars "]"
"[" chars punct "]+" "[" chars "]"
"\\)"))
(concat ;; XEmacs 21.4 doesn't support POSIX.
"\\([-a-z0-9_=!?#$@~%&*+\\/:;.,]\\|\\w\\)+"
"\\([-a-z0-9_=#$@~%&*+\\/]\\|\\w\\)"))
"\\)")
"Regular expression that matches URLs."
:version "24.4"
:group 'gnus-article-buttons
:type 'regexp)

View file

@ -847,6 +847,13 @@ controls how articles are sorted."
(function :tag "other"))
(boolean :tag "Reverse order"))))
(defcustom gnus-sort-threads-recursively t
"If non-nil, `gnus-thread-sort-functions' are applied recursively.
Setting this to nil allows sorting high-score, recent,
etc. threads to the top of the summary buffer while still
retaining chronological old to new sorting order inside threads."
:group 'gnus-summary-sort
:type 'boolean)
(defcustom gnus-thread-sort-functions '(gnus-thread-sort-by-number)
"*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."
(gnus-message 8 "Sorting threads...")
(prog1
(condition-case nil
(let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000)))
(gnus-sort-threads-recursive
threads (gnus-make-sort-function gnus-thread-sort-functions)))
(let ((max-lisp-eval-depth (max max-lisp-eval-depth 5000))
(sort-func (gnus-make-sort-function gnus-thread-sort-functions)))
(if gnus-sort-threads-recursively
(gnus-sort-threads-recursive threads sort-func)
(sort threads sort-func)))
;; Even after binding max-lisp-eval-depth, the recursive
;; sorter might fail for very long threads. In that case,
;; try using a (less well-tested) non-recursive sorter.

View file

@ -1403,11 +1403,11 @@
(mh-x-image-url-display): Don't display image if the URL looks
malformed.
2003-10-04 Mark D Baushke <mdb@gnu.org>
2003-10-04 Mark D. Baushke <mdb@gnu.org>
* mh-comp.el (mh-letter-menu): Simplify menu heading.
2003-10-03 Mark D Baushke <mdb@gnu.org>
2003-10-03 Mark D. Baushke <mdb@gnu.org>
* mh-mime.el (mh-mml-query-cryptographic-method): Avoid
revisionist history and still provide a good default.
@ -3877,7 +3877,7 @@
runs checkdoc and lm-verify which is useful before releasing the
software. It can and should be expanded to do real unit tests.
2003-04-22 Mark D Baushke <mdb@gnu.org>
2003-04-22 Mark D. Baushke <mdb@gnu.org>
* mh-alias.el: Update Copyright.
* mh-comp.el: Ditto.
@ -6106,7 +6106,7 @@
explicitly stated.
(mh-visit-folder): Really fix it this time.
2003-01-01 Mark D Baushke <mdb@gnu.org>
2003-01-01 Mark D. Baushke <mdb@gnu.org>
* mh-alias.el (mh-alias-from-has-no-alias-p): Needs the
mh-autoload comment or mh-customize may have problems finding the
@ -6854,7 +6854,7 @@
* Makefile: Moved .PHONY rule after all rule for compatibility
with BSD/OS's old pmake.
2002-12-03 Mark D Baushke <mdb@gnu.org>
2002-12-03 Mark D. Baushke <mdb@gnu.org>
* mh-e.el (mh-get-new-mail): Simplify no-new-mail test.
(mh-add-cur-notation): Remove unnecessary function.
@ -6878,7 +6878,7 @@
number of scan lines is fewer than mh-large-folders (closes SF
#646794).
2002-12-02 Mark D Baushke <mdb@gnu.org>
2002-12-02 Mark D. Baushke <mdb@gnu.org>
* mh-e.el (mh-add-cur-notation): New function to mark the
current message with the mh-note-cur character.
@ -8312,7 +8312,7 @@
variable as new-file-flag.
This addresses part of SF #627015.
2002-10-24 Mark D Baushke <mdb@gnu.org>
2002-10-24 Mark D. Baushke <mdb@gnu.org>
* mh-comp.el (mh-forward): Fix mh-mml-compose-insert-p reference
in last commit to be mh-mml-compose-insert-flag.
@ -8581,7 +8581,7 @@
* mh-comp.el (mh-mml-to-mime autoload): Ditto.
2002-10-21 Mark D Baushke <mdb@gnu.org>
2002-10-21 Mark D. Baushke <mdb@gnu.org>
* mh-mime.el (smiley-region): Use load for a non-fatal dependency
on the smiley library.
@ -8735,7 +8735,7 @@
prompted for the number of messages to display, you got an error.
This has been fixed.
2002-10-19 Mark D Baushke <mdb@gnu.org>
2002-10-19 Mark D. Baushke <mdb@gnu.org>
* mh-e.el (mh-last-destination-folder): Destination of last refile
command.
@ -8777,7 +8777,7 @@
macro mh-compat-write-file-hook to use write-file-functions for
Emacs 21.4 and local-write-file-hooks for older versions.
2002-10-18 Mark D Baushke <mdb@gnu.org>
2002-10-18 Mark D. Baushke <mdb@gnu.org>
* mh-utils.el (mh-invisible-headers): Add more anti-spam headers.
@ -9079,7 +9079,7 @@
(mh-remove-xemacs-horizontal-scrollbar): New macro to avoid
compiler-warnings.
2002-10-10 Mark D Baushke <mdb@gnu.org>
2002-10-10 Mark D. Baushke <mdb@gnu.org>
* Makefile (EMACS_OPTIONS): New macro for command-line compile
options.
@ -9088,13 +9088,13 @@
(COMPILE_COMMAND): Combine the compile command with its options.
(.el.elc): Use the new $(COMPILE_COMMAND).
2002-10-10 Mark D Baushke <mdb@gnu.org>
2002-10-10 Mark D. Baushke <mdb@gnu.org>
* mh-speed.el (mh-speed-select-attached-frame): Define a new
compatibility macro for getting to the attached-frame.
(mh-speed-update-current-folder): Use it.
2002-10-10 Mark D Baushke <mdb@gnu.org>
2002-10-10 Mark D. Baushke <mdb@gnu.org>
* mh-speed.el (mh-speed-update-current-folder): Use
'dframe-select-attached-frame if we are in a newer speedbar
@ -9452,7 +9452,7 @@
present in the load-path.
* mh-mime.el (mh-require): Don't use it anymore.
2002-07-15 Mark D Baushke <mdb@gnu.org>
2002-07-15 Mark D. Baushke <mdb@gnu.org>
* mh-utils.el (mh-update-scan-format): Rewrite for compatibility
with XEmacs as replace-match appears not to have identical
@ -9531,7 +9531,7 @@
* mh-mime.el (mm-destroy-parts): Add definition for old emacs.
2002-06-30 Mark D Baushke <mdb@gnu.org>
2002-06-30 Mark D. Baushke <mdb@gnu.org>
* mh-utils.el (mh-update-scan-format): Add documentation string.
(mh-scan-msg-format-regexp): Update the regexp to find %(msg).
@ -9574,7 +9574,7 @@
* mh-index.el (mh-count-windows): This function works around the
lack of the window-list builtin function in emacs20.
2002-06-29 Mark D Baushke <mdb@gnu.org>
2002-06-29 Mark D. Baushke <mdb@gnu.org>
* mh-utils.el (mh-message-number-width): New function to scan
the last message of a folder and return its width.
@ -9625,7 +9625,7 @@
* mh-mime.el (gnus-newsgroup-name): Initialize it to nil, so that
mm-uu-dissect doesn't cause error.
2002-06-27 Mark D Baushke <mdb@gnu.org>
2002-06-27 Mark D. Baushke <mdb@gnu.org>
* mh-utils.el (mh-cmd-note): Make buffer-local. Changes to this
variable should be made via the new mh-set-default-cmd-note

View file

@ -2248,7 +2248,10 @@ The method used must be an out-of-band method."
spec (format-spec-make
?t (tramp-get-connection-property
(tramp-get-connection-process v) "temp-file" ""))
options (format-spec tramp-ssh-controlmaster-options spec)
options (format-spec
(if tramp-use-ssh-controlmaster-options
tramp-ssh-controlmaster-options "")
spec)
spec (format-spec-make
?h host ?u user ?p port ?c options
?k (if keep-date " " ""))
@ -4416,7 +4419,8 @@ connection if a previous connection has died for some reason."
(let* ((target-alist (tramp-compute-multi-hops vec))
;; We will apply `tramp-ssh-controlmaster-options'
;; only for the first hop.
(options tramp-ssh-controlmaster-options)
(options (if tramp-use-ssh-controlmaster-options
tramp-ssh-controlmaster-options ""))
(process-connection-type tramp-process-connection-type)
(process-adaptive-read-buffering nil)
(coding-system-for-read nil)

View file

@ -305,6 +305,14 @@ useful only in combination with `tramp-default-proxies-alist'.")
"Call ssh to detect whether it supports the Control* arguments.
Return a string to be used in `tramp-methods'.")
;;;###tramp-autoload
(defcustom tramp-use-ssh-controlmaster-options
(not (zerop (length tramp-ssh-controlmaster-options)))
"Whether to use `tramp-ssh-controlmaster-options'."
:group 'tramp
:version "24.4"
:type 'boolean)
(defcustom tramp-default-method
;; An external copy method seems to be preferred, because it performs
;; much better for large files, and it hasn't too serious delays

View file

@ -3983,7 +3983,7 @@
(org-export-latex-tables-tend): New options.
(org-export-latex-tables): Use the new options.
2012-09-30 tumashu <tumashu@gmail.com> (tiny change)
2012-09-30 Feng Shu <tumashu@gmail.com> (tiny change)
* org-exp.el (org-export-language-setup): Add simplified chinese
translation.
@ -9437,7 +9437,7 @@
(org-update-checkbox-count-maybe): Add an optional argument passed to
org-update-checkbox-count.
2011-07-28 Ted Zlatanov <tzz@lifelogs.com>
2011-07-28 Teodor Zlatanov <tzz@lifelogs.com>
* org.el (org-fontify-meta-lines-and-blocks): Ignore errors.
@ -18000,7 +18000,7 @@
* org-habit.el (org-habit-build-graph): Help-echo date when
mouse is over stars.
2010-07-19 Jan Böker <jan.boecker@jboecker.de>
2010-07-19 Jan Böcker <jan.boecker@jboecker.de>
* org.el (org-file-apps): Improve docstring to reflect
grouping matches.

View file

@ -1135,9 +1135,13 @@ comment at the start of cc-engine.el for more info."
(not (memq sym '(boundary ignore nil))))
;; Need to investigate closer whether we've crossed
;; between a substatement and its containing statement.
(if (setq saved (if (looking-at c-block-stmt-1-key)
ptok
pptok))
(if (setq saved
(cond ((and (looking-at c-block-stmt-1-2-key)
(eq (char-after ptok) ?\())
pptok)
((looking-at c-block-stmt-1-key)
ptok)
(t pptok)))
(cond ((> start saved) (setq pos saved))
((= start saved) (setq ret 'up)))))
@ -7988,7 +7992,8 @@ comment at the start of cc-engine.el for more info."
(or (looking-at c-block-stmt-1-key)
(and (eq (char-after) ?\()
(zerop (c-backward-token-2 1 t lim))
(looking-at c-block-stmt-2-key)))
(or (looking-at c-block-stmt-2-key)
(looking-at c-block-stmt-1-2-key))))
(point))))
(defun c-after-special-operator-id (&optional lim)

View file

@ -1307,7 +1307,8 @@ casts and declarations are fontified. Used on level 2 and higher."
(goto-char match-pos)
(backward-char)
(c-backward-token-2)
(looking-at c-block-stmt-2-key)))
(or (looking-at c-block-stmt-2-key)
(looking-at c-block-stmt-1-2-key))))
(setq context nil
c-restricted-<>-arglists t))
;; Near BOB.

View file

@ -2187,6 +2187,18 @@ identifiers that follows the type in a normal declaration."
t (c-make-keywords-re t (c-lang-const c-block-stmt-1-kwds)))
(c-lang-defvar c-block-stmt-1-key (c-lang-const c-block-stmt-1-key))
(c-lang-defconst c-block-stmt-1-2-kwds
"Statement keywords optionally followed by a paren sexp.
Keywords here should also be in `c-block-stmt-1-kwds'."
t nil
java '("try"))
(c-lang-defconst c-block-stmt-1-2-key
;; Regexp matching the start of a statement which may be followed by a
;; paren sexp and will then be followed by a substatement.
t (c-make-keywords-re t (c-lang-const c-block-stmt-1-2-kwds)))
(c-lang-defvar c-block-stmt-1-2-key (c-lang-const c-block-stmt-1-2-key))
(c-lang-defconst c-block-stmt-2-kwds
"Statement keywords followed by a paren sexp and then by a substatement."
t '("for" "if" "switch" "while")
@ -2938,7 +2950,8 @@ identifier or one of the keywords on `c-<>-type-kwds' or
`c-<>-arglist-kwds'. If there's an identifier before then the whole
expression is considered to be a type."
t (or (consp (c-lang-const c-<>-type-kwds))
(consp (c-lang-const c-<>-arglist-kwds))))
(consp (c-lang-const c-<>-arglist-kwds)))
java t)
(c-lang-defvar c-recognize-<>-arglists (c-lang-const c-recognize-<>-arglists))
(c-lang-defconst c-enums-contain-decls

View file

@ -3141,14 +3141,17 @@ Also, delete any process that is exited or signaled."
(display-buffer (button-get button 'process-buffer)))
(defun list-processes (&optional query-only buffer)
"Display a list of all processes.
"Display a list of all processes that are Emacs sub-processes.
If optional argument QUERY-ONLY is non-nil, only processes with
the query-on-exit flag set are listed.
Any process listed as exited or signaled is actually eliminated
after the listing is made.
Optional argument BUFFER specifies a buffer to use, instead of
\"*Process List*\".
The return value is always nil."
The return value is always nil.
This function lists only processes that were launched by Emacs. To
see other processes running on the system, use `list-system-processes'."
(interactive)
(or (fboundp 'process-list)
(error "Asynchronous subprocesses are not supported on this system"))
@ -5530,8 +5533,7 @@ Mode' for details."
(visual-line-mode 1))
(define-globalized-minor-mode global-visual-line-mode
visual-line-mode turn-on-visual-line-mode
:lighter " vl")
visual-line-mode turn-on-visual-line-mode)
(defun transpose-chars (arg)

View file

@ -4191,22 +4191,6 @@ I is the index of the frame after FRAME2. It should return nil
if those frames don't seem special and otherwise, it should return
the number of frames to skip (minus 1).")
(defmacro internal--called-interactively-p--get-frame (n)
;; `sym' will hold a global variable, which will be used kind of like C's
;; "static" variables.
(let ((sym (make-symbol "base-index")))
`(progn
(defvar ,sym)
(unless (boundp ',sym)
(let ((i 1))
(while (not (eq (indirect-function (nth 1 (backtrace-frame i)) t)
(indirect-function 'called-interactively-p)))
(setq i (1+ i)))
(setq ,sym i)))
;; (unless (eq (nth 1 (backtrace-frame ,sym)) 'called-interactively-p)
;; (error "called-interactively-p: %s is out-of-sync!" ,sym))
(backtrace-frame (+ ,sym ,n)))))
(defun called-interactively-p (&optional kind)
"Return t if the containing function was called by `call-interactively'.
If KIND is `interactive', then only return t if the call was made
@ -4241,7 +4225,7 @@ command is called from a keyboard macro?"
(get-next-frame
(lambda ()
(setq frame nextframe)
(setq nextframe (internal--called-interactively-p--get-frame i))
(setq nextframe (backtrace-frame i 'called-interactively-p))
;; (message "Frame %d = %S" i nextframe)
(setq i (1+ i)))))
(funcall get-next-frame) ;; Get the first frame.

View file

@ -237,9 +237,11 @@ See `run-hooks'."
;; VC commands
(define-key map "v" 'vc-next-action) ;; C-x v v
(define-key map "=" 'vc-diff) ;; C-x v =
(define-key map "D" 'vc-root-diff) ;; C-x v D
(define-key map "i" 'vc-register) ;; C-x v i
(define-key map "+" 'vc-update) ;; C-x v +
(define-key map "l" 'vc-print-log) ;; C-x v l
(define-key map "L" 'vc-print-root-log) ;; C-x v L
;; More confusing than helpful, probably
;;(define-key map "R" 'vc-revert) ;; u is taken by vc-dir-unmark.
;;(define-key map "A" 'vc-annotate) ;; g is taken by revert-buffer

View file

@ -5470,6 +5470,9 @@ argument, ACTION is t."
(let ((buffer (if (bufferp buffer-or-name)
buffer-or-name
(get-buffer buffer-or-name)))
;; Make sure that when we split windows the old window keeps
;; point, bug#14829.
(split-window-keep-point t)
;; Handle the old form of the first argument.
(inhibit-same-window (and action (not (listp action)))))
(unless (listp action) (setq action nil))

View file

@ -1,8 +1,7 @@
#!/bin/sh
### make-dist: create an Emacs distribution tar file from current srcdir
## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation,
## Inc.
## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation, Inc.
## This file is part of GNU Emacs.
@ -51,6 +50,7 @@ clean_up=no
make_tar=no
default_gzip=gzip
newer=""
with_tests=no
while [ $# -gt 0 ]; do
case "$1" in
@ -98,6 +98,12 @@ while [ $# -gt 0 ]; do
check=no
;;
## Include the test/ directory.
## This option is mainly for the hydra build server.
"--tests")
with_tests=yes
;;
"--help")
echo "Usage: ${progname} [options]"
echo ""
@ -110,6 +116,7 @@ while [ $# -gt 0 ]; do
echo " --no-update don't recompile or do analogous things"
echo " --snapshot same as --clean-up --no-update --tar --no-check"
echo " --tar make a tar file"
echo " --tests include the test/ directory"
echo ""
exit 0
;;
@ -289,7 +296,7 @@ for subdir in site-lisp \
build-aux build-aux/snippet \
src src/bitmaps lib lib-src oldXMenu lwlib \
nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
`find etc lisp admin -type d` \
`find etc lisp admin test -type d` \
doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
info m4 msdos \
nextstep nextstep/templates \
@ -300,6 +307,13 @@ for subdir in site-lisp \
nextstep/GNUstep/Emacs.base \
nextstep/GNUstep/Emacs.base/Resources
do
if [ "$with_tests" != "yes" ]; then
case $subdir in
test*) continue ;;
esac
fi
## site-lisp for in-place installs (?).
[ "$subdir" = "site-lisp" ] || [ -d "$subdir" ] || \
echo "WARNING: $subdir not found, making anyway"
@ -447,6 +461,17 @@ for f in `find admin -type f`; do
ln $f $tempdir/$f
done
if [ "$with_tests" = "yes" ]; then
echo "Making links to \`test' and its subdirectories"
for f in `find test -type f`; do
case $f in
test/automated/flymake/warnpred/a.out) continue ;;
test/automated/Makefile) continue ;;
esac
ln $f $tempdir/$f
done
fi
echo "Making links to \`etc' and its subdirectories"
for f in `find etc -type f`; do
case $f in

View file

@ -1,3 +1,58 @@
2013-07-29 Dmitry Antipov <dmantipov@yandex.ru>
* fns.c (toplevel): Remove comment before Fsafe_length because
it checks for QUIT.
2013-07-28 Paul Eggert <eggert@cs.ucla.edu>
* frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970).
2013-07-28 Eli Zaretskii <eliz@gnu.org>
* w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Make sure the
frame which got the message is still alive, before dereferencing
its pointer. (Bug#14970)
* frame.c (delete_frame): Test "this" frame's minibuffer window to
be a live window, before using it as such. (Bug#14970)
2013-07-27 Eli Zaretskii <eliz@gnu.org>
* w32term.c (w32_read_socket) <WM_KILLFOCUS>: Call
w32_detect_focus_change instead of doing part of its job by hand.
This fixes the problem whereby FOCUS_OUT events were not sent to
the event queue.
2013-07-26 Eli Zaretskii <eliz@gnu.org>
* process.c (Fprocess_list): Doc fix.
* w32term.c (w32_read_socket) <WM_EMACS_PAINT>: Warn about frame
being re-exposed only if it didn't ask to become visible.
<WM_SIZE>: Under SIZE_RESTORED, only set the frame visible if it
was previously iconified. (Bug#14841)
(x_iconify_frame): Mark the frame iconified.
2013-07-26 Paul Eggert <eggert@cs.ucla.edu>
Fix minor problems found by static checking.
* eval.c (get_backtrace_frame, backtrace_eval_unrewind): Now static.
(backtrace_eval_unrewind): ';' -> '{}' to pacify GCC.
2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
* eval.c (set_specpdl_old_value): New function.
(unbind_to): Minor simplification.
(get_backtrace_frame): New function.
(Fbacktrace_frame): Use it. Add `base' argument.
(backtrace_eval_unrewind, Fbacktrace_eval): New functions.
(syms_of_eval): Export backtrace-eval.
* xterm.c (x_focus_changed): Simplify.
2013-07-25 Paul Eggert <eggert@cs.ucla.edu>
* fileio.c (Finsert_file_contents): Avoid double-close (Bug#14936).
2013-07-24 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (redisplay_window): Instead of moving point out of

View file

@ -69,7 +69,7 @@
* dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW.
2013-03-10 handa <handa@gnu.org>
2013-03-10 Kenichi Handa <handa@gnu.org>
* lisp.h (adjust_after_replace): Extern it.
@ -11043,7 +11043,7 @@
* nsterm.m (x_free_frame_resources): Move xfree so freed memory isn't
referenced (Bug#11583).
2012-06-16 Aurelien Aptel <aurelien.aptel@gmail.com>
2012-06-16 Aurélien Aptel <aurelien.aptel@gmail.com>
Implement wave-style variant of underlining.
* dispextern.h (face_underline_type): New enum.
@ -21400,7 +21400,7 @@
* process.c (Fformat_network_address): Doc fix.
2011-04-08 T.V. Raman <tv.raman.tv@gmail.com> (tiny change)
2011-04-08 T. V. Raman <tv.raman.tv@gmail.com> (tiny change)
* xml.c (parse_region): Avoid creating spurious whitespace nodes.

View file

@ -10644,7 +10644,7 @@
(syms_of_xfns) [GLYPH_DEBUG]: Don't defsubr removed functions.
(syms_of_xfns): Initialize Qcenter.
* eval.c (Fsignal): If lisp_eval_depth or spepdl_size are near
* eval.c (Fsignal): If lisp_eval_depth or specpdl_size are near
to the limits, increase the limits.
2000-05-01 Kenichi Handa <handa@etl.go.jp>

View file

@ -138,6 +138,13 @@ specpdl_old_value (union specbinding *pdl)
return pdl->let.old_value;
}
static void
set_specpdl_old_value (union specbinding *pdl, Lisp_Object val)
{
eassert (pdl->kind >= SPECPDL_LET);
pdl->let.old_value = val;
}
static Lisp_Object
specpdl_where (union specbinding *pdl)
{
@ -3301,6 +3308,8 @@ unbind_to (ptrdiff_t count, Lisp_Object value)
case SPECPDL_UNWIND_VOID:
specpdl_ptr->unwind_void.func ();
break;
case SPECPDL_BACKTRACE:
break;
case SPECPDL_LET:
/* If variable has a trivial value (no forwarding), we can
just set it. No need to check for constant symbols here,
@ -3315,27 +3324,20 @@ unbind_to (ptrdiff_t count, Lisp_Object value)
Fset_default (specpdl_symbol (specpdl_ptr),
specpdl_old_value (specpdl_ptr));
break;
case SPECPDL_BACKTRACE:
case SPECPDL_LET_DEFAULT:
Fset_default (specpdl_symbol (specpdl_ptr),
specpdl_old_value (specpdl_ptr));
break;
case SPECPDL_LET_LOCAL:
case SPECPDL_LET_DEFAULT:
{ /* If the symbol is a list, it is really (SYMBOL WHERE
. CURRENT-BUFFER) where WHERE is either nil, a buffer, or a
frame. If WHERE is a buffer or frame, this indicates we
bound a variable that had a buffer-local or frame-local
binding. WHERE nil means that the variable had the default
value when it was bound. CURRENT-BUFFER is the buffer that
was current when the variable was bound. */
{
Lisp_Object symbol = specpdl_symbol (specpdl_ptr);
Lisp_Object where = specpdl_where (specpdl_ptr);
Lisp_Object old_value = specpdl_old_value (specpdl_ptr);
eassert (BUFFERP (where));
if (specpdl_ptr->kind == SPECPDL_LET_DEFAULT)
Fset_default (symbol, old_value);
/* If this was a local binding, reset the value in the appropriate
buffer, but only if that buffer's binding still exists. */
else if (!NILP (Flocal_variable_p (symbol, where)))
if (!NILP (Flocal_variable_p (symbol, where)))
set_internal (symbol, old_value, where, 1);
}
break;
@ -3422,7 +3424,30 @@ Output stream used is value of `standard-output'. */)
return Qnil;
}
DEFUN ("backtrace-frame", Fbacktrace_frame, Sbacktrace_frame, 1, 1, NULL,
static union specbinding *
get_backtrace_frame (Lisp_Object nframes, Lisp_Object base)
{
union specbinding *pdl = backtrace_top ();
register EMACS_INT i;
CHECK_NATNUM (nframes);
if (!NILP (base))
{ /* Skip up to `base'. */
base = Findirect_function (base, Qt);
while (backtrace_p (pdl)
&& !EQ (base, Findirect_function (backtrace_function (pdl), Qt)))
pdl = backtrace_next (pdl);
}
/* Find the frame requested. */
for (i = XFASTINT (nframes); i > 0 && backtrace_p (pdl); i--)
pdl = backtrace_next (pdl);
return pdl;
}
DEFUN ("backtrace-frame", Fbacktrace_frame, Sbacktrace_frame, 1, 2, NULL,
doc: /* Return the function and arguments NFRAMES up from current execution point.
If that frame has not evaluated the arguments yet (or is a special form),
the value is (nil FUNCTION ARG-FORMS...).
@ -3431,17 +3456,12 @@ the value is (t FUNCTION ARG-VALUES...).
A &rest arg is represented as the tail of the list ARG-VALUES.
FUNCTION is whatever was supplied as car of evaluated list,
or a lambda expression for macro calls.
If NFRAMES is more than the number of frames, the value is nil. */)
(Lisp_Object nframes)
If NFRAMES is more than the number of frames, the value is nil.
If BASE is non-nil, it should be a function and NFRAMES counts from its
nearest activation frame. */)
(Lisp_Object nframes, Lisp_Object base)
{
union specbinding *pdl = backtrace_top ();
register EMACS_INT i;
CHECK_NATNUM (nframes);
/* Find the frame requested. */
for (i = 0; backtrace_p (pdl) && i < XFASTINT (nframes); i++)
pdl = backtrace_next (pdl);
union specbinding *pdl = get_backtrace_frame (nframes, base);
if (!backtrace_p (pdl))
return Qnil;
@ -3456,6 +3476,109 @@ If NFRAMES is more than the number of frames, the value is nil. */)
}
}
/* For backtrace-eval, we want to temporarily unwind the last few elements of
the specpdl stack, and then rewind them. We store the pre-unwind values
directly in the pre-existing specpdl elements (i.e. we swap the current
value and the old value stored in the specpdl), kind of like the inplace
pointer-reversal trick. As it turns out, the rewind does the same as the
unwind, except it starts from the other end of the specpdl stack, so we use
the same function for both unwind and rewind. */
static void
backtrace_eval_unrewind (int distance)
{
union specbinding *tmp = specpdl_ptr;
int step = -1;
if (distance < 0)
{ /* It's a rewind rather than unwind. */
tmp += distance - 1;
step = 1;
distance = -distance;
}
for (; distance > 0; distance--)
{
tmp += step;
/* */
switch (tmp->kind)
{
/* FIXME: Ideally we'd like to "temporarily unwind" (some of) those
unwind_protect, but the problem is that we don't know how to
rewind them afterwards. */
case SPECPDL_UNWIND:
case SPECPDL_UNWIND_PTR:
case SPECPDL_UNWIND_INT:
case SPECPDL_UNWIND_VOID:
case SPECPDL_BACKTRACE:
break;
case SPECPDL_LET:
/* If variable has a trivial value (no forwarding), we can
just set it. No need to check for constant symbols here,
since that was already done by specbind. */
if (XSYMBOL (specpdl_symbol (tmp))->redirect
== SYMBOL_PLAINVAL)
{
struct Lisp_Symbol *sym = XSYMBOL (specpdl_symbol (tmp));
Lisp_Object old_value = specpdl_old_value (tmp);
set_specpdl_old_value (tmp, SYMBOL_VAL (sym));
SET_SYMBOL_VAL (sym, old_value);
break;
}
else
{
/* FALLTHROUGH!
NOTE: we only ever come here if make_local_foo was used for
the first time on this var within this let. */
}
case SPECPDL_LET_DEFAULT:
{
Lisp_Object sym = specpdl_symbol (tmp);
Lisp_Object old_value = specpdl_old_value (tmp);
set_specpdl_old_value (tmp, Fdefault_value (sym));
Fset_default (sym, old_value);
}
break;
case SPECPDL_LET_LOCAL:
{
Lisp_Object symbol = specpdl_symbol (tmp);
Lisp_Object where = specpdl_where (tmp);
Lisp_Object old_value = specpdl_old_value (tmp);
eassert (BUFFERP (where));
/* If this was a local binding, reset the value in the appropriate
buffer, but only if that buffer's binding still exists. */
if (!NILP (Flocal_variable_p (symbol, where)))
{
set_specpdl_old_value
(tmp, Fbuffer_local_value (symbol, where));
set_internal (symbol, old_value, where, 1);
}
}
break;
}
}
}
DEFUN ("backtrace-eval", Fbacktrace_eval, Sbacktrace_eval, 2, 3, NULL,
doc: /* Evaluate EXP in the context of some activation frame.
NFRAMES and BASE specify the activation frame to use, as in `backtrace-frame'. */)
(Lisp_Object exp, Lisp_Object nframes, Lisp_Object base)
{
union specbinding *pdl = get_backtrace_frame (nframes, base);
ptrdiff_t count = SPECPDL_INDEX ();
ptrdiff_t distance = specpdl_ptr - pdl;
eassert (distance >= 0);
if (!backtrace_p (pdl))
error ("Activation frame not found!");
backtrace_eval_unrewind (distance);
record_unwind_protect_int (backtrace_eval_unrewind, -distance);
/* Use eval_sub rather than Feval since the main motivation behind
backtrace-eval is to be able to get/set the value of lexical variables
from the debugger. */
return unbind_to (count, eval_sub (exp));
}
void
mark_specpdl (void)
@ -3701,6 +3824,7 @@ alist of active lexical bindings. */);
defsubr (&Sbacktrace_debug);
defsubr (&Sbacktrace);
defsubr (&Sbacktrace_frame);
defsubr (&Sbacktrace_eval);
defsubr (&Sspecial_variable_p);
defsubr (&Sfunctionp);
}

View file

@ -3860,7 +3860,8 @@ by calling `format-decode', which see. */)
if (same_at_start - BEGV_BYTE == end_offset - beg_offset)
{
emacs_close (fd);
specpdl_ptr--;
clear_unwind_protect (fd_index);
/* Truncate the buffer to the size of the file. */
del_range_1 (same_at_start, same_at_end, 0, 0);
goto handled;

View file

@ -146,8 +146,6 @@ To get the number of bytes, use `string-bytes'. */)
return val;
}
/* This does not check for quits. That is safe since it must terminate. */
DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0,
doc: /* Return the length of a list, but avoid error or infinite loop.
This function never gets an error. If LIST is not really a list,

View file

@ -1157,10 +1157,14 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
FOR_EACH_FRAME (frames, this)
{
if (! EQ (this, frame)
&& EQ (frame,
WINDOW_FRAME (XWINDOW
(FRAME_MINIBUF_WINDOW (XFRAME (this))))))
Lisp_Object fminiw;
if (EQ (this, frame))
continue;
fminiw = FRAME_MINIBUF_WINDOW (XFRAME (this));
if (WINDOWP (fminiw) && EQ (frame, WINDOW_FRAME (XWINDOW (fminiw))))
{
/* If we MUST delete this frame, delete the other first.
But do this only if FORCE equals `noelisp'. */

View file

@ -4473,9 +4473,9 @@ - (void)sendEvent: (NSEvent *)theEvent
#ifdef NS_IMPL_COCOA
/* If no dialog and none of our frames have focus and it is a move, skip it.
It is a mouse move in an auxillary menu, i.e. on the top right on OSX,
It is a mouse move in an auxiliary menu, i.e. on the top right on OSX,
such as Wifi, sound, date or similar.
This prevents "spooky" highlightning in the frame under the menu. */
This prevents "spooky" highlighting in the frame under the menu. */
if (type == NSMouseMoved && [NSApp modalWindow] == nil)
{
struct ns_display_info *di;

View file

@ -1330,7 +1330,7 @@ Returns nil if format of ADDRESS is invalid. */)
}
DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0,
doc: /* Return a list of all processes. */)
doc: /* Return a list of all processes that are Emacs sub-processes. */)
(void)
{
return Fmapcar (Qcdr, Vprocess_alist);

View file

@ -3213,6 +3213,8 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
described by W was deleted, as indicated by its buffer
field being reset to nil. */
f = x_window_to_frame (dpyinfo, hwnd);
if (!(f && FRAME_LIVE_P (f)))
break;
w = XWINDOW (FRAME_SELECTED_WINDOW (f));
/* Punt if someone changed the frame's selected window
behind our back. */

View file

@ -4360,8 +4360,9 @@ w32_read_socket (struct terminal *terminal,
SET_FRAME_VISIBLE (f, 1);
SET_FRAME_ICONIFIED (f, 0);
SET_FRAME_GARBAGED (f);
DebPrint (("frame %p (%s) reexposed by WM_PAINT\n", f,
SDATA (f->name)));
if (!f->output_data.w32->asked_for_visible)
DebPrint (("frame %p (%s) reexposed by WM_PAINT\n", f,
SDATA (f->name)));
/* WM_PAINT serves as MapNotify as well, so report
visibility changes properly. */
@ -4819,7 +4820,8 @@ w32_read_socket (struct terminal *terminal,
{
bool iconified = FRAME_ICONIFIED_P (f);
SET_FRAME_VISIBLE (f, 1);
if (iconified)
SET_FRAME_VISIBLE (f, 1);
SET_FRAME_ICONIFIED (f, 0);
/* wait_reading_process_output will notice this
@ -4921,16 +4923,11 @@ w32_read_socket (struct terminal *terminal,
break;
case WM_KILLFOCUS:
w32_detect_focus_change (dpyinfo, &msg, &inev);
f = x_top_window_to_frame (dpyinfo, msg.msg.hwnd);
if (f)
{
if (f == dpyinfo->w32_focus_event_frame)
dpyinfo->w32_focus_event_frame = 0;
if (f == dpyinfo->w32_focus_frame)
x_new_focus_frame (dpyinfo, 0);
if (f == hlinfo->mouse_face_mouse_frame)
{
/* If we move outside the frame, then we're
@ -6129,6 +6126,9 @@ x_iconify_frame (struct frame *f)
/* Simulate the user minimizing the frame. */
SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0);
SET_FRAME_VISIBLE (f, 0);
SET_FRAME_ICONIFIED (f, 1);
unblock_input ();
}

View file

@ -3435,17 +3435,10 @@ x_focus_changed (int type, int state, struct x_display_info *dpyinfo, struct fra
/* Don't stop displaying the initial startup message
for a switch-frame event we don't need. */
/* When run as a daemon, Vterminal_frame is always NIL. */
if ((NILP (Vterminal_frame) || EQ (Fdaemonp(), Qt))
&& CONSP (Vframe_list)
&& !NILP (XCDR (Vframe_list)))
{
bufp->arg = Qt;
}
else
{
bufp->arg = Qnil;
}
bufp->arg = (((NILP (Vterminal_frame) || EQ (Fdaemonp (), Qt))
&& CONSP (Vframe_list)
&& !NILP (XCDR (Vframe_list)))
? Qt : Qnil);
bufp->kind = FOCUS_IN_EVENT;
XSETFRAME (bufp->frame_or_window, frame);
}