]> code.delx.au - gnu-emacs/commitdiff
Merge from origin/emacs-24
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Feb 2015 06:53:56 +0000 (22:53 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 26 Feb 2015 06:53:56 +0000 (22:53 -0800)
e726f20 Handle "#" operator properly inside macro.  Fix coding bug.
618931b Handle dead frame in menu-bar-non-minibuffer-window-p.  (Bug#19728)
017a03a Document MS-Windows file-name idiosyncrasies  (Bug#19463)
f3faf4f Fix description of Customize buffer in Emacs manual.
1c1d0b7 Fix a typo in the Emacs manual's Hungry Delete description.
be7fb82 src/dispextern.h (FACE_FOR_CHAR): Fix the commentary.
33c4409 Spelling fixes
6c8231e python.el: Handle tabs in python-indent-dedent-line.
41c3b92 * lisp/progmodes/python.el: Respect user indentation after comment.
868df45 Avoid compiler warnings in decode_env_path.
b28c979 Fix XEmacs version typo in comment and ChangeLog
989fb32 Improve solution of bug #19701
6310530 Fix refilling of list of language environments in User Manual
c4c447d Restore XEmacs compatibility

Conflicts:
doc/emacs/ChangeLog
lisp/ChangeLog
src/ChangeLog
test/ChangeLog

16 files changed:
1  2 
doc/emacs/ChangeLog
doc/emacs/custom.texi
doc/emacs/msdos.texi
doc/emacs/programs.texi
lisp/ChangeLog
lisp/menu-bar.el
lisp/progmodes/cc-engine.el
lisp/progmodes/cc-mode.el
lisp/progmodes/python.el
lisp/textmodes/reftex-vars.el
src/ChangeLog
src/dispextern.h
src/emacs.c
src/w32.c
test/ChangeLog
test/automated/python-tests.el

diff --combined doc/emacs/ChangeLog
index 1287733b12962798565e65f427c5f3fe5937bcab,7d8fcf4cb6d9ad4b23b13e01ddc5b3d961134558..13536406158d7929d8069fefdf7b0deae3d27101
 -2015-01-31  Eli Zaretskii  <eliz@gnu.org>
++2015-02-26  Eli Zaretskii  <eliz@gnu.org>
+       * msdog.texi (Windows Files): Document characters invalid in
+       Windows file names.  (Bug#19463)
+       * custom.texi (Customization Groups): Update the looks of the
+       Customize Group buffer.
+       * programs.texi (Hungry Delete): Fix a typo: "C-d" instead of
+       "C-c C-d" in hungry-delete mode.
 -2015-01-29  Eli Zaretskii  <eliz@gnu.org>
++2015-02-26  Eli Zaretskii  <eliz@gnu.org>
+       * mule.texi (Language Environments): Work around refill bug in
+       makeinfo 4.x.  (Bug#19697)
 -2015-01-26  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-28  Eli Zaretskii  <eliz@gnu.org>
  
        * cmdargs.texi (Action Arguments): Clarify into which buffer
        '--insert' inserts.  (Bug#19694)
  
 -2015-01-21  Eli Zaretskii  <eliz@gnu.org>
 -
        * programs.texi (Custom C Indent): Fix a typo.  (Bug#19647)
  
 -2014-12-22  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-27  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * files.texi (File Archives): Document "I" for tar-new-entry.
 +      (Bug#19274)
 +
 +2014-12-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Less 'make' chatter for Emacs doc
 +      * Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_GEN, am__v_GEN_)
 +      (am__v_GEN_0, am__v_GEN_1): New macros, from ../../src/Makefile.in.
 +      (ENVADD, $(buildinfodir)/emacs.info, emacs.html):
 +      Use them.
 +
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
        * buffers.texi (Kill Buffer): Improve indexing.
  
 -2014-11-19  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-12-24  Stephen Leake  <stephen_leake@stephe-leake.org>
 +
 +      * trouble.texi: Move user-level information from CONTRIBUTE here.
 +
 +2014-12-14  Alan Mackenzie  <acm@muc.de>
 +
 +      * display.texi (Scrolling): fast-but-imprecise-scrolling.
 +      Describe new variable.
 +
 +2014-12-14  Cameron Desautels  <camdez@gmail.com>
 +
 +      * custom.texi (Saving Customizations): Mention
 +      `custom-prompt-customize-unsaved-options'.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * misc.texi (Network Security): Mention the new protocol-level
 +      `high' NSM checks.
 +
 +2014-12-08  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * maintaining.texi: Suopport fo Arch has been moved to obosolete,
 +      remove references that imply otherwise.
 +
 +2014-11-29  Paul Eggert  <eggert@cs.ucla.edu>
  
        Lessen focus on ChangeLog files, as opposed to change log entries.
        * maintaining.texi (Change Log): Mention that ChangeLog files may
        be copied to or from a version control system.
        * trouble.texi (Sending Patches): Point to the commit messages.
  
 -2014-11-19  Eli Zaretskii  <eliz@gnu.org>
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
  
        * maintaining.texi (Switching Branches): Mention "C-x v r".
        Correct commands for switching branches in various VCSs.
  
 -2014-11-16  Tassilo Horn  <tsdh@gnu.org>
 +2014-11-27  Tassilo Horn  <tsdh@gnu.org>
  
        * misc.texi (DocView Slicing): Describe how to slice with the
        mouse.  Fix command mentioned by slice by BoundingBox paragraph.
        (Bug#18040)
  
 +2014-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * misc.texi (Network Security): Use "untrustworthy" instead of
 +      "unsafe".
 +
 +2014-11-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * misc.texi (Network Security): Improve wording and indexing of
 +      last change.
 +
 +2014-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * misc.texi (Gnus Summary Buffer): Move the Network Security
 +      Manager stuff here from the lispref manual.
 +
 +2014-11-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * maintaining.texi (Version Control Systems): Move "@end itemize"
 +      past the last @item.
 +
 +2014-11-21  H. Dieter Wilhelm  <dieter@duenenhof-wilhelm.de>
 +
 +      * maintaining.texi (Version Control Systems): Fix a typo.
 +
 +2014-11-20  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * maintaining.texi: Document SRC support.
 +
 +2014-11-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (top_srcdir, version): New, set by configure.
 +      (doc-emacsver): New rule.
 +      (bootstrap-clean, maintainer-clean): Delete emacsver.texi.
 +      (emacsver.texi.in): Rename from emacsver.texi.
 +
 +2014-11-09  Juri Linkov  <juri@jurta.org>
 +
 +      * search.texi (Other Repeating Search): Add documentation for
 +      multi-isearch-files and multi-isearch-files-regexp.  (Bug#13592)
 +
  2014-11-09  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in (version): Remove variable.
        (clean): No longer delete dist tarfile.
        (dist): Remove rule; replace with code in admin.el.
  
 -2014-11-01  Glenn Morris  <rgm@gnu.org>
 +2014-11-03  Glenn Morris  <rgm@gnu.org>
  
        * programs.texi (Misc for Programs): Fix typo.
  
 -2014-10-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
  
        * frames.texi (Scroll Bars): Improve indexing of faces.
  
        * display.texi (Standard Faces, Text Display)
        (Useless Whitespace): Improve indexing of faces.
  
 -2014-10-23  Tassilo Horn  <tsdh@gnu.org>
 -
 -      * misc.texi (Document View): Adapt to latest doc-view changes wrt
 -      viewing the document's plain text contents.  [Backport]
 -
 -2014-10-23  Eli Zaretskii  <eliz@gnu.org>
 -
        * frames.texi (Frame Commands): Document and index
        'frame-resize-pixelwise'.
  
        * windows.texi (Split Window): Document and index
        'window-resize-pixelwise'.
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2014-10-22  Tassilo Horn  <tsdh@gnu.org>
  
 -      * ack.texi (Acknowledgments): Remove some obsolete items.
 -      * misc.texi (Emulation): Remove section.
 +      * misc.texi (Document View): Adapt to latest doc-view changes wrt
 +      viewing the document's plain text contents.
  
  2014-10-20  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 24.4 released.
 +      * Merge in all changes up to 24.4 release.
  
  2014-10-13  Glenn Morris  <rgm@gnu.org>
  
        * Makefile.in (dist): Update for new output variables.
  
 -2014-10-06  Glenn Morris  <rgm@gnu.org>
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * macos.texi (Mac OS / GNUstep, Mac / GNUstep Basics)
 +      (Mac / GNUstep Customization): Mac OS X 10.6 or later now required.
 +
 +2014-10-09  Glenn Morris  <rgm@gnu.org>
  
        * package.texi (Package Menu): The package list was changed to not
        say "unsigned" any more.
  
 -2014-10-04  Glenn Morris  <rgm@gnu.org>
 +2014-10-05  Glenn Morris  <rgm@gnu.org>
  
        * misc.texi (Sorting):
        * search.texi (Query Replace): Markup fixes.
  
 +2014-10-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frames.texi (Scroll Bars): Describe use of horizontal scroll bars.
 +
 +2014-10-04  Glenn Morris  <rgm@gnu.org>
 +
        * cmdargs.texi (Misc X):
        * display.texi (Optional Mode Line):
        * misc.texi (emacsclient Options):
  
        * frames.texi (Frame Commands):
        * cmdargs.texi (Window Size X): Mention the use of
 -      `frame-resize-pixelwise' to make frames truly fullscreen or
 -      maximized.
 +      `frame-resize-pixelwise' to make frames truly fullscreen or maximized.
  
 -2014-10-01  Glenn Morris  <rgm@gnu.org>
 +2014-10-02  Glenn Morris  <rgm@gnu.org>
  
        * package.texi (Package Installation): Mention etc/package-keyring.gpg.
  
 +2014-09-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacsver.texi (EMACSVER): Bump to 20.0.50.
 +
 +2014-09-15  Daniel Colascione  <dancol@dancol.org>
 +
 +      * regs.texi (Text Registers): Update end-user documentation
 +      to reflect `insert-register' interface change.
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * programs.texi (Program Modes): Don't advertise VMS DCL support
 +      any more.
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Refer to MS-DOS using the same name everywhere.
 +
 +      * Makefile.in (EMACSSOURCES): ``MS-DOG'', ``MSDOG'' and ``msdog''
 +      become ``MS-DOS''; ``msdog'' in filenames becomes ``msdos''.
 +      * emacs-xtra.texi: ditto.
 +      * emacs.texi: ditto.
 +      * makefile.w32-in: ditto.
 +      * msdog-xtra.texi: ditto, and rename file.
 +      * msdog.texi: ditto, and rename file.
 +
  2014-07-21  Glenn Morris  <rgm@gnu.org>
  
        * emacs.texi (Intro): Workaround makeinfo 4 @acronym bug.  (Bug#18040)
  
 -2014-07-03  Juri Linkov  <juri@jurta.org>
 +2014-07-09  Juri Linkov  <juri@jurta.org>
  
        * search.texi (Regexp Search): Update lax space matching that is
        not active in regexp search by default now.  (Bug#17901)
  
 -2014-06-29  Glenn Morris  <rgm@gnu.org>
 +2014-07-03  Glenn Morris  <rgm@gnu.org>
  
        * help.texi (Misc Help):
        * trouble.texi (Checklist): "Online" help doesn't mean what it
        used to any more.
  
 +2014-06-23  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (%.texi): Disable implicit rules.
 +      (mkinfodir): Remove.
 +      (.dvi.ps): Replace with pattern rule.
 +      (${buildinfodir}): New rule.
 +      ($(buildinfodir)/emacs.info): Use order-only prereq for output dir.
 +      Use $<.
 +      (emacs.dvi, emacs.pdf, emacs.html, emacs-xtra.dvi, emacs-xtra.pdf):
 +      Use $<.
 +      (%.ps): New rule.
 +
 +2014-06-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (bootstrap-clean): New.
 +
 +2014-06-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (INFO_EXT): Remove and replace by ".info" throughout.
 +      (INFO_OPTS): Set directly rather than with configure.
 +
  2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * entering.texi (Entering Emacs): Small fix re initial-buffer-choice.
        * ack.texi (Acknowledgments):
        * emacs.texi (Acknowledgments): Updates.
  
 -2014-06-07  Glenn Morris  <rgm@gnu.org>
 +2014-06-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * ack.texi (Acknowledgments):
 +      * emacs.texi (Acknowledgments): Updates.
  
        * programs.texi (Prettifying Symbols): Remove node.
        (Misc for Programs): Mention more briefly here.
        * emacs.texi (Top): Update menu.
  
 -2014-06-05  Glenn Morris  <rgm@gnu.org>
 -
        * package.texi (Package Menu, Package Installation):
        Mention signed packages.
 -
 -2014-06-03  Glenn Morris  <rgm@gnu.org>
 -
 -      * package.texi (Package Installation): Mention package-pinned-packages.
 +      (Package Installation): Mention package-pinned-packages.
  
  2014-06-02  Glenn Morris  <rgm@gnu.org>
  
 +      * ack.texi (Acknowledgments): Remove some obsolete items.
        * misc.texi [iftex]: Update chapter summary.
 -      (Emulation): Remove ludicrously outdated claim.
 -
 -2014-05-29  Glenn Morris  <rgm@gnu.org>
 +      (Emulation): Remove section.
  
        * macos.texi (Mac / GNUstep Customization): Mention ns custom group.
        (Customization options specific to Mac OS / GNUstep): Remove section.
  
 -2014-05-28  Glenn Morris  <rgm@gnu.org>
 -
 -      * macos.texi (Mac / GNUstep Customization): Mention some new features.
 -
 -2014-05-27  Glenn Morris  <rgm@gnu.org>
 -
        * abbrevs.texi (Expanding Abbrevs): Update re abbrev-expand-function.
  
 -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-03-13  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * mule.texi (International, Language Environments): Update
 -      the list of language environments to what Emacs currently
 +      * mule.texi (International, Language Environments):
 +      Update the list of language environments to what Emacs currently
        supports.  Add the full list to the index.  Suggest C-h L for
        details rather than trying to give very brief details here.
  
  
        * indent.texi (Tab Stops): Mention recent changes about `tab-stop-list'.
  
 -      * frames.texi (Scroll Bars): Document
 -      `scroll-bar-adjust-thumb-portion'.
 +      * frames.texi (Scroll Bars):
 +      Document `scroll-bar-adjust-thumb-portion'.
  
  2013-12-21  Chong Yidong  <cyd@gnu.org>
  
  
        * entering.texi: Document `initial-buffer-choice' changes.
  
 -      * misc.texi (emacsclient Options): Document
 -      `initial-buffer-choice' changes.
 +      * misc.texi (emacsclient Options):
 +      Document `initial-buffer-choice' changes.
  
        * help.texi: Document that `?' now also shows subcommands of
        prefix keys.
  
        * misc.texi (Terminal emulator): Document Term mode faces.
  
 -      * mini.texi (Basic Minibuffer): New node.  Document
 -      minibuffer-electric-default-mode.
 +      * mini.texi (Basic Minibuffer): New node.
 +      Document minibuffer-electric-default-mode.
  
        * display.texi (Visual Line Mode): Fix index entry.
  
  
        * Makefile.in (MAKEINFO): Now controlled by `configure'.
        (MAKEINFO_OPTS): New variable.  Use it where appropriate.
 -      (ENVADD): Updated.
 +      (ENVADD): Update.
  
  2011-01-18  Glenn Morris  <rgm@gnu.org>
  
  
        * text.texi (Format Faces): Replace old M-g key prefix with M-o.
  
 -      * emacs.texi (Acknowledgments): Updated.
 +      * emacs.texi (Acknowledgments): Update.
  
        * anti.texi: Total rewrite.
  
  
        * frames.texi (Dialog Boxes): Add use-file-dialog.
  
 -2003-11-22  Martin Stjernholm  <bug-cc-mode@gnu.org>
 +2003-11-22  Martin Stjernholm  <mast@lysator.liu.se>
  
        * ack.texi: Note that Alan Mackenzie contributed the AWK support
        in CC Mode.
diff --combined doc/emacs/custom.texi
index 095e49be90c575bc443b7d7cad02ff065bf86ee3,0e9c4fb941bbeeedecc25efac91e64a240d51def..9fd823bbae1d316015245b014f46c88e2a3b1f0e
@@@ -82,14 -82,12 +82,12 @@@ top-level @code{Emacs} group.  It look
  @c @page
  @smallexample
  @group
- To apply changes, use the Save or Set buttons.
- For details, see [Saving Customizations] in the [Emacs manual].
+ For help, see [Easy Customization] in the [Emacs manual].
  
  ________________________________________ [ Search ]
  
   Operate on all settings in this buffer:
-  [ Set for current session ] [ Save for future sessions ]
-  [ Undo edits ] [ Reset to saved ] [ Erase customizations ] [ Exit ]
+  [ Revert... ] [ Apply ] [ Apply and Save ]
  
  
  Emacs group: Customization of the One True Editor.
@@@ -97,7 -95,6 +95,6 @@@
        See also [Manual].
  
  [Editing] : Basic text editing facilities.
  [Convenience] : Convenience features for faster editing.
  
  @var{more second-level groups}
@@@ -405,16 -402,6 +402,16 @@@ customizations in your initialization f
  customizations from such a session would wipe out all the other
  customizations you might have on your initialization file.
  
 +  Please note that any customizations you have not chosen to save for
 +future sessions will be lost when you terminate Emacs.  If you'd like
 +to be prompted about unsaved customizations at termination time, add
 +the following to your initialization file:
 +
 +@example
 +(add-hook 'kill-emacs-query-functions
 +          'custom-prompt-customize-unsaved-options)
 +@end example
 +
  @node Face Customization
  @subsection Customizing Faces
  @cindex customizing faces
@@@ -2455,13 -2442,9 +2452,13 @@@ harmless, so those do not need a condit
  @node Terminal Init
  @subsection Terminal-specific Initialization
  
 +@vindex term-file-aliases
    Each terminal type can have a Lisp library to be loaded into Emacs when
  it is run on that type of terminal.  For a terminal type named
 -@var{termtype}, the library is called @file{term/@var{termtype}} and it is
 +@var{termtype}, the library is called @file{term/@var{termtype}}.
 +(If there is an entry of the form @code{(@var{termtype} . @var{alias})}
 +in the @code{term-file-aliases} association list, Emacs uses
 +@var{alias} in place of @var{termtype}.)  The library is
  found by searching the directories @code{load-path} as usual and trying the
  suffixes @samp{.elc} and @samp{.el}.  Normally it appears in the
  subdirectory @file{term} of the directory where most Emacs libraries are
diff --combined doc/emacs/msdos.texi
index b5a66503ca29003150896a91df866311b4a24447,0245fed208c7212a3bf998fca197eb3f6d2104ec..10e792369385436f4e140a16c5181a4a8802a74a
@@@ -9,7 -9,7 +9,7 @@@
  
    This section describes peculiarities of using Emacs on Microsoft
  Windows.  Some of these peculiarities are also relevant to Microsoft's
 -older MS-DOS ``operating system'' (also known as ``MS-DOG'').
 +older MS-DOS operating system.
  However, Emacs features that are relevant @emph{only} to MS-DOS are
  described in a separate
  @iftex
@@@ -249,7 -249,42 +249,42 @@@ removable and remote volumes, where thi
  Dired and other related features.  The value of @code{nil} means never
  issue those system calls.  Non-@code{nil} values are more useful on
  NTFS volumes, which support hard links and file security, than on FAT,
- FAT32, and XFAT volumes.
+ FAT32, and exFAT volumes.
+ @cindex file names, invalid characters on MS-Windows
+   Unlike Unix, MS-Windows file systems restrict the set of characters
+ that can be used in a file name.  The following characters are not
+ allowed:
+ @itemize @bullet
+ @item
+ Shell redirection symbols @samp{<}, @samp{>}, and @samp{|}.
+ @item
+ Colon @samp{:} (except after the drive letter).
+ @item
+ Forward slash @samp{/} and backslash @samp{\} (except as directory
+ separators).
+ @item
+ Wildcard characters @samp{*} and @samp{?}.
+ @item
+ Control characters whose codepoints are 1 through 31 decimal.  In
+ particular, newlines in file names are not allowed.
+ @item
+ The null character, whose codepoint is zero (this limitation exists on
+ Unix filesystems as well).
+ @end itemize
+ @noindent
+ In addition, referencing any file whose name matches a DOS character
+ device, such as @file{NUL} or @file{LPT1} or @file{PRN} or @file{CON},
+ with or without any file-name extension, will always resolve to those
+ character devices, in any directory.  Therefore, only use such file
+ names when you want to use the corresponding character device.
  
  @node ls in Lisp
  @section Emulation of @code{ls} on MS-Windows
@@@ -986,5 -1021,5 +1021,5 @@@ click-to-focus policy
  @end ifnottex
  
  @ifnottex
 -@include msdog-xtra.texi
 +@include msdos-xtra.texi
  @end ifnottex
diff --combined doc/emacs/programs.texi
index 609392f6bb78725d69e76ca3bf4066492cb0b603,329175409bf08ef71dbc15d6ffc1bf1a146f4fde..73aed087f450910ef80dc03a5c35fb5021de1821
@@@ -88,8 -88,8 +88,8 @@@ Fortran, Icon, IDL (CORBA), IDLWAVE, Ja
  Octave, Pascal, Perl, Pike, PostScript, Prolog, Python, Ruby, Simula, Tcl,
  and VHDL@.  An alternative mode for Perl is called CPerl mode.  Modes are
  also available for the scripting languages of the common GNU and Unix
 -shells, VMS DCL, and MS-DOS/MS-Windows @samp{BAT} files, and for
 -makefiles, DNS master files, and various sorts of configuration files.
 +shells, and MS-DOS/MS-Windows @samp{BAT} files, and for makefiles,
 +DNS master files, and various sorts of configuration files.
  
    Ideally, Emacs should have a major mode for each programming
  language that you might want to edit.  If it doesn't have a mode for
@@@ -1666,7 -1666,7 +1666,7 @@@ Delete the entire block of whitespace a
    As an alternative to the above commands, you can enable @dfn{hungry
  delete mode}.  When this feature is enabled (indicated by @samp{/h} in
  the mode line after the mode name), a single @key{DEL} deletes all
- preceding whitespace, not just one space, and a single @kbd{C-c C-d}
+ preceding whitespace, not just one space, and a single @kbd{C-d}
  (but @emph{not} plain @key{Delete}) deletes all following whitespace.
  
  @table @kbd
diff --combined lisp/ChangeLog
index 33e04807e87a592690914e61f82b0347c7002702,fd54c6886408cccb2f4e31f601e662246c680f53..8ccc2c35b1fd53ec76f80bdba8f5f05f3b41a80e
 -2015-01-31  Alan Mackenzie  <acm@muc.de>
++2015-02-26  Alan Mackenzie  <acm@muc.de>
+       Handle "#" operator properly inside macro.  Fix coding bug.
+       * progmodes/cc-mode.el (c-neutralize-syntax-in-and-mark-CPP): On
+       finding a "#" which looks like the start of a macro, check it
+       isn't already inside a macro.
+       * progmodes/cc-engine.el (c-state-safe-place): Don't record a new
+       "safe" position into the list of them when this is beyond our
+       current position.
 -2015-01-31  Martin Rudalics  <rudalics@gmx.at>
++2015-02-26  Martin Rudalics  <rudalics@gmx.at>
+       * menu-bar.el (menu-bar-non-minibuffer-window-p): Return nil when
+       the menu frame is dead.  (Bug#19728)
 -2015-01-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
++2015-02-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+       python.el: Handle tabs in python-indent-dedent-line.
+       * progmodes/python.el (python-indent-dedent-line): Fixes for
+       indentation with tabs.  Thanks to <dale@codefu.org> (Bug#19730).
 -2015-01-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
++2015-02-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+       * progmodes/python.el (python-indent-context): Respect user
+       indentation after comment.
 -2015-01-29  Tassilo Horn  <tsdh@gnu.org>
++2015-02-26  Tassilo Horn  <tsdh@gnu.org>
+       * textmodes/reftex-vars.el (featurep): Conditionalize value of
+       reftex-label-regexps in order to stay compatible with XEmacs 21.5
+       which has no explicitly numbered groups in regexps (bug#19714).
 -2015-01-28  Tassilo Horn  <tsdh@gnu.org>
 +2015-02-26  Daiki Ueno  <ueno@gnu.org>
  
 -      * textmodes/reftex.el (reftex-syntax-table-for-bib): Give ( and )
 -      punctuation syntax since to allow bibtex fields with values such
 -      as {Test 1) and 2)} (bug#19205, bug#19707).
 -      (reftex--prepare-syntax-tables): New function.
 -      (reftex-mode): Use it.
 +      * net/dbus.el (dbus-register-signal): Convert "N" of ":argN" to
 +      integer before comparison.
  
 -2015-01-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-25  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
  
 -      python.el: New non-global state dependent indentation engine.
 -      (Bug#18319, Bug#19595)
 +      * progmodes/elisp-mode.el (elisp--eval-last-sexp): Document argument.
  
 -      * progmodes/python.el (python-syntax-comment-or-string-p): Accept
 -      PPSS as argument.
 -      (python-syntax-closing-paren-p): New function.
 -      (python-indent-current-level)
 -      (python-indent-levels): Mark obsolete.
 -      (python-indent-context): Return more context cases.
 -      (python-indent--calculate-indentation)
 -      (python-indent--calculate-levels): New functions.
 -      (python-indent-calculate-levels): Use them.
 -      (python-indent-calculate-indentation, python-indent-line):
 -      (python-indent-line-function): Rewritten to use new API.
 -      (python-indent-dedent-line): Simplify logic.
 -      (python-indent-dedent-line-backspace): Use `unless`.
 -      (python-indent-toggle-levels): Delete function.
 +2015-02-25  Oleh Krehel  <ohwoeowho@gmail.com>
  
 -2015-01-22  Wolfgang Jenkner  <wjenkner@inode.at>
 +      * emacs-lisp/check-declare.el (check-declare-warn): Use
 +      compilation-style warnings.
 +      (check-declare-files): Make sure that
 +      `check-declare-warning-buffer' is in `compilation-mode'.
  
 -      * calc/calc-units.el (math-units-in-expr-p)
 -      (math-single-units-in-expr-p, math-find-compatible-unit-rec)
 -      (math-extract-units): Handle the `neg' operator.  (Bug#19582)
 -      [Backport]
 +2015-02-25  Oleh Krehel  <ohwoeowho@gmail.com>
  
 -2015-01-21  Daniel Koning  <dk@danielkoning.com>  (tiny change)
 +      * emacs-lisp/check-declare.el (check-declare-ext-errors): New
 +      defcustom.
 +      (check-declare): New defgroup.
 +      (check-declare-verify): When `check-declare-ext-errors' is
 +      non-nil, warn about an unfound function, instead of saying
 +      "skipping external file".
  
 -      * subr.el (posnp): Correct docstring of `posnp'.
 -      (posn-col-row): Make it work with all mouse position objects.
 -      * textmodes/artist.el (artist-mouse-draw-continously): Cancel
 -      timers if an error occurs during continuous drawing.  (Bug#6130)
 +2015-02-25  Tassilo Horn  <tsdh@gnu.org>
  
 -2015-01-20  Eli Zaretskii  <eliz@gnu.org>
 +      * textmodes/reftex-vars.el (reftex-include-file-commands): Call
 +      reftex-set-dirty on changes.
  
 -      * button.el (button-activate, push-button): Doc fix.  (Bug#19628)
 +2015-02-25  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2015-01-16  Samer Masterson  <samer@samertm.com>  (tiny change)
 +      * emacs-lisp/edebug.el (edebug--display): Save-excursion (bug#19611).
 +      * emacs-lisp/debug.el (debugger-env-macro): Remove redundant
 +      save-excursion.
  
 -      * pcomplete.el (pcomplete-parse-arguments): Parse arguments
 -      regardless of pcomplete-cycle-completions's value.  (Bug#18950)
 +2015-02-24  Glenn Morris  <rgm@gnu.org>
  
 -2015-01-13  Michael Albinus  <michael.albinus@gmx.de>
 +      * mail/rmailsum.el (rmail-summary-previous-all)
 +      (rmail-summary-previous-msg): Simplify.
  
 -      * filenotify.el (file-notify-descriptors, file-notify-handle-event):
 -      Adapt docstring.
 -      (file-notify--descriptor): New defun.
 -      (file-notify-callback, file-notify-add-watch, file-notify-rm-watch):
 -      Adapt docstring.  Handle multiple values for
 -      `file-notify-descriptors' entries.  (Bug#18880)
 +2015-02-25  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * net/tramp.el (tramp-handle-file-notify-rm-watch): Do not check
 -      `file-notify-descriptors', the implementation has been changed.
 +      * simple.el (region-active-p): Fix doc to say non-nil.
  
 -2015-01-13  Juri Linkov  <juri@linkov.net>
 +2015-02-24  Samer Masterson  <nosefrog@gmail.com>
  
 -        * comint.el (comint-history-isearch-search)
 -      (comint-history-isearch-wrap): Use field-beginning instead of
 -      comint-line-beginning-position.
 -      (comint-send-input): Go to the end of the field instead of the end
 -      of the line to accept whole multi-line input.
 -      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00305.html
 -      (comint-history-isearch-message): Use field-beginning
 -      instead of comint-line-beginning-position - that's more fixes for
 -      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00305.html
 -      (comint-history-isearch-message): Fix args of isearch-message-prefix.
 +      * eshell/em-hist.el (eshell-hist-parse-word-designator):
 +      Return args joined with " ".
 +      * eshell/em-pred.el (eshell-parse-modifiers): Correct docstring.
 +      (eshell-hist-parse-modifier): Pass mod a list instead of a string
 +      (bug#18960).
  
 -      [Backport]
 +2015-02-24  Karl Fogel  <kfogel@red-bean.com>  (tiny change)
  
 -2015-01-09  Eli Zaretskii  <eliz@gnu.org>
 +      * comint.el (comint-mode-map): Fix obvious typo.
  
 -      * net/net-utils.el (net-utils-run-program, net-utils-run-simple):
 -      On MS-Windows, bind coding-system-for-read to the console output
 -      codepage.  (Bug#19458)
 +2015-02-24  Johan Claesson  <johanclaesson@bredband.net>  (tiny change)
  
 -2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 +      * filecache.el (file-cache-filter-regexps):
 +      Add lock files.  (Bug#19516)
  
 -      * simple.el (line-move-visual): When converting X pixel coordinate
 -      to temporary-goal-column, adjust the value for right-to-left
 -      screen lines.  This fixes vertical-motion, next/prev-line, etc.
 +2015-02-24  Glenn Morris  <rgm@gnu.org>
  
 -2015-01-06  Glenn Morris  <rgm@gnu.org>
 +      * mail/rmailsum.el (rmail-summary-next-all)
 +      (rmail-summary-previous-all, rmail-summary-next-msg):
 +      Fix handling of optional argument.  (Bug#19916)
  
 -      * progmodes/sh-script.el (sh-mode): Doc fix.
 -      (sh-basic-indent-line): Handle electric newline.  (Bug#18756)
 +      * progmodes/f90.el (f90-beginning-of-subprogram)
 +      (f90-end-of-subprogram, f90-match-end):
 +      Handle continued strings where the continuation does not start
 +      with "&" and happens to match our regexp.  (Bug#19809)
  
 -2014-12-14  Steve Purcell  <steve@sanityinc.com>  (tiny change)
 +2015-02-24  Bozhidar Batsov  <bozhidar@batsov.com>
  
 -      * emacs-lisp/package.el (package-menu-mode): Use an extra column
 -      for the "Version" column, to accomodate date-and-time-based versions.
 +      * comint.el (comint-clear-buffer): New command.
 +      (comint-mode-map): Bind `comint-clear-buffer' to 'C-c M-o'.
  
 -2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
 +2015-02-23  Pete Williamson  <petewil0@googlemail.com>  (tiny change)
  
 -      Fix dired quoting bug with "Hit`N`Hide".  Fixes Bug#19498.
 -      * files.el (shell-quote-wildcard-pattern): Also quote "`".
 +      Use ${EXEEXT} more uniformly in makefiles
 +      * Makefile.in (EMACS): Append ${EXEEXT}.
  
 -2015-01-04  Dmitry Gutov  <dgutov@yandex.ru>
 +2015-02-23  Sam Steingold  <sds@gnu.org>
  
 -      Unbreak `mouse-action' property in text buttons.
 -      * button.el (push-button): Fix regression from 2012-12-06.
 +      * files.el (recover-session): Handle `auto-save-list-file-prefix'
 +      being a directory (empty non-directory part).
  
 -2015-01-01  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-23  Magnus Henoch  <magnus.henoch@gmail.com>
  
 -      * tool-bar.el (tool-bar-local-item)
 -      (tool-bar-local-item-from-menu): Call force-mode-line-update to
 -      make sure the tool-bar changes show on display.
 +      * net/sasl.el (sasl-mechanism-alist): Refer to sasl-scram-rfc
 +      instead of sasl-scram-sha-1, as the former is the name that can be
 +      required.
  
 -2014-12-29  Michael Albinus  <michael.albinus@gmx.de>
 +      * net/sasl-scram-rfc.el (sasl-scram-sha-1-steps)
 +      (sasl-scram-sha-1-client-final-message)
 +      (sasl-scram-sha-1-authenticate-server): Move to end of file.
  
 -      Sync with Tramp 2.2.11.
 +2015-02-23  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * net/tramp-compat.el (top): Require cl-macs for Emacs 22.
 -      Make an alias for `default-toplevel-value' if it doesn't exist.
 +      Fix the desired binding for comment-line
 +      * bindings.el (ctl-x-map): Use [?\C-\;] to get the desired binding.
 +      Fixes: bug#19826
  
 -      * net/tramp-smb.el (tramp-smb-handle-copy-directory):
 -      Use `tramp-compat-delete-directory'.
 +2015-02-23  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/trampver.el: Update release number.
 +      * emacs-lisp/macroexp.el (macroexp-parse-body): Handle cl-declare
 +      and :documentation.  Change return value format accordingly.
 +      * emacs-lisp/cl-generic.el (cl--generic-lambda):
 +      * emacs-lisp/pcase.el (pcase-lambda): Adjust accordingly.
 +      * emacs-lisp/cl-macs.el (cl--transform-lambda): Use macroexp-parse-body.
  
 -2014-12-29  Filipp Gunbin  <fgunbin@fastmail.fm>
 +2015-02-23  Dmitry Gutov  <dgutov@yandex.ru>
  
 -      * autorevert.el (auto-revert-handler): Fix auto-revert-tail-mode
 -      for remote files.  (Bug#19449)
 +      Introduce `xref-etags-mode'.
 +      * progmodes/xref.el (xref-etags-mode--saved): New variable.
 +      (xref-etags-mode): New minor mode.  (Bug#19466)
  
 -2014-12-28  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * international/mule.el (define-coding-system): Fix typos in the
 -      doc string.
 +      * dom.el (dom-previous-sibling): New function.
  
 -2014-12-28  Kenichi Handa  <handa@gnu.org>
 +2015-02-21  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * international/mule.el (define-coding-system): Improve the doc
 -      string.
 +      * bindings.el (ctl-x-map): There is no 'C-;'.
 +      For now, make do with 'M-;'; this allows 'make bootstrap' to work.
 +      Perhaps some other binding should be chosen.
 +      Fixes: bug#19826
  
 -2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-21  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * progmodes/python.el (python-shell-buffer-substring): Handle
 -      cornercase when region sent starts at point-min.
 +      * bindings.el (ctl-x-map): Fix `comment-line' binding.  (Bug#19826)
  
 -2014-12-27  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-21  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * language/misc-lang.el (composition-function-table): Add Syriac
 -      characters and also ZWJ/ZWNJ.  See
 -      http://lists.gnu.org/archive/html/help-gnu-emacs/2014-12/msg00248.html
 -      for the details.
 +      * autorevert.el (auto-revert-notify-add-watch)
 +      (auto-revert-notify-handler, auto-revert-buffers): Handle also
 +      buffers without an associated file, like dired buffers.  (Bug#16112)
  
 -2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-21  Dima Kogan  <dima@secretsauce.net>
  
 -      python.el: Fix message when sending region.
 +      * autorevert.el (auto-revert-mode, auto-revert-tail-mode)
 +      (global-auto-revert-mode): Remove (let (auto-revert-use-notify) ... )
 +      wrappers.  Call (auto-revert-buffers) consequently in order to
 +      install handlers.
  
 -      * progmodes/python.el (python-shell-send-region): Rename argument
 -      send-main from nomain.  Fix message.
 -      (python-shell-send-buffer): Rename argument send-main from arg.
 +2015-02-21  Wilson Snyder  <wsnyder@wsnyder.org>
  
 -2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      Sync with upstream verilog-mode revision 0d6420b.
 +      * progmodes/verilog-mode.el (verilog-mode-version): Update.
 +      (vector-skip-list): Remove.
 +      (verilog-auto-inst-port, verilog-auto-inst-port-list)
 +      (verilog-auto-inst, verilog-auto-inst-param):
 +      Use arguments rather than vector-skip.
 +      (verilog-auto-inst-port): Fix AUTOINST interfaces to not show
 +      modport if signal attachment is itself a modport.
 +      Reported by Matthew Lovell.
 +
 +2015-02-21  Reto Zimmermann  <reto@gnu.org>
 +
 +      Sync with upstream vhdl mode v3.37.1.  Add VHDL'08 support.
 +      * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp)
 +      (vhdl-doc-release-notes): Update.
 +      (vhdl-standard): Add VHDL'08 option.
 +      (vhdl-sensitivity-list-all): New option.
 +      (vhdl-directive-keywords): Add psl.
 +      (vhdl-offsets-alist-default, vhdl-mode-abbrev-table-init)
 +      (vhdl-template-construct-alist-init, vhdl-create-mode-menu):
 +      (vhdl-imenu-generic-expression): Add context, directive.
 +      (vhdl-offsets-alist, vhdl-mode, vhdl-doc-keywords): Doc fixes.
 +      (vhdl-template-map-init): Add vhdl-template-context.
 +      (vhdl-mode-syntax-table): Support VHDL'08 block comments.
 +      (vhdl-create-mode-menu): Add some entries.
 +      (vhdl-08-keywords, vhdl-08-types, vhdl-08-attributes)
 +      (vhdl-08-functions, vhdl-08-packages, vhdl-08-directives):
 +      New constants.
 +      (vhdl-directives): New variable.
 +      (vhdl-words-init, vhdl-template-process)
 +      (vhdl-template-replace-header-keywords): Support VHDL'08.
 +      (vhdl-abbrev-list-init): Add vhdl-directives.
 +      (vhdl-in-comment-p, vhdl-in-literal, vhdl-win-il)
 +      (vhdl-forward-syntactic-ws, vhdl-get-syntactic-context)
 +      (vhdl-lineup-comment): Handle block comments and directives.
 +      (vhdl-beginning-of-directive, vhdl-template-context)
 +      (vhdl-template-context-hook): New functions.
 +      (vhdl-libunit-re, vhdl-defun-re, vhdl-begin-p)
 +      (vhdl-corresponding-begin, vhdl-get-library-unit, vhdl-regress-line)
 +      (vhdl-align-declarations, vhdl-beginning-of-block, vhdl-end-of-block)
 +      (vhdl-font-lock-keywords-2, vhdl-get-end-of-unit)
 +      (vhdl-scan-context-clause): Add context.
  
 -      python.el: Cleanup temp files even with eval errors.
 +2015-02-20  Glenn Morris  <rgm@gnu.org>
  
 -      * progmodes/python.el (python-shell-send-file): Make file-name
 -      mandatory.  Fix temp file removal in the majority of cases.
 +      * calendar/solar.el (solar-sunrise-sunset-string):
 +      Shorten message a little.
 +      (sunrise-sunset): Use message rather than a window.  (Bug#19859)
  
 -2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * progmodes/f90.el (f90-keywords-re, f90-procedures-re)
 +      (f90-font-lock-keywords-2): Some F2008 additions.
  
 -      python.el: Handle file encoding for shell.
 +2015-02-19  Dima Kogan  <dima@secretsauce.net>
  
 -      * progmodes/python.el (python-rx-constituents): Add coding-cookie.
 -      (python-shell--save-temp-file): Write file with proper encoding.
 -      (python-shell-buffer-substring): Add coding cookie for detected
 -      encoding to generated content.  Fix blank lines when removing
 -      if-name-main block.
 -      (python-shell-send-file): Handle file encoding.
 -      (python-info-encoding-from-cookie)
 -      (python-info-encoding): New functions.
 +      * autorevert.el (auto-revert-buffers-counter)
 +      (auto-revert-buffers-counter-lockedout): New variables.
 +      (auto-revert-buffers): Increase `auto-revert-buffers-counter'.
 +      (auto-revert-notify-handler): Apply `auto-revert-handler' if not
 +      suppressed by lockout.  (Bug#18958)
  
 -2014-12-24  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
 -      Use `tramp-rsh-end-of-line', it ought to be more robust.
 +      * emacs-lisp/eieio-opt.el (eieio-help-class): `eieio-class-parents'
 +      returns classes, not class names (bug#19891).
  
 -2014-12-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/cl-macs.el (cl-struct-slot-value): Handle a nil type.
  
 -      * progmodes/js.el (js-syntax-propertize): "return" can't be divided
 -      (bug#19397).
 +      * emacs-lisp/smie.el (smie-prec2->grammar): Fix corner case problem.
  
 -2014-12-23  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-18  Kelly Dean  <kelly@prtime.org>
  
 -      * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
 +      * register.el (jump-to-register):
 +      * emacs-lisp/lisp.el (check-parens):
 +      Push mark before goto-char so user doesn't lose his previous place.
  
 -      * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
 -      as end-of-line delimeter for passwords, when running on MS Windows.
 +2015-02-18  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * rect.el (rectangle-mark-mode):
 +      Suppress superfluous "Mark set" message from push-mark.
  
 -      * progmodes/sh-script.el (sh-set-shell): Don't change the global value
 -      of indent-line-function (bug#19433).
 +2015-02-18  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-23  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * help-mode.el (help-go-back, help-go-forward, help-follow):
 +      * simple.el (yank-pop, pop-to-mark-command, exchange-point-and-mark):
 +      * winner.el (winner-redo):
 +      * windmove.el (windmove-do-window-select):
 +      * register.el (jump-to-register, increment-register, insert-register)
 +      (append-to-register, prepend-to-register):
 +      * files.el (find-alternate-file, abort-if-file-too-large, write-file)
 +      (set-visited-file-name):
 +      * emacs-lisp/lisp.el (kill-backward-up-list):
 +      Use user-error instead of error.  (Bug#14480)
  
 -      Fix line numbers on Python shell.
 -      * progmodes/python.el (python-shell--save-temp-file): Do not
 -      append coding cookie.
 -      (python-shell-send-string): Generalize for
 -      python-shell-send-region.
 -      (python--use-fake-loc): Delete var.
 -      (python-shell-buffer-substring): Cleanup fake-loc logic.
 -      (python-shell-send-region): Remove fake-loc logic, simplify.
 +2015-02-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-12-22  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * emacs-lisp/checkdoc.el (checkdoc-show-diagnostics): Don't make bogus
 +      assumptions about window ordering.
  
 -      * progmodes/python.el (python-indent-post-self-insert-function):
 -      Make colon to re-indent only for dedenters, handling
 -      multiline-statements gracefully.
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-21  Michael Albinus  <michael.albinus@gmx.de>
 +      * files.el (insert-file-contents-literally): Fix docstring typo.
  
 -      * net/tramp.el (tramp-handle-insert-file-contents):
 -      Set `find-file-not-found-functions' in case of errors.  (Bug#18623)
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-19  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Process macro
 +      arguments correctly. (Bug#19685)
 +      (define-minor-mode): Clarify docstring.
 +      Clarify mode switch messages for minor modes.  (Bug#19690)
  
 -      * net/tramp-sh.el (tramp-send-command-and-read): New optional
 -      arg MARKER.
 -      (tramp-get-remote-path): Use it.
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/package-x.el (package-upload-buffer-internal):
 +      Create valid tar files.  (Bug#19536)
  
 -      * subr.el (redisplay-dont-pause): Mark as obsolete.
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
  
 -2014-12-17  Michael Albinus  <michael.albinus@gmx.de>
 +      * desktop.el (desktop-read): Conditionally re-enable desktop autosave.
 +      (Bug#19059)
  
 -      * net/tramp.el (tramp-error-with-buffer): Call `message' properly.
 -      (tramp-accept-process-output): Use nil as argument for
 -      `accept-process-output', when there is a gateway prepended.
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
  
 -      * net/tramp-gw.el (tramp-gw-open-connection): Suppress traces in
 -      wrong debug buffer.
 -      (tramp-gw-open-connection): Set process coding system 'binary.
 -      (tramp-gw-open-network-stream): Handle HTTP error 403.
 +      * help-mode.el (help-do-xref): Prevent duplicated display of Info
 +      buffer, and prevent interference with existing buffer.  (Bug#13190)
  
 -      * net/tramp-sh.el (tramp-compute-multi-hops): Suppress traces in
 -      wrong debug buffer.
 -      (tramp-maybe-open-connection): Set connection property "gateway".
 +2015-02-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -2014-12-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      python.el: Do not deactivate mark on shell fontification.  (Bug#19871)
  
 -      * subr.el (sit-for): Tweak docstring (bug#19381).
 +      * progmodes/python.el (python-shell-font-lock-post-command-hook):
 +      Do not deactivate mark on fontification.
  
 -2014-12-15  Dmitry Gutov  <dgutov@yandex.ru>
 +2015-02-16  Ivan Shmakov  <ivan@siamics.net>
  
 -      * vc/vc-git.el (vc-git-after-dir-status-stage): Move `up-to-date'
 -      stage to after `diff-index' (bug#19386).
 +      * net/eww.el: Fix desktop support.  (Bug#19226)
 +      (eww-mode): Add autoload cookie.
 +      (eww-restore-desktop): Use inhibit-read-only.
  
 -2014-12-14  João Távora  <joaotavora@gmail.com>
 +      * net/eww.el (eww-suggest-uris): Add autoload cookie, so that
 +      add-hook works correctly even if the file is not yet loaded.
  
 -      * textmodes/tex-mode.el (tex-insert-quote): Consider and respect
 -      `electric-pair-mode' (bug#19356).
 +2015-02-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-12-12  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/eieio.el (defclass): Use make-instance rather than
 +      eieio-constructor.
 +      (set-slot-value): Mark as obsolete.
 +      (eieio-object-class-name): Improve call to eieio-class-name.
 +      (eieio-slot-descriptor-name, eieio-class-slots): New functions.
 +      (object-slots): Use it.  Declare obsolete.
 +      (eieio-constructor): Merge it with `make-instance'.
 +      (initialize-instance): Use `dolist'.
 +      (eieio-override-prin1, eieio-edebug-prin1-to-string):
 +      Use eieio--class-print-name.
  
 -      * simple.el (password-word-equivalents): Add "passcode", used for
 -      numeric secrets like PINs or RSA tokens.
 +      * emacs-lisp/eieio-core.el (eieio--class-print-name): New function.
 +      (eieio-class-name): Make it do what the docstring claims.
 +      (eieio-defclass-internal): Simplify since `prots' isn't used any more.
 +      (eieio--slot-name-index): Simplify accordingly.
 +      (eieio-barf-if-slot-unbound): Pass the class object rather than its
 +      name to `slot-unbound'.
  
 -2014-12-10  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/eieio-base.el (make-instance): Add a method here rather
 +      than on eieio-constructor.
  
 -      * net/tramp-sh.el (tramp-get-remote-path): Use a login shell in
 -      order to determine `tramp-own-remote-path'.
 +2015-02-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-12-09  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * emacs-lisp/cl-macs.el (cl-defstruct): Keep type=nil by default.
 +      * emacs-lisp/cl-preloaded.el (cl-struct-define): Add sanity checks
 +      about relationship between `type', `named', and `slots'.
 +      * emacs-lisp/cl-generic.el (cl--generic-struct-tagcode): Adjust to new
 +      value of `cl-struct-type' property.
  
 -      * progmodes/python.el (python-shell-parse-command):
 -      Quote `python-shell-interpreter`.  (Bug#19289)
 +2015-02-15  Jérémy Compostella  <jeremy.compostella@gmail.com>
  
 -2014-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp-sh.el (tramp-remote-process-environment): Disable paging
 +      with PAGER=cat.  (Bug#19870)
  
 -      * progmodes/sh-script.el (sh-smie-sh-rules): Go back to the beginning
 -      of the whole pipe when indenting an opening keyword after a |.
 -      Generalize this treatment to opening keywords like "while" (bug#18031).
 +2015-02-14  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -2014-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/package.el (package-read-all-archive-contents):
 +      Don't build the compatibility table.
 +      (package-refresh-contents, package-initialize): Do build the
 +      compatibility table.
 +      (package--build-compatibility-table): New function.
 +      (describe-package-1): Describe why a package is incompatible.
  
 -      * simple.el (newline): Place the hook buffer-locally,
 -      to make sure it's first.
 +2015-02-14  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * progmodes/prog-mode.el (prettify-symbols--compose-symbol):
 -      Fix handling of symbols with different syntax at beginning/end or with
 -      symbol rather than word syntax.
 +      * emacs-lisp/cl-preloaded.el (cl-struct-define): Register as children
 +      of the parent.
 +      (cl--assertion-failed): New function.
 +      (cl-assertion-failed): Move in from cl-lib.el.
  
 -2014-11-30  Eli Zaretskii  <eliz@gnu.org>
 +      * emacs-lisp/cl-macs.el (cl-defstruct): Don't generate code to register
 +      as children of its parents.
 +      (cl--make-type-test, cl--compiler-macro-typep): Remove functions.
 +      (cl-typep): Reimplement using define-inline.
 +      (cl-assert): Use cl--assertion-failed.
 +      (cl-struct-slot-value): Use define-inline.
  
 -      * simple.el (line-move): If noninteractive, call line-move-1, not
 -      forward-line, since the former is compatible with line-move-visual
 -      both in terms of the column to which it moves and the return
 -      value.  (Bug#19211)
 +      * emacs-lisp/cl-lib.el: Move autoloaded code to cl-preload.
  
 -2014-11-27  Stephen Berman  <stephen.berman@gmx.net>
 -          Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * textmodes/flyspell.el (flyspell-word): Defvar (bug#19844).
 +      (flyspell-generic-check-word-p): Mark as obsolete.
  
 -      * outline.el (outline-move-subtree-down): Make sure we can move
 -      forward to find the end of the subtree and the insertion point
 -      (bug#19102).
 +2015-02-13  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -2014-11-27  Leonard Randall  <leonard.a.randall@gmail.com>
 +      * emacs-lisp/package.el (package--compatibility-table): New var.
 +      (package--add-to-compatibility-table): New function.
 +      (package-read-all-archive-contents): Populate compatibility table.
 +      (package--incompatible-p): Also look in dependencies.
 +      (describe-package-1): Fix "incompat" handling.
  
 -      * textmodes/reftex-parse.el (reftex-using-biblatex-p): Make search
 -      for comment lines non-greedy and stopping at newlines to fix stack
 -      overflows with large files. [Backport]
 +2015-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
  
 -2014-11-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * net/rfc2104.el: Moved here from lisp/gnus.
  
 -      * progmodes/python.el (python-shell-completion-setup-code):
 -      Use __builtin__ module (or builtins in Python 3) and catch all errors
 -      when importing readline and rlcompleter.
 +2015-02-13  Magnus Henoch  <magnus.henoch@gmail.com>
  
 -2014-11-26  Stephen Berman  <stephen.berman@gmx.net>
 +      * net/sasl-scram-rfc.el: New file.
  
 -      * calendar/todo-mode.el: Handle calling revert-buffer (bug#19187).
 -      (todo-revert-buffer): New function.
 -      (todo-modes-set-1): Use it as the buffer-local value of
 -      revert-buffer-function.
 +      * net/sasl.el (sasl-mechanisms): Remove SCRAM-MD5.
 +      Add SCRAM-SHA-1 first.
 +      (sasl-mechanism-alist): Remove SCRAM-MD5 entry.  Add SCRAM-SHA-1
 +      entry (bug#17636).
  
 -2014-11-26  Stephen Berman  <stephen.berman@gmx.net>
 +2015-02-13  Lars Ingebrigtsen  <larsi@gnus.org>
  
 -      * calendar/todo-mode.el (todo-mode): If called interactively, just
 -      display a message saying to call todo-show to enter Todo mode
 -      (Bug#19112).
 +      * net/shr.el (shr-tag-li): Speed up rendering pages with lots of
 +      <ul>.
  
 -2014-11-24  Dmitry Gutov  <dgutov@yandex.ru>
 +2015-02-12  Oleh Krehel  <ohwoeowho@gmail.com>
  
 -      * vc/vc-hg.el (vc-hg-dir-status-files): Include ignored files.
 -      (Bug#18579)
 +      * progmodes/gdb-mi.el (gdb-display-io-nopopup): New defcustom.
 +      (gdb-inferior-filter): Don't pop up the buried output buffer when
 +      `gdb-display-io-nopopup' is non-nil.
  
 -      * vc/vc-bzr.el (vc-bzr-after-dir-status): Don't skip ignored
 -      files.  (Bug#18579)
 +2015-02-12  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -2014-11-23  Michael Albinus  <michael.albinus@gmx.de>
 +      python.el: Allow killing shell buffer if process is dead.  (Bug#19823)
  
 -      * textmodes/makeinfo.el (makeinfo-buffer): Make it work also for
 -      remote `buffer-file-name'.
 +      * progmodes/python.el (python-shell-font-lock-kill-buffer):
 +      Don't require a running process.
 +      (python-shell-font-lock-post-command-hook): Fontify only if the
 +      shell process is running.
  
 -2014-11-23  Leo Liu  <sdl.web@gmail.com>
 +2015-02-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * calendar/diary-lib.el (calendar-mark-1): Fix thinko.
 +      * hi-lock.el (hi-lock-unface-buffer): Don't call
 +      font-lock-remove-keywords if not needed (bug#19796).
  
 -2014-11-22  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-11  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      Set PYTHONUNBUFFERED on shell startup.
 +      * emacs-lisp/package.el (package-install): Invert the second
 +      argument, for better backwards compatibility.
 +      (package-install-button-action, package-reinstall)
 +      (package-menu-execute): Account for the change.
  
 -      * progmodes/python.el (python-shell-unbuffered): New var.
 -      (python-shell-calculate-process-environment): Use it.
 +2015-02-11  Nicolas Petton <nicolas@petton.fr>
  
 -2014-11-22  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/seq.el (seq-reverse): Add a backward-compatible
 +      version of seq-reverse that works on sequences in Emacs 24.
 +      Bump seq.el version to 1.2.
  
 -      * net/tramp.el (tramp-action-password): Clean password on subsequent
 -      attempts even if there was no wrong password indication.  (Bug#19047)
 +2015-02-11  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * net/tramp-sh.el (tramp-get-remote-locale): Return "LC_ALL=C" as
 -      fallback.
 -      (tramp-open-connection-setup-interactive-shell): No need to check
 -      for nil as `tramp-get-remote-locale' return value.
 +      * emacs-lisp/package.el (package--incompatible-p): New function.
 +      Return non-nil if PKG has no chance of being installable.
 +      (package--emacs-version-list): New variable.
 +      (describe-package-1, package-desc-status)
 +      (package-menu--print-info, package-menu--status-predicate):
 +      Account for the "incompat" status.
  
 -2014-11-21  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-11  Martin Rudalics  <rudalics@gmx.at>
  
 -      * vc/vc-git.el (vc-git-command, vc-git--call):
 -      Bind coding-system-for-read and coding-system-for-write to
 -      vc-git-commits-coding-system.
 -      (vc-git-previous-revision): Use "~1" instead of "^", since the
 -      latter is a special character for MS-Windows system shells.
 +      * frame.el (toggle-frame-maximized, toggle-frame-fullscreen):
 +      Rename frame parameter `maximized' to `fullscreen-restore'.
 +      Restore fullwidth/-height after fullboth state.  Update doc-strings.
  
 -2014-11-20  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-11  Lars Ingebrigtsen  <larsi@gnus.org>
  
 -      Improve XEmacs compatibility.
 +      * net/shr.el (shr-insert): Make sure the space inserted has the
 +      right font (for width).
 +      (shr-fill-line): Preserve background colours when indenting/folding.
 +      (shr-ensure-paragraph): Don't insert a new paragraph as the first
 +      item in a <li>.
  
 -      * net/tramp.el (tramp-autoload-file-name-handler):
 -      Wrap `temporary-file-directory' by `symbol-value', it doesn't
 -      exist in XEmacs.
 -      (tramp-read-passwd): Don't use `with-timeout-suspend' and
 -      `with-timeout-unsuspend' if they don't exist, like in XEmacs.
 -      (tramp-time-less-p, tramp-time-subtract): Remove functions.
 -      (tramp-handle-file-newer-than-file-p, tramp-time-diff):
 -      * net/tramp-adb.el (tramp-adb-ls-output-time-less-p):
 -      * net/tramp-cache.el (tramp-get-file-property):
 -      * net/tramp-smb.el (tramp-smb-handle-insert-directory):
 -      Use `time-less-p' and `time-subtract, respectively.
 +2015-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
  
 -      * net/tramp-adb.el (top): Do not require time-date.el.
 +      * net/shr.el (shr-use-fonts): New variable.
 +      (shr-fill-text): Rename from "fold".
 +      (shr-pixel-column, shr-pixel-region, shr-string-pixel-width):
 +      New functions.
 +      (shr-insert): Just insert, don't fill the text.  Filling is now
 +      done afterwards per display unit.
 +      (shr-fill-lines, shr-fill-line): New functions to fill text on a
 +      per-unit base.
 +      (shr-find-fill-point): Take a "beginning" parameter.
 +      (shr-indent): Indent using the :width display parameter when using
 +      fonts.
 +      (shr-parse-style): Ignore "inherit" values, since we already do that.
 +      (shr-tag-img): Remove the insertion states.
 +      (shr-tag-blockquote): New-style filling.
 +      (shr-tag-dd): Ditto.
 +      (shr-tag-li): Ditto.
 +      (shr-mark-fill): New function to mark lines that need filling.
 +      (shr-tag-h1): Use a larger font.
 +      (shr-tag-table-1): Get the natural and suggested widths in one
 +      rendering.
 +      (shr-tag-table): Create the "fixed" version of the table only once
 +      so that we can cache data in the table.
 +      (shr-insert-table): Get colspan calculations right by having
 +      zero-width columns after colspan ones.
 +      (shr-expand-alignments): New function to make :align-to specs work
 +      right when rendered in one buffer and displayed in another one.
 +      (shr-insert-table-ruler): Use :align-to to get the widths right.
 +      (shr-make-table): Cache more.
 +      (shr-make-table-1): Use the new <td> data layout.
 +      (shr-pixel-buffer-width): New function.
 +      (shr-render-td): Add a caching layer.
 +      (shr-dom-max-natural-width): New function.
 +      (shr-tag-h1): Don't use variable-pitch fonts on fontless rendering.
 +      (shr-tag-tt): New function.
 +      (shr-tag-hr): Compute the right length when using fonts.
 +      (shr-table-widths): Off-by-one error in width computation.
 +      (shr-expand-newlines): Remove dead code.
 +      (shr-insert-table): Extend background colors to the end of the column.
 +      (shr-insert-table): Only copy the background, not underline and
 +      the like.
 +      (shr-face-background): New function.
 +
 +2015-02-10  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      python.el: Improved shell font lock respecting markers.  (Bug#19650)
  
 -      * net/tramp-compat.el (top): Require time-date.el for XEmacs.
 +      * progmodes/python.el
 +      (python-shell-font-lock-get-or-create-buffer): Use special buffer name.
 +      (python-shell-font-lock-with-font-lock-buffer): Enable font lock.
 +      (python-shell-font-lock-post-command-hook): Fontify by copying text
 +      properties from fontified buffer to shell, keeping markers unchanged.
 +      (python-shell-font-lock-turn-off): Fix typo.
 +      (python-util-text-properties-replace-name): Delete function.
  
 -      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 -      Check, whether `utf-8' is a valid coding system.
 +2015-02-09  Nicolas Petton <nicolas@petton.fr>
  
 -2014-11-19  Eli Zaretskii  <eliz@gnu.org>
 +      * emacs-lisp/seq.el (seq-group-by): Improves seq-group-by to
 +      return sequence elements in correct order.
  
 -      * vc/vc.el (vc-retrieve-tag): Doc fix.
 +2015-02-09  Simen Heggestøyl  <simenheg@gmail.com>  (tiny change)
  
 -2014-11-17  Eli Zaretskii  <eliz@gnu.org>
 +      * textmodes/css-mode.el (css-smie-rules): Fix paren indent (bug#19815).
  
 -      * vc/vc-bzr.el (vc-bzr-print-log, vc-bzr-expanded-log-entry):
 -      Don't assume --long is the default for "bzr log", always specify
 -      it explicitly, in case the user defined an alias for 'log' that
 -      uses some other format.
 +2015-02-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * emacs-lisp/cl-generic.el (cl--generic-lambda): Use macroexp-parse-body.
  
 -      * progmodes/python.el (python-eldoc--get-doc-at-point):
 -      Strip shell output before returning.  (bug#18794)
 +      * emacs-lisp/eieio-core.el (eieio-oset-default): Catch the unexpected
 +      case where the default value would be re-interpreted as a form!
  
 -2014-11-16  Dmitry Gutov  <dgutov@yandex.ru>
 +2015-02-09  Christopher Genovese  <genovese@cmu.edu>  (tiny change)
  
 -      Fix indentation before `!=' and after `+='.  Originally reported
 -      in https://github.com/mooz/js2-mode/issues/174.
 -      * progmodes/js.el (js--indent-operator-re): Make assignments and
 -      (in)equality operator a separate case.
 -      (js--continued-expression-p): Escape the second `+' in the regexp.
 +      * help-fns.el (help-fns--signature): Keep doc for keymap.
  
 -2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-02-09  Kelly Dean  <kelly@prtime.org>
  
 -      * window.el (handle-select-window): Deactivate shift-region (bug#19003).
 +      * desktop.el: Save mark-ring less verbosely.
 +      (desktop-var-serdes-funs): New var.
 +      (desktop-buffer-info, desktop-create-buffer): Use it.
 +      (desktop-file-version): Update to 208.
  
 -2014-11-15  Andreas Schwab  <schwab@linux-m68k.org>
 +2015-02-09  Leo Liu  <sdl.web@gmail.com>
  
 -      * version.el (emacs-repository-get-version): Use git rev-parse
 -      instead of git log.
 +      * emacs-lisp/pcase.el (pcase-lambda): New Macro.  (Bug#19814)
  
 -2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * emacs-lisp/lisp-mode.el (el-kws-re): Include `pcase-lambda'.
  
 -      * progmodes/python.el (python-indent-calculate-levels):
 -      Fix indentation behavior multiline dedenter statement.  (Bug#18432)
 +      * emacs-lisp/macroexp.el (macroexp-parse-body): New function.
  
 -2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-08  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * progmodes/python.el (python-indent-region):
 -      Use python-indent-line and skip special cases.  (Bug#18843)
 +      Port to platforms lacking test -a and -o
 +      * Makefile.in (compile-clean):
 +      * net/tramp-sh.el (tramp-find-executable):
 +      Prefer '&&' and '||' to 'test -a' and 'test -o'.
  
 -2014-11-15  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-08  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * vc/vc-hg.el (vc-hg-state): Disable pager.  (Bug#18940)
 +      * newcomment.el (comment-line): Fix missing paren.
  
 -2014-11-15  Peder O. Klingenberg  <peder@klingenberg.no>
 +2015-02-08  Ulrich Müller  <ulm@gentoo.org>
  
 -      * mail/emacsbug.el (report-emacs-bug): Make a better guess at
 -        envelope-from when reporting through sendmail (bug#19054).
 +      * play/gamegrid.el: Update comment to reflect that the
 +      'update-game-score' helper program is now setgid by default.
  
 -2014-11-14  Ivan Andrus  <darthandrus@gmail.com>
 +2015-02-08  David Kastrup  <dak@gnu.org>
  
 -      * progmodes/python.el (python-ffap-module-path):
 -      Use `derived-mode-p' instead of equality test on `major-mode'.
 +      * subr.el (apply-partially): Use lexical binding here.
  
 -2014-11-13  Ulrich Müller  <ulm@gentoo.org>
 +2015-02-08  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * version.el (emacs-repository-get-version): Call `git log'
 -      command with proper format argument (bug#19049).
 +      * newcomment.el (comment-line): New command.
  
 -2014-11-10  Glenn Morris  <rgm@gnu.org>
 +      * bindings.el (ctl-x-map): Bind to `C-x C-;'.
  
 -      * startup.el (command-line): Handle nil elements in load-path.
 +2015-02-08  Oleh Krehel  <ohwoeowho@gmail.com>
  
 -2014-11-08  Glenn Morris  <rgm@gnu.org>
 +      * outline.el (outline-show-entry): Fix one invisible char for the
 +      file's last outline.  Fixes Bug#19493.
  
 -      * emacs-lisp/bytecomp.el (byte-compile-report-error):
 -      Allow the argument to be a string.  Due to the vague doc,
 -      it was already being used this way.
 +2015-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-11-07  Michael Albinus  <michael.albinus@gmx.de>
 +      * subr.el (indirect-function): Change advertised calling convention.
  
 -      * net/tramp.el (tramp-check-cached-permissions): Include hop in
 -      the constructed Tramp file name.  (Bug#18943)
 +2015-02-08  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -2014-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      python.el: Fix completion-at-point.  (Bug#19667)
  
 -      * emulation/cua-base.el (cua--select-keymaps): Use region-active-p
 -      (bug#18952).
 -      (cua-set-mark, cua--pre-command-handler-1,cua--post-command-handler-1):
 -      * emulation/cua-gmrk.el (cua-cancel-global-mark): Same.
 +      * progmodes/python.el
 +      (python-shell-completion-native-get-completions): Force process buffer.
 +      (python-shell-completion-at-point): Handle case where call is not
 +      in a shell buffer.
  
 -2014-11-07  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-08  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      * files.el (file-name-non-special): Wrap the call of
 -      `insert-file-contents' by `unwind-protect', in order to set the
 -      buffer's file name anyway.  (Bug#18891)
 +      python.el: Fix shell font-lock multiline input.  (Bug#19744)
  
 -2014-11-07  Daiki Ueno  <ueno@gnu.org>
 +      * progmodes/python.el
 +      (python-shell-font-lock-post-command-hook): Handle multiline input.
  
 -      * epg.el (epg--list-keys-1): Ignore fields after the 15th field
 -      (bug#18979).  Reported by Hideki Saito.
 +2015-02-08  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -2014-10-18  Alan Mackenzie  <acm@muc.de>
 +      python.el: Make shell font-lock respect markers.  (Bug#19650)
  
 -      Check that a "macro" found near point-min isn't a ## operator.
 -      Fixes bug #18749.  Backported from trunk, 2014-11-05.
 -      * progmodes/cc-engine.el (c-macro-is-genuine-p): New function.
 -      (c-beginning-of-macro): Use the above new function.
 +      * progmodes/python.el (python-shell-font-lock-cleanup-buffer):
 +      Use `erase-buffer`.
 +      (python-shell-font-lock-comint-output-filter-function):
 +      Handle newlines.
 +      (python-shell-font-lock-post-command-hook): Respect markers on
 +      text fontification.
  
 -2014-11-05  Alan Mackenzie  <acm@muc.de>
 +2015-02-07  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      Fix wrong bound to c-font-lock-declarators.  Fixes bug #18948.
 -      * progmodes/cc-fonts.el (c-font-lock-declarations):
 -      Pass "(point-max)" as bound to c-font-lock-declarators, not "limit", as
 -      the buffer is sometimes narrowed to less than "limit" (e.g., in
 -      the presence of macros).
 +      python.el: Keep eldoc visible while typing args.  (Bug#19637)
  
 -2014-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +      * progmodes/python.el (python-eldoc--get-symbol-at-point):
 +      New function based on Carlos Pita <carlosjosepita@gmail.com> patch.
 +      (python-eldoc--get-doc-at-point, python-eldoc-at-point): Use it.
  
 -      * net/tramp.el (tramp-error-with-buffer): Show connection buffer
 -      only when message appeared in minibuffer.  (Bug#18891)
 +2015-02-07  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      * net/tramp-adb.el (tramp-adb-handle-file-attributes):
 -      * net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes):
 -      * net/tramp-sh.el (tramp-sh-handle-file-attributes): Return nil in
 -      case of errors.
 +      Fix hideshow integration.  (Bug#19761)
  
 -2014-11-04  Eli Zaretskii  <eliz@gnu.org>
 +      * progmodes/python.el
 +      (python-hideshow-forward-sexp-function): New function based on
 +      Carlos Pita <carlosjosepita@gmail.com> patch.
 +      (python-mode): Make `hs-special-modes-alist` use it and initialize
 +      the end regexp with the empty string to avoid skipping parens.
  
 -      * jit-lock.el (jit-lock-stealth-fontify): Be tolerant to nil being
 -      returned by load-average.
 +2015-02-07  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -2014-11-04  Michael Albinus  <michael.albinus@gmx.de>
 +      * progmodes/python.el (python-check-custom-command): Do not use
 +      defvar-local for compat with Emacs<24.3.
  
 -      * net/tramp-sh.el (tramp-do-copy-or-rename-file-via-buffer): Don't use
 -      a local copy; setting `inhibit-file-name-handlers' proper might be
 -      more performant.  (Bug#18751)
 +2015-02-07  Martin Rudalics  <rudalics@gmx.at>
  
 -2014-11-04  Glenn Morris  <rgm@gnu.org>
 +      * frame.el (frame-notice-user-settings):
 +      Update `frame-size-history'.
 +      (make-frame): Update `frame-size-history'.
 +      Call `frame-after-make-frame'.
 +      * faces.el (face-set-after-frame-default): Remove call to
 +      frame-can-run-window-configuration-change-hook.
  
 -      * mail/emacsbug.el (report-emacs-bug): No longer include
 -      recent-keys in the report.  (Bug#18900)
 +2015-02-06  Dmitry Gutov  <dgutov@yandex.ru>
  
 -2014-11-03  Michael Albinus  <michael.albinus@gmx.de>
 +      * vc/vc-cvs.el (vc-cvs-dir-status-files): Don't pass DIR to
 +      `vc-cvs-command' (bug#19732).
  
 -      * net/tramp-sh.el (tramp-do-copy-or-rename-file-via-buffer): Use a
 -      local copy of FILENAME, when it is remote.  (Bug#18751)
 +2015-02-06  Nicolas Petton <nicolas@petton.fr>
  
 -2014-11-02  Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/seq.el (seq-mapcat, seq-partition, seq-group-by): New functions.
 +      * emacs-lisp/seq.el (seq-drop-while, seq-take-while, seq-count)
 +      (seq--drop-list, seq--take-list, seq--take-while-list): Better docstring.
  
 -      * net/tramp-adb.el (tramp-adb-handle-process-file): Do not raise
 -      an error when the command fails; the return code must indicate.
 -      (tramp-adb-send-command-and-check): Fix docstring.
 +2015-02-06  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -2014-11-01  Michael Albinus  <michael.albinus@gmx.de>
 +      * doc-view.el (doc-view-kill-proc-and-buffer): Obsolete. Use
 +      `image-kill-buffer' instead.
  
 -      * net/tramp-cache.el (tramp-get-file-property)
 -      (tramp-set-file-property): Check, that `tramp-cache-get-count-*'
 -      and `tramp-cache-set-count-*' are bound.  Otherwise, there might
 -      be compiler warnings.
 +2015-02-06  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
  
 -      * net/tramp-sh.el (tramp-get-remote-uid, tramp-get-remote-gid):
 -      Return -1 respective "UNKNOWN", if uid or gid cannot be determined.
 +      * net/ldap.el (ldap-search-internal): Fix docstring.
  
 -2014-11-01  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-06  Lars Ingebrigtsen  <larsi@gnus.org>
  
 -      * progmodes/compile.el (compilation-mode): Turn off deferred
 -      fontifications locally.  (Bug#18856)
 +      * subr.el (define-error): The error conditions may be constant
 +      lists, so use `append' to concatenate them.
  
 -2014-11-01  Wolfgang Jenkner  <wjenkner@inode.at>
 +2015-02-06  Wolfgang Jenkner  <wjenkner@inode.at>
  
 -      * net/tramp-sh.el (tramp-send-command): Fix the case where the
 -      remote-echo connection property is non-nil (bug#18858).
 +      * net/network-stream.el (network-stream-open-tls): Respect the
 +      :end-of-capability setting.
  
 -2014-11-01  Michael Albinus  <michael.albinus@gmx.de>
 +2015-02-05  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      Backport Tramp changes from trunk.
 +      * emacs-lisp/package.el (package--sort-by-dependence):
 +      New function.  Return PACKAGE-LIST sorted by dependencies.
 +      (package-menu-execute): Use it to delete packages in order.
 +      (package--sort-deps-in-alist): New function.
 +      (package-menu-mark-install): Can mark dependencies.
 +      (package--newest-p): New function.
 +      (package-delete): Don't deselect when deleting an older version of
 +      an upgraded package.
  
 -      * net/tramp.el (tramp-methods): Tweak docstring.
 -      (tramp-file-name-handler): Apply `cons' where appropriate.
 -      (tramp-handle-file-accessible-directory-p): Check for
 -      `file-readable-p' instead of `file-executable-p'.
 -      (tramp-handle-shell-command): Use `display-buffer'.  (Bug#18326)
 -      (tramp-handle-unhandled-file-name-directory): Return "/".
 -      (tramp-check-cached-permissions):
 -      Use `tramp-compat-file-attributes'.
 -      (tramp-call-process): Add new argument VEC.  Adapt callees in all
 -      tramp*.el files.
 +      * emacs-lisp/package.el: Add missing (require 'subr-x)
  
 -      * net/tramp-adb.el (tramp-adb-sh-fix-ls-output): Use `bolp'.
 -      (tramp-adb-handle-write-region): Improve messages.
 -      (tramp-adb-maybe-open-connection): Don't set
 -      `tramp-current-*' variables.
 +2015-02-05  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp-cache.el (tramp-flush-file-function): Simplify check.
 -      Suppress debug messages.
 +      * textmodes/css-mode.el (scss-smie--not-interpolation-p): Vars can be
 +      hyphenated (bug#19263).
  
 -      * net/tramp-ftp.el (top): Remove special handling for URL syntax.
 -      (tramp-ftp-file-name-handler):
 +      * textmodes/css-mode.el (css-fill-paragraph): Fix filling in presence
 +      of variable interpolation (bug#19751).
  
 -      * net/tramp-gvfs.el (tramp-gvfs-methods) <sftp>: Add.
 -      (tramp-gvfs-methods-mounttracker)
 -      (tramp-gvfs-mountlocation-signature): Check `tramp-gvfs-enabled'
 -      during initialization.  (Bug#18774)
 -      (tramp-gvfs-handle-delete-file): Flush file properties, not
 -      directory properties.
 -      (tramp-gvfs-handle-file-attributes): Use `string-to-number' when
 -      reading "unix::mode".
 -      (tramp-gvfs-handle-file-name-all-completions):
 -      Use "-h" option for "gvfs-ls".
 -      (tramp-gvfs-url-file-name): Apply `cons' where appropriate.
 -      `user' and `localname' could be nil.
 -      (tramp-gvfs-send-command): Simplify traces.
 +2015-02-05  Era Eriksson  <era+emacs@iki.fi>
  
 -      * net/tramp-sh.el (vc-handled-backends, vc-bzr-program)
 -      (vc-git-program, vc-hg-program): Declare.
 -      (tramp-methods) <sftp>: Remove.  It has never worked satisfactorily.
 -      (tramp-methods) <nc>: Add new method.
 -      (tramp-methods) <telnet>: Redirect stderr to "/dev/null".
 -      (tramp-methods) <plink, plinkx, pscp, psftp>: Improve
 -      `tramp-login-args'.
 -      (tramp-default-user-alist): Add "nc".
 -      (top): Remove completion function for "sftp".  Add completion
 -      functions for "nc" and "psftp".
 -      (tramp-sh-handle-set-visited-file-modtime):
 -      (tramp-sh-handle-verify-visited-file-modtime): Use `point-at-eol'.
 -      (tramp-do-copy-or-rename-file-out-of-band):
 -      Use cached "remote-copy-args" value, if available.  (Bug#18199)
 -      Tweak docstring.  Implement support for "nc" method.
 -      (tramp-sh-handle-expand-file-name, tramp-local-coding-commands)
 -      (tramp-remote-coding-commands, tramp-call-local-coding-command):
 -      Tweak docstring.
 -      (tramp-sh-handle-start-file-process): Expand `default-directory'.
 -      (tramp-sh-handle-write-region): Tweak error message.
 -      (tramp-sh-handle-vc-registered): Remove backends when the remote
 -      binary does not exist.
 -      (tramp-open-connection-setup-interactive-shell):
 -      Prefer utf-8 coding.  (Bug#17859)
 -      (tramp-find-inline-encoding): Do not raise an error.
 -      (tramp-make-copy-program-file-name): Tweak docstring.  Handle also
 -      the "nc" case.  Quote result also locally.
 -      (tramp-get-remote-id): Check also for "gid".
 -      (tramp-get-remote-python):
 +      * json.el (json-end-of-file): New error (bug#19768).
 +      (json-pop, json-read): Use it.
  
 -      * net/tramp-smb.el (tramp-smb-handle-copy-directory)
 -      (tramp-smb-handle-set-file-acl): Use `start-process'.
 -      (tramp-smb-handle-insert-directory): Use progress reporter.
 -      (tramp-smb-handle-rename-file): Flush also file properties of
 -      FILENAME.
 +2015-02-05  Kelly Dean <kelly@prtime.org>
  
 -      * net/trampver.el: Update release number.
 +      * help-mode.el (help-xref-interned): Pass BUFFER and FRAME to
 +      `describe-variable'.
  
 -2014-11-01  Reuben Thomas  <rrt@sc3d.org>
 +      * help-fns.el (describe-function-or-variable): New function.
  
 -      * net/tramp.el (tramp-handle-file-symlink-p):
 -      * net/tramp-ftp.el (tramp-ftp-file-name-handler): Remove a comment
 -      about VMS, which we no longer support.
 +      * help.el (help-map): Bind `describe-function-or-variable' to o.
 +      (help-for-help-internal): Document o key.
  
 -2014-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-02-05  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * net/tramp-sh.el (tramp-sh-handle-vc-registered): Don't modify
 -      the global vc-handled-backends (bug#18535).
 +      * emacs-lisp/eieio-compat.el (eieio--defmethod): Use new
 +      special (:documentation ...) feature.
 +      * emacs-lisp/eieio-core.el (eieio-make-class-predicate)
 +      (eieio-make-child-predicate): Same.
 +      (eieio-copy-parents-into-subclass): Remove unused arg.
 +      (eieio-defclass-internal): Adjust call accordingly and remove redundant
 +      `pname' var.
 +      (eieio--slot-name-index): Remove unused arg `obj' and adjust all
 +      callers accordingly.
  
 -2014-11-01  Jérémy Compostella  <jeremy.compostella@intel.com>
 -          Michael Albinus  <michael.albinus@gmx.de>
 +      * emacs-lisp/cconv.el (cconv--convert-function):
 +      Add `docstring' argument.
 +      (cconv-convert): Use it to handle the new (:documentation ...) form.
 +      (cconv-analyze-form): Handle the new (:documentation ...) form.
  
 -      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 -      Reduce the amount of set environment variable commands.
 +      * emacs-lisp/bytecomp.el:
 +      (byte-compile-initial-macro-environment): Use macroexp-progn.
 +      (byte-compile-cl-warn): Don't silence use of cl-macroexpand-all.
 +      (byte-compile-file-form-defvar-function): Rename from
 +      byte-compile-file-form-define-abbrev-table.
 +      (defvaralias, byte-compile-file-form-custom-declare-variable): Use it.
 +      (byte-compile): Use byte-compile-top-level rather than
 +      byte-compile-lambda so we can compile non-values.
 +      (byte-compile-form): Add warnings for failed uses of lexical vars via
 +      quoted symbols.
 +      (byte-compile-unfold-bcf): Improve message for failed inlining.
 +      (byte-compile-make-closure): Handle new format of internal-make-closure
 +      for dynamically-generated docstrings.
  
 -2014-11-01  Paul Eggert  <eggert@cs.ucla.edu>
 +      * delsel.el: Deprecate the `kill' option.  Use lexical-binding.
 +      (open-line): Delete like all other commands, instead of killing.
 +      (delete-active-region): Don't define any return any value.
  
 -      * net/tramp-sh.el (tramp-get-remote-touch): Omit unnecessary call to
 -      current-time.
 +      * progmodes/python.el: Try to preserve compatibility with Emacs-24.
 +      (python-mode): Don't assume eldoc-documentation-function has a non-nil
 +      default.
  
 -2014-11-01  Emilio C. Lopes  <eclig@gmx.net>
 +2015-02-04  Sam Steingold  <sds@gnu.org>
  
 -      * net/tramp-sh.el (tramp-get-remote-python): Also search for
 -      executables named "python2" or "python3".
 -      (tramp-get-remote-uid-with-python): Use parentheses around
 -      arguments to `print' to make it compatible with Python 3.
 -      (tramp-get-remote-gid-with-python): Ditto.  (Bug#18118)
 +      * progmodes/python.el (python-indent-calculate-indentation):
 +      Avoid the error when computing top-level indentation.
  
 -2014-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-02-04  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * simple.el (newline): Add assertions to try and help catch bug#18913.
 +      * emacs-lisp/cl-generic.el (cl--generic-member-method): Fix paren typo.
  
 -      * emulation/cua-base.el (cua-delete-region): Use delete-active-region
 -      (bug#18886).
 -      (cua--last-deleted-region-pos, cua--last-deleted-region-text): Remove.
 +      * textmodes/flyspell.el: Use lexical-binding and cl-lib.
 +      (mail-mode-flyspell-verify): Fix last change.
 +      (flyspell-external-point-words, flyspell-large-region):
 +      Avoid add-to-list on local vars.
  
 -2014-10-31  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-04  Tassilo Horn  <tsdh@gnu.org>
  
 -      * Makefile.in (repo-update): Fix a typo and slightly reword
 -      commentary.
 +      * emacs-lisp/package.el (package-installed-p): Fix typo causing
 +      void-variable error.
  
 -2014-10-31  Eric S. Raymond  <esr@thyrsus.com>
 +2015-02-04  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * Makefile.in: Change some production names so they're neutral
 -      about the repository type.
 +      * image-mode.el (image-kill-buffer): New command.
 +      (image-mode-map): Bind it to k.
  
 -2014-10-30  Kim F. Storm  <storm@cua.dk>
 +      * emacs-lisp/package.el (package-delete): Remove package from
 +      `package-selected-packages' even if it can't be deleted.
 +      (package-installed-p): Accept package-desc objects.
 +      (package-install): Can be used to mark dependencies as
 +      selected. When given a package-desc object which is already
 +      installed, the package is not downloaded again, but it is marked
 +      as selected (if it wasn't already).
 +      (package-reinstall): Accept package-desc objects.
  
 -      Restore cua-delete-copy-to-register-0 and M-v command (bug#18886).
 -      * delsel.el (delete-selection-save-to-register)
 -      (delsel--replace-text-or-position): New vars.
 -      (delete-active-region): Use them.
 -      (delete-selection-repeat-replace-region): New command, moved from
 -      cua-base.el.
 -      * emulation/cua-base.el (cua--repeat-replace-text): Remove var.
 -      (cua-repeat-replace-region): Move command to delsel.el.
 -      (cua--init-keymaps): Update binding accordingly.
 -      (cua-mode): Set delete-selection-save-to-register.
 +2015-02-03  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -2014-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * emacs-lisp/package.el (package-delete): Document NOSAVE.
 +      (package--get-deps): delete-dups when ONLY is nil.
 +      (package-autoremove): Warn the user if `package-selected-packages'
 +      is empty.
  
 -      * progmodes/cc-defs.el (c--macroexpand-all): New function (bug#18845).
 -      (c-lang-defconst):
 -      * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use it.
 +      (package--user-selected-p): New function.
 +      (package-delete, package-install, package-install-from-buffer):
 +      Use it
 +      (package-selected-packages): Mention it.
  
 -2014-10-29  Eli Zaretskii  <eliz@gnu.org>
 +      (package-initialize): Don't populate `package-selected-packages'.
 +      (package-install-user-selected-packages, package-autoremove):
 +      Special handling for empty `package-selected-packages'.
 +      (package-install): Fix when PKG is a package-desc.
  
 -      * progmodes/compile.el (compilation-start):
 -      If compilation-scroll-output is non-nil, don't force window-start of
 -      the compilation buffer to be at beginning of buffer.  (Bug#18874)
 +      (package-desc-status): Add "dependency" status to the Package
 +      Menu.
 +      (package-menu--status-predicate, package-menu--print-info)
 +      (package-menu-mark-delete, package-menu--find-upgrades)
 +      (package-menu--status-predicate, describe-package-1): Use it
  
 -2014-10-23  Tassilo Horn  <tsdh@gnu.org>
 +      (package--removable-packages): New function.
 +      (package-autoremove): Use it.
 +      (package-menu-execute): Offer to remove unneeded packages.
  
 -      * doc-view.el (doc-view-open-text): View the document's plain text
 -      in the current buffer instead of a new one.
 -      (doc-view-toggle-display): Handle the case where the current
 -      buffer contains the plain text contents of the document.
 -      (doc-view-initiate-display): Don't switch to fallback mode if the
 -      user wants to view the doc's plain text.  [Backport]
 +      (package--read-pkg-desc, package-tar-file-info): Fix reference to
 +      tar-desc.
  
 -2014-10-23  Eli Zaretskii  <eliz@gnu.org>
 +2015-02-03  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
 -      * startup.el (fancy-about-text): Read the entire tutorial, not
 -      just its first 256 bytes.  (Bug#18760)
 +      * emacs-lisp/package.el (package-reinstall): Don't change package's selected status.
 +      (package-delete): New NOSAVE argument.
  
 -2014-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-02-03  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * emacs-lisp/bytecomp.el: Require cl-extra (bug#18804).
 -      * emacs-lisp/cl-extra.el: Add missing provide.
 +      * net/tramp-sh.el (tramp-histfile-override): Fix docstring.
 +      (tramp-open-shell, tramp-maybe-open-connection): Set also
 +      HISTFILESIZE and HISTSIZE when needed.  (Bug#19731)
  
 -2014-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-02-02  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -      * emacs-lisp/bytecomp.el (byte-compile-and-folded): Optimize case where
 -      all args are copyable (bug#18767).
 -      (=, <, >, <=, >=): Re-enable the optimization.
 +      * emacs-lisp/package.el (package--find-non-dependencies):
 +      New function.
 +      (package-initialize): Use it to populate `package-selected-packages'.
 +      (package-menu-execute): Clean unnecessary `and'.
 +      (package--get-deps): Fix returning duplicates.
 +
 +2015-02-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-histfile-override): Add another choice t.
 +      Use it as default.
 +      (tramp-open-shell, tramp-maybe-open-connection): Support it.
 +      (Bug#19731)
 +
 +2015-02-02  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * emacs-lisp/package.el (package-delete): Remove package from
 +      package-selected-packages.
 +      (package-autoremove): Remove unneeded variable.
 +
 +2015-02-01  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * emacs-lisp/package.el (package-selected-packages): Fix :type
 +      (package-install): Rename ARG to MARK-SELECTED.
 +      (package--get-deps): Fix for indirect dependencies.
 +      (package-used-elsewhere-p): Rename to
 +      (package--used-elsewhere-p): New function.
 +      (package-reinstall, package-user-selected-packages-install)
 +      (package-autoremove): Use sharp-quote.
 +      (package-user-selected-packages-install): Reindent and rename to
 +      (package-install-user-selected-packages): New function.
 +
 +2015-02-01  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * emacs-lisp/package.el: Don't allow deleting dependencies.
 +
 +      (package-used-elsewhere-p): New function.
 +      (package-delete): Use it, return now an error when trying to
 +      delete a package used as dependency by another package.
 +
 +      Add a reinstall package command.
 +      (package-reinstall): New function.
 +
 +      Add a package-autoremove command.
 +      (package-selected-packages): New user var.
 +      (package-install): Add an optional arg to notify interactive use.
 +      Fix docstring. Save installed package to
 +      packages-installed-directly.
 +      (package-install-from-buffer): Same.
 +      (package-user-selected-packages-install): Allow installing all
 +      packages in packages-installed-directly at once.
 +      (package--get-deps): New function.
 +      (package-autoremove): New function.
 +      (package-install-button-action): Call package-install with
 +      interactive arg.
 +      (package-menu-execute): Same but only for only for not installed
 +      packages.
 +
 +2015-01-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (defclass): Use new eieio-make-class-predicate
 +      and eieio-make-child-predicate.
 +      (eieio-class-parents): Use eieio--class-object.
 +      (slot-boundp, find-class, eieio-override-prin1): Avoid class-p.
 +      (slot-exists-p): Use find-class.
 +
 +      * emacs-lisp/eieio-opt.el (eieio-help-class, eieio-help-constructor):
 +      Use find-lisp-object-file-name, help-fns-short-filename and new calling
 +      convention for eieio-class-def.
 +      (eieio-build-class-list): Remove function, unused.
 +      (eieio-method-def): Remove button type, unused.
 +      (eieio-class-def): Inherit from help-function-def.
 +      (eieio--defclass-regexp): New constant.
 +      (find-function-regexp-alist): Use it.
 +      (eieio--specializers-apply-to-class-p): Handle eieio--static as well.
 +      (eieio-help-find-method-definition, eieio-help-find-class-definition):
 +      Remove functions.
  
 -2014-10-20  Santiago Payà i Miralta  <santiagopim@gmail.com>
 +      * emacs-lisp/eieio-core.el (eieio--check-type): Remove.
 +      Use cl-check-type everywhere instead.
 +      (eieio-class-object): Remove, use find-class instead when needed.
 +      (class-p): Don't inline.
 +      (eieio-object-p): Check more thoroughly, so we don't treat cl-structs,
 +      such as eieio classes, as objects.  Don't inline.
 +      (object-p): Mark as obsolete.
 +      (eieio-defclass-autoload, eieio-defclass-internal, eieio-oref)
 +      (eieio--generic-tagcode): Avoid `class-p'.
 +      (eieio-make-class-predicate, eieio-make-child-predicate): New functions.
 +      (eieio-defclass-internal): Use current-load-list rather than
 +      `class-location'.
 +
 +      * emacs-lisp/cl-generic.el (cl--generic-search-method): Fix regexp.
 +
 +2015-01-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s'
 +      since it may be "equivalent" in some sense, yet different (bug#19734).
 +
 +2015-01-30  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * outline.el (outline-font-lock-face): Add docstring.
 +      (outline-invisible-p): Improve docstring.
 +      (outline-invent-heading): Add docstring.
 +      (outline-promote): Improve docstring.
 +      (outline-demote): Improve docstring.
 +      (outline-head-from-level): Improve docstring.
 +      (outline-end-of-heading): Add docstring.
 +      (outline-next-visible-heading): Improve docstring.
 +      (outline-previous-visible-heading): Improve docstring.
 +      (outline-hide-region-body): Improve docstring.
 +      (outline-flag-subtree): Add docstring.
 +      (outline-end-of-subtree): Add docstring.
 +      (outline-headers-as-kill): Improve docstring.
 +
 +2015-01-30  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * outline.el (outline-hide-entry): Rename from `hide-entry'.
 +      (hide-entry): Declare as obsolete.
 +      (outline-show-entry): Rename from `show-entry'.
 +      (show-entry): Declare as obsolete.
 +      (outline-hide-body): Rename from `hide-body'.
 +      (hide-body): Declare as obsolete.
 +      (outline-hide-region-body): Rename from `hide-region-body'.
 +      (hide-region-body): Declare as obsolete.
 +      (outline-show-all): Rename from `show-all'.
 +      (show-all): Declare as obsolete.
 +      (outline-hide-subtree): Rename from `hide-subtree'.
 +      (hide-subtree): Declare as obsolete.
 +      (outline-hide-leaves): Rename from `hide-leaves'.
 +      (hide-leaves): Declare as obsolete.
 +      (outline-show-subtree): Rename from `show-subtree'.
 +      (show-subtree): Declare as obsolete.
 +      (outline-hide-sublevels): Rename from `hide-sublevels'.
 +      (hide-sublevels): Declare as obsolete.
 +      (outline-hide-other): Rename from `hide-other'.
 +      (hide-other): Declare as obsolete.
 +      (outline-show-children): Rename from `show-children'.
 +      (show-children): Declare as obsolete.
 +      (outline-show-branches): Rename from `show-branches'.
 +      (show-branches): Declare as obsolete.
 +
 +2015-01-30  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * outline.el (outline-mode): Clean up docstring.
 +      (font-lock-warning-face): Remove obsolete declaration.
 +      (outline-font-lock-face): Remove obsolete comment.
 +
 +2015-01-30  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * lisp/custom.el (defface): Set `indent' to 1.
 +
 +2015-01-30  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Set `indent' to 1.
 +
 +2015-01-30  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * lisp/files.el (save-buffers-kill-emacs): If `confirm-kill-emacs'
 +      is set, but user has just been asked whether they really want to
 +      kill Emacs (for example with a ‘Modified buffers exist; exit
 +      anyway?’ prompt), do not ask them for another confirmation.
 +
 +2015-01-29  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * lisp/calc/calc-units.el (calc-convert-exact-units): New function.
 +      (calc-convert-units): Check for missing units.
 +      (math-consistent-units-p): Strengthen the test for consistent units.
 +
 +      * lisp/calc/calc-ext.el (calc-init-extensions):  Autoload
 +      `calc-convert-exact-units' and assign it a keybinding.
 +
 +      * lisp/calc/calc-help (calc-u-prefix-help): Add help for the
 +      "un" keybinding.
 +
 +2015-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl.el (cl--function-convert): Simplify.
  
 -      * vc/vc-hg.el (vc-hg-log-graph): New var.
 -      (vc-hg-print-log): Use it.
 -      (vc-hg-root-log-format): Include branch name and bookmarks; ignore
 -      graph output (bug#17515).
 +2015-01-28  Tassilo Horn  <tsdh@gnu.org>
  
 -2014-10-20  Juri Linkov  <juri@jurta.org>
 +      * textmodes/reftex.el (reftex-syntax-table-for-bib): Give ( and )
 +      punctuation syntax since to allow bibtex fields with values such
 +      as {Test 1) and 2)} (bug#19205, bug#19707).
 +      (reftex--prepare-syntax-tables): New function.
 +      (reftex-mode): Use it.
  
 -      * vc/diff-mode.el (diff-refine-changed): Rename from
 -      `diff-refine-change' for consistency with `diff-changed'.
 -      (diff-refine-change): Add obsolete face alias.  (Bug#10181)
 +2015-01-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      * vc/smerge-mode.el (smerge-refined-changed): Rename from
 -      `smerge-refined-change'.
 -      (smerge-refined-change): Add obsolete face alias.
 +      python.el: New non-global state dependent indentation engine.
 +      (Bug#18319, Bug#19595)
 +      * progmodes/python.el (python-syntax-comment-or-string-p):
 +      Accept PPSS as argument.
 +      (python-syntax-closing-paren-p): New function.
 +      (python-indent-current-level)
 +      (python-indent-levels): Mark obsolete.
 +      (python-indent-context): Return more context cases.
 +      (python-indent--calculate-indentation)
 +      (python-indent--calculate-levels): New functions.
 +      (python-indent-calculate-levels): Use them.
 +      (python-indent-calculate-indentation, python-indent-line):
 +      (python-indent-line-function): Rewritten to use new API.
 +      (python-indent-dedent-line): Simplify logic.
 +      (python-indent-dedent-line-backspace): Use `unless`.
 +      (python-indent-toggle-levels): Delete function.
  
 -2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-01-28  Daniel Koning  <dk@danielkoning.com>  (tiny change)
  
 -      * subr.el (call-process-shell-command, process-file-shell-command):
 -      Make the `args' obsolete (bug#18409).
 -      (start-process-shell-command, start-file-process-shell-command):
 -      Use `declare'.
 +      * subr.el (posnp): Correct docstring of `posnp'.
 +      (posn-col-row): Make it work with all mouse position objects.
 +      * textmodes/artist.el (artist-mouse-draw-continously):
 +      Cancel timers if an error occurs during continuous drawing.  (Bug#6130)
  
 -2014-10-20  Juanma Barranquero  <lekktu@gmail.com>
 +2015-01-28  Eli Zaretskii  <eliz@gnu.org>
  
 -      * skeleton.el (skeleton-autowrap): Mark as obsolete.  Doc fix.
 +      * button.el (button-activate, push-button): Doc fix.  (Bug#19628)
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2015-01-28  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * 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.
 +      * filenotify.el (file-notify-descriptors, file-notify-handle-event):
 +      Adapt docstring.
 +      (file-notify--descriptor): New defun.
 +      (file-notify-callback, file-notify-add-watch, file-notify-rm-watch):
 +      Adapt docstring.  Handle multiple values for
 +      `file-notify-descriptors' entries.  (Bug#18880)
  
 -2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-handle-file-notify-rm-watch): Do not check
 +      `file-notify-descriptors', the implementation has been changed.
  
 -      * progmodes/python.el (inferior-python-mode): Use add-hook.
 +2015-01-28  Eli Zaretskii  <eliz@gnu.org>
  
 -      * Makefile.in (AUTOGEN_VCS): Remove emulation/tpu-edt.el.
 +      * net/net-utils.el (net-utils-run-program, net-utils-run-simple):
 +      On MS-Windows, bind coding-system-for-read to the console output
 +      codepage.  (Bug#19458)
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2015-01-28  Dmitry Gutov  <dgutov@yandex.ru>
  
 -      * emulation/crisp.el, emulation/tpu-edt.el, emulation/tpu-extras.el:
 -      * emulation/tpu-mapper.el, emulation/vi.el, emulation/vip.el:
 -      * emulation/ws-mode.el: Move to obsolete/.  [Backport]
 +      Unbreak `mouse-action' property in text buttons.
 +      * button.el (push-button): Fix regression from 2012-12-06.
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2015-01-28  Glenn Morris  <rgm@gnu.org>
  
 -      * cus-start.el (history-length): Bump :version.  [Backport]
 +      * progmodes/sh-script.el (sh-mode): Doc fix.
 +      (sh-basic-indent-line): Handle electric newline.  (Bug#18756)
  
 -2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2015-01-28  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * obsolete/cc-compat.el: Make obsolete (bug#18561).
 +      Fix dired quoting bug with "Hit`N`Hide".  Fixes Bug#19498.
 +      * files.el (shell-quote-wildcard-pattern): Also quote "`".
  
 -      * epg-config.el (epg-gpg-program): Don't use absolute names by default.
 +2015-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Tighten up the tagcode used for eieio and cl-struct objects.
 +      * loadup.el: Load cl-preloaded.
 +      * emacs-lisp/eieio-core.el (eieio-defclass-internal): Set the function
 +      slot of the tag symbol to :quick-object-witness-check.
 +      (eieio-object-p): Use :quick-object-witness-check.
 +      (eieio--generic-tagcode): Use cl--generic-struct-tag.
 +      * emacs-lisp/cl-preloaded.el: New file.
 +      * emacs-lisp/cl-macs.el (cl--bind-inits): Remove, unused.
 +      (cl--transform-lambda, cl-destructuring-bind): Remove cl--bind-inits.
 +      (cl--make-usage-args): Strip away &aux args.
 +      (cl-case, cl-typecase, cl--parse-loop-clause): Use macroexp-let2.
 +      (cl-the, cl-check-type): Use macroexp-let2 and cl-typep.
 +      (cl-defstruct): Use `declare' and cl-struct-define.
 +      * emacs-lisp/cl-generic.el (cl--generic-struct-tag): New function.
 +      (cl--generic-struct-tagcode): Use it to tighten the tagcode.
  
 -      * emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
 -      case (bug#18767).
 +2015-01-27  Katsumi Yamaoka  <yamaoka@jpl.org>
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +      * emacs-lisp/cl.el (cl--function-convert):
 +      Merge cache that cl--labels-convert adds (bug#19699).
  
 -      * Version 24.4 released.
 +2015-01-27  Ivan Shmakov  <ivan@siamics.net>
  
 -2014-10-15  Alan Mackenzie  <acm@muc.de>
 +      * tar-mode.el: Allow for adding new archive members.  (Bug#19274)
 +      (tar-new-regular-file-header, tar--pad-to, tar--put-at)
 +      (tar-header-serialize): New functions.
 +      (tar-current-position): Split from tar-current-descriptor.
 +      (tar-current-descriptor): Use it.
 +      (tar-new-entry): New command.
 +      (tar-mode-map): Bind it.
  
 -      * cus-edit.el (custom-command-apply): Specify the return value in
 -      the doc string.
 -      (Custom-reset-standard): Save custom-file (e.g. .emacs) only when
 -      custom-command-apply has returned non-nil.
 +2015-01-27  Sam Steingold  <sds@gnu.org>
  
 -2014-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/python.el (python-check-custom-command): Buffer local
 +      because it usually includes the buffer name.
 +      (python-check-command): Set to epylint when pyflakes is not available.
  
 -      * emacs-lisp/lisp.el (lisp--local-variables-1): Handle `quote'.
 -      Backported (bug#18688).
 +2015-01-27  Artur Malabarba  <bruce.connor.am@gmail.com>
  
 -2014-10-14  Eli Zaretskii  <eliz@gnu.org>
 +      * isearch.el (isearch-process-search-char): Add docstring.
 +
 +2015-01-27  Oleh Krehel  <ohwoeowho@gmail.com>
 +
 +      * emacs-lisp/derived.el (define-derived-mode): Declare indent 3.
 +
 +2015-01-27  Katsumi Yamaoka  <yamaoka@jpl.org>
 +
 +      * emacs-lisp/cl.el (cl--function-convert): Run cl--labels-convert
 +      for the case cl-flet or cl-labels form is wrapped with lexical-let
 +      (bug#19613).
 +
 +2015-01-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-generic.el (cl--generic-method): New struct.
 +      (cl--generic): The method-table is now a (list-of cl--generic-method).
 +      (cl--generic-member-method): New function.
 +      (cl-generic-define-method): Use it.
 +      (cl--generic-build-combined-method, cl--generic-cache-miss):
 +      Adapt to new method-table.
 +      (cl--generic-no-next-method-function): Add `method' argument.
 +      (cl-generic-call-method): Adapt to new method representation.
 +      (cl--generic-cnm-sample, cl--generic-nnm-sample): Adjust.
 +      (cl-find-method, cl-method-qualifiers): New functions.
 +      (cl--generic-method-info): Adapt to new method representation.
 +      Return a string for the qualifiers.
 +      (cl--generic-describe):
 +      * emacs-lisp/eieio-opt.el (eieio-help-class): Adjust accordingly.
 +      (eieio-all-generic-functions, eieio-method-documentation):
 +      Adjust to new method representation.
 +
 +      * emacs-lisp/eieio-compat.el (eieio--defmethod): Use cl-find-method.
 +
 +2015-01-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-generic.el: Add a method-combination hook.
 +      (cl-generic-method-combination-function): New var.
 +      (cl--generic-lambda): Remove `with-cnm' arg.
 +      (cl-defmethod): Change accordingly.
 +      (cl-generic-define-method): Don't check qualifiers validity.
 +      Preserve all qualifiers in `method-table'.
 +      (cl-generic-call-method): New function.
 +      (cl--generic-nest): Remove (morph into cl-generic-call-method).
 +      (cl--generic-build-combined-method): Adjust to new format of method-table
 +      and use cl-generic-method-combination-function.
 +      (cl--generic-standard-method-combination): New function, extracted from
 +      cl--generic-build-combined-method.
 +      (cl--generic-cnm-sample): Adjust to new format of method-table.
 +
 +      * emacs-lisp/eieio-compat.el (eieio--defmethod): Use () qualifiers
 +      instead of :primary.
 +
 +      * emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke):
 +      Remove obsolete function.
 +
 +2015-01-26  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-make-table-1): Fix colspan typo.
 +      (shr-make-table-1): Add comments.
 +      (shr-make-table-1): Make colspan display more sensibly.
 +
 +      * net/eww.el (eww-add-bookmark): Fix prompt and clean up the code
 +      slightly.
 +
 +2015-01-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-generic.el (cl--generic-no-next-method-function): New fun.
 +      (cl--generic-build-combined-method, cl--generic-nnm-sample): Use it
 +      (bug#19672).
 +      (cl--generic-typeof-types): Add support for `sequence'.
 +      (cl-defmethod): Add non-keywords in the qualifiers.
 +
 +2015-01-25  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * emacs-lisp/find-func.el (find-function-regexp): Don't match
 +      `defgroup' (regression from the previous change here).
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el (ldap-search-internal): Mention binddn in invalid
 +      credentials error message.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el (ldap-password-read): Validate password before
 +      caching it.
 +      (ldap-search-internal): Handle ldapsearch error conditions.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el (ldap-password-read): Handle password-cache being nil.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc.el (eudc-expand-inline): Always restore former server
 +      and protocol.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudcb-ldap.el: Don't nag the user in case a default base is
 +      provided by the LDAP system configuration file.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc.el (eudc-format-query): Preserve the
 +      eudc-inline-query-format ordering of attributes in the returned list.
 +      * net/eudcb-ldap.el (eudc-ldap-format-query-as-rfc1558):
 +      Append the LDAP wildcard character to the last attribute value.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudcb-ldap.el (eudc-ldap-cleanup-record-simple):
 +      Downcase field names of LDAP results.
 +      (eudc-ldap-cleanup-record-filtering-addresses): Likewise.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el (ldap-ldapsearch-password-prompt): New defcustom.
 +      (ldap-search-internal): Send password to ldapsearch through a pipe
 +      instead of via the command line.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el: Require password-cache.
 +      (ldap-password-read): New function.
 +      (ldap-search-internal): Call ldap-password-read when it is
 +      configured to be called.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc-vars.el (eudc-expansion-overwrites-query):
 +      Change default to nil.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc.el (eudc-expand-inline): Ignore text properties of
 +      string-to-expand.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc-vars.el (eudc-inline-expansion-format): Default to a
 +      format that includes first name and surname.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc-vars.el (eudc-inline-query-format): Change default to
 +      query email and first name instead of surname.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ldap.el (ldap-search-internal): Support new-style LDAP URIs.
 +
 +2015-01-23  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/eudc-vars.el (eudc-server): Adjust docstring to mention
 +      eudc-server-hotlist.
 +      (eudc-server-hotlist): Move from eudc.el and make defcustom.
 +      * net/eudc.el (eudc-server-hotlist): Move to eudc-vars.el.
 +      (eudc-set-server): Allow setting protocol to nil.
 +      (eudc-expand-inline): Support hotlist-only expansions when server
 +      is not set.
 +
 +2015-01-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-generic.el (cl-no-primary-method): New fun and error.
 +      (cl--generic-build-combined-method): Use it.
 +
 +2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't downcase system diagnostics' first letters
 +      * emacs-lisp/bytecomp.el (byte-compile-file):
 +      * ffap.el (find-file-at-point):
 +      * files.el (insert-file-1):
 +      * net/ange-ftp.el (ange-ftp-barf-if-not-directory)
 +      (ange-ftp-copy-file-internal):
 +      * progmodes/etags.el (visit-tags-table):
 +      Keep diagnostics consistent with system's.
 +      * ffap.el (ffap-machine-p):
 +      Ignore case while comparing diagnostics.
 +
 +2015-01-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * help.el (help-make-usage): Don't turn a "_" arg into an empty-string
 +      arg (bug#19645).
 +      * emacs-lisp/cl-generic.el (cl--generic-lambda): Don't confuse a string
 +      body with a docstring.
 +
 +2015-01-22  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref-location-marker, xref-location-group):
 +      Use `cl-defgeneric' and `cl-defmethod' instead of the EIEIO
 +      counterparts.
 +
 +      * progmodes/etags.el (xref-location-marker): Same.
 +
 +      * progmodes/xref.el (xref--current): Rename from `xref--selected'.
 +      (xref--inhibit-mark-current): Rename from
 +      `xref--inhibit-mark-selected'.  Update the usages.
 +      (xref-quit): Reword the docstring.  Kill buffers after quitting
 +      windows instead of before.
 +      (xref--insert-xrefs): Tweak help-echo.
 +      (xref--read-identifier-history, xref--read-pattern-history):
 +      New variables.
 +      (xref--read-identifier, xref-find-apropos): Use them.
 +
 +2015-01-21  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * play/gamegrid.el (gamegrid-add-score-with-update-game-score):
 +      Allow the 'update-game-score' helper program to run suid or sgid.
 +
 +2015-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el: Use cl-defmethod.
 +      (defclass): Generate cl-defmethod calls; use setf methods for :accessor.
 +      (eieio-object-name-string): Declare as obsolete.
 +
 +      * emacs-lisp/eieio-opt.el: Adapt to cl-generic.
 +      (eieio--specializers-apply-to-class-p): New function.
 +      (eieio-all-generic-functions): Use it.
 +      (eieio-method-documentation): Use it as well as cl--generic-method-info.
 +      Change format of return value.
 +      (eieio-help-class): Adapt accordingly.
 +
 +      * emacs-lisp/eieio-compat.el (eieio--defmethod): Avoid no-next-method
 +      errors when there's a `before' but no `primary' (bug#19645).
 +      (next-method-p): Return nil rather than signal an error.
 +      (eieio-defgeneric): Remove bogus (fboundp 'method).
 +
 +      * emacs-lisp/eieio-speedbar.el:
 +      * emacs-lisp/eieio-datadebug.el:
 +      * emacs-lisp/eieio-custom.el:
 +      * emacs-lisp/eieio-base.el: Use cl-defmethod.
 +
 +      * emacs-lisp/cl-generic.el (cl-defgeneric): Add support for `declare'.
 +      (cl--generic-setf-rewrite): Setup the setf expander right away.
 +      (cl-defmethod): Make sure the setf expander is setup before we expand
 +      the body.
 +      (cl-defmethod): Silence byte-compiler warnings.
 +      (cl-generic-define-method): Shuffle code to change return value.
 +      (cl--generic-method-info): New function, extracted from
 +      cl--generic-describe.
 +      (cl--generic-describe): Use it.
 +
 +2015-01-21  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref--xref-buffer-mode-map): Define before
 +      the major mode.  Remap `quit-window' to `xref-quit'.
 +      (xref--xref-buffer-mode): Inherit from special-mode.
 +
 +      xref: Keep track of temporary buffers  (bug#19466).
 +      * progmodes/xref.el (xref--temporary-buffers, xref--selected)
 +      (xref--inhibit-mark-selected): New variables.
 +      (xref--mark-selected): New function.
 +      (xref--show-location): Maybe add the buffer to
 +      `xref--temporary-buffers', add `xref--mark-selected' to
 +      `buffer-list-update-hook' there.
 +      (xref--window): Add docstring.
 +      (xref-quit): Rename from `xref--quit'.  Update both references.
 +      Add KILL argument.  When it's non-nil, kill the temporary buffers
 +      that haven't been selected by the user.
 +      (xref--show-xref-buffer): Change the second argument to alist,
 +      extract the values for `xref--window' and
 +      `xref--temporary-buffers' from it.  Add `xref--mark-selected' to
 +      `buffer-list-update-hook' to each buffer in the list.
 +      (xref--show-xrefs): Move the logic of calling `xref-find-function'
 +      here.  Save the difference between buffer lists before and after
 +      it's called as "temporary buffers", and `pass it to
 +      `xref-show-xrefs-function'.
 +      (xref--find-definitions, xref-find-references)
 +      (xref-find-apropos): Update accordingly.
 +
 +2015-01-20  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * emacs-lisp/package.el (package-dir-info): Fix `while' logic.
 +
 +2015-01-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-generic.el: Remove.
 +      (defgeneric, defmethod): Move to eieio-compat.el.  Mark obsolete.
 +      * emacs-lisp/eieio-compat.el: New file.
 +      * emacs-lisp/eieio.el: Don't require eieio-generic any more.
 +      * emacs-lisp/eieio-core.el (eieio--slot-originating-class-p):
 +      Remove unused function.
 +      (eieio-defclass): Move to eieio-compat.el.
 +      * emacs-lisp/macroexp.el (macroexp-macroexpand): New function.
 +      (macroexp--expand-all): Use it.
 +      * emacs-lisp/bytecomp.el (byte-compile-recurse-toplevel): Here too.
 +
 +2015-01-20  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * emacs-lisp/eldoc.el (eldoc-documentation-function): Describe how
 +      major modes should use `add-function' to alter value of the variable.
 +      * hexl.el (hexl-mode):
 +      * ielm.el (inferior-emacs-lisp-mode):
 +      * progmodes/cfengine.el (cfengine3-mode):
 +      * progmodes/elisp-mode (emacs-lisp-mode):
 +      * progmodes/octave.el (octave-mode):
 +      * progmodes/python.el (python-mode):
 +      * simple.el (read--expression): Set `eldoc-documentation-function'
 +      using `add-function' so the default value is always used.
 +
 +      * descr-text.el (describe-char-eldoc): New function returning
 +      basic Unicode codepoint information (e.g. name) about character
 +      at point.  It is meant to be used as a default value of the
 +      `eldoc-documentation-function' variable.
 +      (describe-char-eldoc--format, describe-char-eldoc--truncate):
 +      New helper functions for `describe-char-eldoc' function.
 +
 +2015-01-20  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/paragraphs.el (sentence-end-base): Include an
 +      ellipsis (…) and interrobang (‽) characters as end of a sentence,
 +      and a closing single quote (’) as an end of a quote.
 +
 +2015-01-20  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/tildify.el (tildify-double-space-undos): A new
 +      variable specifying whether pressing space in `tildify-mode' after
 +      a space has been replaced with hard space undos the substitution.
 +      (tildify-space): Add code branch for handling `tildify-doule-space'.
 +
 +      * textmodes/tildify.el (tildify-space): A new function
 +      which can be used as a `post-self-insert-hook' to automatically
 +      convert spaces into hard spaces.
 +      (tildify-space-pattern): A new variable specifying pattern where
 +      `tildify-space' should take effect.
 +      (tildify-space-predicates): A new variable specifying list of
 +      predicate functions that all must return non-nil for
 +      `tildify-space' to take effect.
 +      (tildify-space-region-predicate): A new functions meant to be
 +      used as a predicate in `tildify-space-predicates' list.
 +      (tildify-mode): A new minor mode enabling `tildify-space' as a
 +      `post-self-insert-hook'
 +
 +2015-01-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * vc/vc-dir.el (vc-dir): Default to repository root, not
 +      default-directory.
 +
 +2015-01-20  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/etags.el (xref-etags-location): New class.
 +      (xref-make-etags-location): New function.
 +      (etags--xref-find-definitions): Use it.
 +      (xref-location-marker): New method implementation.
 +
 +      * progmodes/xref.el: Mention that xref-location is an EIEIO class.
 +      (xref--insert-xrefs): Expand help-echo string.
 +
 +2015-01-19  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * ido.el: Update Customization instructions.
 +
 +2015-01-19  Jonas Bernoulli  <jonas@bernoul.li>
 +
 +      Define Ido keymaps once (bug#17000).
 +      * ido.el (ido-common-completion-map)
 +      (ido-file-dir-completion-map)
 +      (ido-file-completion-map, ido-buffer-completion-map): Set up key
 +      bindings when each variable is defined.
 +      (ido-completion-map): Move definition.
 +      (ido-init-completion-maps): Noop.
 +      (ido-common-initialization): Don't call it.
 +      (ido-setup-completion-map): Improve doc-string, cleanup.
 +
 +2015-01-19  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * cus-dep.el (custom-make-dependencies): Ensure that
 +      default-directory is interpreted as a directory (see bug#19140.)
 +
 +2015-01-19  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref--display-position):
 +      Set `other-window-scroll-buffer'.
 +      (xref-goto-xref): Use `user-error'.
 +
 +2015-01-19  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref--display-history): New variable.
 +      (xref--window-configuration): Remove.
 +      (xref--save-to-history): New function.
 +      (xref--display-position): Use it.  Add new argument.
 +      (xref--restore-window-configuration): Remove.
 +      (xref--show-location, xref-show-location-at-point):
 +      Update accordingly.
 +      (xref--xref-buffer-mode): Don't use `pre-command-hook'.
 +      (xref--quit): New command.
 +      (xref-goto-xref): Use it.
 +      (xref--xref-buffer-mode-map): Bind `q' to it.
 +
 +2015-01-18  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref-goto-xref): Perform the jump even inside
 +      indentation or at eol.
 +
 +2015-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-core.el: Add `subclass' specializer for cl-generic.
 +      (eieio--generic-subclass-tagcode, eieio--generic-subclass-tag-types):
 +      New functions.
 +      (cl-generic-tagcode-function, cl-generic-tag-types-function): Use them.
 +
 +      * emacs-lisp/eieio.el (defclass): Add obsolescence warning for the
 +      `newname' argument.
 +
 +      * emacs-lisp/cl-generic.el (cl-generic-define-method): Correctly handle
 +      introduction of a new dispatch argument.
 +      (cl--generic-cache-miss): Handle dispatch on an argument which was not
 +      considered as dispatchable for this method.
 +      (cl-defmethod): Warn when adding a method to an obsolete generic function.
 +      (cl--generic-lambda): Make sure it works if cl-lib is not yet loaded.
 +
 +      * emacs-lisp/eieio-generic.el (eieio--defgeneric-init-form): Use autoloadp.
 +
 +2015-01-18  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * emacs-lisp/package.el (package--append-to-alist): Rename from
 +      `package--add-to-alist'
 +      Updated docstring due to new name.
 +
 +2015-01-18  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/cl-extra.el (cl-subseq): Use seq-subseq and fix
 +      multiple evaluation.  (Bug#19519)
 +
 +      * emacs-lisp/seq.el (seq-subseq): Throw bad bounding indices
 +      error.  (Bug#19434)
 +
 +2015-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-core.el: Add `subclass' specializer for cl-generic.
 +      (eieio--generic-subclass-tagcode, eieio--generic-subclass-tag-types):
 +      New functions.
 +      (cl-generic-tagcode-function, cl-generic-tag-types-function): Use them.
 +
 +      * emacs-lisp/cl-macs.el (cl-defstruct): Minor optimization when include
 +      or print is nil.
 +      (cl-struct-type-p): New function.
 +
 +      * emacs-lisp/cl-generic.el: Add support for cl-next-method-p.
 +      (cl-defmethod): Add edebug spec.
 +      (cl--generic-build-combined-method): Fix call to
 +      cl-no-applicable-method.
 +      (cl--generic-nnm-sample, cl--generic-cnm-sample): New constant.
 +      (cl--generic-isnot-nnm-p): New function.
 +      (cl--generic-lambda): Use it to add support for cl-next-method-p.
 +      (cl-no-next-method, cl-no-applicable-method): Simplify arg list.
 +      (cl-next-method-p): New function.
 +
 +2015-01-17  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * version.el (emacs-repository-get-version): Update docstring.
 +
 +2015-01-17  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * files.el (find-file-other-window, find-file-other-frame):
 +      Use mapc instead of mapcar.  (Bug#18175)
 +
 +      * files.el (dir-locals-collect-variables): Use default-directory
 +      in place of the file name while working on non-file buffers, just
 +      like hack-dir-local-variables already does.  (Bug#19140)
 +
 +      * textmodes/enriched.el (enriched-encode):
 +      Use inhibit-point-motion-hooks in addition to inhibit-read-only.
 +      (Bug#18246)
 +
 +      * desktop.el (desktop-read): Do not call desktop-clear when no
 +      desktop file is found.  (Bug#18371)
 +
 +      * misearch.el (multi-isearch-unload-function): New function.
 +      (misearch-unload-function): New alias.  (Bug#19566)
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-core.el (eieio--class-constructor): Rename from
 +      class-constructor, and make it an alias for `identity'.
 +      Update all callers.
 +
 +      * emacs-lisp/eieio.el (eieio-constructor): Handle obsolete object name
 +      argument here (bug#19620)...
 +      (defclass): ...instead of in the constructor here.
 +
 +2015-01-16  Jorgen Schaefer  <contact@jorgenschaefer.de>
 +
 +      * emacs-lisp/package.el (package-archive-priorities):
 +      Specify correct type.
 +
 +2015-01-17  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * version.el (emacs-bzr-version-dirstate, emacs-bzr-version-bzr):
 +      Remove.
 +      (emacs-repository-get-version): Discard the Bazaar case.
 +      * vc/vc-bzr.el (vc-bzr-version-dirstate): Rename from
 +      emacs-bzr-version-dirstate and move from version.el to here.
 +      (vc-bzr-working-revision): Use it.
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-generic.el (call-next-method): Don't bother checking
 +      eieio--scoped-class any more.
 +
 +      * emacs-lisp/eieio-core.el (eieio--scoped-class-stack): Remove var.
 +      (eieio--scoped-class): Remove function.
 +      (eieio--with-scoped-class): Remove macro.  Replace uses with `progn'.
 +      (eieio--slot-name-index): Don't check the :protection anymore.
 +      (eieio-initializing-object): Remove var.
 +      (eieio-set-defaults): Don't let-bind eieio-initializing-object.
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Improve handling of doc-strings and describe-function for cl-generic.
 +
 +      * help-mode.el (help-function-def): Add optional arg `type'.
 +
 +      * help-fns.el (find-lisp-object-file-name): Accept any `type' as long
 +      as it's a symbol.
 +      (help-fns-short-filename): New function.
 +      (describe-function-1): Use it.  Use autoload-do-load.
 +
 +      * emacs-lisp/find-func.el: Use lexical-binding.
 +      (find-function-regexp): Don't rule out `defgeneric'.
 +      (find-function-regexp-alist): Document new possibility of including
 +      a function instead of a regexp.
 +      (find-function-search-for-symbol): Implement that new possibility.
 +      (find-function-library): Don't assume that `function' is a symbol.
 +      (find-function-do-it): Remove unused var `orig-buf'.
 +
 +      * emacs-lisp/eieio-generic.el (eieio--defalias): Move from eieio-core.
 +      (eieio--defgeneric-init-form): Don't throw away a previous docstring.
 +      (eieio--method-optimize-primary): Don't mess with the docstring.
 +      (defgeneric): Keep the `args' in the docstring.
 +      (defmethod): Don't use the method's docstring for the generic
 +      function's docstring.
 +
 +      * emacs-lisp/eieio-core.el (eieio--defalias): Move to eieio-generic.el.
 +      (eieio-defclass-autoload): Don't record the superclasses any more.
 +      (eieio-defclass-internal): Reuse the old class object if it was just an
 +      autoload stub.
 +      (eieio--class-precedence-list): Load the class if it's autoloaded.
 +
 +      * emacs-lisp/cl-generic.el (cl-generic-ensure-function): It's OK to
 +      override an autoload.
 +      (cl-generic-current-method-specializers): Replace dyn-bind variable
 +      with a lexically-scoped macro.
 +      (cl--generic-lambda): Update accordingly.
 +      (cl-generic-define-method): Record manually in the load-history with
 +      type `cl-defmethod'.
 +      (cl--generic-get-dispatcher): Minor optimization.
 +      (cl--generic-search-method): New function.
 +      (find-function-regexp-alist): Add entry for `cl-defmethod' type.
 +      (cl--generic-search-method): Add hyperlinks for methods.  Merge the
 +      specializers and the function's arguments.
 +
 +2015-01-16  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * emacs-lisp/package.el (package--read-pkg-desc):
 +      New function. Read a `define-package' form in current buffer.
 +      Return the pkg-desc, with desc-kind set to KIND.
 +      (package-dir-info): New function. Find package information for a
 +      directory. The return result is a `package-desc'.
 +      (package-install-from-buffer): Install packages from dired buffer.
 +      (package-install-file): Install packages from directory.
 +      (package-desc-suffix)
 +      (package-install-from-archive)
 +      * emacs-lisp/package-x.el (package-upload-buffer-internal):
 +      Ensure all remaining instances of `package-desc-kind' handle the 'dir
 +      value.
 +
 +2015-01-16  Jorgen Schaefer  <contact@jorgenschaefer.de>
 +
 +      * emacs-lisp/package.el: Provide repository priorities.
 +      (package-archive-priorities): New variable.
 +      (package--add-to-alist): New function.
 +      (package--add-to-archive-contents): Use it.
 +      (package-menu--find-upgrades): Use it as well. Small clean up to
 +      make the use of the package name here explicit.
 +      (package-archive-priority): New function.
 +      (package-desc-priority-version): New function.
 +
 +2015-01-16  Daniel Colascione  <dancol@dancol.org>
 +
 +      * cus-start.el (all): Make `ring-bell-function' customizable.
 +
 +2015-01-16  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-svn.el (vc-svn-dir-status-files): Pass t as
 +      vc-svn-after-dir-status's second argument.  (Bug#19429)
 +
 +2015-01-16  Samer Masterson  <samer@samertm.com>
 +
 +      * pcomplete.el (pcomplete-parse-arguments): Parse arguments
 +      regardless of pcomplete-cycle-completions's value.  (Bug#18950)
 +
 +2015-01-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * dom.el (dom-strings): New function.
 +
 +      * files.el (directory-files-recursively): Don't use the word
 +      "path" for a file name.
 +
 +2015-01-15  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * calc/calc-units.el (math-units-in-expr-p)
 +      (math-single-units-in-expr-p, math-find-compatible-unit-rec)
 +      (math-extract-units): Handle the `neg' operator.  (Bug#19582)
 +
 +2015-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-macs.el (cl--labels-magic): New constant.
 +      (cl--labels-convert): Use it to ask the macro what is its replacement
 +      in the #'f case.
 +
 +      * emacs-lisp/cl-generic.el (cl--generic-build-combined-method):
 +      Return the value of the primary rather than the after method.
 +
 +      * emacs-lisp/eieio-core.el: Provide support for cl-generic.
 +      (eieio--generic-tagcode): New function.
 +      (cl-generic-tagcode-function): Use it.
 +      (eieio--generic-tag-types): New function.
 +      (cl-generic-tag-types-function): Use it.
 +      (eieio-object-p): Tighten up the test.
 +
 +      * emacs-lisp/cl-generic.el (cl-generic-define-method): Fix paren typo.
 +
 +2015-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-generic.el: New file.
 +
 +      * emacs-lisp/cl-macs.el (cl-flet): Allow (FUN EXP) forms.
 +      (cl-load-time-value, cl-labels): Use closures rather than
 +      backquoted lambdas.
 +      (cl-macrolet): Use `eval' to create the function value, and support CL
 +      style arguments in for the defined macros.
 +
 +2015-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/eww.el: Use lexical-binding.
 +      (eww-links-at-point): Remove unused arg.
 +      (eww-mode-map): Inherit from special-mode-map.
 +      (eww-mode): Derive from special-mode.  Don't use `setq' on a hook.
 +
 +2015-01-13  Alan Mackenzie  <acm@muc.de>
 +
 +      Allow compilation during loading of CC Mode-derived modes (bug#19206).
 +      * progmodes/cc-bytecomp.el (cc-bytecomp-compiling-or-loading):
 +      New function which walks the stack to discover whether we're compiling
 +      or loading.
 +      (cc-bytecomp-is-compiling): Reformulate, and move towards beginning.
 +      (cc-bytecomp-is-loading): New defsubst.
 +      (cc-bytecomp-setup-environment, cc-bytecomp-restore-environment):
 +      Use the above defsubsts.
 +      (cc-require-when-compile, cc-bytecomp-defvar)
 +      (cc-bytecomp-defun): Simplify conditionals.
 +      * progmodes/cc-defs.el (cc-bytecomp-compiling-or-loading):
 +      "Borrow" this function from cc-bytecomp.el.
 +      (c-get-current-file): Reformulate using the above.
 +      (c-lang-defconst): Prevent duplicate entries of file names in a
 +      symbol's 'source property.
 +      (c-lang-const): Use cc-bytecomp-is-compiling.
 +      * progmodes/cc-langs.el (c-make-init-lang-vars-fun):
 +      Use cc-bytecomp-is-compiling.
 +
 +2015-01-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-core.el (eieio-defclass): Fix call to `defclass'
 +      (bug#19552).
 +
 +2015-01-13  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * menu-bar.el (menu-bar-goto-menu): Before calling
 +      `xref-marker-stack-empty-p', first check that `xref' is loaded.
 +      (Bug#19554)
 +
 +2015-01-12  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * progmodes/xref.el (xref-marker-stack-empty-p): Add autoload
 +      cookie (Bug#19554).
 +
 +      * frame.el (frame-notice-user-settings): Remove code dealing with
 +      frame-initial-frame-tool-bar-height.  Turn off `tool-bar-mode'
 +      only if `window-system-frame-alist' or `default-frame-alist' ask
 +      for it.
 +      (make-frame): Update frame-adjust-size-history if needed.
 +
 +2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Have 'make' output better GEN names
 +      * Makefile.in (PHONY_EXTRAS): New macro.
 +      (.PHONY): Depend on it, and on $(lisp)/loaddefs.el, so that the
 +      relevant files' time stamps are ignored.
 +      (custom-deps, $(lisp)/cus-load.el, finder-data)
 +      ($(lisp)/finder-inf.el): Use PHONY_EXTRAS.
 +      (custom-deps, $(lisp)/cus-load.el, finder-data)
 +      ($(lisp)/finder-inf.el, autoloads, $(lisp)/loaddefs.el)
 +      ($(lisp)/subdirs.el, update-subdirs):
 +      Output more-accurate destination names with GEN.
 +
 +      Say "ELC foo.elc" instead of "GEN foo.elc"
 +      * Makefile.in (AM_V_ELC, am__v_ELC_, am__v_ELC_0, am__v_ELC_1):
 +      New macros.
 +      ($(THEFILE)c, .el.elc): Use them.
 +
 +2015-01-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (directory-files-recursively): Do not include
 +      superfluous remote file names.
 +
 +2015-01-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww): Interpret anything that looks like a protocol
 +      designator as a full URL.
 +
 +2015-01-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-urlify): Don't bother the user about
 +      invalidly-encoded display strings.
 +
 +2015-01-10  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/shr.el (shr-urlify): Decode URLs before using them as titles
 +      (bug#19555).
 +
 +2015-01-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww): Always interpret URLs that start with https?:
 +      as plain URLs, even if they have spaces in them (bug#19556).
 +      (eww): Also interpret things like "en.wikipedia.org/wiki/Free
 +      software" as an URL.
 +      (eww): Don't interpret "org/foo" as an URL.
 +      (eww): Clear the title when loading so that we don't display
 +      misleading information.
 +
 +2015-01-10  Daniel Colascione  <dancol@dancol.org>
 +
 +      * vc/vc-hooks.el (vc-prefix-map): Bind vc-delete-file to C-x v x,
 +      by analogy with dired.
 +
 +2015-01-09  Daniel Colascione  <dancol@dancol.org>
 +
 +      * progmodes/js.el (js--function-heading-1-re)
 +      (js--function-prologue-beginning): Parse ES6 generator function
 +      declarations.  (That is, "function* name()").
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (defclass): Move from eieio-defclass all the code
 +      that creates functions, and most of the sanity checks.
 +      Mark as obsolete the <class>-child-p function.
 +      * emacs-lisp/eieio-core.el (eieio--define-field-accessors): Remove.
 +      (eieio--class, eieio--object): Use cl-defstruct.
 +      (eieio--object-num-slots): Define manually.
 +      (eieio-defclass-autoload): Use eieio--class-make.
 +      (eieio-defclass-internal): Rename from eieio-defclass.  Move all the
 +      `(lambda...) definitions and most of the sanity checks to `defclass'.
 +      Mark as obsolete the <class>-list-p function, the <class> variable and
 +      the <initarg> variables.  Use pcase-dolist.
 +      (eieio-defclass): New compatibility function.
 +      * emacs-lisp/eieio-opt.el (eieio-build-class-alist)
 +      (eieio-class-speedbar): Don't use eieio-default-superclass var.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-generic.el: New file.
 +      * emacs-lisp/eieio-core.el: Move all generic function code to
 +      eieio-generic.el.
 +      (eieio--defmethod): Declare.
 +
 +      * emacs-lisp/eieio.el: Require eieio-generic.  Move all generic
 +      function code to eieio-generic.el.
 +      * emacs-lisp/eieio-opt.el (eieio-help-generic): Move to
 +      eieio-generic.el.
 +      * emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke): Update call
 +      to eieio--generic-call.
 +      * emacs-lisp/eieio-base.el (eieio-instance-inheritor): Don't use
 +      <class>-child type.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/chart.el (chart-add-sequence, chart-bar-quickie):
 +      Don't use <class> as a variable.
 +
 +      * emacs-lisp/eieio.el (same-class-p): Accept class object as well.
 +      (call-next-method): Simplify.
 +      (clone): Obey eieio-backward-compatibility.
 +
 +      * emacs-lisp/eieio-opt.el (eieio-read-generic-p): Remove.
 +      (eieio-read-generic): Use `generic-p' instead.
 +
 +      * emacs-lisp/eieio-core.el (eieio-backward-compatibility): New var.
 +      (eieio-defclass-autoload): Obey it.
 +      (eieio--class-object): Improve error behavior.
 +      (eieio-class-children-fast, same-class-fast-p): Remove.  Inline at
 +      every use site.
 +      (eieio--defgeneric-form-primary-only): Rename from
 +      eieio-defgeneric-form-primary-only; update all callers.
 +      (eieio--defgeneric-form-primary-only-one): Rename from
 +      eieio-defgeneric-form-primary-only-one; update all callers.
 +      (eieio-defgeneric-reset-generic-form)
 +      (eieio-defgeneric-reset-generic-form-primary-only)
 +      (eieio-defgeneric-reset-generic-form-primary-only-one): Remove.
 +      (eieio--method-optimize-primary): New function to replace them.
 +      (eieio--defmethod, eieio-defmethod): Use it.
 +      (eieio--perform-slot-validation): Rename from
 +      eieio-perform-slot-validation; update all callers.
 +      (eieio--validate-slot-value): Rename from eieio-validate-slot-value.
 +      Change `class' to be a class object.  Update all callers.
 +      (eieio--validate-class-slot-value): Rename from
 +      eieio-validate-class-slot-value.  Change `class' to be a class object.
 +      Update all callers.
 +      (eieio-oset-default): Accept class object as well.
 +      (eieio--generic-call-primary-only): Rename from
 +      eieio-generic-call-primary-only.  Update all callers.
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value):
 +      Improve error messages.
 +      (eieio-persistent-slot-type-is-class-p): Handle `list-of' types, as
 +      well as user-defined types.  Emit errors for legacy types like
 +      <class>-child and <class>-list, if not eieio-backward-compatibility.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (eieio-class-parents): Accept class objects.
 +      (eieio--class-slot-initarg): Rename from class-slot-initarg.
 +      Change `class' arg to be a class object.  Update all callers.
 +      (call-next-method): Adjust to new return value of `eieio-generic-form'.
 +      (eieio-default-superclass): Set var to the class object.
 +      (eieio-edebug-prin1-to-string): Fix recursive call for lists.
 +      Change print behavior to affect class objects rather than
 +      class symbols.
 +
 +      * emacs-lisp/eieio-core.el (eieio-class-object): New function.
 +      (eieio-class-parents-fast): Remove macro.
 +      (eieio--class-option-assoc): Rename from class-option-assoc.
 +      Update all callers.
 +      (eieio--class-option): Rename from class-option.  Change `class' arg to
 +      be a class object.  Update all callers.
 +      (eieio--class-method-invocation-order): Rename from
 +      class-method-invocation-order.  Change `class' arg to be a class
 +      object.  Update all callers.
 +      (eieio-defclass-autoload, eieio-defclass): Set the `parent' field to
 +      a list of class objects rather than names.
 +      (eieio-defclass): Remove redundant quotes.  Use `eieio-oref-default'
 +      for accessors to class allocated slots.
 +      (eieio--perform-slot-validation-for-default): Rename from
 +      eieio-perform-slot-validation-for-default.  Update all callers.
 +      (eieio--add-new-slot): Rename from eieio-add-new-slot.
 +      Update all callers.  Use push.
 +      (eieio-copy-parents-into-subclass): Adjust to new content of
 +      `parent' field.  Use dolist.
 +      (eieio-oref): Remove support for providing a class rather than
 +      an object.
 +      (eieio-oref-default): Prefer class objects over class names.
 +      (eieio--slot-originating-class-p): Rename from
 +      eieio-slot-originating-class-p.  Update all callers.  Use `or'.
 +      (eieio--slot-name-index): Turn check into assertion.
 +      (eieio--class-slot-name-index): Rename from
 +      eieio-class-slot-name-index.  Change `class' arg to be a class object.
 +      Update all callers.
 +      (eieio-attribute-to-initarg): Move to eieio-test-persist.el.
 +      (eieio--c3-candidate): Rename from eieio-c3-candidate.
 +      Update all callers.
 +      (eieio--c3-merge-lists): Rename from eieio-c3-merge-lists.
 +      Update all callers.
 +      (eieio--class-precedence-c3): Rename from eieio-class-precedence-c3.
 +      Update all callers.
 +      (eieio--class-precedence-dfs): Rename from eieio-class-precedence-dfs.
 +      Update all callers.
 +      (eieio--class-precedence-bfs): Rename from eieio-class-precedence-bfs.
 +      Update all callers.  Adjust to new `parent' content.
 +      (eieio--class-precedence-list): Rename from -class-precedence-list.
 +      Update all callers.
 +      (eieio-generic-call): Use autoloadp and autoload-do-load.
 +      Slight simplification.
 +      (eieio-generic-call, eieio-generic-call-primary-only): Adjust to new
 +      return value of `eieio-generic-form'.
 +      (eieiomt-add): Index the hashtable with class objects rather than
 +      class names.
 +      (eieio-generic-form): Accept class objects as well.
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-convert-list-to-object):
 +      Adjust to new convention for eieio-persistent-validate/fix-slot-value.
 +      (eieio-persistent-validate/fix-slot-value):
 +      Change `class' arg to be a class object.  Update all callers.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (child-of-class-p): Make it accept class objects
 +      additionally to class names.
 +
 +      * emacs-lisp/eieio-core.el (eieio--with-scoped-class): Use let-binding.
 +      (object): Remove first (constant) slot; rename second to `class-tag'.
 +      (eieio--object-class-object, eieio--object-class-name): New funs
 +      to replace eieio--object-class.
 +      (eieio--class-object, eieio--class-p): New functions.
 +      (same-class-fast-p): Make it a defsubst, change its implementation
 +      to check the class objects rather than their names.
 +      (eieio-object-p): Rewrite.
 +      (eieio-defclass): Adjust the object initialization according to the new
 +      object layout.
 +      (eieio--scoped-class): Declare it returns a class object (not a class
 +      name any more).  Adjust calls accordingly (along with calls to
 +      eieio--with-scoped-class).
 +      (eieio--slot-name-index): Rename from eieio-slot-name-index and change
 +      its class arg to be a class object.  Adjust callers accordingly.
 +      (eieio-slot-originating-class-p): Make its start-class arg a class
 +      object.  Adjust all callers.
 +      (eieio--initarg-to-attribute): Rename from eieio-initarg-to-attribute.
 +      Make its `class' arg a class object.  Adjust all callers.
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value):
 +      Use eieio--slot-name-index rather than eieio-slot-name-index.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (make-instance): Simplify by not adding an object
 +      name argument.
 +      (eieio-object-name): Use eieio-object-name-string.
 +      (eieio--object-names): New const.
 +      (eieio-object-name-string, eieio-object-set-name-string): Re-implement
 +      using a hashtable rather than a built-in slot.
 +      (eieio-constructor): Rename from `constructor'.  Remove `newname' arg.
 +      (clone): Don't mess with the object's "name".
 +
 +      * emacs-lisp/eieio-custom.el (eieio-widget-test): Remove dummy arg.
 +      (eieio-object-value-get): Use eieio-object-set-name-string.
 +
 +      * emacs-lisp/eieio-core.el (eieio--defalias): Follow aliases.
 +      (eieio--object): Remove `name' field.
 +      (eieio-defclass): Adjust to new convention where constructors don't
 +      take an "object name" any more.
 +      (eieio--defgeneric-init-form, eieio--defmethod): Follow aliases.
 +      (eieio-validate-slot-value, eieio-oset-default)
 +      (eieio-slot-name-index): Don't hardcode eieio--object-num-slots.
 +      (eieio-generic-call-primary-only): Simplify.
 +
 +      * emacs-lisp/eieio-base.el (clone) <eieio-instance-inheritor>:
 +      Use call-next-method.
 +      (eieio-constructor): Rename from `constructor'.
 +      (eieio-persistent-convert-list-to-object): Drop objname.
 +      (eieio-persistent-validate/fix-slot-value): Don't hardcode
 +      eieio--object-num-slots.
 +      (eieio-named): Use a normal slot.
 +      (slot-missing) <eieio-named>: Remove.
 +      (eieio-object-name-string, eieio-object-set-name-string, clone)
 +      <eieio-named>: New methods.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-core.el (eieio--class-v): Rename from class-v.
 +      (method-*): Add a "eieio--" prefix to those constants.
 +
 +      * emacs-lisp/eieio.el: Move edebug specs to the corresponding macro.
 +
 +      * emacs-lisp/eieio-speedbar.el: Use lexical-binding.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el (child-of-class-p): Fix case where `class' is
 +      `eieio-default-superclass'.
 +
 +      * emacs-lisp/eieio-datadebug.el: Use lexical-binding.
 +
 +      * emacs-lisp/eieio-custom.el: Use lexical-binding.
 +      (eieio-object-value-to-abstract): Simplify.
 +
 +      * emacs-lisp/eieio-opt.el (eieio-build-class-list): Use cl-mapcan.
 +      (eieio-build-class-alist): Use dolist.
 +      (eieio-all-generic-functions): Adjust to use of hashtables.
 +
 +      * emacs-lisp/eieio-core.el (class): Rename field symbol-obarray to
 +      symbol-hashtable.  It contains a hashtable instead of an obarray.
 +      (generic-p): Use symbol property `eieio-method-hashtable' instead of
 +      `eieio-method-obarray'.
 +      (generic-primary-only-p, generic-primary-only-one-p):
 +      Slight optimization.
 +      (eieio-defclass-autoload-map): Use a hashtable instead of an obarray.
 +      (eieio-defclass-autoload, eieio-defclass): Adjust/simplify accordingly.
 +      (eieio-class-un-autoload): Use autoload-do-load.
 +      (eieio-defclass): Use dolist, cl-pushnew, cl-callf.
 +      Use new cl-deftype-satisfies.  Adjust to use of hashtables.
 +      Don't hardcode the value of eieio--object-num-slots.
 +      (eieio-defgeneric-form-primary-only-one): Remove `doc-string' arg.
 +      Use a closure rather than a backquoted lambda.
 +      (eieio--defmethod): Adjust call accordingly.  Set doc-string via the
 +      function-documentation property.
 +      (eieio-slot-originating-class-p, eieio-slot-name-index)
 +      (eieiomt--optimizing-hashtable, eieiomt-install, eieiomt-add)
 +      (eieio-generic-form): Adjust to use of hashtables.
 +      (eieiomt--sym-optimize): Rename from eieiomt-sym-optimize; take
 +      additional class argument.
 +      (eieio-generic-call-methodname): Remove, unused.
 +
 +      * emacs-lisp/eieio-base.el (eieio-persistent-slot-type-is-class-p):
 +      Prefer \' to $.
 +
 +2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (line-move-visual): When converting X pixel coordinate
 +      to temporary-goal-column, adjust the value for right-to-left
 +      screen lines.  This fixes vertical-motion, next/prev-line, etc.
 +
 +2015-01-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (file-tree-walk): Remove; of unknown authorship.  (Bug#19325)
 +
 +2015-01-07  K. Handa  <handa@gnu.org>
 +
 +      * international/ccl.el (define-ccl-program): Improve the docstring.
 +
 +2015-01-06  Sam Steingold  <sds@gnu.org>
 +
 +      * shell.el (shell-display-buffer-actions): Remove,
 +      use `display-buffer-alist' instead.
 +
 +2015-01-05  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref--insert-xrefs): Add `help-echo' property
 +      to the references.
 +
 +2015-01-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-category-defaults): New var.
 +      Set unicode-name to use substring completion.
 +      (completion-category-defaults): Set it to nil.
 +
 +2015-01-04  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Add mouse interaction to xref.
 +      * progmodes/xref.el (xref--button-map): New variable.
 +      (xref--mouse-2): New command.
 +      (xref--insert-xrefs): Add `mouse-face' and `keymap' properties to
 +      the inserted references.
 +
 +2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Less 'make' chatter for lisp dir
 +      * Makefile.in (THEFILE): Define to be 'no-such-file' by default,
 +      to make it clearer that the caller must specify it.
 +      (compile-onefile): Remove, replacing by ...
 +      ($(THEFILE)c): ... new rule.  This lets us use AM_V_GEN here.
 +      ($(THEFILE)c, .el.elc, $(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):
 +      Use AM_V_GEN to lessen 'make' chatter.
 +      (.el.elc): Omit duplicate comment.
 +
 +      Less 'make' chatter in batch mode
 +      * emacs-lisp/autoload.el (autoload-generate-file-autoloads):
 +      * emacs-lisp/bytecomp.el (byte-compile-file):
 +      * files.el (save-buffer, basic-save-buffer):
 +      * international/quail.el (quail-update-leim-list-file):
 +      Don't output messages like "Generating ..." in batch mode.
 +
 +2015-01-04  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Unbreak `mouse-action' property in text buttons.
 +      * button.el (push-button): Fix regression from 2012-12-06.
 +
 +2015-01-03  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref-marker-stack-empty-p): New function.
 +
 +      * menu-bar.el (menu-bar-goto-menu): Use it.
 +
 +2015-01-03  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref--window-configuration): New variable.
 +      (xref-show-location-at-point): New command.
 +      (xref--restore-window-configuration): New function.
 +      (xref-next-line, xref-prev-line): Delegate to
 +      `xref-show-location-at-point'.
 +      (xref--location-at-point): Don't signal the error.
 +      (xref-goto-xref): Do that here instead.
 +      (xref--xref-buffer-mode): Add `xref--restore-window-configuration'
 +      to `pre-command-hook'.
 +      (xref--xref-buffer-mode-map): Don't remap `next-line' and
 +      `previous-line'.  Additionally bind `xref-next-line' and
 +      `xref-prev-line' to `n' and `p' respectively.
 +      Bind `xref-show-location-at-point' to `C-o'.
 +
 +2015-01-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * tool-bar.el (tool-bar-local-item)
 +      (tool-bar-local-item-from-menu): Call force-mode-line-update to
 +      make sure the tool-bar changes show on display.
 +
 +2015-01-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.2.11.
 +
 +      * net/tramp-compat.el (top): Require cl-macs for Emacs 22.
 +      Make an alias for `default-toplevel-value' if it doesn't exist.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-directory):
 +      Use `tramp-compat-delete-directory'.
 +
 +      * net/trampver.el: Update release number.
 +
 +2015-01-01  Filipp Gunbin  <fgunbin@fastmail.fm>
 +
 +      * autorevert.el (auto-revert-handler): Fix auto-revert-tail-mode
 +      for remote files.  (Bug#19449)
 +
 +2015-01-01  Simen Heggestøyl  <simenheg@gmail.com>  (tiny change)
 +
 +      * textmodes/css-mode.el (scss-mode): Fix typo (bug#19446).
 +
 +2014-12-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Less 'make' chatter in lisp directory
 +      * Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_GEN, am__v_GEN_)
 +      (am__v_GEN_0, am__v_GEN_1): New macros, from ../src/Makefile.in.
 +      (custom-deps, finder-data, autoloads, update-subdirs): Use them.
 +
 +2014-12-31  Filipp Gunbin  <fgunbin@fastmail.fm>
 +
 +      * info.el (info-display-manual): Limit the completion alternatives
 +      to currently visited manuals if prefix argument is non-nil.
 +
 +2014-12-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (semantic): Simplify.
 +
 +2014-12-30  Juri Linkov  <juri@linkov.net>
 +
 +      * net/eww.el (eww-isearch-next-buffer): New function.
 +      (eww-mode): Set multi-isearch-next-buffer-function to it.
 +
 +2014-12-30  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/xref.el (xref-find-definitions): Mention "no
 +      identifier at point" case in the docstring.
 +
 +      * menu-bar.el (menu-bar-goto-uses-etags-p): New function.
 +      (menu-bar-goto-menu): Use it to show or hide the `set-tags-name'
 +      and `separator-tag-file' items.
 +
 +2014-12-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * obsolete/pc-select.el (pc-selection-mode): Use system-type.
 +      This is instead of system-name, which is both wrong here and obsolete.
 +      * desktop.el (desktop-save-frameset):
 +      * dnd.el (dnd-get-local-file-uri):
 +      * nxml/rng-uri.el (rng-uri-file-name-1):
 +      Prefer (system-name) to system-name, and avoid naming
 +      locals 'system-name'.
 +      * startup.el (system-name): Now an obsolete variable.  (Bug#19438)
 +
 +2014-12-29  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * menu-bar.el (menu-bar-next-tag-other-window)
 +      (menu-bar-next-tag): Remove.
 +
 +2014-12-29  K. Handa  <handa@gnu.org>
 +
 +      * international/mule.el (make-translation-table-from-alist):
 +      Accept nil or zero-length vector for FROM and TO.
 +
 +2014-12-29  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-mode): Truncate overlong lines for prettier
 +      display when resizing.
 +
 +      * net/shr.el (shr-width): Default to using the window width when
 +      rendering.
 +
 +2014-12-29  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Unbreak jumping to an alias's definition.
 +      * emacs-lisp/find-func.el (find-function-library): Return a pair
 +      (ORIG-FUNCTION . LIBRARY) instead of just its second element.
 +      (find-function-noselect): Use it.
 +      * progmodes/elisp-mode.el (elisp--xref-identifier-file): Rename to
 +      `elisp--xref-identifier-location', incorporate logic from
 +      `elisp--xref-find-definitions', use the changed
 +      `find-function-library' return value.
 +
 +2014-12-29  Juri Linkov  <juri@linkov.net>
 +
 +      * comint.el (comint-history-isearch-message): Use field-beginning
 +      instead of comint-line-beginning-position - that's more fixes for
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00305.html
 +      (comint-history-isearch-message): Fix args of isearch-message-prefix.
 +
 +2014-12-29  Juri Linkov  <juri@linkov.net>
 +
 +      * vc/vc-dir.el (vc-dir-display-file): New command (bug#19450).
 +      (vc-dir-mode-map): Bind it to "\C-o".
 +      (vc-dir-menu-map): Add it to menu.
 +
 +2014-12-29  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/etags.el (find-tag-other-window)
 +      (find-tag-other-frame, find-tag-regexp, tags-loop-continue)
 +      (tags-apropos): Declare obsolete.
 +
 +      * menu-bar.el (menu-bar-goto-menu): Replace all but one etags item
 +      with xref ones.
 +
 +2014-12-28  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule.el (define-coding-system): Fix typos in the
 +      doc string.
 +
 +2014-12-28  Kenichi Handa  <handa@gnu.org>
 +
 +      * international/mule.el (define-coding-system): Improve the doc
 +      string.
 +
 +2014-12-28  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/shr.el (shr-tag-table): Fix handling of tbody/header/footer
 +      elements in tables (bug#19444).
 +
 +      * net/eww.el (eww-handle-link): Fix typo in "up" rel handling
 +      (bug#19445).
 +
 +2014-12-28  Juri Linkov  <juri@linkov.net>
 +
 +      * vc/compare-w.el: Require diff-mode for diff faces.
 +      (compare-windows-removed, compare-windows-added): New faces
 +      inheriting from diff faces.
 +      (compare-windows): Define obsolete face alias.
 +      (compare-windows-highlight): Replace face `compare-windows' with
 +      new faces `compare-windows-added' and `compare-windows-removed'
 +      (bug#19451).
 +      (compare-windows-get-recent-window): Signal an error when
 +      no other window is found (bug#19170).
 +
 +2014-12-27  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/elisp-mode.el (elisp--xref-identifier-file):
 +      Skip features that have no sources.
 +
 +      * simple.el (execute-extended-command):
 +      When `suggest-key-bindings' is nil, don't.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      python.el: Native readline completion.
 +      * progmodes/python.el (python-shell-completion-native-disabled-interpreters)
 +      (python-shell-completion-native-enable)
 +      (python-shell-completion-native-output-timeout): New defcustoms.
 +      (python-shell-completion-native-interpreter-disabled-p)
 +      (python-shell-completion-native-try)
 +      (python-shell-completion-native-setup)
 +      (python-shell-completion-native-turn-off)
 +      (python-shell-completion-native-turn-on)
 +      (python-shell-completion-native-turn-on-maybe)
 +      (python-shell-completion-native-turn-on-maybe-with-msg)
 +      (python-shell-completion-native-toggle): New functions.
 +      (python-shell-completion-native-get-completions): New function.
 +      (python-shell-completion-at-point): Use it.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      python.el: Enhance shell user interaction and deprecate
 +      python-shell-get-or-create-process.
 +      * progmodes/python.el (python-shell-get-process-or-error):
 +      New function.
 +      (python-shell-with-shell-buffer): Use it.
 +      (python-shell-send-string, python-shell-send-region)
 +      (python-shell-send-buffer, python-shell-send-defun)
 +      (python-shell-send-file, python-shell-switch-to-shell): Use it.
 +      Add argument MSG to display user-friendly message when no process
 +      is running.
 +      (python-shell-switch-to-shell): Call pop-to-buffer with NORECORD.
 +      (python-shell-make-comint): Rename argument SHOW from POP.
 +      Use display-buffer instead of pop-to-buffer.
 +      (run-python): Doc fix.  Return process.
 +      (python-shell-get-or-create-process): Make obsolete.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-buffer-substring):
 +      Handle cornercase when region sent starts at point-min.
 +
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * language/misc-lang.el (composition-function-table): Add Syriac
 +      characters and also ZWJ/ZWNJ.
 +      See http://lists.gnu.org/archive/html/help-gnu-emacs/2014-12/msg00248.html
 +      for the details.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      python.el: Fix message when sending region.
 +      * progmodes/python.el (python-shell-send-region): Rename argument
 +      send-main from nomain.  Fix message.
 +      (python-shell-send-buffer): Rename argument send-main from arg.
 +
 +      python.el: Cleanup temp files even with eval errors.
 +      * progmodes/python.el (python-shell-send-file): Make file-name
 +      mandatory.  Fix temp file removal in the majority of cases.
 +
 +      python.el: Handle file encoding for shell.
 +      * progmodes/python.el (python-rx-constituents): Add coding-cookie.
 +      (python-shell--save-temp-file): Write file with proper encoding.
 +      (python-shell-buffer-substring): Add coding cookie for detected
 +      encoding to generated content.  Fix blank lines when removing
 +      if-name-main block.
 +      (python-shell-send-file): Handle file encoding.
 +      (python-info-encoding-from-cookie)
 +      (python-info-encoding): New functions.
 +
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
 +      Use `tramp-rsh-end-of-line', it ought to be more robust.
 +
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/js.el (js-syntax-propertize): "return" can't be divided
 +      (bug#19397).
 +
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
 +      as end-of-line delimeter for passwords, when running on MS Windows.
 +
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-set-shell): Don't change the global value
 +      of indent-line-function (bug#19433).
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Fix line numbers on Python shell.
 +      * progmodes/python.el (python-shell--save-temp-file): Do not
 +      append coding cookie.
 +      (python-shell-send-string): Generalize for
 +      python-shell-send-region.
 +      (python--use-fake-loc): Delete var.
 +      (python-shell-buffer-substring): Cleanup fake-loc logic.
 +      (python-shell-send-region): Remove fake-loc logic, simplify.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-indent-post-self-insert-function):
 +      Make colon to re-indent only for dedenters, handling
 +      multiline-statements gracefully.
 +
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-insert-file-contents):
 +      Set `find-file-not-found-functions' in case of errors.  (Bug#18623)
 +
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-send-command-and-read): New optional
 +      arg MARKER.
 +      (tramp-get-remote-path): Use it.
 +
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (redisplay-dont-pause): Mark as obsolete.
 +
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-error-with-buffer): Call `message' properly.
 +      (tramp-accept-process-output): Use nil as argument for
 +      `accept-process-output', when there is a gateway prepended.
 +
 +      * net/tramp-gw.el (tramp-gw-open-connection): Suppress traces in
 +      wrong debug buffer.
 +      (tramp-gw-open-connection): Set process coding system 'binary.
 +      (tramp-gw-open-network-stream): Handle HTTP error 403.
 +
 +      * net/tramp-sh.el (tramp-compute-multi-hops): Suppress traces in
 +      wrong debug buffer.
 +      (tramp-maybe-open-connection): Set connection property "gateway".
 +
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (sit-for): Tweak docstring (bug#19381).
 +
 +2014-12-27  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-git.el (vc-git-after-dir-status-stage): Move `up-to-date'
 +      stage to after `diff-index' (bug#19386).
 +
 +2014-12-27  João Távora  <joaotavora@gmail.com>
 +
 +      * textmodes/tex-mode.el (tex-insert-quote): Consider and respect
 +      `electric-pair-mode' (bug#19356).
 +
 +2014-12-27  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      elisp-xref-find: Don't create buffers eagerly.
 +
 +      * progmodes/elisp-mode.el (elisp--identifier-location): Fold back
 +      into `elisp--company-location'.
 +      (elisp--identifier-completion-table): Rename to
 +      `elisp--identifier-completion-table', and do not include just any
 +      symbols with a property list.
 +      (elisp-completion-at-point): Revert the 2014-12-25 change.
 +      (elisp--xref-identifier-file): New function.
 +      (elisp--xref-find-definitions): Use it.
 +
 +      * emacs-lisp/find-func.el (find-function-library): New function,
 +      extracted from `find-function-noselect'.
 +
 +      * progmodes/xref.el (xref-elisp-location): New class.
 +      (xref-make-elisp-location): New function.
 +      (xref-location-marker): New implementation.
 +
 +2014-12-27  Juri Linkov  <juri@linkov.net>
 +
 +      * minibuffer.el (minibuffer-completion-help):
 +      Use shrink-window-if-larger-than-buffer in window-height
 +      when temp-buffer-resize-mode is nil.
 +
 +      * window.el (with-displayed-buffer-window): Remove window-height
 +      from the action alist in the temp-buffer-window-show call
 +      when window-height is handled explicitly afterwards (bug#19355).
 +
 +2014-12-27  Juri Linkov  <juri@linkov.net>
 +
 +      Support subdirectories when saving places in dired.
 +      * saveplace.el (toggle-save-place, save-place-to-alist)
 +      (save-places-to-alist, save-place-dired-hook):
 +      Use dired-current-directory instead of dired-directory (bug#19436).
 +      (save-place-dired-hook): Add check for alist to make the new
 +      format future-proof to allow other possible formats.
 +
 +2014-12-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      python.el: Generate clearer shell buffer names.
 +      * progmodes/python.el (python-shell-get-process-name)
 +      (python-shell-internal-get-process-name): Use `buffer-name`.
 +      (python-shell-internal-get-or-create-process): Simplify.
 +
 +2014-12-26  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Add basic xref apropos implementation to elisp-mode.
 +
 +      * progmodes/elisp-mode.el (elisp--xref-find-definitions):
 +      Filter out nil results.
 +      (elisp--xref-find-apropos): New function.
 +      (elisp-xref-find): Use it.
 +
 +      * progmodes/xref.el (xref--show-xrefs): Use `user-error'.
 +
 +2014-12-25  Filipp Gunbin  <fgunbin@fastmail.fm>
 +
 +      * dired-aux.el (dired-maybe-insert-subdir):
 +      Make dired-maybe-insert-subdir always skip trivial files.
 +
 +2014-12-25  Helmut Eller  <eller.helmut@gmail.com>
 +            Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Consolidate cross-referencing commands.
 +
 +      Move autoloaded bindings for `M-.', `M-,', `C-x 4 .' and
 +      `C-x 5 .' from etags.el to xref.el.
 +
 +      * progmodes/xref.el: New file.
 +
 +      * progmodes/elisp-mode.el (elisp--identifier-types): New variable.
 +      (elisp--identifier-location): New function, extracted from
 +      `elisp--company-location'.
 +      (elisp--company-location): Use it.
 +      (elisp--identifier-completion-table): New variable.
 +      (elisp-completion-at-point): Use it.
 +      (emacs-lisp-mode): Set the local values of `xref-find-function'
 +      and `xref-identifier-completion-table-function'.
 +      (elisp-xref-find, elisp--xref-find-definitions)
 +      (elisp--xref-identifier-completion-table): New functions.
 +
 +      * progmodes/etags.el (find-tag-marker-ring): Mark obsolete in
 +      favor of `xref--marker-ring'.
 +      (tags-lazy-completion-table): Autoload.
 +      (tags-reset-tags-tables): Use `xref-clear-marker-stack'.
 +      (find-tag-noselect): Use `xref-push-marker-stack'.
 +      (pop-tag-mark): Make an alias for `xref-pop-marker-stack'.
 +      (etags--xref-limit): New constant.
 +      (etags-xref-find, etags--xref-find-definitions): New functions.
 +
 +2014-12-25  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * cus-start.el (resize-mini-windows): Make it customizable.
 +
 +2014-12-24  Stephen Leake  <stephen_leake@stephe-leake.org>
 +
 +      * startup.el (fancy-about-text): Change buttons for etc/CONTRIBUTE
 +      to (info "(emacs)Contributing").  (Bug#19299)
 +
 +2014-12-24  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (mouse-autoselect-window-position-1): New variable.
 +      (mouse-autoselect-window-cancel)
 +      (mouse-autoselect-window-select, handle-select-window):
 +      With delayed autoselection select window only if mouse moves after
 +      selecting its frame.
 +
 +2014-12-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * eshell/esh-ext.el (eshell-find-interpreter): Expand relative
 +      remote file names.  (Bug#18782)
 +
 +2014-12-23  Sam Steingold  <sds@gnu.org>
 +
 +      * shell.el (shell-display-buffer-actions): New user option.
 +      (shell): Pass it to `pop-to-buffer' instead of hard-coding
 +      `pop-to-buffer-same-window'.
 +
 +2014-12-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/js.el (js--syntax-propertize-regexp-syntax-table): New var.
 +      (js-syntax-propertize-regexp): Use it to recognize "slash in
 +      a character class" (bug#19397).
 +
 +2014-12-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * completion.el: Use post-self-insert-hook (bug#19400).
 +      (completion-separator-self-insert-command)
 +      (completion-separator-self-insert-autofilling): Remove.
 +      (completion-separator-chars): New var.
 +      (completion-c-mode-hook, completion-setup-fortran-mode): Use it instead
 +      of changing the keymap.
 +      (completion--post-self-insert): New function.
 +      (dynamic-completion-mode): Use it instead of rebinding keys.
 +      (cmpl--completion-string): Rename from completion-string.
 +      (add-completion-to-head, delete-completion): Let-bind it explicitly.
 +
 +2014-12-22  Bozhidar Batsov  <bozhidar@batsov.com>
 +
 +      * progmodes/ruby-mode.el (ruby--string-region): Simplify code
 +      by leveraging `syntax-ppss'.
 +
 +2014-12-22  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * let-alist.el (let-alist): Use `make-symbol' instead of `gensym'.
 +
 +2014-12-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-histfile-override): Add :version.
 +
 +2014-12-20  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/tramp-sh.el (tramp-histfile-override): Clarify docstring.
 +
 +2014-12-19  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * let-alist.el (let-alist): Enable access to deeper alists by
 +      using dots inside the dotted symbols.
 +
 +2014-12-19  Alan Mackenzie  <acm@muc.de>
 +
 +      Make C++11 uniform init syntax work.
 +      New keywords "final" and "override".
 +      * progmodes/cc-engine.el (c-back-over-member-initializer-braces):
 +      New function.
 +      (c-guess-basic-syntax): Set `containing-sex' and `lim' using the
 +      new function.
 +      * progmodes/cc-fonts.el (c-font-lock-declarations): Check more
 +      carefully for "are we at a declarator?" using
 +      c-back-over-member-initializers.
 +      * progmodes/cc-langs.el (c-type-modifier-kwds): Include "final"
 +      and "override" in the C++ value.
 +
 +2014-12-19  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * textmodes/ispell.el (ispell-command-loop): Don't use `next-window'.
 +
 +2014-12-21  Lars Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (nsm-save-host): Don't save the host name twice
 +      (bug#19269).
 +
 +2014-12-18  Sam Steingold  <sds@gnu.org>
 +
 +      Keyboard interface (C-f10) to `mouse-buffer-menu' (C-down-mouse-1).
 +      * mouse.el (mouse-buffer-menu-map): Extract from `mouse-buffer-menu'.
 +      (mouse-buffer-menu): Use `mouse-buffer-menu-map'.
 +      * menu-bar.el (menu-bar-buffer-vector): Extract from
 +      `menu-bar-update-buffers'.
 +      (menu-bar-update-buffers): Use `menu-bar-buffer-vector'.
 +      (buffer-menu-open): New user command, bound globally to C-f10,
 +      provides a keyboard interface to `mouse-buffer-menu' (C-down-mouse-1).
 +      (mouse-buffer-menu-keymap): Use `menu-bar-buffer-vector' to
 +      convert the value returned by `mouse-buffer-menu-map' to a list
 +      acceptable to `popup-menu' for `buffer-menu-open'.
 +
 +2014-12-18  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * let-alist.el (let-alist): Evaluate the `alist' argument only once.
 +
 +2014-12-18  Sam Steingold  <sds@gnu.org>
 +
 +      * emacs-lisp/package.el: Avoid compilation warning by declaring
 +      the `find-library-name' function.
 +      (package-activate-1): Fix the `with-demoted-errors' calls:
 +      the first argument must be a string literal.
 +
 +2014-12-18  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Add code for "preserving" window sizes.
 +      * dired.el (dired-pop-to-buffer): Call fit-window-to-buffer with
 +      `preserve-size' t.
 +      (dired-mark-pop-up): Preserve size of window showing marked files.
 +      * electric.el (Electric-pop-up-window):
 +      * help.el (resize-temp-buffer-window): Call fit-window-to-buffer
 +      with `preserve-size' t.
 +      * minibuffer.el (minibuffer-completion-help):
 +      Use `resize-temp-buffer-window' instead of `fit-window-to-buffer'
 +      (Bug#19355).  Preserve size of completions window.
 +      * register.el (register-preview): Preserve size of register
 +      preview window.
 +      * tmm.el (tmm-add-prompt): Call fit-window-to-buffer
 +      with `preserve-size' t (Bug#1291).
 +      * window.el (with-displayed-buffer-window): Add calls to
 +      `window-preserve-size'.
 +      (window-min-pixel-size, window--preservable-size)
 +      (window-preserve-size, window-preserved-size)
 +      (window--preserve-size, window--min-size-ignore-p): New functions.
 +      (window-min-size, window-min-delta, window--resizable)
 +      (window--resize-this-window, split-window-below)
 +      (split-window-right): Amend doc-string.
 +      (window--min-size-1, window-sizable, window--size-fixed-1)
 +      (window-size-fixed-p, window--min-delta-1)
 +      (frame-windows-min-size, window--max-delta-1, window-resize)
 +      (window--resize-child-windows, window--resize-siblings)
 +      (enlarge-window, shrink-window, split-window): Handle preserving
 +      window sizes.
 +      (adjust-window-trailing-edge): Handle preserving window
 +      sizes.  Signal user-error instead of an error when there's no
 +      window above or below.
 +      (window--state-put-2): Handle horizontal scroll bars.
 +      (window--display-buffer): Call `preserve-size' if asked for.
 +      (display-buffer): Mention `preserve-size' alist member in doc-string.
 +      (fit-window-to-buffer): New argument PRESERVE-SIZE.
 +      * textmodes/ispell.el (ispell-command-loop): Suppress horizontal
 +      scroll bar on ispell's windows.  Don't count window lines and
 +      don't deal with dedicated windows.
 +      (ispell-show-choices, ispell-help): Let `ispell-display-buffer'
 +      do the window handling.
 +      (ispell-adjusted-window-height, ispell-overlay-window): Remove.
 +      (ispell-display-buffer): New function to reuse, create and fit
 +      window to ispell's buffers.  (Bug#3413)
 +
 +2014-12-18  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * emacs-lisp/package.el (package-activate): Do not re-activate or
 +      reload the dependencies (bug#19390).
 +
 +2014-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/cc-cmds.el (c-subword-mode): Alias to subword-mode.
 +      (c-update-modeline):
 +      * progmodes/cc-langs.el (c-mode-menu): Use c-subword-mode.
 +      * progmodes/cc-mode.el (subword-mode): Move autoload to cc-cmds.el.
 +      (c-mode-base-map): Use c-subword-mode.
 +
 +2014-12-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/mule-diag.el (describe-font-internal):
 +      Display additional info returned by font-info.
 +
 +      * linum.el (linum--face-width): Rename from linum--face-height,
 +      and use the new functionality of font-info.
 +      (linum-update-window): Use linum--face-width and frame-char-width,
 +      instead of approximating with height.
 +
 +2014-12-18  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-svn.el (vc-svn-dir-status-files): Revert the 2014-12-02
 +      change (bug#19387).  Use `apply' on `vc-dir-command'  (bug#19405).
 +
 +      * emacs-lisp/package.el (package-activate-1): Add RELOAD argument
 +      and a docstring.
 +      (package-activate): Call itself on dependencies on PACKAGE with
 +      the same FORCE argument.  Pass FORCE as RELOAD into
 +      `package-activate-1'  (bug#19390).
 +
 +2014-12-17  Sam Steingold  <sds@gnu.org>
 +
 +      * emacs-lisp/package.el (package--list-loaded-files):
 +      Handle `(nil ...)' elements in `load-history'.
 +
 +2014-12-17  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/tramp-sh.el (tramp-histfile-override): New variable.
 +      (tramp-open-shell, tramp-maybe-open-connection): Use it.
 +
 +2014-12-17  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc.el: Improve `dir-status-files' description.
 +
 +      * emacs-lisp/package.el (package--list-loaded-files): Don't call
 +      file-truename on load-history elements (bug#19390).
 +
 +2014-12-16  Nicolas Petton <petton.nicolas@gmail.com>
 +
 +      * emacs-lisp/seq.el: New file.
 +
 +2014-12-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * jit-lock.el (jit-lock-function): Don't defer if jit-lock-defer-time
 +      is 0 and there is no input pending.
 +
 +2014-12-15  Juri Linkov  <juri@linkov.net>
 +
 +      * replace.el (query-replace-read-from): Use query-replace-compile-replacement
 +      only on the return value (bug#19383).
 +
 +2014-12-15  Juri Linkov  <juri@linkov.net>
 +
 +      * isearch.el (isearch-lazy-highlight-search): Extend the bound of
 +      the wrapped search by the length of the search string to be able
 +      to lazy-highlight the whole search string at point (bug#19353).
 +
 +2014-12-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-fold-text): Don't bug out on zero-length text.
 +
 +2014-12-14  Alan Mackenzie  <acm@muc.de>
 +
 +      * cus-start.el (all): Add fast-but-imprecise-scrolling.
 +
 +2014-12-14  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * let-alist.el: Add lexical binding.
 +
 +2014-12-14  Steve Purcell  <steve@sanityinc.com>  (tiny change)
 +
 +      * emacs-lisp/package.el (package-menu-mode): Use an extra column
 +      for the "Version" column, to accomodate date-and-time-based versions.
 +
 +2014-12-14  Cameron Desautels  <camdez@gmail.com>
 +
 +      * cus-edit.el (custom-unsaved-options): New function, extracted
 +      from `customize-unsaved'.
 +      (custom-unsaved): Use it.
 +      (custom-prompt-customize-unsaved-options): New function.
 +      (Bug#19328)
 +
 +2014-12-14  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * fringe.el (fringe-bitmap-p): Fix 2014-12-05 breakage.
 +
 +2014-12-14  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Move ASYNC argument to the `diff' VC command to the fifth
 +      position, for better compatibility with existing third-party code,
 +      and document it.
 +
 +      * vc/vc.el (vc-diff-internal): Pass `async' argument to the
 +      backend `diff' command in the last position.
 +
 +      * vc/vc-svn.el (vc-svn-diff):
 +      * vc/vc-src.el (vc-src-diff):
 +      * vc/vc-sccs.el (vc-sccs-diff):
 +      * vc/vc-rcs.el (vc-rcs-diff):
 +      * vc/vc-mtn.el (vc-mtn-diff):
 +      * vc/vc-hg.el (vc-hg-diff):
 +      * vc/vc-git.el (vc-git-diff):
 +      * vc/vc-dav.el (vc-dav-diff):
 +      * vc/vc-cvs.el (vc-cvs-diff):
 +      * vc/vc-bzr.el (vc-bzr-diff):
 +      * obsolete/vc-arch.el (vc-arch-diff): Move ASYNC argument to the end.
 +
 +2014-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * emacs-lisp/cconv.el (cconv--analyze-use):
 +      Rename from cconv--analyse-use.
 +      (cconv--analyze-function): Rename from cconv--analyse-function.
 +      (cconv-analyze-form): Rename from cconv-analyse-form.
 +
 +2014-12-13  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * net/shr.el (shr-next-link): Don't error out at eob.
 +
 +2014-12-05  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +
 +      * isearch.el (isearch-open-necessary-overlays): Open overlay
 +      ending at point (bug#19333).
 +
 +2014-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-fold-text): New function.
 +      (shr-show-alt-text, shr-urlify, shr-tag-img): Use it to fold long
 +      alt/title texts.
 +      (shr-fold-text): Inhibit state from being altered.
 +
 +      * files.el (directory-files-recursively): Really check whether
 +      files are symlinks.
 +      (directory-name-p): New function.
 +      (directory-files-recursively): Use it.
 +
 +2014-12-13  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * emacs-lisp/package.el (package--list-loaded-files): New function
 +      to list files in a given directory which correspond to already
 +      loaded files.
 +      (package-activate-1): Reload files given by `package--list-loaded-files'.
 +      Fix bug#10125, bug#18443, and bug#18448.
 +
 +2014-12-13  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-svn.el (vc-svn-diff): Fix bug #19312.
 +
 +2014-12-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * simple.el (password-word-equivalents): Add "passcode", used for
 +      numeric secrets like PINs or RSA tokens.
 +
 +2014-12-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-get-remote-path): Use a login shell in
 +      order to determine `tramp-own-remote-path'.
 +
 +2014-12-13  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-parse-command):
 +      Quote `python-shell-interpreter`.  (Bug#19289)
 +
 +2014-12-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/python.el (python-indent-line): Use `noindent' in strings.
 +      (python-indent-levels): Document extra value.
 +      (python-indent-calculate-indentation): Return `noindent' in strings.
 +      (python-indent-post-self-insert-function)
 +      (python-indent-calculate-levels): Handle new value.
 +
 +2014-12-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/network-stream.el (network-stream-open-starttls): No need to
 +      check for the availability of `gnutls-available-p'.
 +
 +      * files.el (directory-files-recursively): Don't follow symlinks to
 +      other directories.
 +
 +2014-12-12  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el:
 +      * vc/vc.el: latest-on-branch-p is no longer a public method.
 +
 +      * vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el:
 +      * vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el:
 +      Remove `rollback' method, to be replaced in the future by uncommit.
 +
 +2014-12-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * vc/vc-hg.el (vc-hg-state): Make FILE absolute.  Handle the case
 +      that there is empty output.
 +
 +2014-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eldoc.el (eldoc-documentation-function): Change default.
 +      (eldoc-mode, eldoc-schedule-timer): Adjust to new default.
 +
 +2014-12-10  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * let-alist.el: Add new package and macro.
 +
 +2014-12-10  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el:
 +      * vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of vc-keep-workfiles,
 +      it's a shoot-self-in-foot archaism.  Workfiles are always kept.
 +
 +2014-12-10  Rasmus Pank Roulund  <emacs@pank.eu>
 +
 +      * net/ange-ftp.el (ange-ftp-switches-ok): Disallow flags causing
 +      trouble with ls over ftp.  These flags result in ls returning no
 +      output, causing Tramp-breakage.  (bug#19192)
 +
 +2014-12-10  Andreas Schwab  <schwab@suse.de>
 +
 +      * files.el (file-tree-walk): Use file-name-as-directory unconditionally.
 +
 +2014-12-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * files.el (directory-files-recursively):
 +      Use `file-name-all-completions' instead of `directory-files' for
 +      greater speed.
 +
 +      * net/shr.el (shr-tag-object): Don't bug out on text elements in
 +      <object>.
 +
 +2014-12-09  Bozhidar Batsov  <bozhidar@batsov.com>
 +
 +      * progmodes/ruby-mode.el (auto-mode-alist): Add .rabl, Berksfile
 +      and Puppetfile.
 +      (ruby-toggle-string-quotes): New command that allows you to quickly
 +      toggle between single-quoted and double-quoted string literals.
 +
 +2014-12-09  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-src.el (vc-src-do-comand): Prepend -- to file argument
 +      list, avoids problems witt names containing hyphens.
 +
 +2014-12-09  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      Sync with upstream verilog-mode revision aa4b777.
 +      * progmodes/verilog-mode.el (verilog-mode-version): Update.
 +      (verilog-auto-end-comment-lines-re, verilog-end-block-ordered-re)
 +      (verilog-set-auto-endcomments): Automatically comment property/
 +      endproperty blocks to match other similar blocks like sequence/
 +      endsequence, function/endfunction, etc.  Reported by Alex Reed.
 +      (verilog-set-auto-endcomments): Fix end comments for functions of
 +      type void, etc.  Detect the function- or task-name when
 +      auto-commenting blocks that lack an explicit portlist.
 +      Reported by Alex Reed.
 +      (verilog-nameable-item-re): Fix nameable items that can have an
 +      end-identifier to include endchecker, endgroup, endprogram,
 +      endproperty, and endsequence.  Reported by Alex Reed.
 +      (verilog-preprocessor-re, verilog-beg-of-statement):
 +      Fix indentation of property/endproperty around pre-processor
 +      directives.  Reported by Alex Reed.
 +      (verilog-label-be): When auto-commenting a buffer, consider
 +      auto-comments on all known keywords (not just a subset thereof).
 +      Reported by Alex Reed.
 +      (verilog-beg-of-statement): Fix labeling do-while blocks, bug842.
 +      Reported by Alex Reed.
 +      (verilog-beg-of-statement-1, verilog-at-constraint-p):
 +      Fix hanging with many curly-bracket pairs, bug663.
 +      (verilog-do-indent): Fix electric tab deleting form-feeds.
 +      Note caused by indent-line-to deleting tabls pre 24.5.
 +      (verilog-auto-output, verilog-auto-input, verilog-auto-inout)
 +      (verilog-auto-inout-module, verilog-auto-inout-in): Doc fixes.
 +      (verilog-read-always-signals, verilog-auto-sense-sigs)
 +      (verilog-auto-reset): Fix AUTORESET with always_comb and always_latch,
 +      bug844.  Reported by Greg Hilton.
 +
 +2014-12-09  Alex Reed  <acreed4@gmail.com>  (tiny change)
 +
 +      * progmodes/verilog-mode.el (verilog-no-indent-begin-re):
 +      Fix `verilog-indent-begin-after-if' nil not honoring 'forever',
 +      'foreach', and 'do' keywords.
 +      (verilog-endcomment-reason-re, verilog-beg-of-statement):
 +      Fix labeling do-while blocks, bug842.
 +      (verilog-backward-token): Fix indenting sensitivity lists with
 +      named events, bug840.
 +
 +2014-12-09  Reto Zimmermann  <reto@gnu.org>
 +
 +      Sync with upstream vhdl mode v3.36.1.
 +      * progmodes/vhdl-mode.el (vhdl-version, vhdl-time-stamp): Update.
 +      (vhdl-compiler-alist): Anchor all error regexps.
 +      (vhdl-compile-use-local-error-regexp): Change default to nil.
 +      (vhdl-asort, vhdl-anot-head-p): Remove.
 +      (vhdl-aput, vhdl-adelete, vhdl-aget): Simplify.
 +      Remove optional argument of vhdl-aget and update all callers.
 +      (vhdl-import-project): Also set `vhdl-compiler'.
 +
 +2014-12-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * files.el (find-files): New function.
 +
 +      * net/shr.el (shr-dom-print): Don't print comments.
 +      (shr-tag-svg): Give inline SVG images the right type.
 +
 +      * net/eww.el (eww-update-header-line-format): Mark valid/invalid
 +      certificates in the header line.
 +      (eww-invalid-certificate, eww-valid-certificate): New faces.
 +
 +2014-12-09  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (inferior-python-mode):
 +      Set `comint-prompt-read-only` to `t` only locally.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (nsm-check-protocol): Test for RC4 on `high'.
 +      (nsm-format-certificate): Include more data about the connection.
 +      (nsm-query): Fill the text to that it looks nicer.
 +      (nsm-check-protocol): Also warn if using SSL3 or older.
 +
 +2014-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/gud.el (gud-gdb-completions): Remove unused var `start'.
 +
 +      * obsolete/gulp.el (gulp-create-m-p-alist): Remove unused var `mnt-tm'.
 +
 +      * net/tramp.el (tramp-handle-make-symbolic-link): Mark unused arg.
 +
 +      * info.el (Info-mode-map): Remove left-over binding.
 +
 +      * emacs-lisp/avl-tree.el: Use lexical-binding and cl-lib.
 +      (avl-tree--root): Remove redundant defsetf.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (network-security-level): Remove the detailed
 +      description, which was already outdated, and refer the users to
 +      the manual.
 +      (nsm-check-protocol): Check for weak Diffie-Hellman prime bits
 +      (bug#19153).
 +
 +2014-12-06  Andrey Kotlarski  <m00naticus@gmail.com>
 +
 +      * net/eww.el (eww-buffers-mode): New major mode.
 +      (eww-list-buffers, eww-buffer-select, eww-buffer-show-next)
 +      (eww-buffer-show-previous, eww-buffer-kill, eww-buffer-show):
 +      New commands/functions (bug#19131).
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/gnutls.el (gnutls-negotiate): Ignore files found via
 +      'file-name-handler-alist' since the gnutls library can't use those
 +      (bug#15866).
 +
 +2014-12-08  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-hg.el (vc-hg-dir-status-files): Only include ignores files
 +      when FILES is non-nil (bug#19304).
 +
 +2014-12-08  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-arch.el: Move to obsolete directory so a test framework
 +      won't trip over bit-rot in it.  There has been no Arch snapshot
 +      for nine years.
 +
 +2014-12-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-follow-link): Revert prefix behaviour to
 +      previous behavior.
 +      (eww-copy-page-url): Add doc string.
 +
 +2014-12-07  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww): Move history recording here...
 +      (eww-browse-url): ... from here (bug#19253).
 +
 +      * net/eww.el (eww-browse-url): Use generate-new-buffer (was:
 +      iterating over possible buffer names.)
 +
 +2014-12-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-reload): Take a prefix to work locally (bug#19086).
 +      (eww-current-buffer): Compilation fix for bug#18550 patch.
 +
 +2014-12-07  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww-list-histories): Restore the history in the
 +      correct buffer (bug#18550).
 +
 +2014-12-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-bookmark-prepare): Display URLs in first by
 +      displaying shortened titles first (bug#16398).
 +
 +2014-12-07  Tom Willemse  <tom@ryuslash.org>  (tiny change)
 +
 +      * progmodes/python.el: Recognize docstrings.
 +      (python-docstring-at-p, python-font-lock-syntactic-face-function):
 +      New functions.
 +      (python-mode): Use them.
 +
 +2014-12-06  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-treeview.el (newsticker--treeview-list-add-item)
 +      (newsticker--treeview-propertize-tag): Bind tree menu to mouse-3.
 +      (newsticker--treeview-create-groups-menu)
 +      (newsticker--treeview-create-tree-menu): Remove.
 +      (newsticker--treeview-tree-open-menu): New.
 +      (newsticker-treeview-tree-click): Pass event to
 +      `newsticker-treeview-tree-do-click'.
 +      (newsticker-treeview-tree-do-click): Open treemenu on mouse-3.
 +
 +2014-12-05  Juri Linkov  <juri@linkov.net>
 +
 +      * comint.el (comint-history-isearch-search)
 +      (comint-history-isearch-wrap): Use field-beginning instead of
 +      comint-line-beginning-position.
 +      (comint-send-input): Go to the end of the field instead of the end
 +      of the line to accept whole multi-line input.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00305.html
 +
 +2014-12-05  Juri Linkov  <juri@linkov.net>
 +
 +      * minibuffer.el (minibuffer-completion-help):
 +      Compare selected-window with minibuffer-window to check whether
 +      completions should be displayed near the minibuffer.  (Bug#17809)
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00311.html
 +
 +2014-12-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * vc/vc-mtn.el (vc-mtn-root):
 +      * vc/vc-svn.el (vc-svn-registered): Make FILE absolute.
 +
 +2014-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-smie-sh-rules): Go back to the beginning
 +      of the whole pipe when indenting an opening keyword after a |.
 +      Generalize this treatment to opening keywords like "while" (bug#18031).
 +
 +2014-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (newline): Place the hook buffer-locally,
 +      to make sure it's first.
 +
 +      * progmodes/prog-mode.el (prettify-symbols--compose-symbol):
 +      Fix handling of symbols with different syntax at beginning/end or with
 +      symbol rather than word syntax.
 +
 +2014-12-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (line-move): If noninteractive, call line-move-1, not
 +      forward-line, since the former is compatible with line-move-visual
 +      both in terms of the column to which it moves and the return
 +      value.  (Bug#19211)
 +
 +2014-12-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/ediff-init.el (ediff-odd-p): Remove.
 +      (ediff-background-face): Use cl-oddp instead.
 +      (ediff-buffer-live-p): Make it a defsubst.
 +
 +      * tooltip.el (tooltip-region-active-p): Remove.
 +
 +      * net/shr.el (shr-char-breakable-p, shr-char-kinsoku-bol-p)
 +      (shr-char-kinsoku-eol-p, shr-char-nospace-p): Use define-inline.
 +
 +      * fringe.el (fringe-bitmap-p): Make it a plain function.
 +
 +      * emacs-lisp/eieio-core.el: Prefer inlinable functions over macros.
 +      (class-p, generic-p, eieio-object-p, class-abstract-p):
 +      Make them defsubst, so as to avoid corner case problems where
 +      the arg might be evaluated in the condition-case, or it can't be passed
 +      to higher-order functions like `cl-some'.
 +
 +2014-12-05  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +
 +      * wid-edit.el (widget-choose): Let numeric keypad work (bug#19268)
 +      and remove old menu-related code.
 +
 +2014-12-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-display-pdf): Let mailcap determine how to
 +      display PDF files (bug#19270).
 +
 +2014-12-05  Juri Linkov  <juri@linkov.net>
 +
 +      Compare with the most recent window by default.
 +      * vc/compare-w.el (compare-windows-get-window-function): New defcustom.
 +      (compare-windows-get-recent-window)
 +      (compare-windows-get-next-window): New functions.
 +      (compare-windows, compare-windows-sync-default-function):
 +      Use `compare-windows-get-window-function' instead of `next-window'.
 +      (compare-windows): Add diff/match messages with region boundaries.
 +      (Bug#19170)
 +
 +2014-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (filter): Remove.  Use `cl-remove-if-not' or `seq-filter'.
 +
 +2014-12-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr--extract-best-source): Ignore non-text children.
 +
 +2014-12-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement copying of a buffer portion while preserving visual order.
 +      * simple.el (bidi-directional-controls-chars)
 +      (bidi-directional-non-controls-chars): New variables.
 +      (squeeze-bidi-context-1, squeeze-bidi-context)
 +      (line-substring-with-bidi-context)
 +      (buffer-substring-with-bidi-context): New functions.
 +
 +      * files.el (file-tree-walk): Doc fix.
 +
 +2014-12-04  Rupert Swarbrick  <ruperts@broadcom.com> (tiny change)
 +          Rüdiger Sonderfeld  <ruediger@c-plusplus.net>
 +
 +      * autoinsert.el (auto-insert-alist): Update C/C++ header and
 +      program support to match more extensions.  Replace non-alnum
 +      characters when generating include guards (headers) and check for
 +      more extensions when generating includes (programs)
 +      (bug#19254).
 +
 +2014-12-03  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * files.el (file-tree-walk): Fix docstring.
 +
 +2014-12-03  Karl Fogel  <kfogel@red-bean.com>
 +
 +      Fix bug whereby saving files hung in VC hook.
 +
 +      Saving a buffer visiting a file under SVN control would hang if
 +      the remote repository were unreachable, because the VC hooks tried
 +      to run "svn status -u" on the file, where the "-u" tells svn to
 +      get update information from the remote repository.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg00174.html
 +
 +      * vc/vc-svn.el (vc-svn-state): Remove optional `localp'
 +      argument and always pass "-v" to "svn status", never "-u".
 +
 +2014-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/inline.el: Fix up copyright header.
 +      (inline-quote, inline-const-p, inline-const-val, inline-error):
 +      Silence compiler warnings.
 +      (inline-letevals): Fix edebug spec.
 +      (inline--testconst-p): Consider lambda expressions as const-p.
 +      (inline--getconst-val): Use inline--testconst-p.
 +
 +      * minibuffer.el (completion-table-dynamic): Add arg `switch-buffer'
 +      and change default to stay in the minibuffer when called from
 +      the minibuffer (bug#19250).
 +      (lazy-completion-table): Use this new argument to preserve the
 +      old behavior.
 +
 +      * progmodes/elisp-mode.el (elisp--local-variables): Don't burp on
 +      incorrect lexical elements (bug#19250).
 +
 +2014-12-03  A. N. Other  <none@example.com>
 +
 +      * files.el (file-tree-walk): Lisp translation of ANSI ftw(3).
 +
 +2014-12-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * whitespace.el (whitespace-big-indent-regexp): Add :version.
 +
 +2014-12-02  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * subr.el (filter): New macro.  Because it's just silly for a Lisp
 +      not to have this in 2014.  And VC needs it.
 +
 +      * vc.el: All backends: API simplification: Abolish dir-status.
 +      It's replaced by dir-status-files.
 +
 +      * vc.el: All backends: API simplification: Remove 4th
 +      'default-state' argument from vc-dir-status files and its backend
 +      methods - no backend method ever set it.  It was used only in the
 +      fallback method to to set a default of 'up-to-date, though a
 +      convoluted call chain obscured this.
 +
 +      * vc-hooks.el: Bind vc-delete-file to Ctrl-x v delete.
 +
 +      * vc.el (vc-expand-dirs): Now takes a second BACKEND argument,
 +      improving behavior on directories using multiple file-oriented VCSes.
 +
 +      * vc/vc.el: All backends: API simplification; clear-headers
 +      is no longer a public method.  It is now local to the one place
 +      it's used, in the RCS steal-lock method.
 +
 +2014-12-01  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc.el: In all backends: API simplification; could-register
 +      is no longer a public method.  (vc-cvs.el still has a private
 +      implementation.)
 +
 +      * vc/vc.el: In all backends: API cleanup; the backend diff method
 +      takes an explicit async flag.  This eliminates a particularly ugly
 +      global.
 +
 +      * vc-bzr.el: Restore vc-bzr-state-heuristic as a private method.
 +      VC randomly/unpredictably fails without it; cause not yet established.
 +
 +2014-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Merge some of the differences from the standalone CC-mode.
 +      The main change is to only use the `category' text-property only when
 +      available.  For that many calls are changed to use c-get-char-property,
 +      c-next-single-property-change, c-sc-scan-lists,
 +      c-sc-parse-partial-sexp, c-unmark-<->-as-paren.
 +
 +      * progmodes/cc-mode.el (c-just-done-before-change): New var.
 +      (c-basic-common-init): Initialize it.
 +      (c-common-init): Only use mode-require-final-newline when available.
 +      (c-before-change): Check and set c-just-done-before-change.
 +      (c-after-change): Re-set c-just-done-before-change.
 +      (c-advise-fl-for-region): New macro.
 +      (lazy-lock-defer-rest-after-change, lazy-lock-defer-line-after-change)
 +      (font-lock-after-change-function, jit-lock-after-change):
 +      Advise if needed.
 +
 +      * progmodes/cc-langs.el (c-modified-constant): New lang var.
 +      (c-known-type-key): Don't make a list just to throw it away.
 +
 +      * progmodes/cc-engine.el (c-invalidate-state-cache, c-parse-state):
 +      Handle the case where categories are not available.
 +      (c-record-parse-state-state, c-replay-parse-state-state):
 +      Handle marker values.
 +      (c-before-change-check-<>-operators): Look for the `syntax-table'
 +      property rather than for the corresponding `category'.
 +      (c-looking-at-decl-block): Remove unused var
 +      `c-disallow-comma-in-<>-arglists'.
 +      (c-forward-<>-arglist-recur): Remove unused var
 +      `orig-record-found-types'.
 +
 +      * progmodes/cc-defs.el (c-version): Bump up to 5.33.
 +      (c-use-category): New const.
 +      (c-next-single-property-change): New macro.
 +      (c-region-is-active-p): Prefer region-active-p when available.
 +      (c-search-backward-char-property): Fix old min/max typo; probably
 +      a copy/paste error.
 +      (c-mark-<-as-paren, c-mark->-as-paren, c-unmark-<->-as-paren):
 +      Turn them into macros that obey c-use-category.
 +      (c-sc-scan-lists-no-category+1+1, c-sc-scan-lists-no-category+1-1)
 +      (c-sc-scan-lists-no-category-1+1, c-sc-scan-lists-no-category-1-1)
 +      (c-sc-scan-lists, c-sc-parse-partial-sexp)
 +      (c-looking-at-non-alphnumspace): New macros.
 +      (c-sc-parse-partial-sexp-no-category): New function.
 +      (c-emacs-features): Add `category-properties' element.
 +
 +      * progmodes/cc-cmds.el (c-forward-into-nomenclature)
 +      (c-backward-into-nomenclature): Use cc-subword if subword-mode is
 +      not available.
 +      (c-beginning-of-defun, c-end-of-defun, c-mark-function)
 +      (c-indent-line-or-region): Use c-region-is-active-p.
 +
 +      * progmodes/cc-bytecomp.el (cc-bytecomp-unbound-variables)
 +      (cc-bytecomp-original-functions, cc-bytecomp-original-properties)
 +      (cc-bytecomp-loaded-files): Re-set each time the file is loaded.
 +      (cc-bytecomp-obsolete-var, cc-bytecomp-ignore-obsolete)
 +      (cc-bytecomp-obsolete-fun): Delete unused functions.
 +
 +      * progmodes/cc-align.el (c-lineup-respect-col-0): New function.
 +
 +2014-12-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-dom-print): Fix up `shr-dom-print' after the
 +      dom.el changes.
 +
 +2014-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc.el (vc-find-conflicted-file): Look for conflicted files in the
 +      current "project" rather than just the current directory.
 +      * vc/vc-git.el (vc-git-conflicted-files): Clarify in which directory
 +      the file names make sense.
 +
 +      * vc/smerge-mode.el (smerge-swap): New command.
 +
 +      * vc/diff-mode.el (diff-kill-applied-hunks): New command.
 +
 +2014-12-01  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-treeview.el (newsticker--treeview-item-show):
 +      Check window liveliness before measuring its width.
 +
 +      * net/newst-backend.el (newsticker--get-news-by-url-callback):
 +      Pass correct status to `newsticker--sentinel-work'.
 +      (newsticker--sentinel-work): Use "newsticker--download-error" as
 +      guid in order to prevent multiple "Could not download..."
 +      messages.  Fixes bug#19166.
 +
 +2014-12-01  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww-render): Call `eww-after-render-hook' in the
 +      correct buffer (bug#19225).
 +
 +2014-12-01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (network-security-level): Change the default to `medium'.
 +
 +      * net/eww.el (eww): Leave point in a place that doesn't cause
 +      scrolling when displaying "Loading...".
 +
 +2014-12-01  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc.el, vc/vc-cvs.el, vc/vc-rcs.el, vc/vc-svn.el: The 'merge'
 +      backend method of RCS/CVS/SVN is now 'merge-file', to contrast with
 +      'merge-branch'.  Prompting for merge revisions is pushed down to
 +      the back ends; this fixes a layering violation that caused bad
 +      behavior with SVN.
 +
 +      * vc/vc.el, vc-hooks.el: All backends: API simplification;
 +      vc-stay-local-p and repository-hostname are no longer public
 +      methods.  Only the CVS and SVN backends used these, and the SVN
 +      support was conditioned out because svn status -v is too slow.
 +      The CVS back end retains this machinery and the vc-stay-local
 +      configuration variable now only affects it.
 +
 +2014-12-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/inline.el: New file.
 +
 +2014-12-01  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc.el, vc-hooks.el: All backends: API simplification;
 +      vc-state-heuristic is no longer a public method, having been
 +      removed where it is redundant, unnecessary, or known buggy.
 +      This eliminated all backends except CVS.  Eliminates bug#7850.
 +
 +      * vc/vc-cvs.el, vc/vc-hooks.el, vc/vc-rcs.el, vc/vc-sccs.el:
 +      Eliminate vc-mistrust-permissions.  It was only relevant to the
 +      RCS and SCCS back ends and defaulted to t.  Code now always
 +      mistrusts permissions - by actual measurement the effect on
 +      performance is negligible.  As a side effect bug#11490 is now
 +      irrelevant.
 +
 +      * vc/vc.el, vc-hooks.el: All backends: API simplification;
 +      vc-workfile-unchanged-p is no longer a public method (but the RCS
 +      and SCCS back ends retain it as a private method used in state
 +      computation).  This method was redundant with vc-state and usually
 +      implemented as a trivial call to same.  Fixes the failure mode
 +      described in bug#694.
 +
 +      * vc/vc.el: All backends: API simplification; init-revision is
 +      gone, and vc-registered functions no longer take an
 +      initial-revision argument.
 +
 +2014-11-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/vc-src.el (vc-src, vc-src-diff-switches)
 +      (vc-src-master-templates): Fix :version tags.
 +
 +2014-11-29  Paul Rankin  <paul@tilk.co>  (tiny change)
 +
 +      * outline.el (outline-move-subtree-down): Refactor and improve code.
 +
 +2014-11-29  Stephen Berman  <stephen.berman@gmx.net>
 +          Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * outline.el (outline-move-subtree-down): Make sure we can move
 +      forward to find the end of the subtree and the insertion point
 +      (bug#19102).
 +
 +2014-11-29  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-completion-setup-code):
 +      Use __builtin__ module (or builtins in Python 3) and catch all errors
 +      when importing readline and rlcompleter.
 +
 +2014-11-29  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * calendar/todo-mode.el: Handle calling revert-buffer (bug#19187).
 +      (todo-revert-buffer): New function.
 +      (todo-modes-set-1): Use it as the buffer-local value of
 +      revert-buffer-function.
 +
 +2014-11-29  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * calendar/todo-mode.el (todo-mode): If called interactively, just
 +      display a message saying to call todo-show to enter Todo mode
 +      (Bug#19112).
 +
 +2014-11-29  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-hg.el (vc-hg-dir-status-files): Include ignored files.
 +      (Bug#18579)
 +
 +      * vc/vc-bzr.el (vc-bzr-after-dir-status): Don't skip ignored
 +      files.  (Bug#18579)
 +
 +2014-11-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * textmodes/makeinfo.el (makeinfo-buffer): Make it work also for
 +      remote `buffer-file-name'.
 +
 +2014-11-29  Leo Liu  <sdl.web@gmail.com>
 +
 +      * calendar/diary-lib.el (calendar-mark-1): Fix thinko.
 +
 +2014-11-29  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Set PYTHONUNBUFFERED on shell startup.
 +
 +      * progmodes/python.el (python-shell-unbuffered): New var.
 +      (python-shell-calculate-process-environment): Use it.
 +
 +2014-11-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-action-password): Clean password on subsequent
 +      attempts even if there was no wrong password indication.  (Bug#19047)
 +
 +      * net/tramp-sh.el (tramp-get-remote-locale): Return "LC_ALL=C" as
 +      fallback.
 +      (tramp-open-connection-setup-interactive-shell): No need to check
 +      for nil as `tramp-get-remote-locale' return value.
 +
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc-git.el (vc-git-command, vc-git--call):
 +      Bind coding-system-for-read and coding-system-for-write to
 +      vc-git-commits-coding-system.
 +      (vc-git-previous-revision): Use "~1" instead of "^", since the
 +      latter is a special character for MS-Windows system shells.
 +
 +2014-11-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Improve XEmacs compatibility.
 +
 +      * net/tramp.el (tramp-autoload-file-name-handler):
 +      Wrap `temporary-file-directory' by `symbol-value', it doesn't
 +      exist in XEmacs.
 +      (tramp-read-passwd): Don't use `with-timeout-suspend' and
 +      `with-timeout-unsuspend' if they don't exist, like in XEmacs.
 +      (tramp-time-less-p, tramp-time-subtract): Remove functions.
 +      (tramp-handle-file-newer-than-file-p, tramp-time-diff):
 +      * net/tramp-adb.el (tramp-adb-ls-output-time-less-p):
 +      * net/tramp-cache.el (tramp-get-file-property):
 +      * net/tramp-smb.el (tramp-smb-handle-insert-directory):
 +      Use `time-less-p' and `time-subtract, respectively.
 +
 +      * net/tramp-adb.el (top): Do not require time-date.el.
 +
 +      * net/tramp-compat.el (top): Require time-date.el for XEmacs.
 +
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 +      Check, whether `utf-8' is a valid coding system.
 +
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc.el (vc-retrieve-tag): Doc fix.
 +
 +2014-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (execute-extended-command--shorter): Fix the "M-p" case
 +      (bug#19152).
 +
 +2014-11-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Fix two issues around help-window-select.  (Bug#11039) (Bug#19012)
 +      * help.el (help-window-old-frame): New variable.
 +      (help-window-select): Default to nil (Bug#11039).
 +      Rewrite doc-string.
 +      (help-window-setup): When the help window appears on another
 +      frame and `help-window-select' is non-nil, give that frame input
 +      focus too (Bug#19012).
 +      (with-help-window): Store selected frame in
 +      help-window-old-frame.
 +
 +2014-11-28  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-treeview.el (newsticker--treeview-load): Take care of
 +      nil value for `newsticker-groups-filename'.
 +
 +2014-11-28  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epa.el (epa-sign-file, epa-encrypt-file, epa-decrypt-region)
 +      (epa-sign-region, epa-encrypt-region):
 +      Use `epg-context-set-{passphrase,progress}-callback', instead of
 +      `setf'.  This partially reverts commit 9e48a95c (bug#19150).
 +      Reported by José A. Romero L.
 +
 +2014-11-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-restore-history):
 +      Bind `inhibit-modification-hooks' instead of `after-change-functions'.
 +
 +2014-11-27  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el (newsticker--parse-atom-1.0):
 +      Handle embedded (x)html in summary node.
 +
 +2014-11-27  Sam Steingold  <sds@gnu.org>
 +
 +      * menu-bar.el (menu-bar-open): When everything else fails,
 +      use (mouse-menu-bar-map).
 +
 +2014-11-27  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-treeview.el (newsticker-groups-filename):
 +      Change default value to nil.  Point out that variable is obsolete in doc
 +      string.
 +      (newsticker--treeview-load): Change wording of the questions the
 +      user is asked when `newsticker-groups-filename' is found to be
 +      used and we offer to read and remove the groups file.  (Bug#19165)
 +
 +2014-11-27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww): Record the new URL immediately, so that if the
 +      HTTP fetch fails, we have the right URL in the buffer.
 +      (eww-process-text-input): Don't shorten the input field if
 +      deleting at the last character (bug#19085).
 +      (eww-restore-history): Inhibit change functions while restoring
 +      the history.
 +      (eww-process-text-input): Fix deletion at the start of the field, too.
 +      (eww-mode): Revert mistanken removal of `buffer-disable-undo'.
 +      (eww-process-text-input): Try to keep track of the size more reliably.
 +
 +      * dom.el (dom-pp): New function.
 +
 +2014-11-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc-bzr.el (vc-bzr-print-log, vc-bzr-expanded-log-entry):
 +      Don't assume --long is the default for "bzr log", always specify
 +      it explicitly, in case the user defined an alias for 'log' that
 +      uses some other format.
 +
 +2014-11-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-eldoc--get-doc-at-point):
 +      Strip shell output before returning.  (bug#18794)
 +
 +2014-11-27  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      Fix indentation before `!=' and after `+='.  Originally reported
 +      in https://github.com/mooz/js2-mode/issues/174.
 +      * progmodes/js.el (js--indent-operator-re): Make assignments and
 +      (in)equality operator a separate case.
 +      (js--continued-expression-p): Escape the second `+' in the regexp.
 +
 +2014-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.el (handle-select-window): Deactivate shift-region (bug#19003).
 +
 +2014-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (nsm-new-fingerprint-ok-p): Display the certificate
 +      when querying about new certificates.
 +
 +      * net/shr.el (shr-make-table-1): dom.el changes for table rendering.
 +
 +      * dom.el (dom-by-tag): Use `equal' for comparisons so that tags
 +      can be strings.
 +      (dom-elements): Protect against non-text nodes.
 +      (dom-non-text-children): New function.
 +
 +      * net/eww.el (eww-tag-title): Use `dom-text'.
 +
 +2014-11-26  Sam Steingold  <sds@gnu.org>
 +
 +      * textmodes/sgml-mode.el (sgml-validate-command): Pass -utf8 to tidy.
 +
 +2014-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-highest-readability): More dom.el fixes.
 +
 +2014-11-26  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el (newsticker--parse-generic-items):
 +      Take care of UIDs when adding elements to cache.
 +
 +2014-11-26  Alan Mackenzie  <acm@muc.de>
 +
 +      Remove spurious reference to symbol category_properties.
 +      * progmodes/cc-engine.el (c-state-pp-to-literal): Fix here.
 +
 +2014-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el: Use the new dom.el accessors throughout.
 +
 +      * net/shr.el: Ditto.
 +
 +      * dom.el: New file.
 +
 +2014-11-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * arc-mode.el (archive-visit-single-files): Add :version.
 +
 +2014-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (nsm-format-certificate): Don't bug out on missing
 +      elements.
 +      (nsm-warnings-ok-p): The new version of this function always
 +      returned nil when everything was OK.
 +
 +2014-11-25  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (gnutls): Set :group to 'comm so it's near NSM.
 +
 +      * net/nsm.el (nsm-check-tls-connection, nsm-save-host)
 +      (nsm-warnings-ok-p): Use `gnutls-peer-status-warning-describe'.
 +
 +2014-11-20  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
 +
 +      * emacs-lisp/byte-run.el (function-put): Match argument names to
 +      docstring.
 +
 +2014-11-24  Sam Steingold  <sds@gnu.org>
 +
 +      * vc/vc-hooks.el (vc-directory-exclusion-list):
 +      Fix a trivial typo (bug#19171).
 +
 +2014-11-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc-hooks.el (vc-state-base-face): Don't override
 +      mode-line-inactive.
 +
 +2014-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-set-character-encoding): Use `read-coding-system'.
 +      (eww-process-text-input): Inhibit read only so that input fields
 +      don't get shortened (bug#19085).
 +
 +2014-11-24  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/macroexp.el (macroexp-let2*): New macro.
 +
 +      * window.el (with-temp-buffer-window)
 +      (with-current-buffer-window, with-displayed-buffer-window):
 +      * emacs-lisp/cl-macs.el (cl--compiler-macro-adjoin):
 +      * emacs-lisp/cl-lib.el (substring):
 +      * emacs-lisp/cl-extra.el (cl-getf): Use it.
 +
 +2014-11-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * isearch.el (isearch-update): Don't assume
 +      pos-visible-in-window-p will return nil when point is hscrolled
 +      out of view.  (Bug#19157)
 +
 +2014-11-20  Andrey Kotlarski  <m00naticus@gmail.com>
 +
 +      * net/eww.el (eww-browse-url): Optionally create new eww buffer.
 +      (eww-follow-link): Follow in new buffer in case of prefix
 +      argument, open externally with double prefix (bug#19130).
 +
 +2014-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-display-html): Decode the document-defined charset.
 +      (eww): Pop to the *eww* buffer immediately after executing the
 +      `M-x eww' command to avoid having buffers pop up later.
 +      (eww-display-html): Don't pop the *eww* buffer.
 +      (eww-display-raw): Ditto.
 +      (eww-display-image): Ditto.
 +      (eww-follow-link): Make going to #targets in the page work again.
 +
 +2014-11-23  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww-suggest-uris): New variable.
 +      (eww-suggested-uris): New function.
 +      (eww): Default to URL under point.
 +      (eww-links-at-point): New function.
 +
 +2014-11-20  Mark Oteiza  <mvoteiza@udel.edu>  (tiny change)
 +
 +      * net/eww.el (eww-add-bookmark): Fix bookmark titles.
 +
 +2014-11-17  Mark Oteiza  <mvoteiza@udel.edu>  (tiny change)
 +
 +      * net/eww.el (eww-mode-map): Bind backtab to shr-previous-link.
 +
 +2014-11-23  Kenjiro Nakayama  <nakayamakenjiro@gmail.com>
 +
 +      * net/eww.el (eww-set-character-encoding): New command and keystroke.
 +      (eww-display-raw): Use it (bug#16225).
 +
 +2014-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/nsm.el (network-security-level): Rename from
 +      `nsm-security-level' and documented.
 +
 +      * mail/smtpmail.el (smtpmail-via-smtp): Warn unless encrypted and
 +      we're sending a password.
 +
 +      * net/nsm.el: New file that implements a Network Security Manager.
 +
 +      * net/network-stream.el (open-network-stream): Add a new
 +      :warn-unless-encrypted parameter.
 +      (network-stream-open-plain): Allow warning unless encrypted.
 +      (network-stream-open-starttls): Call the Network Security Manager.
 +      (network-stream-open-tls): Ditto.
 +
 +2014-11-23  Leo Liu  <sdl.web@gmail.com>
 +
 +      * calendar/cal-china.el (calendar-chinese-from-absolute-for-diary)
 +      (calendar-chinese-to-absolute-for-diary)
 +      (calendar-chinese-mark-date-pattern, diary-chinese-anniversary):
 +      Handle leap months in Chinese calendar.  (Bug#18953)
 +
 +2014-11-22  Alan Mackenzie  <acm@muc.de>
 +
 +      Fix error with `mark-defun' and "protected:" in C++ Mode.
 +      Fixes: debbugs:19134.
 +
 +      * progmodes/cc-cmds.el (c-where-wrt-brace-construct): Handle a
 +      return code of (label) from c-beginning-of-decl-1.
 +
 +2014-11-22  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el (newsticker--sentinel-work):
 +      Tell `libxml-parse-xml-region' to discard comments.  Fixes bug#18787.
 +
 +2014-11-22  Michael Albinus  <michael.albinus@gmx.de>
 +
 +        * net/tramp-sh.el (tramp-sh-handle-start-file-process)
 +      (tramp-sh-handle-process-file): Propagate `process-environment'.
 +
 +      * vc/vc-hg.el (vc-hg-state): No special handling for remote files;
 +      Tramp propagates environment variables now.
 +
 +2014-11-22  Eric S. Raymond  <esr@snark>
 +
 +      * vc/vc-filewise.el: New file to isolate code used only by the
 +      file-oriented back ends (SCCS/RCS/CVS/SRC) which should not
 +      live in vc.el and certainly not in vc-hooks.el.
 +
 +      * vc/vc-hooks.el, vc-rcs.el, vc-sccs.el: vc-name  -> vc-master-name.
 +      This is preparatory to isolating all the 'master' functions
 +      used only by the file-oriented back ends.  With this done first,
 +      the substantive diffs will be easier to read.
 +
 +2014-11-21  Rüdiger Sonderfeld  <ruediger@c-plusplus.net>
 +
 +      * play/morse.el (nato-alphabet): Mark URL in docstring in a way
 +      that is recognized by `help-mode'.
 +
 +2014-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * desktop.el (desktop-create-buffer): Use activate-mark to set
 +      `mark-active' (bug#19058).
 +
 +2014-11-21  Eric S. Raymond  <esr@snark>
 +
 +      * vc/vc-src.el (vc-src-state): Fix bug that produced spurious
 +      nil state.
 +
 +2014-11-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc.el (vc-deduce-fileset): Support invocation from
 +      *vc-change-log* buffer.  (Bug#19084)
 +
 +2014-11-13  Matthew Leach  <matthew@mattleach.net>
 +
 +      * arc-mode.el (archive-visit-single-files): New.
 +      (archive-mode): Visit file if archive contains a single file.
 +      (Bug#1702)
 +
 +2014-11-21  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * vc/vc.el: Fix a typo in the commentary.
 +
 +2014-11-20  Eric S. Raymond  <esr@snark.thyrsus.com>
 +
 +      * vc/vc-src.el, vc/vc.el: Added support for SRC.  Needs more
 +      testing and a real log-view mode.
 +
 +      * vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el, vc/vc-git.el:
 +      * vc/vc-hg.el, vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el:
 +      * vc/vc-svn.el, vc/vc.el: Remove editable argument from the backend
 +      checkout methods; where it matters (which is only in SCCS and RCS)
 +      files are always checked out editable.  This may actually have
 +      been dynamically true already - it looks like the vc-next-action
 +      code evolved past visiting the other case.  Tested with RCS.
 +
 +      * vc/vc-arch.el, vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el:
 +      * vc/vc-git.el, vc/vc-hg.el, vc/vc-mtn.el, vc/vc-rcs.el:
 +      * vc/vc-sccs.el, vc/vc-svn.el, vc/vc.el: Remove never-used rev
 +      argument from the backend checkin methods.  Only the RCS, SCCS,
 +      and CVS back ends tried to do anything with it, and that code was
 +      never exercised.  Chiseling away the cruft of decades...
 +
 +2014-11-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-render): Remove a no-op :title setting.
 +
 +2014-11-19  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww-history-limit): New variable.
 +      (eww-save-history): Use it (bug#19105).
 +      (eww-reload): Reload the page in the right buffer.
 +
 +2014-11-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-desktop-misc-data): Use `cl-remove-duplicates'.
 +
 +2014-11-19  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/eww.el (eww-desktop-remove-duplicates)
 +      (eww-restore-desktop, eww-restore-reload-prompt): New variables.
 +      (eww-mode): Set up desktop mode (bug#18010).
 +      (eww-desktop-data-save, eww-desktop-data-1)
 +      (eww-desktop-history-duplicate, eww-desktop-misc-data)
 +      (eww-restore-desktop): New functions.
 +
 +2014-11-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * vc/vc.el (vc-log-internal-common): Turn on log-view-mode in the
 +      correct buffer.  (Bug#19101)
 +
 +2014-11-19  Rüdiger Sonderfeld  <ruediger@c-plusplus.net>
 +
 +      * vc/vc-git.el (vc-git-diff): Use "difftool -x diff" with
 +      `diff-switches' if `vc-git-diff-switches' is nil.  (Bug#19099)
 +
 +2014-11-19  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * ido.el (ido-bury-buffer-at-head): New command.
 +      (ido-buffer-completion-map): Bind it to C-S-b.
 +
 +2014-11-18  Juri Linkov  <juri@linkov.net>
 +
 +      * simple.el (next-line-or-history-element): Wrap next-line
 +      in with-no-warnings.
 +      (previous-line-or-history-element): Wrap previous-line
 +      in with-no-warnings.
 +
 +2014-11-18  Juri Linkov  <juri@linkov.net>
 +
 +      * progmodes/grep.el (grep-compute-defaults):
 +      Compute grep-highlight-matches before its use.
 +
 +2014-11-18  Juri Linkov  <juri@linkov.net>
 +
 +      * replace.el (query-replace-from-to-separator): Turn defvar into
 +      defcustom.  Wrap char-displayable-p in ignore-errors because an
 +      attempt to autoload char-displayable-p fails during pre-loading.
 +      Move (propertize "\0" ... 'separator t) out of customizable part
 +      to query-replace-read-from.
 +      (query-replace-read-from): Call custom-reevaluate-setting on
 +      query-replace-from-to-separator to reevaluate the separator
 +      depending on the return value of char-displayable-p.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00466.html
 +
 +2014-11-18  Juri Linkov  <juri@linkov.net>
 +
 +      * bindings.el (minibuffer-local-map): Rebind [down] from
 +      next-history-element to next-line-or-history-element, and [up]
 +      from previous-history-element to previous-line-or-history-element.
 +
 +      * simple.el (next-line-or-history-element)
 +      (previous-line-or-history-element): New commands.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00822.html
 +
 +2014-11-18  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/nadvice.el (define-advice): New macro.
 +      * emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
 +      Add define-advice.
 +      (lisp-font-lock-keywords-1): Add define-advice.
 +
 +2014-11-18  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epg.el (epg-context): New slot EDIT-CALLBACK.
 +      (epg--process-filter): Call EDIT-CALLBACK when editing a key.
 +      (epg-reset): Reset EDIT-CALLBACK of the context.
 +      (epg-start-edit-key): New function.
 +      (epg-edit-key): New function.
 +
 +2014-11-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port new time stamp handling to Emacs 23.2.
 +      This fix is for Gnus.  Reported by Katsumi Yamaoka.
 +      * calendar/time-date.el (time-add, time-subtract, time-less-p):
 +      Use eval-and-compile, not eval-when-compile.
 +
 +2014-11-18  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epg.el (epg-context-set-passphrase-callback)
 +      (epg-context-set-progress-callback): Check if the CALLBACK
 +      argument is a function, instead of a cons.
 +
 +2014-11-18  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents)
 +      (epa-file-write-region): Remove redundant check of
 +      epa-pinentry-mode.
 +      * epa.el (epa-sign-file, epa-encrypt-file, epa-decrypt-region)
 +      (epa-sign-region, epa-encrypt-region): Remove redundant check of
 +      epa-pinentry-mode.
 +
 +2014-11-18  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epa-file.el (epa-file-insert-file-contents): Don't show
 +      "*Error*" buffer if input file does not exist.
 +      Reported by Herbert J. Skuhra.
 +
 +2014-11-18  Paul Pogonyshev  <pogonyshev@gmail.com>
 +          Rüdiger Sonderfeld  <ruediger@c-plusplus.net>
 +
 +      * progmodes/cc-langs.el: Support some of the new keywords in C++11.
 +      An alternative version of the patch from bug#13871.
 +      (c-operators): Add "alignof".
 +      (c-primitive-type-kwds): Add "char16_t", "char32_t".
 +      (c-type-modifier-kwds): Add "constexpr", "noexcept".
 +      (c-modifier-kwds): Add "thread_local".
 +      (c-constant-kwds): Add "nullptr".
 +
 +2014-11-17  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/tildify.el (tildify-pattern, tildify-space-string):
 +      New variables for specifying tildify pattern and representation of
 +      a hard space -- a no-break space by default -- respectively.
 +      Being buffer-local they are much easier to handle than
 +      `tildify-string-alist' and `tildify-pattern-alist' respectively
 +      that have been used so far.  They also works better with derived
 +      modes.
 +      (tildify-foreach-region-function): New variable specifying
 +      a function determining portions of buffer that should be
 +      tildified.  It allows major modes to create a filtering function
 +      more elaborate than a set of regular expressions.  Initialised to
 +      `tildify--deprecated-ignore-evironments' by default to handle now
 +      deprecated `tildify-ignored-environments-alist' variable.
 +      (tildify--foreach-region): A new function that takes
 +      `tildify-foreach-region-function' into account and calls callback
 +      for regions of the buffer that should be tildified.
 +      (tildify-foreach-ignore-environments): A new function which can be
 +      partially applied and used as `tildify-foreach-region-function'.
 +      (tildify-ignored-environments-alist, tildify-pattern)
 +      (tildify-string-alist, tildify--pick-alist-entry): Mark as obsolete.
 +      (tildify--find-env): Rename from `tildify-find-env' and mark as
 +      obsolete.
 +      (tildify--deprecated-ignore-evironments): New function,
 +      immediately marked as obsolete, used to handle deprecated
 +      `tildify-ignored-environments-alist'.
 +
 +      * textmodes/tex-mode.el (tex-common-initialization):
 +      Set `tildify-space-string' and `tildify-foreach-region-function'
 +      variables in all variants of TeX mode since `tildify-string-alist'
 +      and `tildify-ignored-environments-alist' are now empty by default.
 +
 +      * nxml/nxml-mode.el (nxml-mode): Ditto in `nxml-mode'.
 +      If encoding supports it use no-break space instead of character
 +      entity; this changes previous default which used a numeric
 +      reference.
 +
 +      * textmodes/sgml-mode.el (sgml-mode): ditto in `sgml-mode'.
 +      If encoding does not support no-break space, use numeric reference;
 +      this changes previous default which used named entity (“&nbsp;”)
 +      in HTML mode.
 +
 +2014-11-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar/icalendar.el (icalendar-export-alarms):
 +      New customizable variable.  (Bug#5433)
 +      (icalendar-export-region): Export alarms as specified in
 +      `icalendar-export-alarms'.
 +      (icalendar--create-ical-alarm, icalendar--do-create-ical-alarm):
 +      New functions for exporting alarms.
 +
 +2014-11-17  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * bindings.el (search-map): Move `eww-search-words' to `M-s M-w'.
 +
 +2014-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port new time stamp handling to old Emacs and to XEmacs.
 +      This is needed for Gnus, which copies time-date.el and which
 +      runs on older Emacs implementations.
 +      * calendar/time-date.el (with-decoded-time-value):
 +      Handle 'nil' and floating-point arg more compatibly with new Emacs.
 +      (encode-time-value, with-decoded-time-value):
 +      Obsolete only if new Emacs.
 +      (time-add, time-subtract, time-less-p): Define if not new Emacs.
 +
 +      Improve time stamp handling, and be more consistent about it.
 +      This implements a suggestion made in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00587.html
 +      Among other things, this means timer.el no longer needs to
 +      autoload the time-date module.
 +      * allout-widgets.el (allout-elapsed-time-seconds): Doc fix.
 +      * arc-mode.el (archive-ar-summarize):
 +      * calendar/time-date.el (seconds-to-time, days-to-time, time-since):
 +      * emacs-lisp/timer.el (timer-relative-time, timer-event-handler)
 +      (run-at-time, with-timeout-suspend, with-timeout-unsuspend):
 +      * net/tramp.el (tramp-time-less-p, tramp-time-subtract):
 +      * proced.el (proced-time-lessp):
 +      * timezone.el (timezone-time-from-absolute):
 +      * type-break.el (type-break-schedule, type-break-time-sum):
 +      Simplify by using new functionality.
 +      * calendar/cal-dst.el (calendar-next-time-zone-transition):
 +      Do not return time values in obsolete and undocumented (HI . LO)
 +      format; use (HI LO) instead.
 +      * calendar/time-date.el (with-decoded-time-value):
 +      Treat 'nil' as current time.  This is mostly for XEmacs.
 +      (encode-time-value, with-decoded-time-value): Obsolete.
 +      (time-add, time-subtract, time-less-p): Use no-op autoloads, for
 +      XEmacs.  Define only if XEmacs, as they're now C builtins in Emacs.
 +      * ldefs-boot.el: Update to match new time-date.el
 +      * proced.el: Do not require time-date.
 +
 +2014-11-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-mode): Make the buffer read-only.
 +      (eww-form-text): Inhibit read-only-ness in text input fields
 +      (bug#16476).
 +
 +2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (execute-extended-command--shorter): Cut search here.
 +      (execute-extended-command): Instead of here.
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-mode): Avoid use of set-local to
 +      keep Emacs 24.x compatibility.
 +
 +2014-11-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr): Move to the new defgroup `web'.
 +
 +      * net/eww.el (eww): Ditto.
 +
 +      * simple.el (execute-extended-command): Don't show the help
 +      message if the binding isn't significantly shorter than the
 +      M-x command the user typed (bug#19013).
 +
 +2014-11-16  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar/icalendar.el (icalendar--convert-tz-offset):
 +      Return complete cons when offsets of standard time and daylight saving
 +      time are equal.
 +      (icalendar-export-region): Fix unbound variable warning.
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (run-python): Allow CMD to be optional and
 +      default it to a safe command, even for Windows.  (bug#18596)
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-calculate-command):
 +      Rename from python-shell-parse-command.  Cleanup.
 +      (run-python, run-python-internal): Use it.
 +      (python-shell-calculate-pythonpath): Rename from
 +      python-new-pythonpath.
 +      (python-shell-calculate-process-environment): Use it.
 +      (python-shell-calculate-exec-path): Add comment.
 +
 +2014-11-16  Thierry Banel <tbanelwebmin@free.fr>  (tiny change)
 +
 +      * calc/calc-arith.el (math-max-list, math-min-list): Fix bug
 +      for date handling.
 +
 +2014-11-16  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * version.el (emacs-repository-get-version): Use git rev-parse
 +      instead of git log.
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-indent-calculate-levels):
 +      Fix indentation behavior multiline dedenter statement.  (Bug#18432)
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-indent-region):
 +      Use python-indent-line and skip special cases.  (Bug#18843)
 +
 +2014-11-16  Peder O. Klingenberg  <peder@klingenberg.no>
 +
 +      * mail/emacsbug.el (report-emacs-bug): Make a better guess at
 +        envelope-from when reporting through sendmail (bug#19054).
 +
 +2014-11-16  Oscar Fuentes <ofv@wanadoo.es>
 +
 +      Add faces for the VC modeline state indicator.
 +      * vc/vc-hooks.el:
 +      (vc-state-faces, vc-state-base-face)
 +      (vc-up-to-date-state, vc-needs-update-state)
 +      (vc-locked-state, vc-locally-added-state)
 +      (vc-conflict-state, vc-removed-state)
 +      (vc-missing-state, vc-edited-state):
 +      New faces.
 +      (vc-default-mode-line-string): Use them
 +
 +2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/backquote.el (backquote-process): Optimize away ",'".
 +
 +2014-11-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-search-words): Mention `eww-search-prefix'.
 +
 +2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-eldoc-setup-code): Enhance string
 +      type checks, simplify printing.  (Bug#18962)
 +
 +2014-11-14  Ivan Andrus  <darthandrus@gmail.com>
 +
 +      * progmodes/python.el (python-shell-font-lock-kill-buffer):
 +      (python-shell-font-lock-with-font-lock-buffer)
 +      (python-shell-get-buffer, python-ffap-module-path):
 +      Use `derived-mode-p' instead of equality test on `major-mode'.
 +
 +2014-11-14  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-virtualenv-root): Rename from
 +      python-shell-virtualenv-path.
 +      (python-shell-internal-get-process-name)
 +      (python-shell-calculate-process-environment)
 +      (python-shell-calculate-exec-path): Use it.
 +
 +2014-11-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bindings.el (search-map): Fix last change: don't use 'kbd' in
 +      bindings.el, since it is not yet loaded when bindings.el is
 +      preloaded.
 +
 +2014-11-14  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-completion-get-completions):
 +      Fix previous merge.
 +
 +2014-11-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-render): Don't set the title to the URL.
 +
 +2014-11-13  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * version.el (emacs-repository-get-version): Call `git log'
 +      command with proper format argument (bug#19049).
 +
 +2014-11-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * bindings.el (search-map): Bind M-s M-s to `eww-search-words'.
 +
 +2014-11-14  Kenjiro NAKAYAMA  <nakayamakenjiro@gmail.com>
 +
 +      * net/eww.el (eww-search-words): New command (bug#16258).
 +
 +2014-11-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-inhibit-images): Add a doc string.
 +
 +      * net/eww.el (eww-after-render-hook): New variable.
 +      (eww-render): Use it.
 +
 +      * net/shr.el (shr-descend): Don't descend further than
 +      `max-specpdl-size' allows (bug#16587).
 +      (shr-depth): New variable.
 +      (shr-warning): New variable.
 +
 +2014-11-13  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * net/shr.el (shr-parse-base): Handle <base href=""> correctly.
 +      (shr-expand-url): Expand absolute URLs correctly (bug#17958).
 +
 +2014-11-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww): Add comment to clarify.
 +
 +      * net/shr.el (shr-parse-image-data): Remove blocked bits from
 +      external SVG images.
 +      (shr-tag-object): Display images in <object> forms (bug#16244).
 +      (shr-tag-table): Also insert <objects> after the tables.
 +
 +2014-11-13  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * vc/vc-hg.el (vc-hg-state): Disable pager.  (Bug#18940)
 +
 +2014-11-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-form-file): Fix version number.
 +
 +2014-11-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-form-file): :type isn't a valid `defface' keyword.
 +
 +2014-11-10  Kenjiro NAKAYAMA  <nakayamakenjiro@gmail.com>
 +
 +      * net/eww.el(eww-form-file(defface)): New defface of file upload form.
 +      (eww-submit-file): New key map of file upload.
 +      (eww-form-file): New file upload button and file name context.
 +      (eww-select-file): Select file and display selected file name.
 +      (eww-tag-input): Handle input tag of file type.
 +      (eww-update-field): Add point offset.
 +      (eww-submit): Add submit with multipart/form-data.
 +
 +2014-11-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-render, eww-display-html, eww-setup-buffer):
 +      Allow taking a buffer to render data in.  This allows using several
 +      eww buffers (bug#16211).
 +
 +2014-11-10  Charles Rendleman  <carendle@gmail.com>  (tiny change)
 +
 +      * net/eww.el (eww-download-callback): Save only the file contents,
 +      not the headers.
 +
 +2014-11-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-data): New plist to store all the data relevant
 +      to a single page, used throughout the file instead of the
 +      variables `eww-current-url', `eww-current-dom',
 +      `eww-current-source', and `eww-current-title'.
 +      (eww-readable): Copy over pertinent data from the parent page.
 +      (eww-save-history): Don't let the history grow infinitely.
 +
 +      * net/eww.el: Remove `eww-next-url', `eww-previous-url',
 +      `eww-up-url', `eww-home-url', `eww-start-url' and
 +      `eww-contents-url' and put the data into the `eww-data' plist.
 +      This allow restoring these values after going back in the history.
 +
 +2014-11-10  Sylvain Chouleur  <sylvain.chouleur@gmail.com>  (tiny change)
 +
 +      Allow VTIMEZONE where daylight and standard time zones are equal.
 +      See: http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00494.html
 +      * calendar/icalendar.el (icalendar--convert-tz-offset):
 +      Support timezone without daylight saving time.
 +
 +2014-11-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * startup.el (command-line): Handle nil elements in load-path.
 +
 +2014-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * help.el (view-lossage): Include the actual commands run.
 +
 +2014-11-10  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * vc/vc-dir.el (vc-dir-hide-state): Also hide `ignored' items when
 +      no state is specified.  (Bug#18964)
 +
 +2014-11-09  Eric Ludlam  <zappo@gnu.org>
 +
 +      * emacs-lisp/eieio-custom.el (eieio-customize-object):
 +      Set eieio-cog (current group) to g, which is an improved form of input
 +      group.
 +
 +2014-11-09  Juri Linkov  <juri@jurta.org>
 +
 +      * isearch.el (isearch-message-prefix): Show "Multi-file" and
 +      "Multi-buffer" instead of "Multi".  (Bug#13592)
 +
 +      * misearch.el (multi-isearch-file-list):
 +      Autoload multi-isearch-buffer-list and multi-isearch-file-list.
 +      (multi-isearch-end): Reset multi-isearch-buffer-list and
 +      multi-isearch-file-list to nil.
 +
 +2014-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
 +      Don't call byte-compile-preprocess since the result will go through
 +      cconv.
 +      (byte-compile-output-docform): Handle uninterned `name' correctly.
 +      * emacs-lisp/cl-macs.el (cl-define-compiler-macro): Use interned name
 +      to circumvent byte-compiler bug.
 +
 +      * emacs-lisp/macroexp.el (macroexp--expand-all): Fix typo.
 +      (macroexp--compiler-macro): Remove left-over debug code.
 +
 +      * emacs-lisp/cl-extra.el (cl-get): Silence compiler warning.
 +
 +2014-11-08  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (shell-command): Use buffer-name when output-buffer is
 +      a buffer.  (Bug#18096)
 +
 +2014-11-08  Juri Linkov  <juri@jurta.org>
 +
 +      * minibuffer.el (minibuffer-completion-help): Compare this-command
 +      with completion-at-point.  (Bug#17809)
 +
 +2014-11-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-report-error):
 +      Allow the argument to be a string.  Due to the vague doc,
 +      it was already being used this way.
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-check-cached-permissions): Include hop in
 +      the constructed Tramp file name.  (Bug#18943)
 +
 +2014-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emulation/cua-base.el (cua--select-keymaps): Use region-active-p
 +      (bug#18952).
 +      (cua-set-mark, cua--post-command-handler-1):
 +      * emulation/cua-gmrk.el (cua-cancel-global-mark): Same.
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * files.el (file-name-non-special): Wrap the call of
 +      `insert-file-contents' by `unwind-protect', in order to set the
 +      buffer's file name anyway.  (Bug#18891)
 +
 +2014-11-08  Alan Mackenzie  <acm@muc.de>
 +
 +      Fix wrong bound to c-font-lock-declarators.  Fixes bug #18948.
 +      * progmodes/cc-fonts.el (c-font-lock-declarations):
 +      Pass "(point-max)" as bound to c-font-lock-declarators, not "limit", as
 +      the buffer is sometimes narrowed to less than "limit" (e.g., in
 +      the presence of macros).
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-error-with-buffer): Show connection buffer
 +      only when message appeared in minibuffer.  (Bug#18891)
 +
 +      * net/tramp-adb.el (tramp-adb-handle-file-attributes):
 +      * net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes):
 +      * net/tramp-sh.el (tramp-sh-handle-file-attributes): Return nil in
 +      case of errors.
 +
 +2014-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
 +      Don't compile before eval in `eval-and-compile'.
 +      (byte-compile-arglist-warn): Add check for defining macros after their
 +      first use.  Check call use even if the function is fboundp.
 +
 +2014-11-08  Richard Stallman  <rms@gnu.org>
 +
 +      * mail/rmail.el (rmail-epa-decrypt): Detect armor with line prefixes.
 +      Check more carefully for mime-part specified character set.
 +      Check for mime-part Content Transfer Encoding.
 +      Notify if no armor found.
 +
 +2014-11-08  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * faces.el (face-set-after-frame-default): Enable running
 +      `window-configuration-change-hook'.
 +
 +2014-11-07  Juri Linkov  <juri@jurta.org>
 +
 +      * replace.el: History for query replace pairs.
 +      (query-replace-defaults): Promote to a list of cons cell.  Doc fix.
 +      (query-replace-from-to-separator): New variable.
 +      (query-replace-read-from): Let-bind query-replace-from-to-history
 +      to a list of FROM-TO strings created from query-replace-defaults
 +      and separated by query-replace-from-to-separator.  Use it as
 +      the history while reading from the minibuffer.  Split the returned
 +      string by the separator to get FROM and TO parts, and add them
 +      to the history variables.
 +      (query-replace-read-to): Add FROM-TO pairs to query-replace-defaults.
 +      (query-replace-regexp-eval): Let-bind query-replace-defaults to nil.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg00253.html
 +
 +      * isearch.el (isearch-text-char-description): Keep characters
 +      intact and put formatted strings with the `display' property.
 +
 +2014-11-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * cus-start.el (frame-resize-pixelwise): Fix group.
 +      (frame-inhibit-implied-resize): Add entry.
 +
 +2014-11-07  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epa.el (epa-pinentry-mode): New user option.
 +      (epa-sign-file, epa-encrypt-file, epa-decrypt-region)
 +      (epa-sign-region, epa-encrypt-region): Respect epa-pinentry-mode.
 +      * epa-file.el (epa-file-insert-file-contents)
 +      (epa-file-write-region): Respect epa-pinentry-mode.
 +
 +2014-11-07  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epg.el (epg--list-keys-1): Ignore fields after the 15th field
 +      (bug#18979).  Reported by Hideki Saito.
 +
 +2014-11-06  Daiki Ueno  <ueno@gnu.org>
 +
 +      * emacs-lisp/package.el (package--display-verify-error): New function.
 +      (package--check-signature): Use it to display output sent to stderr.
 +
 +2014-11-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (pop): Don't call the getter twice (bug#18968).
 +
 +      * emacs-lisp/macroexp.el (macroexp--expand-all): Optimize away trivial
 +      uses of `funcall'.
 +
 +2014-11-06  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epa.el (epa-error-buffer): New variable.
 +      (epa-display-error): New function.
 +      (epa-decrypt-file, epa-verify-file, epa-verify-region)
 +      (epa-delete-keys, epa-import-keys): Display output sent to stderr.
 +      (epa-sign-file, epa-sign-region, epa-encrypt-region)
 +      (epa-export-keys, epa-insert-keys): Display output sent to stderr.
 +      Use setf instead of epg-context-set-*.
 +      * epa-file.el (epa-file-insert-file-contents):
 +      Use epa-display-error instead of epa-display-info.  Mimic the behavior
 +      of jka-compr when decryption program is not found.
 +      (epa-file-write-region): Use epa-display-error instead of
 +      epa-display-info.
 +
 +2014-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc.el (vc-region-history): New command.
 +      (vc-print-log-internal): Use cl-some.
 +
 +      * vc/vc-git.el (vc-git-region-history): New function.
 +      (vc-git-region-history-mode-map)
 +      (vc-git--log-view-long-font-lock-keywords)
 +      (vc-git-region-history-font-lock-keywords): New vars.
 +      (vc-git-region-history-font-lock): New function.
 +      (vc-git-region-history-mode): New major mode.
 +
 +2014-11-05  Tassilo Horn  <tsdh@gnu.org>
 +
 +      * net/eww.el (subr-x): Require subr-x at compile-time because eww
 +      uses string-trim.
 +
 +2014-11-05  Daiki Ueno  <ueno@gnu.org>
 +
 +      * epg.el (epg-context): Add new slot ERROR-OUTPUT.
 +      (epg-error-output): New buffer-local variable.
 +      (epg--start): Initialize epg-error-output.
 +      (epg--process-filter): Record output lines sent to stderr, in
 +      epg-error-output.
 +      (epg-wait-for-completion): Copy epg-error-output to ERROR-OUTPUT
 +      slot of context.
 +      * epa-file.el (epa-file-insert-file-contents): On error, display
 +      output sent to stderr.
 +      (epa-file-write-region): Likewise.
 +
 +2014-11-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * jit-lock.el (jit-lock-stealth-fontify): Be tolerant to nil being
 +      returned by load-average.
 +
 +2014-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-via-buffer): Don't use
 +      a local copy; setting `inhibit-file-name-handlers' proper might be
 +      more performant.  (Bug#18751)
 +
 +2014-11-05  Glenn Morris  <rgm@gnu.org>
 +
 +      * mail/emacsbug.el (report-emacs-bug): No longer include
 +      recent-keys in the report.  (Bug#18900)
 +
 +2014-11-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * mouse.el (mouse-drag-line): Fix misspelling of "right-fringe".
 +
 +2014-11-04  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/eww.el (eww): Trim URL with `string-trim'.
 +      Suggested by Vibhav Pant <vibhavp@gmail.com>.
 +
 +2014-11-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-score-readability): Don't count comments positively.
 +
 +      * net/shr.el (shr-retransform-dom): Typo fix.
 +
 +      * net/eww.el (eww-score-readability): Parse SVC images correctly.
 +      (eww-display-html): Don't leave point inside forms.
 +
 +      * net/shr.el: Ditto.
 +
 +2014-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/edebug.el (edebug-safe-prin1-to-string): Assume that
 +      edebug-prin1-to-string already handles circularity.
 +
 +      * emacs-lisp/byte-run.el (defun-declarations-alist): Fix compiler-macro
 +      autoloading when specified as a lambda.
 +
 +      * simple.el (execute-extended-command--last-typed): New var.
 +      (read-extended-command): Set it.
 +      Don't complete obsolete commands.
 +      (execute-extended-command--shorter-1)
 +      (execute-extended-command--shorter): New functions.
 +      (execute-extended-command): Use them to suggest shorter names.
 +      (indicate-copied-region, deactivate-mark): Use region-active-p.
 +
 +2014-11-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-via-buffer): Use a
 +      local copy of FILENAME, when it is remote.  (Bug#18751)
 +
 +      * net/tramp-adb.el (tramp-adb-handle-process-file): Do not raise
 +      an error when the command fails; the return code must indicate.
 +      (tramp-adb-send-command-and-check): Fix docstring.
 +
 +2014-11-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-retransform-dom): Don't ignore elements that
 +      have no children like <br />.
 +
 +      * net/eww.el (eww-display-html): Clear `url-queue'.
 +      (eww-display-pdf): New function.
 +      (eww-render): Display PDFs with `doc-view'.
 +      (url-queue): Require `url-queue' to avoid compilation warning.
 +      (eww-colorize-region): Remove duplicate function.
 +      (eww-tag-body): Use `shr-colorize-region'.
 +
 +2014-11-03  Yoni Rabkin <yrk@gnu.org>
 +
 +      * net/eww.el (eww-list-bookmarks): Autoload.
 +
 +2014-11-03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-retransform-dom): Allow several text sub-nodes.
 +
 +      * net/eww.el (eww-display-html): The charset is called `utf-8',
 +      not `utf8'.
 +      (eww-readable): Decode the saved text correctly.
 +      (eww-readable): Save the history before displaying so that we can
 +      go back to the non-readable version.
 +      (eww-display-html): Don't try to decode the text if we've been
 +      passed in a pre-parsed DOM.
 +      (eww-tag-title): Remove newlines and extra whitespace from the
 +      displayed title.
 +
 +2014-11-02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/eww.el (eww-readable): New command and keystroke.
 +
 +      * net/shr.el (shr-retransform-dom): New function.
 +
 +      * net/eww.el (eww-display-html): Set `eww-current-source' in the
 +      correct buffer.
 +      (eww-view-source): Use it.
 +
 +2014-11-02  Ivan Shmakov <ivan@siamics.net>
 +
 +      * net/eww.el (eww): Recognize colon-delimited IPv6 addresses.
 +      (Bug#18603).
 +
 +2014-11-02  Brian McKenna <brian@brianmckenna.org>  (tiny change)
 +
 +      * net/eww.el (eww-submit): Encode empty form values as "".  (Bug#17785).
 +
 +2014-11-02  Ivan Shmakov <ivan@siamics.net>
 +
 +      * net/eww.el (eww): Allow "file:/file/name" URLs.  (Bug#18825).
 +
 +2014-11-02  Ivan Shmakov <ivan@siamics.net>
 +
 +      * net/eww.el (eww-mode-map): Remove mentions of `eww-quit'.
 +      (Bug#18834).
 +
 +2014-11-02  Eric Abrahamsen  <eric@ericabrahamsen.net>
 +
 +      * emacs-lisp/eieio.el (eieio-edebug-prin1-to-string): Adjust for
 +      use as advice.
 +      (edebug-setup-hook): Advise `edebug-prin1-to-string'.  (Bug#18897)
 +
 +2014-11-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pp.el (pp-macroexpand-expression): Use macroexpand-1
 +      (bug#18821).
 +      * progmodes/elisp-mode.el (emacs-lisp-macroexpand): Idem.
 +
 +2014-11-01  Michael R. Mauger  <michael@mauger.com>
 +
 +      * sql.el (sql-mode-oracle-font-lock-keywords): Correct regexp
 +      syntax, add new keywords, and parse longer keywords first.
 +      (sql-redirect-one): Protect against empty command.
 +      (sql-mode, sql-interactive-mode): Set `custom-mode-group' property
 +      to SQL.  (Bug#14759)
 +
 +2014-11-01  Michael R. Mauger  <michael@mauger.com>
 +
 +      * sql.el (sql-interactive-mode, sql-stop): Correct fix for
 +      Bug#16814 with let-bind of comint-input-ring variables around read
 +      and save functions.
 +
 +2014-11-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-get-file-property)
 +      (tramp-set-file-property): Check that `tramp-cache-get-count-*'
 +      and `tramp-cache-set-count-*' are bound.  Otherwise, there might
 +      be compiler warnings.
 +
 +      * net/tramp-sh.el (tramp-get-remote-uid, tramp-get-remote-gid):
 +      Return -1 respective "UNKNOWN", if uid or gid cannot be determined.
 +
 +2014-11-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * progmodes/compile.el (compilation-mode): Turn off deferred
 +      fontifications locally.  (Bug#18856)
 +
 +2014-11-01  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * net/tramp-sh.el (tramp-send-command): Fix the case where the
 +      remote-echo connection property is non-nil (bug#18858).
 +
 +2014-11-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (newline): Add assertions to try and help catch bug#18913.
 +
 +      * emulation/cua-base.el (cua-delete-region): Use delete-active-region
 +      (bug#18886).
 +      (cua--last-deleted-region-pos, cua--last-deleted-region-text): Remove.
 +
 +2014-11-01  Kim F. Storm  <storm@cua.dk>
 +
 +      Restore cua-delete-copy-to-register-0 and M-v command (bug#18886).
 +      * delsel.el (delete-selection-save-to-register)
 +      (delsel--replace-text-or-position): New vars.
 +      (delete-active-region): Use them.
 +      (delete-selection-repeat-replace-region): New command, moved from
 +      cua-base.el.
 +      * emulation/cua-base.el (cua--repeat-replace-text): Remove var.
 +      (cua-repeat-replace-region): Move command to delsel.el.
 +      (cua--init-keymaps): Update binding accordingly.
 +      (cua-mode): Set delete-selection-save-to-register.
 +
 +2014-11-01  Alan Mackenzie  <acm@muc.de>
 +
 +      Make blink-parens work with a closing template delimiter.
 +      * progmodes/cc-cmds.el (c-electric-lt-gt): Cause a redisplay
 +      before calling blink-paren-function, so as to apply syntax-table
 +      properties to the ">".
 +
 +2014-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * select.el (gui-get-selection): Comment: data-type ignored on NS.
 +
 +2014-10-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/macroexp.el (macroexpand-1): New function (bug#18821).
 +      (macroexp--expand-all): Unrelated tweaks.
 +
 +      * emacs-lisp/gv.el (gv-get): Use macroexpand-1.
 +
 +2014-10-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * startup.el (command-line): Remove pointless attempt to avoid
 +      statting the file-system (which expand-file-name doesn't do).
 +
 +2014-10-30  Daniel Colascione  <dancol@dancol.org>
 +
 +      Add "enum class" support to C++ mode.
 +      * progmodes/cc-langs.el (c-after-brace-list-decl-kwds)
 +      (c-after-brace-list-key): New language consts/variables.
 +      * progmodes/cc-engine.el (c-looking-at-decl-block):
 +      Exclude spurious match of "enum struct" from decl-block recognition.
 +      (c-backward-colon-prefixed-type): New function.
 +      (c-backward-over-enum-header): Call above function to extend
 +      recognition of enum structure.
 +
 +2014-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/cc-defs.el (c--macroexpand-all): New function (bug#18845).
 +      (c-lang-defconst):
 +      * progmodes/cc-langs.el (c-make-init-lang-vars-fun): Use it.
 +
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * progmodes/compile.el (compilation-start):
 +      If compilation-scroll-output is non-nil, don't force window-start of
 +      the compilation buffer to be at beginning of buffer.  (Bug#18874)
 +
 +      * startup.el (fancy-about-text): Read the entire tutorial, not
 +      just its first 256 bytes.  (Bug#18760)
 +
 +2014-10-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el: Require cl-extra (bug#18804).
 +      * emacs-lisp/cl-extra.el: Add missing provide.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-and-folded): Optimize case where
 +      all args are copyable (bug#18767).
 +      (=, <, >, <=, >=): Re-enable the optimization.
 +
 +2014-10-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * net/rcirc.el (rcirc-fill-column): Unbump :version.  Mark :risky.
 +
 +      * version.el (emacs-bzr-version, emacs-bzr-get-version):
 +      Revert 2014-10-26 change.
 +
 +2014-10-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify use of current-time and friends.
 +      * allout-widgets.el (allout-widgets-hook-error-handler):
 +      * calendar/appt.el (appt-display-message):
 +      * calendar/icalendar.el (icalendar--convert-float-to-ical):
 +      * calendar/timeclock.el (timeclock-in, timeclock-when-to-leave)
 +      (timeclock-last-period, timeclock-day-base):
 +      * eshell/em-ls.el (eshell-ls-file):
 +      * eshell/esh-util.el (eshell-parse-ange-ls):
 +      * generic-x.el (named-database-print-serial):
 +      * net/newst-backend.el (newsticker--get-news-by-url-callback)
 +      (newsticker-get-news, newsticker--sentinel-work)
 +      (newsticker--image-get, newsticker--image-sentinel):
 +      * net/tramp-sh.el (tramp-get-remote-touch):
 +      * progmodes/opascal.el (opascal-debug-log):
 +      * textmodes/remember.el (remember-mail-date)
 +      (remember-store-in-files):
 +      * vc/vc-annotate.el (vc-annotate-display-autoscale)
 +      (vc-default-annotate-current-time):
 +      * vc/vc-bzr.el (vc-bzr-shelve-snapshot):
 +      * vc/vc-cvs.el (vc-cvs-annotate-current-time):
 +      * vc/vc-rcs.el (vc-rcs-annotate-current-time):
 +      Omit unnecessary call to current-time.
 +      * calendar/time-date.el (time-to-seconds) [!float-time]:
 +      * vc/vc-annotate.el (vc-annotate-convert-time):
 +      Use current time if arg is nil, to be compatible with float-time.
 +      (time-date--day-in-year): New function, with most of the guts of
 +      the old time-to-day-in-year.
 +      (time-to-day-in-year): Use it.
 +      (time-to-days): Use it, to avoid decoding the same time stamp twice.
 +      * calendar/timeclock.el (timeclock-time-to-date):
 +      Arg is now optional, like current-time-string.
 +      (timeclock-update-mode-line):
 +      Don't call current-time twice to get the current time stamp,
 +      as this can lead to inconsistent results.
 +      * completion.el (cmpl-hours-since-origin):
 +      * ido.el (ido-time-stamp):
 +      * vc/vc-annotate.el (vc-annotate-convert-time):
 +      Simplify by using float-time.
 +      * completion.el (save-completions-to-file):
 +      Rename local var to avoid confusion.
 +      * net/rcirc.el (rcirc-float-time): Simplify to an alias because
 +      time-to-seconds now behaves like float-time with respect to nil arg.
 +      * subr.el (progress-reporter-do-update):
 +      Don't call float-time unless needed.
 +
 +2014-10-29  Leo Liu  <sdl.web@gmail.com>
 +
 +      * net/rcirc.el (rcirc-fill-column): Use function.
 +      (rcirc-markup-fill): Remove adjustment.
 +
 +2014-10-28  Christopher Schmidt  <ch@ristopher.com>
 +
 +      * calc/calc.el (quick-calc):
 +      * calc/calc-aent.el (calc-do-quick-calc): New argument INSERT.
 +
 +2014-10-28  Sam Steingold  <sds@gnu.org>
 +
 +      * net/rcirc.el (rcirc-fill-column): Allow any symbolic value for
 +      the sake of `window-body-width' (in addition to `frame-width').
 +
 +2014-10-26  Eric S. Raymond  <esr@thyrsus.com>
 +
 +      * version.el: Fix some fallback values to conform to the actual
 +      release number.
 +
 +2014-10-25  Eric S. Raymond  <esr@thyrsus.com>
 +
 +      * Makefile.in: Change some production names so they're neutral
 +      about the repository type.
 +
 +2014-10-25  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-methods-mounttracker)
 +      (tramp-gvfs-mountlocation-signature): Check `tramp-gvfs-enabled'
 +      during initialization.  (Bug#18774)
 +
 +2014-10-25  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.el (macroexp): Add require for this package, so that
 +      function `ses--cell' gets macroexp-quote --- this change was
 +      supposed to be in my previous commit, but left out by mistake.
 +      (ses--cell): Do not make formula a macroexp-quote of value when
 +      value, not formula, is *skip*.
 +
 +2014-10-24  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.el (macroexp): Add require for this package, so that function
 +      `ses--cell gets macroexp-quote.
 +      (ses--cell): Makes formula a macroexp-quote of value when formula
 +      is nil.  The rationale of this changr is to allow in the future
 +      shorter SES files, e.g. we could have only `(ses-cell A1 1.0)'
 +      instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'.  In such a case
 +      reference list REFLIST would be re-computed after load --- thus
 +      trading off load time against file size.
 +
 +      * emacs-lisp/package.el (package--alist-to-plist-args):
 +      Use macroexp-quote instead of a lambda expression which has the same
 +      content as macroexp-quote.
 +      (macroexp): Add require for this package, so that function
 +      `package--alist-to-plist-args' gets macroexp-quote.
 +
 +      * emacs-lisp/macroexp.el (macroexp-quote): New defun.
 +
 +2014-10-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * term/ns-win.el (ns-store-cut-buffer-internal)
 +      (ns-copy-including-secondary): Use gui-set-selection (bug#18816).
 +
 +2014-10-24  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * mouse.el (mouse-drag-line): Don't use mouse-pixel-position.
 +      Calculate increment from last position instead of window edge.
 +      Add right- and bottom-divider bindings to transient map.
 +
 +2014-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/cl-macs.el (cl-defstruct): Define an internal predicate
 +      even if :predicate was nil, for the benefit of typep.
 +      Record the name of the predicate for typep's use.
 +      (cl--make-type-test): Use pcase.  Obey new
 +      cl-deftype-satisfies property.
 +
 +      * epg.el: Use cl-defstruct.
 +      (epg-make-data-from-file, epg-make-data-from-string, epg-data-file)
 +      (epg-data-string): Define via cl-defstruct.
 +      (epg--gv-nreverse): New macro.
 +      (epg-context--make): New constructor (provided vi cl-defstruct).
 +      (epg-make-context): Rewrite using it.
 +      (epg-context-protocol, epg-context-program)
 +      (epg-context-home-directory, epg-context-armor, epg-context-textmode)
 +      (epg-context-include-certs, epg-context-cipher-algorithm)
 +      (epg-context-digest-algorithm, epg-context-compress-algorithm)
 +      (epg-context-passphrase-callback, epg-context-progress-callback)
 +      (epg-context-signers, epg-context-sig-notations, epg-context-process)
 +      (epg-context-output-file, epg-context-result, epg-context-operation)
 +      (epg-context-pinentry-mode): Define using cl-defstruct.
 +      (epg-context-set-protocol, epg-context-set-program)
 +      (epg-context-set-include-certs, epg-context-set-cipher-algorithm)
 +      (epg-context-set-digest-algorithm)
 +      (epg-context-set-sig-notations, epg-context-set-process)
 +      (epg-context-set-output-file, epg-context-set-result)
 +      (epg-context-set-operation, epg-context-set-pinentry-mode)
 +      (epg-context-set-compress-algorithm): Remove.  Use setf instead.
 +      (epg-context-set-armor, epg-context-set-textmode)
 +      (epg-context-set-signers): Redefine using setf
 +      and declare as obsolete.
 +      (epg-context-set-passphrase-callback)
 +      (epg-context-set-progress-callback): Use setf.
 +      (epg-signature-notations): Rename from epg-sig-notations.
 +      (epg-make-signature, epg-signature-status, epg-signature-key-id)
 +      (epg-signature-validity, epg-signature-fingerprint)
 +      (epg-signature-creation-time, epg-signature-expiration-time)
 +      (epg-signature-pubkey-algorithm, epg-signature-digest-algorithm)
 +      (epg-signature-class, epg-signature-version): Define vi cl-defstruct.
 +      (epg-signature-set-status, epg-signature-set-key-id)
 +      (epg-signature-set-validity, epg-signature-set-fingerprint)
 +      (epg-signature-set-creation-time, epg-signature-set-expiration-time)
 +      (epg-signature-set-pubkey-algorithm)
 +      (epg-signature-set-digest-algorithm, epg-signature-set-class)
 +      (epg-signature-set-version, epg-signature-set-notations): Remove.
 +      Use setf instead.
 +      (epg-make-new-signature, epg-new-signature-type)
 +      (epg-new-signature-pubkey-algorithm)
 +      (epg-new-signature-digest-algorithm, epg-new-signature-class)
 +      (epg-new-signature-creation-time, epg-new-signature-fingerprint):
 +      Define using cl-defstruct.
 +      (epg-make-key, epg-key-owner-trust, epg-key-sub-key-list)
 +      (epg-key-user-id-list): Define using cl-defstruct.
 +      (epg-key-set-sub-key-list, epg-key-set-user-id-list): Remove.
 +      Use setf instead.
 +      (epg-make-sub-key, epg-sub-key-validity, epg-sub-key-capability)
 +      (epg-sub-key-secret-p, epg-sub-key-algorithm, epg-sub-key-length)
 +      (epg-sub-key-id, epg-sub-key-creation-time)
 +      (epg-sub-key-expiration-time, epg-sub-key-fingerprint): Define using
 +      cl-defstruct.
 +      (epg-sub-key-set-fingerprint): Remove.  Use setf instead.
 +      (epg-make-user-id, epg-user-id-validity, epg-user-id-string)
 +      (epg-user-id-signature-list): Define using cl-defstruct.
 +      (epg-user-id-set-signature-list): Remove.  Use setf instead.
 +      (epg-make-key-signature, epg-key-signature-validity)
 +      (epg-key-signature-pubkey-algorithm, epg-key-signature-key-id)
 +      (epg-key-signature-creation-time, epg-key-signature-expiration-time)
 +      (epg-key-signature-user-id, epg-key-signature-class)
 +      (epg-key-signature-exportable-p): Define using cl-defstruct.
 +      (epg-make-sig-notation, epg-sig-notation-name)
 +      (epg-sig-notation-value, epg-sig-notation-human-readable)
 +      (epg-sig-notation-critical): Define using cl-defstruct.
 +      (epg-sig-notation-set-value): Remove.  Use setf instead.
 +      (epg-make-import-status, epg-import-status-fingerprint)
 +      (epg-import-status-reason, epg-import-status-new)
 +      (epg-import-status-user-id, epg-import-status-signature)
 +      (epg-import-status-sub-key, epg-import-status-secret): Define using
 +      cl-defstruct.
 +      (epg-make-import-result, epg-import-result-considered)
 +      (epg-import-result-no-user-id, epg-import-result-imported)
 +      (epg-import-result-imported-rsa, epg-import-result-unchanged)
 +      (epg-import-result-new-user-ids, epg-import-result-new-sub-keys)
 +      (epg-import-result-new-signatures, epg-import-result-new-revocations)
 +      (epg-import-result-secret-read, epg-import-result-secret-imported)
 +      (epg-import-result-secret-unchanged, epg-import-result-not-imported)
 +      (epg-import-result-imports): Define using cl-defstruct.
 +
 +      * emacs-lisp/package.el: Require EPG during macroexpansion.
 +      (package--check-signature, package-import-keyring): Use setf instead of
 +      epg-context-set-home-directory.
 +
 +2014-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (byte-compile--use-old-handlers): Change default.
 +
 +2014-10-23  Leo Liu  <sdl.web@gmail.com>
 +
 +      * progmodes/cfengine.el (cfengine3-defun-full-re): New var.
 +      (cfengine3-create-imenu-index): Use it and use ` ' for separation.
 +      (cfengine3-current-defun): New function.
 +      (cfengine3-mode): Set add-log-current-defun-function.
 +
 +2014-10-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * select.el: Use lexical-binding.
 +      (gui-set-selection): Provide an implementation for non-GUI frames
 +      (bug#18791).
 +      * term/x-win.el: Use lexical-binding.
 +      (x-clipboard-yank): Fix up missed renamings.
 +      * term/w32-win.el (libgif-version, libjpeg-version): Silence compiler.
 +      (w32--set-selection): Fix up var names.
 +      * term/pc-win.el: Use lexical-binding.
 +      (w16-selection-exists-p): Silence compiler warning.
 +      (w16-selection-owner-p): Fix up missed renamings.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-form): Remove left-over debug.
 +
 +      * frame.el (frame-notice-user-settings): Fix excessive quoting.
 +
 +2014-10-22  Tassilo Horn  <tsdh@gnu.org>
 +
 +      * doc-view.el (doc-view-open-text): View the document's plain text
 +      in the current buffer instead of a new one.
 +      (doc-view-toggle-display): Handle the case where the current
 +      buffer contains the plain text contents of the document.
 +      (doc-view-initiate-display): Don't switch to fallback mode if the
 +      user wants to view the doc's plain text.
 +      (doc-view-set-doc-type): Use assoc-string instead of
 +      assoc-ignore-case.
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (read-key): Fix clicks on the mode-line.
 +      (set-transient-map): Return exit function.
 +
 +      * mouse.el (mouse-drag-line): Use set-transient-map (bug#18015).
 +      (mouse--down-1-maybe-follows-link): Remove unused var `this-event'.
 +      (mouse-yank-secondary): Use gui-get-selection.
 +      (mouse--down-1-maybe-follows-link): Use read-key.
 +
 +      * xt-mouse.el: Add `event-kind' property on the fly from
 +      xterm-mouse-translate-1 rather than statically at the outset.
 +
 +2014-10-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * vc/vc-dispatcher.el (vc-resynch-window): Tell view-mode not to
 +      change window configuration when we turn it off.
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Get rid of backend-dependent selection-handling functions for kill/yank
 +      and make it generic instead by relying on the lower-level selection
 +      management functions.
 +
 +      * select.el (select-enable-clipboard): Rename from
 +      gui-select-enable-clipboard.
 +      (select-enable-primary): Move from x-win.el and rename from
 +      x-select-enable-primary.
 +      (gui-last-selected-text): Remove.
 +      (gui--last-selected-text-clipboard, gui--last-selected-text-primary):
 +      New vars.
 +      (gui-select-text): Rewrite, based on x-win.el's old x-select-text.
 +      (gui-select-text-alist, gui-selection-value-alist): Remove.
 +      (x-select-request-type): Move from x-win.el.
 +      (gui--selection-value-internal): New function, taken from x-win's
 +      x-selection-value-internal.
 +      (gui-selection-value): Rewrite, based on x-win.el's old x-selection-value.
 +      (gui-set-selection-alist): Rename from gui-own-selection-alist and
 +      extend it to handle a nil value as a "disown" request.
 +      (gui-disown-selection-alist): Remove.
 +      (xselect-convert-to-delete): Adjust accordingly.
 +      (gui-set-selection): Simplify accordingly as well.  Use dotimes.
 +
 +      * term/x-win.el (x-last-selected-text-primary)
 +      (x-select-enable-primary): Remove (moved to select.el).
 +      (x-select-request-type): Move to select.el.
 +      (x-selection-value-internal, x--selection-value): Remove functions.
 +      (gui-selection-value, gui-select-text): Remove moethods.
 +      (gui-set-selection): Merge own and disown methods.
 +
 +      * term/w32-win.el (w32--select-text, w32--get-selection-value):
 +      Delete function (move functionality into w32--set-selection and
 +      w32--get-selection).
 +      (gui-select-text, gui-selection-value): Don't define methods.
 +      (w32--set-selection, w32--get-selection, w32--selection-owner-p):
 +      New functions.
 +      (gui-get-selection, gui-selection-owner-p, gui-selection-exists-p):
 +      Use them.
 +      (gui-selection-exists-p): Adjust to new name of C primitive.
 +
 +      * term/pc-win.el (w16-get-selection-value): Add dummy argument and drop
 +      test of gui-select-enable-clipboard, to make it usable as
 +      a gui-get-selection method.
 +      (gui-selection-exists-p): Adjust to new name of C primitive.
 +      (gui-set-selection): Merge own and disown methods.
 +      (gui-select-text, gui-selection-value): Delete methods.
 +      (w16--select-text): Delete function.
 +
 +      * term/ns-win.el (ns-get-pasteboard, ns-set-pasteboard)
 +      (ns-selection-value): Remove functions.
 +      (gui-select-text, gui-selection-value): Don't define method any more.
 +      (gui-set-selection): Merge the old own and disown methods.
 +      (gui-selection-exists-p, gui-get-selection): Adjust to new name of
 +      underlying C primitive.
 +
 +      * startup.el (command-line): Adjust now that `gui-method' expects nil
 +      for ttys.
 +
 +      * frame.el (gui-method): Use window-system rather than framep.
 +      (gui-method-declare): The tty case is now nil rather than t.
 +      (make-frame): Adjust accordingly.
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/newst-reader.el (newsticker--image-read): Simplify.
 +      (newsticker--icon-read): Use dolist and fix free var error.
 +
 +      * imenu.el (imenu--menubar-keymap): New var.
 +      (imenu-add-to-menubar): Set it to remember the keymap we used.
 +      (imenu-update-menubar): Use it instead of asking lookup-key.
 +
 +      * obsolete/cc-compat.el: Make obsolete (bug#18561).
 +
 +      * epg-config.el (epg-gpg-program): Don't use absolute names by default.
 +
 +      * emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
 +      case (bug#18767).
 +
 +2014-10-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * Merge in all changes up to version 24.4 release.
 +
 +2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
 +      case (bug#18767).
 +
 +2014-10-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * Merge in all changes up to 24.4 release.
 +
 +2014-10-20  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el
 +      (newsticker--image-download-by-url-callback): Make this function
 +      actually work: Check status properly, then save image.
 +
 +2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * mouse.el (mouse--down-1-maybe-follows-link): Remove unused var
 +      `this-event'.
 +      (mouse-drag-line): Unless there's no actual mouse, use the event's
 +      position info.
 +
 +2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * textmodes/css-mode.el (scss-mode): New major-mode.
 +      (css-mode-syntax-table): Use d style comment, to ease the scss case.
 +      (css-ident-re): Allow things like @-moz-keyframes.
 +      (scss--hash-re): New const.
 +      (css--font-lock-keywords): New function, extracted from
 +      css-font-lock-keywords.
 +
 +2014-10-19  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el: Require url-parse.
 +      (newsticker--get-news-by-wget): Store feed name as process property.
 +      (newsticker--sentinel): Read feed name from process property.
 +      (newsticker--sentinel-work): Rename argument name to feed-name.
 +      Rename variable imageurl to image-url.  Pick icon url from Atom
 +      1.0 data.  Launch download of feed icon.
 +      (newsticker--get-icon-url-atom-1.0): New.
 +      (newsticker--unxml)
 +      (newsticker--unxml-node)
 +      (newsticker--unxml-attribute): Documentation.
 +      (newsticker--icons-dir): New.
 +      (newsticker--image-get): New arguments FILENAME and DIRECTORY.
 +      Use `url-retrieve' if `newsticker-retrieval-method' is 'intern.
 +      (newsticker--image-download-by-wget): New.  Use process properties
 +      for storing informations.
 +      (newsticker--image-sentinel): Read informations from process properties.
 +      (newsticker--image-save)
 +      (newsticker--image-remove)
 +      (newsticker--image-download-by-url)
 +      (newsticker--image-download-by-url-callback): New.
 +      (newsticker-opml-export): Handle url list entries containing a
 +      function instead of an url string.
 +
 +      * net/newst-reader.el (newsticker-html-renderer): Whitespace.
 +      (newsticker--print-extra-elements)
 +      (newsticker--do-print-extra-element):
 +      Documentation (newsticker--image-read): Optionally limit image height.
 +      Use imagemagick if possible.
 +      (newsticker--icon-read): New.
 +
 +      * net/newst-treeview.el (newsticker--treeview-item-show): Limit height of feed logo.
 +      (newsticker--treeview-tree-expand): Use feed icons in treeview.
 +      (newsticker--tree-widget-icon-create): New.  Set the tree widget icon.
 +      (newsticker--tree-widget-leaf-icon): Use feed icon.
 +
 +2014-10-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio-opt.el (eieio-lambda-arglist): Remove.
 +      Use help-function-arglist instead.
 +
 +      * emacs-lisp/eieio-core.el (eieio-compiled-function-arglist): Remove.
 +      (eieio--with-scoped-class): Use `declare'.
 +      (eieio-defclass): Remove compatibility code.
 +      (no-method-definition, no-next-method, inconsistent-class-hierarchy)
 +      (invalid-slot-type, unbound-slot, invalid-slot-name): Use define-error.
 +
 +2014-10-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (x-gtk-whole-detached-tool-bar): Remove.
 +
 +      * term/x-win.el (x-gtk-stock-map): Add icon names suggested as
 +      replacements to stock names before stock names in a list.
 +      Cdr may be a list, each name is tried in turn until one is found.
 +
 +2014-10-18  Alan Mackenzie  <acm@muc.de>
 +
 +      Check that a "macro" found near point-min isn't a ## operator.
 +      Fixes bug #18749.
 +      * progmodes/cc-engine.el (c-macro-is-genuine-p): New function.
 +      (c-beginning-of-macro): Use the above new function.
 +
 +2014-10-18  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * net/gnutls.el (gnutls-negotiate): Don't use cl-mapcan; pass
 +      correct data to `gnutls-boot' (Bug#18664).
 +      Reported by Toke Høiland-Jørgensen <toke@toke.dk>.
 +
 +2014-10-18  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * whitespace.el (whitespace-style, whitespace-big-indent)
 +      (whitespace-big-indent-regexp, whitespace-style-value-list)
 +      (whitespace-toggle-option-alist, whitespace-interactive-char)
 +      (whitespace-toggle-options)
 +      (global-whitespace-toggle-options, whitespace-help-text)
 +      (whitespace-style-face-p, whitespace-color-on): Add a 'big-indent
 +      style to `whitespace-mode' to indicate that the line indentation
 +      is too deep.  By default, 32 SPACEs or four TABs are considered
 +      too many but `whitespace-big-indent-regexp' can be configured.
 +
 +2014-10-17  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/tildify.el (tildify--pick-alist-entry): Rename from
 +      tildify-mode-alist.
 +
 +2014-10-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eieio.el: Use lexical-binding drop non-GV fallback.
 +      (defclass, defgeneric, defmethod): Add doc-string position.
 +      (with-slots): Require cl-lib.
 +
 +      * emacs-lisp/eieio-core.el: Use lexical-binding and cl-lib.
 +      (list-of): New type.
 +      (eieio--typep): Remove.
 +      (eieio-perform-slot-validation): Use cl-typep instead.
 +
 +      * emacs-lisp/eieio-base.el: Use lexical-binding and cl-lib.
 +
 +      * emacs-lisp/cl-macs.el (cl--make-type-test): Avoid ((lambda ..) ..).
 +
 +2014-10-16  Alan Mackenzie  <acm@muc.de>
 +
 +      Trigger showing when point is in the "periphery" of a line or just
 +      inside a paren.
 +      * paren.el (show-paren-style, show-paren-delay)
 +      (show-paren-priority, show-paren-ring-bell-on-mismatch):
 +      Remove superfluous :group specifications.
 +      (show-paren-when-point-inside-paren)
 +      (show-paren-when-point-in-periphery): New customizable variables.
 +      (show-paren-highlight-openparen): Make into a defcustom.
 +      (show-paren--unescaped-p, show-paren--categorize-paren)
 +      (show-paren--locate-near-paren): New defuns.
 +      (show-paren--default): Refaactor and trigger on more paren
 +      positions.
 +      (show-paren-function): Small consequential changes.
 +
 +2014-10-16  Tom Tromey  <tom@tromey.com>
 +
 +      * files.el (auto-mode-alist): Use javascript-mode for .jsm
 +      (bug #18719).
 +
 +2014-10-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/characters.el (bracket-type): Force pre-loading of
 +      uni-brackets.el.
 +
 +2014-10-16  Alan Mackenzie  <acm@muc.de>
 +
 +      * cus-edit.el (custom-command-apply): Specify the return value in
 +      the doc string.
 +      (Custom-reset-standard): Save custom-file (e.g. .emacs) only when
 +      custom-command-apply has returned non-nil.
 +
 +2014-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eldoc.el (global-eldoc-mode): Enable by default.
 +      Remove incorrect handling of eldoc-print-after-edit.
 +      (eldoc-message-commands, eldoc-last-data): Use defvar.
 +      * loadup.el (emacs-lisp/eldoc): Load it.
 +
 +      * progmodes/m4-mode.el (m4-syntax-propertize): New var.
 +      (m4-mode): Use it.
 +      (m4--quoted-p): New function.
 +      (m4-font-lock-keywords): Don't handle #..\n comments any more.
 +      (m4-mode-syntax-table): Use punctuation syntax (according to m4 manual)
 +      for most special characters.
 +
 +      * progmodes/compile.el (compilation--previous-directory): Simplify.
 +      (compilation-next-error): Ensure the parse before we look at
 +      compilation-message property.
 +
 +2014-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * simple.el (what-cursor-position):
 +      * descr-text.el (describe-char): Update to support the new bidi
 +      characters.
  
        * emacs-lisp/tabulated-list.el (tabulated-list-mode):
        Force bidi-paragraph-direction to 'left-to-right'.  This fixes
        buffer-menu display when the first buffer happens to start with
        R2L letter.
  
 -2014-10-13  Glenn Morris  <rgm@gnu.org>
 +2014-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/elisp-mode.el (elisp--local-variables-1):
 +      Handle quoted expressions (bug#18688).
  
 -      * emacs-lisp/authors.el (authors-aliases, authors-fixed-case)
 -      (authors-obsolete-files-regexps): Additions.
 -      (authors-no-scan-regexps): New constant.
 -      (authors-no-scan-file-p): New function.
 -      (authors): Respect authors-no-scan-file-p.
 +2014-10-14  Jérémy Compostella  <jeremy.compostella@intel.com>
 +          Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 +      Reduce the amount of set environment variable commands.
  
  2014-10-12  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      Fix import completion.  (Bug#18582)
 -      * progmodes/python.el (python-shell-completion-get-completions):
 -      Fix import case regexp.
 +      Fix import completion.  (Bug#18582)
 +      * progmodes/python.el (python-shell-completion-get-completions):
 +      Fix import case regexp.
 +
 +2014-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/bat-mode.el (bat-font-lock-keywords): Fix \\<_ typo
 +      (bug#18622).  Reported by Arni Magnusson <arnima@hafro.is>.
 +      * progmodes/prolog.el (prolog-electric--underscore): Same.
 +
 +2014-10-12  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-get-remote-id): Check also for "gid".
 +
 +2014-10-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (all): Add missing ns and boolean to
 +      ns-use-fullscreen-animation.
 +
 +2014-10-11  Leo Liu  <sdl.web@gmail.com>
 +
 +      * progmodes/cfengine.el (cfengine3-defuns, cfengine3-vartypes):
 +      Use strings.
 +      (cfengine3-create-imenu-index): New function.
 +      (cfengine3-mode): Use it for `imenu-create-index-function'.
 +      (cfengine-auto-mode): Improve and prefer cfengine3-mode when
 +      buffer is empty.
 +
 +2014-10-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * cus-start.el (all): Add ns-use-fullscreen-animation.
 +
 +2014-10-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-display-function):
 +      Drop support for deprecated nil and list forms.
 +      (diary-list-entries): Update for the above.
 +      * calendar/cal-x.el (calendar-dedicate-diary): Simplify accordingly.
 +
 +2014-10-10  Leo Liu  <sdl.web@gmail.com>
 +
 +      * window.el (temp-buffer-window-show): Make BUFFER a required arg.
 +      (Bug#18656)
  
  2014-10-10  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * progmodes/bat-mode.el (bat-font-lock-keywords): Fix \\<_ typo
 -      (bug#18622).  Reported by Arni Magnusson <arnima@hafro.is>.
 -      * progmodes/prolog.el (prolog-electric--underscore): Same.
 +      * select.el (gui-selection-exists-p-alist): New method.
 +      * menu-bar.el (menu-bar-edit-menu, clipboard-yank):
 +      * simple.el (deactivate-mark): Use it.
 +      * term/x-win.el (gui-selection-exists-p):
 +      * term/w32-win.el (gui-selection-exists-p):
 +      * term/pc-win.el (gui-selection-exists-p):
 +      * term/ns-win.el (gui-selection-exists-p): Provide a backend instance.
 +
 +2014-10-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * info.el (Info-fontify-maximum-menu-size): Bump to 400k.  (Bug#16227)
 +      Fix :type.  Allow t to mean no limit.
 +      (Info-fontify-node): Handle Info-fontify-maximum-menu-size = t.
  
  2014-10-09  Glenn Morris  <rgm@gnu.org>
  
        * frame.el (display-monitor-attributes-list): Doc tweaks.
  
 -2014-10-08  Eli Zaretskii  <eliz@gnu.org>
 +2014-10-09  Eli Zaretskii  <eliz@gnu.org>
  
        * faces.el (display-grayscale-p): Mention in the doc string that
        the argument can be either a display name or a frame.
        be either a display name or a frame.  Improve the docs of the
        monitor attributes.  (Bug#18636)
  
 -2014-10-06  Martin Rudalics  <rudalics@gmx.at>
 +2014-10-09  Martin Rudalics  <rudalics@gmx.at>
  
        * term.el (term-window-width): Subtract 1 from the width when
        any fringe has zero width, not just the right fringe.  (Bug#18601)
  
 +2014-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.el (make-frame): Use t rather than nil for `w' (bug#18653).
 +
 +2014-10-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/cl-extra.el (cl-fresh-line): New function.
 +
 +2014-10-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/cal-x.el (calendar-dedicate-diary):
 +      Drop support for recently deleted aliases.
 +
 +2014-10-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      * progmodes/cfengine.el (cfengine3-make-syntax-cache):
 +      Always return a syntax.  Replace call-process-shell-command with
 +      process-file.  Ensure cfengine-mode-syntax-functions-regex is
 +      always set.  Ensure cache when cfengine-cf-promises fails.
 +      (Bug#18620)
 +
 +2014-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * font-lock.el (font-lock-fontify-buffer): Fix interactive-only markup.
 +
 +2014-10-07  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      Sync with upstream verilog-mode revision c075a492.
 +      * progmodes/verilog-mode.el (verilog-mode-version): Bump.
 +      (verilog-menu): Add AUTOINSERTLAST.
 +      (verilog-no-indent-begin-re): When `verilog-indent-begin-after-if'
 +      is nil, fix indenting initial/final to match always statements, bug825.
 +      Reported by Tim Clapp.
 +      (verilog-extended-complete-re): Fix indentation of DPI-C imports,
 +      bug557.  Reported by ZeDong Mao and Jason Forkey.
 +      (verilog-read-decls): Fix parsing typed interfaces.
 +      Fix AUTOINOUTMODPORT missing types.  Reported by Stephan Bourduas.
 +      (verilog-auto-arg-ports): Fix verilog-auto-arg-format single.
 +      (verilog-auto-output-every): Add regexp to AUTOOUTPUTEVERY, bug793.
 +      Reported by Pierre-David Pfister.
 +      (verilog-auto-insert-lisp): Doc fix.
 +      (verilog-auto-insert-last, verilog-auto): Add AUTOINSERTLAST to
 +      allow post-AUTO user fixups, bug826.  Reported by Dennis Muhlestein.
 +      (verilog-sk-ovm-class, verilog-sk-uvm-object)
 +      (verilog-sk-uvm-component): Fix missing string keyword in class
 +      skeletons, bug824.  Reported by eldad faruhi.
 +
 +2014-10-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * term/w32-win.el: Move all code from 32-common-fns.el here.
 +      (gui-select-text, gui-selection-value): Use w32 handlers in the w32
 +      console as well (bug#18629).
 +      * w32-common-fns.el: Remove.
 +      * loadup.el: Don't load w32-common-fns.el.
 +      * w32-fns.elc: Don't require w32-common-fns.
 +
 +      * icomplete.el: Move Iswitchb autoload here.  Much simpler.
 +      * obsolete/iswitchb.el (iswitchb-mode): Use normal autoload cookie.
 +      Remove redundant obsolescence thingy.
 +      * loadup.el: Don't load obsolete/loaddefs.el.
 +      * Makefile.in (obsolete-autoloads): Remove.
 +      (AUTOGENEL): Remove obsolete/loaddefs.el.
 +
 +2014-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (obsolete-autoloads): Write to a separate file,
 +      to workaround autoloads bug.  (Bug#17407)
 +      (AUTOGENEL): Add obsolete/loaddefs.el.
 +      * loadup.el: Load obsolete/loaddefs.el if present.
 +      * subr.el (do-after-load-evaluation):
 +      Don't warn about obsolete/loaddefs.el.
 +
 +      * menu-bar.el (menu-bar-games-menu): Remove landmark.
 +      It has zero relationship to a game.
 +
 +2014-10-06  Leo Liu  <sdl.web@gmail.com>
 +
 +      * imenu.el (imenu): Re-write for clarity.
 +
 +2014-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      Remove calendar code obsolete since at least version 23.1.
 +      * calendar/cal-bahai.el (calendar-absolute-from-bahai)
 +      (calendar-print-bahai-date, calendar-bahai-prompt-for-date)
 +      (calendar-goto-bahai-date, list-bahai-diary-entries)
 +      (mark-bahai-calendar-date-pattern, mark-bahai-diary-entries)
 +      (insert-bahai-diary-entry, insert-monthly-bahai-diary-entry)
 +      (insert-yearly-bahai-diary-entry):
 +      * calendar/cal-china.el (chinese-calendar-time-zone)
 +      (chinese-calendar-location-name)
 +      (chinese-calendar-daylight-time-offset)
 +      (chinese-calendar-standard-time-zone-name)
 +      (chinese-calendar-daylight-time-zone-name)
 +      (chinese-calendar-daylight-savings-starts)
 +      (chinese-calendar-daylight-savings-ends)
 +      (chinese-calendar-daylight-savings-starts-time)
 +      (chinese-calendar-daylight-savings-ends-time)
 +      (chinese-calendar-celestial-stem)
 +      (chinese-calendar-terrestrial-branch)
 +      (calendar-absolute-from-chinese, calendar-print-chinese-date)
 +      (calendar-goto-chinese-date):
 +      * calendar/cal-coptic.el (calendar-absolute-from-coptic)
 +      (calendar-print-coptic-date, coptic-prompt-for-date)
 +      (calendar-goto-coptic-date, calendar-absolute-from-ethiopic)
 +      (calendar-print-ethiopic-date, calendar-goto-ethiopic-date):
 +      * calendar/cal-french.el (calendar-absolute-from-french)
 +      (calendar-print-french-date, calendar-goto-french-date):
 +      * calendar/cal-hebrew.el (diary-sabbath-candles-minutes)
 +      (calendar-absolute-from-hebrew, calendar-print-hebrew-date)
 +      (hebrew-calendar-yahrzeit, calendar-goto-hebrew-date)
 +      (holiday-rosh-hashanah-etc, holiday-hanukkah)
 +      (holiday-passover-etc, holiday-tisha-b-av-etc)
 +      (list-hebrew-diary-entries, mark-hebrew-calendar-date-pattern)
 +      (mark-hebrew-diary-entries, insert-hebrew-diary-entry)
 +      (insert-monthly-hebrew-diary-entry)
 +      (insert-yearly-hebrew-diary-entry, list-yahrzeit-dates)
 +      (diary-omer, diary-yahrzeit, diary-rosh-hodesh, diary-parasha)
 +      (diary-sabbath-candles):
 +      * calendar/cal-islam.el (calendar-absolute-from-islamic)
 +      (calendar-print-islamic-date, calendar-goto-islamic-date)
 +      (list-islamic-diary-entries, mark-islamic-calendar-date-pattern)
 +      (mark-islamic-diary-entries, insert-islamic-diary-entry)
 +      (insert-monthly-islamic-diary-entry)
 +      (insert-yearly-islamic-diary-entry):
 +      * calendar/cal-iso.el (calendar-absolute-from-iso)
 +      (calendar-print-iso-date, calendar-iso-read-args)
 +      (calendar-goto-iso-date, calendar-goto-iso-week):
 +      * calendar/cal-julian.el (calendar-absolute-from-julian)
 +      (calendar-print-julian-date, calendar-goto-julian-date)
 +      (calendar-absolute-from-astro, calendar-print-astro-day-number)
 +      (calendar-goto-astro-day-number):
 +      * calendar/cal-mayan.el (calendar-print-mayan-date)
 +      (calendar-next-haab-date, calendar-previous-haab-date)
 +      (calendar-next-tzolkin-date, calendar-previous-tzolkin-date)
 +      (calendar-next-calendar-round-date)
 +      (calendar-previous-calendar-round-date)
 +      (calendar-absolute-from-mayan-long-count)
 +      (calendar-goto-mayan-long-count-date):
 +      * calendar/cal-move.el (scroll-calendar-left)
 +      (scroll-calendar-right, scroll-calendar-left-three-months)
 +      (scroll-calendar-right-three-months):
 +      * calendar/cal-persia.el (calendar-absolute-from-persian)
 +      (calendar-print-persian-date, persian-prompt-for-date)
 +      (calendar-goto-persian-date):
 +      * calendar/cal-x.el (calendar-after-frame-setup-hooks):
 +      * calendar/calendar.el (view-diary-entries-initially)
 +      (mark-diary-entries-in-calendar, calendar-today-face)
 +      (diary-face, holiday-face, view-calendar-holidays-initially)
 +      (mark-holidays-in-calendar, initial-calendar-window-hook)
 +      (today-visible-calendar-hook, today-invisible-calendar-hook)
 +      (hebrew-diary-entry-symbol, islamic-diary-entry-symbol)
 +      (bahai-diary-entry-symbol, american-date-diary-pattern)
 +      (european-date-diary-pattern, european-calendar-display-form)
 +      (american-calendar-display-form, holidays-in-diary-buffer)
 +      (all-hebrew-calendar-holidays, all-christian-calendar-holidays)
 +      (all-islamic-calendar-holidays, all-bahai-calendar-holidays)
 +      (fancy-diary-buffer, increment-calendar-month)
 +      (extract-calendar-month, extract-calendar-day)
 +      (extract-calendar-year, exit-calendar, calendar-date-is-legal-p)
 +      (mark-visible-calendar-date, calendar-version):
 +      * calendar/diary-lib.el (diary-button-face, sexp-diary-entry-symbol)
 +      (diary-display-hook, list-diary-entries-hook)
 +      (mark-diary-entries-hook, nongregorian-diary-listing-hook)
 +      (nongregorian-diary-marking-hook, print-diary-entries-hook)
 +      (abbreviated-calendar-year, number-of-diary-entries)
 +      (view-other-diary-entries, add-to-diary-list)
 +      (include-other-diary-files, simple-diary-display)
 +      (fancy-diary-display, print-diary-entries, mark-diary-entries)
 +      (mark-sexp-diary-entries, mark-included-diary-files)
 +      (mark-calendar-days-named, mark-calendar-month)
 +      (mark-calendar-date-pattern, sort-diary-entries)
 +      (list-sexp-diary-entries, make-diary-entry, insert-diary-entry)
 +      (insert-weekly-diary-entry, insert-monthly-diary-entry)
 +      (insert-yearly-diary-entry, insert-anniversary-diary-entry)
 +      (insert-block-diary-entry, insert-cyclic-diary-entry)
 +      (fancy-diary-font-lock-keywords, fancy-diary-display-mode):
 +      * calendar/holidays.el (general-holidays, oriental-holidays)
 +      (local-holidays, other-holidays, hebrew-holidays)
 +      (christian-holidays, islamic-holidays, bahai-holidays)
 +      (solar-holidays, list-calendar-holidays)
 +      (check-calendar-holidays, mark-calendar-holidays)
 +      (filter-visible-calendar-holidays):
 +      * calendar/lunar.el (calendar-phases-of-moon, phases-of-moon)
 +      (diary-phases-of-moon): Remove obsolete aliases.
 +      * calendar/cal-menu.el (cal-menu-load-hook): Remove obsolete hook.
 +      * calendar/cal-x.el (calendar-one-frame-setup)
 +      (calendar-only-one-frame-setup, calendar-two-frame-setup):
 +      Remove obsolete functions.
 +      (cal-x-load-hook): Remove obsolete hook.
 +      * calendar/calendar.el (european-calendar-style):
 +      Remove obsolete variable.
 +      (calendar-date-style): No longer consult european-calendar-style.
 +      * calendar/calendar.el (european-calendar, american-calendar):
 +      Remove obsolete commands.
 +      * calendar/calendar.el (calendar-for-loop): Remove obsolete macro.
 +      * calendar/diary-lib.el (diary-face): Remove obsolete variable.
 +      (diary-font-lock-date-forms, diary-fancy-font-lock-keywords):
 +      Use the face `diary' instead of the variable `diary-face'.
 +      * calendar/holidays.el (hebrew-holidays-1, hebrew-holidays-2)
 +      (hebrew-holidays-3, hebrew-holidays-4): Remove obsolete variables.
 +      * calendar/icalendar.el (icalendar--date-style): Remove function.
 +      Replace all uses with calendar-date-style.
 +      * textmodes/remember.el (calendar-date-style): Declare.
 +      (remember-diary-convert-entry):
 +      No longer consult european-calendar-style.
 +
  2014-10-05  Leo Liu  <sdl.web@gmail.com>
  
        * imenu.el (imenu-default-goto-function): Fix typo.
  
 +2014-10-04  Thomas Fitzsimmons  <fitzsim@fitzsim.org>
 +
 +      * net/ntlm.el (ntlm-build-auth-request):
 +      Add NTLM2 Session support.  (Bug#15603)
 +
 +2014-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * apropos.el (apropos-symbols-internal):
 +      Avoid error with non-symbol properties.  (Bug#18337#16)
 +
 +      * startup.el (command-line):
 +      Handle altered user-emacs-directory in load-path warning.  (Bug#18512)
 +
 +2014-10-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (window-full-height-p): Make it behave correctly for
 +      minibuffer window.
 +      (window-current-scroll-bars): Fix code.
 +      (fit-frame-to-buffer): Use window-scroll-bar-height instead of
 +      window-scroll-bars.
 +      * frame.el (frame-current-scroll-bars): Fix doc-string.
 +      * scroll-bar.el (toggle-horizontal-scroll-bar): New command.
 +
 +2014-10-04  Mark Oteiza  <mvoteiza@udel.edu>  (tiny change)
 +
 +      * files.el (auto-mode-alist): Use sh-mode for .zsh files.  (Bug#18488)
 +
  2014-10-04  Glenn Morris  <rgm@gnu.org>
  
        * frame.el (frame-monitor-attributes)
        (display-monitor-attributes-list): Doc fixes.
  
 +2014-10-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Merge trivially safe differences from standalone CC-mode.
 +      * progmodes/cc-mode.el (c-initialize-cc-mode): Don't quote a symbol
 +      just to then pass it to `symbol-value'.
 +      (prog-mode): Provide fallback definition, if needed.
 +      * progmodes/cc-langs.el: Always load `cl'.  Don't load `cl-lib'.
 +      Remove "cl-" prefix accordingly.
 +      * progmodes/cc-fonts.el (c-font-lock-invalid-string): Use integerp or
 +      characterp depending on the type of characters.
 +      (c-font-lock-enum-tail): Remove unused var `start'.
 +      * progmodes/cc-engine.el: Load CL at compile-time.
 +      (c-declare-lang-variables): Use mapcan.
 +      (c-append-to-state-cache): Remove unused var `ce+1'.
 +      (c-parse-state-state): Make buffer-local.
 +      (c-ssb-lit-begin): Remove unused var `pps-end-pos'.
 +      (c-just-after-func-arglist-p): Remove unused var `end'.
 +      * progmodes/cc-defs.el: Load cc-fix if delete-dups is undefined.
 +      (c-<-as-paren-syntax, c->-as-paren-syntax): Move definition earlier.
 +      (c-make-keywords-re): Use delete-dups.
 +      (c-get-current-file): Avoid file-name-base.
 +      * progmodes/cc-cmds.el (c-electric-lt-gt): Remove unused var
 +      `close-paren-inserted'.
 +      * progmodes/cc-awk.el (c-forward-sws): Remove unused declaration.
 +
 +      * progmodes/python.el: Avoid building unneeded markers.
 +      (python-font-lock-keywords, python-indent-dedent-line)
 +      (python-fill-paren, python-shell-completion-complete-or-indent):
 +      Prefer point over point-marker.
 +      (inferior-python-mode): Remove redundant completion settings.
 +
  2014-10-03  Dmitry Gutov  <dgutov@yandex.ru>
  
        * vc/vc-svn.el (vc-svn-ignore-completion-table): Implement.
        similarly to Rogers's 2010-06-16 change for the remote case
        (bug#18605).
  
 -2014-10-01  Glenn Morris  <rgm@gnu.org>
 +2014-10-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      New gui-selection-value consolidating x-selection-value.
 +      * select.el (gui-selection-value-alist): New method.
 +      (gui-selection-value): New function.
 +      (x-selection-value): Make it an obsolete alias.
 +      * simple.el (interprogram-paste-function): Default to
 +      gui-selection-value.
 +      * w32-common-fns.el (w32-get-selection-value): Simplify.
 +      (x-selection-value): Remove alias.
 +      (interprogram-paste-function): Don't set.
 +      (gui-selection-value): Define for w32.
 +      * term/x-win.el (gui-selection-value): Define for x.
 +      (x--selection-value): Rename from x--selection-value.
 +      (interprogram-paste-function): Don't set.
 +      * term/pc-win.el (w16-get-selection-value): Simplify.
 +      (msdos-initialize-window-system): Don't set
 +      interprogram-paste-function.
 +      (gui-selection-value): Define for pc.
 +      * term/ns-win.el (x-selection-value): Remove.
 +      (gui-selection-value): Define for ns, instead.
 +      * term/common-win.el (x-setup-function-keys): Don't set
 +      interprogram-paste-function.
 +      * obsolete/mouse-sel.el (mouse-sel-get-selection-function):
 +      Use gui-selection-value.
 +
 +2014-10-02  David Raynes  <rayners@gmail.com>  (tiny change)
 +
 +      * term/ns-win.el: Add functions to ns frame, not x frame (bug#18614).
 +
 +2014-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * obsolete/lucid.el (read-number): Remove, redundant.
 +      * obsolete/cl-compat.el (cl-floor, cl-ceiling, cl-round, cl-truncate):
 +      Remove, broken.
 +
 +2014-10-02  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/package.el (package-import-keyring):
        Create gnupg directory private.  (Bug#17625#155)
  
 -2014-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * progmodes/python.el (python-shell-completion-get-completions):
        Use python-shell--prompt-calculated-input-regexp from the
        process buffer (bug#18582).
        Don't assume that `line' comes from the process buffer.
  
 +2014-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.el: Use lexical-binding (bug#18598).
 +      (make-frame): Use t rather than nil for tty's window-system.
 +      * startup.el (command-line): Use gui-method.
 +
 +      Consolidate management/ownership of selections.
 +      * select.el (gui-get-selection-alist): New method.
 +      (gui-get-selection): Use it.  Rename from x-get-selection.
 +      (x-get-selection): Define as obsolete alias.
 +      (x-get-clipboard): Mark obsolete.
 +      (gui-get-primary-selection): New function.
 +      (x-get-selection-value): Mark obsolete.
 +      (gui-own-selection-alist, gui-disown-selection-alist)
 +      (gui-selection-owner-p-alist): New methods.
 +      (gui-set-selection): Use them.  Rename from x-set-selection.
 +      (x-set-selection): Define as obsolete alias.
 +      (gui--valid-simple-selection-p): Rename from
 +      x-valid-simple-selection-p.
 +      * w32-common-fns.el (gui-own-selection, gui-disown-selection)
 +      (gui-selection-owner-p, gui-get-selection): Define for w32.
 +      (w32-get-selection-value): Rename from x-get-selection-value.
 +      Use the new gui-last-selected-text.
 +      * term/x-win.el (x-get-selection-value): Remove.
 +      (x-clipboard-yank): Declare obsolete.
 +      (gui-own-selection, gui-disown-selection, gui-get-selection)
 +      (gui-selection-owner-p): Define for x.
 +      * term/w32-win.el (w32-win-suspend-error): Rename from
 +      x-win-suspend-error.
 +      * term/pc-win.el (w16-get-selection-value): Rename from
 +      x-get-selection-value.
 +      (w16-selection-owner-p): Rename from x-selection-owner-p.
 +      (gui-own-selection, gui-disown-selection, gui-get-selection)
 +      (gui-selection-owner-p): Define for pc.
 +      (w16--select-text): New function.
 +      * term/ns-win.el (gui-own-selection, gui-disown-selection)
 +      (gui-get-selection, gui-selection-owner-p): Define for ns.
 +      * term.el (term-mouse-paste):
 +      * mouse.el (mouse-yank-primary): Use gui-get-primary-selection.
 +
 +2014-10-02  H. Dieter Wilhelm  <dieter@duenenhof-wilhelm.de>
 +
 +      * calc/calc-help.el (calc-describe-thing): Quote strings
 +      which could look like regexps.
 +
 +2014-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Consolidate x-select-text.
 +      * frame.el (gui-method, gui-method-define, gui-method-declare)
 +      (gui-call): New macros.
 +      (gui-method--name): New function.
 +      (frame-creation-function-alist): Use gui-method-declare.
 +      (make-frame): Use gui-method.
 +      * select.el (gui-select-enable-clipboard): Rename from
 +      x-select-enable-clipboard and move here.
 +      (x-select-enable-clipboard): Define as obsolete alias.
 +      (gui-last-selected-text): New var, to replace x-last-selected-text.
 +      (gui-select-text): New GUI method.
 +      (gui-select-text): New function.
 +      (x-select-text): Define as obsolete alias.
 +      * term/common-win.el (x-select-enable-clipboard, x-select-text):
 +      Move to select.el.
 +      * simple.el (interprogram-cut-function): Change default to
 +      x-select-text.
 +      (interprogram-paste-function): Change default to `ignore'.
 +      * w32-common-fns.el (interprogram-cut-function): Don't modify.
 +      * term/x-win.el (interprogram-cut-function): Don't modify.
 +      (gui-select-text): Add method for x.
 +      * term/w32-win.el (gui-select-text): Add method for w32.
 +      * term/pc-win.el (x-last-selected-text): Remove, use
 +      gui-last-selected-text instead.
 +      (msdos-initialize-window-system): Don't set interprogram-cut-function.
 +      (gui-select-text): Add method for pc.
 +      * term/ns-win.el (ns-last-selected-text): Remove, use
 +      gui-last-selected-text instead.
 +      (gui-select-text): Add method for ns.
 +      (x-setup-function-keys): Don't change interprogram-cut-function.
 +      * loadup.el ("startup"): Load after "frame".
 +      * subr.el (package--builtin-versions, package--description-file):
 +      Move from startup.el.
 +      * startup.el (package--builtin-versions, package--description-file):
 +      Move to subr.el.
 +      (handle-args-function-alist, window-system-initialization-alist):
 +      Use gui-method-declare.
 +      (command-line): Use gui-method.
 +
 +2014-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (alist-get): New accessor.
 +      * emacs-lisp/gv.el (alist-get): Provide expander.
 +      * winner.el (winner-remember):
 +      * tempo.el (tempo-use-tag-list):
 +      * progmodes/gud.el (minor-mode-map-alist):
 +      * international/mule-cmds.el (define-char-code-property):
 +      * frameset.el (frameset-filter-params):
 +      * files.el (dir-locals-set-class-variables):
 +      * register.el (get-register, set-register):
 +      * calc/calc-yank.el (calc-set-register): Use it.
 +      * ps-print.el (ps-get, ps-put, ps-del): Mark as obsolete.
 +      * tooltip.el (tooltip-set-param): Mark as obsolete.
 +      (tooltip-show): Use alist-get instead.
 +      * ses.el (ses--alist-get): Remove.  Use alist-get instead.
 +
 +2014-10-01  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-backend.el: Remove Time-stamp.  Rename variable
 +      `newsticker--download-logos' to `newsticker-download-logos' and
 +      make it customizable.
 +      (newsticker--sentinel-work): Move xml-workarounds to function
 +      `newsticker--do-xml-workarounds', call unless libxml-parser is
 +      used.  Allow single quote in regexp for encoding.
 +      Use libxml-parser if available, else fall back to `xml-parse-region'.
 +      Take care of possibly missing namespace prefixes (like "RDF"
 +      instead of "rdf:RDF") when checking xml nodes and attributes (as
 +      libxml correctly removes the prefixes).  Always use Atom 1.0 as
 +      fallback feed type.  Rename `newsticker--download-logos' to
 +      `newsticker-download-logos'
 +      (newsticker--unxml, newsticker--unxml-node)
 +      (newsticker--unxml-attribute): New.
 +      (newsticker--parse-atom-1.0): Call `unxml' in case that embedded
 +      HTML code has become part of the xml parse tree.
 +      (newsticker--parse-rss-1.0, newsticker--parse-rss-2.0): Take care
 +      of possibly missing namespace prefixes.
 +      (newsticker--parse-generic-items): Code formatting.  Typo.
 +      (newsticker--images-dir): Add trailing slash.
 +      (newsticker--image-get): Fix error message.
 +
 +      * net/newst-plainview.el: Remove Time-stamp.
 +
 +      * net/newst-reader.el: Remove Time-stamp.
 +      (newsticker-download-logos): Rename variable
 +      `newsticker--download-logos' to `newsticker-download-logos' and
 +      make it customizable.
 +      (newsticker--print-extra-elements): Add optional parameter
 +      'htmlish for using html markup.  Amend list of ignored elements.
 +      (newsticker--do-print-extra-element): Add parameter 'htmlish for
 +      using html markup.
 +
 +      * net/newst-ticker.el: Remove Time-stamp.
 +
 +      * net/newst-treeview.el (newsticker--treeview-item-show): Use html
 +      for formatting extra elements.
 +
 +      * net/newsticker.el:  Remove Time-stamp, Version.
 +      (newsticker-version): Make obsolete.
 +
  2014-09-30  Leonardo Nobrega  <leonobr@gmail.com>  (tiny change)
  
        * progmodes/python.el (python-fill-paren): Don't inf-loop at EOB
        (bug#18462).
  
 -2014-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/package.el (package-check-signature): Default to nil if
        GPG is not available.
        (package-refresh-contents): Don't mess with the keyring if we won't
        check the signatures anyway.
  
 -2014-09-18  Kan-Ru Chen  <kanru@kanru.info>
 +2014-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * ses.el (ses--row, ses--col): New dyn-scoped vars, to replace row&col.
 +      (ses-center, ses-center-span): Use them.
 +      (ses-print-cell): Bind them while calling the printer.
 +      (row, col, maxrow, maxcol): Don't declare as dynamically scoped.
 +      (ses-dorange): Revert last change.
 +      (ses-calculate-cell): Don't bind row&col dynamically while evaluating
 +      the formula.
 +      (ses-set-cell): Avoid `eval'.
 +      (ses--time-check): Rename it from ses-time-check and turn it into
 +      a macro.
 +
 +      * ses.el (ses-setup): Don't assume modifying the iteration var of
 +      dotimes affects the iteration (bug#18191).
 +
 +2014-09-30  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.el (ses-calculate-cell): Bind row and col dynamically to
 +      their values with 'cl-progv'.
 +      (ses-dorange): Bind row, col, maxrow and maxcol dynamically to
 +      their values with 'cl-progv', also use non-interned symbols for
 +      row, minrow, maxrow, mincol and maxcol.
 +      (maxrow maxcol): New defvar, to make the compiler happy.
 +
 +2014-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * minibuffer.el (completion-at-point): Emit warning for ill-behaved
 +      completion functions.
 +
 +2014-09-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * ses.el (ses--letref): Quote value before it gets re-evaluated.
 +
 +2014-09-28  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      Font-lock `cl-flet*', too.
 +      * emacs-lisp/lisp-mode.el (lisp-cl-font-lock-keywords-2):
 +      Add "flet*" to intermediate var `cl-lib-kw'.
 +
 +2014-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * epg-config.el (epg-gpg-program): Use the plain program names rather
 +      than their absolute file name.
 +
 +      * subr.el (track-mouse): New macro.
 +      * emacs-lisp/cconv.el (cconv-convert, cconv-analyse-form):
 +      Remove track-mouse case.
 +      * emacs-lisp/bytecomp.el (byte-compile-track-mouse): Remove.
 +
 +2014-09-27  Leo Liu  <sdl.web@gmail.com>
 +
 +      * progmodes/elisp-mode.el (elisp--eldoc-last-data): Use defvar.
 +
 +      * emacs-lisp/eldoc.el (eldoc-mode): Fix thinko.
 +
 +2014-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/pcase.el (pcase--split-match, pcase--app-subst-match):
 +      Handle the case where `match' is :pcase--succeed or :pcase--fail
 +      (bug#18554).
 +
 +      Introduce global-eldoc-mode.  Move Elisp-specific code to elisp-mode.el.
 +      * emacs-lisp/eldoc.el (global-eldoc-mode): New minor mode.
 +      (eldoc-schedule-timer): Obey it.
 +      (eldoc-documentation-function): Default to nil.
 +      (eldoc-mode): Don't enable if eldoc-documentation-function is not set.
 +      (eldoc-documentation-function-default, eldoc-get-fnsym-args-string)
 +      (eldoc-highlight-function-argument, eldoc-get-var-docstring)
 +      (eldoc-last-data-store, eldoc-docstring-first-line)
 +      (eldoc-docstring-format-sym-doc, eldoc-fnsym-in-current-sexp)
 +      (eldoc-beginning-of-sexp, eldoc-current-symbol)
 +      (eldoc-function-argstring): Move to elisp-mode.el.
 +      (eldoc-symbol-function): Remove, unused.
 +      * progmodes/elisp-mode.el: New file.  Rename all "eldoc-*" to "elisp--*".
 +      (elisp-completion-at-point): Rename from lisp-completion-at-point.
 +      (elisp--preceding-sexp): Rename from preceding-sexp.
 +      * loadup.el: Load new file progmodes/elisp-mode.
 +      * ielm.el (inferior-emacs-lisp-mode): Set eldoc-documentation-function.
 +      * emacs-lisp/lisp.el (lisp--local-variables-1, lisp--local-variables)
 +      (lisp--local-variables-completion-table, lisp--expect-function-p)
 +      (lisp--form-quoted-p, lisp--company-doc-buffer)
 +      (lisp--company-doc-string, lisp--company-location)
 +      (lisp-completion-at-point): Move to elisp-mode.el.
 +      * emacs-lisp/lisp-mode.el (lisp--mode-syntax-table): New syntax-table,
 +      extracted from emacs-lisp-mode-syntax-table.
 +      (emacs-lisp-mode-abbrev-table, emacs-lisp-mode-syntax-table): Move to
 +      elisp-mode.el.
 +      (lisp-imenu-generic-expression): Add comments to document what comes
 +      from which Lisp dialect.
 +      (emacs-lisp-mode-map, emacs-lisp-byte-compile)
 +      (emacs-lisp-byte-compile-and-load, emacs-lisp-mode-hook)
 +      (emacs-lisp-mode, emacs-list-byte-code-comment-re)
 +      (emacs-lisp-byte-code-comment)
 +      (emacs-lisp-byte-code-syntax-propertize, emacs-lisp-byte-code-mode)
 +      (lisp-interaction-mode-map, lisp-interaction-mode)
 +      (eval-print-last-sexp, last-sexp-setup-props)
 +      (last-sexp-toggle-display, prin1-char, preceding-sexp)
 +      (eval-last-sexp-1, eval-last-sexp-print-value)
 +      (eval-last-sexp-fake-value, eval-sexp-add-defvars, eval-last-sexp)
 +      (eval-defun-1, eval-defun-2, eval-defun): Move to elisp-mode.el.
 +
 +2014-09-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * progmodes/grep.el (grep-regexp-alist): Use more-accurate regexp.
 +      Do not match file names that end in '/', as they cannot be 'grep'
 +      hits nowadays.  This prevents confusion when 'grep -r' reports a
 +      match in a file whose basename is ':12345:'.  Conversely, do not
 +      require exactly the same sequence of spaces and tabs after both
 +      colons, and allow spaces or tabs before the second colon, as per
 +      the POSIX spec for 'grep' output.
 +
 +2014-09-26  Leo Liu  <sdl.web@gmail.com>
 +
 +      Add cl-parse-integer based on parse-integer (Bug#18557)
 +      * calendar/parse-time.el (parse-time-digits): Remove.
 +      (digit-char-p, parse-integer) Moved to cl-lib.el.
 +      (parse-time-tokenize, parse-time-rules, parse-time-string):
 +      Use cl-parse-integer.
 +
 +      * emacs-lisp/cl-extra.el (cl-parse-integer): New function.
 +
 +      * emacs-lisp/cl-lib.el (cl-digit-char-table): New var.
 +      (cl-digit-char-p): New function.
 +
 +2014-09-25  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/add-log.el (change-log-next-buffer): Don't create an empty
 +      buffer "ChangeLog" when the current buffer doesn't match ChangeLog.[0-9].
 +      Return the current buffer if no files match the default pattern
 +      ChangeLog.[0-9].  Signal "end of multi" when file is nil.  (Bug#18547)
 +
 +2014-09-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * net/tramp-sh.el (tramp-sh-handle-vc-registered): Don't modify
 +      the global vc-handled-backends (bug#18535).
 +
 +2014-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * find-cmd.el (find-cmd): Use grep's `find-program' (bug#18518).
 +      Suggested by <lompik@voila.fr>.
 +
 +2014-09-24  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id):
 +      Rename from `newsticker--treeview-do-get-node'.
 +      (newsticker--treeview-get-node-by-id):
 +      Rename from `newsticker--treeview-get-node'.
 +      (newsticker--treeview-buffer-init)
 +      (newsticker--treeview-buffer-init): Disable buffer undo.
 +      (newsticker--treeview-unfold-node): Adapt to modified
 +      `newsticker--group-find-parent-group'.
 +      (newsticker--group-do-find-group):
 +      Rename from `newsticker--group-do-find-group-for-feed'.
 +      Now works for both, groups and feeds.
 +      (newsticker--group-find-parent-group):
 +      Rename from `newsticker--group-find-group-for-feed'.
 +      Now works for both, groups and feeds.
 +      (newsticker--group-do-get-parent-group)
 +      (newsticker--group-get-parent-group): Remove.
 +      (newsticker-group-add-group): Change interactive prompts.
 +      (newsticker-group-add-group): Finally jump to added group.
 +      (newsticker-group-delete-group): Finally jump to current feed.
 +      (newsticker--group-do-rename-group, newsticker-group-rename-group)
 +      (newsticker--get-group-names, newsticker--group-names): New.
 +      (newsticker-group-move-feed): Finally jump to moved feed.
 +      (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up)
 +      (newsticker-group-shift-group-down)
 +      (newsticker-group-shift-group-up, newsticker--group-shift): New.
 +      (newsticker-treeview-mode-map): New keybindings for new shift commands.
 +
 +      * net/newst-backend.el (newsticker--item-list)
 +      (newsticker--item-position, newsticker--prev-message)
 +      (newsticker--scrollable-text): Move to newst-ticker.el.
 +
 +      * net/newst-ticker.el (newsticker--item-list)
 +      (newsticker--item-position, newsticker--prev-message)
 +      (newsticker--scrollable-text): Move from newst-backend.el.
 +
 +2014-09-22  Kan-Ru Chen  <kanru@kanru.info>
  
        * window.el (fit-window-to-buffer): When counting buffer width,
        count the whole visible buffer.  Correctly convert the body-height
        to pixel size for window-text-pixel-size (Bug#18498).
  
 -2014-09-14  Glenn Morris  <rgm@gnu.org>
 +2014-09-22  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/sql.el (sql-product-alist): Improve the Vertica entry.
 +      (sql-execute): Use `special-mode'.
 +
 +2014-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add pcase-defmacro, as well as `quote' and `app' patterns.
 +      * loadup.el: Increase max-lisp-eval-depth when macroexpanding macroexp.
 +      * emacs-lisp/pcase.el: Allow (F . ARGS) in `app' patterns.
 +      (pcase--funcall, pcase--eval): New functions.
 +      (pcase--u1): Use them for guard, pred, let, and app.
 +      (\`): Use the new feature to generate better code for vector patterns.
 +      * emacs-lisp/pcase.el: Use pcase-defmacro to handle backquote.
 +      (pcase--upat): Remove.
 +      (pcase--macroexpand): Don't hardcode handling of `.
 +      (pcase--split-consp, pcase--split-vector): Remove.
 +      (pcase--split-equal): Disregard ` since it's expanded away.
 +      (pcase--split-member): Optimize for quote rather than for `.
 +      (pcase--split-pred): Optimize for quote rather than for `.
 +      (pcase--u1): Remove handling of ` (and of `or' and `and').
 +      Quote non-selfquoting values when passing them to `eq'.
 +      Drop `app's let-binding if the variable is not used.
 +      (pcase--q1): Remove.
 +      (`): Define as a pattern macro.
 +      * emacs-lisp/pcase.el (pcase--match): New smart-constructor function.
 +      (pcase--expand pcase--q1, pcase--app-subst-match): Use it.
 +      (pcase--macroexpand): Handle self-quoting patterns here, expand them to
 +      quote patterns.
 +      (pcase--split-match): Don't hoist or/and here any more.
 +      (pcase--split-equal): Optimize quote patterns as well as ` patterns.
 +      (pcase--flip): New helper macro.
 +      (pcase--u1): Optimize the memq case directly.
 +      Don't handle neither self-quoting nor and/or patterns any more.
 +      * emacs-lisp/pcase.el (pcase-defmacro): New macro.
 +      (pcase--macroexpand): New function.
 +      (pcase--expand): Use it.
 +      * emacs-lisp/pcase.el (pcase--app-subst-match, pcase--app-subst-rest):
 +      New optimization functions.
 +      (pcase--u1): Add support for `quote' and `app'.
 +      (pcase): Document them in the docstring.
 +
 +2014-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Use lexical-bindin in Ibuffer.
 +      * ibuffer.el (ibuffer-do-toggle-read-only): `arg' is unused.
 +      (ibuffer-compile-format): Simplify.
 +      (ibuffer-clear-summary-columns): Simplify.
 +      * ibuf-ext.el (ibuffer-generate-filter-groups): Don't use the third
 +      elem of dotimes when we don't refer to the iteration var from it.
 +      (ibuffer-toggle-sorting-mode): Avoid add-to-list.
 +      * ibuf-macs.el (define-ibuffer-column, define-ibuffer-op):
 +      Silence byte-compiler.
 +
 +2014-09-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * font-lock.el (font-lock-compile-keyword): Don't confuse a lambda
 +      expression for a list.
 +
 +      * emacs-lisp/bytecomp.el (byte-compile-lambda): Don't add fundoc usage
 +      for functions with no arguments.
 +
 +      * mpc.el (mpc-data-directory): Use locate-user-emacs-file.
 +      (mpc-volume-refresh): Make sure the corresponding header-line is updated.
 +
 +2014-09-17  Tom Willemse  <tom@ryuslash.org>  (tiny change)
 +
 +      * simple.el (clone-indirect-buffer): Mention the return value
 +      (bug#18478).
 +
 +      * progmodes/prog-mode.el (prog-mode-hook): Replace reference to
 +      Text mode in docstring (bug#18464).
 +
 +2014-09-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/perl-mode.el (perl-syntax-propertize-function):
 +      Accept underscores in identifiers after "sub" (bug#18502).
 +
 +2014-09-21  Tassilo Horn  <tsdh@gnu.org>
 +
 +      * textmodes/reftex-sel.el (reftex-select-label-mode)
 +      (reftex-select-bib-mode, reftex-insert-docstruct): Derive modes
 +      from special-mode (instead of fundamental-mode) and propertize
 +      with font-lock-face instead of just face.  (Bug#18496)
 +
 +      * textmodes/reftex-toc.el (reftex-toc-mode, reftex-toc): Ditto.
 +
 +2014-09-19  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * emacs-lisp/lisp.el (lisp-completion-at-point): Only calculate
 +      `table-etc' when `end' is non-nil.
 +      (lisp-completion-at-point): Move `end' back if it's after quote.
 +      If in comment or string, only complete when after backquote.
 +      (Bug#18265)
 +      (lisp-completion-at-point): Don't use
 +      `lisp--local-variables-completion-table' in the
 +      `lisp--form-quoted-p' case.
 +
 +2014-09-19  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * emacs-lisp/lisp.el (lisp--expect-function-p)
 +      (lisp--form-quoted-p): New functions.
 +      (lisp-completion-at-point): Use them to see if we're completing a
 +      variable reference, a function name, or just any symbol.
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-02/msg00229.html
 +
 +2014-09-18  Ivan Kanis  <ivan@kanis.fr>
 +
 +      * net/shr.el, net/eww.el: Don't override `shr-width', but
 +      introduce a new variable `shr-internal-width'.  This allows users
 +      to specify a width themselves.
 +
 +2014-09-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * image-mode.el (image-toggle-display-image): If we have a
 +      `fit-width' or a `fit-height', don't limit the size of the image
 +      to the window size, because that doesn't preserve the aspect ratio.
 +      * image-mode.el: Move defvars earlier to avoid a byte-compilation
 +      warning.
 +
 +2014-09-17  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * progmodes/js.el: Add interpreter-mode-alist support for various
 +      JavaScript interpreters.
 +
 +2014-09-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't assume 'grep' supports GREP_OPTIONS.
 +      The GREP_OPTIONS environment variable is planned to be marked
 +      obsolescent in GNU grep, due to problems in its use, so stop
 +      relying on it.
 +      * progmodes/grep.el (grep-highlight-matches): Document this.
 +      (grep-process-setup): Do not set GREP_OPTIONS.
 +      (grep-compute-defaults): Use an explicit --color option if supported.
 +
 +2014-09-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * msb.el (msb--make-keymap-menu, msb-menu-bar-update-buffers):
 +      Don't add outdated key-shortcut cache (bug#18482).
 +
 +2014-09-15  Glenn Morris  <rgm@gnu.org>
  
        * image.el (image-multi-frame-p): Fix thinko - do not force
        a delay if none was specified.  (Bug#18334)
  
 -2014-09-12  Kan-Ru Chen  <kanru@kanru.info>
 +2014-09-15  Kan-Ru Chen  <kanru@kanru.info>
 +
 +      * window.el (fit-window-to-buffer): Doc fix.
 +
 +2014-09-15  Ivan Shmakov  <ivan@siamics.net>
 +
 +      * desktop.el (desktop-create-buffer): Check that buffers are still live
 +      before burying them (bug#18373).
 +
 +2014-09-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/diary-lib.el (diary-list-entries):
 +      Restore 24.3 display behavior.  (Bug#18381)
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mouse.el (mouse-drag-line): On text-mode frames, count the mode
 +      line and header line as 1 pixel.  This fixes the 1-"pixel" (row)
 +      discrepancy between window-pixel-edges and mouse events, and
 +      avoids moving mode line up when the mouse click is on the modeline
 +      and no drag is attempted.
 +
 +2014-09-14  Daniel Colascione  <dancol@dancol.org>
 +
 +      * register.el (insert-register): Change default interactive
 +      insertion mode.
 +
 +2014-09-14  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-flush-file-function): Simplify check.
 +      Suppress debug messages.
 +
 +      * net/tramp.el (tramp-file-name-handler):
 +      * net/tramp-gvfs.el (tramp-gvfs-url-file-name): Apply `cons' where
 +      appropriate.
 +
 +2014-09-13  Christopher Schmidt  <ch@ristopher.com>
 +
 +      * calendar/calendar.el (calendar-update-mode-line):
 +      Do not overwrite mode-line-format if calendar-mode-line-format is
 +      nil.  (Bug#18467)
 +
 +2014-09-13  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/pcase.el (pcase--dontwarn-upats): New var.
 +      (pcase--expand): Use it.
 +      (pcase-exhaustive): New macro.  (Bug#16567)
 +
 +      * emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
 +      Add pcase-exhaustive.
 +
 +2014-09-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * mail/rmailmm.el (rmail-mime-insert-html): Decode the HTML part
 +      using the specified transfer-encoding, if any, or 'undecided'.
 +      (rmail-mime-render-html-shr): Bind shr-width to nil, so lines are
 +      broken at the window margin.
 +
 +2013-12-27  Ken Olum  <kdo@cosmos.phy.tufts.edu>
 +
 +      Support rendering of HTML parts in Rmail (bug#4258).
 +      * mail/rmailmm.el (rmail-mime-process): Handle text/html
 +      separately from other text/ types.  Suppress tagline for
 +      multipart body.
 +      (rmail-mime-parse): Don't change visibility of tagline here.
 +      (rmail-mime-set-bulk-data, rmail-mime-insert-bulk):
 +      Handle text/html specially.
 +      (rmail-mime-render-html-function,rmail-mime-prefer-html): New variables.
 +      (rmail-mime-insert-html, rmail-mime-render-html-shr)
 +      (rmail-mime-render-html-lynx): New functions.
 +      (rmail-mime-fix-inserted-faces): New function.
 +      (rmail-mime-process-multipart): Find the best part to show
 +      following rmail-mime-prefer-html if set.
 +      (rmail-mime-searching): New variable.
 +      (rmail-search-mime-message): Bind rmail-mime-searching to
 +      suppress rendering while searching.
 +
 +2014-09-12  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/sql.el (sql-product-alist): Add vertica.
 +      (sql-vertica-program, sql-vertica-options)
 +      (sql-vertica-login-params, sql-comint-vertica, sql-vertica):
 +      New functions and variables to support Vertica.
 +      Inspired by code by Roman Scherer <roman@burningswell.com>.
 +
 +2014-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * ses.el (ses-file-format-extend-parameter-list): Rename from
 +      ses-file-format-extend-paramter-list, to correct a misspelling.
 +      All uses changed.
 +
 +2014-09-10  Alan Mackenzie  <acm@muc.de>
 +
 +      CC Mode: revert recent changes and fix bug 17463 (cc-langs.elc
 +      gets loaded at run-time).
 +      * progmodes/cc-langs.el (c-no-parens-syntax-table): Rename the
 +      c-lang-const to c-make-no-parens-syntax-table and correct the
 +      logic.
 +      (c-no-parens-syntax-table): Correct the logic of the
 +      c-lang-defvar.
 +
 +2014-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      CC-mode: Set open-paren-in-column-0-is-defun-start to nil;
 +      plus misc cleanup.
 +      * progmodes/cc-mode.el (c-basic-common-init):
 +      Set open-paren-in-column-0-is-defun-start.
 +      (adaptive-fill-first-line-regexp, font-lock-syntactic-keywords):
 +      Remove declarations, unused.
 +      (run-mode-hooks): Remove declaration.
 +      (font-lock-defaults): Use plain `defvar' to declare.
 +      (c-run-mode-hooks): Test existence of run-mode-hooks with fboundp.
 +      * progmodes/cc-langs.el (c-filter-ops): Avoid `setq'.
 +      (c-make-mode-syntax-table): Don't micro-optimize.
 +      (c-keywords, c-keyword-member-alist): Simplify.
 +      (c-kwds-lang-consts): Don't eval at compile-time.
 +      (c-primary-expr-regexp): Comment out unused vars.
 +      * progmodes/cc-fonts.el (c-font-lock-context): Declare at top-level.
 +      (c-font-byte-compile): New var.
 +      (c--compile): New function.  Use it instead of `byte-compile'.
 +      (c-cpp-matchers): Quote the value returned by
 +      `c-make-syntactic-matcher' in case it's not self-evaluating.
 +      (c-basic-matchers-before): Avoid a plain MATCHER as keyword, wrap it in
 +      parentheses instead (in case MATCHER happens to be a list).
 +      (c-font-lock-enum-tail): Remove unused var `start'.
 +      (c-font-lock-objc-methods): Silence byte-compiler warnings.
 +      * progmodes/cc-engine.el (c-syntactic-re-search-forward): Sink an `if'
 +      test into an argument.
 +      * progmodes/cc-defs.el (c-point, c-major-mode-is, c-put-char-property)
 +      (c-get-char-property): Don't use `eval' just to unquote a constant.
 +      (c-use-extents): Remove.  Use (featurep 'xemacs), compiled
 +      more efficiently.
 +      (c-put-char-property-fun): Don't call `byte-compile' by hand.
 +      (c-clear-char-property, c-clear-char-properties): Check that `property'
 +      is a quoted constant.
 +      (c-emacs-features): Remove `infodock', `syntax-properties', and
 +      `pps-extended-state' (never used), `8-bit' and `1-bit' (use (featurep
 +      'xemacs) instead).  Use `with-temp-buffer' and let-bind vars after
 +      changing buffer, so we don't have to setq them again afterwards.
 +      (c-lang-const): Remove redundant symbolp assertions.
 +      (c-find-assignment-for-mode): Use `or'.
 +      * Makefile.in (compile-one-process): Remove cc-mode dependency.
 +
 +2014-09-09  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/sql.el (sql-default-directory): Fix type annotation.
 +
 +2014-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/cc-awk.el: Remove unneeded cc-bytecomp use.
 +      Change doc comments into docstrings.
 +      * Makefile.in: Remove cc-awk dependency.
 +
 +2014-09-08  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/sql.el (sql-send-line-and-next): New command,
 +      bound to C-c C-n.
 +      (sql-show-sqli-buffer): Display the buffer instead of its name and
 +      bind the command to C-c C-z.
 +      (sql-default-directory): New user option.
 +      (sql-product-interactive): Bind `default-directory' to it to
 +      enable remote connections using Tramp.
 +      (sql-set-sqli-buffer): Call `sql-product-interactive' when no
 +      suitable buffer is available.
 +
 +2014-09-08  Glenn Morris  <rgm@gnu.org>
 +
 +      * calendar/calendar.el (calendar-basic-setup):
 +      Fix calendar-view-holidays-initially-flag and fancy display.
 +      * calendar/diary-lib.el (diary-live-p): Doc fix.
 +
 +      * calendar/calendar.el (calendar-basic-setup):
 +      Avoid clobbering calendar with diary.  (Bug#18381)
 +
 +2014-09-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * vc/vc-dir.el (vc-dir-update): Don't burp in corner case.
 +
 +2014-09-08  Lars Ljung  <lars@matholka.se>  (tiny change)
 +
 +      * isearch.el (isearch-yank-word-or-char): Obey superword-mode
 +      as well (bug#18400).
 +
 +2014-09-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * subr.el (posn-actual-col-row): Doc fix.  (Bug#18385)
 +
 +2014-09-06  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/pcase.el (pcase): Doc fix.
 +      (pcase--split-vector): New function.
 +      (pcase--q1): Support vector qpattern.  (Bug#18327)
 +
 +2014-09-05  Sam Steingold  <sds@gnu.org>
 +
 +      * textmodes/tex-mode.el (tex-print-file-extension): New user
 +      option.
 +      (tex-print): Use it instead of the hard-coded string.
 +
 +2014-09-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-sh-handle-start-file-process):
 +      Expand `default-directory'.
 +
 +2014-09-05  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * scroll-bar.el (horizontal-scroll-bars-available-p):
 +      New function.
 +      (horizontal-scroll-bar-mode): Rewrite using
 +      horizontal-scroll-bars-available-p.
 +      * menu-bar.el (menu-bar-showhide-scroll-bar-menu): Rewrite using
 +      horizontal-scroll-bars-available-p.
 +
 +2014-09-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (call-process-shell-command, process-file-shell-command):
 +      Make the `args' obsolete (bug#18409).
 +      (start-process-shell-command, start-file-process-shell-command):
 +      Use `declare'.
 +
 +2014-09-05  Jay Belanger  <jay.p.belanger@gmail.com>
 +
 +      * calc/calc-forms.el (math-normalize-hms): Do a better check for
 +      "negative" hms forms.
 +
 +2014-09-04  Rasmus Pank Roulund  <emacs@pank.eu>
 +
 +      * vc/vc-git.el (vc-git-conflicted-files): Fix bug when git status
 +      returns nil (bug#18391).
 +
 +2014-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/eldoc.el (eldoc-function-argstring): Don't strip
 +      terminating paren (bug#18352).
 +      (eldoc-last-data-store): Return cached data.
 +      (eldoc-get-var-docstring): Avoid setq.
 +      (eldoc-get-fnsym-args-string): Clarify data flow.
 +
 +2014-09-04  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
 +
 +      * emacs-lisp/eldoc.el (eldoc-highlight-function-argument): Handle the
 +      case where we're currently providing part of the &rest arg after some
 +      &key args, as in define-ibuffer-op (bug#18048).
 +
 +2014-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/which-func.el (which-func-ff-hook): Obey pre-existing
 +      buffer-local setting of which-func-mode.
 +      (which-func-mode): Use defvar-local.
 +      (which-function-mode): Don't reset which-func-mode in each buffer since
 +      it might have been set by someone else.
 +      (which-func-update-ediff-windows): Check which-function-mode.
 +
 +2014-09-03  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.el (frame-initialize): Remove horizontal-scroll-bars
 +      from frame-initial-frame-alist.
 +      * scroll-bar.el (previous-horizontal-scroll-bar-mode)
 +      (horizontal-scroll-bar-mode-explicit)
 +      (set-horizontal-scroll-bar-mode, get-horizontal-scroll-bar-mode)
 +      (toggle-horizontal-scroll-bar): Remove.
 +      (horizontal-scroll-bar-mode): Remove defcustom.
 +      (horizontal-scroll-bar-mode): Fix doc-string.
 +      (scroll-bar-toolkit-scroll)
 +      (scroll-bar-toolkit-horizontal-scroll): Add doc-strings stubs.
 +
 +2014-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/package.el (package-generate-description-file):
 +      Properly quote the arguments (bug#18332).  Change second arg.
 +      (package--alist-to-plist-args): Rename from package--alist-to-plist and
 +      quote the elements.
 +      (package--make-autoloads-and-stuff): Fix the test for pre-existence of
 +      the *-pkg.el file.  Adjust to new calling convention of
 +      package-generate-description-file.
 +
 +      * progmodes/gud.el (gud-gdb-completion-at-point): Add hack (bug#18282).
 +      (gud-gdb-completions): Remove obsolete workaround.
 +
 +2014-09-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * subr.el (posn-col-row): Revert the change from commit
 +      2010-11-13T21:07:58Z!eliz@gnu.org, which
 +      was inadvertently merged from emacs-23 release branch in 2010-11-18T03:54:14Z!monnier@iro.umontreal.ca
 +      monnier@iro.umontreal.ca-20101118035414-yvlg7k7dk4k4l3q, and
 +      introduced an off-by-one error in the reported row when there is a
 +      header line.  (Bug#18384)
 +
 +2014-09-03  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-indent-post-self-insert-function):
 +      Avoid electric colon at beginning-of-defun.  (Bug#18228)
 +
 +2014-09-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * tutorial.el (tutorial--display-changes):
 +      Fix 2014-08-01 change.  (Bug#18382)
 +
 +2014-09-03  Ken Brown  <kbrown@cornell.edu>
 +
 +      * startup.el (fancy-splash-frame): Extend the fix for Bug#16014 to
 +      the Cygwin-w32 build.  (Bug#18347)
 +
 +2014-09-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * tar-mode.el (tar--extract, tar-extract):
 +      Avoid permanently disabling undo in extracted buffers.  (Bug#18344)
 +
 +2014-09-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-font-lock-quoted-subshell): Try to better
 +      handle multiline elements (bug#18380).
 +
 +2014-09-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * ls-lisp.el (ls-lisp-use-string-collate)
 +      (ls-lisp-UCA-like-collation): New defcustoms.
 +      (ls-lisp-string-lessp): Use them to control sorting by file
 +      names.  (Bug#18051)
 +      (ls-lisp-version-lessp): New function.
 +      (ls-lisp-handle-switches): Use it to implement the -v switch of
 +      GNU ls.
 +      (ls-lisp--insert-directory): Mention the -v switch in the doc string.
 +
 +2014-08-31  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * ibuffer.el: Replace mode-specific quit function with
 +      `quit-window' via `special-mode'.
 +      (ibuffer-mode-map): Use keybindings from special-mode-map instead
 +      of local overrides.
 +      (ibuffer): Don't store previous windows configuration.
 +      Let `quit-window' handle restoring.
 +      (ibuffer-quit): Remove function.  Use `quit-window' instead.
 +      (ibuffer-restore-window-config-on-quit): Remove variable.
 +      (ibuffer-prev-window-config): Remove variable.
 +
 +2014-08-29  Michael Heerdegen  <michael_heerdegen@web.de>
 +
 +      * emacs-lisp/easy-mmode.el (define-minor-mode): Use mode function
 +      name instead of variable name in hook docstring.  (Bug#18349)
 +
 +2014-08-29  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (display-buffer-at-bottom): Prefer bottom-left
 +      window to other bottom windows.  Reuse a bottom window if it
 +      shows the buffer already.  Suggested by Juri Linkov
 +      <juri@jurta.org> in discussion of (Bug#18181).
 +
 +2014-08-29  Leo Liu  <sdl.web@gmail.com>
 +
 +      * files.el (minibuffer-with-setup-hook): Allow (:append FUN) to
 +      append to minibuffer-setup-hook.  (Bug#18341)
 +
 +2014-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/cc-defs.el: Expose c-lanf-defconst's expressions to the
 +      byte-compiler.
 +      (lookup-syntax-properties): Silence byte-compiler.
 +      (c-lang-defconst): Quote the code with `lambda' rather than with
 +      `quote'.
 +      (c-lang-const): Avoid unneeded setq.
 +      (c-lang-constants-under-evaluation): Add docstring.
 +      (c-lang--novalue): New constant.
 +      (c-find-assignment-for-mode): Use it instead of c-lang-constants.
 +      (c-get-lang-constant): Same here.
 +      Get the mode's value using `funcall' now that the code is quoted
 +      with `lambda'.
 +
 +2014-08-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-handle-shell-command): Use `display-buffer'.
 +      (Bug#18326)
 +
 +2014-08-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * scroll-bar.el (scroll-bar-horizontal-drag-1): Handle new
 +      interpretation of `portion-whole'.
 +
 +2014-08-28  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-adb.el: Spell author name correctly.
 +
 +2014-08-28  João Távora  <joaotavora@gmail.com>
 +
 +      * net/shr.el (shr-expand-url): Plain expand-file-name is not enough;
 +      use url-expand-file-name.  (Bug#18310)
 +
 +2014-08-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * emulation/cua-rect.el (cua--highlight-rectangle):
 +      Avoid error at point-min.  (Bug#18309)
 +
 +2014-08-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/python.el (python-shell-prompt-detect): Remove redundant
 +      executable-find (bug#18244).
 +
 +      * simple.el (self-insert-uses-region-functions): Defvar.
 +
 +2014-08-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * subr.el (remq): Revert 2014-08-25 doc change (not always true).
 +
 +2014-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * startup.el (normal-top-level): Now use internal--top-level-message.
 +
 +2014-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * startup.el (normal-top-level): Use top-level-message.
 +
 +2014-08-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-copy-url): Encode copied URL to avoid getting
 +      URLs containing spaces and the like.
 +
 +2014-08-25  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * subr.el (remq): Fix docstring (Bug#18253).
 +
 +2014-08-25  Christoph Scholtes  <cschol2112@gmail.com>
 +
 +      * replace.el (query-replace): Fix typo in docstring (Bug#18320).
 +
 +2014-08-24  Alan Mackenzie  <acm@muc.de>
 +
 +      Handle C++11's "auto" and "decltype" constructions.
 +      * progmodes/cc-engine.el (c-forward-type): Enhance to recognise
 +      and return 'decltype.
 +      (c-forward-decl-or-cast-1): New let variables backup-kwd-sym,
 +      prev-kwd-sym, new-style-auto.  Enhance to handle the new "auto"
 +      keyword.
 +      * progmodes/cc-fonts.el (c-font-lock-declarations): Handle the
 +      "decltype" keyword.
 +      (c-font-lock-c++-new): Handle "decltype" constructions.
 +      * progmodes/cc-langs.el (c-auto-ops, c-auto-ops-re):
 +      New c-lang-defconsts/defvars.
 +      (c-haskell-op, c-haskell-op-re): New c-lang-defconsts/defvars.
 +      (c-typeof-kwds, c-typeof-key): New c-lang-defconsts/defvars.
 +      (c-typeless-decl-kwds): Append "auto" onto the C++ value.
 +      (c-not-decl-init-keywords): Also exclude c-typeof-kwds from value.
 +
 +      Make ">>" act as double template ender in C++ Mode.  (Bug#11386)
 +      * progmodes/cc-langs.el (c->-op-cont-tokens): New lang-const split
 +      off from c->-op-cont-re.
 +      (c->-op-cont-tokens): Change to use the above.
 +      (c->-op-without->-cont-regexp): New lang-const.
 +      * progmodes/cc-engine.el (c-forward-<>-arglist-recur):
 +      Use c->-op-without->-cont-regexp in place of c->-op-cont-tokens.
 +
 +
 +2014-08-23  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-fonts.el (c-font-lock-declarators): Fix infinite
 +      loop, bug #18306.  The bug was introduced on 2014-08-02.
 +
 +2014-08-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * textmodes/texnfo-upd.el (texinfo-specific-section-type):
 +      Don't recognize a Top node if there are other sectioning commands
 +      earlier in the Texinfo file.  This fixes a bug in
 +      texinfo-make-menu and avoids inflooping in
 +      texinfo-all-menus-update when they are invoked on texinfo.texi.
 +
 +2014-08-21  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (window--side-window-p): New function.
 +      (split-window, window-splittable-p): Use window--side-window-p to
 +      determine whether WINDOW can be split (Bug#18304).
 +      * calendar/calendar.el (calendar-basic-setup): Fix one call of
 +      `window-splittable-p' and add another (Bug#18304).
  
 -      * window.el (fit-window-to-buffer): Doc fix.
 +2014-08-20  Sam Steingold  <sds@gnu.org>
  
 -2014-09-10  Ivan Shmakov  <ivan@siamics.net>  (tiny change)
 +      * progmodes/python.el (python-new-pythonpath): Extract from
 +      `python-shell-calculate-process-environment'.
  
 -      * desktop.el (desktop-create-buffer): Check that buffers are still live
 -      before burying them (bug#18373).
 +2014-08-18  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
  
 -2014-09-09  Glenn Morris  <rgm@gnu.org>
 +      * emacs-lisp/eldoc.el (eldoc-highlight-function-argument): Add support
 +      for &key args (bug#18048).
  
 -      * calendar/diary-lib.el (diary-list-entries):
 -      Restore 24.3 display behavior.  (Bug#18381)
 +2014-08-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-09-09  Eli Zaretskii  <eliz@gnu.org>
 +      * emacs-lisp/eldoc.el (eldoc-argument-case): Obsolete and change default.
 +      (eldoc-function-argstring-format): Remove.
 +      (eldoc-function-argstring): Always return upcase args.
 +      Use help-make-usage.  Don't add parens.
 +      (eldoc-get-fnsym-args-string): Don't obey eldoc-argument-case since
 +      it's too late to do it right (bug#18048).
  
 -      * mouse.el (mouse-drag-line): On text-mode frames, count the mode
 -      line and header line as 1 pixel.  This fixes the 1-"pixel" (row)
 -      discrepancy between window-pixel-edges and mouse events, and
 -      avoids moving mode line up when the mouse click is on the modeline
 -      and no drag is attempted.
 +2014-08-18  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-09-08  Glenn Morris  <rgm@gnu.org>
 +      * scroll-bar.el (scroll-bar-horizontal-drag-1)
 +      (scroll-bar-toolkit-horizontal-scroll): When determining the
 +      paragraph direction, use the buffer of the window designated in
 +      the event.
  
 -      * calendar/calendar.el (calendar-basic-setup):
 -      Avoid clobbering calendar with diary.  (Bug#18381)
 +2014-08-16  Andreas Schwab  <schwab@linux-m68k.org>
  
 -2014-09-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * vc/diff-mode.el (diff-fixup-modifs): Handle empty line in
 +      context of unified diff.
  
 -      * vc/vc-dir.el (vc-dir-update): Don't burp in corner case.
 +2014-08-16  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-09-04  Lars Ljung  <lars@matholka.se>  (tiny change)
 +      Add dependencies to fix loaddefs race during parallel builds.
 +      Without this, for example, 'make -j bootstrap' can fail and report
 +      "Opening input file: no such file or directory,
 +      .../lisp/calendar/diary-loaddefs.el ... recipe for target
 +      'calendar/hol-loaddefs.el' failed", where the hol-loaddefs.el rule
 +      got confused because diary-loaddefs.el was being built in parallel.
 +      * Makefile.in ($(CAL_DIR)/diary-loaddefs.el):
 +      Depend on $(CAL_DIR)/cal-loaddefs.el.
 +      ($(CAL_DIR)/hol-loaddefs.el): Depend on $(CAL_DIR)/diary-loaddefs.el.
  
 -      * isearch.el (isearch-yank-word-or-char): Obey superword-mode
 -      as well (bug#18400).
 +2014-08-16  Martin Rudalics  <rudalics@gmx.at>
  
 -2014-09-04  Eli Zaretskii  <eliz@gnu.org>
 +      * scroll-bar.el (scroll-bar-horizontal-drag-1): Use cdr of
 +      portion-whole for scrolling right-to-left text.
  
 -      * subr.el (posn-actual-col-row): Doc fix.  (Bug#18385)
 +2014-08-15  Leo Liu  <sdl.web@gmail.com>
  
 -2014-09-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * speedbar.el (speedbar-generic-list-tag-p): Allow special
 +      elements from imenu.
  
 -      * emacs-lisp/package.el (package-generate-description-file):
 -      Properly quote the arguments (bug#18332).  Change second arg.
 -      (package--alist-to-plist-args): Rename from package--alist-to-plist and
 -      quote the elements.
 -      (package--make-autoloads-and-stuff): Fix the test for pre-existence of
 -      the *-pkg.el file.  Adjust to new calling convention of
 -      package-generate-description-file.
 +2014-08-15  Glenn Morris  <rgm@gnu.org>
  
 -      * progmodes/gud.el (gud-gdb-completion-at-point): Add hack (bug#18282).
 -      (gud-gdb-completions): Remove obsolete workaround.
 +      * subr.el (with-output-to-temp-buffer): Doc fix; from elisp manual.
  
 -2014-09-02  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
  
 -      * subr.el (posn-col-row): Revert the change from commit
 -      2010-11-13T21:07:58Z!eliz@gnu.org, which
 -      was inadvertently merged from emacs-23 release branch in 2010-11-18T03:54:14Z!monnier@iro.umontreal.ca
 -      monnier@iro.umontreal.ca-20101118035414-yvlg7k7dk4k4l3q, and
 -      introduced an off-by-one error in the reported row when there is a
 -      header line.  (Bug#18384)
 +      * progmodes/compile.el (compilation-error-regexp-alist-alist):
 +      Add Guile regexpses.
  
 -2014-09-01  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
  
 -      * progmodes/python.el (python-indent-post-self-insert-function):
 -      Avoid electric colon at beginning-of-defun.  (Bug#18228)
 +      * progmodes/gud.el (guiler): New function.  Starts the Guile REPL;
 +      add Guile debugger support for GUD.
  
 -2014-09-01  Glenn Morris  <rgm@gnu.org>
 +2014-08-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * tutorial.el (tutorial--display-changes):
 -      Fix 2014-07-29 change.  (Bug#18382)
 +      * obsolete/mouse-sel.el (mouse-sel-mode): Use add/remove-function.
 +      (mouse-sel--ignore): New function.
 +      (mouse-sel-has-been-enabled, mouse-sel-original-bindings)
 +      (mouse-sel-original-interprogram-cut-function)
 +      (mouse-sel-original-interprogram-paste-function): Remove.
  
 -2014-08-29  Ken Brown  <kbrown@cornell.edu>
 +2014-08-13  Eric S. Raymond  <esr@thyrsus.com>
  
 -      * startup.el (fancy-splash-frame): Extend the fix for Bug#16014 to
 -      the Cygwin-w32 build.  (Bug#18347)
 +      * vc/vc-git.el (vc-git-resolve-when-done): New function.
 +      Call "git add" when there are no longer conflict markers.
  
 -2014-08-28  Glenn Morris  <rgm@gnu.org>
 +2014-08-13  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
  
 -      * tar-mode.el (tar--extract, tar-extract):
 -      Avoid permanently disabling undo in extracted buffers.  (Bug#18344)
 +      * vc/vc-git.el (vc-git-find-file-hook): New function.
 +      Adds support for calling smerge (and resolve) on a conflicted file.
 +      (vc-git-conflicted-files): New function.
 +      Useful in itself and a step towards better smerge support.
  
 -2014-08-27  Michael Albinus  <michael.albinus@gmx.de>
 +2014-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * emacs-lisp/authors.el (authors-aliases): Addition.
 +      * mpc.el (mpc-reorder): Don't bother splitting the "active" elements
 +      to the first part if they're the same as the selection.
  
 -      * net/tramp-adb.el: Spell author name correctly.
 +2014-08-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -2014-08-27  João Távora  <joaotavora@gmail.com>
 +      * image-mode.el (image-transform-reset): New command and menu item.
 +      (image-mode-map): Rearrange the menu items to put presumably more
 +      obscure items at the end.
  
 -      * net/shr.el (shr-expand-url): Plain expand-file-name is not enough;
 -      use url-expand-file-name.  (Bug#18310)
 +2014-08-12  Juri Linkov  <juri@jurta.org>
  
 -2014-08-25  Glenn Morris  <rgm@gnu.org>
 +      * vc/vc-annotate.el (vc-annotate-background-mode):
 +      Use `with-demoted-errors' instead of `ignore-errors'.  (Bug#18189)
  
 -      * emulation/cua-rect.el (cua--highlight-rectangle):
 -      Avoid error at point-min.  (Bug#18309)
 +2014-08-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-08-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * files.el (out-of-memory-warning-percentage): Turn it off by default.
  
 -      * progmodes/python.el (python-shell-prompt-detect): Remove redundant
 -      executable-find (bug#18244).
 +2014-08-11  Sam Steingold  <sds@gnu.org>
  
 -      * simple.el (self-insert-uses-region-functions): Defvar.
 +      * textmodes/sgml-mode.el (sgml-validate-command): Set depending on
 +      the presence of known validators (tidy, (o)nsgmls).
  
 -2014-08-13  Leo Liu  <sdl.web@gmail.com>
 +2014-08-11  Ulf Jasper  <ulf.jasper@web.de>
  
 -      * speedbar.el (speedbar-generic-list-tag-p): Allow special
 -      elements from imenu.
 +      Newsticker: introduce `newsticker-treeview-date-format'.  (Bug#17227)
 +      * net/newst-treeview.el (newsticker-treeview-date-format): New.
 +      (newsticker--treeview-list-add-item):
 +      Use `newsticker-treeview-date-format'.
  
  2014-08-11  Glenn Morris  <rgm@gnu.org>
  
 -      * subr.el (with-output-to-temp-buffer): Doc fix; from elisp manual.
 -
        * files.el (basic-save-buffer-2): Revert 2013-01-31 change, which
        chose coding system for writing before backing up, since it causes
        a more serious problem than the one it solves.  (Closes Bug#18141,
        reopens Bug#13522.)
  
 -2014-08-10  Martin Rudalics  <rudalics@gmx.at>
 +2014-08-11  Martin Rudalics  <rudalics@gmx.at>
  
 -      * window.el (window-total-size): Make doc-string more
 -      self-contained.
 -
 -2014-08-09  Martin Rudalics  <rudalics@gmx.at>
 +      * window.el (window-total-size): Make doc-string more self-contained.
  
        * window.el (display-buffer-below-selected): Restore original
        behavior if buffer is already displayed in the window below the
        selected one (Bug#18181).
  
 -2014-08-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mouse.el (mouse--down-1-maybe-follows-link): Don't convert the down
        event (bug#18212).
  
 -2014-08-08  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-11  Eli Zaretskii  <eliz@gnu.org>
  
        * info.el (info): Doc fix.
  
 -2014-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-08-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * info.el (Info-mode-map): Override a global down-mouse-2 binding
        (bug#18212).
  
 -2014-08-05  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-11  Eli Zaretskii  <eliz@gnu.org>
  
        * simple.el (default-line-height): A floating-point value of
        line-spacing means a fraction of the default frame font's height,
        (window-screen-lines): Use window-inside-pixel-edges for
        determining the window height in pixels.  (Bug#18195)
  
 -2014-07-29  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-11  Grégoire Jadi  <daimrod@gmail.com>
 +
 +      * leim/quail/latin-post.el: Transform " __" into " _".  (Bug#18023)
 +
 +2014-08-10  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      Enumerate evaluated sexp diary entries (Bug#7911).
 +      * calendar/icalendar.el (icalendar-export-sexp-enumerate-all)
 +      (icalendar-export-sexp-enumeration-days): New.
 +      (icalendar-export-region): Now `icalendar--convert-to-ical'
 +      returns a cons cell or a list of cons cells.
 +      (icalendar--convert-to-ical): Take care of
 +      `icalendar-export-sexp-enumerate-all'.  Return (a list of) cons cells.
 +      (icalendar--convert-ordinary-to-ical)
 +      (icalendar--convert-weekly-to-ical, icalendar--convert-yearly-to-ical)
 +      (icalendar--convert-block-to-ical, icalendar--convert-block-to-ical)
 +      (icalendar--convert-float-to-ical, icalendar--convert-cyclic-to-ical)
 +      (icalendar--convert-anniversary-to-ical): Return cons cell.
 +      (icalendar--convert-sexp-to-ical): Enumerate evaluated sexp
 +      entries.  Return (list of) cons cells.
 +
 +2014-08-09  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/vc-annotate.el (vc-annotate-background-mode): Add :set
 +      to reevaluate `vc-annotate-color-map'.  (Bug#18189)
 +
 +2014-08-09  Alan Mackenzie  <acm@muc.de>
 +
 +      * progmodes/cc-fonts.el (c-font-lock-declarators): Remove check
 +      for top-level that can cause unacceptable slow-down in scrolling.
 +      See email Subject: Huge {...} blocks in C/C++ again, from Dmitry
 +      Antipov from 2013-10-14 in emacs-devel.
 +
 +2014-08-08  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
 +
 +      * ibuffer.el (ibuffer-mode-map): Use toggle button for
 +      `ibuffer-auto-mode' menu entry.
 +      (ibuffer-mode-hook): Add `ibuffer-auto-mode' customization option.
 +
 +2014-08-08  Matthias Meulien  <orontee@gmail.com>
 +
 +      * progmodes/prog-mode.el (prog-mode-hook): Make customizable.
 +      (Bug#16394)
 +
 +2014-08-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (window--min-size-1): Explicitly set WINDOW arg in
 +      calls of window-min-pixel-height and window-min-pixel-width.
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * progmodes/ada-mode.el:
 +      * net/tramp.el (tramp-handle-file-symlink-p):
 +      * net/tramp-ftp.el (tramp-ftp-file-name-handler): Remove a comment
 +      about VMS, which we no longer support.
 +      * progmodes/ada-xref.el (ada-xref-current): Remove mention of VMS,
 +      and fix a FIXME, using convert-standard-filename in place of
 +      removed ada-convert-file-name.
 +
 +2014-08-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (auto-mode-alist): Remove support for VMS from a pattern.
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Refer to MS-DOS using the same name everywhere.
 +      * arc-mode.el, files.el, frame.el: ``MS-DOG'', ``MSDOG'' and
 +      ``msdog'' become ``MS-DOS''.
 +
 +2014-08-07  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
 +      Use cached "remote-copy-args" value, if available.  (Bug#18199)
 +
 +2014-08-07  Leo Liu  <sdl.web@gmail.com>
 +
 +      * help.el (temp-buffer-setup-hook,temp-buffer-show-hook):
 +      Revert change on 2014-03-22.
 +
 +2014-08-06  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * calendar/icalendar.el (icalendar--diarytime-to-isotime)
 +      (icalendar--convert-ordinary-to-ical): Allow for missing minutes
 +      (Bug#13750).
 +
 +
 +2014-08-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * image-mode.el (image-toggle-display-image): Always rescale images
 +      to not be bigger than the current window.
 +
 +2014-08-05  Eric Brown  <brown@fastmail.fm>  (tiny change)
 +
 +      * net/eww.el (eww-bookmarks-directory): New variable.
 +      (eww-write-bookmarks): Use it.
 +      (eww-read-bookmarks): Ditto.
 +
 +2014-08-05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * net/shr.el (shr-copy-url): Also copy the image URL.
 +
 +2014-08-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-flush-file-function): Suppress function
 +      also for Tramp working buffers.
 +
 +2014-08-04  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el: Fix completions inside (i)pdb.
 +      (python-shell-completion-pdb-string-code): Make obsolete.
 +      (python-shell-completion-get-completions):
 +      Use python-shell-completion-string-code resending setup code
 +      continuously for (i)pdb.
 +
 +2014-08-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * rect.el (rectangle--default-line-number-format): Rename
 +      from misspelled rectange--default-line-number-format (Bug#18045).
 +      All uses changed.
 +
 +2014-08-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't mishandle year-9999 dates (Bug#18176).
 +      * calendar/parse-time.el (parse-time-rules):
 +      Allow years up to most-positive-fixnum.
 +      * calendar/time-date.el (date-to-time):
 +      Pass "Specified time is not representable" errors through.
 +
 +2014-08-02  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el: Completion code cleanups.
 +      (python-shell-completion-get-completions): Detect and send import
 +      statements directly to completion function.
 +      (python-shell-completion-at-point): Simplify prompt calculation
 +      and import vs input completion logic.
 +
 +2014-08-02  Alan Mackenzie  <acm@muc.de>
 +
 +      Fix confusion in C++ file caused by comma in "= {1,2},".
 +      Bug #17756.
 +      * progmodes/cc-engine.el (c-beginning-of-statement-1): In checking
 +      for a statement boundary marked by "}", check there's no "="
 +      before the "{".
 +      (c-guess-basic-syntax CASE 9B): Call c-beginning-of-statement with
 +      non-nil `comma-delim' argument.
 +      * progmodes/cc-fonts.el (c-font-lock-declarators): Parse an
 +      initializer expression more accurately.
 +
 +      Correct loop termination condition in c-syntactic-skip-backward.
 +      * progmodes/cc-engine.el (c-syntactic-skip-backward): Correct for
 +      the situation where, after moving back out of a literal,
 +      skip-chars-backward doesn't move further, yet checks have still to
 +      be done.
 +
 +2014-08-01  Eli Zaretskii  <eliz@gnu.org>
  
        * tutorial.el (tutorial--display-changes): Accept punctuation
        characters before the key binding.  (Bug#18146)
  
 -2014-07-28  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-31  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 -      * doc-view.el (doc-view-open-text): Don't require that the
 -      document is saved in a file (e.g., email attachment).
 +      * progmodes/python.el: Shell output capture enhancements.
 +      (python-shell-accept-process-output): New function.
 +      (inferior-python-mode)
 +      (python-shell-send-setup-code): Use it.
  
 -2014-07-27  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-30  Christophe Deleuze  <christophe.deleuze@free.fr>  (tiny change)
 +
 +      * calendar/icalendar.el (icalendar--decode-isodatetime):
 +      Use actual current-time-zone when converting to local time.  (Bug#15408)
 +
 +2014-07-29  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.el (window--state-put-2): Handle horizontal scroll
 +      bars, if present.
 +
 +2014-07-29  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
 +
 +      * menu-bar.el (menu-bar-update-buffers): Update item list format
 +      in `buffers-menu' to confirm with changes to `get_keyelt'
 +      (r117463).  (Bug#18016)
 +
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (inferior-python-mode): Make input prompts
 +      read-only.
 +
 +2014-07-28  Emilio C. Lopes  <eclig@gmx.net>
 +
 +      * net/tramp-sh.el (tramp-get-remote-python): Also search for
 +      executables named "python2" or "python3".
 +      (tramp-get-remote-uid-with-python): Use parentheses around
 +      arguments to `print' to make it compatible with Python 3.
 +      (tramp-get-remote-gid-with-python): Ditto.  (Bug#18118)
 +
 +2014-07-28  Eli Zaretskii  <eliz@gnu.org>
  
        * window.el (window--pixel-to-total): Use FRAME's root window, not
        that of the selected frame.  (Bug#18112, Bug#16674)
  
 -2014-07-27  Andreas Schwab  <schwab@linux-m68k.org>
 +2014-07-28  Andreas Schwab  <schwab@linux-m68k.org>
  
        * textmodes/tex-mode.el (tex-font-lock-verb): Doc fix.
        (Bug#18117)
  
 -2014-07-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * progmodes/python.el (inferior-python-mode): Doc fix.
  
 -2014-07-25  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-28  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-edit-item--next-key): If next key is
        not a character, ignore it instead of raising an error.
  
 -2014-07-25  Stephen Berman  <stephen.berman@gmx.net>
 -
        * calendar/todo-mode.el: Fix handling of marked items and make
        minor code improvements.
        (todo-edit-item): If there are marked items, ensure user can only
        (todo-edit-item--header, todo-edit-item--diary-inclusion)
        (todo-item-done): Use it.
  
 -2014-07-25  Glenn Morris  <rgm@gnu.org>
 +2014-07-28  Glenn Morris  <rgm@gnu.org>
  
        * files.el (toggle-read-only): Re-add basic doc-string.
        * vc/vc-hooks.el (vc-toggle-read-only): Tweak obsolescence mesage.
        Replace missing `switch-to-prolog' with `run-prolog'.
        (switch-to-prolog): Define as (obsolete) alias, as in 23.4.
  
 -2014-07-22  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-28  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-set-top-priorities): Fix overwriting
        of file-wide setting when changing category-wide setting.
  
 +2014-07-28  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * doc-view.el (doc-view-open-text): Don't require that the
 +      document is saved in a file (e.g., email attachment).
 +
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Parse completion input in a iPython friendly way.  (Bug#18084)
 +      * progmodes/python.el
 +      (python-shell-completion-at-point): Rename from
 +      python-shell-completion-complete-at-point.
 +      (inferior-python-mode): Use it.
 +      (python-completion-at-point): Rename from
 +      python-completion-complete-at-point.  Parse input up to first
 +      backward occurrence of whitespace, open-paren, close-paren or
 +      string delimiter.
 +      (python-mode): Use it.
 +
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el
 +      (python-shell-with-shell-buffer): New macro.
 +      (python-shell-font-lock-get-or-create-buffer)
 +      (python-shell-font-lock-kill-buffer)
 +      (python-shell-font-lock-with-font-lock-buffer)
 +      (python-shell-font-lock-cleanup-buffer)
 +      (python-shell-font-lock-toggle): Use it.
 +      (python-shell-font-lock-turn-on)
 +      (python-shell-font-lock-turn-off): Use it.  Make command.
 +
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Grab all Python process output before inferior-python-mode hooks.
 +      * progmodes/python.el (inferior-python-mode):
 +      Call accept-process-output and sit-for to ensure all output for process
 +      has been received before running hooks.
 +      (python-shell-internal-get-or-create-process):
 +      Cleanup accept-process-output and sit-for calls.
 +
 +2014-07-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      More robust shell startup and code setup.
 +      * progmodes/python.el (python-shell-make-comint):
 +      Remove accept-process-output call.
 +      (python-shell-get-buffer): Return current buffer if major-mode is
 +      inferior-python-mode.
 +      (python-shell-get-or-create-process): Use it.
 +      (python-shell-send-setup-code): Send all setup code in one string,
 +      output success message and accept-process-output.
 +
 +2014-07-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * scroll-bar.el (scroll-bar-toolkit-horizontal-scroll):
 +      Add rudimentary support for bidirectional text.
 +
 +2014-07-27  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.el (frame-notice-user-settings): Rewrite using
 +      frame-initial-frame-tool-bar-height.
 +      * menu-bar.el (menu-bar-horizontal-scroll-bar)
 +      (menu-bar-no-horizontal-scroll-bar): New functions.
 +      (menu-bar-showhide-scroll-bar-menu): Add bindings for horizontal
 +      scroll bars.
 +      * scroll-bar.el (scroll-bar-lines)
 +      (set-horizontal-scroll-bar-mode)
 +      (get-horizontal-scroll-bar-mode, horizontal-scroll-bar-mode)
 +      (scroll-bar-horizontal-drag-1, scroll-bar-horizontal-drag)
 +      (scroll-bar-toolkit-horizontal-scroll): New functions.
 +      (horizontal-scroll-bar-mode)
 +      (previous-horizontal-scroll-bar-mode)
 +      (horizontal-scroll-bar-mode-explicit): New variables.
 +      (horizontal-scroll-bar-mode): New option.
 +      (toggle-horizontal-scroll-bar): Do something.
 +      (top-level): Bind horizontal-scroll-bar mouse-1.
 +      * startup.el (tool-bar-originally-present): Remove variable.
 +      (command-line): Don't set tool-bar-originally-present.
 +      * window.el (window-min-height): Update doc-string.
 +      (window--dump-frame): Dump horizontal scroll bar values.
 +      (window--min-size-1): Handle minibuffer window separately.
 +      Count in margins and horizontal scroll bar.  Return safe value
 +      iff IGNORE equals 'safe.
 +      (frame-windows-min-size): New function (used by frame resizing
 +      routines).
 +      (fit-frame-to-buffer, fit-window-to-buffer): Count in horizontal
 +      scroll bars.
 +      (window--sanitize-window-sizes): New function.
 +      (window-split-min-size): Remove.
 +      (split-window): Count divider-width.  Don't use
 +      `window-split-min-size' any more.  Reword error messages.
 +      Sanitize windows sizes after splitting.
 +
 +2014-07-27  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      Use `defvar-local' more.
 +      * progmodes/hideshow.el
 +      (hs-c-start-regexp, hs-block-start-regexp)
 +      (hs-block-start-mdata-select, hs-block-end-regexp)
 +      (hs-forward-sexp-func, hs-adjust-block-beginning): ...here;
 +      remove corresponding `make-variable-buffer-local' top-level calls.
 +
 +2014-07-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Cleanup error signals.  (Bug#18067)
 +      * progmodes/python.el
 +      (python-indent-shift-left): Use user-error instead.
 +      (python-shell-prompt-detect): Use lwarn with python group.
 +      (python-completion-complete-at-point)
 +      (python-eldoc--get-doc-at-point): Don't signal error.
 +
 +2014-07-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Support for packages in Python shell.  (Bug#13570)
 +      * progmodes/python.el (python-shell--package-depth): New var.
 +      (python-shell-package-enable): New command.
 +      (python-util-list-directories, python-util-list-files)
 +      (python-util-list-packages): New functions.
 +
 +2014-07-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Faster comint output.  (Bug#16875)
 +      * progmodes/python.el:
 +      (python-comint-output-filter-function): Make obsolete.
 +      (python-comint-postoutput-scroll-to-bottom): New function.
 +      (inferior-python-mode): Set comint-output-filter-functions to a
 +      minimum.
 +
 +2014-07-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * progmodes/python.el (python-shell-font-lock-post-command-hook):
 +      Safeguard current point and undo history.
 +
 +2014-07-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      Robust shell syntax highlighting.  (Bug#18084, Bug#16875)
 +      * progmodes/python.el:
 +      (python-shell-prompt-input-regexps): Add iPython block prompt.
 +      (python-shell-output-syntax-table): Delete var.
 +      (python-shell-font-lock-with-font-lock-buffer): New macro.
 +      (python-shell-font-lock-get-or-create-buffer)
 +      (python-shell-font-lock-kill-buffer)
 +      (python-shell-font-lock-cleanup-buffer)
 +      (python-shell-font-lock-post-command-hook)
 +      (python-shell-font-lock-turn-off): New functions.
 +      (python-shell-font-lock-turn-on): New function.
 +      (inferior-python-mode): Use it.
 +      (python-shell-font-lock-toggle): New command.
 +      (python-shell-font-lock-enable): Rename from
 +      python-shell-enable-font-lock.
 +      (run-python-internal): Use it.
 +      (python-shell-font-lock-comint-output-filter-function): New function.
 +      (python-shell-comint-end-of-output-p): New function.
 +      (python-shell-output-filter): Use it.
 +      (python-util-comint-last-prompt): New function.
 +      (python-util-text-properties-replace-name): New function.
 +
 +2014-07-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * vc/ediff-init.el (ediff-toggle-read-only-function):
 +      * vc/ediff-util.el (ediff-toggle-read-only):
 +      Replace obsolete toggle-read-only with read-only-mode.
 +
 +2014-07-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-cache.el (tramp-flush-file-function): Wrap the code
 +      with `save-match-data'.  (Bug#18095)
 +
 +2014-07-21  Vincent Belaïche  <vincentb1@users.sourceforge.net>
 +
 +      * ses.el (ses-truncate-cell): Use cl-progv instead of eval in
 +      order to ensure that row and col are lexically bound inside the
 +      evaluated sexp.
 +
  2014-07-21  Glenn Morris  <rgm@gnu.org>
  
        * progmodes/hideif.el (hide-ifdef-mode-submap):
        * progmodes/hideif.el (hide-ifdef-toggle-outside-read-only):
        Doc fixes re toggle-read-only.
  
 -2014-07-20  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-07-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * progmodes/python.el: Add comment about pipe buffering and
        solutions for missing/delayed output in inferior Python shells.
        (Bug#17304)
  
 -2014-07-20  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
        * progmodes/python.el (python-mode): Don't set
        mode-require-final-newline.  (Bug#17990)
  
 -2014-07-20  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
        Make python.el work with IPython automatically.  (Bug#15510)
        * progmodes/python.el:
        (python-shell-completion-setup-code): New value supporting iPython.
        (python-shell-prompt-output-regexps): Add safeguard for ipdb.
        (python-shell-output-filter): Fix comment typo.
  
 -2014-07-19  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
        Fix Python shell prompts detection for remote hosts.
        * progmodes/python.el (python-shell-prompt-detect):
        Replace call-process with process-file and make it more robust.
  
 -2014-07-17  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
        Autodetect Python shell prompts.  (Bug#17370)
        * progmodes/python.el:
        (python-shell-interpreter-interactive-arg)
        (python-shell-prompt-detect)
        (python-shell-prompt-validate-regexps): New functions.
        (python-shell-prompt-set-calculated-regexps): New function.
 -      (inferior-python-mode): Use it.  Also honor overridden
 +      (inferior-python-mode): Use it.  Also honor overriden
        python-shell-interpreter and python-shell-interpreter-args.
 -      (python-shell-make-comint): Honor overridden
 +      (python-shell-make-comint): Honor overriden
        python-shell-interpreter and python-shell-interpreter-args.
        (python-shell-get-or-create-process): Make it testable by allowing
        to call run-python non-interactively.
        (python-shell-prompt-output-regexp)
        (python-shell-prompt-pdb-regexp): Use it as defcustom :safe.
  
 +2014-07-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-config--guess-1): Split from
 +      smie-config--guess.
 +      (smie-config--guess): Use it.
 +
 +      * emacs-lisp/edebug.el: Use nadvice.
 +      (edebug-original-read): Remove.
 +      (edebug--read): Rename from edebug-read and add `orig' arg.
 +      (edebug-uninstall-read-eval-functions)
 +      (edebug-install-read-eval-functions): Use nadvice.
 +      (edebug-read-sexp, edebug-read-storing-offsets, edebug-read-symbol)
 +      (edebug-read-and-maybe-wrap-form1, edebug-instrument-callee)
 +      (edebug-read-string, edebug-read-function): Use just `read'.
 +      (edebug-original-debug-on-entry): Remove.
 +      (edebug--debug-on-entry): Rename from edebug-debug-on-entry and add
 +      `orig' arg.
 +      (debug-on-entry): Override with nadvice.
 +
 +      * mouse.el (tear-off-window): Rename from mouse-tear-off-window since
 +      it also makes sense to bind it to a non-mouse event.
 +
 +      * vc/vc-bzr.el (vc-bzr-shelve): Make it operate on fileset.
 +
 +2014-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xt-mouse.el (xterm-mouse-event): Don't assume last-click is non-nil
 +      (bug#18015).
 +
 +      * rect.el (rectangle--string-preview): Don't assume there
 +      a non-nil default (bug#17984).
 +
  2014-07-16  Glenn Morris  <rgm@gnu.org>
  
        * desktop.el (after-init-hook): Disable startup frame restoration
        in non-graphical situations.  (Bug#17693)
  
 -2014-07-14  Glenn Morris  <rgm@gnu.org>
 -
        * vc/vc-dispatcher.el (vc-log-edit): Do set up the log buffer
        if it was "empty", or used for a different set of files.  (Bug#17884)
  
 -2014-07-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-16  Eli Zaretskii  <eliz@gnu.org>
  
        * bindings.el (mode-line-remote): If default-directory is not a
        string, don't call file-remote-p on it; instead state in the
        help-echo that it is nil.  (Bug#17986)
  
 +2014-07-14  Daniel Colascione  <dancol@dancol.org>
 +
 +      * progmodes/cc-langs.el: Change comments from `cl-macroexpand-all'
 +      to `macroexpand-all'
 +
 +      * progmodes/cc-defs.el (c-lang-defconst-eval-immediately):
 +      Use `macroexpand-all' instead of `cl-macroexpand-all'.
 +
  2014-07-12  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix bug: C-x v v discarded existing log message (Bug#17884).
        * vc/vc-dispatcher.el (vc-log-edit):
        Don't clobber an already-existing log message.
  
 -2014-07-10  Glenn Morris  <rgm@gnu.org>
 +2014-07-12  Glenn Morris  <rgm@gnu.org>
  
        * vc/log-edit.el (log-edit-changelog-entries):
        Check for a visited-but-never-saved ChangeLog.
  
 -2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * vc/log-edit.el (log-edit-changelog-entries): Don't both visiting
        a non-existing file (bug#17970).
        * faces.el (face-name): Undo last change.
        (x-resolve-font-name): Don't call face-name (bug#17956).
  
 -2014-07-09  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
 -      Fix dedenters and electric colon handling. (Bug#15163)
 +2014-07-12  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
 +      Fix dedenters and electric colon handling.  (Bug#15163)
        * progmodes/python.el
        (python-rx-constituents): Add dedenter and block-ender.
        (python-indent-dedenters, python-indent-block-enders): Delete.
        (python-info-dedenter-opening-block-positions)
        (python-info-dedenter-statement-p): New functions.
  
 -2014-07-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * files.el (out-of-memory-warning-percentage): New defcustom.
 +      (warn-maybe-out-of-memory): Use it.
 +
 +2014-07-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * subr.el (read-passwd): Use `read-hide-char' if non-nil.  Bind it
 +      when calling `read-string'.  (Bug#17839)
 +
 +2014-07-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * files.el (warn-maybe-out-of-memory): Fix the wording of the
 +      warning.
 +
 +2014-07-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * files.el (warn-maybe-out-of-memory): New function.
 +      (find-file-noselect): Use it.
 +
 +2014-07-09  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/cperl-mode.el (cperl-block-p): Treat the perl keyword
 +      `constant' like `bless', `return' &c
 +
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * rect.el (apply-on-rectangle): Check forward-line really moved to the
 +      next line.
 +
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * progmodes/sh-script.el (sh-smie-sh-rules): Don't align with a && in
        the middle of a line (bug#17896).
  
 -2014-07-08  Juri Linkov  <juri@jurta.org>
 +2014-07-09  Juri Linkov  <juri@jurta.org>
  
        * startup.el (command-line): Append displaying the warning about
        the errors in the init file to the end of `after-init-hook'.
        (Bug#17927)
  
 -2014-07-08  Juri Linkov  <juri@jurta.org>
 -
 -      * faces.el (face-name): Return input arg `face' as is
 +      * faces.el (face-name): Return input arg `face' as-is
        when it's not a symbol.
        (x-resolve-font-name): Don't check if the face is a symbol.
        (Bug#17956)
  
 -2014-07-08  Juri Linkov  <juri@jurta.org>
 -
        * facemenu.el (list-colors-print): In help-echo format use %.2f
        instead of %d because now HSV values are floating-point components
        between 0.0 and 1.0.
  
 -2014-07-06  Glenn Morris  <rgm@gnu.org>
 +2014-07-09  Glenn Morris  <rgm@gnu.org>
  
        * emulation/cua-rect.el (cua--activate-rectangle):
        Avoid setting cua--rectangle to nil.  (Bug#17877)
  
 -2014-07-06  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-09  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el: Fix wrong-type-argument error when
        marking multiple consecutive items.
        (todo-mark-category): Don't try to mark the empty line between the
        todo and done items sections.
  
 -2014-07-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/edebug.el (edebug-eval-defun): Print result using
        proper Lisp quoting (bug#17934).
        * progmodes/ruby-mode.el (ruby-mode-variables): Don't meddle with
        require-final-newline since prog-mode already took care of it (bug#17947).
  
 -2014-07-04  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-09  Stephen Berman  <stephen.berman@gmx.net>
 +
 +      * calendar/todo-mode.el: Fix two bugs.  Shorten Commentary and
 +      refer to the Todo mode Info manual.  Update the comment on
 +      requiring cl-lib.
 +      (todo-find-filtered-items-file): Add todo-prefix overlays.
 +      (todo-filter-items): Reorder a let-bound variable to avoid a
 +      wrong-type-argument error on canceling the file choice dialog.
 +
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/octave.el (inferior-octave-mode):
 +      Set comint-input-ring-size to a number (bug#17912).
 +
 +2014-07-09  Juri Linkov  <juri@jurta.org>
 +
 +      * desktop.el (desktop-minor-mode-table): Add `defining-kbd-macro'
 +      and `isearch-mode' associated with nil.  (Bug#17849)
 +
 +2014-07-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * linum.el (linum--face-height): New function (bug#17813).
 +      (linum-update-window): Use it to adjust margin to linum's width.
 +
 +      * leim/quail/sisheng.el (sisheng-list): Don't bother with-case-table.
 +      * eshell/em-smart.el (eshell-smart-scroll-window):
 +      Use with-selected-window.
 +
 +      * xt-mouse.el (xterm-mouse-translate-1): Intern drag event (bug#17894).
 +      Remove also pointless window&mark manipulation.
 +
 +      * progmodes/perl-mode.el: Use syntax-ppss; fix one indentation case.
 +      (perl-indent-line): Use syntax-ppss to detect we're in a doc-section.
 +      (perl-continuation-line-p): Don't skip over anything else than labels.
 +      Return the previous char.
 +      (perl-calculate-indent): Use syntax-ppss instead of parse-start
 +      and update callers accordingly.  For continuation lines, check the
 +      the case of array hashes.
 +      (perl-backward-to-noncomment): Make it non-interactive.
 +      (perl-backward-to-start-of-continued-exp): Rewrite.
 +
 +2014-07-08  Sam Steingold  <sds@gnu.org>
 +
 +      * progmodes/inf-lisp.el (lisp-eval-paragraph, lisp-eval-form-and-next):
 +      New user commands.
 +
 +2014-07-08  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/vc-annotate.el (vc-annotate-background-mode): New defcustom.
 +      (vc-annotate-color-map): Use less saturated colors (20%) for
 +      background-mode.
 +      (vc-annotate-very-old-color): Add default value for background-mode.
 +      (vc-annotate-background): Set default value to nil since now text on
 +      the default backgrounds should be legible in light and dark modes.
 +      (vc-annotate-lines): Use `vc-annotate-background-mode'.  Doc fix.
 +      (Bug#17808)
 +
 +2014-07-08  Juri Linkov  <juri@jurta.org>
 +
 +      * simple.el (transpose-chars): Don't move point into read-only area.
 +      (Bug#17829)
 +
 +2014-07-08  Juri Linkov  <juri@jurta.org>
 +
 +      * window.el (with-displayed-buffer-window): New macro.
 +      (with-temp-buffer-window, with-current-buffer-window):
 +      Use `macroexp-let2' to evaluate and bind variables
 +      in the same order as macro arguments.
 +      (display-buffer--action-function-custom-type):
 +      Add `display-buffer-below-selected' and `display-buffer-at-bottom'.
 +
 +      * minibuffer.el (minibuffer-completion-help): Replace
 +      `with-output-to-temp-buffer' with `with-displayed-buffer-window'
 +      with actions that display *Completions* at-bottom when called
 +      from the minibuffer, or below-selected in a normal buffer.
 +      Associate `window-height' with `fit-window-to-buffer'.
 +      Let-bind `pop-up-windows' to nil.
 +
 +      * dired.el (dired-mark-pop-up): Use `with-displayed-buffer-window'
 +      instead of `with-current-buffer-window'.  (Bug#17809)
 +
 +2014-07-07  Luke Lee  <luke.yx.lee@gmail.com>
 +
 +      * progmodes/hideif.el (hide-ifdef-env): Change to global.
 +      (hide-ifdef-env-backup): New variable.
 +      (hide-ifdef-expand-reinclusion-protection, hide-ifdef-header-regexp):
 +      New customizable variables.
 +      (hif-clear-all-ifdef-defined): New defun.
 +      (hif-merge-ifdef-region, hide-ifdef-region-internal, hide-ifdef-region)
 +      (hif-show-ifdef-region): Merge hidden regions to prevent continuous "...".
 +      (hif-tokenize): Fix for MS-DOS/Win EOL style.
 +      (hif-endif-to-ifdef, hif-make-range, hif-find-range, hif-possibly-hide):
 +      Fix bug to hide the correct #elif region(s).
 +      (hif-range-elif): New defun.
 +      (hif-recurse-level): New var.
 +      (hif-evaluate-region, hif-evaluate-macro): New defun.
 +      (hide-ifdef-guts): Prevent reinclusion protected C/C++ headers from
 +      fully hidden.
 +      (hide-ifdef-define, hide-ifdefs, hide-ifdef-block, show-ifdef-block):
 +      Better interaction.
 +
 +2014-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el (dbus-peer-handler): New defun.
 +      (dbus-register-service): Register it.  (Bug#17858)
 +      (dbus-managed-objects-handler): Fix docstring.
 +
 +2014-07-04  Phil Sainty  <psainty@orcon.net.nz>
 +
 +      * emacs-lisp/lisp.el (narrow-to-defun-include-comments): New var.
 +      (narrow-to-defun): New arg include-comments, defaulting to it
 +      (bug#16328).
 +
 +2014-07-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * rect.el (rectangle--highlight-for-redisplay): Don't pass `orig' with
 +      different calling convention to rectangle--unhighlight-for-redisplay.
  
 -      * calendar/todo-mode.el: Fix two bugs.  Shorten Commentary and
 -      refer to the Todo mode Info manual.  Update the comment on
 -      requiring cl-lib.
 -      (todo-find-filtered-items-file): Add todo-prefix overlays.
 -      (todo-filter-items): Reorder a let-bound variable to avoid a
 -      wrong-type-argument error on canceling the file choice dialog.
 +2014-07-03  Michael Albinus  <michael.albinus@gmx.de>
  
 -2014-07-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * net/tramp.el (tramp-call-process): Handle error strings.
  
 -      * progmodes/octave.el (inferior-octave-mode):
 -      Set comint-input-ring-size to a number (bug#17912).
 +      * net/tramp-adb.el (tramp-adb-sh-fix-ls-output): Use `bolp'.
  
 -2014-07-03  Juri Linkov  <juri@jurta.org>
 +      * net/tramp-sh.el (tramp-sh-handle-set-visited-file-modtime)
 +      (tramp-sh-handle-verify-visited-file-modtime): Use `point-at-eol'.
  
 -      * desktop.el (desktop-minor-mode-table): Add `defining-kbd-macro'
 -      and `isearch-mode' associated with nil.  (Bug#17849)
 +      * net/trampver.el: Update release number.
  
 -2014-07-02  Juri Linkov  <juri@jurta.org>
 +2014-07-03  Juri Linkov  <juri@jurta.org>
  
        * desktop.el (desktop-save): Rename arg `auto-save' to
        `only-if-changed'.  Doc fix.  (Bug#17873)
  
 -2014-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mouse.el (mouse-yank-primary, mouse-yank-secondary):
        Use insert-for-yank (bug#17271).
  
 -2014-07-02  Leo Liu  <sdl.web@gmail.com>
 +2014-07-03  Leo Liu  <sdl.web@gmail.com>
  
        * emacs-lisp/pp.el (pp-eval-expression, pp-eval-last-sexp):
        Support lexical-binding.
  
 -2014-07-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * vc/log-edit.el (log-edit-goto-eoh): New function.
        (log-edit--match-first-line): Use it (bug#17861).
  
 -2014-07-01  Glenn Morris  <rgm@gnu.org>
 +2014-07-03  Glenn Morris  <rgm@gnu.org>
  
        * vc/log-edit.el (log-edit-hook): Add missing :version.
  
 -2014-07-01  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-07-03  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * progmodes/python.el (python-indent-post-self-insert-function):
        Enhancements to electric indentation behavior inside
 -      parens. (Bug#17658)
 +      parens.  (Bug#17658)
  
 -2014-07-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-03  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * ps-def.el (ps-generate-postscript-with-faces1): Don't mess with
        buffer-invisibility-spec (bug#17867).
  
 -2014-06-29  Andreas Schwab  <schwab@linux-m68k.org>
 +2014-07-03  Andreas Schwab  <schwab@linux-m68k.org>
  
        * vc/vc-git.el (vc-git-checkin): When operating on the whole tree
        pass "-a".
  
 -2014-06-29  Glenn Morris  <rgm@gnu.org>
 +2014-07-03  Glenn Morris  <rgm@gnu.org>
  
        * cus-edit.el (help):
        * finder.el (finder-known-keywords):
        * progmodes/idlwave.el (idlwave): Update url-link for custom group.
        (idlwave-mode): Doc URL update.
  
 -2014-06-27  Stephen Berman  <stephen.berman@gmx.net>
 +2014-07-01  Juri Linkov  <juri@jurta.org>
 +
 +      * man.el: Display man pages immediately and use process-filter
 +      to format them asynchronously.
 +      (Man-width): Doc fix.
 +      (man): Doc fix.
 +      (Man-start-calling): Use `with-selected-window' to get
 +      `frame-width' and `window-width'.
 +      (Man-getpage-in-background): Call `Man-notify-when-ready'
 +      immediately after creating a new buffer.  Call `Man-mode' and set
 +      `mode-line-process' in the created buffer.  Set process-filter to
 +      `Man-bgproc-filter' in start-process branch.  In call-process branch
 +      call either `Man-fontify-manpage' or `Man-cleanup-manpage'.
 +      Use `Man-start-calling' inside `with-current-buffer'.
 +      (Man-fontify-manpage): Don't print messages.  Fix boundary condition.
 +      (Man-cleanup-manpage): Don't print messages.
 +      (Man-bgproc-filter): New function.
 +      (Man-bgproc-sentinel): Add `save-excursion' to keep point when
 +      user moved it during asynchronous formatting.  Move calls of
 +      `Man-fontify-manpage' and `Man-cleanup-manpage' to
 +      `Man-bgproc-filter'.  Move the call of `Man-mode' to
 +      `Man-getpage-in-background'.  Use `quit-restore-window'
 +      instead of `kill-buffer'.  Use `message' instead of `error'
 +      because errors are caught by process sentinel.
 +      (Man-mode): Move calls of `Man-build-page-list',
 +      `Man-strip-page-headers', `Man-unindent', `Man-goto-page' to
 +      `Man-bgproc-sentinel'.  Doc fix.  (Bug#2588, bug#5054, bug#9084, bug#17831)
 +
 +      * man.el (Man-bgproc-sentinel): Use `Man-page-from-arguments'
 +      for the message about the man page cleaned up.
 +
 +2014-07-01  Mario Lang  <mlang@delysid.org>
 +
 +      * net/gnutls.el (gnutls-negotiate): Prevent destructive modification of
 +      cosutomization option `gnutls-verify-error'.
 +
 +2014-07-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (deactivate-mark, set-mark-command, handle-shift-selection):
 +      Don't keep transient-mark-mode buffer-local when not needed (bug#6316).
 +
 +      * xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal)
 +      (turn-off-xterm-mouse-tracking-on-terminal): Don't burp if the terminal
 +      is suspended (bug#17857).
 +
 +2014-07-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 +      Prefer utf-8 coding.  (Bug#17859)
 +
 +2014-06-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * emacs-lisp/subr-x.el (string-reverse): Define as obsolete alias
 +      for `reverse'.
 +
 +2014-06-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs-lisp/autoload.el (autoload-ensure-writable): New variable.
 +      (autoload-ensure-default-file): Maybe make existing output writable.
 +      * Makefile.in (AUTOGEN_VCS): Remove.
 +      (autoloads): Use autoload-ensure-writable rather than AUTOGEN_VCS.
 +
 +2014-06-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * emacs-lisp/subr-x.el (string-reverse): Use `reverse'.
 +
 +2014-06-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      New if-let, when-let, thread-first and thread-last macros.
 +
 +      * emacs-lisp/subr-x.el
 +      (internal--listify, internal--check-binding)
 +      (internal--build-binding-value-form, internal--build-binding)
 +      (internal--build-bindings): New functions.
 +      (internal--thread-argument, thread-first, thread-last)
 +      (if-let, when-let): New macros.
 +
 +2014-06-30  Grégoire Jadi  <daimrod@gmail.com>
 +
 +      * net/rcirc.el (rcirc-buffer-process): Restore previous
 +      behaviour.  (Bug#17772)
 +
 +2014-06-29  Alan Mackenzie  <acm@muc.de>
 +
 +      Don't call c-parse-state when c++-template-syntax-table is active.
 +      * progmodes/cc-engine.el (c-guess-continued-construct CASE G)
 +      (c-guess-basic-syntax CASE 5D.3): Rearrange so that
 +      c-syntactic-skip-backwards isn't called with the pertinent syntax table.
 +
 +2014-06-28  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-set-top-priorities): Fix logic to
        account for file-wide setting of todo-top-priorities-overrides.
        Make code a bit cleaner.
  
 -2014-06-27  Leo Liu  <sdl.web@gmail.com>
 -
 -      * calc/calc.el (math-bignum): Handle most-negative-fixnum.  (Bug#17556)
 -
 -2014-06-27  Glenn Morris  <rgm@gnu.org>
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
  
        * net/eww.el (eww-mode) <eww-current-title>: Make local.  (Bug#17860)
  
 -2014-06-26  Stephen Berman  <stephen.berman@gmx.net>
 +2014-06-28  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el (todo-prefix-overlays): If there is no
        category-wide setting of todo-top-priorities-overrides, check for
        a file-wide setting and fontify accordingly.
  
 -2014-06-26  Glenn Morris  <rgm@gnu.org>
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
  
        * subr.el (read-passwd): Warn about batch mode.  (Bug#17839)
  
 +2014-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/hideif.el: Use lexical-binding.  Fix up cl-lib usage.
 +
 +2014-06-28  K. Handa  <handa@gnu.org>
 +
 +      Fix Bug#17739.
 +
 +      * composite.el: Setup composition-function-table for dotted circle.
 +      (compose-gstring-for-dotted-circle): New function.
 +
 +      * international/characters.el: Add category "^" to all
 +      non-spacing characters.
 +
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (doit): Remove force rule.
 +      (custom-deps, finder-data, autoloads, update-subdirs)
 +      (compile-one-process): PHONY targets do not need force rules.
 +
 +      * Makefile.in (compile-main, compile, compile-always):
 +      No need to explicitly pass variables to ourself in recursive calls.
 +
 +2014-06-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * files.el (minibuffer-with-setup-hook): Evaluate the first arg eagerly.
 +
 +2014-06-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (update-authors): Update for moved authors.el.
 +
 +2014-06-26  Leo Liu  <sdl.web@gmail.com>
 +
 +      * skeleton.el (skeleton-end-hook): Default to nil and move the
 +      work to skeleton-insert.  (Bug#17850)
 +
 +2014-06-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * calc/calc-alg.el (math-beforep):
 +      * progmodes/cc-guess.el (c-guess-view-reorder-offsets-alist-in-style):
 +      Simplify because string-lessp can accept symbols as args.
 +
  2014-06-26  Daiki Ueno  <ueno@gnu.org>
  
        * emacs-lisp/package.el (package--check-signature):
        If package-check-signature is allow-unsigned, don't signal error when
        we can't verify signature because of missing public key
 -      (backport for bug#17625).
 +      (bug#17625).
  
  2014-06-26  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/authors.el (authors-valid-file-names)
        (authors-renamed-files-alist): Additions.
  
 -2014-06-25  Leo Liu  <sdl.web@gmail.com>
 +2014-06-26  Leo Liu  <sdl.web@gmail.com>
  
        * textmodes/picture.el (picture-set-tab-stops):
        * ruler-mode.el (ruler-mode-mouse-add-tab-stop)
  
        * indent.el (indent-accumulate-tab-stops): New function.
  
 -2014-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/package.el (package-list-unsigned): New var (bug#17625).
        (package-desc-status): Obey it.
  
 -2014-06-25  Stephen Berman  <stephen.berman@gmx.net>
 +2014-06-26  Stephen Berman  <stephen.berman@gmx.net>
  
        * calendar/todo-mode.el: Fix two bugs.
        (todo-insert-item--basic): If user cancels item insertion to
        (todo-set-item-priority): After selecting category, instead of
        moving point to top, which extends an active region, restore it.
  
 -2014-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * help-fns.el (describe-function-1): Check file-name is a string before
        calling help-fns--autoloaded-p (bug#17564).
  
 -2014-06-24  Juri Linkov  <juri@jurta.org>
 +2014-06-26  Juri Linkov  <juri@jurta.org>
  
        * desktop.el (desktop-auto-save-enable)
        (desktop-auto-save-disable): New functions.
        (desktop-read): Disable the autosave before loading the desktop,
        and enable afterwards.  (Bug#17351)
  
 -2014-06-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        Fix some indentation problem with \; and pipes (bug#17842).
        * progmodes/sh-script.el (sh-mode-syntax-table): Set syntax of ;|&.
        (sh-smie-rc-forward-token, sh-smie-rc-backward-token): Use them.
        (sh-smie-sh-rules): Fix indentation of a pipe at BOL.
  
 -2014-06-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-26  Glenn Morris  <rgm@gnu.org>
  
 -      * international/fontset.el (script-representative-chars):
 -      Add representative characters for scripts added in Unicode 7.0.
 -      (otf-script-alist): Synchronize with the latest registry of OTF
 -      script tags.
 +      * emacs-lisp/find-func.el (find-function-C-source-directory):
 +      Use file-accessible-directory-p.
 +
 +      * ps-samp.el: Make it slightly less awful.
 +      (ps-rmail-mode-hook, ps-gnus-article-prepare-hook, ps-vm-mode-hook):
 +      (ps-gnus-summary-setup, ps-info-mode-hook): Use [print] key.
 +      Only set local values.
 +      (ps-article-subject, ps-article-author): Use standard functions
 +      like mail-fetch-field.
 +      (ps-info-file, ps-info-node): Use match-string.
 +      (ps-jts-ps-setup, ps-jack-setup): Remove, merging into...
 +      (ps-samp-ps-setup): ... new function.
 +
 +      * progmodes/idlw-shell.el (idlwave-shell-make-temp-file):
 +      Optimize away code unneeded on any modern Emacs.
 +
 +      * emacs-lisp/authors.el: Move to ../admin.
 +
 +      * emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit): New.
 +
 +2014-06-26  Luke Lee  <luke.yx.lee@gmail.com>
 +
 +      * progmodes/hideif.el (hif-string-to-number): Fix return value bug.
 +      (hif-simple-token-only, hif-tokenize): Comment in detail mainly for
 +      performance enhancements.
 +      (hif-parse-if-exp): Rename to `hif-parse-exp'.  Enhance for macro
 +      expansion.
 +      (hif-factor, hif-string-concatenation, intern-safe): Support string
 +      concatenation and argumented macro expansion.
 +      (hif-if-valid-identifier-p, hif-define-operator, hif-flatten)
 +      (hif-expand-token-list, hif-get-argument-list, hif-define-macro)
 +      (hif-delimit, hif-macro-supply-arguments, hif-invoke, hif-canonicalize)
 +      (hif-canonicalize-tokens, hif-place-macro-invocation)
 +      (hif-parse-macro-arglist): Mostly new functions for supporting
 +      argumented macro expansion.
 +      (hif-string-concatenation, hif-stringify, hif-token-concat)
 +      (hif-token-stringification, hif-token-concatenation):
 +      Stringification and concatenation.
 +      (hif-find-next-relevant): Fix comments.
 +      (hif-ifdef-to-endif, hif-looking-at-elif, hif-hide-line): Bug fix for
 +      some cases involving #elif.
 +      (hif-find-define, hif-add-new-defines): New functions for automatically
 +      scanning of defined symbols.
 +      (hide-ifdef-guts): Fix for defined symbol auto scanning.
 +      (hide-ifdef-undef): Fix behavior to match CPP.
 +
 +2014-06-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in ($(lisp)/progmodes/cc-defs.elc)
 +      ($(lisp)/progmodes/cc-fonts.elc, $(lisp)/progmodes/cc-langs.elc)
 +      ($(lisp)/progmodes/cc-vars.elc): Drop hand-written deps on non-cc
 +      files.  They are not relevant to the original issue (bug#1004),
 +      and cause unnecessary recompilation (bug#2151).
  
 -      * international/characters.el (char-script-table): Update for
 -      scripts added and codepoint ranges changed in Unicode 7.0.
 +2014-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * play/landmark.el: Use lexical-binding and avoid `intangible'.
 +      (landmark--last-pos): New var.
 +      (landmark--intangible-chars): New const.
 +      (landmark--intangible): New function.
 +      (landmark-mode, landmark-move): Use it.
 +      (landmark-mode): Remove properties.
 +      (landmark-plot-square, landmark-point-square, landmark-goto-xy)
 +      (landmark-cross-qtuple):
 +      Don't worry about `intangible' any more.
 +      (landmark-click, landmark-point-y): Same; and don't assume point-min==1.
 +      (landmark-init-display): Don't set `intangible' and `point-entered'.
 +      (square): Remove.  Inline it instead.
 +      (landmark--distance): Rename from `distance'.
 +      (landmark-calc-distance-of-robot-from): Rename from
 +      calc-distance-of-robot-from.
 +      (landmark-calc-smell-internal): Rename from calc-smell-internal.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * files.el (dir-locals-find-file, file-relative-name):
 +      * info.el (Info-complete-menu-item):
 +      * minibuffer.el (completion-table-subvert): Prefer string-prefix-p
 +      to compare-strings to avoid out-of-range errors.
 +      * subr.el (string-prefix-p): Adjust to match strict range
 +      checking in compare-strings.
 +
 +2014-06-24  Leonard Randall  <leonard.a.randall@gmail.com>  (tiny change)
 +
 +      * textmodes/reftex-parse.el (reftex-using-biblatex-p): Make search
 +      for comment lines non-greedy and stopping at newlines to fix stack
 +      overflows with large files.
 +
 +2014-06-24  Eli Barzilay  <eli@barzilay.org>
 +
 +      * calculator.el (calculator-last-input): Drop 'ascii-character property
 +      lookup.
  
 -2014-06-23  Leo Liu  <sdl.web@gmail.com>
 +2014-06-24  Leo Liu  <sdl.web@gmail.com>
  
        * align.el (align-adjust-col-for-rule): Unbreak due to defaulting
        tab-stop-list to nil.  (Bug#16381)
        (indent-rigidly-right-to-tab-stop, tab-to-tab-stop)
        (move-to-tab-stop): Change callers.
  
 -2014-06-22  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-24  Eli Zaretskii  <eliz@gnu.org>
  
        * skeleton.el (skeleton-insert): Yet another fix of the doc string
        wrt behavior of \n as the first/last element of a skeleton.
  
 -2014-06-22  Michael Albinus  <michael.albinus@gmx.de>
 +2014-06-24  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-adb.el (tramp-adb-handle-process-file):
        * net/tramp-sh.el (tramp-sh-handle-process-file):
        * net/tramp-smb.el (tramp-smb-handle-process-file): Do not raise
        the output buffer when DISPLAY is non-nil.  (Bug#17815)
  
 -2014-06-21  Glenn Morris  <rgm@gnu.org>
 +2014-06-24  Glenn Morris  <rgm@gnu.org>
  
        * play/landmark.el (landmark-move-down, landmark-move-up):
        Fix 2007-10-20 change - preserve horizontal position.
  
 +2014-06-23  Sam Steingold  <sds@gnu.org>
 +
 +      * simple.el (kill-append): Remove undo boundary depending on ...
 +      (kill-append-merge-undo): New user option.
 +
 +2014-06-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * simple.el (handle-shift-selection, exchange-point-and-mark)
 +      (activate-mark): Set transient-mark-mode buffer-locally (bug#6316).
 +      (transient-mark-mode): Use&set the global value.
 +      * mouse.el (mouse-set-region-1, mouse-drag-track): Idem.
 +      * emulation/edt.el (edt-emulation-off): Save&restore the global
 +      transient-mark-mode setting.
 +      * obsolete/pc-select.el (pc-selection-mode): Use the
 +      transient-mark-mode function.
 +
 +2014-06-23  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * international/fontset.el (script-representative-chars):
 +      Add representative characters for scripts added in Unicode 7.0.
 +      (otf-script-alist): Synchronize with the latest registry of OTF
 +      script tags.
 +
 +      * international/characters.el (char-script-table): Update for
 +      scripts added and codepoint ranges changed in Unicode 7.0.
 +
 +2014-06-23  Eli Barzilay  <eli@barzilay.org>
 +
 +      * calculator.el (calculator-standard-displayer): Fix bug in use of
 +      `calculator-groupize-number'.
 +      (calculator-funcall): Fix broken `cl-flet' use by moving it into the
 +      `eval' code, so it works in v24.3.1 too.
 +      (calculator-last-input): Comment to clarify purpose.
 +
 +2014-06-22  Mario Lang  <mlang@delysid.org>
 +
 +      * textmodes/rst.el (rst-comment-region): From from -> from.
 +
 +      * net/tramp-adb.el (tramp-adb-send-command-and-check): And and -> and.
 +
 +2013-06-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * electric.el (electric-layout-post-self-insert-function):
 +      * emacs-lisp/ert.el (ert--insert-infos):
 +      * obsolete/vi.el (vi-set-mark):
 +      * term.el (term-handle-scroll):
 +      * textmodes/bibtex.el (bibtex-fill-field, bibtex-fill-entry):
 +      * wid-edit.el (widget-editable-list-value-create):
 +      Prefer point-marker to copy-marker of point.
 +
  2014-06-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        Fix completion retrieval parsing (bug#17209).
  
        * skeleton.el (skeleton-insert): Doc fix.
  
 -2014-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * emacs-lisp/smie.el (smie-config--guess): Fix typo.
        (smie-config-guess): Use smie-config-local so the rules are obeyed
        * mouse.el (mouse-drag-line): Don't re-add to unread-comment-events,
        since it's already done inside the loop (bug#17819).
  
 -2014-06-20  Martin Rudalics  <rudalics@gmx.at>
 +2014-06-21  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * mouse.el (mouse-drag-line): Re-remove code initially removed
 +      on 2013-03-09 and inadvertently reintroduced on 2013-11-30
 +      (Bug#17819).
 +
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-smie-sh-rules): For { after &&, don't
 +      align with the surrounding parent (bug#17721).
 +
 +2014-06-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * textmodes/texinfo.el (texinfo-mode): Set skeleton-end-newline
 +      locally to nil.
 +      (texinfo-insert-block, texinfo-insert-@end)
 +      (texinfo-insert-@example, texinfo-insert-@quotation): Adjust to
 +      local setting of skeleton-end-newline by adding an explicit \n to
 +      the skeletons where appropriate.  (Bug#17801)
 +
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie--hanging-eolp-function): New var.
 +      (smie-indent--hanging-p): Use it.
 +      * progmodes/sh-script.el (sh-set-shell): Set it (bug#17621).
 +
 +2014-06-21  Leo Liu  <sdl.web@gmail.com>
 +
 +      * simple.el (read-quoted-char): Don't let help chars pop up help
 +      buffer.  (Bug#16617)
 +
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/sh-script.el (sh-smie-sh-rules): Use same rule for && as
 +      for | (bug#17621).
 +
 +      * xt-mouse.el (xterm-mouse--read-event-sequence-1000):
 +      Drop unknown events instead of burping.
 +
 +2014-06-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term/w32-win.el (dynamic-library-alist): Support giflib 5.1.0
 +      and later.  (Bug#17790)
 +
 +2014-06-21  Juri Linkov  <juri@jurta.org>
 +
 +      * dired.el (dired-mark-pop-up): Let-bind display-buffer-mark-dedicated
 +      to `soft'.  (Bug#17554)
 +
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * delsel.el (electric-newline-and-maybe-indent): Mark it as well
 +      (bug#17737).
 +
 +2014-06-21  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * progmodes/ruby-mode.el (ruby-font-lock-keywords): Don't fontify
 +      `!' in `!~' with `font-lock-negation-char-face'.  (Bug#17732)
 +
 +2014-06-21  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/dbus.el (dbus-call-method): Push only non D-Bus events into
 +      `unread-command-events'.
 +
 +2014-06-19  William Xu  <william.xwl@gmail.com>
 +
 +      * progmodes/hideif.el (hif-string-to-number): Don't return float for
 +      hex integer constants (bug#17807).
 +
 +2014-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * international/mule-util.el (truncate-string-ellipsis): New var.
 +      (truncate-string-to-width): Use it.
 +
 +2014-06-19  Robert Brown  <robert.brown@gmail.com>  (tiny change)
 +
 +      * emacs-lisp/lisp-mode.el (lisp-string-after-doc-keyword-p): New fun.
 +      (lisp-string-in-doc-position-p): New function, extracted from
 +      lisp-font-lock-syntactic-face-function.
 +      (lisp-font-lock-syntactic-face-function): Use them (bug#9130).
 +
 +2014-06-19  Grégoire Jadi  <daimrod@gmail.com>
 +
 +      * net/rcirc.el (rcirc-omit-mode): Fix recenter error.  (Bug#17769)
 +
 +2014-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * play/bubbles.el (bubbles--initialize, bubbles--show-scores)
 +      (bubbles--game-over): Don't add `intangible' properties since they
 +      didn't work anyway.
 +
 +2014-06-18  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/ediff-init.el (ediff-current-diff-Ancestor)
 +      (ediff-fine-diff-Ancestor, ediff-even-diff-A, ediff-even-diff-B)
 +      (ediff-even-diff-C, ediff-even-diff-Ancestor, ediff-odd-diff-A)
 +      (ediff-odd-diff-B, ediff-odd-diff-C, ediff-odd-diff-Ancestor):
 +      Add `min-colors 88' version with removed black/white foregrounds.
 +      (Bug#10181)
 +
 +2014-06-18  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/diff-mode.el (diff-changed): Empty face definition to use
 +      `diff-removed' and `diff-added' on tty as well.  (Bug#10181)
 +      (diff-context): Use darker color on light background and
 +      lighter color on dark background.
 +
 +2014-06-18  Juri Linkov  <juri@jurta.org>
 +
 +      * vc/diff-mode.el (diff-refine-changed): Rename from
 +      `diff-refine-change' for consistency with `diff-changed'.
 +      (diff-refine-change): Add obsolete face alias.  (Bug#10181)
 +
 +      * vc/smerge-mode.el (smerge-refined-changed): Rename from
 +      `smerge-refined-change'.
 +      (smerge-refined-change): Add obsolete face alias.
 +
 +2014-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * rect.el (rectangle-preview): New custom.
 +      (rectangle): New group.
 +      (rectangle--pos-cols): Add `window' argument.
 +      (rectangle--string-preview-state, rectangle--string-preview-window):
 +      New vars.
 +      (rectangle--string-flush-preview, rectangle--string-erase-preview)
 +      (rectangle--space-to, rectangle--string-preview): New functions.
 +      (string-rectangle): Use them.
 +      (rectangle--inhibit-region-highlight): New var.
 +      (rectangle--highlight-for-redisplay): Obey it.  Make sure
 +      `apply-on-region' uses the point-crutches of the right window.
 +      Use :align-to rather than multiple spaces.
 +
 +2014-06-16  Andrea Rossetti  <andrea.rossetti@gmail.com>  (tiny change)
 +
 +      * ruler-mode.el (ruler-mode-window-col)
 +      (ruler-mode-mouse-set-left-margin)
 +      (ruler-mode-mouse-set-right-margin): Fix calculation of column
 +      from mouse position (Bug#17768).
 +
 +2014-06-16  Ron Schnell  <ronnie@driver-aces.com>
 +
 +      * play/dunnet.el (dun-doassign): Fix bug where UNIX variable assignment
 +      without varname or rhs causes crash.
 +      (dun-ftp): Fix bug where blank ftp password is allowed, making it
 +      impossible to win endgame.
 +      (dun-unix-verbs): Add ssh as alias to rlogin, because nobody knows what
 +      rlogin is anymore.
 +      (dun-help): Bump version number; update contact info.
 +
 +2014-06-15  Eli Barzilay  <eli@barzilay.org>
 +
 +      * calculator.el (calculator-prompt, calculator-remove-zeros)
 +      (calculator-mode-hook, calculator-operators, calculator-stack)
 +      (calculator-mode): Tweak docstring.
 +      (calculator-user-operators): Tweak docstring, fix a bug in the last
 +      example.
 +      (calculator-displayer): `std' case has an optional boolean.
 +      (calculator-displayers): Use the new boolean to group in decimal mode.
 +      (calculator-mode-map, calculator, calculator-message)
 +      (calculator-op-arity, calculator-add-operators)
 +      (calculator-string-to-number, calculator-displayer-prev)
 +      (calculator-displayer-next, calculator-remove-zeros)
 +      (calculator-eng-display, calculator-number-to-string)
 +      (calculator-update-display, calculator-last-input)
 +      (calculator-clear-fragile, calculator-digit, calculator-decimal)
 +      (calculator-exp, calculator-saved-move, calculator-clear)
 +      (calculator-copy, calculator-put-value, calculator-help)
 +      (calculator-expt, calculator-truncate): Minor code improvements.
 +      (calculator-need-3-lines): New function pulling out code from
 +      `calculator'.
 +      (calculator-get-display): Rename from `calculator-get-prompt', and
 +      improved.
 +      (calculator-push-curnum): Rename from `calculator-curnum-value', and
 +      extended for all uses of it.  All callers changed.
 +      (calculator-groupize-number): New utility for splitting a number into
 +      groups.
 +      (calculator-standard-displayer): Improve code, new optional argument to
 +      use comma-split groups, make second argument optional too to use with
 +      'left/'right inputs.  All callers changed.
 +      (calculator-reduce-stack-once): New utility, doing the meat of what
 +      `calculator-reduce-stack' used to do, much improved (mostly using
 +      `pcase' for conciseness and clarity).
 +      (calculator-reduce-stack): Now doing just the reduction loop using
 +      `calculator-reduce-stack-once'.
 +      (calculator-funcall): Improve code, make it work in v24.3.1 too.
 +      (calculator-last-input): Improve code, remove some old cruft.
 +      (calculator-quit): Kill `calculator-buffer' in electric mode too.
 +      (calculator-integer-p): Remove.
 +      (calculator-fact): Improve code, make it work on non-integer values
 +      too (using truncated numbers).
 +
 +2014-06-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.2.10.
 +
 +      * net/tramp.el (tramp-methods): Tweak docstring.
 +      (tramp-handle-file-accessible-directory-p): Check for
 +      `file-readable-p' instead of `file-executable-p'.
 +      (tramp-check-cached-permissions):
 +      Use `tramp-compat-file-attributes'.
 +      (tramp-call-process): Add new argument VEC.  Adapt callees in all
 +      tramp*.el files.
 +
 +      * net/tramp-adb.el (tramp-adb-handle-write-region): Improve messages.
 +      (tramp-adb-maybe-open-connection): Don't set
 +      `tramp-current-*' variables.
 +
 +      * net/tramp-cache.el (tramp-flush-file-function): Do not flush
 +      file properties of temporary buffers.
 +
 +      * net/tramp-ftp.el (top): Remove special handling for URL syntax.
 +
 +      * net/tramp-gvfs.el (tramp-gvfs-methods) <sftp>: Add.
 +      (tramp-gvfs-handle-delete-file): Flush file
 +      properties, not directory properties.
 +      (tramp-gvfs-handle-file-attributes): Use `string-to-number' when
 +      reading "unix::mode".
 +      (tramp-gvfs-handle-file-name-all-completions):
 +      Use "-h" option for "gvfs-ls".
 +      (tramp-gvfs-url-file-name): `user' and `localname' could be nil.
 +      (tramp-gvfs-send-command): Simplify traces.
 +
 +      * net/tramp-sh.el (vc-handled-backends, vc-bzr-program)
 +      (vc-git-program, vc-hg-program): Declare.
 +      (tramp-methods) <sftp>: Remove.  It has never worked satisfactorily.
 +      (tramp-methods) <nc>: Add new method.
 +      (tramp-methods) <telnet>: Redirect stderr to "/dev/null".
 +      (tramp-methods) <plink, plinkx, pscp, psftp>: Improve
 +      `tramp-login-args'.
 +      (tramp-default-user-alist): Add "nc".
 +      (top): Remove completion function for "sftp".  Add completion
 +      functions for "nc" and "psftp".
 +      (tramp-do-copy-or-rename-file-out-of-band): Tweak docstring.
 +      Implement support for "nc" method.
 +      (tramp-sh-handle-expand-file-name, tramp-local-coding-commands)
 +      (tramp-remote-coding-commands, tramp-call-local-coding-command):
 +      Tweak docstring.
 +      (tramp-sh-handle-write-region): Tweak error message.
 +      (tramp-sh-handle-vc-registered): Remove backends when the remote
 +      binary does not exist.
 +      (tramp-find-inline-encoding): Do not raise an error.
 +      (tramp-make-copy-program-file-name): Tweak docstring.  Handle also
 +      the "nc" case.  Quote result also locally.
 +
 +      * net/tramp-smb.el (tramp-smb-handle-copy-directory)
 +      (tramp-smb-handle-set-file-acl): Use `start-process'.
 +      (tramp-smb-handle-insert-directory): Use progress reporter.
 +      (tramp-smb-handle-rename-file): Flush also file properties of
 +      FILENAME.
 +
 +      * net/trampver.el: Update release number.
 +
 +2014-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * ses.el: Miscellaneous cleanups; use lexical-binding; avoid
 +      add-to-list.
 +      (ses-localvars): Remove ses--local-printer-list, unused.
 +      (ses--metaprogramming): New macro.  Use it to defvar variables.
 +      (ses-set-localvars): Simplify.
 +      (ses--locprn, ses-cell): Use defstruct.  Change ses-cell's
 +      property-list into an alist.
 +      (ses-locprn-get-compiled, ses-locprn-compiled-aset)
 +      (ses-locprn-get-def, ses-locprn-def-aset, ses-locprn-get-number):
 +      Remove; use defstruct accessors/setters instead.
 +      (ses-cell-formula-aset, ses-cell-printer-aset)
 +      (ses-cell-references-aset): Remove, use setf instead.
 +      (ses--alist-get): New function.
 +      (ses-cell-property): Rename from ses-cell-property-get and rewrite.
 +      Use an alist instead of a plist and don't do move-to-front since the
 +      list is always short.
 +      (ses-cell-property-get-fun, ses-cell-property-delq-fun)
 +      (ses-cell-property-set-fun, ses-cell-property-set)
 +      (ses-cell-property-pop-fun, ses-cell-property-get-handle)
 +      (ses-cell-property-handle-car, ses-cell-property-handle-setcar): Remove.
 +      (ses--letref): New macro.
 +      (ses-cell-property-pop): Rewrite.
 +      (ses--cell): Rename from ses-cell and make it into a function.
 +      Make `formula' fallback on `value' if nil.
 +      (ses--local-printer): Rename from ses-local-printer and make it into
 +      a function.
 +      (ses-set-cell): Turn it into a macro so finding the accessor from the
 +      field name is done at compile time.
 +      (ses-repair-cell-reference-all): Test presence of `sym' rather than
 +      `ref' before adding `sym' to :ses-repair-reference.
 +      (ses-calculate-cell): Use ses--letref rather than
 +      ses-cell-property-get-handle.
 +      (ses-write-cells): Use a single prin1-to-string.
 +      (ses-setter-with-undo): New function.
 +      (ses-aset-with-undo, ses-set-with-undo): Rewrite using it.
 +      (ses-unset-with-undo): Remove.
 +      (ses-load): Prefer apply' over `eval'.
 +      (ses-read-printer, ses-set-column-width): Use standard "(default
 +      foo)" format.
 +
 +2014-06-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (leim, semantic): Use `make -C' rather than `cd && make'.
 +
 +      * progmodes/cc-langs.el: Require cl-lib.  (Bug#17463)
 +      Replace delete-duplicates and mapcan by cl- versions throughout.
 +      And cl-macroexpand-all by macroexpand-all.
 +      (delete-duplicates, mapcan, cl-macroexpand-all): No need to declare.
 +
 +2014-06-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * subr.el (posn-col-row): Doc fix.  (Bug#17768)
 +
 +2014-06-15  Juri Linkov  <juri@jurta.org>
 +
 +      * bindings.el: Put `ascii-character' property on keypad keys
 +      mapped to characters.  (Bug#17759)
 +
 +2014-06-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * emacs-lisp/smie.el (smie-next-sexp): Fix up "other-end" info when
 +      bumping forward into a closing paren (bug#17761).
 +
 +      * term/xterm.el (xterm--version-handler): Work around for OSX
 +      Terminal.app (bug#17607).
  
 -      * mouse.el (mouse-drag-line): Re-remove code initially removed
 -      on 2013-03-09 and inadvertently reintroduced on 2013-11-30
 -      (Bug#17819).
 +2014-06-14  Ron Schnell  <ronnie@driver-aces.com>
  
 -2014-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * play/dunnet.el (dun-describe-room, dun-mode):
 +      If a lamp is in the room, you won't be eaten by a grue.
  
 -      * progmodes/sh-script.el (sh-smie-sh-rules): For { after &&, don't
 -      align with the surrounding parent (bug#17721).
 +2014-06-13  Glenn Morris  <rgm@gnu.org>
  
 -2014-06-20  Eli Zaretskii  <eliz@gnu.org>
 +      * Makefile.in ($(lisp)/cus-load.el, $(lisp)/finder-inf.el)
 +      (autoloads, $(lisp)/subdirs.el, compile-main, leim, semantic, compile)
 +      (compile-always): GNU make automatically passes
 +      command-line arguments to sub-makes.
  
 -      * textmodes/texinfo.el (texinfo-mode): Set skeleton-end-newline
 -      locally to nil.
 -      (texinfo-insert-block, texinfo-insert-@end)
 -      (texinfo-insert-@example, texinfo-insert-@quotation): Adjust to
 -      local setting of skeleton-end-newline by adding an explicit \n to
 -      the skeletons where appropriate.  (Bug#17801)
 +      * calendar/calendar.el (calendar-generate-window):
 +      Remove pointless call to font-lock-fontify-buffer.
  
 -2014-06-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-13  Matthias Meulien  <orontee@gmail.com>
  
 -      * emacs-lisp/smie.el (smie--hanging-eolp-function): New var.
 -      (smie-indent--hanging-p): Use it.
 -      * progmodes/sh-script.el (sh-set-shell): Set it (bug#17621).
 +      * simple.el (completion-list-mode-map): Navigate with tab and backtab
 +      (bug#17767).
  
 -2014-06-20  Leo Liu  <sdl.web@gmail.com>
 +2014-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * simple.el (read-quoted-char): Don't let help chars pop up help
 -      buffer.  (Bug#16617)
 +      * simple.el (set-mark-command): Simplify a bit.
  
 -2014-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-12  Nicolas Richard  <theonewiththeevillook@yahoo.fr>
  
 -      * progmodes/sh-script.el (sh-smie-sh-rules): Use same rule for && as
 -      for | (bug#17621).
 +      * help.el (help--key-binding-keymap): New function.
 +      (help--binding-locus): New function.
 +      (describe-key): Mention the keymap in which the binding was
 +      found.  (bug#13948)
  
 -2014-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * xt-mouse.el (xterm-mouse-translate-1): Fix last change (bug#17776).
 -      (xterm-mouse--read-event-sequence-1000): Drop unknown events instead of
 -      burping.
 +      * hippie-exp.el (he--all-buffers): New function.
 +      (try-expand-line-all-buffers, try-expand-list-all-buffers)
 +      (try-expand-dabbrev-all-buffers): Use it.
  
 -2014-06-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-12  Emilio C. Lopes  <eclig@gmx.net>
  
 -      * term/w32-win.el (dynamic-library-alist): Support giflib 5.1.0
 -      and later.  (Bug#17790)
 +      * hippie-exp.el (try-expand-line-all-buffers)
 +      (try-expand-list-all-buffers, try-expand-dabbrev-all-buffers):
 +      Read hippie-expand-only-buffers and hippie-expand-ignore-buffers in the
 +      original buffer, in case they're buffer-local.
  
 -2014-06-18  Juri Linkov  <juri@jurta.org>
 +2014-06-12  Vincent Belaïche  <vincentb1@users.sourceforge.net>
  
 -      * dired.el (dired-mark-pop-up): Let-bind display-buffer-mark-dedicated
 -      to `soft'.  (Bug#17554)
 +      * ses.el (ses-initial-global-parameters-re): New defconst, a
 +      specific regexp is needed now that ses.el can handle both
 +      file-format 2 --- ie. no local printers --- and 3 --- i.e. may have
 +      local printers.
 +      (ses-localvars): Add local variables needed for local printer handling.
 +      (ses-set-localvars): Handle hashmap initialisation.
 +      (ses-paramlines-plist): Add param-line for number of local printers.
 +      (ses-paramfmt-plist): New defconst, needed for code factorization
 +      between functions `ses-set-parameter' and
 +      `ses-file-format-extend-paramter-list'
 +      (ses-make-local-printer-info): New defsubst.
 +      (ses-locprn-get-compiled, ses-locprn-compiled-aset)
 +      (ses-locprn-get-def, ses-locprn-def-aset, ses-locprn-get-number)
 +      (ses-cell-printer-aset): New defmacro.
 +      (ses-local-printer-compile): New defun.
 +      (ses-local-printer): New defmacro.
 +      (ses-printer-validate, ses-call-printer): Add support for local
 +      printer functions.
 +      (ses-file-format-extend-paramter-list): New defun.
 +      (ses-set-parameter): Use const `ses-paramfmt-plist' for code
 +      factorization.
 +      (ses-load): Add support for local printer functions.
 +      (ses-read-printer): Update docstring and add support for local printer
 +      functions.
 +      (ses-refresh-local-printer, ses-define-local-printer): New defun.
 +      (ses-safe-printer): Add support for local printer functions.
  
 -2014-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-12  Ivan Andrus  <darthandrus@gmail.com>
  
 -      * delsel.el (electric-newline-and-maybe-indent): Mark it as well
 -      (bug#17737).
 +      * ffap.el (ffap-lax-url): New var (bug#17723).
 +      (ffap-url-at-point): Use it.
 +      (ffap-file-at-point): Avoid returning just "/".
  
 -2014-06-16  Dmitry Gutov  <dgutov@yandex.ru>
 +2014-06-12  Matthias Meulien  <orontee@gmail.com>
  
 -      * progmodes/ruby-mode.el (ruby-font-lock-keywords): Don't fontify
 -      `!' in `!~' with `font-lock-negation-char-face'.  (Bug#17732)
 +      * progmodes/python.el (import skeleton): New skeleton (bug#17672).
 +      (python-mode-map): Bind it.
  
 -2014-06-15  Michael Albinus  <michael.albinus@gmx.de>
 +      * progmodes/python.el (class skeleton): Don't erase last char of class
 +      name (bug#17683).
  
 -      * net/dbus.el (dbus-call-method): Push only non D-Bus events into
 -      `unread-command-events'.
 +2014-06-12  Cameron Desautels  <camdez@gmail.com>  (tiny change)
  
 -2014-06-14  Glenn Morris  <rgm@gnu.org>
 +      * help.el (where-is): Use `default' arg of completing-read (bug#17705).
  
 -      * progmodes/cc-langs.el: Require cl-lib.  (Bug#17463)
 -      Replace delete-duplicates and mapcan by cl- versions throughout.
 -      And cl-macroexpand-all by macroexpand-all.
 -      (delete-duplicates, mapcan, cl-macroexpand-all): No need to declare.
 +2014-06-12  Kevin Ryde  <user42_kevin@yahoo.com.au>
  
 -2014-06-14  Eli Zaretskii  <eliz@gnu.org>
 +      * files.el (auto-mode-alist): Map .ad files to xdefaults-mode
 +      (bug#17745).
  
 -      * subr.el (posn-col-row): Doc fix.  (Bug#17768)
 +2014-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-06-14  Juri Linkov  <juri@jurta.org>
 +      * international/mule-cmds.el: Use lexical-binding.
 +      (ucs-names): Simplify.
  
 -      * bindings.el: Put `ascii-character' property on keypad keys
 -      mapped to characters.  (Bug#17759)
 +2014-05-18  Eric Hanchrow  <eric.hanchrow@gmail.com>
  
 -2014-06-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * progmodes/python.el (run-python): Use read-shell-command.
  
 -      * emacs-lisp/smie.el (smie-next-sexp): Fix up "other-end" info when
 -      bumping forward into a closing paren (bug#17761).
 +2014-06-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * term/xterm.el (xterm--version-handler): Work around for OSX
 -      Terminal.app (bug#17607).
 +      * rect.el: Make it possible to move bounds past EOL or into TABs.
 +      (operate-on-rectangle): Use apply-on-rectangle.
 +      (rectangle--mark-crutches): New var.
 +      (rectangle--pos-cols, rectangle--col-pos, rectangle--point-col)
 +      (rectangle--crutches, rectangle--reset-crutches): New functions.
 +      (apply-on-rectangle): Obey crutches.  Avoid setq.
 +      Fix missing final iteration if end is at EOB&BOL.
 +      (rectangle-mark-mode-map): Add remap bindings for
 +      exchange-point-and-mark and char/line movements.
 +      (rectangle--*-char): New function.
 +      (rectangle-exchange-point-and-mark, rectangle-right-char)
 +      (rectangle-left-char, rectangle-forward-char)
 +      (rectangle-backward-char, rectangle-next-line)
 +      (rectangle-previous-line): New commands.
 +      (rectangle--place-cursor): New function.
 +      (rectangle--highlight-for-redisplay): Use it.  Use apply-on-rectangle.
  
  2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * bookmark.el (bookmark-load):
        * uniquify.el (uniquify-buffer-name-style): Doc fixes.
  
 -2014-06-06  Juri Linkov  <juri@jurta.org>
 +2014-06-08  Juri Linkov  <juri@jurta.org>
  
        * desktop.el: Activate auto-saving on window configuration changes.
        (desktop-save-mode, desktop-auto-save-timeout): Add/remove
 -      `desktop-auto-save-set-timer' to/from `window-configuration-change-hook'.
 +      `desktop-auto-save-set-timer' to/from
 +      `window-configuration-change-hook'.
        (desktop-auto-save-set-timer): Change REPEAT arg of
        `run-with-idle-timer' from t to nil.
        http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html
  
 -2014-06-06  Santiago Payà i Miralta  <santiagopim@gmail.com>
 +2014-06-08  Santiago Payà i Miralta  <santiagopim@gmail.com>
  
        * vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and
        vc-hg-command (bug#17570).
  
 -2014-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * international/mule-cmds.el (ucs-names): Add special entry for BEL
        (bug#17702).
  
 -2014-06-06  Glenn Morris  <rgm@gnu.org>
 +2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * startup.el (window-setup-hook): Doc fix.
  
 -2014-06-05  Glenn Morris  <rgm@gnu.org>
 -
        * emacs-lisp/package.el (package-check-signature)
        (package-unsigned-archives): Doc fixes.
  
 -2014-06-03  Martin Rudalics  <rudalics@gmx.at>
 +2014-06-08  Martin Rudalics  <rudalics@gmx.at>
  
        * window.el (display-buffer-use-some-window): Don't make window
        used smaller than it was before (Bug#17671).
  
 -2014-06-03  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
  
        * menu-bar.el (menu-bar-open): Fix last change: use the PC
        'redisplay' instead of '(sit-for 0)'.
  
 -2014-06-03  Michael Albinus  <michael.albinus@gmx.de>
 +2014-06-08  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * net/tramp.el (tramp-ssh-controlmaster-options): Improve search
 -      regexp.  (Bug#17653)
 +      * net/tramp.el (tramp-ssh-controlmaster-options):
 +      Improve search regexp.  (Bug#17653)
  
 -2014-06-03  Glenn Morris  <rgm@gnu.org>
 +2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/package.el (package-pinned-packages): Doc fix.
  
 -2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
  
        * menu-bar.el (menu-bar-open): Fix invocation via M-x.
  
 -2014-06-01  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-06  Santiago Payà i Miralta  <santiagopim@gmail.com>
 +
 +      * vc/vc-hg.el (vc-hg-create-tag, vc-hg-retrieve-tag): New functions
 +      (bug#17586).
 +
 +      * vc/vc-hg.el (vc-hg-log-graph): New var.
 +      (vc-hg-print-log): Use it.
 +      (vc-hg-root-log-format): Include branch name and bookmarks; ignore
 +      graph output (bug#17515).
 +
 +2014-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * mouse.el (mouse-posn-property): Ignore buffer position info when the
 +      even happened elsewhere.
 +
 +2014-06-06  Mario Lang  <mlang@delysid.org>
 +
 +      * emacs-lisp/tabulated-list.el (tabulated-list-print): Only call
 +      `recenter' if `current-buffer' is equal to `window-buffer'.
 +
 +2014-06-05  Leo Liu  <sdl.web@gmail.com>
 +
 +      * emacs-lisp/cl-macs.el (cl-macrolet): Avoid excessive progn's.
 +
 +2014-06-05  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/tildify.el (tildify-foreach-region-outside-env):
 +      New function which calls a callback on portions of the buffer that are
 +      outside of ignored environments.
 +      (tildify-build-regexp): Remove function since it is now
 +      incorporated in `tildify-foreach-region-outside-env' where it is
 +      optimized and simplified by the use of `mapconcat'.
 +      (tildify-tildify): Return number of substitutions made so that…
 +      (tildify-count): …can be removed.
 +      (tildify-find-env): Accept a new PAIRS argument which was
 +      previously looked up in `tildify-ignored-environments-alist' each
 +      time the function was called.  With this change, the lookup is
 +      performed only once in `tildify-foreach-region-outside-env'.
 +      (tildify-region): Greatly simplify the function since now most of
 +      the work is done by `tildify-foreach-region-outside-env'.
 +      (tildify-mode-alist): Simplify slightly by avoiding if and setq
 +      and instead using or.
 +
 +      * textmodes/tildify.el (tildify-ignored-environments-alist):
 +      Optimize environments regexes
 +
 +      Each time beginning of an environment to ignore is found,
 +      `tildify-find-env' needs to identify regexp for the ending
 +      of the environment.  This is done by trying all the opening
 +      regexes on matched text in a loop, so to speed that up, this
 +      loop should have fewer things to match, which can be done by
 +      using alternatives in the opening regexes.
 +
 +      Coincidentally, this should make matching of the opening
 +      regexp faster as well thanks to the use of `regexp-opt' and
 +      having common prefix pulled from many regexes.
 +
 +      * textmodes/tildify.el (tildify-string-alist)
 +      (tildify-ignored-environments-alist): Add `nxml-mode' to the list
 +      of supported modes since `xml-mode' is no longer a thing but just
 +      an alias to the former.  Also include comments and insides of tags
 +      in `tildify-ignored-environments-alist' for XML modes.  Finally,
 +      since XML does not define “&nbsp;”[1], use a numeric reference for
 +      a no-break space (namely “&#160;”)
 +
 +      [1] XML specification defines only a handful of predefined entities.
 +          The list is at <http://www.w3.org/TR/REC-xml/#sec-predefined-ent>
 +          and includes only &lt;, &gt;, &amp;, &apos; and &quot; (meaning <,
 +          >, &, ' and " respectively).  This is in contrast to HTML and even
 +          XHTML which defined a whole bunch of entities including “&nbsp;”.
 +
 +      * textmodes/tildify.el (tildify-pattern-alist)
 +      (tildify-string-alist, tildify-ignored-environments-alist):
 +      Improve defcustom's types by adding more tags explaining what each
 +      value means and replace “sexp” used in
 +      `tildify-ignored-environments-alist' with a full type declaration.
 +
 +      * textmodes/tildify.el (tildify-find-env): Fix matched group
 +      indexes in end-regex building
 +
 +      When looking for a start of an ignore-environment, the regex is built
 +      by concatenating regexes of all the environments configured in
 +      `tildify-ignored-environments-alist'.  So for example, the following
 +      list could be used to match TeX's \verb and \verb* commands:
 +
 +          (("\\\\verb\\(.\\)" . (1))
 +           ("\\\\verb\\*\\(.\\)" . (1)))
 +
 +      This would result in the following regex being used to find the start
 +      of any of the variants of the \verb command:
 +
 +          \\\\verb\\(.\\)\\|\\\\verb\\*\\(.\\)
 +
 +      But now, if “\\\\verb\\*\\(.\\)” matches, the first capture group
 +      won't match anything, and thus (match-string 1) will be nil, which
 +      will cause building of the end-matching regex to fail.
 +
 +      Fix this by using capture groups from the time when the opening
 +      regexes are matched individually.
 +
 +      * textmodes/tildify.el (tildify-find-env): Fix end-regex building
 +      in `tildify-find-env'
 +
 +      The `tildify-ignored-environments-alist' allows the end-regex to
 +      be provided not as a static string but mix of strings and indexes
 +      of groups matched the begin-regex.  For example, the “\verb!…!”
 +      TeX-command (where “!” is an arbitrary character) is handled
 +      using:
 +
 +          ("\\\\verb\\*?\\(.\\)" . (1))
 +
 +      In the same way, the following should be supported as well:
 +
 +          ("open-\\(.\\)" . ("end-" 1))
 +
 +      However the tildify-find-env function fails at
 +
 +          (concat result
 +                  (if (stringp (setq aux (car expression)))
 +                       expression  ; BUG: expression is a list
 +                     (regexp-quote (match-string aux))))
 +
 +      where the string part is handled incorrectly.
 +
 +      The most trivial fix would be to replace `expression' in the
 +      true-part of the if-statement with `aux', but instead, this commit
 +      optimizes `tildify-find-env' by changing it to use `mapconcat'
 +      rather than open-coded while-loop.
 +
 +2014-06-05  Mario Lang  <mlang@delysid.org>
 +
 +      * woman.el (woman-mapcan): Remove.
 +      (woman-parse-colon-path): Use cl-mapcan instead.
 +
 +2014-06-03  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>
 +
 +      * register.el: Add link to Emacs manual in Commentary.
 +
 +2014-06-02  Sam Steingold  <sds@gnu.org>
 +
 +      * menu-bar.el (lookup-key-ignore-too-long): Extract from...
 +      (popup-menu): ...here.
 +      (menu-bar-open): Use it to avoid an error when `lookup-key'
 +      returns a number.
 +
 +2014-06-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * net/tramp.el (tramp-call-process): Add traces.
 +      (tramp-handle-unhandled-file-name-directory): Return "/".
 +
 +2014-06-02  Wilson Snyder  <wsnyder@wsnyder.org>
 +
 +      Sync with upstream verilog-mode revision 3cd8144.
 +      * progmodes/verilog-mode.el (verilog-mode-version): Bump.
 +      (verilog-auto-arg-format): New option, to support newlines in AUTOARG.
 +      (verilog-type-font-keywords): Add nor.
 +      (verilog-batch-execute-func): Force reading of Local Variables.
 +      Fix printing "no changes to be saved" with verilog-batch.
 +      (verilog-auto-arg-ports): Doc fix.
 +      Add verilog-auto-arg-format to support newlines in AUTOARG.
 +      (verilog-auto-arg): Doc fix.
 +
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * emulation/crisp.el, emulation/tpu-edt.el, emulation/tpu-extras.el:
 +      * emulation/tpu-mapper.el, emulation/vi.el, emulation/vip.el:
 +      * emulation/ws-mode.el: Move to obsolete/.
 +      * Makefile.in (AUTOGEN_VCS): Update for moved tpu-edu.el.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
  
        * simple.el (keyboard-quit): Force update of mode lines, to remove
        the "Def" indicator, if we were defining a macro.  (Bug#17615)
  
 -2014-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * minibuffer.el (minibuffer-force-complete-and-exit):
        Obey minibuffer-default (bug#17545).
        * progmodes/js.el (js-indent-line): Don't mix columns and chars
        (bug#17619).
  
 -2014-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 -
        * subr.el (set-transient-map): Don't wait for some "nested"
        transient-map to finish if we're only supposed to be active for
        the next command (bug#17642).
  
 -2014-05-31  Leo Liu  <sdl.web@gmail.com>
 +2014-06-02  Leo Liu  <sdl.web@gmail.com>
  
        * emacs-lisp/gv.el (window-buffer, window-display-table)
        (window-dedicated-p, window-hscroll, window-point, window-start):
        Fix gv-expander.  (Bug#17630)
  
 -2014-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * mouse.el (mouse-posn-property): Ignore posn-point for mode-line
        clicks (bug#17633).
        for the single comma, since ", " is *very* common in normal French text
        (bug#17643).
  
 -2014-05-30  Glenn Morris  <rgm@gnu.org>
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
  
        * emacs-lisp/package.el (package-check-signature)
        (package-unsigned-archives): Fix :version.
  
 -2014-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * subr.el (sit-for): Don't run input-methods (bug#15614).
  
 -2014-05-28  Glenn Morris  <rgm@gnu.org>
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
  
        * cus-start.el: Fix some :version numbers.
  
 -2014-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * simple.el (deactivate-mark): Set mark-active to nil even if
        deactivation is done via setting transient-mark-mode to nil,
        * emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume
        there can't be more than 2 arguments (bug#17584).
  
 -2014-05-27  Glenn Morris  <rgm@gnu.org>
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
  
        * simple.el (filter-buffer-substring-functions)
        (filter-buffer-substring-function, buffer-substring-filters)
        * abbrev.el (abbrev-expand-functions, abbrev-expand-function)
        (expand-abbrev, abbrev--default-expand): Doc fixes.
  
 -2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
  
        Include sources used to create macuvs.h.
        * international/README: Refer to the Unicode Terms of Use rather
        than copying it bodily here, as that simplifies maintenance.
  
 -2014-05-25  Andreas Schwab  <schwab@linux-m68k.org>
 +2014-06-01  Glenn Morris  <rgm@gnu.org>
 +
 +      * loadup.el (load-prefer-newer): Set non-nil when dumping.  (Bug#17629)
 +
 +2014-05-31  Glenn Morris  <rgm@gnu.org>
 +
 +      * files.el (locate-dominating-file): Expand file argument.  (Bug#17641)
 +
 +2014-05-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * loadup.el: Treat `command-line-args' more flexibly.
 +
 +2014-05-30  Alan Mackenzie  <acm@muc.de>
 +
 +      Guard (looking-at "\\s!") from XEmacs.
 +      * progmodes/cc-engine.el (c-state-pp-to-literal): Add guard form.
 +
 +2014-05-30    Ken Olum  <kdo@cosmos.phy.tufts.edu>
 +
 +      * mail/rmail.el (rmail-delete-forward, rmail-delete-backward):
 +      The argument COUNT is now optional, to be more backward-compatible.
 +      Doc fix.  (Bug#17560)
 +
 +2014-05-29  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * whitespace.el (whitespace-report-region):
 +      Simplify documentation.
 +      (whitespace-report-region): Allow report-if-bogus to take the
 +      value `never', for non-interactive use.
 +      (whitespace-report): Refer to whitespace-report-region's
 +      documentation.
 +
 +2014-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * whitespace.el: Use font-lock-flush.  Minimize refontifications.
 +      Side benefit: it works without jit-lock.
 +      (whitespace-point--used): New buffer-local var.
 +      (whitespace-color-on): Initialize it and flush it.  Use font-lock-flush.
 +      (whitespace-color-off): Use font-lock-flush.
 +      (whitespace-point--used, whitespace-point--flush-used): New functions.
 +      (whitespace-trailing-regexp, whitespace-empty-at-bob-regexp)
 +      (whitespace-empty-at-eob-regexp): Use them.
 +      (whitespace-post-command-hook): Rewrite.
 +
 +      * font-lock.el (font-lock-flush, font-lock-ensure): New functions.
 +      (font-lock-fontify-buffer): Mark interactive-only.
 +      (font-lock-multiline, font-lock-fontified, font-lock-set-defaults):
 +      Make buffer-local.
 +      (font-lock-specified-p): Remove redundant boundp check.
 +      (font-lock-flush-function, font-lock-ensure-function): New vars.
 +      (font-lock-turn-on-thing-lock): Set them.
 +      (font-lock-default-fontify-buffer): Obey font-lock-dont-widen.
 +      (font-lock-after-change-function): Make `old-len' optional.
 +      (font-lock-set-defaults): Remove redundant `set' of font-lock-defaults.
 +      Call font-lock-flush, just in case.
 +      * progmodes/verilog-mode.el (verilog-preprocess): Disable workaround in
 +      recent Emacsen.
 +      * progmodes/vera-mode.el (vera-fontify-buffer): Declare obsolete.
 +      (vera-mode-map, vera-mode-menu): Remove bindings to it.
 +      * progmodes/idlw-help.el (idlwave-help-fontify): Use font-lock-ensure
 +      and with-syntax-table.
 +      * textmodes/conf-mode.el (conf-quote-normal):
 +      * progmodes/sh-script.el (sh-set-shell):
 +      * progmodes/prog-mode.el (prettify-symbols-mode):
 +      * progmodes/f90.el (f90-font-lock-n):
 +      * progmodes/cwarn.el (cwarn-mode):
 +      * nxml/nxml-mode.el (nxml-toggle-char-ref-extra-display):
 +      * progmodes/compile.el (compilation-setup, compilation--unsetup):
 +      * hi-lock.el (hi-lock-mode, hi-lock-unface-buffer)
 +      (hi-lock-set-pattern, hi-lock-set-file-patterns): Use font-lock-flush.
 +      * mail/rmail.el (rmail-variables): Set font-lock-dont-widen instead of
 +      font-lock-fontify-buffer-function and
 +      font-lock-unfontify-buffer-function.
 +      (rmail-unfontify-buffer-function, rmail-fontify-message):
 +      Use with-silent-modifications.
 +      * htmlfontify.el (hfy-force-fontification): Use jit-lock-fontify-now
 +      and font-lock-ensure.
 +      * bs.el (bs-show-in-buffer): Use font-lock-ensure.
 +
 +2014-05-28  Thien-Thi Nguyen  <ttn@gnu.org>
 +
 +      * emacs-lisp/package.el (package-generate-autoloads):
 +      Inhibit backup files.
 +
 +2014-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * progmodes/hideshow.el (hs-hide-all): Call syntax-propertize
 +      (bug#17608).
 +
 +2014-05-21  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * textmodes/tildify.el (tildify-buffer, tildify-region):
 +      Add dont-ask option.
 +
 +2014-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * subr.el (zerop): Move from C.  Add compiler-macro (bug#17475).
 +      * emacs-lisp/byte-opt.el (byte-optimize-zerop): Remove.
 +
 +      * subr.el (internal--funcall-interactively): New.
 +      (internal--call-interactively): Remove.
 +      (called-interactively-p): Detect funcall-interactively instead of
 +      call-interactively.
 +      * simple.el (repeat-complex-command): Use funcall-interactively.
 +      (repeat-complex-command--called-interactively-skip): Remove.
 +
 +2014-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * register.el (register-read-with-preview): Don't burp on
 +      frame switches (e.g. due to the frame we just popped).
 +
 +      * mouse.el (mouse-set-region): Handle spurious drag events (bug#17562).
 +      (mouse-drag-track): Annotate `mouse-drag-start' so we know we moved.
 +
 +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
        (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
        (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
        (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'.
        * 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.
  
        * 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.
  
  
        * 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.
        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>
  
 -      * mpc.el (mpc-volume-mouse-set): Don't burp at the boundaries.
 +      * 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
 -      overridden by the defface spec which also fixes issues on win32 where
 +      overriden by the defface spec which also fixes issues on win32 where
        the toolbar coloring was wrong because it is set through X resources
 -      and was (wrongfully) overridden.  (Bug#16694)
 +      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)
 +      backspace.  (Bug#16981)
        * elec-pair.el (electric-pair-backward-delete-char): Delete.
        (electric-pair-backward-delete-char-untabify): Delete.
        (electric-pair-mode-map): Bind backspace to a menu item filtering
        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>
 +2014-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * progmodes/perl-mode.el (perl-syntax-propertize-function): Handle $'
 -      used as a variable (bug#17174).
 -
 -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--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-26  Glenn Morris  <rgm@gnu.org>
  
 -      * emacs-lisp/package.el (package-show-package-list): If the buffer
 -      is already displayed in another window, switch to that window.
 +      * obsolete/gulp.el: Move here from emacs-lisp/.
  
 -2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +      * files.el (lock-buffer, unlock-buffer, file-locked-p):
 +      Remove fallback aliases, since they are always defined now.
  
 -      * mail/emacsbug.el (report-emacs-bug): Include memory usage
 -      information in bug reports.
 +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): Copy 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>
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
  
 -      * battery.el (battery-linux-sysfs): Search for each field
 -      from the beginning of the buffer.
 +      * 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.
  2014-03-10  Michael Albinus  <michael.albinus@gmx.de>
  
        * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
 -      Do not add `nil' to the environment, when there's no remote `locale'.
 +      Do not add nil to the environment, when there's no remote `locale'.
        (tramp-find-inline-encoding): Check, that the remote host has
        installed perl, before sending scripts.
  
        * help-at-pt.el (help-at-pt-string, help-at-pt-maybe-display):
        Also try to display local help from just before point.
  
 -2014-02-02  Alan Mackenzie  <bug-cc-mode@gnu.org>
 +2014-02-02  Alan Mackenzie  <acm@muc.de>
  
        c-parse-state.  Don't "append-lower-brace-pair" in certain
        circumstances.  Also fix an obscure bug where "\\s!" shouldn't be
        COMMAND-alternatives variable, assign COMMAND as its definition
        name so that `describe-variable' can relocate it.
  
 -2014-01-14  Matthew Leach  <matthew@mattleach.net>  (tiny change)
 +2014-01-14  Matthew Leach  <matthew@mattleach.net>
  
        * font-lock.el (font-lock-keywords): Fix typo in docstring
        (bug#16307).
        Add option to delete file when done.  (Bug#15647)
        (python-shell-send-string, python-shell-send-region): Use it.
  
 -2013-11-23  Ivan Shmakov  <ivan@siamics.net>  (tiny change)
 +2013-11-23  Ivan Shmakov  <ivan@siamics.net>
  
        * vc/diff-mode.el (diff-mode): Only allow diff-default-read-only
        to set buffer-read-only to t, never to nil.  (Bug#15938)
        Change default to "# encoding: %s" to differentiate it from the
        default Ruby encoding comment template.
  
 -2013-11-20  era eriksson  <era+emacsbugs@iki.fi>
 +2013-11-20  Era Eriksson  <era+emacsbugs@iki.fi>
  
        * ses.el (ses-mode): Doc fix.  (Bug#14748)
  
  
        * 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>
  
  2013-06-04  Alan Mackenzie  <acm@muc.de>
  
 -      Remove faulty optimisation from indentation calculation.
 +      Remove faulty optimization from indentation calculation.
        * progmodes/cc-engine.el (c-guess-basic-syntax): Don't calculate
        search limit based on 2000 characters back from indent-point.
  
        * 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):
diff --combined lisp/menu-bar.el
index cd1a4d05b5595a4f58175a6c0ea9b4377f54cee8,e82c089850afc474ffc06bab162b64a4ba7be858..5fdb9377a48900b9741476cdb2b70ad1be54c53f
  
      (bindings--define-key menu [set-tags-name]
        '(menu-item "Set Tags File Name..." visit-tags-table
 -                  :help "Tell Tags commands which tag table file to use"))
 +                  :visible (menu-bar-goto-uses-etags-p)
 +                  :help "Tell navigation commands which tag table file to use"))
  
      (bindings--define-key menu [separator-tag-file]
 -      menu-bar-separator)
 +      '(menu-item "--" nil :visible (menu-bar-goto-uses-etags-p)))
 +
 +    (bindings--define-key menu [xref-pop]
 +      '(menu-item "Back" xref-pop-marker-stack
 +                  :visible (and (featurep 'xref)
 +                                (not (xref-marker-stack-empty-p)))
 +                  :help "Back to the position of the last search"))
  
 -    (bindings--define-key menu [apropos-tags]
 -      '(menu-item "Tags Apropos..." tags-apropos
 +    (bindings--define-key menu [xref-apropos]
 +      '(menu-item "Find Apropos..." xref-find-apropos
                    :help "Find function/variables whose names match regexp"))
 -    (bindings--define-key menu [next-tag-otherw]
 -      '(menu-item "Next Tag in Other Window"
 -                  menu-bar-next-tag-other-window
 -                  :enable (and (boundp 'tags-location-ring)
 -                               (not (ring-empty-p tags-location-ring)))
 -                  :help "Find next function/variable matching last tag name in another window"))
 -
 -    (bindings--define-key menu [next-tag]
 -      '(menu-item "Find Next Tag"
 -                  menu-bar-next-tag
 -                  :enable (and (boundp 'tags-location-ring)
 -                               (not (ring-empty-p tags-location-ring)))
 -                  :help "Find next function/variable matching last tag name"))
 -    (bindings--define-key menu [find-tag-otherw]
 -      '(menu-item "Find Tag in Other Window..." find-tag-other-window
 +
 +    (bindings--define-key menu [xref-find-otherw]
 +      '(menu-item "Find Definition in Other Window..."
 +                  xref-find-definitions-other-window
                    :help "Find function/variable definition in another window"))
 -    (bindings--define-key menu [find-tag]
 -      '(menu-item "Find Tag..." find-tag
 +    (bindings--define-key menu [xref-find-def]
 +      '(menu-item "Find Definition..." xref-find-definitions
                    :help "Find definition of function or variable"))
  
 -    (bindings--define-key menu [separator-tags]
 +    (bindings--define-key menu [separator-xref]
        menu-bar-separator)
  
      (bindings--define-key menu [end-of-buf]
                    :help "Read a line number and go to that line"))
      menu))
  
 +(defun menu-bar-goto-uses-etags-p ()
 +  (or (not (boundp 'xref-find-function))
 +      (eq xref-find-function 'etags-xref-find)))
  
  (defvar yank-menu (cons (purecopy "Select Yank") nil))
  (fset 'yank-menu (cons 'keymap yank-menu))
                         [paste-from-menu])
        ;; ns-win.el said: Change text to be more consistent with
        ;; surrounding menu items `paste', etc."
 -      `(menu-item ,(if (featurep 'ns) "Select and Paste"
 -                     "Paste from Kill Menu") yank-menu
 +      `(menu-item ,(if (featurep 'ns) "Select and Paste" "Paste from Kill Menu")
 +                  yank-menu
                    :enable (and (cdr yank-menu) (not buffer-read-only))
                    :help "Choose a string from the kill ring and paste it"))
      (bindings--define-key menu [paste]
        '(menu-item "Paste" yank
                    :enable (and (or
 -                                ;; Emacs compiled --without-x (or --with-ns)
 -                                ;; doesn't have x-selection-exists-p.
 -                                (and (fboundp 'x-selection-exists-p)
 -                                     (x-selection-exists-p 'CLIPBOARD))
 +                                (gui-call gui-selection-exists-p 'CLIPBOARD)
                                  (if (featurep 'ns) ; like paste-from-menu
                                      (cdr yank-menu)
                                    kill-ring))
  
      menu))
  
 -(defun menu-bar-next-tag-other-window ()
 -  "Find the next definition of the tag already specified."
 -  (interactive)
 -  (find-tag-other-window nil t))
 -
 -(defun menu-bar-next-tag ()
 -  "Find the next definition of the tag already specified."
 -  (interactive)
 -  (find-tag nil t))
 -
  (define-obsolete-function-alias
    'menu-bar-kill-ring-save 'kill-ring-save "24.1")
  
       '(and mark-active (not buffer-read-only)))
  (put 'clipboard-kill-ring-save 'menu-enable 'mark-active)
  (put 'clipboard-yank 'menu-enable
 -     '(and (or (not (fboundp 'x-selection-exists-p))
 -             (x-selection-exists-p)
 -             (x-selection-exists-p 'CLIPBOARD))
 +     '(and (or (gui-call gui-selection-exists-p 'PRIMARY)
 +             (gui-call gui-selection-exists-p 'CLIPBOARD))
           (not buffer-read-only)))
  
  (defun clipboard-yank ()
    "Insert the clipboard contents, or the last stretch of killed text."
    (interactive "*")
 -  (let ((x-select-enable-clipboard t))
 +  (let ((gui-select-enable-clipboard t))
      (yank)))
  
  (defun clipboard-kill-ring-save (beg end &optional region)
 -  "Copy region to kill ring, and save in the X clipboard."
 +  "Copy region to kill ring, and save in the GUI's clipboard."
    (interactive "r\np")
 -  (let ((x-select-enable-clipboard t))
 +  (let ((gui-select-enable-clipboard t))
      (kill-ring-save beg end region)))
  
  (defun clipboard-kill-region (beg end &optional region)
 -  "Kill the region, and save it in the X clipboard."
 +  "Kill the region, and save it in the GUI's clipboard."
    (interactive "r\np")
 -  (let ((x-select-enable-clipboard t))
 +  (let ((gui-select-enable-clipboard t))
      (kill-region beg end region)))
  
  (defun menu-bar-enable-clipboard ()
@@@ -872,33 -887,8 +872,33 @@@ by \"Save Options\" in Custom buffers."
    (interactive)
    (customize-set-variable 'scroll-bar-mode nil))
  
 +(defun menu-bar-horizontal-scroll-bar ()
 +  "Display horizontal scroll bars on each window."
 +  (interactive)
 +  (customize-set-variable 'horizontal-scroll-bar-mode t))
 +
 +(defun menu-bar-no-horizontal-scroll-bar ()
 +  "Turn off horizontal scroll bars."
 +  (interactive)
 +  (customize-set-variable 'horizontal-scroll-bar-mode nil))
 +
  (defvar menu-bar-showhide-scroll-bar-menu
    (let ((menu (make-sparse-keymap "Scroll-bar")))
 +    (bindings--define-key menu [horizontal]
 +      '(menu-item "Horizontal"
 +                  menu-bar-horizontal-scroll-bar
 +                  :help "Horizontal scroll bar"
 +                  :visible (horizontal-scroll-bars-available-p)
 +                  :button (:radio . (cdr (assq 'horizontal-scroll-bars
 +                                             (frame-parameters))))))
 +
 +    (bindings--define-key menu [none-horizontal]
 +      '(menu-item "None-horizontal"
 +                  menu-bar-no-horizontal-scroll-bar
 +                  :help "Turn off horizontal scroll bars"
 +                  :visible (horizontal-scroll-bars-available-p)
 +                  :button (:radio . (not (cdr (assq 'horizontal-scroll-bars
 +                                                   (frame-parameters)))))))
  
      (bindings--define-key menu [right]
        '(menu-item "On the Right"
                    :help "Scroll-bar on the right side"
                    :visible (display-graphic-p)
                    :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
 -                                                   (frame-parameters))) 'right))))
 +                                                   (frame-parameters)))
 +                                      'right))))
  
      (bindings--define-key menu [left]
        '(menu-item "On the Left"
                    :help "Scroll-bar on the left side"
                    :visible (display-graphic-p)
                    :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
 -                                                   (frame-parameters))) 'left))))
 +                                                   (frame-parameters)))
 +                                      'left))))
  
      (bindings--define-key menu [none]
        '(menu-item "None"
                    :help "Turn off scroll-bar"
                    :visible (display-graphic-p)
                    :button (:radio . (eq (cdr (assq 'vertical-scroll-bars
 -                                                   (frame-parameters))) nil))))
 +                                                   (frame-parameters)))
 +                                      nil))))
      menu))
  
  (defun menu-bar-frame-for-menubar ()
@@@ -1315,6 -1302,9 +1315,6 @@@ mail status in mode line")
      (bindings--define-key menu [life]
        '(menu-item "Life"  life
                    :help "Watch how John Conway's cellular automaton evolves"))
 -    (bindings--define-key menu [land]
 -      '(menu-item "Landmark" landmark
 -                  :help "Watch a neural-network robot learn landmarks"))
      (bindings--define-key menu [hanoi]
        '(menu-item "Towers of Hanoi" hanoi
                    :help "Watch Towers-of-Hanoi puzzle solved by Emacs"))
@@@ -1747,12 -1737,14 +1747,14 @@@ The menu frame is the frame for which w
         (frame-visible-p menu-frame))))
  
  (defun menu-bar-non-minibuffer-window-p ()
-   "Return non-nil if selected window of the menu frame is not a minibuf window.
- See the documentation of `menu-bar-menu-frame-live-and-visible-p'
for the definition of the menu frame."
+   "Return non-nil if the menu frame's selected window is no minibuffer window.
+ Return nil if the menu frame is dead or its selected window is a
+ minibuffer window.  The menu frame is the frame for which we are
updating the menu."
    (let ((menu-frame (or menu-updating-frame (selected-frame))))
-     (not (window-minibuffer-p (frame-selected-window menu-frame)))))
+     (and (frame-live-p menu-frame)
+        (not (window-minibuffer-p
+              (frame-selected-window menu-frame))))))
  
  (defun kill-this-buffer ()    ; for the menu bar
    "Kill the current buffer.
@@@ -1927,19 -1919,6 +1929,19 @@@ Buffers menu is regenerated.
    "Function to select the buffer chosen from the `Buffers' menu-bar menu.
  It must accept a buffer as its only required argument.")
  
 +(defun menu-bar-buffer-vector (alist)
 +  ;; turn ((name . buffer) ...) into a menu
 +  (let ((buffers-vec (make-vector (length alist) nil))
 +        (i (length alist)))
 +    (dolist (pair alist)
 +      (setq i (1- i))
 +      (aset buffers-vec i
 +            (cons (car pair)
 +                  `(lambda ()
 +                     (interactive)
 +                     (funcall menu-bar-select-buffer-function ,(cdr pair))))))
 +    buffers-vec))
 +
  (defun menu-bar-update-buffers (&optional force)
    ;; If user discards the Buffers item, play along.
    (and (lookup-key (current-global-map) [menu-bar buffer])
                                      name)
                                      ))
                               alist))))
 -               ;; Now make the actual list of items.
 -                 (let ((buffers-vec (make-vector (length alist) nil))
 -                       (i (length alist)))
 -                   (dolist (pair alist)
 -                     (setq i (1- i))
 -                     (aset buffers-vec i
 -                         (nconc (list (car pair)
 -                                      (cons nil nil))
 -                                `(lambda ()
 -                                     (interactive)
 -                                     (funcall menu-bar-select-buffer-function ,(cdr pair))))))
 -                   (list buffers-vec))))
 +               (list (menu-bar-buffer-vector alist))))
  
         ;; Make a Frames menu if we have more than one frame.
         (when (cdr frames)
                    (i 0))
               (dolist (frame frames)
                 (aset frames-vec i
 -                     (nconc
 -                      (list
 -                       (frame-parameter frame 'name)
 -                       (cons nil nil))
 +                     (cons
 +                      (frame-parameter frame 'name)
                        `(lambda ()
                           (interactive) (menu-bar-select-frame ,frame))))
                 (setq i (1+ i)))
@@@ -2150,13 -2142,6 +2152,13 @@@ See `menu-bar-mode' for more informatio
  (declare-function x-menu-bar-open "term/x-win" (&optional frame))
  (declare-function w32-menu-bar-open "term/w32-win" (&optional frame))
  
 +(defun lookup-key-ignore-too-long (map key)
 +  "Call `lookup-key' and convert numeric values to nil."
 +  (let ((binding (lookup-key map key)))
 +    (if (numberp binding)       ; `too long'
 +        nil
 +      binding)))
 +
  (defun popup-menu (menu &optional position prefix from-menu-bar)
    "Popup the given menu and call the selected option.
  MENU can be a keymap, an easymenu-style menu or a list of keymaps as for
@@@ -2209,9 -2194,11 +2211,9 @@@ FROM-MENU-BAR, if non-nil, means we ar
              (let ((mouse-click (apply 'vector event))
                    binding)
                (while (and map (null binding))
 -                (setq binding (lookup-key (car map) mouse-click))
 -                (if (numberp binding) ; `too long'
 -                    (setq binding nil))
 +                (setq binding (lookup-key-ignore-too-long (car map) mouse-click))
                  (setq map (cdr map)))
 -                binding))
 +                binding))
             (t
              ;; We were given a single keymap.
              (lookup-key map (apply 'vector event)))))
@@@ -2291,37 -2278,15 +2293,37 @@@ If FRAME is nil or not given, use the s
        (let* ((x tty-menu--initial-menu-x)
             (menu (menu-bar-menu-at-x-y x 0 frame)))
        (popup-menu (or
 -                   (lookup-key global-map (vector 'menu-bar menu))
 -                   (lookup-key (current-local-map) (vector 'menu-bar menu))
 -                   (cdar (minor-mode-key-binding (vector 'menu-bar menu))))
 +                   (lookup-key-ignore-too-long
 +                      global-map (vector 'menu-bar menu))
 +                   (lookup-key-ignore-too-long
 +                      (current-local-map) (vector 'menu-bar menu))
 +                   (cdar (minor-mode-key-binding (vector 'menu-bar menu)))
 +                     (mouse-menu-bar-map))
                    (posn-at-x-y x 0 nil t) nil t)))
       (t (with-selected-frame (or frame (selected-frame))
            (tmm-menubar))))))
  
  (global-set-key [f10] 'menu-bar-open)
  
 +(defun buffer-menu-open ()
 +  "Start key navigation of the buffer menu.
 +This is the keyboard interface to \\[mouse-buffer-menu]."
 +  (interactive)
 +  (popup-menu (mouse-buffer-menu-keymap)
 +              (posn-at-x-y 0 0 nil t)))
 +
 +(global-set-key [C-f10] 'buffer-menu-open)
 +
 +(defun mouse-buffer-menu-keymap ()
 +  (let* ((menu (mouse-buffer-menu-map))
 +         (km (make-sparse-keymap (pop menu))))
 +    (dolist (item (nreverse menu))
 +      (let* ((name (pop item)))
 +        (define-key km (vector (intern name))
 +          (list name 'keymap name
 +                (menu-bar-buffer-vector item)))))
 +    km))
 +
  (defvar tty-menu-navigation-map
    (let ((map (make-sparse-keymap)))
      ;; The next line is disabled because it breaks interpretation of
index 328e0f79a1c7907759111456aa194a010b332883,b8051b274d2a68c079f8eda4de5f964d6398edc3..823d795b6de8af248e2792f2b3ebd1cd2ed61e7a
  (cc-require-when-compile 'cc-langs)
  (cc-require 'cc-vars)
  
 +(eval-when-compile (require 'cl))
 +
  \f
  ;; Make declarations for all the `c-lang-defvar' variables in cc-langs.
  
  (defmacro c-declare-lang-variables ()
    `(progn
 -     ,@(apply 'nconc
 -            (mapcar (lambda (init)
 -                      `(,(if (elt init 2)
 -                             `(defvar ,(car init) nil ,(elt init 2))
 -                           `(defvar ,(car init) nil))
 -                        (make-variable-buffer-local ',(car init))))
 -                    (cdr c-lang-variable-inits)))))
 +     ,@(mapcan (lambda (init)
 +               `(,(if (elt init 2)
 +                      `(defvar ,(car init) nil ,(elt init 2))
 +                    `(defvar ,(car init) nil))
 +                 (make-variable-buffer-local ',(car init))))
 +             (cdr c-lang-variable-inits))))
  (c-declare-lang-variables)
  
  \f
@@@ -534,7 -533,7 +534,7 @@@ comment at the start of cc-engine.el fo
      (while (progn
             (when (eq (get-text-property (point) 'c-type) value)
               (c-clear-char-property (point) 'c-type))
 -           (goto-char (next-single-property-change (point) 'c-type nil to))
 +           (goto-char (c-next-single-property-change (point) 'c-type nil to))
             (< (point) to)))))
  
  \f
@@@ -846,6 -845,7 +846,6 @@@ comment at the start of cc-engine.el fo
            ;; Record this as the first token if not starting inside it.
            (setq tok start))
  
 -
        ;; The following while loop goes back one sexp (balanced parens,
        ;; etc. with contents, or symbol or suchlike) each iteration.  This
        ;; movement is accomplished with a call to c-backward-sexp approx 170
                         ;; Just gone back over a brace block?
                         ((and
                           (eq (char-after) ?{)
 -                         (not (c-looking-at-inexpr-block lim nil t)))
 +                         (not (c-looking-at-inexpr-block lim nil t))
 +                         (save-excursion
 +                           (c-backward-token-2 1 t nil)
 +                           (not (looking-at "=\\([^=]\\|$\\)"))))
                          (save-excursion
                            (c-forward-sexp) (point)))
                         ;; Just gone back over some paren block?
@@@ -1723,7 -1720,7 +1723,7 @@@ comment at the start of cc-engine.el fo
          ;; the cases when the marked rung is complete.
          ;; (`next-single-property-change' is certain to move at least one
          ;; step forward.)
 -        (setq rung-pos (1- (next-single-property-change
 +        (setq rung-pos (1- (c-next-single-property-change
                              rung-is-marked 'c-is-sws nil rung-end-pos)))
        ;; Got no marked rung here.  Since the simple ws might have started
        ;; inside a line comment or cpp directive we must set `rung-pos' as
  
                  ;; The following search is the main reason that `c-in-sws'
                  ;; and `c-is-sws' aren't combined to one property.
 -                (goto-char (next-single-property-change
 +                (goto-char (c-next-single-property-change
                              (point) 'c-in-sws nil (point-max)))
                  (unless (get-text-property (point) 'c-is-sws)
                    ;; If the `c-in-sws' region extended past the last
          ;; possible since we can't be in the ending ws of a line comment or
          ;; cpp directive now.
          (if (setq rung-is-marked next-rung-is-marked)
 -            (setq rung-pos (1- (next-single-property-change
 +            (setq rung-pos (1- (c-next-single-property-change
                                  rung-is-marked 'c-is-sws nil rung-end-pos)))
            (setq rung-pos next-rung-pos))
          (setq safe-start t)))
                  (unless (get-text-property (point) 'c-is-sws)
                    ;; If the `c-in-sws' region extended past the first
                    ;; `c-is-sws' char we have to go forward a bit.
 -                  (goto-char (next-single-property-change
 +                  (goto-char (c-next-single-property-change
                                (point) 'c-is-sws)))
  
                  (c-debug-sws-msg
  ;; the middle of the desert, as long as it is not within a brace pair
  ;; recorded in `c-state-cache' or a paren/bracket pair.
  
 -
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; We maintain a simple cache of positions which aren't in a literal, so as to
  ;; speed up testing for non-literality.
          (while
              ;; Add an element to `c-state-nonlit-pos-cache' each iteration.
              (and
-              (<= (setq npos (+ pos c-state-nonlit-pos-interval)) here)
+              (setq npos
+                    (when (<= (+ pos c-state-nonlit-pos-interval) here)
+                      (+ pos c-state-nonlit-pos-interval)))
  
               ;; Test for being in a literal.  If so, go to after it.
               (progn
          ;; Add one extra element above HERE so as to to avoid the previous
          ;; expensive calculation when the next call is close to the current
          ;; one.  This is especially useful when inside a large macro.
-         (setq c-state-nonlit-pos-cache (cons npos c-state-nonlit-pos-cache)))
+         (when npos
+           (setq c-state-nonlit-pos-cache
+                 (cons npos c-state-nonlit-pos-cache))))
  
        (if (> pos c-state-nonlit-pos-cache-limit)
            (setq c-state-nonlit-pos-cache-limit pos))
        (setq pos here+)
        (c-safe
          (while
 -            (setq ren+1 (scan-lists pos 1 1)) ; might signal
 +            (setq ren+1 (c-sc-scan-lists pos 1 1)) ; might signal
            (setq lonely-rens (cons ren+1 lonely-rens)
                  pos ren+1)))))
  
        (c-safe
        (while
            (and lonely-rens            ; actual values aren't used.
 -               (setq pa (scan-lists pos -1 1)))
 +               (setq pa (c-sc-scan-lists pos -1 1)))
          (setq pos pa)
          (setq lonely-rens (cdr lonely-rens)))))
      pos))
              (progn
                (c-safe
                  (while
 -                    (and (setq ce (scan-lists bra -1 -1)) ; back past )/]/}; might signal
 -                         (setq bra (scan-lists ce -1 1)) ; back past (/[/{; might signal
 +                    (and (setq ce (c-sc-scan-lists bra -1 -1)) ; back past )/]/}; might signal
 +                         (setq bra (c-sc-scan-lists ce -1 1)) ; back past (/[/{; might signal
                           (or (> bra here) ;(> ce here)
                               (and
                                (< ce here)
                     (not (c-beginning-of-macro))))
          (setq c-state-cache
                (cons (cons (1- bra+1)
 -                          (scan-lists bra+1 1 1))
 +                          (c-sc-scan-lists bra+1 1 1))
                      (if (consp (car c-state-cache))
                          (cdr c-state-cache)
                        c-state-cache)))
        paren+1               ; Pos after some opening or closing paren.
        paren+1s              ; A list of `paren+1's; used to determine a
                              ; good-pos.
 -      bra+1 ce+1            ; just after L/R bra-ces.
 +      bra+1                 ; just after L bra-ce.
        bra+1s                ; list of OLD values of bra+1.
        mstart)               ; start of a macro.
  
              ;; are no more b/b/p's to scan.
              (c-safe
                (while t
 -                (setq pa+1 (scan-lists ren+1 1 -1) ; Into (/{/[; might signal
 +                (setq pa+1 (c-sc-scan-lists ren+1 1 -1) ; Into (/{/[; might signal
                        paren+1s (cons pa+1 paren+1s))
 -                (setq ren+1 (scan-lists pa+1 1 1)) ; Out of )/}/]; might signal
 +                (setq ren+1 (c-sc-scan-lists pa+1 1 1)) ; Out of )/}/]; might signal
                  (if (and (eq (char-before pa+1) ?{)) ; Check for a macro later.
                      (setq bra+1 pa+1))
                  (setcar paren+1s ren+1)))
                ;; finished - we just need to check for having found an
                ;; unmatched )/}/], which we ignore.  Such a )/}/] can't be in a
                ;; macro, due the action of `c-neutralize-syntax-in-CPP'.
 -              (c-safe (setq ren+1 (scan-lists ren+1 1 1)))))) ; acts as loop control.
 +              (c-safe (setq ren+1 (c-sc-scan-lists ren+1 1 1)))))) ; acts as loop control.
  
        ;; Record the final, innermost, brace-pair if there is one.
        (c-state-push-any-brace-pair bra+1 macro-start-or-here)
        ;; The next loop jumps forward out of a nested level of parens each
        ;; time round; the corresponding elements in `c-state-cache' are
        ;; removed.  `pos' is just after the brace-pair or the open paren at
 -      ;; (car c-state-cache).  There can be no open parens/braces/brackets
 +      ;; (car c-state-cache).  There can be no open parens/braces/brackets
        ;; between `start-point'/`start-point-actual-macro-start' and HERE,
        ;; due to the interface spec to this function.
        (setq pos (if (and start-point-actual-macro-end
  
          ;; Scan!
          (setq pps-state
 -              (parse-partial-sexp
 +              (c-sc-parse-partial-sexp
                 (point) (if (< (point) pps-point) pps-point here)
                 target-depth
                 nil pps-state))
             )))
  
        (if (< (point) pps-point)
 -          (setq pps-state (parse-partial-sexp (point) pps-point
 -                                              nil nil ; TARGETDEPTH, STOPBEFORE
 -                                              pps-state)))
 +          (setq pps-state (c-sc-parse-partial-sexp
 +                           (point) pps-point
 +                           nil nil ; TARGETDEPTH, STOPBEFORE
 +                           pps-state)))
  
        ;; If the last paren pair we moved out of was actually a brace pair,
        ;; insert it into `c-state-cache'.
        (setq dropped-cons (consp (car c-state-cache)))
        (setq c-state-cache (cdr c-state-cache))
        (setq pos pa))
-     ;; At this stage, (> pos here);
+     ;; At this stage, (>= pos here);
      ;; (< (c-state-cache-top-lparen) here)  (or is nil).
  
      (cond
        (save-restriction
          (narrow-to-region here-bol (point-max))
          (setq pos here-lit-start)
 -        (c-safe (while (setq pa (scan-lists pos -1 1))
 +        (c-safe (while (setq pa (c-sc-scan-lists pos -1 1))
                    (setq pos pa))))    ; might signal
        nil))                           ; for the cond
  
 -     ((setq ren (c-safe-scan-lists pos -1 -1 too-far-back))
 -       ;; CASE 3: After a }/)/] before `here''s BOL.
 +     ((save-restriction
 +        (narrow-to-region too-far-back (point-max))
 +        (setq ren (c-safe (c-sc-scan-lists pos -1 -1))))
 +
 +      ;; CASE 3: After a }/)/] before `here''s BOL.
        (list (1+ ren) (and dropped-cons pos) nil)) ; Return value
  
       (t
        (setq res (c-remove-stale-state-cache start-point here here-bopl))
        (setq cache-pos (car res)
            scan-backward-pos (cadr res)
 -          cons-separated (car (cddr res)) 
 +          cons-separated (car (cddr res))
            bopl-state (cadr (cddr res))) ; will be nil if (< here-bopl
                                        ; start-point)
        (if (and scan-backward-pos
    ;; of all parens in preprocessor constructs, except for any such construct
    ;; containing point.  We can then call `c-invalidate-state-cache-1' without
    ;; worrying further about macros and template delimiters.
 -  (c-with-<->-as-parens-suppressed
 -   (if (and c-state-old-cpp-beg
 -          (< c-state-old-cpp-beg here))
 -       (c-with-all-but-one-cpps-commented-out
 -      c-state-old-cpp-beg
 -      (min c-state-old-cpp-end here)
 -      (c-invalidate-state-cache-1 here))
 -     (c-with-cpps-commented-out
 -      (c-invalidate-state-cache-1 here)))))
 +  (if (eval-when-compile (memq 'category-properties c-emacs-features))
 +      ;; Emacs
 +      (c-with-<->-as-parens-suppressed
 +       (if (and c-state-old-cpp-beg
 +              (< c-state-old-cpp-beg here))
 +         (c-with-all-but-one-cpps-commented-out
 +          c-state-old-cpp-beg
 +          (min c-state-old-cpp-end here)
 +          (c-invalidate-state-cache-1 here))
 +       (c-with-cpps-commented-out
 +        (c-invalidate-state-cache-1 here))))
 +    ;; XEmacs
 +    (c-invalidate-state-cache-1 here)))
  
  (defmacro c-state-maybe-marker (place marker)
    ;; If PLACE is non-nil, return a marker marking it, otherwise nil.
      ;; FIXME!!! Put in a `condition-case' here to protect the integrity of the
      ;; subsystem.
      (prog1
 -      (c-with-<->-as-parens-suppressed
 -       (if (and here-cpp-beg (> here-cpp-end here-cpp-beg))
 -           (c-with-all-but-one-cpps-commented-out
 -            here-cpp-beg here-cpp-end
 -            (c-parse-state-1))
 -         (c-with-cpps-commented-out
 -          (c-parse-state-1))))
 +      (if (eval-when-compile (memq 'category-properties c-emacs-features))
 +          ;; Emacs
 +          (c-with-<->-as-parens-suppressed
 +           (if (and here-cpp-beg (> here-cpp-end here-cpp-beg))
 +               (c-with-all-but-one-cpps-commented-out
 +                here-cpp-beg here-cpp-end
 +                (c-parse-state-1))
 +             (c-with-cpps-commented-out
 +              (c-parse-state-1))))
 +        ;; XEmacs
 +        (c-parse-state-1))
        (setq c-state-old-cpp-beg
            (c-state-maybe-marker here-cpp-beg c-state-old-cpp-beg-marker)
            c-state-old-cpp-end
  
  (defvar c-parse-state-point nil)
  (defvar c-parse-state-state nil)
 +(make-variable-buffer-local 'c-parse-state-state)
  (defun c-record-parse-state-state ()
    (setq c-parse-state-point (point))
    (setq c-parse-state-state
         (lambda (arg)
           (let ((val (symbol-value arg)))
             (cons arg
 -                 (if (consp val)
 -                     (copy-tree val)
 -                   val))))
 +                 (cond ((consp val) (copy-tree val))
 +                       ((markerp val) (copy-marker val))
 +                       (t val)))))
         '(c-state-cache
           c-state-cache-good-pos
           c-state-nonlit-pos-cache
     (concat "(setq "
      (mapconcat
       (lambda (arg)
 -       (format "%s %s%s" (car arg) (if (atom (cdr arg)) "" "'") (cdr arg)))
 +       (format "%s %s%s" (car arg)
 +             (if (atom (cdr arg)) "" "'")
 +             (if (markerp (cdr arg))
 +                 (format "(copy-marker %s)" (marker-position (cdr arg)))
 +               (cdr arg))))
       c-parse-state-state "  ")
      ")")))
  
@@@ -4200,7 -4185,7 +4204,7 @@@ comment at the start of cc-engine.el fo
    ;; Use `parse-partial-sexp' from a safe position down to the point to check
    ;; if it's outside comments and strings.
    (save-excursion
 -    (let ((pos (point)) safe-pos state pps-end-pos)
 +    (let ((pos (point)) safe-pos state)
        ;; Pick a safe position as close to the point as possible.
        ;;
        ;; FIXME: Consult `syntax-ppss' here if our cache doesn't give a good
@@@ -4282,18 -4267,16 +4286,18 @@@ comment at the start of cc-engine.el fo
          ;; loops when it hasn't succeeded.
          (while
              (and
 -             (< (skip-chars-backward skip-chars limit) 0)
 +             (let ((pos (point)))
 +               (while (and
 +                       (< (skip-chars-backward skip-chars limit) 0)
 +                       ;; Don't stop inside a literal.
 +                       (when (setq lit-beg (c-ssb-lit-begin))
 +                         (goto-char lit-beg)
 +                         t)))
 +               (< (point) pos))
  
               (let ((pos (point)) state-2 pps-end-pos)
  
                 (cond
 -                ;; Don't stop inside a literal
 -                ((setq lit-beg (c-ssb-lit-begin))
 -                 (goto-char lit-beg)
 -                 t)
 -
                  ((and paren-level
                        (save-excursion
                          (setq state-2 (parse-partial-sexp
@@@ -4799,7 -4782,7 +4803,7 @@@ comment at the start of cc-engine.el fo
       (unless cfd-prop-match
         (save-excursion
         (while (progn
 -                (goto-char (next-single-property-change
 +                (goto-char (c-next-single-property-change
                              (point) 'c-type nil cfd-limit))
                  (and (< (point) cfd-limit)
                       (not (eq (c-get-char-property (1- (point)) 'c-type)
               ;; Pseudo match inside a comment or string literal.  Skip out
               ;; of comments and string literals.
               (while (progn
 -                      (goto-char (next-single-property-change
 +                      (goto-char (c-next-single-property-change
                                    (point) 'face nil cfd-limit))
                        (and (< (point) cfd-limit)
                             (c-got-face-at (point) c-literal-faces))))
    ;; it should return non-nil to ensure that the next search will find them.
    ;;
    ;; Such a spot is:
 -  ;; o  The first token after bob.
 -  ;; o  The first token after the end of submatch 1 in
 -  ;;    `c-decl-prefix-or-start-re' when that submatch matches.
 -  ;; o  The start of each `c-decl-prefix-or-start-re' match when
 -  ;;    submatch 1 doesn't match.
 -  ;; o  The first token after the end of each occurrence of the
 -  ;;    `c-type' text property with the value `c-decl-end', provided
 -  ;;    `c-type-decl-end-used' is set.
 +  ;; o        The first token after bob.
 +  ;; o        The first token after the end of submatch 1 in
 +  ;;  `c-decl-prefix-or-start-re' when that submatch matches.  This
 +  ;;  submatch is typically a (L or R) brace or paren, a ;, or a ,.
 +  ;; o        The start of each `c-decl-prefix-or-start-re' match when
 +  ;;  submatch 1 doesn't match.  This is, for example, the keyword
 +  ;;  "class" in Pike.
 +  ;; o        The start of a previously recognized declaration; "recognized"
 +  ;;  means that the last char of the previous token has a `c-type'
 +  ;;  text property with the value `c-decl-end'; this only holds
 +  ;;  when `c-type-decl-end-used' is set.
    ;;
    ;; Only a spot that match CFD-DECL-RE and whose face is in the
    ;; CFD-FACE-CHECKLIST list causes CFD-FUN to be called.  The face
    ;;
    ;; This function might do hidden buffer changes.
  
 -  (let ((cfd-start-pos (point))
 +  (let ((cfd-start-pos (point))               ; never changed
        (cfd-buffer-end (point-max))
        ;; The end of the token preceding the decl spot last found
        ;; with `c-decl-prefix-or-start-re'.  `cfd-limit' if there's
        ;; statement or declaration, which is earlier than the first
        ;; returned match.
  
 +      ;; This `cond' moves back over any literals or macros.  It has special
 +      ;; handling for when the region being searched is entirely within a
 +      ;; macro.  It sets `cfd-continue-pos' (unless we've reached
 +      ;; `cfd-limit').
        (cond
         ;; First we need to move to a syntactically relevant position.
         ;; Begin by backing out of comment or string literals.
 +       ;;
 +       ;; This arm of the cond actually triggers if we're in a literal,
 +       ;; and cfd-limit is at most at BONL.
         ((and
 +       ;; This arm of the `and' moves backwards out of a literal when
 +       ;; the face at point is a literal face.  In this case, its value
 +       ;; is always non-nil.
         (when (c-got-face-at (point) c-literal-faces)
           ;; Try to use the faces to back up to the start of the
           ;; literal.  FIXME: What if the point is on a declaration
             (let ((range (c-literal-limits)))
               (if range (goto-char (car range)))))
  
 -         (setq start-in-literal (point)))
 +         (setq start-in-literal (point))) ; end of `and' arm.
  
         ;; The start is in a literal.  If the limit is in the same
         ;; one we don't have to find a syntactic position etc.  We
         (save-excursion
           (goto-char cfd-start-pos)
           (while (progn
 -                  (goto-char (next-single-property-change
 +                  (goto-char (c-next-single-property-change
                                (point) 'face nil cfd-limit))
                    (and (< (point) cfd-limit)
                         (c-got-face-at (point) c-literal-faces))))
 -         (= (point) cfd-limit)))
 +         (= (point) cfd-limit)))      ; end of `cond' arm condition
  
        ;; Completely inside a literal.  Set up variables to trig the
        ;; (< cfd-continue-pos cfd-start-pos) case below and it'll
        ;; find a suitable start position.
 -      (setq cfd-continue-pos start-in-literal))
 +      (setq cfd-continue-pos start-in-literal)) ; end of `cond' arm
  
         ;; Check if the region might be completely inside a macro, to
         ;; optimize that like the completely-inside-literal above.
         ((save-excursion
          (and (= (forward-line 1) 0)
 -             (bolp)                   ; forward-line has funny behavior at eob.
 +             (bolp)                 ; forward-line has funny behavior at eob.
               (>= (point) cfd-limit)
               (progn (backward-char)
                      (eq (char-before) ?\\))))
        (setq cfd-continue-pos (1- cfd-start-pos)
              start-in-macro t))
  
 +       ;; The default arm of the `cond' moves back over any macro we're in
 +       ;; and over any syntactic WS.  It sets `c-find-decl-syntactic-pos'.
         (t
        ;; Back out of any macro so we don't miss any declaration
        ;; that could follow after it.
                  (< (point) cfd-limit))
            ;; Do an initial search now.  In the bob case above it's
            ;; only done to search for a `c-decl-end' spot.
 -          (c-find-decl-prefix-search))
 +          (c-find-decl-prefix-search)) ; sets cfd-continue-pos
  
          (setq c-find-decl-match-pos (and (< cfd-match-pos cfd-start-pos)
 -                                         cfd-match-pos)))))
 +                                         cfd-match-pos))))) ; end of `cond'
  
        ;; Advance `cfd-continue-pos' if it's before the start position.
        ;; The closest continue position that might have effect at or
          ;; `cfd-match-pos' so we can continue at the start position.
          ;; (Note that we don't get here if the first match is below
          ;; it.)
 -        (goto-char cfd-start-pos)))
 +        (goto-char cfd-start-pos)))   ; end of `cond'
  
        ;; Delete found matches if they are before our new continue
        ;; position, so that `c-find-decl-prefix-search' won't back up
        (when (and cfd-re-match (< cfd-re-match cfd-continue-pos))
          (setq cfd-re-match nil))
        (when (and cfd-prop-match (< cfd-prop-match cfd-continue-pos))
 -        (setq cfd-prop-match nil)))
 +        (setq cfd-prop-match nil)))   ; end of `when'
  
        (if syntactic-pos
          ;; This is the normal case and we got a proper syntactic
        ;; good start position for the search, so do it.
        (c-find-decl-prefix-search)))
  
 -    ;; Now loop.  Round what?  (ACM, 2006/7/5).  We already got the first match.
 -
 +    ;; Now loop, one decl spot per iteration.  We already have the first
 +    ;; match in `cfd-match-pos'.
      (while (progn
 +           ;; Go forward over "false matches", one per iteration.
             (while (and
                     (< cfd-match-pos cfd-limit)
  
                          (goto-char cfd-continue-pos)
                          t)))
  
 -                   (< (point) cfd-limit))
 -             (c-find-decl-prefix-search))
 +                   (< (point) cfd-limit)) ; end of "false matches" condition
 +             (c-find-decl-prefix-search)) ; end of "false matches" loop
  
 -           (< (point) cfd-limit))
 +           (< (point) cfd-limit))   ; end of condition for "decl-spot" while
  
        (when (and
             (>= (point) cfd-start-pos)
                   ;; The matched token was the last thing in the macro,
                   ;; so the whole match is bogus.
                   (setq cfd-macro-end 0)
 -                 nil))))
 +                 nil))))              ; end of when condition
  
        (c-debug-put-decl-spot-faces cfd-match-pos (point))
        (if (funcall cfd-fun cfd-match-pos (/= cfd-macro-end 0))
        (c-go-list-forward))
        (when (equal (c-get-char-property (1- (point)) 'syntax-table)
                   c->-as-paren-syntax) ; should always be true.
 -      (c-clear-char-property (1- (point)) 'category))
 -      (c-clear-char-property pos 'category))))
 +      (c-unmark-<->-as-paren (1- (point))))
 +      (c-unmark-<->-as-paren pos))))
  
  (defun c-clear->-pair-props (&optional pos)
    ;; POS (default point) is at a > character.  If it is marked with
        (c-go-up-list-backward))
        (when (equal (c-get-char-property (point) 'syntax-table)
                        c-<-as-paren-syntax) ; should always be true.
 -      (c-clear-char-property (point) 'category))
 -      (c-clear-char-property pos 'category))))
 +      (c-unmark-<->-as-paren (point)))
 +      (c-unmark-<->-as-paren pos))))
  
  (defun c-clear-<>-pair-props (&optional pos)
    ;; POS (default point) is at a < or > character.  If it has an
        (c-syntactic-skip-backward "^;{}" (c-determine-limit 512))
        (setq new-beg (point))
  
 -      ;; Remove the syntax-table properties from each pertinent <...> pair.
 -      ;; Firsly, the ones with the < before beg and > after beg.
 -      (while (c-search-forward-char-property 'category 'c-<-as-paren-syntax beg)
 +      ;; Remove the syntax-table/category properties from each pertinent <...>
 +      ;; pair.  Firsly, the ones with the < before beg and > after beg.
 +      (while
 +        (c-search-forward-char-property 'syntax-table c-<-as-paren-syntax beg)
        (if (c-clear-<-pair-props-if-match-after beg (1- (point)))
            (setq need-new-beg t)))
  
  
        ;; Remove syntax-table properties from the remaining pertinent <...>
        ;; pairs, those with a > after end and < before end.
 -      (while (c-search-backward-char-property 'category 'c->-as-paren-syntax end)
 +      (while (c-search-backward-char-property 'syntax-table c->-as-paren-syntax end)
        (if (c-clear->-pair-props-if-match-before end)
            (setq need-new-end t)))
  
        (when need-new-end
        (and (> new-end c-new-END) (setq c-new-END new-end))))))
  
 -
 -
  (defun c-after-change-check-<>-operators (beg end)
    ;; This is called from `after-change-functions' when
    ;; c-recognize-<>-arglists' is set.  It ensures that no "<" or ">"
    ;; Recursive part of `c-forward-<>-arglist'.
    ;;
    ;; This function might do hidden buffer changes.
 -
    (let ((start (point)) res pos tmp
        ;; Cover this so that any recorded found type ranges are
        ;; automatically lost if it turns out to not be an angle
        (while (and
                (progn
                  (c-forward-syntactic-ws)
 -                (let ((orig-record-found-types c-record-found-types))
 -                  (when (or (and c-record-type-identifiers all-types)
 -                            (c-major-mode-is 'java-mode))
 -                    ;; All encountered identifiers are types, so set the
 -                    ;; promote flag and parse the type.
 -                    (progn
 -                      (c-forward-syntactic-ws)
 -                      (if (looking-at "\\?")
 -                          (forward-char)
 -                        (when (looking-at c-identifier-start)
 -                          (let ((c-promote-possible-types t)
 -                                (c-record-found-types t))
 -                            (c-forward-type))))
 -
 -                      (c-forward-syntactic-ws)
 -
 -                      (when (or (looking-at "extends")
 -                                (looking-at "super"))
 -                        (forward-word)
 -                        (c-forward-syntactic-ws)
 +                (when (or (and c-record-type-identifiers all-types)
 +                          (c-major-mode-is 'java-mode))
 +                  ;; All encountered identifiers are types, so set the
 +                  ;; promote flag and parse the type.
 +                  (progn
 +                    (c-forward-syntactic-ws)
 +                    (if (looking-at "\\?")
 +                        (forward-char)
 +                      (when (looking-at c-identifier-start)
                          (let ((c-promote-possible-types t)
                                (c-record-found-types t))
 -                          (c-forward-type)
 -                          (c-forward-syntactic-ws))))))
 +                          (c-forward-type))))
 +
 +                    (c-forward-syntactic-ws)
 +
 +                    (when (or (looking-at "extends")
 +                              (looking-at "super"))
 +                      (forward-word)
 +                      (c-forward-syntactic-ws)
 +                      (let ((c-promote-possible-types t)
 +                            (c-record-found-types t))
 +                        (c-forward-type)
 +                        (c-forward-syntactic-ws)))))
  
 -                (setq pos (point))    ; e.g. first token inside the '<'
 +                (setq pos (point))    ; e.g. first token inside the '<'
  
                  ;; Note: These regexps exploit the match order in \| so
                  ;; that "<>" is matched by "<" rather than "[^>:-]>".
                  ;; Either an operator starting with '>' or the end of
                  ;; the angle bracket arglist.
  
 -                (if (looking-at c->-op-cont-regexp)
 +                (if (looking-at c->-op-without->-cont-regexp)
                      (progn
                        (goto-char (match-end 0))
                        t)              ; Continue the loop.
                                       (c-keyword-member
                                        (c-keyword-sym (match-string 1))
                                        'c-<>-type-kwds)))))))
 -
                      ;; It was an angle bracket arglist.
                      (setq c-record-found-types subres)
  
                       (or (and (eq (char-before) ?&)
                                (not (eq (char-after) ?&)))
                           (eq (char-before) ?,)))
 -                ;; Just another argument.      Record the position.  The
 +                ;; Just another argument.  Record the position.  The
                  ;; type check stuff that made us stop at it is at
                  ;; the top of the loop.
                  (setq arg-start-pos (cons (point) arg-start-pos)))
    ;;     `*-font-lock-extra-types');
    ;;   o - 'prefix if it's a known prefix of a type;
    ;;   o - 'found if it's a type that matches one in `c-found-types';
 -  ;;   o - 'maybe if it's an identifier that might be a type; or
 +  ;;   o - 'maybe if it's an identifier that might be a type;
 +  ;;   o - 'decltype if it's a decltype(variable) declaration; - or
    ;;   o -  nil if it can't be a type (the point isn't moved then).
    ;;
    ;; The point is assumed to be at the beginning of a token.
        (setq res 'prefix)))
  
      (cond
 +     ((looking-at c-typeof-key) ; e.g. C++'s "decltype".
 +      (goto-char (match-end 1))
 +      (c-forward-syntactic-ws)
 +      (setq res (and (eq (char-after) ?\()
 +                   (c-safe (c-forward-sexp))
 +                   'decltype))
 +      (if res
 +        (c-forward-syntactic-ws)
 +      (goto-char start)))
 +
       ((looking-at c-type-prefix-key) ; e.g. "struct", "class", but NOT
                                     ; "typedef".
        (goto-char (match-end 1))
             (setq res nil)))))
  
      (when res
 -      ;; Skip trailing type modifiers.        If any are found we know it's
 +      ;; Skip trailing type modifiers.  If any are found we know it's
        ;; a type.
        (when c-opt-type-modifier-key
        (while (looking-at c-opt-type-modifier-key) ; e.g. "const", "volatile"
          (goto-char (match-end 1))
          (c-forward-syntactic-ws)
          (setq res t)))
 +
        ;; Step over any type suffix operator.  Do not let the existence
        ;; of these alter the classification of the found type, since
        ;; these operators typically are allowed in normal expressions
        ;; too.
 -      (when c-opt-type-suffix-key
 +      (when c-opt-type-suffix-key     ; e.g. "..."
        (while (looking-at c-opt-type-suffix-key)
          (goto-char (match-end 1))
          (c-forward-syntactic-ws)))
         (progn (c-forward-syntactic-ws) t)
         (if (looking-at "(")
           (c-go-list-forward)
 -         t)))
 +       t)))
  
  (defmacro c-pull-open-brace (ps)
    ;; Pull the next open brace from PS (which has the form of paren-state),
       (prog1 (car ,ps)
         (setq ,ps (cdr ,ps)))))
  
 +(defun c-back-over-member-initializer-braces ()
 +  ;; Point is just after a closing brace/parenthesis.  Try to parse this as a
 +  ;; C++ member initializer list, going back to just after the introducing ":"
 +  ;; and returning t.  Otherwise return nil, leaving point unchanged.
 +  (let ((here (point)) res)
 +    (setq res
 +      (catch 'done
 +        (when (not (c-go-list-backward))
 +          (throw 'done nil))
 +        (c-backward-syntactic-ws)
 +        (when (not (c-simple-skip-symbol-backward))
 +          (throw 'done nil))
 +        (c-backward-syntactic-ws)
 +
 +        (while (eq (char-before) ?,)
 +          (backward-char)
 +          (c-backward-syntactic-ws)
 +          (when (not (memq (char-before) '(?\) ?})))
 +            (throw 'done nil))
 +          (when (not (c-go-list-backward))
 +            (throw 'done nil))
 +          (c-backward-syntactic-ws)
 +          (when (not (c-simple-skip-symbol-backward))
 +            (throw 'done nil))
 +          (c-backward-syntactic-ws))
 +
 +        (eq (char-before) ?:)))
 +    (or res (goto-char here))
 +    res))
 +
  (defun c-back-over-member-initializers ()
    ;; Test whether we are in a C++ member initializer list, and if so, go back
    ;; to the introducing ":", returning the position of the opening paren of
    ;;     Foo::Foo (int b) : Base (b) {}
    ;; car ^                ^ point
    ;;
 +  ;;     auto foo = 5;
 +  ;;      car ^   ^ point
 +  ;;     auto cplusplus_11 (int a, char *b) -> decltype (bar):
 +  ;;      car ^                             ^ point
 +  ;;
 +  ;;
 +  ;;
    ;;   The cdr of the return value is non-nil when a
    ;;   `c-typedef-decl-kwds' specifier is found in the declaration.
    ;;   Specifically it is a dotted pair (A . B) where B is t when a
        ;; If `backup-at-type' is nil then the other variables have
        ;; undefined values.
        backup-at-type backup-type-start backup-id-start
 +      ;; This stores `kwd-sym' of the symbol before the current one.
 +      ;; This is needed to distinguish the C++11 version of "auto" from
 +      ;; the pre C++11 meaning.
 +      backup-kwd-sym
        ;; Set if we've found a specifier (apart from "typedef") that makes
        ;; the defined identifier(s) types.
        at-type-decl
        ;; Set if we've found a specifier that can start a declaration
        ;; where there's no type.
        maybe-typeless
 +      ;; Save the value of kwd-sym between loops of the "Check for a
 +      ;; type" loop.  Needed to distinguish a C++11 "auto" from a pre
 +      ;; C++11 one.
 +      prev-kwd-sym
        ;; If a specifier is found that also can be a type prefix,
        ;; these flags are set instead of those above.  If we need to
        ;; back up an identifier, they are copied to the real flag
        backup-if-not-cast
        ;; For casts, the return position.
        cast-end
 +      ;; Have we got a new-style C++11 "auto"?
 +      new-style-auto
        ;; Save `c-record-type-identifiers' and
        ;; `c-record-ref-identifiers' since ranges are recorded
        ;; speculatively and should be thrown away if it turns out
        (let* ((start (point)) kwd-sym kwd-clause-end found-type)
  
          ;; Look for a specifier keyword clause.
 -        (when (or (looking-at c-prefix-spec-kwds-re)
 +        (when (or (looking-at c-prefix-spec-kwds-re) ;FIXME!!! includes auto
                    (and (c-major-mode-is 'java-mode)
                         (looking-at "@[A-Za-z0-9]+")))
 -          (if (looking-at c-typedef-key)
 -              (setq at-typedef t))
 +          (save-match-data
 +            (if (looking-at c-typedef-key)
 +              (setq at-typedef t)))
            (setq kwd-sym (c-keyword-sym (match-string 1)))
            (save-excursion
              (c-forward-keyword-clause 1)
  
          (when (setq found-type (c-forward-type t)) ; brace-block-too
            ;; Found a known or possible type or a prefix of a known type.
 +          (when (and (c-major-mode-is 'c++-mode) ; C++11 style "auto"?
 +                     (eq prev-kwd-sym (c-keyword-sym "auto"))
 +                     (looking-at "[=(]")) ; FIXME!!! proper regexp.
 +            (setq new-style-auto t)
 +            (setq found-type nil)
 +            (goto-char start))        ; position of foo in "auto foo"
  
            (when at-type
              ;; Got two identifiers with nothing but whitespace
            (setq backup-at-type at-type
                  backup-type-start type-start
                  backup-id-start id-start
 +                backup-kwd-sym kwd-sym
                  at-type found-type
                  type-start start
                  id-start (point)
                    ;; specifier keyword and we know we're in a
                    ;; declaration.
                    (setq at-decl-or-cast t)
 +                  (setq prev-kwd-sym kwd-sym)
  
                    (goto-char kwd-clause-end))))
  
  
        (c-forward-syntactic-ws))
  
 -      (when (and (or maybe-typeless backup-maybe-typeless)
 -               (not got-identifier)
 -               (not got-prefix)
 -               at-type)
 +      (when (or (and new-style-auto
 +                   (looking-at c-auto-ops-re))
 +              (and (or maybe-typeless backup-maybe-typeless)
 +                   (not got-identifier)
 +                   (not got-prefix)
 +                   at-type))
        ;; Have found no identifier but `c-typeless-decl-kwds' has
        ;; matched so we know we're inside a declaration.  The
        ;; preceding type must be the identifier instead.
        (c-fdoc-shift-type-backward))
  
 +      ;; Prepare the "-> type;" for fontification later on.
 +      (when (and new-style-auto
 +               (looking-at c-haskell-op-re))
 +      (save-excursion
 +        (goto-char (match-end 0))
 +        (c-forward-syntactic-ws)
 +        (setq type-start (point))
 +        (setq at-type (c-forward-type))))
 +
        (setq
         at-decl-or-cast
         (catch 'at-decl-or-cast
  
         ;; CASE 1
 -      (when (> paren-depth 0)
 -        ;; Encountered something inside parens that isn't matched by
 -        ;; the `c-type-decl-*' regexps, so it's not a type decl
 -        ;; expression.  Try to skip out to the same paren depth to
 -        ;; not confuse the cast check below.
 -        (c-safe (goto-char (scan-lists (point) 1 paren-depth)))
 -        ;; If we've found a specifier keyword then it's a
 -        ;; declaration regardless.
 -        (throw 'at-decl-or-cast (eq at-decl-or-cast t)))
 -
 -      (setq at-decl-end
 -            (looking-at (cond ((eq context '<>) "[,>]")
 -                              (context "[,\)]")
 -                              (t "[,;]"))))
 -
 -      ;; Now we've collected info about various characteristics of
 -      ;; the construct we're looking at.  Below follows a decision
 -      ;; tree based on that.  It's ordered to check more certain
 -      ;; signs before less certain ones.
 -
 -      (if got-identifier
 -          (progn
 -
 -            ;; CASE 2
 -            (when (and (or at-type maybe-typeless)
 -                       (not (or got-prefix got-parens)))
 -              ;; Got another identifier directly after the type, so it's a
 -              ;; declaration.
 -              (throw 'at-decl-or-cast t))
 +       (when (> paren-depth 0)
 +         ;; Encountered something inside parens that isn't matched by
 +         ;; the `c-type-decl-*' regexps, so it's not a type decl
 +         ;; expression.  Try to skip out to the same paren depth to
 +         ;; not confuse the cast check below.
 +         (c-safe (goto-char (scan-lists (point) 1 paren-depth)))
 +         ;; If we've found a specifier keyword then it's a
 +         ;; declaration regardless.
 +         (throw 'at-decl-or-cast (eq at-decl-or-cast t)))
 +
 +       (setq at-decl-end
 +             (looking-at (cond ((eq context '<>) "[,>]")
 +                               (context "[,\)]")
 +                               (t "[,;]"))))
 +
 +       ;; Now we've collected info about various characteristics of
 +       ;; the construct we're looking at.  Below follows a decision
 +       ;; tree based on that.  It's ordered to check more certain
 +       ;; signs before less certain ones.
 +
 +       (if got-identifier
 +           (progn
  
 +             ;; CASE 2
 +             (when (and (or at-type maybe-typeless)
 +                        (not (or got-prefix got-parens)))
 +               ;; Got another identifier directly after the type, so it's a
 +               ;; declaration.
 +               (throw 'at-decl-or-cast t))
  
               (when (and got-parens
                          (not got-prefix)
                 (c-fdoc-shift-type-backward)))
  
           ;; Found no identifier.
 -        (if backup-at-type
 -            (progn
  
 +         (if backup-at-type
 +             (progn
  
                 ;; CASE 3
                 (when (= (point) start)
                     (setq backup-if-not-cast t)
                     (throw 'at-decl-or-cast t)))
  
 -              ;; CASE 4
 -              (when (and got-suffix
 -                         (not got-prefix)
 -                         (not got-parens))
 -                ;; Got a plain list of identifiers followed by some suffix.
 -                ;; If this isn't a cast then the last identifier probably is
 -                ;; the declared one and we should back up to the previous
 -                ;; type.
 -                (setq backup-if-not-cast t)
 -                (throw 'at-decl-or-cast t)))
 -
 -          ;; CASE 5
 -          (when (eq at-type t)
 -            ;; If the type is known we know that there can't be any
 -            ;; identifier somewhere else, and it's only in declarations in
 -            ;; e.g. function prototypes and in casts that the identifier may
 -            ;; be left out.
 -            (throw 'at-decl-or-cast t))
 -
 -          (when (= (point) start)
 -            ;; Only got a single identifier (parsed as a type so far).
 -            ;; CASE 6
 -            (if (and
 -                 ;; Check that the identifier isn't at the start of an
 -                 ;; expression.
 -                 at-decl-end
 -                 (cond
 -                  ((eq context 'decl)
 -                   ;; Inside an arglist that contains declarations.  If K&R
 -                   ;; style declarations and parenthesis style initializers
 -                   ;; aren't allowed then the single identifier must be a
 -                   ;; type, else we require that it's known or found
 -                   ;; (primitive types are handled above).
 -                   (or (and (not c-recognize-knr-p)
 -                            (not c-recognize-paren-inits))
 -                       (memq at-type '(known found))))
 -                  ((eq context '<>)
 -                   ;; Inside a template arglist.  Accept known and found
 -                   ;; types; other identifiers could just as well be
 -                   ;; constants in C++.
 -                   (memq at-type '(known found)))))
 -                (throw 'at-decl-or-cast t)
 -              ;; CASE 7
 -              ;; Can't be a valid declaration or cast, but if we've found a
 -              ;; specifier it can't be anything else either, so treat it as
 -              ;; an invalid/unfinished declaration or cast.
 -              (throw 'at-decl-or-cast at-decl-or-cast))))
 -
 -        (if (and got-parens
 -                 (not got-prefix)
 -                 (not context)
 -                 (not (eq at-type t))
 -                 (or backup-at-type
 -                     maybe-typeless
 -                     backup-maybe-typeless
 -                     (when c-recognize-typeless-decls
 -                       (or (not got-suffix)
 -                           (not (looking-at
 -                                 c-after-suffixed-type-maybe-decl-key))))))
 -            ;; Got an empty paren pair and a preceding type that probably
 -            ;; really is the identifier.  Shift the type backwards to make
 -            ;; the last one the identifier.  This is analogous to the
 -            ;; "backtracking" done inside the `c-type-decl-suffix-key' loop
 -            ;; above.
 -            ;;
 -            ;; Exception: In addition to the conditions in that
 -            ;; "backtracking" code, do not shift backward if we're not
 -            ;; looking at either `c-after-suffixed-type-decl-key' or "[;,]".
 -            ;; Since there's no preceding type, the shift would mean that
 -            ;; the declaration is typeless.  But if the regexp doesn't match
 -            ;; then we will simply fall through in the tests below and not
 -            ;; recognize it at all, so it's better to try it as an abstract
 -            ;; declarator instead.
 -            (c-fdoc-shift-type-backward)
 -
 -          ;; Still no identifier.
 -          ;; CASE 8
 -          (when (and got-prefix (or got-parens got-suffix))
 -            ;; Require `got-prefix' together with either `got-parens' or
 -            ;; `got-suffix' to recognize it as an abstract declarator:
 -            ;; `got-parens' only is probably an empty function call.
 -            ;; `got-suffix' only can build an ordinary expression together
 -            ;; with the preceding identifier which we've taken as a type.
 -            ;; We could actually accept on `got-prefix' only, but that can
 -            ;; easily occur temporarily while writing an expression so we
 -            ;; avoid that case anyway.  We could do a better job if we knew
 -            ;; the point when the fontification was invoked.
 -            (throw 'at-decl-or-cast t))
 -
 -          ;; CASE 9
 -          (when (and at-type
 -                     (not got-prefix)
 -                     (not got-parens)
 -                     got-suffix-after-parens
 -                     (eq (char-after got-suffix-after-parens) ?\())
 -            ;; Got a type, no declarator but a paren suffix. I.e. it's a
 -            ;; normal function call after all (or perhaps a C++ style object
 -            ;; instantiation expression).
 -            (throw 'at-decl-or-cast nil))))
 -
 -      ;; CASE 10
 -      (when at-decl-or-cast
 -        ;; By now we've located the type in the declaration that we know
 -        ;; we're in.
 -        (throw 'at-decl-or-cast t))
 -
 -      ;; CASE 11
 -      (when (and got-identifier
 -                 (not context)
 -                 (looking-at c-after-suffixed-type-decl-key)
 -                 (if (and got-parens
 +               ;; CASE 4
 +               (when (and got-suffix
                            (not got-prefix)
 -                          (not got-suffix)
 -                          (not (eq at-type t)))
 -                     ;; Shift the type backward in the case that there's a
 -                     ;; single identifier inside parens.  That can only
 -                     ;; occur in K&R style function declarations so it's
 -                     ;; more likely that it really is a function call.
 -                     ;; Therefore we only do this after
 -                     ;; `c-after-suffixed-type-decl-key' has matched.
 -                     (progn (c-fdoc-shift-type-backward) t)
 -                   got-suffix-after-parens))
 -        ;; A declaration according to `c-after-suffixed-type-decl-key'.
 -        (throw 'at-decl-or-cast t))
 -
 -      ;; CASE 12
 -      (when (and (or got-prefix (not got-parens))
 -                 (memq at-type '(t known)))
 -        ;; It's a declaration if a known type precedes it and it can't be a
 -        ;; function call.
 -        (throw 'at-decl-or-cast t))
 -
 -      ;; If we get here we can't tell if this is a type decl or a normal
 -      ;; expression by looking at it alone.  (That's under the assumption
 -      ;; that normal expressions always can look like type decl expressions,
 -      ;; which isn't really true but the cases where it doesn't hold are so
 -      ;; uncommon (e.g. some placements of "const" in C++) it's not worth
 -      ;; the effort to look for them.)
 +                          (not got-parens))
 +                 ;; Got a plain list of identifiers followed by some suffix.
 +                 ;; If this isn't a cast then the last identifier probably is
 +                 ;; the declared one and we should back up to the previous
 +                 ;; type.
 +                 (setq backup-if-not-cast t)
 +                 (throw 'at-decl-or-cast t)))
 +
 +           ;; CASE 5
 +           (when (eq at-type t)
 +             ;; If the type is known we know that there can't be any
 +             ;; identifier somewhere else, and it's only in declarations in
 +             ;; e.g. function prototypes and in casts that the identifier may
 +             ;; be left out.
 +             (throw 'at-decl-or-cast t))
 +
 +           (when (= (point) start)
 +             ;; Only got a single identifier (parsed as a type so far).
 +             ;; CASE 6
 +             (if (and
 +                  ;; Check that the identifier isn't at the start of an
 +                  ;; expression.
 +                  at-decl-end
 +                  (cond
 +                   ((eq context 'decl)
 +                    ;; Inside an arglist that contains declarations.  If K&R
 +                    ;; style declarations and parenthesis style initializers
 +                    ;; aren't allowed then the single identifier must be a
 +                    ;; type, else we require that it's known or found
 +                    ;; (primitive types are handled above).
 +                    (or (and (not c-recognize-knr-p)
 +                             (not c-recognize-paren-inits))
 +                        (memq at-type '(known found))))
 +                   ((eq context '<>)
 +                    ;; Inside a template arglist.  Accept known and found
 +                    ;; types; other identifiers could just as well be
 +                    ;; constants in C++.
 +                    (memq at-type '(known found)))))
 +                 (throw 'at-decl-or-cast t)
 +               ;; CASE 7
 +               ;; Can't be a valid declaration or cast, but if we've found a
 +               ;; specifier it can't be anything else either, so treat it as
 +               ;; an invalid/unfinished declaration or cast.
 +               (throw 'at-decl-or-cast at-decl-or-cast))))
 +
 +         (if (and got-parens
 +                  (not got-prefix)
 +                  (not context)
 +                  (not (eq at-type t))
 +                  (or backup-at-type
 +                      maybe-typeless
 +                      backup-maybe-typeless
 +                      (when c-recognize-typeless-decls
 +                        (or (not got-suffix)
 +                            (not (looking-at
 +                                  c-after-suffixed-type-maybe-decl-key))))))
 +             ;; Got an empty paren pair and a preceding type that probably
 +             ;; really is the identifier.  Shift the type backwards to make
 +             ;; the last one the identifier.  This is analogous to the
 +             ;; "backtracking" done inside the `c-type-decl-suffix-key' loop
 +             ;; above.
 +             ;;
 +             ;; Exception: In addition to the conditions in that
 +             ;; "backtracking" code, do not shift backward if we're not
 +             ;; looking at either `c-after-suffixed-type-decl-key' or "[;,]".
 +             ;; Since there's no preceding type, the shift would mean that
 +             ;; the declaration is typeless.  But if the regexp doesn't match
 +             ;; then we will simply fall through in the tests below and not
 +             ;; recognize it at all, so it's better to try it as an abstract
 +             ;; declarator instead.
 +             (c-fdoc-shift-type-backward)
 +
 +           ;; Still no identifier.
 +           ;; CASE 8
 +           (when (and got-prefix (or got-parens got-suffix))
 +             ;; Require `got-prefix' together with either `got-parens' or
 +             ;; `got-suffix' to recognize it as an abstract declarator:
 +             ;; `got-parens' only is probably an empty function call.
 +             ;; `got-suffix' only can build an ordinary expression together
 +             ;; with the preceding identifier which we've taken as a type.
 +             ;; We could actually accept on `got-prefix' only, but that can
 +             ;; easily occur temporarily while writing an expression so we
 +             ;; avoid that case anyway.  We could do a better job if we knew
 +             ;; the point when the fontification was invoked.
 +             (throw 'at-decl-or-cast t))
 +
 +           ;; CASE 9
 +           (when (and at-type
 +                      (not got-prefix)
 +                      (not got-parens)
 +                      got-suffix-after-parens
 +                      (eq (char-after got-suffix-after-parens) ?\())
 +             ;; Got a type, no declarator but a paren suffix. I.e. it's a
 +             ;; normal function call after all (or perhaps a C++ style object
 +             ;; instantiation expression).
 +             (throw 'at-decl-or-cast nil))))
 +
 +       ;; CASE 10
 +       (when at-decl-or-cast
 +         ;; By now we've located the type in the declaration that we know
 +         ;; we're in.
 +         (throw 'at-decl-or-cast t))
 +
 +       ;; CASE 11
 +       (when (and got-identifier
 +                  (not context)
 +                  (looking-at c-after-suffixed-type-decl-key)
 +                  (if (and got-parens
 +                           (not got-prefix)
 +                           (not got-suffix)
 +                           (not (eq at-type t)))
 +                      ;; Shift the type backward in the case that there's a
 +                      ;; single identifier inside parens.  That can only
 +                      ;; occur in K&R style function declarations so it's
 +                      ;; more likely that it really is a function call.
 +                      ;; Therefore we only do this after
 +                      ;; `c-after-suffixed-type-decl-key' has matched.
 +                      (progn (c-fdoc-shift-type-backward) t)
 +                    got-suffix-after-parens))
 +         ;; A declaration according to `c-after-suffixed-type-decl-key'.
 +         (throw 'at-decl-or-cast t))
 +
 +       ;; CASE 12
 +       (when (and (or got-prefix (not got-parens))
 +                  (memq at-type '(t known)))
 +         ;; It's a declaration if a known type precedes it and it can't be a
 +         ;; function call.
 +         (throw 'at-decl-or-cast t))
 +
 +       ;; If we get here we can't tell if this is a type decl or a normal
 +       ;; expression by looking at it alone.  (That's under the assumption
 +       ;; that normal expressions always can look like type decl expressions,
 +       ;; which isn't really true but the cases where it doesn't hold are so
 +       ;; uncommon (e.g. some placements of "const" in C++) it's not worth
 +       ;; the effort to look for them.)
  
  ;;; 2008-04-16: commented out the next form, to allow the function to recognize
  ;;; "foo (int bar)" in CC (an implicit type (in class foo) without a semicolon)
  ;;; as a(n almost complete) declaration, enabling it to be fontified.
 -      ;; CASE 13
 -      ;; (unless (or at-decl-end (looking-at "=[^=]"))
 -      ;; If this is a declaration it should end here or its initializer(*)
 -      ;; should start here, so check for allowed separation tokens.  Note
 -      ;; that this rule doesn't work e.g. with a K&R arglist after a
 -      ;; function header.
 -      ;;
 -      ;; *) Don't check for C++ style initializers using parens
 -      ;; since those already have been matched as suffixes.
 -      ;;
 -      ;; If `at-decl-or-cast' is then we've found some other sign that
 -      ;; it's a declaration or cast, so then it's probably an
 -      ;; invalid/unfinished one.
 -      ;;  (throw 'at-decl-or-cast at-decl-or-cast))
 -
 -      ;; Below are tests that only should be applied when we're certain to
 -      ;; not have parsed halfway through an expression.
 -
 -      ;; CASE 14
 -      (when (memq at-type '(t known))
 -        ;; The expression starts with a known type so treat it as a
 -        ;; declaration.
 -        (throw 'at-decl-or-cast t))
 -
 -      ;; CASE 15
 -      (when (and (c-major-mode-is 'c++-mode)
 -                 ;; In C++ we check if the identifier is a known type, since
 -                 ;; (con|de)structors use the class name as identifier.
 -                 ;; We've always shifted over the identifier as a type and
 -                 ;; then backed up again in this case.
 -                 identifier-type
 -                 (or (memq identifier-type '(found known))
 -                     (and (eq (char-after identifier-start) ?~)
 -                          ;; `at-type' probably won't be 'found for
 -                          ;; destructors since the "~" is then part of the
 -                          ;; type name being checked against the list of
 -                          ;; known types, so do a check without that
 -                          ;; operator.
 -                          (or (save-excursion
 -                                (goto-char (1+ identifier-start))
 -                                (c-forward-syntactic-ws)
 -                                (c-with-syntax-table
 -                                    c-identifier-syntax-table
 -                                  (looking-at c-known-type-key)))
 -                              (save-excursion
 -                                (goto-char (1+ identifier-start))
 -                                ;; We have already parsed the type earlier,
 -                                ;; so it'd be possible to cache the end
 -                                ;; position instead of redoing it here, but
 -                                ;; then we'd need to keep track of another
 -                                ;; position everywhere.
 -                                (c-check-type (point)
 -                                              (progn (c-forward-type)
 -                                                     (point))))))))
 -        (throw 'at-decl-or-cast t))
 -
 -      (if got-identifier
 -          (progn
 -            ;; CASE 16
 -            (when (and got-prefix-before-parens
 -                       at-type
 -                       (or at-decl-end (looking-at "=[^=]"))
 -                       (not context)
 -                       (not got-suffix))
 -              ;; Got something like "foo * bar;".  Since we're not inside an
 -              ;; arglist it would be a meaningless expression because the
 -              ;; result isn't used.  We therefore choose to recognize it as
 -              ;; a declaration.  Do not allow a suffix since it could then
 -              ;; be a function call.
 -              (throw 'at-decl-or-cast t))
 -
 -            ;; CASE 17
 -            (when (and (or got-suffix-after-parens
 -                           (looking-at "=[^=]"))
 -                       (eq at-type 'found)
 -                       (not (eq context 'arglist)))
 -              ;; Got something like "a (*b) (c);" or "a (b) = c;".  It could
 -              ;; be an odd expression or it could be a declaration.  Treat
 -              ;; it as a declaration if "a" has been used as a type
 -              ;; somewhere else (if it's a known type we won't get here).
 -              (throw 'at-decl-or-cast t)))
 -
 -        ;; CASE 18
 -        (when (and context
 -                   (or got-prefix
 -                       (and (eq context 'decl)
 -                            (not c-recognize-paren-inits)
 -                            (or got-parens got-suffix))))
 -          ;; Got a type followed by an abstract declarator.  If `got-prefix'
 -          ;; is set it's something like "a *" without anything after it.  If
 -          ;; `got-parens' or `got-suffix' is set it's "a()", "a[]", "a()[]",
 -          ;; or similar, which we accept only if the context rules out
 -          ;; expressions.
 -          (throw 'at-decl-or-cast t)))
 -
 -      ;; If we had a complete symbol table here (which rules out
 -      ;; `c-found-types') we should return t due to the disambiguation rule
 -      ;; (in at least C++) that anything that can be parsed as a declaration
 -      ;; is a declaration.  Now we're being more defensive and prefer to
 -      ;; highlight things like "foo (bar);" as a declaration only if we're
 -      ;; inside an arglist that contains declarations.
 -      (eq context 'decl))))
 +       ;; CASE 13
 +       ;;     (unless (or at-decl-end (looking-at "=[^=]"))
 +       ;; If this is a declaration it should end here or its initializer(*)
 +       ;; should start here, so check for allowed separation tokens.  Note
 +       ;; that this rule doesn't work e.g. with a K&R arglist after a
 +       ;; function header.
 +       ;;
 +       ;; *) Don't check for C++ style initializers using parens
 +       ;; since those already have been matched as suffixes.
 +       ;;
 +       ;; If `at-decl-or-cast' is then we've found some other sign that
 +       ;; it's a declaration or cast, so then it's probably an
 +       ;; invalid/unfinished one.
 +       ;;       (throw 'at-decl-or-cast at-decl-or-cast))
 +
 +       ;; Below are tests that only should be applied when we're certain to
 +       ;; not have parsed halfway through an expression.
 +
 +       ;; CASE 14
 +       (when (memq at-type '(t known))
 +         ;; The expression starts with a known type so treat it as a
 +         ;; declaration.
 +         (throw 'at-decl-or-cast t))
 +
 +       ;; CASE 15
 +       (when (and (c-major-mode-is 'c++-mode)
 +                  ;; In C++ we check if the identifier is a known type, since
 +                  ;; (con|de)structors use the class name as identifier.
 +                  ;; We've always shifted over the identifier as a type and
 +                  ;; then backed up again in this case.
 +                  identifier-type
 +                  (or (memq identifier-type '(found known))
 +                      (and (eq (char-after identifier-start) ?~)
 +                           ;; `at-type' probably won't be 'found for
 +                           ;; destructors since the "~" is then part of the
 +                           ;; type name being checked against the list of
 +                           ;; known types, so do a check without that
 +                           ;; operator.
 +                           (or (save-excursion
 +                                 (goto-char (1+ identifier-start))
 +                                 (c-forward-syntactic-ws)
 +                                 (c-with-syntax-table
 +                                     c-identifier-syntax-table
 +                                   (looking-at c-known-type-key)))
 +                               (save-excursion
 +                                 (goto-char (1+ identifier-start))
 +                                 ;; We have already parsed the type earlier,
 +                                 ;; so it'd be possible to cache the end
 +                                 ;; position instead of redoing it here, but
 +                                 ;; then we'd need to keep track of another
 +                                 ;; position everywhere.
 +                                 (c-check-type (point)
 +                                               (progn (c-forward-type)
 +                                                      (point))))))))
 +         (throw 'at-decl-or-cast t))
 +
 +       (if got-identifier
 +           (progn
 +             ;; CASE 16
 +             (when (and got-prefix-before-parens
 +                        at-type
 +                        (or at-decl-end (looking-at "=[^=]"))
 +                        (not context)
 +                        (not got-suffix))
 +               ;; Got something like "foo * bar;".  Since we're not inside an
 +               ;; arglist it would be a meaningless expression because the
 +               ;; result isn't used.  We therefore choose to recognize it as
 +               ;; a declaration.  Do not allow a suffix since it could then
 +               ;; be a function call.
 +               (throw 'at-decl-or-cast t))
 +
 +             ;; CASE 17
 +             (when (and (or got-suffix-after-parens
 +                            (looking-at "=[^=]"))
 +                        (eq at-type 'found)
 +                        (not (eq context 'arglist)))
 +               ;; Got something like "a (*b) (c);" or "a (b) = c;".  It could
 +               ;; be an odd expression or it could be a declaration.  Treat
 +               ;; it as a declaration if "a" has been used as a type
 +               ;; somewhere else (if it's a known type we won't get here).
 +               (throw 'at-decl-or-cast t)))
 +
 +         ;; CASE 18
 +         (when (and context
 +                    (or got-prefix
 +                        (and (eq context 'decl)
 +                             (not c-recognize-paren-inits)
 +                             (or got-parens got-suffix))))
 +           ;; Got a type followed by an abstract declarator.  If `got-prefix'
 +           ;; is set it's something like "a *" without anything after it.  If
 +           ;; `got-parens' or `got-suffix' is set it's "a()", "a[]", "a()[]",
 +           ;; or similar, which we accept only if the context rules out
 +           ;; expressions.
 +           (throw 'at-decl-or-cast t)))
 +
 +       ;; If we had a complete symbol table here (which rules out
 +       ;; `c-found-types') we should return t due to the disambiguation rule
 +       ;; (in at least C++) that anything that can be parsed as a declaration
 +       ;; is a declaration.  Now we're being more defensive and prefer to
 +       ;; highlight things like "foo (bar);" as a declaration only if we're
 +       ;; inside an arglist that contains declarations.
 +         ;; CASE 19
 +       (eq context 'decl))))
  
      ;; The point is now after the type decl expression.
  
        ;; interactive refontification.
        (c-put-c-type-property (point) 'c-decl-arg-start))
  
 +      ;; Record the type's coordinates in `c-record-type-identifiers' for
 +      ;; later fontification.
        (when (and c-record-type-identifiers at-type ;; (not (eq at-type t))
                 ;; There seems no reason to exclude a token from
                 ;; fontification just because it's "a known type that can't
                    (c-put-c-type-property (1- (point)) 'c-decl-end)
                    t)
  
 -            ;; It's an unfinished label.  We consider the keyword enough
 -            ;; to recognize it as a label, so that it gets fontified.
 -            ;; Leave the point at the end of it, but don't put any
 -            ;; `c-decl-end' marker.
 +              ;; It's an unfinished label.  We consider the keyword enough
 +              ;; to recognize it as a label, so that it gets fontified.
 +              ;; Leave the point at the end of it, but don't put any
 +              ;; `c-decl-end' marker.
                (goto-char kwd-end)
                t))))
  
    ;;
    ;; This function might do hidden buffer changes.
  
 -    (let ((start (point))
 -        start-char
 -        (c-promote-possible-types t)
 -        lim
 -        ;; Turn off recognition of angle bracket arglists while parsing
 -        ;; types here since the protocol reference list might then be
 -        ;; considered part of the preceding name or superclass-name.
 -        c-recognize-<>-arglists)
 -
 -      (if (or
 -         (when (looking-at
 -                (eval-when-compile
 -                  (c-make-keywords-re t
 -                    (append (c-lang-const c-protection-kwds objc)
 -                            '("@end"))
 -                    'objc-mode)))
 -           (goto-char (match-end 1))
 -           t)
 +  (let ((start (point))
 +      start-char
 +      (c-promote-possible-types t)
 +      lim
 +      ;; Turn off recognition of angle bracket arglists while parsing
 +      ;; types here since the protocol reference list might then be
 +      ;; considered part of the preceding name or superclass-name.
 +      c-recognize-<>-arglists)
 +
 +    (if (or
 +       (when (looking-at
 +              (eval-when-compile
 +                (c-make-keywords-re t
 +                  (append (c-lang-const c-protection-kwds objc)
 +                          '("@end"))
 +                  'objc-mode)))
 +         (goto-char (match-end 1))
 +         t)
  
 -         (and
 -          (looking-at
 -           (eval-when-compile
 -             (c-make-keywords-re t
 -               '("@interface" "@implementation" "@protocol")
 -               'objc-mode)))
 +       (and
 +        (looking-at
 +         (eval-when-compile
 +           (c-make-keywords-re t
 +             '("@interface" "@implementation" "@protocol")
 +             'objc-mode)))
  
 -          ;; Handle the name of the class itself.
 -          (progn
 -;           (c-forward-token-2) ; 2006/1/13 This doesn't move if the token's
 -;           at EOB.
 -            (goto-char (match-end 0))
 -            (setq lim (point))
 -            (c-skip-ws-forward)
 -            (c-forward-type))
 -
 -          (catch 'break
 -            ;; Look for ": superclass-name" or "( category-name )".
 -            (when (looking-at "[:\(]")
 -              (setq start-char (char-after))
 +        ;; Handle the name of the class itself.
 +        (progn
 +            ;; (c-forward-token-2) ; 2006/1/13 This doesn't move if the token's
 +            ;; at EOB.
 +          (goto-char (match-end 0))
 +          (setq lim (point))
 +          (c-skip-ws-forward)
 +          (c-forward-type))
 +
 +        (catch 'break
 +          ;; Look for ": superclass-name" or "( category-name )".
 +          (when (looking-at "[:\(]")
 +            (setq start-char (char-after))
 +            (forward-char)
 +            (c-forward-syntactic-ws)
 +            (unless (c-forward-type) (throw 'break nil))
 +            (when (eq start-char ?\()
 +              (unless (eq (char-after) ?\)) (throw 'break nil))
                (forward-char)
 -              (c-forward-syntactic-ws)
 -              (unless (c-forward-type) (throw 'break nil))
 -              (when (eq start-char ?\()
 -                (unless (eq (char-after) ?\)) (throw 'break nil))
 -                (forward-char)
 -                (c-forward-syntactic-ws)))
 -
 -            ;; Look for a protocol reference list.
 -            (if (eq (char-after) ?<)
 -                (let ((c-recognize-<>-arglists t)
 -                      (c-parse-and-markup-<>-arglists t)
 -                      c-restricted-<>-arglists)
 -                  (c-forward-<>-arglist t))
 -              t))))
 +              (c-forward-syntactic-ws)))
  
 -        (progn
 -          (c-backward-syntactic-ws lim)
 -          (c-clear-c-type-property start (1- (point)) 'c-decl-end)
 -          (c-put-c-type-property (1- (point)) 'c-decl-end)
 -          t)
 +          ;; Look for a protocol reference list.
 +          (if (eq (char-after) ?<)
 +              (let ((c-recognize-<>-arglists t)
 +                    (c-parse-and-markup-<>-arglists t)
 +                    c-restricted-<>-arglists)
 +                (c-forward-<>-arglist t))
 +            t))))
  
 -      (c-clear-c-type-property start (point) 'c-decl-end)
 -      nil)))
 +      (progn
 +        (c-backward-syntactic-ws lim)
 +        (c-clear-c-type-property start (1- (point)) 'c-decl-end)
 +        (c-put-c-type-property (1- (point)) 'c-decl-end)
 +        t)
 +
 +      (c-clear-c-type-property start (point) 'c-decl-end)
 +      nil)))
  
  (defun c-beginning-of-inheritance-list (&optional lim)
    ;; Go to the first non-whitespace after the colon that starts a
@@@ -8022,7 -7912,7 +8026,7 @@@ comment at the start of cc-engine.el fo
    ;;
    ;; This function might do hidden buffer changes.
  
 -  (let ((beg (point)) end id-start)
 +  (let ((beg (point)) id-start)
      (and
       (eq (c-beginning-of-statement-1 lim) 'same)
  
                   (throw 'knr nil)))
  
            (if after-rparen
 -          ;; We're inside a paren.  Could it be our argument list....?
 -            (if
 -                (and
 -                 (progn
 -                   (goto-char after-rparen)
 -                   (unless (c-go-list-backward) (throw 'knr nil)) ;
 -              ;; FIXME!!!  What about macros between the parens?  2007/01/20
 -                   (setq before-lparen (point)))
 +              ;; We're inside a paren.  Could it be our argument list....?
 +              (if
 +                  (and
 +                   (progn
 +                     (goto-char after-rparen)
 +                     (unless (c-go-list-backward) (throw 'knr nil)) ;
 +                     ;; FIXME!!!  What about macros between the parens?  2007/01/20
 +                     (setq before-lparen (point)))
  
 -                 ;; It can't be the arg list if next token is ; or {
 -                 (progn (goto-char after-rparen)
 -                        (c-forward-syntactic-ws)
 -                        (not (memq (char-after) '(?\; ?\{ ?\=))))
 +                   ;; It can't be the arg list if next token is ; or {
 +                   (progn (goto-char after-rparen)
 +                          (c-forward-syntactic-ws)
 +                          (not (memq (char-after) '(?\; ?\{ ?\=))))
  
 -                 ;; Is the thing preceding the list an identifier (the
 -                 ;; function name), or a macro expansion?
 -                 (progn
 -                   (goto-char before-lparen)
 -                   (eq (c-backward-token-2) 0)
 -                   (or (eq (c-on-identifier) (point))
 -                       (and (eq (char-after) ?\))
 -                            (c-go-up-list-backward)
 -                            (eq (c-backward-token-2) 0)
 -                            (eq (c-on-identifier) (point)))))
 -
 -                 ;; Have we got a non-empty list of comma-separated
 -                 ;; identifiers?
 -                 (progn
 -                   (goto-char before-lparen)
 -                   (c-forward-token-2) ; to first token inside parens
 -                   (and
 -                    (c-on-identifier)
 -                    (c-forward-token-2)
 -                    (catch 'id-list
 -                      (while (eq (char-after) ?\,)
 -                        (c-forward-token-2)
 -                        (unless (c-on-identifier) (throw 'id-list nil))
 -                        (c-forward-token-2))
 -                      (eq (char-after) ?\))))))
 -
 -                ;; ...Yes.  We've identified the function's argument list.
 -                (throw 'knr
 -                     (progn (goto-char after-rparen)
 -                            (c-forward-syntactic-ws)
 -                            (point)))
 -
 -              ;; ...No.  The current parens aren't the function's arg list.
 -              (goto-char before-lparen))
 +                   ;; Is the thing preceding the list an identifier (the
 +                   ;; function name), or a macro expansion?
 +                   (progn
 +                     (goto-char before-lparen)
 +                     (eq (c-backward-token-2) 0)
 +                     (or (eq (c-on-identifier) (point))
 +                         (and (eq (char-after) ?\))
 +                              (c-go-up-list-backward)
 +                              (eq (c-backward-token-2) 0)
 +                              (eq (c-on-identifier) (point)))))
 +
 +                   ;; Have we got a non-empty list of comma-separated
 +                   ;; identifiers?
 +                   (progn
 +                     (goto-char before-lparen)
 +                     (c-forward-token-2) ; to first token inside parens
 +                     (and
 +                      (c-on-identifier)
 +                      (c-forward-token-2)
 +                      (catch 'id-list
 +                        (while (eq (char-after) ?\,)
 +                          (c-forward-token-2)
 +                          (unless (c-on-identifier) (throw 'id-list nil))
 +                          (c-forward-token-2))
 +                        (eq (char-after) ?\))))))
 +
 +                  ;; ...Yes.  We've identified the function's argument list.
 +                  (throw 'knr
 +                         (progn (goto-char after-rparen)
 +                                (c-forward-syntactic-ws)
 +                                (point)))
 +
 +                ;; ...No.  The current parens aren't the function's arg list.
 +                (goto-char before-lparen))
  
              (or (c-go-list-backward)  ; backwards over [ .... ]
                  (throw 'knr nil)))))))))
                   (and
                    (progn
                      (while  ; keep going back to "[;={"s until we either find
 -                          ; no more, or get to one which isn't an "operator ="
 +                           ; no more, or get to one which isn't an "operator ="
                          (and (c-syntactic-re-search-forward "[;={]" start t t t)
                               (eq (char-before) ?=)
                               c-overloadable-operators-regexp
      (when (and c-recognize-<>-arglists
               (eq (char-before) ?>))
        ;; Could be at the end of a template arglist.
 -      (let ((c-parse-and-markup-<>-arglists t)
 -          (c-disallow-comma-in-<>-arglists
 -           (and containing-sexp
 -                (not (eq (char-after containing-sexp) ?{)))))
 +      (let ((c-parse-and-markup-<>-arglists t))
        (while (and
                (c-backward-<>-arglist nil limit)
                (progn
           (cond
            ((c-syntactic-re-search-forward c-decl-block-key open-brace t t t)
             (goto-char (setq kwd-start (match-beginning 0)))
 -           (or
 -
 -            ;; Found a keyword that can't be a type?
 -            (match-beginning 1)
 -
 -            ;; Can be a type too, in which case it's the return type of a
 -            ;; function (under the assumption that no declaration level
 -            ;; block construct starts with a type).
 -            (not (c-forward-type))
 -
 -            ;; Jumped over a type, but it could be a declaration keyword
 -            ;; followed by the declared identifier that we've jumped over
 -            ;; instead (e.g. in "class Foo {").  If it indeed is a type
 -            ;; then we should be at the declarator now, so check for a
 -            ;; valid declarator start.
 -            ;;
 -            ;; Note: This doesn't cope with the case when a declared
 -            ;; identifier is followed by e.g. '(' in a language where '('
 -            ;; also might be part of a declarator expression.  Currently
 -            ;; there's no such language.
 -            (not (or (looking-at c-symbol-start)
 -                     (looking-at c-type-decl-prefix-key)))))
 +           (and
 +            ;; Exclude cases where we matched what would ordinarily
 +            ;; be a block declaration keyword, except where it's not
 +            ;; legal because it's part of a "compound keyword" like
 +            ;; "enum class".  Of course, if c-after-brace-list-key
 +            ;; is nil, we can skip the test.
 +            (or (equal c-after-brace-list-key "\\<\\>")
 +                (save-match-data
 +                  (save-excursion
 +                    (not
 +                     (and
 +                      (looking-at c-after-brace-list-key)
 +                      (= (c-backward-token-2 1 t) 0)
 +                      (looking-at c-brace-list-key))))))
 +            (or
 +             ;; Found a keyword that can't be a type?
 +             (match-beginning 1)
 +
 +             ;; Can be a type too, in which case it's the return type of a
 +             ;; function (under the assumption that no declaration level
 +             ;; block construct starts with a type).
 +             (not (c-forward-type))
 +
 +             ;; Jumped over a type, but it could be a declaration keyword
 +             ;; followed by the declared identifier that we've jumped over
 +             ;; instead (e.g. in "class Foo {").  If it indeed is a type
 +             ;; then we should be at the declarator now, so check for a
 +             ;; valid declarator start.
 +             ;;
 +             ;; Note: This doesn't cope with the case when a declared
 +             ;; identifier is followed by e.g. '(' in a language where '('
 +             ;; also might be part of a declarator expression.  Currently
 +             ;; there's no such language.
 +             (not (or (looking-at c-symbol-start)
 +                      (looking-at c-type-decl-prefix-key))))))
  
            ;; In Pike a list of modifiers may be followed by a brace
 -          ;; to make them apply to many identifiers.  Note that the
 +          ;; to make them apply to many identifiers.  Note that the
            ;; match data will be empty on return in this case.
            ((and (c-major-mode-is 'pike-mode)
                  (progn
                      (not (looking-at "=")))))
        b-pos)))
  
 +(defun c-backward-colon-prefixed-type ()
 +  ;; We're at the token after what might be a type prefixed with a colon.  Try
 +  ;; moving backward over this type and the colon.  On success, return t and
 +  ;; leave point before colon; on failure, leave point unchanged.  Will clobber
 +  ;; match data.
 +  (let ((here (point))
 +      (colon-pos nil))
 +    (save-excursion
 +      (while
 +        (and (eql (c-backward-token-2) 0)
 +             (or (not (looking-at "\\s)"))
 +                 (c-go-up-list-backward))
 +             (cond
 +              ((eql (char-after) ?:)
 +               (setq colon-pos (point))
 +               (forward-char)
 +               (c-forward-syntactic-ws)
 +               (or (and (c-forward-type)
 +                        (progn (c-forward-syntactic-ws)
 +                               (eq (point) here)))
 +                   (setq colon-pos nil))
 +               nil)
 +              ((eql (char-after) ?\()
 +               t)
 +              ((looking-at c-symbol-key)
 +               t)
 +              (t nil)))))
 +    (when colon-pos
 +      (goto-char colon-pos)
 +      t)))
 +
  (defun c-backward-over-enum-header ()
    ;; We're at a "{".  Move back to the enum-like keyword that starts this
    ;; declaration and return t, otherwise don't move and return nil.
    (let ((here (point))
        up-sexp-pos before-identifier)
 +    (when c-recognize-post-brace-list-type-p
 +      (c-backward-colon-prefixed-type))
      (while
        (and
         (eq (c-backward-token-2) 0)
                (not before-identifier))
           (setq before-identifier t))
          ((and before-identifier
 -              (or (eq (char-after) ?,)
 +              (or (eql (char-after) ?,)
                    (looking-at c-postfix-decl-spec-key)))
           (setq before-identifier nil)
           t)
 +        ((looking-at c-after-brace-list-key) t)
          ((looking-at c-brace-list-key) nil)
          ((and c-recognize-<>-arglists
                (eq (char-after) ?<)
         (while (and (not bufpos)
                   containing-sexp)
         (when paren-state
 -           (if (consp (car paren-state))
 -               (setq lim (cdr (car paren-state))
 -                     paren-state (cdr paren-state))
 -             (setq lim (car paren-state)))
 -           (when paren-state
 -             (setq next-containing (car paren-state)
 -                   paren-state (cdr paren-state))))
 -         (goto-char containing-sexp)
 -         (if (c-looking-at-inexpr-block next-containing next-containing)
 -             ;; We're in an in-expression block of some kind.  Do not
 -             ;; check nesting.  We deliberately set the limit to the
 -             ;; containing sexp, so that c-looking-at-inexpr-block
 -             ;; doesn't check for an identifier before it.
 -             (setq containing-sexp nil)
 -           ;; see if the open brace is preceded by = or [...] in
 -           ;; this statement, but watch out for operator=
 -           (setq braceassignp 'dontknow)
 -           (c-backward-token-2 1 t lim)
 -           ;; Checks to do only on the first sexp before the brace.
 -           (when (and c-opt-inexpr-brace-list-key
 -                      (eq (char-after) ?\[))
 -             ;; In Java, an initialization brace list may follow
 -             ;; directly after "new Foo[]", so check for a "new"
 -             ;; earlier.
 -             (while (eq braceassignp 'dontknow)
 -               (setq braceassignp
 -                     (cond ((/= (c-backward-token-2 1 t lim) 0) nil)
 -                           ((looking-at c-opt-inexpr-brace-list-key) t)
 -                           ((looking-at "\\sw\\|\\s_\\|[.[]")
 -                            ;; Carry on looking if this is an
 -                            ;; identifier (may contain "." in Java)
 -                            ;; or another "[]" sexp.
 -                            'dontknow)
 -                           (t nil)))))
 -           ;; Checks to do on all sexps before the brace, up to the
 -           ;; beginning of the statement.
 +         (if (consp (car paren-state))
 +             (setq lim (cdr (car paren-state))
 +                   paren-state (cdr paren-state))
 +           (setq lim (car paren-state)))
 +         (when paren-state
 +           (setq next-containing (car paren-state)
 +                 paren-state (cdr paren-state))))
 +       (goto-char containing-sexp)
 +       (if (c-looking-at-inexpr-block next-containing next-containing)
 +           ;; We're in an in-expression block of some kind.  Do not
 +           ;; check nesting.  We deliberately set the limit to the
 +           ;; containing sexp, so that c-looking-at-inexpr-block
 +           ;; doesn't check for an identifier before it.
 +           (setq containing-sexp nil)
 +         ;; see if the open brace is preceded by = or [...] in
 +         ;; this statement, but watch out for operator=
 +         (setq braceassignp 'dontknow)
 +         (c-backward-token-2 1 t lim)
 +         ;; Checks to do only on the first sexp before the brace.
 +         (when (and c-opt-inexpr-brace-list-key
 +                    (eq (char-after) ?\[))
 +           ;; In Java, an initialization brace list may follow
 +           ;; directly after "new Foo[]", so check for a "new"
 +           ;; earlier.
             (while (eq braceassignp 'dontknow)
 -             (cond ((eq (char-after) ?\;)
 -                    (setq braceassignp nil))
 -                   ((and class-key
 -                         (looking-at class-key))
 -                    (setq braceassignp nil))
 -                   ((eq (char-after) ?=)
 -                    ;; We've seen a =, but must check earlier tokens so
 -                    ;; that it isn't something that should be ignored.
 -                    (setq braceassignp 'maybe)
 -                    (while (and (eq braceassignp 'maybe)
 -                                (zerop (c-backward-token-2 1 t lim)))
 -                      (setq braceassignp
 -                            (cond
 -                             ;; Check for operator =
 -                             ((and c-opt-op-identifier-prefix
 -                                   (looking-at c-opt-op-identifier-prefix))
 -                              nil)
 -                             ;; Check for `<opchar>= in Pike.
 -                             ((and (c-major-mode-is 'pike-mode)
 -                                   (or (eq (char-after) ?`)
 -                                       ;; Special case for Pikes
 -                                       ;; `[]=, since '[' is not in
 -                                       ;; the punctuation class.
 -                                       (and (eq (char-after) ?\[)
 -                                            (eq (char-before) ?`))))
 -                              nil)
 -                             ((looking-at "\\s.") 'maybe)
 -                             ;; make sure we're not in a C++ template
 -                             ;; argument assignment
 -                             ((and
 -                               (c-major-mode-is 'c++-mode)
 -                               (save-excursion
 -                                 (let ((here (point))
 -                                       (pos< (progn
 -                                               (skip-chars-backward "^<>")
 -                                               (point))))
 -                                   (and (eq (char-before) ?<)
 -                                        (not (c-crosses-statement-barrier-p
 -                                              pos< here))
 -                                        (not (c-in-literal))
 -                                        ))))
 -                              nil)
 -                             (t t))))))
 +             (setq braceassignp
 +                   (cond ((/= (c-backward-token-2 1 t lim) 0) nil)
 +                         ((looking-at c-opt-inexpr-brace-list-key) t)
 +                         ((looking-at "\\sw\\|\\s_\\|[.[]")
 +                          ;; Carry on looking if this is an
 +                          ;; identifier (may contain "." in Java)
 +                          ;; or another "[]" sexp.
 +                          'dontknow)
 +                         (t nil)))))
 +         ;; Checks to do on all sexps before the brace, up to the
 +         ;; beginning of the statement.
 +         (while (eq braceassignp 'dontknow)
 +           (cond ((eq (char-after) ?\;)
 +                  (setq braceassignp nil))
 +                 ((and class-key
 +                       (looking-at class-key))
 +                  (setq braceassignp nil))
 +                 ((eq (char-after) ?=)
 +                  ;; We've seen a =, but must check earlier tokens so
 +                  ;; that it isn't something that should be ignored.
 +                  (setq braceassignp 'maybe)
 +                  (while (and (eq braceassignp 'maybe)
 +                              (zerop (c-backward-token-2 1 t lim)))
 +                    (setq braceassignp
 +                          (cond
 +                           ;; Check for operator =
 +                           ((and c-opt-op-identifier-prefix
 +                                 (looking-at c-opt-op-identifier-prefix))
 +                            nil)
 +                           ;; Check for `<opchar>= in Pike.
 +                           ((and (c-major-mode-is 'pike-mode)
 +                                 (or (eq (char-after) ?`)
 +                                     ;; Special case for Pikes
 +                                     ;; `[]=, since '[' is not in
 +                                     ;; the punctuation class.
 +                                     (and (eq (char-after) ?\[)
 +                                          (eq (char-before) ?`))))
 +                            nil)
 +                           ((looking-at "\\s.") 'maybe)
 +                           ;; make sure we're not in a C++ template
 +                           ;; argument assignment
 +                           ((and
 +                             (c-major-mode-is 'c++-mode)
 +                             (save-excursion
 +                               (let ((here (point))
 +                                     (pos< (progn
 +                                             (skip-chars-backward "^<>")
 +                                             (point))))
 +                                 (and (eq (char-before) ?<)
 +                                      (not (c-crosses-statement-barrier-p
 +                                            pos< here))
 +                                      (not (c-in-literal))
 +                                      ))))
 +                            nil)
 +                           (t t))))))
             (if (and (eq braceassignp 'dontknow)
                      (/= (c-backward-token-2 1 t lim) 0))
                 (setq braceassignp nil)))
                     (max (c-point 'boi paren-pos) (point))))
                   (t (c-add-syntax 'defun-block-intro nil))))
  
 -               (c-add-syntax 'statement-block-intro nil)))
 +            (c-add-syntax 'statement-block-intro nil)))
  
          (if (= paren-pos boi)
              ;; Always done if the open brace was at boi.  The
       ;;annotations.
       ((and (c-major-mode-is 'java-mode)
           (setq placeholder (point))
 -            (c-beginning-of-statement-1)
 -            (progn
 -              (while (and (c-forward-annotation)
 -                          (< (point) placeholder))
 -                (c-forward-syntactic-ws))
 -              t)
 -            (prog1
 -                (>= (point) placeholder)
 -              (goto-char placeholder)))
 +         (c-beginning-of-statement-1)
 +         (progn
 +           (while (and (c-forward-annotation)
 +                       (< (point) placeholder))
 +             (c-forward-syntactic-ws))
 +           t)
 +         (prog1
 +             (>= (point) placeholder)
 +           (goto-char placeholder)))
         (c-beginning-of-statement-1 containing-sexp)
         (c-add-syntax 'annotation-var-cont (point)))
  
                    (not (looking-at c-<-op-cont-regexp))))))
        (c-with-syntax-table c++-template-syntax-table
        (goto-char placeholder)
 -      (c-beginning-of-statement-1 containing-sexp t)
 -      (if (save-excursion
 -            (c-backward-syntactic-ws containing-sexp)
 -            (eq (char-before) ?<))
 -          ;; In a nested template arglist.
 -          (progn
 -            (goto-char placeholder)
 -            (c-syntactic-skip-backward "^,;" containing-sexp t)
 -            (c-forward-syntactic-ws))
 -        (back-to-indentation)))
 +      (c-beginning-of-statement-1 containing-sexp t))
 +      (if (save-excursion
 +          (c-backward-syntactic-ws containing-sexp)
 +          (eq (char-before) ?<))
 +        ;; In a nested template arglist.
 +        (progn
 +          (goto-char placeholder)
 +          (c-syntactic-skip-backward "^,;" containing-sexp t)
 +          (c-forward-syntactic-ws))
 +      (back-to-indentation))
        ;; FIXME: Should use c-add-stmt-syntax, but it's not yet
        ;; template aware.
        (c-add-syntax 'template-args-cont (point) placeholder))
        ((indent-point (point))
         (case-fold-search nil)
         open-paren-in-column-0-is-defun-start
 -       ;; A whole ugly bunch of various temporary variables.  Have
 +       ;; A whole ugly bunch of various temporary variables.  Have
         ;; to declare them here since it's not possible to declare
         ;; a variable with only the scope of a cond test and the
         ;; following result clauses, and most of this function is a
                                       (c-keyword-sym (match-string 1)))))
  
        ;; Init some position variables.
 -      (if c-state-cache
 +      (if paren-state
          (progn
            (setq containing-sexp (car paren-state)
                  paren-state (cdr paren-state))
            (if (consp containing-sexp)
 -              (progn
 -                (setq lim (cdr containing-sexp))
 -                (if (cdr c-state-cache)
 -                    ;; Ignore balanced paren.  The next entry
 -                    ;; can't be another one.
 -                    (setq containing-sexp (car (cdr c-state-cache))
 -                          paren-state (cdr paren-state))
 -                  ;; If there is no surrounding open paren then
 -                  ;; put the last balanced pair back on paren-state.
 -                  (setq paren-state (cons containing-sexp paren-state)
 -                        containing-sexp nil)))
 +            (save-excursion
 +              (goto-char (cdr containing-sexp))
 +              (if (and (c-major-mode-is 'c++-mode)
 +                       (c-back-over-member-initializer-braces))
 +                    (c-syntactic-skip-backward "^}" nil t))
 +              (setq lim (point))
 +              (if paren-state
 +                  ;; Ignore balanced paren.    The next entry
 +                  ;; can't be another one.
 +                  (setq containing-sexp (car paren-state)
 +                        paren-state (cdr paren-state))
 +                ;; If there is no surrounding open paren then
 +                ;; put the last balanced pair back on paren-state.
 +                (setq paren-state (cons containing-sexp paren-state)
 +                      containing-sexp nil)))
              (setq lim (1+ containing-sexp))))
        (setq lim (point-min)))
  
                            (eq (char-after placeholder) ?<))))))
            (c-with-syntax-table c++-template-syntax-table
              (goto-char placeholder)
 -            (c-beginning-of-statement-1 lim t)
 -            (if (save-excursion
 -                  (c-backward-syntactic-ws lim)
 -                  (eq (char-before) ?<))
 -                ;; In a nested template arglist.
 -                (progn
 -                  (goto-char placeholder)
 -                  (c-syntactic-skip-backward "^,;" lim t)
 -                  (c-forward-syntactic-ws))
 -              (back-to-indentation)))
 +            (c-beginning-of-statement-1 lim t))
 +          (if (save-excursion
 +                (c-backward-syntactic-ws lim)
 +                (eq (char-before) ?<))
 +              ;; In a nested template arglist.
 +              (progn
 +                (goto-char placeholder)
 +                (c-syntactic-skip-backward "^,;" lim t)
 +                (c-forward-syntactic-ws))
 +            (back-to-indentation))
            ;; FIXME: Should use c-add-stmt-syntax, but it's not yet
            ;; template aware.
            (c-add-syntax 'template-args-cont (point) placeholder))
          (c-add-syntax 'topmost-intro-cont (c-point 'boi)))
         ))
  
 -
         ;; (CASE 6 has been removed.)
  
         ;; CASE 7: line is an expression, not a statement.  Most
                             paren-state))
  
         ;; CASE 7B: Looking at the opening brace of an
 -       ;; in-expression block or brace list.  C.f. cases 4, 16A
 +       ;; in-expression block or brace list.  C.f. cases 4, 16A
         ;; and 17E.
         ((and (eq char-after-ip ?{)
               (progn
          )))
  
         ;; CASE 9: we are inside a brace-list
 -       ((and (not (c-major-mode-is 'awk-mode)) ; Maybe this isn't needed (ACM, 2002/3/29)
 +       ((and (not (c-major-mode-is 'awk-mode))  ; Maybe this isn't needed (ACM, 2002/3/29)
             (setq special-brace-list
                   (or (and c-special-brace-lists ;;;; ALWAYS NIL FOR AWK!!
                            (save-excursion
          (if (eq (point) (c-point 'boi))
              (c-add-syntax 'brace-list-close (point))
            (setq lim (c-most-enclosing-brace c-state-cache (point)))
 -          (c-beginning-of-statement-1 lim)
 +          (c-beginning-of-statement-1 lim nil nil t)
            (c-add-stmt-syntax 'brace-list-close nil t lim paren-state)))
  
         (t
         ))
  
         ;; CASE 19: line is an expression, not a statement, and is directly
 -       ;; contained by a template delimiter.  Most likely, we are in a
 +       ;; contained by a template delimiter.  Most likely, we are in a
         ;; template arglist within a statement.  This case is based on CASE
 -       ;; 7.  At some point in the future, we may wish to create more
 +       ;; 7.  At some point in the future, we may wish to create more
         ;; syntactic symbols such as `template-intro',
         ;; `template-cont-nonempty', etc., and distinguish between them as we
         ;; do for `arglist-intro' etc. (2009-12-07).
@@@ -11153,7 -10996,7 +11157,7 @@@ Cannot combine absolute offsets %S and 
    ;;
    ;; This function might do hidden buffer changes.
    (let* ((symbol (c-langelem-sym langelem))
 -       (match  (assq symbol c-offsets-alist))
 +       (match (assq symbol c-offsets-alist))
         (offset (cdr-safe match)))
      (if match
        (setq offset (c-evaluate-offset offset langelem symbol))
  \f
  (cc-provide 'cc-engine)
  
 +;;; Local Variables:
 +;;; indent-tabs-mode: t
 +;;; tab-width: 8
 +;;; End:
  ;;; cc-engine.el ends here
index 01e93b3f202087454ac498dc7b5c7b959889d482,1cba5027f288533dd96a33921b59b6f35c22f520..c02192608b292f9217b015638b6f22df5441c612
  ;; with your version of Emacs, you are incompatible!
  (cc-external-require 'easymenu)
  
 -;; Autoload directive for emacsen that doesn't have an older CC Mode
 -;; version in the dist.
 -(autoload 'subword-mode "subword"
 -  "Mode enabling subword movement and editing keys." t)
 -
  ;; Load cc-fonts first after font-lock is loaded, since it isn't
  ;; necessary until font locking is requested.
  ; (eval-after-load "font-lock" ; 2006-07-09: font-lock is now preloaded.
@@@ -180,7 -185,8 +180,7 @@@ control).  See \"cc-mode.el\" for more 
            (run-hooks 'c-initialization-hook)
            ;; Fix obsolete variables.
            (if (boundp 'c-comment-continuation-stars)
 -              (setq c-block-comment-prefix
 -                    (symbol-value 'c-comment-continuation-stars)))
 +              (setq c-block-comment-prefix c-comment-continuation-stars))
            (add-hook 'change-major-mode-hook 'c-leave-cc-mode-mode)
            (setq c-initialization-ok t)
            ;; Connect up with Emacs's electric-indent-mode, for >= Emacs 24.4
    ;; conflicts with OOBR
    ;;(define-key c-mode-base-map "\C-c\C-v"  'c-version)
    ;; (define-key c-mode-base-map "\C-c\C-y"  'c-toggle-hungry-state)  Commented out by ACM, 2005-11-22.
 -  (define-key c-mode-base-map "\C-c\C-w" 'subword-mode)
 +  (define-key c-mode-base-map "\C-c\C-w" 'c-subword-mode)
    )
  
  ;; We don't require the outline package, but we configure it a bit anyway.
@@@ -466,14 -472,6 +466,14 @@@ preferably use the `c-mode-menu' langua
  (defvar c-maybe-stale-found-type nil)
  (make-variable-buffer-local 'c-maybe-stale-found-type)
  
 +(defvar c-just-done-before-change nil)
 +(make-variable-buffer-local 'c-just-done-before-change)
 +;; This variable is set to t by `c-before-change' and to nil by
 +;; `c-after-change'.  It is used to detect a spurious invocation of
 +;; `before-change-functions' directly following on from a correct one.  This
 +;; happens in some Emacsen, for example when `basic-save-buffer' does (insert
 +;; ?\n) when `require-final-newline' is non-nil.
 +
  (defun c-basic-common-init (mode default-style)
    "Do the necessary initialization for the syntax handling routines
  and the line breaking/filling code.  Intended to be used by other
@@@ -544,11 -542,10 +544,11 @@@ that requires a literal mode spec at co
    ;; Use this in Emacs 21+ to avoid meddling with the rear-nonsticky
    ;; property on each character.
    (when (boundp 'text-property-default-nonsticky)
 +    (make-local-variable 'text-property-default-nonsticky)
      (mapc (lambda (tprop)
            (unless (assq tprop text-property-default-nonsticky)
 -            (set (make-local-variable 'text-property-default-nonsticky)
 -                   (cons `(,tprop . t) text-property-default-nonsticky))))
 +            (setq text-property-default-nonsticky
 +                    (cons `(,tprop . t) text-property-default-nonsticky))))
          '(syntax-table category c-type)))
  
    ;; In Emacs 21 and later it's possible to turn off the ad-hoc
      (make-local-hook 'before-change-functions)
      (make-local-hook 'after-change-functions))
    (add-hook 'before-change-functions 'c-before-change nil t)
 +  (setq c-just-done-before-change nil)
    (add-hook 'after-change-functions 'c-after-change nil t)
 -  (set (make-local-variable 'font-lock-extend-after-change-region-function)
 -      'c-extend-after-change-region)) ; Currently (2009-05) used by all
 -                      ; languages with #define (C, C++,; ObjC), and by AWK.
 +  (when (boundp 'font-lock-extend-after-change-region-function)
 +    (set (make-local-variable 'font-lock-extend-after-change-region-function)
 +         'c-extend-after-change-region))) ; Currently (2009-05) used by all
 +                          ; languages with #define (C, C++,; ObjC), and by AWK.
  
  (defun c-setup-doc-comment-style ()
    "Initialize the variables that depend on the value of `c-doc-comment-style'."
@@@ -674,11 -669,9 +674,11 @@@ compatible with old code; callers shoul
         (or (c-cpp-define-name) (c-defun-name))))
    (let ((rfn (assq mode c-require-final-newline)))
      (when rfn
 -      (and (cdr rfn)
 -         (set (make-local-variable 'require-final-newline)
 -                mode-require-final-newline)))))
 +      (if (boundp 'mode-require-final-newline)
 +          (and (cdr rfn)
 +               (set (make-local-variable 'require-final-newline)
 +                    mode-require-final-newline))
 +        (set (make-local-variable 'require-final-newline) (cdr rfn))))))
  
  (defun c-count-cfss (lv-alist)
    ;; LV-ALIST is an alist like `file-local-variables-alist'.  Count how many
@@@ -955,11 -948,7 +955,11 @@@ Note that the style variables are alway
          c-new-END (min (cdr new-bounds) (c-determine-+ve-limit 500 endd)))
      ;; Clear all old relevant properties.
      (c-clear-char-property-with-value c-new-BEG c-new-END 'syntax-table '(1))
 -    (c-clear-char-property-with-value c-new-BEG c-new-END 'category 'c-cpp-delimiter)
 +
 +    ;; CPP "comment" markers:
 +    (if (eval-when-compile (memq 'category-properties c-emacs-features));Emacs.
 +      (c-clear-char-property-with-value
 +       c-new-BEG c-new-END 'category 'c-cpp-delimiter))
      ;; FIXME!!!  What about the "<" and ">" category properties?  2009-11-16
  
      ;; Add needed properties to each CPP construct in the region.
      (let ((pps-position (point))  pps-state mbeg)
        (while (and (< (point) c-new-END)
                  (search-forward-regexp c-anchored-cpp-prefix c-new-END t))
-       ;; If we've found a "#" inside a string/comment, ignore it.
-       (setq pps-state
-             (parse-partial-sexp pps-position (point) nil nil pps-state)
-             pps-position (point))
-       (unless (or (nth 3 pps-state)   ; in a string?
-                   (nth 4 pps-state))  ; in a comment?
+       ;; If we've found a "#" inside a macro/string/comment, ignore it.
+       (unless
+           (or (save-excursion
+                 (goto-char (match-beginning 0))
+                 (c-beginning-of-macro))
+               (progn
+                 (setq pps-state
+                       (parse-partial-sexp pps-position (point) nil nil pps-state)
+                       pps-position (point))
+                 (or (nth 3 pps-state)    ; in a string?
+                     (nth 4 pps-state)))) ; in a comment?
          (goto-char (match-beginning 1))
          (setq mbeg (point))
          (if (> (c-syntactic-end-of-macro) mbeg)
              (progn
 -              (c-neutralize-CPP-line mbeg (point))
 -              (c-set-cpp-delimiters mbeg (point)))
 +              (c-neutralize-CPP-line mbeg (point)) ; "punctuation" properties
 +              (if (eval-when-compile
 +                      (memq 'category-properties c-emacs-features)) ;Emacs.
 +                  (c-set-cpp-delimiters mbeg (point)))) ; "comment" markers
            (forward-line))           ; no infinite loop with, e.g., "#//"
          )))))
  
    ;; it/them from the cache.  Don't worry about being inside a string
    ;; or a comment - "wrongly" removing a symbol from `c-found-types'
    ;; isn't critical.
 -  (setq c-maybe-stale-found-type nil)
 -  (save-restriction
 -    (save-match-data
 -      (widen)
 -      (save-excursion
 -      ;; Are we inserting/deleting stuff in the middle of an identifier?
 -      (c-unfind-enclosing-token beg)
 -      (c-unfind-enclosing-token end)
 -      ;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"?
 -      (when (< beg end)
 -        (c-unfind-coalesced-tokens beg end))
 -      ;; Are we (potentially) disrupting the syntactic context which
 -      ;; makes a type a type?  E.g. by inserting stuff after "foo" in
 -      ;; "foo bar;", or before "foo" in "typedef foo *bar;"?
 -      ;;
 -      ;; We search for appropriate c-type properties "near" the change.
 -      ;; First, find an appropriate boundary for this property search.
 -      (let (lim
 -            type type-pos
 -            marked-id term-pos
 -            (end1
 -             (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
 -                      (previous-single-property-change end 'face))
 -                 end)))
 -        (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
 -          ;; Find a limit for the search for a `c-type' property
 -          (while
 -              (and (/= (skip-chars-backward "^;{}") 0)
 -                   (> (point) (point-min))
 -                   (memq (c-get-char-property (1- (point)) 'face)
 -                         '(font-lock-comment-face font-lock-string-face))))
 -          (setq lim (max (point-min) (1- (point))))
 -
 -          ;; Look for the latest `c-type' property before end1
 -          (when (and (> end1 (point-min))
 -                     (setq type-pos
 -                           (if (get-text-property (1- end1) 'c-type)
 -                               end1
 -                             (previous-single-property-change end1 'c-type nil lim))))
 -            (setq type (get-text-property (max (1- type-pos) lim) 'c-type))
 -
 -            (when (memq type '(c-decl-id-start c-decl-type-start))
 -              ;; Get the identifier, if any, that the property is on.
 -              (goto-char (1- type-pos))
 -              (setq marked-id
 -                    (when (looking-at "\\(\\sw\\|\\s_\\)")
 -                      (c-beginning-of-current-token)
 -                      (buffer-substring-no-properties (point) type-pos)))
 -
 -              (goto-char end1)
 -              (skip-chars-forward "^;{}") ; FIXME!!!  loop for comment, maybe
 -              (setq lim (point))
 -              (setq term-pos
 -                    (or (next-single-property-change end 'c-type nil lim) lim))
 -              (setq c-maybe-stale-found-type
 -                    (list type marked-id
 -                          type-pos term-pos
 -                          (buffer-substring-no-properties type-pos term-pos)
 +  (unless c-just-done-before-change  ; Guard against a spurious second
 +                            ; invocation of before-change-functions.
 +    (setq c-just-done-before-change t)
 +    (setq c-maybe-stale-found-type nil)
 +    (save-restriction
 +      (save-match-data
 +      (widen)
 +      (save-excursion
 +        ;; Are we inserting/deleting stuff in the middle of an identifier?
 +        (c-unfind-enclosing-token beg)
 +        (c-unfind-enclosing-token end)
 +        ;; Are we coalescing two tokens together, e.g. "fo o" -> "foo"?
 +        (when (< beg end)
 +          (c-unfind-coalesced-tokens beg end))
 +        ;; Are we (potentially) disrupting the syntactic context which
 +        ;; makes a type a type?  E.g. by inserting stuff after "foo" in
 +        ;; "foo bar;", or before "foo" in "typedef foo *bar;"?
 +        ;;
 +        ;; We search for appropriate c-type properties "near" the change.
 +        ;; First, find an appropriate boundary for this property search.
 +        (let (lim
 +              type type-pos
 +              marked-id term-pos
 +              (end1
 +               (or (and (eq (get-text-property end 'face)
 +                            'font-lock-comment-face)
 +                        (previous-single-property-change end 'face))
 +                   end)))
 +          (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
 +            ;; Find a limit for the search for a `c-type' property
 +            (while
 +                (and (/= (skip-chars-backward "^;{}") 0)
 +                     (> (point) (point-min))
 +                     (memq (c-get-char-property (1- (point)) 'face)
 +                           '(font-lock-comment-face font-lock-string-face))))
 +            (setq lim (max (point-min) (1- (point))))
 +
 +            ;; Look for the latest `c-type' property before end1
 +            (when (and (> end1 (point-min))
 +                       (setq type-pos
 +                             (if (get-text-property (1- end1) 'c-type)
 +                                 end1
 +                               (previous-single-property-change end1 'c-type
 +                                                                nil lim))))
 +              (setq type (get-text-property (max (1- type-pos) lim) 'c-type))
 +
 +              (when (memq type '(c-decl-id-start c-decl-type-start))
 +                ;; Get the identifier, if any, that the property is on.
 +                (goto-char (1- type-pos))
 +                (setq marked-id
 +                      (when (looking-at "\\(\\sw\\|\\s_\\)")
 +                        (c-beginning-of-current-token)
 +                        (buffer-substring-no-properties (point) type-pos)))
 +
 +                (goto-char end1)
 +                (skip-chars-forward "^;{}") ;FIXME!!! loop for comment, maybe
 +                (setq lim (point))
 +                (setq term-pos
 +                      (or (c-next-single-property-change end 'c-type nil lim)
 +                          lim))
 +                (setq c-maybe-stale-found-type
 +                      (list type marked-id
 +                            type-pos term-pos
 +                            (buffer-substring-no-properties type-pos
 +                                                            term-pos)
                              (buffer-substring-no-properties beg end)))))))
  
          (if c-get-state-before-change-functions
          )))
      ;; The following must be done here rather than in `c-after-change' because
      ;; newly inserted parens would foul up the invalidation algorithm.
 -  (c-invalidate-state-cache beg))
 +    (c-invalidate-state-cache beg)))
  
  (defvar c-in-after-change-fontification nil)
  (make-variable-buffer-local 'c-in-after-change-fontification)
    ;; This calls the language variable c-before-font-lock-functions, if non nil.
    ;; This typically sets `syntax-table' properties.
  
 +  (setq c-just-done-before-change nil)
    (c-save-buffer-state (case-fold-search open-paren-in-column-0-is-defun-start)
      ;; When `combine-after-change-calls' is used we might get calls
      ;; with regions outside the current narrowing.  This has been
        ;; C-y is capable of spuriously converting category properties
        ;; c-</>-as-paren-syntax and c-cpp-delimiter into hard syntax-table
        ;; properties.  Remove these when it happens.
 -      (c-clear-char-property-with-value beg end 'syntax-table
 -                                        c-<-as-paren-syntax)
 -      (c-clear-char-property-with-value beg end 'syntax-table
 -                                        c->-as-paren-syntax)
 -      (c-clear-char-property-with-value beg end 'syntax-table nil)
 +      (when (eval-when-compile (memq 'category-properties c-emacs-features))
 +        (c-clear-char-property-with-value beg end 'syntax-table
 +                                          c-<-as-paren-syntax)
 +        (c-clear-char-property-with-value beg end 'syntax-table
 +                                          c->-as-paren-syntax)
 +        (c-clear-char-property-with-value beg end 'syntax-table nil))
  
        (c-trim-found-types beg end old-len) ; maybe we don't need all of these.
        (c-invalidate-sws-region-after beg end)
@@@ -1261,7 -1244,6 +1266,7 @@@ This function is called from `c-common-
        (make-local-hook 'font-lock-mode-hook))
    (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t))
  
 +;; Emacs 22 and later.
  (defun c-extend-after-change-region (_beg _end _old-len)
    "Extend the region to be fontified, if necessary."
    ;; Note: the parameters are ignored here.  This somewhat indirect
    ;; function.
    (cons c-new-BEG c-new-END))
  
 +;; Emacs < 22 and XEmacs
 +(defmacro c-advise-fl-for-region (function)
 +  `(defadvice ,function (before get-awk-region activate)
 +     ;; Make sure that any string/regexp is completely font-locked.
 +     (when c-buffer-is-cc-mode
 +       (save-excursion
 +       (ad-set-arg 1 c-new-END)   ; end
 +       (ad-set-arg 0 c-new-BEG)))))   ; beg
 +
 +(unless (boundp 'font-lock-extend-after-change-region-function)
 +  (c-advise-fl-for-region font-lock-after-change-function)
 +  (c-advise-fl-for-region jit-lock-after-change)
 +  (c-advise-fl-for-region lazy-lock-defer-rest-after-change)
 +  (c-advise-fl-for-region lazy-lock-defer-line-after-change))
 +
  ;; Connect up to `electric-indent-mode' (Emacs 24.4 and later).
  (defun c-electric-indent-mode-hook ()
    ;; Emacs has en/disabled `electric-indent-mode'.  Propagate this through to
  ;;;###autoload (add-to-list 'auto-mode-alist '("\\.i\\'" . c-mode))
  ;;;###autoload (add-to-list 'auto-mode-alist '("\\.ii\\'" . c++-mode))
  
 +(unless (fboundp 'prog-mode) (defalias 'prog-mode 'fundamental-mode))
  
  ;;;###autoload
  (define-derived-mode c-mode prog-mode "C"
@@@ -1818,8 -1784,4 +1823,8 @@@ Key bindings
  \f
  (cc-provide 'cc-mode)
  
 +;;; Local Variables:
 +;;; indent-tabs-mode: t
 +;;; tab-width: 8
 +;;; End:
  ;;; cc-mode.el ends here
diff --combined lisp/progmodes/python.el
index 4420faf3dfcdc8b822301c92b7f3d6bfb9215989,dea316ec32d5bed440fe7415c9c3e8a073e61456..1c3f7466c8c133e9320a58db7259fb23d0b5f57c
@@@ -31,9 -31,9 +31,9 @@@
  ;; found in GNU/Emacs.
  
  ;; Implements Syntax highlighting, Indentation, Movement, Shell
 -;; interaction, Shell completion, Shell virtualenv support, Pdb
 -;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc,
 -;; Imenu.
 +;; interaction, Shell completion, Shell virtualenv support, Shell
 +;; package support, Shell syntax highlighting, Pdb tracking, Symbol
 +;; completion, Skeletons, FFAP, Code Check, Eldoc, Imenu.
  
  ;; Syntax highlighting: Fontification of code is provided and supports
  ;; python's triple quoted strings properly.
@@@ -69,7 -69,7 +69,7 @@@
  ;; Besides that only the standard CPython (2.x and 3.x) shell and
  ;; IPython are officially supported out of the box, the interaction
  ;; should support any other readline based Python shells as well
 -;; (e.g. Jython and Pypy have been reported to work).  You can change
 +;; (e.g. Jython and PyPy have been reported to work).  You can change
  ;; your default interpreter and commandline arguments by setting the
  ;; `python-shell-interpreter' and `python-shell-interpreter-args'
  ;; variables.  This example enables IPython globally:
  ;; modify its behavior.
  
  ;; Shell completion: hitting tab will try to complete the current
 -;; word.  Shell completion is implemented in such way that if you
 -;; change the `python-shell-interpreter' it should be possible to
 -;; integrate custom logic to calculate completions.  To achieve this
 -;; you just need to set `python-shell-completion-setup-code' and
 -;; `python-shell-completion-string-code'.  The default provided code,
 -;; enables autocompletion for both CPython and IPython (and ideally
 -;; any readline based Python shell).  This code depends on the
 -;; readline module, so if you are using some Operating System that
 -;; bundles Python without it (like Windows), installing pyreadline
 -;; from URL `http://ipython.scipy.org/moin/PyReadline/Intro' should
 -;; suffice.  To troubleshoot why you are not getting any completions
 -;; you can try the following in your Python shell:
 +;; word.  The two built-in mechanisms depend on Python's readline
 +;; module: the "native" completion is tried first and is activated
 +;; when `python-shell-completion-native-enable' is non-nil, the
 +;; current `python-shell-interpreter' is not a member of the
 +;; `python-shell-completion-native-disabled-interpreters' variable and
 +;; `python-shell-completion-native-setup' succeeds; the "fallback" or
 +;; "legacy" mechanism works by executing Python code in the background
 +;; and enables auto-completion for shells that do not support
 +;; receiving escape sequences (with some limitations, i.e. completion
 +;; in blocks does not work).  The code executed for the "fallback"
 +;; completion can be found in `python-shell-completion-setup-code' and
 +;; `python-shell-completion-string-code' variables.  Their default
 +;; values enable completion for both CPython and IPython, and probably
 +;; any readline based shell (it's known to work with PyPy).  If your
 +;; Python installation lacks readline (like CPython for Windows),
 +;; installing pyreadline (URL `http://ipython.org/pyreadline.html')
 +;; should suffice.  To troubleshoot why you are not getting any
 +;; completions, you can try the following in your Python shell:
  
  ;; >>> import readline, rlcompleter
  
  ;; (python-shell-exec-path . ("/path/to/env/bin/"))
  
  ;; Since the above is cumbersome and can be programmatically
 -;; calculated, the variable `python-shell-virtualenv-path' is
 +;; calculated, the variable `python-shell-virtualenv-root' is
  ;; provided.  When this variable is set with the path of the
  ;; virtualenv to use, `process-environment' and `exec-path' get proper
  ;; values in order to run shells inside the specified virtualenv.  So
  ;; the following will achieve the same as the previous example:
  
 -;; (setq python-shell-virtualenv-path "/path/to/env/")
 +;; (setq python-shell-virtualenv-root "/path/to/env/")
  
  ;; Also the `python-shell-extra-pythonpaths' variable have been
  ;; introduced as simple way of adding paths to the PYTHONPATH without
  ;; affecting existing values.
  
 +;; Shell package support: you can enable a package in the current
 +;; shell so that relative imports work properly using the
 +;; `python-shell-package-enable' command.
 +
 +;; Shell syntax highlighting: when enabled current input in shell is
 +;; highlighted.  The variable `python-shell-font-lock-enable' controls
 +;; activation of this feature globally when shells are started.
 +;; Activation/deactivation can be also controlled on the fly via the
 +;; `python-shell-font-lock-toggle' command.
 +
  ;; Pdb tracking: when you execute a block of code that contains some
  ;; call to pdb (or ipdb) it will prompt the block of code and will
  ;; follow the execution of pdb marking the current line with an arrow.
  ;; the shell completion in background so you should run
  ;; `python-shell-send-buffer' from time to time to get better results.
  
 -;; Skeletons: 6 skeletons are provided for simple inserting of class,
 -;; def, for, if, try and while.  These skeletons are integrated with
 -;; abbrev.  If you have `abbrev-mode' activated and
 +;; Skeletons: skeletons are provided for simple inserting of things like class,
 +;; def, for, import, if, try, and while.  These skeletons are
 +;; integrated with abbrev.  If you have `abbrev-mode' activated and
  ;; `python-skeleton-autoinsert' is set to t, then whenever you type
  ;; the name of any of those defined and hit SPC, they will be
  ;; automatically expanded.  As an alternative you can use the defined
 -;; skeleton commands: `python-skeleton-class', `python-skeleton-def'
 -;; `python-skeleton-for', `python-skeleton-if', `python-skeleton-try'
 -;; and `python-skeleton-while'.
 +;; skeleton commands: `python-skeleton-<foo>'.
  
  ;; FFAP: You can find the filename for a given module when using ffap
  ;; out of the box.  This feature needs an inferior python shell
  (defvar outline-heading-end-regexp)
  
  (autoload 'comint-mode "comint")
 +(autoload 'help-function-arglist "help-fns")
  
  ;;;###autoload
  (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'")  'python-mode))
      (define-key map "\C-c\C-td" 'python-skeleton-def)
      (define-key map "\C-c\C-tf" 'python-skeleton-for)
      (define-key map "\C-c\C-ti" 'python-skeleton-if)
 +    (define-key map "\C-c\C-tm" 'python-skeleton-import)
      (define-key map "\C-c\C-tt" 'python-skeleton-try)
      (define-key map "\C-c\C-tw" 'python-skeleton-while)
      ;; Shell interaction
@@@ -482,23 -466,6 +482,23 @@@ The type returned can be `comment', `st
    'python-info-ppss-comment-or-string-p
    #'python-syntax-comment-or-string-p "24.3")
  
 +(defun python-docstring-at-p (pos)
 +  "Check to see if there is a docstring at POS."
 +  (save-excursion
 +    (goto-char pos)
 +    (if (looking-at-p "'''\\|\"\"\"")
 +        (progn
 +          (python-nav-backward-statement)
 +          (looking-at "\\`\\|class \\|def "))
 +      nil)))
 +
 +(defun python-font-lock-syntactic-face-function (state)
 +  (if (nth 3 state)
 +      (if (python-docstring-at-p (nth 8 state))
 +          font-lock-doc-face
 +        font-lock-string-face)
 +    font-lock-comment-face))
 +
  (defvar python-font-lock-keywords
    ;; Keywords
    `(,(rx symbol-start
                (res nil))
            (while (and (setq res (re-search-forward re limit t))
                        (or (python-syntax-context 'paren)
 -                          (equal (char-after (point-marker)) ?=))))
 +                          (equal (char-after (point)) ?=))))
            res))
       (1 font-lock-variable-name-face nil nil))
      ;; support for a, b, c = (1, 2, 3)
@@@ -843,15 -810,6 +843,6 @@@ keywor
         ;; Beginning of buffer.
         ((= (line-number-at-pos) 1)
          (cons :no-indent 0))
-        ;; Comment continuation (maybe).
-        ((save-excursion
-           (when (and
-                  (or
-                   (python-info-current-line-comment-p)
-                   (python-info-current-line-empty-p))
-                  (forward-comment -1)
-                  (python-info-current-line-comment-p))
-             (cons :after-comment (point)))))
         ;; Inside a string.
         ((let ((start (python-syntax-context 'string ppss)))
            (when start
         ((let ((start (python-info-dedenter-statement-p)))
            (when start
              (cons :at-dedenter-block-start start))))
-        ;; After normal line.
-        ((let ((start (save-excursion
-                        (back-to-indentation)
-                        (skip-chars-backward " \t\n")
-                        (python-nav-beginning-of-statement)
-                        (point))))
-           (when start
-             (if (save-excursion
-                   (python-util-forward-comment -1)
-                   (python-nav-beginning-of-statement)
-                   (looking-at (python-rx block-ender)))
-                 (cons :after-block-end start)
-               (cons :after-line start)))))
-        ;; Default case: do not indent.
-        (t (cons :no-indent 0))))))
+        ;; After normal line, comment or ender (default case).
+        ((save-excursion
+           (back-to-indentation)
+           (skip-chars-backward " \t\n")
+           (python-nav-beginning-of-statement)
+           (cons
+            (cond ((python-info-current-line-comment-p)
+                   :after-comment)
+                  ((save-excursion
+                     (goto-char (line-end-position))
+                     (python-util-forward-comment -1)
+                     (python-nav-beginning-of-statement)
+                     (looking-at (python-rx block-ender)))
+                   :after-block-end)
+                  (t :after-line))
+            (point))))))))
  
  (defun python-indent--calculate-indentation ()
    "Internal implementation of `python-indent-calculate-indentation'.
  May return an integer for the maximum possible indentation at
  current context or a list of integers.  The latter case is only
  happening for :at-dedenter-block-start context since the
- possibilities can be narrowed to especific indentation points."
+ possibilities can be narrowed to specific indentation points."
    (save-restriction
      (widen)
      (save-excursion
@@@ -1068,14 -1027,12 +1060,14 @@@ minimum.
           (levels (python-indent--calculate-levels indentation)))
      (if previous
          (python-indent--previous-level levels (current-indentation))
 -      (apply #'max levels))))
 +      (if levels
 +          (apply #'max levels)
 +        0))))
  
  (defun python-indent-line (&optional previous)
    "Internal implementation of `python-indent-line-function'.
  Use the PREVIOUS level when argument is non-nil, otherwise indent
- to the maxium available level.  When indentation is the minimum
+ to the maximum available level.  When indentation is the minimum
  possible and PREVIOUS is non-nil, cycle back to the maximum
  level."
    (let ((follow-indentation-p
@@@ -1110,9 -1067,7 +1102,7 @@@ indentation levels from right to left.
    (interactive "*")
    (when (and (not (bolp))
             (not (python-syntax-comment-or-string-p))
-            (= (+ (line-beginning-position)
-                  (current-indentation))
-               (point)))
+            (= (current-indentation) (current-column)))
        (python-indent-line t)
        t))
  
@@@ -1189,10 -1144,12 +1179,10 @@@ any lines in the region are indented le
          (while (< (point) end)
            (if (and (< (current-indentation) count)
                     (not (looking-at "[ \t]*$")))
 -              (error "Can't shift all lines enough"))
 +              (user-error "Can't shift all lines enough"))
            (forward-line))
          (indent-rigidly start end (- count))))))
  
 -(add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
 -
  (defun python-indent-shift-right (start end &optional count)
    "Shift lines contained in region START END by COUNT columns to the right.
  COUNT defaults to `python-indent-offset'.  If region isn't
@@@ -1234,7 -1191,7 +1224,7 @@@ the line will be re-indented automatica
        (save-excursion
          (goto-char (line-beginning-position))
          (let ((indentation (python-indent-calculate-indentation)))
 -          (when (< (current-indentation) indentation)
 +          (when (and (numberp indentation) (< (current-indentation) indentation))
              (indent-line-to indentation)))))
       ;; Electric colon
       ((and (eq ?: last-command-event)
@@@ -1848,7 -1805,6 +1838,7 @@@ position, else returns nil.
  (defcustom python-shell-prompt-input-regexps
    '(">>> " "\\.\\.\\. "                 ; Python
      "In \\[[0-9]+\\]: "                 ; IPython
 +    "   \\.\\.\\.: "                    ; IPython
      ;; Using ipdb outside IPython may fail to cleanup and leave static
      ;; IPython prompts activated, this adds some safeguard for that.
      "In : " "\\.\\.\\.: ")
@@@ -1884,10 -1840,7 +1874,10 @@@ It should not contain a caret (^) at th
  It should not contain a caret (^) at the beginning."
    :type 'string)
  
 -(defcustom python-shell-enable-font-lock t
 +(define-obsolete-variable-alias
 +  'python-shell-enable-font-lock 'python-shell-font-lock-enable "25.1")
 +
 +(defcustom python-shell-font-lock-enable t
    "Should syntax highlighting be enabled in the Python shell buffer?
  Restart the Python shell after changing this variable for it to take effect."
    :type 'boolean
@@@ -1930,7 -1883,7 +1920,7 @@@ default `exec-path'.
    :group 'python
    :safe 'listp)
  
 -(defcustom python-shell-virtualenv-path nil
 +(defcustom python-shell-virtualenv-root nil
    "Path to virtualenv root.
  This variable, when set to a string, makes the values stored in
  `python-shell-process-environment' and `python-shell-exec-path'
@@@ -1940,9 -1893,6 +1930,9 @@@ virtualenv.
    :group 'python
    :safe 'stringp)
  
 +(define-obsolete-variable-alias
 +  'python-shell-virtualenv-path 'python-shell-virtualenv-root "25.1")
 +
  (defcustom python-shell-setup-codes '(python-shell-completion-setup-code
                                        python-ffap-setup-code
                                        python-eldoc-setup-code)
@@@ -2034,9 -1984,7 +2024,9 @@@ detection and just returns nil.
                nil)))
        (when (and (not prompts)
                   python-shell-prompt-detect-failure-warning)
 -        (warn
 +        (lwarn
 +         '(python python-shell-prompt-regexp)
 +         :warning
           (concat
            "Python shell prompts cannot be detected.\n"
            "If your emacs session hangs when starting python shells\n"
@@@ -2131,57 -2079,67 +2121,57 @@@ and `python-shell-output-prompt-regexp
  
  (defun python-shell-get-process-name (dedicated)
    "Calculate the appropriate process name for inferior Python process.
 -If DEDICATED is t and the variable `buffer-file-name' is non-nil
 -returns a string with the form
 -`python-shell-buffer-name'[variable `buffer-file-name'] else
 -returns the value of `python-shell-buffer-name'."
 -  (let ((process-name
 -         (if (and dedicated
 -                  buffer-file-name)
 -             (format "%s[%s]" python-shell-buffer-name buffer-file-name)
 -           (format "%s" python-shell-buffer-name))))
 -    process-name))
 +If DEDICATED is t returns a string with the form
 +`python-shell-buffer-name'[`buffer-name'] else returns the value
 +of `python-shell-buffer-name'."
 +  (if dedicated
 +      (format "%s[%s]" python-shell-buffer-name (buffer-name))
 +    python-shell-buffer-name))
  
  (defun python-shell-internal-get-process-name ()
    "Calculate the appropriate process name for Internal Python process.
  The name is calculated from `python-shell-global-buffer-name' and
 -a hash of all relevant global shell settings in order to ensure
 -uniqueness for different types of configurations."
 -  (format "%s [%s]"
 -          python-shell-internal-buffer-name
 -          (md5
 -           (concat
 -            python-shell-interpreter
 -            python-shell-interpreter-args
 -            python-shell--prompt-calculated-input-regexp
 -            python-shell--prompt-calculated-output-regexp
 -            (mapconcat #'symbol-value python-shell-setup-codes "")
 -            (mapconcat #'identity python-shell-process-environment "")
 -            (mapconcat #'identity python-shell-extra-pythonpaths "")
 -            (mapconcat #'identity python-shell-exec-path "")
 -            (or python-shell-virtualenv-path "")
 -            (mapconcat #'identity python-shell-exec-path "")))))
 -
 -(defun python-shell-parse-command ()    ;FIXME: why name it "parse"?
 +the `buffer-name'."
 +  (format "%s[%s]" python-shell-internal-buffer-name (buffer-name)))
 +
 +(defun python-shell-calculate-command ()
    "Calculate the string used to execute the inferior Python process."
 -  ;; FIXME: process-environment doesn't seem to be used anywhere within
 -  ;; this let.
 -  (let ((process-environment (python-shell-calculate-process-environment))
 -        (exec-path (python-shell-calculate-exec-path)))
 +  (let ((exec-path (python-shell-calculate-exec-path)))
 +    ;; `exec-path' gets tweaked so that virtualenv's specific
 +    ;; `python-shell-interpreter' absolute path can be found by
 +    ;; `executable-find'.
      (format "%s %s"
              ;; FIXME: Why executable-find?
              (shell-quote-argument
               (executable-find python-shell-interpreter))
              python-shell-interpreter-args)))
  
 +(define-obsolete-function-alias
 +  'python-shell-parse-command
 +  #'python-shell-calculate-command "25.1")
 +
 +(defun python-shell-calculate-pythonpath ()
 +  "Calculate the PYTHONPATH using `python-shell-extra-pythonpaths'."
 +  (let ((pythonpath (getenv "PYTHONPATH"))
 +        (extra (mapconcat 'identity
 +                          python-shell-extra-pythonpaths
 +                          path-separator)))
 +    (if pythonpath
 +        (concat extra path-separator pythonpath)
 +      extra)))
 +
  (defun python-shell-calculate-process-environment ()
 -  "Calculate process environment given `python-shell-virtualenv-path'."
 +  "Calculate process environment given `python-shell-virtualenv-root'."
    (let ((process-environment (append
                                python-shell-process-environment
                                process-environment nil))
 -        (virtualenv (if python-shell-virtualenv-path
 -                        (directory-file-name python-shell-virtualenv-path)
 +        (virtualenv (if python-shell-virtualenv-root
 +                        (directory-file-name python-shell-virtualenv-root)
                        nil)))
      (when python-shell-unbuffered
        (setenv "PYTHONUNBUFFERED" "1"))
      (when python-shell-extra-pythonpaths
 -      (setenv "PYTHONPATH"
 -              (format "%s%s%s"
 -                      (mapconcat 'identity
 -                                 python-shell-extra-pythonpaths
 -                                 path-separator)
 -                      path-separator
 -                      (or (getenv "PYTHONPATH") ""))))
 +      (setenv "PYTHONPATH" (python-shell-calculate-pythonpath)))
      (if (not virtualenv)
          process-environment
        (setenv "PYTHONHOME" nil)
      process-environment))
  
  (defun python-shell-calculate-exec-path ()
 -  "Calculate exec path given `python-shell-virtualenv-path'."
 -  (let ((path (append python-shell-exec-path
 -                      exec-path nil)))  ;FIXME: Why nil?
 -    (if (not python-shell-virtualenv-path)
 +  "Calculate exec path given `python-shell-virtualenv-root'."
 +  (let ((path (append
 +               ;; Use nil as the tail so that the list is a full copy,
 +               ;; this is a paranoid safeguard for side-effects.
 +               python-shell-exec-path exec-path nil)))
 +    (if (not python-shell-virtualenv-root)
          path
 -      (cons (expand-file-name "bin" python-shell-virtualenv-path)
 +      (cons (expand-file-name "bin" python-shell-virtualenv-root)
              path))))
  
 -(defun python-comint-output-filter-function (output)
 -  "Hook run after content is put into comint buffer.
 -OUTPUT is a string with the contents of the buffer."
 -  (ansi-color-filter-apply output))
 +(defvar python-shell--package-depth 10)
 +
 +(defun python-shell-package-enable (directory package)
 +  "Add DIRECTORY parent to $PYTHONPATH and enable PACKAGE."
 +  (interactive
 +   (let* ((dir (expand-file-name
 +                (read-directory-name
 +                 "Package root: "
 +                 (file-name-directory
 +                  (or (buffer-file-name) default-directory)))))
 +          (name (completing-read
 +                 "Package: "
 +                 (python-util-list-packages
 +                  dir python-shell--package-depth))))
 +     (list dir name)))
 +  (python-shell-send-string
 +   (format
 +    (concat
 +     "import os.path;import sys;"
 +     "sys.path.append(os.path.dirname(os.path.dirname('''%s''')));"
 +     "__package__ = '''%s''';"
 +     "import %s")
 +    directory package package)
 +   (python-shell-get-process)))
 +
 +(defun python-shell-accept-process-output (process &optional timeout regexp)
 +  "Accept PROCESS output with TIMEOUT until REGEXP is found.
 +Optional argument TIMEOUT is the timeout argument to
 +`accept-process-output' calls.  Optional argument REGEXP
 +overrides the regexp to match the end of output, defaults to
 +`comint-prompt-regexp.'.  Returns non-nil when output was
 +properly captured.
 +
 +This utility is useful in situations where the output may be
 +received in chunks, since `accept-process-output' gives no
 +guarantees they will be grabbed in a single call.  An example use
 +case for this would be the CPython shell start-up, where the
 +banner and the initial prompt are received separately."
 +  (let ((regexp (or regexp comint-prompt-regexp)))
 +    (catch 'found
 +      (while t
 +        (when (not (accept-process-output process timeout))
 +          (throw 'found nil))
 +        (when (looking-back regexp)
 +          (throw 'found t))))))
 +
 +(defun python-shell-comint-end-of-output-p (output)
 +  "Return non-nil if OUTPUT is ends with input prompt."
 +  (string-match
 +   ;; XXX: It seems on OSX an extra carriage return is attached
 +   ;; at the end of output, this handles that too.
 +   (concat
 +    "\r?\n?"
 +    ;; Remove initial caret from calculated regexp
 +    (replace-regexp-in-string
 +     (rx string-start ?^) ""
 +     python-shell--prompt-calculated-input-regexp)
 +    (rx eos))
 +   output))
 +
 +(define-obsolete-function-alias
 +  'python-comint-output-filter-function
 +  'ansi-color-filter-apply
 +  "25.1")
 +
 +(defun python-comint-postoutput-scroll-to-bottom (output)
 +  "Faster version of `comint-postoutput-scroll-to-bottom'.
 +Avoids `recenter' calls until OUTPUT is completely sent."
 +  (when (and (not (string= "" output))
 +             (python-shell-comint-end-of-output-p
 +              (ansi-color-filter-apply output)))
 +    (comint-postoutput-scroll-to-bottom output))
 +  output)
  
  (defvar python-shell--parent-buffer nil)
  
 -(defvar python-shell-output-syntax-table
 -  (let ((table (make-syntax-table python-dotty-syntax-table)))
 -    (modify-syntax-entry ?\' "." table)
 -    (modify-syntax-entry ?\" "." table)
 -    (modify-syntax-entry ?\( "." table)
 -    (modify-syntax-entry ?\[ "." table)
 -    (modify-syntax-entry ?\{ "." table)
 -    (modify-syntax-entry ?\) "." table)
 -    (modify-syntax-entry ?\] "." table)
 -    (modify-syntax-entry ?\} "." table)
 -    table)
 -  "Syntax table for shell output.
 -It makes parens and quotes be treated as punctuation chars.")
 +(defmacro python-shell-with-shell-buffer (&rest body)
 +  "Execute the forms in BODY with the shell buffer temporarily current.
 +Signals an error if no shell buffer is available for current buffer."
 +  (declare (indent 0) (debug t))
 +  (let ((shell-process (make-symbol "shell-process")))
 +    `(let ((,shell-process (python-shell-get-process-or-error)))
 +       (with-current-buffer (process-buffer ,shell-process)
 +         ,@body))))
 +
 +(defvar python-shell--font-lock-buffer nil)
 +
 +(defun python-shell-font-lock-get-or-create-buffer ()
 +  "Get or create a font-lock buffer for current inferior process."
 +  (python-shell-with-shell-buffer
 +    (if python-shell--font-lock-buffer
 +        python-shell--font-lock-buffer
 +      (let ((process-name
 +             (process-name (get-buffer-process (current-buffer)))))
 +        (generate-new-buffer
 +         (format " *%s-font-lock*" process-name))))))
 +
 +(defun python-shell-font-lock-kill-buffer ()
 +  "Kill the font-lock buffer safely."
 +  (when (and python-shell--font-lock-buffer
 +             (buffer-live-p python-shell--font-lock-buffer))
 +    (kill-buffer python-shell--font-lock-buffer)
 +    (when (derived-mode-p 'inferior-python-mode)
 +      (setq python-shell--font-lock-buffer nil))))
 +
 +(defmacro python-shell-font-lock-with-font-lock-buffer (&rest body)
 +  "Execute the forms in BODY in the font-lock buffer.
 +The value returned is the value of the last form in BODY.  See
 +also `with-current-buffer'."
 +  (declare (indent 0) (debug t))
 +  `(python-shell-with-shell-buffer
 +     (save-current-buffer
 +       (when (not (and python-shell--font-lock-buffer
 +                       (get-buffer python-shell--font-lock-buffer)))
 +         (setq python-shell--font-lock-buffer
 +               (python-shell-font-lock-get-or-create-buffer)))
 +       (set-buffer python-shell--font-lock-buffer)
 +       (when (not font-lock-mode)
 +         (font-lock-mode 1))
 +       (set (make-local-variable 'delay-mode-hooks) t)
 +       (let ((python-indent-guess-indent-offset nil))
 +         (when (not (derived-mode-p 'python-mode))
 +           (python-mode))
 +         ,@body))))
 +
 +(defun python-shell-font-lock-cleanup-buffer ()
 +  "Cleanup the font-lock buffer.
 +Provided as a command because this might be handy if something
 +goes wrong and syntax highlighting in the shell gets messed up."
 +  (interactive)
 +  (python-shell-with-shell-buffer
 +    (python-shell-font-lock-with-font-lock-buffer
 +      (erase-buffer))))
 +
 +(defun python-shell-font-lock-comint-output-filter-function (output)
 +  "Clean up the font-lock buffer after any OUTPUT."
 +  (if (and (not (string= "" output))
 +           ;; Is end of output and is not just a prompt.
 +           (not (member
 +                 (python-shell-comint-end-of-output-p
 +                  (ansi-color-filter-apply output))
 +                 '(nil 0))))
 +      ;; If output is other than an input prompt then "real" output has
 +      ;; been received and the font-lock buffer must be cleaned up.
 +      (python-shell-font-lock-cleanup-buffer)
 +    ;; Otherwise just add a newline.
 +    (python-shell-font-lock-with-font-lock-buffer
 +      (goto-char (point-max))
 +      (newline)))
 +  output)
 +
 +(defun python-shell-font-lock-post-command-hook ()
 +  "Fontifies current line in shell buffer."
 +  (let ((prompt-end (cdr (python-util-comint-last-prompt))))
 +    (when (and prompt-end (> (point) prompt-end)
 +               (process-live-p (get-buffer-process (current-buffer))))
 +      (let* ((input (buffer-substring-no-properties
 +                     prompt-end (point-max)))
 +             (deactivate-mark nil)
 +             (start-pos prompt-end)
 +             (buffer-undo-list t)
 +             (font-lock-buffer-pos nil)
 +             (replacement
 +              (python-shell-font-lock-with-font-lock-buffer
 +                (delete-region (line-beginning-position)
 +                               (point-max))
 +                (setq font-lock-buffer-pos (point))
 +                (insert input)
 +                ;; Ensure buffer is fontified, keeping it
 +                ;; compatible with Emacs < 24.4.
 +                (if (fboundp 'font-lock-ensure)
 +                    (funcall 'font-lock-ensure)
 +                  (font-lock-default-fontify-buffer))
 +                (buffer-substring font-lock-buffer-pos
 +                                  (point-max))))
 +             (replacement-length (length replacement))
 +             (i 0))
 +        ;; Inject text properties to get input fontified.
 +        (while (not (= i replacement-length))
 +          (let* ((plist (text-properties-at i replacement))
 +                 (next-change (or (next-property-change i replacement)
 +                                  replacement-length))
 +                 (plist (let ((face (plist-get plist 'face)))
 +                          (if (not face)
 +                              plist
 +                            ;; Replace FACE text properties with
 +                            ;; FONT-LOCK-FACE so input is fontified.
 +                            (plist-put plist 'face nil)
 +                            (plist-put plist 'font-lock-face face)))))
 +            (set-text-properties
 +             (+ start-pos i) (+ start-pos next-change) plist)
 +            (setq i next-change)))))))
 +
 +(defun python-shell-font-lock-turn-on (&optional msg)
 +  "Turn on shell font-lock.
 +With argument MSG show activation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (python-shell-font-lock-kill-buffer)
 +    (set (make-local-variable 'python-shell--font-lock-buffer) nil)
 +    (add-hook 'post-command-hook
 +              #'python-shell-font-lock-post-command-hook nil 'local)
 +    (add-hook 'kill-buffer-hook
 +              #'python-shell-font-lock-kill-buffer nil 'local)
 +    (add-hook 'comint-output-filter-functions
 +              #'python-shell-font-lock-comint-output-filter-function
 +              'append 'local)
 +    (when msg
 +      (message "Shell font-lock is enabled"))))
 +
 +(defun python-shell-font-lock-turn-off (&optional msg)
 +  "Turn off shell font-lock.
 +With argument MSG show deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (python-shell-font-lock-kill-buffer)
 +    (when (python-util-comint-last-prompt)
 +      ;; Cleanup current fontification
 +      (remove-text-properties
 +       (cdr (python-util-comint-last-prompt))
 +       (line-end-position)
 +       '(face nil font-lock-face nil)))
 +    (set (make-local-variable 'python-shell--font-lock-buffer) nil)
 +    (remove-hook 'post-command-hook
 +                 #'python-shell-font-lock-post-command-hook 'local)
 +    (remove-hook 'kill-buffer-hook
 +                 #'python-shell-font-lock-kill-buffer 'local)
 +    (remove-hook 'comint-output-filter-functions
 +                 #'python-shell-font-lock-comint-output-filter-function
 +                 'local)
 +    (when msg
 +      (message "Shell font-lock is disabled"))))
 +
 +(defun python-shell-font-lock-toggle (&optional msg)
 +  "Toggle font-lock for shell.
 +With argument MSG show activation/deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (set (make-local-variable 'python-shell-font-lock-enable)
 +         (not python-shell-font-lock-enable))
 +    (if python-shell-font-lock-enable
 +        (python-shell-font-lock-turn-on msg)
 +      (python-shell-font-lock-turn-off msg))
 +    python-shell-font-lock-enable))
  
  (define-derived-mode inferior-python-mode comint-mode "Inferior Python"
    "Major mode for Python inferior process.
@@@ -2456,17 -2188,13 +2446,17 @@@ interpreter is run.  Variable
  `python-shell-prompt-regexp',
  `python-shell-prompt-output-regexp',
  `python-shell-prompt-block-regexp',
 -`python-shell-enable-font-lock',
 +`python-shell-font-lock-enable',
  `python-shell-completion-setup-code',
  `python-shell-completion-string-code',
  `python-eldoc-setup-code', `python-eldoc-string-code',
  `python-ffap-setup-code' and `python-ffap-string-code' can
  customize this mode for different Python interpreters.
  
 +This mode resets `comint-output-filter-functions' locally, so you
 +may want to re-add custom functions to it using the
 +`inferior-python-mode-hook'.
 +
  You can also add additional setup code to be run at
  initialization of the interpreter via `python-shell-setup-codes'
  variable.
    (set (make-local-variable 'python-shell--prompt-calculated-output-regexp) nil)
    (python-shell-prompt-set-calculated-regexps)
    (setq comint-prompt-regexp python-shell--prompt-calculated-input-regexp)
 +  (set (make-local-variable 'comint-prompt-read-only) t)
    (setq mode-line-process '(":%s"))
 -  (make-local-variable 'comint-output-filter-functions)
 -  (add-hook 'comint-output-filter-functions
 -            'python-comint-output-filter-function)
 -  (add-hook 'comint-output-filter-functions
 -            'python-pdbtrack-comint-output-filter-function)
 +  (set (make-local-variable 'comint-output-filter-functions)
 +       '(ansi-color-process-output
 +         python-pdbtrack-comint-output-filter-function
 +         python-comint-postoutput-scroll-to-bottom))
    (set (make-local-variable 'compilation-error-regexp-alist)
         python-shell-compilation-regexp-alist)
 -  (define-key inferior-python-mode-map [remap complete-symbol]
 -    'completion-at-point)
    (add-hook 'completion-at-point-functions
 -            #'python-shell-completion-complete-at-point nil 'local)
 -  (add-hook 'comint-dynamic-complete-functions ;FIXME: really?
 -            #'python-shell-completion-complete-at-point nil 'local)
 +            #'python-shell-completion-at-point nil 'local)
    (define-key inferior-python-mode-map "\t"
      'python-shell-completion-complete-or-indent)
    (make-local-variable 'python-pdbtrack-buffers-to-kill)
    (make-local-variable 'python-pdbtrack-tracked-buffer)
    (make-local-variable 'python-shell-internal-last-output)
 -  (when python-shell-enable-font-lock
 -    (set-syntax-table python-mode-syntax-table)
 -    (set (make-local-variable 'font-lock-defaults)
 -         '(python-font-lock-keywords nil nil nil nil))
 -    (set (make-local-variable 'syntax-propertize-function)
 -         (eval
 -          ;; XXX: Unfortunately eval is needed here to make use of the
 -          ;; dynamic value of `comint-prompt-regexp'.
 -          `(syntax-propertize-rules
 -            (,comint-prompt-regexp
 -             (0 (ignore
 -                 (put-text-property
 -                  comint-last-input-start end 'syntax-table
 -                  python-shell-output-syntax-table)
 -                 ;; XXX: This might look weird, but it is the easiest
 -                 ;; way to ensure font lock gets cleaned up before the
 -                 ;; current prompt, which is needed for unclosed
 -                 ;; strings to not mess up with current input.
 -                 (font-lock-unfontify-region comint-last-input-start end))))
 -            (,(python-rx string-delimiter)
 -             (0 (ignore
 -                 (and (not (eq (get-text-property start 'field) 'output))
 -                      (python-syntax-stringify)))))))))
 -  (compilation-shell-minor-mode 1))
 -
 -(defun python-shell-make-comint (cmd proc-name &optional pop internal)
 +  (when python-shell-font-lock-enable
 +    (python-shell-font-lock-turn-on))
 +  (compilation-shell-minor-mode 1)
 +  (python-shell-accept-process-output
 +   (get-buffer-process (current-buffer))))
 +
 +(defun python-shell-make-comint (cmd proc-name &optional show internal)
    "Create a Python shell comint buffer.
  CMD is the Python command to be executed and PROC-NAME is the
  process name the comint buffer will get.  After the comint buffer
  is created the `inferior-python-mode' is activated.  When
 -optional argument POP is non-nil the buffer is shown.  When
 +optional argument SHOW is non-nil the buffer is shown.  When
  optional argument INTERNAL is non-nil this process is run on a
  buffer with a name that starts with a space, following the Emacs
  convention for temporary/internal buffers, and also makes sure
@@@ -2540,24 -2291,22 +2530,24 @@@ killed.
                  (mapconcat #'identity args " ")))
            (with-current-buffer buffer
              (inferior-python-mode))
 -          (accept-process-output process)
 -          (and pop (pop-to-buffer buffer t))
 +          (when show (display-buffer buffer))
            (and internal (set-process-query-on-exit-flag process nil))))
        proc-buffer-name)))
  
  ;;;###autoload
 -(defun run-python (cmd &optional dedicated show)
 +(defun run-python (&optional cmd dedicated show)
    "Run an inferior Python process.
 -Input and output via buffer named after
 -`python-shell-buffer-name'.  If there is a process already
 -running in that buffer, just switch to it.
  
 -With argument, allows you to define CMD so you can edit the
 -command used to call the interpreter and define DEDICATED, so a
 -dedicated process for the current buffer is open.  When numeric
 -prefix arg is other than 0 or 4 do not SHOW.
 +Argument CMD defaults to `python-shell-calculate-command' return
 +value.  When called interactively with `prefix-arg', it allows
 +the user to edit such value and choose whether the interpreter
 +should be DEDICATED for the current buffer.  When numeric prefix
 +arg is other than 0 or 4 do not SHOW.
 +
 +For a given buffer and same values of DEDICATED, if a process is
 +already running for it, it will do nothing.  This means that if
 +the current buffer is using a global process, the user is still
 +able to switch it to use a dedicated one.
  
  Runs the hook `inferior-python-mode-hook' after
  `comint-mode-hook' is run.  (Type \\[describe-mode] in the
@@@ -2565,14 -2314,13 +2555,14 @@@ process buffer for a list of commands.)
    (interactive
     (if current-prefix-arg
         (list
 -        (read-string "Run Python: " (python-shell-parse-command))
 +        (read-shell-command "Run Python: " (python-shell-calculate-command))
          (y-or-n-p "Make dedicated process? ")
          (= (prefix-numeric-value current-prefix-arg) 4))
 -     (list (python-shell-parse-command) nil t)))
 -  (python-shell-make-comint
 -   cmd (python-shell-get-process-name dedicated) show)
 -  dedicated)
 +     (list (python-shell-calculate-command) nil t)))
 +  (get-buffer-process
 +   (python-shell-make-comint
 +    (or cmd (python-shell-calculate-command))
 +    (python-shell-get-process-name dedicated) show)))
  
  (defun run-python-internal ()
    "Run an inferior Internal Python process.
@@@ -2586,69 -2334,57 +2576,69 @@@ difference with global or dedicated she
  attached to a configuration, not a buffer.  This means that can
  be used for example to retrieve the sys.path and other stuff,
  without messing with user shells.  Note that
 -`python-shell-enable-font-lock' and `inferior-python-mode-hook'
 +`python-shell-font-lock-enable' and `inferior-python-mode-hook'
  are set to nil for these shells, so setup codes are not sent at
  startup."
 -  (let ((python-shell-enable-font-lock nil)
 +  (let ((python-shell-font-lock-enable nil)
          (inferior-python-mode-hook nil))
      (get-buffer-process
       (python-shell-make-comint
 -      (python-shell-parse-command)
 +      (python-shell-calculate-command)
        (python-shell-internal-get-process-name) nil t))))
  
  (defun python-shell-get-buffer ()
 -  "Return inferior Python buffer for current buffer."
 -  (let* ((dedicated-proc-name (python-shell-get-process-name t))
 -         (dedicated-proc-buffer-name (format "*%s*" dedicated-proc-name))
 -         (global-proc-name  (python-shell-get-process-name nil))
 -         (global-proc-buffer-name (format "*%s*" global-proc-name))
 -         (dedicated-running (comint-check-proc dedicated-proc-buffer-name))
 -         (global-running (comint-check-proc global-proc-buffer-name)))
 -    ;; Always prefer dedicated
 -    (or (and dedicated-running dedicated-proc-buffer-name)
 -        (and global-running global-proc-buffer-name))))
 +  "Return inferior Python buffer for current buffer.
 +If current buffer is in `inferior-python-mode', return it."
 +  (if (derived-mode-p 'inferior-python-mode)
 +      (current-buffer)
 +    (let* ((dedicated-proc-name (python-shell-get-process-name t))
 +           (dedicated-proc-buffer-name (format "*%s*" dedicated-proc-name))
 +           (global-proc-name  (python-shell-get-process-name nil))
 +           (global-proc-buffer-name (format "*%s*" global-proc-name))
 +           (dedicated-running (comint-check-proc dedicated-proc-buffer-name))
 +           (global-running (comint-check-proc global-proc-buffer-name)))
 +      ;; Always prefer dedicated
 +      (or (and dedicated-running dedicated-proc-buffer-name)
 +          (and global-running global-proc-buffer-name)))))
  
  (defun python-shell-get-process ()
    "Return inferior Python process for current buffer."
    (get-buffer-process (python-shell-get-buffer)))
  
 +(defun python-shell-get-process-or-error (&optional interactivep)
 +  "Return inferior Python process for current buffer or signal error.
 +When argument INTERACTIVEP is non-nil, use `user-error' instead
 +of `error' with a user-friendly message."
 +  (or (python-shell-get-process)
 +      (if interactivep
 +          (user-error
 +           "Start a Python process first with `M-x run-python' or `%s'."
 +           ;; Get the binding.
 +           (key-description
 +            (where-is-internal
 +             #'run-python overriding-local-map t)))
 +        (error
 +         "No inferior Python process running."))))
 +
  (defun python-shell-get-or-create-process (&optional cmd dedicated show)
    "Get or create an inferior Python process for current buffer and return it.
  Arguments CMD, DEDICATED and SHOW are those of `run-python' and
  are used to start the shell.  If those arguments are not
  provided, `run-python' is called interactively and the user will
  be asked for their values."
 -  (let* ((dedicated-proc-name (python-shell-get-process-name t))
 -         (dedicated-proc-buffer-name (format "*%s*" dedicated-proc-name))
 -         (global-proc-name  (python-shell-get-process-name nil))
 -         (global-proc-buffer-name (format "*%s*" global-proc-name))
 -         (dedicated-running (comint-check-proc dedicated-proc-buffer-name))
 -         (global-running (comint-check-proc global-proc-buffer-name))
 -         (current-prefix-arg 16))
 -    (when (and (not dedicated-running) (not global-running))
 -      (if (if (not cmd)
 -              ;; XXX: Refactor code such that calling `run-python'
 -              ;; interactively is not needed anymore.
 -              (call-interactively 'run-python)
 -            (run-python cmd dedicated show))
 -          (setq dedicated-running t)
 -        (setq global-running t)))
 -    ;; Always prefer dedicated
 -    (get-buffer-process (if dedicated-running
 -                            dedicated-proc-buffer-name
 -                          global-proc-buffer-name))))
 +  (let ((shell-process (python-shell-get-process)))
 +    (when (not shell-process)
 +      (if (not cmd)
 +          ;; XXX: Refactor code such that calling `run-python'
 +          ;; interactively is not needed anymore.
 +          (call-interactively 'run-python)
 +        (run-python cmd dedicated show)))
 +    (or shell-process (python-shell-get-process))))
 +
 +(make-obsolete
 + #'python-shell-get-or-create-process
 + "Instead call `python-shell-get-process' and create one if returns nil."
 + "25.1")
  
  (defvar python-shell-internal-buffer nil
    "Current internal shell buffer for the current buffer.
@@@ -2662,10 -2398,18 +2652,10 @@@ there for compatibility with CEDET."
  
  (defun python-shell-internal-get-or-create-process ()
    "Get or create an inferior Internal Python process."
 -  (let* ((proc-name (python-shell-internal-get-process-name))
 -         (proc-buffer-name (format " *%s*" proc-name)))
 -    (when (not (process-live-p proc-name))
 -      (run-python-internal)
 -      (setq python-shell-internal-buffer proc-buffer-name)
 -      ;; XXX: Why is this `sit-for' needed?
 -      ;; `python-shell-make-comint' calls `accept-process-output'
 -      ;; already but it is not helping to get proper output on
 -      ;; 'gnu/linux when the internal shell process is not running and
 -      ;; a call to `python-shell-internal-send-string' is issued.
 -      (sit-for 0.1 t))
 -    (get-buffer-process proc-buffer-name)))
 +  (let ((proc-name (python-shell-internal-get-process-name)))
 +    (if (process-live-p proc-name)
 +        (get-process proc-name)
 +      (run-python-internal))))
  
  (define-obsolete-function-alias
    'python-proc 'python-shell-internal-get-or-create-process "24.3")
        (delete-trailing-whitespace))
      temp-file-name))
  
 -(defun python-shell-send-string (string &optional process)
 -  "Send STRING to inferior Python PROCESS."
 -  (interactive "sPython command: ")
 -  (let ((process (or process (python-shell-get-or-create-process))))
 +(defun python-shell-send-string (string &optional process msg)
 +  "Send STRING to inferior Python PROCESS.
 +When optional argument MSG is non-nil, forces display of a
 +user-friendly message if there's no process running; defaults to
 +t when called interactively."
 +  (interactive
 +   (list (read-string "Python command: ") nil t))
 +  (let ((process (or process (python-shell-get-process-or-error msg))))
      (if (string-match ".\n+." string)   ;Multiline.
          (let* ((temp-file-name (python-shell--save-temp-file string))
                 (file-name (or (buffer-file-name) temp-file-name)))
@@@ -2718,7 -2458,16 +2708,7 @@@ detecting a prompt at the end of the bu
     string (ansi-color-filter-apply string)
     python-shell-output-filter-buffer
     (concat python-shell-output-filter-buffer string))
 -  (when (string-match
 -         ;; XXX: It seems on OSX an extra carriage return is attached
 -         ;; at the end of output, this handles that too.
 -         (concat
 -          "\r?\n"
 -          ;; Remove initial caret from calculated regexp
 -          (replace-regexp-in-string
 -           (rx string-start ?^) ""
 -           python-shell--prompt-calculated-input-regexp)
 -          "$")
 +  (when (python-shell-comint-end-of-output-p
           python-shell-output-filter-buffer)
      ;; Output ends when `python-shell-output-filter-buffer' contains
      ;; the prompt attached at the end of it.
  (defun python-shell-send-string-no-output (string &optional process)
    "Send STRING to PROCESS and inhibit output.
  Return the output."
 -  (let ((process (or process (python-shell-get-or-create-process)))
 +  (let ((process (or process (python-shell-get-process-or-error)))
          (comint-preoutput-filter-functions
           '(python-shell-output-filter))
          (python-shell-output-filter-in-progress t)
@@@ -2842,43 -2591,35 +2832,43 @@@ the python shell
             (line-beginning-position) (line-end-position))))
        (buffer-substring-no-properties (point-min) (point-max)))))
  
 -(defun python-shell-send-region (start end &optional send-main)
 +(defun python-shell-send-region (start end &optional send-main msg)
    "Send the region delimited by START and END to inferior Python process.
  When optional argument SEND-MAIN is non-nil, allow execution of
  code inside blocks delimited by \"if __name__== '__main__':\".
  When called interactively SEND-MAIN defaults to nil, unless it's
 -called with prefix argument."
 -  (interactive "r\nP")
 +called with prefix argument.  When optional argument MSG is
 +non-nil, forces display of a user-friendly message if there's no
 +process running; defaults to t when called interactively."
 +  (interactive
 +   (list (region-beginning) (region-end) current-prefix-arg t))
    (let* ((string (python-shell-buffer-substring start end (not send-main)))
 -         (process (python-shell-get-or-create-process))
 +         (process (python-shell-get-process-or-error msg))
           (original-string (buffer-substring-no-properties start end))
           (_ (string-match "\\`\n*\\(.*\\)" original-string)))
      (message "Sent: %s..." (match-string 1 original-string))
      (python-shell-send-string string process)))
  
 -(defun python-shell-send-buffer (&optional send-main)
 +(defun python-shell-send-buffer (&optional send-main msg)
    "Send the entire buffer to inferior Python process.
  When optional argument SEND-MAIN is non-nil, allow execution of
  code inside blocks delimited by \"if __name__== '__main__':\".
  When called interactively SEND-MAIN defaults to nil, unless it's
 -called with prefix argument."
 -  (interactive "P")
 +called with prefix argument.  When optional argument MSG is
 +non-nil, forces display of a user-friendly message if there's no
 +process running; defaults to t when called interactively."
 +  (interactive (list current-prefix-arg t))
    (save-restriction
      (widen)
 -    (python-shell-send-region (point-min) (point-max) send-main)))
 +    (python-shell-send-region (point-min) (point-max) send-main msg)))
  
 -(defun python-shell-send-defun (arg)
 +(defun python-shell-send-defun (&optional arg msg)
    "Send the current defun to inferior Python process.
 -When argument ARG is non-nil do not include decorators."
 -  (interactive "P")
 +When argument ARG is non-nil do not include decorators.  When
 +optional argument MSG is non-nil, forces display of a
 +user-friendly message if there's no process running; defaults to
 +t when called interactively."
 +  (interactive (list current-prefix-arg t))
    (save-excursion
      (python-shell-send-region
       (progn
       (progn
         (or (python-nav-end-of-defun)
             (end-of-line 1))
 -       (point-marker)))))
 +       (point-marker))
 +     nil  ;; noop
 +     msg)))
  
  (defun python-shell-send-file (file-name &optional process temp-file-name
 -                                         delete)
 +                                         delete msg)
    "Send FILE-NAME to inferior Python PROCESS.
  If TEMP-FILE-NAME is passed then that file is used for processing
  instead, while internally the shell will continue to use
  FILE-NAME.  If TEMP-FILE-NAME and DELETE are non-nil, then
 -TEMP-FILE-NAME is deleted after evaluation is performed."
 -  (interactive "fFile to send: ")
 -  (let* ((process (or process (python-shell-get-or-create-process)))
 +TEMP-FILE-NAME is deleted after evaluation is performed.  When
 +optional argument MSG is non-nil, forces display of a
 +user-friendly message if there's no process running; defaults to
 +t when called interactively."
 +  (interactive
 +   (list
 +    (read-file-name "File to send: ")   ; file-name
 +    nil                                 ; process
 +    nil                                 ; temp-file-name
 +    nil                                 ; delete
 +    t))                                 ; msg
 +  (let* ((process (or process (python-shell-get-process-or-error msg)))
           (encoding (with-temp-buffer
                       (insert-file-contents
                        (or temp-file-name file-name))
        (or temp-file-name file-name) encoding encoding file-name)
       process)))
  
 -(defun python-shell-switch-to-shell ()
 -  "Switch to inferior Python process buffer."
 -  (interactive)
 -  (pop-to-buffer (process-buffer (python-shell-get-or-create-process)) t))
 +(defun python-shell-switch-to-shell (&optional msg)
 +  "Switch to inferior Python process buffer.
 +When optional argument MSG is non-nil, forces display of a
 +user-friendly message if there's no process running; defaults to
 +t when called interactively."
 +  (interactive "p")
 +  (pop-to-buffer
 +   (process-buffer (python-shell-get-process-or-error msg)) nil t))
  
  (defun python-shell-send-setup-code ()
    "Send all setup code for shell.
  This function takes the list of setup code to send from the
  `python-shell-setup-codes' list."
 -  (let ((process (get-buffer-process (current-buffer))))
 -    (dolist (code python-shell-setup-codes)
 -      (when code
 -        (message "Sent %s" code)
 -        (python-shell-send-string
 -         (symbol-value code) process)))))
 +  (let ((process (python-shell-get-process))
 +        (code (concat
 +               (mapconcat
 +                (lambda (elt)
 +                  (cond ((stringp elt) elt)
 +                        ((symbolp elt) (symbol-value elt))
 +                        (t "")))
 +                python-shell-setup-codes
 +                "\n\n")
 +               "\n\nprint ('python.el: sent setup code')")))
 +    (python-shell-send-string code process)
 +    (python-shell-accept-process-output process)))
  
  (add-hook 'inferior-python-mode-hook
            #'python-shell-send-setup-code)
@@@ -3028,276 -2748,85 +3018,276 @@@ the full statement in the case of impor
    "24.4"
    "Completion string code must also autocomplete modules.")
  
 -(defcustom python-shell-completion-pdb-string-code
 -  "';'.join(globals().keys() + locals().keys())"
 -  "Python code used to get completions separated by semicolons for [i]pdb."
 -  :type 'string
 -  :group 'python)
 +(define-obsolete-variable-alias
 +  'python-shell-completion-pdb-string-code
 +  'python-shell-completion-string-code
 +  "25.1"
 +  "Completion string code must work for (i)pdb.")
 +
 +(defcustom python-shell-completion-native-disabled-interpreters
 +  ;; PyPy's readline cannot handle some escape sequences yet.
 +  (list "pypy")
 +  "List of disabled interpreters.
 +When a match is found, native completion is disabled."
 +  :type '(repeat string))
 +
 +(defcustom python-shell-completion-native-enable t
 +  "Enable readline based native completion."
 +  :type 'boolean)
 +
 +(defcustom python-shell-completion-native-output-timeout 0.01
 +  "Time in seconds to wait for completion output before giving up."
 +  :type 'float)
 +
 +(defvar python-shell-completion-native-redirect-buffer
 +  " *Python completions redirect*"
 +  "Buffer to be used to redirect output of readline commands.")
 +
 +(defun python-shell-completion-native-interpreter-disabled-p ()
 +  "Return non-nil if interpreter has native completion disabled."
 +  (when python-shell-completion-native-disabled-interpreters
 +    (string-match
 +     (regexp-opt python-shell-completion-native-disabled-interpreters)
 +     (file-name-nondirectory python-shell-interpreter))))
 +
 +(defun python-shell-completion-native-try ()
 +  "Return non-nil if can trigger native completion."
 +  (let ((python-shell-completion-native-enable t))
 +    (python-shell-completion-native-get-completions
 +     (get-buffer-process (current-buffer))
 +     nil "int")))
 +
 +(defun python-shell-completion-native-setup ()
 +  "Try to setup native completion, return non-nil on success."
 +  (let ((process (python-shell-get-process)))
 +    (python-shell-send-string
 +     (funcall
 +      'mapconcat
 +      #'identity
 +      (list
 +       "try:"
 +       "    import readline, rlcompleter"
 +       ;; Remove parens on callables as it breaks completion on
 +       ;; arguments (e.g. str(Ari<tab>)).
 +       "    class Completer(rlcompleter.Completer):"
 +       "        def _callable_postfix(self, val, word):"
 +       "            return word"
 +       "    readline.set_completer(Completer().complete)"
 +       "    if readline.__doc__ and 'libedit' in readline.__doc__:"
 +       "        readline.parse_and_bind('bind ^I rl_complete')"
 +       "    else:"
 +       "        readline.parse_and_bind('tab: complete')"
 +       "    print ('python.el: readline is available')"
 +       "except:"
 +       "    print ('python.el: readline not available')")
 +      "\n")
 +     process)
 +    (python-shell-accept-process-output process)
 +    (when (save-excursion
 +            (re-search-backward
 +             (regexp-quote "python.el: readline is available") nil t 1))
 +      (python-shell-completion-native-try))))
 +
 +(defun python-shell-completion-native-turn-off (&optional msg)
 +  "Turn off shell native completions.
 +With argument MSG show deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (set (make-local-variable 'python-shell-completion-native-enable) nil)
 +    (when msg
 +      (message "Shell native completion is disabled, using fallback"))))
 +
 +(defun python-shell-completion-native-turn-on (&optional msg)
 +  "Turn on shell native completions.
 +With argument MSG show deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (set (make-local-variable 'python-shell-completion-native-enable) t)
 +    (python-shell-completion-native-turn-on-maybe msg)))
 +
 +(defun python-shell-completion-native-turn-on-maybe (&optional msg)
 +  "Turn on native completions if enabled and available.
 +With argument MSG show activation/deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (when python-shell-completion-native-enable
 +      (cond
 +       ((python-shell-completion-native-interpreter-disabled-p)
 +        (python-shell-completion-native-turn-off msg))
 +       ((python-shell-completion-native-setup)
 +        (when msg
 +          (message "Shell native completion is enabled.")))
 +       (t (lwarn
 +           '(python python-shell-completion-native-turn-on-maybe)
 +           :warning
 +           (concat
 +            "Your `python-shell-interpreter' doesn't seem to "
 +            "support readline, yet `python-shell-completion-native' "
 +            (format "was `t' and %S is not part of the "
 +                    (file-name-nondirectory python-shell-interpreter))
 +            "`python-shell-completion-native-disabled-interpreters' "
 +            "list.  Native completions have been disabled locally. "))
 +          (python-shell-completion-native-turn-off msg))))))
 +
 +(defun python-shell-completion-native-turn-on-maybe-with-msg ()
 +  "Like `python-shell-completion-native-turn-on-maybe' but force messages."
 +  (python-shell-completion-native-turn-on-maybe t))
  
 -(defun python-shell-completion-get-completions (process line input)
 -  "Do completion at point for PROCESS.
 -LINE is used to detect the context on how to complete given INPUT."
 +(add-hook 'inferior-python-mode-hook
 +          #'python-shell-completion-native-turn-on-maybe-with-msg)
 +
 +(defun python-shell-completion-native-toggle (&optional msg)
 +  "Toggle shell native completion.
 +With argument MSG show activation/deactivation message."
 +  (interactive "p")
 +  (python-shell-with-shell-buffer
 +    (if python-shell-completion-native-enable
 +        (python-shell-completion-native-turn-off msg)
 +      (python-shell-completion-native-turn-on msg))
 +    python-shell-completion-native-enable))
 +
 +(defun python-shell-completion-native-get-completions (process import input)
 +  "Get completions using native readline for PROCESS.
 +When IMPORT is non-nil takes precedence over INPUT for
 +completion."
 +  (with-current-buffer (process-buffer process)
 +    (when (and python-shell-completion-native-enable
 +               (python-util-comint-last-prompt)
 +               (>= (point) (cdr (python-util-comint-last-prompt))))
 +      (let* ((input (or import input))
 +             (original-filter-fn (process-filter process))
 +             (redirect-buffer (get-buffer-create
 +                               python-shell-completion-native-redirect-buffer))
 +             (separators (python-rx
 +                          (or whitespace open-paren close-paren)))
 +             (trigger "\t\t\t")
 +             (new-input (concat input trigger))
 +             (input-length
 +              (save-excursion
 +                (+ (- (point-max) (comint-bol)) (length new-input))))
 +             (delete-line-command (make-string input-length ?\b))
 +             (input-to-send (concat new-input delete-line-command)))
 +        ;; Ensure restoring the process filter, even if the user quits
 +        ;; or there's some other error.
 +        (unwind-protect
 +            (with-current-buffer redirect-buffer
 +              ;; Cleanup the redirect buffer
 +              (delete-region (point-min) (point-max))
 +              ;; Mimic `comint-redirect-send-command', unfortunately it
 +              ;; can't be used here because it expects a newline in the
 +              ;; command and that's exactly what we are trying to avoid.
 +              (let ((comint-redirect-echo-input nil)
 +                    (comint-redirect-verbose nil)
 +                    (comint-redirect-perform-sanity-check nil)
 +                    (comint-redirect-insert-matching-regexp nil)
 +                    ;; Feed it some regex that will never match.
 +                    (comint-redirect-finished-regexp "^\\'$")
 +                    (comint-redirect-output-buffer redirect-buffer))
 +                ;; Compatibility with Emacs 24.x.  Comint changed and
 +                ;; now `comint-redirect-filter' gets 3 args.  This
 +                ;; checks which version of `comint-redirect-filter' is
 +                ;; in use based on its args and uses `apply-partially'
 +                ;; to make it up for the 3 args case.
 +                (if (= (length
 +                        (help-function-arglist 'comint-redirect-filter)) 3)
 +                    (set-process-filter
 +                     process (apply-partially
 +                              #'comint-redirect-filter original-filter-fn))
 +                  (set-process-filter process #'comint-redirect-filter))
 +                (process-send-string process input-to-send)
 +                (accept-process-output
 +                 process
 +                 python-shell-completion-native-output-timeout)
 +                ;; XXX: can't use `python-shell-accept-process-output'
 +                ;; here because there are no guarantees on how output
 +                ;; ends.  The workaround here is to call
 +                ;; `accept-process-output' until we don't find anything
 +                ;; else to accept.
 +                (while (accept-process-output
 +                        process
 +                        python-shell-completion-native-output-timeout))
 +                (cl-remove-duplicates
 +                 (split-string
 +                  (buffer-substring-no-properties
 +                   (point-min) (point-max))
 +                  separators t))))
 +          (set-process-filter process original-filter-fn))))))
 +
 +(defun python-shell-completion-get-completions (process import input)
 +  "Do completion at point using PROCESS for IMPORT or INPUT.
 +When IMPORT is non-nil takes precedence over INPUT for
 +completion."
    (with-current-buffer (process-buffer process)
      (let* ((prompt
 -            ;; Get last prompt of the inferior process buffer (this
 -            ;; intentionally avoids using `comint-last-prompt' because
 -            ;; of incompatibilities with Emacs 24.x).
 -            (save-excursion
 +            (let ((prompt-boundaries (python-util-comint-last-prompt)))
                (buffer-substring-no-properties
 -               (line-beginning-position) ;End of prompt.
 -               (re-search-backward "^"))))
 +               (car prompt-boundaries) (cdr prompt-boundaries))))
             (completion-code
              ;; Check whether a prompt matches a pdb string, an import
              ;; statement or just the standard prompt and use the
              ;; correct python-shell-completion-*-code string
 -            (cond ((and (> (length python-shell-completion-pdb-string-code) 0)
 -                        (string-match
 +            (cond ((and (string-match
                           (concat "^" python-shell-prompt-pdb-regexp) prompt))
 -                   python-shell-completion-pdb-string-code)
 +                   ;; Since there are no guarantees the user will remain
 +                   ;; in the same context where completion code was sent
 +                   ;; (e.g. user steps into a function), safeguard
 +                   ;; resending completion setup continuously.
 +                   (concat python-shell-completion-setup-code
 +                           "\nprint (" python-shell-completion-string-code ")"))
                    ((string-match
                      python-shell--prompt-calculated-input-regexp prompt)
                     python-shell-completion-string-code)
                    (t nil)))
 -           (input
 -            (if (string-match
 -                 (python-rx line-start (* space) (or "from" "import") space)
 -                 line)
 -                line
 -              input)))
 +           (subject (or import input)))
        (and completion-code
             (> (length input) 0)
             (let ((completions
                    (python-util-strip-string
                     (python-shell-send-string-no-output
 -                    (format completion-code input) process))))
 +                    (format completion-code subject) process))))
               (and (> (length completions) 2)
                    (split-string completions
                                  "^'\\|^\"\\|;\\|'$\\|\"$" t)))))))
  
 -(defun python-shell-completion-complete-at-point (&optional process)
 -  "Perform completion at point in inferior Python.
 +(defun python-shell-completion-at-point (&optional process)
 +  "Function for `completion-at-point-functions' in `inferior-python-mode'.
  Optional argument PROCESS forces completions to be retrieved
  using that one instead of current buffer's process."
    (setq process (or process (get-buffer-process (current-buffer))))
 -  (let* ((start
 +  (let* ((line-start (if (derived-mode-p 'inferior-python-mode)
 +                         ;; Working on a shell buffer: use prompt end.
 +                         (cdr (python-util-comint-last-prompt))
 +                       (line-beginning-position)))
 +         (import-statement
 +          (when (string-match-p
 +                 (rx (* space) word-start (or "from" "import") word-end space)
 +                 (buffer-substring-no-properties line-start (point)))
 +            (buffer-substring-no-properties line-start (point))))
 +         (start
            (save-excursion
 -            (with-syntax-table python-dotty-syntax-table
 -              (let* ((paren-depth (car (syntax-ppss)))
 -                     (syntax-string "w_")
 -                     (syntax-list (string-to-syntax syntax-string)))
 -                ;; Stop scanning for the beginning of the completion
 -                ;; subject after the char before point matches a
 -                ;; delimiter
 -                (while (member
 -                        (car (syntax-after (1- (point)))) syntax-list)
 -                  (skip-syntax-backward syntax-string)
 -                  (when (or (equal (char-before) ?\))
 -                            (equal (char-before) ?\"))
 -                    (forward-char -1))
 -                  (while (or
 -                          ;; honor initial paren depth
 -                          (> (car (syntax-ppss)) paren-depth)
 -                          (python-syntax-context 'string))
 -                    (forward-char -1)))
 -                (point)))))
 -         (end (point)))
 +            (if (not (re-search-backward
 +                      (python-rx
 +                       (or whitespace open-paren close-paren string-delimiter))
 +                      line-start
 +                      t 1))
 +                line-start
 +              (forward-char (length (match-string-no-properties 0)))
 +              (point))))
 +         (end (point))
 +         (completion-fn
 +          (if python-shell-completion-native-enable
 +              #'python-shell-completion-native-get-completions
 +            #'python-shell-completion-get-completions)))
      (list start end
            (completion-table-dynamic
             (apply-partially
 -            #'python-shell-completion-get-completions
 -            process (buffer-substring-no-properties
 -                     (line-beginning-position) end))))))
 +            completion-fn
 +            process import-statement)))))
 +
 +(define-obsolete-function-alias
 +  'python-shell-completion-complete-at-point
 +  'python-shell-completion-at-point
 +  "25.1")
  
  (defun python-shell-completion-complete-or-indent ()
    "Complete or indent depending on the context.
@@@ -3306,7 -2835,7 +3296,7 @@@ If not try to complete.
    (interactive)
    (if (string-match "^[[:space:]]*$"
                      (buffer-substring (comint-line-beginning-position)
 -                                      (point-marker)))
 +                                      (point)))
        (indent-for-tab-command)
      (completion-at-point)))
  
@@@ -3405,19 -2934,18 +3395,19 @@@ Argument OUTPUT is a string with the ou
  \f
  ;;; Symbol completion
  
 -(defun python-completion-complete-at-point ()
 -  "Complete current symbol at point.
 +(defun python-completion-at-point ()
 +  "Function for `completion-at-point-functions' in `python-mode'.
  For this to work as best as possible you should call
  `python-shell-send-buffer' from time to time so context in
  inferior Python process is updated properly."
    (let ((process (python-shell-get-process)))
 -    (if (not process)
 -        (error "Completion needs an inferior Python process running")
 -      (python-shell-completion-complete-at-point process))))
 +    (when process
 +      (python-shell-completion-at-point process))))
  
 -(add-to-list 'debug-ignored-errors
 -             "^Completion needs an inferior Python process running.")
 +(define-obsolete-function-alias
 +  'python-completion-complete-at-point
 +  'python-completion-at-point
 +  "25.1")
  
  \f
  ;;; Fill paragraph
@@@ -3637,7 -3165,8 +3627,7 @@@ JUSTIFY should be used (if applicable) 
    (save-restriction
      (narrow-to-region (progn
                          (while (python-syntax-context 'paren)
 -                          (goto-char (1- (point-marker))))
 -                        (point-marker)
 +                          (goto-char (1- (point))))
                          (line-beginning-position))
                        (progn
                          (when (not (python-syntax-context 'paren))
                              (skip-syntax-backward "^)")))
                          (while (and (python-syntax-context 'paren)
                                      (not (eobp)))
 -                          (goto-char (1+ (point-marker))))
 -                        (point-marker)))
 +                          (goto-char (1+ (point))))
 +                        (point)))
      (let ((paragraph-start "\f\\|[ \t]*$")
            (paragraph-separate ",")
            (fill-paragraph-function))
@@@ -3756,12 -3285,6 +3746,12 @@@ The skeleton will be bound to python-sk
    > _ \n
    '(python-skeleton--else) | ^)
  
 +(python-skeleton-define import nil
 +  "Import from module: "
 +  "from " str & " " | -5
 +  "import "
 +  ("Identifier: " str ", ") -2 \n _)
 +
  (python-skeleton-define try nil
    nil
    "try:" \n
    "class " str "(" ("Inheritance, %s: "
                      (unless (equal ?\( (char-before)) ", ")
                      str)
 -  & ")" | -2
 +  & ")" | -1
    ":" \n
    "\"\"\"" - "\"\"\"" \n
    > _ \n)
  ;;; Code check
  
  (defcustom python-check-command
 -  "pyflakes"
 +  (or (executable-find "pyflakes")
 +      (executable-find "epylint")
 +      "install pyflakes, pylint or something else")
    "Command used to check a Python file."
    :type 'string
    :group 'python)
  
  (defvar python-check-custom-command nil
    "Internal use.")
 +;; XXX: Avoid `defvar-local' for compat with Emacs<24.3
 +(make-variable-buffer-local 'python-check-custom-command)
  
  (defun python-check (command)
    "Check a Python file (default current buffer's file).
@@@ -3897,11 -3416,7 +3887,11 @@@ See `python-check-command' for the defa
    "def __PYDOC_get_help(obj):
      try:
          import inspect
 -        if hasattr(obj, 'startswith'):
 +        try:
 +            str_type = basestring
 +        except NameError:
 +            str_type = str
 +        if isinstance(obj, str_type):
              obj = eval(obj, globals())
          doc = inspect.getdoc(obj)
          if not doc and callable(obj):
              doc = doc.splitlines()[0]
      except:
          doc = ''
 -    try:
 -        exec('print doc')
 -    except SyntaxError:
 -        print(doc)"
 +    print (doc)"
    "Python code to setup documentation retrieval."
    :type 'string
    :group 'python)
    :type 'string
    :group 'python)
  
 +(defun python-eldoc--get-symbol-at-point ()
 +  "Get the current symbol for eldoc.
 +Returns the current symbol handling point within arguments."
 +  (save-excursion
 +    (let ((start (python-syntax-context 'paren)))
 +      (when start
 +        (goto-char start))
 +      (when (or start
 +                (eobp)
 +                (memq (char-syntax (char-after)) '(?\ ?-)))
 +        ;; Try to adjust to closest symbol if not in one.
 +        (python-util-forward-comment -1)))
 +    (python-info-current-symbol t)))
 +
  (defun python-eldoc--get-doc-at-point (&optional force-input force-process)
    "Internal implementation to get documentation at point.
 -If not FORCE-INPUT is passed then what `python-info-current-symbol'
 +If not FORCE-INPUT is passed then what `python-eldoc--get-symbol-at-point'
  returns will be used.  If not FORCE-PROCESS is passed what
  `python-shell-get-process' returns is used."
    (let ((process (or force-process (python-shell-get-process))))
 -    (if (not process)
 -        (error "Eldoc needs an inferior Python process running")
 +    (when process
        (let ((input (or force-input
 -                       (python-info-current-symbol t))))
 +                       (python-eldoc--get-symbol-at-point))))
          (and input
               ;; Prevent resizing the echo area when iPython is
               ;; enabled.  Bug#18794.
@@@ -3977,7 -3482,7 +3967,7 @@@ inferior Python process is updated prop
    "Get help on SYMBOL using `help'.
  Interactively, prompt for symbol."
    (interactive
 -   (let ((symbol (python-info-current-symbol t))
 +   (let ((symbol (python-eldoc--get-symbol-at-point))
           (enable-recursive-minibuffers t))
       (list (read-string (if symbol
                              (format "Describe symbol (default %s): " symbol)
                          nil nil symbol))))
    (message (python-eldoc--get-doc-at-point symbol)))
  
 -(add-to-list 'debug-ignored-errors
 -             "^Eldoc needs an inferior Python process running.")
 +\f
 +;;; Hideshow
 +
 +(defun python-hideshow-forward-sexp-function (arg)
 +  "Python specific `forward-sexp' function for `hs-minor-mode'.
 +Argument ARG is ignored."
 +  arg  ; Shut up, byte compiler.
 +  (python-nav-end-of-defun)
 +  (unless (python-info-current-line-empty-p)
 +    (backward-char)))
  
  \f
  ;;; Imenu
@@@ -4515,18 -4012,6 +4505,18 @@@ to \"^python-\".
                 (cdr pair))))
     (buffer-local-variables from-buffer)))
  
 +(defvar comint-last-prompt-overlay)     ; Shut up, byte compiler.
 +
 +(defun python-util-comint-last-prompt ()
 +  "Return comint last prompt overlay start and end.
 +This is for compatibility with Emacs < 24.4."
 +  (cond ((bound-and-true-p comint-last-prompt-overlay)
 +         (cons (overlay-start comint-last-prompt-overlay)
 +               (overlay-end comint-last-prompt-overlay)))
 +        ((bound-and-true-p comint-last-prompt)
 +         comint-last-prompt)
 +        (t nil)))
 +
  (defun python-util-forward-comment (&optional direction)
    "Python mode specific version of `forward-comment'.
  Optional argument DIRECTION defines the direction to move to."
        (goto-char comment-start))
      (forward-comment factor)))
  
 +(defun python-util-list-directories (directory &optional predicate max-depth)
 +  "List DIRECTORY subdirs, filtered by PREDICATE and limited by MAX-DEPTH.
 +Argument PREDICATE defaults to `identity' and must be a function
 +that takes one argument (a full path) and returns non-nil for
 +allowed files.  When optional argument MAX-DEPTH is non-nil, stop
 +searching when depth is reached, else don't limit."
 +  (let* ((dir (expand-file-name directory))
 +         (dir-length (length dir))
 +         (predicate (or predicate #'identity))
 +         (to-scan (list dir))
 +         (tally nil))
 +    (while to-scan
 +      (let ((current-dir (car to-scan)))
 +        (when (funcall predicate current-dir)
 +          (setq tally (cons current-dir tally)))
 +        (setq to-scan (append (cdr to-scan)
 +                              (python-util-list-files
 +                               current-dir #'file-directory-p)
 +                              nil))
 +        (when (and max-depth
 +                   (<= max-depth
 +                       (length (split-string
 +                                (substring current-dir dir-length)
 +                                "/\\|\\\\" t))))
 +          (setq to-scan nil))))
 +    (nreverse tally)))
 +
 +(defun python-util-list-files (dir &optional predicate)
 +  "List files in DIR, filtering with PREDICATE.
 +Argument PREDICATE defaults to `identity' and must be a function
 +that takes one argument (a full path) and returns non-nil for
 +allowed files."
 +  (let ((dir-name (file-name-as-directory dir)))
 +    (apply #'nconc
 +           (mapcar (lambda (file-name)
 +                     (let ((full-file-name (expand-file-name file-name dir-name)))
 +                       (when (and
 +                              (not (member file-name '("." "..")))
 +                              (funcall (or predicate #'identity) full-file-name))
 +                         (list full-file-name))))
 +                   (directory-files dir-name)))))
 +
 +(defun python-util-list-packages (dir &optional max-depth)
 +  "List packages in DIR, limited by MAX-DEPTH.
 +When optional argument MAX-DEPTH is non-nil, stop searching when
 +depth is reached, else don't limit."
 +  (let* ((dir (expand-file-name dir))
 +         (parent-dir (file-name-directory
 +                      (directory-file-name
 +                       (file-name-directory
 +                        (file-name-as-directory dir)))))
 +         (subpath-length (length parent-dir)))
 +    (mapcar
 +     (lambda (file-name)
 +       (replace-regexp-in-string
 +        (rx (or ?\\ ?/)) "." (substring file-name subpath-length)))
 +     (python-util-list-directories
 +      (directory-file-name dir)
 +      (lambda (dir)
 +        (file-exists-p (expand-file-name "__init__.py" dir)))
 +      max-depth))))
 +
  (defun python-util-popn (lst n)
    "Return LST first N elements.
  N should be an integer, when negative its opposite is used.
@@@ -4659,10 -4082,7 +4649,10 @@@ returned as is.
         'python-nav-forward-sexp)
  
    (set (make-local-variable 'font-lock-defaults)
 -       '(python-font-lock-keywords nil nil nil nil))
 +       '(python-font-lock-keywords
 +         nil nil nil nil
 +         (font-lock-syntactic-face-function
 +          . python-font-lock-syntactic-face-function)))
  
    (set (make-local-variable 'syntax-propertize-function)
         python-syntax-propertize-function)
         #'python-indent-line-function)
    (set (make-local-variable 'indent-region-function) #'python-indent-region)
    ;; Because indentation is not redundant, we cannot safely reindent code.
 -  (setq-local electric-indent-inhibit t)
 -  (setq-local electric-indent-chars (cons ?: electric-indent-chars))
 +  (set (make-local-variable 'electric-indent-inhibit) t)
 +  (set (make-local-variable 'electric-indent-chars)
 +       (cons ?: electric-indent-chars))
  
    ;; Add """ ... """ pairing to electric-pair-mode.
    (add-hook 'post-self-insert-hook
         #'python-nav-end-of-defun)
  
    (add-hook 'completion-at-point-functions
 -            #'python-completion-complete-at-point nil 'local)
 +            #'python-completion-at-point nil 'local)
  
    (add-hook 'post-self-insert-hook
              #'python-indent-post-self-insert-function 'append 'local)
                                                   (current-column))))
           (^ '(- (1+ (current-indentation))))))
  
 -  (set (make-local-variable 'eldoc-documentation-function)
 -       #'python-eldoc-function)
 -
 -  (add-to-list 'hs-special-modes-alist
 -               `(python-mode "^\\s-*\\(?:def\\|class\\)\\>" nil "#"
 -                             ,(lambda (_arg)
 -                                (python-nav-end-of-defun)) nil))
 +  (if (null eldoc-documentation-function)
 +      ;; Emacs<25
 +      (set (make-local-variable 'eldoc-documentation-function)
 +           #'python-eldoc-function)
 +    (add-function :before-until (local 'eldoc-documentation-function)
 +                  #'python-eldoc-function))
 +
 +  (add-to-list
 +   'hs-special-modes-alist
 +   `(python-mode
 +     "\\s-*\\(?:def\\|class\\)\\>"
 +     ;; Use the empty string as end regexp so it doesn't default to
 +     ;; "\\s)".  This way parens at end of defun are properly hidden.
 +     ""
 +     "#"
 +     python-hideshow-forward-sexp-function
 +     nil))
  
    (set (make-local-variable 'outline-regexp)
         (python-rx (* space) block-start))
index 7fe6882d3ca4b2adb516f30a4fd69b59182e7433,b471707e7ba3201bbe7b15864dfa72670ec4a02f..7f050e9fd906157bbf8152cfd35f10b997563b0b
@@@ -263,7 -263,6 +263,7 @@@ distribution.  Mixed-case symbols are c
  The file name is expected after the command, either in braces or separated
  by whitespace."
    :group 'reftex-table-of-contents-browser
 +  :set 'reftex-set-dirty
    :type '(repeat string))
  
  (defcustom reftex-max-section-depth 12
@@@ -867,13 -866,17 +867,17 @@@ DOWNCASE    t:   Downcase words before 
                           (string :tag ""))
                  (option (boolean :tag "Downcase words          "))))
  
- (defcustom reftex-label-regexps
-   '(;; Normal \\label{foo} labels
-     "\\\\label{\\(?1:[^}]*\\)}"
-     ;; keyvals [..., label = {foo}, ...] forms used by ctable,
-     ;; listings, minted, ...
-     "\\[[^]]*\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
-   "List of regexps matching \\label definitions.
+ (if (featurep 'xemacs)
+     ;; XEmacs 21.5 doesn't have explicitly numbered matching groups,
+     ;; so this list mustn't get any more items.
+     (defconst reftex-label-regexps '("\\\\label{\\([^}]*\\)}"))
+   (defcustom reftex-label-regexps
+     '(;; Normal \\label{foo} labels
+       "\\\\label{\\(?1:[^}]*\\)}"
+       ;; keyvals [..., label = {foo}, ...] forms used by ctable,
+       ;; listings, minted, ...
+       "\\[[^]]*\\<label[[:space:]]*=[[:space:]]*{?\\(?1:[^],}]+\\)}?")
+     "List of regexps matching \\label definitions.
  The default value matches usual \\label{...} definitions and
  keyval style [..., label = {...}, ...] label definitions.  It is
  assumed that the regexp group 1 matches the label text, so you
@@@ -882,13 -885,13 +886,13 @@@ have to define it using \\(?1:...\\) wh
  When changed from Lisp, make sure to call
  `reftex-compile-variables' afterwards to make the change
  effective."
-   :version "24.4"
-   :set (lambda (symbol value)
-        (set symbol value)
-        (when (fboundp 'reftex-compile-variables)
-          (reftex-compile-variables)))
-   :group 'reftex-defining-label-environments
-   :type '(repeat (regexp :tag "Regular Expression")))
+     :version "24.4"
+     :set (lambda (symbol value)
+          (set symbol value)
+          (when (fboundp 'reftex-compile-variables)
+            (reftex-compile-variables)))
+     :group 'reftex-defining-label-environments
+     :type '(repeat (regexp :tag "Regular Expression"))))
  
  (defcustom reftex-label-ignored-macros-and-environments nil
    "List of macros and environments to be ignored when searching for labels.
diff --combined src/ChangeLog
index 37e6d20eb8305cb046f19c1f8012e6de994f578d,829eb25f4d994b881ad39ff2adfc0429883006dc..f0ec092c068d76fafc983d48f45023b33b6d643c
 -2015-01-30  Eli Zaretskii  <eliz@gnu.org>
++2015-02-26  Eli Zaretskii  <eliz@gnu.org>
+       * dispextern.h (FACE_FOR_CHAR): Fix the commentary.
 -2015-01-29  Hans Wennborg  <hwennborg@google.com>  (tiny change)
++2015-02-26  Hans Wennborg  <hwennborg@google.com>  (tiny change)
+       * emacs.c (decode_env_path): Add parentheses around ternary
+       operator to increase readability and pacify compiler warnings.
 -2015-01-29  Eli Zaretskii  <eliz@gnu.org>
++2015-02-26  Eli Zaretskii  <eliz@gnu.org>
+       * w32.c (sys_readdir): Map ERROR_NOT_READY (as in "device not
+       ready") to ENOENT.
 +2015-02-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xfns.c (x_real_pos_and_offsets): Fix pointer signedness.
 +
 +2015-02-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.h (struct x_output): Remove x_pixels_outer_diff,
 +      y_pixels_outer_diff, FRAME_OUTER_TO_INNER_DIFF_X,
 +      FRAME_OUTER_TO_INNER_DIFF_Y. Declare x_real_pos_and_offsets.
 +
 +      * xmenu.c (create_and_show_popup_menu): Use XTranslateCoordinates
 +      instead of OUTER_TO_INNER_DIFF macros.
 +
 +      * xfns.c (x_real_pos_and_offsets): New function, basically the code
 +      from x_real_positions.
 +      (x_real_positions): Call x_real_pos_and_offsets.
 +      (x_relative_mouse_position): Use XTranslateCoordinates instead of
 +      OUTER_TO_INNER_DIFF macros.
 +      (Fx_frame_geometry): Get offsets with x_real_pos_and_offsets,
 +      border from window attributes.  Adjust tool bar and menu widths.
 +
 +      * w32fns.c (x_real_positions): Remove setting of x_pixels_diff,
 +      y_pixels_diff.
 +
 +      * frame.h (struct frame): Remove x_pixels_diff, y_pixels_diff.
 +
 +2015-02-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Backtrace after malloc arena is corrupted
 +      Without this change, if the malloc arena is corrupted and then
 +      'backtrace' is called, the backtrace can crash because 'backtrace'
 +      calls 'malloc'.  For more, please see:
 +      https://sourceware.org/ml/libc-alpha/2015-02/msg00678.html
 +      * emacs.c (main): Initialize tables used by 'backtrace'.
 +      * sysdep.c (emacs_backtrace): Document the newly used part of the API.
 +
 +2015-02-22  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (Fx_frame_geometry): New function.
 +      (syms_of_nsfns): Defsubr Sx_frame_geometry.
 +
 +2015-02-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Spelling fixes
 +      * lisp.h (DEFINE_NON_NIL_Q_SYMBOL_MACROS):
 +      Rename from DEFINE_NONNIL_Q_SYMBOL_MACROS.  All uses changed.
 +
 +2015-02-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (queue_notifications):
 +      * w32inevt.c (handle_file_notifications):
 +      * w32font.c (w32_enumfont_pattern_entity): Prefer 'Qfoo' to
 +      'intern ("foo")'.
 +
 +2015-02-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Prefer 'Qfoo' to 'intern ("foo")'
 +      * buffer.c (syms_of_buffer):
 +      * bytecode.c (exec_byte_code):
 +      * callint.c (Fcall_interactively):
 +      * callproc.c (create_temp_file):
 +      * charset.c (define_charset_internal):
 +      * coding.c (syms_of_coding):
 +      * editfns.c (syms_of_editfns):
 +      * emacs.c (main):
 +      * fns.c (syms_of_fns):
 +      * frame.c (delete_frame, Fframe_parameters):
 +      * keyboard.c (syms_of_keyboard):
 +      * keymap.c (syms_of_keymap):
 +      * minibuf.c (read_minibuf, syms_of_minibuf):
 +      * nsfns.m (ns_cursor_type_to_lisp):
 +      * textprop.c (syms_of_textprop):
 +      * xdisp.c (Fformat_mode_line, syms_of_xdisp):
 +      * xfns.c (x_create_tip_frame, Fx_select_font):
 +      * xml.c (parse_region):
 +      Prefer constants like 'Qfoo' to calls like 'intern ("foo")'.
 +      * buffer.c (syms_of_buffer): OK to do (put 'erase-buffer 'disabled
 +      t) here now ...
 +      (keys_of_buffer): ... instead of here.
 +      * ftfont.c (syms_of_ftfont): Move DEFSYM of Qmono from here ...
 +      * xfns.c (syms_of_xfns): ... to here, since ftfont.c is more
 +      optional than xfns.c.
 +
 +2015-02-20  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * emacs.c (terminate_due_to_signal): Move totally_unblock_input after
 +      setting fatal_error_in_progress, so gobble_input and *read_socket are
 +      not read if there are pending_signals.
 +
 +2015-02-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify binary I/O configuration
 +      * lread.c (Fload): Prefer FOPEN_TEXT and FOPEN_BINARY to #ifdef DOS_NT.
 +      * sysstdio.h: Add copyright notice.  Include <fcntl.h>.
 +      (FOPEN_BINARY, FOPEN_TEXT): New macros.
 +      * xfaces.c (Fx_load_color_file): Use FOPEN_TEXT, since POSIX
 +      doesn't guarantee that "t" will work.
 +
 +2015-02-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * keyboard.c (read_char): Make sure this_single_command_key_start
 +      is in sync with this_command_key_count, around the call to
 +      input-method-function.  (Bug#19774)
 +
 +2015-02-19  Fujii Hironori  <fujii.hironori@gmail.com>  (tiny change)
 +
 +      * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the
 +      message to DefWindowProc, after positioning the IME window, to
 +      trigger its display.  (Bug#11732)
 +
 +2015-02-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * emacs.c (Fkill_emacs): Exit with specified exit code even if
 +      stdin is at EOF.  (Bug#19897)
 +
 +2015-02-18  Oscar Fuentes <ofv@wanadoo.es>
 +
 +      * keyboard.c (read_char): When there is an input method function,
 +      do not restore the echo area if a prefix argument is being
 +      introduced.  (Bug#19875)
 +
 +2015-02-16  Kelly Dean  <kelly@prtime.org>
 +
 +      * src/keyboard.c (timer_check_2): Fix incorrect comment.
 +
 +2015-02-14  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * xterm.c (x_frame_normalize_before_maximize): Fix doc-string.
 +      Suggested by Alan Mackenzie <acm@muc.de>.
 +
 +2015-02-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu.c (Fx_popup_menu) [HAVE_X_WINDOWS]: Call
 +      x_relative_mouse_position only for X frames.  (Bug#19862)
 +
 +2015-02-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Better support for future plugins
 +      * lisp.h (DEFINE_LISP_SYMBOL): New macro, replacing and simplifying
 +      DEFINE_LISP_SYMBOL_BEGIN / DEFINE_LISP_SYMBOL_END.  All uses changed.
 +      (DEFINE_NONNIL_Q_SYMBOL_MACROS): New macro, defaulting to true.
 +
 +2015-02-11  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_read_socket): In SIZE_MAXIMIZED and
 +      SIZE_RESTORED cases correctly handle `maximized' value for the
 +      `fullscreen' parameter.  Don't use 'maximized' frame parameter
 +      any more.
 +      (w32fullscreen_hook): Include menu bar height when calculating
 +      new text height in FULLSCREEN_BOTH case.
 +      * xterm.c (do_ewmh_fullscreen): Handle transition from
 +      FULLSCREEN_BOTH to FULLSCREEN_MAXIMIZED when
 +      x_frame_normalize_before_maximize is set.
 +
 +2015-02-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xdisp.c
 +      * dispextern.h (display_prop_intangible_p, resize_mini_window)
 +      (pixel_to_glyph_coords, mark_window_display_accurate)
 +      (compute_display_string_pos, handle_tool_bar_click)
 +      (x_intersect_rectangles, clear_mouse_face, display_tty_menu_item):
 +      * lisp.h (setup_echo_area_for_printing, message_with_string)
 +      (pos_visible_p): Use bool for boolean.
 +      * xdisp.c: Use bool, true, false intstead of int, 1, 0.
 +      Remove unnecessary forward decls.
 +      (trace_move) [DEBUG_TRACE_MOVE]: Now static.
 +      (CHECK_IT, CHECK_WINDOW_END):
 +      Now an inline function that is always defined.
 +      (check_it) [0]:
 +      (check_window_end) [oGLYPH_DEBUG && ENABLE_CHECKING]:
 +      Remove; no longer needed.
 +      (handle_stop): Prefer (X && !Y) to (X ? !Y : 0).
 +      (get_overlay_strings): Omit unnecessary casts.
 +      (forward_to_next_line_start):
 +      (Ftool_bar_height):
 +      Prefer !BOOL to (BOOL ? 0 : 1).
 +      (next_element_function): New typedef.
 +      (get_next_element): Use it.  Now const.
 +      (IT_POS_VALID_AFTER_MOVE_P): Prefer !X || Y==0 to (X ? Y==0 : 1).
 +      (vmessage): Now ATTRIBUTE_FORMAT_PRINTF (1, 0), to pacify GCC 4.9.2
 +      (display_echo_area): Prefer BOOLEXPR to BOOLEXPR ? 1 : 0.
 +      (tool_bar_item_info): Simplify.
 +      (invisible_prop): Rename from invisible_p, since it doesn't
 +      return bool.  All callers changed.
 +      (x_produce_glyphs): Simplify.
 +
 +2015-02-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Check for some overflows in vertical-motion
 +      * indent.c (window_column_x): New function.
 +      (Fvertical_motion): Use it to protect against integer overflow
 +      when computing column.  Prefer extract_float to doing things by hand.
 +      Avoid unnecessary casts.
 +
 +      * xfont.c: Minor style fixes
 +      (xfont_list_pattern): Reindent to 80 cols and use Emacs-style comments.
 +      Redo loop so that less indentation is needed.
 +
 +2015-02-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * indent.c (Fvertical_motion): Accept an additional argument
 +      CUR-COL and use it as the starting screen coordinate.
 +      * window.c (window_scroll_line_based, Fmove_to_window_line): All
 +      callers of vertical-motion changed.
 +
 +2015-02-09  Dima Kogan  <dima@secretsauce.net>
 +
 +      * font.c (font_score): Remove unused variable assignment.
 +
 +2015-02-09  Dima Kogan  <dima@secretsauce.net>
 +
 +      * xfaces.c (realize_basic_faces): Don't set Qscalable_fonts_allowed to
 +      t.
 +      * font.c (font_score): Try to find a font without scaling first,
 +      and only accept scalable fonts if we did not get a match (Bug#19117).
 +
 +2015-02-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (syms_of_keyboard): Use non-nil default value.
 +
 +2015-02-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use C99's INFINITY and NAN macros
 +      * lread.c: Include <math.h>.
 +      (string_to_number): Use INFINITY and NAN rather than rolling our own.
 +      This avoids some runtime diagnostics when building with
 +      gcc -fsanitize=undefined.
 +
 +      Fix bidi_explicit_dir_char undefined behavior
 +      * bidi.c (bidi_explicit_dir_char): Avoid subscript error when
 +      argument is BIDI_EOB.  This can happen in bidi_level_of_next_char.
 +
 +      Better distinguish infinite from invalid times
 +      * editfns.c (check_time_validity): New function.
 +      (decode_time_components): Return int, not bool.
 +      Return -1 (not 0) if the time is out of range.
 +      All callers changed.
 +      (lisp_time_struct, lisp_seconds_argument): Distinguish better
 +      between time overflow and invalid time values.
 +
 +2015-02-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor tweaks to frame_size_history_add
 +      * frame.c (frame_size_history_add): Don't assume length fits in 'int'.
 +      Prefer XCAR and XCDR to Fcar and Fcdr when the arg is a cons.
 +      (Fframe_after_make_frame): Simplify.
 +      * gtkutil.c: Remove commented-out code.
 +      * xfns.c (Fx_create_frame): Fix indenting.
 +
 +2015-02-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frame.c (Fframe_parameter): Don't replace a non-nil value of
 +      foreground-color or background-color parameters with a nil value.
 +      (Bug#19802)
 +
 +2015-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * data.c (Findirect_function): Like `symbol-function', don't signal an
 +      error for void functions any more.
 +
 +2015-02-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (frame_size_history_add): New function.
 +      (frame_inhibit_resize): Consider frame_inhibit_implied_resize
 +      only after frame's after_make_frame slot is true.
 +      Inhibit resizing fullwidth-/height frames in one direction only.
 +      Update frame_size_history.
 +      (adjust_frame_size): Call frame_size_history_add.
 +      (make_frame): Initalize after_make_frame slot.
 +      (Fmake_terminal_frame): Adjust adjust_frame_size call.
 +      (Fcan_run_window_configuration_change_hook): Rename to
 +      Fframe_after_make_frame.  Set after_make_frame slot.
 +      Return second argument.
 +      (x_set_frame_parameters): Postpone handling fullscreen parameter
 +      until after width and height parameters have been set.
 +      Apply width and height changes only if can_x_set_window_size is true.
 +      Update frame_size_history.
 +      (Qadjust_frame_size_1, Qadjust_frame_size_2)
 +      (Qadjust_frame_size_3, QEmacsFrameResize, Qframe_inhibit_resize)
 +      (Qx_set_fullscreen, Qx_check_fullscreen, Qx_set_window_size_1)
 +      (Qxg_frame_resized, Qxg_frame_set_char_size_1)
 +      (Qxg_frame_set_char_size_2, Qxg_frame_set_char_size_3)
 +      (Qxg_change_toolbar_position, Qx_net_wm_state)
 +      (Qx_handle_net_wm_state, Qtb_size_cb, Qupdate_frame_tool_bar)
 +      (Qfree_frame_tool_bar): New symbol for updating frame_size_history.
 +      (Qtip_frame, Qterminal_frame): New symbols.
 +      (Vframe_adjust_size_history): Rename to frame_size_history.
 +      * frame.h (struct frame):
 +      Rename can_run_window_configuration_change_hook slot to
 +      after_make_frame.
 +      (frame_size_history_add): Extern.
 +      * gtkutil.c (xg_frame_resized): Call frame_size_history_add.
 +      Don't set FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT here.
 +      (xg_frame_set_char_size): Try to preserve the status of
 +      fullwidth/-height frames.  Call frame_size_history_add.
 +      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
 +      (xg_change_toolbar_position): Call frame_size_history_add.
 +      * w32fns.c (x_change_tool_bar_height): Handle frame's fullscreen
 +      status.
 +      (Fx_create_frame): Process fullscreen parameter after frame has
 +      been resized.
 +      (x_create_tip_frame): Pass Qtip_frame to adjust_frame_size.
 +      (Fx_frame_geometry): Don't pollute pure storage.
 +      * w32term.c (w32_read_socket): For WM_WINDOWPOSCHANGED,
 +      WM_ACTIVATE and WM_ACTIVATEAPP set frame's visibility before
 +      calling w32fullscreen_hook.  For WM_DISPLAYCHANGE call
 +      w32fullscreen_hook immediately.
 +      (x_fullscreen_adjust, x_check_fullscreen): Remove.
 +      (w32fullscreen_hook): Call change_frame_size just as with a
 +      "normal" frame resize operation.  Call do_pending_window_change.
 +      (x_set_window_size): Try to handle fullwidth and fullheight more
 +      accurately.  Don't rely on w32_enable_frame_resize_hack.
 +      (w32_enable_frame_resize_hack): Remove variable.
 +      * widget.c (EmacsFrameResize): Remove dead code.
 +      Call frame_size_history_add
 +      * window.c (run_window_configuration_change_hook):
 +      Check f->after_make_frame instead of
 +      f->can_run_window_configuration_change_hook.
 +      * xfns.c (x_change_tool_bar_height): Handle frame's fullscreen status.
 +      (Fx_create_frame): Process fullscreen parameter after frame has
 +      been resized.
 +      (Fx_frame_geometry): Don't pollute pure storage.
 +      * xterm.c (x_net_wm_state, x_handle_net_wm_state):
 +      Call frame_size_history_add.
 +      (do_ewmh_fullscreen): Handle x_frame_normalize_before_maximize.
 +      (x_check_fullscreen): Count in menubar when calling
 +      XResizeWindow.  Wait for ConfigureNotify event.
 +      Call frame_size_history_add.
 +      (x_set_window_size_1): Remove PIXELWISE argument.  Try to handle
 +      changing a fullheight frame's width or a fullwidth frame's
 +      height.  Call frame_size_history_add.
 +      (x_set_window_size): Simplify xg_frame_set_char_size and
 +      x_set_window_size_1 calls.
 +      (x_frame_normalize_before_maximize): New variable.
 +
 +2015-02-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove no-longer-used cursor_in_echo_area code
 +      * dispnew.c (set_window_cursor_after_update, update_frame_1):
 +      Remove checks for negative cursor_in_echo_area, since this var is
 +      a boolean, and has been a boolean for some time.  Simplify.
 +      * dispnew.c (init_display):
 +      * xdisp.c (message3_nolog, vmessage): Use bool for boolean.
 +
 +2015-02-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (Ffunction): Handle the new (:documentation ...) form.
 +      (syms_of_eval): Declare `:documentation'.
 +
 +2015-02-05  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * xdisp.c (Fwindow_text_pixel_size): Remove optional BUFFER
 +      argument added on 2015-02-01.
 +
 +2015-02-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove no-longer-used two_byte_p calculations
 +      * dispextern.h (struct glyph_string): Remove member two_byte_p.
 +      All uses removed.
 +      * xdisp.c (get_glyph_face_and_encoding): Remove arg two_byte_p.
 +      All callers changed.
 +
 +2015-02-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Omit unnecessary var if GTK or NS
 +      * frame.c, frame.h (frame_default_tool_bar_height) [USE_GTK||HAVE_NS]:
 +      Now a constant zero on these platforms.
 +
 +2015-02-01  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * xdisp.c (Fwindow_text_pixel_size): Add optional argument BUFFER.
 +
 +2015-01-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * coding.c (raw_text_coding_system_p): New function.
 +
 +      * keyboard.c (read_decoded_event_from_main_queue): Use it when the
 +      keyboard coding-system is 'raw-text'.  (Bug#19532)
 +
 +      * coding.h (raw_text_coding_system_p): Add prototype.
 +
 +2015-01-31  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * Makefile.in (gl-stamp): Generate globals.h through the use of
 +      move-if-change.
 +      (globals.h): Replace with empty command.
 +
 +2015-01-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * keyboard.c (kbd_buffer_store_event_hold): Ignore FOCUS_OUT_EVENT
 +      and ICONIFY_EVENT for the purposes of breaking while-no-input
 +      loops.  (Bug#19547)
 +
 +      * dired.c (read_dirent): Correct the "MSDOS hacks" hack: the
 +      special code for errno = ENOENT or EACCES is needed for WINDOWSNT,
 +      not for MSDOS.
 +
 +2015-01-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify read_dirent's MSDOS hacks
 +      * dired.c (read_dirent): Simplify by removing the need for the
 +      DIR_ENTRY argument.  All callers changed.  This separates the
 +      MS-DOS idiosyncrasies better from the rest of the code.
 +
 +2015-01-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dired.c (read_dirent): Accept an additional argument
 +      FIRST_ENTRY.  If readdir fails with ENOENT or EACCES the first
 +      time it is called, report the error as if it happened in
 +      open_directory.
 +      (directory_files_internal, file_name_completion): Adjust callers
 +      or read_dirent.
 +
 +2015-01-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Refactor calls to opendir for simplicity
 +      * dired.c (open_directory): Accept Lisp_Object, not char *, for
 +      dirname.  Signal an error if the open fails.  All callers changed.
 +
 +2015-01-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Report readdir failures
 +      Previously, on non-MS-Windows platforms the code treated most
 +      readdir failures as EOF.  This was incorrect, e.g., when readdir
 +      fails with errno == EOVERFLOW.  Signal an error instead.
 +      * dired.c (read_dirent):
 +      New function, which signals an error when readdir fails.
 +      (directory_files_internal, file_name_completion): Use it.
 +
 +2015-01-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Use bool for boolean in w32menu.c, w32font.c, w32uniscribe.c.
 +      * w32uniscribe.c (uniscribe_list, uniscribe_match): Use bool where
 +      appropriate.
 +
 +      * w32font.c (struct font_callback_data, w32font_list_internal)
 +      (w32font_driver, w32font_match_internal): Use bool where appropriate.
 +
 +      * w32menu.c (x_activate_menubar, set_frame_menubar)
 +      (w32_dialog_show, initialize_frame_menubar, w32_menu_show)
 +      (is_simple_dialog): Use bool where appropriate.
 +
 +2015-01-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool, not int, to track face changes
 +      * xfaces.c (face_change): Rename from face_change_count, and
 +      change from int to bool.  The var is now true (instead of nonzero)
 +      if attributes have changed; this is simpler.  All uses changed.
 +      (Bug#19698)
 +
  2015-01-28  Eli Zaretskii  <eliz@gnu.org>
  
        * dired.c (directory_files_internal, file_name_completion)
        don't signal a file-error.
        (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails.
  
 -2015-01-27  Eli Zaretskii  <eliz@gnu.org>
 -
        * dired.c (directory_files_internal) [WINDOWSNT]: If readdir
        returns NULL and errno is ENOTDIR, behave as if opendir failed to
        open the directory.  (Bug#19701)
        * w32.c (sys_readdir): If FindFirstFile fails because the
        directory doesn't exist, set errno to ENOTDIR.
  
 -2015-01-24  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-28  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (drawRect:): Add block/unblock_input (Bug#19660).
  
 -2015-01-21  Paul Eggert  <eggert@cs.ucla.edu>
 +2015-01-28  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix coding.c subscript error
        * coding.c (CODING_ISO_INVOKED_CHARSET):
        Avoid undefined behavior if CODING_ISO_INVOCATION returns negative.
  
 -      Backport: correct old fix for GTK font selection
 -      * gtkutil.c (xg_get_font): Fix off-by-2 typo.
 -      Fixes: bug#3228
 -
 -2015-01-21  Jan Djärv  <jan.h.d@swipnet.se>
 -
 -        * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531).
 -
 -2015-01-17  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-28  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (produce_image_glyph): Fix display of images in R2L
        screen lines: prepend the new glyph to the ones already there
        instead of appending it.
  
 -2015-01-14  Eli Zaretskii  <eliz@gnu.org>
 -
        * w32fns.c (w32_set_title_bar_text): New function, including
        support for titles with non-ASCII characters outside of the
        current system codepage.
        (x_set_name, x_set_title): Use it.  (Bug#19590)
  
 -2015-01-10  Eli Zaretskii  <eliz@gnu.org>
 -
        * indent.c (Fvertical_motion): Return zero if we started from ZV
        and there's an overlay after-string there.  (Bug#19553)
  
 -2015-01-09  Eli Zaretskii  <eliz@gnu.org>
 -
        * emacs.c (usage_message): Fix the description of the -nl switch.
        (Bug#19542)
  
 -2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * dispnew.c (buffer_posn_from_coords): Fix the value of the column
 -      returned for right-to-left screen lines.  (Before the change on
 -      2014-12-30, the incorrectly-computed X pixel coordinate concealed
 -      this bug.)
 -
 -2015-01-05  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (move_it_to, try_cursor_movement): Don't use the window
        end information if the window_end_valid flag is unset.
        (try_window_id): If the call to display_line invalidated the
        window end information, give up the try_window_id optimization.
        (Bug#19511)
  
 -2015-01-04  Eli Zaretskii  <eliz@gnu.org>
 -
        * w32fns.c (Fx_server_version, Fx_server_vendor): Doc fix.
 -
        * xfns.c (Fx_server_version, Fx_server_vendor): Doc fix.
  
 -      * emacs.c (syms_of_emacs) <system-configuration>: Doc fix.
 -      (Bug#19502)
 +      * emacs.c (syms_of_emacs) <system-configuration>: Doc fix.  (Bug#19502)
  
 -2014-12-30  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * xdisp.c (pos_visible_p): Fix up the X coordinate for
 -      right-to-left screen lines.  (Bug#19473)
 +      * lisp.mk (lisp): Add cl-preloaded.
  
 -2014-12-28  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-27  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * w32proc.c (Fw32_get_codepage_charset): Doc fix.  (Bug#19458)
 +      Use bool for boolean in xfaces.c
 +      * dispextern.h: Adjust to signature changes.
 +      * font.c (font_at, font_range):
 +      * fontset.c (Finternal_char_font):
 +      * fringe.c (draw_fringe_bitmap_1):
 +      * xdisp.c (handle_face_prop, face_before_or_after_it_pos)
 +      (get_next_display_element, highlight_trailing_whitespace)
 +      (display_string, calc_line_height_property)
 +      (note_mode_line_or_margin_highlight, note_mouse_highlight):
 +      * xfaces.c (tty_suppress_bold_inverse_default_colors_p)
 +      (menu_face_changed_default, recompute_basic_faces)
 +      (Fbitmap_spec_p, parse_rgb_list, tty_lookup_color)
 +      (tty_defined_color, defined_color, face_color_gray_p)
 +      (face_color_supported_p, load_color2, load_face_colors)
 +      (Fx_list_fonts, LFACEP, push_named_merge_point)
 +      (resolve_face_name, lface_from_face_name_no_resolve)
 +      (lface_from_face_name, get_lface_attributes_no_remap)
 +      (get_lface_attributes, lface_fully_specified_p)
 +      (set_lface_from_font, merge_face_vectors, merge_named_face)
 +      (merge_face_ref, Finternal_make_lisp_face)
 +      (Finternal_lisp_face_p, Finternal_copy_lisp_face)
 +      (Finternal_set_lisp_face_attribute)
 +      (update_face_from_frame_parameter, set_font_frame_param)
 +      (face_boolean_x_resource_value)
 +      (Finternal_set_lisp_face_attribute_from_resource)
 +      (x_update_menu_appearance, Finternal_get_lisp_face_attribute)
 +      (Finternal_merge_in_global_face, Fface_font, face_attr_equal_p)
 +      (lface_equal_p, Finternal_lisp_face_equal_p)
 +      (Finternal_lisp_face_empty_p, lface_same_font_attributes_p)
 +      (Fcolor_distance, lookup_named_face, lookup_basic_face)
 +      (lookup_derived_face, Fface_attributes_as_vector)
 +      (x_supports_face_attributes_p, tty_supports_face_attributes_p)
 +      (Fdisplay_supports_face_attributes_p, realize_basic_faces)
 +      (realize_default_face, realize_named_face)
 +      (realize_non_ascii_face, realize_x_face, map_tty_color)
 +      (realize_tty_face, compute_char_face, face_at_buffer_position)
 +      (face_for_overlay_string, face_at_string_position):
 +      Use bool for boolean.
 +      * xfaces.c (set_lface_from_font):
 +      Return void, since callers never use the result.
  
 -2014-12-28  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
 +2015-01-26  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      Port memory-full checking to GnuTLS 3.3
 -      Instead of using gnutls_global_set_mem_functions, check every call
 -      to a GnuTLS function that might return an indication of memory
 -      exhaustion.  Suggested by Dmitry Antipov in:
 -      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
 -      * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
 -      (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
 -      (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
 -      All uses removed.
 -      (check_memory_full): New function.
 -      (emacs_gnutls_handshake, emacs_gnutls_handle_error)
 -      (gnutls_make_error, Fgnutls_boot): Use it.
 -      (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
 +      * image.c (lookup_pixel_color): Reorder conditions that are
 +      written backwards.
 +      (x_to_xcolors): Likewise.
 +      (x_detect_edges): Likewise.
 +      (png_load_body): Likewise.
 +      (gif_close): Likewise.
 +      (gif_load): Likewise.
  
 -2014-12-25  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-25  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
 -      composition_compute_stop_pos to the number of characters in the
 -      string.  (Bug#19435)
 -      <GET_FROM_BUFFER, GET_FROM_STRING>: Simplify code.
 +      Use bool for boolean in w32term.c
 +      * w32term.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, x_after_update_window_line)
 +      (x_set_glyph_string_gc, x_draw_glyph_string_background)
 +      (x_draw_glyph_string_foreground)
 +      (x_draw_composite_glyph_string_foreground)
 +      (x_draw_glyphless_glyph_string_foreground)
 +      (x_draw_image_glyph_string, x_draw_glyph_string)
 +      (x_draw_stretch_glyph_string, note_mouse_movement)
 +      (w32_mouse_position, x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion, w32_read_socket)
 +      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
 +      (w32_draw_window_cursor, x_new_font, x_set_offset)
 +      (x_set_window_size, x_make_frame_invisible, x_iconify_frame):
 +      Use bool where appropriate.
 +
 +      Use bool for boolean in w32fns.c
 +      * w32fns.c (w32_defined_color, x_decode_color)
 +      (Fxw_color_defined_p, Fxw_color_values, x_set_icon_type)
 +      (x_set_menu_bar_lines, x_change_tool_bar_height)
 +      (x_set_internal_border_width, x_explicitly_set_name)
 +      (x_implicitly_set_name, Fx_create_frame, w32_window)
 +      (x_create_tip_frame, Fx_show_tip): Use bool where appropriate.
 +
 +2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xfns.c
 +      * xfaces.c (x_update_menu_appearance):
 +      * xfns.c (x_real_positions, x_defined_color, x_decode_color)
 +      (xg_set_icon, xg_set_icon_from_xpm_data, x_set_cursor_color)
 +      (x_set_icon_type, x_set_icon_name, x_set_menu_bar_lines)
 +      (x_change_tool_bar_height, x_set_internal_border_width)
 +      (x_encode_text, x_set_name_internal, x_explicitly_set_name)
 +      (x_implicitly_set_name, x_default_scroll_bar_color_parameter)
 +      (hack_wm_protocols, xic_create_fontsetname, xic_free_xfontset)
 +      (x_window, x_icon, Fx_wm_set_size_hint, Fx_create_frame)
 +      (Fxw_color_defined_p, Fxw_color_values, x_create_tip_frame)
 +      (Fx_show_tip, clean_up_file_dialog, Fx_file_dialog)
 +      (clean_up_dialog, syms_of_xfns):
 +      * xterm.h (xg_set_icon, xg_set_icon_from_xpm_data)
 +      (xic_create_fontsetname):
 +      Use bool for boolean.
 +      * xfns.c: Include bitmaps/gray.xbm unconditionally.
 +
 +      Count MANY function args more reliably
 +      * alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1):
 +      * buffer.c (Fbuffer_list, Fkill_buffer):
 +      * callint.c (read_file_name, Fcall_interactively):
 +      * charset.c (Fset_charset_priority, syms_of_charset):
 +      * chartab.c (uniprop_encode_value_numeric):
 +      * coding.c (syms_of_coding):
 +      * composite.c (syms_of_composite):
 +      * data.c (wrong_range):
 +      * dbusbind.c (syms_of_dbusbind):
 +      * dired.c (file_attributes):
 +      * editfns.c (Fdecode_time, update_buffer_properties, format2):
 +      * eval.c (run_hook_with_args_2, apply1, call1, call2, call3)
 +      (call4, call5, call6, call7):
 +      * fileio.c (Finsert_file_contents, choose_write_coding_system)
 +      (Fcar_less_than_car, build_annotations, auto_save_error):
 +      * filelock.c (get_boot_time):
 +      * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply):
 +      (maybe_resize_hash_table, secure_hash):
 +      * font.c (font_style_to_value, font_open_by_name, Flist_fonts):
 +      * fontset.c (fontset_add, Fset_fontset_font):
 +      * ftfont.c (ftfont_lookup_cache):
 +      * gtkutil.c (xg_get_font):
 +      * insdel.c (signal_before_change, signal_after_change):
 +      * keymap.c (append_key):
 +      * lread.c (load_warn_old_style_backquotes, Fload, init_lread):
 +      * minibuf.c (Fread_buffer):
 +      * print.c (print_preprocess):
 +      * process.c (Fformat_network_address, Fmake_network_process)
 +      (server_accept_connection):
 +      * sound.c (Fplay_sound_internal):
 +      * term.c (Fsuspend_tty, Fresume_tty):
 +      * window.c (window_list):
 +      * xdisp.c (run_redisplay_end_trigger_hook, add_to_log)
 +      (message_with_string):
 +      * xfaces.c (Fx_list_fonts):
 +      * xfont.c (syms_of_xfont):
 +      * xselect.c (x_handle_selection_request)
 +      (x_handle_selection_clear, x_clear_frame_selections)
 +      (x_clipboard_manager_error_1):
 +      Prefer CALLMANY and CALLN to counting args by hand.
 +      * doc.c (reread_doc_file): Remove unused code.
 +      * fns.c (concat2, concat3): Redo to avoid need for local-var vector.
 +      (cmpfn_user_defined, hashfn_user_defined, Fmaphash):
 +      Prefer call1 and call2 to Ffuncall.
 +      * keyboard.c (safe_run_hook_funcall, safe_run_hooks):
 +      Use struct literal rather than a local var, for simplicity.
 +      * keymap.c (where_is_internal): Use NULL rather than a pointer
 +      to unused args.
 +      * lisp.h (CALLMANY, CALLN): New macros.
 +      * sound.c (Fplay_sound_internal): Coalesce duplicate code.
 +      Fixes: bug#19634
 +
 +      Use gnustep-config if available
 +      * emacs.c [NS_IMPL_GNUSTEP]: Don't include <GNUstepBase/GSConfig.h>.
 +      It doesn't appear to be needed, and the inclusion breaks on
 +      Ubuntu 14.10 when 'configure' uses 'gnustep-config'.
 +
 +2015-01-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (init_iterator): Restore a comment lost in transition.
 +
 +2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xfont.c, xftfont.c, xgselect.c
 +      * xfont.c (xfont_driver, xfont_chars_supported)
 +      (xfont_text_extents):
 +      * xftfont.c (xftfont_get_colors, xftfont_open)
 +      (xftfont_prepare_face, xftfont_done_face)
 +      (xftfont_cached_font_ok):
 +      * xgselect.c (xg_select):
 +      Use bool for boolean.
  
 -      * composite.c (composition_compute_stop_pos): If no composition
 -      was found in a string before ENDPOS, and ENDPOS is the string end,
 -      no need to back up to a safe point.
 +      Don't downcase system diagnostics' first letters
 +      * fileio.c (report_file_errno): Don't downcase, and simplify.
 +      Fixes: bug#19642
  
 -      * dispextern.h (struct it) <end_charpos>: Improve commentary.
 +      Isolate NIL_IS_ZERO-assuming code better
 +      Suggested by Stefan Monnier in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00588.html
 +      * alloc.c (allocate_pseudovector):
 +      Use memclear, not memsetnil, to remove a 'verify'.
 +      * callint.c (Fcall_interactively):
 +      * dispnew.c (realloc_glyph_pool):
 +      * xdisp.c (init_iterator):
 +      Use memclear, not memset, to remove a 'verify'.
 +      * lisp.h (memclear): Rename from memsetnil, and take a byte
 +      count rather than a word count.  All callers changed.
 +
 +2015-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Undo port to hypothetical nonzero Qnil case
 +      This mostly undoes the previous change in this area.  See:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00570.html
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * dispnew.c (realloc_glyph_pool):
 +      * fringe.c (init_fringe):
 +      * lisp.h (memsetnil):
 +      * xdisp.c (init_iterator):
 +      Simplify by assuming that Qnil is zero, but verify the assumption.
 +      * lisp.h (NIL_IS_ZERO): Revert back to this symbol, removing
 +      NIL_IS_NONZERO.  All uses changed.
  
 -2014-12-24  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-20  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * nsimage.m (allocInitFromFile:): Initialize bmRep.
 -      (dealloc): Release bmRep.
 -        (setPixmapData): Make bmRep local so class member is not
 -        set (Bug#19133).
 -      (setPixmapData): Rename local variable bmRep to avoid compiler
 -      warning.
 +      * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531).
  
 -2014-12-24  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-20  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -      * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference,
 -      imageListSetNext, imageListNext.
 +      Prefer xlispstrdup to avoid dumb calls to strlen.
 +      * nsfont.m (ns_get_family):
 +      * nsterm.m (ns_term_init):
 +      * w32fns.c (w32_window):
 +      * xfns.c (x_window, Fx_select_font): Use xlispstrdup.
  
 -      * nsimage.m (ImageList, imageListNext, imageListSetNext:)
 -      (reference): Remove.
 -      (allocInitFromFile:): Remove searching ImageList and calling
 -      reference (Bug#18918).
 -      (dealloc): Remove handling if ImageList.
 +2015-01-20  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-12-22  Jan Djärv  <jan.h.d@swipnet.se>
 +      Correct an old fix for GTK font selection
 +      * gtkutil.c (xg_get_font): Fix off-by-2 typo.
 +      Fixes: bug#3228
  
 -      * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
 -      when going to fullscreen (Bug#19427).
 +      Fix minor bugs with printing null bytes
 +      * minibuf.c (read_minibuf_noninteractive):
 +      * xdisp.c (Ftrace_to_stderr) [GLYPH_DEBUG]:
 +      Work even if the Lisp string contains a null byte.
  
 -2014-12-18  Eli Zaretskii  <eliz@gnu.org>
 +      Port to hypothetical case where Qnil is nonzero
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * coding.c (syms_of_coding):
 +      * dispnew.c (realloc_glyph_pool):
 +      * fringe.c (init_fringe):
 +      * lisp.h (memsetnil):
 +      * xdisp.c (init_iterator):
 +      Port to the currently-hypothetical case where Qnil is nonzero.
 +      * dispnew.c (adjust_glyph_matrix): Remove unnecessary verification,
 +      as there are no Lisp_Object values in the data here.
 +      * lisp.h (NIL_IS_NONZERO): New symbol, replacing NIL_IS_ZERO.
 +      All uses changed.  Define only if not already defined, so that one
 +      can debug with -DNIL_IS_NONZERO.
 +      * xdisp.c (init_iterator): Remove unnecessary initializations to 0.
 +
 +2015-01-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (adjust_glyph_matrix, realloc_glyph_pool): Verify that
 +      Qnil is represented as zero, before using that to initialize parts
 +      of the glyph structure.
 +
 +      * xdisp.c (init_iterator): Verify that Qnil is represented as
 +      zero, before using that to initialize parts of the iterator
 +      structure.
 +
 +2015-01-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Prefer memset to repeatedly assigning Qnil
 +      * alloc.c (allocate_pseudovector): Catch more bogus values.
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * coding.c (syms_of_coding):
 +      * fringe.c (init_fringe):
 +      Verify that Qnil == 0.
 +      * callint.c (Fcall_interactively):
 +      * eval.c (Fapply, Ffuncall):
 +      * fns.c (mapcar1, larger_vector):
 +      * font.c (font_expand_wildcards):
 +      * fringe.c (init_fringe):
 +      Prefer memset to assigning zeros by hand.
 +      * callint.c (Fcall_interactively):
 +      Remove duplicate assignment of Qnil to args[i].
 +      * coding.c (syms_of_coding):
 +      Prefer LISP_INITIALLY_ZERO to assigning zeros by hand.
 +      * fileio.c (Ffile_selinux_context):
 +      Rewrite to avoid need for Lisp_Object array.
 +      * lisp.h (XLI_BUILTIN_LISPSYM): New macro.
 +      (DEFINE_LISP_SYMBOL_END): Use it.
 +      (NIL_IS_ZERO): New constant.
 +      (memsetnil): New function.
 +
 +2015-01-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Tune pseudovector allocation assuming Qnil == 0.
 +      * alloc.c (allocate_pseudovector): Use memset for both
 +      Lisp_Objects and regular slots.  Add zerolen arg.
 +      * lisp.h (allocate_pseudovector): Adjust prototype.
 +      (ALLOCATE_PSEUDOVECTOR): Adjust user.
 +      (ALLOCATE_ZEROED_PSEUDOVECTOR): New macro.
 +      (allocate_hash_table, allocate_window, allocate_frame)
 +      (allocate_process, allocate_terminal): Remove prototypes.
 +      * fns.c (allocate_hash_table): Now static here.
 +      * frame.c (allocate_frame):
 +      * process.c (allocate_process):
 +      * terminal.c (allocate_terminal):
 +      * window.c (allocate_window): Now static here.
 +      Use ALLOCATE_ZEROED_PSEUDOVECTOR.  Add comment.
 +
 +      * lisp.h (XTERMINAL): Add eassert.
 +      * process.c (make_lisp_proc): Now static here.
 +
 +      Prefer INLINE functions in font.h to match style used in lisp.h.
 +      * font.h (FONTP, FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P)
 +      (CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY, CHECK_FONT_OBJECT)
 +      (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT, CHECK_FONT_GET_OBJECT):
 +      Now functions.
 +      * font.c (Ffont_otf_alternates, Fquery_font, Ffont_get_glyphs):
 +      * ftfont.c (ftfont_shape):
 +      * macfont.m (macfont_shape):
 +      * w32uniscribe.c (uniscribe_shape):
 +      * xftfont.c (xftfont_shape): Adjust CHECK_FONT_GET_OBJECT users.
  
 -      * window.c (Fwindow_body_width): Doc fix.  (Bug#19395)
 +2015-01-16  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-12-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Give up on -Wsuggest-attribute=const
 +      * decompress.c (Fzlib_available_p):
 +      * gnutls.c (Fgnutls_available_p):
 +      * gtkutil.h (xg_uses_old_file_dialog):
 +      * xdisp.c (Ftool_bar_height):
 +      * xmenu.c (popup_activated):
 +      No longer const, since it's not const on at lest some
 +      configurations, and we shouldn't lie to the compiler.
  
 -      * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
 +2015-01-15  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-12-13  Eli Zaretskii  <eliz@gnu.org>
 +      * fileio.c: Include binary-io.h.
 +      (Fset_binary_mode): New function.
 +      (syms_of_fileio): Defsubr it.
 +      (syms_of_fileio) <Qstdin, Qstdout, Qstderr>: DEFSYM them.
  
 -      * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
 +2015-01-15  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -2014-12-12  Eli Zaretskii  <eliz@gnu.org>
 +      * gnutls.c (init_gnutls_functions): Import gnutls_x509_crt_check_issuer.
 +      (Fgnutls_peer_status): Use it to set the :self-signed flag.
 +      Rename the previous :self-signed to :unknown-ca. (Bug#19404)
 +      (Fgnutls_peer_status_warning_describe): Explain :unknown-ca flag.
  
 -      * gnutls.c (Fgnutls_available_p, syms_of_gnutls):
 -      Move gnutls-available-p out of the HAVE_GNUTLS conditional, and define
 -      them only once.
 +2015-01-14  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-12-11  Teodor Zlatanov  <tzz@lifelogs.com>
 +      * w32fns.c (w32_wnd_proc): Ignore MENUITEMINFO's dwItemData data
 +      when FLAGS indicate the item is not highlighted.  (Bug#19596)
 +
 +2015-01-14  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * xmenu.c (update_frame_menubar): Remove garbaged code.
 +
 +2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      remove_slash_colon need not be inline
 +      * process.c, process.h (remove_slash_colon): No longer inline.
 +      This saves text bytes without hurting runtime performance.
 +
 +2015-01-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra multibyteness check in ENCODE_FILE users.
 +      * callproc.c (encode_current_directory, Fcall_process, call_process):
 +      * dired.c (directory_files_internal, file_name_completion):
 +      Do not check for STRING_MULTIBYTE because encode_file_name
 +      is a no-op for unibyte strings.
 +
 +      * process.h (remove_slash_colon): New function.
 +      * callproc.c (encode_current_directory, call_process):
 +      * process.c (Fstart_process): Use it.
 +
 +      Consistently handle time zone specification.
 +      * editfns.c (decode_time_zone): New function, refactored out from ...
 +      (Fencode_time): ... adjusted user.
 +      (Fset_time_zone_rule): Use decode_time_zone.
 +
 +      * editfns.c (make_buffer_string_both): If requested range intersects
 +      the gap, don't move the latter but copy in two regions, thus avoiding
 +      unnecessary relocation of buffer data.
 +
 +2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xmenu.c, xml.c
 +      * xmenu.c (x_menu_set_in_use, popup_get_selection)
 +      (Fx_menu_bar_open_internal, popup_widget_loop)
 +      (x_activate_menubar, xg_crazy_callback_abort)
 +      (update_frame_menubar, set_frame_menubar)
 +      (initialize_frame_menubar, free_frame_menubar)
 +      (create_and_show_popup_menu, x_menu_show)
 +      (create_and_show_dialog, x_dialog_show):
 +      * xml.c (libxml2_loaded_p, init_libxml2_functions, parse_region)
 +      (Flibxml_parse_html_region, Flibxml_parse_xml_region):
 +      * xrdb.c (main) [TESTRM]:
 +      * xsettings.c (init_gsettings):
 +      * xterm.c (XFillRectangle, xg_scroll_callback)
 +      (xg_end_scroll_callback):
 +      * xterm.h (x_menu_set_in_use) [USE_GTK || USE_MOTIF]:
 +      Use bool for boolean.
 +      * xmenu.c (TRUE): Remove; no longer used.
 +      (show_help_event): Remove long-unused code.
 +      (set_frame_menubar): Remove "#if 1" and corresponding "#endif" lines.
 +
 +2015-01-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't say Fnext_read_file_uses_dialog_p is const
 +      It's const only if a windowing system is not used; don't say it's
 +      const otherwise.  See:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00310.html
 +      * fileio.c (next_read_file_uses_dialog_p): Remove.
 +      Move guts back to ...
 +      (Fnext_read_file_uses_dialog_p): ... here.
 +      Don't declare as const, as make-docfile.c now has a special case
 +      for this function.  This is an ugly hack, but it's better than
 +      lying to the compiler.
 +
 +      Remove now-unnecessary forward XTYPE decl
 +      * lisp.h (XTYPE): Remove forward declaration.  The recent merge
 +      from emacs-24 fixed the problem in a better way, by moving XPNTR's
 +      definition to after XTYPE's.
 +
 +2015-01-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix problems with 32-bit wide-int build exposed by MinGW.
 +      * lisp.h (XPNTR): Move definition to after XTYPE, to avoid
 +      compilation error in an unoptimized build when !USE_LSB_TAG.
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE): For 32-bit wide-int build, use the
 +      same larger value as for the 64-bit build.
 +
 +      * w32term.h (SCROLL_BAR_PACK): Cast the result to UINT_PTR to
 +      avoid compiler warnings.
 +
 +      * w32proc.c (Fw32_get_codepage_charset, Fw32_set_keyboard_layout):
 +      Avoid compiler warnings about cast from integer to pointer of
 +      different size.
 +
 +      * w32menu.c (menubar_selection_callback, w32_menu_show): Cast to
 +      UINT_PTR instead of EMACS_INT, to avoid compiler warnings about
 +      casting from integer to pointer of different size.
 +      (add_menu_item): Pass the help-echo string as a pointer to
 +      Lisp_String, not as a Lisp_Object.
 +      (w32_menu_display_help): Use make_lisp_ptr to reconstruct a Lisp
 +      string object from its C pointer.
 +
 +      * w32fns.c (w32_msg_pump) <WM_EMACS_UNREGISTER_HOT_KEY>: Use
 +      make_lisp_ptr instead of XIL, to reconstruct a Lisp_Cons from its
 +      C pointer.
 +      <WM_EMACS_TOGGLE_LOCK_KEY>: msg.lparam is now a C integer.
 +      (Fx_create_frame): Type-cast the result of XFASTINT to avoild
 +      compiler warnings about size differences.
 +      (Fw32_unregister_hot_key): Pass the tail of w32_grabbed_keys as a
 +      pointer to a Lisp_Cons struct, not as a disguised EMACS_INT.
 +      (Fw32_toggle_lock_key): Pass the new state of the key as a C
 +      integer; use -1 for nil.  Doc fix.
 +
 +      * .gdbinit (xgetsym): New subroutine.
 +      (xsymname, xsymbol): Use it.
 +      (xprintsym): No need to call xgetptr.
 +
 +2015-01-13  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Make sure new numbers of
 +      lines/columns get installed after font size change (Bug#19575).
 +
 +2015-01-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Add DEFUN attributes.
 +      * callint.c (Finteractive):
 +      * character.c (Fcharacterp, Fmax_char):
 +      * data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
 +      (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
 +      (Ffloatp, Fbyteorder):
 +      * decompress.c (Fzlib_available_p):
 +      * fns.c (Fidentity):
 +      * frame.c (Fframe_windows_min_size):
 +      * gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
 +      * window.c (Fwindow__sanitize_window_sizes):
 +      * xdisp.c (Ftool_bar_height):
 +      * xfaces.c (Fface_attribute_relative_p): Add const attribute.
 +      * emacs.c (Fkill_emacs):
 +      * eval.c (Fthrow):
 +      * keyboard.c (Ftop_level, Fexit_recursive_edit)
 +      (Fabor_recursive_edit): Add noreturn attribute.
 +
 +      * search.c (fast_string_match_internal): New function,
 +      consolidated from...
 +      (fast_string_match, fast_string_match_ignore_case): ...functions
 +      which are...
 +      * lisp.h (fast_string_match, fast_string_match_ignore_case):
 +      inlined from here now.
 +      (fast_string_match_internal): Add prototype.
 +      * dired.c (file_name_completion): Use fast_string_match_internal.
 +
 +      * fileio.c (next_read_file_uses_dialog_p): New workaround ...
 +      (Fnext_read_file_uses_dialog_p): ... called from here to avoid
 +      ATTRIBUTE_CONST dependency from #ifdefs.  For details, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00289.html.
 +
 +2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to 32-bit MingGW --with-wide-int
 +      Problem reported by Eli Zaretskii in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00265.html
 +      * lisp.h (struct Lisp_Sub_Char_Table): Check that offset matches
 +      what we think it is, rather than checking only its alignment (and
 +      doing so incorrectly on MinGW).
 +
 +2015-01-12  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (Ffile_name_as_directory, Fdirectory_file_name):
 +      Remove dead NILP check.
 +      * image.c (Flookup_image): Use regular format for docstring.
 +      * keyboard.c (apply_modifiers_uncached): Use stpcpy.
 +
 +2015-01-12  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * dispnew.c (change_frame_size_1): Pass Qchange_frame_size to
 +      adjust_frame_size.
 +      * frame.c (frame_default_tool_bar_height): New variable.
 +      (adjust_frame_size): Possibly add requested adjustment to
 +      Vframe_adjust_size_history.
 +      (make_frame): Initialize tool_bar_redisplayed_once slot.
 +      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Clarify
 +      doc-string.  Call adjust_frame_size unconditionally (the frame's
 +      text size may remain unaltered but the pixel size may change).
 +      (x_figure_window_size): If frame_default_tool_bar_height was
 +      set, use it instead of calculating the tool bar height from
 +      DEFAULT_TOOL_BAR_IMAGE_HEIGHT.  Don't set
 +      Vframe_initial_frame_tool_bar_height.
 +      (Qchange_frame_size, Qxg_frame_set_char_size)
 +      (Qset_window_configuration, Qx_create_frame_1)
 +      (Qx_create_frame_2): New symbols.
 +      (Vframe_initial_frame_tool_bar_height): Remove.
 +      (Vframe_adjust_size_history): New history variable for debugging
 +      frame size adjustments.
 +      * frame.h (struct frame): New boolean slot
 +      tool_bar_redisplayed_once.
 +      (frame_default_tool_bar_height): Extern.
 +      * gtkutil.c (xg_frame_set_char_size): Pass Qxg_frame_set_char_size
 +      to adjust_frame_size.
 +      * nsfns.m (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +      * w32fns.c (x_change_tool_bar_height): Call adjust_frame_size with
 +      inhibit 1 when we have not redisplayed the tool bar yet.
 +      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +      * w32menu.c (set_frame_menubar): Simplify adjust_frame_size
 +      call.
 +      * window.c (Fset_window_configuration):
 +      Pass Qset_window_configuration to adjust_frame_size.
 +      * xdisp.c (redisplay_tool_bar): Assign new height to
 +      frame_default_tool_bar_height.
 +      (redisplay_internal): If we haven't redisplayed this frame's
 +      tool bar, call redisplay_tool_bar early so we can adjust the
 +      frame size accordingly.
 +      * xfns.c (x_change_tool_bar_height): Call adjust_frame_size with
 +      inhibit 1 when we have not redisplayed the tool bar yet.
 +      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +
 +2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Have 'make' output better GEN names
 +      * Makefile.in (gl-stamp, globals.h): Simplify by putting the new
 +      contents of globals.h into gl-stamp.  This lets us use AM_V_GEN
 +      more naturally so that 'make' can output more-accurate names.
 +
 +2015-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * buffer.c (init_buffer_once): Initialize buffer_local_flags before
 +      calling reset_buffer_local_variables, and make sure we initialize
 +      it completely.
 +
 +2015-01-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * coding.c (Fcoding_system_plist): Use common style for docstring.
 +
 +2015-01-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to MSB hosts without optimization
 +      E.g., when configuring --with-wide-int CFLAGS='-O0' on x86,
 +      the inline function XTYPE needs to be declared before being used.
 +      * lisp.h (XTYPE): New forward declaration.
 +
 +2015-01-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to 32-bit --with-wide-int
 +      Prefer symbol indexes to struct Lisp_Symbol * casted and then
 +      widened, as the latter had trouble with GCC on Fedora 21 when
 +      configured --with-wide-int and when used in static initializers.
 +      * alloc.c (garbage_collect_1, which_symbols):
 +      * lread.c (init_obarray):
 +      Prefer builtin_lisp_symbol when it can be used.
 +      * dispextern.h (struct image_type.type):
 +      * font.c (font_property_table.key):
 +      * frame.c (struct frame_parm_table.sym):
 +      * keyboard.c (scroll_bar_parts, struct event_head):
 +      * xdisp.c (struct props.name):
 +      Use the index of a builtin symbol rather than its address.
 +      All uses changed.
 +      * lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ...
 +      (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with
 +      symbol indexes rather than pointers, and which work better on MSB
 +      hosts because they shift right before tagging.  All uses changed.
 +      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
 +      No longer noops on wide-int hosts, since they work now.
 +      (builtin_lisp_symbol): New function.
 +
 +      Port to HAVE_FREETYPE && !HAVE_XFT
 +      * dispextern.h (struct face.extra) [HAVE_FREETYPE && !HAVE_XFT]:
 +      * font.h (syms_of_xftfont) [HAVE_FREETYPE && !HAVE_XFT]:
 +      Declare in this case too.
  
 -      * emacs.c (main): Always include gnutls.h and run syms_of_gnutls.
 +2015-01-10  Eli Zaretskii  <eliz@gnu.org>
  
 -      * gnutls.h: Always declare syms_of_gnutls.
 +      * w32fns.c (Fw32_register_hot_key): Use XINT instead of XLI.
  
 -      * gnutls.c (Fgnutls_available_p syms_of_gnutls): Move later for
 -      clarity.  Let the availability check return Qnil when the GnuTLS
 -      integration is not available, instead of erroring out.
 -      (Bug#19346)
 +      * w32notify.c (Fw32notify_add_watch, w32_get_watch_object):
 +      Use make_pointer_integer instead of XIL.
 +      (Fw32notify_rm_watch): Use XINTPTR instead of XLI.
  
 -2014-12-10  Eli Zaretskii  <eliz@gnu.org>
 +      * w32inevt.c (handle_file_notifications): Use make_pointer_integer
 +      instead of XIL.  Put a list of the descriptor, action, and file
 +      name in event->arg, instead of spreading them between event->code
 +      and event->arg.
  
 -      * xdisp.c (move_it_in_display_line_to, display_line):
 -      Don't disallow overflow-newline-into-fringe when word-wrap is in
 -      effect.  (Bug#19300)
 +      * w32term.c (queue_notifications): Use make_pointer_integer
 +      instead of XIL.  Put a list of the descriptor, action, and file
 +      name in event->arg, instead of spreading them between event->code
 +      and event->arg.
  
 -2014-12-04  Lee Duhem  <lee.duhem@gmail.com>  (tiny change)
 +      * keyboard.c (kbd_buffer_get_event) [HAVE_W32NOTIFY]: Adjust Lisp
 +      event creation to changes in w32term.c and w32inevt.c above.
  
 -      * eval.c (Fsignal): Remove duplicate test.
 -      (Fautoload_do_load): Fix up docstring.
 +2015-01-09  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-12-02  Jan Djärv  <jan.h.d@swipnet.se>
 +      Port Qnil==0 changes to 32-bit --with-wide-int
 +      * lisp.h (lisp_h_XSYMBOL, XSYMBOL): Assume USE_LSB_TAG in the
 +      macro-implemented version.  For the non-USE_LSB_TAG case, supply
 +      a new inline function that is the inverse of the new TAG_SYMPTR.
 +      (lisp_h_XUNTAGBASE, XUNTAGBASE): Remove.  All uses removed.
 +      (TAG_SYMPTR) [!USE_LSB_TAG]: If the pointer subtraction yields a
 +      negative number, don't allow sign bits to bleed into the encoded
 +      value.  Shift in zero bits instead.
  
 -      * nsterm.m (represented_filename, represented_frame): New variables.
 -      (ns_set_represented_filename): New function.
 -      (sendEvent:): Set represented filename here to avoid flicker,
 -      related to Bug#18757.
 +      Refactor pointer-to-integer conversion
 +      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor):
 +      Rename and move to lisp.h.  All uses changed.
 +      * lisp.h (XINTPTR, make_pointer_integer): New inline functions,
 +      which are renamed from gfilenotify.c's lisp_to_monitor and
 +      monitor_to_lisp, and with more-generic void * signatures.
  
 -      * nsterm.h: Declare ns_set_represented_filename.
 +2015-01-08  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsfns.m (ns_set_name_as_filename): Don't set represented filename
 -      at once, call ns_set_represented_filename instead.
 +      * dispnew.c (buffer_posn_from_coords): Fix the value of the column
 +      returned for right-to-left screen lines.  (Before the change on
 +      2014-12-30, the incorrectly-computed X pixel coordinate concealed
 +      this bug.)
  
 -2014-11-27  Eli Zaretskii  <eliz@gnu.org>
 +      * .gdbinit (xsymname): New subroutine.
 +      (xprintsym, initial-tbreak): Use it to access the name of a symbol
 +      in a way that doesn't cause GDB to barf when it tries to
 +      dereference a NULL pointer.
  
 -      * xdisp.c (handle_single_display_spec): When ignoring a fringe
 -      bitmap display, reset the ignore_overlay_strings_at_pos_p flag.
 -      (next_element_from_buffer): When done with overlays, reset the
 -      ignore_overlay_strings_at_pos_p flag.  (Bug#19201)
 +      * xdisp.c (next_element_from_c_string): Use Lisp integer zero as
 +      the object.
 +      (set_cursor_from_row, try_cursor_movement, dump_glyph)
 +      (insert_left_trunc_glyphs, append_space_for_newline)
 +      (extend_face_to_end_of_line, highlight_trailing_whitespace)
 +      (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually)
 +      (Fbidi_resolved_levels, produce_special_glyphs)
 +      (rows_from_pos_range, mouse_face_from_buffer_pos)
 +      (note_mouse_highlight): Use nil as the object for glyphs inserted
 +      by the display engine, and test with NILP instead of INTEGERP.
 +      (Bug#19535)
  
 -2014-11-25  Eli Zaretskii  <eliz@gnu.org>
 +      * w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
 +      the display engine.
  
 -      * w32fns.c (Fw32_shell_execute): Convert forward slashes in
 -      DOCUMENT to backslashes, if DOCUMENT is a file.  (Bug#19141)
 +      * xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
 +      the display engine.
  
 -2014-11-25  Ulrich Müller  <ulm@gentoo.org>
 +      * dispextern.h (struct glyph, struct it): Update comments for the
 +      OBJECT members.
  
 -      * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings
 -      for paxctl and setfattr. Fixes temacs startup failure with
 -      grsecurity/PaX enabled Linux kernel (bug#19067).
 +2015-01-08  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-11-17  Oscar Fuentes  <ofv@wanadoo.es>
 +      Port new Lisp symbol init to x86 --with-wide-int
 +      * lisp.h (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
 +      Define to empty on platforms where EMACS_INT_MAX != INTPTR_MAX, as
 +      GCC (at least) does not allow a constant initializer to widen an
 +      address constant.
  
 -      * src/w32.c: Use MINGW_W64 instead of _W64.
 +      * lisp.h (TAG_SYMPTR): Don't do arithmetic on NULL.
 +      This is a followup to the "Port Qnil==0 XUNTAG to clang" patch.
 +      Although clang doesn't need it, some other compiler might, and
 +      it's easy enough to be safe.
  
 -      * src/w32term.c: Likewise.
 +      * conf_post.h (ATTRIBUTE_ALLOC_SIZE): Port to clang 3.5.0.
 +      Apparently clang removed support for the alloc_size attribute.
  
 -2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      Port Qnil==0 XUNTAG to clang
 +      clang has undefined behavior if the program subtracts an integer
 +      from (char *) 0.  Problem reported by YAMAMOTO Mitsuharu in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00132.html
 +      * lisp.h (lisp_h_XUNTAG) [USE_LSB_TAG]:
 +      (XUNTAG) [!USE_LSB_TAG]: Port to clang 3.5.0.
  
 -      * frame.c (Fhandle_switch_frame): Deactivate shift-region (bug#19003).
 +      Port GFileMonitor * hack to Qnil==0 platforms
 +      Reported by Glenn Morris in: http://bugs.gnu.org/15880#112
 +      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): New functions.
 +      (dir_monitor_callback, Fgfile_add_watch, Fgfile_rm_watch): Use them.
  
 -2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-06  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * nsterm.m (ns_send_appdefined): Check for application defined
 -      event on Cocoa (Bug#18993).  Backport from trunk.
 +      * nsterm.m (x_set_window_size): Call updateFrameSize to get real
 +      size instead of using widht/height.  The frame may be constrained.
  
 -2014-11-15  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * window.c (window_scroll_pixel_based): Avoid truncation/rounding
 -      errors in computing the number of pixels to scroll.
 -      Suggested by Kelly Dean <kelly@prtime.org>.  (Bug#19060)
 +      * lisp.h (XSYMBOL): Parenthesize id in forward decl.
 +      Needed when neither optimizing nor inlining.
 +      Also, sort decls alphabetically.
  
 -2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-05  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsmenu.m (update_frame_tool_bar): If tool bar changes height,
 -      call updateFrameSize.
 +      * w32proc.c, w32.h, w32fns.c, w32font.c, w32menu.c, w32notify.c:
 +      * w32proc.c, w32select.c, w32term.c, w32uniscribe.c: Remove
 +      declarations of Q* variables that represent symbols.
 +
 +2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use 0 for Qnil
 +      Fixes Bug#15880.
 +      If USE_LSB_TAG, arrange for the representation of Qnil to be zero so
 +      that NILP (x) is equivalent to testing whether x is 0 at the
 +      machine level.  The overall effects of this and the previous patch
 +      shrink the size of the text segment by 2.3% and speeds up
 +      compilation of all the .elc files by about 0.5% on my platform,
 +      which is Fedora 20 x86-64.
 +      * lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG)
 +      (make_lisp_symbol) [USE_LSB_TAG]:
 +      Symbols now tag the difference from lispsym, not the pointer.
 +      (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros.
 +      (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons):
 +      Renumber so that Lisp_Symbol is 0, so that Qnil is zero.
 +      (XSYMBOL): New forward decl.
 +      (XUNTAGBASE): New function.
 +      (XUNTAG): Use it.
 +
 +      Compute C decls for DEFSYMs automatically
 +      Fixes Bug#15880.
 +      This patch also makes Q constants (e.g., Qnil) constant addresses
 +      from the C point of view.
 +      * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle.c:
 +      * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
 +      * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
 +      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
 +      * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
 +      * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
 +      * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
 +      * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
 +      * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
 +      * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
 +      * xselect.c, xsettings.c, xterm.c:
 +      Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
 +      These names are now defined automatically by make-docfile.
 +      * alloc.c (init_symbol): New function.
 +      (Fmake_symbol): Use it.
 +      (c_symbol_p): New function.
 +      (valid_lisp_object_p, purecopy): Use it.
 +      * alloc.c (marked_pinned_symbols):
 +      Use make_lisp_symbol instead of make_lisp_ptr.
 +      (garbage_collect_1): Mark lispsym symbols.
 +      (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
 +      (mark_object): Use it.
 +      (sweep_symbols): Sweep lispsym symbols.
 +      (symbol_uses_obj): New function.
 +      (which_symbols): Use it.  Work for lispsym symbols, too.
 +      (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
 +      since Qt's address is already known now.
 +      (syms_of_alloc): Add lispsym count to symbols_consed.
 +      * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
 +      when testing whether storage is all bits zero.
 +      * dispextern.h (struct image_type):
 +      * font.c (font_property_table):
 +      * frame.c (struct frame_parm_table, frame_parms):
 +      * keyboard.c (scroll_bar_parts, struct event_head):
 +      * xdisp.c (struct props):
 +      Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
 +      Lisp_Object *, since Qfoo is no longer an object whose address can be
 +      taken.  All uses changed.
 +      * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
 +      use it, so that they no longer need to take the address of a Lisp sym.
 +      (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
 +      * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
 +      * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
 +      DEFSYM Qdeactivate_mark before the corresponding var.
 +      * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
 +      instead of interning their symbols; this avoids duplicates.
 +      (LISP_INITIALLY, TAG_PTR)
 +      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
 +      New macros.
 +      (LISP_INITIALLY_ZERO): Use it.
 +      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
 +      (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
 +      Move decls up, to avoid forward uses.  Include globals.h earlier, too.
 +      (make_lisp_symbol): New function.
 +      (XSETSYMBOL): Use it.
 +      (DEFSYM): Now just a placeholder for make-docfile.
 +      * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
 +      (intern_sym): New function, with body taken from old intern_driver.
 +      (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
 +      All uses changed.
 +      (define_symbol): New function.
 +      (init_obarray): Define the C symbols taken from lispsym.
 +      Use plain DEFSYM for Qt and Qnil.
 +      * syntax.c (init_syntax_once): No need to worry about
 +      Qchar_table_extra_slots.
  
 -      * nsterm.m (setFrame:): Remove call to display (Bug#18757).
 +2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-11-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      'temacs -nw' should not call missing functions
 +      Without this patch, "temacs -nw" fails with the diagnostic
 +      "emacs: Symbol's function definition is void: frame-windows-min-size"
 +      and messes up the tty's state.
 +      * frame.c (Fframe_windows_min_size): New placeholder function.
 +      (syms_of_frame): Define it.
 +      * window.c (Fwindow__sanitize_window_sizes): New placeholder.
 +      (syms_of_window): Define it.
  
 -      * nsfns.m (x_set_foreground_color, x_set_background_color)
 -      (x_set_cursor_color, Fxw_color_values): Block/unblock input,
 -      use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036).
 +      Less 'make' chatter for lisp dir
 +      * Makefile.in (%.elc): Adjust to compile-onefile change in
 +      ../lisp/Makefile.in.
  
 -2014-11-09  Eli Zaretskii  <eliz@gnu.org>
 +      batch write-region no longer says "Wrote FOO"
 +      This cuts down on 'make' chatter a bit.
 +      * fileio.c (Fwrite_region):
 +      Don't output "Wrote /whatever/foo.elc" if noninteractive.
  
 -      * fileio.c (Finsert_file_contents): Invalidate buffer caches also
 -      when the inserted text does not need decoding.  (Bug#18982)
 +2015-01-03  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * w32heap.c (allocate_heap): Set the lower limit of heap at 8MB.
 -      (Bug#18995)
 +      Revert previous change to produce_composite_glyph
 +      * term.c (produce_composite_glyph): Revert previous change (Bug#19496).
  
 -2014-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +      Pacify gcc -Wparentheses
 +      * frame.c (x_set_frame_parameters): Add parens (Bug#19428).
  
 -      * nsterm.h (EmacsScroller): judge returns bool.
 +2015-01-03  Martin Rudalics  <rudalics@gmx.at>
  
 -      * nsterm.m (ns_set_vertical_scroll_bar): Release bar.
 -      (ns_judge_scroll_bars): Only set removed if judge returns true.
 -      (judge): Returns bool == condemned.  Remove self from window.
 -      (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757).
 +      * frame.c (x_set_frame_parameters): Call Fset_frame_size only if
 +      f->can_x_set_window_size is true.
 +      * xterm.c (x_set_window_size_1): Call change_frame_size with
 +      text sizes instead of pixel sizes (Bug#19428).
  
 -2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +2015-01-01  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA.
 -      (run): Ditto.  Only use non-system event loop if OSX version is
 -      exactly 10.9 (Bug#18993).
 -      (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless
 -      needed (Bug#18757).
 +      * xdisp.c (pos_visible_p): Fix up the X coordinate for
 +      right-to-left screen lines.  (Bug#19473)
  
 -2014-11-07  Michael Albinus  <michael.albinus@gmx.de>
 +2015-01-01  Eli Zaretskii  <eliz@gnu.org>
  
 -      * callproc.c (encode_current_directory): Support handling of file
 -      names prepended by "/:".  (Bug#18891)
 +      * w32proc.c (Fw32_get_codepage_charset): Doc fix.  (Bug#19458)
  
 -2014-11-06  Alan Mackenzie  <acm@muc.de>
 +2014-12-31  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * syntax.c (back_comment): Fix off-by-one error (bug#18022).
 +      Simplify setfattr use by assuming GNU make
 +      * Makefile.in (PAXCTL_if_present, SETFATTR_if_present): New macros.
 +      (emacs$(EXEEXT), temacs$(EXEEXT), bootstrap-emacs$(EXEEXT)): Use them.
 +      Simplify by using GNU make rather than shell conditionals,
 +      by using ln -f rather than rm -f followed by ln,
 +      and by preferring $@ to spelling out the destination.
  
 -2014-11-06  Dima Kogan  <dima@secretsauce.net>
 +2014-12-29  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xgselect.c (xg_select): Use g_main_context_acquire (bug#18861).
 +      * sysdep.c [WINDOWSNT]: Include sys/socket.h, without which this
 +      file doesn't compile on MS-Windows.
  
 -2014-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +2014-12-29  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * dired.c (Ffile_attributes): Return Qnil, if Fexpand_file_name
 -      raises an error.  (Bug#18891)
 +      Allow return value of system-name to vary.  (Bug#19438)
 +      * filelock.c (current_lock_owner):
 +      * xrdb.c (get_environ_db):
 +      * xterm.c (same_x_server):
 +      * xterm.c (x_term_init):
 +      Prefer (system-name) to system-name, and avoid naming
 +      locals 'system-name'.
 +      * editfns.c (cached_system_name): New static var.
 +      (init_and_cache_system_name): New function.
 +      (init_editfns, Fsystem_name): Use it.
 +      (syms_of_editfns): Initialize it and Vsystem_name to the same value.
 +      * sysdep.c [HAVE_SOCKETS]: Don't include <sys/socket.h>, <netdb.h>.
 +      (h_errno) [TRY_AGAIN && !HAVE_H_ERRNO]: Remove decl.
 +      (init_system_name) [HAVE_SOCKETS]: Don't canonicalize the name.
 +      Don't create a new string if the current value is already correct.
  
 -2014-11-03  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-28  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * xdisp.c (Fdump_glyph_matrix, Fdump_frame_glyph_matrix): Doc fix.
 -      (Fdump_frame_glyph_matrix): Don't segfault if invoked on a GUI
 -      frame; instead, print an error message.
 +      Fix produce_composite_width typo
 +      * term.c (produce_composite_glyph):
 +      Fix typo that confused number of columns for pixel width.
  
 -2014-11-03  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-28  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
  
 -      * nsfns.m (ns_set_doc_edited): Check for FRAME_NS (Bug#18925).
 +      Wrap dll functions more simply
 +      * decompress.c, gnutls.c, image.c, xml.c:
 +      If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
 +      rather than the inverse when not WINDOWSNT.  This isolates the
 +      fn_* business into the WINDOWSNT-specific section of the code,
 +      which makes it easier to maintain the generic code.
 +      * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
 +      * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
 +      * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
 +      * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
 +      Remove.  All uses replaced by DEF_DLL_FN.
 +      * decompress.c (inflateInit2): Remove; no longer needed.
 +      * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
  
 -2014-10-31  Jan Djärv  <jan.h.d@swipnet.se>
 +      Port memory-full checking to GnuTLS 3.3
 +      Instead of using gnutls_global_set_mem_functions, check every call
 +      to a GnuTLS function that might return an indication of memory
 +      exhaustion.  Suggested by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
 +      * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
 +      (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
 +      (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
 +      All uses removed.
 +      (check_memory_full): New function.
 +      (emacs_gnutls_handshake, emacs_gnutls_handle_error)
 +      (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status)
 +      (Fgnutls_boot): Use it.
 +      (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
  
 -      * macfont.m (macfont_glyph_extents): Turn off syntetic bold
 -      if force_integral_p (i.e. no antialias).
 -      (macfont_draw): Check ns_antialias_text, also turn off syntetic
 -      bold if no antialias (Bug#18876).
 +2014-12-27  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * emacs.c (main): Don't chdir to $HOME on Cocoa if --chdir
 -      was given (Bug#18846).
 +      Fix parse_settings to match internal documentation
 +      * xsettings.c (parse_settings): Return the number of settings seen.
 +      Count the settings changes accurately.
 +      (read_settings): Don't confuse number of settings changes with
 +      the return code from XGetWindowProperty.
  
 -2014-10-30  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsterm.h (ns_set_doc_edited): Declare taking no args.
 +      * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
 +      composition_compute_stop_pos to the number of characters in the
 +      string.  (Bug#19435)
 +      <GET_FROM_BUFFER, GET_FROM_STRING>: Simplify code.
  
 -      * nsfns.m (ns_set_doc_edited): Do all logic (check frames) here
 -      instead of in xdisp.c, function now takes void. (Bug#18884).
 +      * composite.c (composition_compute_stop_pos): If no composition
 +      was found in a string before ENDPOS, and ENDPOS is the string end,
 +      no need to back up to a safe point.
  
 -      * xdisp.c (prepare_menu_bars): Remove HAVE_NS code.
 -      (redisplay_internal): Call ns_set_doc_edited if HAVE_NS (Bug#18884).
 +      * dispextern.h (struct it) <end_charpos>: Improve commentary.
  
 -      * nsterm.h (EmacsScroller): Replace Lisp_Object win with
 -      struct window* (Bug#18889).
 -      Remove getMouseMotionPart.
 -      (ns_output): Make icon_top/left int.
 +2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * nsfns.m (x_icon): icon_top/left is int.
 +      * nsimage.m (allocInitFromFile:): Initialize bmRep.
 +      (dealloc): Release bmRep.
 +        (setPixmapData): Make bmRep local so class member is not
 +        set (Bug#19133).
 +      (setPixmapData): Rename local variable bmRep to avoid compiler
 +      warning.
  
 -      * nsterm.m (ns_mouse_position): Remove unused code.
 -      (initFrame:window:, dealloc): Use window instead of win.
 -      (getMouseMotionPart:window:x:y:): Remove, unused.
 -      (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window.
 +2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2014-10-30  Samuel Bronson  <naesten@gmail.com>
 +      * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
 +      when going to fullscreen (Bug#0x180004f).
  
 -      * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927).
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-10-28  Eli Zaretskii  <eliz@gnu.org>
 +      * window.c (Fwindow_body_width): Doc fix.  (Bug#19395)
  
 -      * fileio.c (Fexpand_file_name): Use make_unibyte_string, not
 -      build_string, when importing a home directory.  (Bug#18873)
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-10-26  Eli Zaretskii  <eliz@gnu.org>
 +      * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
  
 -      * dispnew.c (buffer_posn_from_coords):
 -      Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
 -      account for the header-line height.  (Bug#18839)
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-10-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +      * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
  
 -      * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
 -      [Backport]
 -      (erase_phys_cursor): Fix confusion between window-relative and
 -      text area-relative x-coordinates.  [Backport]
 +2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xselect.c, xsettings.c
 +      * xselect.c (x_get_local_selection, struct selection_data)
 +      (x_selection_request_lisp_error, struct prop_location)
 +      (x_handle_selection_request, x_convert_selection)
 +      (waiting_for_other_props_on_window, expect_property_change)
 +      (wait_for_property_change, x_handle_property_notify)
 +      (x_get_foreign_selection, x_get_window_property)
 +      (receive_incremental_selection)
 +      (x_get_window_property_as_lisp_data)
 +      (lisp_data_to_selection_data, Fx_get_selection_internal)
 +      (x_send_client_event):
 +      * xselect.c, xterm.h (x_handle_dnd_message):
 +      * xsettings.c (dpyinfo_valid, parse_settings, read_settings)
 +      (apply_xft_settings, read_and_apply_settings)
 +      (xft_settings_event, init_gsettings, init_xsettings)
 +      (syms_of_xsettings):
 +      Use bool for boolean.
 +      * xselect.c (x_get_window_property): Omit last arg, which was an
 +      unused boolean.
 +      * xsettings.c (apply_xft_settings): Remove 2nd arg, which was
 +      always true.  All callers changed.
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2014-12-26  Eli Zaretskii  <eliz@gnu.org>
  
 -      * minibuf.c (history-length): Increase default from 30 to 100.
 -      [Backport]
 +      * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
 +      of strcat.
  
 -2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * w32menu.c (add_menu_item): Use stpcpy instead of strcat.
  
 -      * xdisp.c (redisplay_window): Re-run pre-redisplay-function after we
 -      move point.
 +      * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
 +      strcat.
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * Version 24.4 released.
 +      Use bool for boolean in xsmfns.c
 +      * xsmfns.c, xterm.h (x_session_have_connection):
 +      * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session):
 +      Use bool for boolean.
 +      (x_session_initialize, Fhandle_save_session):
 +      Prefer NILP (x) to EQ (x, Qnil).
  
 -2014-10-17  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-25  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * xterm.c (x_draw_hollow_cursor): Fix display of hollow cursor on
 -      1-pixel R2L characters.
 -      Reported by Dmitry Antipov <dmantipov@yandex.ru>, see
 -      http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html.
 +      * callproc.c (child_setup):
 +      * dbusbind.c (xd_signature_cat):
 +      * doc.c (get_doc_string, Fsnarf_documentation):
 +      * editfns.c (Fuser_full_name):
 +      * frame.c (xrdb_get_resource):
 +      * gtkutil.c (xg_get_file_with_chooser):
 +      * tparam.c (tparam1):
 +      * xfns.c (xic_create_fontsetname):
 +      * xrdb.c (gethomedir, get_user_db, get_environ_db):
 +      * xsmfns.c (smc_save_yourself_CB):
 +      Rewrite to avoid the need for strcat, typically by using stpcpy
 +      and/or lispstpcpy.  strcat tends to be part of O(N**2) algorithms.
 +      * doc.c (sibling_etc):
 +      * xrdb.c (xdefaults):
 +      Now a top-level static constant.
  
 -2014-10-10  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-12-23  Didier Verna  <didier@didierverna.net> (tiny change).
  
 -      Fix port to Debian GNU/kFreeBSD 7 (wheezy) (Bug#18666).
 -      * process.c (accept4) [!HAVE_ACCEPT4]: New macro.
 +      * nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a
 +      C one (Bug#19396).
  
 -2014-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-12-22  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * frame.c (Fmouse_pixel_position): Call Vmouse_position_function
 -      (bug#18638).
 +      * xterm.c (x_bitmap_icon): Partly revert change from 2014-03-21 which
 +      breaks icon setting for Gtk+ except for initial frame (Bug#19403).
  
 -2014-10-08  K. Handa  <handa@gnu.org>
 +2014-12-22  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * coding.c (detect_coding_iso_2022): Set coding->rejected
 -      correctly when an invalid escape sequence is found (Bug#18610).
 +      Use bool for boolean in xterm.c
 +      * frame.h, nsterm.m, w32term.c, w32term.h, xterm.c:
 +      (x_set_window_size, x_bitmap_icon):
 +      * nsterm.m (ns_frame_raise_lower, x_new_font):
 +      * termhooks.h (struct terminal.toggle_invisible_pointer_hook)
 +      (struct terminal.frame_raise_lower_hook):
 +      * w32term.c (w32_frame_raise_lower):
 +      * xterm.c, xterm.h (x_text_icon):
 +      * xterm.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, x_after_update_window_line)
 +      (x_set_glyph_string_gc, x_draw_glyph_string_background)
 +      (x_draw_glyph_string_foreground)
 +      (x_draw_composite_glyph_string_foreground)
 +      (x_alloc_lighter_color, x_draw_relief_rect)
 +      (x_draw_glyph_string_box, x_draw_image_relief)
 +      (x_draw_image_glyph_string, x_draw_stretch_glyph_string)
 +      (x_draw_underwave, x_draw_glyph_string, x_show_hourglass)
 +      (x_hide_hourglass):
 +      (XFillRectangle) [HAVE_GTK3]:
 +      (XTtoggle_invisible_pointer, frame_highlight, frame_unhighlight)
 +      (x_focus_changed, x_find_modifier_meanings, note_mouse_movement)
 +      (XTmouse_position, xt_action_hook, xt_horizontal_action_hook)
 +      (x_send_scroll_bar_event, xm_scroll_callback)
 +      (xg_scroll_callback, xaw_jump_callback, xaw_scroll_callback)
 +      (x_create_toolkit_scroll_bar)
 +      (x_create_horizontal_toolkit_scroll_bar)
 +      (x_set_toolkit_horizontal_scroll_bar_thumb, x_scroll_bar_create)
 +      (x_scroll_bar_set_handle, XTset_vertical_scroll_bar)
 +      (XTset_horizontal_scroll_bar, x_scroll_bar_expose)
 +      (x_scroll_bar_handle_click, x_scroll_bar_note_movement)
 +      (x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion, x_net_wm_state)
 +      (handle_one_xevent, XTread_socket, x_draw_bar_cursor)
 +      (x_draw_window_cursor, x_clear_errors)
 +      (x_trace_wire, x_new_font, x_set_offset, wm_supports)
 +      (set_wm_state, x_set_sticky, get_current_wm_state)
 +      (do_ewmh_fullscreen, x_handle_net_wm_state)
 +      (x_check_expected_move, x_sync_with_move, x_wait_for_event)
 +      (x_set_window_size_1, XTframe_raise_lower)
 +      (x_make_frame_visible, x_iconify_frame)
 +      (x_timeout_atimer_activated_flag, same_x_server, x_display_ok)
 +      (x_term_init, x_process_timeouts, x_activate_timeout_atimer)
 +      (x_delete_terminal, x_initialize, syms_of_xterm):
 +      Use bool for boolean.
  
 -2014-10-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-12-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * composite.h (struct composition.width): Now int
 +      instead of unsigned short, as we prefer signed integers.
 +
 +      Let charset tick grow past USHRT_MAX
 +      * charset.c, charset.h (charset_ordered_list_tick):
 +      Now EMACS_UINT, not unsigned short.
 +      * fontset.c (reorder_font_vector): Allow the tick to grow to the
 +      maximum representable Emacs integer value before wrapping it around.
 +
 +      Simplify unexec file mode setting
 +      * unexaix.c, unexcoff.c, unexelf.c, unexmacosx.c:
 +      Don't include <sys/stat.h> when no longer needed.
 +      (unexec): Create file with correct mode in the first place,
 +      rather than overwriting the mode later and fiddling with the
 +      global umask in the mean time.  Avoid bogus usage like
 +      'umask (777)', which should have been 'umask (0777)'.
 +      (mark_x): Remove. All callers removed.
 +
 +2014-12-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor cleanups for Lisp objects and symbols
 +      * alloc.c (next_vector, set_next_vector):
 +      * lisp.h (lisp_h_INTEGERP, make_number, XFASTINT, make_natnum):
 +      (lisp_h_make_number) [USE_LSB_TAG]:
 +      Use Lisp_Int0 instead of the mystery constant 0.
 +      * alloc.c (mark_object): Always set and use po; that's simpler.
 +      (CHECK_LIVE, CHECK_ALLOCATED_AND_LIVE):
 +      Properly parenthesize definientia.
 +      * bidi.c (bidi_initialize):
 +      * buffer.c (init_buffer_once):
 +      * nsfns.m (syms_of_nsfns):
 +      * nsmenu.m (syms_of_nsmenu):
 +      * nsselect.m (syms_of_nsselect):
 +      Prefer DEFSYM to defining by hand.
 +      * buffer.c (syms_of_buffer): Omit unneeded staticpros.
 +      * data.c: Fix too-long line.
 +      * lisp.h (DECLARE_GDB_SYM): New macro.
 +      (DEFINE_GDB_SYMBOL_BEGIN): Use it.
 +      (DEFINE_GDB_SYMBOL_BEGIN, DEFINE_GDB_SYMBOL_END) [!MAIN_PROGRAM]:
 +      Declare the symbol, so it's visible to everywhere lisp.h is included.
 +      Move forward decls as far forward as they can go,
 +      to allow future changes to use them.
 +
 +2014-12-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * gnutls.c: Include gnutls.h.
 +      This to check syms_of_gnutls's API even when !HAVE_GNUTLS.
 +      * image.c (svg_load): Fix pointer signedness.
 +
 +2014-12-18  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (frame_windows_min_size): New argument IGNORE.
 +      (adjust_frame_size): When called from change_frame_size call
 +      frame_windows_min_size with IGNORE Qt so we can ignore size
 +      restrictions.
  
 -      * 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 an entity itself (Bug#17125).
 +2014-12-18  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-10-02  Eli Zaretskii  <eliz@gnu.org>
 +      * font.c (Ffont_info): Add more font information to the vector
 +      returned by the function, inspired by query-font.  Doc fix.
 +      (Bug#19395)
  
 -      * xdisp.c (move_it_by_lines): Call reseat_1 after moving the
 -      iterator backwards, to resync the bidi iterator.  (Bug#18584)
 +2014-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-10-01  Jan Djärv  <jan.h.d@swipnet.se>
 +      * keyboard.c (input_was_pending): New var.
 +      (read_char): Use it to make sure we only skip redisplay when we can't
 +      keep up with the repeat rate.
  
 -      * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to
 -      make a font_object from a tty frame (Bug#18573).
 -      (Finternal_set_lisp_face_attribute): Add FIXME comment.
 +2014-12-17  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-09-30  Eli Zaretskii  <eliz@gnu.org>
 +      * keyboard.c (swallow_events): Don't redisplay if there's input pending.
  
 -      * w32fns.c (w32_createwindow): Accept an additional argument, an
 -      array of 2 values specifying the coordinates of the frame's
 -      top-left corner.  Use these values instead of calling x_get_arg,
 -      which can cons Lisp objects, and therefore cannot be called except
 -      from the main thread.  Remove redundant tests for the default values.
 -      (my_create_window): Move the calculation of the coordinates of the
 -      frame's top-left edge here.  Pass them to the input thread via the
 -      second parameter of the WM_EMACS_CREATEWINDOW message.
 -      See http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html
 -      for the details.
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
  
 -2014-09-29  Eli Zaretskii  <eliz@gnu.org>
 +      * image.c (svg_load): Watch out for nil value of current buffer's
 +      filename.  Re-enable filename thing for not-a-file case.
  
 -      * xdisp.c (cursor_row_fully_visible_p): Update commentary.
 -      (redisplay_window): Treat the frame's frozen_window_starts flag
 -      the same way as the optional_new_start flag for the window: only
 -      obey it if the glyph row showing point will be fully visible.
 -      Likewise when the window start is in a continuation line.  If,
 -      after trying everything under the 'force_start' label, point is
 -      still not fully visible, give up and scroll the window.
 -      Add debugging traces.  (Bug#18545)
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
  
 -      * window.c (Frecenter): Set the window's redisplay flag.
 +      Partially disabled previous change.
  
 -2014-09-24  Eli Zaretskii  <eliz@gnu.org>
 +      * image.c (svg_load): Temporarily disabled filename thing for
 +      not-a-file case as it can cause crashs.
  
 -      * w32term.c (w32_read_socket): Don't use frame dimensions for
 -      resizing if GetClientRect returned an empty (0, 0, 0, 0)
 -      rectangle.  Check the return value of GetClientRect, and don't use
 -      the results if it didn't succeed.
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
  
 -      * dispnew.c (change_frame_size_1): Recompute the frame dimensions
 -      in columns and lines after correcting the pixel dimensions in
 -      check_frame_size.
 -      (adjust_decode_mode_spec_buffer): Add assertion to avoid passing
 -      negative values to xrealloc.  (Bug#18528)
 +      Fix problem with images referenced within svg files. (bug#19373)
  
 -2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +      * image.c: Additional parameter 'filename' for
 +      svg_load_image. Include "buffer.h".  Define library function
 +      rsvg_handle_set_base_uri for WINDOWSNT.
 +      (init_svg_functions): Initialize rsvg_handle_set_base_uri.
 +      (fn_rsvg_handle_set_base_uri): Define fn_rsvg_handle_set_base_uri.
 +      (svg_load): Pass a filename to svg_load_image: either name of
 +      actual file or of current buffer's file.
 +      (svg_load_image): New parameter 'filename', used for setting
 +      base_uri, necessary for loading referenced images. (bug#19373)
  
 -      On OSX, do not free font-specific data more than once (Bug#18501).
 -      * macfont.m (macfont_close): Release and free font-specific data
 -      only if it wasn't previously freed.
 +2014-12-16  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-09-21  David Caldwell <david@porkrind.org>  (tiny change)
 +      * lread.c (init_obarray): Declare Qt as special.
 +      This fixes a typo in the 2012-05-15 patch that
 +      tried to declare Qt as special.
  
 -      * unexmacosx.c (dump_it): Improve error message.
 +2014-12-15  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-09-18  Juri Linkov  <juri@jurta.org>
 +      Various fixes to use bool type and constants.
 +      * dispnew.c (update_single_window): Remove arg `force_p' since it's
 +      always true.
 +      * xfaces.c (clear_face_cache): Use bool for the argument type.
  
 -      * image.c (imagemagick_load_image): Add delay to imagemagick metadata.
 -      (Bug#10747, bug#18334)
 +2014-12-15  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-09-18  Eli Zaretskii  <eliz@gnu.org>
 +      Correct same_at_end when restoring window points
 +      * fileio.c (Finsert_file_contents): Compute same_at_end character
 +      position using the old buffer size, not the new one, since
 +      restore_window_points wants the old size.
 +      Fixes: debbugs:19161
  
 -      * frame.c (Fmouse_position, Fset_mouse_position): Clarify the
 -      units in which the position is measured.  (Bug#18493)
 +2014-12-14  Alan Mackenzie  <acm@muc.de>
  
 -      * xdisp.c (redisplay_internal): Force redisplay of all windows
 -      that show a buffer whose narrowing has changed.  (Bug#18490)
 +      New feature optionally to accelerate auto-repeated scrolling.
  
 -2014-09-16  Eli Zaretskii  <eliz@gnu.org>
 +      * xdisp.c: Remove "static" from declaration of Qfontification_functions.
  
 -      * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor):
 -      * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L
 -      lines, draw the hollow-box and hbar cursors on the right side of
 -      cursor-glyph.  Thanks to martin rudalics <rudalics@gmx.at> for
 -      testing on X.
 +      * window.c (window_scroll): Bind fontification-functions to nil
 +      when scrolling by whole screens and
 +      fast-but-imprecise-scrolling is non-nil.
 +      (syms_of_window): New DEFVAR_BOOL fast-but-imprecise-scrolling.
  
 -      * xterm.c (x_draw_stretch_glyph_string):
 -      * w32term.c (x_draw_stretch_glyph_string): Fix a thinko that
 -      caused the block cursor to disappear on a TAB in R2L lines in
 -      every window except the leftmost one.  Reported by Martin Rudalics
 -      <rudalics@gmx.at>.
 +      * lisp.h (bool): Declare Qfontification_functions extern.
  
 -2014-09-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-12-14  Eli Zaretskii  <eliz@gnu.org>
  
 -      Always use matched specpdl entry to record call arguments (Bug#18473).
 -      * lisp.h (record_in_backtrace): Adjust prototype.
 -      * eval.c (record_in_backtrace): Return current specpdl level.
 -      (set_backtrace_args, set_backtrace_nargs): Merge.  Adjust all users.
 -      (eval_sub, Ffuncall): Record call arguments in matched specpdl
 -      entry and use that entry in call to backtrace_debug_on_exit.
 -      (apply_lambda): Likewise.  Get current specpdl level as 3rd arg.
 -      (do_debug_on_call): Get current specpdl level as 2nd arg.
 +      Load system's default trusted Certificate Authorities if available.
 +      * gnutls.c (gnutls_certificate_set_x509_system_trust)
 +      [GNUTLS >= 3.0.20]: Declare for WINDOWSNT.
 +      (init_gnutls_functions)(gnutls_certificate_set_x509_system_trust)
 +      [GNUTLS >= 3.0.20]: Load from shared library for WINDOWSNT.
 +      (fn_gnutls_certificate_set_x509_system_trust) [!WINDOWSNT]:
 +      Define new macro.
 +      (Fgnutls_boot) [GNUTLS >= 3.0.20]:
 +      Call gnutls_certificate_set_x509_system_trust.  Log an error message if
 +      it fails.
  
 -      Prefer ptrdiff_t to int and avoid integer overflows.
 -      * fileio.c (make_temp_name):
 -      * font.c (font_parse_family_registry): Avoid integer
 -      overflow on string size calculation.
 -      * data.c (Faset): Likewise for byte index.
 +2014-12-14  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +      * regex.c (analyze_first): Rename from analyze_first.
  
 -      Fix display of R2L lines in partial-width windows.
 -      * xdisp.c (init_iterator): Don't use it->bidi_p before it is
 -      assigned the correct value.
 -      (extend_face_to_end_of_line): Account for truncation and
 -      continuation glyphs in R2L rows when one of the fringes is not
 -      displayed.
 -      (display_line): Don't assign negative X offset to a row if we are
 -      going to produce a truncation glyph for it.  When handling
 -      truncated R2L rows, consider the width of the left fringe instead
 -      of the right one.
 -      (produce_special_glyphs): Fix bogus assignments.
 +2014-12-13  Paul Eggert  <eggert@cs.ucla.edu>
  
 -2014-09-14  Eli Zaretskii  <eliz@gnu.org>
 +      * alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of
 +      a hack involving a union.
  
 -      * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of
 -      pipes.
 -      (sys_write): When a write to a non-blocking pipe returns ENOSPC,
 -      set errno to EAGAIN instead, to allow the caller to retry the
 -      write after some waiting.  Fixes deadlocks when Emacs exchanges a
 -      lot of data through the pipe.  (Bug#18420)
 +2014-12-13  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-09-13  Eli Zaretskii  <eliz@gnu.org>
 +      * gnutls.c (Fgnutls_available_p, syms_of_gnutls):
 +      Move gnutls-available-p out of the HAVE_GNUTLS conditional, and define
 +      them only once.
  
 -      * sound.c (Fplay_sound_internal): Encode the sound file name in
 -      the ANSI codepage.  Expand it against data-directory, as per docs,
 -      not against the current directory.  No need to make a local copy
 -      of the file name; pass the encoded file name directly to
 -      do_play_sound.  (Bug#18463)
 +2014-12-13  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -      * w32.c (ansi_encode_filename): If w32_get_short_filename returns
 -      NULL, and the file name is not encodable in ANSI codepage, return
 -      the string with "?" replacement characters, which will fail the
 -      caller.  This avoids returning a random value in that case.
 +      * emacs.c (main): Always include gnutls.h and run syms_of_gnutls.
  
 -2014-09-11  Martin Rudalics  <rudalics@gmx.at>
 +      * gnutls.h: Always declare syms_of_gnutls.
  
 -      * window.c (Fresize_mini_window_internal): Set w->total_lines
 -      from w->pixel_height (Bug#18422).
 +      * gnutls.c (Fgnutls_available_p syms_of_gnutls): Move later for
 +      clarity.  Let the availability check return Qnil when the GnuTLS
 +      integration is not available, instead of erroring out.
 +      (Bug#19346)
  
 -2014-09-09  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-13  Eli Zaretskii  <eliz@gnu.org>
  
 -      * nsterm.m (updateFrameSize:, initFrameFromEmacs:)
 -      (toggleFullScreen:): Take frame_resize_pixelwise into account when
 -      setting resize increments (Bug#18435).
 +      * xdisp.c (move_it_in_display_line_to, display_line):
 +      Don't disallow overflow-newline-into-fringe when word-wrap is in
 +      effect.  (Bug#19300)
  
 -2014-09-09  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * xdisp.c (pos_visible_p): Properly save and restore the iterator
 -      state around the call to line_bottom, since it can move the
 -      iterator to another screen line.  This fixes off-by-one errors in
 -      the reported row in some rare cases.
 +      * fileio.c: Better preserve window-points during revert (bug#19161).
 +      (Qget_buffer_window_list): New var.
 +      (get_window_points_and_markers, restore_window_points): New functions.
 +      (Finsert_file_contents): Use them to save and restore window-points.
  
 -2014-09-07  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -      * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
 -      always make sure the marginal areas of the row are in sync with
 -      what the window wants.  (Bug#18419)
 +      * xterm.c (x_delete_terminal): Call emacs_close for X connection
 +      descriptor if called from x_connection_closed and always delete
 +      this descriptor from keyboard waiting set (Bug#19147).
  
 -2014-09-04  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-10  Eli Zaretskii  <eliz@gnu.org>
  
 -      * data.c (set_internal): Use assq_no_quit, not Fassq, to find an
 -      existing binding of a variable, to avoid silently aborting
 -      commands that use specbind.  (Bug#18331)
 +      * bidi.c (BIDI_CACHE_MAX_ELTS_PER_SLOT): New macro.
 +      (bidi_cache_max_elts): New global variable.
 +      (bidi_shelve_header_size): Add the sizeof bidi_cache_max_elts.
 +      (bidi_cache_shrink, bidi_initialize): Reset bidi_cache_max_elts to
 +      its initial value.
 +      (bidi_cache_search): Handle overflown cache.  Improve commentary.
 +      (bidi_cache_ensure_space): Limit allocations to the current value
 +      of bidi_cache_max_elts.  Force xpalloc not to over-allocate.
 +      If less than a full BIDI_CACHE_CHUNK is left to the limit, decrease
 +      the increment to not exceed the limit.
 +      (bidi_cache_iterator_state): Now returns non-zero if succeeded to
 +      cache, zero otherwise (meaning the cache overflowed).  In the
 +      latter case, set bidi_cache_last_idx to -1.
 +      (bidi_peek_at_next_level): Handle overflown cache.
 +      (bidi_push_it): Increase the cache limit for iterating the new object.
 +      (bidi_pop_it): Decrease the cache limit back to previous value.
 +      (bidi_shelve_cache): Shelve the current value of the cache limit.
 +      (bidi_unshelve_cache): Restore the value of cache limit.
 +      (bidi_find_bracket_pairs): If the cache overflows while looking
 +      for the paired bracket, give up and let bidi_resolve_neutrals
 +      process the bracket as a simple neutral.  (Bug#19322)
 +      (bidi_find_other_level_edge): If the cache overflows, fall back on
 +      Plan B, which effectively stops the reordering and restarts it on
 +      the next character (after resetting the cache).
 +      (bidi_move_to_visually_next): When the cache overflows, reset it
 +      after processing the last cached character.
 +
 +2014-12-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix glitches in gnutls.c, mostly memory-related
 +      * gnutls.c: Sort macro definitions by name.
 +      (fn_gnutls_transport_set_errno): Omit unreachable definition.
 +      (fn_gnutls_x509_crt_get_signature): Omit unused symbol.
 +      (gnutls_hex_string): Arg is now unsigned char *, to avoid a cast.
 +      Prefer ptrdiff_t for sizes.  Check for arithmetic overflow when
 +      calculating string length.  Use make_uninit_string, to avoid
 +      copying the string.  Cast the char, not the pointer.
 +      (gnutls_certificate_details): Use xmalloc and xfree, not malloc
 +      and free.  Work even for dates past the year 9999.  Use void *
 +      for buffers, to avoid casts.
 +
 +2014-12-09  Andy Moreton  <andrewjmoreton@gmail.com>  (tiny change)
 +
 +      * gnutls.c (gnutls_protocol_get_name): Fix a copy/paste typo.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher
 +      and MAC algorithms.
 +
 +2014-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * process.c: Whitespace and line-break nitpicks.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (gnutls_certificate_details): The :signature isn't
 +      that useful, so remove it.
 +      (gnutls_certificate_details): Clean up whitespace slightly.
 +      (Fgnutls_peer_status): Return the Diffie-Hellman prime bits for
 +      the connection.
 +      (gnutls_certificate_details): Put :signature-algorithm back again,
 +      which was removed by mistake.
 +      (emacs_gnutls_handle_error): Fatal errors should be on level 1, so
 +      that they are not messaged by default (bug#16253).
 +      (Fgnutls_error_fatalp): Doc fix (bug#18210).
 +
 +      * gnutls.c: Add Windows specs for gnutls_dh_get_prime_bits.
 +
 +2014-12-07  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (setPixmapData): Make bmRep local so class member is not
 +      set (Bug#19133).
 +
 +2014-12-05  Lee Duhem  <lee.duhem@gmail.com>  (tiny change)
  
 -2014-09-02  Eli Zaretskii  <eliz@gnu.org>
 +      * eval.c (Fsignal): Remove duplicate test.
 +      (Fautoload_do_load): Fix up docstring.
  
 -      * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
 -      the reported row in the case of a window with a header line, by
 -      improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org
 -      eliz@gnu.org-20111008105850-ht4tvsayohvr1kjc.  (Bug#18384)
 +2014-12-05  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2014-09-02  Paul Eggert  <eggert@cs.ucla.edu>
 +      * nsterm.m (represented_filename, represented_frame): New variables.
 +      (ns_set_represented_filename): New function.
 +      (sendEvent:): Set represented filename here to avoid flicker,
 +      related to Bug#18757.
  
 -      * eval.c (internal_lisp_condition_case): Don't overrun the stack
 -      when configured --with-wide-int on typical 32-bit platforms.
 +      * nsterm.h: Declare ns_set_represented_filename.
  
 -2014-08-31  Eli Zaretskii  <eliz@gnu.org>
 +      * nsfns.m (ns_set_name_as_filename): Don't set represented filename
 +      at once, call ns_set_represented_filename instead.
  
 -      * xdisp.c (display_and_set_cursor): Call erase_phys_cursor also
 -      when HPOS is negative, for the benefit of R2L glyph rows whose
 -      newline overflows into the fringe.
 +2014-12-05  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-08-30  Ken Brown  <kbrown@cornell.edu>
 +      * dispextern.h (enum bidi_dir_t): Force NEUTRAL_DIR to be zero.
 +      (struct bidi_stack): Reduce size by using bit fields and by
 +      packing sos, override, and isolate_status into a single 8-bit
 +      byte called 'flags'.
  
 -      * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define.
 -      (Bug#18366)
 +      * bidi.c (ISOLATE_STATUS, OVERRIDE): New macros.
 +      (bidi_push_embedding_level): Construct flags from individual
 +      bits.  Adapt to changes in prev_for_neutral and next_for_neutral
 +      members.
 +      (bidi_pop_embedding_level): Use ISOLATE_STATUS.  Extract 'sos'
 +      from flags.  Adapt to changes in prev_for_neutral,
 +      next_for_neutral, and last_strong members.
 +      (bidi_line_init): Initialize flags to zero.
 +      (bidi_resolve_explicit, bidi_resolve_weak, bidi_resolve_brackets)
 +      (bidi_resolve_neutral): Use ISOLATE_STATUS and OVERRIDE.
  
 -2014-08-28  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * syntax.c (scan_lists): Don't examine positions before BEGV.
 -      (Bug#18339)
 +      * eval.c (backtrace_eval_unrewind): Rewind also the excursions.
 +      (Fapply): Try and simplify the control flow.
  
 -2014-08-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-03  Chris Zheng  <chriszheng99@gmail.com>  (tiny change)
  
 -      * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define.
 +      * gnutls.c (init_gnutls_functions, gnutls_certificate_details):
 +      Use gnutls_sign_get_name directly because
 +      gnutls_sign_algorithm_get_name is a macro on MinGW (bug#19231).
 +      (init_gnutls_functions): Load missing gnutls_server_name_set.
  
 -2014-08-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-02  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (handle_stop): Improve commentary.
 +      * bidi.c (bidi_find_first_overridden): New function.
  
 -      * indent.c (Fvertical_motion): Fix vertical motion up through a
 -      display property after a newline.  (Bug#18276)
 +      * xdisp.c (Fbidi_find_overridden_directionality): New function.
 +      (syms_of_xdisp): Defsubr it.
  
 -2014-08-17  Eli Zaretskii  <eliz@gnu.org>
 +      * dispextern.h (bidi_find_first_overridden): Add prototype.
  
 -      * xdisp.c (display_line): Don't assume that the call to
 -      reseat_at_next_visible_line_start ends up at a character
 -      immediately following the newline on the previous line.
 -      Avoids setting the ends_at_zv_p flag on screen lines that are not at or
 -      beyond ZV, which causes infloop in redisplay.  For the details, see
 -      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html.
 +2014-12-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (initFromSkipXBM:width:height:flip:length:): Set bmRep
 +      to nil after release (Bug#9133).
 +
 +2014-11-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port better to AddressSanitizer.
 +      These changes suffice for temacs on x86-64 with GCC 4.9.2 and
 +      -fsanitize=address.
 +      * alloc.c (valid_pointer_p) [ADDRESS_SANITIZER]:
 +      Return -1 or 0, as the pipe trick doesn't work.
 +      * alloc.c (relocatable_string_data_p, mark_object, sweep_symbols):
 +      * data.c (Ffset):
 +      * print.c (print_object):
 +      When a pointer-check primitive returns -1, do not assume this
 +      means the pointer is valid or that the underlying system has failed.
 +      It could just be that addresses are being sanitized so Emacs can't
 +      test for pointer validity.
 +      * lisp.h (defined_GC_CHECK_STRING_BYTES): New constant.
 +      (USE_STACK_STRING) [GC_CHECK_STRING_BYTES]: Now false, since the
 +      string validity checker doesn't work on stack-based strings.
 +
 +2014-11-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve clarity of USE_LSB_TAG definition.
 +      Reported by Lee Duhem.  Suggested by Andreas Schwab in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg02222.html
 +      * lisp.h (USE_LSB_TAG): Define in terms of the (simpler)
 +      VAL_MAX / 2 rather than in terms of the (more complicated)
 +      EMACS_INT_MAX >> GCTYPEBITS, and adjust commentary to match.
 +
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (handle_single_display_spec): When ignoring a fringe
 +      bitmap display, reset the ignore_overlay_strings_at_pos_p flag.
 +      (next_element_from_buffer): When done with overlays, reset the
 +      ignore_overlay_strings_at_pos_p flag.  (Bug#19201)
 +
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (Fw32_shell_execute): Convert forward slashes in
 +      DOCUMENT to backslashes, if DOCUMENT is a file.  (Bug#19141)
 +
 +2014-11-29  Ulrich Müller  <ulm@gentoo.org>
 +
 +      * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings
 +      for paxctl and setfattr. Fixes temacs startup failure with
 +      grsecurity/PaX enabled Linux kernel (bug#19067).
 +
 +2014-11-27  Oscar Fuentes  <ofv@wanadoo.es>
 +
 +      * w32.c, w32heap.c, w32term.c:
 +      Use MINGW_W64 instead of _W64.
 +
 +2014-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.c (Fhandle_switch_frame): Deactivate shift-region (bug#19003).
 +
 +2014-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (gnutls_ip_address_p): New function.
 +      (Fgnutls_boot): Only send SNI if the host name is not an IP address.
 +
 +2014-11-26  Toke Høiland-Jørgensen  <toke@toke.dk>  (tiny change)
 +
 +      * gnutls.c (Fgnutls_boot): Send the server name over (bug#18208).
 +
 +2014-11-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix gnutls problems caught by static checking.
 +      * gnutls.c (Fgnutls_boot): Remove unused local.
 +      (Fgnutls_boot): Fix pointer signedness.
 +
 +2014-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (gnutls_certificate_details): Don't include certain
 +      certificate details on older gnutls versions (bug#19168).
 +      (syms_of_gnutls): Export gnutls_peer_status_warning_describe.
 +      (gnutls_certificate_details): Reversed check in last checkin.
 +
 +2014-11-25  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnutls.c (Fgnutls_peer_status): Check GNUTLS_INITSTAGE, not gnutls_p.
 +      (Fgnutls_peer_status_warning_describe): Add function to describe a
 +      peer verification warning symbol.
 +      (Fgnutls_peer_status): Use it.
 +      (Fgnutls_boot): Use it.  Minor logging fixes.
 +
 +2014-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c: Fix compilation warnings given fix --enable-gcc-warnings.
 +
 +2014-11-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.c (main) <--version>: Make use of PACKAGE_NAME.
 +
 +      * Makefile.in (emacs.res): Use ../nt rule, rather than duplicating it.
 +      (ntsource, WINDRES, EMACS_MANIFEST): Remove, now unused.
 +
 +2014-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c: Fix Windows function definition of
 +      gnutls_x509_crt_get_fingerprint.
 +
 +      * gnutls.c: Fix Windows return value for gnutls_pk_algorithm_get_name.
 +
 +      * gnutls.c (Fgnutls_boot): Save certificate for later inspection.
 +
 +      * process.h: Added more fields to Lisp_Process to track
 +      certificate details.
 +
 +      * gnutls.c (gnutls_hex_string, gnutls_certificate_details)
 +      (Fgnutls_peer_status): New functions to export TLS certificate
 +      details to Emacs Lisp.
 +
 +2014-11-23  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (gtk_adjustment_configure): Define for Gtk+ < 2.14.
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb): Remove wrong version
 +      check for gtk_adjustment_configure (Bug#19149).
 +      (gtk_adjustment_configure): Don't use 2.14 functions (Bug#19149).
 +
 +2014-11-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (emacs.res): Add dependency on icons/hand.cur.  Use $<.
 +
 +2014-11-22  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Don't shrink frame when using desktop-save-mode (Bug#19048).
 +      * w32fns.c (x_set_tool_bar_lines): Always call
 +      x_change_tool_bar_height (Bug#19048).
 +      (x_change_tool_bar_height): Mark frame as garbaged since
 +      adjust_frame_size might not have done that.
 +      * xfns.c (x_set_tool_bar_lines): Always call
 +      x_change_tool_bar_height (Bug#19048).
 +      (x_change_tool_bar_height): Mark frame as garbaged since
 +      adjust_frame_size might not have done that.
 +
 +2014-11-21  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * xml.c (parse_region): Take care of new optional parameter
 +      'discard-comments' of 'libxml-parse(html|xml)-region'.
 +      (Flibxml_parse_html_region, Flibxml_parse_xml_region):
 +      New optional parameter 'discard-comments'.
 +
 +2014-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve time stamp handling, and be more consistent about it.
 +      * editfns.c (invalid_time): New function.
 +      Use it instead of 'error ("Invalid time specification")'.
 +      (time_add, time_subtract, time_arith, Ftime_add, Ftime_less_p)
 +      (decode_float_time, lisp_to_timespec, lisp_time_struct):
 +      New functions.
 +      (make_time_tail, make_time): Remove.  All uses changed to use
 +      new functions or plain list4i.
 +      (disassemble_lisp_time): Return effective length if successful.
 +      Check that LOW is an integer, if it's combined with other components.
 +      (decode_time_components): Decode into struct lisp_time, not
 +      struct timespec, so that we can support a wide set of times
 +      regardless of whether time_t is signed.  Decode plain numbers
 +      as seconds since the Epoch, and nil as the current time.
 +      (lisp_time_argument, lisp_seconds_argument, Ffloat_time):
 +      Reimplement in terms of new functions.
 +      (Fencode_time): Just use list2i.
 +      (syms_of_editfns): Add time-add, time-subtract, time-less-p.
 +      * keyboard.c (decode_timer): Don't allow the new formats (floating
 +      point or nil) in timers.
 +      * systime.h (LO_TIME_BITS): New constant.  Use it everywhere in
 +      place of the magic number '16'.
 +      (struct lisp_time): New type.
 +      (decode_time_components): Use it.
 +      (lisp_to_timespec): New decl.
 +
 +2014-11-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * intervals.h (INTERVAL_WRITABLE_P): Check the `inhibit-read-only'
 +      text property.
 +
 +      * callint.c (Fcall_interactively): Pass in nil as argument to
 +      Fbarf_if_buffer_read_only.
 +
 +      * fileio.c (Finsert_file_contents): Ditto.
 +
 +      * insdel.c (prepare_to_modify_buffer_1): Pass start region in.
 +
 +      * textprop.c (verify_interval_modification): Check buffer
 +      readedness after the last interval.
 +
 +      * buffer.c (Fbarf_if_buffer_read_only): Don't raise an error if
 +      the text at POSITION (new optional argument) has the
 +      `inhibit-read-only' text property set.
 +
 +2014-11-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * window.c (window_scroll_pixel_based): Avoid truncation/rounding
 +      errors in computing the number of pixels to scroll.
 +      Suggested by Kelly Dean <kelly@prtime.org>.  (Bug#19060)
 +
 +2014-11-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (update_frame_tool_bar): If tool bar changes height,
 +      call updateFrameSize.
 +
 +      * nsterm.m (setFrame:): Remove call to display (Bug#18757).
 +
 +2014-11-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (x_set_foreground_color, x_set_background_color)
 +      (x_set_cursor_color, Fxw_color_values): Block/unblock input,
 +      use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036).
 +
 +2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_send_appdefined): Check for application defined
 +      event on Cocoa (Bug#18993).
 +      (run): Restore code before the previous 18993 fix.
 +
 +2014-11-14  David Reitter  <david.reitter@gmail.com>
 +
 +      * nsterm.m (run): Set timeout for event loop to prevent hang.
 +      (Bug#18993)
 +
 +2014-11-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * .gitignore: Add emacs-[1-9]*, to ignore files like emacs-25.0.50.1.
 +
 +2014-11-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfont.c (xfont_list_pattern): Do not allocate font entity object
 +      for each candidate font but attempt to reuse it from previous improper
 +      candidate, if any.
 +
 +2014-11-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Avoid undefined behavior in color table hashing.
 +      * image.c (CT_HASH_RGB) [COLOR_TABLE_SUPPORT]: Remove, replacing with ...
 +      (ct_hash_rgb) [COLOR_TABLE_SUPPORT]: New function.  All uses changed.
 +      This function avoids undefined behavior with signed shift overflow.
 +
 +2014-11-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Finsert_file_contents): Invalidate buffer caches also
 +      when the inserted text does not need decoding.  (Bug#18982)
 +
 +2014-11-10  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.h (EmacsScroller): judge returns bool.
 +
 +      * nsterm.m (ns_set_vertical_scroll_bar): Release bar.
 +      (ns_judge_scroll_bars): Only set removed if judge returns true.
 +      (judge): Returns bool == condemned.  Remove self from window.
 +      (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757).
 +
 +2014-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (command_loop_1): Record this-command in recent-keys.
 +      (Frecent_keys): Rewrite. and add optional `include-cmds' arg.
 +
 +2014-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_set_vertical_scroll_bar)
 +      (ns_set_horizontal_scroll_bar): Cleanup merge error.
 +
 +2014-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xgselect.c (xg_select): Don't assume n_gfds is nonnegative
 +      merely because tmo_in_millisec is nonnegative.  The 1st call
 +      to g_main_context_query could succeed while the 2nd one fails.
 +
 +      * frame.c (Fcan_run_window_configuration_change_hook): Return a value.
 +
 +2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (run): Only use non-system event loop if OSX version is
 +      exactly 10.9 (Bug#18993).
 +      (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless
 +      needed (Bug#18757).
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * callproc.c (encode_current_directory): Support handling of file
 +      names prepended by "/:".  (Bug#18891)
 +
 +2014-11-08  Alan Mackenzie  <acm@muc.de>
 +
 +      * syntax.c (back_comment): Fix off-by-one error (bug#18022).
 +
 +2014-11-08  Dima Kogan  <dima@secretsauce.net>
 +
 +      * xgselect.c (xg_select): Use g_main_context_acquire (bug#18861).
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dired.c (Ffile_attributes): Return Qnil, if Fexpand_file_name
 +      raises an error.  (Bug#18891)
 +
 +2014-11-08  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Call x_set_window_size only if
 +      f->can_x_set_window_size is set.
 +      (make_frame): Initialize f->can_x_set_window_size and
 +      f->can_run_window_configuration_change_hook.
 +      (Fcan_run_window_configuration_change_hook): New function.
 +      * frame.h (frame): Split `official' into `can_x_set_window_size'
 +      and `can_run_window_configuration_change_hook'.
 +      * nsfns.m (Fx_create_frame): Set f->can_x_set_window_size.
 +      * w32fns.c (Fx_create_frame, x_create_tip_frame):
 +      Set f->can_x_set_window_size.
 +      * window.c (run_window_configuration_change_hook):
 +      Return immediately if either f->can_x_set_window_size or
 +      f->can_run_window_configuration_change_hook are false.
 +      (Fset_window_configuration): Instead of f->official set
 +      f->can_x_set_window_size.
 +      * xfns.c (Fx_create_frame, x_create_tip_frame):
 +      Set f->can_x_set_window_size.
 +
 +2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (EmacsScroller.dealloc): Reinstate, removed at merge
 +      cleanup from 2014-11-01 (Bug#18972).
 +
 +2014-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c: Call gui-set-selection instead of x-set-selection.
 +      * xdisp.c (window-scroll-functions): Improve docstring.
 +
 +2014-11-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Uniquify the 'size' symbol.
 +      * frame.c (Qsize):
 +      * w32notify.c (Qsize): Remove.
 +      * lisp.h (Qsize): New decl.
 +      * lread.c (Qsize): Now extern.
 +      * w32notify.c (syms_of_w32notify): No need to defsym.
 +
 +2014-11-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * dispnew.c (change_frame_size_1): Fix call of
 +      adjust_frame_size.
 +      * frame.c (Qsize, Qframe_position, Qframe_outer_size)
 +      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
 +      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
 +      (Qtool_bar_size): New constants.
 +      (frame_inhibit_resize, adjust_frame_size): New argument to
 +      handle case where frame_inhibit_implied_resize is a list.
 +      (Fmake_terminal_frame, Fset_frame_height, Fset_frame_width)
 +      (Fset_frame_size, x_set_left_fringe, x_set_right_fringe)
 +      (x_set_right_divider_width, x_set_bottom_divider_width)
 +      (x_set_vertical_scroll_bars, x_set_horizontal_scroll_bars)
 +      (x_set_scroll_bar_width, x_set_scroll_bar_height):
 +      Update callers.
 +      (frame-inhibit-implied-resize): Rewrite doc-string.
 +      * frame.h (frame_inhibit_resize, adjust_frame_size):
 +      Fix external declarations.
 +      (Qframe_position, Qframe_outer_size)
 +      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
 +      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
 +      (Qtool_bar_size): Extern them.
 +      * gtkutil.c (FRAME_TOTAL_PIXEL_HEIGHT, FRAME_TOTAL_PIXEL_WIDTH)
 +      (xg_height_or_width_changed): Remove.
 +      (xg_frame_set_char_size): Adjust adjust_frame_size calls.
 +      (menubar_map_cb, xg_update_frame_menubar, free_frame_menubar)
 +      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
 +      (xg_change_toolbar_position): Call adjust_frame_size directly.
 +      * nsfns.m (x_set_internal_border_width, Fx_create_frame):
 +      Fix calls of adjust_frame_size.
 +      * w32fns.c (x_set_internal_border_width, x_set_menu_bar_lines)
 +      (Fx_create_frame, x_create_tip_frame): Adjust adjust_frame_size calls.
 +      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
 +      frame can get resized when tool-bar-lines parameter changes from
 +      or to zero.
 +      (Fw32_frame_menu_bar_size): Return fourth value.
 +      (Fw32_frame_rect): Block input around system calls
 +      (Fx_frame_geometry): New function.
 +      * w32menu.c (set_frame_menubar): Adjust adjust_frame_size call.
 +      * w32term.c (x_new_font): Adjust adjust_frame_size call.
 +      * widget.c (EmacsFrameSetCharSize): Adjust frame_inhibit_resize call.
 +      * window.c (Fset_window_configuration): Adjust adjust_frame_size call.
 +      * xfns.c (x_set_menu_bar_lines, x_set_internal_border_width)
 +      (Fx_create_frame): Adjust adjust_frame_size calls.
 +      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
 +      frame can get resized when tool-bar-lines parameter changes from
 +      or to zero.
 +      (Fx_frame_geometry): New function.
 +      * xmenu.c (update_frame_menubar): On Lucid call
 +      adjust_frame_size with one pixel less height to avoid that
 +      repeatedly adding/removing the menu bar grows the frame.
 +      (free_frame_menubar): On Motif arrange to optionally preserve
 +      the old frame height when removing the menu bar.
 +      * xterm.c (x_new_font): Adjust adjust_frame_size call.
 +
 +2014-11-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (Fdump_glyph_matrix, Fdump_frame_glyph_matrix): Doc fix.
 +      (Fdump_frame_glyph_matrix): Don't segfault if invoked on a GUI
 +      frame; instead, print an error message.
 +
 +2014-11-03  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (ns_set_doc_edited): Check for FRAME_NS (Bug#18925).
 +
 +2014-11-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (allocInitFromFile:): Initialize bmRep.
 +      (dealloc): Release bmRep.
 +
 +      * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference,
 +      imageListSetNext, imageListNext.
 +
 +      * nsimage.m (ImageList, imageListNext, imageListSetNext:)
 +      (reference): Remove.
 +      (allocInitFromFile:): Remove searching ImageList and calling
 +      reference (Bug#18918).
 +      (dealloc): Remove handling if ImageList.
 +
 +2014-11-02  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * process.c (catch_child_signal): Fix incorrect assertion.
 +
 +2014-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * macfont.m (macfont_draw):
 +      * nsterm.m (ns_mouse_position, judge): Clean up merge conflict.
 +
 +      * macfont.m (macfont_glyph_extents): Turn off synthetic bold
 +      if force_integral_p (i.e. no antialias).
 +      (macfont_draw): Check ns_antialias_text, also turn off synthetic
 +      bold if no antialias (Bug#18876).
 +
 +      * emacs.c (main): Don't chdir to $HOME on Cocoa if --chdir
 +      was given (Bug#18846).
 +
 +      * nsterm.h (ns_set_doc_edited): Declare taking no args.
 +
 +      * nsfns.m (ns_set_doc_edited): Do all logic (check frames) here
 +      instead of in xdisp.c, function now takes void. (Bug#18884).
 +
 +      * xdisp.c (prepare_menu_bars): Remove HAVE_NS code.
 +      (redisplay_internal): Call ns_set_doc_edited if HAVE_NS (Bug#18884).
 +
 +      * nsterm.h (EmacsScroller): Replace Lisp_Object win with
 +      struct window* (Bug#18889).
 +      Remove getMouseMotionPart.
 +      (ns_output): Make icon_top/left int.
 +
 +      * nsfns.m (x_icon): icon_top/left is int.
 +
 +      * nsterm.m (ns_mouse_position): Remove unused code.
 +      (initFrame:window:, dealloc): Use window instead of win.
 +      (getMouseMotionPart:window:x:y:): Remove, unused.
 +      (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window.
 +
 +2014-11-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * keyboard.c (readable_events): When FLAGS include
 +      READABLE_EVENTS_FILTER_EVENTS, ignore BUFFER_SWITCH_EVENT events.
 +      This avoids returning non-nil from input-pending-p when only such
 +      events are in the queue.  (Bug#18856)
 +
 +2014-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m (QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME)
 +      (NXPrimaryPboard, NXSecondaryPboard): Declare static.
 +      (Qforeign_selection): Remove.
 +      (ns_get_local_selection): Identation fix.
 +      (syms_of_nsselect): Remove Qforeign_selection, ns-lost-selection-hooks
 +
 +      * nsselect.m (ns_get_local_selection): Remove calling of
 +      functions in Vselection_converter_alist (Bug#18911).
 +      (syms_of_nsselect): Remove Vselection_converter_alist.
 +
 +2014-10-31  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (copy_font_spec): Redesign to avoid Fcopy_alist
 +      and unnecessary initialization.  Adjust comments.
 +
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_cache_reset_to): Invalidate bidi_cache_last_idx by
 +      setting it to -1.
 +      (bidi_find_bracket_pairs): Pass to bidi_cache_reset_to a relative
 +      index, not an absolute one, as that's what the function expects.
 +
 +2014-10-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to realize
 +      font on an initial frame when running as a daemon (Bug#18869).
 +
 +      * fontset.c (toplevel): Adjust comment to match 2014-06-19 change.
 +
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Fexpand_file_name): Use make_unibyte_string, not
 +      build_string, when importing a home directory.  (Bug#18873)
 +
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords):
 +      Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
 +      account for the header-line height.  (Bug#18839)
 +
 +2014-10-28  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * xml.c (parse_region): Do not forget the first document child.
 +
 +2014-10-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m: pasteboard_changecount is new.
 +      (ns_store_pb_change_count, ns_get_pb_change_count)
 +      (ns_get_our_change_count_for): New functions.
 +      (ns_string_to_pasteboard_internal): Correct comment.
 +      type => gtype in eassert, Call ns_store_pb_change_count.
 +      (Fns_own_selection_internal): Remove data, use value (Bug#18799).
 +      (Fns_disown_selection_internal, Fns_selection_owner_p):
 +      Replace Vselection_alist check, with change count check.
 +      (Fns_get_selection): Initialize val to Qnil.  Only get local
 +      selection if change counts match (Bug#18799).
 +      (nxatoms_of_nsselect): Initialize pasteboard_changecount.
 +
 +2014-10-25  Noam Postavsky  <npostavs@users.sourceforget.net>
 +
 +      * w32proc.c (create_child): If calling a quoted batch file,
 +      pass NULL for exe.  (Bug#18745)
 +
 +2014-10-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_resolve_explicit, bidi_find_bracket_pairs)
 +      (bidi_resolve_brackets): Use end of string position rather than ZV
 +      when iterating over a string.  (Bug#18815)
 +
 +2014-10-24  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * keyboard.c (make_lispy_position): Return coordinates also when
 +      on scroll bars, fringes, margins or not in a window.
 +      * xdisp.c (show_mouse_face): Don't change cursor face during
 +      mouse tracking.
 +
 +2014-10-23  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (Fset_frame_height, Fset_frame_width, Fset_frame_size)
 +      (frame_resize_pixelwise, frame_inhibit_implied_resize):
 +      Fix doc-strings (Bug#18789).
 +
 +2014-10-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (ACLOCAL_INPUTS): Omit unnecessary use of 'wildcard'.
 +
 +2014-10-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Optimize redisplay of simple bracketed text.
 +      * bidi.c (bidi_cache_reset_to): New function.
 +      (bidi_cache_reset): Call it.
 +      (bidi_init_it, bidi_line_init): Initialize the bracket_pairing_pos
 +      member to -1.
 +      (bidi_resolve_explicit): Reset bracket_pairing_pos and
 +      bracket_enclosed_type only if bracket_pairing_pos's value is not
 +      ZV.
 +      (MAX_BPA_STACK): Make sure the value is signed.
 +      (PUSH_BPA_STACK): If the BPA stack overflows, don't bail out, but
 +      stop pushing values onto the stack.
 +      (bidi_find_bracket_pairs): If the bracketed text is only on the
 +      base embedding level, remove all the states cached by this
 +      function from the cache, and return zero, so that the brackets in
 +      this segment of text are processed as normal neutrals.
 +      (bidi_resolve_brackets): Detect the brackets that are to be
 +      processed as neutrals, and don't call bidi_find_bracket_pairs on
 +      them.  (Bug#18778)
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * w32select.c (Fw32_selection_exists_p): Rename from
 +      Fx_selection_exists_p.
 +      (syms_of_w32select): Adjust accordingly.
 +
 +      * w16select.c (Fw16_selection_exists_p): Rename from
 +      Fx_selection_exists_p.
 +      (syms_of_win16select): Adjust accordingly.
 +
 +      * nsselect.m (ns_get_local_selection): Signal error rather than `quit'.
 +      (Fns_own_selection_internal): Tighten scoping.
 +      (Fns_selection_exists_p): Rename from Fx_selection_exists_p.
 +      (Fns_get_selection): Rename from Fx_get_selection_internal.
 +      (Fns_get_selection_internal, Fns_store_selection_internal):
 +      Remove functions.
 +      (syms_of_nsselect): Adjust accordingly.
 +
 +2014-10-21  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32fns.c (Fw32_frame_menu_bar_size): New function.
 +      * w32term.c (x_set_window_size): Account for wrapped menu bar
 +      lines when setting up frame height (Bug#15174 and Bug#18720).
 +      (w32_add_wrapped_menu_bar_lines): New variable.
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xdisp.c (redisplay_window): Re-run pre-redisplay-function after we
 +      move point.
 +
 +2014-10-20  Glenn Morris  <rgm@gnu.org>
 +
 +      * Merge in all changes up to 24.4 release.
 +
 +2014-10-19  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_update_menubar, xg_update_menu_item): Only call
 +      g_object_notify for label if Gtk+ >= 2.16 (Bug#16522).
 +
 +      * xterm.h (x_output): Remove net_wm_state_hidden_seen.
 +
 +      * xterm.c (handle_one_xevent): Check return value from
 +      x_handle_net_wm_state, remove net_wm_state_hidden_seen (Bug#18722).
 +      (get_current_wm_state): Remove net_wm_state_hidden_seen setting.
 +
 +      * gtkutil.c (create_dialog): Don't use gtk_dialog_get_action_area on
 +      Gt+ >= 3.12, or gtk_misc_set_alignment on Gtk+ >= 3.14 (Bug#18674).
 +      (make_widget_for_menu_item): Don't use gtk_misc_set_alignment on
 +      Gtk+ >= 3.14 (Bug#18674).
 +      (update_frame_tool_bar): Don't use  gtk_misc_set_padding on
 +      Gtk+ >= 3.14 (Bug#18674).
 +
 +2014-10-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * gtkutil.c: Remove no-longer-used code.
 +      (xg_update_menubar): Remove unused local and unnecessary call to
 +      gtk_menu_item_get_submenu.
 +      (XG_TOOL_BAR_PROXY_BUTTON, xg_tool_bar_proxy_callback)
 +      (xg_get_tool_bar_widgets, xg_tool_bar_proxy_help_callback)
 +      (TOOLBAR_TOP_WIDGET): Remove; no longer used.
 +
 +2014-10-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (syms_of_xfns): Remove x-gtk-whole-detached-tool-bar.
 +
 +      * xterm.h (handlebox_widget): Remove.
 +
 +      * xmenu.c (set_frame_menubar): Remove GTK block that calls
 +      xg_have_tear_offs.
 +
 +      * gtkutil.h (xg_have_tear_offs): Remove declaration.
 +
 +      * gtkutil.c (XG_TEXT_CANCEL, XG_TEXT_OPEN, XG_TEXT_OK): New defines
 +      to handle Gtk versions.
 +      (xg_get_file_with_chooser): Use them.
 +      (xg_have_tear_offs, tearoff_remove, tearoff_activate):
 +      Remove (create_menus): Remove teroff argument and code.
 +      Remove call to gtk_menu_set_title.
 +      (xg_update_menubar, xg_update_submenu): Remove tearoff code.
 +      Adjust args to create_menus.
 +      (xg_tool_bar_menu_proxy, xg_tool_bar_detach_callback)
 +      (xg_tool_bar_attach_callback, TOOLBAR_TOP_WIDGET): Remove.
 +      (xg_pack_tool_bar): Replace TOOLBAR_TOP_WIDGET, remove detach code.
 +      (xg_make_tool_item): Remove detach code.
 +      (xg_update_tool_bar_sizes): Replace TOOLBAR_TOP_WIDGET.
 +      (find_icon_from_name): New function.
 +      (update_frame_tool_bar): Remove GtkStockItem code, move to
 +      find_icon_from_name.  Let stock be a list of icon names to try.
 +      Only use gtk_image_new_from_stock on Gtk+ < 3.10.
 +      Replace TOOLBAR_TOP_WIDGET.
 +      (free_frame_tool_bar, xg_change_toolbar_position ):
 +      Replace TOOLBAR_TOP_WIDGET.
 +      (xg_initialize): Remove tearoff code.
 +
 +2014-10-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_bar_cursor, x_draw_hollow_cursor): Subtract 1
 +      pixel from the window's cursor glyph width, since X renders hollow
 +      blocks 1 pixel wider than the 'width' parameter.
 +
 +      * xdisp.c (get_phys_cursor_geometry): Don't subtract 1 pixel from
 +      glyph->pixel_width; this is now done in xterm.c.
 +
 +      Fix reordering of bracket characters in isolates.
 +      * bidi.c (bidi_cache_find): Rename the argument NEUTRALS_OK to
 +      RESOLVED_ONLY; when non-zero, return from the cache only fully
 +      resolved states.  All callers changed.
 +      (CANONICAL_EQU): New macro.
 +      (PUSH_BPA_STACK): Use it to push onto the BPA stack the canonical
 +      equivalent of the paired closing bracket character.
 +      (bidi_find_bracket_pairs): Set the bracket_pairing_pos member to
 +      the default non-negative value, to be checked later in
 +      bidi_resolve_brackets.  Use CANONICAL_EQU to test candidate
 +      characters against those pushed onto the BPA stack.
 +      (bidi_record_type_for_neutral): New function.
 +      (bidi_resolve_brackets): Record next_for_neutral and
 +      prev_for_neutral when embedding level gets pushed.  Force
 +      resolution of bracket pairs when entering a level run that was not
 +      yet BPA-resolved.
 +      (bidi_resolve_neutral): Add assertions before calling
 +      bidi_resolve_neutral_1.
 +      (bidi_level_of_next_char): Remove the code that attempted to
 +      resolve unresolved neutrals; that is now done by
 +      bidi_resolve_neutral.
 +
 +      * w32select.c (owner_callback): Mark with ALIGN_STACK attribute.
 +
 +2014-10-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_hollow_cursor): Fix display of hollow cursor on
 +      1-pixel R2L characters.
 +      Reported by Dmitry Antipov <dmantipov@yandex.ru>, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html.
 +
 +2014-10-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_find_bracket_pairs): Avoid a loop that does nothing
 +      useful.
 +
 +2014-10-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * bidi.c (bidi_find_bracket_pairs): Initialize local var.
 +      This pacifies GCC 4.9.1 with --enable-gcc-warnings.
 +      It's not clear to me whether the initialization is needed,
 +      but it can't hurt so I played it safe.
 +
 +2014-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.mk (lisp): Add emacs-lisp/eldoc.elc.
 +
 +2014-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Update the bidirectional reordering engine for Unicode 6.3 and 7.0.
 +      * bidi.c (bidi_ignore_explicit_marks_for_paragraph_level):
 +      Remove variable.
 +      (bidi_get_type): Return the isolate initiators and terminator types.
 +      (bidi_isolate_fmt_char, bidi_paired_bracket_type)
 +      (bidi_fetch_char_skip_isolates, find_first_strong_char)
 +      (bidi_find_bracket_pairs, bidi_resolve_brackets): New functions.
 +      (bidi_set_sos_type): Rename from bidi_set_sor_type and updated
 +      for the new features.
 +      (bidi_push_embedding_level, bidi_pop_embedding_level): Update to
 +      push and pop correctly for isolates.
 +      (bidi_remember_char): Modify to accept an additional argument
 +      and record the bidi type according to its value.
 +      (bidi_cache_iterator_state): Accept an additional argument to only
 +      update an existing state.  Handle the new members of struct bidi_it.
 +      (bidi_cache_find): Arguments changed: no longer accepts a level,
 +      instead accepts a flag telling it whether it is okay to return
 +      unresolved neutrals.
 +      (bidi_initialize): Initiate and staticpro the bracket-type uniprop
 +      table.  Initialize new isolate-related members.
 +      (bidi_paragraph_init): Some code factored out into
 +      find_first_strong_char.
 +      (bidi_resolve_explicit_1): Function deleted, its code incorporated
 +      into bidi_resolve_explicit.
 +      (bidi_resolve_explicit): Support the isolate initiators and
 +      terminator.  Fix handling of embeddings and overrides according to
 +      new UBA requirements.  Record information about previously seen
 +      characters here (moved from bidi_level_of_next_char).
 +      (bidi_resolve_weak): Adapt to changes in struct members.
 +      (FLAG_EMBEDDING_INSIDE, FLAG_OPPOSITE_INSIDE, MAX_BPA_STACK)
 +      (STORE_BRACKET_CHARPOS, PUSH_BPA_STACK): New macros.
 +      (bidi_resolve_neutral): Call bidi_resolve_brackets to handle the
 +      paired bracket resolution.  Handle isolate initiators and
 +      terminator.
 +      (bidi_type_of_next_char): Remove unneeded code for BN limit.
 +      (bidi_level_of_next_char): Move the code that records information
 +      about previous characters to bidi_resolve_explicit.  Fix logic of
 +      resolving neutrals and make sure their cache entries are updated.
 +      Remove now unneeded special handling of PDF level.
 +
 +      * dispextern.h (struct glyph): Enlarge the width of resolved_level.
 +      (BIDI_MAXDEPTH): New macro, renamed from BIDI_MAXLEVEL and
 +      enlarged per Unicode 6.3.
 +      (enum bidi_bracket_type_t): New data type.
 +      (struct bidi_saved_info): Leave only 2 type members out of 4.
 +      Remove bytepos.
 +      (struct bidi_stack): Add members necessary to support isolating
 +      sequences.
 +      (struct bidi_it): Add new members necessary to support isolating
 +      sequences and bracket pair resolution.
 +
 +      * xdisp.c (Fbidi_resolved_levels): New function.
 +      (syms_of_xdisp): Defsubr it.
 +      (append_glyph, append_composite_glyph, produce_image_glyph)
 +      (append_stretch_glyph, append_glyphless_glyph): Convert aborts to
 +      assertions.
 +      (syms_of_xdisp) <inhibit-bidi-mirroring>: New variable.
 +
 +      * term.c (append_glyph, append_composite_glyph)
 +      (append_glyphless_glyph): Convert aborts to assertions.
 +
 +      * .gdbinit (pgx): Display the character codepoint, resolved level,
 +      and bidi type also for glyphless glyphs.
 +
 +2014-10-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid unwanted point motion in Fline_beginning_position.
 +      * lisp.h (scan_newline_from_point): Add prototype.
 +      * search.c (scan_newline_from_point): New function, refactored from...
 +      * cmds.c (Fforward_line): ...adjusted user.
 +      * editfns.c (Fline_beginning_position): Use scan_newline_from_point
 +      and simplify the former since the latter doesn't move point.
 +
 +2014-10-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Cleanup terminal handling code.
 +      * dispextern.h (get_named_tty): Remove prototype but...
 +      * termhooks.h (get_named_terminal): ...resurrect it under
 +      more meaningful name.
 +      (get_terminal): Likewise, but with...
 +      (decode_live_terminal): ...this name.
 +      (decode_tty_terminal): Add prototype.
 +      * term.c (get_tty_terminal): Remove.
 +      (get_named_tty): Remove.
 +      (Ftty_display_color_p, Ftty_display_color_cells, Ftty_type)
 +      (Fcontrolling_tty_p, Fsuspend_tty, Fresume_tty):
 +      Use decode_tty_terminal.
 +      (Ftty_no_underline, Ftty_top_frame): Use decode_live_terminal.
 +      * terminal.c (get_terminal): Refactor to...
 +      (decode_terminal, decode_live_terminal): ...new functions.
 +      (decode_tty_terminal): Replacement for get_tty_terminal.
 +      (get_named_terminal): Likewise for get_named_tty.
 +      * coding.c (Fset_terminal_coding_system_internal)
 +      (Fterminal_coding_system, Fset_keyboard_coding_system_internal):
 +      (Fkeyboard_coding_system):
 +      * composite.c (Fcomposition_get_gstring):
 +      * dispnew.c (Fsend_string_to_terminal):
 +      * frame.c (Fmake_terminal_frame):
 +      * nsfns.m (check_ns_display_info):
 +      * w32fns.c, xfns.c (check_x_display_info):
 +      * xselect.c (frame_for_x_selection): Use decode_live_terminal.
 +      * keyboard.c (handle_interrupt_signal, handle_interrupt)
 +      (Fset_quit_char): Use get_named_terminal.
 +      (Fset_output_flow_control, Fset_input_meta_mode):
 +      Use decode_tty_terminal.
 +
 +2014-10-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.h (ALIGN_STACK): Use _WIN64, not _W64, to distinguish
 +      between 32-bit and 64-bit MinGW builds.  (Bug#18699)
 +
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix port to Debian GNU/kFreeBSD 7 (wheezy) (Bug#18666).
 +      * process.c (accept4) [!HAVE_ACCEPT4]: New macro.
 +
 +2014-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * frame.c (Fmouse_pixel_position): Call Vmouse_position_function
 +      (bug#18638).
 +
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * editfns.c (dump_tz_string): No longer const.
 +      It might be modified.
 +
 +      * nsmenu.m (clear): Assume OS X 10.6 or later.
 +
 +2014-10-12  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * unexmacosx.c: Remove include ppc/reloc.h.
 +      (unrelocate, copy_dysymtab): Remove PPC code.
 +      (rebase_reloc_address): Remove, only used for PPC:
 +
 +      * nsterm.m: Always include macfont.h on COCOA.
 +      (ns_update_auto_hide_menu_bar, ns_draw_fringe_bitmap)
 +      (ns_dumpglyphs_image, ns_check_menu_open)
 +      (applicationDidFinishLaunching)
 +      (antialiasThresholdDidChange:)
 +      (keyDown:, toggleFullScreen:, setPosition:portion:whole:):
 +      Remove checks for OSX <= 10.5/10.6.
 +      (changeFont:): Use macfont on COCOA, nsfont on GNUSTEP.
 +      (syms_of_nsterm): Call syms_of_macfont on COCOA, syms_of_nsfont on
 +      GNUSTEP.
 +
 +      * nsterm.h (MAC_OS_X_VERSION_10_4, MAC_OS_X_VERSION_10_5): Remove.
 +      (NS_HAVE_NSINTEGER): Remove block.
 +      Remove >= OSX 10.6 tests.
 +
 +      * nsmenu.m (NSMenuDidBeginTrackingNotification): Remove.
 +      (x_activate_menubar, trackingNotification:): Remove check for
 +      OSX >= 10.5.
 +      (menuNeedsUpdate:): Remove check for OSX < 10.5.
 +
 +      * nsimage.m (allocInitFromFile:): Remove code for OSX < 10.6.
 +
 +      * nsfns.m: Always include macfont.h on COCOA.
 +      (ns_filename_from_panel, ns_directory_from_panel)
 +      (Fx_create_frame, Fns_popup_font_panel, ns_run_file_dialog)
 +      (Fns_read_file_name, Fns_list_services): Remove code for OSX < 10.6
 +
 +      * macfont.m: Remove >= 1050 check.
 +      (macfont_create_family_with_symbol)
 +      (macfont_get_glyph_for_character)
 +      (mac_font_get_glyphs_for_variants)
 +      (mac_ctfont_create_available_families, syms_of_macfont):
 +      Remove code for OSX < 10.6.
 +      (mac_font_family_group, mac_font_family_compare): Remove, only used
 +      for OSX < 10.6.
 +
 +      * macfont.h (MAC_FONT_FORMAT_ATTRIBUTE, MAC_FONT_FORMAT_BITMAP)
 +      (mac_font_copy_non_synthetic_table): Remove versions for OSX < 10.6
 +
 +      * Makefile.in: Replace nsfont.o macfont.o with ns_fontfile in
 +      comment.
 +
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix putenv race conditions with undefined behavior (Bug#8705).
 +      Do all putenv calls before Emacs creates any threads.
 +      Use a safer way to modify the TZ environment variable in the
 +      presence of multiple threads.  For further thread-safety,
 +      prefer localtime_r and gmtime_r to localtime and gmtime,
 +      and prefer struct tm's tm_gmtoff (if available) to calling
 +      both localtime_r and gmtime_r.
 +      * dbusbind.c (Fdbus__init_bus): Move xputenv call from here ...
 +      (init_dbusbind): ... to this new function.
 +      * emacs.c (main) [HAVE_DBUS]: Call it before creating threads.
 +      * xterm.c (x_term_init): Move xputenv call from here ...
 +      (init_xterm): ... to this new function.
 +      * emacs.c (main) [USE_GTK]: Call it before creating threads.
 +      * editfns.c (HAVE_TM_GMTOFF): Default to false.
 +      (dump_tz_string): New constant.
 +      (init_editfns): Use it.  This centralizes the dump_tz stuff.
 +      Call set_time_zone_rule here, so that its xputenv is done
 +      before Emacs goes multithreaded.
 +      (mktime_z) [!HAVE_TZALLOC]: New function, which is typically
 +      thread-safe enough for Emacs.
 +      (format_time_string, Fdecode_time, Fcurrent_time_string)
 +      (Fcurrent_time_zone):
 +      Prefer localtime_r and gmtime_r, which are more thread-safe, to
 +      localtime and gmtime.  Remove now-unnecessary calls to block_input.
 +      (tm_gmtoff): New static function.
 +      (Fdecode_time, Fcurrent_time_zone): Use it.
 +      (Fencode_time): Use mktime_z, for better thread-safety.
 +      (set_time_zone_rule): Now static.  Rewrite to be mostly thread-safe,
 +      i.e., not quite thread-safe but good enough for Emacs typical usage.
 +      Do not reclaim storage that is in the environment; let it leak.
 +      Always call tzset, since localtime_r does not.
 +      * emacs.c (dump_tz, Fdump_emacs) [HAVE_TZSET]: Remove dump_tz stuff.
 +      This is now done in init_editfns.
 +      * systime.h (mktime_z, timezone_t, tzalloc, tzfree) [!HAVE_TZALLOC]:
 +      New macros and declarations, for platforms lacking tzalloc & friends.
 +
 +2014-10-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS.
 +      On x86 platforms this works around GCC bug 63495
 +      <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63495>,
 +      and more generally should fix a portability problem in Emacs.
 +      Reported by Stefan Monnier in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html
 +
 +2014-10-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      Enhance terpri to allow conditionally output a newline.  (Bug#18652)
 +      * keymap.c (describe_vector_princ):
 +      * keyboard.c (Fcommand_error_default_function): Adapt to change to
 +      Fterpri.
 +
 +      * print.c (printchar_stdout_last): Declare.
 +      (printchar): Record the last char written to stdout.
 +      (Fterpri): Add optional argument ENSURE.
 +
 +2014-10-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32inevt.c (maybe_generate_resize_event): Pass non-zero as the
 +      DELAY argument to change_frame_size, so that the frame size
 +      changes, if any are needed, are delayed until the next redisplay.
 +      This is to avoid a too early QUIT inside change_frame_size, when
 +      it calls Lisp in frame_windows_min_size, in case one of the events
 +      we've read sets the quit-flag.  (Bug#18649)
 +
 +      * w32fns.c (check_x_display_info): Accept terminal objects as
 +      argument, to follow what xfns.c does.
 +
 +2014-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in ($(srcdir)/macuvs.h)
 +      ($(lispsource)/international/charprop.el): Add explicit FORCE.
 +
 +2014-10-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * decompress.c (init_zlib_functions): Move the message about zlib
 +      being unavailable from here...
 +      (Fzlib_decompress_region): ...to here.  (Bug#18650)
 +
 +2014-10-07  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (Ffont_get_glyphs): Use validate_subarray and fix
 +      the case where an optional string is used.  Adjust docstring.
 +
 +2014-10-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.mk (lisp): Remove w32-common-fns.elc.
 +
 +2014-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (Qleft, Qright): Remove duplicate definitions (Bug#9927).
 +      These were already defined in buffer.c, and the duplicate
 +      definitions cause problems on platforms like 'gcc -fno-common'.
 +      Reported by Peter Dyballa in: http://bugs.gnu.org/9927#137
 +
 +2014-10-05  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (updateFrameSize:): Only call update_frame_tool_bar
 +      if toolbar is visible.
 +
 +      * nsfont.m (nsfont_draw): Use CGFloat for GNUstep newer than
 +      0.23 (Bug#18030).
 +
 +      * nsterm.m (syms_of_nsterm): ns-use-fullscreen-animation is new.
 +      (toggleFullScreen:): Use ns-use-fullscreen-animation for animate.
 +      (ns_select, ns_read_socket): Use unwind_protect to decrease
 +      apploopnr (Bug#18345).
 +      (ns_draw_window_cursor): Adjust y for hbar cursor only if smaller than
 +      line height (Bug#17977).
 +
 +      * macfont.m: Fix indentation and import changes from macport 24.3.94.
 +      (macfont_closest_traits_index): New function.
 +      (macfont_closest_traits_index_p): Rename from
 +      macfont_closest_traits_index.
 +      (macfont_list): Use macfont_closest_traits_index_p.
 +
 +2014-10-05  K. Handa  <handa@gnu.org>
 +
 +      * coding.c (detect_coding_iso_2022): Set coding->rejected
 +      correctly when an invalid escape sequence is found (Bug#18610).
 +
 +2014-10-04  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (create_menus): Only add tearoffs to empty menus.
 +      (xg_update_submenu): Remove has_tearoff_p, pass 1 to create_menus
 +      for add_tearoff_p.
 +
 +2014-10-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.c (scroll_bar_width, scroll_bar_height):
 +      Fix doc-strings.
 +      * window.c (Fset_window_scroll_bars): Fix doc-string.
 +      (Fwindow_scroll_bars): Have it return what the doc-string says.
 +
 +2014-10-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (move_it_by_lines): Call reseat_1 after moving the
 +      iterator backwards, to resync the bidi iterator.  (Bug#18584)
 +
 +2014-10-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Consistently use min and max macros from lisp.h.
 +      * coding.c (min, max):
 +      * font.c (MAX):
 +      * unexhp9k800.c (min):
 +      * unexw32.c (min, max): Use definitions from lisp.h.
 +      * regex.c (MAX, MIN) [!emacs]: Define own max and min as such.
 +      Adjust users.
 +      * gmalloc.c (min): Tiny style change.
 +
 +      * fileio.c (emacs_readlinkat, Finsert_file_contents):
 +      * w32fns.c, xfns.c (x_create_tip_frame): Use AUTO_STRING.
 +
 +2014-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix x-focus-frame bug with "Not an in-range integer" (Bug#18586).
 +      * xselect.c (X_SHRT_MAX, X_SHRT_MIN, X_LONG_MAX, X_LONG_MIN)
 +      (X_ULONG_MAX): Move these macros to xterm.h.
 +      (x_fill_property_data): Be more generous about allowing either
 +      signed or unsigned data of the appropriate width.
 +      * xterm.h (x_display_set_last_user_time): New function.
 +      All setters of last_user_time changd to use this function.
 +      If ENABLE_CHECKING, check that the times are in range.
 +
 +2014-10-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (adjust_decode_mode_spec_buffer): Use 'int' instead of
 +      'ssize_t'.  Suggested by Paul Eggert <eggert@cs.ucla.edu>.
 +
 +2014-10-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to
 +      make a font_object from a tty frame (Bug#18573).
 +      (Finternal_set_lisp_face_attribute): Add FIXME comment.
 +
 +2014-10-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (mark_overlay): Assume that overlay boundaries are
 +      always markers.  Add comment.
 +      * lread.c (read_internal_start): Use convenient validate_subarray.
 +      Adjust docstring.
 +      (Fread_from_string): Adjust docstring.
 +
 +2014-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.h: Fix up compilation for USE_STACK_LISP_OBJECTS=false.
 +
 +      * nsselect.m (ns-own-selection-internal, ns-disown-selection-internal):
 +      Rename from the "x-" prefix.
 +
 +2014-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xselect.c (selection-converter-alist): Fix docstring.
 +
 +2014-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (sys_spawnve): Avoid modification of the CMDNAME
 +      argument passed by the caller, when we mirror all slashes into
 +      backslashes.
 +
 +2014-10-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * gtkutil.c (xg_set_toolkit_horizontal_scroll_bar_thumb):
 +      Resurrect old code and fix compilation with GTK < 2.13.6.
 +
 +2014-10-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use AUTO_CONS instead of SCOPED_CONS, etc.
 +      * frame.h (AUTO_FRAME_ARG): Rename from FRAME_PARAMETER.
 +      * lisp.h (AUTO_CONS): Rename from scoped_cons.
 +      (AUTO_LIST1): Rename from scoped_list1.
 +      (AUTO_LIST2): Rename from scoped_list2.
 +      (AUTO_LIST3): Rename from scoped_list3.
 +      (AUTO_LIST4): Rename from scoped_list4.
 +      (AUTO_STRING): Rename from SCOPED_STRING.
 +      * frame.h (AUTO_FRAME_ARG):
 +      * lisp.h (AUTO_CONS, AUTO_LIST1, AUTO_LIST2, AUTO_LIST3)
 +      (AUTO_LIST4, AUTO_STRING):
 +      Prepend a new argument 'name'.
 +      Declare a variable instead of yielding a value.
 +      All uses changed.
 +      * lisp.h (STACK_CONS, AUTO_CONS_EXPR): New internal macros.
 +
 +2014-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (w32_createwindow): Accept an additional argument, an
 +      array of 2 values specifying the coordinates of the frame's
 +      top-left corner.  Use these values instead of calling x_get_arg,
 +      which can cons Lisp objects, and therefore cannot be called except
 +      from the main thread.  Remove redundant tests for the default
 +      values.
 +      (my_create_window): Move the calculation of the coordinates of the
 +      frame's top-left edge here.  Pass them to the input thread via the
 +      second parameter of the WM_EMACS_CREATEWINDOW message.
 +      See http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html
 +      for the details.
 +
 +2014-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (cursor_row_fully_visible_p): Update commentary.
 +      (redisplay_window): Treat the frame's frozen_window_starts flag
 +      the same way as the optional_new_start flag for the window: only
 +      obey it if the glyph row showing point will be fully visible.
 +      Likewise when the window start is in a continuation line.  If,
 +      after trying everything under the 'force_start' label, point is
 +      still not fully visible, give up and scroll the window.
 +      Add debugging traces.  (Bug#18545)
 +
 +      * window.c (Frecenter): Set the window's redisplay flag.
 +
 +2014-09-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32_read_socket): Don't use frame dimensions for
 +      resizing if GetClientRect returned an empty (0, 0, 0, 0)
 +      rectangle.  Check the return value of GetClientRect, and don't use
 +      the results if it didn't succeed.
 +
 +      * dispnew.c (change_frame_size_1): Recompute the frame dimensions
 +      in columns and lines after correcting the pixel dimensions in
 +      check_frame_size.
 +      (adjust_decode_mode_spec_buffer): Add assertion to avoid passing
 +      negative values to xrealloc.  (Bug#18528)
 +
 +2014-09-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * alloc.c: Remove now-unnecessary check.
 +      Suggested by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00891.html
 +
 +      * xterm.c (x_term_init): Allocate temps on stack, not on heap.
 +
 +      * frame.c (x_set_frame_parameters): Port --enable-gcc-warnings
 +      to Ubuntu 14.04.1 x86-64.
 +
 +      Simplify stack-allocated Lisp objects, and make them more portable.
 +      The build_local_string macro was used in two ways: (1) string
 +      literals for which scoped allocation suffices, and (2) file name
 +      components, where it's not safe in general to assume bounded-size
 +      ASCII data.  Simplify by defining a new macro SCOPED_STRING that
 +      allocates a block-scope string, and by using SCOPED_STRING for (1)
 +      and build_string for (2).  Furthermore, actually use stack
 +      allocation only for objects known to have sufficient alignment.
 +      This simpler implementation means Emacs can make
 +      USE_STACK_LISP_OBJECTS the default unless GC_MARK_STACK !=
 +      GC_MAKE_GCPROS_NOOPS.
 +      * lisp.h (GCALIGNED): Align even if !USE_STACK_LISP_OBJECTS,
 +      for fewer differences among implementations.
 +      (struct Lisp_String): Now GCALIGNED.
 +      (USE_STACK_LISP_OBJECTS): Default to true, since the
 +      implementation no longer insists on a nonempty GCALIGNED.
 +      But make it false if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS.
 +      (SCOPED_CONS_INITIALIZER): Remove, since it's no longer needed
 +      separately.  Move definiens to scoped_cons.  The old definition
 +      was incorrect when GCALIGNED was defined to be empty.
 +      (union Aligned_String): New type.
 +      (USE_STACK_CONS, USE_STACK_STRING): New constants, so that the
 +      implementation ports to compilers that don't align strictly enough.
 +      Don't worry about the union sizes; it's not worth bothering about.
 +      (scoped_cons, scoped_list1, scoped_list3, scoped_list4):
 +      Rewrite using USE_STACK_CONS.
 +      (scoped_cons): Assume the use of union Aligned_Cons.
 +      (lisp_string_size, make_local_string, build_local_string): Remove.
 +      Unless otherwise specified, all callers of build_local_string
 +      changed to use SCOPED_STRING.
 +      (SCOPED_STRING): New macro.
 +      * data.c (wrong_choice):
 +      * menu.c (single_menu_item):
 +      * process.c (Fformat_network_address):
 +      Hoist use of SCOPED_STRING out of a scope, so that its returned
 +      object lives long enough.
 +      * fileio.c (Fexpand_file_name): Use build_string, not SCOPED_STRING,
 +      as the string might be long or might not be ASCII.
 +
 +2014-09-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdos.c (internal_terminal_init): Bump version to 25.
 +
 +2014-09-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Keep stack-allocated Lisp objects fast rather than versatile.
 +      * lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such.
 +      (SCOPED_CONS_INITIALIZER): New macro.
 +      (scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it.
 +      (USE_LOCAL_ALLOCA): Remove.
 +      (local_cons, local_list1, local_list2, local_list3, local_list4):
 +      Remove.  Stack overflow checking makes them too slow.
 +      (make_local_vector): Likewise.  Also we just don't have enough
 +      users for it.
 +      (enum LISP_STRING_OVERHEAD): Remove.
 +      (local_string_init, local_vector_init): Remove prototypes.
 +      (make_local_string, build_local_string): Redesign to target short
 +      compile-time string constants, fall back to regular string allocation
 +      where appropriate.
 +      (lisp_string_size): New function.
 +      (verify_ascii) [ENABLE_CHECKING]: Add prototype.
 +      * alloc.c (local_string_init, local_vector_init): Remove.
 +      (verify_ascii) [ENABLE_CHECKING]: New function.
 +      * buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c:
 +      * fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c:
 +      * menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c:
 +      * xselect.c, xterm.c: All related users changed.
 +
 +2014-09-28  Ken Brown  <kbrown@cornell.edu>
 +
 +      * sheap.c (bss_sbrk_buffer_beg): Remove redundant variable.
 +      * gmalloc.c [CYGWIN]: Adapt to change in sheap.c.
 +
 +2014-09-27  Ken Brown  <kbrown@cornell.edu>
 +
 +      Fix implementation of HYBRID_MALLOC on Cygwin.
 +      * sheap.c (bss_sbrk_buffer_end): Cast to void *.
 +      (bss_sbrk_buffer_beg): New variable.  Use it...
 +      * gmalloc.c (ALLOCATED_BEFORE_DUMPING) [CYGWIN]: ...here, to fix
 +      incorrect definition.
 +
 +2014-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (track-mouse): Rename to internal--track-mouse.
 +      Make it into a function and change arg to be a function.
 +
 +      * lisp.mk (lisp): Add elisp-mode.elc.
 +
 +2014-09-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xfns.c (x_default_scroll_bar_color_parameter):
 +      Use USE_LOCAL_ALLOCA only if USE_TOOLKIT_SCROLL_BARS,
 +      to pacify --enable-gcc-warnings in non-scrollbar builds.
 +
 +2014-09-26  Ken Brown  <kbrown@cornell.edu>
 +
 +      * w32term.h (ALIGN_STACK): Fix the cpp condition.
 +
 +2014-09-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit
 +      MinGW builds that use GCC before 4.2.
 +
 +      Default to stack objects on DOS_NT platforms as well.
 +      * w32term.h (ALIGN_STACK) [__GNUC__]: Define to
 +      __attribute__((force_align_arg_pointer)) for GCC 4.2 and later.
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Remove the !DOS_NT condition.
 +
 +      * w32proc.c (enum_locale_fn, enum_codepage_fn): Add the
 +      ALIGN_STACK attribute.
 +
 +      * w32fns.c (w32_monitor_enum): Add the ALIGN_STACK attribute.
 +
 +      * w32uniscribe.c (add_opentype_font_name_to_list): Add the
 +      ALIGN_STACK attribute.
 +
 +      * w32font.c (add_font_name_to_list, add_font_entity_to_list)
 +      (add_one_font_entity_to_list): Add the ALIGN_STACK attribute.
 +
 +2014-09-25  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (frame_inhibit_resize):
 +      * widget.c (EmacsFrameResize):
 +      * window.c (resize_frame_windows, Fset_window_configuration):
 +      * xdisp.c (expose_frame):
 +      * xfns.c (x_change_tool_bar_height):
 +      * xmenu.c (update_frame_menubar):
 +      * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1):
 +      Remove code left dead after 2014-07-27 changes.
 +
 +2014-09-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix local_cons etc. to not exhaust the stack when in a loop.
 +      Problem reported in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00696.html
 +      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
 +      * charset.c (load_charset_map_from_file, Ffind_charset_region)
 +      (Ffind_charset_string):
 +      * chartab.c (uniprop_encode_value_numeric, uniprop_table):
 +      * data.c (wrong_range):
 +      * editfns.c (Fpropertize, format2):
 +      * emacs.c (init_cmdargs, decode_env_path):
 +      * fileio.c (auto_save_error):
 +      * fns.c (Fyes_or_no_p):
 +      * font.c (font_style_to_value, font_parse_xlfd)
 +      (font_parse_family_registry, font_delete_unmatched)
 +      (font_add_log):
 +      * fontset.c (Fset_fontset_font):
 +      * frame.c (x_get_arg):
 +      * keyboard.c (echo_dash, safe_run_hooks_error, parse_menu_item)
 +      (read_char_minibuf_menu_prompt):
 +      * keymap.c (silly_event_symbol_error, describe_vector):
 +      * lread.c (load_warn_old_style_backquotes):
 +      * menu.c (single_menu_item):
 +      * minibuf.c (Fread_buffer):
 +      * process.c (status_message, Fformat_network_address)
 +      (server_accept_connection):
 +      * textprop.c (copy_text_properties):
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction):
 +      * xfns.c (x_default_scroll_bar_color_parameter):
 +      * xfont.c (xfont_open):
 +      * xselect.c (x_clipboard_manager_error_1):
 +      * xterm.c (x_term_init):
 +      Put USE_LOCAL_ALLOCA at the start of the function.
 +      * fns.c (maybe_resize_hash_table): Use build_string instead of
 +      build_local_string, since we'd otherwise need a conditional
 +      USE_LOCAL_ALLOCA here, but this is just debugging output and is
 +      not worth the bother of optimization.
 +      * font.c (font_delete_unmatched): Remove by-hand code that
 +      observed MAX_ALLOCA limit, since it's now done automatically.
 +      * keymap.c (Fsingle_key_description): Put USE_SAFE_ALLOCA at top,
 +      since build_local_string needs its sa_alloc.
 +      * lisp.h (lisp_word_count): New function.
 +      (SAFE_ALLOCA_LISP): Use it.
 +      (USE_LOCAL_ALLOCA): New macro.
 +      (local_cons, make_local_vector, make_local_string):
 +      Observe the MAX_ALLOCA limit.
 +      (LISP_STRING_OVERHEAD): New constant.
 +      (make_local_string): Use it.
 +
 +2014-09-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Default to stack objects on non-GNU/Linux, non-DOS_NT platforms.
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Also default to true
 +      if !defined DOS_NT && !defined GNU_LINUX.  I've tested this on AIX
 +      and Solaris and it's likely to work on similar platforms.
 +
 +      Avoid signed integer overflow when converting Time to ptrdiff_t.
 +      * keyboard.c (INPUT_EVENT_POS_MAX, INPUT_EVENT_POS_MIN):
 +      New macros.
 +      (position_to_Time, Time_to_position): New functions.
 +      (gen_help_event, kbd_buffer_get_event): Use them.
 +      * systime.h (Time) [emacs && !HAVE_X_WINDOWS]:
 +      Go back to plain 'unsigned long', so that 'Time' is the same
 +      for both X and non-X builds; this is less likely to cause surprise.
 +      * termhooks.h: Remove compile-time check that Time and ptrdiff_t
 +      are the same size; this is no longer required.
 +
 +      * keyboard.c (make_lispy_event): Avoid unnecessary tests
 +      of bit 28 and of whether an unsigned value is negative.
 +      This simplifies the code a bit, and pacifies clang 3.4.
 +
 +2014-09-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * systime.h (Time): Define as size_t, to be consistent with 64-bit
 +      Windows builds, where 'long' is a 32-bit type.
 +
 +      * w32inevt.h (w32_console_mouse_position): Update the argument
 +      types to use 'Time'.
 +
 +      * w32term.c (w32_mouse_position)
 +      (x_horizontal_scroll_bar_report_motion)
 +      (x_scroll_bar_report_motion): Update the argument types to use
 +      'Time'.
 +
 +2014-09-24  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * termhooks.h (enum scroll_bar_part): Begin from 0 to allow...
 +      (struct input_event): ...unsigned bitfields.  Likewise for
 +      `event_kind' member.  Prefer unsigned for `code' and 'modifiers'.
 +      Use `timestamp' for HELP_EVENT position.  Add compile-time assert.
 +      * keyboard.c (gen_help_event, kbd_buffer_store_help_event)
 +      (kbd_buffer_get_event): Adjust users.
 +      (scroll_bar_parts): Add Qnil to match scroll_bar_nowhere.
 +      (make_scroll_bar_position): New function, refactored out of...
 +      (make_lispy_event): ...adjusted user.
 +      * nsterm.h (EmacsScroller): Use enum for `last_hit_part' member.
 +      * nsterm.m (ns_mouse_position, mouseUp):
 +      * term.c (term_mouse_position):
 +      * w32inevt.c (w32_console_mouse_position):
 +      * w32term.c (w32_mouse_position):
 +      * xterm.c (XTmouse_position): Use scroll_bar_above_handle.
 +      (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback):
 +      Prefer enum and explicit enum members to integers and numeric values.
 +
 +      * chartab.c (uniprop_encode_value_numeric):
 +      * font.c (font_style_to_value): Use make_local_vector.
 +      (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA.
 +      * keymap.c (append_key): Use scoped_list1.
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Enable by default if GNU_LINUX
 +      && __GNUC__ && !__clang__.  Mention known problems.  Adjust comment.
 +
 +2014-09-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix some slow uses and misuses of strcat.
 +      * doc.c (get_doc_string):
 +      * gtkutil.c (get_utf8_string):
 +      * xsmfns.c (x_session_initialize):
 +      Avoid recomputation of string length.
 +      * ftfont.c (ftfont_spec_pattern):
 +      * xfns.c (xic_create_fontsetname):
 +      Don't assume output buffer is initially zero.
 +
 +2014-09-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy.
 +      All callers changed.
 +      * xterm.c (x_term_init): Use new functionality to avoid two needs
 +      to compute a string length.
 +
 +      * dispextern.h, xdisp.c (window_box_right_offset): Now static.
 +
 +2014-09-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use known length of a Lisp string to copy it faster.
 +      * lisp.h (lispstrcpy): New function.  Add comment.
 +      * callproc.c (child_setup):
 +      * dbusbind.c (xd_append_arg):
 +      * doc.c (get_doc_string):
 +      * font.c (Ffont_xlfd_name):
 +      * frame.c (xrdb_get_resource):
 +      * process.c (Fmake_network_process, network_interface_info):
 +      * w32fns.c (Fx_open_connection):
 +      * w32proc.c (sys_spawnve):
 +      * xfns.c (select_visual):
 +      * xfont.c (xfont_list):
 +      * xsmfns.c (x_session_initialize):
 +      * xterm.c (x_term_init): Use it.
 +
 +2014-09-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix SAFE_ALLOCA to not exhaust the stack when in a loop.
 +      Reported by Dmitry Antipov in thread leading to:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html
 +      This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP;
 +      the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS
 +      remain unfixed.
 +      * callproc.c (call_process): Save and restore sa_avail.
 +      * lisp.h (USE_SAFE_ALLOCA): Define sa_avail.
 +      (AVAIL_ALLOCA): New macro.
 +      (SAFE_ALLOCA, SAFE_NALLOCA, SAFE_ALLOCA_LISP):
 +      Use it, and check against sa_avail rather than MAX_ALLOCA.
 +
 +2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      On OSX, do not free font-specific data more than once (Bug#18501).
 +      * macfont.m (macfont_close): Release and free font-specific data
 +      only if it wasn't previously freed.
 +
 +2014-09-22  David Caldwell <david@porkrind.org>  (tiny change)
 +
 +      * unexmacosx.c (dump_it): Improve error message.
 +
 +2014-09-22  Juri Linkov  <juri@jurta.org>
 +
 +      * image.c (imagemagick_load_image): Add delay to imagemagick metadata.
 +      (Bug#10747, bug#18334)
 +
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * frame.c (Fmouse_position, Fset_mouse_position): Clarify the
 +      units in which the position is measured.  (Bug#18493)
 +
 +      * xdisp.c (redisplay_internal): Force redisplay of all windows
 +      that show a buffer whose narrowing has changed.  (Bug#18490)
 +
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor):
 +      * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L
 +      lines, draw the hollow-box and hbar cursors on the right side of
 +      cursor-glyph.  Thanks to martin rudalics <rudalics@gmx.at> for
 +      testing on X.
 +
 +      * xterm.c (x_draw_stretch_glyph_string):
 +      * w32term.c (x_draw_stretch_glyph_string): Fix a thinko that
 +      caused the block cursor to disappear on a TAB in R2L lines in
 +      every window except the leftmost one.  Reported by Martin Rudalics
 +      <rudalics@gmx.at>.
 +
 +2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Always use matched specpdl entry to record call arguments (Bug#18473).
 +      * lisp.h (record_in_backtrace): Adjust prototype.
 +      * eval.c (record_in_backtrace): Return current specpdl level.
 +      (set_backtrace_args, set_backtrace_nargs): Merge.  Adjust all users.
 +      (eval_sub, Ffuncall): Record call arguments in matched specpdl
 +      entry and use that entry in call to backtrace_debug_on_exit.
 +      (apply_lambda): Likewise.  Get current specpdl level as 3rd arg.
 +      (do_debug_on_call): Get current specpdl level as 2nd arg.
 +
 +      Prefer ptrdiff_t to int and avoid integer overflows.
 +      * fileio.c (make_temp_name):
 +      * font.c (font_parse_family_registry): Avoid integer
 +      overflow on string size calculation.
 +      * data.c (Faset): Likewise for byte index.
 +
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix display of R2L lines in partial-width windows.
 +      * xdisp.c (init_iterator): Don't use it->bidi_p before it is
 +      assigned the correct value.
 +      (extend_face_to_end_of_line): Account for truncation and
 +      continuation glyphs in R2L rows when one of the fringes is not
 +      displayed.
 +      (display_line): Don't assign negative X offset to a row if we are
 +      going to produce a truncation glyph for it.  When handling
 +      truncated R2L rows, consider the width of the left fringe instead
 +      of the right one.
 +      (produce_special_glyphs): Fix bogus assignments.
 +
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Fexpand_file_name) [DOS_NT]: Make sure newdirlim is
 +      always set to a valid value.  Make sure the size passed to alloca
 +      is always positive.  (Bug#18516)
 +
 +2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra call to oblookup when interning symbols.
 +      * lisp.h (intern_driver): Add prototype.
 +      * lread.c (intern_driver): New function.
 +      (intern1, intern_c_string_1, Fintern):
 +      * font.c (font_intern_prop):
 +      * w32font.c (intern_font_name): Use it.
 +
 +2014-09-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor improvements to new stack-allocated Lisp objects.
 +      * frame.h (FRAME_PARAMETER):
 +      Prefer scoped_list1 to local_list1 where either would do.
 +      * lisp.h (scoped_list4): New macro.
 +      (local_cons, local_list1, local_list2, local_list3, local_list4)
 +      (make_local_vector, make_local_string, build_local_string):
 +      Prefer functions to macros where either would do.
 +      * xdisp.c (build_desired_tool_bar_string):
 +      Prefer scoped_list4 to local_list4 where either would do.
 +
 +2014-09-18  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      More and more stack-allocated Lisp objects if USE_LOCAL_ALLOCATORS.
 +      * lisp.h (local_list4) [USE_LOCAL_ALLOCATORS]: New macro.
 +      [!USE_LOCAL_ALLOCATORS]: Fall back to regular list4.
 +      * frame.h (FRAME_PARAMETER): New macro.
 +      * dispnew.c (init_display):
 +      * fontset.c (Fset_fontset_font):
 +      * frame.c (x_default_parameter):
 +      * xfaces.c (set_font_frame_param, Finternal_merge_in_global_face):
 +      * xfns.c (x_default_scroll_bar_color_parameter)
 +      (x_default_font_parameter, x_create_tip_frame): Use it.
 +      * editfns.c (Fpropertize): Use local_cons.
 +      * process.c (status_message): Use build_local_string.
 +      * xfont.c (xfont_open): Use make_local_string.
 +      * xdisp.c (build_desired_tool_bar_string): Use local_list4.
 +
 +2014-09-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port USE_LOCAL_ALLOCATORS code to clang 3.4 x86-64.
 +      * lisp.h (USE_LOCAL_ALLOCATORS): Define only if __GNUC__ &&
 +      !__clang__.  This works with GCC and with clang and is safer for
 +      compilers we don't know about.
 +      (local_cons): Rename parameter to make capture less likely.
 +
 +2014-09-17  Samuel Bronson  <naesten@gmail.com>
 +
 +      * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927).
 +
 +2014-09-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix minor problems found by static checking.
 +      * alloc.c, lisp.h (SAVE_TYPE_INT_OBJ, make_save_int_obj):
 +      Remove; now unused.
 +      * buffer.h (decode_buffer): Doc and indentation fixes.
 +      * fns.c (Qstring_collate_lessp, Qstring_collate_equalp): Now static.
 +
 +2014-09-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid clang-specific warnings.
 +      * buffer.c (init_buffer): Shut up -Wself-assign.
 +      * process.c (server_accept_connection): Shut up -Wunsequenced.
 +
 +2014-09-16  Daniel Colascione  <dancol@dancol.org>
 +
 +      * fns.c (sxhash): For symbols, use address as hash code.
 +
 +2014-09-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If USE_LOCAL_ALLOCATORS, allocate even more Lisp objects on stack.
 +      * charset.c (load_charset_map_from_file): Use scoped_list2
 +      and build_local_string.
 +      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
 +      * emacs.c (init_cmdargs, decode_env_path):
 +      * fileio.c (Fexpand_file_name):
 +      * fns.c (maybe_resize_hash_table) [ENABLE_CHECKING]:
 +      * frame.c (x_get_arg):
 +      * keyboard.c (safe_run_hooks_error):
 +      * lread.c (load_warn_old_style_backquotes):
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction):
 +      * xfns.c (x_default_scroll_bar_color_parameter, select_visual):
 +      * xselect.c (x_clipboard_manager_error_1)
 +      (x_clipboard_manager_save_all):
 +      * xterm.c (x_term_init): Use build_local_string.
 +
 +      Avoid more integer overflows on string size calculations.
 +      * category.c (Fmake_category_set):
 +      * xdisp.c (get_overlay_arrow_glyph_row):
 +      * w32font.c (intern_font_name): Prefer ptrdiff_t to int.
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sound.c [WINDOWSNT]: Include w32common.h and mbstring.h.
 +      (SOUND_WARNING) [WINDOWSNT]: Include in do..while and improve the
 +      error message format.  Use message_with_string to have non-ASCII
 +      file names properly displayed.
 +      (do_play_sound) [WINDOWSNT]: Use Unicode APIs to play sound files
 +      when w32-unicode-filenames is non-nil, but not on Windows 9X,
 +      where these APIs are not available even in UNICOWS.DLL.
 +      Improve the format of error messages and include the file name in them
 +      where appropriate.
 +      (Fplay_sound_internal) [WINDOWSNT]: Make the MS-Windows branch
 +      call play-sound-functions, per documentation.
 +
 +      * w32.c (w32_get_long_filename, w32_get_short_filename):
 +      Constify the input file name arguments.
 +
 +      * w32.h (w32_get_long_filename, w32_get_short_filename):
 +      Update prototypes.
 +
 +2014-09-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If USE_LOCAL_ALLOCATORS, allocate some Lisp objects on stack.
 +      * lisp.h (local_cons, local_list1, local_list2, local_list3)
 +      [USE_LOCAL_ALLOCATORS]: New macros.
 +      [!USE_LOCAL_ALLOCATORS]: Fall back to regular functions.
 +      (build_local_string): Avoid argument name expansion clash with
 +      make_local_string.
 +      * alloc.c (toplevel)
 +      [USE_LOCAL_ALLOCATORS && GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS]:
 +      Preprocessor guard to avoid impossible configuration.
 +      * charset.c (Ffind_charset_region, Ffind_charset_string):
 +      Use make_local_vector.
 +      * lread.c (read1, substitute_object_recurse): Use scoped_cons.
 +      * textprop.c (Fput_text_property, Fadd_face_text_property):
 +      Use scoped_list2.
 +      (copy_text_properties): Use local_cons and local_list3.
 +      * chartab.c (uniprop_table):
 +      * data.c (wrong_choice, wrong_range):
 +      * doc.c (get_doc_string):
 +      * editfns.c (format2):
 +      * fileio.c (Fexpand_file_name, auto_save_error):
 +      * fns.c (Fyes_or_no_p):
 +      * font.c (font_parse_xlfd, font_parse_family_registry, font_add_log):
 +      * fontset.c (Fset_fontset_font):
 +      * keyboard.c (echo_add_key, echo_dash, parse_menu_item)
 +      (read_char_minibuf_menu_prompt):
 +      * keymap.c (silly_event_symbol_error, describe_vector):
 +      * menu.c (single_menu_item):
 +      * minibuf.c (Fread_buffer):
 +      * process.c (status_message, Fformat_network_address)
 +      (server_accept_connection): Use make_local_string and
 +      build_local_string.  Prefer compound literals where appropriate.
 +
 +2014-09-15  Daniel Colascione  <dancol@dancol.org>
 +
 +      * fns.c (Fsort): Tweak sort docstring.
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of pipes.
 +      (sys_write): When a write to a non-blocking pipe returns ENOSPC,
 +      set errno to EAGAIN instead, to allow the caller to retry the
 +      write after some waiting.  Fixes deadlocks when Emacs exchanges a
 +      lot of data through the pipe.  (Bug#18420)
 +
 +      * sound.c (Fplay_sound_internal): Encode the sound file name in
 +      the ANSI codepage.  Expand it against data-directory, as per docs,
 +      not against the current directory.  No need to make a local copy
 +      of the file name; pass the encoded file name directly to
 +      do_play_sound.  (Bug#18463)
 +
 +      * w32.c (ansi_encode_filename): If w32_get_short_filename returns
 +      NULL, and the file name is not encodable in ANSI codepage, return
 +      the string with "?" replacement characters, which will fail the
 +      caller.  This avoids returning a random value in that case.
 +
 +2014-09-15  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * window.c (Fresize_mini_window_internal): Set w->total_lines
 +      from w->pixel_height (Bug#18422).
 +
 +2014-09-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (updateFrameSize:, initFrameFromEmacs:)
 +      (toggleFullScreen:): Take frame_resize_pixelwise into account when
 +      setting resize increments (Bug#18435).
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (pos_visible_p): Properly save and restore the iterator
 +      state around the call to line_bottom, since it can move the
 +      iterator to another screen line.  This fixes off-by-one errors in
 +      the reported row in some rare cases.
 +
 +2014-09-14  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * callproc.c (init_callproc): Fix bug introduced at
 +      2014-09-07 (Bug#18474).
 +
 +2014-09-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Prefer ptrdiff_t to int and avoid integer overflows.
 +      * fileio.c (make_temp_name):
 +      * font.c (font_parse_family_registry): Avoid integer
 +      overflow on string size calculation.
 +      * data.c (Faset): Likewise for byte index.
 +
 +2014-09-12  Detlev Zundel  <dzu@member.fsf.org>
 +
 +      * buffer.c (syms_of_buffer): DEFSYM Qchoice (Bug#18337).
 +
 +2014-09-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (make_local_string): Nitpick indent.
 +      * print.c (Fprin1_to_string): Remove unused GCPROs.
 +
 +      More debugging aids around GCPROs.
 +      * lisp.h (struct gcpro) [DEBUG_GCPRO]: Add extra members.
 +      (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, GCPRO7):
 +      Minor restyle.  If DEBUG_GCPRO, initialize extra fields.
 +
 +      * lread.c (readevalloop_eager_expand_eval): Add GCPRO and fix
 +      bootstrap broken if GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
 +
 +      Remove redundant GCPROs around Ffuncall and Fapply calls.
 +      This is safe because Ffuncall protects all of its arguments by itself.
 +      * charset.c (map_charset_for_dump): Remove redundant GCPRO.
 +      * eval.c (Fapply, apply1, call0, call1, call2, call3, call4, call5)
 +      (call6, call7): Likewise.  Use compound literals where applicable.
 +      (run_hook_with_args_2): Use compound literal.
 +
 +2014-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Pacify --enable-gcc-warnings when no window system is used.
 +      These warnings found that subscript error, so they seem worthwhile.
 +      * composite.c (char_composable_p): Simplify a bit.
 +      * frame.c (x_set_frame_parameters): Add an IF_LINT.
 +      * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
 +      * window.c (set_window_scroll_bars):
 +      Use USE_HORIZONTAL_SCROLL_BARS for simplicity.
 +      * frame.h [! USE_HORIZONTAL_SCROLL_BARS]:
 +      Ignore -Wsuggest-attribute=const.
 +      * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro.
 +      (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it.
 +
 +2014-09-10  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +
 +      * charset.c (Fget_unused_iso_final_char): Fix subscript error.
 +      Use check_iso_charset_parameter instead of doing the checks by hand.
 +      (check_iso_charset_parameter): Move up.  Check parameters a bit
 +      more carefully, and return true for 96-char sets.  All callers changed.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify lisp.h by removing the __COUNTER__ business.
 +      Reported by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00220.html
 +      * lisp.h (make_local_vector, make_local_string)
 +      (build_local_string): Simplify by not bothering with __COUNTER__.
 +      The __COUNTER__ business wasn't working properly, and was needed
 +      only for hypothetical future expansion anyway.
 +
 +2014-09-10  Alp Aker  <alp.tekin.aker@gmail.com>
 +
 +      * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other
 +      terms to determine bitmap color.  (Bug#18437)
 +
 +2014-09-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (sys_write): Use SAFE_NALLOCA for the NL -> CRLF
 +      translation buffer.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (handle_one_xevent): Add braces to pacify gcc -Wall.
 +
 +2014-09-10  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (handle_one_xevent): Detect iconified by looking at
 +      _NET_WM_STATE_HIDDEN.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove.
 +      These can generate a constant with the correct value but the wrong
 +      width, which doesn't work as a printf argument.  All uses removed.
 +      Reported by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00213.html
 +      (ENUMABLE): Remove; no longer needed.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      Remove; no longer needed because of the above change.
 +      Each definiens moved to the only use.
 +
 +      Improve the experimental local and scoped allocation.
 +      * alloc.c (local_string_init, local_vector_init):
 +      New functions, defined if USE_LOCAL_ALLOCATORS.
 +      Mostly, these are moved here from lisp.h, as it's not
 +      clear it's worth making them inline.
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Default to false.
 +      (GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and
 +      USE_STACK_LISP_OBJECTS, not on a laundry list.
 +      (local_string_init, local_vector_init): New decls.
 +      (union Aligned_Cons): New type.
 +      (scoped_cons): Use it.  Give up on the char trick, as it's a too
 +      much of a maintenance hassle; if someone wants this speedup
 +      they'll just need to convince their compiler to align properly.
 +      Conversely, use the speedup if struct Lisp_Cons happens to
 +      be aligned even without a directive.  Better yet, help it along
 +      by using union Aligned_Cons rather than struct Lisp_Cons.
 +      (pointer_valid_for_lisp_object): Remove.  This check is not
 +      necessary, since make_lisp_ptr is already doing it.  All uses removed.
 +      (local_vector_init, local_string_init): Move to alloc.c.
 +      (build_local_vector): Remove this awkward macro, replacing with ...
 +      (make_local_vector): New macro, which acts more like a function.
 +      Use statement expressions and use __COUNTER__ to avoid macro
 +      capture.  Fall back on functions if these features are not supported.
 +      (build_local_string, make_local_string): Likewise.
 +
 +2014-09-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.c (x_term_init): Consolidate duplicated code.
 +      [USE_LUCID]: Revert 2014-04-02 change (Bug#18403).  Add comment.
 +      (x_delete_terminal): Do not close X connection fd (Bug#18403).
 +      Add eassert and mark dpyinfo as dead only if it was alive.
 +
 +      Add macros to allocate temporary Lisp objects with alloca.
 +      Respect MAX_ALLOCA and fall back to regular GC for large objects.
 +      * character.h (parse_str_as_multibyte): Move prototype to ...
 +      * lisp.h (parse_str_as_multibyte): ... here.
 +      (struct Lisp_Cons): Add GCALIGNED attribute if supported.
 +      (scoped_cons, scoped_list2, build_local_vector, build_local_string):
 +      New macros.
 +      (scoped_cons_init, pointer_valid_for_lisp_object, local_vector_init)
 +      (local_string_init): New functions.
 +      * alloc.c (verify_alloca) [ENABLE_CHECKING]: New function.
 +      (init_alloc_once): Call it.
 +
 +      Cleanup last change and make all new stuff conditional.
 +      * lisp.h (build_local_string): Rename to ...
 +      (make_local_string): ... this macro.
 +      (build_local_string, scoped_list1, scoped_list3): New macros.
 +      (toplevel) [USE_STACK_LISP_OBJECTS]: Define all new macros
 +      and functions as such, use regular fallbacks otherwise.
 +      * alloc.c (verify_alloca) [USE_STACK_LISP_OBJECTS]: Define
 +      conditionally.
 +
 +2014-09-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
 +      always make sure the marginal areas of the row are in sync with
 +      what the window wants.  (Bug#18419)
 +
 +      * data.c (set_internal): Use assq_no_quit, not Fassq, to find an
 +      existing binding of a variable, to avoid silently aborting
 +      commands that use specbind.  (Bug#18331)
 +
 +2014-09-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix bug uncovered by changing alloca to auto buffer (Bug#18410).
 +      * coding.c (growable_destination): New function.
 +      (produce_chars): Use it for sanity checks.  Do not fiddle with
 +      dst_end if the source and destination are both nil, as it's
 +      the caller's responsibility to avoid overlap.
 +      * keyboard.c (read_decoded_event_from_main_queue):
 +      The destination must be MAX_MULTIBYTE_LENGTH times the max source
 +      length, not 4 times, to prevent decode_coding_c_string from trying
 +      to reallocate a destination.  This removes the need for the FIXME.
 +
 +      * callproc.c (exec_failed) [DOS_NT]: Define a dummy.
 +      All callers simplified.  Add a comment about exec_failed, vfork,
 +      and alloca.
 +
 +      Adjust drag-and-drop fix when window is above top (Bug#18303).
 +      * xselect.c (x_fill_property_data): Don't let sign bit of negative
 +      XCDR bleed into XCAR's encoded value.  Improve checks for
 +      out-of-range data while we're at it.
 +
 +2014-09-07  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xselect.c (x_fill_property_data): Handle negative XCDR when data
 +      is CONSP (Bug#18303).
 +
 +2014-09-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * callproc.c (child_setup) [WINDOWSNT]: Don't call exec_failed if
 +      'alloca' gets passed arguments larger than MAX_ALLOCA.
 +
 +      * font.c (MAX): Define if not defined elsewhere.
 +
 +2014-09-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (read_decoded_event_from_main_queue): Reinstitute alloca
 +      here for destination buffer, to work around what appears to be a
 +      bug in decode_coding_c_string when the source and destination are
 +      both C strings.
 +
 +      Use SAFE_ALLOCA etc. to avoid unbounded stack allocation (Bug#18410).
 +      This follows up on the recent thread in emacs-devel on alloca; see:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html
 +      This patch also cleans up alloca-related glitches noted while
 +      examining the code looking for unbounded alloca.
 +      * alloc.c (listn):
 +      * callproc.c (init_callproc):
 +      Rewrite to avoid need for alloca.
 +      * buffer.c (mouse_face_overlay_overlaps)
 +      (report_overlay_modification):
 +      * buffer.h (GET_OVERLAYS_AT):
 +      * coding.c (make_subsidiaries):
 +      * doc.c (Fsnarf_documentation):
 +      * editfns.c (Fuser_full_name):
 +      * fileio.c (Ffile_name_directory, Fexpand_file_name)
 +      (search_embedded_absfilename, Fsubstitute_in_file_name):
 +      * fns.c (Fmake_hash_table):
 +      * font.c (font_vconcat_entity_vectors, font_update_drivers):
 +      * fontset.c (fontset_pattern_regexp, Ffontset_info):
 +      * frame.c (Fmake_terminal_frame, x_set_frame_parameters)
 +      (xrdb_get_resource, x_get_resource_string):
 +      * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf):
 +      * ftxfont.c (ftxfont_draw):
 +      * image.c (xbm_load, xpm_load, jpeg_load_body):
 +      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items)
 +
 +      * keymap.c (Fdescribe_buffer_bindings, describe_map):
 +      * lread.c (openp):
 +      * menu.c (digest_single_submenu, find_and_call_menu_selection)
 +      (find_and_return_menu_selection):
 +      * print.c (PRINTFINISH):
 +      * process.c (Fformat_network_address):
 +      * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1):
 +      * search.c (search_buffer, Fmatch_data, Fregexp_quote):
 +      * sound.c (wav_play, au_play):
 +      * syntax.c (skip_chars):
 +      * term.c (tty_menu_activate, tty_menu_show):
 +      * textprop.c (get_char_property_and_overlay):
 +      * window.c (Fset_window_configuration):
 +      * xdisp.c (safe__call, next_overlay_change, vmessage)
 +      (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight):
 +      * xfaces.c (face_at_buffer_position):
 +      * xmenu.c (x_menu_show):
 +      Use SAFE_ALLOCA etc. instead of plain alloca, since the
 +      allocation size isn't bounded.
 +      * callint.c (Fcall_interactively): Redo memory_full check
 +      so that it can be done at compile-time on some platforms.
 +      * coding.c (MAX_LOOKUP_MAX): New constant.
 +      (get_translation_table): Use it.
 +      * callproc.c (call_process): Use SAFE_NALLOCA instead of
 +      SAFE_ALLOCA, to catch integer overflows on size calculation.
 +      (exec_failed) [!DOS_NT]: New function.
 +      (child_setup) [!DOS_NT]: Use it.
 +      * editfns.c (Ftranspose_regions):
 +      Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'.
 +      * editfns.c (check_translation):
 +      Allocate larger buffers on the heap.
 +      * eval.c (internal_lisp_condition_case):
 +      Check for MAX_ALLOCA overflow.
 +      * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector.
 +      (Fbase64_encode_region, Fbase64_decode_region):
 +      Avoid unnecessary calls to SAFE_FREE before 'error'.
 +      * buffer.c (mouse_face_overlay_overlaps):
 +      * editfns.c (Fget_pos_property, check_translation):
 +      * eval.c (Ffuncall):
 +      * font.c (font_unparse_xlfd, font_find_for_lface):
 +      * ftfont.c (ftfont_drive_otf):
 +      * keyboard.c (echo_add_key, read_decoded_event_from_main_queue)
 +      (menu_bar_items, tool_bar_items):
 +      * sound.c (Fplay_sound_internal):
 +      * xdisp.c (load_overlay_strings, dump_glyph_row):
 +      Use an ordinary auto buffer rather than alloca, since the
 +      allocation size is fixed and small.
 +      * ftfont.c: Include <c-strcase.h>.
 +      (matching_prefix): New function.
 +      (get_adstyle_property): Use it, to avoid need for alloca.
 +      * keyboard.c (echo_add_key):
 +      * keymap.c (describe_map): Use ptrdiff_t, not int.
 +      * keyboard.c (echo_add_key): Prefer sizeof to strlen.
 +      * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS,
 +      when counting bytes.
 +      * lisp.h (xlispstrdupa): Remove, replacing with ...
 +      (SAFE_ALLOCA_STRING): ... new macro with different API.
 +      This fixes a portability problem, namely, alloca result
 +      passed to another function.  All uses changed.
 +      (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA,
 +      not MAX_ALLOCA - 1.
 +      * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE)
 +      (REGEX_ALLOCATE): New macros.
 +      (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK)
 +      (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal):
 +      Use them.
 +      * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it
 +      by hand.
 +      (decode_mode_spec_coding): Store directly into buf rather than
 +      into an alloca temporary and copying the temporary to the buf.
 +
 +2014-09-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * Makefile.in (EMACS_HEAPSIZE): Remove, no longer used.  (Bug#18416)
 +
 +2014-09-04  Jan D  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (x_term_init): Don't call x_session_initialize if running
 +      as a daemon (Bug#18375).
 +
 +      * xsmfns.c: Initialize ice_fd.
 +
 +2014-09-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Less chatter in 'make' output.
 +      * Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0, am__v_GEN_1, AM_V_at)
 +      (am__v_at_, am__v_at_0, am__v_at_1):  New macros, taken from Automake.
 +      ($(etc)/DOC, buildobj.h, gl-stamp): Use them.
 +
 +2014-09-03  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.c (scroll-bar-height): Fix typo in doc-string.
 +      * frame.c (Vdefault_frame_horizontal_scroll_bars):
 +      Remove variable.
 +      * nsfns.m (Fx_create_frame):
 +      * w32fns.c (Fx_create_frame):
 +      * xfns.c (Fx_create_frame): Default horizontal scroll bars to
 +      nil.
 +
 +2014-09-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
 +      the reported row in the case of a window with a header line, by
 +      improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org
 +      eliz@gnu.org-20111008105850-ht4tvsayohvr1kjc.  (Bug#18384)
 +
 +2014-09-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * eval.c (internal_lisp_condition_case): Don't overrun the stack
 +      when configured --with-wide-int on typical 32-bit platforms.
 +
 +2014-09-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (display_and_set_cursor): Call erase_phys_cursor also
 +      when HPOS is negative, for the benefit of R2L glyph rows whose
 +      newline overflows into the fringe.
 +
 +2014-09-03  Ken Brown  <kbrown@cornell.edu>
 +
 +      * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define.  (Bug#18366)
 +
 +2014-09-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor cleanup of recent strlen-avoiding patch.
 +      * fileio.c (CHECK_LENGTH): Remove.
 +      Rewrite callers so that they don't need it.
 +      (Fexpand_file_name) [DOS_NT]: Fix a case where directory length
 +      variable wasn't set.
 +
 +2014-09-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (CHECK_LENGTH): New macro.
 +      (Fexpand_file_name): Use it and get rid of a few more calls
 +      to strlen and strcat.
 +      * callproc.c (egetenv_internal): Add arg and rename from egetenv ...
 +      * lisp.h (egetenv): ... because of a new inline function used to
 +      avoid calls to strlen for a compile-time constants.
 +
 +      * buffer.h (decode_buffer): New function.
 +      * buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer)
 +      (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick)
 +      (Fbuffer_chars_modified_tick, Fdelete_all_overlays):
 +      * data.c (Flocal_variables_p):
 +      * fileio.c (Fverify_visited_file_modtime):
 +      * marker.c (live_buffer): Use it.
 +
 +2014-09-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra calls to strlen in filesystem I/O routines.
 +      * fileio.c (Fexpand_file_name): Avoid calls to strlen if
 +      the length of 'newdir' is known or may be precalculated.
 +      (file_accessible_directory_p): Prefer to pass Lisp_Object,
 +      not 'char *', and so use precalculated length.
 +      (Ffile_accessible_directory_p):
 +      * callproc.c (encode_current_directory, init_callproc):
 +      * charset.c (init_charset):
 +      * lread.c (load_path_check, load_path_default): Adjust users.
 +      * lisp.h (file_accessible_directory_p): Tweak prototype.
 +
 +2014-09-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (w32_compare_strings): Support "C" and "POSIX"
 +      locales.
 +
 +2014-09-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      --enable-silent-rules now suppresses more chatter.
 +      * Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_CC, am__v_CC_)
 +      (am__v_CC_0, am__v_CC_1, AM_V_CCLD, am__v_CCLD_, am__v_CCLD_0)
 +      (am__v_CCLD_1): New macros, taken from Automake.
 +      (.c.o, .m.o, temacs$(EXEEXT)): Use them.
 +
 +      Clean up extern decls a bit.
 +      * bytecode.c: Include blockinput.h and keyboard.h rather
 +      than rolling their APIs by hand.
 +      * emacs.c: Include regex.h and rely on its and lisp.h's API
 +      rather than rolling them by hand.
 +      * lastfile.c: Include lisp.h, to check this file's API.
 +      * lisp.h (lisp_eval_depth, my_edata, my_endbss, my_endbss_static):
 +      New decls.
 +      * regex.h (re_max_failures): New decl.
 +      * unexcw.c, unexmacosx.c, unexw32.c:
 +      Rely on lisp.h's API rather than rolling it by hand.
 +      * vm-limit.c (__after_morecore_hook, __morecore, real_morecore):
 +      Declare at top level, to pacify GCC -Wnested-externs.
 +
 +2014-08-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (get_glyph_string_clip_rects): Don't let the width of a
 +      clipping rectangle become negative (i.e. large positive, since
 +      it's an unsigned data type).  This can happen in R2L hscrolled
 +      glyph rows, and caused us to draw the cursor glyph on the fringe.
 +      For the details, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00543.html.
 +
 +2014-08-31  Ken Brown  <kbrown@cornell.edu>
 +
 +      * gmalloc.c: Don't include <stdlib.h>.  Declare system malloc and
 +      friends before defining hybrid_malloc and friends if HYBRID_MALLOC
 +      is defined.  (Bug#18368)
 +
 +2014-08-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Vector-sorting fixes (Bug#18361).
 +      It's not safe to call qsort or qsort_r, since they have undefined
 +      behavior if the user-specified predicate is not a total order.
 +      Also, watch out for garbage-collection while sorting vectors.
 +      * fns.c: Include <vla.h>.
 +      (sort_vector_predicate) [!HAVE_QSORT_R]: Remove.
 +      (sort_vector_compare): Remove, replacing with ....
 +      (inorder, merge_vectors, sort_vector_inplace, sort_vector_copy):
 +      ... these new functions.
 +      (sort_vector): Rewrite to use the new functions.
 +      GCPRO locals, since the predicate can invoke the GC.
 +      Since it's in-place return void; caller changed.
 +      (merge): Use 'inorder', for clarity.
 +
 +      * sysdep.c (str_collate): Clear errno just before wcscoll(_l).
 +      One can't hoist this out of the 'if', because intervening calls to
 +      newlocale, twolower, etc. can change errno.
 +
 +2014-08-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Improve the
 +      wording of the error messages.
 +      (str_collate) [WINDOWSNT]: Signal an error if w32_compare_strings
 +      sets errno.
 +
 +      * w32proc.c (get_lcid_callback): Accept locale specifications
 +      without the country part, as in "enu" vs "enu_USA".
 +      (w32_compare_strings): Signal an error if a locale was specified,
 +      but couldn't be translated into a valid LCID.
 +
 +2014-08-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Move up setting errno.
 +
 +2014-08-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Do not look at
 +      errno after towlower_l.  errno's value is not specified after
 +      towlower_l.  Instead, assume that towlower_l returns its argument
 +      on failure, which is portable in practice.
 +
 +2014-08-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): Doc fix.
 +
 +      * w32proc.c (w32_compare_strings): Accept additional argument
 +      IGNORE_CASE.  Set up the flags for CompareStringW to ignore case
 +      if requested.  If w32-collate-ignore-punctuation is non-nil, add
 +      NORM_IGNORESYMBOLS to the flags.
 +      (LINGUISTIC_IGNORECASE): Define if not already defined.
 +      (syms_of_ntproc) <Vw32_collate_ignore_punctuation>: New variable.
 +
 +      * sysdep.c (str_collate) [WINDOWSNT]: Adapt to the interface
 +      change.
 +
 +2014-08-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (LC_CTYPE, LC_CTYPE_MASK, towlower_l):
 +      Define substitutes for platforms that lack them.
 +      (str_collate): Add arguments locale and ignore_case.
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp):
 +      Add optional arguments LOCALE and IGNORE-CASE.
 +
 +      * lisp.h (str_collate): Adapt argument list.
 +
 +2014-08-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Add vectors support to Fsort.
 +      * fns.c (sort_vector, sort_vector_compare): New functions.
 +      (sort_list): Likewise, refactored out of ...
 +      (Fsort): ... adjusted user.  Mention vectors in docstring.
 +      (sort_vector_predicate) [!HAVE_QSORT_R]: New variable.
 +      * alloc.c (make_save_int_obj): New function.
 +      * lisp.h (enum Lisp_Save_Type): New member SAVE_TYPE_INT_OBJ.
 +      (make_save_int_obj): Add prototype.
 +
 +      Fix last change to support Darwin/OSX and FreeBSD (Bug#18354).
 +      * sysdep.c (sort_vector_compare) [DARWIN_OS || __FreeBSD__]:
 +      Conditionally define to match system's qsort_r signature.
 +      (sort_vector) [DARWIN_OS || __FreeBSD__]: Likewise in call to qsort_r.
 +
 +2014-08-28  Ken Brown  <kbrown@cornell.edu>
 +
 +      Add support for HYBRID_MALLOC, allowing the use of gmalloc before
 +      dumping and the system malloc after dumping.  (Bug#18222)
 +
 +      * conf_post.h (malloc, realloc, calloc, free) [HYBRID_MALLOC]:
 +      Define as macros, expanding to hybrid_malloc, etc.
 +      (HYBRID_GET_CURRENT_DIR_NAME): New macro.
 +      (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as
 +      macro.
 +      * gmalloc.c: Set up the infrastructure for HYBRID_MALLOC, with a
 +      full implementation on Cygwin.  Remove Cygwin-specific code that
 +      is no longer needed.
 +      (malloc, realloc, calloc, free, aligned_alloc) [HYBRID_MALLOC]:
 +      Redefine as macros expanding to gmalloc, grealloc, etc.
 +      (DUMPED, ALLOCATED_BEFORE_DUMPING) [CYGWIN]: New macros.
 +      (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Undefine.
 +      (USE_PTHREAD, posix_memalign) [HYBRID_MALLOC]: Don't define.
 +      (hybrid_malloc, hybrid_calloc, hybrid_free, hybrid_realloc)
 +      [HYBRID_MALLOC]:
 +      (hybrid_get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
 +      (hybrid_aligned_alloc) [HYBRID_MALLOC && (HAVE_ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: New functions.
 +      * alloc.c (aligned_alloc) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: Define as macro expanding to
 +      hybrid_aligned_alloc; declare.
 +      (USE_ALIGNED_ALLOC) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: Define.
 +      (refill_memory_reserve) [HYBRID_MALLOC]: Do nothing.
 +      * sysdep.c (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
 +      Define as macro, expanding to gget_current_dir_name, and define
 +      the latter.
 +      * emacs.c (main) [HYBRID_MALLOC]: Don't call memory_warnings() or
 +      malloc_enable_thread().  Don't initialize malloc.
 +      * lisp.h (NONPOINTER_BITS) [CYGWIN]: Define (because GNU_MALLOC is
 +      no longer defined on Cygwin).
 +      (refill_memory_reserve) [HYBRID_MALLOC]: Don't declare.
 +      * sheap.c (bss_sbrk_buffer_end): New variable.
 +      * unexcw.c (__malloc_initialized): Remove variable.
 +      * ralloc.c: Throughout, treat HYBRID_MALLOC the same as
 +      SYSTEM_MALLOC.
 +      * xdisp.c (decode_mode_spec) [HYBRID_MALLOC]: Don't check
 +      Vmemory_full.
 +
 +2014-08-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click):
 +      In `event->y' return entire range (the size of the scroll bar minus
 +      that of the thumb).
 +      * xterm.c (xm_scroll_callback, xaw_jump_callback): In `whole'
 +      return entire range (the scaled size of the scroll bar minus
 +      that of the slider).  In `portion' return the scaled position of
 +      the slider.
 +      (xaw_jump_callback): Restore part of code for vertical scroll
 +      bar broken in change from 2014-07-27.
 +      (xaw_scroll_callback): Provide incremental scrolling with
 +      horizontal scroll bars.
 +
 +2014-08-28  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define.
 +
 +      * indent.c (Fvertical_motion): Fix vertical motion up through a
 +      display property after a newline.  (Bug#18276)
 +
 +      * xdisp.c (display_line): Don't assume that the call to
 +      reseat_at_next_visible_line_start ends up at a character
 +      immediately following the newline on the previous line.
 +      Avoids setting the ends_at_zv_p flag on screen lines that are not at or
 +      beyond ZV, which causes infloop in redisplay.  For the details, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html.
  
        * dispnew.c (buffer_posn_from_coords): Fix mirroring of X
        coordinate for hscrolled R2L screen lines.  (Bug#18277)
  
 -2014-08-11  Ken Brown  <kbrown@cornell.edu>
 +2014-08-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (LC_COLLATE, LC_COLLATE_MASK): Give individual defaults
 +      (Bug#18051).
 +
 +2014-08-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * syntax.c (scan_lists): Don't examine positions before BEGV.
 +      (Bug#18339)
 +
 +2014-08-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve robustness of new string-collation code (Bug#18051).
 +      * sysdep.c (LC_COLLATE, LC_COLLATE_MASK, freelocale, locale_t)
 +      (newlocale, wcscoll_l): Define substitutes for platforms that
 +      lack them, so as to simplify the mainline code.
 +      (str_collate): Simplify the code by assuming the above definitions.
 +      Use wcscoll_l, not uselocale, as uselocale is too fragile.
 +      For example, the old version left the Emacs in the wrong locale if
 +      wcscoll reported an error.  Use 'int', not ptrdiff_t, for the int
 +      result.  Report an error if newlocale fails.
 +
 +2014-08-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * lisp.h (str_collate):
 +      * sysdep.c (str_collate): Return int.
 +      (str_collate) [__STDC_ISO_10646__]: Propagate error of wcscoll.
 +
 +2014-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Fix some glitches in previous change.
 +      * sysdep.c (stack_direction): Replace stack_grows_down
 +      to simplify calculation of stack boundaries.
 +      (handle_sigsegv): Check whether we really crash somewhere near
 +      to stack boundary, and handle fatal signal as usual if not.
 +      (init_sigsegv): Adjust accordingly.
 +      * keyboard.c (Vtop_level_message): Rename to
 +      Vinternal__top_level_message, as suggested by Stefan Monnier in
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00493.html
 +      All related users changed.
 +
 +2014-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Handle C stack overflow caused by too nested Lisp evaluation.
 +      * lisp.h (toplevel) [HAVE_STACK_OVERFLOW_HANDLING]: Declare
 +      siglongjmp point to transfer control from SIGSEGV handler.
 +      * keyboard.c (return_to_command_loop, recover_top_level_message)
 +      [HAVE_STACK_OVERFLOW_HANDLING]: New variables.
 +      (regular_top_level_message): New variable.
 +      (command_loop) [HAVE_STACK_OVERFLOW_HANDLING]: Handle non-local
 +      exit from SIGSEGV handler and adjust message displayed by Vtop_level
 +      if appropriate.
 +      (syms_of_keyboard): DEFVAR Vtop_level_message and initialize
 +      new variables described above.
 +      * sysdep.c [HAVE_SYS_RESOURCE_H]: Include sys/resource.h as such.
 +      (stack_grows_down, sigsegv_stack, handle_sigsegv)
 +      [HAVE_STACK_OVERFLOW_HANDLING]: New variables and function.
 +      (init_sigsegv): New function.
 +      (init_signals): Use it.
 +
 +2014-08-25  Ken Brown  <kbrown@cornell.edu>
 +
 +      * emacs.c (main): Remove use of obsolete macro
 +      G_SLICE_ALWAYS_MALLOC.
 +
 +2014-08-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement locale-sensitive string collation for MS-Windows.
 +      * w32proc.c (get_lcid_callback, get_lcid, w32_compare_strings):
 +      New functions.  (Bug#18051)
 +
 +      * w32.h (w32_compare_strings): Add prototype.
 +
 +      * w32.c <g_b_init_compare_string_w>: New global flag.
 +      (globals_of_w32): Initialize it.
 +
 +      * sysdep.c (str_collate) [WINDOWSNT]: Implementation for MS-Windows.
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp)
 +      [WINDOWSNT]: Call str_collate on MS-Windows.
 +
 +2014-08-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      One more minor cleanup of font subsystem.
 +      * font.h (struct font_driver): Convert text_extents to
 +      return void because returned value is never actually used.
 +      * macfont.m (macfont_text_extents):
 +      * w32font.c (w32font_text_extents):
 +      * xftfont.c (xftfont_text_extents): Adjust to return void
 +      and assume that 'metrics' argument is always non-NULL.
 +      * ftfont.c (ftfont_text_extents):
 +      * xfont.c (xfont_text_extents): Likewise.  Avoid redundant memset.
 +
 +2014-08-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor cleanups of str_collate fix (Bug#18051).
 +      * fns.c (str_collate): Move decl from here ...
 +      * lisp.h (str_collate): ... to here.
 +      * sysdep.c (str_collate): Prune away some of the forest of ifdefs.
 +      Remove unnecessary casts.  Use SAFE_NALLOCA to avoid
 +      potential problems with integer overflow.  Don't assume
 +      setlocale succeeds.  Remove unnecessary test before restoring
 +      locale via setlocale, and free the copied setlocale string
 +      when done with it.
 +
 +2014-08-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): New DEFUNs.
 +
 +      * sysdep.c (str_collate): New function.  (Bug#18051)
 +
 +2014-08-23  Karol Ostrovsky  <karol.ostrovsky@gmail.com>  (tiny change)
 +
 +      * Makefile.in (emacs$(EXEEXT)): Retry deletion of bootstrap-emacs
 +      if the initial "rm -f" fails.  This is for MinGW builds, where
 +      MS-Windows will not allow deleting the executable file of a
 +      running program.
 +
 +2014-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32_scroll_bar_handle_click)
 +      (w32_horizontal_scroll_bar_handle_click)
 +      (x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion): For SB_THUMBPOSITION and
 +      SB_THUMBTRACK, use the 32-bit position information returned by
 +      GetScrollInfo, not the 16-bit information returned in the Windows
 +      message sent to us.
 +
 +2014-08-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click): Fix the
 +      second coordinate ('y') reported for dragging the horizontal
 +      scroll bar thumb.
 +
 +2014-08-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * xdisp.c (erase_phys_cursor): Fix confusion between window-relative
 +      and text area-relative x-coordinates.
 +
 +2014-08-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Avoid overwriting the reversed_p flags in the glyph matrices when
 +      init_iterator or start_display are called.
 +      * xdisp.c (init_iterator): Don't initialize the reversed_p flag of
 +      the glyph row here.
 +      (tool_bar_height, redisplay_tool_bar, try_window)
 +      (try_window_reusing_current_matrix, try_window_id)
 +      (get_overlay_arrow_glyph_row, display_menu_bar): Initialize the
 +      reversed_p flag of the iterator's glyph row where the glyph row
 +      is going to be redrawn.
 +
 +2014-08-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xdisp.c (set_horizontal_scroll_bar): Don't use uninitialized local.
 +
 +2014-08-16  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click): In y part
 +      of emacs_event return length from si.nPage to si.nMax.
 +      * xdisp.c (set_horizontal_scroll_bar): For right-to-left text
 +      interchange start and end of thumb.
 +
 +2014-08-15  Ken Brown  <kbrown@cornell.edu>
  
        * gmalloc.c (_malloc_mutex, _aligned_blocks_mutex) [CYGWIN]: Use
        ERRORCHECK mutexes.  (Bug#18222)
  
 +2014-08-12  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (set_menu_bar_lines_1): Remove.
 +      (set_menu_bar_lines): Call change_frame_size instead of
 +      set_menu_bar_lines_1.
 +
 +2014-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (Fx_create_frame): Call adjust_frame_size,
 +      set f->official.
 +
  2014-08-11  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c: Revert 2013-01-31 change, which chose coding system for
        Move last piece back here from Fwrite_region.
        (Fwrite_region, syms_of_fileio): Update for above changes.
  
 -2014-08-09  Martin Rudalics  <rudalics@gmx.at>
 -
 -      * window.c (Fwindow_new_total, Fwindow_new_normal)
 -      (Fwindow_new_pixel, Fset_window_new_pixel)
 -      (Fset_window_new_total, Fset_window_new_normal): Second attempt
 -      to fix the doc-strings of these functions.  See:
 -      http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
 -
 -2014-08-08  Martin Rudalics  <rudalics@gmx.at>
 +2014-08-11  Martin Rudalics  <rudalics@gmx.at>
  
        * window.c (Fwindow_valid_p): Fix doc-string (Bug#18194).
        (Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal)
        (Fwindow_new_pixel, Fset_window_new_pixel)
        (Fset_window_new_total, Fset_window_new_normal)
        (Fwindow_resize_apply): Fix doc-strings (see Bug#18112).
 +      See also:
 +      http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
  
 -2014-08-07  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-11  Eli Zaretskii  <eliz@gnu.org>
  
        * fontset.c (Finternal_char_font): Recompute basic faces if the
        frame's face cache was cleared.  (Bug#18162)
  
 -2014-08-05  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-08-11  Dmitry Antipov  <dmantipov@yandex.ru>
  
        Fix bug with uninitialized undo list of an indirect buffer (Bug#18180).
        * buffer.c (Fmake_indirect_buffer): Initialize undo list with the
        base buffer's undo list.
  
 -2014-08-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-08-10  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Fix a couple of recent inadvertent breaks of the MSDOS port.
 +      * msdos.c: include required menu.h
 +      * term.c: set correct menu_show_hook on MSDOS.
  
 -      Fix bug with an attempt to select uninitialized frame (Bug#18161).
 -      * xfns.c (Fx_create_frame): Move call to change_frame_size to
 -      a section where Lisp evaluation is disabled.  This way a pointer
 -      to uninitialized frame is not accessible from Lisp, which becomes
 -      critical if following call to x_figure_window_size throws an error.
 +2014-08-10  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Fix handling of menu bar line on TTY frames (Bug#18136)
 +      (Bug#18196).
 +      * dispnew.c (handle_window_change_signal):
 +      * keyboard.c (Fsuspend_emacs): Call change_frame_size with
 +      frame's menu bar lines subtracted from height.
 +      * frame.c (frame_inhibit_resize): Inhibit resizing of TTY
 +      frames.
 +      (adjust_frame_size): Count in menu bar when setting FrameRows.
 +      (make_terminal_frame): When setting up the frame's lines and
 +      text height don't count in the menu bar.
 +      (Fmake_terminal_frame): Call adjust_frame_size with menu bar
 +      lines subtracted from height.
 +      (do_switch_frame): Set tty's FrameRows to number of total lines
 +      of frame.
 +      (Fframe_pixel_height, Fframe_pixel_width): If no window system
 +      is used, return total number of lines and columns.
 +      * menu.c (emulate_dialog_with_menu): Use FRAME_TOTAL_LINES instead
 +      of FRAME_LINES.
 +      * term.c (OUTPUT, tty_set_terminal_modes)
 +      (tty_set_terminal_window, tty_set_scroll_region)
 +      (tty_clear_to_end, tty_write_glyphs, tty_write_glyphs_with_face)
 +      (tty_ins_del_lines, tty_menu_display, tty_menu_activate):
 +      Use FRAME_TOTAL_LINES instead of FRAME_LINES.
 +      (Fresume_tty): Use FRAME_TOTAL_LINES instead of FRAME_LINES.
 +      Call change_frame_size with frame's menu bar lines subtracted
 +      from height.
 +      * w32console.c (w32con_clear_to_end, w32con_clear_frame)
 +      (w32con_ins_del_lines): Use FRAME_TOTAL_LINES instead of
 +      FRAME_LINES.
  
 -2014-08-02  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-08-09  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * alloc.c (Fmemory_info): Remove a stray brace.
 +
 +      * process.c: Fix a comment typo.
 +
 +      * msdos.c, dosfns.c (init_dosfns): Remove support for DJGPP < 2.02.
 +
 +2014-08-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * widgetprv.h (EmacsFramePart): Remove font.
 +
 +      * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs)
 +      (resources, setup_frame_cursor_bits): Remove unused variables and
 +      functions, esp. wrt. font (Bug#18227).
 +
 +2014-08-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (x_delete_terminal): Plug file descriptor leak (Bug#17691).
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Refer to MS-DOS using the same name everywhere.
 +
 +      * editfns.c: Fix a couple of ``MS-DOG''s missed in the previous
 +      commit.
 +      * xfaces.c: ditto.
 +
 +2014-08-05  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_redeem_scroll_bar):
 +      * xterm.c (XTredeem_scroll_bar): Revert part of last change by
 +      not redeeming scroll bars that have been turned off.
 +
 +2014-08-05 Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c (safe_run_hooks): Follow the convenient style to bind
 +      inhibit-quit to t and pass 2 args to safe_run_hook_funcall.  See
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00077.html>.
 +      (safe_run_hook_funcall): Adjust accordingly.
 +
 +2014-08-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
 +      Condition correctly according to toolkit used.
 +      * frame.c (make_initial_frame, make_terminal_frame)
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height)
 +      (Vdefault_frame_horizontal_scroll_bars): Correctly condition
 +      assignments according to presence of toolkit scrollbars.
 +      * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR):
 +      Condition correctly according to toolkit used.
 +      * window.c (set_window_scroll_bars): Set horizontal scroll bar
 +      only if toolkit supports it.
 +      * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if
 +      present.
 +      * xterm.c (x_scroll_bar_create): Initialize horizontal slot for
 +      non-toolkit builds.
 +      (XTredeem_scroll_bar): Always redeem scroll bar if present.
 +
 +2014-08-04 Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c (safe_run_hook_funcall): Avoid consing around
 +      Vinhibit_quit and prefer internal_condition_case_n to pass args.
 +      (safe_run_hooks_error, safe_run_hooks_1): Adjust accordingly.
 +      (safe_run_hooks): Remove comment which is not relevant any more.
 +
 +2014-08-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't let big frames overrun the stack.
 +      * dispnew.c (mirrored_line_dance, mirror_line_dance, scrolling):
 +      Use SAFE_NALLOCA, not alloca.
  
        Fix bug with clang + directory_files_internal + GC (Bug#16986).
        * dired.c (directory_files_internal): Use a volatile variable
        so that x_delete_terminal has a file descriptor to pass to
        delete_keyboard_wait_descriptor.
  
 +      Don't mishandle year-9999 dates (Bug#18176).
 +      * editfns.c (decode_time_components): Store an invalid timespec
 +      on overflow, instead of returning false, so that the caller can
 +      distinguish overflow from other errors.
 +      (lisp_time_argument, lisp_seconds_argument): If the time is out
 +      of range, signal a time overflow instead of an invalid time spec.
 +      * keyboard.c (decode_timer): Treat time overflow like other
 +      timespec errors.
 +
 +      Avoid undefined behavior with signed left shift.
 +      Caught by 'gcc -fsanitize=undefined'.
 +      * dispextern.h, scroll.c (scrolling_max_lines_saved, scrolling_1):
 +      * dispnew.c (line_hash_code, scrolling):
 +      * scroll.c (calculate_scrolling, calculate_direct_scrolling):
 +      Use 'unsigned', not 'int', for line hashes.
 +      (scrolling_max_lines_saved): Avoid mystery constants for hash sizes.
 +
 +2014-08-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Make compare-strings more compatible with old behavior (Bug#17903).
 +      * fns.c (Fcompare_strings): Silently bring too-large ends into range.
 +
 +2014-08-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (create_dialog): Force min spacing 10 between buttons.
 +      Don't add label between left and right buttons (Bug#18129).
 +
 +2014-08-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Make functions static that no longer need to be extern.
 +      * frame.c, frame.h (set_menu_bar_lines):
 +      * keyboard.c (Qleftmost, Qrightmost):
 +      * xfns.c, frame.h, menu.h (x_set_menu_bar_lines, x_set_tool_bar_lines)
 +      (x_set_internal_border_width):
 +      Now static.
 +
  2014-08-01  Eli Zaretskii  <eliz@gnu.org>
  
        Fix display of R2L lines when the last character fits only partially.
        line.  When the last glyph fits only partially, give the row a
        negative x offset.
  
 -2014-07-29  Eli Zaretskii  <eliz@gnu.org>
 -
        Fix hscroll of R2L lines that begin with a TAB or another wide glyph.
        * xdisp.c (append_stretch_glyph): In a R2L glyph row, decrease the
        pixel width of the first glyph that is hscrolled from display.
        (display_line): In R2L glyph rows, don't give a negative offset to
        row->x when the first glyph begins before first_visible_x.
  
 -2014-07-29  Andreas Schwab  <schwab@suse.de>
 +      * xdisp.c (display_line): If called with iterator set up to write
 +      to a marginal area, delay the call to handle_line_prefix until we
 +      switch back to the text area.  (Bug#18035)
 +
 +      * .gdbinit (xwindow): The members total_cols, total_lines,
 +      left_col, and top_line are C integers (and has been so for the
 +      last 1.5 years).
 +
 +2014-08-01  Andreas Schwab  <schwab@suse.de>
  
        * macros.c (Fstart_kbd_macro): Initialize kbd_macro_ptr and
        kbd_macro_end together with kbd_macro_buffer.  (Bug#18140)
  
 -2014-07-28  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -      * xdisp.c (display_line): If called with iterator set up to write
 -      to a marginal area, delay the call to handle_line_prefix until we
 -      switch back to the text area.  (Bug#18035)
 +      * atimer.c (toplevel) [HAVE_TIMERFD]: Include errno.h.
 +      (timerfd_callback): Ignore weird events with no data.  Add tight
 +      assertions and comments.
 +      (init_atimer) [HAVE_TIMERFD]: Add environment variable to optionally
 +      disable timerfd-based timer.  Use TFD_NONBLOCK for timer descriptor.
 +
 +2014-08-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c (x_set_frame_parameters): Fix typo in previous patch.
 +      I had confused && with ||.
 +
 +2014-07-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify timerfd configuration and fix some minor glitches.
 +      * atimer.c (TIMERFD_CREATE_FLAGS): Remove; we now assume TFD_CLOEXEC.
 +      (alarm_timer, alarm_timer_ok, set_alarm, init_atimer):
 +      Fall back on timer_create if timerfd_create fails at runtime.
 +      (resolution) [HAVE_CLOCK_GETRES]: Remove; we now rely on the
 +      kernel primitives to do resolution.  All uses removed.
 +      (timerfd) [!HAVE_TIMERFD]: Define to be -1, for convenience.
 +      (turn_on_atimers): Clear timer_create-based timers too,
 +      for consistency.
 +
 +      * frame.c (x_set_frame_parameters): Don't use uninitialized locals.
 +      Without this change, the code can access the local variable 'width'
 +      even when it has not been initialized, and likewise for 'height';
 +      in either case this leads to undefined behavior.
 +
 +2014-07-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xrdb.c (x_load_resources) [USE_MOTIF]: Although not strictly
 +      necessary, put horizontal scroll bar resources as well.  See
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00430.html>.
 +      * xterm.c (x_sync_with_move): Really wait 0.5s, not 0.0005s.
 +
 +2014-07-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xrdb.c (x_load_resources) [!USE_MOTIF]: Put horizontal scroll bar
 +      background value to match the resource of its vertical counterpart.
 +
 +2014-07-29  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Use FRAME_WINDOW_P instead of
 +      FRAME_X_WINDOW when calling x_set_window_size (Bug#18138).
 +
 +2014-07-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (x_set_frame_parameters): Revert part of 2014-07-24
 +      change that added the top margin height to the requested height
 +      and revert (undocumented) part of 2014-07-28 change that changed
 +      the logic of whether a size change occurred.
 +
 +2014-07-28  Eli Zaretskii  <eliz@gnu.org>
  
        * .gdbinit (xwindow): The members total_cols, total_lines,
        left_col, and top_line are C integers (and has been so for the
        last 1.5 years).
  
 -2014-07-20  Jan Djärv  <jan.h.d@swipnet.se>
 +      * .gdbinit (xsubchartable): The members 'depth' and 'min_char' are
 +      now C integers.
 +
 +2014-07-28  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      On GNU/Linux, use timerfd for asynchronous timers.
 +      * atimer.c (toplevel) [HAVE_TIMERFD]: Include sys/timerfd.h.
 +      (toplevel): Rename alarm_timer_ok to special_timer_available.
 +      [HAVE_TIMERFD]: Declare timerfd.
 +      [HAVE_CLOCK_GETRES]: Declare resolution.
 +      (start_atimer) [HAVE_CLOCK_GETRES]: Round up timestamp to
 +      system timer resolution.
 +      (set_alarm) [HAVE_TIMERFD]: Use timerfd_settime.
 +      (timerfd_callback) [HAVE_TIMERFD]: New function.
 +      (atimer_result, debug_timer_callback, Fdebug_timer_check)
 +      [ENABLE_CHECKING]: New function for the sake of automated tests.
 +      (init_atimer) [HAVE_TIMERFD]: Setup timerfd.
 +      [HAVE_CLOCK_GETRES]: Likewise for system timer resolution.
 +      [ENABLE_CHECKING]: Defsubr test function.
 +      * atimer.h (timerfd_callback) [HAVE_TIMERFD]: Add prototype.
 +      * lisp.h (add_timer_wait_descriptor) [HAVE_TIMERFD]: Likewise.
 +      * process.c (add_timer_wait_descriptor) [HAVE_TIMERFD]: New function.
 +
 +      Fix --without-x build and pacify --enable-gcc-warnings.
 +      Problems reported in Bug#18122 and Bug#18124.
 +      * frame.c (get_frame_param): Define even if !HAVE_WINDOW_SYSTEM.
 +      (frame_windows_min_size): Now static.
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS) [!HAVE_WINDOW_SYSTEM]:
 +      Define as no-op.
 +      (adjust_frame_size): Always declare prototype.
 +
 +      Fix Gnus-related issues reported by David Kastrup <dak@gnu.org> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00370.html>.
 +      * atimer.c (timerfd_callback): Always read expiration data.
 +      Add comment.
 +      (turn_on_atimers) [HAVE_TIMERFD]: Disarm timerfd timer.
 +      * process.c (add_timer_wait_descriptor): Add timer descriptor
 +      to input_wait_mask and non_process_wait_mask as well.
 +
 +2014-07-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c (x_set_frame_parameters): Don't use uninitialized locals.
 +
 +2014-07-27  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange):
 +      Reinstate code removed by the prevoius commit to this file.
 +
 +2014-07-27  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.h (struct buffer): New fields scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      * buffer.c (bset_scroll_bar_height)
 +      (bset_horizontal_scroll_bar_type): New functions.
 +      (Fbuffer_swap_text): Handle old_pointm field.
 +      (init_buffer_once): Set defaults for scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      (syms_of_buffer): New variables scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      * dispextern.h (window_part): Rename ON_SCROLL_BAR to
 +      ON_VERTICAL_SCROLL_BAR.  Add ON_HORIZONTAL_SCROLL_BAR.
 +      (set_vertical_scroll_bar): Remove prototype.
 +      (x_change_tool_bar_height): Add prototype.
 +      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
 +      (window_to_frame_vpos, update_frame_1, scrolling, init_display):
 +      Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
 +      and FRAME_LINES.
 +      (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
 +      (update_window): Start mode_line_row->y after horizontal scroll
 +      bar.
 +      (change_frame_size_1): Call adjust_frame_size.
 +      (init_display): When changing the size of a tty frame do not
 +      pass height of menu bar.
 +      (Qframe_windows_min_size): New symbol.
 +      * frame.h (struct frame): List tool bar fields after menu bar
 +      fields.  Add official, total_lines, horizontal_scroll_bars,
 +      config_scroll_bar_height and config_scroll_bar_lines fields.
 +      (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
 +      (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
 +      (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
 +      (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
 +      (FRAME_WINDOWS_HEIGHT): New macros.
 +      (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
 +      (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
 +      (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
 +      horizontal scroll bar.
 +      (frame_inhibit_resize, adjust_frame_size)
 +      (frame_windows_min_size): Add declarations.
 +      (Qscroll_bar_height, Qhorizontal_scroll_bars)
 +      (x_set_scroll_bar_default_height, x_set_left_fringe)
 +      (x_set_right_fringe, x_set_vertical_scroll_bars)
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
 +      (x_set_scroll_bar_height): Add external declarations.
 +      * frame.c: (frame_inhibit_resize, frame_windows_min_size)
 +      (adjust_frame_size): New functions.
 +      (make_frame): Initial horizontal_scroll_bars field.
 +      Use SET_FRAME_LINES.  Don't allow horizontal scroll bar in
 +      minibuffer window.
 +      (make_initial_frame, make_terminal_frame): No horizontal scroll
 +      bar in initial and terminal frames.  Use adjust_frame_size.
 +      (Fframe_total_cols): Fix doc-string.
 +      (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
 +      (Fset_frame_height, Fset_frame_width, Fset_frame_size):
 +      Rewrite using adjust_frame_size.
 +      (Qscroll_bar_height, Qhorizontal_scroll_bars)
 +      (Qframe_windows_min_size): New symbols.
 +      (x_set_frame_parameters): Remove call of check_frame_size.
 +      (x_report_frame_params): Return scroll_bar_height value.
 +      (x_set_left_fringe, x_set_right_fringe): New functions.
 +      (adjust_frame_height, x_set_internal_border_width)
 +      (x_set_fringe_width): Remove.
 +      (x_set_internal_border_width, x_set_vertical_scroll_bars)
 +      (x_set_scroll_bar_width, x_set_right_divider_width)
 +      (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
 +      New functions.
 +      (x_figure_window_size): Rewrite to make frame display the
 +      expected number of lines.
 +      (Vdefault_frame_scroll_bars): Rewrite doc-string.
 +      (Vdefault_frame_horizontal_scroll_bars)
 +      (Vframe_initial_frame_tool_bar_height)
 +      (frame_inhibit_implied_resize): New variables.
 +      * fringe.c (compute_fringe_widths): Remove.
 +      * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
 +      (xg_create_horizontal_scroll_bar)
 +      (xg_update_horizontal_scrollbar_pos)
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb)
 +      (xg_get_default_scrollbar_height)
 +      (xg_clear_under_internal_border): Extern.
 +      * gtkutil.c (xg_frame_resized): Don't call
 +      do_pending_window_change.
 +      (xg_frame_set_char_size): Use adjust_frame_size.
 +      (style_changed_cb): Call update_theme_scrollbar_height and
 +      x_set_scroll_bar_default_height.
 +      (x_wm_set_size_hint): Don't call check_frame_size.
 +      (update_theme_scrollbar_height)
 +      (xg_get_default_scrollbar_height)
 +      (xg_create_horizontal_scroll_bar)
 +      (xg_update_horizontal_scrollbar_pos)
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
 +      (xg_create_scroll_bar): Set horizontal slot of bar.
 +      (xg_initialize): Call update_theme_scrollbar_height.
 +      (xg_clear_under_internal_border): No more static.
 +      * insdel.c (adjust_suspend_auto_hscroll): New function.
 +      (adjust_markers_for_delete, adjust_markers_for_insert)
 +      (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
 +      * keyboard.c (readable_events, discard_mouse_events)
 +      (make_lispy_event): Handle horizontal scroll bar click events.
 +      (Fsuspend_emacs): When changing the size of a tty frame do not
 +      pass height of menu bar.
 +      (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
 +      (Qright, Qleftmost, Qrightmost): New symbols.
 +      * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
 +      FRAME_LINES.
 +      * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
 +      * nsfns.m (x_set_internal_border_width): New function.
 +      * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
 +      Remove extended fringe code.
 +      (x_set_window_size, x_new_font): Don't call
 +      compute_fringe_widths.
 +      * term.c (Fresume_tty): When changing the size of a tty frame do
 +      not pass height of menu bar.
 +      (clear_tty_hooks, set_tty_hooks):
 +      Clear horizontal_scroll_bar_hook.
 +      (init_tty): Frame has no horizontal scroll bars.
 +      * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
 +      scroll_bar_before_handle, scroll_bar_horizontal_handle,
 +      scroll_bar_after_handle, scroll_bar_left_arrow,
 +      scroll_bar_right_arrow, scroll_bar_to_leftmost and
 +      scroll_bar_to_rightmost entries.
 +      (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
 +      (struct terminal): Add set_horizontal_scroll_bar_hook.
 +      * w32console.c (initialize_w32_display):
 +      Clear horizontal_scroll_bar_hook.
 +      * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
 +      FRAME_X_DISPLAY.
 +      (x_clear_under_internal_border, x_set_internal_border_width):
 +      New functions.
 +      (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize.
 +      Set windows_or_buffers_changed when adding the menu bar.
 +      (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
 +      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
 +      (w32_createhscrollbar): New functions.
 +      (w32_createscrollbar): Rename to w32_createvscrollbar.
 +      (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
 +      (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
 +      WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR.
 +      Add WM_EMACS_SHOWCURSOR.
 +      (w32_wnd_proc): Handle WM_HSCROLL case.  In WM_WINDOWPOSCHANGING
 +      case do not artificially impose WM size hints.
 +      Handle WM_EMACS_SHOWCURSOR case.  Replace WM_EMACS_CREATESCROLLBAR case
 +      by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
 +      cases.
 +      (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
 +      WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
 +      (unwind_create_frame_1): Remove.
 +      (Fx_create_frame): Make both scrollbars the system standard
 +      width and height.  Use official field of frame structure to
 +      inhibit running window-configuration-change-hook.
 +      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
 +      pixelwise.  Handle frame's official field.
 +      (w32_frame_parm_handlers): Remove x_set_fringe_width
 +      entries. Add x_set_scroll_bar_height,
 +      x_set_horizontal_scroll_bars, x_set_left_fringe and
 +      x_set_right_fringe.
 +      * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
 +      pass height of menu bar to change_frame_size.
 +      * w32menu.c (set_frame_menubar): Rewrite using
 +      frame_inhibit_resize.
 +      * w32term.h (struct w32_display_info):
 +      Add horizontal_scroll_bar_cursor and cursor_display_counter.
 +      (struct scroll_bar): Add horizontal.
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
 +      (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR):
 +      Define instead of WM_EMACS_CREATESCROLLBAR.
 +      (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
 +      WND_SCROLLBAR_INDEX.
 +      * w32term.c (horizontal_scroll_bar_min_handle)
 +      (horizontal_scroll_bar_left_border)
 +      (horizontal_scroll_bar_right_border): New integers.
 +      (x_set_frame_alpha): Replace x_highlight_frame by
 +      w32_focus_frame.
 +      (x_window_to_scroll_bar): New argument "type".  Update callers
 +      accordingly.
 +      (w32_set_horizontal_scroll_bar_thumb)
 +      (x_horizontal_scroll_bar_report_motion)
 +      (w32_set_horizontal_scroll_bar)
 +      (w32_horizontal_scroll_bar_handle_click)
 +      (x_horizontal_scroll_bar_report_motion): New functions.
 +      (w32_mouse_position): Discriminate horizontal and vertical
 +      scrollbar cases.
 +      (my_create_scrollbar): Replace with two new functions
 +      my_create_vscrollbar and my_create_hscrollbar.
 +      (x_scroll_bar_create): New argument "horizontal".
 +      Update callers accordingly.
 +      (x_scroll_bar_remove, w32_condemn_scroll_bars)
 +      (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
 +      scroll bar case.
 +      (w32_read_socket): Handle WM_HSCROLL cae.
 +      (x_new_font): Don't recompute fringe widths.
 +      Use frame_inhibit_resize.  Calculate new menu bar height iff we
 +      build without toolkit.  Always clear under internal border.
 +      (x_set_window_size): Don't check frame size or recompute
 +      fringes.  Reset fullscreen status before applying sizes.
 +      Always resize as requested by pixelwise argument.  Don't call
 +      do_pending_window_change.
 +      (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
 +      (w32_initialize_display_info): Initialize dpyinfo's
 +      horizontal_scroll_bar_cursor entry.
 +      (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
 +      (w32_initialize): Init horizontal_scroll_bar_min_handle and
 +      horizontal_scroll_bar_left_border.
 +      (w32fullscreen_hook): Intermittently resize window to normal
 +      when switching from fullscreen to maximized state.
 +      (run_window_configuration_change_hook): Don't run it if frame is
 +      not official yet.
 +      (unwind_change_frame): Remove.
 +      (Fset_window_configuration): Rewrite using frame's official field.
 +      * widget.c (set_frame_size): Don't call compute_fringe_widths.
 +      (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
 +      * window.h (struct window): New fields old_pointm,
 +      horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
 +      scroll_bar_height and suspend_auto_hscroll.
 +      (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
 +      New functions.
 +      (sanitize_window_sizes): Extern.
 +      (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
 +      (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
 +      (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
 +      (WINDOW_CONFIG_SCROLL_BAR_LINES)
 +      (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT):
 +      New macros.
 +      (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
 +      (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
 +      (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
 +      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
 +      (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
 +      * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
 +      (Fwindow_old_point, sanitize_window_sizes): New functions.
 +      (Qwindow_sanitize_window_sizes): New symbol.
 +      (window_body_height): Count in horizontal scroll bar.
 +      (set_window_hscroll, Fscroll_left, Fscroll_right):
 +      Set suspend_auto_hscroll slot.
 +      (Fwindow_inside_edges): Count fringes pixelwise.
 +      (coordinates_in_window, Fcoordinates_in_window_p):
 +      Consider horizontal scroll bar.
 +      (check_frame_size, adjust_window_margins): Remove functions and
 +      corresponding calls.
 +      (set_window_buffer): Initialize old_pointm and horizontal scroll bars.
 +      (temp_output_buffer_show): Reset hscroll related fields.
 +      Initialize old_pointm.
 +      (make_parent_window): Initialize old_pointm.
 +      (make_window): Initialize old_pointm, horizontal scroll bar type,
 +      and scroll bar height.
 +      (resize_frame_windows): Don't count top margin in new sizes.
 +      Don't use safe sizes when shrinking a frame; let the window
 +      manager do the clipping.
 +      (Fsplit_window_internal): Inherit horizontal scroll bar type and
 +      height.
 +      (Fdelete_window_internal): Unchain old_pointm marker.
 +      (window_scroll_pixel_based, Fscroll_other_window):
 +      Adjust old_pointm.
 +      (Fwindow_text_width, Fwindow_text_height): New argument
 +      "pixelwise".
 +      (struct saved_window): New fields, old_pointm, hscroll_whole,
 +      suspend_auto_hscroll, scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      (Fset_window_configuration, save_window_save): Set new fields of
 +      saved_window.
 +      (apply_window_adjustment): Don't call adjust_window_margins.
 +      (set_window_margins): Don't change margins if new sizes don't
 +      fit into window.
 +      (set_window_scroll_bars): New argument "horizontal_type".
 +      Handle horizontal scroll bars.  Don't change scroll bars if they
 +      don't fit into window.
 +      (Fset_window_scroll_bars): New argument "horizontal_type".
 +      (Fwindow_scroll_bars): Return values for horizontal scroll bars.
 +      (compare_window_configurations): Compare horizontal scroll bar
 +      settings.
 +      * xdisp.c (window_text_bottom_y, window_box_height): Count in
 +      horizontal scroll bar height.
 +      (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
 +      instead of FRAME_LINES.
 +      (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
 +      ON_VERTICAL_SCROLL_BAR.
 +      (with_echo_area_buffer): Initialize old_pointm.
 +      (with_echo_area_buffer_unwind_data): Store old_pointm values in
 +      vector.
 +      (unwind_with_echo_area_buffer): Handle old_pointm.
 +      (update_tool_bar): Set do_update when the tool bar window has at
 +      least one line (since this is what the user sets).
 +      (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
 +      (redisplay_tool_bar): Return early when toolbar has zero lines.
 +      Call x_change_tool_bar_height.  Don't use max_tool_bar_height.
 +      (hscroll_window_tree): Handle suspension of auto_hscroll and
 +      old_pointm.
 +      (set_horizontal_scroll_bar): New function.
 +      (redisplay_window): Set ignore_mouse_drag_p when tool bar has
 +      more than one line.  Handle horizontal scroll bars.
 +      (note_mouse_highlight): Handle horizontal scrol bars.
 +      (expose_frame): Set dimensions of XRectangle from frame's text
 +      sizes.
 +      (Vvoid_text_area_pointer): Update doc-string.
 +      * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
 +      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
 +      (x_set_internal_border_width): New functions.
 +      (x_set_tool_bar_lines): Call x_change_tool_bar_height.
 +      (unwind_create_frame_1): Remove.
 +      (Fx_create_frame): Handle horizontal scroll bars.  Use official
 +      field of frame structure to inhibit running
 +      window-configuration-change-hook.
 +      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
 +      pixelwise.  Handle frame's official field.
 +      (x_frame_parm_handlers): Add x_set_scroll_bar_height,
 +      x_set_horizontal_scroll_bars, x_set_left_fringe,
 +      x_set_right_fringe.
 +      * xmenu.c (update_frame_menubar, free_frame_menubar):
 +      Use adjust_frame_size.
 +      * xterm.h (struct x_display_info):
 +      Add horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
 +      slots.
 +      (struct scroll_bar): Add horizontal slot.
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
 +      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
 +      (x_clear_under_internal_border): Remove.
 +      * xterm.c (XTmouse_position): Handle horizontal scroll bars.
 +      (x_window_to_scroll_bar): New argument TYPE.  Update callers.
 +      (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
 +      HORIZONTAL.  Update callers.
 +      (horizontal_action_hook_id): New action hook id.
 +      (x_horizontal_scroll_bar_to_input_event)
 +      (x_create_horizontal_toolkit_scroll_bar)
 +      (xt_horizontal_action_hook)
 +      (x_set_toolkit_horizontal_scroll_bar_thumb)
 +      (XTset_horizontal_scroll_bar, x_net_wm_state)
 +      (x_horizontal_scroll_bar_report_motion): New functions.
 +      (xg_scroll_callback, x_scroll_bar_handle_click):
 +      Handle horizontal scroll bars.
 +      (SCROLL_BAR_HORIZONTAL_NAME): Define.
 +      (XTset_vertical_scroll_bar): Attempt to clear areas not covered
 +      by scroll bar.
 +      (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite.
 +      Handle horizontal scroll bars.
 +      (handle_one_xevent): Handle horizontal scroll bar events.
 +      Call x_net_wm_state.
 +      (x_set_window_size_1, x_wm_set_size_hint): Don't call
 +      check_frame_size.
 +      (x_set_window_size): Don't call check_frame_size and
 +      do_pending_window_change.
 +      (x_term_init): Init horizontal_scroll_bar_cursor display info.
 +      (x_create_terminal): Add set_horizontal_scroll_bar_hook.
 +      (x_scroll_bar_set_handle): Add some checks when calling
 +      x_clear_area.
 +
 +2014-07-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Revert previous change.
 +      There is certainly nothing wrong with writing code like 'lo <= i
 +      && i <= hi', even if LO happens to a constant.  There isn't even
 +      anything wrong in general with writing 'a <= b' if A happens to
 +      be a constant.  At any rate stylistic changes shouldn't
 +      be done like this without discussion.
 +
 +2014-07-26  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value)
 +      (Fgarbage_collect): Reorder conditions that are written backwards.
 +      * data.c (cons_to_unsigned): Likewise.
 +      * dispnew.c (update_frame_1, sit_for): Likewise.
 +      * fileio.c (file_offset): Likewise.
 +      * filelock.c (read_lock_data, lock_file): Likewise.
 +      * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
 +      Likewise.
 +      * font.c (font_intern_prop, font_style_symbolic): Likewise.
 +      * lisp.h (FIXNUM_OVERFLOW_P): Likewise.
 +      * lread.c (read1): Likewise.
 +      * minibuf.c (read_minibuf_noninteractive): Likewise.
 +      * nsterm.m (x_set_frame_alpha): Likewise.
 +      * process.c (wait_reading_process_output): Likewise.
 +      * region-cache.c (delete_cache_boundaries): Likewise.
 +      * xterm.c (x_set_frame_alpha): Likewise.
 +
 +2014-07-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * dispextern.h, xdisp.c (hourglass_shown_p, hourglass_atimer):
 +      Now static.
 +
 +2014-07-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * atimer.c (set_alarm) [HAVE_ITIMERSPEC]: Use TIMER_ABSTIME
 +      because atimer expiration is absolute rather than relative.
 +
 +2014-07-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.h (current_popup_menu, menubar_in_use):
 +      Move declarations from w32term.c.
 +
 +2014-07-25  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32fns.c (menubar_in_use): No more static.
 +      * w32term.c (current_popup_menu, menubar_in_use): Declare.
 +
 +2014-07-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Move hourglass machinery to RIF.
 +      * dispextern.h (struct redisplay_interface): New members
 +      show_hourglass and hide_hourglass.  Indent comments.
 +      (show_hourglass, hide_hourglass): Remove prototypes.
 +      * nsterm.m (show_hourgass, hide_hourglass): Refactor to ...
 +      (ns_show_hourglass, ns_hide_hourglass): ... new no-ops.
 +      (ns_redisplay_interface): Add them.
 +      * w32fns.c (show_hourglass, hide_hourglass): Refactor to ...
 +      * w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these.
 +      (w32_arrow_cursor): New function to hack around non-GUI frames.
 +      (w32_redisplay_interface): Add new functions.
 +      * w32term.h (w32_arror_cursor): Add prototype.
 +      * xdisp.c (show_hourglass): New function, refactored out from
 +      platform-dependent code.
 +      (cancel_hourglass): Now call to RIF function.
 +      * xfns.c (show_hourglass, hide_hourglass): Refactor to ...
 +      * xterm.c (x_show_hourglass, x_hide_hourglass): ... these.
 +      (x_redisplay_interface): Add new functions.
 +
 +2014-07-24  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Fix error reported by Angelo Graziosi <angelo.graziosi@alice.it> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00274.html>
 +      and complete previous change.
 +      * frame.c (adjust_frame_height): New function.
 +      (Fset_frame_height, Fset_frame_size): Use it.
 +      (x_set_frame_parameters): Take frame top margin into account.
 +
 +2014-07-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (Fset_frame_height): Take frame top margin into account.
 +      Incorrect behavior was reported by Martin Rudalics <rudalics@gmx.at> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00258.html>
 +
 +2014-07-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.h (struct x_output) [USE_X_TOOLKIT || USE_GTK]: Define
 +      menubar_height as such.  Tweak comment.
 +      [USE_LUCID && USE_TOOLKIT_SCROLL_BARS]: Likewise for
 +      scroll_bar_top_shadow_pixel and scroll_bar_bottom_shadow_pixel.
 +      All related users changed.
 +      (FRAME_MENUBAR_HEIGHT) [!USE_X_TOOLKIT && !USE_GTK]: No-op.
 +      * xterm.c (handle_one_xevent):
 +      * gtkutil.c (xg_event_is_for_menubar):
 +      * xfns.c (x_window) [USE_X_TOOLKIT]:
 +      * xmenu.c (set_frame_menubar, free_frame_menubar):
 +      Prefer to use FRAME_MENUBAR_HEIGHT.
 +
 +2014-07-21  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (Fframe_parameters): Always report frame height without
 +      menu and tool bar lines.
 +
 +2014-07-21  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (applicationDidFinishLaunching:): Call
        antialiasThresholdDidChange, register for antialias changes (Bug#17534).
  
        * macfont.h (macfont_update_antialias_threshold): Declare.
  
 -2014-07-17  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-21  Eli Zaretskii  <eliz@gnu.org>
  
        * w32select.c (setup_windows_coding_system):
        Apply CODING_ANNOTATION_MASK to the common_flags member of struct
        row has zero buffer position as their start position.
        Reported by martin rudalics <rudalics@gmx.at>.
  
 -2014-07-16  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (move_it_vertically_backward, move_it_by_lines): Prevent
        infinite looping in redisplay when display lines don't have enough
        space to display even a single character.  (Bug#18036)
  
 -2014-07-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (struct frame) [USE_X_TOOLKIT]: New member shell_position.
 +      * xfns.c (x_window): Use it to allow xfree later.
 +      (x_encode_text): Drop 3rd arg; unused.  Tweak comment and adjust users
 +      where appropriate.  Use bool for booleans and remove redundant checks.
 +      (Fx_backspace_delete_keys_p): Use XkbFreeKeyboard; explain why.
 +      * xterm.c (x_free_frame_resources): Free shell_position.
 +
 +2014-07-19  K. Handa  <handa@gnu.org>
 +
 +      * xfaces.c (realize_x_face): Call font_load_for_lface with no
 +      mandatory font spec (Bug#17973).
 +
 +2014-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * font.c (font_score): Return the worst score if the size of
 +      ENTITY is wrong by more than a factor 2 (Bug#17973).
 +
 +2014-07-18  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (frame_unspecified_color): New function
 +      refactored out from ...
 +      (Fframe_parameters, Fframe_parameter): ... adjusted users.
 +      (x_fullscreen_adjust, set_frame_param): Move Windows-specific
 +      function to ...
 +      * w32term.c (x_fullscreen_adjust, set_frame_param): ... static here.
 +      * frame.h (x_fullscreen_adjust) [HAVE_NTGUI]:
 +      * lisp.h (set_frame_param): Remove prototype.
 +      * xterm.c (x_display_pixel_width, x_display_pixel_height): Now ...
 +      * xterm.h (x_display_pixel_width, x_display_pixel_height): ...
 +      inlined from here.
 +
 +      Prefer 'x_display_info *' to 'Display *' in X selection code.
 +      This helps to avoid unneeded calls to x_display_info_for_display.
 +      * xterm.h (struct selection_input_event): Record 'x_display_info *'
 +      instead of 'Display *'.
 +      (SELECTION_EVENT_DPYINFO): New macro.
 +      (SELECTION_EVENT_DISPLAY): Now inline function to prohibit using
 +      it as an lvalue.  Mention this in comment.
 +      * xterm.c (handle_one_xevent): Use SELECTION_EVENT_DPYINFO.
 +      * xselect.c (x_get_window_property_as_lisp_data, x_atom_to_symbol)
 +      (selection_data_to_lisp_data, receive_incremental_selection):
 +      Convert to use 'x_display_info *'.  Adjust users where appropriate.
 +      (lisp_data_to_selection_data): Likewise.  Also pass 'struct
 +      selection data *' as last arg to not return values in args.
 +      (unexpect_property_change): Use common removal technique.
 +
 +2014-07-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * print.c (print_preprocess): Adjust to match changed
 +      sub char-table structure and avoid crash (Bug#18038).
 +
 +      * data.c (wrong_choice): Not static any more.
 +      * lisp.h (wrong_choice): Add prototype.
 +      * frame.h (struct frame) [USE_X_TOOLKIT || HAVE_NTGUI]:
 +      Declare namebuf as such.  Tweak comment.
 +      [USE_GTK]: Likewise for tool_bar_position.
 +      (fset_tool_bar_position) [USE_GTK]: Ditto.
 +      (FRAME_TOOL_BAR_POSITION): New macro.
 +      * frame.c (x_report_frame_params):
 +      * gtkutil.c (update_frame_tool_bar):
 +      * xfns.c (Fx_create_frame): Use it.
 +      (x_set_tool_bar_position): Add meaningful diagnostic messages.
 +
 +2014-07-16  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (decode_mode_spec): Call file-remote-p on the current
        buffer's default-directory only if it is a string.  (Bug#17986)
  
 +2014-07-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      More precise control over values of some buffer-local variables.
 +      * keyboard.c (Qvertical_scroll_bar):
 +      * frame.c (Qleft, Qright): Move to ...
 +      * buffer.c (Qleft, Qright, Qvertical_scroll_bar): ... here.
 +      * buffer.c (Qchoice, Qrange, Qoverwrite_mode, Qfraction): New symbols.
 +      (syms_of_buffer): DEFSYM all of the above, attach special properties.
 +      Use special symbols to DEFVAR_PER_BUFFER overwrite-mode,
 +      vertical-scroll-bar, scroll-up-aggressively
 +      and scroll-down-aggressively.
 +      * buffer.h (Qchoice, Qrange, Qleft, Qright, Qvertical_scroll_bar):
 +      Add declarations.
 +      * nsfns.m, frame.h (Qleft, Qright):
 +      * nsterm.m (Qleft): Remove declarations.
 +      * gtkutil.c (toplevel): Include buffer.h.
 +      * data.c (wrong_choice, wrong_range): New functions.
 +      (store_symval_forwarding): Handle special properties of buffer-local
 +      variables and use functions from the above to signal error, if any.
 +
 +      * frame.h (enum fullscreen_type) [HAVE_WINDOW_SYSTEM]: Use more natural
 +      values.  Add comment.
 +      (struct frame): Re-arrange layout to avoid extra padding and use bit
 +      fields for output_method, want_fullscreen and vertical_scroll_bar_type.
 +      (FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS)
 +      (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT)
 +      (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT) [!HAVE_WINDOW_SYSTEM]:
 +      Define as no-ops because there are no scroll bars anyway.
 +      * frame.c (make_frame, make_terminal_frame, make_initial_frame):
 +      Adjust users.
 +
 +      * font.c (fset_font_data) [HAVE_XFT || HAVE_FREETYPE]:
 +      Add convenient setter.
 +      (font_put_frame_data, font_get_frame_data): Use it.
 +
 +2014-07-15  Daiki Ueno  <ueno@gnu.org>
 +
 +      * nsgui.h (XCHAR2B_BYTE1): Add missing parentheses around
 +      pointer argument, before dereferencing.
 +      (XCHAR2B_BYTE2): Likewise.
 +
 +2014-07-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (toplevel): Use LWLIB_ID for next_menubar_widget_id.
 +      (pop_down_menu) [USE_X_TOOLKIT]: Accept integer arg.
 +      (create_and_show_popup_menu, create_and_show_dialog) [USE_X_TOOLKIT]:
 +      Use record_unwind_protect_int and avoid consing.
 +      (syms_of_xmenu) [USE_X_TOOLKIT]: Declare WIDGET_ID_TICK_START.
 +
 +      * regex.c (re_search_2): Use ssize_t to avoid integer overflow.
 +
 +2014-07-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use binary-io module, O_BINARY, and "b" flag (Bug#18006).
 +      * callproc.c (create_temp_file): Use mkostemp's O_BINARY flag.
 +      * emacs.c [MSDOS]:
 +      * emacs.c (main) [DOS_NT]: Don't mess with _fmode.
 +      (main) [MSDOS]: Use SET_BINARY instead of setmode.
 +      * minibuf.c: Include binary-io.h instead of fcntl.h.
 +      (read_minibuf_noninteractive):
 +      Use set_binary_mode instead of handcrafted code.
 +      Don't call emacs_set_tty if emacs_get_tty failed.
 +      * sysdep.c, systty.h (emacs_get_tty): Return int, not void.
 +      * sysdep.c (emacs_open, emacs_pipe): Use O_BINARY.
 +      * w32.c (pipe2): Adjust eassert to include O_BINARY.
 +
 +      * macros.c (Fstart_kbd_macro): Avoid need for overflow check.
 +      This works around a GCC compiler bug when Emacs is configured with
 +      --enable-gcc-warnings.
 +
 +2014-07-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (CHECK_VECTOR_OR_STRING): Return number of elements
 +      or characters in string, respectively.  Add comment.
 +      * fringe.c (Fdefine_fringe_bitmap):
 +      * fns.c (Fsubstring, substring_both): Use it.
 +      * keymap.c (Fdefine_key, Flookup_key):
 +      * macros.c (Fstart_kbd_macro): Likewise.  Avoid call to Flength.
 +
 +      * term.c (tty_menu_add_pane, tty_menu_add_selection):
 +      Use menu_item_width.
 +      (tty_menu_show): Simplify because tty_menu_create never return NULL.
 +
 +2014-07-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve behavior of 'bzr up; cd src; make -k'.
 +      * Makefile.in (top_srcdir): New var.
 +      (ntsource, lispsource, ALL_CFLAGS, gl-stamp, emacs.res):
 +      Use '$(top_srcdir)' instead of '$(srcdir)/..';
 +      its expansion is a bit shorter.
 +      (../config.status): Actually build config.status instead of
 +      just complaining.
 +      (ACLOCAL_INPUTS, AUTOCONF_INPUTS):
 +      New macros, copied and relocated from ../Makefile.in.
 +      ($(top_srcdir)/aclocal.m4, $(top_srcdir)/configure, config.in)
 +      (../config.status, Makefile): New dependencies and rules,
 +      copied with relocation from ../Makefile.in.  This should be more
 +      likely to rebuild the build machinery properly if you do a 'make'
 +      in the src directory.
 +
  2014-07-12  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (display_line): Don't call FETCH_BYTE with argument less
        * xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc
        string to match the one in w32fns.c.
  
 -2014-07-08  Eli Zaretskii  <eliz@gnu.org>
 +      * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Switch
 +      stdin to binary mode only if it is connected to a terminal.
 +
 +2014-07-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Coalesce extern decls.
 +      * minibuf.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty):
 +      * sysdep.c (emacs_get_tty, emacs_set_tty):
 +      Move duplicate extern decls from here ...
 +      * systty.h: ... to here, so that there's just one copy.
 +
 +2014-07-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (changeFont:): Add ifdef NS_IMPL_COCOA.
 +
 +      * nsfns.m (Fns_popup_font_panel): Ditto.
 +
 +2014-07-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * minibuf.c (read_minibuf_noninteractive): Finish reading on '\r',
 +      not only on '\n'.
 +      [WINDOWSNT]: Switch stdin to binary mode when not echoing input.
 +
 +      * sysdep.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty)
 +      [DOS_NT]: Implement for WINDOWSNT.
 +
 +      * systty.h (struct emacs_tty) [DOS_NT]: The struct member is now
 +      unsigned.
 +
 +2014-07-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (suppress_echo_on_tty): New function.
 +      * minibuf.c (read_minibuf_noninteractive): Use it.
 +
 +2014-07-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (Fmemory_info) [HAVE_LINUX_SYSINFO]: Return nil if
 +      sysinfo failed.  Adjust docstring.
 +
 +2014-07-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement memory-info for MS-DOS.
 +      * dosfns.c (dos_memory_info): New function.
 +      * dosfns.h (dos_memory_info): Add prototype.
 +      * alloc.c (Fmemory_info) [MSDOS]: Call dos_memory_info.
 +      * vm-limit.c (get_lim_data) [MSDOS]: Call dos_memory_info, instead
 +      of doing some of its job.
 +
 +      * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Don't
 +      reference termios structure members.
 +
 +2014-07-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (emacs_get_tty, emacs_set_tty): Make them externally visible.
 +
 +      * minibuf.c (top): Include systty.h.  Declare external
 +      emacs_get_tty and emacs_set_tty.
 +      (Vread_hide_char): New lisp variable.
 +      (read_minibuf_noninteractive): Hide characters with
 +      Vread_hide_char if it is a character.  (Bug#17839)
 +
 +2014-07-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement memory-info for MS-Windows.
 +      * w32.c (w32_memory_info): New function.
 +      * w32.h (w32_memory_info): Prototype it.
 +      * alloc.c (Fmemory_info) [WINDOWSNT]: Call it.
 +
 +2014-07-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * coding.h (struct coding_system): Remove 'error_positions' (unused)
 +      and 'errors' (set but unused) fields.  Use bitfields for 'eol_seen',
 +      'mode', 'common_flags' and 'result' fields, adjust layout to avoid
 +      extra padding and shrink struct coding_system by 56 bytes (x86_64).
 +      * coding.c (decode_coding_utf_8, decode_coding_utf_16)
 +      (decode_coding_emacs_mule, decode_coding_iso_2022, decode_coding_sjis)
 +      (decode_coding_big5, decode_coding_charset, decode_coding)
 +      (encode_coding): Adjust users.
 +
 +      * alloc.c (Fmemory_info): New function.
 +
 +2014-07-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * syntax.c (back_comment): Use more-natural location for label.
 +
 +      * font.c, font.h (font_unparse_fcname): Now static.
 +      Define only if HAVE_XFT || HAVE_FREETYPE || HAVE_NS.
 +
 +2014-07-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Next minor cleanup of font subsystem.
 +      * font.h (enum font_property_index): Remove FONT_ENTITY_INDEX (no
 +      users) and FONT_FORMAT_INDEX (set by a few font drivers but never
 +      really used).
 +      (FONT_ENTITY_NOT_LOADABLE, FONT_ENTITY_SET_NOT_LOADABLE): Remove;
 +      unused.
 +      * ftfont.h (ftfont_font_format): Remove prototype.
 +      * ftfont.c (ftfont_font_format): Remove; now unused.
 +      (ftfont_open):
 +      * nsfont.m (nsfont_open):
 +      * w32font.c (w32font_open_internal):
 +      * w32uniscribe.c (uniscribe_open):
 +      * xfont.c (xfont_open):
 +      * xftfont.c (xftfont_open): All users changed.
 +
 +      * coding.c (ALLOC_CONVERSION_WORK_AREA): Prefer ptrdiff_t to int and
 +      so avoid integer overflow if decoded gap size exceeds INT_MAX bytes.
 +
 +2014-07-09  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_to): Adjust calculation of line_start_x to what
        x_produce_glyphs does when it generates a stretch glyph that
        represents a TAB.  (Bug#17969)
  
 -2014-07-05  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (pos_visible_p): If CHARPOS is at beginning of window,
        and there is a display property at that position, don't call
        move_it_to to move to a position before window start.  (Bug#17942)
        Fix condition for finding CHARPOS by the first call to move_it_to.
        (Bug#17944)
  
 -2014-07-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * syntax.c (find_defun_start): Try the cache even
        if !open_paren_in_column_0_is_defun_start.
        (back_comment): If find_defun_start was pessimistic, use the
 -      scan_sexps_forward result to improve the cache (bug#16526).
 -
 -2014-07-04  Daniel Colascione  <dancol@dancol.org>
 -
 -      Backport from trunk.
 -      * 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 (Bug#17928).
 -      (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.
 +      scan_sexps_forward result to improve the cache (bug#16526).
  
 -2014-07-04  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-09  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (redisplay_window): If redisplay of a window ends up
        with point in a partially visible line at end of the window, make
        * w32.c (network_interface_info): Make sure the argument is a
        Lisp string.
  
 -2014-07-01  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c (read_and_dispose_of_process_output): Fix typo
 +      in previous patch: we want nonnegative fds, not nonzero fds.
 +
 +2014-07-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * chartab.c (char_table_translate): Move to...
 +      * character.h (char_table_translate): ... inline function here.
 +      Avoid Faref and assume that args are always valid.  This helps to
 +      speedup search, which is especially important for a huge buffers.
 +      * lisp.h (char_table_translate): Remove prototype.
 +
 +      * nsfont.m (nsfont_close): Free glyphs and metrics arrays as well.
 +      * font.c (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
 +      New function, with an intention to avoid code duplication between
 +      a few font drivers.
 +      * font.h (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
 +      Add prototype.
 +      * ftfont.c (ftfont_open):
 +      * macfont.m (macfont_open):
 +      * xftfont.c (xftfont_open): Use it.
 +
 +2014-07-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c: Add sanity checks for file descriptors (Bug#17844).
 +      (wait_reading_process_output, Fprocess_filter_multibyte_p):
 +      Check that infd is nonnegative before using it as an fd.
 +      (read_and_dispose_of_process_output, Fprocess_send_eof):
 +      Likewise, for outfd.
 +      (wait_reading_process_output): Omit unnecessary check of infd.
 +
 +2014-07-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor fixups related to usage of the 'long' type.
 +      * gnutls.c (emacs_gnutls_handshake):
 +      * xfaces.c (dump_realized_face):
 +      Work even if 'long' is narrower than 'void *'.
 +      * termcap.c (scan_file):
 +      * xselect.c (x_decline_selection_request)
 +      (x_reply_selection_request, x_get_window_property):
 +      * xterm.c (x_set_frame_alpha):
 +      Remove unnecessary 'L' suffixes of integer constants.
 +      * xfns.c (hack_wm_protocols):
 +      * xselect.c (x_fill_property_data):
 +      * xterm.c (x_set_offset, x_set_window_size_1, x_make_frame_invisible):
 +      Remove unnecessary casts to 'long'.
 +      (set_machine_and_pid_properties): Don't assume pid_t fits in 32 bits.
 +
 +      Minor ImageMagick safety fixes.
 +      * image.c (imagemagick_compute_animated_image):
 +      Remove useless assignment to local.  Avoid problems if dest_width is 0.
 +      (imagemagick_load_image): Use int for pixel counts that can't
 +      exceed INT_MAX.  Avoid problem if PixelGetNextIteratorRow returns
 +      a row width greater than the image width (or greater than LONG_MAX!).
 +
 +2014-07-04  K. Handa  <handa@gnu.org>
 +
 +      * coding.c (MIN_CHARBUF_SIZE): Delete it.
 +      (MAX_CHARBUF_EXTRA_SIZE): New macro.
 +      (ALLOC_CONVERSION_WORK_AREA): Use MAX_CHARBUF_EXTRA_SIZE.
 +
 +2014-07-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.h (struct font_driver): Remove get_outline and free_outline;
 +      not used by any font driver.
 +      * ftfont.c (ftfont_driver):
 +      * macfont.m (macfont_driver):
 +      * nsfont.m (nsfont_driver):
 +      * w32font.c (w32font_driver):
 +      * w32uniscribe.c (uniscribe_font_driver):
 +      * xfont.c (xfont_driver): Related users changed.
 +      * xselect.c (x_get_window_property): Use convenient xmalloc.
 +      Call to xfree only if some data was really allocated.
 +
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      On MS-Windows, display busy cursor on all GUI frames.
 +      This is similar to what we have on X.  Quickly tested by Dani Moncayo.
 +      * w32fns.c (toplevel): Remove hourglass_hwnd; no longer used.
 +      (w32_show_hourglass, w32_hide_hourglass, w32_note_current_window):
 +      Likewise.
 +      (hide_hourglass, show_hourglass): Redesign to match X counterparts.
 +      * xdisp.c (start_hourglass): Remove Windows-specific bits.
 +
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use convenient alists to manage per-frame font driver-specific data.
 +      * frame.h (struct frame): Rename font_data_list to...
 +      [HAVE_XFT || HAVE_FREETYPE]: ... font_data, which is a Lisp_Object now.
 +      * font.h (struct font_data_list): Remove; no longer need a special
 +      data type.
 +      (font_put_frame_data, font_get_frame_data) [HAVE_XFT || HAVE_FREETYPE]:
 +      Adjust prototypes.
 +      * font.c (font_put_frame_data, font_get_frame_data)
 +      [HAVE_XFT || HAVE_FREETYPE]: Prefer alist functions to ad-hoc list
 +      management.
 +      * xftfont.c (xftfont_get_xft_draw, xftfont_end_for_frame):
 +      Related users changed.
 +      * ftxfont.c (ftxfont_get_gcs, ftxfont_end_for_frame): Likewise.
 +      Prefer convenient xmalloc and xfree.
 +
 +2014-07-03  Eli Zaretskii  <eliz@gnu.org>
  
        * dispnew.c (prepare_desired_row): Accept 2 additional arguments:
        the window whose glyph row is being prepared and a flag whether it
  
        * dispextern.h (prepare_desired_row): Adjust prototype.
  
 -2014-07-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
  
        * xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889).
        * menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash
        caused by xw_popup_dialog in daemon mode (Bug#17891).
  
 -2014-06-30  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-03  Eli Zaretskii  <eliz@gnu.org>
  
        * frame.c (do_switch_frame): When switching to another TTY frame,
        make sure FrameCols and FrameRows are in sync with the new frame's
        data.  (Bug#17875)
  
 +2014-07-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects.
 +      * lisp.h (struct Lisp_Sub_Char_Table): Use C integers for depth and
 +      min_char slots.  Adjust comment.
 +      (enum char_table_specials): Rename from CHAR_TABLE_STANDARD_SLOTS.
 +      Add SUB_CHAR_TABLE_OFFSET member.
 +      (make_uninit_sub_char_table): New function.
 +      (toplevel): Add compile-time assert to verify suitable member layout
 +      in Lisp_Sub_Char_Table.
 +      * alloc.c (mark_char_table): Add extra argument to denote char table
 +      subtype.  Adjust to match new layout of sub char-table.
 +      (mark_object): Always mark sub char-tables with mark_char_table.
 +      * chartab.c (make_sub_char_table, copy_sub_char_table)
 +      (sub_char_table_ref, sub_char_table_ref_and_range, sub_char_table_set)
 +      (sub_char_table_set_range, optimize_sub_char_table, map_sub_char_table)
 +      (map_sub_char_table_for_charset, uniprop_table_uncompress):
 +      All related users changed.
 +      * lread.c (read1): Adjust to match new layout of sub char-table.
 +      * print.c (print_object): Likewise (Bug#17898).
 +
 +2014-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (get_keyelt): Simplify.
 +      (copy_keymap_item): Remove left-over code for when we had
 +      key-shortcut caches.
 +
 +2014-06-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (judge): EmacsScroller: Move dealloc code here.
 +      (dealloc): Remove for EmacsScroller.
 +
 +      * nsterm.h (EmacsScroller): Remove dealloc.
 +
 +2014-06-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * coding.c (MIN_CHARBUF_SIZE): Enlarge to 32.  (Bug#17881)
 +
 +2014-06-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
 +      when setNeedsDisplay is called so we don't trigger redisplay for every
 +      tool bar update.
 +
 +      * nsterm.m (any_help_event_p): New variable.
 +      (mouseMoved:): Set any_help_event_p to YES if help event is
 +      generated.  Remove else with empty help event that triggered redisplay
 +      for every mouse move.
 +      (windowDidResignKey:): If any_help_event_p, generate empty help event.
 +
 +2014-06-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfns.c (Qsuppress_icon): Remove; no real users.
 +      (syms_of_xfns): Don't DEFSYM it.  Remove ancient comments.
 +      * w32fns.c (Qsuppress_icon): Remove, for the same reason.
 +      (syms_of_w32fns): Don't DEFSYM it.
 +
 +2014-06-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (ns-app): Mark as PHONY.
 +
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (mostlyclean): There are no libXMenu11.a,
 +      liblw.a in this directory.
 +
  2014-06-28  Andreas Schwab  <schwab@linux-m68k.org>
  
        * coding.c (encode_coding_utf_8): Correctly count produced_chars
        also in unibyte case.  (Bug#17865)
  
 -2014-06-25  Glenn Morris  <rgm@gnu.org>
 +2014-06-28  K. Handa  <handa@gnu.org>
 +
 +      * coding.c (MAX_CHARBUF_SIZE): Rename from CHARBUF_SIZE.
 +      (MIN_CHARBUF_SIZE): New macro.
 +      (ALLOC_CONVERSION_WORK_AREA): New arg SIZE.  Callers changed.
 +
 +2014-06-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in: Replace BOOTSTRAPEMACS sleight-of-hand
 +      with an order-only dependence on bootstrap-emacs.  (Bug#2151)
 +      (.el.elc): Replace suffix rule with pattern rule.
 +      (%.elc): New pattern rule, with order-only prerequisite.
 +      ($(lisp)): No more need to depend on BOOTSTRAPEMACS.
 +      ($(lispsource)/loaddefs.el): Use an order-only prerequisite
 +      in place of BOOTSTRAPEMACS.
  
 -      * puresize.h (BASE_PURESIZE): Increase a bit.  (Bug#17846)
 +2014-06-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fns.c (Fcompare_strings): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Consistently use validate_subarray to verify substring.
 +      * fns.c (validate_substring): Not static any more.  Adjust to
 +      use ptrdiff_t, not EMACS_INT, because string and vector limits
 +      can't exceed ptrdiff_t even if EMACS_INT is wider.
 +      (Fcompare_strings, Fsubstring, Fsubstring_no_properties)
 +      (secure_hash): Adjust user.
 +      * lisp.h (validate_subarray): Add prototype.
 +      * coding.c (Fundecodable_char_position):
 +      * composite.c (Fcomposition_get_gstring, Fcompose_string_internal):
 +      Use validate_subarray.  Adjust comment to mention substring.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Do not allow out-of-range character position in Fcompare_strings.
 +      * fns.c (validate_subarray): Add prototype.
 +      (Fcompare_substring): Use validate_subarray to check ranges.
 +      Adjust comment to mention that the semantics was changed.  Also see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00447.html.
 +
 +2014-06-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Be more consistent about the 'Qfoo' naming convention.
 +      * image.c (Fimagemagick_types):
 +      * lisp.h (lisp_h_CHECK_TYPE, CHECK_TYPE, CHECK_ARRAY):
 +      * process.c (Fmake_network_process):
 +      Rename C local identifier 'Qfoo to avoid giving the false
 +      impression that it stands for the symbol 'foo'.
 +
 +2014-06-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Simplify and cleanup character conversion stuff.
 +      * lisp.h (multibyte_char_to_unibyte, multibyte_char_to_unibyte_safe):
 +      Remove prototypes.
 +      * character.c (multibyte_char_to_unibyte)
 +      (multibyte_char_to_unibyte_safe): Remove; no longer used.
 +      * character.h (make_char): Remove; unused.
 +      (CHAR_TO_BYTE8, CHAR_TO_BYTE_SAFE): Simplify.
 +      (ASCII_BYTE_P): Remove; ASCII_CHAR_P does the same thing.
 +      * buffer.c, charset.c, charset.h, cmds.c, coding.c, editfns.c:
 +      * fileio.c, indent.c, insdel.c, keyboard.c, lread.c, print.c:
 +      * search.c, term.c, xdisp.c, xterm.c: Related users changed.
 +
 +2014-06-22  Mario Lang  <mlang@delysid.org>
 +
 +      * w32fns.c (Fw32_shell_execute): The the -> the.
 +
 +2014-06-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (mouse_position_for_popup):
 +      * xselect.c (mouse_position_for_drop): Do not duplicate ...
 +      * xfns.c (x_relative_mouse_position): ... and prefer this function.
 +      * menu.c (Fx_popup_menu):
 +      * xselect.c (x_handle_dnd_message): Adjust users.
 +      * menu.h (mouse_position_for_popup): Remove prototype.
 +      * xterm.h (x_relative_mouse_position): Add prototype.
 +      * xterm.c (x_find_topmost_parent): Break from the loop and do not
 +      call XFree if XQueryTree returns zero.
  
  2014-06-21  Eli Zaretskii  <eliz@gnu.org>
  
        * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (...,
        ACL_TYPE_ACCESS) doesn't work.
  
 -2014-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command
        before checking key-translation-map (bug#17659).
  
 -2014-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-06-21  Dmitry Antipov  <dmantipov@yandex.ru>
  
        * font.c (font_make_object): Avoid dangling pointer which may
        crash GC (Bug#17771).
  
 -2014-06-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-21  Eli Zaretskii  <eliz@gnu.org>
  
        * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the
        prototype of DGifCloseFile as appropriate for older and newer
        (gif_load): Call gif_close instead of DGifCloseFile.  Divulge the
        error string where appropriate.  (Bug#17790)
  
 -2014-06-16  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (Fmove_point_visually): Instead of testing for keyboard
        macro execution, make sure point didn't move since last complete
        redisplay, as the condition for using the glyph matrix
        information.  (Bug#17777)
  
 -2014-06-14  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Minor cleanup of fonset code.
 +      * fontset.c (FONTSET_ID, set_fontset_id, FONTSET_NAME)
 +      (set_fontset_name, FONTSET_ASCII, set_fontset_ascii)
 +      (FONTSET_BASE, set_fontset_base, FONTSET_FRAME)
 +      (set_fontset_frame, FONTSET_NOFONT_FACE, set_fontset_nofont_face)
 +      (FONTSET_DEFAULT, set_fontset_default, FONTSET_FALLBACK)
 +      (set_fontset_fallback): Reorder extra slots and avoid unused slots.
 +      (free_realized_fontset): Remove because a no-op since 2008.
 +      (free_face_fontset): Adjust user.
 +      (syms_of_fontset): Shrink fontset by one extra slot.
 +
 +2014-06-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Omit redundant extern decls.
 +      Most of this patch is from Dmitry Antipov, in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00263.html
 +      * commands.h (update_mode_lines):
 +      * frame.h (Qbackground_color, Qforeground_color)
 +      (x_set_menu_bar_lines):
 +      * ftfont.c (ftfont_font_format):
 +      * intervals.h (Qkeymap, Qfont):
 +      * keyboard.c (timer_check, safe_run_hooks, Qregion_extract_function):
 +      * lisp.h (Ffboundp, Qnil, Qt, Qlambda, Qintegerp, Qwholenump)
 +      (Qsymbolp, Qlisp, Qconsp, Qstringp, Qarrayp, Qbufferp, Qmarkerp)
 +      (Qvectorp, Qbuffer_or_string_p, Qchar_table_p, Qvector_or_char_table_p)
 +      (Qfloatp, Qnumberp, Qfont_spec, Qfont_entity, Qfont_object)
 +      (Fbyteorder, wrong_type_argument, Fmax_char, syms_of_composite)
 +      (Fidentity, extract_float, init_display, syms_of_display, Qdisplay):
 +      (Qimage, Qbox, redisplay_preserve_echo_area, char_table_ref)
 +      (char_table_set, char_table_translate, Qautoload, Qbottom, Qtop)
 +      (Qvisible, Qfont, Qfront_sticky, Qrear_nonsticky, init_sigio)
 +      (Qtool_bar, Qheader_line):
 +      * macros.c (Fexecute_kbd_macro):
 +      * xdisp.c (Ftool_bar_height, Ftool_bar_height):
 +      * xterm.c (x_delete_terminal, XSetIMValues):
 +      * xterm.h (x_set_window_size, x_query_color, x_get_focus_frame)
 +      (x_implicitly_set_name, popup_activated)
 +      (widget_store_internal_border):
 +      Remove redundant decls.
 +      * frame.c [USE_X_TOOLKIT]: Include widget.h.
 +      * keyboard.c (Fexit_recursive_edit, Fabort_recursive_edit):
 +      Remove _Noreturn, as make-docfile now does that for us.
 +      * lisp.h (DEFUN): Don't declare fnname here; rely on make-docfile.
 +      (Qregion_extract_function): New decl.
 +      * window.c, xfns.c: Include menu.h.
 +
 +2014-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * callint.c (Fcall_interactively): Fix up last change (bug#17701).
 +
 +2014-06-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (Fread_file_name): Do not pass redundant args and ...
 +      * callint.c (read_file_name): ... convert to static here.
 +      * lisp.h (Fread_file_name): Do not EXFUN it.
 +      (STRING_COPYIN): Remove; unused.
 +      * composite.c (CHAR_COMPOSABLE_P): Replace unsafe macro with ...
 +      (char_composable_p): ... static function.  All users changed.
 +      * eval.c (toplevel): Remove redundant #include directives.
 +      * xterm.c (x_initialize): Add static to match prototype.
 +      * ccl.c (Fccl_execute_on_string):
 +      * font.c (fon_intern_prop): Use make_specified_string.
 +
 +2014-06-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (ns-app): Fix typo that broke build on OS X.
 +      Reported by David Caldwell in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00251.html
 +
 +2014-06-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Do not ask for XRender extension each time XFT font is opened.
 +      * xftfont.c (xftfont_open): Move call to XRenderQueryExtension ...
 +      * xterm.c (x_term_init) [HAVE_XFT]: ... to here.  Adjust comment.
 +
 +2014-06-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in: Use `make -C' rather than `cd && make' throughout.
 +
 +2014-06-15  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (Fmove_point_visually): Don't use the glyph matrix
        information if we are in the middle of executing a keyboard macro,
        since redisplay doesn't update the screen until the macro is
        finished.  (Bug#17777)
  
 -2014-06-13  Eli Zaretskii  <eliz@gnu.org>
 -
        * alloc.c (cleanup_vector): Don't dereference a font driver
        pointer if it is NULL.  (Bug#17771)
  
 +2014-06-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in ($(leimdir)/leim-list.el, $(srcdir)/macuvs.h)
 +      ($(lispsource)/international/charprop.el)
 +      ($(libsrc)/make-docfile$(EXEEXT), $(lwlibdir)/liblw.a)
 +      ($(oldXMenudir)/libXMenu11.a, ns-app, .el.elc)
 +      ($(lispsource)/loaddefs.el, bootstrap-emacs$(EXEEXT)):
 +      GNU make automatically passes command-line arguments to sub-makes.
 +
 +2014-06-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Avoid hangs in accept-process-output (Bug#17647).
 +      * lisp.h, process.c (wait_reading_process_input):
 +      Return int, not bool.  All uses changed.
 +      * process.c (SELECT_CANT_DO_WRITE_MASK):
 +      Remove macro, replacing with ...
 +      (SELECT_CAN_DO_WRITE_MASK): ... new constant, with inverted sense.
 +      All uses changed.
 +      (status_notify): New arg WAIT_PROC.  Return int, not void.
 +      All uses changed.
 +
 +2014-06-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu.c (Fx_popup_menu): Don't call the frame's menu_show_hook if
 +      the frame is the initial frame, because the hook is not set up
 +      then, and Emacs crashes.
 +      Reported by Fabrice Popineau <fabrice.popineau@gmail.com>.
 +
 +2014-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (silly_event_symbol_error): Don't recommend the use
 +      of strings.
 +
  2014-06-11  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (set_cursor_from_row): Fix an off-by-one error when
        matching overlay strings with 'cursor' property against buffer
        positions traversed in the glyph row.  (Bug#17744)
  
 +2014-06-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst
 +      on Cocoa.
 +
 +      * nsterm.m (run): Always compile for Cocoa.  Use runtime check to
 +      determine 10.9 (Bug#17751).
 +
 +      * macfont.m (macfont_draw): Positions were not freed.
 +
 +2014-06-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ...
 +      * xfaces.c (prepare_face_for_display) [HAVE_WINDOW_SYSTEM]: ... this
 +      function.  Also adjust comment.
 +      * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed.
 +
 +      * dispextern.h (struct face) [HAVE_XFT]: Ifdef 'extra' member.
 +      * font.c (font_done_for_face):
 +      * xfaces.c (realize_non_ascii_face): Adjust user.
 +      * font.h (struct font_driver): Convert 'prepare_face' to return
 +      void because its return value is never used anyway.
 +      * xfont.c (xfont_prepare_face): Return void.
 +      * xftfont.c (xftfont_prepare_face): Likewise.  Use xmalloc.
 +      (xftfont_done_face): Use xfree.
 +
 +      * dispextern.h (last_tool_bar_item): Remove declaration.
 +      * frame.h (struct frame): New member last_tool_bar_item.
 +      * frame.c (make_frame): Initialize it.
 +      * xdisp.c (toplevel): Remove last_tool_bar_item.
 +      (handle_tool_bar_click, note_tool_bar_highlight):
 +      * w32term.c (w32_read_socket, w32_initialize):
 +      * xterm.c (handle_one_xevent, x_initialize): Adjust users.
 +
 +      * frame.h (window_system_available) [!HAVE_WINDOW_SYSTEM]: Always false.
 +      * frame.c (window_system_available) [HAVE_WINDOW_SYSTEM]: Now here.
 +
 +2014-06-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Say (accept-process-output P)'s result pertains to P if P is non-nil.
 +      * process.c (Faccept_process_output)
 +      (wait_reading_process_output): Mention that if PROCESS is non-nil,
 +      the return value is about PROCESS, not about other processes.
 +
 +2014-06-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Further adjustments to mark_object and friends.
 +      Now the mark_object's stack is just 32 bytes on a 64-bit
 +      system, which means extra 20% off the stack usage.
 +      * alloc.c (mark_save_value): As before, refactored out from ...
 +      (mark_object): ... adjusted user.  Also add comment.
 +
 +2014-06-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix core dump after a dropped X connection (Bug#17704).
 +      * sysdep.c (stuff_char): Don't abort merely because the selected frame
 +      is dead, as we may be shutting down.
 +
  2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (write-region-inhibit-fsync): Doc tweak.
  
 -      * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks.
 +      * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks.
 +
 +2014-06-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      If a C name must be extern on some platforms, make it extern on all.
 +      * dispextern.h (set_vertical_scroll_bar, erase_phys_cursor)
 +      (load_color):
 +      * font.h (ftxfont_driver) [HAVE_XFT]:
 +      * keyboard.h (menu_items_inuse, ignore_mouse_drag_p, make_ctrl_char):
 +      * lisp.h (get_frame_param):
 +      * menu.h (tty_menu_show):
 +      * process.h (conv_sockaddr_to_lisp, catch_child_signal):
 +      * termhooks.h (encode_terminal_code):
 +      * xterm.h (x_menu_wait_for_event):
 +      Always declare.
 +      * frame.c (get_frame_param):
 +      * fringe.c (max_used_fringe_bitmap):
 +      * ftxfont.c (ftxfont_driver):
 +      * keyboard.c (ignore_mouse_drag_p, make_ctrl_char):
 +      * menu.c (menu_items_inuse):
 +      * process.c (conv_sockaddr_to_lisp, catch_child_signal):
 +      * term.c (encode_terminal_code, tty_menu_show):
 +      * xdisp.c (set_vertical_scroll_bar, erase_phys_cursor):
 +      * xfaces.c (load_color):
 +      * xmenu.c (x_menu_wait_for_event):
 +      Now always extern.
 +
 +2014-06-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Change object marking routines to minimize stack usage.
 +      This change moves a few cold paths from mark_object to NO_INLINE
 +      functions and adjusts symbol marking loop.  According to GCC 4.8.2
 +      -Wstack-usage, this reduces mark_object's stack usage from 80 to
 +      48 bytes on a 64-bit system.  For a long byte-force-recompile runs,
 +      stack usage at the mark phase is reduced up to 28%.  Surprisingly,
 +      it also gains up to 3% in speed (with default '-O2 -g3' flags).
 +      * alloc.c (mark_compiled, mark_localized_symbol): New functions,
 +      refactored out from ...
 +      (mark_object): ... adjusted user.  Also mark symbols in a tight
 +      inner loop.
 +      (mark_face_cache): Add NO_INLINE.
 +
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter
 +      contains garbage on WINDOWSNT (which could potentially infloop at
 +      exit).
 +
 +      Minimize cursor motion during TTY menu updates.
 +      * term.c (tty_menu_display): Don't position cursor here.
 +      Instead, pass the cursor coordinates to update_frame_with_menu.
 +      (tty_menu_activate): Send the hide cursor command only once in an
 +      iteration through the outer 'while' loop.
 +
 +      * dispnew.c (update_frame_1): Accept an additional argument
 +      SET_CURSOR_P, and position the cursor at the end of the frame
 +      update only if that argument is non-zero.  All callers changed to
 +      provide the additional argument as non-zero, except for
 +      update_frame_with_menu.
 +      (update_frame_with_menu): Accept 2 additional arguments ROW and
 +      COL; if they are non-negative, instruct update_frame_1 not to
 +      position the cursor, and instead position it according to ROW and COL.
 +
 +      * dispextern.h (update_frame_with_menu): Update prototype.
 +
 +2014-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * callproc.c (call_process): Don't check read-only if we don't insert
 +      anything (bug#17666).
 +
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (update_frame_with_menu): Set display_completed.
 +
 +2014-06-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern
 +      only for WINDOWSNT.
 +      * menu.h (tty_menu_show) [WINDOWSNT]: Declare extern only for WINDOWSNT.
 +
 +2014-06-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static.
 +      * menu.h (tty_menu_show) [!HAVE_NTGUI]: Omit extern decl.
 +
 +2014-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (Frecenter): Signal an error if window-buffer is not
 +      current-buffer.
 +
 +      * keyboard.c (make_lispy_position): Don't include a buffer position in
 +      mode/header-line mouse events.
 +
 +      * keyboard.c (read_char): Handle (t . <event>) in the second use of
 +      Vunread_command_events (bug#17650).
 +
 +2014-06-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.c (x_setup_pointer_blanking):
 +      Conditionally probe Xfixes until this stuff is stabilized (Bug#17609).
 +
 +2014-06-05  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c, process.c: Do not define POLL_FOR_INPUT here
 +      because it will be defined in generated config.h if needed.
 +
 +2014-06-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use terminal-specific hooks to display popup dialogs.
 +      * termhooks.h (struct terminal): New field popup_dialog_hook.
 +      * menu.c (emulate_dialog_with_menu): New function, refactored from ...
 +      (Fx_popup_dialog): ... adjusted user.  Also remove old #if 0
 +      code and use popup_dialog_hook.
 +      * nsmenu.m (ns_popup_dialog): Make hook-compatible.
 +      * nsterm.h (ns_popup_dialog): Adjust prototype.
 +      * nsterm.m (ns_create_terminal):
 +      * w32term.c (w32_create_terminal):
 +      * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]:
 +      Setup popup_dialog_hook.
 +
 +2014-06-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (report_temacs_memory_usage): Improve the report by
 +      reporting the large blocks that are actually occupied at dump time.
 +
 +      * w32console.c (initialize_w32_display): Set the console
 +      menu_show_hook, otherwise TTY menus are broken on w32.
 +
 +2014-06-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use terminal-specific hooks to display menus.
 +      * termhooks.h (struct terminal): New field menu_show_hook.
 +      * menu.h (<anonymous enum>): Bit flags for menu hooks.
 +      (x_menu_show, w32_menu_show, ns_menu_show, tty_menu_show):
 +      Adjust prototypes.
 +      * menu.c (Fx_popup_menu): Use bit flags and menu_show_hook.
 +      * nsmenu.m (ns_menu_show):
 +      * w32menu.c (w32_menu_show):
 +      * xmenu.c (x_menu_show):
 +      * term.c (tty_menu_show): Adjust to use bit flags.
 +      (set_tty_hooks): Set menu_show_hook.
 +      * xterm.c (x_create_terminal):
 +      * nsterm.m (ns_create_terminal):
 +      * msdos.c (initialize_msdos_display):
 +      * w32term.c (w32_create_terminal): Likewise.
 +
 +2014-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE) [!_WIN64]: Reduce to 11 MB.
 +
 +2014-06-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysselect.h (fd_CLR, fd_ISSET, fd_SET, FD_CLR, FD_ISSET)
 +      (FD_SET): Don't define on WINDOWSNT.
 +
 +2014-06-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * emacs.c: Include "sysselect.h", to define its inline functions.
 +      Reported by Glenn Morris in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00077.html
 +
 +      Do not require libXt-devel when building with gtk.
 +      * gtkutil.h, menu.h: Include lwlib-widget.h, not lwlib-h, to avoid
 +      dependency on libXt-devel.
 +      * menu.h [HAVE_NTGUI]: Include lwlib-widget.h in this case too.
 +      (enum button_type, widget_value) [HAVE_NTGUI]: Remove, as
 +      lwlib-widget.h now does this.
 +      * nsmenu.m (ns_menu_show): "enabled" -> "enable" to fix typo.
 +
 +2014-06-03  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +
 +      If ENABLE_CHECKING, range-check args of FD_CLR, FD_ISSET, FD_SET.
 +      * process.c (add_read_fd, delete_read_fd, add_write_fd)
 +      (delete_write_fd, wait_reading_process_output):
 +      Remove now-redundant easserts.
 +      * sysselect.h (SYSSELECT_H): New macro, to avoid double-inclusion woes.
 +      Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
 +      (fd_CLR, fd_ISSET, fd_SET): New inline functions.
 +      (FD_CLR, FD_ISSET, FD_SET): Redefine in terms of these functions.
 +
 +2014-06-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE): Move from w32heap.h.  Don't use
 +      HEAPSIZE; instead, define separate values for the 32- and 64-bit builds.
 +      (calloc): Don't undef, it is never defined.
 +      (HEAP_ENTRY_SHIFT): Remove unused macro.
 +
 +      * Makefile.in (C_HEAP_SWITCH): Remove.
 +      (ALL_CFLAGS): Don't use $(C_HEAP_SWITCH).
 +
 +      Fix MS-Windows build broken by menu changes on 2014-06-02.
 +      * w32menu.c (w32_menu_show): Fix a typo that broke compilation.
 +
 +      * menu.h (enum button_type, struct _widget_value) [HAVE_NTGUI]:
 +      Define instead of including ../lwlib/lwlib.h, which causes
 +      compilation errors due to missing X11 headers.
 +
 +2014-06-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c (wait_reading_process_output): Omit incorrect test of
 +      p->infd against zero.  Add easserts for infd having a plausible value.
 +
 +2014-06-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Adjust to match recent lwlib changes.
 +      * menu.h (xmalloc_widget_value): Replace by ...
 +      (make_widget_value): ... new prototype.
 +      * menu.c (xmalloc_widget_value): Replace by ...
 +      (make_widget_value): ... new function.
 +      (free_menubar_widget_value_tree, digest_single_submenu): Adjust users.
 +      * gtkutil.c (malloc_widget_value, free_widget_value):
 +      (widget_value_free_list, malloc_cpt): Remove old lwlib-compatible code.
 +      * keyboard.h (enum button_type, struct _widget_value):
 +      * gtkutil.h, nsgui.h, w32gui.h (malloc_widget_value, free_widget_value):
 +      Likewise.
 +      * nsmenu.m (ns_update_menubar, ns_menu_show):
 +      * w32menu.c (set_frame_menubar, w32_menu_show, w32_dialog_show):
 +      * xmenu.c (set_frame_menubar, xmenu_show, x_dialog_show): Adjust users.
 +      * xterm.h (XtParent) [USE_GTK]: Remove unused macro.
 +
 +2014-06-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * image.c (x_query_frame_background_color)
 +      [HAVE_PNG || HAVE_NS || HAVE_IMAGEMAGICK || HAVE_RSVG]:
 +      Fix --enable-gcc-warnings compilation without image libraries.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (malloc_after_dump, realloc_after_dump): Update the
 +      emulated break value only if it goes up.
 +      (sbrk): Add assertion that the INCREMENT argument is strictly
 +      zero.  Improve and correct the commentary.
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve AIX-related merge from emacs-24.
 +      * conf_post.h (FLEXIBLE_ARRAY_MEMBER): Fix comment.
 +      * lisp.h (ENUMABLE) [!_AIX]: Don't define to 0 merely because we're
 +      not on AIX; since we're on the trunk we can use enums more broadly.
 +
 +      * frame.c (x_set_frame_parameters): Don't read uninitialized storage.
 +
 +2014-06-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (xg_scroll_callback): Remove position, for jump set portion
 +      to min(value, whole).
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Bring back the changes to GDB-visible symbols, but only on AIX.
 +      And only if it's not pre-4.2 GCC.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      New macros.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer
 +      with PT, not GPT.  (Bug#16433)
 +
 +      Revert last changes to GDB-visible symbols.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      Delete macros.
 +
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * cmds.c (Fself_insert_command): Allow zero repeat count.  (Bug#17649)
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix port to 32-bit AIX with xlc (Bug#17598).
 +      * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE.
 +      * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty.
 +      * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum,
 +      to work around a compiler bug in IBM xlc 12.1.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_update_window_end): Don't invalidate the entire
 +      mouse-highlight info, just signal frame_up_to_date_hook that mouse
 +      highlight needs to be redisplayed.  (Bug#17588)
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port the GDB-visible symbols to AIX.
 +      Without them, GDB doesn't work to debug Emacs, since the AIX linker
 +      optimizes away the relevant external symbols.  Use enums instead;
 +      this suffices for the AIX port, which is 32-bit-only anyway.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      New macros.
 +
 +      Include sources used to create macuvs.h.
 +      * Makefile.in ($(srcdir)/macuvs.h): New rule.
 +      * macuvs.h: Use automatically-generated header.
 +
 +2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port signal-handling to DragonFly BSD (Bug#17646).
 +      * callproc.c, sysdep.c (block_child_signal, unblock_child_signal):
 +      Move implementations from callproc.c to sysdep.c.
 +      * process.h, syssignal.h (block_child_signal, unblock_child_signal):
 +      Move declarations from process.h to syssignal.h.
 +
 +2014-06-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * callint.c (Ffuncall_interactively): Add usage.
 +
 +2014-06-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (ns_appkit_version_str): Add os version for Cocoa.
 +
 +2014-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (malloc_before_dump, malloc_after_dump)
 +      (malloc_before_dump, realloc_after_dump, realloc_before_dump)
 +      (mmap_alloc, mmap_realloc): Check for errors more thoroughly and
 +      set errno where appropriate to emulate CRT functions.
 +
 +2014-05-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Debugging facility to check whether 'const char *' points to
 +      relocatable data of non-pure Lisp string.
 +      * alloc.c (maybe_lisp_pointer): New function, refactored out of ...
 +      (mark_maybe_pointer): ... adjusted user.
 +      (relocatable_string_data_p): New function.
 +      * lisp.h (relocatable_string_data_p): Add prototype.
 +      * xdisp.c (message_with_string): If ENABLE_CHECKING, make sure
 +      the pointer to relocatable Lisp data is not used.
 +
 +2014-05-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't let SIGINT handling block SIGCHLD indefinitely (Bug#17561).
 +      * atimer.c (block_atimers):
 +      * callproc.c (block_child_signal): Block SIGINT too;
 +      otherwise, its handler might now unblock signals that it shouldn't.
 +      * keyboard.c (read_char): Clear signal mask, since we may
 +      be in a SIGINT handler, and many signals may be masked.
 +      * keyboard.c (handle_interrupt):
 +      * sysdep.c (handle_arith_signal):
 +      Clear signal mask instead of just unblocking the signal that
 +      was received, since several signals may be blocked at this point.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * Makefile.in (TEMACS_POST_LINK): Remove target.
 +      (emacs$(EXEEXT)): Remove $(ADDSECTION) from prerequisites.
 +      (temacs$(EXEEXT)): Remove $(TEMACS_POST_LINK) from the recipe.
 +
 +2014-05-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (xdialog_show): Remove prototype, rename to
 +      x_dialog_show, remove 2nd arg because it's always zero
 +      and simplify accordingly.
 +      (xw_popup_dialog): Adjust user.
 +      * w32menu.c (w32_dialog_show): Adjust prototype, remove
 +      2nd arg because it's always zero and simplify accordingly.
 +      (w32_popup_dialog): Adjust user.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (report_temacs_memory_usage): New function.
 +
 +      * unexw32.c (unexec) [ENABLE_CHECKING]:
 +      Call report_temacs_memory_usage.
 +
 +      * w32heap.h (report_temacs_memory_usage): Add prototype.
 +
 +2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't substitute sigprocmask for pthread_sigmask (Bug#17561).
 +      * Makefile.in (LIB_PTHREAD_SIGMASK): Remove; all uses removed.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * buffer.c (init_buffer): Accept an argument 'initialized'.
 +      [USE_MMAP_FOR_BUFFERS]: If 'initialized' is non-zero, reset
 +      mmap_regions and mmap_fd, to avoid referencing stale data from the
 +      dump phase.  Add an assertion for buffer text of buffers created
 +      in temacs before this function is called.  (Bug#17622)
 +      (mmap_regions_1, mmap_fd_1): Remove unused variables.
 +
 +      * lisp.h (init_buffer): Update prototype.
 +
 +      * emacs.c (main): Pass 'initialized' as the argument to init_buffer.
 +
 +2014-05-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (Fgarbage_collect): Fix compilation with
 +      GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
 +
 +2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c, frame.h (frame_char_to_pixel_position)
 +      (frame_set_mouse_position): Now static, and made private in
 +      frame.c rather than public in frame.h.
 +
 +2014-05-28  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Refactor mouse positioning stuff to avoid code duplication.
 +      * frame.h (frame_char_to_pixel_position): New function.
 +      (x_set_mouse_position): Rename to...
 +      (frame_set_mouse_position): ...new function.
 +      (frame_set_mouse_pixel_position): Add prototype.
 +      * nsterm.m, w32term.c, xterm.c (x_set_mouse_pixel_position):
 +      Rename to frame_set_mouse_pixel_position.
 +      * frame.c (Fset_mouse_pixel_position, Fset_mouse_position):
 +      Adjust users.
 +      * xterm.h, w32term.h ( x_set_mouse_position)
 +      (x_set_mouse_pixel_position): Remove prototypes.
 +
 +2014-05-28  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -2014-06-04  Eli Zaretskii  <eliz@gnu.org>
 +      On X, always make pointer visible when deleting frame (Bug#17609).
 +      * frame.c (frame_make_pointer_visible, frame_make_pointer_invisible):
 +      Pass frame as arg.
 +      * frame.h (frame_make_pointer_visible, frame_make_pointer_invisible):
 +      Adjust prototypes.
 +      * cmds.c (Fself_insert_command): Use SELECTED_FRAME.
 +      * keyboard.c (gobble_input): If there is no terminal input error,
 +      make sure the pointer is visible for all frames on this terminal.
 +      * xterm.c (x_free_frame_resources): Enable pointer visibility if
 +      it was previously disabled.
  
 -      * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter
 -      contains garbage on WINDOWSNT (which could potentially infloop at
 -      exit).
 +2014-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Minimize cursor motion during TTY menu updates.
 -      * term.c (tty_menu_display): Don't position cursor here.  Instead,
 -      pass the cursor coordinates to update_frame_with_menu.
 -      (tty_menu_activate): Send the hide cursor command only once in an
 -      iteration through the outer 'while' loop.
 +      * data.c (Fzerop): Move to Elisp.
 +      (syms_of_data): Don't defsubr it.
 +      * keyboard.c (echo_keystrokes_p): New function.
 +      (read_char, record_menu_key, read_key_sequence): Use it.
  
 -      * dispnew.c (update_frame_1): Accept an additional argument
 -      SET_CURSOR_P, and position the cursor at the end of the frame
 -      update only if that argument is non-zero.  All callers changed to
 -      provide the additional argument as non-zero, except for
 -      update_frame_with_menu.
 -      (update_frame_with_menu): Accept 2 additional arguments ROW and
 -      COL; if they are non-negative, instruct update_frame_1 not to
 -      position the cursor, and instead position it according to ROW and
 -      COL.
 +      * callint.c (Qfuncall_interactively): New var.
 +      (Qcall_interactively): Remove.
 +      (Ffuncall_interactively): New function.
 +      (Fcall_interactively): Use it.
 +      (syms_of_callint): Defsubr it.
  
 -      * dispextern.h (update_frame_with_menu): Update prototype.
 +2014-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * bytecode.c (FETCH) [BYTE_CODE_SAFE]: Check the bytecode wasn't
 +      relocated from under us.
  
 -      * callproc.c (call_process): Don't check read-only if we don't insert
 -      anything (bug#17666).
 +2014-05-27  Fabrice Popineau  <fabrice.popineau@gmail.com>
  
 -2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +      Use mmap(2) emulation for allocating buffer text on MS-Windows.
 +      * Makefile.in (C_HEAP_SWITCH): Get the predefined heap size from
 +      configure, not from HEAPSIZE.
 +      (ADDSECTION, MINGW_TEMACS_POST_LINK): Remove, no longer used.
  
 -      * dispnew.c (update_frame_with_menu): Set display_completed.
 +      * lisp.h (NONPOINTER_BITS): Modify the condition to define to zero
 +      for MinGW, since it no longer uses gmalloc.
  
 -2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +      * buffer.c: Do not define mmap allocations functions for Windows.
 +      Remove mmap_find which is unused. Remove mmap_set_vars which does
 +      nothing useful.
 +      [WINDOWSNT]: Include w32heap.h.
 +      (init_buffer): Always allocate new memory for buffers.
  
 -      * frame.c (x_set_frame_parameters): Don't read uninitialized storage.
 +      * emacs.c: Remove mmap_set_vars calls.
  
 -2014-06-01  Jan Djärv  <jan.h.d@swipnet.se>
 +      * image.c (free_image): Undef free for Windows because it is
 +      redirected to our private version.
  
 -      * xterm.c (xg_scroll_callback): Remove position, for jump set portion
 -      to min(value, whole).
 +      * unexw32.c (COPY_PROC_CHUNK): Use %p format for 64bits compatibility.
 +      (copy_executable_and_dump_data): Remove dumping the heap section.
 +      (unexec): Restore using_dynamic_heap after dumping.
  
 -2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +      * w32heap.c (dumped_data_commit, malloc_after_dump)
 +      (malloc_before_dump, realloc_after_dump, realloc_before_dump)
 +      (free_after_dump, free_before_dump, mmap_alloc, mmap_realloc)
 +      (mmap_free): New functions.
  
 -      Bring back the changes to GDB-visible symbols, but only on AIX.
 -      And only if it's not pre-4.2 GCC.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      New macros.
 +      * w32heap.h: Declare dumped_data and mmap_* function prototypes.
  
 -2014-05-31  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-27  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer
 -      with PT, not GPT.  (Bug#16433)
 +      * image.c (imagemagick_load_image): Use MagickRealType for local
 +      'color_scale', instead of double, to avoid a GCC warning about
 +      double promotion.
  
 -      Revert last changes to GDB-visible symbols.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      Delete macros.
 +      * xfns.c (Fx_window_property): Remove unused local.
  
 -2014-05-31  Glenn Morris  <rgm@gnu.org>
 +      Don't kill already-reaped process (Bug#17561).
 +      * process.c (process_send_signal): Fix race condition where a
 +      subprocess was reaped by a signal handler between the check for
 +      liveness and calling 'kill', which meant that Emacs could in
 +      theory kill an innocent bystander process.  Do the fix by blocking
 +      SIGCHLD in a critical section that checks liveness before killing.
  
 -      * cmds.c (Fself_insert_command): Allow zero repeat count.  (Bug#17649)
 +2014-05-26  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-05-30  Paul Eggert  <eggert@cs.ucla.edu>
 +      * w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if undefined.
  
 -      Fix port to 32-bit AIX with xlc (Bug#17598).
 -      * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE.
 -      * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty.
 -      * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum,
 -      to work around a compiler bug in IBM xlc 12.1.
 +2014-05-26  Ken Brown  <kbrown@cornell.edu>
  
 -2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +      * w32term.c (x_delete_display): Don't free dpyinfo->w32_id_name,
 +      even if !CYGWIN (see bug#17510).
  
 -      * xterm.c (x_update_window_end): Don't invalidate the entire
 -      mouse-highlight info, just signal frame_up_to_date_hook that mouse
 -      highlight needs to be redisplayed.  (Bug#17588)
 +2014-05-26  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +      * nsfns.m (Fns_do_applescript): Surround NSApp run
 +      with calls to ns_init_events, ns_finish_events (Bug#17424).
  
 -      Port the GDB-visible symbols to AIX.
 -      Without them, GDB doesn't work to debug Emacs, since the AIX linker
 -      optimizes away the relevant external symbols.  Use enums instead;
 -      this suffices for the AIX port, which is 32-bit-only anyway.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      New macros.
 +      * nsterm.h (ns_init_events, ns_finish_events): Declare.
  
 -2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
 +      * nsterm.m (ns_init_events, ns_finish_events): New functions.
 +      (ns_read_socket, ns_select): Call ns_init_events, ns_finish_events.
  
 -      Include sources used to create macuvs.h.
 -      * Makefile.in ($(srcdir)/macuvs.h): New rule.
 -      * macuvs.h: Use automatically-generated header.
 +      * nsfns.m (ns_do_applescript): Surround executeAndReturnError
 +      with calls to ns_init_events, ns_finish_events (Bug#17424).
  
 -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.
        (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.
        (tty_menu_activate): Return the cursor to the active menu item
        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>
 +2014-04-07  Ken Brown  <kbrown@cornell.edu>
  
 -      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).
 +      * Makefile.in (EMACS_MANIFEST): Update comment.  (Bug#17176)
  
 -2014-04-03  Ken Brown  <kbrown@cornell.edu>
 +2014-04-07  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * Makefile.in (EMACS_MANIFEST): Update comment.  (Bug#17176)
 +      * 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.
 +      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.
        * doc.c (store_function_docstring): Warn when we don't know where to
        put a docstring.
        (Fsubstitute_command_keys): Don't advertise the fact that
 -      text-properties are dropped, since we think it's a bug that we'll fix
 -      in 24.5.
 +      text-properties are dropped, since we think it's a bug that we'll fix.
  
        * frame.h (SET_FRAME_VISIBLE): Keep frame_garbaged up to date.
        * xterm.c (handle_one_xevent) <MapNotify>: Don't garbage the frame.
  2014-01-20  Paul Eggert  <eggert@cs.ucla.edu>
  
        Avoid undefined behavior by initializing buffer redisplay bit.
 -      Problem reported by Dmitry Antipov in
 +      Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01756.html>.
        * buffer.c (Fget_buffer_create): Initialize redisplay bit.
  
  2013-11-21  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix some dependency problems that cause unnecessary recompiles.
 -      Problem reported by RMS in
 +      Reported by RMS in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00421.html>.
        * Makefile.in (OLDXMENU_TARGET, OLDXMENU, OLDXMENU_DEPS)
        (really-lwlib, really-oldXMenu, stamp-oldxmenu)
  
  2013-10-23  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Port to Solaris 10 and its bundled GCC.
 -      Problem reported by Timothy C. Burt.
 +      Port to Solaris 10 and its bundled GCC.  Reported by Timothy C. Burt.
        * floatfns.c (isfinite, isnan): Redefine unconditionally.
  
  2013-10-21  Dmitry Antipov  <dmantipov@yandex.ru>
        so it shouldn't be used all the time.  Perhaps we need two
        flavors of 'eassert', one for where 'assume' is far more likely
        to help or to hurt; but that can be done later.
 -      Problem reported by Dmitry Antipov in
 +      Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00276.html>.
        Also, don't include <verify.h>; no longer needed.
  
        (imagemagick_get_animation_cache): Fix a double-free error.
        (imagemagick_load_image): Remove the ping_wand code, which only
        apparently saved time on invalid animated images, and slowed down
 -      everything else.  Optimise for the common case.
 +      everything else.  Optimize for the common case.
  
  2013-08-16  Xue Fuqiao  <xfq.free@gmail.com>
  
  
  2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Port to Ubuntu 10 (Bug#14803).
 -      Problem reported by T.V. Raman.
 +      Port to Ubuntu 10 (Bug#14803).  Reported by T.V. Raman.
        * process.c (close_on_exec, accept4, process_socket):
        Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.
  
        * emacs.c (malloc_enable_thread): Hoist extern decl to top level.
        (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
        Invoke malloc_enable_thread even when not interactive.
 -      Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
 +      Reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
        * process.c (init_process_emacs) [CYGWIN]: Tickle glib even
        in this case, since the underlying bug has now been fixed.
  
        * unexelf.c: Don't assume ElfW (Half) fits in int.
        (entry_address, find_section, unexec): Use ptrdiff_t, not int,
        when dealing with ElfW (Half) values, since they can exceed 2**31
 -      on 64-bit OpenBSD hosts.  Problem reported privately by Han Boetes.
 +      on 64-bit OpenBSD hosts.  Reported by Han Boetes (privately).
        (entry_address): Omit unused NUM arg.  All uses changed.
  
  2013-05-07  Juri Linkov  <juri@jurta.org>
diff --combined src/dispextern.h
index 5f730df514b62280477d9db283d6e035ab4170b4,239c44256469bd7718f84e65b4bf9914af9151fc..329572eda229caf5e839f1d6c8051cb99447a6b3
@@@ -118,8 -118,7 +118,8 @@@ enum window_par
    ON_RIGHT_FRINGE,
    ON_LEFT_MARGIN,
    ON_RIGHT_MARGIN,
 -  ON_SCROLL_BAR,
 +  ON_VERTICAL_SCROLL_BAR,
 +  ON_HORIZONTAL_SCROLL_BAR,
    ON_RIGHT_DIVIDER,
    ON_BOTTOM_DIVIDER
  };
@@@ -389,9 -388,10 +389,9 @@@ struct glyp
  
    /* Lisp object source of this glyph.  Currently either a buffer or a
       string, if the glyph was produced from characters which came from
 -     a buffer or a string; or Lisp integer zero (a.k.a. "null object")
 -     if the glyph was inserted by redisplay for its own purposes, such
 -     as padding or truncation/continuation glyphs, or the
 -     overlay-arrow glyphs on TTYs.  */
 +     a buffer or a string; or nil if the glyph was inserted by
 +     redisplay for its own purposes, such as padding, truncation, or
 +     continuation glyphs, or the overlay-arrow glyphs on TTYs.  */
    Lisp_Object object;
  
    /* Width in pixels.  */
    /* True means don't display cursor here.  */
    bool_bf avoid_cursor_p : 1;
  
 -  /* Resolved bidirectional level of this character [0..63].  */
 -  unsigned resolved_level : 5;
 +  /* Resolved bidirectional level of this character [0..127].  */
 +  unsigned resolved_level : 7;
  
    /* Resolved bidirectional type of this character, see enum
       bidi_type_t below.  Note that according to UAX#9, only some
@@@ -1306,6 -1306,9 +1306,6 @@@ struct glyph_strin
    /* True means the background of this string has been drawn.  */
    bool_bf background_filled_p : 1;
  
 -  /* True means glyph string must be drawn with 16-bit functions.  */
 -  bool_bf two_byte_p : 1;
 -
    /* True means that the original font determined for drawing this glyph
       string could not be loaded.  The member `font' has been set to
       the frame's default font in this case.  */
@@@ -1713,10 -1716,8 +1713,10 @@@ struct fac
       attributes except the font.  */
    struct face *ascii_face;
  
 -  /* Extra member that a font-driver uses privately.  */
 +#if defined HAVE_XFT || defined HAVE_FREETYPE
 +/* Extra member that a font-driver uses privately.  */
    void *extra;
 +#endif
  };
  
  
@@@ -1794,6 -1795,16 +1794,6 @@@ struct face_cach
    bool_bf menu_face_changed_p : 1;
  };
  
 -
 -/* Prepare face FACE for use on frame F.  This must be called before
 -   using X resources of FACE.  */
 -
 -#define PREPARE_FACE_FOR_DISPLAY(F, FACE)     \
 -  do {                                                \
 -     if ((FACE)->gc == 0)                     \
 -       prepare_face_for_display ((F), (FACE));        \
 -  } while (false)
 -
  /* Return a pointer to the face with ID on frame F, or null if such a
     face doesn't exist.  */
  
    ((FACE) == (FACE)->ascii_face)
  
  /* Return the id of the realized face on frame F that is like the face
-    with id ID but is suitable for displaying character CHAR.
-    This macro is only meaningful for multibyte character CHAR.  */
+    FACE, but is suitable for displaying character CHAR at buffer or
+    string position POS.  OBJECT is the string object, or nil for
+    buffer.  This macro is only meaningful for multibyte character
+    CHAR.  */
  
  #define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT)     \
    face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT))
@@@ -1847,15 -1860,13 +1849,15 @@@ GLYPH_CODE_P (Lisp_Object gc
               : TYPE_MAXIMUM (EMACS_INT)))));
  }
  
 -/* Non-zero means face attributes have been changed since the last
 +/* True means face attributes have been changed since the last
     redisplay.  Used in redisplay_internal.  */
  
 -extern int face_change_count;
 +extern bool face_change;
  
  /* For reordering of bidirectional text.  */
 -#define BIDI_MAXLEVEL 64
 +
 +/* UAX#9's max_depth value.  */
 +#define BIDI_MAXDEPTH 125
  
  /* Data type for describing the bidirectional character types.  The
     first 7 must be at the beginning, because they are the only values
@@@ -1892,40 -1903,23 +1894,40 @@@ typedef enum 
    NEUTRAL_ON  /* other neutrals */
  } bidi_type_t;
  
 +/* Data type for describing the Bidi Paired Bracket Type of a character.
 +
 +   The order of members must be in sync with the 8th element of the
 +   member of unidata-prop-alist (in admin/unidata/unidata-gen.el) for
 +   Unicode character property `bracket-type'.  */
 +typedef enum {
 +  BIDI_BRACKET_NONE = 1,
 +  BIDI_BRACKET_OPEN,
 +  BIDI_BRACKET_CLOSE
 +} bidi_bracket_type_t;
 +
  /* The basic directionality data type.  */
 -typedef enum { NEUTRAL_DIR, L2R, R2L } bidi_dir_t;
 +typedef enum { NEUTRAL_DIR = 0, L2R, R2L } bidi_dir_t;
  
  /* Data type for storing information about characters we need to
     remember.  */
  struct bidi_saved_info {
 -  ptrdiff_t bytepos, charpos; /* character's buffer position */
 +  ptrdiff_t charpos;          /* character's buffer position */
    bidi_type_t type;           /* character's resolved bidi type */
 -  bidi_type_t type_after_w1;  /* original type of the character, after W1 */
 -  bidi_type_t orig_type;      /* type as we found it in the buffer */
 +  bidi_type_t orig_type;      /* bidi type as we found it in the buffer */
  };
  
 -/* Data type for keeping track of saved embedding levels and override
 -   status information.  */
 +/* Data type for keeping track of information about saved embedding
 +   levels, override status, isolate status, and isolating sequence
 +   runs.  This should be as tightly packed as possible, because there
 +   are 127 such entries in each iterator state, and so the size of
 +   cache is directly affected by the size of this struct.  */
  struct bidi_stack {
 -  int level;
 -  bidi_dir_t override;
 +  ptrdiff_t next_for_neutral_pos;
 +  unsigned next_for_neutral_type : 3;
 +  unsigned last_strong_type : 3;
 +  unsigned prev_for_neutral_type : 3;
 +  unsigned char level;
 +  unsigned char flags;                /* sos, override, isolate_status */
  };
  
  /* Data type for storing information about a string being iterated on.  */
@@@ -1950,24 -1944,22 +1952,24 @@@ struct bidi_it 
    ptrdiff_t nchars;           /* its "length", usually 1; it's > 1 for a run
                                   of characters covered by a display string */
    ptrdiff_t ch_len;           /* its length in bytes */
 -  bidi_type_t type;           /* bidi type of this character, after
 +  bidi_type_t type;           /* final bidi type of this character, after
                                   resolving weak and neutral types */
 -  bidi_type_t type_after_w1;  /* original type, after overrides and W1 */
 -  bidi_type_t orig_type;      /* original type, as found in the buffer */
 -  int resolved_level;         /* final resolved level of this character */
 -  int invalid_levels;         /* how many PDFs to ignore */
 -  int invalid_rl_levels;      /* how many PDFs from RLE/RLO to ignore */
 +  bidi_type_t type_after_wn;  /* bidi type after overrides and Wn */
 +  bidi_type_t orig_type;      /* original bidi type, as found in the buffer */
 +  char resolved_level;                /* final resolved level of this character */
 +  char isolate_level;         /* count of isolate initiators unmatched by PDI */
 +  ptrdiff_t invalid_levels;   /* how many PDFs to ignore */
 +  ptrdiff_t invalid_isolates; /* how many PDIs to ignore */
    struct bidi_saved_info prev;        /* info about previous character */
    struct bidi_saved_info last_strong; /* last-seen strong directional char */
    struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
    struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
    struct bidi_saved_info next_for_ws; /* character after sequence of ws */
 +  ptrdiff_t bracket_pairing_pos;      /* position of pairing bracket */
 +  bidi_type_t bracket_enclosed_type;  /* type for bracket resolution */
    ptrdiff_t next_en_pos;      /* pos. of next char for determining ET type */
    bidi_type_t next_en_type;   /* type of char at next_en_pos */
 -  ptrdiff_t ignore_bn_limit;  /* position until which to ignore BNs */
 -  bidi_dir_t sor;             /* direction of start-of-run in effect */
 +  bidi_dir_t sos;             /* direction of start-of-sequence in effect */
    int scan_dir;                       /* direction of text scan, 1: forw, -1: back */
    ptrdiff_t disp_pos;         /* position of display string after ch */
    int disp_prop;              /* if non-zero, there really is a
    /* Note: Everything from here on is not copied/saved when the bidi
       iterator state is saved, pushed, or popped.  So only put here
       stuff that is not part of the bidi iterator's state!  */
 -  struct bidi_stack level_stack[BIDI_MAXLEVEL]; /* stack of embedding levels */
 +  struct bidi_stack level_stack[BIDI_MAXDEPTH+2+1]; /* directional status stack */
    struct bidi_string_data string;     /* string to reorder */
    struct window *w;           /* the window being displayed */
    bidi_dir_t paragraph_dir;   /* current paragraph direction */
    ptrdiff_t separator_limit;  /* where paragraph separator should end */
 -  bool_bf prev_was_pdf : 1;   /* if true, previous char was PDF */
    bool_bf first_elt : 1;      /* if true, examine current char first */
    bool_bf new_paragraph : 1;  /* if true, we expect a new paragraph */
    bool_bf frame_window_p : 1; /* true if displaying on a GUI frame */
@@@ -2521,11 -2514,11 +2523,11 @@@ struct i
       Object is normally the buffer which is being rendered, but it can
       also be a Lisp string in case the current display element comes
       from an overlay string or from a display string (before- or
 -     after-string).  It may also be nil when a C string is being
 -     rendered, e.g., during mode-line or header-line update.  It can
 -     also be a cons cell of the form `(space ...)', when we produce a
 -     stretch glyph from a `display' specification.  Finally, it can be
 -     a zero-valued Lisp integer, but only temporarily, when we are
 +     after-string).  It may also be a zero-valued Lisp integer when a
 +     C string is being rendered, e.g., during mode-line or header-line
 +     update.  It can also be a cons cell of the form `(space ...)',
 +     when we produce a stretch glyph from a `display' specification.
 +     Finally, it can be nil, but only temporarily, when we are
       producing special glyphs for display purposes, like truncation
       and continuation glyphs, or blanks that extend each line to the
       edge of the window on a TTY.
@@@ -2843,51 -2836,45 +2845,51 @@@ struct redisplay_interfac
                                  int h, int wd);
    void (*destroy_fringe_bitmap) (int which);
  
 -/* Compute left and right overhang of glyph string S.
 -   A NULL pointer if platform does not support this. */
 +  /* Compute left and right overhang of glyph string S.
 +     A NULL pointer if platform does not support this. */
    void (*compute_glyph_string_overhangs) (struct glyph_string *s);
  
 -/* Draw a glyph string S.  */
 +  /* Draw a glyph string S.  */
    void (*draw_glyph_string) (struct glyph_string *s);
  
 -/* Define cursor CURSOR on frame F.  */
 +  /* Define cursor CURSOR on frame F.  */
    void (*define_frame_cursor) (struct frame *f, Cursor cursor);
  
 -/* Clear the area at (X,Y,WIDTH,HEIGHT) of frame F.  */
 +  /* Clear the area at (X,Y,WIDTH,HEIGHT) of frame F.  */
    void (*clear_frame_area) (struct frame *f, int x, int y,
                              int width, int height);
  
 -/* Draw specified cursor CURSOR_TYPE of width CURSOR_WIDTH
 -   at row GLYPH_ROW on window W if ON_P is true.  If ON_P is
 -   false, don't draw cursor.  If ACTIVE_P is true, system caret
 -   should track this cursor (when applicable).  */
 +  /* Draw specified cursor CURSOR_TYPE of width CURSOR_WIDTH
 +     at row GLYPH_ROW on window W if ON_P is true.  If ON_P is
 +     false, don't draw cursor.  If ACTIVE_P is true, system caret
 +     should track this cursor (when applicable).  */
    void (*draw_window_cursor) (struct window *w,
                              struct glyph_row *glyph_row,
                              int x, int y,
                              enum text_cursor_kinds cursor_type,
                              int cursor_width, bool on_p, bool active_p);
  
 -/* Draw vertical border for window W from (X,Y_0) to (X,Y_1).  */
 +  /* Draw vertical border for window W from (X,Y_0) to (X,Y_1).  */
    void (*draw_vertical_window_border) (struct window *w,
                                         int x, int y_0, int y_1);
  
 -/* Draw window divider for window W from (X_0, Y_0) to (X_1, ,Y_1).  */
 +  /* Draw window divider for window W from (X_0, Y_0) to (X_1, ,Y_1).  */
    void (*draw_window_divider) (struct window *w,
                               int x_0, int x_1, int y_0, int y_1);
  
 -/* Shift display of frame F to make room for inserted glyphs.
 -   The area at pixel (X,Y) of width WIDTH and height HEIGHT is
 -   shifted right by SHIFT_BY pixels.  */
 +  /* Shift display of frame F to make room for inserted glyphs.
 +     The area at pixel (X,Y) of width WIDTH and height HEIGHT is
 +     shifted right by SHIFT_BY pixels.  */
    void (*shift_glyphs_for_insert) (struct frame *f,
                                     int x, int y, int width,
                                     int height, int shift_by);
  
 +  /* Start display hourglass cursor on frame F.  */
 +  void (*show_hourglass) (struct frame *f);
 +
 +  /* Cancel hourglass cursor on frame F.  */
 +  void (*hide_hourglass) (struct frame *f);
 +
  #endif /* HAVE_WINDOW_SYSTEM */
  };
  
  
  struct image_type
  {
 -  /* A symbol uniquely identifying the image type, .e.g `jpeg'.  */
 -  Lisp_Object *type;
 +  /* Index of a symbol uniquely identifying the image type, e.g., 'jpeg'.  */
 +  int type;
  
    /* Check that SPEC is a valid image specification for the given
       image type.  Value is true if SPEC is valid.  */
@@@ -3173,7 -3160,6 +3175,7 @@@ extern void bidi_push_it (struct bidi_i
  extern void bidi_pop_it (struct bidi_it *);
  extern void *bidi_shelve_cache (void);
  extern void bidi_unshelve_cache (void *, bool);
 +extern ptrdiff_t bidi_find_first_overridden (struct bidi_it *);
  
  /* Defined in xdisp.c */
  
@@@ -3182,11 -3168,12 +3184,11 @@@ struct glyph_row *row_containing_pos (s
                                        struct glyph_row *, int);
  int line_bottom_y (struct it *);
  int default_line_pixel_height (struct window *);
 -int display_prop_intangible_p (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t);
 +bool display_prop_intangible_p (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t);
  void resize_echo_area_exactly (void);
 -int resize_mini_window (struct window *, int);
 -#if defined USE_TOOLKIT_SCROLL_BARS && !defined USE_GTK
 +bool resize_mini_window (struct window *, bool);
  void set_vertical_scroll_bar (struct window *);
 -#endif
 +void set_horizontal_scroll_bar (struct window *);
  int try_window (Lisp_Object, struct text_pos, int);
  void window_box (struct window *, enum glyph_row_area,
                 int *, int *, int *, int *);
@@@ -3196,13 -3183,14 +3198,13 @@@ int window_box_width (struct window *, 
  int window_box_left (struct window *, enum glyph_row_area);
  int window_box_left_offset (struct window *, enum glyph_row_area);
  int window_box_right (struct window *, enum glyph_row_area);
 -int window_box_right_offset (struct window *, enum glyph_row_area);
  int estimate_mode_line_height (struct frame *, enum face_id);
  int move_it_to (struct it *, ptrdiff_t, int, int, int, int);
  void pixel_to_glyph_coords (struct frame *, int, int, int *, int *,
 -                            NativeRectangle *, int);
 +                            NativeRectangle *, bool);
  void remember_mouse_glyph (struct frame *, int, int, NativeRectangle *);
  
 -void mark_window_display_accurate (Lisp_Object, int);
 +void mark_window_display_accurate (Lisp_Object, bool);
  void redisplay_preserve_echo_area (int);
  void init_iterator (struct it *, struct window *, ptrdiff_t,
                      ptrdiff_t, struct glyph_row *, enum face_id);
@@@ -3218,6 -3206,7 +3220,6 @@@ void move_it_in_display_line (struct i
                              enum move_operation_enum op);
  bool in_display_vector_p (struct it *);
  int frame_mode_line_height (struct frame *);
 -extern Lisp_Object Qtool_bar;
  extern bool redisplaying_p;
  extern bool help_echo_showing_p;
  extern Lisp_Object help_echo_string, help_echo_window;
@@@ -3228,7 -3217,7 +3230,7 @@@ extern void reseat_at_previous_visible_
  extern Lisp_Object lookup_glyphless_char_display (int, struct it *);
  extern ptrdiff_t compute_display_string_pos (struct text_pos *,
                                             struct bidi_string_data *,
 -                                           struct window *, int, int *);
 +                                           struct window *, bool, int *);
  extern ptrdiff_t compute_display_string_end (ptrdiff_t,
                                             struct bidi_string_data *);
  extern void produce_stretch_glyph (struct it *);
@@@ -3257,7 -3246,9 +3259,7 @@@ extern void draw_phys_cursor_glyph (str
                                      enum draw_glyphs_face);
  extern void get_phys_cursor_geometry (struct window *, struct glyph_row *,
                                        struct glyph *, int *, int *, int *);
 -#if HAVE_NTGUI
  extern void erase_phys_cursor (struct window *);
 -#endif
  extern void display_and_set_cursor (struct window *, bool, int, int, int, int);
  extern void x_update_cursor (struct frame *, bool);
  extern void x_clear_cursor (struct window *);
@@@ -3271,20 -3262,21 +3273,20 @@@ extern void get_glyph_string_clip_rect 
  extern Lisp_Object find_hot_spot (Lisp_Object, int, int);
  
  extern void handle_tool_bar_click (struct frame *,
 -                                   int, int, int, int);
 +                                   int, int, bool, int);
  
  extern void expose_frame (struct frame *, int, int, int, int);
 -extern int x_intersect_rectangles (XRectangle *, XRectangle *,
 -                                   XRectangle *);
 +extern bool x_intersect_rectangles (XRectangle *, XRectangle *, XRectangle *);
  #endif        /* HAVE_WINDOW_SYSTEM */
  
  extern void note_mouse_highlight (struct frame *, int, int);
  extern void x_clear_window_mouse_face (struct window *);
  extern void cancel_mouse_face (struct frame *);
 -extern int clear_mouse_face (Mouse_HLInfo *);
 +extern bool clear_mouse_face (Mouse_HLInfo *);
  extern bool cursor_in_mouse_face_p (struct window *w);
  extern void tty_draw_row_with_mouse_face (struct window *, struct glyph_row *,
                                          int, int, enum draw_glyphs_face);
 -extern void display_tty_menu_item (const char *, int, int, int, int, int);
 +extern void display_tty_menu_item (const char *, int, int, int, int, bool);
  
  /* Flags passed to try_window.  */
  #define TRY_WINDOW_CHECK_MARGINS      (1 << 0)
@@@ -3295,6 -3287,7 +3297,6 @@@ void draw_fringe_bitmap (struct window 
  void draw_row_fringe_bitmaps (struct window *, struct glyph_row *);
  bool draw_window_fringes (struct window *, bool);
  bool update_window_fringes (struct window *, bool);
 -void compute_fringe_widths (struct frame *, bool);
  
  #ifdef HAVE_NTGUI
  void w32_init_fringe (struct redisplay_interface *);
@@@ -3368,31 -3361,35 +3370,31 @@@ void x_free_colors (struct frame *, uns
  void update_face_from_frame_parameter (struct frame *, Lisp_Object,
                                         Lisp_Object);
  Lisp_Object tty_color_name (struct frame *, int);
 -void clear_face_cache (int);
 -#ifdef MSDOS
 +void clear_face_cache (bool);
  unsigned long load_color (struct frame *, struct face *, Lisp_Object,
                            enum lface_attribute_index);
 -#endif
  char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object,
                          int *);
 +#ifdef HAVE_WINDOW_SYSTEM
  void prepare_face_for_display (struct frame *, struct face *);
 -int lookup_named_face (struct frame *, Lisp_Object, int);
 +#endif
 +int lookup_named_face (struct frame *, Lisp_Object, bool);
  int lookup_basic_face (struct frame *, int);
  int smaller_face (struct frame *, int, int);
  int face_with_height (struct frame *, int, int);
 -int lookup_derived_face (struct frame *, Lisp_Object, int, int);
 +int lookup_derived_face (struct frame *, Lisp_Object, int, bool);
  void init_frame_faces (struct frame *);
  void free_frame_faces (struct frame *);
  void recompute_basic_faces (struct frame *);
 -int face_at_buffer_position (struct window *w, ptrdiff_t pos,
 -                             ptrdiff_t *endptr, ptrdiff_t limit,
 -                             int mouse, int base_face_id);
 -int face_for_overlay_string (struct window *w, ptrdiff_t pos,
 -                             ptrdiff_t *endptr, ptrdiff_t limit,
 -                             int mouse, Lisp_Object overlay);
 -int face_at_string_position (struct window *w, Lisp_Object string,
 -                             ptrdiff_t pos, ptrdiff_t bufpos,
 -                             ptrdiff_t *endptr, enum face_id, int mouse);
 +int face_at_buffer_position (struct window *, ptrdiff_t, ptrdiff_t *, ptrdiff_t,
 +                             bool, int);
 +int face_for_overlay_string (struct window *, ptrdiff_t, ptrdiff_t *, ptrdiff_t,
 +                             bool, Lisp_Object);
 +int face_at_string_position (struct window *, Lisp_Object, ptrdiff_t, ptrdiff_t,
 +                             ptrdiff_t *, enum face_id, bool);
  int merge_faces (struct frame *, Lisp_Object, int, int);
  int compute_char_face (struct frame *, int, Lisp_Object);
  void free_all_realized_faces (Lisp_Object);
 -extern Lisp_Object Qforeground_color, Qbackground_color;
  extern char unspecified_fg[], unspecified_bg[];
  
  /* Defined in xfns.c.  */
@@@ -3407,7 -3404,6 +3409,7 @@@ void gamma_correct (struct frame *, COL
  #ifdef HAVE_WINDOW_SYSTEM
  
  void x_implicitly_set_name (struct frame *, Lisp_Object, Lisp_Object);
 +void x_change_tool_bar_height (struct frame *f, int);
  
  extern Lisp_Object tip_frame;
  extern Window tip_window;
@@@ -3415,6 -3411,14 +3417,6 @@@ extern frame_parm_handler x_frame_parm_
  
  extern void start_hourglass (void);
  extern void cancel_hourglass (void);
 -extern bool hourglass_shown_p;
 -/* If non-null, an asynchronous timer that, when it expires, displays
 -   an hourglass cursor on all frames.  */
 -extern struct atimer *hourglass_atimer;
 -
 -/* Each GUI implements these.  FIXME: move into RIF. */
 -extern void show_hourglass (struct atimer *);
 -extern void hide_hourglass (void);
  
  /* Returns the background color of IMG, calculating one heuristically if
     necessary.  If non-zero, XIMG is an existing XImage object to use for
  #endif /* HAVE_WINDOW_SYSTEM */
  
  
 -/* Defined in xmenu.c  */
 +/* Defined in xmenu.c.  */
  
  int popup_activated (void);
  
 -/* Defined in dispnew.c */
 +/* Defined in dispnew.c */
  
  extern Lisp_Object buffer_posn_from_coords (struct window *,
                                              int *, int *,
@@@ -3477,15 -3481,16 +3479,15 @@@ void blank_row (struct window *, struc
  void clear_glyph_matrix_rows (struct glyph_matrix *, int, int);
  void clear_glyph_row (struct glyph_row *);
  void prepare_desired_row (struct window *, struct glyph_row *, bool);
 -void update_single_window (struct window *, bool);
 +void update_single_window (struct window *);
  void do_pending_window_change (bool);
  void change_frame_size (struct frame *, int, int, bool, bool, bool, bool);
  void init_display (void);
  void syms_of_display (void);
 -extern Lisp_Object Qredisplay_dont_pause;
  extern void spec_glyph_lookup_face (struct window *, GLYPH *);
  extern void fill_up_frame_row_with_spaces (struct glyph_row *, int);
  
 -/* Defined in terminal.c */
 +/* Defined in terminal.c */
  
  extern void ring_bell (struct frame *);
  extern void update_begin (struct frame *);
@@@ -3513,6 -3518,7 +3515,6 @@@ extern void calculate_costs (struct fra
  extern void produce_glyphs (struct it *);
  extern bool tty_capable_p (struct tty_display_info *, unsigned);
  extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
 -extern struct terminal *get_named_tty (const char *);
  extern void create_tty_output (struct frame *);
  extern struct terminal *init_tty (const char *, const char *, bool);
  extern void tty_append_glyph (struct it *);
  
  /* Defined in scroll.c */
  
 -extern int scrolling_max_lines_saved (int, int, int *, int *, int *);
 +extern int scrolling_max_lines_saved (int, int, unsigned *, unsigned *, int *);
  extern void do_line_insertion_deletion_costs (struct frame *, const char *,
                                                const char *, const char *,
                                              const char *, const char *,
                                              const char *, int);
 -void scrolling_1 (struct frame *, int, int, int, int *, int *, int *,
 -                  int *, int);
 +void scrolling_1 (struct frame *, int, int, int, int *, int *, unsigned *,
 +                  unsigned *, int);
  
  /* Defined in frame.c */
  
diff --combined src/emacs.c
index c2b698ba50be2b2a3aa6167a7c067780ce72f914,9b78a70428e866405fc61ece4ad4f8252e85ad97..cb0c8417794f82f3ed4aa544084b98ebb4322cfa
@@@ -51,14 -51,15 +51,14 @@@ along with GNU Emacs.  If not, see <htt
  #include "cygw32.h"
  #endif
  
 +#ifdef MSDOS
 +#include <binary-io.h>
 +#endif
 +
  #ifdef HAVE_WINDOW_SYSTEM
  #include TERM_HEADER
  #endif /* HAVE_WINDOW_SYSTEM */
  
 -#ifdef NS_IMPL_GNUSTEP
 -/* At least under Debian, GSConfig is in a subdirectory.  --Stef  */
 -#include <GNUstepBase/GSConfig.h>
 -#endif
 -
  #include "commands.h"
  #include "intervals.h"
  #include "character.h"
@@@ -78,9 -79,7 +78,9 @@@
  #include "charset.h"
  #include "composite.h"
  #include "dispextern.h"
 +#include "regex.h"
  #include "syntax.h"
 +#include "sysselect.h"
  #include "systime.h"
  
  #include "gnutls.h"
@@@ -104,9 -103,8 +104,9 @@@ extern void moncontrol (int mode)
  #include <sys/personality.h>
  #endif
  
 -static const char emacs_version[] = VERSION;
 +static const char emacs_version[] = PACKAGE_VERSION;
  static const char emacs_copyright[] = COPYRIGHT;
 +static const char emacs_bugreport[] = PACKAGE_BUGREPORT;
  
  /* Empty lisp strings.  To avoid having to build any others.  */
  Lisp_Object empty_unibyte_string, empty_multibyte_string;
@@@ -121,9 -119,6 +121,9 @@@ Lisp_Object Vlibrary_cache
     on subsequent starts.  */
  bool initialized;
  
 +/* Set to true if this instance of Emacs might dump.  */
 +bool might_dump;
 +
  #ifdef DARWIN_OS
  extern void unexec_init_emacs_zone (void);
  #endif
@@@ -135,14 -130,21 +135,14 @@@ static void *malloc_state_ptr
  /* From glibc, a routine that returns a copy of the malloc internal state.  */
  extern void *malloc_get_state (void);
  /* From glibc, a routine that overwrites the malloc internal state.  */
 -extern int malloc_set_state (void*);
 +extern int malloc_set_state (void *);
  /* True if the MALLOC_CHECK_ environment variable was set while
     dumping.  Used to work around a bug in glibc's malloc.  */
  static bool malloc_using_checking;
 -#elif defined HAVE_PTHREAD && !defined SYSTEM_MALLOC
 +#elif defined HAVE_PTHREAD && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
  extern void malloc_enable_thread (void);
  #endif
  
 -Lisp_Object Qfile_name_handler_alist;
 -
 -Lisp_Object Qrisky_local_variable;
 -
 -Lisp_Object Qkill_emacs;
 -static Lisp_Object Qkill_emacs_hook;
 -
  /* If true, Emacs should not attempt to use a window-specific code,
     but instead should use the virtual terminal under which it was started.  */
  bool inhibit_window_system;
@@@ -206,7 -208,7 +206,7 @@@ int initial_argc
  static void sort_args (int argc, char **argv);
  static void syms_of_emacs (void);
  
 -/* C89 needs each string be at most 509 characters, so the usage
 +/* C99 needs each string to be at most 4095 characters, and the usage
     strings below are split to not overflow this limit.  */
  static char const *const usage_message[] =
    { "\
@@@ -317,7 -319,7 +317,7 @@@ abbreviation for a --option.\n
  Various environment variables and window system resources also affect\n\
  the operation of Emacs.  See the main documentation.\n\
  \n\
 -Report bugs to bug-gnu-emacs@gnu.org.  First, please see the Bugs\n\
 +Report bugs to " PACKAGE_BUGREPORT ".  First, please see the Bugs\n\
  section of the Emacs manual or the file BUGS.\n"
    };
  
@@@ -345,13 -347,13 +345,13 @@@ _Noreturn voi
  terminate_due_to_signal (int sig, int backtrace_limit)
  {
    signal (sig, SIG_DFL);
 -  totally_unblock_input ();
  
    /* If fatal error occurs in code below, avoid infinite recursion.  */
    if (! fatal_error_in_progress)
      {
        fatal_error_in_progress = 1;
  
 +      totally_unblock_input ();
        if (sig == SIGTERM || sig == SIGHUP || sig == SIGINT)
          Fkill_emacs (make_number (sig));
  
  static void
  init_cmdargs (int argc, char **argv, int skip_args, char *original_pwd)
  {
 -  register int i;
 +  int i;
    Lisp_Object name, dir, handler;
    ptrdiff_t count = SPECPDL_INDEX ();
    Lisp_Object raw_name;
 +  AUTO_STRING (slash_colon, "/:");
  
    initial_argv = argv;
    initial_argc = argc;
       if it would otherwise be treated as magic.  */
    handler = Ffind_file_name_handler (raw_name, Qt);
    if (! NILP (handler))
 -    raw_name = concat2 (build_string ("/:"), raw_name);
 +    raw_name = concat2 (slash_colon, raw_name);
  
    Vinvocation_name = Ffile_name_nondirectory (raw_name);
    Vinvocation_directory = Ffile_name_directory (raw_name);
             if it would otherwise be treated as magic.  */
          handler = Ffind_file_name_handler (found, Qt);
          if (! NILP (handler))
 -          found = concat2 (build_string ("/:"), found);
 +          found = concat2 (slash_colon, found);
          Vinvocation_directory = Ffile_name_directory (found);
        }
      }
@@@ -564,6 -565,12 +564,6 @@@ DEFUN ("invocation-directory", Finvocat
  }
  
  \f
 -#ifdef HAVE_TZSET
 -/* A valid but unlikely value for the TZ environment value.
 -   It is OK (though a bit slower) if the user actually chooses this value.  */
 -static char const dump_tz[] = "UtC0";
 -#endif
 -
  /* Test whether the next argument in ARGV matches SSTR or a prefix of
     LSTR (at least MINLEN characters).  If so, then if VALPTR is non-null
     (the argument is supposed to have a value) store in *VALPTR either
@@@ -716,13 -723,18 +716,13 @@@ main (int argc, char **argv
    stack_base = &dummy;
  #endif
  
 -#ifdef G_SLICE_ALWAYS_MALLOC
 -  /* This is used by the Cygwin build.  It's not needed starting with
 -     cygwin-1.7.24, but it doesn't do any harm.  */
 -  xputenv ("G_SLICE=always-malloc");
 +#ifndef CANNOT_DUMP
 +  might_dump = !initialized;
  #endif
  
  #ifdef GNU_LINUX
    if (!initialized)
      {
 -      extern char my_endbss[];
 -      extern char *my_endbss_static;
 -
        if (my_heap_start == 0)
          my_heap_start = sbrk (0);
  
          version = emacs_version;
          copyright = emacs_copyright;
        }
 -      printf ("GNU Emacs %s\n", version);
 +      printf ("%s %s\n", PACKAGE_NAME, version);
        printf ("%s\n", copyright);
 -      printf ("GNU Emacs comes with ABSOLUTELY NO WARRANTY.\n");
 -      printf ("You may redistribute copies of Emacs\n");
 +      printf ("%s comes with ABSOLUTELY NO WARRANTY.\n", PACKAGE_NAME);
 +      printf ("You may redistribute copies of %s\n", PACKAGE_NAME);
        printf ("under the terms of the GNU General Public License.\n");
        printf ("For more information about these matters, ");
        printf ("see the file named COPYING.\n");
        && !getrlimit (RLIMIT_STACK, &rlim))
      {
        long newlim;
 -      extern size_t re_max_failures;
        /* Approximate the amount regex.c needs per unit of re_max_failures.  */
        int ratio = 20 * sizeof (char *);
        /* Then add 33% to cover the size of the smaller stacks that regex.c
  
    clearerr (stdin);
  
 -#ifndef SYSTEM_MALLOC
 +  emacs_backtrace (-1);
 +
 +#if !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
    /* Arrange to get warning messages as memory fills up.  */
    memory_warnings (0, malloc_warning);
  
       Also call realloc and free for consistency.  */
    free (realloc (malloc (4), 4));
  
 -#endif        /* not SYSTEM_MALLOC */
 -
 -#if defined (MSDOS) || defined (WINDOWSNT)
 -  /* We do all file input/output as binary files.  When we need to translate
 -     newlines, we do that manually.  */
 -  _fmode = O_BINARY;
 -#endif /* MSDOS || WINDOWSNT */
 +#endif        /* not SYSTEM_MALLOC and not HYBRID_MALLOC */
  
  #ifdef MSDOS
 -  if (!isatty (fileno (stdin)))
 -    setmode (fileno (stdin), O_BINARY);
 -  if (!isatty (fileno (stdout)))
 -    {
 -      fflush (stdout);
 -      setmode (fileno (stdout), O_BINARY);
 -    }
 +  SET_BINARY (fileno (stdin));
 +  fflush (stdout);
 +  SET_BINARY (fileno (stdout));
  #endif /* MSDOS */
  
    /* Skip initial setlocale if LC_ALL is "C", as it's not needed in that case.
      {
        int i;
        printf ("Usage: %s [OPTION-OR-FILENAME]...\n", argv[0]);
 -      for (i = 0; i < sizeof usage_message / sizeof *usage_message; i++)
 +      for (i = 0; i < ARRAYELTS (usage_message); i++)
        fputs (usage_message[i], stdout);
        exit (0);
      }
@@@ -1119,13 -1140,12 +1119,13 @@@ Using an Emacs configured with --with-x
  #endif /* DOS_NT */
      }
  
 -#if defined HAVE_PTHREAD && !defined SYSTEM_MALLOC && !defined DOUG_LEA_MALLOC
 +#if defined HAVE_PTHREAD && !defined SYSTEM_MALLOC \
 +  && !defined DOUG_LEA_MALLOC && !defined HYBRID_MALLOC
  # ifndef CANNOT_DUMP
    /* Do not make gmalloc thread-safe when creating bootstrap-emacs, as
 -     that causes an infinite recursive loop with FreeBSD.  But do make
 -     it thread-safe when creating emacs, otherwise bootstrap-emacs
 -     fails on Cygwin.  See Bug#14569.  */
 +     that causes an infinite recursive loop with FreeBSD.  See
 +     Bug#14569.  The part of this bug involving Cygwin is no longer
 +     relevant, now that Cygwin defines HYBRID_MALLOC.  */
    if (!noninteractive || initialized)
  # endif
      malloc_enable_thread ();
    xputenv ("LANG=C");
  #endif
  
 -  init_buffer ();     /* Init default directory of main buffer.  */
 +  /* Init buffer storage and default directory of main buffer.  */
 +  init_buffer (initialized);
  
    init_callproc_1 (); /* Must precede init_cmdargs and init_sys_modes.  */
  
  
    init_charset ();
  
 -  init_editfns (); /* init_process_emacs uses Voperating_system_release. */
 -  init_process_emacs (); /* init_display uses add_keyboard_wait_descriptor. */
 +  /* This calls putenv and so must precede init_process_emacs.  Also,
 +     it sets Voperating_system_release, which init_process_emacs uses.  */
 +  init_editfns ();
 +
 +  /* These two call putenv.  */
 +#ifdef HAVE_DBUS
 +  init_dbusbind ();
 +#endif
 +#ifdef USE_GTK
 +  init_xterm ();
 +#endif
 +
 +  /* This can create a thread that may call getenv, so it must follow
 +     all calls to putenv and setenv.  Also, this sets up
 +     add_keyboard_wait_descriptor, which init_display uses.  */
 +  init_process_emacs ();
 +
    init_keyboard ();   /* This too must precede init_sys_modes.  */
    if (!noninteractive)
      init_display ();  /* Determine terminal type.  Calls init_sys_modes.  */
          if (filename_from_ansi (file, file_utf8) == 0)
            file = file_utf8;
  #endif
 -        Vtop_level = list2 (intern_c_string ("load"),
 -                            build_unibyte_string (file));
 +        Vtop_level = list2 (Qload, build_unibyte_string (file));
        }
        /* Unless next switch is -nl, load "loadup.el" first thing.  */
        if (! no_loadup)
 -      Vtop_level = list2 (intern_c_string ("load"),
 -                          build_string ("loadup.el"));
 -    }
 -
 -  if (initialized)
 -    {
 -#ifdef HAVE_TZSET
 -      {
 -      /* If the execution TZ happens to be the same as the dump TZ,
 -         change it to some other value and then change it back,
 -         to force the underlying implementation to reload the TZ info.
 -         This is needed on implementations that load TZ info from files,
 -         since the TZ file contents may differ between dump and execution.  */
 -      char *tz = getenv ("TZ");
 -      if (tz && !strcmp (tz, dump_tz))
 -        {
 -          ++*tz;
 -          tzset ();
 -          --*tz;
 -        }
 -      }
 -#endif
 +      Vtop_level = list2 (Qload, build_string ("loadup.el"));
      }
  
    /* Set up for profiling.  This is known to work on FreeBSD,
  
    initialized = 1;
  
 -#ifdef LOCALTIME_CACHE
 -  /* Some versions of localtime have a bug.  They cache the value of the time
 -     zone rather than looking it up every time.  Since localtime() is
 -     called to bolt the undumping time into the undumped emacs, this
 -     results in localtime ignoring the TZ environment variable.
 -     This flushes the new TZ value into localtime.  */
 -  tzset ();
 -#endif /* defined (LOCALTIME_CACHE) */
 -
    /* Enter editor command loop.  This never returns.  */
    Frecursive_edit ();
    /* NOTREACHED */
@@@ -1770,7 -1805,7 +1770,7 @@@ sort_args (int argc, char **argv
            }
  
          /* Look for a match with a known old-fashioned option.  */
 -        for (i = 0; i < sizeof (standard_args) / sizeof (standard_args[0]); i++)
 +        for (i = 0; i < ARRAYELTS (standard_args); i++)
            if (!strcmp (argv[from], standard_args[i].name))
              {
                options[from] = standard_args[i].nargs;
  
              match = -1;
  
 -            for (i = 0;
 -                 i < sizeof (standard_args) / sizeof (standard_args[0]); i++)
 +            for (i = 0; i < ARRAYELTS (standard_args); i++)
                if (standard_args[i].longname
                    && !strncmp (argv[from], standard_args[i].longname,
                                 thislen))
@@@ -1887,8 -1923,7 +1887,8 @@@ or SIGHUP, and upon SIGINT in batch mod
  
  The value of `kill-emacs-hook', if not void,
  is a list of functions (of no args),
 -all of which are called before Emacs is actually killed.  */)
 +all of which are called before Emacs is actually killed.  */
 +       attributes: noreturn)
    (Lisp_Object arg)
  {
    struct gcpro gcpro1;
  
    GCPRO1 (arg);
  
 -  if (feof (stdin))
 -    arg = Qt;
 -
    /* Fsignal calls emacs_abort () if it sees that waiting_for_input is
       set.  */
    waiting_for_input = 0;
 -  Frun_hooks (1, &Qkill_emacs_hook);
 +  run_hook (Qkill_emacs_hook);
    UNGCPRO;
  
  #ifdef HAVE_X_WINDOWS
    x_clipboard_manager_save_all ();
  #endif
  
 -  shut_down_emacs (0, STRINGP (arg) ? arg : Qnil);
 +  shut_down_emacs (0, (STRINGP (arg) && !feof (stdin)) ? arg : Qnil);
  
  #ifdef HAVE_NS
    ns_release_autorelease_pool (ns_pool);
@@@ -1983,7 -2021,9 +1983,7 @@@ shut_down_emacs (int sig, Lisp_Object s
    kill_buffer_processes (Qnil);
    Fdo_auto_save (Qt, Qnil);
  
 -#ifdef CLASH_DETECTION
    unlock_all_files ();
 -#endif
  
    /* There is a tendency for a SIGIO signal to arrive within exit,
       and cause a SIGHUP because the input descriptor is already closed.  */
@@@ -2038,9 -2078,6 +2038,9 @@@ You must run Emacs in batch mode in ord
    if (! noninteractive)
      error ("Dumping Emacs works only in batch mode");
  
 +  if (!might_dump)
 +    error ("Emacs can be dumped only once");
 +
  #ifdef GNU_LINUX
  
    /* Warn if the gap between BSS end and heap start is larger than this.  */
    tem = Vpurify_flag;
    Vpurify_flag = Qnil;
  
 -#ifdef HAVE_TZSET
 -  set_time_zone_rule (dump_tz);
 -#ifndef LOCALTIME_CACHE
 -  /* Force a tz reload, since set_time_zone_rule doesn't.  */
 -  tzset ();
 -#endif
 -#endif
 -
    fflush (stdout);
    /* Tell malloc where start of impure now is.  */
    /* Also arrange for warnings when nearly out of space.  */
 -#ifndef SYSTEM_MALLOC
 +#if !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
  #ifndef WINDOWSNT
    /* On Windows, this was done before dumping, and that once suffices.
       Meanwhile, my_edata is not valid on Windows.  */
 -  {
 -    extern char my_edata[];
 -    memory_warnings (my_edata, malloc_warning);
 -  }
 +  memory_warnings (my_edata, malloc_warning);
  #endif /* not WINDOWSNT */
 -#endif /* not SYSTEM_MALLOC */
 +#endif /* not SYSTEM_MALLOC and not HYBRID_MALLOC */
  #ifdef DOUG_LEA_MALLOC
    malloc_state_ptr = malloc_get_state ();
  #endif
  
 -#ifdef USE_MMAP_FOR_BUFFERS
 -  mmap_set_vars (0);
 -#endif
    unexec (SSDATA (filename), !NILP (symfile) ? SSDATA (symfile) : 0);
 -#ifdef USE_MMAP_FOR_BUFFERS
 -  mmap_set_vars (1);
 -#endif
 +
  #ifdef DOUG_LEA_MALLOC
    free (malloc_state_ptr);
  #endif
@@@ -2247,7 -2300,7 +2247,7 @@@ decode_env_path (const char *evarname, 
        p = strchr (path, SEPCHAR);
        if (!p)
        p = path + strlen (path);
-       element = (p - path ? make_unibyte_string (path, p - path)
+       element = ((p - path) ? make_unibyte_string (path, p - path)
                 : empty_element);
        if (! NILP (element))
          {
              }
  
            if (! NILP (tem))
 -            element = concat2 (build_string ("/:"), element);
 +          {
 +            AUTO_STRING (slash_colon, "/:");
 +            element = concat2 (slash_colon, element);
 +          }
          } /* !NILP (element) */
  
        lpath = Fcons (element, lpath);
@@@ -2396,12 -2446,6 +2396,12 @@@ hpux, irix, usg-unix-v) indicates some 
               doc: /* String containing the configuration options Emacs was built with.  */);
    Vsystem_configuration_options = build_string (EMACS_CONFIG_OPTIONS);
  
 +  DEFVAR_LISP ("system-configuration-features", Vsystem_configuration_features,
 +             doc: /* String listing some of the main features this Emacs was compiled with.
 +An element of the form \"FOO\" generally means that HAVE_FOO was
 +defined during the build.  */);
 +  Vsystem_configuration_features = build_string (EMACS_CONFIG_FEATURES);
 +
    DEFVAR_BOOL ("noninteractive", noninteractive1,
               doc: /* Non-nil means Emacs is running without interactive terminal.  */);
  
@@@ -2479,10 -2523,6 +2479,10 @@@ This is nil during initialization.  */)
               doc: /* Version numbers of this version of Emacs.  */);
    Vemacs_version = build_string (emacs_version);
  
 +  DEFVAR_LISP ("report-emacs-bug-address", Vreport_emacs_bug_address,
 +             doc: /* Address of mailing list for GNU Emacs bugs.  */);
 +  Vreport_emacs_bug_address = build_string (emacs_bugreport);
 +
    DEFVAR_LISP ("dynamic-library-alist", Vdynamic_library_alist,
      doc: /* Alist of dynamic libraries vs external files implementing them.
  Each element is a list (LIBRARY FILE...), where the car is a symbol
diff --combined src/w32.c
index 90096689776395cb6a879e3355c35b3ab60ab94d,f8284f3e4cca06152b9e97c3defe75f46df198f5..547db0f6dd93fb7af1c57de4285fb651838cad78
+++ b/src/w32.c
@@@ -73,11 -73,9 +73,11 @@@ along with GNU Emacs.  If not, see <htt
  #include <grp.h>
  
  /* MinGW64 defines these in its _mingw.h.  */
 -#if defined(__GNUC__) && !defined(MINGW_W64)
 -#define _ANONYMOUS_UNION
 -#define _ANONYMOUS_STRUCT
 +#ifndef _ANONYMOUS_UNION
 +# define _ANONYMOUS_UNION
 +#endif
 +#ifndef _ANONYMOUS_STRUCT
 +# define _ANONYMOUS_STRUCT
  #endif
  #include <windows.h>
  /* Some versions of compiler define MEMORYSTATUSEX, some don't, so we
@@@ -242,6 -240,8 +242,6 @@@ typedef struct _REPARSE_DATA_BUFFER 
  typedef HRESULT (WINAPI * ShGetFolderPath_fn)
    (IN HWND, IN int, IN HANDLE, IN DWORD, OUT char *);
  
 -Lisp_Object QCloaded_from;
 -
  void globals_of_w32 (void);
  static DWORD get_rid (PSID);
  static int is_symlink (const char *);
@@@ -307,8 -307,6 +307,8 @@@ static BOOL g_b_init_set_named_security
  static BOOL g_b_init_set_named_security_info_a;
  static BOOL g_b_init_get_adapters_info;
  
 +BOOL g_b_init_compare_string_w;
 +
  /*
    BEGIN: Wrapper functions around OpenProcessToken
    and other functions in advapi32.dll that are only
@@@ -882,7 -880,7 +882,7 @@@ set_named_security_info (LPCTSTR lpObje
          g_b_init_set_named_security_info_a = 1;
          hm_advapi32 = LoadLibrary ("Advapi32.dll");
          s_pfn_Set_Named_Security_InfoA =
 -          (SetNamedSecurityInfoA_Proc) GetProcAddress (hm_advapi32, 
 +          (SetNamedSecurityInfoA_Proc) GetProcAddress (hm_advapi32,
                                                         "SetNamedSecurityInfoA");
        }
        if (s_pfn_Set_Named_Security_InfoA == NULL)
@@@ -1709,7 -1707,7 +1709,7 @@@ static unsigned num_of_processors
  /* We maintain 1-sec samples for the last 16 minutes in a circular buffer.  */
  static struct load_sample samples[16*60];
  static int first_idx = -1, last_idx = -1;
 -static int max_idx = sizeof (samples) / sizeof (samples[0]);
 +static int max_idx = ARRAYELTS (samples);
  
  static int
  buf_next (int from)
@@@ -2292,7 -2290,7 +2292,7 @@@ get_long_basename (char * name, char * 
  
  /* Get long name for file, if possible (assumed to be absolute).  */
  BOOL
 -w32_get_long_filename (char * name, char * buf, int size)
 +w32_get_long_filename (const char * name, char * buf, int size)
  {
    char * o = buf;
    char * p;
  }
  
  unsigned int
 -w32_get_short_filename (char * name, char * buf, int size)
 +w32_get_short_filename (const char * name, char * buf, int size)
  {
    if (w32_unicode_filenames)
      {
@@@ -2417,6 -2415,7 +2417,6 @@@ unsetenv (const char *name
  {
    char *var;
    size_t name_len;
 -  int retval;
  
    if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
      {
@@@ -2515,7 -2514,7 +2515,7 @@@ init_environment (char ** argv
  
    int i;
  
 -  const int imax = sizeof (tempdirs) / sizeof (tempdirs[0]);
 +  const int imax = ARRAYELTS (tempdirs);
  
    /* Implementation note: This function explicitly works with ANSI
       file names, not with UTF-8 encoded file names.  This is because
        {"LANG", NULL},
      };
  
 -#define N_ENV_VARS sizeof (dflt_envvars)/sizeof (dflt_envvars[0])
 +#define N_ENV_VARS ARRAYELTS (dflt_envvars)
  
      /* We need to copy dflt_envvars[] and work on the copy because we
         don't want the dumped Emacs to inherit the values of
@@@ -3403,10 -3402,10 +3403,10 @@@ sys_readdir (DIR *dirp
        int ln;
  
        strcpy (filename, dir_pathname);
 -      ln = strlen (filename) - 1;
 -      if (!IS_DIRECTORY_SEP (filename[ln]))
 -      strcat (filename, "\\");
 -      strcat (filename, "*");
 +      ln = strlen (filename);
 +      if (!IS_DIRECTORY_SEP (filename[ln - 1]))
 +      filename[ln++] = '\\';
 +      strcpy (filename + ln, "*");
  
        /* Note: No need to resolve symlinks in FILENAME, because
         FindFirst opens the directory that is the target of a
              break;
            case ERROR_PATH_NOT_FOUND:
            case ERROR_INVALID_DRIVE:
+           case ERROR_NOT_READY:
            case ERROR_BAD_NETPATH:
            case ERROR_BAD_NET_NAME:
              errno = ENOENT;
@@@ -5005,7 -5005,7 +5006,7 @@@ stat_worker (const char * path, struct 
        {
          /* Make sure root directories end in a slash.  */
          if (!IS_DIRECTORY_SEP (name[len-1]))
 -          strcat (name, "\\");
 +          strcpy (name + len, "\\");
          if (GetDriveType (name) < 2)
            {
              errno = ENOENT;
@@@ -5474,7 -5474,8 +5475,7 @@@ symlink (char const *filename, char con
        p--;
        if (p > linkfn)
        strncpy (tem, linkfn, p - linkfn);
 -      tem[p - linkfn] = '\0';
 -      strcat (tem, filename);
 +      strcpy (tem + (p - linkfn), filename);
        dir_access = faccessat (AT_FDCWD, tem, D_OK, AT_EACCESS);
      }
    else
@@@ -6994,35 -6995,6 +6995,35 @@@ system_process_attributes (Lisp_Object 
    return attrs;
  }
  
 +int
 +w32_memory_info (unsigned long long *totalram, unsigned long long *freeram,
 +               unsigned long long *totalswap, unsigned long long *freeswap)
 +{
 +  MEMORYSTATUS memst;
 +  MEMORY_STATUS_EX memstex;
 +
 +  /* Use GlobalMemoryStatusEx if available, as it can report more than
 +     2GB of memory.  */
 +  if (global_memory_status_ex (&memstex))
 +    {
 +      *totalram  = memstex.ullTotalPhys;
 +      *freeram   = memstex.ullAvailPhys;
 +      *totalswap = memstex.ullTotalPageFile;
 +      *freeswap  = memstex.ullAvailPageFile;
 +      return 0;
 +    }
 +  else if (global_memory_status (&memst))
 +    {
 +      *totalram = memst.dwTotalPhys;
 +      *freeram   = memst.dwAvailPhys;
 +      *totalswap = memst.dwTotalPageFile;
 +      *freeswap  = memst.dwAvailPageFile;
 +      return 0;
 +    }
 +  else
 +    return -1;
 +}
 +
  \f
  /* Wrappers for  winsock functions to map between our file descriptors
     and winsock's handles; also set h_errno for convenience.
@@@ -7927,7 -7899,7 +7928,7 @@@ pipe2 (int * phandles, int pipe2_flags
    int rc;
    unsigned flags;
  
 -  eassert (pipe2_flags == O_CLOEXEC);
 +  eassert (pipe2_flags == (O_BINARY | O_CLOEXEC));
  
    /* make pipe handles non-inheritable; when we spawn a child, we
       replace the relevant handle with an inheritable one.  Also put
@@@ -8300,7 -8272,6 +8301,7 @@@ in
  sys_write (int fd, const void * buffer, unsigned int count)
  {
    int nchars;
 +  USE_SAFE_ALLOCA;
  
    if (fd < 0)
      {
        /* Perform text mode translation if required.  */
        if ((fd_info[fd].flags & FILE_BINARY) == 0)
        {
 -        char * tmpbuf = alloca (count * 2);
 -        unsigned char * src = (void *)buffer;
 -        unsigned char * dst = tmpbuf;
 +        char * tmpbuf;
 +        const unsigned char * src = buffer;
 +        unsigned char * dst;
          int nbytes = count;
  
 +        SAFE_NALLOCA (tmpbuf, 2, count);
 +        dst = tmpbuf;
 +
          while (1)
            {
              unsigned char *next;
 -            /* copy next line or remaining bytes */
 +            /* Copy next line or remaining bytes.  */
              next = _memccpy (dst, src, '\n', nbytes);
              if (next)
                {
 -                /* copied one line ending with '\n' */
 +                /* Copied one line ending with '\n'.  */
                  int copied = next - dst;
                  nbytes -= copied;
                  src += copied;
 -                /* insert '\r' before '\n' */
 +                /* Insert '\r' before '\n'.  */
                  next[-1] = '\r';
                  next[0] = '\n';
                  dst = next + 1;
                  count++;
                }
              else
 -              /* copied remaining partial line -> now finished */
 +              /* Copied remaining partial line -> now finished.  */
                break;
            }
          buffer = tmpbuf;
        HANDLE wait_hnd[2] = { interrupt_handle, ovl->hEvent };
        DWORD active = 0;
  
 +      /* This is async (a.k.a. "overlapped") I/O, so the return value
 +       of FALSE from WriteFile means either an error or the output
 +       will be completed asynchronously (ERROR_IO_PENDING).  */
        if (!WriteFile (hnd, buffer, count, (DWORD*) &nchars, ovl))
        {
          if (GetLastError () != ERROR_IO_PENDING)
            {
              errno = EIO;
 -            return -1;
 +            nchars = -1;
            }
 -        if (detect_input_pending ())
 -          active = MsgWaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE,
 -                                              QS_ALLINPUT);
          else
 -          active = WaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE);
 -        if (active == WAIT_OBJECT_0)
 -          { /* User pressed C-g, cancel write, then leave.  Don't bother
 -               cleaning up as we may only get stuck in buggy drivers.  */
 -            PurgeComm (hnd, PURGE_TXABORT | PURGE_TXCLEAR);
 -            CancelIo (hnd);
 -            errno = EIO;
 -            return -1;
 -          }
 -        if (active == WAIT_OBJECT_0 + 1
 -            && !GetOverlappedResult (hnd, ovl, (DWORD*) &nchars, TRUE))
            {
 -            errno = EIO;
 -            return -1;
 +            /* Wait for the write to complete, and watch C-g while
 +               at that.  */
 +            if (detect_input_pending ())
 +              active = MsgWaitForMultipleObjects (2, wait_hnd, FALSE,
 +                                                  INFINITE, QS_ALLINPUT);
 +            else
 +              active = WaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE);
 +            switch (active)
 +              {
 +              case WAIT_OBJECT_0:
 +                /* User pressed C-g, cancel write, then leave.
 +                   Don't bother cleaning up as we may only get stuck
 +                   in buggy drivers.  */
 +                PurgeComm (hnd, PURGE_TXABORT | PURGE_TXCLEAR);
 +                CancelIo (hnd);
 +                errno = EIO;  /* Why not EINTR? */
 +                nchars = -1;
 +                break;
 +              case WAIT_OBJECT_0 + 1:
 +                if (!GetOverlappedResult (hnd, ovl, (DWORD*) &nchars, TRUE))
 +                  {
 +                    errno = EIO;
 +                    nchars = -1;
 +                  }
 +                break;
 +              }
            }
        }
      }
        }
      }
  
 +  SAFE_FREE ();
    return nchars;
  }
  
@@@ -8823,13 -8777,6 +8824,13 @@@ w32_delayed_load (Lisp_Object library_i
                               /* Possibly truncated */
                               ? make_specified_string (name, -1, len, 1)
                               : Qnil);
 +              /* This prevents thread start and end notifications
 +                 from being sent to the DLL, for every thread we
 +                 start.  We don't need those notifications because
 +                 threads we create never use any of these DLLs, only
 +                 the main thread uses them.  This is supposed to
 +                 speed up thread creation.  */
 +              DisableThreadLibraryCalls (dll_handle);
                break;
              }
          }
@@@ -9163,7 -9110,6 +9164,7 @@@ globals_of_w32 (void
    g_b_init_set_named_security_info_w = 0;
    g_b_init_set_named_security_info_a = 0;
    g_b_init_get_adapters_info = 0;
 +  g_b_init_compare_string_w = 0;
    num_of_processors = 0;
    /* The following sets a handler for shutdown notifications for
       console apps. This actually applies to Emacs in both console and
@@@ -9383,6 -9329,8 +9384,6 @@@ ssize_
  emacs_gnutls_pull (gnutls_transport_ptr_t p, void* buf, size_t sz)
  {
    int n, err;
 -  SELECT_TYPE fdset;
 -  struct timespec timeout;
    struct Lisp_Process *process = (struct Lisp_Process *)p;
    int fd = process->infd;
  
diff --combined test/ChangeLog
index 7ba14964c0a9accc8a581bbf9fa69a8ea1d3d07b,f33cf84cf98c41ae708007a7faf0cacf97b98a33..ff3042e8cbf8c86e670e46d3f97b9b008c03b71e
@@@ -1,82 -1,17 +1,95 @@@
 -2015-01-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
++2015-02-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+       * automated/python-tests.el
+       (python-indent-dedent-line-backspace-2)
+       (python-indent-dedent-line-backspace-3): New tests.
 -2015-01-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
++2015-02-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
+       * automated/python-tests.el (python-indent-pep8-1)
+       (python-indent-pep8-2, python-indent-pep8-3)
+       (python-indent-after-comment-2): Fix tests.
+       (python-indent-after-comment-3): New test.
 -2015-01-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2015-02-24  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/f90.el (f90-test-bug-19809): New test.
 +
 +2015-02-22  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp-test17-insert-directory):
 +      Suppress localized settings in order to have a proper check for
 +      the summary line.
 +
 +2015-02-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (make-instance): Add methods
 +      here rather than on eieio-constructor.
 +
 +2015-02-13  Magnus Henoch  <magnus.henoch@gmail.com>
 +
 +      * automated/sasl-scram-rfc-tests.el: New file.
 +
 +2015-02-11  Nicolas Petton <nicolas@petton.fr>
 +
 +      * automated/seq-tests.el (test-seq-reverse, test-seq-group-by):
 +      Add a test for seq-reverse and update test for seq-group-by to
 +      test vectors and strings, not only lists.
 +
 +2015-02-10  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/package-test.el (package-test-signed):
 +      More informative failure messages.
 +
 +2015-02-09  Nicolas Petton <nicolas@petton.fr>
 +
 +      * automated/seq-tests.el (test-seq-group-by): Update test for
 +      seq-group-by to check that sequence elements are returned in the
 +      correct order.
 +
 +2015-02-07  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-eldoc--get-symbol-at-point-1)
 +      (python-eldoc--get-symbol-at-point-2)
 +      (python-eldoc--get-symbol-at-point-3)
 +      (python-eldoc--get-symbol-at-point-4): New tests.
 +
 +      * automated/python-tests.el (python-tests-visible-string):
 +      New function.
 +      (python-parens-electric-indent-1)
 +      (python-triple-quote-pairing): Fix indentation, move require calls.
 +      (python-hideshow-hide-levels-1)
 +      (python-hideshow-hide-levels-2): New tests.
 +
 +2015-02-07  Dmitry Gutov  <dgutov@yandex.ru>
 +
 +      * automated/vc-tests.el (vc-test--working-revision): Fix
 +      `vc-working-revision' checks to be compared against nil, which is
 +      what is should return for unregistered files.
 +
 +2015-02-06 Nicolas Petton <nicolas@petton.fr>
 +
 +      * automated/seq-tests.el: New tests for seq-mapcat, seq-partition
 +      and seq-group-by.
 +
 +2015-02-05  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * automated/package-test.el (package-test-get-deps): Fix typo.
 +      (package-test-sort-by-dependence): New test
 +
 +2015-02-03  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * automated/package-test.el (package-test-get-deps): New test.
 +
 +2015-01-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el (eieio-test-23-inheritance-check): Simplify.
 +
 +2015-01-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test.
 +
 +2015-01-28  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-indent-pep8-1)
        (python-indent-pep8-2, python-indent-pep8-3)
        (python-indent-inside-string-2, python-indent-inside-string-3)
        (python-indent-dedent-line-backspace-1): New Tests.
  
 -2015-01-24  Glenn Morris  <rgm@gnu.org>
 +2015-01-28  Glenn Morris  <rgm@gnu.org>
  
        * automated/regexp-tests.el: Require regexp-opt, which is
        not preloaded --without-x.
  
 +2015-01-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/cl-generic-tests.el: Try and make sure cl-lib is not
 +      required at run-time.
 +
 +2015-01-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/cl-generic-tests.el (cl-generic-test-11-next-method-p):
 +      New test.
 +
 +2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * indent/shell.sh (bar): Use '[ $# -eq 0 ]', not '[ $# == 0 ]'.
 +      This is more portable in shell scripts.
 +      Fixes: bug#19658
 +
  2015-01-23  Dmitry Gutov  <dgutov@yandex.ru>
  
        Fix package tests when TMPDIR is in HOME.  (Bug#19657)
        (package-test-describe-package, package-test-signed):
        Expect abbreviated directory names.
  
 -2015-01-22  Wolfgang Jenkner  <wjenkner@inode.at>
 +2015-01-22  Jorgen Schaefer  <contact@jorgenschaefer.de>
 +
 +      * automated/package-test.el (package-test-install-prioritized):
 +      Re-add the test case and add priority to the correct repository
 +      this time around.
 +
 +2015-01-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/cl-generic-tests.el (setf cl--generic-2): Make sure
 +      the setf can be used already in the body of the method.
 +
 +2015-01-20  Jorgen Schaefer  <contact@jorgenschaefer.de>
 +
 +      * automated/package-test.el (package-test-install-prioritized):
 +      Remove test due to unreproducible failures.
 +
 +2015-01-20  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * automated/descr-text-test.el: New file with tests for
 +      `describe-char-eldoc--truncate', `describe-char-eldoc--format',
 +      and `describe-char-eldoc'.
 +
 +2015-01-20  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * automated/tildify-tests.el (tildify-space-undo-test--test):
 +      A new helper function for testing `tildify-double-space-undos'
 +      behaviour in the `tildify-space' function.
 +      (tildify-space-undo-test-html, tildify-space-undo-test-html-nbsp)
 +      (tildify-space-undo-test-xml, tildify-space-undo-test-tex):
 +      New tests for `tildify-doule-space-undos' behaviour.
 +
 +      * automated/tildify-tests.el (tildify-space-test--test):
 +      A new helper function for testing `tildify-space' function.
 +      (tildify-space-test-html, tildify-space-test-html-nbsp)
 +      (tildify-space-test-xml, tildify-space-test-tex): New tests for
 +      `tildify-space' function.
 +
 +2015-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/Makefile.in (EMACS_EXTRAOPT): New var.
 +      (EMACSOPT): Use it.
 +
 +      * automated/cl-generic-tests.el (cl-generic-test-10-weird): New test.
 +      Rename other tests to preserve ordering.
 +
 +2015-01-18  Leo Liu  <sdl.web@gmail.com>
 +
 +      * automated/seq-tests.el (test-seq-subseq): Add more tests.
 +      (Bug#19434)
 +
 +2015-01-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-cl-generic-1):
 +      Test `subclass' specializer.
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el
 +      (eieio-test-37-obsolete-name-in-constructor): New test.
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el (eieio-test-25-slot-tests)
 +      (eieio-test-26-default-inheritance, eieio-test-28-slot-protection)
 +      (eieio-test-30-slot-attribute-override)
 +      (eieio-test-31-slot-attribute-override-class-allocation): Don't check
 +      that we enforce :protection since we don't any more.
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-method-store):
 +      Use an explicit arg instead of eieio--scoped-class.  Update all callers.
 +
 +2015-01-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-cl-generic-1):
 +      Reset eieio-test--1.
 +
 +      * automated/cl-generic-tests.el (cl-generic-test-8-after/before):
 +      Rename from cl-generic-test-7-after/before.
 +      (cl--generic-test-advice): New function.
 +      (cl-generic-test-9-advice): New test.
 +
 +2015-01-16  Jorgen Schaefer  <contact@jorgenschaefer.de>
 +
 +      * automated/package-test.el (package-test-install-prioritized):
 +      New test.
 +
 +2015-01-15  Wolfgang Jenkner  <wjenkner@inode.at>
  
        * automated/calc-tests.el (calc-tests-equal, calc-tests-simple):
        New functions.
        (test-calc-remove-units, test-calc-extract-units)
        (test-calc-convert-units): New tests.
 -      [Backport]
  
 -2014-12-30  Michael Albinus  <michael.albinus@gmx.de>
 +2015-01-15  Wolfgang Jenkner  <wjenkner@inode.at>
 +
 +      * automated/Makefile.in (WRITE_LOG): Use POSIX redirection.
 +
 +2015-01-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-method-store): Add
 +      keysym arg instead of relying on internal var eieio--generic-call-key.
 +      Update all callers.
 +      (eieio-test-cl-generic-1): New tests.
 +
 +2015-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/cl-generic-tests.el: New file.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el (eieio-test-23-inheritance-check): Don't use
 +      <foo>-child-p.
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-method-store):
 +      Update reference to eieio--generic-call-key.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el: Use cl-lib.  Don't use <class> as a variable.
 +      Don't use <class>-list types and <class>-list-p predicates.
 +
 +      * automated/eieio-test-persist.el (persistent-with-objs-list-slot):
 +      Don't use <class>-list type.
 +
 +      * automated/eieio-test-methodinvoke.el
 +      (eieio-test-method-order-list-4):
 +      Don't use <class> as a variable.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el (eieio-test-04-static-method)
 +      (eieio-test-05-static-method-2): Use oref-default to access
 +      class slots.
 +      (eieio-test-23-inheritance-check): Don't assume that
 +      eieio-class-parents returns class names, or that a class can only have
 +      a single name.
 +
 +      * automated/eieio-test-persist.el (eieio--attribute-to-initarg):
 +      Move from eieio-core.el.  Rename from eieio-attribute-to-initarg.
 +      Change arg to be a class object.  Update all callers.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-method-store):
 +      Adjust to new semantics of eieio--scoped-class.
 +      (eieio-test-match): Improve error feedback.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-tests.el: Remove dummy object names.
 +
 +      * automated/eieio-test-persist.el (persistent-with-objs-slot-subs):
 +      The type FOO-child is the same as FOO.
 +
 +2015-01-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/eieio-test-methodinvoke.el (eieio-test-method-store):
 +      Remove use of eieio-generic-call-methodname.
 +      (eieio-test-method-order-list-3, eieio-test-method-order-list-6)
 +      (eieio-test-method-order-list-7, eieio-test-method-order-list-8):
 +      Adjust the expected result accordingly.
 +
 +2015-01-01  Michael Albinus  <michael.albinus@gmx.de>
  
        * automated/tramp-tests.el (tramp--test-smb-or-windows-nt-p):
        New defun.
        (tramp-test30-special-characters): Use it.  (Bug#19463)
        (tramp--test-check-files): Filter nil file names out.
  
 -2014-12-29  Michael Albinus  <michael.albinus@gmx.de>
 +2015-01-01  Michael Albinus  <michael.albinus@gmx.de>
  
        Sync with Tramp 2.2.11.
  
        * automated/tramp-tests.el (tramp-test30-special-characters):
        Skip test on MS-Windows.
  
 +2014-12-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/let-alist.el: Load dependency.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el
 +      (python-shell-completion-native-interpreter-disabled-p-1): New test.
 +
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-shell-get-or-create-process-1)
 +      (python-shell-get-or-create-process-2)
 +      (python-shell-get-or-create-process-3): Remove tests.
 +
  2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-shell-buffer-substring-9): New test.
        (python-info-encoding-from-cookie-7, python-info-encoding-1)
        (python-info-encoding-2): New tests.
  
 -2014-12-25  Michael Albinus  <michael.albinus@gmx.de>
 +2014-12-27  Michael Albinus  <michael.albinus@gmx.de>
  
        * automated/tramp-tests.el (tramp-test17-insert-directory): Do not
        expect a given order of "." and "..".
  
 -2014-12-22  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-12-27  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-indent-electric-colon-2)
        (python-indent-electric-colon-3): New tests.
  
 -2014-12-14  João Távora  <joaotavora@gmail.com>
 +2014-12-27  João Távora  <joaotavora@gmail.com>
  
        * automated/electric-tests.el (autowrapping-7): Tests for
        tex-mode.
  
 -2014-12-13  Glenn Morris  <rgm@gnu.org>
 +2014-12-27  Glenn Morris  <rgm@gnu.org>
  
        * automated/flymake/warnpred/test.pl: Tweak format, since the
        previous one seems to have stopped giving a warning with perl 5.20.1.
  
 -2014-11-22  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-12-26  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-shell-get-process-name-1)
 +      (python-shell-internal-get-process-name-1): Cleanup.
 +      (python-shell-get-process-name-2)
 +      (python-shell-internal-get-process-name-2): New tests.
 +      (python-shell-calculate-command-1)
 +      (python-shell-calculate-process-environment-3)
 +      (python-shell-calculate-exec-path-2, python-shell-make-comint-1)
 +      (python-shell-make-comint-2, python-shell-make-comint-4)
 +      (python-shell-get-process-1, python-util-clone-local-variables-1):
 +      Replace obsolete function and variable references with current.
 +
 +2014-12-19  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * automated/let-alist.el: require `cl-lib'
 +      New tests for accessing alists inside alists.
 +
 +2014-12-18  Artur Malabarba  <bruce.connor.am@gmail.com>
 +
 +      * automated/let-alist.el: New file.
 +
 +2014-12-16  Nicolas Petton <petton.nicolas@gmail.com>
 +
 +      * automated/seq-tests.el: New file.
 +
 +2014-12-16  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/data/flymake/Makefile (check-syntax):
 +      Prevent colorized gcc output from confusing flymake.
 +
 +      * automated/flymake-tests.el (flymake-tests-data-directory):
 +      Change from flymake/warnpred to more standard data/flymake.
 +      * automated/flymake/warnpred/: Rename to automated/data/flymake/.
 +
 +2014-12-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/vc-tests.el (vc-test--revision-granularity-function):
 +      New defun.
 +      (vc-test--create-repo-function): Rename from
 +      `vc-test--create-repo-if-not-supported'.  Adapt all callees.
 +      (vc-test--create-repo): Check also for revision-granularity.
 +      (vc-test--unregister-function): Additional argument FILE.
 +      Adapt all callees.
 +      (vc-test--working-revision): New defun.
 +      (vc-test-*-working-revision): New tests.
 +
 +2014-12-10  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/vc-tests.el (vc-test--register): Check, that the file
 +      still exists after register and unregister operations.
 +
 +2014-12-06  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/vc-tests.el: New file.
 +
 +2014-12-03  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp-test29-vc-registered):
 +      Fallback for changed `vc-register' argument list.
 +
 +2014-12-03  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/tramp-tests.el (tramp-test29-vc-registered):
 +      Update for recent incompatible change in vc-register.
 +
 +2014-11-29  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el
        (python-shell-calculate-process-environment-4)
        (python-shell-get-or-create-process-3): Fix interpreter for
        Windows (Bug#18595).
  
 -2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-11-21  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/libxml-tests.el
 +      (libxml-tests--data-comments-preserved): Rename from
 +      'libxml-tests--data'.
 +      (libxml-tests--data-comments-discarded): New.
 +      (libxml-tests): Check whether 'libxml-parse-xml-region' is
 +      discarding comments correctly.
 +
 +2014-11-17  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * automated/tildify-tests.el (tildify-test-html, tildify-test-xml):
 +      HTML and XML now use no-break space as hard space.  Update tests.
 +      (tildify-test-foreach-ignore-environments)
 +      (tildify-test-foreach-ignore-environments-early-return,
 +      (tildify-test-foreach-region)
 +      (tildify-test-foreach-region-early-return)
 +      (tildify-test-foreach-region-limit-region): New tests of
 +      `tildify-foreach-ignore-environments' and
 +      `tildify--foreach-region' functions.
 +      (with-test-foreach): New helper macro for the above tests.
 +
 +2014-11-17  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/occur-tests.el (occur-test-case, occur-test-create):
 +      In case of failure, show the actual string, rather than just nil.
 +      (occur-tests): Update for apparent change in output re control-chars.
 +
 +2014-11-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar-tests--test-export):
 +      New optional parameter `alarms'.
 +      (icalendar-export-alarms): New test for exporting icalendar
 +      alarms.
 +      (icalendar-tests--test-cycle): Let `icalendar-export-alarms' be nil.
 +
 +2014-11-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar-tests--test-import):
 +      Mention timezone in doc string.  Clean up.
 +      (icalendar-real-world): Add another test case for no-dst
 +      timezones.
 +
 +2014-11-16  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar--parse-vtimezone):
 +      Add testcase where offsets of standard time and daylight saving time
 +      are equal.
 +      (icalendar-real-world): Fix error in test case.  Expected result
 +      was wrong when offsets of standard time and daylight saving time
 +      were equal.
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el
 +      (python-shell-calculate-process-environment-2): Fix test.
 +      (python-shell-calculate-process-environment-1)
 +      (python-shell-calculate-process-environment-3): Cleanup.
 +
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-indent-dedenters-8): New test
        for Bug#18432.
  
 -2014-11-15  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-11-16  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-indent-region-1)
        (python-indent-region-2, python-indent-region-3)
        (python-indent-region-4, python-indent-region-5): New tests.
  
 -2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +2014-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Backport Tramp changes from trunk.
 +      * automated/bytecomp-tests.el (bytecomp-tests--warnings): New tests.
 +      * automated/cl-lib-tests.el: Rename from cl-lib.el.
  
 -      * automated/tramp-tests.el (tramp-remote-process-environment):
 -      Declare.
 -      (tramp--test-enabled): Ignore errors.
 -      (tramp--instrument-test-case): Extend docstring.  Print debug
 -      buffer in any case.
 -      (tramp-test15-copy-directory): Skip for tramp-smb.el.
 -      (tramp-test21-file-links): Use `file-truename' for directories.
 -      (tramp-test26-process-file): Extend test according to Bug#17815.
 -      (tramp-test27-start-file-process, tramp-test28-shell-command):
 -      Retrieve process output more robustly.
 -      (tramp-test29-vc-registered): Set $BZR_HOME.
 -      (tramp--test-check-files): Extend test with `substitute-in-file-name'.
 -      (tramp-test30-special-characters): Skip for tramp-adb.el,
 -      tramp-gvfs.el and tramp-smb.el.  Add further file names.
 +2014-10-28  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/libxml-tests.el: New file.
 +
 +2014-10-22  Noam Postavsky  <npostavs@users.sourceforget.net>
 +
 +      * automated/process-tests.el (process-test-quoted-batfile):
 +      New test.
  
  2014-10-20  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 24.4 released.
 +      * Merge in all changes up to 24.4 release.
 +
 +2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent/scss-mode.scss: New file.
 +      * indent/css-mode.css: Add a few uneventful examples.
 +
 +2014-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * BidiCharacterTest.txt: New file, from Unicode.
 +
 +      * biditest.el: New file.
  
 -2014-10-01  Glenn Morris  <rgm@gnu.org>
 +2014-10-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      * automated/print-tests.el: New file.
 +      (terpri): Tests for terpri.  (Bug#18652)
 +
 +2014-10-06  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/icalendar-tests.el (icalendar--calendar-style):
 +      Remove test, no longer relevant.
 +
 +2014-10-04  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/package-x-test.el: Remove file...
 +      * automated/package-test.el: ... merge package-x-test.el.  (Bug#18574)
 +
 +2014-10-02  Glenn Morris  <rgm@gnu.org>
  
        * automated/package-test.el (with-package-test, package-test-signed):
        Also set HOME to a temp value, in case the real one is absent (e.g.
        hydra) or read-only.  (Bug#18575)
        (package-test-signed): Use skip-unless rather than expected-result.
  
 -2014-09-01  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-09-26  Leo Liu  <sdl.web@gmail.com>
  
 -      * automated/python-tests.el:
 -      (python-indent-electric-colon-1): New test.  (Bug#18228)
 +      * automated/cl-lib.el (cl-digit-char-p, cl-parse-integer):
 +      New tests.  (Bug#18557)
 +
 +2014-09-24  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/newsticker-tests.el
 +      (newsticker--group-find-parent-group),
 +      (newsticker--group-do-rename-group): New tests.
 +
 +2014-09-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * automated/fns-tests.el (fns-tests-collate-sort):
 +      Bind w32-collate-ignore-punctuation to t when sorting according to
 +      UTS#10 rules.
 +
 +2014-09-07  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/fns-tests.el (fns-tests--collate-enabled-p): New function.
 +      (fns-tests-collate-strings, fns-tests-collate-sort): Use it.
 +
 +2014-09-05  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/fns-tests.el (fns-tests-compare-strings): In case
 +      `compare-strings' shall return t, check for this.
 +      (fns-tests-collate-strings, fns-tests-collate-sort): New tests.
 +
 +2014-09-03  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-indent-electric-colon-1):
 +      New test.  (Bug#18228)
 +
 +2014-08-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * automated/fns-tests.el (fns-tests-sort): New test.
  
 -2014-08-18  Glenn Morris  <rgm@gnu.org>
 +2014-08-28  Glenn Morris  <rgm@gnu.org>
  
        * automated/python-tests.el (python-shell-calculate-exec-path-2):
        Update test for today's python.el changes.
  
 +2014-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>
 +
 +      * automated/compile-tests.el (compile--test-error-line): Grok FILE
 +      being nil.  Allows for Guile tests to pass.
 +      (compile-tests--test-regexps-data): Add Guile tests.
 +
  2014-08-11  Glenn Morris  <rgm@gnu.org>
  
        * automated/data/files-bug18141.el.gz: New file.
        * automated/files.el (files-test-bug-18141-file):
        New variable and test.  (Bug#18141)
  
 +2014-08-10  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      Enumerate evaluated sexp diary entries (Bug#7911).
 +      * automated/icalendar-tests.el (icalendar--convert-anniversary-to-ical)
 +      (icalendar--convert-cyclic-to-ical, icalendar--convert-block-to-ical)
 +      (icalendar--convert-yearly-to-ical, icalendar--convert-weekly-to-ical)
 +      (icalendar--convert-ordinary-to-ical): Returns cons cell now.
 +      (icalendar--convert-to-ical, icalendar--convert-sexp-to-ical):
 +      New tests.
 +
  2014-08-07  Glenn Morris  <rgm@gnu.org>
  
 -      * automated/Makefile.in (check-tar): Remove, no longer needed.
 +      * automated/Makefile.in (check-tar): Remove, hydra recipe does it now.
 +
 +2014-08-06  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar--convert-ordinary-to-ical)
 +      (icalendar--diarytime-to-isotime): More testcases (Bug#13750).
  
  2014-08-03  Glenn Morris  <rgm@gnu.org>
  
 -      * automated/Makefile.in (check-tar): Add as alias for check.
 +      * automated/Makefile.in (check-tar): New rule.
 +
 +2014-08-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/fns-tests.el (fns-tests-compare-strings):
 +      Update test.  (Bug#17903)
  
 -2014-07-20  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +      * automated/icalendar-tests.el (icalendar--decode-isodatetime):
 +      Use more precise TZ specification, as per 2013-08-04.
 +
 +2014-07-30  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar--decode-isodatetime):
 +      New test.
 +
 +2014-07-28  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * automated/timer-tests.el (timer-tests-debug-timer-check): New test.
 +
 +2014-07-26  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * automated/icalendar-tests.el (icalendar-tests--do-test-import):
 +      Work around the failures in icalendar-tests which occasionally occur on
 +      hydra.nixos.org.
 +
 +2014-07-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el:
        (python-util-clone-local-variables-1): Fix test.
  
 -2014-07-17  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 -
        * automated/python-tests.el (python-shell-make-comint-1):
        (python-shell-make-comint-2): Fix indentation.
        (python-shell-make-comint-3)
        (python-shell-prompt-set-calculated-regexps-6)
        (python-util-valid-regexp-p-1): New tests.
  
 -2014-07-09  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-07-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * automated/python-tests.el
 -      (python-indent-block-enders-1)
 +      * automated/advice-tests.el (advice-test-call-interactively): Make sure
 +      the function's definition is fully restored at the end.
 +
 +2014-07-12  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-indent-block-enders-1)
        (python-indent-block-enders-2): Fix tests.
 -      (python-indent-block-enders-3)
 -      (python-indent-block-enders-4)
 -      (python-indent-block-enders-5)
 -      (python-indent-dedenters-1)
 +      (python-indent-block-enders-3, python-indent-block-enders-4)
 +      (python-indent-block-enders-5, python-indent-dedenters-1)
        (python-indent-dedenters-2): Remove tests.
 -      (python-indent-dedenters-1)
 -      (python-indent-dedenters-2)
 -      (python-indent-dedenters-3)
 -      (python-indent-dedenters-4)
 -      (python-indent-dedenters-5)
 -      (python-indent-dedenters-6)
 +      (python-indent-dedenters-1, python-indent-dedenters-2)
 +      (python-indent-dedenters-3, python-indent-dedenters-4)
 +      (python-indent-dedenters-5, python-indent-dedenters-6)
        (python-indent-dedenters-7)
        (python-info-dedenter-opening-block-position-1)
        (python-info-dedenter-opening-block-position-2)
        (python-info-dedenter-statement-p-4)
        (python-info-dedenter-statement-p-5): New tests.
  
 -2014-07-01  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +2014-07-08  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * automated/python-tests.el
 -      (python-tests-self-insert): New function.
 +      * indent/perl.perl: Add indentation pattern for hash-table entries.
 +
 +2014-07-04  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/dbus-tests.el (dbus-test02-register-service-session)
 +      (dbus-test02-register-service-system): Fix docstring.
 +      (dbus-test02-register-service-own-bus)
 +      (dbus-test03-peer-interface): New tests.
 +
 +2014-07-03  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/python-tests.el (python-tests-self-insert): New function.
        (python-triple-quote-pairing): Use it.
        (python-parens-electric-indent-1): New test. (Bug#17658)
  
 +2014-06-30  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 +
 +      * automated/subr-x-tests.el: New file.
 +
 +2014-06-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp--instrument-test-case):
 +      Print debug buffer in any case.
 +
  2014-06-28  Leo Liu  <sdl.web@gmail.com>
  
        * automated/calc-tests.el: New file and add tests for math-bignum.
        (Bug#17556)
  
 -2014-06-27  Michael Albinus  <michael.albinus@gmx.de>
 +2014-06-28  Michael Albinus  <michael.albinus@gmx.de>
  
        * automated/dbus-tests.el (dbus--test-register-service)
        (dbus-test02-register-service-session): Replace `dbus-ping' calls
        by `dbus-list-known-names'.  (Bug#17858)
  
 -2014-06-25  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/Makefile.in (GDB): New variable.
 +      (emacs): Use $GDB.  (Bug#15991)
 +
 +      * automated/Makefile.in (WRITE_LOG): New variable.
 +      (%.log): Use WRITE_LOG.
 +      (test_template): Disable logging.
 +
 +      * automated/Makefile.in (TESTS): New list of short PHONY aliases.
 +      (test_template): New definition.  Apply to TESTS.
 +
 +2014-06-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/Makefile.in (check-maybe): Rename from check.
 +      (check): Re-run all the tests, every time.
 +      (clean, mostlyclean): Also delete *.log~.
 +
 +2014-06-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/package-x-test.el: Do not mess with load-path.
 +
 +      * automated/Makefile.in (%.log): If error, dump log to stdout.
 +
 +2014-06-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * automated/package-test.el (package-test-update-listing)
        (package-test-update-archives, package-test-describe-package):
        Adjust tests according to new package-list-unsigned.
  
 +2014-06-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/ert-tests.el (no-byte-compile): Set it.  (Bug#17851)
 +
 +      * automated/eieio-tests.el (no-byte-compile): Set it.  (Bug#17852)
 +
 +      * automated/Makefile.in: Simplify and parallelize.  (Bug#15991)
 +      (XARGS_LIMIT, BYTE_COMPILE_EXTRA_FLAGS)
 +      (setwins, compile-targets, compile-main, compile-clean): Remove.
 +      (GREP_OPTIONS): Unexport.
 +      (.el.elc): Replace with pattern rule.
 +      (%.elc, %.log): New pattern rules.
 +      (ELFILES, LOGFILES): New variables.
 +      (check): Depend on LOGFILES.  Call ert-summarize-tests-batch-and-exit.
 +      (clean, mostlyclean): New rules.
 +      (bootstrap-clean): Simplify.
 +      (bootstrap-clean, distclean): Depend on clean.
 +
 +2014-06-25  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/flymake-tests.el (flymake-tests--current-face):
 +      Sleep for longer.  Avoid querying.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * automated/fns-tests.el (fns-tests-compare-string): New test.
 +
 +2014-06-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp-test26-process-file): Extend test
 +      according to Bug#17815.
 +
  2014-06-21  Fabián Ezequiel Gallina  <fgallina@gnu.org>
  
        * automated/python-tests.el (python-util-strip-string-1): New test.
  
 +2014-06-15  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      Sync with Tramp 2.2.10.
 +
 +      * automated/tramp-tests.el (tramp--test-enabled): Ignore errors.
 +      (tramp--instrument-test-case): Extend docstring.
 +      (tramp-test15-copy-directory): Skip for tramp-smb.el.
 +      (tramp-test21-file-links): Use `file-truename' for directories.
 +      (tramp-test27-start-file-process, tramp-test28-shell-command):
 +      Retrieve process output more robustly.
 +      (tramp--test-check-files): Extend test.
 +      (tramp-test30-special-characters): Skip for tramp-adb.el,
 +      tramp-gvfs.el and tramp-smb.el.  Add further file names.
 +
 +2014-06-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/Makefile.in (compile-main):
 +      GNU make automatically passes command-line arguments to sub-makes.
 +
 +2014-06-05  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * automated/tildify-tests.el (tildify-test--test): Optimize the test
 +      slightly by reusing the same temporary buffer across multiple test
 +      cases.
 +
 +      * automated/tildify-tests.el (tildify-test-find-env-end-re-bug)
 +      (tildify-test-find-env-group-index-bug): Update to support new
 +      signature of the `tildify-foreach-region-outside-env' function.
 +      Namely, it now takes pairs as an argument instead of looking it up in
 +      `tildify-ignored-environments-alist'.
 +
 +      * automated/tildify-tests.el (tildify-test--example-html): Add support
 +      for generating XML code, so that…
 +      (tildify-test-xml) …test can be added to check handling of XML
 +      documents.
 +
 +      * automated/tildify-tests.el (tildify-test-find-env-group-index-bug):
 +      New test checking end-regex building when multiple environment pairs
 +      use integers to refer to capture groups.
 +
 +      * automated/tildify-tests.el (tildify-test-find-env-end-re-bug): New
 +      test checking end-regex building in `tildify-find-env' function when
 +      integers (denoting capture groups) and strings are mixed together.
 +
 +2014-06-02  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp-remote-process-environment): Declare.
 +      (tramp-test29-vc-registered): Set $BZR_HOME.  Remove instrumentation.
 +
 +2014-06-01  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * automated/tramp-tests.el (tramp-test29-vc-registered):
 +      Instrument failed test case.
 +
 +2014-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * automated/ruby-mode-tests.el (ruby-assert-face): Use font-lock-ensure.
 +      (ruby-interpolation-keeps-non-quote-syntax): Use syntax-propertize.
 +
 +2014-05-21  Michal Nazarewicz  <mina86@mina86.com>
 +
 +      * automated/tildify-tests.el: New file.
 +
 +2014-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * indent/ruby.rb: Add one more test.
 +
 +      * indent/ps-mode.ps: New file.
 +
 +      * indent/octave.m: Add a few more tests.
 +
 +      * automated/core-elisp-tests.el
 +      (core-elisp-test-window-configurations): New test.
 +
 +2014-05-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/package-test.el (package-test-install-single):
 +      Update for changed output.
 +
 +2014-05-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/bytecomp-tests.el (test-byte-comp-compile-and-load):
 +      Fix handling of temporary elc files.
 +
 +      * automated/fns-tests.el (fns-tests-nreverse):
 +      Update for changed string behavior.
 +
 +2014-05-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * automated/fns-tests.el: New file.
 +      * automated/fns-tests.el (fns-tests-nreverse)
 +      (fns-tests-nreverse-bool-vector): New tests.
 +
  2014-05-08  Glenn Morris  <rgm@gnu.org>
  
        * automated/vc-bzr.el (vc-bzr-test-bug9726, vc-bzr-test-bug9781)
        (vc-bzr-test-faulty-bzr-autoloads):
        Give bzr a temporary home-directory, in case the real one is missing.
  
 -2014-05-05  Dmitry Gutov  <dgutov@yandex.ru>
 +2014-05-08  Dmitry Gutov  <dgutov@yandex.ru>
  
 -      * automated/ruby-mode-tests.el
 -      (ruby-interpolation-after-dollar-sign): New test.
 +      * automated/ruby-mode-tests.el (ruby-interpolation-after-dollar-sign):
 +      New test.
  
 -2014-05-05  Glenn Morris  <rgm@gnu.org>
 +2014-05-08  Glenn Morris  <rgm@gnu.org>
  
        * automated/help-fns.el: New file.
  
 +2014-05-01  Barry O'Reilly  <gundaetiapo@gmail.com>
 +
 +      * automated/undo-tests.el (undo-test-region-deletion): New test to
 +      demonstrate bug#17235.
 +      (undo-test-region-example): New test to verify example given in
 +      comments for undo-make-selective-list.
 +
  2014-04-25  Michael Albinus  <michael.albinus@gmx.de>
  
        * automated/tramp-tests.el (top):
        passwords in batch mode.
        (password-cache-expiry): Set to nil.
  
 -2014-04-24  Michael Albinus  <michael.albinus@gmx.de>
 -
        * automated/file-notify-tests.el
        (file-notify-test-remote-temporary-file-directory):
        * automated/tramp-tests.el (tramp-test-temporary-file-directory):
        only if there is a usable timestamp.
        (tramp--test-check-files): Do not use `copy-sequence'.
  
 +2014-04-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * automated/bytecomp-tests.el (test-byte-comp-compile-and-load):
 +      Add compile flag.
 +      (test-byte-comp-macro-expansion)
 +      (test-byte-comp-macro-expansion-eval-and-compile)
 +      (test-byte-comp-macro-expansion-eval-when-compile)
 +      (test-byte-comp-macro-expand-lexical-override): Use it.
 +      (test-eager-load-macro-expansion)
 +      (test-eager-load-macro-expansion-eval-and-compile)
 +      (test-eager-load-macro-expansion-eval-when-compile)
 +      (test-eager-load-macro-expand-lexical-override): New tests.
 +
 +      * automated/cl-lib.el (cl-lib-struct-accessors): Fix test to
 +      account for removal of `cl-struct-set-slot-value'. Also, move
 +      the defstruct to top level.
 +
 +2014-04-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * automated/bytecomp-tests.el (test-byte-comp-compile-and-load):
 +      New function.
 +      (test-byte-comp-macro-expansion)
 +      (test-byte-comp-macro-expansion-eval-and-compile)
 +      (test-byte-comp-macro-expansion-eval-when-compile)
 +      (test-byte-comp-macro-expand-lexical-override): New tests.
 +
 +      * automated/cl-lib.el (cl-loop-destructuring-with): New test.
 +      (cl-the): Fix cl-the test.
 +
 +2014-04-20  Daniel Colascione  <dancol@dancol.org>
 +
 +      * automated/cl-lib.el (cl-lib-struct-accessors,cl-the): New tests.
 +
  2014-04-19  Michael Albinus  <michael.albinus@gmx.de>
  
        * automated/tramp-tests.el (tramp--test-check-files): Extend test.
        (tramp-test34-unload): New tests.
        (tramp-test31-utf8, tramp-test32-asynchronous-requests):  Rename.
  
 -2014-04-10  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-11  Glenn Morris  <rgm@gnu.org>
 +
 +      * automated/Makefile.in (EMACSDATA, EMACSDOC, EMACSPATH): Unexport.
 +
 +2014-04-11  Paul Eggert  <eggert@cs.ucla.edu>
  
        * automated/electric-tests.el: Fix spelling error in test name.
        (whitespace-skipping-for-quotes-not-outside):
        Rename from whitespace-skipping-for-quotes-not-ouside.
  
 +2014-04-09  Daniel Colascione  <dancol@dancol.org>
 +
 +      * automated/syntax-tests.el: New file.
 +
  2014-04-09  Glenn Morris  <rgm@gnu.org>
  
        * automated/python-tests.el (python-triple-quote-pairing):
  
  2014-04-07  João Távora  <joaotavora@gmail.com>
  
 -      * automated/electric-tests.el (define-electric-pair-test):
 -      Don't overtest.
 -      (inhibit-in-mismatched-string-inside-ruby-comments): New test.
 -      (inhibit-in-mismatched-string-inside-c-comments): New test.
 -
 -      * automated/electric-tests.el (inhibit-if-strings-mismatched):
 -      New test, change from `inhibit-only-of-next-is-mismatched'.
 -
 -2014-04-06  João Távora  <joaotavora@gmail.com>
 -
        * automated/python-tests.el (python-triple-quote-pairing): New test.
        (python-syntax-after-python-backspace): New test.
  
        (whitespace-skipping-for-quotes-only-inside)
        (whitespace-skipping-quotes-not-without-proper-syntax): New tests.
  
 -2014-03-24  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-04-04  João Távora  <joaotavora@gmail.com>
 +
 +      * automated/electric-tests.el (define-electric-pair-test):
 +      Don't overtest.
 +      (inhibit-in-mismatched-string-inside-ruby-comments): New test.
 +      (inhibit-in-mismatched-string-inside-c-comments): New test.
 +
 +2014-04-02  João Távora  <joaotavora@gmail.com>
 +
 +      * automated/electric-tests.el (inhibit-if-strings-mismatched):
 +      New test, change from `inhibit-only-of-next-is-mismatched'.
 +
 +2014-03-26  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        * automated/undo-tests.el (undo-test-marker-adjustment-nominal):
        (undo-test-region-t-marker): New tests of marker adjustments.
        (undo-test-region-mark-adjustment): New tests to demonstrate
        bug#16818, which fail without the fix.
  
 -2014-03-23  Daniel Colascione  <dancol@dancol.org>
 -
 -      * automated/cl-lib.el (cl-lib-keyword-names-versus-values): New
 -      test: correct parsing of keyword arguments.
 -
  2014-03-23  Dmitry Gutov  <dgutov@yandex.ru>
  
        * automated/package-test.el (package-test-describe-package):
        Fix test failure in non-graphical mode.
  
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * automated/subword-tests.el (subword-tests2): More subword tests.
 +
 +      * automated/cl-lib.el (cl-lib-keyword-names-versus-values):
 +      New test: correct parsing of keyword arguments.
 +
  2014-03-22  Dmitry Gutov  <dgutov@yandex.ru>
  
        * automated/package-test.el (package-test-describe-package):
  
  2014-02-17  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * automated/tramp-tests.el (tramp-test28-shell-command): Perform
 -      an initial `sit-for' prior the while loop.
 +      * automated/tramp-tests.el (tramp-test28-shell-command):
 +      Perform an initial `sit-for' prior the while loop.
  
  2014-02-16  Michael Albinus  <michael.albinus@gmx.de>
  
  
        * automated/tramp-tests.el (tramp-test26-process-file): Improve test.
        (tramp-test27-start-file-process): Use "_p" as argument of lambda.
 -      (tramp-test28-shell-command): Improve `shell-command' test.  Add
 -      `async-shell-command' tests.
 +      (tramp-test28-shell-command): Improve `shell-command' test.
 +      Add `async-shell-command' tests.
  
  2014-02-04  Michael Albinus  <michael.albinus@gmx.de>
  
  
  2014-01-13  Michael Albinus  <michael.albinus@gmx.de>
  
 -      * automated/ert-tests.el (ert-test-record-backtrace): Reenable
 -      test case with adapted test string.  (Bug#13064)
 +      * automated/ert-tests.el (ert-test-record-backtrace):
 +      Reenable test case with adapted test string.  (Bug#13064)
  
  2013-12-28  Glenn Morris  <rgm@gnu.org>
  
index 47e2a6e819509e59c304f7ce6beb66d1b5221bc3,42c26fc3482f2dd59eb106ab9e917d6c7a6d9f40..b377a26f77a290897ab7d8541aebfa5717fd7a85
  (require 'ert)
  (require 'python)
  
 +;; Dependencies for testing:
 +(require 'electric)
 +(require 'hideshow)
 +
 +
  (defmacro python-tests-with-temp-buffer (contents &rest body)
    "Create a `python-mode' enabled temp buffer with CONTENTS.
  BODY is code to be executed within the temp buffer.  Point is
@@@ -109,28 -104,6 +109,28 @@@ STRING, it is skipped so the next STRIN
           (call-interactively 'self-insert-command)))
       chars)))
  
 +(defun python-tests-visible-string (&optional min max)
 +  "Return the buffer string excluding invisible overlays.
 +Argument MIN and MAX delimit the region to be returned and
 +default to `point-min' and `point-max' respectively."
 +  (let* ((min (or min (point-min)))
 +         (max (or max (point-max)))
 +         (buffer (current-buffer))
 +         (buffer-contents (buffer-substring-no-properties min max))
 +         (overlays
 +          (sort (overlays-in min max)
 +                (lambda (a b)
 +                  (let ((overlay-end-a (overlay-end a))
 +                        (overlay-end-b (overlay-end b)))
 +                    (> overlay-end-a overlay-end-b))))))
 +    (with-temp-buffer
 +      (insert buffer-contents)
 +      (dolist (overlay overlays)
 +        (if (overlay-get overlay 'invisible)
 +            (delete-region (overlay-start overlay)
 +                           (overlay-end overlay))))
 +      (buffer-substring-no-properties (point-min) (point-max)))))
 +
  \f
  ;;; Tests for your tests, so you can test while you test.
  
@@@ -204,7 -177,7 +204,7 @@@ foo = long_function_name(var_one, var_t
     (should (eq (car (python-indent-context)) :no-indent))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "foo = long_function_name(var_one, var_two,")
-    (should (eq (car (python-indent-context)) :after-line))
+    (should (eq (car (python-indent-context)) :after-comment))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "var_three, var_four)")
     (should (eq (car (python-indent-context)) :inside-paren))
@@@ -222,7 -195,7 +222,7 @@@ def long_function_name
     (should (eq (car (python-indent-context)) :no-indent))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "def long_function_name(")
-    (should (eq (car (python-indent-context)) :after-line))
+    (should (eq (car (python-indent-context)) :after-comment))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "var_one, var_two, var_three,")
     (should (eq (car (python-indent-context))
@@@ -248,7 -221,7 +248,7 @@@ foo = long_function_name
     (should (eq (car (python-indent-context)) :no-indent))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "foo = long_function_name(")
-    (should (eq (car (python-indent-context)) :after-line))
+    (should (eq (car (python-indent-context)) :after-comment))
     (should (= (python-indent-calculate-indentation) 0))
     (python-tests-look-at "var_one, var_two,")
     (should (eq (car (python-indent-context)) :inside-paren-newline-start))
@@@ -313,10 -286,10 +313,10 @@@ class Blag(object)
  def func(arg):
      # I don't do much
      return arg
-     # This comment is badly indented just because.
-     # But we won't mess with the user in this line.
+     # This comment is badly indented because the user forced so.
+     # At this line python.el wont dedent, user is always right.
  
- now_we_do_mess_cause_this_is_not_a_comment = 1
+ comment_wins_over_ender = True
  
  # yeah, that.
  "
     ;; the rules won't apply here.
     (should (eq (car (python-indent-context)) :after-block-start))
     (should (= (python-indent-calculate-indentation) 4))
-    (python-tests-look-at "# This comment is badly")
+    (python-tests-look-at "# This comment is badly indented")
     (should (eq (car (python-indent-context)) :after-block-end))
-    ;; The return keyword moves indentation backwards 4 spaces, but
-    ;; let's assume this comment was placed there because the user
-    ;; wanted to (manually adding spaces or whatever).
+    ;; The return keyword do make indentation lose a level...
     (should (= (python-indent-calculate-indentation) 0))
-    (python-tests-look-at "# but we won't mess")
+    ;; ...but the current indentation was forced by the user.
+    (python-tests-look-at "# At this line python.el wont dedent")
     (should (eq (car (python-indent-context)) :after-comment))
     (should (= (python-indent-calculate-indentation) 4))
-    ;; Behave the same for blank lines: potentially a comment.
+    ;; Should behave the same for blank lines: potentially a comment.
     (forward-line 1)
     (should (eq (car (python-indent-context)) :after-comment))
     (should (= (python-indent-calculate-indentation) 4))
-    (python-tests-look-at "now_we_do_mess")
-    ;; Here is where comment indentation starts to get ignored and
-    ;; where the user can't freely indent anymore.
-    (should (eq (car (python-indent-context)) :after-block-end))
-    (should (= (python-indent-calculate-indentation) 0))
+    (python-tests-look-at "comment_wins_over_ender")
+    ;; The comment won over the ender because the user said so.
+    (should (eq (car (python-indent-context)) :after-comment))
+    (should (= (python-indent-calculate-indentation) 4))
+    ;; The indentation calculated fine for the assignment, but the user
+    ;; choose to force it back to the first column.  Next line should
+    ;; be aware of that.
     (python-tests-look-at "# yeah, that.")
     (should (eq (car (python-indent-context)) :after-line))
     (should (= (python-indent-calculate-indentation) 0))))
  
+ (ert-deftest python-indent-after-comment-3 ()
+   "Test after-comment in buggy case."
+   (python-tests-with-temp-buffer
+    "
+ class A(object):
+     def something(self, arg):
+         if True:
+             return arg
+     # A comment
+     @adecorator
+     def method(self, a, b):
+         pass
+ "
+    (python-tests-look-at "@adecorator")
+    (should (eq (car (python-indent-context)) :after-comment))
+    (should (= (python-indent-calculate-indentation) 4))))
  (ert-deftest python-indent-inside-paren-1 ()
    "The most simple inside-paren case that shouldn't fail."
    (python-tests-with-temp-buffer
@@@ -1144,7 -1138,7 +1165,7 @@@ def f()
                        expected)))))
  
  (ert-deftest python-indent-region-4 ()
 -  "Test region indentation block starts, dedenders and enders."
 +  "Test region indentation block starts, dedenters and enders."
    (let ((contents "
  def f():
      if True:
@@@ -2133,47 -2127,107 +2154,96 @@@ if True
     (call-interactively #'python-indent-dedent-line-backspace)
     (should (zerop (current-indentation)))))
  
+ (ert-deftest python-indent-dedent-line-backspace-2 ()
+   "Check de-indentation with tabs.  Bug#19730."
+   (let ((tab-width 8))
+     (python-tests-with-temp-buffer
+      "
+ if x:
+ \tabcdefg
+ "
+      (python-tests-look-at "abcdefg")
+      (goto-char (line-end-position))
+      (call-interactively #'python-indent-dedent-line-backspace)
+      (should
+       (string= (buffer-substring-no-properties
+                 (line-beginning-position) (line-end-position))
+                "\tabcdef")))))
+ (ert-deftest python-indent-dedent-line-backspace-3 ()
+   "Paranoid check of de-indentation with tabs.  Bug#19730."
+   (let ((tab-width 8))
+     (python-tests-with-temp-buffer
+      "
+ if x:
+ \tif y:
+ \t abcdefg
+ "
+      (python-tests-look-at "abcdefg")
+      (goto-char (line-end-position))
+      (call-interactively #'python-indent-dedent-line-backspace)
+      (should
+       (string= (buffer-substring-no-properties
+                 (line-beginning-position) (line-end-position))
+                "\t abcdef"))
+      (back-to-indentation)
+      (call-interactively #'python-indent-dedent-line-backspace)
+      (should
+       (string= (buffer-substring-no-properties
+                 (line-beginning-position) (line-end-position))
+                "\tabcdef"))
+      (call-interactively #'python-indent-dedent-line-backspace)
+      (should
+       (string= (buffer-substring-no-properties
+                 (line-beginning-position) (line-end-position))
+                "    abcdef"))
+      (call-interactively #'python-indent-dedent-line-backspace)
+      (should
+       (string= (buffer-substring-no-properties
+                 (line-beginning-position) (line-end-position))
+                "abcdef")))))
  \f
  ;;; Shell integration
  
  (defvar python-tests-shell-interpreter "python")
  
  (ert-deftest python-shell-get-process-name-1 ()
 -  "Check process name calculation on different scenarios."
 +  "Check process name calculation sans `buffer-file-name'."
    (python-tests-with-temp-buffer
 -      ""
 -    (should (string= (python-shell-get-process-name nil)
 -                     python-shell-buffer-name))
 -    ;; When the `current-buffer' doesn't have `buffer-file-name', even
 -    ;; if dedicated flag is non-nil should not include its name.
 -    (should (string= (python-shell-get-process-name t)
 -                     python-shell-buffer-name)))
 +   ""
 +   (should (string= (python-shell-get-process-name nil)
 +                    python-shell-buffer-name))
 +   (should (string= (python-shell-get-process-name t)
 +                    (format "%s[%s]" python-shell-buffer-name (buffer-name))))))
 +
 +(ert-deftest python-shell-get-process-name-2 ()
 +  "Check process name calculation with `buffer-file-name'."
    (python-tests-with-temp-file
 -      ""
 -    ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
 -    ;; should be respected.
 -    (should (string= (python-shell-get-process-name nil)
 -                     python-shell-buffer-name))
 -    (should (string=
 -             (python-shell-get-process-name t)
 -             (format "%s[%s]" python-shell-buffer-name buffer-file-name)))))
 +   ""
 +   ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
 +   ;; should be respected.
 +   (should (string= (python-shell-get-process-name nil)
 +                    python-shell-buffer-name))
 +   (should (string=
 +            (python-shell-get-process-name t)
 +            (format "%s[%s]" python-shell-buffer-name (buffer-name))))))
  
  (ert-deftest python-shell-internal-get-process-name-1 ()
 -  "Check the internal process name is config-unique."
 -  (let* ((python-shell-interpreter python-tests-shell-interpreter)
 -         (python-shell-interpreter-args "")
 -         (python-shell-prompt-regexp ">>> ")
 -         (python-shell-prompt-block-regexp "[.][.][.] ")
 -         (python-shell-setup-codes "")
 -         (python-shell-process-environment "")
 -         (python-shell-extra-pythonpaths "")
 -         (python-shell-exec-path "")
 -         (python-shell-virtualenv-path "")
 -         (expected (python-tests-with-temp-buffer
 -                       "" (python-shell-internal-get-process-name))))
 -    ;; Same configurations should match.
 -    (should
 -     (string= expected
 -              (python-tests-with-temp-buffer
 -                  "" (python-shell-internal-get-process-name))))
 -    (let ((python-shell-interpreter-args "-B"))
 -      ;; A minimal change should generate different names.
 -      (should
 -       (not (string=
 -             expected
 -             (python-tests-with-temp-buffer
 -                 "" (python-shell-internal-get-process-name))))))))
 -
 -(ert-deftest python-shell-parse-command-1 ()
 +  "Check the internal process name is buffer-unique sans `buffer-file-name'."
 +  (python-tests-with-temp-buffer
 +   ""
 +   (should (string= (python-shell-internal-get-process-name)
 +                    (format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
 +
 +(ert-deftest python-shell-internal-get-process-name-2 ()
 +  "Check the internal process name is buffer-unique with `buffer-file-name'."
 +  (python-tests-with-temp-file
 +   ""
 +   (should (string= (python-shell-internal-get-process-name)
 +                    (format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
 +
 +(ert-deftest python-shell-calculate-command-1 ()
    "Check the command to execute is calculated correctly.
  Using `python-shell-interpreter' and
  `python-shell-interpreter-args'."
               (format "%s %s"
                       python-shell-interpreter
                       python-shell-interpreter-args)
 -             (python-shell-parse-command)))))
 +             (python-shell-calculate-command)))))
  
  (ert-deftest python-shell-calculate-process-environment-1 ()
    "Test `python-shell-process-environment' modification."
 -  (let* ((original-process-environment process-environment)
 -         (python-shell-process-environment
 +  (let* ((python-shell-process-environment
            '("TESTVAR1=value1" "TESTVAR2=value2"))
           (process-environment
            (python-shell-calculate-process-environment)))
  
  (ert-deftest python-shell-calculate-process-environment-2 ()
    "Test `python-shell-extra-pythonpaths' modification."
 -  (let* ((original-process-environment process-environment)
 -         (original-pythonpath (getenv "PYTHONPATH"))
 +  (let* ((process-environment process-environment)
 +         (original-pythonpath (setenv "PYTHONPATH" "path3"))
           (paths '("path1" "path2"))
           (python-shell-extra-pythonpaths paths)
           (process-environment
                      path-separator original-pythonpath)))))
  
  (ert-deftest python-shell-calculate-process-environment-3 ()
 -  "Test `python-shell-virtualenv-path' modification."
 -  (let* ((original-process-environment process-environment)
 -         (original-path (or (getenv "PATH") ""))
 -         (python-shell-virtualenv-path
 +  "Test `python-shell-virtualenv-root' modification."
 +  (let* ((original-path (or (getenv "PATH") ""))
 +         (python-shell-virtualenv-root
            (directory-file-name user-emacs-directory))
           (process-environment
            (python-shell-calculate-process-environment)))
      (should (not (getenv "PYTHONHOME")))
 -    (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-path))
 +    (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-root))
      (should (equal (getenv "PATH")
                     (format "%s/bin%s%s"
 -                           python-shell-virtualenv-path
 +                           python-shell-virtualenv-root
                             path-separator original-path)))))
  
  (ert-deftest python-shell-calculate-process-environment-4 ()
  (ert-deftest python-shell-calculate-exec-path-2 ()
    "Test `python-shell-exec-path' modification."
    (let* ((original-exec-path exec-path)
 -         (python-shell-virtualenv-path
 +         (python-shell-virtualenv-root
            (directory-file-name (expand-file-name user-emacs-directory)))
           (exec-path (python-shell-calculate-exec-path)))
      (should (equal
               exec-path
               (append (cons
 -                      (format "%s/bin" python-shell-virtualenv-path)
 +                      (format "%s/bin" python-shell-virtualenv-root)
                        original-exec-path))))))
  
  (ert-deftest python-shell-make-comint-1 ()
           (shell-buffer
            (python-tests-with-temp-buffer
             "" (python-shell-make-comint
 -               (python-shell-parse-command) proc-name)))
 +               (python-shell-calculate-command) proc-name)))
           (process (get-buffer-process shell-buffer)))
      (unwind-protect
          (progn
           (shell-buffer
            (python-tests-with-temp-buffer
             "" (python-shell-make-comint
 -               (python-shell-parse-command) proc-name nil t)))
 +               (python-shell-calculate-command) proc-name nil t)))
           (process (get-buffer-process shell-buffer)))
      (unwind-protect
          (progn
@@@ -2363,7 -2419,7 +2433,7 @@@ and `python-shell-interpreter-args' in 
              (setenv "PYTHONSTARTUP" startup-file)
              (python-tests-with-temp-buffer
               "" (python-shell-make-comint
 -                 (python-shell-parse-command) proc-name nil))))
 +                 (python-shell-calculate-command) proc-name nil))))
           (process (get-buffer-process shell-buffer)))
      (unwind-protect
          (progn
             (dedicated-proc-name (python-shell-get-process-name t))
             (global-shell-buffer
              (python-shell-make-comint
 -             (python-shell-parse-command) global-proc-name))
 +             (python-shell-calculate-command) global-proc-name))
             (dedicated-shell-buffer
              (python-shell-make-comint
 -             (python-shell-parse-command) dedicated-proc-name))
 +             (python-shell-calculate-command) dedicated-proc-name))
             (global-process (get-buffer-process global-shell-buffer))
             (dedicated-process (get-buffer-process dedicated-shell-buffer)))
        (unwind-protect
          (ignore-errors (kill-buffer global-shell-buffer))
          (ignore-errors (kill-buffer dedicated-shell-buffer))))))
  
 -(ert-deftest python-shell-get-or-create-process-1 ()
 -  "Check shell dedicated process creation."
 -  (skip-unless (executable-find python-tests-shell-interpreter))
 -  (python-tests-with-temp-file
 -   ""
 -   (let* ((cmd
 -           (concat (executable-find python-tests-shell-interpreter) " -i"))
 -          (use-dialog-box)
 -          (dedicated-process-name (python-shell-get-process-name t))
 -          (dedicated-process (python-shell-get-or-create-process cmd t))
 -          (dedicated-shell-buffer (process-buffer dedicated-process)))
 -     (unwind-protect
 -         (progn
 -           (set-process-query-on-exit-flag dedicated-process nil)
 -           ;; should be dedicated.
 -           (should (equal (process-name dedicated-process)
 -                          dedicated-process-name))
 -           (kill-buffer dedicated-shell-buffer)
 -           ;; Check there are no processes for current buffer.
 -           (should (not (python-shell-get-process))))
 -       (ignore-errors (kill-buffer dedicated-shell-buffer))))))
 -
 -(ert-deftest python-shell-get-or-create-process-2 ()
 -  "Check shell global process creation."
 -  (skip-unless (executable-find python-tests-shell-interpreter))
 -  (python-tests-with-temp-file
 -   ""
 -   (let* ((cmd
 -           (concat (executable-find python-tests-shell-interpreter) " -i"))
 -          (use-dialog-box)
 -          (process-name (python-shell-get-process-name nil))
 -          (process (python-shell-get-or-create-process cmd))
 -          (shell-buffer (process-buffer process)))
 -     (unwind-protect
 -         (progn
 -           (set-process-query-on-exit-flag process nil)
 -           ;; should be global.
 -           (should (equal (process-name process) process-name))
 -           (kill-buffer shell-buffer)
 -           ;; Check there are no processes for current buffer.
 -           (should (not (python-shell-get-process))))
 -       (ignore-errors (kill-buffer shell-buffer))))))
 -
 -(ert-deftest python-shell-get-or-create-process-3 ()
 -  "Check shell dedicated/global process preference."
 -  (skip-unless (executable-find python-tests-shell-interpreter))
 -  (python-tests-with-temp-file
 -   ""
 -   (let* ((cmd
 -           (concat (executable-find python-tests-shell-interpreter) " -i"))
 -          (python-shell-interpreter python-tests-shell-interpreter)
 -          (use-dialog-box)
 -          (dedicated-process-name (python-shell-get-process-name t))
 -          (global-process)
 -          (dedicated-process))
 -     (progn
 -       ;; Create global process
 -       (run-python cmd nil)
 -       (setq global-process (get-buffer-process "*Python*"))
 -       (should global-process)
 -       (set-process-query-on-exit-flag global-process nil)
 -       ;; Create dedicated process
 -       (run-python cmd t)
 -       (setq dedicated-process (get-process dedicated-process-name))
 -       (should dedicated-process)
 -       (set-process-query-on-exit-flag dedicated-process nil)
 -       ;; Prefer dedicated.
 -       (should (equal (python-shell-get-or-create-process)
 -                      dedicated-process))
 -       ;; Kill the dedicated so the global takes over.
 -       (kill-buffer (process-buffer dedicated-process))
 -       ;; Detect global.
 -       (should (equal (python-shell-get-or-create-process) global-process))
 -       ;; Kill the global.
 -       (kill-buffer (process-buffer global-process))
 -       ;; Check there are no processes for current buffer.
 -       (should (not (python-shell-get-process)))))))
 -
  (ert-deftest python-shell-internal-get-or-create-process-1 ()
    "Check internal shell process creation fallback."
    (skip-unless (executable-find python-tests-shell-interpreter))
@@@ -2915,13 -3049,6 +2985,13 @@@ class Foo(models.Model)
  \f
  ;;; Shell completion
  
 +(ert-deftest python-shell-completion-native-interpreter-disabled-p-1 ()
 +  (let* ((python-shell-completion-native-disabled-interpreters (list "pypy"))
 +         (python-shell-interpreter "/some/path/to/bin/pypy"))
 +    (should (python-shell-completion-native-interpreter-disabled-p))))
 +
 +
 +
  \f
  ;;; PDB Track integration
  
  \f
  ;;; Eldoc
  
 +(ert-deftest python-eldoc--get-symbol-at-point-1 ()
 +  "Test paren handling."
 +  (python-tests-with-temp-buffer
 +   "
 +map(xx
 +map(codecs.open('somefile'
 +"
 +   (python-tests-look-at "ap(xx")
 +   (should (string= (python-eldoc--get-symbol-at-point) "map"))
 +   (goto-char (line-end-position))
 +   (should (string= (python-eldoc--get-symbol-at-point) "map"))
 +   (python-tests-look-at "('somefile'")
 +   (should (string= (python-eldoc--get-symbol-at-point) "map"))
 +   (goto-char (line-end-position))
 +   (should (string= (python-eldoc--get-symbol-at-point) "codecs.open"))))
 +
 +(ert-deftest python-eldoc--get-symbol-at-point-2 ()
 +  "Ensure self is replaced with the class name."
 +  (python-tests-with-temp-buffer
 +   "
 +class TheClass:
 +
 +    def some_method(self, n):
 +        return n
 +
 +    def other(self):
 +        return self.some_method(1234)
 +
 +"
 +   (python-tests-look-at "self.some_method")
 +   (should (string= (python-eldoc--get-symbol-at-point)
 +                    "TheClass.some_method"))
 +   (python-tests-look-at "1234)")
 +   (should (string= (python-eldoc--get-symbol-at-point)
 +                    "TheClass.some_method"))))
 +
 +(ert-deftest python-eldoc--get-symbol-at-point-3 ()
 +  "Ensure symbol is found when point is at end of buffer."
 +  (python-tests-with-temp-buffer
 +   "
 +some_symbol
 +
 +"
 +   (goto-char (point-max))
 +   (should (string= (python-eldoc--get-symbol-at-point)
 +                    "some_symbol"))))
 +
 +(ert-deftest python-eldoc--get-symbol-at-point-4 ()
 +  "Ensure symbol is found when point is at whitespace."
 +  (python-tests-with-temp-buffer
 +   "
 +some_symbol   some_other_symbol
 +"
 +   (python-tests-look-at "  some_other_symbol")
 +   (should (string= (python-eldoc--get-symbol-at-point)
 +                    "some_symbol"))))
 +
  \f
  ;;; Imenu
  
@@@ -4398,7 -4468,7 +4468,7 @@@ def foo(a, b, c)
              . "from IPython.core.completerlib import module_completion")
             (python-shell-completion-string-code
              . "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
 -           (python-shell-virtualenv-path
 +           (python-shell-virtualenv-root
              . "/home/user/.virtualenvs/project"))))
      (with-current-buffer buffer
        (kill-all-local-variables)
  ;;; Electricity
  
  (ert-deftest python-parens-electric-indent-1 ()
 -  (require 'electric)
    (let ((eim electric-indent-mode))
      (unwind-protect
          (progn
            (python-tests-with-temp-buffer
 -              "
 +           "
  from django.conf.urls import patterns, include, url
  
  from django.contrib import admin
@@@ -4458,148 -4529,66 +4528,148 @@@ urlpatterns = patterns(''
      url(r'^$', views.index
  )
  "
 -            (electric-indent-mode 1)
 -            (python-tests-look-at "views.index")
 -            (end-of-line)
 +           (electric-indent-mode 1)
 +           (python-tests-look-at "views.index")
 +           (end-of-line)
  
 -            ;; Inserting commas within the same line should leave
 -            ;; indentation unchanged.
 -            (python-tests-self-insert ",")
 -            (should (= (current-indentation) 4))
 +           ;; Inserting commas within the same line should leave
 +           ;; indentation unchanged.
 +           (python-tests-self-insert ",")
 +           (should (= (current-indentation) 4))
  
 -            ;; As well as any other input happening within the same
 -            ;; set of parens.
 -            (python-tests-self-insert " name='index')")
 -            (should (= (current-indentation) 4))
 +           ;; As well as any other input happening within the same
 +           ;; set of parens.
 +           (python-tests-self-insert " name='index')")
 +           (should (= (current-indentation) 4))
  
 -            ;; But a comma outside it, should trigger indentation.
 -            (python-tests-self-insert ",")
 -            (should (= (current-indentation) 23))
 +           ;; But a comma outside it, should trigger indentation.
 +           (python-tests-self-insert ",")
 +           (should (= (current-indentation) 23))
  
 -            ;; Newline indents to the first argument column
 -            (python-tests-self-insert "\n")
 -            (should (= (current-indentation) 23))
 +           ;; Newline indents to the first argument column
 +           (python-tests-self-insert "\n")
 +           (should (= (current-indentation) 23))
  
 -            ;; All this input must not change indentation
 -            (indent-line-to 4)
 -            (python-tests-self-insert "url(r'^/login$', views.login)")
 -            (should (= (current-indentation) 4))
 +           ;; All this input must not change indentation
 +           (indent-line-to 4)
 +           (python-tests-self-insert "url(r'^/login$', views.login)")
 +           (should (= (current-indentation) 4))
  
 -            ;; But this comma does
 -            (python-tests-self-insert ",")
 -            (should (= (current-indentation) 23))))
 +           ;; But this comma does
 +           (python-tests-self-insert ",")
 +           (should (= (current-indentation) 23))))
        (or eim (electric-indent-mode -1)))))
  
  (ert-deftest python-triple-quote-pairing ()
 -  (require 'electric)
    (let ((epm electric-pair-mode))
      (unwind-protect
          (progn
            (python-tests-with-temp-buffer
 -              "\"\"\n"
 -            (or epm (electric-pair-mode 1))
 -            (goto-char (1- (point-max)))
 -            (python-tests-self-insert ?\")
 -            (should (string= (buffer-string)
 -                             "\"\"\"\"\"\"\n"))
 -            (should (= (point) 4)))
 +           "\"\"\n"
 +           (or epm (electric-pair-mode 1))
 +           (goto-char (1- (point-max)))
 +           (python-tests-self-insert ?\")
 +           (should (string= (buffer-string)
 +                            "\"\"\"\"\"\"\n"))
 +           (should (= (point) 4)))
            (python-tests-with-temp-buffer
 -              "\n"
 -            (python-tests-self-insert (list ?\" ?\" ?\"))
 -            (should (string= (buffer-string)
 -                             "\"\"\"\"\"\"\n"))
 -            (should (= (point) 4)))
 +           "\n"
 +           (python-tests-self-insert (list ?\" ?\" ?\"))
 +           (should (string= (buffer-string)
 +                            "\"\"\"\"\"\"\n"))
 +           (should (= (point) 4)))
            (python-tests-with-temp-buffer
 -              "\"\n\"\"\n"
 -            (goto-char (1- (point-max)))
 -            (python-tests-self-insert ?\")
 -            (should (= (point) (1- (point-max))))
 -            (should (string= (buffer-string)
 -                             "\"\n\"\"\"\n"))))
 +           "\"\n\"\"\n"
 +           (goto-char (1- (point-max)))
 +           (python-tests-self-insert ?\")
 +           (should (= (point) (1- (point-max))))
 +           (should (string= (buffer-string)
 +                            "\"\n\"\"\"\n"))))
        (or epm (electric-pair-mode -1)))))
  
 +\f
 +;;; Hideshow support
 +
 +(ert-deftest python-hideshow-hide-levels-1 ()
 +  "Should hide all methods when called after class start."
 +  (let ((enabled hs-minor-mode))
 +    (unwind-protect
 +        (progn
 +          (python-tests-with-temp-buffer
 +           "
 +class SomeClass:
 +
 +    def __init__(self, arg, kwarg=1):
 +        self.arg = arg
 +        self.kwarg = kwarg
 +
 +    def filter(self, nums):
 +        def fn(item):
 +            return item in [self.arg, self.kwarg]
 +        return filter(fn, nums)
 +
 +    def __str__(self):
 +        return '%s-%s' % (self.arg, self.kwarg)
 +"
 +           (hs-minor-mode 1)
 +           (python-tests-look-at "class SomeClass:")
 +           (forward-line)
 +           (hs-hide-level 1)
 +           (should
 +            (string=
 +             (python-tests-visible-string)
 +             "
 +class SomeClass:
 +
 +    def __init__(self, arg, kwarg=1):
 +    def filter(self, nums):
 +    def __str__(self):"))))
 +      (or enabled (hs-minor-mode -1)))))
 +
 +(ert-deftest python-hideshow-hide-levels-2 ()
 +  "Should hide nested methods and parens at end of defun."
 +  (let ((enabled hs-minor-mode))
 +    (unwind-protect
 +        (progn
 +          (python-tests-with-temp-buffer
 +           "
 +class SomeClass:
 +
 +    def __init__(self, arg, kwarg=1):
 +        self.arg = arg
 +        self.kwarg = kwarg
 +
 +    def filter(self, nums):
 +        def fn(item):
 +            return item in [self.arg, self.kwarg]
 +        return filter(fn, nums)
 +
 +    def __str__(self):
 +        return '%s-%s' % (self.arg, self.kwarg)
 +"
 +           (hs-minor-mode 1)
 +           (python-tests-look-at "def fn(item):")
 +           (hs-hide-block)
 +           (should
 +            (string=
 +             (python-tests-visible-string)
 +             "
 +class SomeClass:
 +
 +    def __init__(self, arg, kwarg=1):
 +        self.arg = arg
 +        self.kwarg = kwarg
 +
 +    def filter(self, nums):
 +        def fn(item):
 +        return filter(fn, nums)
 +
 +    def __str__(self):
 +        return '%s-%s' % (self.arg, self.kwarg)
 +"))))
 +      (or enabled (hs-minor-mode -1)))))
 +
 +
  
  (provide 'python-tests)