-2014-05-22 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix port to 32-bit AIX (Bug#17540).
+ * configure.ac (opsys): On Power Architecture, treat release 7 of
+ AIX like releases 5 and 6.
+
+2014-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove dependencies on getdelim and getline.
+ * configure.ac (getdelim, getline): Remove.
+
2014-05-18 Glenn Morris <rgm@gnu.org>
- * configure.ac (INSTALL_INFO):
- Revert to just checking for "install-info".
+ * configure.ac: Do not bother testing for png in non-graphical builds.
-2014-05-17 Glenn Morris <rgm@gnu.org>
+2014-05-18 Paul Eggert <eggert@cs.ucla.edu>
- * configure.ac (INSTALL_INFO): Try the identical-but-quieter-on-Debian
- "ginstall-info" before "install-info".
+ Port ctags+etags build to Sun C 5.12.
+ * .bzrignore: Remove lib-src/ctags.c.
-2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
+ Port recent libpng changes to hosts with missing png.h.
+ * configure.ac (HAVE_PNG): Port to platforms where libpng-config
+ succeeds but png.h is absent, by testing libpng-config's output
+ rather than trusting it. I ran into this problem when building
+ Emacs trunk on a Solaris 10 host.
- Revert recent libpng changes (Bug#17339).
- They fix only bugs that aren't being reported, so it may be better
- to do them on the trunk.
- * configure.ac (PNG_CFLAGS): Remove. All uses removed.
- (LIBPNG): Don't be consistent about -lpng16 versus -lpng.
- Ignore libpng-config's exit status. Always append -lz -lm.
+2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
- * configure.ac (LIBPNG): Add -lz -lm on platforms where they're needed
- but libpng-config --libs omits them. Problem reported by Glenn
- Morris.
+ Assume C99 or later (Bug#17487).
+ * lib/stdarg.in.h, lib/stdbool.in.h, m4/stdarg.m4, m4/stdbool.m4:
+ Remove.
+ * configure.ac (_AC_PROG_CC_C89): Define a dummy, to keep 'configure'
+ smaller.
+ (gl_PROG_CC_C99): Use this to get C99 or later.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
-2014-05-03 Paul Eggert <eggert@cs.ucla.edu>
+2014-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't require pkg-config when building from repository.
+ * INSTALL: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'.
+ * INSTALL.REPO: pkg-config is no longer required to build from
+ the repository.
+ * autogen.sh: Don't check for pkg-config.
+ (progs): Remove pkg-config.
+ (pkg_config_min, AUTORECONF_ENV, env_space, ACLOCAL_PATH):
+ Remove. All uses removed.
+ * m4/pkg.m4: New file, built by admin/merge-pkg-config.
+ * configure.ac: Remove unnecessary m4_pattern_forbid of ^PKG_ and
+ an AC_ARG_VAR of PKG_CONFIG_PATH. pkg.m4 does that for us.
+ (EMACS_CHECK_MODULES): Remove workaround for old pkg-config bug,
+ as we use pkg.m4 from a newer pkg-config.
+
+2014-05-15 Jan Djärv <jan.h.d@swipnet.se>
+
+ * configure.ac (LIBPNG): Do not test for libpng if NS_IMPL_COCOA.
+
+2014-05-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * configure.ac (HAVE_XFIXES): Define if available.
+ (XFIXES_CFLAGS, XFIXES_LIBS): New AC_SUBSTs.
+ (--enable-link-time-optimization): Add clang support.
+ * INSTALL: Mention it.
+
+2014-05-12 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * configure.ac (EMACS_CHECK_MODULES): Fix typo in previous change.
+
+2014-05-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around bug in pkg-config before 0.26 (Bug#17438).
+ * configure.ac (EMACS_CHECK_MODULES): Check for failed exit status
+ of pkg-config, on older pkg-config versions that don't do it
+ properly.
+
+2014-05-07 Glenn Morris <rgm@gnu.org>
+
+ * autogen.sh: Check for failing aclocal.
+
+2014-05-05 Glenn Morris <rgm@gnu.org>
+
+ * autogen.sh: Check any pre-existing ACLOCAL_PATH.
+
+2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Consult libpng-config more consistently (Bug#17339).
+ This is mainly for simplicity, but it should also avoid
+ some future problems like the ones we recently had with NetBSD.
+ * configure.ac (LIBPNG): Configure after LIBZ. Use libpng-config
+ for cflags, too. Append -lz if we're not already doing that with
+ LIBZ. Do not bother appending -lm, since we always append that.
+ Coalesce some duplicate code.
+
+ * autogen.sh: Use ‘"’ to quote a message that often contains ‘'’.
Require ImageMagick >= 6.3.5, due to PixelSetMagickColor (Bug#17339).
* configure.ac (IMAGEMAGICK_MODULE): Bump prereq from 6.2.8 to 6.3.5.
A more-complicated fix would be to remove uses of PixelSetMagickColor,
introduced in ImageMagick 6.3.5 (Sept. 2007).
-2014-05-02 Paul Eggert <eggert@cs.ucla.edu>
-
- Consult libpng-config more consistently (Bug#17339).
- * configure.ac (edit_cflags): Move this up and to the top level,
- so that PNG_CFLAGS can use it too.
- (PNG_CFLAGS): New var.
- (png_longjmp): Use PNG_CFLAGS when checking.
- (LIBPNG): Be consistent about -lpng16 etc; e.g., don't use -lpng16
- in some places and -lpng in others. Test libpng-config's exit
- status. If it succeeds, use its output rather than appending -lz -lm.
-
-2014-05-01 Glenn Morris <rgm@gnu.org>
+2014-05-04 Glenn Morris <rgm@gnu.org>
* configure.ac (LIBPNG): Consult libpng-config for the precise
form of "-lpng" to use. (Bug#17339)
-2014-04-29 Glenn Morris <rgm@gnu.org>
+2014-05-03 Glenn Morris <rgm@gnu.org>
+
+ * autogen.sh: If all else fails, try using pkg-config to find pkg.m4.
+
+2014-05-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ Get --enable-gcc-warnings to work after touching configure.ac.
+ Preserve ACLOCAL_PATH in later builds, so that by default it has
+ the same value as it did in the first build after initial checkout.
+ * Makefile.in (ACLOCAL_PATH): New macro.
+ ($(srcdir)/aclocal.m4): Use it.
+ * configure.ac (ACLOCAL_PATH): AC_SUBST it.
+ * autogen.sh (env_space): New var.
+ Tell user what variables, if any, to pass to 'configure'.
+
+ Get --enable-gcc-warnings working again.
+ The recent changes to configure.ac removed the transliteration of
+ -I to -isystem in CFLAGS, which is needed for --enable-gcc-warnings.
+ Bring this back while keeping the spirit of the recent changes.
+ * configure.ac (edit_cflags): Restore this shell var, and put it
+ at the top level, where it'll be useful when emacs-24 is next merged.
+ (EMACS_CHECK_MODULES): New macro. All uses of PKG_CHECK_MODULES
+ changed to use it.
+
+ Make it easier on maintainers who use their own Automake.
+ * autogen.sh (ACLOCAL_PATH, AUTORECONF_ENV): New vars.
+ Set them to avoid problems when maintainers prepend their own
+ Automake installations to their PATH. Report an error if pkg.m4
+ can't be found.
+
+2014-05-02 Glenn Morris <rgm@gnu.org>
+
+ * configure.ac (PKG_CONFIG_PATH): Declare with AC_ARG_VAR.
+
+ * configure.ac (--with-pkg-config-prog): Remove.
+ Use the PKG_CONFIG environment variable instead if you need it.
+
+ * configure.ac: Use pkg-config's pkg.m4, rather than reinventing it.
+ Add explicit AC_SUBST's where needed.
+ * autogen.sh (progs): Add pkg-config.
+ (pkg_config_min): New variable.
+
+ * configure.ac (AC_CONFIG_MACRO_DIR): Use it.
+
+ * autogen.sh (get_version): Handle no leading whitespace.
+ (check_version, main): Handle program names with hyphens.
+
+2014-04-30 Glenn Morris <rgm@gnu.org>
* configure.ac: Treat MirBSD as OpenBSD. (Bug#17339)
+2014-04-21 Daniel Colascione <dancol@dancol.org>
+
+ * .bzrignore: Add a.out to bzr ignore list (a test generates this
+ file).
+
+2014-04-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Link to glib-using libraries when checking for glib (Bug#17289).
+ * configure.ac (XGSELOBJ): Include GTK_LIBS, RSVG_LIBS, etc.
+ when testing whether Glib is linked in. Similarly for CFLAGS.
+
+2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * GNUmakefile: Speed up 'make bootstrap' in fresh checkout.
+ (ORDINARY_GOALS): New macro, which excludes 'bootstrap'.
+ (bootstrap, .PHONY): New rules.
+ * INSTALL.REPO: Document current procedure better.
+ Move copyright notice to just before license notice.
+
+ * Makefile.in (FRC, force-info): Remove.
+ All uses removed. This hack is no longer needed here
+ now that we can assume GNU Make's .PHONY feature works.
+ (bootstrap): No need to make 'info', since 'all' now implies 'info'.
+
2014-04-16 Eli Zaretskii <eliz@gnu.org>
* config.bat: Update for Emacs 24.4.
-2014-04-13 Paul Eggert <eggert@cs.ucla.edu>
+2014-04-16 Paul Eggert <eggert@cs.ucla.edu>
Port to IRIX 6.5 (Bug#9684).
This port requires IRIX cc, as I did not have time to get
in an optional library that also contains getdelim, and causes
a later 'configure' to incorrectly think getdelim is supported.
-2014-04-13 Eli Zaretskii <eliz@gnu.org>
+2014-04-16 Eli Zaretskii <eliz@gnu.org>
* configure.ac (LN_S_FILEONLY, LN_S): Use "/bin/ln" on MinGW, to
ensure the MSYS ln.exe is invoked.
+2014-04-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove DATA_SEG_BITS.
+ * configure.ac (DATA_SEG_BITS): Remove. All uses removed.
+
+2014-04-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * autogen.sh: Use autoreconf's -f option (Bug#17258).
+
+ Clean up configure-time library handling a bit.
+ This patch was inspired by emacs-24 bzr 116961, which fixed
+ a bug due to sloppy library handling in 'configure'.
+ * configure.ac (LIB_MATH, LIB_PTHREAD, LIBXMU):
+ Use AC_SEARCH_LIBS instead of AC_CHECK_LIB as per Autoconf manual.
+ (LIB_MATH, LIB_PTHREAD, HAVE_X11, IMAGEMAGICK_LIBS, GTK_LIBS)
+ (DBUS_LIBS, LIBXMU, XFT_LIBS, LIBXSM, LIBXML2_LIBS, LIBS_MAIL)
+ (with_kerberos):
+ Don't let the library choice infect $LIBS.
+ (dnet_ntoa, cma_open): Remove obsolete tests.
+ (emacs_pthread_function): Probe for pthread_kill, not pthread_self,
+ as that's a bit more selective on GNU/Linux.
+ (LIBXEXT): Remove.
+ (touchlock): Test for existence when $LIBS_MAIL is in use.
+ (AC_CHECK_FUNCS): Use only $LIB_MATH in addition to $LIBS
+ when testing for typical functions like accept4, lrand48.
+ (random, rint): Remove obsolete HP-UX 9 A.09.05 test.
+
2014-04-11 Glenn Morris <rgm@gnu.org>
* make-dist: Do not distribute generated admin/grammars/Makefile.
Do distribute lib-src/update-game-score.exe.manifest.
-2014-04-09 Ken Brown <kbrown@cornell.edu>
+2014-04-11 Ken Brown <kbrown@cornell.edu>
* configure.ac (EMACS_MANIFEST): Revert last change (but leave
UPDATE_MANIFEST empty).
-2014-04-03 Ken Brown <kbrown@cornell.edu>
+2014-04-07 Ken Brown <kbrown@cornell.edu>
* configure.ac (EMACS_MANIFEST, UPDATE_MANIFEST): Leave these
variables empty on Cygwin. (Bug#17176)
-2014-03-31 Glenn Morris <rgm@gnu.org>
+2014-04-03 Glenn Morris <rgm@gnu.org>
+
+ * make-dist: Further update AC_INIT regexp.
+
+2014-04-02 Glenn Morris <rgm@gnu.org>
* configure.ac: Make the final "Does Emacs use Gsettings" message
consistent with src/config.h.
2014-03-31 Jan Djärv <jan.h.d@swipnet.se>
* configure.ac: Fix errors from previous checkin (GSettings check).
- Backport from trunk.
-2014-03-30 Daniel Colascione <dancol@dancol.org>
+2014-03-29 Jan Djärv <jan.h.d@swipnet.se>
- * configure.ac: Include GFILENOTIFY objects in glib check. (Bug#17069)
+ * configure.ac: Add check that GSettings is in libgio (Bug#17118).
-2014-03-30 Jan Djärv <jan.h.d@swipnet.se>
+2014-03-28 Glenn Morris <rgm@gnu.org>
- * configure.ac: Add check that GSettings is in libgio (Bug#17118).
- Backport from trunk.
+ * configure.ac (AC_INIT): Add "GNU" in package, add bug address.
+ (PACKAGE_BUGREPORT): Use it.
+ (make-dist): Update AC_INIT regexp.
+
+ * configure.ac (ACL_SUMMARY): Rename from acl_summary, for consistency.
+ (EMACS_CONFIG_FEATURES): New define.
+
+2014-03-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac: Suggest './configure MAKE=gmake' in diagnostic.
+ This tends to work better than 'MAKE=gmake ./configure' if later
+ builds run config.status etc.
+
+2014-03-27 Glenn Morris <rgm@gnu.org>
+
+ * configure.ac: Require GNU make.
+ (HAVE_GNU_MAKE): Remove.
2014-03-26 Paul Eggert <eggert@cs.ucla.edu>
2014-03-26 strftime: wrap macros in "do {...} while(0)"
* lib/strftime.c: Update from gnulib.
+2014-03-26 Glenn Morris <rgm@gnu.org>
+
+ * configure.ac (CLASH_DETECTION): Remove option. Every platform
+ supports it, and the runtime option `create-lockfiles' replaces it.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
+ * configure.ac: (Bug#17069) Include GFILENOTIFY objects in glib check.
+
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * make-dist: Do not distribute lib-src/testfile.
+
+2014-03-21 Eli Zaretskii <eliz@gnu.org>
+
+ * configure.ac: Bump version to 24.4.50.
+
+2014-03-21 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (all): Depend on `info'. (Bug#16626)
+
2014-03-07 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, incorporating:
- 2014-05-25 Jan Djärv <jan.h.d@swipnet.se>
-2014-05-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
++2014-05-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
- * mac/uvs.el: New file from Mac port. src/macuvs.h is generated
- by it.
- * mac/uvs.el: New file. Generates ../src/macuvs.h.
++ * mac/uvs.el: New file from Mac port. Generates src/macuvs.h.
-2014-05-11 Glenn Morris <rgm@gnu.org>
+2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
- * find-gc.el: Move here from ../lisp/emacs-lisp.
+ Assume C99 or later (Bug#17487).
+ * merge-gnulib (GNULIB_MODULES): Remove stdarg, stdbool.
+ (GNULIB_TOOL_FLAGS): Avoid stdarg, stdbool.
+
+2014-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't require pkg-config when building from repository.
+ * merge-pkg-config: New script.
+ * notes/copyright: Update for m4/*.m4, in particular m4/pkg.m4.
+
+2014-05-13 Paul Eggert <eggert@cs.ucla.edu>
-2014-05-10 Glenn Morris <rgm@gnu.org>
+ * merge-gnulib: Defer to autogen.sh for ACLOCAL_PATH computation.
+
+2014-05-12 Glenn Morris <rgm@gnu.org>
+
+ * find-gc.el: Move here from ../lisp/emacs-lisp.
* admin.el (set-version-in-file): Don't set identical version.
(set-version): Provide default version number.
(set-version, set-copyright): Give start/end messages.
-2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2014-04-18 Paul Eggert <eggert@cs.ucla.edu>
* notes/bzr: Update instructions for merging from gnulib.
Remove obsolete note about tramp.el and tramp-sh.el.
Change "emacs-23" to "emacs-24".
+2014-04-11 Glenn Morris <rgm@gnu.org>
+
+ * grammars/Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport.
+
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * quick-install-emacs (AVOID): Remove testfile and test-distrib.
+
+2014-03-21 Glenn Morris <rgm@gnu.org>
+
+ * update_autogen: Auto-detect VCS in use.
+ (vcs): New variable.
+ (status, commit, main): Handle git.
+
2014-03-07 Paul Eggert <eggert@cs.ucla.edu>
Fix oversight preventing lib/sys/types.h from being generated.
dnl along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ(2.65)
-AC_INIT(emacs, 24.3.91)
+dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
+AC_INIT(GNU Emacs, 24.4.50, bug-gnu-emacs@gnu.org)
dnl We get MINGW64 with MSYS2
if test "x$MSYSTEM" = "xMINGW32" -o "x$MSYSTEM" = "xMINGW64"
AC_CONFIG_HEADERS(src/config.h:src/config.in)
AC_CONFIG_SRCDIR(src/lisp.h)
AC_CONFIG_AUX_DIR(build-aux)
+dnl automake 1.13 and later understand this, making -I m4 unnecessary.
+dnl With older versions this is a no-op.
+AC_CONFIG_MACRO_DIR(m4)
xcsdkdir=
AC_CHECK_PROGS(XCRUN, [xcrun])
dnl http://lists.gnu.org/archive/html/emacs-devel/2008-04/msg01844.html
OPTION_DEFAULT_ON([makeinfo],[don't require makeinfo for building manuals])
+## This might be a 'configure' arg.
+AC_SUBST([ACLOCAL_PATH])
+
## Makefile.in needs the cache file name.
AC_SUBST(cache_file)
[don't compress some files (.el, .info, etc.) when installing. Equivalent to:
make GZIP_PROG= install])
-AC_ARG_WITH([pkg-config-prog],dnl
-[AS_HELP_STRING([--with-pkg-config-prog=FILENAME],
- [file name of pkg-config for finding GTK and librsvg])])
-if test "X${with_pkg_config_prog}" != X; then
- if test "${with_pkg_config_prog}" != yes; then
- PKG_CONFIG="${with_pkg_config_prog}"
- fi
-fi
-
AC_ARG_WITH(gameuser,dnl
[AS_HELP_STRING([--with-gameuser=USER],[user for shared game score files])])
test "X${with_gameuser}" != X && test "${with_gameuser}" != yes \
AC_ARG_ENABLE(autodepend,
[AS_HELP_STRING([--enable-autodepend],
[automatically generate dependencies to .h-files.
- Requires GNU Make and Gcc. Enabled if GNU Make and Gcc is
- found])],
+ Requires gcc, enabled if found.])],
[ac_enable_autodepend="${enableval}"],[ac_enable_autodepend=yes])
AC_ARG_ENABLE(gtk-deprecation-warnings,
rs6000-ibm-aix[56]* )
opsys=aix4-2
;;
- powerpc-ibm-aix[56]* )
+ powerpc-ibm-aix[5-9]* | powerpc-ibm-aix[1-9][0-9]* )
opsys=aix4-2
;;
if test $unported = yes; then
AC_MSG_ERROR([Emacs does not support `${canonical}' systems.
-If you think it should, please send a report to bug-gnu-emacs@gnu.org.
+If you think it should, please send a report to ${PACKAGE_BUGREPORT}.
Check `etc/MACHINES' for recognized configuration names.])
fi
+AC_MSG_CHECKING([whether we are using GNU Make])
+testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
+if test "x$testval" != x; then
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Building Emacs requires GNU make.
+If you have it installed under another name, configure with 'MAKE=...'.
+For example, run './configure MAKE=gmake'.])
+fi
+
+
#### Choose a compiler.
+dnl Don't bother to test for C89.
+AC_DEFUN([_AC_PROG_CC_C89], [$2])
+
dnl Sets GCC=yes if using gcc.
AC_PROG_CC([gcc cc cl clang "$XCRUN gcc" "$XCRUN clang"])
if test -n "$XCRUN"; then
test -n "$AR" && export AR
fi
+dnl Emacs needs C99 or later.
+gl_PROG_CC_C99
+
AM_PROG_CC_C_O
if test x$GCC = xyes; then
[gl_gcc_warnings=no]
)
-AC_ARG_ENABLE(link-time-optimization,
-[AS_HELP_STRING([--enable-link-time-optimization],
- [build emacs with link-time optimization.
- This is supported only for GCC since 4.5.0.])],
-if test "${enableval}" != "no"; then
- AC_MSG_CHECKING([whether link-time optimization is supported])
- ac_lto_supported=no
- if test x$GCC = xyes; then
- CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
- if test x$CPUS != x; then
- LTO="-flto=$CPUS"
- else
- LTO="-flto"
- fi
- old_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $LTO"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
- [ac_lto_supported=yes], [ac_lto_supported=no])
- CFLAGS="$old_CFLAGS"
- fi
- AC_MSG_RESULT([$ac_lto_supported])
- if test "$ac_lto_supported" = "yes"; then
- CFLAGS="$CFLAGS $LTO"
- fi
-fi)
-
# clang is unduly picky about some things.
AC_CACHE_CHECK([whether the compiler is clang], [emacs_cv_clang],
[AC_COMPILE_IFELSE(
s/^ //
"
+AC_ARG_ENABLE(link-time-optimization,
+[AS_HELP_STRING([--enable-link-time-optimization],
+ [build emacs with link-time optimization.
+ This is supported for gcc since 4.5.0 and clang.
+ Note that clang support is experimental - see INSTALL])],
+if test "${enableval}" != "no"; then
+ ac_lto_supported=no
+ if test $emacs_cv_clang = yes; then
+ AC_MSG_CHECKING([whether link-time optimization is supported by clang])
+ GOLD_PLUGIN=`$CC -print-file-name=LLVMgold.so 2>/dev/null`
+ if test -x "$GOLD_PLUGIN"; then
+ LTO="-flto"
+ fi
+ elif test x$GCC = xyes; then
+ AC_MSG_CHECKING([whether link-time optimization is supported by gcc])
+ CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null`
+ if test x$CPUS != x; then
+ LTO="-flto=$CPUS"
+ else
+ LTO="-flto"
+ fi
+ else
+ AC_MSG_ERROR([Link-time optimization is not supported with your compiler.])
+ fi
+ if test -z "$LTO"; then
+ ac_lto_supported=no
+ else
+ old_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $LTO"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ [ac_lto_supported=yes], [ac_lto_supported=no])
+ CFLAGS="$old_CFLAGS"
+ fi
+ AC_MSG_RESULT([$ac_lto_supported])
+ if test "$ac_lto_supported" = "yes"; then
+ CFLAGS="$CFLAGS $LTO"
+ if test x$emacs_cv_clang = xyes; then
+ AC_MSG_WARN([Please read INSTALL before using link-time optimization with clang])
+ # WARNING: 'ar --plugin ...' doesn't work without
+ # command, so plugin name is appended to ARFLAGS.
+ ARFLAGS="cru --plugin $GOLD_PLUGIN"
+ RANLIB="$RANLIB --plugin $GOLD_PLUGIN"
+ fi
+ fi
+fi)
dnl Some other nice autoconf tests.
dnl These are commented out, since gl_EARLY and/or Autoconf already does them.
LN_S="/bin/ln"
fi
+ dnl On some Debian versions, "install-info" prints irritating messages
+ dnl "This is not dpkg install-info anymore, but GNU install-info"
+ dnl if called via an absolute file name.
+ dnl Use the entirely-identical-but-quieter ginstall-info instead if present.
+ dnl Sadly some people may have an old ginstall-info installed on
+ dnl non-Debian systems, so we can't use this.
+ dnl AC_PATH_PROGS(INSTALL_INFO, [ginstall-info install-info], :,
+ dnl $PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
+
AC_PATH_PROG(INSTALL_INFO, install-info, :,
$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin)
dnl Don't use GZIP, which is used by gzip for additional parameters.
CPPFLAGS="$C_SWITCH_SYSTEM $C_SWITCH_MACHINE $CPPFLAGS"
fi
-# Suppress obsolescent Autoconf test for size_t; Emacs assumes C89 or better.
+# Suppress obsolescent Autoconf test for size_t; Emacs assumes C99 or better.
AC_DEFUN([AC_TYPE_SIZE_T])
# Likewise for obsolescent test for uid_t, gid_t; Emacs assumes them.
AC_DEFUN([AC_TYPE_UID_T])
+# sqrt and other floating-point functions such as fmod and frexp
+# are found in -lm on many systems.
+OLD_LIBS=$LIBS
+AC_SEARCH_LIBS([sqrt], [m])
+if test "X$LIBS" = "X$OLD_LIBS"; then
+ LIB_MATH=
+else
+ LIB_MATH=$ac_cv_search_sqrt
+fi
+LIBS=$OLD_LIBS
-LIB_MATH=-lm
dnl Current possibilities handled by sed (aix4-2 -> aix,
dnl gnu-linux -> gnu/linux, etc.):
dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
pre_PKG_CONFIG_CFLAGS=$CFLAGS
pre_PKG_CONFIG_LIBS=$LIBS
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-dnl This function definition taken from Gnome 2.0
-dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
-dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
-dnl also defines GSTUFF_PKG_ERRORS on error
-AC_DEFUN([PKG_CHECK_MODULES], [
- succeeded=no
-
- if test "$PKG_CONFIG" = "no" ; then
- ifelse([$4], , [AC_MSG_ERROR([
- *** The pkg-config script could not be found. Make sure it is in your path, or give the full name of pkg-config with the PKG_CONFIG environment variable or --with-pkg-config-prog. Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config.])], [$4])
- else
- PKG_CONFIG_MIN_VERSION=0.9.0
- if "$PKG_CONFIG" --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- AC_MSG_CHECKING(for $2)
-
- if "$PKG_CONFIG" --exists "$2" 2>&AS_MESSAGE_LOG_FD &&
- $1_CFLAGS=`"$PKG_CONFIG" --cflags "$2" 2>&AS_MESSAGE_LOG_FD` &&
- $1_LIBS=`"$PKG_CONFIG" --libs "$2" 2>&AS_MESSAGE_LOG_FD`; then
- $1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
- $1_LIBS=`AS_ECHO(["$$1_LIBS"]) | sed -e 's,///*,/,g'`
- AC_MSG_RESULT([yes CFLAGS='$$1_CFLAGS' LIBS='$$1_LIBS'])
- succeeded=yes
- else
- AC_MSG_RESULT(no)
- $1_CFLAGS=""
- $1_LIBS=""
- ## If we have a custom action on failure, don't print errors, but
- ## do set a variable so people can do so. Do it in a subshell
- ## to capture any diagnostics in invoking pkg-config.
- $1_PKG_ERRORS=`("$PKG_CONFIG" --print-errors "$2") 2>&1`
- ifelse([$4], ,echo "$$1_PKG_ERRORS",)
- fi
-
- AC_SUBST($1_CFLAGS)
- AC_SUBST($1_LIBS)
- else
- echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
- echo "*** See http://www.freedesktop.org/software/pkgconfig"
- fi
- fi
-
- if test $succeeded = yes; then
- ifelse([$3], , :, [$3])
- else
- ifelse([$4], , [AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.])], [$4])
- fi
-])
+PKG_PROG_PKG_CONFIG(0.9.0)
+
+dnl EMACS_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4)
+dnl acts like PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4,
+dnl HAVE_GSTUFF=yes, HAVE_GSTUFF=no) -- see pkg-config man page --
+dnl except that it postprocesses CFLAGS as needed for --enable-gcc-warnings.
+dnl EMACS_CHECK_MODULES accepts optional 3rd and 4th arguments that
+dnl can take the place of the default HAVE_GSTUFF=yes and HAVE_GSTUFF=no
+dnl actions.
+AC_DEFUN([EMACS_CHECK_MODULES],
+ [PKG_CHECK_MODULES([$1], [$2],
+ [$1_CFLAGS=`AS_ECHO(["$$1_CFLAGS"]) | sed -e "$edit_cflags"`
+ m4_default([$3], [HAVE_$1=yes])],
+ [m4_default([$4], [HAVE_$1=no])])])
HAVE_SOUND=no
if test "${with_sound}" != "no"; then
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)
+ EMACS_CHECK_MODULES([ALSA], [$ALSA_MODULES])
if test $HAVE_ALSA = yes; then
SAVE_CFLAGS="$CFLAGS"
SAVE_LIBS="$LIBS"
DEPFLAGS=
MKDEPDIR=":"
deps_frag=deps.mk
-dnl check for GNU Make if we have GCC and autodepend is on.
+dnl check if we have GCC and autodepend is on.
if test "$GCC" = yes && test "$ac_enable_autodepend" = yes; then
- AC_MSG_CHECKING([whether we are using GNU Make])
- HAVE_GNU_MAKE=no
- testval=`${MAKE-make} --version 2>/dev/null | grep 'GNU Make'`
- if test "x$testval" != x; then
- HAVE_GNU_MAKE=yes
- else
- ac_enable_autodepend=no
- fi
- AC_MSG_RESULT([$HAVE_GNU_MAKE])
- if test $HAVE_GNU_MAKE = yes; then
- AC_MSG_CHECKING([whether gcc understands -MMD -MF])
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
- CFLAGS="$SAVE_CFLAGS"
- test -f deps.d || ac_enable_autodepend=no
- rm -rf deps.d
- AC_MSG_RESULT([$ac_enable_autodepend])
- fi
+ AC_MSG_CHECKING([whether gcc understands -MMD -MF])
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -MMD -MF deps.d -MP"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], , ac_enable_autodepend=no)
+ CFLAGS="$SAVE_CFLAGS"
+ test -f deps.d || ac_enable_autodepend=no
+ rm -rf deps.d
+ AC_MSG_RESULT([$ac_enable_autodepend])
if test $ac_enable_autodepend = yes; then
DEPFLAGS='-MMD -MF ${DEPDIR}/$*.d -MP'
## MKDIR_P is documented (see AC_PROG_MKDIR_P) to be parallel-safe.
LIBS="$LIBS_SYSTEM $LIBS"
-dnl If found, this adds -ldnet to LIBS, which Autoconf uses for checks.
-AC_CHECK_LIB(dnet, dnet_ntoa)
-dnl This causes -lresolv to get used in subsequent tests,
-dnl which causes failures on some systems such as HPUX 9.
-dnl AC_CHECK_LIB(resolv, gethostbyname)
-
dnl FIXME replace main with a function we actually want from this library.
AC_CHECK_LIB(Xbsd, main, LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -lXbsd")
-dnl Check if pthreads is available.
+dnl Check for the POSIX thread library.
LIB_PTHREAD=
AC_CHECK_HEADERS_ONCE(pthread.h)
if test "$ac_cv_header_pthread_h"; then
dnl gmalloc.c uses pthread_atfork, which is not available on older-style
dnl hosts such as MirBSD 10, so test for pthread_atfork instead of merely
- dnl testing for pthread_self if Emacs uses gmalloc.c.
+ dnl testing for pthread_kill if Emacs uses gmalloc.c.
if test "$GMALLOC_OBJ" = gmalloc.o; then
emacs_pthread_function=pthread_atfork
else
- emacs_pthread_function=pthread_self
+ emacs_pthread_function=pthread_kill
fi
- AC_CHECK_LIB(pthread, $emacs_pthread_function, HAVE_PTHREAD=yes)
-fi
-if test "$HAVE_PTHREAD" = yes; then
- case "${canonical}" in
- *-hpux*) ;;
- *) LIB_PTHREAD="-lpthread"
- LIBS="$LIB_PTHREAD $LIBS" ;;
- esac
- AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).])
+ OLD_LIBS=$LIBS
+ AC_SEARCH_LIBS([$emacs_pthread_function], [pthread],
+ [AC_DEFINE([HAVE_PTHREAD], [1],
+ [Define to 1 if you have pthread (-lpthread).])])
+ if test "X$LIBS" != "X$OLD_LIBS"; then
+ eval LIB_PTHREAD=\$ac_cv_search_$emacs_pthread_function
+ fi
+ LIBS=$OLD_LIBS
fi
AC_SUBST([LIB_PTHREAD])
-AC_CHECK_LIB(pthreads, cma_open)
-
-## Note: when using cpp in s/aix4.2.h, this definition depended on
-## HAVE_LIBPTHREADS. That was not defined earlier in configure when
-## the system file was sourced. Hence the value of LIBS_SYSTEM
-## added to LIBS in configure would never contain the pthreads part,
-## but the value used in Makefiles might. FIXME?
-##
-## -lpthreads seems to be necessary for Xlib in X11R6, and should
-## be harmless on older versions of X where it happens to exist.
-test "$opsys" = "aix4-2" && \
- test $ac_cv_lib_pthreads_cma_open = yes && \
- LIBS_SYSTEM="$LIBS_SYSTEM -lpthreads"
-
dnl Check for need for bigtoc support on IBM AIX
case ${host_os} in
;;
esac
-# Change CFLAGS and CPPFLAGS temporarily so that C_SWITCH_X_SITE gets
-# used for the tests that follow. We set them back to REAL_CFLAGS and
-# REAL_CPPFLAGS later on.
+# Change CFLAGS, CPPFLAGS, and LIBS temporarily so that C_SWITCH_X_SITE
+# is for the tests that follow. We set them back later on.
REAL_CFLAGS="$CFLAGS"
REAL_CPPFLAGS="$CPPFLAGS"
+REAL_LIBS="$LIBS"
if test "${HAVE_X11}" = "yes"; then
DEFS="$C_SWITCH_X_SITE $DEFS"
[xgnu_linux_first_failure=no],
[xgnu_linux_first_failure=yes])
if test "${xgnu_linux_first_failure}" = "yes"; then
- OLD_LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE"
- OLD_C_SWITCH_X_SITE="$C_SWITCH_X_SITE"
OLD_CPPFLAGS="$CPPFLAGS"
OLD_LIBS="$LIBS"
- LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
LIBS="$LIBS -b i486-linuxaout"
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
[xgnu_linux_second_failure=yes])
if test "${xgnu_linux_second_failure}" = "yes"; then
# If we get the same failure with -b, there is no use adding -b.
- # So take it out. This plays safe.
- LD_SWITCH_X_SITE="$OLD_LD_SWITCH_X_SITE"
- C_SWITCH_X_SITE="$OLD_C_SWITCH_X_SITE"
- CPPFLAGS="$OLD_CPPFLAGS"
- LIBS="$OLD_LIBS"
+ # So leave it out. This plays safe.
AC_MSG_RESULT(no)
else
+ LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
+ C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
AC_MSG_RESULT(yes)
fi
+ CPPFLAGS=$OLD_CPPFLAGS
+ LIBS=$OLD_LIBS
else
AC_MSG_RESULT(no)
fi
RSVG_REQUIRED=2.11.0
RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
- PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, HAVE_RSVG=yes, :)
+ EMACS_CHECK_MODULES([RSVG], [$RSVG_MODULE])
AC_SUBST(RSVG_CFLAGS)
AC_SUBST(RSVG_LIBS)
if test "${opsys}" = "mingw32"; then
RSVG_LIBS=
fi
- LIBS="$RSVG_LIBS $LIBS"
fi
fi
fi
## 6.3.5 is the earliest version known to work; see Bug#17339.
## 6.8.2 makes Emacs crash; see Bug#13867.
IMAGEMAGICK_MODULE="Wand >= 6.3.5 Wand != 6.8.2"
- PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
+ EMACS_CHECK_MODULES([IMAGEMAGICK], [$IMAGEMAGICK_MODULE])
AC_SUBST(IMAGEMAGICK_CFLAGS)
AC_SUBST(IMAGEMAGICK_LIBS)
if test $HAVE_IMAGEMAGICK = yes; then
AC_DEFINE(HAVE_IMAGEMAGICK, 1, [Define to 1 if using imagemagick.])
+ OLD_CFLAGS=$CFLAGS
+ OLD_LIBS=$LIBS
CFLAGS="$CFLAGS $IMAGEMAGICK_CFLAGS"
LIBS="$IMAGEMAGICK_LIBS $LIBS"
AC_CHECK_FUNCS(MagickExportImagePixels MagickMergeImageLayers)
+ CFLAGS=$OLD_CFLAGS
+ LIBS=$OLD_LIBS
fi
fi
fi
GTK_MODULES="gtk+-3.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
dnl Checks for libraries.
- PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
+ EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
+ [pkg_check_gtk=yes], [pkg_check_gtk=no])
if test "$pkg_check_gtk" = "no" && test "$with_gtk3" = "yes"; then
AC_MSG_ERROR($GTK_PKG_ERRORS)
fi
GTK_MODULES="gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED"
dnl Checks for libraries.
- PKG_CHECK_MODULES(GTK, $GTK_MODULES, pkg_check_gtk=yes, pkg_check_gtk=no)
+ EMACS_CHECK_MODULES([GTK], [$GTK_MODULES],
+ [pkg_check_gtk=yes], [pkg_check_gtk=no])
if test "$pkg_check_gtk" = "no" &&
{ test "$with_gtk" = yes || test "$with_gtk2" = "yes"; }
then
fi
fi
+OLD_CFLAGS=$CFLAGS
+OLD_LIBS=$LIBS
+
if test x"$pkg_check_gtk" = xyes; then
AC_SUBST(GTK_LIBS)
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$GTK_LIBS $LIBS"
dnl Try to compile a simple GTK program.
AC_MSG_ERROR([Gtk+ wanted, but it does not compile, see config.log. Maybe some x11-devel files missing?]);
fi
else
+ C_SWITCH_X_SITE="$C_SWITCH_X_SITE $GTK_CFLAGS"
HAVE_GTK=yes
AC_DEFINE(USE_GTK, 1, [Define to 1 if using GTK.])
GTK_OBJ="gtkutil.o $GTK_OBJ"
term_header=gtkutil.h
fi
+CFLAGS=$OLD_CFLAGS
+LIBS=$OLD_LIBS
+
dnl D-Bus has been tested under GNU/Linux only. Must be adapted for
dnl other platforms.
HAVE_DBUS=no
DBUS_OBJ=
if test "${with_dbus}" = "yes"; then
- PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)
+ EMACS_CHECK_MODULES([DBUS], [dbus-1 >= 1.0])
if test "$HAVE_DBUS" = yes; then
- LIBS="$LIBS $DBUS_LIBS"
AC_DEFINE(HAVE_DBUS, 1, [Define to 1 if using D-Bus.])
dnl dbus_watch_get_unix_fd has been introduced in D-Bus 1.1.1.
dnl dbus_type_is_valid and dbus_validate_* have been introduced in
dnl D-Bus 1.5.12.
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS $DBUS_LIBS"
AC_CHECK_FUNCS(dbus_watch_get_unix_fd \
dbus_type_is_valid \
dbus_validate_bus_name \
dbus_validate_path \
dbus_validate_interface \
dbus_validate_member)
+ LIBS=$OLD_LIBS
DBUS_OBJ=dbusbind.o
fi
fi
+AC_SUBST(DBUS_CFLAGS)
+AC_SUBST(DBUS_LIBS)
AC_SUBST(DBUS_OBJ)
dnl GSettings has been tested under GNU/Linux only.
HAVE_GSETTINGS=no
if test "${HAVE_X11}" = "yes" && test "${with_gsettings}" = "yes"; then
- PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.26, HAVE_GSETTINGS=yes, HAVE_GSETTINGS=no)
+ EMACS_CHECK_MODULES([GSETTINGS], [gio-2.0 >= 2.26])
if test "$HAVE_GSETTINGS" = "yes"; then
old_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $GSETTINGS_CFLAGS"
dnl The version is really arbitrary, it is about the same age as Gtk+ 2.6.
HAVE_GCONF=no
if test "${HAVE_X11}" = "yes" && test "${with_gconf}" = "yes"; then
- PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.13, HAVE_GCONF=yes, HAVE_GCONF=no)
+ EMACS_CHECK_MODULES([GCONF], [gconf-2.0 >= 2.13])
if test "$HAVE_GCONF" = yes; then
AC_DEFINE(HAVE_GCONF, 1, [Define to 1 if using GConf.])
dnl Newer GConf doesn't link with g_objects, so this is not defined.
fi
if test "$HAVE_GSETTINGS" = "yes" || test "$HAVE_GCONF" = "yes"; then
- PKG_CHECK_MODULES(GOBJECT, gobject-2.0 >= 2.0, HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
+ EMACS_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.0])
if test "$HAVE_GOBJECT" = "yes"; then
SETTINGS_CFLAGS="$SETTINGS_CFLAGS $GOBJECT_CFLAGS"
SETTINGS_LIBS="$SETTINGS_LIBS $GOBJECT_LIBS"
HAVE_GNUTLS=no
HAVE_GNUTLS3=no
if test "${with_gnutls}" = "yes" ; then
- PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0], HAVE_GNUTLS3=yes, HAVE_GNUTLS3=no)
+ EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 3.0.0],
+ [HAVE_GNUTLS3=yes], [HAVE_GNUTLS3=no])
if test "${HAVE_GNUTLS3}" = "yes"; then
AC_DEFINE(HAVE_GNUTLS3, 1, [Define if using GnuTLS v3.])
HAVE_GNUTLS="yes"
else
- PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], HAVE_GNUTLS=yes, HAVE_GNUTLS=no)
+ EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6],
+ [HAVE_GNUTLS=yes], [HAVE_GNUTLS=no])
fi
if test "${HAVE_GNUTLS}" = "yes"; then
AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.])
dnl to check?
case $with_file_notification,$NOTIFY_OBJ in
gfile, | yes,)
- PKG_CHECK_MODULES(GFILENOTIFY, gio-2.0 >= 2.24, HAVE_GFILENOTIFY=yes, HAVE_GFILENOTIFY=no)
+ EMACS_CHECK_MODULES([GFILENOTIFY], [gio-2.0 >= 2.24])
if test "$HAVE_GFILENOTIFY" = "yes"; then
AC_DEFINE(HAVE_GFILENOTIFY, 1, [Define to 1 if using GFile.])
NOTIFY_OBJ=gfilenotify.o
X_TOOLKIT_TYPE=$USE_X_TOOLKIT
LIBXTR6=
+LIBXMU=
if test "${USE_X_TOOLKIT}" != "none"; then
AC_MSG_CHECKING(X11 toolkit version)
AC_CACHE_VAL(emacs_cv_x11_toolkit_version_6,
dnl tranle@intellicorp.com says libXmu.a can need XtMalloc in libXt.a to link.
OLDLIBS="$LIBS"
if test x$HAVE_X11XTR6 = xyes; then
- LIBS="-lXt -lSM -lICE $LIBS"
+ OTHERLIBS='-lXt -lSM -lICE'
else
- LIBS="-lXt $LIBS"
+ OTHERLIBS='-lXt'
+ fi
+ AC_SEARCH_LIBS([XmuConvertStandardSelection], [Xmu], [], [], [$OTHERLIBS])
+ if test "X$LIBS" != "X$OLDLIBS"; then
+ LIBXMU=$ac_cv_search_XmuConvertStandardSelection
fi
- AC_CHECK_LIB(Xmu, XmuConvertStandardSelection)
- test $ac_cv_lib_Xmu_XmuConvertStandardSelection = no && LIBS="$OLDLIBS"
- dnl ac_cv_lib_Xmu_XmuConvertStandardSelection is also referenced below.
+ LIBS=$OLDLIBS
+ dnl ac_cv_search_XmuConvertStandardSelection is also referenced below.
fi
AC_SUBST(LIBXTR6)
-
-dnl FIXME the logic here seems weird, but this is what cpp was doing.
-dnl Why not just test for libxmu in the normal way?
-LIBXMU=-lXmu
-case $opsys in
- ## These systems don't supply Xmu.
- hpux* | aix4-2 )
- test "X$ac_cv_lib_Xmu_XmuConvertStandardSelection" != "Xyes" && LIBXMU=
- ;;
- mingw32 )
- LIBXMU=
- ;;
-esac
AC_SUBST(LIBXMU)
-# On Irix 6.5, at least, we need XShapeQueryExtension from -lXext for Xaw3D.
-if test "${HAVE_X11}" = "yes"; then
- if test "${USE_X_TOOLKIT}" != "none"; then
- AC_CHECK_LIB(Xext, XShapeQueryExtension)
- fi
-fi
-
LIBXP=
if test "${USE_X_TOOLKIT}" = "MOTIF"; then
# OpenMotif may be installed in such a way on some GNU/Linux systems.
### Start of font-backend (under X11) section.
if test "${HAVE_X11}" = "yes"; then
- PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.2.0, HAVE_FC=yes, HAVE_FC=no)
+ EMACS_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.2.0],
+ [HAVE_FC=yes], [HAVE_FC=no])
## Use -lXft if available, unless `--with-xft=no'.
HAVE_XFT=maybe
fi
if test "x${with_xft}" != "xno"; then
- PKG_CHECK_MODULES(XFT, xft >= 0.13.0, , HAVE_XFT=no)
+ EMACS_CHECK_MODULES([XFT], [xft >= 0.13.0], [], [HAVE_XFT=no])
## Because xftfont.c uses XRenderQueryExtension, we also
## need to link to -lXrender.
HAVE_XRENDER=no
AC_DEFINE(HAVE_XFT, 1, [Define to 1 if you have the Xft library.])
AC_SUBST(XFT_LIBS)
C_SWITCH_X_SITE="$C_SWITCH_X_SITE $XFT_CFLAGS"
- else
- CPPFLAGS="$OLD_CPPFLAGS"
- CFLAGS="$OLD_CFLAGS"
- LIBS="$OLD_LIBS"
fi # "${HAVE_XFT}" = "yes"
+ CPPFLAGS=$OLD_CPPFLAGS
+ CFLAGS=$OLD_CFLAGS
+ LIBS=$OLD_LIBS
fi # "$HAVE_XFT" != no
fi # "x${with_xft}" != "xno"
dnl ftfont.o: undefined reference to symbol 'FT_New_Face'
dnl if -lfreetype is not specified.
dnl The following is needed to set FREETYPE_LIBS.
- PKG_CHECK_MODULES(FREETYPE, freetype2, HAVE_FREETYPE=yes,
- HAVE_FREETYPE=no)
+ EMACS_CHECK_MODULES([FREETYPE], [freetype2])
test "$HAVE_FREETYPE" = "no" && AC_MSG_ERROR(libxft requires libfreetype)
fi
AC_DEFINE(HAVE_FREETYPE, 1,
[Define to 1 if using the freetype and fontconfig libraries.])
if test "${with_libotf}" != "no"; then
- PKG_CHECK_MODULES(LIBOTF, libotf, HAVE_LIBOTF=yes,
- HAVE_LIBOTF=no)
+ EMACS_CHECK_MODULES([LIBOTF], [libotf])
if test "$HAVE_LIBOTF" = "yes"; then
AC_DEFINE(HAVE_LIBOTF, 1, [Define to 1 if using libotf.])
AC_CHECK_LIB(otf, OTF_get_variation_glyphs,
HAVE_M17N_FLT=no
if test "${HAVE_LIBOTF}" = yes; then
if test "${with_m17n_flt}" != "no"; then
- PKG_CHECK_MODULES(M17N_FLT, m17n-flt, HAVE_M17N_FLT=yes, HAVE_M17N_FLT=no)
+ EMACS_CHECK_MODULES([M17N_FLT], [m17n-flt])
if test "$HAVE_M17N_FLT" = "yes"; then
AC_DEFINE(HAVE_M17N_FLT, 1, [Define to 1 if using libm17n-flt.])
fi
fi
AC_SUBST(LIBJPEG)
-### Use -lpng if available, unless `--with-png=no'.
-### mingw32 doesn't use -lpng, since it loads the library dynamically.
-HAVE_PNG=no
-LIBPNG=
-if test "${opsys}" = "mingw32"; then
- if test "${with_png}" != "no"; then
- AC_CHECK_HEADER(png.h, HAVE_PNG=yes, HAVE_PNG=no)
- fi
- if test "${HAVE_PNG}" = "yes"; then
- AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library (-lpng).])
-
- AC_CHECK_DECL(png_longjmp,
- [],
- [AC_DEFINE(PNG_DEPSTRUCT, [],
- [Define to empty to suppress deprecation warnings when building
- with --enable-gcc-warnings and with libpng versions before 1.5,
- which lack png_longjmp.])],
- [[#ifdef HAVE_LIBPNG_PNG_H
- # include <libpng/png.h>
- #else
- # include <png.h>
- #endif
- ]])
- fi
-elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
- if test "${with_png}" != "no"; then
- # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
- # in /usr/include/libpng.
- AC_CHECK_HEADERS(png.h libpng/png.h, break)
- if test "$ac_cv_header_png_h" = yes || test "$ac_cv_header_libpng_png_h" = yes ; then
- AC_CHECK_LIB(png, png_get_channels, HAVE_PNG=yes, , -lz -lm)
- fi
- fi
-
- if test "${HAVE_PNG}" = "yes"; then
- AC_DEFINE(HAVE_PNG, 1, [Define to 1 if you have the png library.])
-
- dnl Some systems, eg NetBSD 6, only provide eg "libpng16", not "libpng".
- lpng=`libpng-config --libs 2> /dev/null`
- case $lpng in
- -l*) : ;;
- *) lpng="-lpng" ;;
- esac
- LIBPNG="$lpng -lz -lm"
-
- AC_CHECK_DECL(png_longjmp,
- [],
- [AC_DEFINE(PNG_DEPSTRUCT, [],
- [Define to empty to suppress deprecation warnings when building
- with --enable-gcc-warnings and with libpng versions before 1.5,
- which lack png_longjmp.])],
- [[#ifdef HAVE_LIBPNG_PNG_H
- # include <libpng/png.h>
- #else
- # include <png.h>
- #endif
- ]])
- fi
-fi
-AC_SUBST(LIBPNG)
-
HAVE_ZLIB=no
LIBZ=
if test "${with_zlib}" != "no"; then
fi
AC_SUBST(LIBZ)
+### Use -lpng if available, unless `--with-png=no'.
+HAVE_PNG=no
+LIBPNG=
+PNG_CFLAGS=
+if test "${NS_IMPL_COCOA}" = yes; then
+ : # Nothing to do
+elif test "${with_png}" != no; then
+ # mingw32 loads the library dynamically.
+ if test "$opsys" = mingw32; then
+ AC_CHECK_HEADER([png.h], [HAVE_PNG=yes])
+ elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes"; then
+ AC_MSG_CHECKING([for png])
+ png_cflags=`(libpng-config --cflags) 2>&AS_MESSAGE_LOG_FD` &&
+ png_libs=`(libpng-config --libs) 2>&AS_MESSAGE_LOG_FD` || {
+ # libpng-config does not work; configure by hand.
+ # Debian unstable as of July 2003 has multiple libpngs, and puts png.h
+ # in /usr/include/libpng.
+ if test -r /usr/include/libpng/png.h &&
+ test ! -r /usr/include/png.h; then
+ png_cflags=-I/usr/include/libpng
+ else
+ png_cflags=
+ fi
+ png_libs='-lpng'
+ }
+ SAVE_CFLAGS=$CFLAGS
+ SAVE_LIBS=$LIBS
+ CFLAGS="$CFLAGS $png_cflags"
+ LIBS="$png_libs -lz -lm $LIBS"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <png.h>]],
+ [[return !png_get_channels (0, 0);]])],
+ [HAVE_PNG=yes
+ PNG_CFLAGS=`AS_ECHO(["$png_cflags"]) | sed -e "$edit_cflags"`
+ LIBPNG=$png_libs
+ # $LIBPNG requires explicit -lz in some cases.
+ # We don't know what those cases are, exactly, so play it safe and
+ # append -lz to any nonempty $LIBPNG, unless we're already using LIBZ.
+ if test -n "$LIBPNG" && test -z "$LIBZ"; then
+ LIBPNG="$LIBPNG -lz"
+ fi])
+ CFLAGS=$SAVE_CFLAGS
+ LIBS=$SAVE_LIBS
+ AC_MSG_RESULT([$HAVE_PNG])
+ fi
+fi
+if test $HAVE_PNG = yes; then
+ AC_DEFINE([HAVE_PNG], [1], [Define to 1 if you have the png library.])
+
+ SAVE_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $PNG_CFLAGS"
+ AC_CHECK_DECL([png_longjmp],
+ [],
+ [AC_DEFINE([PNG_DEPSTRUCT], [],
+ [Define to empty to suppress deprecation warnings when building
+ with --enable-gcc-warnings and with libpng versions before 1.5,
+ which lack png_longjmp.])],
+ [[#include <png.h>
+ ]])
+ CFLAGS=$SAVE_CFLAGS
+fi
+AC_SUBST(LIBPNG)
+AC_SUBST(PNG_CFLAGS)
### Use -ltiff if available, unless `--with-tiff=no'.
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
if test "${HAVE_X_SM}" = "yes"; then
AC_DEFINE(HAVE_X_SM, 1, [Define to 1 if you have the SM library (-lSM).])
LIBXSM="-lSM -lICE"
- case "$LIBS" in
- *-lSM*) ;;
- *) LIBS="$LIBXSM $LIBS" ;;
- esac
fi
fi
AC_SUBST(LIBXSM)
if test "${HAVE_X11}" = "yes"; then
XRANDR_REQUIRED=1.2.2
XRANDR_MODULES="xrandr >= $XRANDR_REQUIRED"
- PKG_CHECK_MODULES(XRANDR, $XRANDR_MODULES, HAVE_XRANDR=yes, HAVE_XRANDR=no)
+ EMACS_CHECK_MODULES([XRANDR], [$XRANDR_MODULES])
if test $HAVE_XRANDR = no; then
# Test old way in case pkg-config doesn't have it (older machines).
AC_CHECK_HEADER(X11/extensions/Xrandr.h,
[AC_CHECK_LIB(Xrandr, XRRGetScreenResources, HAVE_XRANDR=yes)])
if test $HAVE_XRANDR = yes; then
XRANDR_LIBS=-lXrandr
- AC_SUBST(XRANDR_LIBS)
fi
fi
if test $HAVE_XRANDR = yes; then
AC_DEFINE(HAVE_XRANDR, 1, [Define to 1 if you have the XRandr extension.])
fi
fi
+AC_SUBST(XRANDR_CFLAGS)
+AC_SUBST(XRANDR_LIBS)
### Use Xinerama (-lXinerama) if available
HAVE_XINERAMA=no
if test "${HAVE_X11}" = "yes"; then
XINERAMA_REQUIRED=1.0.2
XINERAMA_MODULES="xinerama >= $XINERAMA_REQUIRED"
- PKG_CHECK_MODULES(XINERAMA, $XINERAMA_MODULES, HAVE_XINERAMA=yes,
- HAVE_XINERAMA=no)
+ EMACS_CHECK_MODULES([XINERAMA], [$XINERAMA_MODULES])
if test $HAVE_XINERAMA = no; then
# Test old way in case pkg-config doesn't have it (older machines).
AC_CHECK_HEADER(X11/extensions/Xinerama.h,
[AC_CHECK_LIB(Xinerama, XineramaQueryExtension, HAVE_XINERAMA=yes)])
if test $HAVE_XINERAMA = yes; then
XINERAMA_LIBS=-lXinerama
- AC_SUBST(XINERAMA_LIBS)
fi
fi
if test $HAVE_XINERAMA = yes; then
AC_DEFINE(HAVE_XINERAMA, 1, [Define to 1 if you have the Xinerama extension.])
fi
fi
+AC_SUBST(XINERAMA_CFLAGS)
+AC_SUBST(XINERAMA_LIBS)
+### Use Xfixes (-lXfixes) if available
+HAVE_XFIXES=no
+if test "${HAVE_X11}" = "yes"; then
+ XFIXES_REQUIRED=4.0.0
+ XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED"
+ EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES])
+ if test $HAVE_XFIXES = no; then
+ # Test old way in case pkg-config doesn't have it (older machines).
+ AC_CHECK_HEADER(X11/extensions/Xfixes.h,
+ [AC_CHECK_LIB(Xfixes, XFixesHideCursor, HAVE_XFIXES=yes)])
+ if test $HAVE_XFIXES = yes; then
+ XFIXES_LIBS=-lXfixes
+ fi
+ fi
+ if test $HAVE_XFIXES = yes; then
+ AC_DEFINE(HAVE_XFIXES, 1, [Define to 1 if you have the Xfixes extension.])
+ fi
+fi
+AC_SUBST(XFIXES_CFLAGS)
+AC_SUBST(XFIXES_LIBS)
### Use libxml (-lxml2) if available
### mingw32 doesn't use -lxml2, since it loads the library dynamically.
HAVE_LIBXML2=no
if test "${with_xml2}" != "no"; then
### I'm not sure what the version number should be, so I just guessed.
- PKG_CHECK_MODULES(LIBXML2, libxml-2.0 > 2.6.17, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
+ EMACS_CHECK_MODULES([LIBXML2], [libxml-2.0 > 2.6.17])
# Built-in libxml2 on OS X 10.8 lacks libxml-2.0.pc.
if test "${HAVE_LIBXML2}" != "yes" -a "$opsys" = "darwin"; then
SAVE_CPPFLAGS="$CPPFLAGS"
fi
if test "${HAVE_LIBXML2}" = "yes"; then
if test "${opsys}" != "mingw32"; then
- LIBS="$LIBXML2_LIBS $LIBS"
- AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
+ AC_CHECK_LIB(xml2, htmlReadMemory, HAVE_LIBXML2=yes, HAVE_LIBXML2=no
+ [$LIBXML2_LIBS])
else
LIBXML2_LIBS=""
fi
AC_DEFINE(HAVE_H_ERRNO, 1, [Define to 1 if netdb.h declares h_errno.])
fi
-# sqrt and other floating-point functions such as fmod and frexp
-# are found in -lm on most systems, but mingw32 doesn't use -lm.
-if test "${opsys}" != "mingw32"; then
- AC_CHECK_LIB(m, sqrt)
-fi
-
# Check for mail-locking functions in a "mail" library. Probably this should
# have the same check as for liblockfile below.
AC_CHECK_LIB(mail, maillock, have_mail=yes, have_mail=no)
if test $have_mail = yes; then
LIBS_MAIL=-lmail
- LIBS="$LIBS_MAIL $LIBS"
AC_DEFINE(HAVE_LIBMAIL, 1, [Define to 1 if you have the `mail' library (-lmail).])
+
+ OLD_LIBS=$LIBS
+ LIBS="$LIBS_MAIL $LIBS"
+ AC_CHECK_FUNCS(touchlock)
+ LIBS=$OLD_LIBS
else
LIBS_MAIL=
fi
AC_CHECK_LIB(lockfile, maillock, have_lockfile=yes, have_lockfile=no)
if test $have_lockfile = yes; then
LIBS_MAIL=-llockfile
- LIBS="$LIBS_MAIL $LIBS"
AC_DEFINE(HAVE_LIBLOCKFILE, 1, [Define to 1 if you have the `lockfile' library (-llockfile).])
else
# If we have the shared liblockfile, assume we must use it for mail
esac
AC_SUBST(BLESSMAIL_TARGET)
-
+OLD_LIBS=$LIBS
+LIBS="$LIB_MATH $LIBS"
AC_CHECK_FUNCS(accept4 gethostname \
getrusage get_current_dir_name \
-lrand48 \
+lrand48 random rint \
select getpagesize setlocale \
getrlimit setrlimit shutdown getaddrinfo \
strsignal setitimer \
sendto recvfrom getsockname getpeername getifaddrs freeifaddrs \
-gai_strerror getline getdelim sync \
+gai_strerror sync \
getpwent endpwent getgrent endgrent \
-touchlock \
cfmakeraw cfsetspeed copysign __executable_start log2)
+LIBS=$OLD_LIBS
dnl No need to check for aligned_alloc and posix_memalign if using
dnl gmalloc.o, as it supplies them. Don't use these functions on
AC_CHECK_FUNCS([aligned_alloc posix_memalign], [break])
fi
-## Eric Backus <ericb@lsid.hp.com> says, HP-UX 9.x on HP 700 machines
-## has a broken `rint' in some library versions including math library
-## version number A.09.05.
-## You can fix the math library by installing patch number PHSS_4630.
-## But we can fix it more reliably for Emacs by just not using rint.
-## We also skip HAVE_RANDOM - see comments in src/conf_post.h.
-case $opsys in
- hpux*) : ;;
- *) AC_CHECK_FUNCS(random rint) ;;
-esac
-
dnl Cannot use AC_CHECK_FUNCS
AC_CACHE_CHECK([for __builtin_unwind_init],
emacs_cv_func___builtin_unwind_init,
KRB4LIB=
if test "${with_kerberos}" != no; then
+ OLD_LIBS=$LIBS
AC_CHECK_LIB(com_err, com_err, have_com_err=yes, have_com_err=no)
if test $have_com_err = yes; then
COM_ERRLIB=-lcom_err
[AC_CHECK_HEADERS(kerberos/krb.h)])])
fi
AC_CHECK_HEADERS(com_err.h)
+ LIBS=$OLD_LIBS
fi
AC_SUBST(COM_ERRLIB)
AC_CHECK_FUNCS(snprintf)
-dnl Check this late. It depends on what other libraries (lrsvg, Gtk+ etc)
-dnl Emacs uses.
+dnl Check for glib. This differs from other library checks in that
+dnl Emacs need not link to glib unless some other library is already
+dnl linking to glib. Although glib provides no facilities that Emacs
+dnl needs for its own purposes, when glib is present Emacs needs to
+dnl use primitives like g_main_context_query to avoid clashing with
+dnl glib at a low level.
+dnl
+dnl Check this late, since it depends on $GTK_CFLAGS etc.
XGSELOBJ=
OLDCFLAGS="$CFLAGS"
OLDLIBS="$LIBS"
+CFLAGS="$CFLAGS $GTK_CFLAGS $RSVG_CFLAGS $DBUS_CFLAGS $SETTINGS_CFLAGS"
+LIBS="$LIBS $GTK_LIBS $RSVG_LIBS $DBUS_LIBS $SETTINGS_LIBS"
CFLAGS="$CFLAGS $GFILENOTIFY_CFLAGS"
LIBS="$LIBS $GFILENOTIFY_LIBS"
AC_MSG_CHECKING([whether GLib is linked in])
in the full name stands for the login id.])
fi
-dnl Every platform that uses configure supports this.
-dnl There is a create-lockfiles option you can
-dnl customize if you do not want the lock files to be written.
-dnl So it is not clear that this #define still needs to exist.
-AC_DEFINE(CLASH_DETECTION, 1, [Define if you want lock files to be written,
- so that Emacs can tell instantly when you try to modify a file that
- someone else has modified in his/her Emacs.])
-
dnl Everybody supports this, except MS.
dnl Seems like the kind of thing we should be testing for, though.
## Note: PTYs are broken on darwin <6. Use at your own risk.
case $opsys in
aix4-2)
dnl Unfortunately without libXmu we cannot support EditRes.
- if test x$ac_cv_lib_Xmu_XmuConvertStandardSelection != xyes; then
+ if test "x$ac_cv_search_XmuConvertStandardSelection" = xno; then
AC_DEFINE(NO_EDITRES, 1)
fi
;;
esac
-dnl Used in lisp.h, emacs.c, vm-limit.c
-dnl NEWS.18 describes this as "a number which contains
-dnl the high bits to be inclusive or'ed with pointers that are unpacked."
-AH_TEMPLATE(DATA_SEG_BITS, [Extra bits to be or'd in with any pointers
-stored in a Lisp_Object.])
-dnl if Emacs uses fewer than 32 bits for the value field of a LISP_OBJECT.
-
-case $opsys in
- aix*)
- dnl This works with 32-bit executables; Emacs doesn't support 64-bit.
- AC_DEFINE(DATA_SEG_BITS, [0x20000000])
- ;;
- hpux*)
- dnl The data segment on this machine always starts at address 0x40000000.
- AC_DEFINE(DATA_SEG_BITS, [0x40000000])
- ;;
- irix6-5)
- AC_DEFINE(DATA_SEG_BITS, [0x10000000])
- ;;
-esac
-
-
AH_TEMPLATE(TAB3, [Undocumented.])
case $opsys in
# Set up the CFLAGS for real compilation, so we can substitute it.
CFLAGS="$REAL_CFLAGS"
CPPFLAGS="$REAL_CPPFLAGS"
+LIBS="$REAL_LIBS"
## Hack to detect a buggy GCC version.
if test "x$GCC" = xyes \
fi
if test $USE_ACL -ne 0; then
- acl_summary="yes $LIB_ACL"
+ ACL_SUMMARY="yes $LIB_ACL"
else
- acl_summary=no
+ ACL_SUMMARY=no
fi
echo "
echo " Where do we find X Windows libraries? Standard dirs"
fi
+optsep=
+emacs_config_features=
+for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS \
+ GCONF GSETTINGS NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT \
+ LIBOTF XFT ZLIB; do
+
+ case $opt in
+ NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
+ *) eval val=\${HAVE_$opt} ;;
+ esac
+ test x"$val" = xno && continue
+ AS_VAR_APPEND([emacs_config_features], ["$optsep$opt"])
+ optsep=' '
+done
+AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}",
+ [Summary of some of the main features enabled by configure.])
+
echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}"
echo " Does Emacs use -lXpm? ${HAVE_XPM}"
echo " Does Emacs use -ljpeg? ${HAVE_JPEG}"
echo " Does Emacs use -lgconf? ${HAVE_GCONF}"
echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}"
echo " Does Emacs use a file notification library? ${NOTIFY_SUMMARY}"
-echo " Does Emacs use access control lists? ${acl_summary}"
+echo " Does Emacs use access control lists? ${ACL_SUMMARY}"
echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}"
echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}"
echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}"
-2014-05-21 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * frames.texi (Fonts): Clarify which frames are affected by
+ setting font from the menu and in default-frame-alist.
+ (Bug#17532)
+
-2014-05-12 Eli Zaretskii <eliz@gnu.org>
+2014-05-14 Eli Zaretskii <eliz@gnu.org>
- * mule.texi (Language Environments): Remove unused @anchor.
- (Bug#17479)
+ * mule.texi (Language Environments): Remove unused @anchor. (Bug#17479)
-2014-05-02 Eli Zaretskii <eliz@gnu.org>
+2014-05-04 Eli Zaretskii <eliz@gnu.org>
* trouble.texi (Lossage, DEL Does Not Delete, Stuck Recursive)
(Screen Garbled, Text Garbled, After a Crash, Emergency Escape)
(Bug Criteria, Understanding Bug Reporting, Checklist, Service):
Improve indexing.
-2014-04-29 Eli Zaretskii <eliz@gnu.org>
+2014-05-04 Leo Liu <sdl.web@gmail.com>
+
+ * cal-xtra.texi (Non-Gregorian Diary): Document new features for
+ Chinese calendar and diary.
+
+2014-04-30 Eli Zaretskii <eliz@gnu.org>
* trouble.texi (Quitting, DEL Does Not Delete, Emergency Escape)
(Bug Criteria): Fix usage of @kbd and @key. (Bug#17362)
* anti.texi (Antinews): Fix usage of @kbd and @key.
-2014-04-26 Eli Zaretskii <eliz@gnu.org>
-
* sending.texi (Mail Signature): Document signature variables used
by Message mode. (Bug#17308)
-2014-04-21 Eli Zaretskii <eliz@gnu.org>
+2014-04-22 Eli Zaretskii <eliz@gnu.org>
* buffers.texi (Uniquify): Clarify the default uniquification.
EMACSLOADPATH. Index all the environment variables.
(Misc Variables): Index all the environment variables.
-2014-04-13 Eli Zaretskii <eliz@gnu.org>
+2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.in (infoclean): Be consistent about reporting failures.
+ Do not fail merely because the info directory does not exist,
+ but do fail if it exists and can't be cleaned.
+
+2014-04-16 Eli Zaretskii <eliz@gnu.org>
* display.texi (Cursor Display): Explain better how to customize
'blink-cursor-blinks'.
-2014-04-05 Glenn Morris <rgm@gnu.org>
+2014-04-07 Glenn Morris <rgm@gnu.org>
* trouble.texi (Checklist): Dribble files may contain passwords.
-2014-04-04 Glenn Morris <rgm@gnu.org>
-
* files.texi (Backup Names):
* arevert-xtra.texi (Supporting additional buffers):
Update for default values of some -function vars no longer being nil.
(Supporting additional buffers):
Update for buffer-stale-function also applying to file-buffers.
+2014-03-28 Glenn Morris <rgm@gnu.org>
+
+ * custom.texi (Terminal Init): Mention term-file-aliases.
+
+2014-03-26 Glenn Morris <rgm@gnu.org>
+
+ * ack.texi (Acknowledgments): Remove reference to obsolete file.
+
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * help.texi (Help Files): Update C-h g description.
+
2014-03-16 Dmitry Gutov <dgutov@yandex.ru>
* programs.texi (Matching): Update the missed spot. (Bug#17008)
-2014-05-17 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * display.texi (Invisible Text): Clarify the description of
+ line-move-ignore-invisible. (Bug#17511)
+
-2014-05-07 Paul Eggert <eggert@cs.ucla.edu>
+2014-05-22 Leo Liu <sdl.web@gmail.com>
+
+ * sequences.texi (Sequence Functions): Don't mention when and how
+ SEQ to nreverse is mutated.
+
+2014-05-21 Leo Liu <sdl.web@gmail.com>
+
+ * sequences.texi (Sequence Functions): Update nreverse.
+
+2014-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Allow any non-nil value to count as true in bool-vector.
+ * sequences.texi (Bool-Vectors): Coalesce discussion of how to
+ print them. bool-vector's args need not be t or nil.
+
+2014-05-19 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * sequences.texi (Bool-vectors): Mention bool-vector.
+
+2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Assume C99 or later (Bug#17487).
+ * internals.texi (C Dialect): Document this.
+
+2014-05-15 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * lists.texi (Building Cons Cells and Lists): Remove
+ description of `reverse' and `'nreverse' to generalize them...
+ * sequences.texi (Sequences): ...for sequences here.
+
+2014-05-14 Glenn Morris <rgm@gnu.org>
+
+ * files.texi (Changing Files): Mention with-file-modes.
+
+2014-05-08 Paul Eggert <eggert@cs.ucla.edu>
* internals.texi (C Dialect): New section.
(C Integer Types): Mention bool_bf.
-2014-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-30 Stefan Monnier <monnier@iro.umontreal.ca>
* processes.texi (Filter Functions, Sentinels): Advertise add-function.
-2014-04-24 Eli Zaretskii <eliz@gnu.org>
+2014-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * windows.texi (Window Configurations, Window Configurations):
+ Window configs don't store marks any more.
+
+2014-04-25 Eli Zaretskii <eliz@gnu.org>
* strings.texi (Text Comparison): Mention equal-including-properties
for when text properties of the strings matter for comparison.
-2014-04-21 Eli Zaretskii <eliz@gnu.org>
+2014-04-22 Eli Zaretskii <eliz@gnu.org>
* text.texi (Registers): Document register-read-with-preview.
* internals.texi (Building Emacs): Improve indexing.
-2014-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-17 Daniel Colascione <dancol@dancol.org>
- * display.texi (Overlay Properties): Reword the doc of `priority'.
- (Finding Overlays): Document new arg of `overlays-at'.
+ * frames.texi (Terminal Parameters): Document new
+ tty-mode-set-strings and tty-mode-reset-strings terminal
+ parameters.
-2014-04-05 Glenn Morris <rgm@gnu.org>
+2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
- * os.texi (Recording Input): Dribble files may contain passwords.
+ * Makefile.in (infoclean): Be consistent about reporting failures.
+
+2014-04-09 Daniel Colascione <dancol@dancol.org>
+
+ * errors.texi (Standard Errors): Document required error
+ parameters for `scan-error'.
+
+ * positions.texi (List Motion): Explain new `up-list' arguments.
+ Mention `backward-up-list'.
-2014-04-04 Glenn Morris <rgm@gnu.org>
+2014-04-08 Daniel Colascione <dancol@dancol.org>
+
+ * minibuf.texi (Programmed Completion): Improve phrasing, remove
+ incorrect bullet count.
+
+2014-04-07 Glenn Morris <rgm@gnu.org>
+
+ * os.texi (Recording Input): Dribble files may contain passwords.
* backups.texi (Making Backups, Reverting):
Update for default values of some -function vars no longer being nil.
(Reverting): Update for buffer-stale-function
also applying to file-buffers.
-2014-03-25 Eli Zaretskii <eliz@gnu.org>
+2014-03-31 Daniel Colascione <dancol@dancol.org>
+
+ * minibuf.texi (Completion in Buffers): Discuss using lazy
+ completion tables for inline completion.
+
+2014-03-28 Glenn Morris <rgm@gnu.org>
+
+ * os.texi (Terminal-Specific): Mention term-file-aliases.
+
+2014-03-26 Eli Zaretskii <eliz@gnu.org>
* files.texi (Kinds of Files): Improve documentation of
file-symlink-p. (Bug#17073) Add cross-references.
-2014-03-24 Barry O'Reilly <gundaetiapo@gmail.com>
+2014-03-26 Barry O'Reilly <gundaetiapo@gmail.com>
* markers.texi (Moving Marker Positions): The 2014-03-02 doc
change mentioning undo's inability to handle relocated markers no
* text.texi (Undo): Expand documentation of (TEXT . POS) and
(MARKER . ADJUSTMENT) undo elements.
+2014-03-26 Glenn Morris <rgm@gnu.org>
+
+ * files.texi (File Locks): All systems support locking.
+
2014-03-22 Glenn Morris <rgm@gnu.org>
+ * commands.texi (Defining Commands):
+ Mention that interactive-only also affects describe-function.
+
+ * functions.texi (Declare Form): Add interactive-only.
+ * commands.texi (Defining Commands) Mention declare.
+
* commands.texi (Defining Commands): List interactive-only values.
2014-03-22 Eli Zaretskii <eliz@gnu.org>
* functions.texi (Core Advising Primitives): Fix cross-reference
in last change.
-2014-03-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-03-22 Stefan Monnier <monnier@iro.umontreal.ca>
* functions.texi (Advising Functions): Explain a bit more how
arguments work.
-2014-05-24 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Specify coding if Latin-1 Emacs would misinterpret (Bug#17575).
+ * htmlfontify.texi, org.texi: Add "coding: utf-8".
+
-2014-05-23 Stephen Berman <stephen.berman@gmx.net>
++2014-05-26 Stephen Berman <stephen.berman@gmx.net>
+
+ * todo-mode.texi: Update in light of changes due to bug#17482.
+ Replace numerous mistaken uses of literal quotes with proper
+ Texinfo markup.
+ (Todo Mode Entry Points): Comment out reference to using find-file
+ or Dired to visit Todo files, since this has been disabled (bug#17482).
+
-2014-05-06 Michael Albinus <michael.albinus@gmx.de>
+2014-05-20 Leo Liu <sdl.web@gmail.com>
+
+ * cl.texi (List Functions, Efficiency Concerns): Update cl-endp.
+
+2014-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * texinfo.tex: Update from gnulib.
+
+2014-05-08 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Frequently Asked Questions): Mention HISTFILE
setting in ~/.ssh/environment.
-2014-05-02 Stephen Berman <stephen.berman@gmx.net>
+2014-05-04 Stephen Berman <stephen.berman@gmx.net>
* todo-mode.texi: Update, improve exposition, add cross
references, fix typos.
(Inserting New Items, Editing Item Headers and Text): Rewrite to
document new user interface.
-2014-05-01 Glenn Morris <rgm@gnu.org>
+2014-05-04 Glenn Morris <rgm@gnu.org>
* autotype.texi (Skeleton Language):
* message.texi (Header Commands): Replace `iff'.
+2014-05-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * vhdl-mode.texi: Add "@documentencoding UTF-8",
+ since this is a toplevel .texi file.
+
2014-04-22 Bastien Guerry <bzg@gnu.org>
* org.texi (Installation): Be more clear on why installing Org
* org.texi (Top, Exporting): Org has its own documentation and
should therefore be removed from "Other build-in back-ends".
+2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * cl.texi (Structures): Remove cl-struct-set-slot-value.
+
+2014-04-20 Daniel Colascione <dancol@dancol.org>
+
+ * cl.texi (Declarations): Document changes to `cl-the' and defstruct functions.
+
+2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.in (infoclean): Be consistent about reporting failures.
+
+2014-03-27 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (INFO_COMMON): Add vhdl-mode.
+ (vhdl_mode_deps, vhdl-mode, $(buildinfodir)/vhdl-mode$(INFO_EXT))
+ (vhdl-mode.dvi, vhdl-mode.pdf, vhdl-mode.html): New rules/variables.
+
+ * vhdl-mode.texi: General clean-up. Set copyright to FSF, add license.
+ Remove hand-written node pointers. Remove info re old Emacs versions.
+ Markup fixes.
+ (Getting Connected): Remove irrelevant info.
+ (Indentation Commands, Requirements): Remove empty/irrelevant nodes.
+ (Frequently Asked Questions): Electric indent is now enabled.
+
+2014-03-27 Reto Zimmermann <reto@gnu.org>
+ Rod Whitby <software.vhdl-mode@rwhitby.net>
+
+ * vhdl-mode.texi: New file, imported from upstream vhdl-mode.
+
2014-03-26 Paul Eggert <eggert@cs.ucla.edu>
* texinfo.tex: Update from gnulib.
-2014-03-24 Michael Albinus <michael.albinus@gmx.de>
+2014-03-26 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Frequently Asked Questions): Add fish shell settings.
+2014-03-23 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus.texi (Ma Gnus): Mention header attachment buttons.
+
+2014-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * emacs-mime.texi (MML Definition): Document recipient-filename.
+
+2014-03-23 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus.texi (MIME Commands): Mention
+ gnus-mime-buttonize-attachments-in-header and
+ gnus-mime-display-attachment-buttons-in-header.
+
+2014-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * message.texi (Forwarding): Mention
+ `message-forward-included-headers'.
+
+2014-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi: w3 is no longer supported by Gnus.
+
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * efaq.texi (Informational files for Emacs): Do not mention etc/GNU.
+
2014-03-21 Glenn Morris <rgm@gnu.org>
* ede.texi (ede-linux):
-2014-05-24 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Specify coding if Latin-1 Emacs would misinterpret (Bug#17575).
+ * ETAGS.EBNF, NEWS, ORG-NEWS: Add "coding: utf-8".
+
+2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Assume C99 or later (Bug#17487).
+
+2014-05-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't require pkg-config when building from repository.
+ * NEWS: Prefer './configure FOO=BAR' to 'FOO=BAR ./configure'.
+ * PROBLEMS (Build-time-problems): Remove pkg-config problem
+ that is no longer an issue.
+
+2014-05-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * PROBLEMS: Mention potential problems with
+ --enable-link-time-optimization and clang on Fedora 20.
+
+2014-05-04 Leo Liu <sdl.web@gmail.com>
+
+ * NEWS: Mention support for Chinese dates in calendar and diary.
+
+2014-04-20 Daniel Colascione <dancol@dancol.org>
+
+ * NEWS: Mention new struct functions and changes to `cl-the'.
+
+2014-04-17 Daniel Colascione <dancol@dancol.org>
+
+ * NEWS: Mention bracketed paste support.
+
2014-04-11 Glenn Morris <rgm@gnu.org>
* refcards/cs-dired-ref.tex, refcards/cs-refcard.tex:
* refcards/sk-refcard.tex, refcards/sk-survival.tex:
Input "utf8off", which seems to be needed.
+2014-04-01 Michael Albinus <michael.albinus@gmx.de>
+
+ * NEWS: `url-handler-mode' passes operations to Tramp for some
+ protocols.
+
+2014-03-28 Tassilo Horn <tsdh@gnu.org>
+
+ * themes/tsdh-light-theme.el (tsdh-light): Add gnus-group-* faces.
+
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * CENSORSHIP, GNU, LINUX-GNU, THE-GNU-PROJECT, WHY-FREE: Replace
+ contents with pointers to www.gnu.org or emacs.info, mark obsolete.
+
2014-03-14 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
* tutorials/TUTORIAL.de: Adapt to recent changes in TUTORIAL.
otherwise leave it unmarked.
\f
+* Installation Changes in Emacs 24.5
+
++++
+** Building Emacs now requires C99 or later.
+
+** Building Emacs now requires GNU make.
+
+** By default, Emacs no longer works on IRIX. We expect that Emacs
+users are not affected by this, as SGI stopped supporting IRIX in
+December 2013. If you are affected, please send a bug report. You
+should be able to work around the problem either by porting the Emacs
+undumping code to GCC under IRIX, or by configuring --with-wide-int,
+or by sticking with Emacs 24.4.
+
+---
+** The configure option `--with-pkg-config-prog' has been removed.
+Use './configure PKG_CONFIG=/full/name/of/pkg-config' if you need to.
+
+\f
+* Startup Changes in Emacs 24.5
+
+\f
+* Changes in Emacs 24.5
+
+---
+** The default value of `history-length' has increased to 100.
+
++++
+** The new variable `term-file-aliases' replaces some files from lisp/term.
+The function `tty-run-terminal-initialization' consults this variable
+when deciding what terminal-specific initialization code to run.
+
+---
+** New variable `system-configuration-features', listing some of the
+main features that Emacs was compiled with. This is mainly intended
+for use in Emacs bug reports.
+
+\f
+* Editing Changes in Emacs 24.5
+
+Emacs now supports "bracketed paste mode" when running on a terminal
+that supports it. This facility allows Emacs to understand pasted
+chunks of text as strings to be inserted instead of interpreting each
+character in the pasted text as actual user input, resulting in a
+paste experience similar to that under a window system and significant
+performance improvements when pasting large amounts of text.
+
+\f
+* Changes in Specialized Modes and Packages in Emacs 24.5
+
+---
+** The Rmail commands d, C-d and u now handle repeat counts
+to delete or undelete multiple messages.
+
+** Calendar and diary
+
++++
+*** New commands to insert diary entries with Chinese dates:
+`diary-chinese-insert-anniversary-entry' `diary-chinese-insert-entry'
+`diary-chinese-insert-monthly-entry'
+`diary-chinese-insert-yearly-entry'
+
++++
+*** Calendar can list and mark diary entries with Chinese dates:
+`diary-chinese-list-entries' and `diary-chinese-mark-entries'.
+
+** In sh-mode, you can now use `sh-shell' as a file-local variable to
+specify the type of shell in use (bash, csh, etc).
+
+** The URL package accepts now the protocols "ssh", "scp" and "rsync".
+When `url-handler-mode' is enabled, file operations for these
+protocols as well as for "telnet" and "ftp" are passed to Tramp.
+
+** Obsolete packages
+
+---
+*** gulp.el
+
+\f
+* New Modes and Packages in Emacs 24.5
+
+\f
+* Incompatible Lisp Changes in Emacs 24.5
+
+** window-configurations do not record the buffers's marks any more.
+
+** inhibit-modification-hooks now also inhibits lock-file checks as well as
+active region handling.
+
+** deactivate-mark is now buffer-local.
+
+** cl-the now asserts that its argument is of the given type.
+
+\f
+* Lisp Changes in Emacs 24.5
+
+** New function `function-put' to use instead of `put' for function properties.
+
++++
+** New properties that can be specified with `declare':
+*** (interactive-only INSTEAD), tells to use INSTEAD for non-interactive use.
+*** (pure VAL), if VAL is non-nil, indicates the function is pure.
+*** (side-effect-free VAL), if VAL is non-nil, indicates the function does not
+have side effects.
+
++++
+** New macro `with-file-modes', for evaluating expressions with default file
+permissions set to temporary values (e.g., for creating private files).
+
+** You can access the slots of structures using `cl-struct-slot-value'.
+
+\f
+* Changes in Emacs 24.5 on Non-Free Operating Systems
+
+\f
* Installation Changes in Emacs 24.4
---
*** `generic-make-keywords-list'
*** `get-upcase-table' (use `case-table-get-table' instead).
- +++
** `with-wrapper-hook' is obsoleted by `add-function'.
The few hooks that used with-wrapper-hook are replaced as follows:
*** `abbrev-expand-function' obsoletes `abbrev-expand-functions'.
\f
Local variables:
+ coding: utf-8
mode: outline
paragraph-separate: "[ \f]*$"
end:
-2014-05-20 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix rcs2log problems with CVS.
+ Problem reported by Glenn Morris in
+ <http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00277.html>.
+ Plus, fix some security and filename quoting problems.
+ * rcs2log (logdir): Prefer mktemp if available.
+ (logdir, llogdir): Work even if TMPDIR begins with '-' or has spaces.
+ (output_authors, main awk script): Parse more-recent CVS output format.
+
-2014-05-03 Paul Eggert <eggert@cs.ucla.edu>
+2014-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove dependencies on getline and getdelim.
+ Also, remove update-game-scores's limits on game scores and
+ simplify its file-locking code.
+ * update-game-score.c (struct score_entry): Unify the username and
+ data members to a single user_data member, since they don't need to be
+ changed independently and getdelim and getline aren't helpful.
+ Make the score member char *, not intmax_t, so that scores are not
+ limited to intmax_t. All uses changed.
+ (lose_syserr): A zero errno stands for invalid data in score file.
+ (normalize_integer): New function.
+ (main): Use it. Check for invalid scores. Omit redundant stat check.
+ (read_score): First arg is now a string, not a FILE *. All uses
+ changed. Do not use getdelim or getline; that's way simpler.
+ (read_scores): Read the whole file, and let read_score handle each
+ line.
+ (score_compare): Compare strings representing integers, not integers.
+ (write_scores) [DOS_NT]: Eliminate unnecessary chmod.
+ (lock_file): Simplify locking code, eliminating goto.
+ Check for unlink failure.
+
+2014-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port ctags+etags build to Sun C 5.12.
+ * Makefile.in (etags_args): Remove, replacing with ...
+ (etags_cflags, etags_libs): New macros. All uses changed.
+ (ctags${EXEEXT}): Don't compile etags.c, as compiling etags.c in
+ parallel (once for ctags, once for etags) breaks parallel makes
+ with compilers that use the source file name to name temporaries,
+ such as Sun C 5.12. Instead, compile ctags.c.
+ * ctags.c: New file.
+
+2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
Handle systems without WCONTINUED consistently. (Bug#15110, 17339)
* emacsclient.c (WCONTINUED): Move to ../src/syswait.h.
-2014-04-29 Glenn Morris <rgm@gnu.org>
+2014-04-30 Glenn Morris <rgm@gnu.org>
* Makefile.in ($(DESTDIR)${archlibdir}):
Avoid non-portable "`\" nesting. (Bug#17339)
* update-game-score.c (write_scores): Condition fchmod call on
DOS_NT, not WINDOWSNT.
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (etags_deps, etags_args): New, to reduce duplication.
+ (etags${EXEEXT}, ctags${EXEEXT}): Use etags_deps, etags_args.
+
+ * Makefile.in (etags${EXEEXT}, ebrowse${EXEEXT}, ctags${EXEEXT})
+ (profile${EXEEXT}, make-docfile${EXEEXT}, movemail${EXEEXT})
+ (emacsclient${EXEEXT}, emacsclientw${EXEEXT}, hexl${EXEEXT})
+ (update-game-score${EXEEXT}, emacsclient.res): Use $@.
+
+ * Makefile.in (../lib/libgnu.a): Explicitly pass MFLAGS.
+
+ * Makefile.in (DONT_INSTALL): Remove test-distrib.
+ (test-distrib${EXEEXT}): Remove rule.
+
+ * test-distrib.c, testfile: Remove.
+
2014-03-10 Juanma Barranquero <lekktu@gmail.com>
* emacsclient.c (main): #ifdef out previous change on Windows.
-2014-05-25 Andreas Schwab <schwab@linux-m68k.org>
++2014-05-26 Andreas Schwab <schwab@linux-m68k.org>
+
+ * cus-face.el (custom-face-attributes): Add :distant-foreground.
+
-2014-05-25 Martin Rudalics <rudalics@gmx.at>
++2014-05-26 Martin Rudalics <rudalics@gmx.at>
+
- * window.el (window--dump-frame): Remove interactive
- specification.
++ * window.el (window--dump-frame): Remove interactive specification.
+
-2014-05-23 Glenn Morris <rgm@gnu.org>
++2014-05-26 Glenn Morris <rgm@gnu.org>
+
+ * hippie-exp.el (he-line-search-regexp):
+ Handle comint-prompt-regexp containing subgroups. (Bug#17529)
+
-2014-05-23 Stephen Berman <stephen.berman@gmx.net>
++2014-05-26 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todo-mode.el: Remove dependence on auto-mode-alist,
+ to avoid errors when trying to create or visit a file foo.todo
+ located outside to todo-directory, and to allow having such files
+ without them being tied to Todo mode (bug#17482).
+ (todo-show, todo-move-category, todo-merge-category, todo-find-archive)
+ (todo-archive-done-item, todo-find-filtered-items-file)
+ (todo-filter-items, todo-find-item, todo-diary-goto-entry)
+ (todo-category-completions, todo-read-category): When visiting a
+ Todo file, make sure we're in the right mode and the buffer local
+ variables are set.
+ (todo-make-categories-list, todo-reset-nondiary-marker)
+ (todo-reset-done-string, todo-reset-comment-string): After
+ processing all Todo files, kill the buffers of those files that
+ weren't being visited before the processing.
+ (todo-display-as-todo-file, todo-add-to-buffer-list)
+ (todo-visit-files-commands): Comment out.
+ (todo-modes-set-3, todo-mode): Comment out additions to find-file-hook.
+ (auto-mode-alist): Remove add-to-list calls making Todo file
+ extensions unrestrictedly tied to Todo modes.
+
-2014-05-23 Stefan Monnier <monnier@iro.umontreal.ca>
++2014-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/nadvice.el (advice--member-p): Change second arg.
+ (advice-function-member-p): Tell it to check both names and functions
+ (bug#17531).
+ (advice--add-function): Adjust call accordingly.
+
-2014-05-23 Stephen Berman <stephen.berman@gmx.net>
++2014-05-26 Stephen Berman <stephen.berman@gmx.net>
+
+ * calendar/todo-mode.el: Miscellaneous bug fixes.
+ (todo-delete-file): When deleting an archive but not its todo
+ file, make sure to update the todo file's category sexp.
+ (todo-move-category): Keep the moved category's name unless the
+ file moved to already has a category with that name. If the
+ numerically last category of the source file was moved, make the
+ first category current to avoid selecting a nonexisting category.
+ (todo-merge-category): Fix implementation to make merging to a
+ category in another file work as documented. Eliminate now
+ insufficient and unnecessary renaming of archive category, correct
+ document string accordingly, and clarify it. If the numerically
+ last category of the source file was merged, make the first
+ category current to avoid selecting a nonexisting category.
+ (todo-archive-done-item): When there are marked items and point
+ happens to be on an unmarked item, ignore the latter. Don't leave
+ point below last item after archiving marked items.
+ (todo-unarchive-items): Fix logic to ensure unarchiving an item
+ from an archive with only one category deletes the archive only
+ when the category is empty after unarchiving. Make sure the todo
+ file's category sexp is updated.
+ (todo-read-file-name): Allow an existing file name even when it is
+ not required (todo-move-category needs this to work as documented).
+ (todo-add-file): Call todo-validate-name to reject the name of an
+ existing todo file (needed due to fix in todo-read-file-name).
+ (todo-reset-nondiary-marker): Also reset in filtered items files.
+ (todo-reset-done-string, todo-reset-comment-string): Also reset in
+ regexp filtered items files.
+ (todo-reset-highlight-item): Also reset in filtered items files.
+ Fix incorrect variable reference in document string.
+
-2014-05-22 Glenn Morris <rgm@gnu.org>
++2014-05-26 Glenn Morris <rgm@gnu.org>
+
+ * window.el (window--dump-frame): Avoid error in --without-x builds.
+
-2014-05-21 Glenn Morris <rgm@gnu.org>
++2014-05-26 Glenn Morris <rgm@gnu.org>
+
+ * nxml/nxml-mode.el (xml-mode): Only define this alias once.
+
-2014-05-21 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * frame.el (set-frame-font): Doc fix.
+
+ * menu-bar.el (menu-set-font): Doc fix. (Bug#17532)
+
-2014-05-21 Dmitry Gutov <dgutov@yandex.ru>
++2014-05-26 Dmitry Gutov <dgutov@yandex.ru>
+
+ * emacs-lisp/package.el (package--download-one-archive): Use
+ `write-region' instead of `save-buffer' to avoid running various
+ hooks. (Bug#17155)
+ (describe-package-1): Same. Insert newline at the end of the
+ buffer if appropriate.
+
-2014-05-20 Juri Linkov <juri@jurta.org>
++2014-05-26 Juri Linkov <juri@jurta.org>
+
+ * avoid.el (mouse-avoidance-set-mouse-position): Don't raise frame.
+ (mouse-avoidance-ignore-p): Remove `switch-frame', add `focus-out'.
+ Add more modifiers: meta, control, shift, hyper, super, alt.
+ (Bug#17439)
+
+ * avoid.el (mouse-avoidance-banish-position): Fix defcustom :options
+ to allow changing its value with `set-variable'.
+
-2014-05-20 Stefan Monnier <monnier@iro.umontreal.ca>
++2014-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/scheme.el (scheme-mode-syntax-table): Remove hack for
+ #; comments.
+ (scheme-syntax-propertize, scheme-syntax-propertize-sexp-comment):
+ New functions.
+ (scheme-mode-variables): Set syntax-propertize-function instead of
+ font-lock-syntactic-face-function.
+ (scheme-font-lock-syntactic-face-function): Delete.
+
+ * emacs-lisp/lisp.el (end-of-defun): Ensure we move (bug#17274).
+
-2014-05-18 Stefan Monnier <monnier@iro.umontreal.ca>
-
+ * emacs-lisp/timer.el (timer-event-handler): Don't run if canceled
+ (bug#17392).
+
-2014-05-17 Michael Albinus <michael.albinus@gmx.de>
++2014-05-26 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-find-inline-encoding): Do not match "%%t"
+ for a temporary file name.
+
-2014-05-17 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * simple.el (line-move-ignore-invisible): Doc fix. (Bug#17511)
+
-2014-05-16 Michael Albinus <michael.albinus@gmx.de>
++2014-05-26 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/dbus.el (dbus-init-bus, dbus-call-method)
+ (dbus-call-method-asynchronously, dbus-send-signal)
+ (dbus-method-return-internal, dbus-method-error-internal):
+ Check, whether Emacs has been compiled with D-Bus support. (Bug#17508)
+
-2014-05-14 Nicolas Richard <theonewiththeevillook@yahoo.fr>
++2014-05-26 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+
+ * emacs-lisp/eieio-opt.el (eieio-help-class): Correctly deal with
+ methods which do not have a doc string. (Bug#17490)
+
+2014-05-25 Tassilo Horn <tsdh@gnu.org>
+
+ * textmodes/reftex-ref.el (reftex-format-special): Make it work
+ also for AMS Math's \eqref macro.
+
+2014-05-25 Thien-Thi Nguyen <ttn@gnu.org>
+
+ Arrange to never byte-compile the generated -pkg.el file.
+
+ * emacs-lisp/package.el (package-generate-description-file):
+ Output first-line comment to set buffer-local var `no-byte-compile'.
+ Suggested by Dmitry Gutov:
+ <http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00401.html>.
+
+2014-05-25 Thien-Thi Nguyen <ttn@gnu.org>
+
+ Fix bug: Properly quote args to generated -pkg.el `define-package'.
+
+ * emacs-lisp/package.el (package-generate-description-file):
+ Inline `package--alist-to-plist'; rewrite to selectively
+ quote alist values that are not self-quoting.
+ (package--alist-to-plist): Delete func.
+
+2014-05-25 Andreas Schwab <schwab@linux-m68k.org>
+
+ * term/xterm.el (xterm-function-map): Add mapping for shifted
+ keypad keys.
+
+2014-05-24 Daniel Colascione <dancol@dancol.org>
+
+ * progmodes/subword.el (subword-find-word-boundary): Move point to
+ correct spot before search. (Bug#17580)
+
+ * emacs-lisp/nadvice.el (defun): Write in eval-and-compile to avoid
+ breaking the build.
+
+2014-05-24 Leo Liu <sdl.web@gmail.com>
+
+ * calc/calc.el (math-bignum): Handle most-negative-fixnum. (Bug#17556)
+
+2014-05-23 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuffer.el (completion--sreverse): Remove.
+ (completion--common-suffix): Use `reverse' instead.
+ * emacs-lisp/regexp-opt.el (regexp-opt-group): Use `reverse' on strings.
+
+2014-05-22 Glenn Morris <rgm@gnu.org>
+
+ * shell.el (shell-mode) <shell-dirstack-query>: Bypass bash aliases.
+
+2014-05-21 Daniel Colascione <dancol@dancol.org>
+
+ * files.el (interpreter-mode-alist): Add mksh.
+
+ * progmodes/sh-script.el (sh-ancestor-alist): Add mksh, a pdksh
+ derivative.
+ (sh-alias-alist): Alias /system/bin/sh (Android's system shell) to
+ mksh. Improve custom spec; allow regular expressions.
+ (sh-shell): Delegate name splitting to `sh-canonicalize-shell'.
+ (sh-after-hack-local-variables): New function.
+ (sh-mode): Use it; respect file-local `sh-shell' variable. (bug#17333)
+ (sh-set-shell): Use `sh-canonicalize-shell' instead of open-coding
+ the normalization.
+ (sh-canonicalize-shell): Rewrite to support regexes.
+
+2014-05-21 Leo Liu <sdl.web@gmail.com>
+
+ * emacs-lisp/cl-lib.el (cl-endp): Fix last change.
+
+2014-05-19 Leo Liu <sdl.web@gmail.com>
+
+ * emacs-lisp/cl-lib.el (cl-endp): Conform to CL's semantics.
+
+2014-05-18 Glenn Morris <rgm@gnu.org>
+
+ * loadup.el:
+ * play/gametree.el: `track-mouse' is always defined since 2012-11-24.
+
+2014-05-14 Sam Steingold <sds@gnu.org>
+
+ * progmodes/python.el (python-shell-get-or-create-process):
+ Do not bind `current-prefix-arg' so that C-c C-z does not talk
+ back unless requested.
+
+2014-05-14 Glenn Morris <rgm@gnu.org>
+
+ * subr.el (with-file-modes): New macro.
+ * printing.el (pr-save-file-modes): Make obsolete.
+ * eshell/esh-util.el (eshell-with-file-modes): Make obsolete.
+ * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
+ Add with-file-modes.
+ * doc-view.el (doc-view-make-safe-dir):
+ * epg.el (epg--start):
+ * files.el (locate-user-emacs-file, make-temp-file)
+ (backup-buffer-copy, move-file-to-trash):
+ * printing.el (pr-despool-print, pr-call-process, pr-text2ps):
+ * eshell/esh-util.el (eshell-with-private-file-modes)
+ (eshell-make-private-directory):
+ * net/browse-url.el (browse-url-mosaic):
+ * obsolete/mailpost.el (post-mail-send-it):
+ * obsolete/pgg-pgp.el (pgg-pgp-verify-region):
+ * obsolete/pgg-pgp5.el (pgg-pgp5-verify-region):
+ Use with-file-modes.
+
+ * vc/emerge.el (emerge-make-temp-file): Simplify.
+
2014-05-14 Stephen Berman <stephen.berman@gmx.net>
Stefan Monnier <monnier@iro.umontreal.ca>
Make pointless option obsolete.
(emerge-temp-file-mode): Make non-functional option obsolete.
-2014-05-13 Michael Albinus <michael.albinus@gmx.de>
+2014-05-14 Michael Albinus <michael.albinus@gmx.de>
* net/browse-url.el (browse-url):
Use `unhandled-file-name-directory' when setting `default-directory',
in order to circumvent stalled remote connections. (Bug#17425)
+2014-05-14 Glenn Morris <rgm@gnu.org>
+
+ * printing.el (subst-char-in-string, make-temp-file, pr-get-symbol):
+ Optimize on Emacs, which has the relevant functions for ages.
+
+2014-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * simple.el (undo-make-selective-list): Obey undo-no-redo.
+
+2014-05-12 Sam Steingold <sds@gnu.org>
+
+ * calendar/time-date.el (seconds-to-string): New function to
+ pretty print time delay in seconds.
+
2014-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
+ * mpc.el (mpc-format): Trim Date to the year.
+ (mpc-songs-hashcons): Shorten the Date field.
+
* emacs-lisp/nadvice.el (advice--interactive-form): Don't get fooled
into autoloading just because of a silly indirection.
-2014-05-11 Santiago Payà i Miralta <santiagopim@gmail.com> (tiny change)
+2014-05-12 Santiago Payà i Miralta <santiagopim@gmail.com> (tiny change)
* vc/vc-hg.el (vc-hg-unregister): New function. (Bug#17454)
-2014-05-11 Glenn Morris <rgm@gnu.org>
+2014-05-12 Glenn Morris <rgm@gnu.org>
* emacs-lisp/find-gc.el: Move to ../admin.
-2014-05-10 Glenn Morris <rgm@gnu.org>
-
* printing.el (pr-version):
* ps-print.el (ps-print-version): Also mention bug-gnu-emacs.
* net/browse-url.el (browse-url-mosaic):
Create /tmp/Mosaic.PID as a private file.
-2014-05-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/nadvice.el: Support adding a given function multiple times.
(advice--member-p): If name is given, only compare the name.
(advice--add-function): Pass the name, if any, to
advice--remove-function.
-2014-05-09 Philipp Rumpf <prumpf@gmail.com> (tiny change)
+2014-05-12 Philipp Rumpf <prumpf@gmail.com> (tiny change)
* electric.el (electric-indent-post-self-insert-function): Don't use
`pos' after modifying the buffer (bug#17449).
-2014-05-09 Stefan Monnier <monnier@iro.umontreal.ca>
-
- * subr.el (function-put): Add function.
-
-2014-05-09 Stephen Berman <stephen.berman@gmx.net>
+2014-05-12 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el (todo-insert-item-from-calendar):
Correct argument list to conform to todo-insert-item--basic.
-2014-05-09 Glenn Morris <rgm@gnu.org>
+2014-05-12 Glenn Morris <rgm@gnu.org>
* files.el (cd-absolute): Test if directory is accessible
rather than executable. (Bug#17330)
* progmodes/compile.el (recompile):
Handle C-u M-x recompile from a non-compilation buffer. (Bug#17444)
-2014-05-08 Juri Linkov <juri@jurta.org>
-
- * dired.el (dired-check-switches, dired-switches-recursive-p):
- New functions. (Bug#17218)
- (dired-switches-escape-p, dired-move-to-end-of-filename):
- Use `dired-check-switches'.
- (dired-insert-old-subdirs, dired-build-subdir-alist)
- (dired-sort-R-check): Use `dired-switches-recursive-p'.
-
-2014-05-08 Glenn Morris <rgm@gnu.org>
-
* net/browse-url.el (browse-url-mosaic):
Be careful when writing /tmp/Mosaic.PID. (Bug#17428)
This is CVE-2014-3423.
+2014-05-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * mouse.el: Use the normal toplevel loop while dragging.
+ (mouse-set-point): Handle multi-clicks.
+ (mouse-set-region): Handle multi-clicks for drags.
+ (mouse-drag-region): Update call accordingly.
+ (mouse-drag-track): Remove `do-mouse-drag-region-post-process' hack.
+ Use the normal event loop instead of a local while/read-event loop.
+ (global-map): Remove redundant bindings for double/triple-mouse-1.
+ * xt-mouse.el (xterm-mouse-translate-1): Only process one event at a time.
+ Generate synthetic down events when the protocol only sends up events.
+ (xterm-mouse-last): Remove.
+ (xterm-mouse--read-event-sequence-1000): Use xterm-mouse-last-down
+ terminal parameter instead.
+ (xterm-mouse--set-click-count): New function.
+ (xterm-mouse-event): Detect/generate double/triple clicks.
+ * reveal.el (reveal-close-old-overlays): Don't close while dragging.
+
+ * info.el (Info-quoted): New face.
+ (Info-mode-font-lock-keywords): New var.
+ (Info-mode): Use it.
+
+ * emacs-lisp/lisp-mode.el (preceding-sexp): Exclude leading "," which
+ are a hindrance for C-x C-e.
+
+2014-05-11 Leo Liu <sdl.web@gmail.com>
+
+ * net/rcirc.el (rcirc-sentinel): Fix last change.
+
+2014-05-08 Sam Steingold <sds@gnu.org>
+
+ * net/rcirc.el (rcirc-reconnect-delay): New user option.
+ (rcirc-sentinel): Auto-reconnect to the server if
+ `rcirc-reconnect-delay' is non-0 (but not more often than its
+ value in case the host is off-line).
+
+2014-05-09 Eli Zaretskii <eliz@gnu.org>
+
+ * progmodes/grep.el (lgrep): Fix a typo in last commit.
+
+2014-05-09 Glenn Morris <rgm@gnu.org>
+
+ * files.el (file-expand-wildcards):
+ * man.el (Man-support-local-filenames):
+ * printing.el (pr-i-directory, pr-interface-directory):
+ * progmodes/grep.el (lgrep, rgrep):
+ * textmodes/ispell.el (ispell-call-process)
+ (ispell-call-process-region, ispell-start-process)
+ (ispell-init-process): Use file-accessible-directory-p.
+
2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
* xt-mouse.el: Drop spurious/oddly shaped events (bug#17378).
(xterm-mouse-event): Propagate it.
(xterm-mouse-translate-1): Handle it.
-2014-05-07 Stephen Berman <stephen.berman@gmx.net>
+2014-05-08 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el (todo-insert-item--apply-args): When all
four slots of the parameter list are filled, make sure to pass it
to the argument list of todo-insert-item--basic.
-2014-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/package.el (package-compute-transaction): Topological sort.
Add optional `seen' argument to detect and break infinite loops.
-2014-05-06 Eli Zaretskii <eliz@gnu.org>
+2014-05-08 Eli Zaretskii <eliz@gnu.org>
* emacs-lisp/find-gc.el (find-gc-unsafe, find-unsafe-funcs)
(trace-unsafe, trace-use-tree): Make parentheses style be
according to Emacs style.
-2014-05-06 Michael Albinus <michael.albinus@gmx.de>
+2014-05-08 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-remote-process-environment):
Remove HISTFILE and HISTSIZE; it's too late to set them here.
Add :version entry.
(tramp-open-shell): Do not let-bind `tramp-end-of-output'.
- Add "HISTFILE=/dev/null" to the shell's env arguments. Do not send
+ Add "HISTSIZE=/dev/null" to the shell's env arguments. Do not send
extra "PSx=..." commands.
(tramp-maybe-open-connection): Setenv HISTFILE to /dev/null.
(Bug#17295)
name. (Bug#17415)
This is CVE-2014-3424.
-2014-05-06 Glenn Morris <rgm@gnu.org>
+2014-05-08 Glenn Morris <rgm@gnu.org>
* emacs-lisp/find-gc.el (find-gc-source-directory): Give it a value.
(find-gc-source-files): Update some names.
Avoid predictable temp-file names. (http://bugs.debian.org/747100)
This is CVE-2014-3422.
-2014-05-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
* minibuffer.el (completion--try-word-completion): Revert fix for
Bug#15980 (bug#17375).
Don't burp is xterm-mouse-last is not set as expected.
Never return negative indices.
-2014-05-05 Dmitry Gutov <dgutov@yandex.ru>
+2014-05-08 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-syntax-propertize-function):
Backtrack one char if the global/char-literal var matcher hits
inside a string. The next char could be the beginning of an
expression expansion.
-2014-05-05 Glenn Morris <rgm@gnu.org>
+2014-05-08 Glenn Morris <rgm@gnu.org>
* help-fns.el (describe-function-1): Test for an autoload before a
macro, since `macrop' works on autoloads. (Bug#17410)
-2014-05-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
* electric.el (electric-indent-functions-without-reindent): Add yaml.
* minibuffer.el (completion-table-with-quoting) <completion--unquote>:
Make sure the new point we return is within the new string (bug#17239).
-2014-05-03 Eli Zaretskii <eliz@gnu.org>
+2014-05-05 Daniel Colascione <dancol@dancol.org>
+
+ * progmodes/compile.el (compilation-error-regexp-alist-alist):
+ Port `gnu' pattern to rx.
+
+2014-05-05 Jarek Czekalski <jarekczek@poczta.onet.pl>
+
+ Remove unneeded prompt when closing a buffer with active
+ emacsclient ("Buffer ... still has clients"), #16548.
+ * server.el (server-start): Remove the only call to:
+ (server-kill-buffer-query-function): Remove.
+
+2014-05-04 Leo Liu <sdl.web@gmail.com>
+
+ * calendar/diary-lib.el (calendar-chinese-month-name-array):
+ Defvar to pacify compiler.
+
+2014-05-04 Eli Zaretskii <eliz@gnu.org>
* mail/rmailsum.el (rmail-new-summary-1): Fix a typo in a comment.
-2014-05-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-04 Stefan Monnier <monnier@iro.umontreal.ca>
* vc/ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer):
Use nil rather than `default' for the "default" appearance (bug#17388).
* vc/ediff-init.el (ediff-set-overlay-face): Don't set help-echo if the
overlay is not visible.
-2014-05-02 Stephen Berman <stephen.berman@gmx.net>
+2014-05-04 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el (todo-edit-file): Use display-warning.
(todo-menu): Uncomment and update.
-2014-05-02 Stephen Berman <stephen.berman@gmx.net>
+2014-05-04 Stephen Berman <stephen.berman@gmx.net>
* calendar/todo-mode.el: Reimplement item editing to have the same
basic user interface as item insertion, and make small UI and
(todo-key-bindings-t): Bind "e" to todo-edit-item.
Remove bindings of deleted commands.
-2014-05-02 Leo Liu <sdl.web@gmail.com>
+2014-05-04 Leo Liu <sdl.web@gmail.com>
* emacs-lisp/cl-macs.el (cl-deftype): Fix indentation.
-2014-05-01 Glenn Morris <rgm@gnu.org>
+2014-05-04 Glenn Morris <rgm@gnu.org>
* allout-widgets.el (allout-widgets-tally)
(allout-decorate-item-guides):
* textmodes/reftex-parse.el (reftex-using-biblatex-p):
Doc fixes (replace `iff').
-2014-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-05-04 Stefan Monnier <monnier@iro.umontreal.ca>
* mpc.el (mpc-volume-mouse-set): Don't burp at the boundaries.
+2014-05-04 Leo Liu <sdl.web@gmail.com>
+
+ Support Chinese diary entries in calendar and diary. (Bug#17393)
+ * calendar/cal-china.el (calendar-chinese-month-name-array): New var.
+ (calendar-chinese-from-absolute-for-diary)
+ (calendar-chinese-to-absolute-for-diary)
+ (calendar-chinese-mark-date-pattern, diary-chinese-mark-entries)
+ (diary-chinese-list-entries): New functions to list and mark
+ Chinese diary entries in the calendar window.
+ (diary-chinese-anniversary)
+ (diary-chinese-insert-anniversary-entry)
+ (diary-chinese-insert-entry, diary-chinese-insert-monthly-entry)
+ (diary-chinese-insert-yearly-entry): New commands to insert
+ Chinese diary entries.
+
+ * calendar/diary-lib.el (diary-font-lock-keywords):
+ Support font-locking Chinese dates.
+
+ * calendar/cal-menu.el (cal-menu-diary-menu): Add entries for
+ inserting Chinese diary entries.
+
+ * calendar/calendar.el (diary-chinese-entry-symbol):
+ New customizable variable.
+ (calendar-mode-map): Add bindings for inserting Chinese diary
+ entries.
+
+2014-05-03 Juri Linkov <juri@jurta.org>
+
+ * dired.el (dired-check-switches, dired-switches-recursive-p):
+ New functions. (Bug#17218)
+ (dired-switches-escape-p, dired-move-to-end-of-filename):
+ Use `dired-check-switches'.
+ (dired-insert-old-subdirs, dired-build-subdir-alist)
+ (dired-sort-R-check): Use `dired-switches-recursive-p'.
+
+2014-05-01 Barry O'Reilly <gundaetiapo@gmail.com>
+
+ * simple.el (undo-make-selective-list): New algorithm fixes
+ incorrectness of position adjustments when undoing in region.
+ (Bug#17235)
+ (undo-elt-crosses-region): Make obsolete.
+ (undo-adjust-elt, undo-adjust-beg-end, undo-adjust-pos):
+ New functions to adjust positions using undo-deltas.
+
+2014-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp-mode.el (lisp--match-hidden-arg): Only highlight past
+ the last consecutive closing paren (bug#17345).
+
+2014-04-30 Reuben Thomas <rrt@sc3d.org>
+
+ * dired.el (dired-mode): make terminology for eXpunge command
+ consistent. (Bug#17276)
+
2014-04-30 Eli Zaretskii <eliz@gnu.org>
* dired.el (dired-initial-position-hook, dired-initial-position):
Doc string fixes.
-2014-04-29 Glenn Morris <rgm@gnu.org>
+2014-04-30 Glenn Morris <rgm@gnu.org>
* mail/rmail.el (rmail-quit): Handle killed summaries. (Bug#17283)
-2014-04-27 Matthias Dahl <matthias.dahl@binary-island.eu>
+2014-04-30 Matthias Dahl <matthias.dahl@binary-island.eu>
* faces.el (face-spec-recalc): Apply X resources only after the
defface spec has been applied. Thus, X resources are no longer
the toolbar coloring was wrong because it is set through X resources
and was (wrongfully) overriden. (Bug#16694)
-2014-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-30 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/rst.el (electric-pair-pairs): Declare.
(rst-mode): Set it (bug#17131).
-2014-04-27 Juri Linkov <juri@jurta.org>
+2014-04-30 Juri Linkov <juri@jurta.org>
* desktop.el (desktop-value-to-string): Let-bind `print-length'
and `print-level' to nil. (Bug#17351)
-2014-04-25 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2014-04-30 Nicolas Richard <theonewiththeevillook@yahoo.fr>
* battery.el (battery-update): Handle the case where battery
status is "N/A" (bug#17319).
-2014-04-24 Eli Zaretskii <eliz@gnu.org>
+2014-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/ps-mode.el: Use SMIE. Move string and comment recognition
+ to syntax-propertize.
+ (ps-mode-auto-indent): Mark as obsolete.
+ (ps-mode-font-lock-keywords-1): Remove string-or-comment handling.
+ (ps-mode-font-lock-keywords-3): Use symbol regexp operators instead of
+ word regexp operators.
+ (ps-mode-map): Move initialization into declaration. Remove binding
+ for TAB, RET, >, ], and }.
+ (ps-mode-syntax-table): Move initialization into declaration.
+ Don't give word syntax to non-word chars.
+ (ps-run-mode-map): Move initialization into declaration.
+ (ps-mode-menu-main): Remove auto-indent entry.
+ (ps-mode-smie-rules): New function.
+ (ps-mode): Setup smie, syntax-propertize, and electric-indent-mode.
+ (ps-mode-looking-at-nested, ps-mode-match-string-or-comment): Remove.
+ (ps-mode--string-syntax-table): New const.
+ (ps-mode--syntax-propertize-special, ps-mode-syntax-propertize):
+ New functions.
+ (ps-mode-newline, ps-mode-tabkey, ps-mode-r-brace, ps-mode-r-angle)
+ (ps-mode-r-gt, ps-mode-r-balance): Remove functions.
+
+2014-04-27 Daniel Colascione <dancol@dancol.org>
+
+ * term/xterm.el (xterm-paste): Use large finite timeout when
+ reading event to avoid putting keys in this-command-keys.
+
+2014-04-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/perl-mode.el (perl--syntax-exp-intro-regexp): New var.
+ (perl-syntax-propertize-function): Use it. Extend handling of
+ here-docs to the unquoted case.
+
+2014-04-25 Eli Zaretskii <eliz@gnu.org>
* tooltip.el (tooltip-show-help-non-mode, tooltip-show-help):
Use equal-including-properties to compare help-echo strings (bug#17331).
-2014-04-24 Leo Liu <sdl.web@gmail.com>
+2014-04-25 Leo Liu <sdl.web@gmail.com>
* emacs-lisp/lisp-mode.el (emacs-lisp-mode-syntax-table):
Fix syntax for @. (Bug#17325)
-2014-04-24 Daniel Colascione <dancol@dancol.org>
+2014-04-25 Daniel Colascione <dancol@dancol.org>
* emacs-lisp/cl.el (gv): Require gv early to break eager
macro-expansion cycles.
-2014-04-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-25 Stefan Monnier <monnier@iro.umontreal.ca>
* simple.el (region-active-p): Check there's a mark (bug#17324).
* progmodes/perl-mode.el (perl-syntax-propertize-function): Slash after
&, |, +, - and * can't be a division (bug#17317).
-2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
-
* term/xterm.el (xterm--version-handler): Don't use modern xterm
features on gnome-terminal (bug#16988).
+2014-04-25 Thien-Thi Nguyen <ttn@gnu.org>
+
+ Improve Scheme font-locking for (define ((foo ...) ...) ...).
+
+ * progmodes/scheme.el (scheme-font-lock-keywords-1): To find
+ the declared object, ignore zero or more parens, not zero or one.
+
+2014-04-24 Leo Liu <sdl.web@gmail.com>
+
+ * progmodes/xscheme.el (xscheme-expressions-ring)
+ (xscheme-expressions-ring-yank-pointer, xscheme-running-p)
+ (xscheme-control-g-disabled-p, xscheme-process-filter-state)
+ (xscheme-allow-output-p, xscheme-prompt)
+ (xscheme-string-accumulator, xscheme-mode-string): Use defvar-local.
+
+ * progmodes/scheme.el (would-be-symbol, next-sexp-as-string):
+ Comment out unused functions.
+
+2014-04-24 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * info.el: Use lexical-binding and cl-lib.
+ Use defvar-local and setq-local instead of make-local-variable.
+ (Info-apropos-matches): Avoid add-to-list.
+ (Info-edit-mode-map): Fix obsolescence call to Info-edit-map.
+
+2014-04-24 Daniel Colascione <dancol@dancol.org>
+
+ * progmodes/sh-script.el (sh-builtins): Add coproc to list of bash builtins.
+
+2014-04-23 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/cl-macs.el (cl--loop-let): Fix last merge.
+
2014-04-22 Michael Heerdegen <michael_heerdegen@web.de>
* dired.el (dired-insert-set-properties): Do not consider
(tramp-do-copy-or-rename-file-out-of-band): Do not quote `source'
and `target' twice.
-2014-04-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
* dframe.el (dframe-get-focus): Remove `hook' argument (bug#17311).
* speedbar.el (speedbar-get-focus): Run the "hook" afterwards instead.
* emacs-lisp/cl-macs.el (cl--loop-let): Avoid `nil' as var name.
-2014-04-21 Michael Albinus <michael.albinus@gmx.de>
+2014-04-22 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-sh-handle-file-name-all-completions):
Set "IFS=" when using read builtin, in order to preserve spaces in
the file name. Add test messages for hunting a bug on hydra.
(tramp-get-ls-command): Undo using "-b" argument. It doesn't help.
-2014-04-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/prog-mode.el (prettify-symbols--compose-symbol):
Don't prettify a word within a symbol.
-2014-04-20 Michael Albinus <michael.albinus@gmx.de>
+2014-04-22 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-get-ls-command): Use "-b" argument if
possible.
+2014-04-22 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/byte-run.el (function-put): Unbreak build: don't
+ use defun to define `function-put'.
+
+2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp-mode.el (lisp--match-hidden-arg): New function.
+ (lisp-el-font-lock-keywords-2, lisp-cl-font-lock-keywords-2): Use it.
+ (lisp-mode-variables): Set font-lock-extra-managed-props.
+
+ * emacs-lisp/byte-run.el (function-put): New function.
+ (defun-declarations-alist): Use it. Add `pure' and `side-effect-free'.
+ * emacs-lisp/cl-macs.el (cl-defstruct, cl-struct-sequence-type)
+ (cl-struct-slot-info, cl-struct-slot-offset, cl-struct-slot-value):
+ Use them.
+
+2014-04-22 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/macroexp.el (internal-macroexpand-for-load):
+ Add `full-p' parameter; when nil, call `macroexpand' instead of
+ `macroexpand-all'.
+
+ * emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile):
+ Improve docstrings.
+
+ * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
+ Use lambda function values, not quoted lambdas.
+ (byte-compile-recurse-toplevel): Remove extraneous &optional.
+
+ * emacs-lisp/cl-macs.el
+ (cl-struct-sequence-type, cl-struct-slot-info): Declare pure.
+ (cl-struct-slot-value): Conditionally use aref or nth so that the
+ compiler produces optimal code.
+
+2014-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/cl-macs.el (cl-struct-slot-offset): Mark as pure.
+ (inline): Don't inline cl--set-elt.
+ (cl-struct-slot-value): Remove explicit gv-setter and compiler-macro.
+ Define as inlinable instead.
+ (cl-struct-set-slot-value): Remove.
+
+ * emacs-lisp/cl-lib.el (cl--set-elt): Remove.
+ * emacs-lisp/cl-seq.el (cl-replace, cl-substitute, cl-nsubstitute):
+ Use setf instead.
+
+2014-04-21 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/cl-macs.el (cl--const-expr-val): We didn't need the
+ last two parameters after all.
+ (cl--expr-contains,cl--compiler-macro-typep,cl--compiler-macro-member)
+ (cl--compiler-macro-assoc,cl-struct-slot-value)
+ (cl-struct-set-slot-value): Stop using them.
+
+(2014-04-21 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * image-mode.el (image-mode-window-put): Don't assume there's a `t'
+ entry in image-mode-winprops-alist.
+
+2014-04-21 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/bytecomp.el (byte-compile-recurse-toplevel): New function.
+ (byte-compile-recurse-toplevel, byte-compile-initial-macro-environment)
+ (byte-compile-toplevel-file-form): Use it.
+
+ * emacs-lisp/cl-macs.el:
+ (cl--loop-let): Properly destructure `while' clauses.
+
+2014-04-20 Daniel Colascione <dancol@dancol.org>
+
+ * vc/vc.el (vc-root-dir): New public autoloaded function for
+ generically finding the current VC root.
+ * vc/vc-hooks.el (vc-not-supported): New error.
+ (vc-call-backend): Signal `vc-not-supported' instead of generic error.
+
+2014-04-20 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/cl-macs.el (cl-the): Make `cl-the' assert its type
+ argument.
+ (cl--const-expr-val): cl--const-expr-val should macroexpand its
+ argument in case we're inside a symbol-macrolet.
+ (cl--do-arglist, cl--compiler-macro-typep)
+ (cl--compiler-macro-member, cl--compiler-macro-assoc): Pass macro
+ environment to `cl--const-expr-val'.
+ (cl-struct-sequence-type,cl-struct-slot-info)
+ (cl-struct-slot-offset, cl-struct-slot-value)
+ (cl-struct-set-slot-value): New functions.
+
2014-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-smie--sh-keyword-p): Handle variable
* net/tramp-compat.el (tramp-unload-hook): Unload `tramp-loaddefs'.
-2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-17 Daniel Colascione <dancol@dancol.org>
+
+ Add support for bracketed paste mode; add infrastructure for
+ managing terminal mode enabling and disabling automatically.
+
+ * xt-mouse.el:
+ (xterm-mouse-mode): Simplify.
+ (xterm-mouse-tracking-enable-sequence)
+ (xterm-mouse-tracking-disable-sequence): New constants.
+ (turn-on-xterm-mouse-tracking-on-terminal)
+ (turn-off-xterm-mouse-tracking-on-terminal):
+ Use tty-mode-set-strings and tty-mode-reset-strings terminal
+ parameters instead of random hooks.
+ (turn-on-xterm-mouse-tracking)
+ (turn-off-xterm-mouse-tracking): Delete.
+
+ * term/xterm.el (xterm-extra-capabilities): Fix bitrotted comment.
+ (xterm-paste-ending-sequence): New constant.
+ (xterm-paste): New command used for bracketed paste support.
+
+ (xterm-modify-other-keys-terminal-list): Delete obsolete variable.
+ (terminal-init-xterm-bracketed-paste-mode): New function.
+ (terminal-init-xterm): Call it.
+ (terminal-init-xterm-modify-other-keys): Use tty-mode-set-strings
+ and tty-mode-reset-strings instead of random hooks.
+ (xterm-turn-on-modify-other-keys)
+ (xterm-turn-off-modify-other-keys)
+ (xterm-remove-modify-other-keys): Delete obsolete functions.
+
+ * term/screen.el: Rewrite to just use the xterm code.
+ Add copyright notice. Mention tmux.
+
+2014-04-17 Ian D <dunni@gnu.org> (tiny change)
+
+ * image-mode.el (image-mode-window-put): Also update the property of
+ the "default window".
+ * doc-view.el (doc-view-new-window-function): If no window
+ exists, move to the last known page.
- * nxml/nxml-mode.el (nxml-fontify-matcher): Make sure propertization
- was done (bug#17264).
- * nxml/xmltok.el (xmltok-scan-after-comment-open): Extend unclosed
- comment to EOB.
+2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/perl-mode.el (perl-calculate-indent): Don't auto-indent in
here-documents (bug#17262).
* term/pc-win.el (x-list-fonts, x-get-selection-value):
Provide doc strings, as required by snarf-documentation.
-2014-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* ps-def.el (ps-generate-postscript-with-faces1): Use the new `sorted'
arg of overlays-at. Use `invisible-p'.
overlays-at.
(hfy-fontify-buffer): Remove unused var `orig-ovls'.
-2014-04-14 João Távora <joaotavora@gmail.com>
+2014-04-16 João Távora <joaotavora@gmail.com>
* net/shr.el (shr-expand-url): Use `expand-file-name' for relative
links. (Bug#17217).
-2014-04-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2014-04-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* vc/ediff-diff.el (ediff-set-fine-diff-properties-in-one-buffer):
Use mapc to loop over a vector. (Bug#17257).
-2014-04-13 Michael Albinus <michael.albinus@gmx.de>
+2014-04-16 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-sh-handle-file-truename): Revert previous
patch, there are new problems with file names containing spaces.
Get rid of backticks. (Bug#17238)
-2014-04-13 João Távora <joaotavora@gmail.com>
+2014-04-16 João Távora <joaotavora@gmail.com>
* elec-pair.el (electric-pair--syntax-ppss): Simplify and fix
possible bug.
-2014-04-13 Eli Zaretskii <eliz@gnu.org>
+2014-04-16 Eli Zaretskii <eliz@gnu.org>
* frame.el (blink-cursor-blinks, blink-cursor-blinks-done): Doc fixes.
(blink-cursor-mode): Mention customization variables and the
effect of 'blink-cursor-blinks'.
-2014-04-12 Barry O'Reilly <gundaetiapo@gmail.com>
+2014-04-16 Barry O'Reilly <gundaetiapo@gmail.com>
* simple.el (undo): Prevent insertion of identity mapping into
undo-equiv-table so as undo-only does not inf loop in the presence
of consecutive nils in undo list.
-2014-04-12 Matthias Dahl <matthias.dahl@binary-island.eu>
+2014-04-16 Matthias Dahl <matthias.dahl@binary-island.eu>
* faces.el (make-face): Deprecate optional argument as it is no
longer needed/used since the conditional X resources handling
has been pushed down to make-face-x-resource-internal itself.
(make-empty-face): Don't pass optional argument to make-face.
+2014-04-16 Karl Fogel <kfogel@red-bean.com>
+
+ * savehist.el (savehist-save): Remove workaround for a read-passwd
+ bug that was fixed before 24.3. Thanks to Juanma Barranquero for
+ noticing that the shim was still present.
+
+2014-04-14 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * doc-view.el (doc-view-set-doc-type): Ignore file name case; add .pps.
+
+2014-04-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * faces.el (face-set-after-frame-default): Remove unused local variable.
+
+2014-04-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/grep.el: Use lexical-binding.
+ (grep-expand-template): Pass explicit lexical env to `eval'.
+ (zrgrep): Let-bind grep-find-template explicitly.
+
+ * emacs-lisp/cl-lib.el (current-case-table): Remove setter.
+ * leim/quail/sisheng.el (sisheng-list): Use with-case-table.
+
2014-04-12 Eli Zaretskii <eliz@gnu.org>
* international/characters.el <standard-case-table>: Add entries
2014-04-12 Leo Liu <sdl.web@gmail.com>
- * progmodes/octave.el (completion-table-with-cache): Define if not
- available.
- (octave-goto-function-definition)
- (octave-sync-function-file-names)
- (octave-find-definition-default-filename): Backquote upattern for
- compatibility.
+ * progmodes/octave.el (completion-table-with-cache):
+ Define if not available.
+ (octave-goto-function-definition, octave-sync-function-file-names)
+ (octave-find-definition-default-filename):
+ Backquote upattern for compatibility.
-2014-04-11 Michael Albinus <michael.albinus@gmx.de>
+2014-04-12 Michael Albinus <michael.albinus@gmx.de>
* net/tramp-sh.el (tramp-sh-handle-file-truename): Quote the file
name twice due to backticks. (Bug#17238)
-2014-04-11 Glenn Morris <rgm@gnu.org>
+2014-04-12 Glenn Morris <rgm@gnu.org>
* term/w32-win.el (x-win-suspend-error):
* term/x-win.el (x-win-suspend-error): Sync docs.
-2014-04-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-12 Matthias Dahl <matthias.dahl@binary-island.eu>
+
+ * faces.el (make-face): Remove deprecated optional argument.
+ The conditional application of X resources is handled directly by
+ make-face-x-resource-internal since Emacs 24.4.
+ (make-empty-face): Don't pass optional argument to make-face.
+
+2014-04-11 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport. (Bug#16429)
+
+2014-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
Ediff's overlay priorities cause more trouble than they solve.
* vc/ediff-init.el (ediff-shadow-overlay-priority): Remove variable.
(ediff-set-fine-diff-properties-in-one-buffer): Don't mess with
overlay priorities.
-2014-04-10 Feng Li <fengli@gmail.com> (tiny change)
+2014-04-11 Feng Li <fengli@gmail.com> (tiny change)
* progmodes/pascal.el (pascal-font-lock-keywords): Fix incorrect format
entry; use symbol boundaries to avoid mis-matches.
-2014-04-10 Michael Albinus <michael.albinus@gmx.de>
+2014-04-11 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-file-name-handler)
(tramp-completion-file-name-handler): Avoid recursive loading.
* net/tramp-sh.el (tramp-make-copy-program-file-name):
Quote result also locally.
+2014-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emulation/cua-base.el (<toplevel>, cua--pre-command-handler-1):
+ Remove left-over code.
+
+ * newcomment.el (comment-indent-new-line): Sink code where it's used.
+ Reuse the previous comment's indentation unconditionally if it's on its
+ own line.
+
+2014-04-09 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/lisp.el (backward-up-list): Add `escape-strings',
+ `no-syntax-crossing' arguments. Forward to `up-list'.
+ (up-list): Add `escape-strings', `no-syntax-crossing' arguments.
+ Implement logic for escaping from strings. Use narrowing to deal
+ with corner cases.
+
+2014-04-09 Leo Liu <sdl.web@gmail.com>
+
+ * net/rcirc.el (rcirc-connection-info): New variable.
+ (rcirc-connect): Use it to store connection info.
+ (rcirc-buffer-process): Avoid get-buffer-process which returns nil
+ for killed process.
+ (rcirc-cmd-reconnect): New command. (Bug#17045)
+ (rcirc-mode, set-rcirc-encode-coding-system)
+ (set-rcirc-decode-coding-system, rcirc-connect): Use setq-local.
+
+2014-04-09 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/cl-indent.el: Add comment claiming
+ facility is also good for elisp.
+ (lisp-indent-find-method): New function.
+ (common-lisp-indent-function): Recognize cl-loop.
+ (common-lisp-indent-function-1): Recognize cl constructs; use
+ `lisp-indent-find-method' instead of `get' directly.
+ (if): Use else-body style for elisp.
+
2014-04-09 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-font-lock-keywords): Highlight more
Module methods. (Bug#17216)
-2014-04-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
* help.el (describe-bindings): Fix buffer handling (bug#17210).
(describe-bindings-internal): Mark obsolete.
+2014-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * subr.el (with-silent-modifications): Don't bind deactivate-mark,
+ buffer-file-name, and buffer-file-truename any more.
+
+2014-04-08 Leo Liu <sdl.web@gmail.com>
+
+ Use lexical-binding and require cl-lib.
+ * net/rcirc.el (rcirc, rcirc-handler-ctcp-KEEPALIVE)
+ (rcirc-handler-generic, rcirc-fill-paragraph)
+ (rcirc-format-response-string, rcirc-target-buffer)
+ (rcirc-last-line, rcirc-record-activity, rcirc-split-activity)
+ (rcirc-activity-string, rcirc-make-trees, rcirc-cmd-ctcp)
+ (rcirc-ctcp-sender-PING, rcirc-browse-url)
+ (rcirc-markup-timestamp, rcirc-markup-attributes)
+ (rcirc-markup-my-nick, rcirc-markup-urls)
+ (rcirc-markup-bright-nicks, rcirc-markup-fill)
+ (rcirc-check-auth-status, rcirc-handler-WALLOPS)
+ (rcirc-handler-JOIN, rcirc-handler-PART-or-KICK)
+ (rcirc-handler-PART, rcirc-handler-KICK, rcirc-handler-QUIT)
+ (rcirc-handler-NICK, rcirc-handler-PING, rcirc-handler-PONG)
+ (rcirc-handler-TOPIC, rcirc-handler-301, rcirc-handler-317)
+ (rcirc-handler-332, rcirc-handler-333, rcirc-handler-477)
+ (rcirc-handler-MODE, rcirc-handler-353, rcirc-handler-366)
+ (rcirc-authenticate, rcirc-handler-INVITE, rcirc-handler-ERROR)
+ (rcirc-handler-ctcp-VERSION, rcirc-handler-ctcp-TIME)
+ (rcirc-handler-CTCP-response): Fix unused arguments warnings and
+ use cl-lib.
+
2014-04-07 João Távora <joaotavora@gmail.com>
- * elec-pair.el:
- (electric-pair--syntax-ppss): When inside comments parse from
- comment beginning.
+ * elec-pair.el (electric-pair--syntax-ppss):
+ When inside comments parse from comment beginning.
(electric-pair--balance-info): Fix typo in comment.
(electric-pair--in-unterminated-string-p): Delete.
(electric-pair--unbalanced-strings-p): New function.
(electric-pair-inhibit-if-helps-balance): Decide quote pairing
according to `electric-pair--in-unterminated-string-p'
-2014-04-07 João Távora <joaotavora@gmail.com>
-
* elec-pair.el (electric-pair-inhibit-if-helps-balance):
Inhibit quote pairing if point-max is inside an unterminated string.
(electric-pair--looking-at-unterminated-string-p): Delete.
* shell.el (shell-directory-tracker):
Go back to just ignoring failures. (Bug#17159)
-2014-04-06 João Távora <joaotavora@gmail.com>
+2014-04-07 João Távora <joaotavora@gmail.com>
Fix `electric-pair-delete-adjacent-pairs' in modes binding
backspace. (bug#16981)
a new `electric-pair-delete-pair' command.
(electric-pair-delete-pair): New command.
-2014-04-06 João Távora <joaotavora@gmail.com>
-
* progmodes/python.el (python-electric-pair-string-delimiter):
Fix triple-quoting electricity. (Bug#17192)
-2014-04-06 João Távora <joaotavora@gmail.com>
-
* elec-pair.el (electric-pair-post-self-insert-function):
Don't skip whitespace when `electric-pair-text-pairs' and
`electric-pair-pairs' were used. syntax to
electric-pair--skip-whitespace. (Bug#17183)
-2014-04-06 Eli Zaretskii <eliz@gnu.org>
+2014-04-07 Eli Zaretskii <eliz@gnu.org>
* leim/quail/ipa.el (ipa-x-sampa): Fix the character produced for
"<F>". (Bug#17199)
-2014-04-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-07 Stefan Monnier <monnier@iro.umontreal.ca>
* mpc.el (mpc--status-timer-run): Disable timer if not displayed.
(mpc--status-idle-timer-run): Use mpc--status-timer-run.
-2014-04-05 Glenn Morris <rgm@gnu.org>
+2014-04-07 Glenn Morris <rgm@gnu.org>
* help.el (view-lossage): Doc tweak.
-2014-04-05 Matthias Dahl <matthias.dahl@binary-island.eu>
+2014-04-07 Matthias Dahl <ml_emacs-lists@binary-island.eu>
* faces.el (face-spec-recalc): Call make-face-x-resource-internal
only when inhibit-x-resources is nil, and do that earlier in the
(face-set-after-frame-default): Don't call
make-face-x-resource-internal here. (Bug#16434)
-2014-04-04 Tassilo Horn <tsdh@gnu.org>
+2014-04-07 Tassilo Horn <tsdh@gnu.org>
* doc-view.el (doc-view-bookmark-jump):
Use `bookmark-after-jump-hook' to jump to the right page after the
buffer is shown in a window. (bug#16090)
-2014-04-04 Eli Zaretskii <eliz@gnu.org>
+2014-04-07 Eli Zaretskii <eliz@gnu.org>
* international/characters.el (mirroring): Fix last change:
instead of loading uni-mirrored.el explicitly, do that implicitly
by creating the 'mirroring' uniprop table. This avoids announcing
the loading of uni-mirrored.el.
-2014-04-04 Glenn Morris <rgm@gnu.org>
+2014-04-07 Glenn Morris <rgm@gnu.org>
* files.el (buffer-stale--default-function)
(buffer-stale-function, revert-buffer--default):
* autorevert.el (auto-revert-buffers): Doc tweaks.
-2014-04-03 Eli Zaretskii <eliz@gnu.org>
+2014-04-07 Eli Zaretskii <eliz@gnu.org>
* international/characters.el: Preload uni-mirrored.el. (Bug#17169)
-2014-04-03 Glenn Morris <rgm@gnu.org>
+2014-04-07 Glenn Morris <rgm@gnu.org>
* files.el (make-backup-file-name-function)
(make-backup-file-name, make-backup-file-name--default-function)
(make-backup-file-name-function): Bump :version.
Restore nil as a valid but deprecated custom type.
-2014-04-03 Stefan Monnier <monnier@iro.umontreal.ca>
-
- * progmodes/perl-mode.el (perl-syntax-propertize-function): Handle $'
- used as a variable (bug#17174).
+2014-04-07 Stefan Monnier <monnier@iro.umontreal.ca>
-2014-04-02 Stefan Monnier <monnier@iro.umontreal.ca>
+ * progmodes/perl-mode.el (perl-syntax-propertize-function):
+ Handle $' used as a variable (bug#17174).
* progmodes/perl-mode.el (perl-indent-new-calculate):
Handle forward-sexp failure (bug#16985).
(perl-syntax-propertize-function): Add "foreach" and "for" statement
modifiers introducing expressions (bug#17116).
+2014-04-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * dired-aux.el (dired-file-set-difference): Use lexical-scoping.
+
+2014-04-05 Leo Liu <sdl.web@gmail.com>
+
+ * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
+ Add define-compilation-mode.
+
+2014-04-04 João Távora <joaotavora@gmail.com>
+
+ * elec-pair.el (electric-pair--syntax-ppss): When inside comments
+ parse from comment beginning.
+ (electric-pair--balance-info): Fix typo in comment.
+ (electric-pair--in-unterminated-string-p): Delete.
+ (electric-pair--unbalanced-strings-p): New function.
+ (electric-pair-string-bound-function): New var.
+ (electric-pair-inhibit-if-helps-balance): Decide quote pairing
+ according to `electric-pair--in-unterminated-string-p'.
+
+2014-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * textmodes/reftex-parse.el (reftex--index-tags): Rename `index-tags'.
+ Move declaration before first use.
+ (reftex-move-to-next-arg): Silence compiler warning.
+
+2014-04-04 Joost Kremers <joostkremers@fastmail.fm> (tiny change)
+
+ * textmodes/reftex-toc.el (reftex-toc, reftex-re-enlarge):
+ Use `window-total-width' instead of `window-width'.
+
+2014-04-03 Daniel Colascione <dancol@dancol.org>
+
+ * subr.el (set-transient-map): Remove rms's workaround entirely;
+ use new `suspicious-object' subr to mark our lambda for closer
+ scrutiny during gc.
+
+2014-04-02 Richard Stallman <rms@gnu.org>
+
+ * subr.el (set-transient-map): Comment out previous change.
+
2014-04-02 Glenn Morris <rgm@gnu.org>
* menu-bar.el (menu-bar-file-menu):
* simple.el (command-execute): Respect nil disabled-command-function.
-2014-04-01 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2014-04-02 Nicolas Richard <theonewiththeevillook@yahoo.fr>
* simple.el (command-execute): Do not execute the command when it
is disabled; fixes thinko in 2013-02-20 conversion from C. (Bug#17151)
-2014-03-29 Juri Linkov <juri@jurta.org>
+2014-04-02 Juri Linkov <juri@jurta.org>
* dired-aux.el (dired-compress-file): Don't use string-match-p
because its match data is used afterwards.
-2014-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-02 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/package.el (package-built-in-p): Treat a min-version of
0 like nil.
+2014-04-02 João Távora <joaotavora@gmail.com>
+
+ * elec-pair.el (electric-pair-inhibit-if-helps-balance):
+ Inhibit quote pairing if point-max is inside an unterminated string.
+ (electric-pair--looking-at-unterminated-string-p):
+ Delete.
+ (electric-pair--in-unterminated-string-p): New function.
+
+2014-04-01 Daniel Colascione <dancol@dancol.org>
+
+ * minibuffer.el (minibuffer-complete): Prevent assertion failure
+ when trying to complete the prompt.
+
+2014-03-31 Leo Liu <sdl.web@gmail.com>
+
+ * emacs-lisp/eldoc.el (eldoc-print-current-symbol-info):
+ Refactor out eldoc-documentation-function-default.
+ (eldoc-documentation-function-default): New function.
+ (eldoc-documentation-function): Change value.
+
+2014-03-31 Glenn Morris <rgm@gnu.org>
+
+ * simple.el (cycle-spacing--context, cycle-spacing): Doc tweaks.
+
+ * progmodes/vhdl-mode.el (vhdl-speedbar-select-mra)
+ (vhdl-compose-components-package, vhdl-compose-configuration):
+ Abbreviate default-directory (missing from some previous upstream sync).
+
+2014-03-31 Reto Zimmermann <reto@gnu.org>
+
+ Sync with upstream vhdl mode v3.35.2.
+ * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp): Update.
+ (top-level): No longer require assoc.
+ (vhdl-asort, vhdl-anot-head-p, vhdl-aput, vhdl-adelete, vhdl-aget):
+ New functions. Use throughout to replace aget etc.
+ (vhdl-aput-delete-if-nil): Rename from vhdl-aput.
+ (vhdl-update-file-contents): Update for vhdl-aput-delete-if-nil rename.
+ (vhdl-template-replace-header-keywords): Fix bug for "<title string>".
+ (vhdl-compile-init): Do not initialize regexps for Emacs 22+.
+ (vhdl-error-regexp-emacs-alist): Remove regexps from all compilers
+ except `vhdl-compiler'.
+ (vhdl-error-regexp-add-emacs): Remove all other compilers,
+ when appropriate.
+
+2014-03-31 Glenn Morris <rgm@gnu.org>
+
+ * progmodes/vhdl-mode.el (vhdl-expand-abbrev, vhdl-expand-paren):
+ Revert 2014-03-26 merge goof; go back to using defalias.
+
+2014-03-30 Daniel Colascione <dancol@dancol.org>
+
+ * comint.el (comint-send-input):
+ Deactivate completion-in-region-mode before we send comint input.
+ (Bug#17139).
+
+ * simple.el (keyboard-quit): Deactivate completion-in-region-mode
+ on keyboard-quit.
+
+2014-03-29 Glenn Morris <rgm@gnu.org>
+
+ * textmodes/reftex.el: Manage most autoloads automatically.
+ * textmodes/reftex-auc.el, textmodes/reftex-cite.el:
+ * textmodes/reftex-dcr.el, textmodes/reftex-global.el:
+ * textmodes/reftex-index.el, textmodes/reftex-parse.el:
+ * textmodes/reftex-ref.el, textmodes/reftex-sel.el:
+ * textmodes/reftex-toc.el: Set generated-autoload-file,
+ and add autoload cookies for reftex.el.
+ * Makefile.in (AUTOGEN_VCS): Add textmodes/reftex.el.
+
+2014-03-28 Glenn Morris <rgm@gnu.org>
+
+ * cus-start.el (report-emacs-bug-address): Set custom properties.
+ * mail/emacsbug.el (report-emacs-bug-address):
+ Variable is now defined in emacs.c.
+
+ * mail/emacsbug.el (report-emacs-bug):
+ Include system-configuration-features.
+
+2014-03-28 Michal Nazarewicz <mina86@mina86.com>
+
+ * simple.el (cycle-spacing): Never delete spaces on first run by
+ default, but do so in a new 'fast mode and if there are already
+ N spaces (the previous behavior).
+ Compare N with its value in previous invocation so that changing
+ prefix argument restarts `cycle-spacing' sequence.
+ The idea is that with this change, binding M-SPC to
+ `cycle-spacing' should not introduce any changes in behavior of
+ the binding so long as users do not type M-SPC twice in a raw with
+ the same prefix argument or lack thereof.
+
+2014-03-28 Glenn Morris <rgm@gnu.org>
+
+ * faces.el (term-file-aliases): New variable.
+ (tty-run-terminal-initialization): Respect term-file-aliases.
+ * term/apollo.el, term/vt102.el, term/vt125.el, term/vt201.el:
+ * term/vt220.el, term/vt240.el, term/vt300.el, term/vt320.el:
+ * term/vt400.el, term/vt420.el: Remove files, replaced by aliases.
+
+2014-03-27 Glenn Morris <rgm@gnu.org>
+
+ * startup.el (inhibit-startup-hooks): Doc tweak.
+ (normal-top-level): Simplify running of hooks.
+ For window-setup-hook, respect inhibit-startup-hooks.
+ (command-line-1): Don't set window-setup-hook to nil.
+
+ Allow selective autoloading from obsolete/ directory.
+ * Makefile.in (obsolete-autoloads): New rule.
+ (autoloads): Run obsolete-autoloads.
+ * obsolete/iswitchb.el (iswitchb-mode): Use obsolete-autoload.
+ * simple.el (iswitchb-mode): Remove hand-written autoloads.
+
2014-03-27 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-font-lock-keywords):
* emacs-lisp/package-x.el (package--archive-contents-from-url):
Use url-insert-file-contents; package-handle-response no longer exists.
+2014-03-26 Daniel Colascione <dancol@dancol.org>
+
+ * simple.el (process-menu-mode-map): New variable.
+ (process-menu-delete-process): New command.
+
2014-03-26 Juanma Barranquero <lekktu@gmail.com>
* emacs-lisp/package.el: Fix bug#16733 (again).
dynamic binding of `buffer'.
(describe-package-1): Do not decode readme-string.
-2014-03-25 Barry O'Reilly <gundaetiapo@gmail.com>
-
- * simple.el (primitive-undo): Correction to 2014-03-24 change.
-
-2014-03-25 Michael Albinus <michael.albinus@gmx.de>
+2014-03-26 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-methods, tramp-connection-timeout): Fix docstring.
(tramp-do-copy-or-rename-file-directly): In the `rename' case,
check whether source directory has set the sticky bit.
-2014-03-24 Barry O'Reilly <gundaetiapo@gmail.com>
+2014-03-26 Barry O'Reilly <gundaetiapo@gmail.com>
* simple.el (primitive-undo): Only process marker adjustments
validated against their corresponding (TEXT . POS). Issue warning
(undo-elt-in-region): Return nil when passed a marker adjustment
and explain in function doc.
-2014-03-24 Dmitry Gutov <dgutov@yandex.ru>
-
- * emacs-lisp/package.el (package--add-to-archive-contents):
- Include already installed and built-in packages in
- `package-archive-contents'.
- (package-install): Don't include already installed packages in the
- options during interactive invocation. (Bug#16762)
-
-2014-03-24 Daniel Colascione <dancol@dancol.org>
-
- * emacs-lisp/cl-macs.el (cl--do-arglist): Use `plist-member'
- instead of cl-loop search function.
-
-2014-03-24 Juanma Barranquero <lekktu@gmail.com>
-
- * frameset.el (frameset--initial-params): Fix typo in parameter name.
-
-2014-03-24 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2014-03-26 Nicolas Richard <theonewiththeevillook@yahoo.fr>
* align.el (align-region): Do not fail when end-mark is nil (bug#17088).
-2014-03-24 Dmitry Gutov <dgutov@yandex.ru>
+2014-03-26 Dmitry Gutov <dgutov@yandex.ru>
* progmodes/ruby-mode.el (ruby-expression-expansion-re):
Match special global variables without curlies, too.
variables. Don't require a non-word character after the variable.
(Bug#17057)
-2014-03-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
* simple.el (redisplay-highlight-region-function): Increase priority of
overlay to make sure boundaries are visible (bug#15899).
-2014-03-23 Juanma Barranquero <lekktu@gmail.com>
+2014-03-26 Juanma Barranquero <lekktu@gmail.com>
- * frameset.el (frameset-restore): Compare display strings with equal.
+ * frameset.el (frameset--initial-params): Fix typo in parameter name.
+ (frameset-restore): Compare display strings with equal.
* frame.el (make-frame): Don't quote display name in error message,
it is already a string.
-2014-03-23 Thierry Volpiatto <thierry.volpiatto@gmail.com>
+2014-03-26 Thierry Volpiatto <thierry.volpiatto@gmail.com>
* net/tramp.el (tramp-read-passwd): Suspend the timers while reading
the password.
-2014-03-23 Dmitry Gutov <dgutov@yandex.ru>
+2014-03-26 Dmitry Gutov <dgutov@yandex.ru>
- * emacs-lisp/package.el (package-show-package-list): If the buffer
- is already displayed in another window, switch to that window.
+ * emacs-lisp/package.el (package--add-to-archive-contents):
+ Include already installed and built-in packages in
+ `package-archive-contents'.
+ (package-install): Don't include already installed packages in the
+ options during interactive invocation. (Bug#16762)
+ (package-show-package-list): If the buffer is already displayed in
+ another window, switch to that window.
+
+2014-03-26 Reto Zimmermann <reto@gnu.org>
+
+ Sync with upstream vhdl mode v3.35.1.
+ * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp): Update.
+ (vhdl-compiler-alist): Doc fix.
+ (vhdl-goto-line): Remove.
+ (vhdl-mode-abbrev-table-init): Add XEmacs compat.
+ (vhdl-mode) <paragraph-start>: Fix value.
+ (vhdl-fix-statement-region): Not `for' in wait-statement.
+ (vhdl-beautify-region): Also (un)tabify.
+ (vhdl-get-visible-signals):
+ Scan declarative part of generate statements.
+ (vhdl-template-record): Fix indentation for record type declaration.
+ (vhdl-expand-abbrev, vhdl-expand-paren):
+ Revert to using fset again rather than defalias.
+ (vhdl-scan-directory-contents): Tweak.
+ (vhdl-speedbar-find-file, vhdl-speedbar-port-copy)
+ (vhdl-compose-components-package):
+ Replace vhdl-goto-line with forward-line.
+ (top-level): Tweak speedbar frame selection.
+ (vhdl-generate-makefile-1): Support for compilers with no
+ unit-to-file name mapping (create directory with dummy files).
+
+2014-03-26 Wilson Snyder <wsnyder@wsnyder.org>
+
+ Sync with upstream verilog-mode revision 702457d.
+ * progmodes/verilog-mode.el (verilog-mode-version): Update.
+ (create-lockfiles): Declare.
+ (verilog-read-decls): Fix module header imports, bug709.
+ Reported by Victor Lau.
+ Fix parsing 'var' in AUTOs, msg1294. Reported by Dominique Chen.
+ (verilog-auto-inout-module): Fix AUTOINOUTMODULE not inserting
+ interface-only modules, bug721. Reported by Dean Hoyt.
-2014-03-21 Daniel Colascione <dancol@dancol.org>
+2014-03-26 Glenn Morris <rgm@gnu.org>
- * mail/emacsbug.el (report-emacs-bug): Include memory usage
- information in bug reports.
+ * obsolete/gulp.el: Move here from emacs-lisp/.
+
+ * files.el (lock-buffer, unlock-buffer, file-locked-p):
+ Remove fallback aliases, since they are always defined now.
+
+2014-03-24 Daniel Colascione <dancol@dancol.org>
+
+ * emacs-lisp/cl-macs.el (cl--do-arglist): Use `plist-member'
+ instead of cl-loop search function.
+
+2014-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * calendar/parse-time.el (parse-time-iso8601-regexp)
+ (parse-iso8601-time-string): Copied from `url-dav' so that we can use
+ it more generally.
+
+2014-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * net/dns.el (network-interface-list): Define for XEmacs.
+
+2014-03-23 Magnus Henoch <magnus.henoch@gmail.com>
+
+ * net/dns.el (dns-servers-up-to-date-p): New function to see whether
+ the network interfaces changed.
+ (dns-query): Use it to flush the data.
+
+2014-03-23 Juanma Barranquero <lekktu@gmail.com>
+
+ * vc/vc.el (vc-rollback): Use set-buffer-modified-p.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
+ Change subword-mode to use `find-word-boundary-function-table' and
+ replace `capitalized-words-mode'. Also, convert to lexical
+ binding.
+
+ * progmodes/cap-words.el: Delete now-obsolete file.
+ * progmodes/subword.el: Reimplement using
+ `find-word-boundary-function-table'.
+ (subword-mode-map): Hollow out.
+ (capitalized-words-mode): Define as obsolete alias for
+ `subword-mode'.
+ (subword-mode, superword-mode): Tweak documentation to reflect new
+ implementation; call `subword-setup-buffer'.
+ (subword-forward, subword-capitalize): Add underscore to indicate
+ unused variable.
+ (subword-find-word-boundary-function-table): New constant.
+ (subword-empty-char-table): New constant.
+ (subword-setup-buffer): New function.
+ (subword-find-word-boundary): New function.
2014-03-23 Daniel Colascione <dancol@dancol.org>
(Bug#3647) --- unfortunately, only for freshly-compiled code.
Please make bootstrap.
-2014-03-23 Richard Stallman <rms@gnu.org>
-
- * battery.el (battery-linux-sysfs): Search for each field
- from the beginning of the buffer.
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * dired.el (dired-read-regexp): Make obsolete.
+ (dired-mark-files-regexp, dired-mark-files-containing-regexp)
+ (dired-flag-files-regexp):
+ * dired-aux.el (dired-mark-read-regexp):
+ * dired-x.el (dired-mark-unmarked-files): Use read-regexp directly.
+
+ * startup.el (fancy-startup-text):
+ * help.el (describe-gnu-project): Visit online info about GNU project.
+
+ * help-fns.el (help-fns--interactive-only): New function.
+ (help-fns-describe-function-functions): Add the above function.
+ * simple.el (beginning-of-buffer, end-of-buffer, insert-buffer)
+ (next-line, previous-line): Remove hand-written interactive-only
+ information from doc strings, it is auto-generated now.
+ * bookmark.el (bookmark-write):
+ * epa-mail.el (epa-mail-decrypt, epa-mail-verify, epa-mail-sign)
+ (epa-mail-import-keys): Mark interactive-only,
+ and remove hand-written interactive-only information from doc strings.
+ * epa.el (epa-decrypt-armor-in-region, epa-verify-region)
+ (epa-verify-cleartext-in-region, epa-sign-region, epa-encrypt-region):
+ * files.el (not-modified):
+ * simple.el (mark-whole-buffer): Mark interactive-only.
+
+ * emacs-lisp/byte-run.el (defun-declarations-alist):
+ Add interactive-only. Doc tweak.
+ (macro-declarations-alist): Doc tweak.
+ * subr.el (declare): Doc tweak (add xref to manual).
+ * comint.el (comint-run):
+ * files.el (insert-file-literally, insert-file):
+ * replace.el (replace-string, replace-regexp):
+ * simple.el (beginning-of-buffer, end-of-buffer, delete-backward-char)
+ (delete-forward-char, goto-line, insert-buffer, next-line)
+ (previous-line): Set interactive-only via declare.
2014-03-22 Dmitry Gutov <dgutov@yandex.ru>
* w32-common-fns.el (x-selection-owner-p): Add empty docstring for the
benefit of doc.c; change parameter profile to match the X function.
+2014-03-22 Leo Liu <sdl.web@gmail.com>
+
+ * help.el (temp-buffer-setup-hook): Remove help-mode-setup.
+ (temp-buffer-show-hook): Remove help-mode-finish. (Bug#16038)
+
+2014-03-21 Richard Stallman <rms@gnu.org>
+
+ * battery.el (battery-linux-sysfs): Search for each field
+ from the beginning of the buffer.
+
+ * subr.el (set-transient-map): Clear out function and value
+ of the temporary symbol when we're done with it.
+
+ * mail/rmailsum.el (rmail-summary-delete-forward):
+ Optimize case of reaching end and handling count.
+ (rmail-summary-mark-deleted): Optimize when N is current msg.
+ Don't create new summary line.
+ (rmail-summary-undelete): Pass arg to rmail-undelete-previous-message.
+ (rmail-summary-undelete-many): Rewrite for speed.
+ (rmail-summary-msg-number): New function.
+
+ * mail/rmail.el (rmail-delete-message): Update summary.
+ (rmail-undelete-previous-message): Handle repeat count arg.
+ (rmail-delete-backward, rmail-delete-forward): Likewise.
+
+2014-03-21 Daniel Colascione <dancol@dancol.org>
+
+ * mail/emacsbug.el (report-emacs-bug): Include memory usage
+ information in bug reports.
+
2014-03-21 Michael Albinus <michael.albinus@gmx.de>
* net/tramp.el (tramp-methods): Add docstring for `tramp-login-env'
(tty-color-approximate, tty-color-by-index, tty-color-values)
(tty-color-desc): Remove superfluous backslashes.
+2014-03-21 Glenn Morris <rgm@gnu.org>
+
+ * cus-start.el (history-length): Bump :version.
+
+ * Makefile.in ($(MH_E_DIR)/mh-loaddefs.el)
+ ($(TRAMP_DIR)/tramp-loaddefs.el, $(CAL_DIR)/cal-loaddefs.el)
+ ($(CAL_DIR)/diary-loaddefs.el, $(CAL_DIR)/hol-loaddefs.el):
+ Don't set `make-backup-files'.
+
+ * info.el (info--prettify-description): New function,
+ to give info-finder descriptions consistent case, punctuation.
+ (Info-finder-find-node): Use it. Sort packages.
+ Refer to "description" rather than "commentary".
+
+2014-03-21 Juanma Barranquero <lekktu@gmail.com>
+
+ * frameset.el (frameset--print-register): New function.
+ (frameset-to-register): Use it.
+
+2014-03-20 Juanma Barranquero <lekktu@gmail.com>
+
+ * progmodes/hideif.el (hif-string-to-number): New function.
+ (hif-tokenize): Use it to understand non-decimal floats.
+
+ * emacs-lisp/cl-extra.el (cl--map-overlays): Remove obsolete code.
+
+ * skeleton.el (skeleton-autowrap): Mark as obsolete. Doc fix.
+
2014-03-20 Stefan Monnier <monnier@iro.umontreal.ca>
* electric.el (electric-newline-and-maybe-indent): New command.
* rect.el (rectangle-mark-mode): Rename from rectangle-mark.
Make it into a proper minor mode.
- (rectangle--region): (implicitly) rename to rectangle-mark-mode.
+ (rectangle--region): (Implicitly) rename to rectangle-mark-mode.
(rectangle-mark-mode-map): New keymap.
(rectangle--highlight-for-redisplay): Fix some corner cases (bug#15796).
2013-10-28 Daiki Ueno <ueno@gnu.org>
- * epa-file.el
- (epa-file-cache-passphrase-for-symmetric-encryption):
+ * epa-file.el (epa-file-cache-passphrase-for-symmetric-encryption):
Document that this option has no effect with GnuPG 2.0 (bug#15552).
2013-10-27 Xue Fuqiao <xfq.free@gmail.com>
* textmodes/reftex-vars.el (reftex-ref-style-alist):
Add cleveref macros.
- * textmodes/reftex-parse.el
- (reftex-locate-bibliography-files): Accept options for
- bibliography commands.
+ * textmodes/reftex-parse.el (reftex-locate-bibliography-files):
+ Accept options for bibliography commands.
* textmodes/reftex-vars.el (reftex-bibliography-commands):
Add addbibresource. Basic Biblatex support.
2013-04-19 Fabián Ezequiel Gallina <fgallina@gnu.org>
New faster Imenu implementation (bug#14058).
- * progmodes/python.el:
- (python-imenu-prev-index-position):
+ * progmodes/python.el (python-imenu-prev-index-position)
(python-imenu-format-item-label-function)
(python-imenu-format-parent-item-label-function)
(python-imenu-format-parent-item-jump-label-function):
(defun forward-sexp (&optional arg)
"Move forward across one balanced expression (sexp).
-With ARG, do it that many times. Negative arg -N means
-move backward across N balanced expressions.
-This command assumes point is not in a string or comment.
-Calls `forward-sexp-function' to do the work, if that is non-nil."
+With ARG, do it that many times. Negative arg -N means move
+backward across N balanced expressions. This command assumes
+point is not in a string or comment. Calls
+`forward-sexp-function' to do the work, if that is non-nil. If
+unable to move over a sexp, signal `scan-error' with three
+arguments: a message, the start of the obstacle (usually a
+parenthesis or list marker of some kind), and end of the
+obstacle."
(interactive "^p")
(or arg (setq arg 1))
(if forward-sexp-function
(goto-char (or (scan-lists (point) inc -1) (buffer-end arg)))
(setq arg (- arg inc)))))
-(defun backward-up-list (&optional arg)
+(defun backward-up-list (&optional arg escape-strings no-syntax-crossing)
"Move backward out of one level of parentheses.
This command will also work on other parentheses-like expressions
-defined by the current language mode.
-With ARG, do this that many times.
-A negative argument means move forward but still to a less deep spot.
-This command assumes point is not in a string or comment."
- (interactive "^p")
- (up-list (- (or arg 1))))
-
-(defun up-list (&optional arg)
+defined by the current language mode. With ARG, do this that
+many times. A negative argument means move forward but still to
+a less deep spot. If ESCAPE-STRINGS is non-nil (as it is
+interactively), move out of enclosing strings as well. If
+NO-SYNTAX-CROSSING is non-nil (as it is interactively), prefer to
+break out of any enclosing string instead of moving to the start
+of a list broken across multiple strings. On error, location of
+point is unspecified."
+ (interactive "^p\nd\nd")
+ (up-list (- (or arg 1)) escape-strings no-syntax-crossing))
+
+(defun up-list (&optional arg escape-strings no-syntax-crossing)
"Move forward out of one level of parentheses.
This command will also work on other parentheses-like expressions
-defined by the current language mode.
-With ARG, do this that many times.
-A negative argument means move backward but still to a less deep spot.
-This command assumes point is not in a string or comment."
- (interactive "^p")
+defined by the current language mode. With ARG, do this that
+many times. A negative argument means move backward but still to
+a less deep spot. If ESCAPE-STRINGS is non-nil (as it is
+interactively), move out of enclosing strings as well. If
+NO-SYNTAX-CROSSING is non-nil (as it is interactively), prefer to
+break out of any enclosing string instead of moving to the start
+of a list broken across multiple strings. On error, location of
+point is unspecified."
+ (interactive "^p\nd\nd")
(or arg (setq arg 1))
(let ((inc (if (> arg 0) 1 -1))
- pos)
+ (pos nil))
(while (/= arg 0)
- (if (null forward-sexp-function)
- (goto-char (or (scan-lists (point) inc 1) (buffer-end arg)))
- (condition-case err
- (while (progn (setq pos (point))
- (forward-sexp inc)
- (/= (point) pos)))
- (scan-error (goto-char (nth (if (> arg 0) 3 2) err))))
- (if (= (point) pos)
- (signal 'scan-error
- (list "Unbalanced parentheses" (point) (point)))))
+ (condition-case err
+ (save-restriction
+ ;; If we've been asked not to cross string boundaries
+ ;; and we're inside a string, narrow to that string so
+ ;; that scan-lists doesn't find a match in a different
+ ;; string.
+ (when no-syntax-crossing
+ (let* ((syntax (syntax-ppss))
+ (string-comment-start (nth 8 syntax)))
+ (when string-comment-start
+ (save-excursion
+ (goto-char string-comment-start)
+ (narrow-to-region
+ (point)
+ (if (nth 3 syntax) ; in string
+ (condition-case nil
+ (progn (forward-sexp) (point))
+ (scan-error (point-max)))
+ (forward-comment 1)
+ (point)))))))
+ (if (null forward-sexp-function)
+ (goto-char (or (scan-lists (point) inc 1)
+ (buffer-end arg)))
+ (condition-case err
+ (while (progn (setq pos (point))
+ (forward-sexp inc)
+ (/= (point) pos)))
+ (scan-error (goto-char (nth (if (> arg 0) 3 2) err))))
+ (if (= (point) pos)
+ (signal 'scan-error
+ (list "Unbalanced parentheses" (point) (point))))))
+ (scan-error
+ (let ((syntax nil))
+ (or
+ ;; If we bumped up against the end of a list, see whether
+ ;; we're inside a string: if so, just go to the beginning
+ ;; or end of that string.
+ (and escape-strings
+ (or syntax (setf syntax (syntax-ppss)))
+ (nth 3 syntax)
+ (goto-char (nth 8 syntax))
+ (progn (when (> inc 0)
+ (forward-sexp))
+ t))
+ ;; If we narrowed to a comment above and failed to escape
+ ;; it, the error might be our fault, not an indication
+ ;; that we're out of syntax. Try again from beginning or
+ ;; end of the comment.
+ (and no-syntax-crossing
+ (or syntax (setf syntax (syntax-ppss)))
+ (nth 4 syntax)
+ (goto-char (nth 8 syntax))
+ (or (< inc 0)
+ (forward-comment 1))
+ (setf arg (+ arg inc)))
+ (signal (car err) (cdr err))))))
(setq arg (- arg inc)))))
(defun kill-sexp (&optional arg)
(push-mark))
(if (or (null arg) (= arg 0)) (setq arg 1))
(let ((pos (point))
- (beg (progn (end-of-line 1) (beginning-of-defun-raw 1) (point))))
+ (beg (progn (end-of-line 1) (beginning-of-defun-raw 1) (point)))
+ (skip (lambda ()
+ ;; When comparing point against pos, we want to consider that if
+ ;; point was right after the end of the function, it's still
+ ;; considered as "in that function".
+ ;; E.g. `eval-defun' from right after the last close-paren.
+ (unless (bolp)
+ (skip-chars-forward " \t")
+ (if (looking-at "\\s<\\|\n")
+ (forward-line 1))))))
(funcall end-of-defun-function)
- ;; When comparing point against pos, we want to consider that if
- ;; point was right after the end of the function, it's still
- ;; considered as "in that function".
- ;; E.g. `eval-defun' from right after the last close-paren.
- (unless (bolp)
- (skip-chars-forward " \t")
- (if (looking-at "\\s<\\|\n")
- (forward-line 1)))
+ (funcall skip)
(cond
((> arg 0)
;; Moving forward.
(goto-char beg))
(unless (zerop arg)
(beginning-of-defun-raw (- arg))
+ (setq beg (point))
(funcall end-of-defun-function))))
- (unless (bolp)
- (skip-chars-forward " \t")
- (if (looking-at "\\s<\\|\n")
- (forward-line 1)))))
+ (funcall skip)
+ (while (and (< arg 0) (>= (point) pos))
+ ;; We intended to move backward, but this ended up not doing so:
+ ;; Try harder!
+ (goto-char beg)
+ (beginning-of-defun-raw (- arg))
+ (if (>= (point) beg)
+ (setq arg 0)
+ (setq beg (point))
+ (funcall end-of-defun-function)
+ (funcall skip)))))
(defun mark-defun (&optional allow-extend)
"Put mark at end of this defun, point at beginning.
(advice--make-1 (nth 1 desc) (nth 2 desc)
function main props)))))
- (defun advice--member-p (function name definition)
+ (defun advice--member-p (function use-name definition)
(let ((found nil))
(while (and (not found) (advice--p definition))
- (if (if name
- (equal name (cdr (assq 'name (advice--props definition))))
- (equal function (advice--car definition)))
+ (if (if (eq use-name :use-both)
+ (or (equal function
+ (cdr (assq 'name (advice--props definition))))
+ (equal function (advice--car definition)))
+ (equal function (if use-name
+ (cdr (assq 'name (advice--props definition)))
+ (advice--car definition))))
(setq found definition)
(setq definition (advice--cdr definition))))
found))
;; This function acts like the t special value in buffer-local hooks.
(lambda (&rest args) (apply (default-value var) args)))))
-(defun advice--normalize-place (place)
- (cond ((eq 'local (car-safe place)) `(advice--buffer-local ,@(cdr place)))
- ((eq 'var (car-safe place)) (nth 1 place))
- ((symbolp place) `(default-value ',place))
- (t place)))
+(eval-and-compile
+ (defun advice--normalize-place (place)
+ (cond ((eq 'local (car-safe place)) `(advice--buffer-local ,@(cdr place)))
+ ((eq 'var (car-safe place)) (nth 1 place))
+ ((symbolp place) `(default-value ',place))
+ (t place))))
;;;###autoload
(defmacro add-function (where place function &optional props)
;;;###autoload
(defun advice--add-function (where ref function props)
(let* ((name (cdr (assq 'name props)))
- (a (advice--member-p function name (gv-deref ref))))
+ (a (advice--member-p (or name function) (if name t) (gv-deref ref))))
(when a
;; The advice is already present. Remove the old one, first.
(setf (gv-deref ref)
"Return non-nil if ADVICE is already in FUNCTION-DEF.
Instead of ADVICE being the actual function, it can also be the `name'
of the piece of advice."
- (advice--member-p advice advice function-def))
+ (advice--member-p advice :use-both function-def))
;;;; Specific application of add-function to `symbol-function' for advice.
(print-length nil))
(write-region
(concat
+ ";;; -*- no-byte-compile: t -*-\n"
(prin1-to-string
(nconc
(list 'define-package
(list (car elt)
(package-version-join (cadr elt))))
requires))))
- (package--alist-to-plist
- (package-desc-extras pkg-desc))))
+ (let ((alist (package-desc-extras pkg-desc))
+ flat)
+ (while alist
+ (let* ((pair (pop alist))
+ (key (car pair))
+ (val (cdr pair)))
+ ;; Don't bother ‘quote’ing ‘key’; it is always a keyword.
+ (push key flat)
+ (push (if (and (not (consp val))
+ (or (keywordp val)
+ (not (symbolp val))
+ (memq val '(nil t))))
+ val
+ `',val)
+ flat)))
+ (nreverse flat))))
"\n")
nil pkg-file nil 'silent))))
-(defun package--alist-to-plist (alist)
- (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist)))
-
(defun package-unpack (pkg-desc)
"Install the contents of the current buffer as a package."
(let* ((name (package-desc-name pkg-desc))
;; may fetch a URL redirect page).
(when (listp (read (current-buffer)))
(make-directory dir t)
- (setq buffer-file-name (expand-file-name file dir))
- (let ((version-control 'never)
- (require-final-newline nil))
- (save-buffer))))
+ (write-region nil nil (expand-file-name file dir) nil 'silent)))
(when good-signatures
;; Write out good signatures into archive-contents.signed file.
(write-region (mapconcat #'epg-signature-to-string good-signatures "\n")
(package--with-work-buffer
(package-archive-base desc)
(format "%s-readme.txt" name)
- (setq buffer-file-name
- (expand-file-name readme package-user-dir))
- (let ((version-control 'never)
- (require-final-newline t))
- (save-buffer))
+ (save-excursion
+ (goto-char (point-max))
+ (unless (bolp)
+ (insert ?\n)))
+ (write-region nil nil
+ (expand-file-name readme package-user-dir)
+ nil 'silent)
(setq readme-string (buffer-string))
t))
(error nil))
(let* ((qpos pred)
(ustring (funcall unquote string))
(uprefix (funcall unquote (substring string 0 qpos)))
- ;; FIXME: we really should pass `qpos' to `unuote' and have that
+ ;; FIXME: we really should pass `qpos' to `unquote' and have that
;; function give us the corresponding `uqpos'. But for now we
;; presume (more or less) that `concat' and `unquote' commute.
(uqpos (if (string-prefix-p uprefix ustring)
;; part of the string (e.g. substitute-in-file-name).
(let ((requote
(when (completion-metadata-get metadata 'completion--unquote-requote)
+ (cl-assert (functionp table))
(let ((new (funcall table string point 'completion--unquote)))
(setq string (pop new))
(setq table (pop new))
If you repeat this command after it displayed such a list,
scroll the window of possible completions."
(interactive)
- (completion-in-region (minibuffer-prompt-end) (point-max)
- minibuffer-completion-table
- minibuffer-completion-predicate))
+ (when (<= (minibuffer-prompt-end) (point))
+ (completion-in-region (minibuffer-prompt-end) (point-max)
+ minibuffer-completion-table
+ minibuffer-completion-predicate)))
(defun completion--in-region-1 (beg end)
;; If the previous command was not this,
(nconc (completion-pcm--hilit-commonality pattern all)
(length prefix)))))
-(defun completion--sreverse (str)
- "Like `reverse' but for a string STR rather than a list."
- (apply #'string (nreverse (mapcar 'identity str))))
-
(defun completion--common-suffix (strs)
"Return the common suffix of the strings STRS."
- (completion--sreverse
- (try-completion
- ""
- (mapcar #'completion--sreverse strs))))
+ (nreverse (try-completion "" (mapcar #'reverse strs))))
(defun completion-pcm--merge-completions (strs pattern)
"Extract the commonality in STRS, with the help of PATTERN.
;; This package provides various useful commands (including help
;; system access) through the mouse. All this code assumes that mouse
;; interpretation has been abstracted into Emacs input events.
- ;;
- ;; The code is rather X-dependent.
;;; Code:
(interactive "e")
(mouse-drag-line start-event 'vertical))
\f
-(defun mouse-set-point (event)
+(defun mouse-set-point (event &optional promote-to-region)
"Move point to the position clicked on with the mouse.
-This should be bound to a mouse click event type."
- (interactive "e")
+This should be bound to a mouse click event type.
+If PROMOTE-TO-REGION is non-nil and event is a multiple-click,
+select the corresponding element around point."
+ (interactive "e\np")
(mouse-minibuffer-check event)
- ;; Use event-end in case called from mouse-drag-region.
- ;; If EVENT is a click, event-end and event-start give same value.
- (posn-set-point (event-end event)))
+ (if (and promote-to-region (> (event-click-count event) 1))
+ (mouse-set-region event)
+ ;; Use event-end in case called from mouse-drag-region.
+ ;; If EVENT is a click, event-end and event-start give same value.
+ (posn-set-point (event-end event))))
(defvar mouse-last-region-beg nil)
(defvar mouse-last-region-end nil)
(eq mouse-last-region-end (region-end))
(eq mouse-last-region-tick (buffer-modified-tick))))
+(defvar mouse--drag-start-event nil)
+
(defun mouse-set-region (click)
"Set the region to the text dragged over, and copy to kill ring.
This should be bound to a mouse drag event.
(mouse-minibuffer-check click)
(select-window (posn-window (event-start click)))
(let ((beg (posn-point (event-start click)))
- (end (posn-point (event-end click))))
+ (end (posn-point (event-end click)))
+ (click-count (event-click-count click)))
+ (let ((drag-start (terminal-parameter nil 'mouse-drag-start)))
+ ;; Drag events don't come with a click count, sadly, so we hack
+ ;; our way around this problem by remembering the start-event in
+ ;; `mouse-drag-start' and fetching the click-count from there.
+ (when drag-start
+ (when (and (<= click-count 1)
+ (equal beg (posn-point (event-start drag-start))))
+ (setq click-count (event-click-count drag-start)))
+ (setf (terminal-parameter nil 'mouse-drag-start) nil)))
+ (when (and (integerp beg) (integerp end))
+ (let ((range (mouse-start-end beg end (1- click-count))))
+ (if (< end beg)
+ (setq end (nth 0 range) beg (nth 1 range))
+ (setq beg (nth 0 range) end (nth 1 range)))))
(and mouse-drag-copy-region (integerp beg) (integerp end)
;; Don't set this-command to `kill-region', so a following
;; C-w won't double the text in the kill ring. Ignore
Highlight the drag area as you move the mouse.
This must be bound to a button-down mouse event.
In Transient Mark mode, the highlighting remains as long as the mark
-remains active. Otherwise, it remains until the next input event.
-
-If the click is in the echo area, display the `*Messages*' buffer."
+remains active. Otherwise, it remains until the next input event."
(interactive "e")
;; Give temporary modes such as isearch a chance to turn off.
(run-hooks 'mouse-leave-buffer-hook)
- (mouse-drag-track start-event t))
+ (mouse-drag-track start-event))
(defun mouse-posn-property (pos property)
"mouse-1" (substring msg 7)))))))
msg)
-(defun mouse-drag-track (start-event &optional
- do-mouse-drag-region-post-process)
+(defun mouse-drag-track (start-event)
"Track mouse drags by highlighting area between point and cursor.
-The region will be defined with mark and point.
-DO-MOUSE-DRAG-REGION-POST-PROCESS should only be used by
-`mouse-drag-region'."
+The region will be defined with mark and point."
(mouse-minibuffer-check start-event)
(setq mouse-selection-click-count-buffer (current-buffer))
(deactivate-mark)
(start-posn (event-start start-event))
(start-point (posn-point start-posn))
(start-window (posn-window start-posn))
- (start-window-start (window-start start-window))
- (start-hscroll (window-hscroll start-window))
(bounds (window-edges start-window))
(make-cursor-line-fully-visible nil)
(top (nth 1 bounds))
(click-count (1- (event-click-count start-event)))
;; Suppress automatic hscrolling, because that is a nuisance
;; when setting point near the right fringe (but see below).
- (auto-hscroll-mode-saved auto-hscroll-mode)
- (auto-hscroll-mode nil)
- moved-off-start event end end-point)
+ (auto-hscroll-mode-saved auto-hscroll-mode))
(setq mouse-selection-click-count click-count)
;; In case the down click is in the middle of some intangible text,
(push-mark (nth 0 range) t t)
(goto-char (nth 1 range)))
- ;; Track the mouse until we get a non-movement event.
- (track-mouse
- (while (progn
- (setq event (read-event))
- (or (mouse-movement-p event)
- (memq (car-safe event) '(switch-frame select-window))))
- (unless (memq (car-safe event) '(switch-frame select-window))
- ;; Automatic hscrolling did not occur during the call to
- ;; `read-event'; but if the user subsequently drags the
- ;; mouse, go ahead and hscroll.
- (let ((auto-hscroll-mode auto-hscroll-mode-saved))
- (redisplay))
- (setq end (event-end event)
- end-point (posn-point end))
- ;; Note whether the mouse has left the starting position.
+ (setf (terminal-parameter nil 'mouse-drag-start) start-event)
+ (setq track-mouse t)
+ (setq auto-hscroll-mode nil)
+
+ (set-transient-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map [switch-frame] #'ignore)
+ (define-key map [select-window] #'ignore)
+ (define-key map [mouse-movement]
+ (lambda (event) (interactive "e")
+ (let* ((end (event-end event))
+ (end-point (posn-point end)))
(unless (eq end-point start-point)
- (setq moved-off-start t))
+ ;; As soon as the user moves, we can re-enable auto-hscroll.
+ (setq auto-hscroll-mode auto-hscroll-mode-saved))
(if (and (eq (posn-window end) start-window)
(integer-or-marker-p end-point))
(mouse--drag-set-mark-and-point start-point
((>= mouse-row bottom)
(mouse-scroll-subr start-window (1+ (- mouse-row bottom))
nil start-point))))))))
-
- ;; Handle the terminating event if possible.
- (when (consp event)
- ;; Ensure that point is on the end of the last event.
- (when (and (setq end-point (posn-point (event-end event)))
- (eq (posn-window end) start-window)
- (integer-or-marker-p end-point)
- (/= start-point end-point))
- (mouse--drag-set-mark-and-point start-point
- end-point click-count))
-
- ;; Find its binding.
- (let* ((fun (key-binding (vector (car event))))
- ;; FIXME This doesn't make sense, because
- ;; event-click-count always returns something >= 1.
- (do-multi-click (and (> (event-click-count event) 0)
- (functionp fun)
- (not (memq fun '(mouse-set-point
- mouse-set-region))))))
- (if (and (/= (mark) (point))
- (not do-multi-click))
-
- ;; If point has moved, finish the drag.
- (let* (last-command this-command)
- (and mouse-drag-copy-region
- do-mouse-drag-region-post-process
- (let (deactivate-mark)
- (copy-region-as-kill (mark) (point)))))
-
- ;; Otherwise, run binding of terminating up-event.
+ map)
+ t (lambda ()
+ (setq track-mouse nil)
+ (setq auto-hscroll-mode auto-hscroll-mode-saved)
(deactivate-mark)
- (if do-multi-click
- (goto-char start-point)
- (unless moved-off-start
- (pop-mark)))
-
- (when (and (functionp fun)
- (= start-hscroll (window-hscroll start-window))
- ;; Don't run the up-event handler if the window
- ;; start changed in a redisplay after the
- ;; mouse-set-point for the down-mouse event at
- ;; the beginning of this function. When the
- ;; window start has changed, the up-mouse event
- ;; contains a different position due to the new
- ;; window contents, and point is set again.
- (or end-point
- (= (window-start start-window)
- start-window-start)))
- (push event unread-command-events)))))))
+ (pop-mark)))))
(defun mouse--drag-set-mark-and-point (start click click-count)
(let* ((range (mouse-start-end start click click-count))
\f
;;; Bindings for mouse commands.
-(define-key global-map [down-mouse-1] 'mouse-drag-region)
+(global-set-key [down-mouse-1] 'mouse-drag-region)
(global-set-key [mouse-1] 'mouse-set-point)
(global-set-key [drag-mouse-1] 'mouse-set-region)
-;; These are tested for in mouse-drag-region.
-(global-set-key [double-mouse-1] 'mouse-set-point)
-(global-set-key [triple-mouse-1] 'mouse-set-point)
-
(defun mouse--strip-first-event (_prompt)
(substring (this-single-command-raw-keys) 1))
-;;; scheme.el --- Scheme (and DSSSL) editing mode
+;;; scheme.el --- Scheme (and DSSSL) editing mode -*- lexical-binding: t; -*-
;; Copyright (C) 1986-1988, 1997-1998, 2001-2014 Free Software
;; Foundation, Inc.
(modify-syntax-entry ?\( "() " st)
(modify-syntax-entry ?\) ")( " st)
;; It's used for single-line comments as well as for #;(...) sexp-comments.
- (modify-syntax-entry ?\; "< 2 " st)
+ (modify-syntax-entry ?\; "<" st)
(modify-syntax-entry ?\" "\" " st)
(modify-syntax-entry ?' "' " st)
(modify-syntax-entry ?` "' " st)
(setq-local lisp-indent-function 'scheme-indent-function)
(setq mode-line-process '("" scheme-mode-line-process))
(setq-local imenu-case-fold-search t)
- (setq imenu-generic-expression scheme-imenu-generic-expression)
- (setq-local imenu-syntax-alist
- '(("+-*/.<>=?!$%_&~^:" . "w")))
+ (setq-local imenu-generic-expression scheme-imenu-generic-expression)
+ (setq-local imenu-syntax-alist '(("+-*/.<>=?!$%_&~^:" . "w")))
+ (setq-local syntax-propertize-function #'scheme-syntax-propertize)
(setq font-lock-defaults
'((scheme-font-lock-keywords
scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
beginning-of-defun
- (font-lock-mark-block-function . mark-defun)
- (font-lock-syntactic-face-function
- . scheme-font-lock-syntactic-face-function)
- (parse-sexp-lookup-properties . t)
- (font-lock-extra-managed-props syntax-table)))
+ (font-lock-mark-block-function . mark-defun)))
(setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
(defvar scheme-mode-line-process "")
"\\|-module"
"\\)\\)\\>"
;; Any whitespace and declared object.
- "[ \t]*(?"
+ ;; The "(*" is for curried definitions, e.g.,
+ ;; (define ((sum a) b) (+ a b))
+ "[ \t]*(*"
"\\(\\sw+\\)?")
'(1 font-lock-keyword-face)
'(6 (cond ((match-beginning 3) font-lock-function-name-face)
(forward-comment (point-max))
(if (eq (char-after) ?\() 2 0)))
- (defun scheme-font-lock-syntactic-face-function (state)
- (when (and (null (nth 3 state))
- (eq (char-after (nth 8 state)) ?#)
- (eq (char-after (1+ (nth 8 state))) ?\;))
- ;; It's a sexp-comment. Tell parse-partial-sexp where it ends.
- (save-excursion
- (let ((pos (point))
- (end
- (condition-case err
- (let ((parse-sexp-lookup-properties nil))
- (goto-char (+ 2 (nth 8 state)))
- ;; FIXME: this doesn't handle the case where the sexp
- ;; itself contains a #; comment.
- (forward-sexp 1)
- (point))
- (scan-error (nth 2 err)))))
- (when (< pos (- end 2))
- (put-text-property pos (- end 2)
- 'syntax-table scheme-sexp-comment-syntax-table))
- (put-text-property (- end 1) end 'syntax-table '(12)))))
- ;; Choose the face to use.
- (lisp-font-lock-syntactic-face-function state))
+ (defun scheme-syntax-propertize (beg end)
+ (goto-char beg)
+ (scheme-syntax-propertize-sexp-comment (point) end)
+ (funcall
+ (syntax-propertize-rules
+ ("\\(#\\);" (1 (prog1 "< cn"
+ (scheme-syntax-propertize-sexp-comment (point) end)))))
+ (point) end))
+
+ (defun scheme-syntax-propertize-sexp-comment (_ end)
+ (let ((state (syntax-ppss)))
+ (when (eq 2 (nth 7 state))
+ ;; It's a sexp-comment. Tell parse-partial-sexp where it ends.
+ (condition-case nil
+ (progn
+ (goto-char (+ 2 (nth 8 state)))
+ ;; FIXME: this doesn't handle the case where the sexp
+ ;; itself contains a #; comment.
+ (forward-sexp 1)
+ (put-text-property (1- (point)) (point)
+ 'syntax-table (string-to-syntax "> cn")))
+ (scan-error (goto-char end))))))
;;;###autoload
(define-derived-mode dsssl-mode scheme-mode "DSSSL"
\f
;;; Let is different in Scheme
-(defun would-be-symbol (string)
- (not (string-equal (substring string 0 1) "(")))
+;; (defun scheme-would-be-symbol (string)
+;; (not (string-equal (substring string 0 1) "(")))
-(defun next-sexp-as-string ()
- ;; Assumes that it is protected by a save-excursion
- (forward-sexp 1)
- (let ((the-end (point)))
- (backward-sexp 1)
- (buffer-substring (point) the-end)))
+;; (defun scheme-next-sexp-as-string ()
+;; ;; Assumes that it is protected by a save-excursion
+;; (forward-sexp 1)
+;; (let ((the-end (point)))
+;; (backward-sexp 1)
+;; (buffer-substring (point) the-end)))
;; This is correct but too slow.
;; The one below works almost always.
;;(defun scheme-let-indent (state indent-point)
-;; (if (would-be-symbol (next-sexp-as-string))
+;; (if (scheme-would-be-symbol (scheme-next-sexp-as-string))
;; (scheme-indent-specform 2 state indent-point)
;; (scheme-indent-specform 1 state indent-point)))
If N is negative, delete newlines as well, leaving -N spaces.
See also `cycle-spacing'."
(interactive "*p")
- (cycle-spacing n nil t))
+ (cycle-spacing n nil 'single-shot))
(defvar cycle-spacing--context nil
"Store context used in consecutive calls to `cycle-spacing' command.
-The first time this function is run, it saves the original point
-position and original spacing around the point in this
-variable.")
+The first time `cycle-spacing' runs, it saves in this variable:
+its N argument, the original point position, and the original spacing
+around point.")
-(defun cycle-spacing (&optional n preserve-nl-back single-shot)
+(defun cycle-spacing (&optional n preserve-nl-back mode)
"Manipulate whitespace around point in a smart way.
In interactive use, this function behaves differently in successive
consecutive calls.
it deletes newlines as well, leaving -N spaces.
\(If PRESERVE-NL-BACK is non-nil, it does not delete newlines before point.)
-The second call in a sequence (or the first call if the above does
-not result in any changes) deletes all spaces.
+The second call in a sequence deletes all spaces.
The third call in a sequence restores the original whitespace (and point).
-If SINGLE-SHOT is non-nil, it only performs the first step in the sequence."
+If MODE is `single-shot', it only performs the first step in the sequence.
+If MODE is `fast' and the first step would not result in any change
+\(i.e., there are exactly (abs N) spaces around point),
+the function goes straight to the second step.
+
+Repeatedly calling the function with different values of N starts a
+new sequence each time."
(interactive "*p")
(let ((orig-pos (point))
(skip-characters (if (and n (< n 0)) " \t\n\r" " \t"))
- (n (abs (or n 1))))
+ (num (abs (or n 1))))
(skip-chars-backward (if preserve-nl-back " \t" skip-characters))
(constrain-to-field nil orig-pos)
(cond
- ;; Command run for the first time or single-shot is non-nil.
- ((or single-shot
+ ;; Command run for the first time, single-shot mode or different argument
+ ((or (eq 'single-shot mode)
(not (equal last-command this-command))
- (not cycle-spacing--context))
+ (not cycle-spacing--context)
+ (not (eq (car cycle-spacing--context) n)))
(let* ((start (point))
- (n (- n (skip-chars-forward " " (+ n (point)))))
+ (num (- num (skip-chars-forward " " (+ num (point)))))
(mid (point))
(end (progn
(skip-chars-forward skip-characters)
(setq cycle-spacing--context ;; Save for later.
;; Special handling for case where there was no space at all.
(unless (= start end)
- (cons orig-pos (buffer-substring start (point)))))
+ (cons n (cons orig-pos (buffer-substring start (point))))))
;; If this run causes no change in buffer content, delete all spaces,
;; otherwise delete all excess spaces.
- (delete-region (if (and (not single-shot) (zerop n) (= mid end))
+ (delete-region (if (and (eq mode 'fast) (zerop num) (= mid end))
start mid) end)
- (insert (make-string n ?\s))))
+ (insert (make-string num ?\s))))
;; Command run for the second time.
((not (equal orig-pos (point)))
;; Command run for the third time.
(t
- (insert (cdr cycle-spacing--context))
- (goto-char (car cycle-spacing--context))
+ (insert (cddr cycle-spacing--context))
+ (goto-char (cadr cycle-spacing--context))
(setq cycle-spacing--context nil)))))
\f
(defun beginning-of-buffer (&optional arg)
accessible part of the buffer.
If Transient Mark mode is disabled, leave mark at previous
-position, unless a \\[universal-argument] prefix is supplied.
-
-Don't use this command in Lisp programs!
-\(goto-char (point-min)) is faster."
+position, unless a \\[universal-argument] prefix is supplied."
+ (declare (interactive-only "use `(goto-char (point-min))' instead."))
(interactive "^P")
(or (consp arg)
(region-active-p)
(/ (+ 10 (* size (prefix-numeric-value arg))) 10)))
(point-min))))
(if (and arg (not (consp arg))) (forward-line 1)))
-(put 'beginning-of-buffer 'interactive-only
- "use `(goto-char (point-min))' instead.")
(defun end-of-buffer (&optional arg)
"Move point to the end of the buffer.
accessible part of the buffer.
If Transient Mark mode is disabled, leave mark at previous
-position, unless a \\[universal-argument] prefix is supplied.
-
-Don't use this command in Lisp programs!
-\(goto-char (point-max)) is faster."
+position, unless a \\[universal-argument] prefix is supplied."
+ (declare (interactive-only "use `(goto-char (point-max))' instead."))
(interactive "^P")
(or (consp arg) (region-active-p) (push-mark))
(let ((size (- (point-max) (point-min))))
;; then scroll specially to put it near, but not at, the bottom.
(overlay-recenter (point))
(recenter -3))))
-(put 'end-of-buffer 'interactive-only "use `(goto-char (point-max))' instead.")
(defcustom delete-active-region t
"Whether single-char deletion commands delete an active region.
In Overwrite mode, single character backward deletion may replace
tabs with spaces so as to back over columns, unless point is at
the end of the line."
+ (declare (interactive-only delete-char))
(interactive "p\nP")
(unless (integerp n)
(signal 'wrong-type-argument (list 'integerp n)))
(insert-char ?\s (- ocol (current-column)) nil))))
;; Otherwise, do simple deletion.
(t (delete-char (- n) killflag))))
-(put 'delete-backward-char 'interactive-only 'delete-char)
(defun delete-forward-char (n &optional killflag)
"Delete the following N characters (previous if N is negative).
Optional second arg KILLFLAG non-nil means to kill (save in kill
ring) instead of delete. Interactively, N is the prefix arg, and
KILLFLAG is set if N was explicitly specified."
+ (declare (interactive-only delete-char))
(interactive "p\nP")
(unless (integerp n)
(signal 'wrong-type-argument (list 'integerp n)))
;; Otherwise, do simple deletion.
(t (delete-char n killflag))))
-(put 'delete-forward-char 'interactive-only 'delete-char)
(defun mark-whole-buffer ()
"Put point at beginning and mark at end of buffer.
You probably should not use this function in Lisp programs;
it is usually a mistake for a Lisp function to use any subroutine
that uses or sets the mark."
+ (declare (interactive-only t))
(interactive)
(push-mark (point))
(push-mark (point-max) nil t)
(forward-line (1- N))
If at all possible, an even better solution is to use char counts
rather than line counts."
+ (declare (interactive-only forward-line))
(interactive
(if (and current-prefix-arg (not (consp current-prefix-arg)))
(list (prefix-numeric-value current-prefix-arg))
(if (eq selective-display t)
(re-search-forward "[\n\C-m]" nil 'end (1- line))
(forward-line (1- line)))))
-(put 'goto-line 'interactive-only 'forward-line)
(defun count-words-region (start end &optional arg)
"Count the number of words in the region.
(undo-make-selective-list (min beg end) (max beg end))
buffer-undo-list)))
+;; The positions given in elements of the undo list are the positions
+;; as of the time that element was recorded to undo history. In
+;; general, subsequent buffer edits render those positions invalid in
+;; the current buffer, unless adjusted according to the intervening
+;; undo elements.
+;;
+;; Undo in region is a use case that requires adjustments to undo
+;; elements. It must adjust positions of elements in the region based
+;; on newer elements not in the region so as they may be correctly
+;; applied in the current buffer. undo-make-selective-list
+;; accomplishes this with its undo-deltas list of adjustments. An
+;; example undo history from oldest to newest:
+;;
+;; buf pos:
+;; 123456789 buffer-undo-list undo-deltas
+;; --------- ---------------- -----------
+;; aaa (1 . 4) (1 . -3)
+;; aaba (3 . 4) N/A (in region)
+;; ccaaba (1 . 3) (1 . -2)
+;; ccaabaddd (7 . 10) (7 . -3)
+;; ccaabdd ("ad" . 6) (6 . 2)
+;; ccaabaddd (6 . 8) (6 . -2)
+;; | |<-- region: "caab", from 2 to 6
+;;
+;; When the user starts a run of undos in region,
+;; undo-make-selective-list is called to create the full list of in
+;; region elements. Each element is adjusted forward chronologically
+;; through undo-deltas to determine if it is in the region.
+;;
+;; In the above example, the insertion of "b" is (3 . 4) in the
+;; buffer-undo-list. The undo-delta (1 . -2) causes (3 . 4) to become
+;; (5 . 6). The next three undo-deltas cause no adjustment, so (5
+;; . 6) is assessed as in the region and placed in the selective list.
+;; Notably, the end of region itself adjusts from "2 to 6" to "2 to 5"
+;; due to the selected element. The "b" insertion is the only element
+;; fully in the region, so in this example undo-make-selective-list
+;; returns (nil (5 . 6)).
+;;
+;; The adjustment of the (7 . 10) insertion of "ddd" shows an edge
+;; case. It is adjusted through the undo-deltas: ((6 . 2) (6 . -2)).
+;; Normally an undo-delta of (6 . 2) would cause positions after 6 to
+;; adjust by 2. However, they shouldn't adjust to less than 6, so (7
+;; . 10) adjusts to (6 . 8) due to the first undo delta.
+;;
+;; More interesting is how to adjust the "ddd" insertion due to the
+;; next undo-delta: (6 . -2), corresponding to reinsertion of "ad".
+;; If the reinsertion was a manual retyping of "ad", then the total
+;; adjustment should be (7 . 10) -> (6 . 8) -> (8 . 10). However, if
+;; the reinsertion was due to undo, one might expect the first "d"
+;; character would again be a part of the "ddd" text, meaning its
+;; total adjustment would be (7 . 10) -> (6 . 8) -> (7 . 10).
+;;
+;; undo-make-selective-list assumes in this situation that "ad" was a
+;; new edit, even if it was inserted because of an undo.
+;; Consequently, if the user undos in region "8 to 10" of the
+;; "ccaabaddd" buffer, they could be surprised that it becomes
+;; "ccaabad", as though the first "d" became detached from the
+;; original "ddd" insertion. This quirk is a FIXME.
+
(defun undo-make-selective-list (start end)
"Return a list of undo elements for the region START to END.
-The elements come from `buffer-undo-list', but we keep only
-the elements inside this region, and discard those outside this region.
-If we find an element that crosses an edge of this region,
-we stop and ignore all further elements."
- (let ((undo-list-copy (undo-copy-list buffer-undo-list))
- (undo-list (list nil))
- some-rejected
- undo-elt temp-undo-list delta)
- (while undo-list-copy
- (setq undo-elt (car undo-list-copy))
- (let ((keep-this
- (cond ((and (consp undo-elt) (eq (car undo-elt) t))
- ;; This is a "was unmodified" element.
- ;; Keep it if we have kept everything thus far.
- (not some-rejected))
- ;; Skip over marker adjustments, instead relying on
- ;; finding them after (TEXT . POS) elements
- ((markerp (car-safe undo-elt))
- nil)
- (t
- (undo-elt-in-region undo-elt start end)))))
- (if keep-this
- (progn
- (setq end (+ end (cdr (undo-delta undo-elt))))
- ;; Don't put two nils together in the list
- (when (not (and (eq (car undo-list) nil)
- (eq undo-elt nil)))
- (setq undo-list (cons undo-elt undo-list))
- ;; If (TEXT . POS), "keep" its subsequent (MARKER
- ;; . ADJUSTMENT) whose markers haven't moved.
- (when (and (stringp (car-safe undo-elt))
- (integerp (cdr-safe undo-elt)))
- (let ((list-i (cdr undo-list-copy)))
+The elements come from `buffer-undo-list', but we keep only the
+elements inside this region, and discard those outside this
+region. The elements' positions are adjusted so as the returned
+list can be applied to the current buffer."
+ (let ((ulist buffer-undo-list)
+ ;; A list of position adjusted undo elements in the region.
+ (selective-list (list nil))
+ ;; A list of undo-deltas for out of region undo elements.
+ undo-deltas
+ undo-elt)
+ (while ulist
+ (when undo-no-redo
+ (while (gethash ulist undo-equiv-table)
+ (setq ulist (gethash ulist undo-equiv-table))))
+ (setq undo-elt (car ulist))
+ (cond
+ ((null undo-elt)
+ ;; Don't put two nils together in the list
+ (when (car selective-list)
+ (push nil selective-list)))
+ ((and (consp undo-elt) (eq (car undo-elt) t))
+ ;; This is a "was unmodified" element. Keep it
+ ;; if we have kept everything thus far.
+ (when (not undo-deltas)
+ (push undo-elt selective-list)))
+ ;; Skip over marker adjustments, instead relying
+ ;; on finding them after (TEXT . POS) elements
+ ((markerp (car-safe undo-elt))
+ nil)
+ (t
+ (let ((adjusted-undo-elt (undo-adjust-elt undo-elt
+ undo-deltas)))
+ (if (undo-elt-in-region adjusted-undo-elt start end)
+ (progn
+ (setq end (+ end (cdr (undo-delta adjusted-undo-elt))))
+ (push adjusted-undo-elt selective-list)
+ ;; Keep (MARKER . ADJUSTMENT) if their (TEXT . POS) was
+ ;; kept. primitive-undo may discard them later.
+ (when (and (stringp (car-safe adjusted-undo-elt))
+ (integerp (cdr-safe adjusted-undo-elt)))
+ (let ((list-i (cdr ulist)))
(while (markerp (car-safe (car list-i)))
- (let* ((adj-elt (pop list-i))
- (m (car adj-elt)))
- (and (eq (marker-buffer m) (current-buffer))
- (= (cdr undo-elt) m)
- (push adj-elt undo-list))))))))
- (if (undo-elt-crosses-region undo-elt start end)
- (setq undo-list-copy nil)
- (setq some-rejected t)
- (setq temp-undo-list (cdr undo-list-copy))
- (setq delta (undo-delta undo-elt))
-
- (when (/= (cdr delta) 0)
- (let ((position (car delta))
- (offset (cdr delta)))
-
- ;; Loop down the earlier events adjusting their buffer
- ;; positions to reflect the fact that a change to the buffer
- ;; isn't being undone. We only need to process those element
- ;; types which undo-elt-in-region will return as being in
- ;; the region since only those types can ever get into the
- ;; output
-
- (while temp-undo-list
- (setq undo-elt (car temp-undo-list))
- (cond ((integerp undo-elt)
- (if (>= undo-elt position)
- (setcar temp-undo-list (- undo-elt offset))))
- ((atom undo-elt) nil)
- ((stringp (car undo-elt))
- ;; (TEXT . POSITION)
- (let ((text-pos (abs (cdr undo-elt)))
- (point-at-end (< (cdr undo-elt) 0 )))
- (if (>= text-pos position)
- (setcdr undo-elt (* (if point-at-end -1 1)
- (- text-pos offset))))))
- ((integerp (car undo-elt))
- ;; (BEGIN . END)
- (when (>= (car undo-elt) position)
- (setcar undo-elt (- (car undo-elt) offset))
- (setcdr undo-elt (- (cdr undo-elt) offset))))
- ((null (car undo-elt))
- ;; (nil PROPERTY VALUE BEG . END)
- (let ((tail (nthcdr 3 undo-elt)))
- (when (>= (car tail) position)
- (setcar tail (- (car tail) offset))
- (setcdr tail (- (cdr tail) offset))))))
- (setq temp-undo-list (cdr temp-undo-list))))))))
- (setq undo-list-copy (cdr undo-list-copy)))
- (nreverse undo-list)))
+ (push (pop list-i) selective-list)))))
+ (let ((delta (undo-delta undo-elt)))
+ (when (/= 0 (cdr delta))
+ (push delta undo-deltas)))))))
+ (pop ulist))
+ (nreverse selective-list)))
(defun undo-elt-in-region (undo-elt start end)
"Determine whether UNDO-ELT falls inside the region START ... END.
;; (BEGIN . END)
(and (< (car undo-elt) end)
(> (cdr undo-elt) start)))))
+(make-obsolete 'undo-elt-crosses-region nil "24.5")
+
+(defun undo-adjust-elt (elt deltas)
+ "Return adjustment of undo element ELT by the undo DELTAS
+list."
+ (pcase elt
+ ;; POSITION
+ ((pred integerp)
+ (undo-adjust-pos elt deltas))
+ ;; (BEG . END)
+ (`(,(and beg (pred integerp)) . ,(and end (pred integerp)))
+ (undo-adjust-beg-end beg end deltas))
+ ;; (TEXT . POSITION)
+ (`(,(and text (pred stringp)) . ,(and pos (pred integerp)))
+ (cons text (* (if (< pos 0) -1 1)
+ (undo-adjust-pos (abs pos) deltas))))
+ ;; (nil PROPERTY VALUE BEG . END)
+ (`(nil . ,(or `(,prop ,val ,beg . ,end) pcase--dontcare))
+ `(nil ,prop ,val . ,(undo-adjust-beg-end beg end deltas)))
+ ;; (apply DELTA START END FUN . ARGS)
+ ;; FIXME
+ ;; All others return same elt
+ (_ elt)))
+
+;; (BEG . END) can adjust to the same positions, commonly when an
+;; insertion was undone and they are out of region, for example:
+;;
+;; buf pos:
+;; 123456789 buffer-undo-list undo-deltas
+;; --------- ---------------- -----------
+;; [...]
+;; abbaa (2 . 4) (2 . -2)
+;; aaa ("bb" . 2) (2 . 2)
+;; [...]
+;;
+;; "bb" insertion (2 . 4) adjusts to (2 . 2) because of the subsequent
+;; undo. Further adjustments to such an element should be the same as
+;; for (TEXT . POSITION) elements. The options are:
+;;
+;; 1: POSITION adjusts using <= (use-< nil), resulting in behavior
+;; analogous to marker insertion-type t.
+;;
+;; 2: POSITION adjusts using <, resulting in behavior analogous to
+;; marker insertion-type nil.
+;;
+;; There was no strong reason to prefer one or the other, except that
+;; the first is more consistent with prior undo in region behavior.
+(defun undo-adjust-beg-end (beg end deltas)
+ "Return cons of adjustments to BEG and END by the undo DELTAS
+list."
+ (let ((adj-beg (undo-adjust-pos beg deltas)))
+ ;; Note: option 2 above would be like (cons (min ...) adj-end)
+ (cons adj-beg
+ (max adj-beg (undo-adjust-pos end deltas t)))))
+
+(defun undo-adjust-pos (pos deltas &optional use-<)
+ "Return adjustment of POS by the undo DELTAS list, comparing
+with < or <= based on USE-<."
+ (dolist (d deltas pos)
+ (when (if use-<
+ (< (car d) pos)
+ (<= (car d) pos))
+ (setq pos
+ ;; Don't allow pos to become less than the undo-delta
+ ;; position. This edge case is described in the overview
+ ;; comments.
+ (max (car d) (- pos (cdr d)))))))
;; Return the first affected buffer position and the delta for an undo element
;; delta is defined as the change in subsequent buffer positions if we *did*
(defvar process-menu-query-only nil)
+(defvar process-menu-mode-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map [?d] 'process-menu-delete-process)
+ map))
+
(define-derived-mode process-menu-mode tabulated-list-mode "Process Menu"
"Major mode for listing the processes called by Emacs."
(setq tabulated-list-format [("Process" 15 t)
(add-hook 'tabulated-list-revert-hook 'list-processes--refresh nil t)
(tabulated-list-init-header))
+(defun process-menu-delete-process ()
+ "Kill process at point in a `list-processes' buffer."
+ (interactive)
+ (delete-process (tabulated-list-get-id))
+ (revert-buffer))
+
(defun list-processes--refresh ()
"Recompute the list of processes for the Process List buffer.
Also, delete any process that is exited or signaled."
(defun insert-buffer (buffer)
"Insert after point the contents of BUFFER.
Puts mark after the inserted text.
-BUFFER may be a buffer or a buffer name.
-
-This function is meant for the user to run interactively.
-Don't call it from programs: use `insert-buffer-substring' instead!"
+BUFFER may be a buffer or a buffer name."
+ (declare (interactive-only insert-buffer-substring))
(interactive
(list
(progn
(insert-buffer-substring (get-buffer buffer))
(point)))
nil)
-(put 'insert-buffer 'interactive-only 'insert-buffer-substring)
(defun append-to-buffer (buffer start end)
"Append to specified buffer the text of the region.
The goal column is stored in the variable `goal-column', which is nil
when there is no goal column. Note that setting `goal-column'
overrides `line-move-visual' and causes this command to move by buffer
-lines rather than by display lines.
-
-If you are thinking of using this in a Lisp program, consider
-using `forward-line' instead. It is usually easier to use
-and more reliable (no dependence on goal column, etc.)."
+lines rather than by display lines."
+ (declare (interactive-only forward-line))
(interactive "^p\np")
(or arg (setq arg 1))
(if (and next-line-add-newlines (= arg 1))
(signal (car err) (cdr err))))
(line-move arg nil nil try-vscroll)))
nil)
-(put 'next-line 'interactive-only 'forward-line)
(defun previous-line (&optional arg try-vscroll)
"Move cursor vertically up ARG lines.
The goal column is stored in the variable `goal-column', which is nil
when there is no goal column. Note that setting `goal-column'
overrides `line-move-visual' and causes this command to move by buffer
-lines rather than by display lines.
-
-If you are thinking of using this in a Lisp program, consider using
-`forward-line' with a negative argument instead. It is usually easier
-to use and more reliable (no dependence on goal column, etc.)."
+lines rather than by display lines."
+ (declare (interactive-only
+ "use `forward-line' with negative argument instead."))
(interactive "^p\np")
(or arg (setq arg 1))
(if (called-interactively-p 'interactive)
(signal (car err) (cdr err))))
(line-move (- arg) nil nil try-vscroll))
nil)
-(put 'previous-line 'interactive-only
- "use `forward-line' with negative argument instead.")
(defcustom track-eol nil
"Non-nil means vertical motion starting at end of line keeps to ends of lines.
`most-positive-fixnum'.")
(defcustom line-move-ignore-invisible t
- "Non-nil means \\[next-line] and \\[previous-line] ignore invisible lines.
+ "Non-nil means commands that move by lines ignore invisible newlines.
+ When this option is non-nil, \\[next-line], \\[previous-line], \\[move-end-of-line], and \\[move-beginning-of-line] behave
+ as if newlines that are invisible didn't exist, and count
+ only visible newlines. Thus, moving across across 2 newlines
+ one of which is invisible will be counted as a one-line move.
+ Also, a non-nil value causes invisible text to be ignored when
+ counting columns for the purposes of keeping point in the same
+ column by \\[next-line] and \\[previous-line].
+
Outline mode sets this."
:type 'boolean
:group 'editing-basics)
(not blink-matching-paren-dont-ignore-comments))))
(condition-case ()
(progn
+ (syntax-propertize (point))
(forward-sexp -1)
;; backward-sexp skips backward over prefix chars,
;; so move back to the matching paren.
(deactivate-mark))
(if (fboundp 'kmacro-keyboard-quit)
(kmacro-keyboard-quit))
+ (when completion-in-region-mode
+ (completion-in-region-mode -1))
(setq defining-kbd-macro nil)
(let ((debug-on-quit nil))
(signal 'quit nil)))
command-name)))))))
\f
-;; This is here because files in obsolete/ are not scanned for autoloads.
-
-(defvar iswitchb-mode nil "\
-Non-nil if Iswitchb mode is enabled.
-See the command `iswitchb-mode' for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `iswitchb-mode'.")
-
-(custom-autoload 'iswitchb-mode "iswitchb" nil)
-
-(autoload 'iswitchb-mode "iswitchb" "\
-Toggle Iswitchb mode.
-With a prefix argument ARG, enable Iswitchb mode if ARG is
-positive, and disable it otherwise. If called from Lisp, enable
-the mode if ARG is omitted or nil.
-
-Iswitchb mode is a global minor mode that enables switching
-between buffers using substrings. See `iswitchb' for details.
-
-\(fn &optional ARG)" t nil)
-
-(make-obsolete 'iswitchb-mode
- "use `icomplete-mode' or `ido-mode' instead." "24.4")
-\f
(provide 'simple)
-2014-05-25 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (move_it_in_display_line_to): Don't record wrap position
+ if we are iterating over an object that generates glyphs for
+ marginal areas. (Bug#17585)
+
-2014-05-24 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xdisp.c (safe__call1, safe__eval): Now static.
+
-2014-05-24 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (safe__call): Accept va_list argument instead of '...'.
+ (safe_call, safe__call1): Construct a va_list argument for safe_call.
+ (safe_call1): Call safe_call instead of safe__call directly.
+
-2014-05-24 Ken Brown <kbrown@cornell.edu>
++2014-05-26 Ken Brown <kbrown@cornell.edu>
+
+ * w32term.c (x_delete_display) [CYGWIN]: Don't free
+ dpyinfo->w32_id_name, to make sure it doesn't get freed more than
+ once. (Bug#17510)
+
-2014-05-24 Stefan Monnier <monnier@iro.umontreal.ca>
++2014-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * xdisp.c: Bind inhibit-quit during pre-redisplay-function.
+ (safe__call, safe__call1, safe__eval): New functions.
+ (safe_call): Use it.
+ (prepare_menu_bars): Use it for pre-redisplay-function (bug#17577).
+ (display_mode_element): Same for `:eval'.
+
-2014-05-22 Paul Eggert <eggert@cs.ucla.edu>
++2014-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix port to 32-bit AIX (Bug#17540).
+ * unexaix.c (copy_text_and_data): Don't add text_scnptr to ptr
+ twice. _text already includes this offset.
+ (unrelocate_symbols): Don't cast 64-bit integer to pointer.
+
-2014-05-21 Eli Zaretskii <eliz@gnu.org>
++2014-05-26 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (move_it_in_display_line_to): Avoid infinite recursion:
+ when closest_pos is identical to to_charpos, don't recurse, since
+ we already tried that, and failed. (Bug#17539)
+
-2014-05-20 Eli Zaretskii <eliz@gnu.org>
-
+ * w32fns.c (unwind_create_frame) [GLYPH_DEBUG]: If we are
+ unwinding when frame's faces were not initialized yet, increment
+ the frame's image-cache reference count before calling
+ x_free_frame_resources. Don't dereference
+ dpyinfo->terminal->image_cache if it is NULL. (Bug#17524)
+
-2014-05-11 Glenn Morris <rgm@gnu.org>
+2014-05-25 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsfont.m (nsfont_draw): Simplify as arguments are adjusted in
+ nsterm.m now.
+
+ * nsterm.m (ns_draw_glyph_string): Move isComposite and end from
+ macfont.m, call draw with adjusted arguments so font drivers
+ don't need to do that.
+
+ * macfont.m (macfont_draw): Merge changes from Macport.
+
+2014-05-24 Eli Zaretskii <eliz@gnu.org>
+
+ * alloc.c (garbage_collect_1): New function, with all of the guts
+ of Fgarbage_collect.
+ (mark_stack): Accept an argument END and don't mark Lisp objects
+ on the stack beyond the address given by END. Calculation of END
+ was moved to Fgarbage_collect.
+ (Fgarbage_collect): Calculate the end address of the stack portion
+ that needs to be examined by mark_stack, and pass that address to
+ garbage_collect_1, which will pass it to mark_stack. See
+ http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html
+ for more details about the underlying problems. In particular,
+ this avoids dumping Emacs with the large hash-table whose value is
+ held in purify-flag for most of the time loadup.el runs.
+
+2014-05-24 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xfns.c (x_window_property_intern): New function (code from
+ x_window_property).
+ (Fx_window_property): Call x_window_property_intern. If property
+ not found and NILP (source) and outer window != inner window,
+ check outer window for property (Bug#17537).
+
+2014-05-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Supply malloc and alloc_size attributes for extern allocators.
+ This documents the C API, and helps GCC generate a bit better code.
+ * conf_post.h (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE)
+ (ATTRIBUTE_MALLOC_SIZE): New macros.
+ * gmalloc.c (malloc, realloc, calloc):
+ * gtkutil.h (malloc_widget_value):
+ * lisp.h (ralloc, r_re_alloc, xmalloc, xzalloc, xrealloc, xnmalloc)
+ (xnrealloc, xstrdup, xlispstrdup, record_xmalloc):
+ Use them.
+
+2014-05-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't assume that ImageMagick uses a 16-bit quantum (Bug#17519).
+ * image.c (imagemagick_load_image): Port to hosts that do not use
+ a 16-bit quantum, i.e., QuantumRange does not equal 65535.
+
+2014-05-21 Leo Liu <sdl.web@gmail.com>
+
+ * fns.c (Fnreverse): Accept strings for SEQ and update doc-string.
+
+2014-05-20 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbusbind.c (xd_signature): Revert last 2 patches.
+
+2014-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Allow any non-nil value to count as true in bool-vector.
+ Likewise for xd_signature in dbusbind.c.
+ This is more consistent with the usual practice in Emacs, which is
+ that any non-nil value counts as true.
+ * alloc.c (Fbool_vector): Don't require args to be t or nil.
+ * dbusbind.c (xd_signature): Likewise, for booleans.
+ * data.c, lisp.h (Qbooleanp):
+ * lisp.h (CHECK_BOOLEAN): Remove. All uses removed.
+
+2014-05-19 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * lisp.h (CHECK_BOOLEAN): New function.
+ * alloc.c (Fbool_vector): New function.
+ (syms_of_alloc): Defsubr it.
+ * data.c (Qbooleanp): New symbol.
+ (syms_of_data): DEFSYM it.
+ * dbusbind.c (xd_signature): Use CHECK_BOOLEAN.
+
+ * font.c (font_matching_entity): Extract font-entity object
+ from the vector of matching entities (Bug#17486).
+
+2014-05-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ Assume C99 or later (Bug#17487).
+ * bytecode.c (B__dummy__): Remove.
+ * conf_post.h (bool_bf) [!NS_IMPL_GNUSTEP]: Use bool.
+ (FLEXIBLE_ARRAY_MEMBER): Now always empty.
+ * dbusbind.c (XD_DEBUG_MESSAGE) [!DBUS_DEBUG]:
+ * regex.c (DEBUG_PRINT): Assume varargs macros.
+ * lisp.h (DEFUN_FUNCTION_INIT): Remove. All uses now assume C99.
+
+2014-05-17 Fabrice Popineau <fabrice.popineau@gmail.com>
+
+ * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Always map new
+ memory for every buffer that was dumped.
+
+2014-05-15 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * fns.c (Freverse): Allow vectors, bool vectors and strings.
+ (Fnreverse): Allow vectors and bool vectors.
+
+2014-05-14 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Minor cleanup for terminal setup.
+ * termhooks.h (create_terminal): Adjust prototype.
+ * terminal.c (create_terminal): Pass output method and RIF as args.
+ (init_initial_terminal):
+ * nsterm.m (ns_create_terminal):
+ * term.c (init_tty):
+ * w32term.c (w32_create_terminal):
+ * xterm.c (x_create_terminal): Adjust users.
+ Avoid redundant NULL initializers and add comments.
+
+2014-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * keyboard.c (Qdeactivate_mark): Now static.
+
+2014-05-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ If available, use Xfixes extension to do pointer blanking.
+ * Makefile.in (XFIXES_CFLAGS, XFIXES_LIBS): New var.
+ * xfns.c (x_set_mouse_color): Do not call make_invisible_cursor here.
+ (make_invisible_cursor): Move to...
+ * xterm.c (make_invisible_cursor): ...here.
+ (x_probe_xfixes_extension, xfixes_toggle_visible_pointer)
+ (x_toggle_visible_pointer, x_setup_pointer_blanking): New functions.
+ (x_term_init): Call to x_setup_pointer_blanking.
+ (XTtoggle_invisible_pointer): Use blanking specific to this display.
+ * xterm.h (struct x_display_info): New member toggle_visible_pointer.
+
+2014-05-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
+
+2014-05-12 Glenn Morris <rgm@gnu.org>
* fileio.c (Ffile_executable_p): Doc tweak.
-2014-05-10 Jan Djärv <jan.h.d@swipnet.se>
+2014-05-12 Jan Djärv <jan.h.d@swipnet.se>
* xsettings.c (init_gsettings): Use g_settings_schema_source_lookup
instead of deprecated g_settings_list_schemas if possible (Bug#17434).
-2014-05-07 Paul Eggert <eggert@cs.ucla.edu>
+2014-05-08 Paul Eggert <eggert@cs.ucla.edu>
* minibuf.c (read_minibuf): Avoid C99ism in previous patch (Bug#17430).
-2014-05-07 Jarek Czekalski <jarekczek@poczta.onet.pl>
+2014-05-08 Jarek Czekalski <jarekczek@poczta.onet.pl>
Fix initialization of minibuffer history variable (Bug#17430).
* minibuf.c (read_minibuf): Initialize histval to Qnil if unbound.
Move the initialization up to prevent any "value void" message.
-2014-05-06 Samuel Bronson <naesten@gmail.com>
+2014-05-08 Samuel Bronson <naesten@gmail.com>
* keyboard.c (Frecursive_edit): Ensure inc&dec of command_loop_level
are matched (bug#17413).
-2014-05-06 Jarek Czekalski <jarekczek@poczta.onet.pl>
+2014-05-08 Jarek Czekalski <jarekczek@poczta.onet.pl>
Stop tooltips pulling Emacs window to front (Bug#17408).
* w32fns.c (Fx_show_tip): Add SWP_NOOWNERZORDER flag to
SetWindowPos invocations.
-2014-05-05 Jan Djärv <jan.h.d@swipnet.se>
+2014-05-08 Jan Djärv <jan.h.d@swipnet.se>
* nsselect.m (Fx_selection_exists_p): Just return Qnil if window system
not initialized (Bug#17398).
+2014-05-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * image.c: Include <png.h> before <setjmp.h> (Bug#17429).
+
+2014-05-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * image.c: Do not use libpng if HAVE_NS, as NS does its own thing.
+ [HAVE_NS]: Do not include png.h.
+ (x_query_frame_background_color): New function.
+ (png_load_body, imagemagick_load_image, svg_load_image): Use it.
+ (png_load_body): Coalesce duplicate code.
+
2014-05-04 Paul Eggert <eggert@cs.ucla.edu>
- Revert recent libpng changes (Bug#17339).
- * Makefile.in (PNG_CFLAGS): Remove; all uses removed.
- * image.c [HAVE_LIBPNG_PNG_H]: Include <libpng/png.h>, not <png.h>.
+ Consult libpng-config more consistently (Bug#17339).
+ * Makefile.in (PNG_CFLAGS): New var.
+ (ALL_CFLAGS): Use it.
+ * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
+ CFLAGS now handles this.
2014-05-03 Paul Eggert <eggert@cs.ucla.edu>
* buffer.c (overlay_strings): Fix the wording of the commentary.
-2014-05-02 Paul Eggert <eggert@cs.ucla.edu>
-
- Consult libpng-config more consistently (Bug#17339).
- * Makefile.in (PNG_CFLAGS): New var.
- (ALL_CFLAGS): Use it.
- * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
- CFLAGS now handles this.
-
2014-05-01 Glenn Morris <rgm@gnu.org>
* floatfns.c (Fisnan):
GCC 4.9.0 warned about this, and I couldn't easily prove to my own
satisfaction that they would always be initialized.
-2014-04-29 Eli Zaretskii <eliz@gnu.org>
+2014-04-30 Eli Zaretskii <eliz@gnu.org>
- * term.c (tty_menu_display): Move the cursor to the active menu
- item.
+ * term.c (tty_menu_display): Move the cursor to the active menu item.
(tty_menu_activate): Return the cursor to the active menu item
after displaying the menu and after displaying help-echo. See
http://lists.gnu.org/archive/html/emacs-devel/2014-04/msg00402.html
for the details of why this is needed by screen readers and
Braille displays.
-2014-04-29 Glenn Morris <rgm@gnu.org>
+2014-04-30 Glenn Morris <rgm@gnu.org>
* process.c (handle_child_signal):
Handle systems without WCONTINUED. (Bug#15110, 17339)
-2014-04-23 Eli Zaretskii <eliz@gnu.org>
+2014-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * window.c (struct saved_window): Remove mark.
+ (Fset_window_configuration, save_window_save)
+ (compare_window_configurations): Don't touch marks any more.
+
+2014-04-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use bits_word for gcmarkbits.
+ * alloc.c (struct cons_block, struct float_block): On 64-bit hosts,
+ bits_word is typically a tad more efficient for mark bits than
+ unsigned is, so use bits_word. All uses changed.
+ * lisp.h (BITS_PER_INT): Remove; no longer used.
+
+ Avoid undefined behavior in signed left shift.
+ This ports to GCC 4.9.0 with -fsanitize=undefined.
+ * alloc.c (bool_vector_fill, SETMARKBIT, UNSETMARKBIT):
+ * data.c (Fash):
+ * regex.c (extract_number):
+ * lisp.h (make_number, XINT):
+ Do not shift a 1 bit left into a sign bit.
+ * alloc.c (struct cons_block, struct float_block): Use unsigned,
+ not int, for gcmarkbits. All uses changed.
+
+2014-04-25 Eli Zaretskii <eliz@gnu.org>
* search.c (Fnewline_cache_check): Don't try to count newlines
outside the buffer's restriction, as find_newline doesn't support that.
+2014-04-24 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * window.c (Fset_window_configuration): Deactivate the mark before
+ unsetting the mark.
+ (set_window_buffer): Ignore window_initialized.
+ (window_initialized): Remove.
+ * keyboard.c (Qdeactivate_mark): Not static any more.
+ * buffer.c (buffer_local_value): Rename from buffer_local_value_1.
+ Update all callers.
+
+2014-04-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * conf_post.h (ADDRESS_SANITIZER_WORKAROUND): Port to GCC 4.9.0
+ and to clang 3.4, which have fixed the bug. This should let us
+ run a bit faster on these platforms when address sanitization is
+ in effect.
+
2014-04-22 Paul Eggert <eggert@cs.ucla.edu>
Port to GCC 4.9.0 with --enable-gcc-warnings.
(Fnewline_cache_check): New function.
(syms_of_search): Defsubr it.
-2014-04-21 Jarek Czekalski <jarekczek@poczta.onet.pl>
+2014-04-22 Jarek Czekalski <jarekczek@poczta.onet.pl>
Fix freezing with scroll bars of GTK3 Toolkit (bug#15801).
* keyboard.c (unblock_input): Add comment.
* xgselect.c (xg_select): Prevent Glib main loop recursion.
+2014-04-22 Daniel Colascione <dancol@dancol.org>
+
+ * lread.c (readevalloop_eager_expand_eval): New function
+ that can recurse into toplevel forms.
+ (readevalloop): Call it.
+ * lisp.h: Declare Qprogn.
+ * callint.c (Qprogn): No longer static.
+
2014-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
* intervals.c (rotate_right, rotate_left): Fix up length computation.
Also change identifiers to match the comments, and add more assertions
(bug#16234).
-2014-04-18 Eli Zaretskii <eliz@gnu.org>
-
- * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
- glyph is written to TEXT_AREA of the temporary glyph_row.
- (Bug#17288)
-
2014-04-18 Paul Eggert <eggert@cs.ucla.edu>
* emacs.c (close_output_streams): Don't clear and restore errno.
-2014-04-17 Jan Djärv <jan.h.d@swipnet.se>
+2014-04-18 Jan Djärv <jan.h.d@swipnet.se>
* xterm.c (x_make_frame_visible): Prevent endless loop when frame
never becomes visible, i.e. using XMonad (Bug#17237).
-2014-04-17 Eli Zaretskii <eliz@gnu.org>
+2014-04-18 Eli Zaretskii <eliz@gnu.org>
- * xdisp.c (Fline_pixel_height): Don't assume that the current
- buffer and the selected window's buffer are one and the same.
- (Bug#17281)
+ * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
+ glyph is written to TEXT_AREA of the temporary glyph_row. (Bug#17288)
+ (Fline_pixel_height): Don't assume that the current buffer and the
+ selected window's buffer are one and the same. (Bug#17281)
* insdel.c (invalidate_buffer_caches): Invalidate the bidi
paragraph-start cache before the newline cache. (Bug#17269)
+2014-04-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * term.c (tty_send_additional_strings): No need to fflush here,
+ as callers fflush.
+ (tty_set_terminal_modes): fflush after sending additional strings,
+ not before.
+
+2014-04-17 Daniel Colascione <dancol@dancol.org>
+
+ * term.c (Qtty_mode_set_strings, Qtty_mode_reset_strings): New
+ symbols.
+ (tty_send_additional_strings): New function.
+ (tty_set_terminal_modes, tty_reset_terminal_modes): Use it.
+ (syms_of_term): Intern tty-mode-set-strings and
+ tty-mode-reset-strings.
+
2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* window.c (save_window_save): Lookup window_point_insertion_type in
Move vfork-related portions under #ifndef MSDOS.
(syms_of_callproc): Unify templates of MSDOS and WINDOWSNT.
-2014-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* buffer.c (Foverlays_at): Add argument `sorted'.
-2014-04-14 Eli Zaretskii <eliz@gnu.org>
+2014-04-16 Eli Zaretskii <eliz@gnu.org>
* insdel.c (invalidate_buffer_caches): When deleting or replacing
text, invalidate the bidi_paragraph_cache upto and including the
preceding newline.
-2014-04-13 Paul Eggert <eggert@cs.ucla.edu>
+2014-04-16 Paul Eggert <eggert@cs.ucla.edu>
Port to IRIX 6.5 (Bug#9684).
- * alloc.c (TAGGABLE_NULL): New constant,
- for porting to hosts with nontrivial DATA_SEG_BITS settings.
- (next_vector, set_next_vector): Use it.
* conf_post.h (INET6) [IRIX6_5]: Define.
(HAVE_GETADDRINFO) [IRIX6_5]: Undef.
* data.c (BITS_PER_ULL): Don't assume ULLONG_MAX is defined.
- * lisp.h (lisp_h_XPNTR): Don't OR in bits that aren't masked out,
- for consistency with how TAGGABLE_NULL is computed.
-2014-04-13 Eli Zaretskii <eliz@gnu.org>
+2014-04-16 Eli Zaretskii <eliz@gnu.org>
* keyboard.c (Fopen_dribble_file): Encode the dribble file-name
before passing it to system APIs.
- * puresize.h (BASE_PURESIZE): Bump by 1K. (Bug#17255)
-
-2014-04-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-04-16 Stefan Monnier <monnier@iro.umontreal.ca>
* bytecode.c (exec_byte_code): Rework the volatiles. Most importantly,
make sure stack.byte_string_start is not de-adjusted by pushhandler.
-2014-04-12 Paul Eggert <eggert@cs.ucla.edu>
+2014-04-16 Paul Eggert <eggert@cs.ucla.edu>
* keyboard.c (Fopen_dribble_file): Avoid some races. (Bug#17187)
+2014-04-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove DATA_SEG_BITS.
+ The DATA_SEG_BITS hack was needed for older 32 bit platforms.
+ As a result of this change, Emacs won't work on IRIX 6.5 with IRIX
+ cc, but that platform is so old that SGI itself stopped supporting
+ it in December 2013. If you still need Emacs on IRIX, please
+ either compile with GCC and port the undumping code, or run
+ './configure --with-wide-int'.
+ * alloc.c (gdb_make_enums_visible): Update to match lisp.h.
+ * lisp.h (GCTYPEBITS): Move definition up, and switch to the
+ DEFINE_GDB_SYMBOL_START way to define it.
+ (NONPOINTER_BITS): New macro.
+ (EMACS_INT): Use it.
+ [!USE_LSB_TAG && !WIDE_EMACS_INT]: Fail, and suggest reporting
+ the problem and/or configuring --with-wide-int.
+ (USE_LSB_TAG): Simplify, based on above changes.
+ (gdb_DATA_SEG_BITS): Remove. All uses removed.
+ * vm-limit.c (exceeds_lisp_ptr): Remove. All uses removed.
+
2014-04-12 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (move_it_by_lines): If a large portion of buffer text is
* indent.c (Fvertical_motion): Handle correctly the case when the
display string is preceded by an empty line.
-2014-04-11 Eli Zaretskii <eliz@gnu.org>
-
* w32.c (sys_umask) <WRITE_USER>: Remove redundant constant, and
use S_IWRITE instead.
* keyboard.c (Fopen_dribble_file): Make file private. (Bug#17187)
-2014-04-09 Ken Brown <kbrown@cornell.edu>
+2014-04-11 Ken Brown <kbrown@cornell.edu>
* Makefile.in (EMACS_MANIFEST): Revert last change.
+2014-04-10 Daniel Colascione <dancol@dancol.org>
+
+ * puresize.h (BASE_PURESIZE): Increase.
+
+2014-04-09 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * keyboard.c (syms_of_keyboard): Make deactivate-mark buffer-local.
+
+ * insdel.c (prepare_to_modify_buffer_1): Cancel lock-file checks and
+ region handling (and don't call signal_before_change) if
+ inhibit_modification_hooks is set.
+ (signal_before_change): Don't check inhibit_modification_hooks any more.
+
+2014-04-08 Daniel Colascione <dancol@dancol.org>
+
+ * alloc.c (sweep_symbols, mark_object): Assert that symbol
+ function cells contain valid lisp objects. (Modified version of
+ patch from Dmitry).
+
+ * alloc.c (detect_suspicious_free): Split actual stack capturing
+ out into new function for easier breakpoint setting.
+ (note_suspicious_free): New function.
+
2014-04-07 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp.h (struct Lisp_Symbol): New bitfield `pinned'.
(Fgarbage_collect): Use it.
(gc_sweep): Remove hack made unnecessary.
-2014-04-05 Glenn Morris <rgm@gnu.org>
+2014-04-07 Glenn Morris <rgm@gnu.org>
* keyboard.c (Fopen_dribble_file): Doc tweak.
-2014-04-04 Jan Djärv <jan.h.d@swipnet.se>
-
- Backport from trunk.
- * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
- bar is zero height, just return (Bug#16976).
- (initFrameFromEmacs:): Initialize wait_for_tool_bar.
- * nsterm.h (EmacsView): Add wait_for_tool_bar.
- * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
- is nil. If waiting for toolbar to complete, force a redraw.
- (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976).
-
-2014-04-03 Ken Brown <kbrown@cornell.edu>
+2014-04-07 Ken Brown <kbrown@cornell.edu>
* Makefile.in (EMACS_MANIFEST): Update comment. (Bug#17176)
+2014-04-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * alloc.c: Simplify by removing use of HAVE_EXECINFO_H.
+ We have a substitute execinfo.h on hosts that lack it.
+ (suspicious_free_history): Make it EXTERNALLY_VISIBLE so it
+ isn't optimized away.
+
+2014-04-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'.
+ * alloc.c (memory_full):
+ * charset.c (syms_of_charset):
+ * doc.c (Fsnarf_documentation):
+ * emacs.c (main):
+ * font.c (BUILD_STYLE_TABLE):
+ * keyboard.c (make_lispy_event):
+ * profiler.c (setup_cpu_timer):
+ * xgselect.c (xg_select):
+ * xterm.c (record_event, STORE_KEYSYM_FOR_DEBUG):
+ Use ARRAYELTS.
+ * font.c (FONT_PROPERTY_TABLE_SIZE): Remove.
+ Replace the only use with ARRAYELTS (font_property_table).
+ * xfaces.c (DIM): Remove. All uses replaced by ARRAYELTS.
+
+2014-04-03 Daniel Colascione <dancol@dancol.org>
+
+ * xterm.c (x_term_init):
+ * xfns.c (best_xim_style):
+ * xfaces.c (Fdump_colors):
+ * w32fns.c (w32_default_color_map):
+ * w32.c (init_environment, N_ENV_VARS):
+ * unexcw.c (read_exe_header):
+ * term.c (term_get_fkeys_1):
+ * sysdep.c (init_baud_rate):
+ * nsterm.m (ns_convert_key):
+ * nsfns.m (get_geometry_from_preferences):
+ * msdos.c (dos_set_window_size, init_environment):
+ * macfont.m (mac_font_get_glyph_for_cid)
+ (macfont_store_descriptor_attributes)
+ (macfont_create_attributes_with_spec, mac_ctfont_get_glyph_for_cid):
+ * keyboard.c (command_loop_1, read_menu_command, make_lispy_event)
+ (NUM_MOD_NAMES, read_key_sequence_vs, Fcurrent_input_mode)
+ (syms_of_keyboard):
+ * image.c (xpm_str_to_color_key):
+ * fringe.c (MAX_STANDARD_FRINGE_BITMAPS):
+ * frame.c (x_set_frame_parameters):
+ * fileio.c (Ffile_selinux_context):
+ * emacs.c (sort_args):
+ * dosfns.c (msdos_stdcolor_name):
+ * dired.c (file_attributes):
+ * chartab.c (uniprop_decoder_count, uniprop_encode_count):
+ Change expressions of the form sizeof(arr) / sizeof(arr[0])
+ to ARRAYELTS (arr).
+
+2014-04-02 Daniel Colascione <dancol@dancol.org>
+
+ * data.c (Ffset): Abort if we're trying to set a function call to
+ a dead lisp object.
+
+ * lisp.h (ARRAYELTS): New macro.
+
+ * alloc.c: Include execinfo.h if available.
+ (SUSPICIOUS_OBJECT_CHECKING): New macro; define unconditionally.
+ (suspicious_free_record): New structure.
+ (suspicious_objects, suspicious_object_index)
+ (suspicious_free_history, suspicious_free_history_index):
+ New variables.
+ (find_suspicious_object_in_range, detect_suspicious_free)
+ (Fsuspicious_object): New functions.
+ (cleanup_vector): Call find_suspicious_object_in_range.
+
2014-04-02 Martin Rudalics <rudalics@gmx.at>
* xterm.c (x_new_font): Don't calculate non-toolkit scrollbar
width from font width (Bug#17163).
-2014-03-30 Martin Rudalics <rudalics@gmx.at>
-
* frame.c (x_set_frame_parameters): Calculate default values of
new frame sizes only after all other frame parameters have been
processed (Bug#17142).
-2014-03-28 Ken Brown <kbrown@cornell.edu>
+2014-04-02 Ken Brown <kbrown@cornell.edu>
* conf_post.h (SYSTEM_PURESIZE_EXTRA) [CYGWIN]: Set to 10000.
(Bug#17112)
-2014-03-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2014-04-02 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* xterm.c (x_draw_image_glyph_string): Adjust image background
width accordingly when its x position is adjusted. (Bug#17115)
+2014-04-02 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * font.c (font_list_entities): Do not add empty vector to font cache.
+ (font_matching_entity): Likewise. If matching entity is found, insert
+ 1-item vector with this entity instead of entity itself (Bug#17125).
+
+ * xterm.c (x_term_init) [USE_LUCID]: Fix minor memory leak.
+
+2014-04-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fns.c (validate_subarray): Rename from validate_substring,
+ since it works for vectors too. New arg ARRAY. Optimize for the
+ non-nil case. Instead of returning bool, throw an error if out of
+ range, so that the caller needn't do that. All uses changed.
+ Report original values if out of range.
+ (Fsubstring, Fsubstring_no_properties, secure_hash):
+ Also optimize the case where FROM is 0 or TO is the size.
+
+2014-03-31 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * search.c (Freplace_match): Use make_specified_string.
+ * xterm.c, w32term.c (x_set_glyph_string_gc): Use emacs_abort
+ to catch bogus override face of glyph strings.
+ * fns.c (Fsubstring, Fsubstring_no_properties, secure_hash):
+ Move common substring range checking code to...
+ (validate_substring): ...this function.
+
+2014-03-31 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsmenu.m (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976)
+
+2014-03-30 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
+ bar is zero height, just return (Bug#16976).
+ (initFrameFromEmacs:): Initialize wait_for_tool_bar.
+
+ * nsterm.h (EmacsView): Add wait_for_tool_bar.
+
+ * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
+ is nil. If waiting for toolbar to complete, force a redraw.
+
+2014-03-28 Glenn Morris <rgm@gnu.org>
+
+ * emacs.c (emacs_version): Use PACKAGE_VERSION rather than VERSION.
+ (emacs_bugreport): New variable.
+ (usage_message): Use PACKAGE_BUGREPORT.
+ (syms_of_emacs) <report-emacs-bug-address>: New variable.
+
+ * emacs.c (syms_of_emacs) <system-configuration-features>: New var.
+
+2014-03-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port recent signal-related changes to FreeBSD.
+ Problem reported by Herbert J. Skuhra.
+ * lisp.h (block_tty_out_signal, unblock_tty_out_signal):
+ Move decls from here ...
+ * syssignal.h: ... to here, so that lisp.h doesn't depend on signal.h.
+
2014-03-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* w32term.c (x_draw_image_glyph_string): Fix computation of height
and width of image background when it is displayed with a 'box'
face. (Bug#17115)
-2014-03-26 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2014-03-27 Paul Eggert <eggert@penguin.cs.ucla.edu>
More backward-compatible fix to char-equal core dump (Bug#17011).
* editfns.c (Fchar_equal): In unibyte buffers, assume values in
range 128-255 are raw bytes. Suggested by Eli Zaretskii.
+2014-03-27 Juanma Barranquero <lekktu@gmail.com>
+
+ * image.c (init_svg_functions): When loading SVG-related libraries,
+ free already loaded libraries if the initialization fails.
+ (rsvg_handle_set_size_callback): Remove declaration, unused.
+
+2014-03-26 Paul Eggert <eggert@cs.ucla.edu>
+
Fix core dump in char-equal (Bug#17011).
* editfns.c (Fchar_equal): Do not use MAKE_CHAR_MULTIBYTE in
unibyte buffers, as we can't tell whether the characters are
* insdel.c (adjust_markers_for_delete): Remove unused local.
-2014-03-24 Barry O'Reilly <gundaetiapo@gmail.com>
+2014-03-26 Barry O'Reilly <gundaetiapo@gmail.com>
Have (MARKER . ADJUSTMENT) undo records always be immediately
after their corresponding (TEXT . POS) record in undo list.
(record_point): at_boundary calculation no longer needs to account
for marker adjustments.
-2014-03-24 Martin Rudalics <rudalics@gmx.at>
+2014-03-26 Martin Rudalics <rudalics@gmx.at>
* w32term.c (x_set_window_size): Refine fix from 2014-03-14
(Bug#17077).
-2014-03-23 Glenn Morris <rgm@gnu.org>
+2014-03-26 Glenn Morris <rgm@gnu.org>
* fileio.c (Ffile_symlink_p): Doc fix. (Bug#17073)
-2014-03-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2014-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
* buffer.c (struct sortvec): Add field `spriority'.
(compare_overlays): Use it.
(sort_overlays): Set it.
-2014-03-23 Eli Zaretskii <eliz@gnu.org>
+2014-03-26 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (redisplay_window): If all previous attempts to find the
cursor row failed, try a few alternatives before falling back to
the top-most row of the window. Use row_containing_pos. (Bug#17047)
-2014-03-22 Daniel Colascione <dancol@dancol.org>
+2014-03-26 Juanma Barranquero <lekktu@gmail.com>
- * process.c (conv_sockaddr_to_lisp): When extracting the string
- names of AF_LOCAL sockets, stop before reading uninitialized
- memory.
+ * image.c (x_bitmap_height, x_bitmap_width) [HAVE_X_WINDOWS]:
+ * sysdep.c (reset_sigio) [!DOS_NT]: Declare conditionally.
+
+ * keyboard.c (read_decoded_event_from_main_queue): #ifdef out
+ variables on Windows.
+
+ * w32fns.c (Ffile_system_info): Use parenthesis in and/or expression.
+
+ * w32.c (unsetenv): Remove unused var `retval'.
+ (emacs_gnutls_pull): Remove unused vars `fdset' and `timeout'.
+
+ * w32notify.c (watch_worker): Remove unnecesary var sleep_result.
+ (start_watching): Remove unused var `thr'.
+
+ * w32proc.c (sys_spawnve): Comment out unused vars `first', `last'.
+ (find_child_console): Remove unnecesary var `thread_id'.
+
+ * w32term.c (w32_read_socket): Comment out unused vars `row', `columns'.
+ (x_focus_frame): #ifdef 0 unused variable `dpyinfo'.
+
+2014-03-26 Glenn Morris <rgm@gnu.org>
+
+ * filelock.c (Flock_buffer): Doc tweak.
+
+ * buffer.c (Frestore_buffer_modified_p, Fkill_buffer):
+ * emacs.c (shut_down_emacs):
+ * fileio.c (Finsert_file_contents, write_region):
+ * filelock.c (top-level, syms_of_filelock):
+ * insdel.c (prepare_to_modify_buffer_1):
+ CLASH_DETECTION is always defined now.
+
+2014-03-25 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the
+ DLL handle, to speed up thread startup.
+
+2014-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Handle sigmask better with nested signal handlers (Bug#15561).
+ * atimer.c (sigmask_atimers): Remove.
+ Remaining use rewritten to use body of this function.
+ * atimer.c (block_atimers, unblock_atimers):
+ * callproc.c (block_child_signal, unblock_child_signal):
+ * sysdep.c (block_tty_out_signal, unblock_tty_out_signal):
+ New arg OLDSET. All callers changed.
+ * atimer.c (block_atimers, unblock_atimers):
+ * callproc.c (block_child_signal, unblock_child_signal):
+ * keyboard.c (handle_interrupt):
+ * sound.c (vox_configure, vox_close):
+ Restore the old signal mask rather than unilaterally clearing bits
+ from the mask, in case a handler is running within another
+ handler. All callers changed.
+ * lisp.h, process.c, process.h, term.c:
+ Adjust decls and callers to match new API.
+ * sysdep.c (emacs_sigaction_init): Don't worry about masking SIGFPE;
+ signal handlers aren't supposed to use floating point anyway.
+ (handle_arith_signal): Unblock just SIGFPE rather than clearing mask.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
+ Split gc_sweep into discrete functions for legibility and better
+ stack traces.
+
+ * alloc.c (sweep_strings, sweep_vectors): Add NO_INLINE
+ (sweep_vectors): Fix typo in comment.
+ (sweep_conses, sweep_floats, sweep_intervals)
+ (sweep_symbols, sweep_misc, sweep_buffers): New functions.
+ (gc_sweep): Call new functions, to which existing functionality is
+ moved.
+ * fns.c (sweep_weak_hash_tables): Add NO_INLINE.
+
+2014-03-23 Juanma Barranquero <lekktu@gmail.com>
+
+ * w32fns.c (Fw32_shell_execute): Declare `result' only on Cygwin.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
+ * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
+ only if xic_style calls for it. This change allows Emacs to work
+ with ibus. Also, don't leak resources if create_frame_xic fails,
+ and stop caching xic_style across different displays.
+ (supported_xim_styles): Make const.
+ (best_xim_style): Remove first parameter: it's always just
+ supported_xim_styles. Change to look at supported_xim_styles
+ directly.
+
+2014-03-23 Daniel Colascione <dancol@dancol.org>
+
+ * term.c (init_tty): Rearrange condition for clarity; print
+ appropriate diagnostic.
2014-03-23 Daniel Colascione <dancol@dancol.org>
* process.c (DATAGRAM_CONN_P): Don't underflow datagram_address
array. (ASAN caught.)
+2014-03-22 Glenn Morris <rgm@gnu.org>
+
+ * callproc.c (init_callproc): In etc, look for NEWS rather than GNU.
+
+2014-03-22 Daniel Colascione <dancol@dancol.org>
+
+ * process.c (conv_sockaddr_to_lisp): When extracting the string
+ names of AF_LOCAL sockets, stop before reading uninitialized memory.
+
2014-03-21 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fix regression introduced by patch for Bug#10500.
constrain frame size in SW_SHOWMAXIMIZED case so we can truly
maximize a frame for odd default fonts.
+2014-03-21 Glenn Morris <rgm@gnu.org>
+
+ * minibuf.c (history-length): Increase default from 30 to 100.
+
+2014-03-21 Daniel Colascione <dancol@dancol.org>
+
+ * xterm.c (x_bitmap_icon): Stop reading the icon bitmap from disk
+ every time we switch to minibuffer.
+
+ * alloc.c (lisp_align_malloc, allocate_string_data)
+ (allocate_vectorlike): Allow mmap allocation of lisp objects.
+ (pointers_fit_in_lispobj_p, mmap_lisp_allowed_p): New functions.
+
+2014-03-21 Eli Zaretskii <eliz@gnu.org>
+
+ * w32fns.c (Fw32_shell_execute) [!CYGWIN]: Use ShellExecuteEx, to
+ support more "verbs".
+
+2014-03-21 Daniel Colascione <dancol@dancol.org>
+
+ Always prohibit dumping a dumped Emacs.
+
+ * emacs.c (might_dump): New variable.
+ (Fdump_emacs): Always prohibit dumping of dumped Emacs.
+ * lisp.h (might_dump): Declare.
+ * unexcw.c (unexec): Remove now-redundant multiple-dump detection code.
+
2014-03-20 Paul Eggert <eggert@cs.ucla.edu>
* doc.c (store_function_docstring): Fix pointer signedness mismatch.
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
+/* Number of elements in an array. */
+#define ARRAYELTS(arr) (sizeof (arr) / sizeof (arr)[0])
+
+/* Number of bits in a Lisp_Object tag. */
+DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)
+#define GCTYPEBITS 3
+DEFINE_GDB_SYMBOL_END (GCTYPEBITS)
+
+/* The number of bits needed in an EMACS_INT over and above the number
+ of bits in a pointer. This is 0 on systems where:
+ 1. We can specify multiple-of-8 alignment on static variables.
+ 2. We know malloc returns a multiple of 8. */
+#if (defined alignas \
+ && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
+ || defined DARWIN_OS || defined __sun))
+# define NONPOINTER_BITS 0
+#else
+# define NONPOINTER_BITS GCTYPEBITS
+#endif
+
/* EMACS_INT - signed integer wide enough to hold an Emacs value
EMACS_INT_MAX - maximum value of EMACS_INT; can be used in #if
pI - printf length modifier for EMACS_INT
#ifndef EMACS_INT_MAX
# if INTPTR_MAX <= 0
# error "INTPTR_MAX misconfigured"
-# elif INTPTR_MAX <= INT_MAX && !defined WIDE_EMACS_INT
+# elif INTPTR_MAX <= INT_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
typedef int EMACS_INT;
typedef unsigned int EMACS_UINT;
# define EMACS_INT_MAX INT_MAX
# define pI ""
-# elif INTPTR_MAX <= LONG_MAX && !defined WIDE_EMACS_INT
+# elif INTPTR_MAX <= LONG_MAX >> NONPOINTER_BITS && !defined WIDE_EMACS_INT
typedef long int EMACS_INT;
typedef unsigned long EMACS_UINT;
# define EMACS_INT_MAX LONG_MAX
# define pI "l"
+/* Check versus LLONG_MAX, not LLONG_MAX >> NONPOINTER_BITS.
+ In theory this is not safe, but in practice it seems to be OK. */
# elif INTPTR_MAX <= LLONG_MAX
typedef long long int EMACS_INT;
typedef unsigned long long int EMACS_UINT;
};
/* An unsigned integer type representing a fixed-length bit sequence,
- suitable for words in a Lisp bool vector. Normally it is size_t
+ suitable for bool vector words, GC mark bits, etc. Normally it is size_t
for speed, but it is unsigned char on weird platforms. */
#if BOOL_VECTOR_BITS_PER_CHAR == CHAR_BIT
typedef size_t bits_word;
{
BITS_PER_CHAR = CHAR_BIT,
BITS_PER_SHORT = CHAR_BIT * sizeof (short),
- BITS_PER_INT = CHAR_BIT * sizeof (int),
BITS_PER_LONG = CHAR_BIT * sizeof (long int),
BITS_PER_EMACS_INT = CHAR_BIT * sizeof (EMACS_INT)
};
enum Lisp_Bits
{
- /* Number of bits in a Lisp_Object tag. This can be used in #if,
- and for GDB's sake also as a regular symbol. */
- GCTYPEBITS =
-#define GCTYPEBITS 3
- GCTYPEBITS,
-
/* 2**GCTYPEBITS. This must be a macro that expands to a literal
integer constant, for MSVC. */
#define GCALIGNMENT 8
This can be used in #if, e.g., '#if VAL_MAX < UINTPTR_MAX' below. */
#define VAL_MAX (EMACS_INT_MAX >> (GCTYPEBITS - 1))
-/* Unless otherwise specified, use USE_LSB_TAG on systems where: */
-#ifndef USE_LSB_TAG
-/* 1. We know malloc returns a multiple of 8. */
-# if (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
- || defined DARWIN_OS || defined __sun)
-/* 2. We can specify multiple-of-8 alignment on static variables. */
-# ifdef alignas
-/* 3. Pointers-as-ints exceed VAL_MAX.
+/* Whether the least-significant bits of an EMACS_INT contain the tag.
On hosts where pointers-as-ints do not exceed VAL_MAX, USE_LSB_TAG is:
a. unnecessary, because the top bits of an EMACS_INT are unused, and
b. slower, because it typically requires extra masking.
- So, default USE_LSB_TAG to true only on hosts where it might be useful. */
-# if VAL_MAX < UINTPTR_MAX
-# define USE_LSB_TAG true
-# endif
-# endif
-# endif
-#endif
-#ifdef USE_LSB_TAG
-# undef USE_LSB_TAG
-enum enum_USE_LSB_TAG { USE_LSB_TAG = true };
-# define USE_LSB_TAG true
-#else
-enum enum_USE_LSB_TAG { USE_LSB_TAG = false };
-# define USE_LSB_TAG false
+ So, USE_LSB_TAG is true only on hosts where it might be useful. */
+DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)
+#define USE_LSB_TAG (EMACS_INT_MAX >> GCTYPEBITS < INTPTR_MAX)
+DEFINE_GDB_SYMBOL_END (USE_LSB_TAG)
+
+#if !USE_LSB_TAG && !defined WIDE_EMACS_INT
+# error "USE_LSB_TAG not supported on this platform; please report this." \
+ "Try 'configure --with-wide-int' to work around the problem."
+error !;
#endif
#ifndef alignas
#define lisp_h_XCONS(a) \
(eassert (CONSP (a)), (struct Lisp_Cons *) XUNTAG (a, Lisp_Cons))
#define lisp_h_XHASH(a) XUINT (a)
-#define lisp_h_XPNTR(a) \
- ((void *) (intptr_t) ((XLI (a) & VALMASK) | (DATA_SEG_BITS & ~VALMASK)))
+#define lisp_h_XPNTR(a) ((void *) (intptr_t) (XLI (a) & VALMASK))
#define lisp_h_XSYMBOL(a) \
(eassert (SYMBOLP (a)), (struct Lisp_Symbol *) XUNTAG (a, Lisp_Symbol))
#ifndef GC_CHECK_CONS_LIST
# define lisp_h_check_cons_list() ((void) 0)
#endif
#if USE_LSB_TAG
-# define lisp_h_make_number(n) XIL ((EMACS_INT) (n) << INTTYPEBITS)
+# define lisp_h_make_number(n) \
+ XIL ((EMACS_INT) ((EMACS_UINT) (n) << INTTYPEBITS))
# define lisp_h_XFASTINT(a) XINT (a)
# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)
# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a) & ~VALMASK))
PVEC_FONT /* Should be last because it's used for range checking. */
};
-/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
- which were stored in a Lisp_Object. */
-#ifndef DATA_SEG_BITS
-# define DATA_SEG_BITS 0
-#endif
-enum { gdb_DATA_SEG_BITS = DATA_SEG_BITS };
-#undef DATA_SEG_BITS
-
enum More_Lisp_Bits
{
- DATA_SEG_BITS = gdb_DATA_SEG_BITS,
-
/* For convenience, we also store the number of elements in these bits.
Note that this size is not necessarily the memory-footprint size, but
only the number of Lisp_Object fields (that need to be traced by GC).
INLINE Lisp_Object
make_number (EMACS_INT n)
{
- return XIL (USE_LSB_TAG ? n << INTTYPEBITS : n & INTMASK);
+ if (USE_LSB_TAG)
+ {
+ EMACS_UINT u = n;
+ n = u << INTTYPEBITS;
+ }
+ else
+ n &= INTMASK;
+ return XIL (n);
}
/* Extract A's value as a signed integer. */
XINT (Lisp_Object a)
{
EMACS_INT i = XLI (a);
- return (USE_LSB_TAG ? i : i << INTTYPEBITS) >> INTTYPEBITS;
+ if (! USE_LSB_TAG)
+ {
+ EMACS_UINT u = i;
+ i = u << INTTYPEBITS;
+ }
+ return i >> INTTYPEBITS;
}
/* Like XINT (A), but may be faster. A must be nonnegative.
/* Defined in emacs.c. */
extern bool initialized;
+extern bool might_dump;
/* Defined in eval.c. */
extern Lisp_Object Qautoload;
ratio, a float. */
Lisp_Object rehash_threshold;
- /* Vector of hash codes.. If hash[I] is nil, this means that that
- entry I is unused. */
+ /* Vector of hash codes. If hash[I] is nil, this means that the
+ I-th entry is unused. */
Lisp_Object hash;
/* Vector used to chain entries. If entry I is free, next[I] is the
minargs, maxargs, lname, intspec, 0}; \
Lisp_Object fnname
#else /* not _MSC_VER */
-# if __STDC_VERSION__ < 199901
-# define DEFUN_FUNCTION_INIT(fnname, maxargs) (Lisp_Object (*) (void)) fnname
-# else
-# define DEFUN_FUNCTION_INIT(fnname, maxargs) .a ## maxargs = fnname
-# endif
#define DEFUN(lname, fnname, sname, minargs, maxargs, intspec, doc) \
Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
static struct Lisp_Subr alignas (GCALIGNMENT) sname = \
{ { PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, \
- { DEFUN_FUNCTION_INIT (fnname, maxargs) }, \
+ { .a ## maxargs = fnname }, \
minargs, maxargs, lname, intspec, 0}; \
Lisp_Object fnname
#endif
#ifdef REL_ALLOC
/* Defined in ralloc.c. */
-extern void *r_alloc (void **, size_t);
+extern void *r_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
extern void r_alloc_free (void **);
-extern void *r_re_alloc (void **, size_t);
+extern void *r_re_alloc (void **, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
extern void r_alloc_reset_variable (void **, void **);
extern void r_alloc_inhibit_buffer_relocation (int);
#endif
/* Defined in callint.c. */
extern Lisp_Object Qminus, Qplus;
+extern Lisp_Object Qprogn;
extern Lisp_Object Qwhen;
extern Lisp_Object Qmouse_leave_buffer_hook;
extern void syms_of_callint (void);
extern void sys_subshell (void);
extern void sys_suspend (void);
extern void discard_tty_input (void);
-extern void block_tty_out_signal (void);
-extern void unblock_tty_out_signal (void);
extern void init_sys_modes (struct tty_display_info *);
extern void reset_sys_modes (struct tty_display_info *);
extern void init_all_sys_modes (void);
/* True means ^G can quit instantly. */
extern bool immediate_quit;
-extern void *xmalloc (size_t);
-extern void *xzalloc (size_t);
-extern void *xrealloc (void *, size_t);
+extern void *xmalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xzalloc (size_t) ATTRIBUTE_MALLOC_SIZE ((1));
+extern void *xrealloc (void *, size_t) ATTRIBUTE_ALLOC_SIZE ((2));
extern void xfree (void *);
-extern void *xnmalloc (ptrdiff_t, ptrdiff_t);
-extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t);
+extern void *xnmalloc (ptrdiff_t, ptrdiff_t) ATTRIBUTE_MALLOC_SIZE ((1,2));
+extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t)
+ ATTRIBUTE_ALLOC_SIZE ((2,3));
extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t);
-extern char *xstrdup (const char *);
-extern char *xlispstrdup (Lisp_Object);
+extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
+extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC;
extern void dupstring (char **, char const *);
extern void xputenv (const char *);
enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 };
-extern void *record_xmalloc (size_t);
+extern void *record_xmalloc (size_t) ATTRIBUTE_ALLOC_SIZE ((1));
#define USE_SAFE_ALLOCA \
ptrdiff_t sa_count = SPECPDL_INDEX (); bool sa_must_free = false
in previous recursive minibuffer, but was not set explicitly
to t for this invocation, so set it to nil in this minibuffer.
Save the old value now, before we change it. */
- specbind (intern ("minibuffer-completing-file-name"), Vminibuffer_completing_file_name);
+ specbind (intern ("minibuffer-completing-file-name"),
+ Vminibuffer_completing_file_name);
if (EQ (Vminibuffer_completing_file_name, Qlambda))
Vminibuffer_completing_file_name = Qnil;
This variable only affects history lists that don't specify their own
maximum lengths. Setting the `history-length' property of a history
variable overrides this default. */);
- XSETFASTINT (Vhistory_length, 30);
+ XSETFASTINT (Vhistory_length, 100);
DEFVAR_BOOL ("history-delete-duplicates", history_delete_duplicates,
doc: /* Non-nil means to delete duplicates in history.
cmap = Qnil;
- for (i = 0; i < sizeof (w32_color_map) / sizeof (w32_color_map[0]);
- pc++, i++)
+ for (i = 0; i < ARRAYELTS (w32_color_map); pc++, i++)
cmap = Fcons (Fcons (build_string (pc->name),
make_number (pc->colorref)),
cmap);
{
#ifdef GLYPH_DEBUG
struct w32_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
+
+ /* If the frame's image cache refcount is still the same as our
+ private shadow variable, it means we are unwinding a frame
+ for which we didn't yet call init_frame_faces, where the
+ refcount is incremented. Therefore, we increment it here, so
+ that free_frame_faces, called in x_free_frame_resources
+ below, will not mistakenly decrement the counter that was not
+ incremented yet to account for this new frame. */
+ if (FRAME_IMAGE_CACHE (f) != NULL
+ && FRAME_IMAGE_CACHE (f)->refcount == image_cache_refcount)
+ FRAME_IMAGE_CACHE (f)->refcount++;
#endif
x_free_frame_resources (f);
eassert (dpyinfo->reference_count == dpyinfo_refcount);
eassert ((dpyinfo->terminal->image_cache == NULL
&& image_cache_refcount == 0)
- || dpyinfo->terminal->image_cache->refcount == image_cache_refcount);
+ || (dpyinfo->terminal->image_cache != NULL
+ && dpyinfo->terminal->image_cache->refcount == image_cache_refcount));
#endif
return Qt;
}
specified DOCUMENT.
\"find\" - initiate search starting from DOCUMENT, which must specify
a directory.
+ \"delete\" - move DOCUMENT, a file or a directory, to Recycle Bin.
+ \"copy\" - copy DOCUMENT, which must be a file or a directory, into
+ the clipboard.
+ \"cut\" - move DOCUMENT, a file or a directory, into the clipboard.
+ \"paste\" - paste the file whose name is in the clipboard into DOCUMENT,
+ which must be a directory.
+ \"pastelink\"
+ - create a shortcut in DOCUMENT (which must be a directory)
+ the file or directory whose name is in the clipboard.
\"runas\" - run DOCUMENT, which must be an excutable file, with
elevated privileges (a.k.a. \"as Administrator\").
\"properties\"
- - open the the property sheet dialog for DOCUMENT; works
- for *.lnk desktop shortcuts, and little or nothing else.
+ - open the the property sheet dialog for DOCUMENT.
nil - invoke the default OPERATION, or \"open\" if default is
not defined or unavailable.
DOCUMENT is typically the name of a document file or a URL, but can
also be an executable program to run, or a directory to open in the
-Windows Explorer. If it is a file, it must be a local one; this
-function does not support remote file names.
+Windows Explorer. If it is a file or a directory, it must be a local
+one; this function does not support remote file names.
If DOCUMENT is an executable program, the optional third arg PARAMETERS
-can be a string containing command line parameters that will be passed
-to the program. Some values of OPERATION also require parameters (e.g.,
-\"printto\" requires the printer address). Otherwise, PARAMETERS should
-be nil or unspecified.
+can be a string containing command line parameters, separated by blanks,
+that will be passed to the program. Some values of OPERATION also require
+parameters (e.g., \"printto\" requires the printer address). Otherwise,
+PARAMETERS should be nil or unspecified. Note that double quote characters
+in PARAMETERS must each be enclosed in 2 additional quotes, as in \"\"\".
Optional fourth argument SHOW-FLAG can be used to control how the
application will be displayed when it is invoked. If SHOW-FLAG is nil
char *errstr;
Lisp_Object current_dir = BVAR (current_buffer, directory);;
wchar_t *doc_w = NULL, *params_w = NULL, *ops_w = NULL;
+#ifdef CYGWIN
intptr_t result;
-#ifndef CYGWIN
+#else
int use_unicode = w32_unicode_filenames;
char *doc_a = NULL, *params_a = NULL, *ops_a = NULL;
Lisp_Object absdoc, handler;
+ BOOL success;
struct gcpro gcpro1;
#endif
GUI_SDATA (current_dir),
(INTEGERP (show_flag)
? XINT (show_flag) : SW_SHOWDEFAULT));
+
+ if (result > 32)
+ return Qt;
+
+ switch (result)
+ {
+ case SE_ERR_ACCESSDENIED:
+ errstr = w32_strerror (ERROR_ACCESS_DENIED);
+ break;
+ case SE_ERR_ASSOCINCOMPLETE:
+ case SE_ERR_NOASSOC:
+ errstr = w32_strerror (ERROR_NO_ASSOCIATION);
+ break;
+ case SE_ERR_DDEBUSY:
+ case SE_ERR_DDEFAIL:
+ errstr = w32_strerror (ERROR_DDE_FAIL);
+ break;
+ case SE_ERR_DDETIMEOUT:
+ errstr = w32_strerror (ERROR_TIMEOUT);
+ break;
+ case SE_ERR_DLLNOTFOUND:
+ errstr = w32_strerror (ERROR_DLL_NOT_FOUND);
+ break;
+ case SE_ERR_FNF:
+ errstr = w32_strerror (ERROR_FILE_NOT_FOUND);
+ break;
+ case SE_ERR_OOM:
+ errstr = w32_strerror (ERROR_NOT_ENOUGH_MEMORY);
+ break;
+ case SE_ERR_PNF:
+ errstr = w32_strerror (ERROR_PATH_NOT_FOUND);
+ break;
+ case SE_ERR_SHARE:
+ errstr = w32_strerror (ERROR_SHARING_VIOLATION);
+ break;
+ default:
+ errstr = w32_strerror (0);
+ break;
+ }
+
#else /* !CYGWIN */
+
current_dir = ENCODE_FILE (current_dir);
/* We have a situation here. If DOCUMENT is a relative file name,
but its name includes leading directories, i.e. it lives not in
if (use_unicode)
{
wchar_t document_w[MAX_PATH], current_dir_w[MAX_PATH];
+ SHELLEXECUTEINFOW shexinfo_w;
/* Encode filename, current directory and parameters, and
convert operation to UTF-16. */
*d++ = *s++;
*d = 0;
}
- result = (intptr_t) ShellExecuteW (NULL, ops_w, doc_w, params_w,
- current_dir_w,
- (INTEGERP (show_flag)
- ? XINT (show_flag) : SW_SHOWDEFAULT));
+
+ /* Using ShellExecuteEx and setting the SEE_MASK_INVOKEIDLIST
+ flag succeeds with more OPERATIONs (a.k.a. "verbs"), as it is
+ able to invoke verbs from shortcut menu extensions, not just
+ static verbs listed in the Registry. */
+ memset (&shexinfo_w, 0, sizeof (shexinfo_w));
+ shexinfo_w.cbSize = sizeof (shexinfo_w);
+ shexinfo_w.fMask =
+ SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI;
+ shexinfo_w.hwnd = NULL;
+ shexinfo_w.lpVerb = ops_w;
+ shexinfo_w.lpFile = doc_w;
+ shexinfo_w.lpParameters = params_w;
+ shexinfo_w.lpDirectory = current_dir_w;
+ shexinfo_w.nShow =
+ (INTEGERP (show_flag) ? XINT (show_flag) : SW_SHOWDEFAULT);
+ success = ShellExecuteExW (&shexinfo_w);
}
else
{
char document_a[MAX_PATH], current_dir_a[MAX_PATH];
+ SHELLEXECUTEINFOA shexinfo_a;
filename_to_ansi (SSDATA (current_dir), current_dir_a);
filename_to_ansi (SSDATA (document), document_a);
/* Assume OPERATION is pure ASCII. */
ops_a = SSDATA (operation);
}
- result = (intptr_t) ShellExecuteA (NULL, ops_a, doc_a, params_a,
- current_dir_a,
- (INTEGERP (show_flag)
- ? XINT (show_flag) : SW_SHOWDEFAULT));
+ memset (&shexinfo_a, 0, sizeof (shexinfo_a));
+ shexinfo_a.cbSize = sizeof (shexinfo_a);
+ shexinfo_a.fMask =
+ SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_DDEWAIT | SEE_MASK_FLAG_NO_UI;
+ shexinfo_a.hwnd = NULL;
+ shexinfo_a.lpVerb = ops_a;
+ shexinfo_a.lpFile = doc_a;
+ shexinfo_a.lpParameters = params_a;
+ shexinfo_a.lpDirectory = current_dir_a;
+ shexinfo_a.nShow =
+ (INTEGERP (show_flag) ? XINT (show_flag) : SW_SHOWDEFAULT);
+ success = ShellExecuteExA (&shexinfo_a);
}
-#endif /* !CYGWIN */
- if (result > 32)
+ if (success)
return Qt;
- switch (result)
- {
- case SE_ERR_ACCESSDENIED:
- errstr = w32_strerror (ERROR_ACCESS_DENIED);
- break;
- case SE_ERR_ASSOCINCOMPLETE:
- case SE_ERR_NOASSOC:
- errstr = w32_strerror (ERROR_NO_ASSOCIATION);
- break;
- case SE_ERR_DDEBUSY:
- case SE_ERR_DDEFAIL:
- errstr = w32_strerror (ERROR_DDE_FAIL);
- break;
- case SE_ERR_DDETIMEOUT:
- errstr = w32_strerror (ERROR_TIMEOUT);
- break;
- case SE_ERR_DLLNOTFOUND:
- errstr = w32_strerror (ERROR_DLL_NOT_FOUND);
- break;
- case SE_ERR_FNF:
- errstr = w32_strerror (ERROR_FILE_NOT_FOUND);
- break;
- case SE_ERR_OOM:
- errstr = w32_strerror (ERROR_NOT_ENOUGH_MEMORY);
- break;
- case SE_ERR_PNF:
- errstr = w32_strerror (ERROR_PATH_NOT_FOUND);
- break;
- case SE_ERR_SHARE:
- errstr = w32_strerror (ERROR_SHARING_VIOLATION);
- break;
- default:
- errstr = w32_strerror (0);
- break;
- }
+ errstr = w32_strerror (0);
+
+#endif /* !CYGWIN */
+
/* The error string might be encoded in the locale's encoding. */
if (!NILP (Vlocale_coding_system))
{
(char *, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)
= GetProcAddress (hKernel, "GetDiskFreeSpaceExA");
bool have_pfn_GetDiskFreeSpaceEx =
- (w32_unicode_filenames && pfn_GetDiskFreeSpaceExW
- || !w32_unicode_filenames && pfn_GetDiskFreeSpaceExA);
+ ((w32_unicode_filenames && pfn_GetDiskFreeSpaceExW)
+ || (!w32_unicode_filenames && pfn_GetDiskFreeSpaceExA));
/* On Windows, we may need to specify the root directory of the
volume holding FILENAME. */
s->stippled_p = s->face->stipple != 0;
}
else
- {
- s->gc = s->face->gc;
- s->stippled_p = s->face->stipple != 0;
- }
+ emacs_abort ();
/* GC must have been set. */
eassert (s->gc != 0);
width = rect.right - rect.left;
text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, width);
text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, height);
- rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height);
- columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width);
+ /* rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height); */
+ /* columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width); */
/* TODO: Clip size to the screen dimensions. */
void
x_focus_frame (struct frame *f)
{
+#if 0
struct w32_display_info *dpyinfo = &one_w32_display_info;
+#endif
/* Give input focus to frame. */
block_input ();
{
struct terminal *terminal;
- terminal = create_terminal ();
+ terminal = create_terminal (output_w32, &w32_redisplay_interface);
- terminal->type = output_w32;
terminal->display_info.w32 = dpyinfo;
dpyinfo->terminal = terminal;
terminal->ins_del_lines_hook = x_ins_del_lines;
terminal->delete_glyphs_hook = x_delete_glyphs;
terminal->ring_bell_hook = w32_ring_bell;
- terminal->reset_terminal_modes_hook = NULL;
- terminal->set_terminal_modes_hook = NULL;
terminal->update_begin_hook = x_update_begin;
terminal->update_end_hook = x_update_end;
- terminal->set_terminal_window_hook = NULL;
terminal->read_socket_hook = w32_read_socket;
terminal->frame_up_to_date_hook = w32_frame_up_to_date;
terminal->mouse_position_hook = w32_mouse_position;
terminal->condemn_scroll_bars_hook = w32_condemn_scroll_bars;
terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar;
terminal->judge_scroll_bars_hook = w32_judge_scroll_bars;
-
terminal->delete_frame_hook = x_destroy_window;
terminal->delete_terminal_hook = x_delete_terminal;
-
- terminal->rif = &w32_redisplay_interface;
+ /* Other hooks are NULL by default. */
/* We don't yet support separate terminals on W32, so don't try to share
keyboards between virtual terminals that are on the same physical
if (dpyinfo->palette)
DeleteObject (dpyinfo->palette);
}
+ /* Avoid freeing dpyinfo->w32_id_name more than once if emacs is
+ running as a daemon; see bug#17510. */
+ #ifndef CYGWIN
xfree (dpyinfo->w32_id_name);
+ #endif
w32_reset_fringes ();
}
following. Return the result, or nil if something went
wrong. Prevent redisplay during the evaluation. */
- Lisp_Object
- safe_call (ptrdiff_t nargs, Lisp_Object func, ...)
+ static Lisp_Object
+ safe__call (bool inhibit_quit, ptrdiff_t nargs, Lisp_Object func, va_list ap)
{
Lisp_Object val;
val = Qnil;
else
{
- va_list ap;
ptrdiff_t i;
ptrdiff_t count = SPECPDL_INDEX ();
struct gcpro gcpro1;
Lisp_Object *args = alloca (nargs * word_size);
args[0] = func;
- va_start (ap, func);
for (i = 1; i < nargs; i++)
args[i] = va_arg (ap, Lisp_Object);
- va_end (ap);
GCPRO1 (args[0]);
gcpro1.nvars = nargs;
specbind (Qinhibit_redisplay, Qt);
+ if (inhibit_quit)
+ specbind (Qinhibit_quit, Qt);
/* Use Qt to ensure debugger does not run,
so there is no possibility of wanting to redisplay. */
val = internal_condition_case_n (Ffuncall, nargs, args, Qt,
return val;
}
+ Lisp_Object
+ safe_call (ptrdiff_t nargs, Lisp_Object func, ...)
+ {
+ Lisp_Object retval;
+ va_list ap;
+
+ va_start (ap, func);
+ retval = safe__call (false, nargs, func, ap);
+ va_end (ap);
+ return retval;
+ }
/* Call function FN with one argument ARG.
Return the result, or nil if something went wrong. */
return safe_call (2, fn, arg);
}
+ static Lisp_Object
+ safe__call1 (bool inhibit_quit, Lisp_Object fn, ...)
+ {
+ Lisp_Object retval;
+ va_list ap;
+
+ va_start (ap, fn);
+ retval = safe__call (inhibit_quit, 2, fn, ap);
+ va_end (ap);
+ return retval;
+ }
+
static Lisp_Object Qeval;
Lisp_Object
safe_eval (Lisp_Object sexpr)
{
- return safe_call1 (Qeval, sexpr);
+ return safe__call1 (false, Qeval, sexpr);
+ }
+
+ static Lisp_Object
+ safe__eval (bool inhibit_quit, Lisp_Object sexpr)
+ {
+ return safe__call1 (inhibit_quit, Qeval, sexpr);
}
/* Call function FN with two arguments ARG1 and ARG2.
}
else
{
- if (it->line_wrap == WORD_WRAP)
+ if (it->line_wrap == WORD_WRAP && it->area == TEXT_AREA)
{
if (IT_DISPLAYING_WHITESPACE (it))
may_wrap = 1;
if (closest_pos < ZV)
{
RESTORE_IT (it, &ppos_it, ppos_data);
- move_it_in_display_line_to (it, closest_pos, -1,
- MOVE_TO_POS);
+ /* Don't recurse if closest_pos is equal to
+ to_charpos, since we have just tried that. */
+ if (closest_pos != to_charpos)
+ move_it_in_display_line_to (it, closest_pos, -1,
+ MOVE_TO_POS);
result = MOVE_POS_MATCH_OR_ZV;
}
else
&& !at_eob_p && closest_pos < ZV)
{
RESTORE_IT (it, &ppos_it, ppos_data);
- move_it_in_display_line_to (it, closest_pos, -1,
- MOVE_TO_POS);
+ if (closest_pos != to_charpos)
+ move_it_in_display_line_to (it, closest_pos, -1,
+ MOVE_TO_POS);
}
result = MOVE_POS_MATCH_OR_ZV;
break;
if (closest_pos < ZV)
{
RESTORE_IT (it, &ppos_it, ppos_data);
- move_it_in_display_line_to (it, closest_pos, -1, MOVE_TO_POS);
+ if (closest_pos != to_charpos)
+ move_it_in_display_line_to (it, closest_pos, -1,
+ MOVE_TO_POS);
}
result = MOVE_POS_MATCH_OR_ZV;
break;
}
}
}
- safe_call1 (Vpre_redisplay_function, windows);
+ safe__call1 (true, Vpre_redisplay_function, windows);
}
/* Update all frame titles based on their buffer names, etc. We do
if (CONSP (XCDR (elt)))
{
Lisp_Object spec;
- spec = safe_eval (XCAR (XCDR (elt)));
+ spec = safe__eval (true, XCAR (XCDR (elt)));
n += display_mode_element (it, depth, field_width - n,
precision - n, spec, props,
risky);
return decode_mode_spec_buf;
no_value:
{
- char* p = decode_mode_spec_buf;
+ char *p = decode_mode_spec_buf;
int pad = width - 2;
while (pad-- > 0)
*p++ = ' ';
return OK_PIXELS (WINDOW_SCROLL_BAR_AREA_WIDTH (it->w));
}
- prop = buffer_local_value_1 (prop, it->w->contents);
+ prop = buffer_local_value (prop, it->w->contents);
if (EQ (prop, Qunbound))
prop = Qnil;
}
return OK_PIXELS (pixels);
}
- car = buffer_local_value_1 (car, it->w->contents);
+ car = buffer_local_value (car, it->w->contents);
if (EQ (car, Qunbound))
car = Qnil;
}
else
overlap_hl = DRAW_NORMAL_TEXT;
+ if (hl != overlap_hl)
+ clip_head = head;
j = i;
BUILD_GLYPH_STRINGS (j, start, h, t,
overlap_hl, dummy_x, last_x);
start = i;
compute_overhangs_and_x (t, head->x, 1);
prepend_glyph_string_lists (&head, &tail, h, t);
- clip_head = head;
+ if (clip_head == NULL)
+ clip_head = head;
}
/* Prepend glyph strings for glyphs in front of the first glyph
else
overlap_hl = DRAW_NORMAL_TEXT;
- clip_head = head;
+ if (hl == overlap_hl || clip_head == NULL)
+ clip_head = head;
BUILD_GLYPH_STRINGS (i, start, h, t,
overlap_hl, dummy_x, last_x);
for (s = h; s; s = s->next)
else
overlap_hl = DRAW_NORMAL_TEXT;
+ if (hl != overlap_hl)
+ clip_tail = tail;
BUILD_GLYPH_STRINGS (end, i, h, t,
overlap_hl, x, last_x);
/* Because BUILD_GLYPH_STRINGS updates the first argument,
we don't have `end = i;' here. */
compute_overhangs_and_x (h, tail->x + tail->width, 0);
append_glyph_string_lists (&head, &tail, h, t);
- clip_tail = tail;
+ if (clip_tail == NULL)
+ clip_tail = tail;
}
/* Append glyph strings for glyphs following the last glyph
else
overlap_hl = DRAW_NORMAL_TEXT;
- clip_tail = tail;
+ if (hl == overlap_hl || clip_tail == NULL)
+ clip_tail = tail;
i++; /* We must include the Ith glyph. */
BUILD_GLYPH_STRINGS (end, i, h, t,
overlap_hl, x, last_x);
else if (area == ON_MODE_LINE)
{
Lisp_Object default_help
- = buffer_local_value_1 (Qmode_line_default_help_echo,
- w->contents);
+ = buffer_local_value (Qmode_line_default_help_echo,
+ w->contents);
if (STRINGP (default_help))
{