Fix event race
authorDaniel Colascione <dancol@dancol.org>
Mon, 24 Feb 2014 14:27:37 +0000 (06:27 -0800)
committerDaniel Colascione <dancol@dancol.org>
Mon, 24 Feb 2014 14:27:37 +0000 (06:27 -0800)
54 files changed:
ChangeLog
doc/emacs/ChangeLog
doc/emacs/rmail.texi
doc/lispref/ChangeLog
doc/lispref/elisp.texi
doc/lispref/functions.texi
doc/lispref/internals.texi
doc/lispref/processes.texi
doc/lispref/windows.texi
doc/misc/ChangeLog
doc/misc/flymake.texi
doc/misc/remember.texi
doc/misc/texinfo.tex
doc/misc/tramp.texi
etc/ChangeLog
etc/MACHINES
etc/NEWS
etc/PROBLEMS
lisp/ChangeLog
lisp/apropos.el
lisp/desktop.el
lisp/elec-pair.el
lisp/electric.el
lisp/emacs-lisp/cl-macs.el
lisp/emacs-lisp/easy-mmode.el
lisp/emacs-lisp/gv.el
lisp/gnus/ChangeLog
lisp/gnus/auth-source.el
lisp/imenu.el
lisp/net/dbus.el
lisp/net/secrets.el
lisp/net/tramp-sh.el
lisp/net/tramp.el
lisp/progmodes/ruby-mode.el
lisp/register.el
lisp/savehist.el
lisp/saveplace.el
lisp/simple.el
lisp/w32-fns.el
lisp/w32-vars.el
lisp/whitespace.el
lisp/window.el
m4/gnulib-common.m4
m4/timer_time.m4
src/ChangeLog
src/dbusbind.c
src/frame.c
src/keyboard.c
src/process.c
src/window.c
src/xdisp.c
test/ChangeLog
test/automated/tramp-tests.el
test/indent/ruby.rb

index 4cefaef..92254af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-02-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge from gnulib, incorporating:
+       2014-02-21 timer: fix uClibc detection of threading
+       2014-02-21 maintainer-makefiles: provide AC_PROG_SED for older autoconf
+
 2014-02-18  Mirek Kaim  <mirek.kaim@outlook.com>  (tiny change)
 
        * configure.ac [HAVE_W32]: Test for ImageMagick.  (Bug#16754)
index 6035a05..9fba16f 100644 (file)
@@ -1,3 +1,7 @@
+2014-02-23  Glenn Morris  <rgm@gnu.org>
+
+       * rmail.texi (Rmail Inbox): Mention rmail-mbox-format.
+
 2014-02-20  Glenn Morris  <rgm@gnu.org>
 
        * search.texi (Special Isearch): Mention invisible text.
index f8b7575..2f823a7 100644 (file)
@@ -369,12 +369,20 @@ the rest of Rmail, since only Rmail operates on the Rmail file.
 @end enumerate
 
 @c FIXME remove this in Emacs 25; won't be relevant any more.
+@cindex Babyl files
+@cindex mbox files
   Rmail was originally written to use the Babyl format as its internal
 format.  Since then, we have recognized that the usual inbox format
 (@samp{mbox}) on Unix and GNU systems is adequate for the job, and so
 since Emacs 23 Rmail uses that as its internal format.  The Rmail file
 is still separate from the inbox file, even though their format is the
 same.
+@c But this bit should stay in some form.
+@vindex rmail-mbox-format
+(In fact, there are a few slightly different mbox formats.
+The differences are not very important, but you can set the variable
+@code{rmail-mbox-format} to tell Rmail which form your system uses.
+See that variable's documentation for more details.)
 
 @vindex rmail-preserve-inbox
   When getting new mail, Rmail first copies the new mail from the
index fcfb524..fe00e5a 100644 (file)
@@ -1,7 +1,31 @@
+2014-02-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * functions.texi (Declare Form): Document gv-expander, gv-setter, and
+       compiler-macro (bug#16829).
+
+2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * windows.texi (Window Configurations): Doc fix.
+       (Windows and Frames): Fix typo.
+
+2014-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * internals.texi (Process Internals):
+       * processes.texi (Subprocess Creation, Deleting Processes)
+       (Output from Processes, Process Buffers, Filter Functions)
+       (Accepting Output, Sentinels, Network, Network Servers):
+       Filters and sentinels can no longer be nil.
+       * elisp.texi (Top): Menu update.
+
 2014-02-20  Glenn Morris  <rgm@gnu.org>
 
        * functions.texi (Defining Functions): Mention defalias-fset-function.
 
+2014-02-17  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuf.texi (Completion Commands): Don't document obsolete
+       `common-substring' arg of display-completion-list.
+
 2014-02-17  Glenn Morris  <rgm@gnu.org>
 
        * minibuf.texi (Text from Minibuffer): Update read-regexp details.
@@ -17,8 +41,8 @@
 
 2014-02-10  Lars Ingebrigtsen  <larsi@gnus.org>
 
-       * text.texi (User-Level Deletion): Document
-       `delete-trailing-whitespace' (bug#15309).
+       * text.texi (User-Level Deletion):
+       Document `delete-trailing-whitespace' (bug#15309).
 
 2014-02-09  Lars Ingebrigtsen  <larsi@gnus.org>
 
 2013-12-24  Tassilo Horn  <tsdh@gnu.org>
 
        * control.texi (Pattern matching case statement): Fix missing
-       argument in simple expression language sample (Bug#16238).  Add
-       some sample programs written in that language.  Mention that
+       argument in simple expression language sample (Bug#16238).
+       Add some sample programs written in that language.  Mention that
        `pcase' requires lexical binding.
 
 2013-12-23  Xue Fuqiao  <xfq.free@gmail.com>
 
 2013-12-23  Chong Yidong  <cyd@gnu.org>
 
-       * keymaps.texi (Controlling Active Maps): Renamed
-       set-temporary-overlay-map to set-transient map.  Doc fixes.
+       * keymaps.texi (Controlling Active Maps):
+       Rename set-temporary-overlay-map to set-transient map.  Doc fixes.
        (Searching Keymaps): The transient keymap takes precedence.
 
 2013-12-23  Glenn Morris  <rgm@gnu.org>
 2013-10-08  Eli Zaretskii  <eliz@gnu.org>
 
        Support menus on text-mode terminals.
-       * keymaps.texi (Defining Menus, Mouse Menus, Menu Bar): Modify
-       wording to the effect that menus are supported on TTYs.
+       * keymaps.texi (Defining Menus, Mouse Menus, Menu Bar):
+       Modify wording to the effect that menus are supported on TTYs.
 
        * frames.texi (Pop-Up Menus, Dialog Boxes)
        (Display Feature Testing): Update for menu support on TTYs.
 2013-07-22  Michael Albinus  <michael.albinus@gmx.de>
 
        * files.texi (Magic File Names): Add file-notify-add-watch,
-       file-notify-rm-watch and file-notify-supported-p.  Move
-       file-remote-p down.
+       file-notify-rm-watch and file-notify-supported-p.
+       Move file-remote-p down.
 
        * errors.texi (Standard Errors): Add file-notify-error.
 
index 0b2154c..b512968 100644 (file)
@@ -1305,7 +1305,7 @@ Processes
 
 Receiving Output from Processes
 
-* Process Buffers::         If no filter, output is put in a buffer.
+* Process Buffers::         By default, output is put in a buffer.
 * Filter Functions::        Filter functions accept output from the process.
 * Decoding Output::         Filters can get unibyte or multibyte strings.
 * Accepting Output::        How to wait until process output arrives.
index 0781eaf..b38eab2 100644 (file)
@@ -1554,14 +1554,17 @@ following effects:
 This acts like a call to @code{set-advertised-calling-convention}
 (@pxref{Obsolete Functions}); @var{signature} specifies the correct
 argument list for calling the function or macro, and @var{when} should
-be a string indicating when the variable was first made obsolete.
+be a string indicating when the old argument list was first made obsolete.
 
 @item (debug @var{edebug-form-spec})
 This is valid for macros only.  When stepping through the macro with
 Edebug, use @var{edebug-form-spec}.  @xref{Instrumenting Macro Calls}.
 
 @item (doc-string @var{n})
-Use element number @var{n}, if any, as the documentation string.
+This is used when defining a function or macro which itself will be used to
+define entities like functions, macros, or variables.  It indicates that
+the @var{n}th argument, if any, should be considered
+as a documentation string.
 
 @item (indent @var{indent-spec})
 Indent calls to this function or macro according to @var{indent-spec}.
@@ -1576,7 +1579,37 @@ instead), a string (specifying the warning message), or @code{nil} (in
 which case the warning message gives no extra details).  @var{when}
 should be a string indicating when the function or macro was first
 made obsolete.
+
+@item (compiler-macro @var{expander})
+This can only be used for functions, and tells the compiler to use
+@var{expander} as an optimization function.  When encountering a call to the
+function, of the form @code{(@var{function} @var{args}@dots{})}, the macro
+expander will call @var{expander} with that form as well as with
+@var{args}@dots{}, and @var{expander} can either return a new expression to use
+instead of the function call, or it can return just the form unchanged,
+to indicate that the function call should be left alone.  @var{expander} can
+be a symbol, or it can be a form @code{(lambda (@var{arg}) @var{body})} in
+which case @var{arg} will hold the original function call expression, and the
+(unevaluated) arguments to the function can be accessed using the function's
+formal arguments.
+
+@item (gv-expander @var{expander})
+Declare @var{expander} to be the function to handle calls to the macro (or
+function) as a generalized variable, similarly to @code{gv-define-expander}.
+@var{expander} can be a symbol or it can be of the form @code{(lambda
+(@var{arg}) @var{body})} in which case that function will additionally have
+access to the macro (or function)'s arguments.
+
+@item (gv-setter @var{setter})
+Declare @var{setter} to be the function to handle calls to the macro (or
+function) as a generalized variable.  @var{setter} can be a symbol in which
+case it will be passed to @code{gv-define-simple-setter}, or it can be of the
+form @code{(lambda (@var{arg}) @var{body})} in which case that function will
+additionally have access to the macro (or function)'s arguments and it will
+passed to @code{gv-define-setter}.
+
 @end table
+
 @end defmac
 
 @node Declaring Functions
index 32fef45..94e4b70 100644 (file)
@@ -1469,12 +1469,10 @@ process.  For a network or serial process, it is @code{nil} if the
 process is running or @code{t} if the process is stopped.
 
 @item filter
-If non-@code{nil}, a function used to accept output from the process
-instead of a buffer.
+A function used to accept output from the process.
 
 @item sentinel
-If non-@code{nil}, a function called whenever the state of the process
-changes.
+A function called whenever the state of the process changes.
 
 @item buffer
 The associated buffer of the process.
index c05f8ae..f149725 100644 (file)
@@ -112,7 +112,7 @@ described below.
 argument that specifies where the standard output from the program will
 go.  It should be a buffer or a buffer name; if it is a buffer name,
 that will create the buffer if it does not already exist.  It can also
-be @code{nil}, which says to discard the output unless a filter function
+be @code{nil}, which says to discard the output, unless a custom filter function
 handles it.  (@xref{Filter Functions}, and @ref{Read and Print}.)
 Normally, you should avoid having multiple processes send output to the
 same buffer because their output would be intermixed randomly.
@@ -696,7 +696,7 @@ but not necessarily right away.  You can delete a process explicitly
 at any time.  If you explicitly delete a terminated process before it
 is deleted automatically, no harm results.  Deleting a running
 process sends a signal to terminate it (and its child processes, if
-any), and calls the process sentinel if it has one.  @xref{Sentinels}.
+any), and calls the process sentinel.  @xref{Sentinels}.
 
   When a process is deleted, the process object itself continues to
 exist as long as other Lisp objects point to it.  All the Lisp
@@ -719,7 +719,7 @@ signal.  The argument may be a process, the name of a process, a
 buffer, or the name of a buffer.  (A buffer or buffer-name stands for
 the process that @code{get-buffer-process} returns.)  Calling
 @code{delete-process} on a running process terminates it, updates the
-process status, and runs the sentinel (if any) immediately.  If the
+process status, and runs the sentinel immediately.  If the
 process has already terminated, calling @code{delete-process} has no
 effect on its status, or on the running of its sentinel (which will
 happen sooner or later).
@@ -1130,12 +1130,12 @@ children of Emacs.  @xref{System Processes}.
 @cindex process output
 @cindex output from processes
 
-  There are two ways to receive the output that a subprocess writes to
-its standard output stream.  The output can be inserted in a buffer,
-which is called the associated buffer of the process (@pxref{Process
-Buffers}), or a function called the @dfn{filter function} can be
-called to act on the output.  If the process has no buffer and no
-filter function, its output is discarded.
+  The output that a subprocess writes to its standard output stream
+is passed to a function called the @dfn{filter function}.  The default
+filter function simply inserts the output into a buffer, which is
+called the associated buffer of the process (@pxref{Process
+Buffers}).  If the process has no buffer then the default filter
+discards the output.
 
   When a subprocess terminates, Emacs reads any pending output,
 then stops reading output from that subprocess.  Therefore, if the
@@ -1170,7 +1170,7 @@ redirect one of them to a file---for example, by using an appropriate
 shell command.
 
 @menu
-* Process Buffers::         If no filter, output is put in a buffer.
+* Process Buffers::         By default, output is put in a buffer.
 * Filter Functions::        Filter functions accept output from the process.
 * Decoding Output::         Filters can get unibyte or multibyte strings.
 * Accepting Output::        How to wait until process output arrives.
@@ -1187,11 +1187,12 @@ normal practice only one process is associated with any given buffer.
 Many applications of processes also use the buffer for editing input to
 be sent to the process, but this is not built into Emacs Lisp.
 
-  Unless the process has a filter function (@pxref{Filter Functions}),
-its output is inserted in the associated buffer.  The position to insert
-the output is determined by the @code{process-mark}, which is then
-updated to point to the end of the text just inserted.  Usually, but not
-always, the @code{process-mark} is at the end of the buffer.
+  By default, process output is inserted in the associated buffer.
+(You can change this by defining a custom filter function,
+@pxref{Filter Functions}.)  The position to insert the output is
+determined by the @code{process-mark}, which is then updated to point
+to the end of the text just inserted.  Usually, but not always, the
+@code{process-mark} is at the end of the buffer.
 
 @findex process-kill-buffer-query-function
   Killing the associated buffer of a process also kills the process.
@@ -1220,13 +1221,12 @@ marker that says where to insert output from the process.
 If @var{process} does not have a buffer, @code{process-mark} returns a
 marker that points nowhere.
 
-Insertion of process output in a buffer uses this marker to decide where
-to insert, and updates it to point after the inserted text.  That is why
-successive batches of output are inserted consecutively.
+The default filter function uses this marker to decide where to
+insert process output, and updates it to point after the inserted text.
+That is why successive batches of output are inserted consecutively.
 
-Filter functions normally should use this marker in the same fashion
-as is done by direct insertion of output in the buffer.  For an
-example of a filter function that uses @code{process-mark},
+Custom filter functions normally should use this marker in the same fashion.
+For an example of a filter function that uses @code{process-mark},
 @pxref{Process Filter Example}.
 
 When the user is expected to enter input in the process buffer for
@@ -1268,10 +1268,9 @@ subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
 @cindex process filter
 
   A process @dfn{filter function} is a function that receives the
-standard output from the associated process.  If a process has a filter,
-then @emph{all} output from that process is passed to the filter.  The
-process buffer is used directly for output from the process only when
-there is no filter.
+standard output from the associated process.  @emph{All} output from
+that process is passed to the filter.  The default filter simply
+outputs directly to the process buffer.
 
   The filter function can only be called when Emacs is waiting for
 something, because process output arrives only at such times.  Emacs
@@ -1300,8 +1299,8 @@ This makes it possible to use the Lisp debugger to debug the
 filter function.  @xref{Debugger}.
 
   Many filter functions sometimes (or always) insert the output in the
-process's buffer, mimicking the actions of Emacs when there is no
-filter.  Such filter functions need to make sure that they save the
+process's buffer, mimicking the actions of the default filter.
+Such filter functions need to make sure that they save the
 current buffer, select the correct buffer (if different) before
 inserting output, and then restore the original buffer.
 They should also check whether the buffer is still alive, update the
@@ -1357,12 +1356,12 @@ received text into a temporary buffer, which can then be searched.
 
 @defun set-process-filter process filter
 This function gives @var{process} the filter function @var{filter}.  If
-@var{filter} is @code{nil}, it gives the process no filter.
+@var{filter} is @code{nil}, it gives the process the default filter,
+which inserts the process output into the process buffer.
 @end defun
 
 @defun process-filter process
-This function returns the filter function of @var{process}, or @code{nil}
-if it has none.
+This function returns the filter function of @var{process}.
 @end defun
 
   Here is an example of the use of a filter function:
@@ -1401,8 +1400,7 @@ backup.mss              dland                   syllabus.mss
 
 @ignore   @c The code in this example doesn't show the right way to do things.
 Here is another, more realistic example, which demonstrates how to use
-the process mark to do insertion in the same fashion as is done when
-there is no filter function:
+the process mark to do insertion in the same fashion as the default filter:
 
 @smallexample
 @group
@@ -1474,9 +1472,9 @@ until output arrives from a process.
 
 @defun accept-process-output &optional process seconds millisec just-this-one
 This function allows Emacs to read pending output from processes.  The
-output is inserted in the associated buffers or given to their filter
-functions.  If @var{process} is non-@code{nil} then this function does
-not return until some output has been received from @var{process}.
+output is given to their filter functions.  If @var{process} is
+non-@code{nil} then this function does not return until some output
+has been received from @var{process}.
 
 The arguments @var{seconds} and @var{millisec} let you specify timeout
 periods.  The former specifies a period measured in seconds and the
@@ -1591,9 +1589,9 @@ while executing sentinels.  @xref{Match Data}.
 
 @defun set-process-sentinel process sentinel
 This function associates @var{sentinel} with @var{process}.  If
-@var{sentinel} is @code{nil}, then the process will have no sentinel.
-The default behavior when there is no sentinel is to insert a message in
-the process's buffer when the process status changes.
+@var{sentinel} is @code{nil}, then the process will have the default
+sentinel, which inserts a message in the process's buffer when the
+process status changes.
 
 Changes in process sentinels take effect immediately---if the sentinel
 is slated to be run but has not been called yet, and you specify a new
@@ -1616,8 +1614,7 @@ sentinel, the eventual call to the sentinel will use the new one.
 @end defun
 
 @defun process-sentinel process
-This function returns the sentinel of @var{process}, or @code{nil} if it
-has none.
+This function returns the sentinel of @var{process}.
 @end defun
 
 @defun waiting-for-user-input-p
@@ -1974,7 +1971,7 @@ is modified as necessary to make it unique.
 
 The @var{buffer} argument is the buffer to associate with the
 connection.  Output from the connection is inserted in the buffer,
-unless you specify a filter function to handle the output.  If
+unless you specify your own filter function to handle the output.  If
 @var{buffer} is @code{nil}, it means that the connection is not
 associated with any buffer.
 
@@ -2082,7 +2079,7 @@ unique number in brackets, as in @samp{<@var{nnn}>}.  The number
 is unique for each connection in the Emacs session.
 
 @item
-If the server's filter is non-@code{nil}, the connection process does
+If the server has a non-default filter, the connection process does
 not get a separate process buffer; otherwise, Emacs creates a new
 buffer for the purpose.  The buffer name is the server's buffer name
 or process name, concatenated with the client identification string.
index e14a148..f19a08c 100644 (file)
@@ -252,7 +252,7 @@ child windows form a horizontal combination, consisting of the live
 window @var{W2} and the internal window @var{W3}.  The child windows
 of @var{W3} form a vertical combination, consisting of the live
 windows @var{W4} and @var{W5}.  Hence, the live windows in this
-window tree are @var{W2} @var{W4}, and @var{W5}.
+window tree are @var{W2}, @var{W4}, and @var{W5}.
 
   The following functions can be used to retrieve a child window of an
 internal window, and the siblings of a child window.
@@ -3504,8 +3504,9 @@ the following function to restore the state of the window.
 This function puts the window state @var{state} into @var{window}.  The
 argument @var{state} should be the state of a window returned by an
 earlier invocation of @code{window-state-get}, see above.  The optional
-argument @var{window} must specify a live window and defaults to the
-selected one.
+argument @var{window} must specify a valid window and defaults to the
+selected one.  If @var{window} is not live, it is replaced by a live
+window before putting @var{state} into it.
 
 If the optional argument @var{ignore} is non-@code{nil}, it means to ignore
 minimum window sizes and fixed-size restrictions.  If @var{ignore}
index e2ef448..af7716e 100644 (file)
@@ -1,3 +1,19 @@
+2014-02-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * texinfo.tex: Update from gnulib.
+
+2014-02-22  Xue Fuqiao  <xfq@gnu.org>
+
+       * remember.texi (Quick Start): Add an index.
+       (Function Reference, Quick Start): Add cross-references.
+
+2014-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * flymake.texi (Starting the syntax check process): Grammar fix.
+
+       * tramp.texi (External packages): Grammar fix.
+       Reword for default sentinel not being nil any more.
+
 2014-02-19  Michael Albinus  <michael.albinus@gmx.de>
 
        * trampver.texi: Update release number.
index a990453..5125acd 100644 (file)
@@ -695,8 +695,8 @@ Buildfile values are also cached.
 
 The command line (command name and the list of arguments) for launching a process is returned by the
 initialization function.  Flymake then just calls @code{start-process}
-to start an asynchronous process and configures process filter and
-sentinel which is used for processing the output of the syntax check
+to start an asynchronous process and configures process filter and
+sentinel, which are used for processing the output of the syntax check
 tool.
 
 @node Parsing the output
index 2607d2c..28cac08 100644 (file)
@@ -79,7 +79,7 @@ Backends
 @node Preface
 @chapter Preface
 
-This document describes remember-el, which was written by John Wiegley,
+This document describes remember.el, which was written by John Wiegley,
 was once maintained by Sacha Chua, and is now maintained by the Emacs
 developers.
 
@@ -205,14 +205,16 @@ appended there into other files, or reorganize your document.
 
 You can also store remembered data in other backends.  @xref{Backends}.
 
-Here is one way to map the remember functions in your init file to
-very accessible keystrokes facilities using the mode:
+Here is one way to map the remember functions in your init file
+(@pxref{Init File, , The Emacs Initialization File, emacs, GNU Emacs
+Manual}) to very accessible keystrokes facilities using the mode:
 
 @lisp
 (define-key global-map (kbd "<f9> r") 'remember)
 (define-key global-map (kbd "<f9> R") 'remember-region)
 @end lisp
 
+@cindex annotation
 By default, remember uses the first annotation returned by
 @code{remember-annotation-functions}.  To include all of the annotations,
 set @code{remember-run-all-annotation-functions-flag} to a
@@ -280,10 +282,11 @@ Destroy the current remember buffer.
 @end defun
 
 @defun remember-mode
-This enters the major mode for output from @code{remember}.  This
-buffer is used to collect data that you want remember.  Just hit
-@kbd{C-c C-c} when you're done entering, and it will go ahead and file
-the data for latter retrieval, and possible indexing.
+This enters the major mode (@pxref{Major Modes, , Major Modes, emacs,
+GNU Emacs Manual}) for output from @code{remember}.  This buffer is
+used to collect data that you want remember.  Just hit @kbd{C-c C-c}
+when you're done entering, and it will go ahead and file the data for
+latter retrieval, and possible indexing.
 @end defun
 
 @defun remember-notes &optional switch-to
index b51ac3d..3e52184 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2014-02-09.15}
+\def\texinfoversion{2014-02-16.16}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -4428,7 +4428,7 @@ end
   % complicated, when \tex is in effect and \{ is a \delimiter again.
   % We can't use \lbracecmd and \rbracecmd because texindex assumes
   % braces and backslashes are used only as delimiters.  Perhaps we
-  % should define @lbrace and @rbrace commands a la @comma.
+  % should use @lbracechar and @rbracechar?
   \def\{{{\tt\char123}}%
   \def\}{{\tt\char125}}%
   %
@@ -4449,8 +4449,7 @@ end
   % @end macro
   % ...
   % @funindex commtest
-  %
-  % The above is not enough to reproduce the bug, but it gives the flavor.
+  % This is not enough to reproduce the bug, but it gives the flavor.
   %
   % Sample whatsit resulting:
   % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
@@ -4663,6 +4662,9 @@ end
   \let\xeatspaces = \eatspaces
 }
 
+% For testing: output @{ and @} in index sort strings as \{ and \}.
+\newif\ifusebracesinindexes
+
 % \indexnofonts is used when outputting the strings to sort the index
 % by, and when constructing control sequence names.  It eliminates all
 % control sequences and just writes whatever the best ASCII sort string
@@ -4691,11 +4693,16 @@ end
   % Unfortunately, texindex is not prepared to handle braces in the
   % content at all.  So for index sorting, we map @{ and @} to strings
   % starting with |, since that ASCII character is between ASCII { and }.
-  \def\{{|a}%
-  \def\lbracechar{|a}%
+  \ifusebracesinindexes
+    \def\lbracechar{\lbracecmd}%
+    \def\rbracechar{\rbracecmd}%
+  \else
+    \def\lbracechar{|a}%
+    \def\rbracechar{|b}%
+  \fi
+  \let\{=\lbracechar
+  \let\}=\rbracechar
   %
-  \def\}{|b}%
-  \def\rbracechar{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
index b3057c2..6dd5d2a 100644 (file)
@@ -3766,10 +3766,10 @@ its complete cache keeping attributes for all files of the remote host
 it has seen so far.
 
 This is a performance degradation, because the lost file attributes
-must be recomputed when needed again.  In cases the caller of
+must be recomputed when needed again.  In cases where the caller of
 @code{process-file} knows that there are no file attribute changes, it
-shall let-bind the variable @code{process-file-side-effects} to
-@code{nil}.  @value{tramp} wouldn't flush the file attributes cache then.
+should let-bind the variable @code{process-file-side-effects} to
+@code{nil}.  Then @value{tramp} won't flush the file attributes cache.
 
 @lisp
 (let (process-file-side-effects)
@@ -3779,8 +3779,8 @@ shall let-bind the variable @code{process-file-side-effects} to
 For asynchronous processes, @value{tramp} flushes the file attributes
 cache via a process sentinel.  If the caller of
 @code{start-file-process} knows that there are no file attribute
-changes, it shall set the process sentinel to @code{nil}.  In case the
-caller defines an own process sentinel, @value{tramp}'s process
+changes, it should set the process sentinel to the default.  In cases
+where the caller defines its own process sentinel, @value{tramp}'s process
 sentinel is overwritten.  The caller can still flush the file
 attributes cache in its process sentinel with this code:
 
index 4cad9c7..62f00d0 100644 (file)
@@ -1,3 +1,7 @@
+2014-02-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * NEWS: Fix references to ?« and ?» that got mangled somehow.
+
 2014-02-09  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * NEWS: Mention all the Apropos face options that have been
index 51c7712..d60510e 100644 (file)
@@ -100,6 +100,13 @@ the list at the end of this file.
     ./configure CC='/usr/sfw/bin/gcc -m64'  # GCC
     ./configure CC='cc -m64'                # Solaris Studio
 
+** Irix 6.5
+
+  It *may* be possible to build Emacs on Irix 6.5 with an old version
+  (3.1) of gcc.  Newer versions of gcc may not work.  None of the
+  current Emacs developers use Irix, though.  If you want to help
+  make Emacs on Irix work, see <http://debbugs.gnu.org/9684>.
+
 \f
 * Obsolete platforms
 
index 4b4b405..f7a36c5 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -193,16 +193,59 @@ bound to <f11> and M-<f10>, respectively.
 *** New hooks `focus-in-hook', `focus-out-hook'.
 These are normal hooks run when an Emacs frame gains or loses input focus.
 
----
-*** Emacs can now draw dividers between adjacent windows.
-To put dividers between side-by-side/vertically stacked windows
-customize the frame parameter `right-divider-width'/`bottom-divider-width'
-to some positive integer.  You can drag dividers with the mouse
-(they show a corresponding cursor when the mouse hovers over them).
-You can change the appearance of dividers by customizing the faces
-`window-divider', `window-divider-first-pixel', and
-`window-divider-last-pixel'.  The last two are useful to provide a 3D
-effect, or to better distinguish dividers from surrounding display objects.
+*** Emacs can now change frame sizes in units of pixels, rather than
+text rows or columns.  When maximizing a frame or making it fullscreen,
+remaining extra pixels are no longer given to the minibuffer, the rightmost
+fringe, or other unusable space, but are distributed among the text
+areas of the frame's windows.  If the new option `frame-resize-pixelwise'
+is non-nil, all frame size changes happen pixelwise and set the
+corresponding size hints for the window manager.
+
+*** Emacs can now change window sizes in units of pixels.
+Mouse-dragging a mode line or window divider now changes the size of
+adjacent windows pixelwise.  If the new option `window-resize-pixelwise'
+is non-nil, functions like `balance-windows-area' and `fit-window-to-buffer'
+resize windows pixelwise.  Most functions for changing or accessing
+window sizes now have an additional argument that allows changes to apply,
+or values to be returned, in pixels instead of lines/columns.
+
+*** Emacs can now draw dividers between adjacent windows.  To put
+dividers between side-by-side/vertically stacked windows customize the
+frame parameters `right-divider-width' and `bottom-divider-width' to
+some positive integer.  You can drag dividers with the mouse (they show
+a corresponding cursor when the mouse hovers over them).  You can change
+the appearance of dividers by customizing the faces `window-divider',
+`window-divider-first-pixel', and `window-divider-last-pixel'.  The last
+two are useful to provide a 3D effect, or to better distinguish dividers
+from surrounding display objects.
+
+*** New functions are provided to return the pixel sizes of window
+components, namely `window-scroll-bar-width', `window-mode-line-height'
+`window-header-line-height', `window-right-divider-width' and
+`window-bottom-divider-width'.
+
+*** The new function `window-text-pixel-size' returns the size of the
+text of a window's buffer in pixels.  This allows functions like
+`fit-frame-to-buffer' and `fit-window-to-buffer' to accurately fit a
+window to its buffer as it will be displayed.
+
+*** `fit-window-to-buffer' can now resize windows horizontally.
+This behavior is controlled by the new option
+`fit-window-to-buffer-horizontally'.
+
+*** `fit-frame-to-buffer' can now fit frames in both directions.
+This behavior is controlled by the option `fit-frame-to-buffer' which
+tells in which direction(s) the frame shall be fit.  The new options
+`fit-frame-to-buffer-margins' and `fit-frame-to-buffer-sizes' allow to
+control the size of the frame and its position on screen.
+
+*** Temp Buffer Resize Mode can now adjust height and width of windows
+and frames.  `temp-buffer-resize-mode' is now able to adjust the height
+and the width of a window displaying a temporary buffer.  The new option
+`temp-buffer-max-width' allows to control the width of temporary buffer
+windows.  Moreover, if the new option `fit-frame-to-buffer' is non-nil
+and the buffer appears in the root window of a frame, Temp Buffer Resize
+Mode will try to adjust width and/or height of the frame.
 
 ---
 *** `split-window' is now a non-interactive function, not a command.
@@ -210,12 +253,26 @@ As a command, it was a special case of `C-x 2' (`split-window-below'),
 and as such superfluous.  After being reimplemented in Lisp, its
 interactive form was mistakenly retained.
 
+*** The functions `window-size' and `window-total-size' now have an
+optional argument to return a rounded size value.
+
+*** `window-state-put' now allows to put a window state into internal
+windows too.
+
 +++
 *** New option `scroll-bar-adjust-thumb-portion'.
 Available only on X, this option allows to control over-scrolling
 using the scroll bar (i.e. dragging the thumb down even when the end
 of the buffer is visible).
 
+*** New basic action function `display-buffer-in-previous-window' has
+`display-buffer' display a buffer in a window previously showing that
+buffer.
+
+*** New basic action function `display-buffer-at-bottom' has
+`display-buffer' choose or make a window at the bottom of the selected
+frame.
+
 ** Lisp evaluation changes
 +++
 *** `eval-defun' on an already defined defcustom calls the :set function,
@@ -312,6 +369,7 @@ that summarizes existing registers.  To disable this, set that option to nil.
 Interactive commands that read registers and want to make use of this
 should use `register-read-with-preview' to read register names.
 
++++
 *** New command `frameset-to-register' bound to `C-x r f', replacing
 `frame-configuration-to-register'.  It offers similar functionality,
 plus enhancements like the ability to restore deleted frames.
@@ -633,6 +691,7 @@ the symbol found near point.
 *** New option `hi-lock-auto-select-face'.  When non-nil, hi-lock commands
 will cycle through faces in `hi-lock-face-defaults' without prompting.
 
+---
 ** New Imenu option `imenu-generic-skip-comments-and-strings'.
 
 ** Info
@@ -725,6 +784,7 @@ names specified by `remember-directory-file-name-format'.
 
 ** Rmail
 
++++
 *** Customize `rmail-mbox-format' to influence some minor aspects of
 how Rmail displays non-MIME messages.
 
@@ -814,17 +874,16 @@ Emacs can learn the appropriate indentation settings if you provide it
 with an indented sample file.
 
 ---
-** SQL
-Improved login monitoring and appropriate response to login failures.
-Includes `sql-login-delay' to define maximum wait for a connection.
+** SQL mode
+
+*** Improved login monitoring and appropriate response to login failures.
+New variable `sql-login-delay' defines maximum wait time for a connection.
 
-*** Oracle support
+*** Oracle support.
 SQL*Plus script placeholders are properly highlighted and identified
-in `sql-placeholders-filter' correctly.  When SQL*Plus is started,
-options specified in `sql-oracle-options' are passed before the logon
-parameter, as SQL*Plus expects.  The default setting for
-`sql-oracle-options' has been altered to pass the `-L' option to limit
-the number of logon attempts per invocation.
+in `sql-placeholders-filter'.  When starting SQL*Plus, `sql-oracle-options'
+are passed before the logon parameter, as required.  The default now
+includes `-L', to limit the number of logon attempts per invocation.
 
 ---
 ** New Term mode option `term-suppress-hard-newline'.
@@ -1004,8 +1063,8 @@ The new optional CHECK-TIMERS parameter allows for the prior behavior.
 ** `defvar' and `defcustom' in a let-binding affect the "external" default.
 
 ---
-** The syntax of ?» and ?« is now punctuation instead of matched parens.
-Some languages match those as Ã‚»...«, and others as Ã‚«...», so it is
+** The syntax of ?» and ?« is now punctuation instead of matched parens.
+Some languages match those as Â»...«, and others as Â«...», so it is
 better for Emacs to stay neutral by default.
 
 ---
@@ -1024,6 +1083,7 @@ errors.  You should either convert them to utf-8 or add an explicit
 It used to disable the minor mode, major mode, and text-property keymaps,
 whereas now it simply has higher precedence.
 
++++
 ** Default process filters and sentinels are not nil any more.
 Instead they default to a function that does what the nil value used to do.
 
index dba42d5..332f28d 100644 (file)
@@ -1901,6 +1901,55 @@ to allocate ptys reliably.
 
 * Runtime problems specific to MS-Windows
 
+** Emacs on Windows 9X requires UNICOWS.DLL
+
+If that DLL is not available, Emacs will display an error dialog
+stating its absence, and refuse to run.
+
+This is because Emacs 24.4 and later uses functions whose non-stub
+implementation is only available in UNICOWS.DLL, which implements the
+Microsoft Layer for Unicode on Windows 9X, or "MSLU".  This article on
+MSDN:
+
+  http://msdn.microsoft.com/en-us/goglobal/bb688166.aspx
+
+includes a short description of MSLU and a link where it can be
+downloaded.
+
+** A few seconds delay is seen at startup and for many file operations
+
+This happens when the Net Logon service is enabled.  During Emacs
+startup, this service issues many DNS requests looking up for the
+Windows Domain Controller.  When Emacs accesses files on networked
+drives, it automatically logs on the user into those drives, which
+again causes delays when Net Logon is running.
+
+The solution seems to be to disable Net Logon with this command typed
+at the Windows shell prompt:
+
+  net stop netlogon
+
+To start the service again, type "net start netlogon".  (You can also
+stop and start the service from the Computer Management application,
+accessible by right-clicking "My Computer" or "Computer", selecting
+"Manage", then clicking on "Services".)
+
+** Emacs crashes when exiting the Emacs session
+
+This was reported to happen when some optional DLLs, such as those
+used for displaying images or the GnuTLS library, which are loaded
+on-demand, have a runtime dependency on the libgcc DLL,
+libgcc_s_dw2-1.dll.  The reason seems to be a bug in libgcc which
+rears its ugly head whenever the libgcc DLL is loaded after Emacs has
+started.
+
+One solution for this problem is to find an alternative build of the
+same optional library that does not depend on the libgcc DLL.
+
+Another possibility is to rebuild Emacs with the -shared-libgcc
+switch, which will force Emacs to load libgcc_s_dw2-1.dll on startup,
+ahead of any optional DLLs loaded on-demand later in the session.
+
 ** PATH can contain unexpanded environment variables
 
 Old releases of TCC (version 9) and 4NT (up to version 8) do not correctly
@@ -1920,8 +1969,8 @@ XKeymacs completely is reported to solve the problem.
 
 ** Windows 95 and networking.
 
-To support server sockets, Emacs 22.1 loads ws2_32.dll.  If this file
-is missing, all Emacs networking features are disabled.
+To support server sockets, Emacs loads ws2_32.dll.  If this file is
+missing, all Emacs networking features are disabled.
 
 Old versions of Windows 95 may not have the required DLL.  To use
 Emacs's networking features on Windows 95, you must install the
@@ -1940,28 +1989,36 @@ reported as a bug against both Emacs and rails-mode, so look for an updated
 rails-mode that avoids this crash, or avoid using UNC paths if using
 rails-mode.
 
-** Known problems with the MS-Windows port of Emacs 22.3
+** M-x term does not work on MS-Windows.
 
-M-x term does not work on MS-Windows.  TTY emulation on Windows is
-undocumented, and programs such as stty which are used on posix platforms
-to control tty emulation do not exist for native windows terminals.
+TTY emulation on Windows is undocumented, and programs such as stty
+which are used on posix platforms to control tty emulation do not
+exist for native windows terminals.
 
-Using create-fontset-from-ascii-font or the --font startup parameter
+** Using create-fontset-from-ascii-font or the --font startup parameter
 with a Chinese, Japanese or Korean font leads to display problems.
 Use a Latin-only font as your default font.  If you want control over
 which font is used to display Chinese, Japanese or Korean character,
 use create-fontset-from-fontset-spec to define a fontset.
 
-Frames are not refreshed while the File or Font dialog or a pop-up menu
-is displayed.  This also means help text for pop-up menus is not
-displayed at all.  This is because message handling under Windows is
-synchronous, so we cannot handle repaint (or any other) messages while
-waiting for a system function to return the result of the dialog or
-pop-up menu interaction.
+** Frames are not refreshed while dialogs or menus are displayed
+
+This means no redisplay while the File or Font dialog or a pop-up menu
+is displayed.  This also means tooltips with help text for pop-up
+menus is not displayed at all (except in a TTY session, where the help
+text is shown in the echo area).  This is because message handling
+under Windows is synchronous, so we cannot handle repaint (or any
+other) messages while waiting for a system function, which popped up
+the menu/dialog, to return the result of the dialog or pop-up menu
+interaction.
+
+** Help text in tooltips does not work on old Windows versions
 
 Windows 95 and Windows NT up to version 4.0 do not support help text
 for menus.  Help text is only available in later versions of Windows.
 
+** Display problems with ClearType method of smoothing
+
 When "ClearType" method is selected as the "method to smooth edges of
 screen fonts" (in Display Properties, Appearance tab, under
 "Effects"), there are various problems related to display of
@@ -1973,6 +2030,8 @@ has some code to enlarge the width of the bounding box.  Apparently,
 this display feature needs more changes to get it 100% right.  A
 workaround is to disable ClearType.
 
+** Problems with mouse-tracking and focus management
+
 There are problems with display if mouse-tracking is enabled and the
 mouse is moved off a frame, over another frame then back over the first
 frame.  A workaround is to click the left mouse button inside the frame
@@ -1984,22 +2043,22 @@ not as severely as in 21.1.
 An inactive cursor remains in an active window after the Windows
 Manager driven switch of the focus, until a key is pressed.
 
-Windows input methods are not recognized by Emacs.  However, some
-of these input methods cause the keyboard to send characters encoded
-in the appropriate coding system (e.g., ISO 8859-1 for Latin-1
-characters, ISO 8859-8 for Hebrew characters, etc.).  To make these
-input methods work with Emacs, set the keyboard coding system to the
-appropriate value after you activate the Windows input method.  For
-example, if you activate the Hebrew input method, type this:
+** Problems with Windows input methods
+
+Some of the Windows input methods cause the keyboard to send
+characters encoded in the appropriate coding system (e.g., ISO 8859-1
+for Latin-1 characters, ISO 8859-8 for Hebrew characters, etc.).  To
+make these input methods work with Emacs on Windows 9X, you might need
+to set the keyboard coding system to the appropriate value after you
+activate the Windows input method.  For example, if you activate the
+Hebrew input method, type this:
 
    C-x RET k hebrew-iso-8bit RET
 
-(Emacs ought to recognize the Windows language-change event and set up
-the appropriate keyboard encoding automatically, but it doesn't do
-that yet.)  In addition, to use these Windows input methods, you
-should set your "Language for non-Unicode programs" (on Windows XP,
-this is on the Advanced tab of Regional Settings) to the language of
-the input method.
+In addition, to use these Windows input methods, you might need to set
+your "Language for non-Unicode programs" (on Windows XP, this is on
+the Advanced tab of Regional Settings) to the language of the input
+method.
 
 To bind keys that produce non-ASCII characters with modifiers, you
 must specify raw byte codes.  For instance, if you want to bind
@@ -2011,20 +2070,28 @@ The above example is for the Latin-1 environment where the byte code
 of the encoded a-grave is 340 octal.  For other environments, use the
 encoding appropriate to that environment.
 
+** Problems with the %b format specifier for format-time-string
+
 The %b specifier for format-time-string does not produce abbreviated
 month names with consistent widths for some locales on some versions
 of Windows.  This is caused by a deficiency in the underlying system
 library function.
 
+** Problems with set-time-zone-rule function
+
 The function set-time-zone-rule gives incorrect results for many
 non-US timezones.  This is due to over-simplistic handling of
 daylight savings switchovers by the Windows libraries.
 
+** Files larger than 4GB report wrong size
+
 Files larger than 4GB cause overflow in the size (represented as a
 32-bit integer) reported by `file-attributes'.  This affects Dired as
 well, since the Windows port uses a Lisp emulation of `ls' that relies
 on `file-attributes'.
 
+** Playing sound doesn't support the :data method
+
 Sound playing is not supported with the `:data DATA' key-value pair.
 You _must_ use the `:file FILE' method.
 
index e0b8e20..a7927fd 100644 (file)
+2014-02-24  Leo Liu  <sdl.web@gmail.com>
+
+       * emacs-lisp/easy-mmode.el (define-minor-mode): Fix debug spec.
+
+2014-02-24  Juanma Barranquero  <lekktu@gmail.com>
+
+       * apropos.el (apropos-print): Avoid formatting error when
+       apropos-do-all and apropos-compact-layout are both t.
+
+2014-02-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * apropos.el (apropos-property, apropos-all-words-regexp)
+       (apropos-true-hit, apropos-variable, apropos-print):
+       Fix docstring typos, and remove obsolete comment.
+
+2014-02-23  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-sh-handle-file-truename):
+       Preserve trailing "/".  (Bug#16851)
+
+2014-02-23  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-smie-rules): Don't indent specially
+       after `=>' (bug#16811).
+       (ruby-smie-rules): Handle the inconsistent second element of the
+       list returned by `smie-indent--parent'.
+       (ruby-font-lock-keywords): Disqualify any identifier before `=' as
+       method call.
+
+2014-02-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * elec-pair.el (electric-pair-text-syntax-table)
+       (electric-pair-syntax-info, electric-pair--syntax-ppss)
+       (electric-pair--balance-info, electric-pair-mode): Fix docstring typos.
+       (electric-pair--looking-at-unterminated-string-p): Doc fix.
+       (electric-pair--inside-string-p): Doc fix.  Use `let', not `let*'.
+
+2014-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * imenu.el (imenu--generic-function): Doc fix.
+
+       * register.el (frame-configuration-to-register): Make obsolete.
+
+2014-02-22  Juanma Barranquero  <lekktu@gmail.com>
+
+       * desktop.el (desktop-save-buffer-p): Do not fail when
+       desktop-files-not-to-save is nil.  Return t for true result
+       as the doc says.
+
+2014-02-22  Daniel Colascione  <dancol@dancol.org>
+
+       * net/secrets.el (secrets-create-item,secrets-search-items): Check
+       that attribute values are strings, avoiding the construction of
+       invalid dbus messages.
+
+2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * emacs-lisp/gv.el: Avoid duplicating gv-expander and gv-setter in
+       defun-declarations-alist.
+
+2014-02-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/cl-macs.el (cl-define-compiler-macro): Add indent rule
+       (bug#16829).
+
+2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * whitespace.el (whitespace-space, whitespace-hspace, whitespace-tab)
+       (whitespace-newline, whitespace-trailing, whitespace-line)
+       (whitespace-space-before-tab, whitespace-indentation, whitespace-empty)
+       (whitespace-space-after-tab): Fix typo in docstrings.
+
+2014-02-21  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (auto-mode-alist): Add missing "or".
+
+       * electric.el (electric-indent-functions-without-reindent):
+       Add `yaml-indent-line'.
+
+2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32-vars.el (w32-enable-synthesized-fonts): Mark as obsolete.
+       It has done nothing for years; should be removed after the release.
+
+       * simple.el (choose-completion): Fix docstring typo.
+       (read-quoted-char-radix): Remove unneeded * in docstring.
+       (process-file, kill-whole-line, pop-to-mark-command, set-mark-command):
+       Don't escape parentheses unnecessarily in docstrings.
+
+2014-02-21  Martin Rudalics  <rudalics@gmx.at>
+
+       Fix handling of window-min-height/-width (Bug#16738).
+       * window.el (window--dump-window, window--dump-frame):
+       New functions.
+       (window--min-size-1): Account for window dividers.
+       When window-resize-pixelwise is nil, delay rounding till after the
+       sum of the window components has been calculated.
+       (window--min-delta-1, window--max-delta-1): When PIXELWISE is
+       nil make sure at least one text line and two text columns remain
+       fully visible.
+       (window-resize): Signal an error when window-resize-apply fails.
+       (window--resize-child-windows): Fix calculation of by how many
+       pixels a window can still be shrunk via window-new-normal.
+       (adjust-window-trailing-edge): Call window--resizable with
+       correct TRAIL argument.
+
+       (with-temp-buffer-window): Don't evaluate BODY within
+       with-current-buffer (Bug#16816).
+
+2014-02-21  Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp.el (tramp-check-cached-permissions):
+       Call `file-attributes' with `suffix' being a symbol but a string.
+
+2014-02-21  Daniel Colascione  <dancol@dancol.org>
+
+       * net/dbus.el (dbus-init-bus-1): Declare new subr.
+       (dbus-init-bus): New function: call into dbus-init-bus-1
+       and installs a handler for the disconnect signal.
+       (dbus-call-method): Rewrite to look for result in cons.
+       (dbus-call-method-handler): Store result in cons.
+       (dbus-check-event): Recognize events with nil sender as valid.
+       (dbus-handle-bus-disconnect): New function.  React to bus
+       disconnection signal by synthesizing dbus error for each
+       pending synchronous or asynchronous call.
+       (dbus-notice-synchronous-call-errors): New function.
+       (dbus-handle-event): Raise errors directly only when `dbus-debug'
+       is true, not all the time.
+
+2014-02-21  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32-fns.el (w32-enable-italics, w32-charset-to-codepage-alist):
+       Remove obsolescence declarations, these variables do not exist anymore.
+
+       * savehist.el (savehist-save-minibuffer-history)
+       (savehist-additional-variables, savehist-file, savehist-mode-hook)
+       (savehist-save-hook, savehist-coding-system, savehist-loaded)
+       (savehist-load, savehist-install, savehist-autosave): Fix typos;
+       mostly, refer to "Savehist mode" when talking about the mode,
+       and not the function.
+
+       * saveplace.el (save-place): Remove redundant info in docstring.
+       (save-place-forget-unreadable-files, toggle-save-place)
+       (save-place-forget-unreadable-files, save-place-dired-hook):
+       Fix typos and remove unneeded backslashes.
+
 2014-02-20  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (ls-lisp-use-insert-directory-program): Declare.
        (tramp-handle-insert-directory): New defun, taken from tramp-gvfs.el.
 
        * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist)
-       [insert-directory]: Use `tramp-handle-insert-directory.
+       <insert-directory>: Use `tramp-handle-insert-directory'.
        (tramp-gvfs-handle-insert-directory): Remove function.
 
        * net/tramp-sh.el (tramp-sh-handle-insert-directory):
        cache is empty.
 
        * net/tramp-adb.el (tramp-adb-file-name-handler-alist)
-       [make-symbolic-link]: Use `tramp-handle-make-symbolic-link'.
+       <make-symbolic-link>: Use `tramp-handle-make-symbolic-link'.
 
        * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist)
-       [make-symbolic-link]: Use `tramp-handle-make-symbolic-link'.
+       <make-symbolic-link>: Use `tramp-handle-make-symbolic-link'.
        (tramp-gvfs-maybe-open-connection): Set always connection
        properties, even if target is mounted already.
 
        * net/tramp-smb.el (tramp-smb-acl-program): New customer option.
        (tramp-smb-errors): Add error messages.
        (tramp-smb-actions-with-acl): New defconst.
-       (tramp-smb-file-name-handler-alist) [set-file-acl]: Add handler.
+       (tramp-smb-file-name-handler-alist) <set-file-acl>: Add handler.
        (tramp-smb-action-with-acl, tramp-smb-handle-set-file-acl): New defuns.
        (tramp-smb-handle-file-acl): Rewrite, using "smbcacls".
        (tramp-smb-handle-file-attributes): Simplify test for "stat" capability.
 
        * net/tramp-adb.el (tramp-adb-file-name-handler-alist):
        Order alphabetically.
-       [access-file, add-name-to-file, dired-call-process]:
-       [dired-compress-file, file-acl, file-notify-rm-watch]:
-       [file-ownership-preserved-p, file-selinux-context]:
-       [make-directory-internal, make-symbolic-link, set-file-acl]:
-       [set-file-selinux-context, set-visited-file-modtime]:
-       [verify-visited-file-modtime]: Add handler.
+       <access-file, add-name-to-file, dired-call-process>:
+       <dired-compress-file, file-acl, file-notify-rm-watch>:
+       <file-ownership-preserved-p, file-selinux-context>:
+       <make-directory-internal, make-symbolic-link, set-file-acl>:
+       <set-file-selinux-context, set-visited-file-modtime>:
+       <verify-visited-file-modtime>: Add handler.
        (tramp-adb-handle-write-region): Apply `set-visited-file-modtime'.
 
        * net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist)
-       [file-notify-add-watch, file-notify-rm-watch]:
-       [set-file-times, set-visited-file-modtime]:
-       [verify-visited-file-modtime]: Add handler.
+       <file-notify-add-watch, file-notify-rm-watch>:
+       <set-file-times, set-visited-file-modtime>:
+       <verify-visited-file-modtime>: Add handler.
        (with-tramp-gvfs-error-message)
        (tramp-gvfs-handle-set-visited-file-modtime)
        (tramp-gvfs-fuse-file-name): Remove.
 
        * net/tramp-sh.el (tramp-sh-file-name-handler-alist):
        Order alphabetically.
-       [file-notify-rm-watch ]: Use default Tramp handler.
-       [executable-find]: Remove private handler.
+       <file-notify-rm-watch>: Use default Tramp handler.
+       <executable-find>: Remove private handler.
        (tramp-do-copy-or-rename-file-out-of-band): Do not bind
        `default-directory'.
        (tramp-sh-handle-executable-find)
        Do not use `format' in `tramp-message'.
 
        * net/tramp-smb.el (tramp-smb-file-name-handler-alist)
-       [file-notify-rm-watch, set-visited-file-modtime]:
-       [verify-visited-file-modtime]: Add handler.
+       <file-notify-rm-watch, set-visited-file-modtime>:
+       <verify-visited-file-modtime>: Add handler.
        (tramp-smb-call-winexe): Do not bind `default-directory'.
 
 2013-08-01  Xue Fuqiao  <xfq.free@gmail.com>
        * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection):
        * net/tramp-sh.el (tramp-maybe-open-connection):
        Use `tramp-connection-timeout'.
-       (tramp-methods) [su, sudo, ksu]: Add method specific timeouts.
+       (tramp-methods) <su, sudo, ksu>: Add method specific timeouts.
        (Bug#14808)
 
 2013-07-11  Leo Liu  <sdl.web@gmail.com>
index 93e2e42..2cba65e 100644 (file)
@@ -99,7 +99,7 @@ include key-binding information in its output."
 
 (defface apropos-property
   '((t (:inherit font-lock-builtin-face)))
-  "Face for property name in apropos output, or nil for none."
+  "Face for property name in Apropos output, or nil for none."
   :group 'apropos
   :version "24.3")
 
@@ -182,7 +182,7 @@ If value is `verbose', the computed score is shown for each match."
   "Regexp used in current apropos run.")
 
 (defvar apropos-all-words-regexp nil
-  "Regexp matching apropos-all-words.")
+  "Regexp matching `apropos-all-words'.")
 
 (defvar apropos-files-scanned ()
   "List of elc files already scanned in current run of `apropos-documentation'.")
@@ -411,7 +411,6 @@ This updates variables `apropos-pattern', `apropos-pattern-quoted',
          apropos-pattern pattern
          apropos-regexp pattern)))
 
-
 (defun apropos-calc-scores (str words)
   "Return apropos scores for string STR matching WORDS.
 Value is a list of offsets of the words into the string."
@@ -455,7 +454,7 @@ Value is a list of offsets of the words into the string."
 (defun apropos-true-hit (str words)
   "Return t if STR is a genuine hit.
 This may fail if only one of the keywords is matched more than once.
-This requires that at least 2 keywords (unless only one was given)."
+This requires at least two keywords (unless only one was given)."
   (or (not str)
       (not words)
       (not (cdr words))
@@ -506,7 +505,7 @@ variables, not just user options."
 ;;;###autoload
 (defun apropos-variable (pattern &optional do-not-all)
   "Show variables that match PATTERN.
-When DO-NOT-ALL is not-nil, show user options only, i.e. behave
+When DO-NOT-ALL is non-nil, show user options only, i.e. behave
 like `apropos-user-option'."
   (interactive (list (apropos-read-pattern
                      (if current-prefix-arg "user option" "variable"))
@@ -1038,14 +1037,12 @@ alphabetically by symbol name; but this function also sets
 `apropos-accumulator' to nil before returning.
 
 If SPACING is non-nil, it should be a string; separate items with that string.
-If non-nil TEXT is a string that will be printed as a heading."
+If non-nil, TEXT is a string that will be printed as a heading."
   (if (null apropos-accumulator)
       (message "No apropos matches for `%s'" apropos-pattern)
     (setq apropos-accumulator
          (sort apropos-accumulator
                (lambda (a b)
-                 ;; Don't sort by score if user can't see the score.
-                 ;; It would be confusing.  -- rms.
                  (if apropos-sort-by-scores
                      (or (> (cadr a) (cadr b))
                          (and (= (cadr a) (cadr b))
@@ -1055,6 +1052,7 @@ If non-nil TEXT is a string that will be printed as a heading."
       (let ((p apropos-accumulator)
            (old-buffer (current-buffer))
            (inhibit-read-only t)
+           (button-end 0)
            symbol item)
        (set-buffer standard-output)
        (apropos-mode)
@@ -1072,10 +1070,12 @@ If non-nil TEXT is a string that will be printed as a heading."
              (setq apropos-item
                    (cons (car apropos-item)
                          (cons nil (cdr apropos-item)))))
+         (when (= (point) button-end) (terpri))
          (insert-text-button (symbol-name symbol)
                              'type 'apropos-symbol
                              'skip apropos-multi-type
                              'face 'apropos-symbol)
+         (setq button-end (point))
          (if (and (eq apropos-sort-by-scores 'verbose)
                   (cadr apropos-item))
              (insert " (" (number-to-string (cadr apropos-item)) ") "))
index 6ec3cee..69c1701 100644 (file)
@@ -878,23 +878,25 @@ FILENAME is the visited file name, BUFNAME is the buffer name, and
 MODE is the major mode.
 \n\(fn FILENAME BUFNAME MODE)"
   (let ((case-fold-search nil)
-        dired-skip)
-    (and (not (and (stringp desktop-buffers-not-to-save)
-                  (not filename)
-                  (string-match-p desktop-buffers-not-to-save bufname)))
-         (not (memq mode desktop-modes-not-to-save))
-         ;; FIXME this is broken if desktop-files-not-to-save is nil.
-         (or (and filename
-                 (stringp desktop-files-not-to-save)
-                  (not (string-match-p desktop-files-not-to-save filename)))
-             (and (memq mode '(dired-mode vc-dir-mode))
-                  (with-current-buffer bufname
-                    (not (setq dired-skip
-                               (string-match-p desktop-files-not-to-save
-                                               default-directory)))))
-             (and (null filename)
-                  (null dired-skip)     ; bug#5755
-                 (with-current-buffer bufname desktop-save-buffer))))))
+       (no-regexp-to-check (not (stringp desktop-files-not-to-save)))
+       dired-skip)
+    (and (or filename
+            (not (stringp desktop-buffers-not-to-save))
+            (not (string-match-p desktop-buffers-not-to-save bufname)))
+        (not (memq mode desktop-modes-not-to-save))
+        (or (and filename
+                 (or no-regexp-to-check
+                     (not (string-match-p desktop-files-not-to-save filename))))
+            (and (memq mode '(dired-mode vc-dir-mode))
+                 (or no-regexp-to-check
+                     (not (setq dired-skip
+                                (with-current-buffer bufname
+                                  (string-match-p desktop-files-not-to-save
+                                                  default-directory))))))
+            (and (null filename)
+                 (null dired-skip)  ; bug#5755
+                 (with-current-buffer bufname desktop-save-buffer)))
+        t)))
 
 ;; ----------------------------------------------------------------------------
 (defun desktop-file-name (filename dirname)
index 8562801..52ad9bc 100644 (file)
@@ -163,7 +163,7 @@ return value is considered instead."
   "Syntax table used when pairing inside comments and strings.
 
 `electric-pair-mode' considers this syntax table only when point in inside
-quotes or comments. If lookup fails here, `electric-pair-text-pairs' will
+quotes or comments.  If lookup fails here, `electric-pair-text-pairs' will
 be considered.")
 
 (defun electric-pair-backward-delete-char (n &optional killflag untabify)
@@ -214,7 +214,7 @@ SYNTAX is COMMAND-EVENT's syntax character.  PAIR is
 COMMAND-EVENT's pair.  UNCONDITIONAL indicates the variables
 `electric-pair-pairs' or `electric-pair-text-pairs' were used to
 lookup syntax.  STRING-OR-COMMENT-START indicates that point is
-inside a comment of string."
+inside a comment or string."
   (let* ((pre-string-or-comment (or (bobp)
                                     (nth 8 (save-excursion
                                              (syntax-ppss (1- (point)))))))
@@ -252,7 +252,7 @@ inside a comment of string."
 (defun electric-pair--syntax-ppss (&optional pos where)
   "Like `syntax-ppss', but sometimes fallback to `parse-partial-sexp'.
 
-WHERE is list defaulting to '(string comment) and indicates
+WHERE is list defaulting to '(string comment) and indicates
 when to fallback to `parse-partial-sexp'."
   (let* ((pos (or pos (point)))
          (where (or where '(string comment)))
@@ -267,43 +267,42 @@ when to fallback to `parse-partial-sexp'."
           (parse-partial-sexp (point-min) pos)
         quick-ppss-at-pos))))
 
-;; Balancing means controlling pairing and skipping of parentheses so
-;; that, if possible, the buffer ends up at least as balanced as
-;; before, if not more. The algorithm is slightly complex because some
-;; situations like "()))" need pairing to occur at the end but not at
-;; the beginning. Balancing should also happen independently for
-;; different types of parentheses, so that having your {}'s unbalanced
-;; doesn't keep `electric-pair-mode' from balancing your ()'s and your
-;; []'s.
+;; Balancing means controlling pairing and skipping of parentheses
+;; so that, if possible, the buffer ends up at least as balanced as
+;; before, if not more.  The algorithm is slightly complex because
+;; some situations like "()))" need pairing to occur at the end but
+;; not at the beginning.  Balancing should also happen independently
+;; for different types of parentheses, so that having your {}'s
+;; unbalanced doesn't keep `electric-pair-mode' from balancing your
+;; ()'s and your []'s.
 (defun electric-pair--balance-info (direction string-or-comment)
   "Examine lists forward or backward according to DIRECTION's sign.
 
 STRING-OR-COMMENT is info suitable for running `parse-partial-sexp'.
 
 Return a cons of two descriptions (MATCHED-P . PAIR) for the
-innermost and outermost lists that enclose point. The outermost
+innermost and outermost lists that enclose point.  The outermost
 list enclosing point is either the first top-level or first
 mismatched list found by listing up.
 
-If the outermost list is matched, don't rely on its PAIR. If
-point is not enclosed by any lists, return ((T) . (T))."
+If the outermost list is matched, don't rely on its PAIR.
+If point is not enclosed by any lists, return ((t) . (t))."
   (let* (innermost
          outermost
          (table (if string-or-comment
                     electric-pair-text-syntax-table
                   (syntax-table)))
          (at-top-level-or-equivalent-fn
-          ;; called when `scan-sexps' ran perfectly, when when it
-          ;; found a parenthesis pointing in the direction of
-          ;; travel. Also when travel started inside a comment and
-          ;; exited it
+          ;; called when `scan-sexps' ran perfectly, when it found
+          ;; a parenthesis pointing in the direction of travel.
+          ;; Also when travel started inside a comment and exited it.
           #'(lambda ()
               (setq outermost (list t))
               (unless innermost
                 (setq innermost (list t)))))
          (ended-prematurely-fn
           ;; called when `scan-sexps' crashed against a parenthesis
-          ;; pointing opposite the direction of travel. After
+          ;; pointing opposite the direction of travel.  After
           ;; traversing that character, the idea is to travel one sexp
           ;; in the opposite direction looking for a matching
           ;; delimiter.
@@ -366,7 +365,7 @@ point is not enclosed by any lists, return ((T) . (T))."
     (cons innermost outermost)))
 
 (defun electric-pair--looking-at-unterminated-string-p (char)
-  "Say if following string starts with CHAR and is unterminated."
+  "Return non-nil if following string starts with CHAR and is unterminated."
   ;; FIXME: ugly/naive
   (save-excursion
     (skip-chars-forward (format "^%c" char))
@@ -380,14 +379,14 @@ point is not enclosed by any lists, return ((T) . (T))."
            (scan-error t)))))
 
 (defun electric-pair--inside-string-p (char)
-  "Say if point is inside a string started by CHAR.
+  "Return non-nil if point is inside a string started by CHAR.
 
 A comments text is parsed with `electric-pair-text-syntax-table'.
 Also consider strings within comments, but not strings within
 strings."
   ;; FIXME: could also consider strings within strings by examining
   ;; delimiters.
-  (let* ((ppss (electric-pair--syntax-ppss (point) '(comment))))
+  (let ((ppss (electric-pair--syntax-ppss (point) '(comment))))
     (memq (nth 3 ppss) (list t char))))
 
 (defun electric-pair-inhibit-if-helps-balance (char)
@@ -549,7 +548,7 @@ the mode if ARG is omitted or nil.
 
 Electric Pair mode is a global minor mode.  When enabled, typing
 an open parenthesis automatically inserts the corresponding
-closing parenthesis.  \(Likewise for brackets, etc.)."
+closing parenthesis.  (Likewise for brackets, etc.)."
   :global t :group 'electricity
   (if electric-pair-mode
       (progn
index 4549fca..9925536 100644 (file)
@@ -220,7 +220,7 @@ Python does not lend itself to fully automatic indentation.")
 
 (defvar electric-indent-functions-without-reindent
   '(indent-relative indent-to-left-margin indent-relative-maybe
-    py-indent-line coffee-indent-line org-indent-line
+    py-indent-line coffee-indent-line org-indent-line yaml-indent-line
     haskell-indentation-indent-line haskell-indent-cycle haskell-simple-indent)
   "List of indent functions that can't reindent.
 If `line-indent-function' is one of those, then `electric-indent-mode' will
index 45448ec..b1861cf 100644 (file)
@@ -2710,7 +2710,7 @@ compiler macros are expanded repeatedly until no further expansions are
 possible.  Unlike regular macros, BODY can decide to \"punt\" and leave the
 original function call alone by declaring an initial `&whole foo' parameter
 and then returning foo."
-  (declare (debug cl-defmacro))
+  (declare (debug cl-defmacro) (indent 2))
   (let ((p args) (res nil))
     (while (consp p) (push (pop p) res))
     (setq args (nconc (nreverse res) (and p (list '&rest p)))))
index 2db629e..b5b6566 100644 (file)
@@ -148,7 +148,7 @@ For example, you could write
     :lighter \" Foo\" :require 'foo :global t :group 'hassle :version \"27.5\"
     ...BODY CODE...)"
   (declare (doc-string 2)
-           (debug (&define name stringp
+           (debug (&define name string-or-null-p
                           [&optional [&not keywordp] sexp
                            &optional [&not keywordp] sexp
                            &optional [&not keywordp] sexp]
index 4f68274..6624189 100644 (file)
@@ -157,11 +157,13 @@ arguments as NAME.  DO is a function as defined in `gv-get'."
         (_ (message "Unknown %s declaration %S" symbol handler) nil))))
 
 ;;;###autoload
-(push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander))
-      defun-declarations-alist)
+(or (assq 'gv-expander defun-declarations-alist)
+    (push `(gv-expander ,(apply-partially #'gv--defun-declaration 'gv-expander))
+         defun-declarations-alist))
 ;;;###autoload
-(push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter))
-      defun-declarations-alist)
+(or (assq 'gv-setter defun-declarations-alist)
+    (push `(gv-setter ,(apply-partially #'gv--defun-declaration 'gv-setter))
+         defun-declarations-alist))
 
 ;; (defmacro gv-define-expand (name expander)
 ;;   "Use EXPANDER to handle NAME as a generalized var.
index a360139..4263508 100644 (file)
@@ -1,3 +1,9 @@
+2014-02-22  Daniel Colascione  <dancol@dancol.org>
+
+       * auth-source.el (auth-source-secrets-listify-pattern): New function.
+       (auth-source-secrets-search): Don't pass invalid patterns to secrets.el;
+       instead, build list of patterns.
+
 2014-02-13  Teodor Zlatanov  <tzz@lifelogs.com>
 
        * auth-source.el (auth-sources): Add pointer to what the .gpg extension
index 6efd52d..a50ad75 100644 (file)
@@ -1506,6 +1506,31 @@ Respects `auth-source-save-behavior'.  Uses
 ;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1))
 ;; (let ((auth-sources '("secrets:Login"))) (auth-source-search :max 1 :signon_realm "https://git.gnus.org/Git"))
 
+(defun auth-source-secrets-listify-pattern (pattern)
+  "Convert a pattern with lists to a list of string patterns.
+
+auth-source patterns can have values of the form :foo (\"bar\"
+\"qux\"), which means to match any secret with :foo equal to
+\"bar\" or :foo equal to \"qux\".  The secrets backend supports
+only string values for patterns, so this routine returns a list
+of patterns that is equivalent to the single original pattern
+when interpreted such that if a secret matches any pattern in the
+list, it matches the original pattern."
+  (if (null pattern)
+      '(nil)
+    (let* ((key (pop pattern))
+           (value (pop pattern))
+           (tails (auth-source-secrets-listify-pattern pattern))
+           (heads (if (stringp value)
+                      (list (list key value))
+                    (mapcar (lambda (v) (list key v)) value))))
+      (cl-loop
+         for h in heads
+         nconc
+           (cl-loop
+              for tl in tails
+              collect (append h tl))))))
+
 (defun* auth-source-secrets-search (&rest
                                     spec
                                     &key backend create delete label
@@ -1558,21 +1583,25 @@ authentication tokens:
                             collect (nth i spec)))
          ;; build a search spec without the ignored keys
          ;; if a search key is nil or t (match anything), we skip it
-         (search-spec (apply 'append (mapcar
+         (search-specs (auth-source-secrets-listify-pattern
+                        (apply 'append (mapcar
                                       (lambda (k)
                                         (if (or (null (plist-get spec k))
                                                 (eq t (plist-get spec k)))
                                             nil
                                           (list k (plist-get spec k))))
-                                      search-keys)))
+                                      search-keys))))
          ;; needed keys (always including host, login, port, and secret)
          (returned-keys (mm-delete-duplicates (append
                                                '(:host :login :port :secret)
                                                search-keys)))
-         (items (loop for item in (apply 'secrets-search-items coll search-spec)
-                      unless (and (stringp label)
-                                  (not (string-match label item)))
-                      collect item))
+         (items
+          (loop for search-spec in search-specs
+               nconc
+               (loop for item in (apply 'secrets-search-items coll search-spec)
+                  unless (and (stringp label)
+                              (not (string-match label item)))
+                  collect item)))
          ;; TODO: respect max in `secrets-search-items', not after the fact
          (items (butlast items (- (length items) max)))
          ;; convert the item name to a full plist
index 9f11ef4..e5f33a5 100644 (file)
@@ -726,8 +726,12 @@ for modes which use `imenu--generic-function'.  If it is not set, but
 ;; so it needs to be careful never to loop!
 (defun imenu--generic-function (patterns)
   "Return an index alist of the current buffer based on PATTERNS.
-PATTERNS should be an alist which has the same form as
-`imenu-generic-expression'.
+PATTERNS should be an alist with the same form as `imenu-generic-expression'.
+
+If `imenu-generic-skip-comments-and-strings' is non-nil, this ignores
+text inside comments and strings.
+
+If `imenu-case-fold-search' is non-nil, this ignores case.
 
 The return value is an alist of the form
  (INDEX-NAME . INDEX-POSITION)
index 5c1296d..3500c84 100644 (file)
@@ -35,7 +35,7 @@
 
 ;; Declare used subroutines and variables.
 (declare-function dbus-message-internal "dbusbind.c")
-(declare-function dbus-init-bus "dbusbind.c")
+(declare-function dbus-init-bus-1 "dbusbind.c")
 (defvar dbus-message-type-invalid)
 (defvar dbus-message-type-method-call)
 (defvar dbus-message-type-method-return)
@@ -154,7 +154,7 @@ Otherwise, return result of last form in BODY, or all other errors."
 
 (define-obsolete-variable-alias 'dbus-event-error-hooks
   'dbus-event-error-functions "24.3")
-(defvar dbus-event-error-functions nil
+(defvar dbus-event-error-functions '(dbus-notice-synchronous-call-errors)
   "Functions to be called when a D-Bus error happens in the event handler.
 Every function must accept two arguments, the event and the error variable
 caught in `condition-case' by `dbus-error'.")
@@ -173,11 +173,23 @@ SERIAL is the serial number of the reply message.")
   "Handler for reply messages of asynchronous D-Bus message calls.
 It calls the function stored in `dbus-registered-objects-table'.
 The result will be made available in `dbus-return-values-table'."
-  (puthash (list  :serial
-                 (dbus-event-bus-name last-input-event)
-                (dbus-event-serial-number last-input-event))
-          (if (= (length args) 1) (car args) args)
-          dbus-return-values-table))
+  (let* ((key (list  :serial
+                     (dbus-event-bus-name last-input-event)
+                     (dbus-event-serial-number last-input-event)))
+         (result (gethash key dbus-return-values-table)))
+    (when (consp result)
+      (setcar result :complete)
+      (setcdr result (if (= (length args) 1) (car args) args)))))
+
+(defun dbus-notice-synchronous-call-errors (ev er)
+  "Detect errors resulting from pending synchronous calls."
+  (let* ((key (list  :serial
+                     (dbus-event-bus-name ev)
+                     (dbus-event-serial-number ev)))
+         (result (gethash key dbus-return-values-table)))
+    (when (consp result)
+      (setcar result :error)
+      (setcdr result er))))
 
 (defun dbus-call-method (bus service path interface method &rest args)
   "Call METHOD on the D-Bus BUS.
@@ -264,7 +276,8 @@ object is returned instead of a list containing this single Lisp object.
        (key
         (apply
          'dbus-message-internal dbus-message-type-method-call
-         bus service path interface method 'dbus-call-method-handler args)))
+         bus service path interface method 'dbus-call-method-handler args))
+        (result (cons :pending nil)))
 
     ;; Wait until `dbus-call-method-handler' has put the result into
     ;; `dbus-return-values-table'.  If no timeout is given, use the
@@ -273,25 +286,28 @@ object is returned instead of a list containing this single Lisp object.
     ;; hurts when reading D-Bus events asynchronously.
 
     ;; Work around bug#16775 by busy-waiting with gradual backoff for
-    ;; dbus calls to complete.  A better aproach would involve either
+    ;; dbus calls to complete.  A better approach would involve either
     ;; adding arbitrary wait condition support to read-event or
     ;; restructuring dbus as a kind of process object.  Poll at most
     ;; about once per second for completion.
 
-    (with-timeout ((if timeout (/ timeout 1000.0) 25))
-      (while (eq (gethash key dbus-return-values-table :ignore) :ignore)
-        (let ((event (let ((inhibit-redisplay t) unread-command-events)
-                      (read-event nil nil check-interval))))
-          (when event
-            (setf unread-command-events
-                  (nconc unread-command-events
-                         (cons event nil))))
-          (when (< check-interval 1)
-            (setf check-interval (* check-interval 1.05))))))
-
-    ;; Cleanup `dbus-return-values-table'.  Return the result.
-    (prog1
-       (gethash key dbus-return-values-table)
+    (puthash key result dbus-return-values-table)
+    (unwind-protect
+         (progn
+           (with-timeout ((if timeout (/ timeout 1000.0) 25)
+                          (signal 'dbus-error (list "call timed out")))
+             (while (eq (car result) :pending)
+               (let ((event (let ((inhibit-redisplay t) unread-command-events)
+                              (read-event nil nil check-interval))))
+                 (when event
+                   (setf unread-command-events
+                         (nconc unread-command-events
+                                (cons event nil))))
+                 (when (< check-interval 1)
+                   (setf check-interval (* check-interval 1.05))))))
+           (when (eq (car result) :error)
+             (signal (cadr result) (cddr result)))
+           (cdr result))
       (remhash key dbus-return-values-table))))
 
 ;; `dbus-call-method' works non-blocking now.
@@ -922,7 +938,8 @@ not well formed."
               ;; Service.
               (or (= dbus-message-type-method-return (nth 2 event))
                   (= dbus-message-type-error (nth 2 event))
-                  (stringp (nth 4 event)))
+                   (or (stringp (nth 4 event))
+                       (null (nth 4 event))))
               ;; Object path.
               (or (= dbus-message-type-method-return (nth 2 event))
                   (= dbus-message-type-error (nth 2 event))
@@ -973,7 +990,7 @@ If the HANDLER returns a `dbus-error', it is propagated as return message."
          (nth 1 event) (nth 4 event) (nth 3 event) (cadr err))))
      ;; Propagate D-Bus error messages.
      (run-hook-with-args 'dbus-event-error-functions event err)
-     (when (or dbus-debug (= dbus-message-type-error (nth 2 event)))
+     (when dbus-debug
        (signal (car err) (cdr err))))))
 
 (defun dbus-event-bus-name (event)
@@ -1679,6 +1696,64 @@ It will be registered for all objects created by `dbus-register-method'."
         result)
        '(:signature "{oa{sa{sv}}}"))))))
 
+(defun dbus-handle-bus-disconnect ()
+  "React to a bus disconnection.
+BUS is the bus that disconnected.  This routine unregisters all
+handlers on the given bus and causes all synchronous calls
+pending at the time of disconnect to fail."
+  (let ((bus (dbus-event-bus-name last-input-event))
+        (keys-to-remove))
+    (maphash
+     (lambda (key value)
+       (when (and (eq (nth 0 key) :serial)
+                  (eq (nth 1 key) bus))
+         (run-hook-with-args
+          'dbus-event-error-functions
+          (list 'dbus-event
+                bus
+                dbus-message-type-error
+                (nth 2 key)
+                nil
+                nil
+                nil
+                nil
+                value)
+          '(dbus-error "Bus disconnected"))
+         (push key keys-to-remove)))
+     dbus-registered-objects-table)
+    (dolist (key keys-to-remove)
+      (remhash key dbus-registered-objects-table))))
+
+(defun dbus-init-bus (bus &optional private)
+  "Establish the connection to D-Bus BUS.
+
+BUS can be either the symbol `:system' or the symbol `:session', or it
+can be a string denoting the address of the corresponding bus.  For
+the system and session buses, this function is called when loading
+`dbus.el', there is no need to call it again.
+
+The function returns a number, which counts the connections this Emacs
+session has established to the BUS under the same unique name (see
+`dbus-get-unique-name').  It depends on the libraries Emacs is linked
+with, and on the environment Emacs is running.  For example, if Emacs
+is linked with the gtk toolkit, and it runs in a GTK-aware environment
+like Gnome, another connection might already be established.
+
+When PRIVATE is non-nil, a new connection is established instead of
+reusing an existing one.  It results in a new unique name at the bus.
+This can be used, if it is necessary to distinguish from another
+connection used in the same Emacs process, like the one established by
+GTK+.  It should be used with care for at least the `:system' and
+`:session' buses, because other Emacs Lisp packages might already use
+this connection to those buses.
+"
+  (dbus-init-bus-1 bus private)
+  (dbus-register-signal bus nil
+                        "/org/freedesktop/DBus/Local"
+                        "org.freedesktop.DBus.Local"
+                        "Disconnected"
+                        #'dbus-handle-bus-disconnect))
+
  \f
 ;; Initialize `:system' and `:session' buses.  This adds their file
 ;; descriptors to input_wait_mask, in order to detect incoming
index a0f30e3..9ba9bd0 100644 (file)
@@ -609,6 +609,8 @@ The object paths of the found items are returned as list."
       (while (consp (cdr attributes))
        (unless (keywordp (car attributes))
          (error 'wrong-type-argument (car attributes)))
+        (unless (stringp (cadr attributes))
+          (error 'wrong-type-argument (cadr attributes)))
        (setq props (add-to-list
                     'props
                     (list :dict-entry
@@ -647,6 +649,8 @@ The object path of the created item is returned."
        (while (consp (cdr attributes))
          (unless (keywordp (car attributes))
            (error 'wrong-type-argument (car attributes)))
+          (unless (stringp (cadr attributes))
+            (error 'wrong-type-argument (cadr attributes)))
          (setq props (add-to-list
                       'props
                       (list :dict-entry
index 01abfe0..efad151 100644 (file)
@@ -1042,7 +1042,8 @@ target of the symlink differ."
                  (setq result (concat result "/"))))))
 
          (tramp-message v 4 "True name of `%s' is `%s'" localname result)
-         result)))))
+         (if (string-equal (file-name-nondirectory localname) "")
+             (file-name-as-directory result) result))))))
 
 ;; Basic functions.
 
index 9b3cc9f..581aaa4 100644 (file)
@@ -3868,7 +3868,7 @@ be granted."
                  (tramp-file-name-user vec)
                  (tramp-file-name-host vec)
                  (tramp-file-name-localname vec))
-                suffix)))
+                (intern suffix))))
               (remote-uid
                (tramp-get-connection-property
                 vec (concat "uid-" suffix) nil))
index 96835fc..5cd054a 100644 (file)
@@ -630,9 +630,11 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
            (save-excursion
              ;; Traverse up the parents until the parent is "." at
              ;; indentation, or any other token.
-             (while (and (progn
-                           (goto-char (1- (cadr (smie-indent--parent))))
-                           (not (ruby-smie--bosp)))
+             (while (and (let ((parent (smie-indent--parent)))
+                           (goto-char (cadr parent))
+                           (save-excursion
+                             (unless (integerp (car parent)) (forward-char -1))
+                             (not (ruby-smie--bosp))))
                          (progn
                            (setq smie--parent nil)
                            (smie-rule-parent-p "."))))
@@ -653,7 +655,6 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
      (if (smie-rule-sibling-p)
          (and ruby-align-chained-calls 0)
        ruby-indent-level))
-    (`(:after . "=>") ruby-indent-level)
     (`(:before . ,(or `"else" `"then" `"elsif" `"rescue" `"ensure"))
      (smie-rule-parent))
     (`(:before . "when")
@@ -2062,7 +2063,7 @@ See `font-lock-syntax-table'.")
           "refine"
           "using")
         'symbols))
-     (1 (unless (looking-at " *\\(?:[]|,.)}]\\|$\\)")
+     (1 (unless (looking-at " *\\(?:[]|,.)}=]\\|$\\)")
           font-lock-builtin-face)))
     ;; Kernel methods that have no required arguments.
     (,(concat
@@ -2174,7 +2175,7 @@ See `font-lock-syntax-table'.")
                                      "\\|jbuilder\\|gemspec\\|podspec"
                                      "\\|/"
                                      "\\(?:Gem\\|Rake\\|Cap\\|Thor"
-                                     "Vagrant\\|Guard\\|Pod\\)file"
+                                     "\\|Vagrant\\|Guard\\|Pod\\)file"
                                      "\\)\\'")) 'ruby-mode))
 
 ;;;###autoload
index b0afa2d..102ba6c 100644 (file)
@@ -222,6 +222,8 @@ Interactively, reads the register using `register-read-with-preview'."
 (set-advertised-calling-convention 'frame-configuration-to-register
                                   '(register) "24.4")
 
+(make-obsolete 'frame-configuration-to-register 'frameset-to-register' "24.4")
+
 (defalias 'register-to-point 'jump-to-register)
 (defun jump-to-register (register &optional delete)
   "Move point to location stored in a register.
index 14085e5..6abc29c 100644 (file)
 
 (defcustom savehist-save-minibuffer-history t
   "If non-nil, save all recorded minibuffer histories.
-If you want to save only specific histories, use `savehist-save-hook' to
-modify the value of `savehist-minibuffer-history-variables'."
+If you want to save only specific histories, use `savehist-save-hook'
+to modify the value of `savehist-minibuffer-history-variables'."
   :type 'boolean
   :group 'savehist)
 
 (defcustom savehist-additional-variables ()
   "List of additional variables to save.
 Each element is a symbol whose value will be persisted across Emacs
-sessions that use savehist.  The contents of variables should be
+sessions that use Savehist.  The contents of variables should be
 printable with the Lisp printer.  You don't need to add minibuffer
 history variables to this list, all minibuffer histories will be
 saved automatically as long as `savehist-save-minibuffer-history' is
 non-nil.
 
-User options should be saved with the customize interface.  This
+User options should be saved with the Customize interface.  This
 list is useful for saving automatically updated variables that are not
 minibuffer histories, such as `compile-command' or `kill-ring'."
   :type '(repeat variable)
@@ -89,7 +89,7 @@ minibuffer histories, such as `compile-command' or `kill-ring'."
   (locate-user-emacs-file "history" ".emacs-history")
   "File name where minibuffer history is saved to and loaded from.
 The minibuffer history is a series of Lisp expressions loaded
-automatically when `savehist-mode' is turned on.  See `savehist-mode'
+automatically when Savehist mode is turned on.  See `savehist-mode'
 for more details.
 
 If you want your minibuffer history shared between Emacs and XEmacs,
@@ -115,14 +115,14 @@ If set to nil, disables timer-based autosaving."
   :group 'savehist)
 
 (defcustom savehist-mode-hook nil
-  "Hook called when `savehist-mode' is turned on."
+  "Hook called when Savehist mode is turned on."
   :type 'hook
   :group 'savehist)
 
 (defcustom savehist-save-hook nil
   "Hook called by `savehist-save' before saving the variables.
-You can use this hook to influence choice and content of variables to
-save."
+You can use this hook to influence choice and content of variables
+to save."
   :type 'hook
   :group 'savehist)
 
@@ -134,7 +134,7 @@ save."
                                        (<= emacs-major-version 21)
                                        (< emacs-minor-version 5))
                                   'iso-2022-8 'utf-8-unix)
-  "The coding system savehist uses for saving the minibuffer history.
+  "The coding system Savehist uses for saving the minibuffer history.
 Changing this value while Emacs is running is supported, but considered
 unwise, unless you know what you are doing.")
 
@@ -158,7 +158,7 @@ buffer text.")
 
 (defvar savehist-loaded nil
   "Whether the history has already been loaded.
-This prevents toggling `savehist-mode' from destroying existing
+This prevents toggling Savehist mode from destroying existing
 minibuffer history.")
 
 (when (featurep 'xemacs)
@@ -205,7 +205,7 @@ histories, which is probably undesirable."
     (savehist-install)))
 
 (defun savehist-load ()
-  "Load the variables stored in `savehist-file' and turn on `savehist-mode'.
+  "Load the variables stored in `savehist-file' and turn on Savehist mode.
 If `savehist-file' is in the old format that doesn't record
 the value of `savehist-minibuffer-history-variables', that
 value is deducted from the contents of the file."
@@ -228,7 +228,7 @@ value is deducted from the contents of the file."
               vars)))))
 
 (defun savehist-install ()
-  "Hook savehist into Emacs.
+  "Hook Savehist into Emacs.
 Normally invoked by calling `savehist-mode' to set the minor mode.
 Installs `savehist-autosave' in `kill-emacs-hook' and on a timer.
 To undo this, call `savehist-uninstall'."
@@ -356,7 +356,7 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved,
 
 (defun savehist-autosave ()
   "Save the minibuffer history if it has been modified since the last save.
-Does nothing if `savehist-mode' is off."
+Does nothing if Savehist mode is off."
   (when savehist-mode
     (savehist-save t)))
 
index 05c575e..6b23410 100644 (file)
@@ -54,7 +54,6 @@ This alist is saved between Emacs sessions.")
   "Non-nil means automatically save place in each file.
 This means when you visit a file, point goes to the last place
 where it was when you previously visited the same file.
-This variable is automatically buffer-local.
 
 If you wish your place in any file to always be automatically
 saved, set this to t using the Customize facility, or put the
@@ -101,7 +100,7 @@ value of `version-control'."
 
 The filenames in `save-place-alist' that do not match
 `save-place-skip-check-regexp' are filtered through
-`file-readable-p'. if nil, their alist entries are removed.
+`file-readable-p'.  If nil, their alist entries are removed.
 
 You may do this anytime by calling the complementary function,
 `save-place-forget-unreadable-files'.  When this option is turned on,
@@ -151,7 +150,7 @@ the argument is positive.
 To save places automatically in all files, put this in your init
 file:
 
-\(setq-default save-place t\)"
+\(setq-default save-place t)"
   (interactive "P")
   (if (not (or buffer-file-name (and (derived-mode-p 'dired-mode)
                                     dired-directory)))
@@ -206,8 +205,8 @@ file:
 (defun save-place-forget-unreadable-files ()
   "Remove unreadable files from `save-place-alist'.
 For each entry in the alist, if `file-readable-p' returns nil for the
-filename, remove the entry.  Save the new alist \(as the first pair
-may have changed\) back to `save-place-alist'."
+filename, remove the entry.  Save the new alist (as the first pair
+may have changed) back to `save-place-alist'."
   (interactive)
   ;; the following was adapted from an in-place filtering function,
   ;; `filter-mod', used in the original.
@@ -324,7 +323,7 @@ may have changed\) back to `save-place-alist'."
 (declare-function dired-goto-file "dired" (file))
 
 (defun save-place-dired-hook ()
-  "Position the point in a dired buffer."
+  "Position the point in a Dired buffer."
   (or save-place-loaded (load-save-place-alist-from-file))
   (let ((cell (assoc (and (derived-mode-p 'dired-mode)
                          dired-directory
index c20bf13..85a7476 100644 (file)
@@ -641,7 +641,7 @@ column specified by the function `current-left-margin'."
     (indent-according-to-mode)))
 
 (defcustom read-quoted-char-radix 8
"*Radix for \\[quoted-insert] and other uses of `read-quoted-char'.
 "Radix for \\[quoted-insert] and other uses of `read-quoted-char'.
 Legitimate radix values are 8, 10 and 16."
  :type '(choice (const 8) (const 10) (const 16))
  :group 'editing-basics)
@@ -3184,9 +3184,9 @@ subprocess is `default-directory'.
 
 File names in INFILE and BUFFER are handled normally, but file
 names in ARGS should be relative to `default-directory', as they
-are passed to the process verbatim.  \(This is a difference to
+are passed to the process verbatim.  (This is a difference to
 `call-process' which does not support file handlers for INFILE
-and BUFFER.\)
+and BUFFER.)
 
 Some file handlers might not support all variants, for example
 they might behave as if DISPLAY was nil, regardless of the actual
@@ -4107,7 +4107,7 @@ even beep.)"
   "Kill current line.
 With prefix ARG, kill that many lines starting from the current line.
 If ARG is negative, kill backward.  Also kill the preceding newline.
-\(This is meant to make \\[repeat] work well with negative arguments.\)
+\(This is meant to make \\[repeat] work well with negative arguments.)
 If ARG is zero, kill current line but exclude the trailing newline."
   (interactive "p")
   (or arg (setq arg 1))
@@ -4531,7 +4531,7 @@ Start discarding off end if gets this big."
 
 (defun pop-to-mark-command ()
   "Jump to mark, and pop a new position for mark off the ring.
-\(Does not affect global mark ring\)."
+\(Does not affect global mark ring)."
   (interactive)
   (if (null (mark t))
       (error "No mark set in this buffer")
@@ -4577,11 +4577,11 @@ global mark ring, if the previous mark was set in another buffer.
 When Transient Mark Mode is off, immediately repeating this
 command activates `transient-mark-mode' temporarily.
 
-With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \
+With prefix argument (e.g., \\[universal-argument] \\[set-mark-command]), \
 jump to the mark, and set the mark from
-position popped off the local mark ring \(this does not affect the global
-mark ring\).  Use \\[pop-global-mark] to jump to a mark popped off the global
-mark ring \(see `pop-global-mark'\).
+position popped off the local mark ring (this does not affect the global
+mark ring).  Use \\[pop-global-mark] to jump to a mark popped off the global
+mark ring (see `pop-global-mark').
 
 If `set-mark-command-repeat-pop' is non-nil, repeating
 the \\[set-mark-command] command with no prefix argument pops the next position
@@ -5380,7 +5380,7 @@ If NOERROR, don't signal an error if we can't move that many lines."
        ;; the middle of a continued line.  When we get to
        ;; line-move-finish, point is at the start of a new *screen*
        ;; line but the same text line; then line-move-to-column would
-       ;; move us backwards. Test using C-n with point on the "x" in
+       ;; move us backwards.  Test using C-n with point on the "x" in
        ;;   (insert "a" (propertize "x" 'field t) (make-string 89 ?y))
        (and forward
             (< (point) old)
@@ -6914,7 +6914,7 @@ With prefix argument N, move N items (negative N means move backward)."
 
 (defun choose-completion (&optional event)
   "Choose the completion at point.
-If EVENT, use EVENTs position to determine the starting position."
+If EVENT, use EVENT's position to determine the starting position."
   (interactive (list last-nonmenu-event))
   ;; In case this is run via the mouse, give temporary modes such as
   ;; isearch a chance to turn off.
index 3d2b2dc..fda51b1 100644 (file)
@@ -307,11 +307,6 @@ bit output with no translation."
 (w32-add-charset-info "tis620-0" 'w32-charset-thai 874)
 (w32-add-charset-info "iso8859-1" 'w32-charset-ansi 1252)
 
-(make-obsolete-variable 'w32-enable-italics
-                        'w32-enable-synthesized-fonts "21.1")
-(make-obsolete-variable 'w32-charset-to-codepage-alist
-                        'w32-charset-info-alist "21.1")
-
 \f
 ;;;; Support for build process
 
index cbc13b1..30087d5 100644 (file)
@@ -149,6 +149,8 @@ menu if the variable `w32-use-w32-font-dialog' is nil."
                      (string :tag "Font")))))))
     :group 'w32)
 
+(make-obsolete-variable 'w32-enable-synthesized-fonts nil "24.4")
+
 (provide 'w32-vars)
 
 ;;; w32-vars.el ends here
index 3208c57..83bd4e0 100644 (file)
@@ -557,7 +557,7 @@ See also `whitespace-display-mappings' for documentation."
 (defvar whitespace-space 'whitespace-space
   "Symbol face used to visualize SPACE.
 Used when `whitespace-style' includes the value `spaces'.")
-(make-obsolete-variable 'whitespace-space "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-space "use the face instead." "24.4")
 
 
 (defface whitespace-space
@@ -573,7 +573,7 @@ Used when `whitespace-style' includes the value `spaces'.")
 (defvar whitespace-hspace 'whitespace-hspace
   "Symbol face used to visualize HARD SPACE.
 Used when `whitespace-style' includes the value `spaces'.")
-(make-obsolete-variable 'whitespace-hspace "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-hspace "use the face instead." "24.4")
 
 (defface whitespace-hspace             ; 'nobreak-space
   '((((class color) (background dark))
@@ -588,7 +588,7 @@ Used when `whitespace-style' includes the value `spaces'.")
 (defvar whitespace-tab 'whitespace-tab
   "Symbol face used to visualize TAB.
 Used when `whitespace-style' includes the value `tabs'.")
-(make-obsolete-variable 'whitespace-tab "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-tab "use the face instead." "24.4")
 
 (defface whitespace-tab
   '((((class color) (background dark))
@@ -605,7 +605,7 @@ Used when `whitespace-style' includes the value `tabs'.")
 See `whitespace-display-mappings'.
 Used when `whitespace-style' includes the values `newline-mark'
 and `newline'.")
-(make-obsolete-variable 'whitespace-newline "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-newline "use the face instead." "24.4")
 
 (defface whitespace-newline
   '((default :weight normal)
@@ -624,7 +624,7 @@ See `whitespace-display-mappings'."
 (defvar whitespace-trailing 'whitespace-trailing
   "Symbol face used to visualize trailing blanks.
 Used when `whitespace-style' includes the value `trailing'.")
-(make-obsolete-variable 'whitespace-trailing "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-trailing "use the face instead." "24.4")
 
 (defface whitespace-trailing           ; 'trailing-whitespace
   '((default :weight bold)
@@ -638,7 +638,7 @@ Used when `whitespace-style' includes the value `trailing'.")
   "Symbol face used to visualize \"long\" lines.
 See `whitespace-line-column'.
 Used when `whitespace-style' includes the value `line'.")
-(make-obsolete-variable 'whitespace-line "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-line "use the face instead." "24.4")
 
 (defface whitespace-line
   '((((class mono)) :inverse-video t :weight bold :underline t)
@@ -653,7 +653,7 @@ See `whitespace-line-column'."
   "Symbol face used to visualize SPACEs before TAB.
 Used when `whitespace-style' includes the value `space-before-tab'.")
 (make-obsolete-variable 'whitespace-space-before-tab
-                        "use the face instead" "24.4")
+                        "use the face instead." "24.4")
 
 (defface whitespace-space-before-tab
   '((((class mono)) :inverse-video t :weight bold :underline t)
@@ -665,7 +665,7 @@ Used when `whitespace-style' includes the value `space-before-tab'.")
 (defvar whitespace-indentation 'whitespace-indentation
   "Symbol face used to visualize 8 or more SPACEs at beginning of line.
 Used when `whitespace-style' includes the value `indentation'.")
-(make-obsolete-variable 'whitespace-indentation "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-indentation "use the face instead." "24.4")
 
 (defface whitespace-indentation
   '((((class mono)) :inverse-video t :weight bold :underline t)
@@ -677,7 +677,7 @@ Used when `whitespace-style' includes the value `indentation'.")
 (defvar whitespace-empty 'whitespace-empty
   "Symbol face used to visualize empty lines at beginning and/or end of buffer.
 Used when `whitespace-style' includes the value `empty'.")
-(make-obsolete-variable 'whitespace-empty "use the face instead" "24.4")
+(make-obsolete-variable 'whitespace-empty "use the face instead." "24.4")
 
 (defface whitespace-empty
   '((((class mono)) :inverse-video t :weight bold :underline t)
@@ -690,7 +690,7 @@ Used when `whitespace-style' includes the value `empty'.")
   "Symbol face used to visualize 8 or more SPACEs after TAB.
 Used when `whitespace-style' includes the value `space-after-tab'.")
 (make-obsolete-variable 'whitespace-space-after-tab
-                        "use the face instead" "24.4")
+                        "use the face instead." "24.4")
 
 (defface whitespace-space-after-tab
   '((((class mono)) :inverse-video t :weight bold :underline t)
index c4854f0..72b3138 100644 (file)
@@ -189,8 +189,8 @@ argument replaces this)."
     `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name))
            (standard-output ,buffer)
            ,window ,value)
+       (setq ,value (progn ,@body))
        (with-current-buffer ,buffer
-        (setq ,value (progn ,@body))
         (setq ,window (temp-buffer-window-show ,buffer ,action)))
 
        (if (functionp ,quit-function)
@@ -1012,6 +1012,84 @@ FRAME defaults to the selected frame."
   (window--side-check frame)
   (window--atom-check frame))
 
+;; Dumping frame/window contents.
+(defun window--dump-window (&optional window erase)
+  "Dump WINDOW to buffer *window-frame-dump*.
+WINDOW must be a valid window and defaults to the selected one.
+Optional argument ERASE non-nil means erase *window-frame-dump*
+before writing to it."
+  (setq window (window-normalize-window window))
+  (with-current-buffer (get-buffer-create "*window-frame-dump*")
+    (when erase (erase-buffer))
+    (insert
+     (format "%s   parent: %s\n" window (window-parent window))
+     (format "pixel left: %s   top: %s   size: %s x %s   new: %s\n"
+            (window-pixel-left window) (window-pixel-top window)
+            (window-size window t t) (window-size window nil t)
+            (window-new-pixel window))
+     (format "char left: %s   top: %s   size: %s x %s   new: %s\n"
+            (window-left-column window) (window-top-line window)
+            (window-total-size window t) (window-total-size window)
+            (window-new-total window))
+     (format "normal: %s x %s   new: %s\n"
+            (window-normal-size window t) (window-normal-size window)
+            (window-new-normal window)))
+    (when (window-live-p window)
+      (let ((fringes (window-fringes window))
+           (margins (window-margins window)))
+       (insert
+        (format "body pixel: %s x %s   char: %s x %s\n"
+                (window-body-width window t) (window-body-height window t)
+                (window-body-width window) (window-body-height window))
+        (format "width left fringe: %s  left margin: %s  right margin: %s\n"
+                (car fringes) (or (car margins) 0) (or (cdr margins) 0))
+        (format "width right fringe: %s  scroll-bar: %s  divider: %s\n"
+                (cadr fringes)
+                (window-scroll-bar-width window)
+                (window-right-divider-width window))
+        (format "height header-line: %s  mode-line: %s  divider: %s\n"
+                (window-header-line-height window)
+                (window-mode-line-height window)
+                (window-bottom-divider-width window)))))
+    (insert "\n")))
+
+(defun window--dump-frame (&optional window-or-frame)
+  "Dump WINDOW-OR-FRAME to buffer *window-frame-dump*.
+WINDOW-OR-FRAME can be a frame or a window and defaults to the
+selected frame.  When WINDOW-OR-FRAME is a window, dump that
+window's frame.  The buffer *window-frame-dump* is erased before
+dumping to it."
+  (interactive)
+  (let* ((window
+         (cond
+          ((or (not window-or-frame)
+               (frame-live-p window-or-frame))
+           (frame-root-window window-or-frame))
+          ((or (window-live-p window-or-frame)
+               (window-child window-or-frame))
+           window-or-frame)
+          (t
+           (frame-root-window))))
+        (frame (window-frame window)))
+    (with-current-buffer (get-buffer-create "*window-frame-dump*")
+      (erase-buffer)
+      (insert
+       (format "frame pixel: %s x %s   cols/lines: %s x %s   units: %s x %s\n"
+              (frame-pixel-width frame) (frame-pixel-height frame)
+              (frame-total-cols frame) (frame-text-lines frame) ; (frame-total-lines frame)
+              (frame-char-width frame) (frame-char-height frame))
+       (format "frame text pixel: %s x %s   cols/lines: %s x %s\n"
+              (frame-text-width frame) (frame-text-height frame)
+              (frame-text-cols frame) (frame-text-lines frame))
+       (format "tool: %s  scroll: %s  fringe: %s  border: %s  right: %s  bottom: %s\n\n"
+              (tool-bar-height frame t)
+              (frame-scroll-bar-width frame)
+              (frame-fringe-width frame)
+              (frame-border-width frame)
+              (frame-right-divider-width frame)
+              (frame-bottom-divider-width frame)))
+      (walk-window-tree 'window--dump-window frame t t))))
+
 ;;; Window sizes.
 (defun window-total-size (&optional window horizontal round)
   "Return the total height or width of WINDOW.
@@ -1140,55 +1218,46 @@ of WINDOW."
          ;; windows such that the new (or resized) windows can get a
          ;; size less than the user-specified `window-min-height' and
          ;; `window-min-width'.
-         (let ((frame (window-frame window))
-               (fringes (window-fringes window))
-               (scroll-bars (window-scroll-bars window)))
+         (let* ((char-size (frame-char-size window t))
+                (fringes (window-fringes window))
+                (pixel-width
+                 (+ (window-safe-min-size window t t)
+                    (car fringes) (cadr fringes)
+                    (window-scroll-bar-width window)
+                    (window-right-divider-width window))))
            (if pixelwise
                (max
-                (+ (window-safe-min-size window t t)
-                   (car fringes) (cadr fringes)
-                   (cond
-                    ((memq (nth 2 scroll-bars) '(left right))
-                     (nth 1 scroll-bars))
-                    ((memq (frame-parameter frame 'vertical-scroll-bars)
-                           '(left right))
-                     (frame-parameter frame 'scroll-bar-width))
-                    (t 0)))
+                (if window-resize-pixelwise
+                    pixel-width
+                  ;; Round up to next integral of columns.
+                  (* (ceiling pixel-width char-size) char-size))
                 (if (window--size-ignore-p window ignore)
                     0
                   (window-min-pixel-width)))
              (max
-              (+ window-safe-min-width
-                 (ceiling (car fringes) (frame-char-width frame))
-                 (ceiling (cadr fringes) (frame-char-width frame))
-                 (cond
-                  ((memq (nth 2 scroll-bars) '(left right))
-                   (nth 1 scroll-bars))
-                ((memq (frame-parameter frame 'vertical-scroll-bars)
-                       '(left right))
-                 (ceiling (or (frame-parameter frame 'scroll-bar-width) 14)
-                          (frame-char-width)))
-                (t 0)))
+              (ceiling pixel-width char-size)
               (if (window--size-ignore-p window ignore)
                   0
                 window-min-width)))))
-        (pixelwise
-         (max
-          (+ (window-safe-min-size window nil t)
-             (window-header-line-height window)
-             (window-mode-line-height window))
-          (if (window--size-ignore-p window ignore)
-              0
-            (window-min-pixel-height))))
-        (t
-         ;; For the minimum height of a window take any mode- or
-         ;; header-line into account.
-         (max (+ window-safe-min-height
-                 (if header-line-format 1 0)
-                 (if mode-line-format 1 0))
-              (if (window--size-ignore-p window ignore)
-                  0
-                window-min-height))))))))
+        ((let ((char-size (frame-char-size window))
+               (pixel-height
+                (+ (window-safe-min-size window nil t)
+                   (window-header-line-height window)
+                   (window-mode-line-height window)
+                   (window-bottom-divider-width window))))
+           (if pixelwise
+               (max
+                (if window-resize-pixelwise
+                    pixel-height
+                  ;; Round up to next integral of lines.
+                  (* (ceiling pixel-height char-size) char-size))
+                (if (window--size-ignore-p window ignore)
+                    0
+                  (window-min-pixel-height)))
+             (max (ceiling pixel-height char-size)
+                  (if (window--size-ignore-p window ignore)
+                      0
+                    window-min-height))))))))))
 
 (defun window-sizable (window delta &optional horizontal ignore pixelwise)
   "Return DELTA if DELTA lines can be added to WINDOW.
@@ -1323,9 +1392,10 @@ WINDOW can be resized in the desired direction.  The function
            (unless (eq sub window)
              (setq delta
                    (min delta
-                        (- (window-size sub horizontal pixelwise 'floor)
-                           (window-min-size
-                            sub horizontal ignore pixelwise)))))
+                        (max (- (window-size sub horizontal pixelwise 'ceiling)
+                                (window-min-size
+                                 sub horizontal ignore pixelwise))
+                             0))))
            (setq sub (window-right sub))))
        (if noup
            delta
@@ -1400,9 +1470,11 @@ by which WINDOW can be shrunk."
                 (t
                  (setq delta
                        (+ delta
-                          (- (window-size sub horizontal pixelwise 'floor)
-                             (window-min-size
-                              sub horizontal ignore pixelwise))))))
+                          (max
+                           (- (window-size sub horizontal pixelwise 'ceiling)
+                              (window-min-size
+                               sub horizontal ignore pixelwise))
+                           0)))))
                (setq sub (window-right sub))))
          ;; For an ortho-combination throw DELTA when at least one
          ;; child window is fixed-size.
@@ -2317,9 +2389,11 @@ instead."
        ;; Otherwise, resize all other windows in the same combination.
        (window--resize-siblings window delta horizontal ignore))
       (when (window--resize-apply-p frame horizontal)
-       (window-resize-apply frame horizontal)
-       (window--pixel-to-total frame horizontal)
-       (run-window-configuration-change-hook frame)))
+       (if (window-resize-apply frame horizontal)
+           (progn
+             (window--pixel-to-total frame horizontal)
+             (run-window-configuration-change-hook frame))
+         (error "Failed to apply resizing %s" window))))
      (t
       (error "Cannot resize window %s" window)))))
 
@@ -2560,7 +2634,7 @@ already set by this routine."
          (setq best-value most-negative-fixnum)
          (while sub
            (when (and (consp (window-new-normal sub))
-                      (not (zerop (car (window-new-normal sub))))
+                      (not (<= (car (window-new-normal sub)) 0))
                       (> (cdr (window-new-normal sub)) best-value))
              (setq best-window sub)
              (setq best-value (cdr (window-new-normal sub))))
@@ -2576,7 +2650,7 @@ already set by this routine."
             best-window
             (if (= (car (window-new-normal best-window)) best-delta)
                 'skip      ; We can't shrink best-window any further.
-              (cons (1- (car (window-new-normal best-window)))
+              (cons (- (car (window-new-normal best-window)) best-delta)
                     (- (/ (float (window-new-pixel best-window))
                           parent-total)
                        (window-normal-size best-window horizontal))))))))
@@ -2941,7 +3015,7 @@ move it as far as possible in the desired direction."
          (window--resize-reset frame horizontal)
          ;; Try to enlarge LEFT first.
          (setq this-delta (window--resizable
-                           left delta horizontal nil nil nil nil pixelwise))
+                           left delta horizontal nil 'after nil nil pixelwise))
          (unless (zerop this-delta)
            (window--resize-this-window
             left this-delta horizontal nil t 'before
@@ -2970,7 +3044,7 @@ move it as far as possible in the desired direction."
          ;; Try to enlarge RIGHT.
          (setq this-delta
                (window--resizable
-                right (- delta) horizontal nil nil nil nil pixelwise))
+                right (- delta) horizontal nil 'before nil nil pixelwise))
          (unless (zerop this-delta)
            (window--resize-this-window
             right this-delta horizontal nil t 'after
index 3b61b23..20ce40e 100644 (file)
@@ -379,3 +379,59 @@ AC_DEFUN([gl_CACHE_VAL_SILENT],
 # AS_VAR_COPY was added in autoconf 2.63b
 m4_define_default([AS_VAR_COPY],
 [AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])
+
+# AC_PROG_SED was added in autoconf 2.59b
+m4_ifndef([AC_PROG_SED],
+[AC_DEFUN([AC_PROG_SED],
+[AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED,
+    [dnl ac_script should not contain more than 99 commands (for HP-UX sed),
+     dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed.
+     ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     AS_UNSET([ac_script])
+     if test -z "$SED"; then
+       ac_path_SED_found=false
+       _AS_PATH_WALK([], [
+         for ac_prog in sed gsed; do
+           for ac_exec_ext in '' $ac_executable_extensions; do
+             ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+             AS_EXECUTABLE_P(["$ac_path_SED"]) || continue
+             case `"$ac_path_SED" --version 2>&1` in
+               *GNU*) ac_cv_path_SED=$ac_path_SED ac_path_SED_found=:;;
+               *)
+                 ac_count=0
+                 _AS_ECHO_N([0123456789]) >conftest.in
+                 while :
+                 do
+                   cat conftest.in conftest.in >conftest.tmp
+                   mv conftest.tmp conftest.in
+                   cp conftest.in conftest.nl
+                   echo >> conftest.nl
+                   "$ac_path_SED" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+                   diff conftest.out conftest.nl >/dev/null 2>&1 || break
+                   ac_count=`expr $ac_count + 1`
+                   if test $ac_count -gt ${ac_path_SED_max-0}; then
+                     # Best so far, but keep looking for better
+                     ac_cv_path_SED=$ac_path_SED
+                     ac_path_SED_max=$ac_count
+                   fi
+                   test $ac_count -gt 10 && break
+                 done
+                 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+             esac
+             $ac_path_SED_found && break 3
+           done
+         done])
+       if test -z "$ac_cv_path_SED"; then
+         AC_ERROR([no acceptable sed could be found in \$PATH])
+       fi
+     else
+       ac_cv_path_SED=$SED
+     fi
+ SED="$ac_cv_path_SED"
+ AC_SUBST([SED])dnl
+ rm -f conftest.sed
+])])])
index 6eceadd..8e2c921 100644 (file)
@@ -28,7 +28,7 @@ AC_DEFUN([gl_TIMER_TIME],
 #include <features.h>
 #ifdef __GNU_LIBRARY__
  #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)) \
-     && !defined __UCLIBC__
+     && !(__UCLIBC__ && __HAS_NO_THREADS__)
   Thread emulation available
  #endif
 #endif
index 4bb4719..ed71ae9 100644 (file)
@@ -1,3 +1,35 @@
+2014-02-24  Daniel Colascione  <dancol@dancol.org>
+
+       * keyboard.c (read_char): Close race that resulted in lost events.
+
+2014-02-22  Glenn Morris  <rgm@gnu.org>
+
+       * frame.c (frame-alpha-lower-limit, frame-resize-pixelwise):
+       * window.c (window-resize-pixelwise): Doc fixes.
+
+       * process.c (Finternal_default_process_filter)
+       (Finternal_default_process_sentinel): Doc tweaks.
+
+2014-02-21  Glenn Morris  <rgm@gnu.org>
+
+       * process.c (Fprocess_buffer, Faccept_process_output)
+       (Finternal_default_process_filter, Finternal_default_process_sentinel):
+       Doc fixes.
+
+2014-02-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fwindow_scroll_bar_width): New function.
+
+2014-02-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Pacify GCC when configuring with --enable-gcc-warnings.
+       * xdisp.c (move_it_in_display_line_to) [lint]:
+       Initialize recently-added local.
+
+2014-02-21  Daniel Colascione  <dancol@dancol.org>
+
+       * dbusbind.c: Rename dbus-init-bus to dbus-init-bus-1.
+
 2014-02-20  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (init_iterator): Don't dereference a bogus face
index 1c386f0..460733c 100644 (file)
@@ -42,7 +42,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 \f
 /* Subroutines.  */
-static Lisp_Object Qdbus_init_bus;
+static Lisp_Object Qdbus_init_bus_1;
 static Lisp_Object Qdbus_get_unique_name;
 static Lisp_Object Qdbus_message_internal;
 
@@ -1121,9 +1121,12 @@ xd_close_bus (Lisp_Object bus)
   return;
 }
 
-DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 2, 0,
+DEFUN ("dbus-init-bus-1", Fdbus_init_bus_1, Sdbus_init_bus_1, 1, 2, 0,
        doc: /* Establish the connection to D-Bus BUS.
 
+This function is dbus-internal.  You almost certainly want to use
+dbus-init-bus.
+
 BUS can be either the symbol `:system' or the symbol `:session', or it
 can be a string denoting the address of the corresponding bus.  For
 the system and session buses, this function is called when loading
@@ -1742,8 +1745,8 @@ void
 syms_of_dbusbind (void)
 {
 
-  DEFSYM (Qdbus_init_bus, "dbus-init-bus");
-  defsubr (&Sdbus_init_bus);
+  DEFSYM (Qdbus_init_bus_1, "dbus-init-bus-1");
+  defsubr (&Sdbus_init_bus_1);
 
   DEFSYM (Qdbus_get_unique_name, "dbus-get-unique-name");
   defsubr (&Sdbus_get_unique_name);
index 703c67a..2d01c6f 100644 (file)
@@ -4597,8 +4597,7 @@ is a reasonable practice.  See also the variable `x-resource-name'.  */);
   DEFVAR_LISP ("frame-alpha-lower-limit", Vframe_alpha_lower_limit,
     doc: /* The lower limit of the frame opacity (alpha transparency).
 The value should range from 0 (invisible) to 100 (completely opaque).
-You can also use a floating number between 0.0 and 1.0.
-The default is 20.  */);
+You can also use a floating number between 0.0 and 1.0.  */);
   Vframe_alpha_lower_limit = make_number (20);
 #endif
 
@@ -4736,8 +4735,8 @@ is non-nil, no rounding occurs, hence frame sizes can increase/decrease
 by one pixel.
 
 With some window managers you have to set this to non-nil in order to
-fully maximize frames.  The default of this option is nil.  To resize
-your initial frame pixelwise, set this option in your init file.  */);
+fully maximize frames.  To resize your initial frame pixelwise,
+set this option to a non-nil value in your init file.  */);
   frame_resize_pixelwise = 0;
 
   staticpro (&Vframe_list);
index 9dcb58a..038ce6e 100644 (file)
@@ -2891,8 +2891,12 @@ read_char (int commandflag, Lisp_Object map,
     {
       c = read_decoded_event_from_main_queue (end_time, local_getcjmp,
                                               prev_event, used_mouse_menu);
-      if (end_time && timespec_cmp (*end_time, current_timespec ()) <= 0)
-        goto exit;
+      if (NILP(c) && end_time &&
+          timespec_cmp (*end_time, current_timespec ()) <= 0)
+        {
+          goto exit;
+        }
+
       if (EQ (c, make_number (-2)))
         {
          /* This is going to exit from read_char
index 85470b6..187627d 100644 (file)
@@ -1,7 +1,7 @@
 /* Asynchronous subprocess control for GNU Emacs.
 
-Copyright (C) 1985-1988, 1993-1996, 1998-1999, 2001-2014 Free Software
-Foundation, Inc.
+Copyright (C) 1985-1988, 1993-1996, 1998-1999, 2001-2014
+  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -1022,7 +1022,7 @@ Return BUFFER.  */)
 DEFUN ("process-buffer", Fprocess_buffer, Sprocess_buffer,
        1, 1, 0,
        doc: /* Return the buffer PROCESS is associated with.
-Output from PROCESS is inserted in this buffer unless PROCESS has a filter.  */)
+The default process filter inserts output from PROCESS into this buffer.  */)
   (register Lisp_Object process)
 {
   CHECK_PROCESS (process);
@@ -1049,7 +1049,7 @@ passed to the filter.
 
 The filter gets two arguments: the process and the string of output.
 The string argument is normally a multibyte string, except:
-- if the process' input coding system is no-conversion or raw-text,
+- if the process's input coding system is no-conversion or raw-text,
   it is a unibyte string (the non-converted input), or else
 - if `default-enable-multibyte-characters' is nil, it is a unibyte
   string (the result of converting the decoded input multibyte
@@ -1061,7 +1061,7 @@ The string argument is normally a multibyte string, except:
   CHECK_PROCESS (process);
   p = XPROCESS (process);
 
-  /* Don't signal an error if the process' input file descriptor
+  /* Don't signal an error if the process's input file descriptor
      is closed.  This could make debugging Lisp more difficult,
      for example when doing something like
 
@@ -2758,7 +2758,7 @@ client.  The arguments are SERVER, CLIENT, and MESSAGE, where SERVER
 is the server process, CLIENT is the new process for the connection,
 and MESSAGE is a string.
 
-:plist PLIST -- Install PLIST as the new process' initial plist.
+:plist PLIST -- Install PLIST as the new process's initial plist.
 
 :server QLEN -- if QLEN is non-nil, create a server process for the
 specified FAMILY, SERVICE, and connection type (stream or datagram).
@@ -2788,21 +2788,21 @@ When a client connection is accepted, a new network process is created
 for the connection with the following parameters:
 
 - The client's process name is constructed by concatenating the server
-process' NAME and a client identification string.
+process's NAME and a client identification string.
 - If the FILTER argument is non-nil, the client process will not get a
 separate process buffer; otherwise, the client's process buffer is a newly
-created buffer named after the server process' BUFFER name or process
+created buffer named after the server process's BUFFER name or process
 NAME concatenated with the client identification string.
 - The connection type and the process filter and sentinel parameters are
-inherited from the server process' TYPE, FILTER and SENTINEL.
-- The client process' contact info is set according to the client's
+inherited from the server process's TYPE, FILTER and SENTINEL.
+- The client process's contact info is set according to the client's
 addressing information (typically an IP address and a port number).
-- The client process' plist is initialized from the server's plist.
+- The client process's plist is initialized from the server's plist.
 
 Notice that the FILTER and SENTINEL args are never used directly by
 the server process.  Also, the BUFFER argument is not used directly by
 the server process, but via the optional :log function, accepted (and
-failed) connections may be logged in the server process' buffer.
+failed) connections may be logged in the server process's buffer.
 
 The original argument list, modified with the actual connection
 information, is available via the `process-contact' function.
@@ -3917,7 +3917,7 @@ deactivate_process (Lisp_Object proc)
 DEFUN ("accept-process-output", Faccept_process_output, Saccept_process_output,
        0, 4, 0,
        doc: /* Allow any pending output from subprocesses to be read by Emacs.
-It is read into the process' buffers or given to their filter functions.
+It is given to their filter functions.
 Non-nil arg PROCESS means do not return until some output has been received
 from PROCESS.
 
@@ -5187,7 +5187,9 @@ read_and_dispose_of_process_output (struct Lisp_Process *p, char *chars,
 
 DEFUN ("internal-default-process-filter", Finternal_default_process_filter,
        Sinternal_default_process_filter, 2, 2, 0,
-       doc: /* Function used as default process filter.  */)
+       doc: /* Function used as default process filter.
+This inserts the process's output into its buffer, if there is one.
+Otherwise it discards the output.  */)
   (Lisp_Object proc, Lisp_Object text)
 {
   struct Lisp_Process *p;
@@ -6411,7 +6413,8 @@ status_notify (struct Lisp_Process *deleting_process)
 
 DEFUN ("internal-default-process-sentinel", Finternal_default_process_sentinel,
        Sinternal_default_process_sentinel, 2, 2, 0,
-       doc: /* Function used as default sentinel for processes.  */)
+       doc: /* Function used as default sentinel for processes.
+This inserts a status message into the process's buffer, if there is one.  */)
      (Lisp_Object proc, Lisp_Object msg)
 {
   Lisp_Object buffer, symbol;
index b2c97d5..0ec1aa9 100644 (file)
@@ -974,6 +974,15 @@ WINDOW must be a live window and defaults to the selected one.  */)
   return (make_number (WINDOW_BOTTOM_DIVIDER_WIDTH (decode_live_window (window))));
 }
 
+DEFUN ("window-scroll-bar-width", Fwindow_scroll_bar_width,
+       Swindow_scroll_bar_width, 0, 1, 0,
+       doc: /* Return the width in pixels of WINDOW's vertical scrollbar.
+WINDOW must be a live window and defaults to the selected one.  */)
+  (Lisp_Object window)
+{
+  return (make_number (WINDOW_SCROLL_BAR_AREA_WIDTH (decode_live_window (window))));
+}
+
 DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0,
        doc: /* Return the number of columns by which WINDOW is scrolled from left margin.
 WINDOW must be a live window and defaults to the selected one.  */)
@@ -7300,11 +7309,10 @@ respectively are not installed by `window-state-put'.  */);
   Vwindow_persistent_parameters = list1 (Fcons (Qclone_of, Qt));
 
   DEFVAR_BOOL ("window-resize-pixelwise", window_resize_pixelwise,
-              doc: /*  Non-nil means resizing windows works pixelwise.
-Functions currently affected by this option are `split-window',
-`maximize-window', `minimize-window', `fit-window-to-buffer' and
-`fit-frame-to-buffer' and all functions symmetrically resizing a
-parent window.
+              doc: /*  Non-nil means resize windows pixelwise.
+This currently affects the functions: `split-window', `maximize-window',
+`minimize-window', `fit-window-to-buffer' and `fit-frame-to-buffer', and
+all functions that symmetrically resize a parent window.
 
 Note that when a frame's pixel size is not a multiple of the
 frame's character size, at least one window may get resized
@@ -7363,6 +7371,7 @@ pixelwise even if this option is nil.  */);
   defsubr (&Swindow_header_line_height);
   defsubr (&Swindow_right_divider_width);
   defsubr (&Swindow_bottom_divider_width);
+  defsubr (&Swindow_scroll_bar_width);
   defsubr (&Swindow_inside_edges);
   defsubr (&Swindow_inside_pixel_edges);
   defsubr (&Swindow_inside_absolute_pixel_edges);
index 840ff12..c35a64d 100644 (file)
@@ -8313,7 +8313,7 @@ move_it_in_display_line_to (struct it *it,
   void *ppos_data = NULL;
   int may_wrap = 0;
   enum it_method prev_method = it->method;
-  ptrdiff_t closest_pos, prev_pos = IT_CHARPOS (*it);
+  ptrdiff_t closest_pos IF_LINT (= 0), prev_pos = IT_CHARPOS (*it);
   int saw_smaller_pos = prev_pos < to_charpos;
 
   /* Don't produce glyphs in produce_glyphs.  */
index 67b8344..cf246b7 100644 (file)
@@ -1,3 +1,10 @@
+2014-02-21  Michael Albinus  <michael.albinus@gmx.de>
+
+       * automated/tramp-tests.el
+       (tramp-test19-directory-files-and-attributes): Do not include
+       directories in comparison; they might have changed their
+       timestamps already.
+
 2014-02-20  Michael Albinus  <michael.albinus@gmx.de>
 
        * automated/tramp-tests.el (tramp--instrument-test-case): New macro.
index 374eba7..d93fc78 100644 (file)
@@ -906,13 +906,19 @@ This tests also `file-readable-p' and `file-regular-p'."
          (setq attr (directory-files-and-attributes tmp-name))
          (should (consp attr))
          (dolist (elt attr)
-           (should
-            (equal (file-attributes (expand-file-name (car elt) tmp-name))
-                   (cdr elt))))
+           ;; We cannot include "." and "..".  They might have
+           ;; changed their timestamp already.
+           (when (string-match "foo$\\|bar$\\|baz$" (car elt))
+             (should
+              (equal (file-attributes (expand-file-name (car elt) tmp-name))
+                     (cdr elt)))))
          (setq attr (directory-files-and-attributes tmp-name 'full))
          (dolist (elt attr)
-           (should
-            (equal (file-attributes (car elt)) (cdr elt))))
+           ;; We cannot include "." and "..".  They might have
+           ;; changed their timestamp already.
+           (when (string-match "foo$\\|bar$\\|baz$" (car elt))
+             (should
+              (equal (file-attributes (car elt)) (cdr elt)))))
          (setq attr (directory-files-and-attributes tmp-name nil "^b"))
          (should (equal (mapcar 'car attr) '("bar" "boz"))))
       (ignore-errors (delete-directory tmp-name 'recursive))))))
index cf6bcba..344f16b 100644 (file)
@@ -357,8 +357,21 @@ zoo
   .lose(
     q, p)
 
+a.records().map(&:b).zip(
+  foo)
+
+# FIXME: This is not consistent with the example below it, but this
+# ofset only happens if the colon is at eol, which wouldn't be often.
+# Tokenizing `bar:' as `:bar =>' would be better, but it's hard to
+# distinguish from a variable reference inside a ternary operator.
 foo(bar:
       tee)
 
 foo(:bar =>
-      tee)
+    tee)
+
+{'a' => {
+   'b' => 'c',
+   'd' => %w(e f)
+ }
+}