]> code.delx.au - gnu-emacs/commitdiff
Merge from origin/emacs-25
authorJohn Wiegley <johnw@newartisans.com>
Tue, 12 Jan 2016 06:51:27 +0000 (22:51 -0800)
committerJohn Wiegley <johnw@newartisans.com>
Tue, 12 Jan 2016 06:51:27 +0000 (22:51 -0800)
1f6898d test/automated/vc-hg.el: Support out-of-tree build
3adb56e Minor change in tramp-tests.el
2b535ba ; * etc/NEWS: Update the js.el entry.
76b518c * etc/HELLO: Add Armenian and Mongolian greetings.
b51f1ef Java Mode: Fontify identifiers in the presence of annotations.
36b9539 Avoid an infloop when we run out of memory
2006752 Avoid unnecessary failures of auto-saving after fatal error
eef6784 Simplify HAVE_MODULES use in mark_maybe_pointer
552694a Revert attempt to use 'noexcept' in typedef
6ad0d39 Update documentation of 'indirect-function'
c6a5314 ; * etc/NEWS: Move entry of 'inhibit-point-motion-hooks'.
303141a Update documentation for obsoleting 'syntax-begin-function'
4e6f61c ; * etc/NEWS: Mark documented and not-to-be-documented entries.
e667bbb Document new features if Eshell
9c4e4e0 ; * etc/NEWS: Update EUDC entries.
1089dc9 Handle too long commands in Tramp
684eb58 * .gitattributes: *.cur and *.pif are binary files too.
d2c7fda * src/alloc.c (mark_maybe_pointer): HAVE_MODULES may be undefined
bd3f53d * sh-script.el (sh-smie-sh-rules): Improve indentation inside $(...)
09b2b8a * src/alloc.c (mark_maybe_pointer): Also check wide-int's emacs_value
cca0f93 ; Account for spaces before the filename
c71e1e8 Use short date for 'hg annotate', and output the author
f50027b Spelling fix
c7dff67 ; * etc/NEWS: Fix the Xref entries that got separated.
cc140bc Document user-level functions in project.el
f8208b6 Document the user-level features of the Xref package
b131fb8 * loading.texi: Add `define-type' entry for load-history
db3c2a8 Improve doc strings and prompts in xref.el
f6117ef Allow the use of `font-lock-extend-region-multiline' in CC Mode.
90fd798 Fix coding system for Tramp on OS X.
e985a0e ; * etc/NEWS: Mark the 'check-expensive' entry not to be documented.
9dfcbf0 Update 'load-history' docs
207e191 Fix (error ...) error
457738f Correctly analyze brace arguments in templated C++ function declarations.
d57724a * lisp/cedet/mode-local.el (describe-function-orig-buffer): Declare.
2a9532d * lisp/ffap.el (ffap-latex-mode): Avoid free variable.
1a6b084 * lisp/play/dunnet.el (dun-fix-screen): Avoid `end-of-buffer`.
8be046f Respect fontification region calculated by major mode.  Fixes bug #22316.
4b37cba Improve documentation of Delete Selection mode
a034dd3 Fix two project-find-file issues
30abf29 Clarify doc string of 'dired-current-directory'
e990bb2 Use the face of preceding text for displaying the ellipsis
5810ac3 Suppress Chinese file name test for OSX in tramp-tests.el
eeb710a ; * lisp/startup.el: Sentences end with two spaces.
428b3de * admin/admin.el (set-version): Also handle the NEWS file.
648de81 ; Add NEWS entry for project.el
671862f apropos-library: Skip obvious duplicates; don't error on generics
51668a5 ; Grammar fix
ed41d11 Add project-find-file and project-or-external-find-file
056da45 ; Improve commentary in 'setup_for_ellipsis'
269d008 ; Improve docstring for `inhibit-startup-echo-area-message'

1  2 
doc/emacs/dired.texi
etc/NEWS
lisp/dired.el
lisp/ffap.el
lisp/progmodes/cc-defs.el
src/lisp.h
test/lisp/net/tramp-tests.el
test/manual/indent/shell.sh

diff --combined doc/emacs/dired.texi
index 119a10ccc081670acddf4395255d41efe283f933,855e6531a665409f6943580147e374edf62d674c..92c1fd5a041eaca2f57ee680306460709ab25c09
@@@ -785,8 -785,8 +785,8 @@@ Search all the specified files for the 
  (@code{dired-do-search}).
  
  This command is a variant of @code{tags-search}.  The search stops at
- the first match it finds; use @kbd{M-,} to resume the search and find
- the next match.  @xref{Tags Search}.
+ the first match it finds; use @kbd{M-x tags-loop-continue} to resume
+ the search and find the next match.  @xref{Identifier Search}.
  
  @kindex Q @r{(Dired)}
  @findex dired-do-query-replace-regexp
@@@ -797,8 -797,8 +797,8 @@@ replacing matches for @var{regexp} wit
  @var{to} (@code{dired-do-query-replace-regexp}).
  
  This command is a variant of @code{tags-query-replace}.  If you exit the
- query replace loop, you can use @kbd{M-,} to resume the scan and replace
more matches.  @xref{Tags Search}.
+ query replace loop, you can use @kbd{M-x tags-loop-continue} to resume
the scan and replace more matches.  @xref{Identifier Search}.
  @end table
  
  @node Shell Commands in Dired
@@@ -1414,13 -1414,6 +1414,13 @@@ names into arguments for other Emacs co
  it added to the kill ring, so you can use it to display the list of
  currently marked files in the echo area.
  
 +@kindex W @r{(Dired)}
 +@findex browse-url-of-dired-file
 +  If you have an HTML file in the file listing, it can be useful to
 +view that file with a browser.  The @kbd{W}
 +(@code{browse-url-of-dired-file}) command will use the standard
 +configured browser to view that file.
 +
  @kindex ( @r{(Dired)}
  @findex dired-hide-details-mode
  @vindex dired-hide-details-hide-symlink-targets
diff --combined etc/NEWS
index 2c6f6fc8f02522ebe1dffc800360cdd19e3d8b40,85ec30ac033b843890f614ae2de4d21f5ef679ab..699b1690090aa7cb32533c42a44700ea5a6cafcc
+++ b/etc/NEWS
@@@ -22,58 -22,6 +22,58 @@@ Temporary note
  When you add a new item, use the appropriate mark if you are sure it applies,
  otherwise leave it unmarked.
  
 +\f
 +* Installation Changes in Emacs 25.2
 +
 +** 'configure' detects the kqueue file notification library on *BSD
 +and Mac OS X machines.
 +
 +\f
 +* Startup Changes in Emacs 25.2
 +
 +\f
 +* Changes in Emacs 25.2
 +
 +** It is possible to disable attempted recovery on fatal signals
 +
 +Two new variables allow to disable attempts to recover from stack
 +overflow and to avoid automatic auto-save when Emacs is delivered a
 +fatal signal.  `attempt-stack-overflow-recovery', if set to `nil',
 +will disable attempts to recover from C stack overflows; Emacs will
 +then crash as with any other fatal signal.
 +`attempt-orderly-shutdown-on-fatal-signal', if set to `nil', will
 +disable attempts to auto-save the session and shut down in an orderly
 +fashion when Emacs receives a fatal signal; instead, Emacs will
 +terminate immediately.  Both variables are non-`nil' by default.
 +These variables are for users who would like to avoid the small
 +probability of data corruption due to techniques Emacs uses to recover
 +in these situations.
 +
 +\f
 +* Editing Changes in Emacs 25.2
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 25.2
 +
 +** File Notifications
 +
 +*** The kqueue library is integrated for *BSD and Mac OS X machines.
 +
 +\f
 +* New Modes and Packages in Emacs 25.2
 +
 +\f
 +* Incompatible Lisp Changes in Emacs 25.2
 +
 +\f
 +* Lisp Changes in Emacs 25.2
 +
 +** Autoload files can be generated without timestamps,
 +by setting `autoload-timestamps' to nil.
 +
 +\f
 +* Changes in Emacs 25.2 on Non-Free Operating Systems
 +
  \f
  * Installation Changes in Emacs 25.1
  
@@@ -148,6 -96,7 +148,7 @@@ so if you want to use it, you can alway
  Various resolutions are available as etc/images/icons/hicolor/*/apps/emacs.png.
  The old Emacs logo icons are available as `emacs23.png' in the same location.
  
+ ---
  ** New make target `check-expensive' to run additional tests.
  This includes all tests which run via "make check", plus additional
  tests which take more time to perform.
@@@ -217,11 -166,6 +218,11 @@@ the variable `dir-locals-file' for mor
  added via the new Network Security Manager (NSM) and controlled via
  the `network-security-level' variable.
  
 +---
 +** International domain names (IDNA) are now encoded via the new
 +puny.el library, so that one can visit web sites like
 +"http://méxico.icom.museum".
 +
  ** If Emacs isn't built with TLS support, an external TLS-capable
  program is used instead.  This program used to be run in --insecure
  mode by default, but has now changed to be secure instead, and will
@@@ -231,12 -175,9 +232,12 @@@ controlled by the `tls-program' variabl
  +++
  ** C-h l now also lists the commands that were run.
  
 -+++
 -** x-select-enable-clipboard is renamed select-enable-clipboard
 -and x-select-enable-primary is renamed select-enable-primary.
 +** The new M-s M-w key binding uses eww to search the web for the
 +text in the region.
 +
 +** M-x suggests shorthands and ignores obsolete commands for completion.
 +** x-select-enable-clipboard is renamed select-enable-clipboard.
 +x-select-enable-primary and renamed select-enable-primary.
  Additionally they both now apply to all systems (OSX, GNUstep, Windows, you
  name it), with the proviso that on some systems (e.g. Windows)
  select-enable-primary is ineffective since the system doesn't
@@@ -452,9 -393,6 +453,9 @@@ additionally need to add `getSelection
  `erc-network-hide-list' and `erc-channel-hide-list' will only hide the
  specified message types for the respective specified targets.
  
 +*** New variable `erc-default-port-tls' used to connect to TLS IRC
 +servers.
 +
  ** Midnight-mode
  
  ---
@@@ -653,11 -591,6 +654,11 @@@ useful when, for example, one needs to 
  whether to use variable-pitch fonts or not.  The user can also
  customize the `shr-use-fonts' variable.
  
 ++++
 +*** A new command `C' (`eww-toggle-colors') can be used to toggle
 +whether to use the HTML-specified colors or not.  The user can also
 +customize the `shr-use-colors' variable.
 +
  +++
  *** A new command `R' (`eww-readable') will try do identify the main
  textual parts of a web page and display only that, leaving menus and
@@@ -791,7 -724,10 +792,10 @@@ If the output of ERT tests in batch mod
  log file, then it can be passed as an argument to the above function
  to produce a neat summary.
  
+ ---
  ** New js.el option `js-indent-first-init'.
+ It was renamed from `js-indent-first-initialiser', to avoid issues
+ with American vs British spelling.
  
  ** Info
  
@@@ -1005,6 -941,7 +1009,7 @@@ New options `tildify-space-string', `ti
  `tildify-ignored-environments-alist' variables (as well as a few
  helper functions) obsolete.
  
+ +++
  ** New package Xref replaces Etags's front-end and UI
  
  The new package Xref provides a generic framework and new commands to
@@@ -1027,58 -964,81 +1032,81 @@@ As a result of this, the following comm
  `find-tag-other-window', `find-tag-other-frame', `find-tag-regexp',
  `tags-apropos', and `tags-loop-continue'.
  
- The framework's API is still experimental and can change in major,
- backward-incompatible ways.
+ +++
  *** New variables
  
  `find-tag-marker-ring-length' is now an obsolete alias for
  `xref-marker-ring-length'.  `find-tag-marker-ring' is now an obsolete
  alias for a private variable.  `xref-push-marker-stack' and
- `xref-pop-marker-stack' should be used to mutate it instead.
+ `xref-pop-marker-stack' should be used instead to manipulate the stack
+ of searches for definitions.
  
  ---
  *** `xref-find-definitions' and `describe-function' now display
  information about mode local overrides (defined by cedet/mode-local.el
  `define-overloadable-function' `define-mode-local-overrides').
  
+ The framework's Lisp API is still experimental and can change in major,
+ backward-incompatible ways.
+ ---
+ ** New package Project
+ The new package Project provides generic infrastructure for dealing
+ with projects.  The main commands included in it are
+ `project-find-file' and `project-find-regexp'.
+ The Lisp API of this package is still experimental.
  ** EUDC
  EUDC's LDAP backend has been improved.
  
+ +++
  *** EUDC supports LDAP-over-SSL URLs (ldaps://).
  
+ ---
  *** EUDC passes LDAP passwords through a pipe to the ldapsearch
  subprocess instead of on the command line.
  
+ ---
  *** EUDC handles LDAP wildcards automatically so the user shouldn't
  need to configure this manually anymore.
  
+ +++
  *** The LDAP configuration section of EUDC's manual has been
  rewritten.
  
  There have also been customization changes.
  
+ +++
  *** New custom variable `eudc-server-hotlist' to allow specifying
  multiple EUDC servers in init file.
  
+ +++
  *** Custom variable `eudc-inline-query-format' defaults to completing
  on email and firstname instead of surname.
  
+ ---
  *** Custom variable `eudc-expansion-overwrites-query' defaults to nil
  to avoid interfering with the kill ring.
  
+ +++
  *** Custom variable `eudc-inline-expansion-format' defaults to
  "Firstname Surname <mail-address>".
  
+ +++
  *** Custom variable `eudc-options-file' defaults to
  "~/.emacs.d/eudc-options".
  
+ ---
  *** New custom variable `ldap-ldapsearch-password-prompt-regexp' to
  allow overriding the regular expression that recognizes the ldapsearch
  command line's password prompt.
  
+ ---
  EUDC's BBDB backend now supports BBDB 3.
  
+ ---
  EUDC's PH backend (eudcb-ph.el) is obsolete.
  
  ** Eshell
  *** The new built-in command `clear' can scroll window contents out of sight.
  If provided with an optional non-nil argument, the scrollback contents will be cleared.
  
+ +++
  *** New buffer syntax '#<buffer-name>', which is equivalent to
  '#<buffer buffer-name>'.  This shorthand makes interacting with
  buffers from eshell more convenient.  Custom variable
  `eshell-buffer-shorthand', which has been broken for a while, has been
  removed.
  
+ +++
  *** By default, eshell "visual" program buffers (created by
  `eshell-visual-commands' and similar custom vars) are no longer killed
  when their processes die.  This fixes issues with short-lived commands
@@@ -1103,6 -1065,7 +1133,7 @@@ make the new option `eshell-destroy-buf
  
  ** Browse-url
  
+ ---
  *** Support for the Conkeror web browser.
  
  ---
@@@ -1138,10 -1101,6 +1169,10 @@@ compress many marked files into a singl
  compression command is determined from the new
  `dired-compress-files-alist' variable.
  
 ++++
 +*** `W' is now bound to `browse-url-of-dired-file', and is useful for
 +viewing HTML files and the like.
 +
  ** Tabulated List Mode
  
  +++
@@@ -1159,11 -1118,13 +1190,13 @@@ few or no entries have changed
  ---
  *** gulp.el
  
+ ---
  *** landmark.el (moved to elpa.gnu.org)
  
  \f
  * New Modes and Packages in Emacs 25.1
  
+ ---
  ** pinentry.el allows GnuPG passphrase to be prompted through the
  minibuffer instead of a graphical dialog, depending on whether the gpg
  command is called from Emacs (i.e., INSIDE_EMACS environment variable
@@@ -1172,28 -1133,35 +1205,35 @@@ later) and Pinentry (0.9.5 or later)
  
  ** cl-generic.el provides CLOS-style multiple-dispatch generic functions.
  
+ ---
  ** scss-mode (a minor variant of css-mode)
  
+ ---
  ** let-alist is a new macro (and a package) that allows one to easily
  let-bind the values stored in an alist.
  
+ ---
  ** `tildify-mode' allows to automatically insert hard spaces as one
  types the text.  Breaking line after a single-character words is
  forbidden by Czech and Polish typography (and may be discouraged in
  other languages), so `auto-tildify-mode' makes it easier to create
  a typographically-correct documents.
  
+ ---
  ** The `seq' library adds sequence manipulation functions and macros
  that complement basic functions provided by subr.el.  All functions
  are prefixed with `seq-' and work on lists, strings and vectors.
  
+ ---
  ** The `map' library provides map-manipulation functions that work on
  alists, hash-table and arrays.  All functions are prefixed with
  `map-'.
  
+ ---
  ** The `thunk' library provides functions and macros to control the
  evaluation of forms.
  
+ ---
  ** js-jsx-mode (a minor variant of js-mode) provides indentation
  support for JSX, an XML-like syntax extension to ECMAScript.
  
@@@ -1206,6 -1174,7 +1246,7 @@@ arguments.  The earlier behavior of sil
  last variable when there was an odd number of arguments has been
  eliminated.
  
+ +++
  ** `syntax-begin-function' is declared obsolete.
  Removed font-lock-beginning-of-syntax-function and the SYNTAX-BEGIN
  slot in font-lock-defaults.
@@@ -1217,12 -1186,11 +1258,11 @@@ file and still expect it to be run afte
  `package-enable-at-startup' to t after the call to
  `package-initialize'.
  
+ ---
  ** `:global' minor mode use `setq-default' rather than `setq'.
  This means that you can't use `make-local-variable' and expect them to
  "magically" become buffer-local.
  
- ** `inhibit-point-motion-hooks' now defaults to t and is obsolete.
  +++
  ** `track-mouse' no longer freezes the shape of the mouse pointer.
  The `track-mouse' form no longer refrains from changing the shape of
@@@ -1237,10 -1205,12 +1277,12 @@@ to the special value `dragging' in the 
  has any effect.  (This change was made in Emacs 24.4 but was not
  advertised at the time.)
  
+ +++
  ** `indirect-function' does not signal `void-function' any more.
  This is mostly a bug-fix, since this change was missed back in 24.4 when
  symbol-function was changed not to signal `void-function' any more.
  
+ +++
  *** As a consequence, the second arg of `indirect-function' is now obsolete.
  
  ** Comint, term, and compile do not set the EMACS env var any more.
@@@ -1272,10 -1242,12 +1314,12 @@@ group ID instead of `t'
  any reference to a buffer position.  The 6th member of the mouse
  position list returned for such events is now nil.
  
+ ---
  ** Menu items in keymaps do not support the "key shortcut cache" any more.
  These slots used to hold key-shortcut data, but have been obsolete since
  Emacs-21.
  
+ ---
  ** Emacs no longer downcases the first letter of a system diagnostic
  when signaling a file error.  For example, it now reports "Permission
  denied" instead of "permission denied".  The old behavior was problematic
@@@ -1321,6 -1293,7 +1365,7 @@@ use [:multibyte:] instead
  ** The `diff' command uses the unified format now.  To restore the old
  behavior, set `diff-switches' to `-c'.
  
+ ---
  ** `grep-template' and `grep-find-template' values don't include the
  --color argument anymore.  It's added at the <C> place holder position
  dynamically.  Any third-party code that changes these templates should
@@@ -1346,6 -1319,7 +1391,7 @@@ that happen, `unhandled-file-name-direc
  +++
  *** New vector QPattern.
  
+ ---
  ** syntax-propertize is now automatically called on-demand during forward
  parsing functions like `forward-sexp'.
  
@@@ -1366,10 -1340,14 +1412,14 @@@ Replaced by properties `cursor-intangib
  implemented by the new `cursor-intangible-mode' and
  `cursor-sensor-mode' minor modes.
  
+ ** `inhibit-point-motion-hooks' now defaults to t and is obsolete.
+ +++
  ** New process type `pipe', which can be used in combination with the
  `:stderr' keyword of make-process to handle standard error output
  of subprocess.
  
+ +++
  ** New function `make-process' provides an alternative interface to
  `start-process'.  It allows programs to set process parameters such as
  process filter, sentinel, etc., through keyword arguments (similar to
@@@ -1398,13 -1376,17 +1448,17 @@@ buffers to allow certain parts of the t
  
  ** `read-buffer' takes a new `predicate' argument.
  
+ +++
  ** Emacs Lisp now supports generators.
+ See the "Generators" section of the ELisp manual for the details.
  
- ** New finalizer facility for running code when objects
-    become unreachable.
+ +++
+ ** New finalizer facility for running code when objects become unreachable.
+ See the "Finalizer Type" subsection in the ELisp manual for the
+ details.
  
- ** lexical closures can use (:documentation <form>) to build their docstring.
- It should be placed right where the docstring would be, and <form> is then
+ ** lexical closures can use (:documentation FORM) to build their docstring.
+ It should be placed right where the docstring would be, and FORM is then
  evaluated (and should return a string) when the closure is built.
  
  ** define-inline provides a new way to define inlinable functions.
@@@ -1475,6 -1457,7 +1529,7 @@@ have side effects
  ** New macro `with-file-modes', for evaluating expressions with default file
  permissions set to temporary values (e.g., for creating private files).
  
+ +++
  ** You can access the slots of structures using `cl-struct-slot-value'.
  
  ** Function `sort' can deal with vectors.
@@@ -1487,6 -1470,7 +1542,7 @@@ name.  The variable `system-name' is no
  +++
  ** Function `write-region' no longer outputs "Wrote FILE" in batch mode.
  
+ ---
  ** If `pwd' is called with a prefix argument, insert the current default
  directory at point.
  
@@@ -1587,11 -1571,16 +1643,16 @@@ a directory file name.  It returns non-
  the name is a directory separator character (forward slash on GNU and
  Unix systems, forward- or backslash on MS-Windows and MS-DOS).
  
+ ---
  ** ASCII approximations to curved quotes are put in standard-display-table
  if the terminal cannot display curved quotes.
  
+ +++
  ** Standard output and error streams now transliterate characters via
  standard-display-table, and encode output using locale-coding-system.
+ To force a specific encoding, bind `coding-system-for-write' to the
+ coding-system of your choice when invoking functions like `prin1' and
+ `message'.
  
  +++
  ** New var `truncate-string-ellipsis' to choose how to indicate truncation.
@@@ -1602,6 -1591,7 +1663,7 @@@ This is used by Google's Native Client 
  
  ** Miscellaneous name change
  
+ ---
  For consistency with the usual Emacs spelling, the Lisp variable
  `hfy-optimisations' has been renamed to `hfy-optimizations'.
  The old name should still work, as an obsolescent alias.
  *** Emacs can now draw horizontal scroll bars on some platforms that
  provide toolkit scroll bars, namely Gtk+, Lucid, Motif and Windows.
  Horizontal scroll bars are turned off by default.
  **** New function `horizontal-scroll-bars-available-p' telling whether
      horizontal scroll bars are available on the underlying system.
  **** New mode `horizontal-scroll-bar-mode' to toggle horizontal scroll
      bars on all existing and future frames.
  **** New function `toggle-horizontal-scroll-bar' to toggle horizontal
      scroll bars on the selected frame.
  **** New frame parameters `horizontal-scroll-bars' and
      `scroll-bar-height' to set horizontal scroll bars and their height
      for individual frames and in `default-frame-alist'.
  **** New functions `frame-scroll-bar-height' and
      `window-scroll-bar-height' return the height of horizontal scroll
      bars on a specific frame or window.
  **** `set-window-scroll-bars' now accepts five parameters where the last
      two specify height and type of the window's horizontal scroll bar.
  **** `window-scroll-bars' now returns type and sizes of horizontal scroll
      bars too.
  **** New buffer-local variables `horizontal-scroll-bar' and
      `scroll-bar-height'.
  
@@@ -1694,6 -1692,7 +1764,7 @@@ Those features have been deprecated in 
  
  ** Etags
  
+ +++
  *** etags no longer qualifies class members by default.
  
  By default, `etags' will not qualify class members for C-like
@@@ -1709,11 -1708,13 +1780,13 @@@ using -Q might make some class members 
  (`xref-find-definitions'); if so, you can use `C-u M-.' to specify the
  qualified names by hand.
  
+ +++
  *** New language Ruby
  
  Names of modules, classes, methods, and functions are tagged.
  Overloaded operators are also tagged.
  
+ +++
  *** Improved support for Lua
  
  Etags now tags functions even if the "function" keyword follows some
@@@ -1737,6 -1738,7 +1810,7 @@@ of Windows starting with Windows 9X
  +++
  ** Emacs running on MS-Windows now supports the daemon mode.
  
+ ---
  ** The byte counts in etags-generated TAGS files are now the same on
  MS-Windows as they are on other platforms.
  
  ** On OS X, configure creates a Cocoa ("Nextstep") build by default.
  Pass '--without-ns' to configure to create an X11 build, the old default.
  
+ ---
  ** OS X 10.5 or older is no longer supported.
  
+ ---
  ** OS X on PowerPC is no longer supported.
  
  ---
diff --combined lisp/dired.el
index 52386c91198f9547181b90cf1aae182955237648,e023da27be36fd91de951e4dd9a17dd32d45fdd2..63124fce5e5662371c3fe32a692eeddd47d74e91
@@@ -34,9 -34,6 +34,9 @@@
  
  ;;; Code:
  
 +;; When bootstrapping dired-loaddefs has not been generated.
 +(require 'dired-loaddefs nil t)
 +
  (declare-function dired-buffer-more-recently-used-p
                  "dired-x" (buffer1 buffer2))
  
@@@ -1538,7 -1535,6 +1538,7 @@@ Do so according to the former subdir al
      (define-key map "u" 'dired-unmark)
      (define-key map "v" 'dired-view-file)
      (define-key map "w" 'dired-copy-filename-as-kill)
 +    (define-key map "W" 'browse-url-of-dired-file)
      (define-key map "x" 'dired-do-flagged-delete)
      (define-key map "y" 'dired-show-file-type)
      (define-key map "+" 'dired-create-directory)
@@@ -2810,7 -2806,9 +2810,9 @@@ It runs the hook `dired-initial-positio
  (defun dired-current-directory (&optional localp)
    "Return the name of the subdirectory to which this line belongs.
  This returns a string with trailing slash, like `default-directory'.
- Optional argument means return a file name relative to `default-directory'."
+ Optional argument means return a file name relative to `default-directory',
+ in which case the value could be an empty string if `default-directory'
+ is the directory where the file on this line resides."
    (let ((here (point))
        (alist (or dired-subdir-alist
                   ;; probably because called in a non-dired buffer
@@@ -3904,6 -3902,561 +3906,6 @@@ Ask means pop up a menu for the user t
  (add-to-list 'desktop-buffer-mode-handlers
             '(dired-mode . dired-restore-desktop-buffer))
  
 -\f
 -;;; Start of automatically extracted autoloads.
 -\f
 -;;;### (autoloads nil "dired-aux" "dired-aux.el" "7b7e39be8bcaf5f35b2735c3f5635f40")
 -;;; Generated autoloads from dired-aux.el
 -
 -(autoload 'dired-diff "dired-aux" "\
 -Compare file at point with file FILE using `diff'.
 -If called interactively, prompt for FILE.  If the file at point
 -has a backup file, use that as the default.  If the file at point
 -is a backup file, use its original.  If the mark is active
 -in Transient Mark mode, use the file at the mark as the default.
 -\(That's the mark set by \\[set-mark-command], not by Dired's
 -\\[dired-mark] command.)
 -
 -FILE is the first file given to `diff'.  The file at point
 -is the second file given to `diff'.
 -
 -With prefix arg, prompt for second argument SWITCHES, which is
 -the string of command switches for the third argument of `diff'.
 -
 -\(fn FILE &optional SWITCHES)" t nil)
 -
 -(autoload 'dired-backup-diff "dired-aux" "\
 -Diff this file with its backup file or vice versa.
 -Uses the latest backup, if there are several numerical backups.
 -If this file is a backup, diff it with its original.
 -The backup file is the first file given to `diff'.
 -With prefix arg, prompt for argument SWITCHES which is options for `diff'.
 -
 -\(fn &optional SWITCHES)" t nil)
 -
 -(autoload 'dired-compare-directories "dired-aux" "\
 -Mark files with different file attributes in two dired buffers.
 -Compare file attributes of files in the current directory
 -with file attributes in directory DIR2 using PREDICATE on pairs of files
 -with the same name.  Mark files for which PREDICATE returns non-nil.
 -Mark files with different names if PREDICATE is nil (or interactively
 -with empty input at the predicate prompt).
 -
 -PREDICATE is a Lisp expression that can refer to the following variables:
 -
 -    size1, size2   - file size in bytes
 -    mtime1, mtime2 - last modification time in seconds, as a float
 -    fa1, fa2       - list of file attributes
 -                     returned by function `file-attributes'
 -
 -    where 1 refers to attribute of file in the current dired buffer
 -    and 2 to attribute of file in second dired buffer.
 -
 -Examples of PREDICATE:
 -
 -    (> mtime1 mtime2) - mark newer files
 -    (not (= size1 size2)) - mark files with different sizes
 -    (not (string= (nth 8 fa1) (nth 8 fa2))) - mark files with different modes
 -    (not (and (= (nth 2 fa1) (nth 2 fa2))   - mark files with different UID
 -              (= (nth 3 fa1) (nth 3 fa2))))   and GID.
 -
 -\(fn DIR2 PREDICATE)" t nil)
 -
 -(autoload 'dired-do-chmod "dired-aux" "\
 -Change the mode of the marked (or next ARG) files.
 -Symbolic modes like `g+w' are allowed.
 -Type M-n to pull the file attributes of the file at point
 -into the minibuffer.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-chgrp "dired-aux" "\
 -Change the group of the marked (or next ARG) files.
 -Type M-n to pull the file attributes of the file at point
 -into the minibuffer.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-chown "dired-aux" "\
 -Change the owner of the marked (or next ARG) files.
 -Type M-n to pull the file attributes of the file at point
 -into the minibuffer.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-touch "dired-aux" "\
 -Change the timestamp of the marked (or next ARG) files.
 -This calls touch.
 -Type M-n to pull the file attributes of the file at point
 -into the minibuffer.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-print "dired-aux" "\
 -Print the marked (or next ARG) files.
 -Uses the shell command coming from variables `lpr-command' and
 -`lpr-switches' as default.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-clean-directory "dired-aux" "\
 -Flag numerical backups for deletion.
 -Spares `dired-kept-versions' latest versions, and `kept-old-versions' oldest.
 -Positive prefix arg KEEP overrides `dired-kept-versions';
 -Negative prefix arg KEEP overrides `kept-old-versions' with KEEP made positive.
 -
 -To clear the flags on these files, you can use \\[dired-flag-backup-files]
 -with a prefix argument.
 -
 -\(fn KEEP)" t nil)
 -
 -(autoload 'dired-do-async-shell-command "dired-aux" "\
 -Run a shell command COMMAND on the marked files asynchronously.
 -
 -Like `dired-do-shell-command', but adds `&' at the end of COMMAND
 -to execute it asynchronously.
 -
 -When operating on multiple files, asynchronous commands
 -are executed in the background on each file in parallel.
 -In shell syntax this means separating the individual commands
 -with `&'.  However, when COMMAND ends in `;' or `;&' then commands
 -are executed in the background on each file sequentially waiting
 -for each command to terminate before running the next command.
 -In shell syntax this means separating the individual commands with `;'.
 -
 -The output appears in the buffer `*Async Shell Command*'.
 -
 -\(fn COMMAND &optional ARG FILE-LIST)" t nil)
 -
 -(autoload 'dired-do-shell-command "dired-aux" "\
 -Run a shell command COMMAND on the marked files.
 -If no files are marked or a numeric prefix arg is given,
 -the next ARG files are used.  Just \\[universal-argument] means the current file.
 -The prompt mentions the file(s) or the marker, as appropriate.
 -
 -If there is a `*' in COMMAND, surrounded by whitespace, this runs
 -COMMAND just once with the entire file list substituted there.
 -
 -If there is no `*', but there is a `?' in COMMAND, surrounded by
 -whitespace, this runs COMMAND on each file individually with the
 -file name substituted for `?'.
 -
 -Otherwise, this runs COMMAND on each file individually with the
 -file name added at the end of COMMAND (separated by a space).
 -
 -`*' and `?' when not surrounded by whitespace have no special
 -significance for `dired-do-shell-command', and are passed through
 -normally to the shell, but you must confirm first.
 -
 -If you want to use `*' as a shell wildcard with whitespace around
 -it, write `*\"\"' in place of just `*'.  This is equivalent to just
 -`*' in the shell, but avoids Dired's special handling.
 -
 -If COMMAND ends in `&', `;', or `;&', it is executed in the
 -background asynchronously, and the output appears in the buffer
 -`*Async Shell Command*'.  When operating on multiple files and COMMAND
 -ends in `&', the shell command is executed on each file in parallel.
 -However, when COMMAND ends in `;' or `;&' then commands are executed
 -in the background on each file sequentially waiting for each command
 -to terminate before running the next command.  You can also use
 -`dired-do-async-shell-command' that automatically adds `&'.
 -
 -Otherwise, COMMAND is executed synchronously, and the output
 -appears in the buffer `*Shell Command Output*'.
 -
 -This feature does not try to redisplay Dired buffers afterward, as
 -there's no telling what files COMMAND may have changed.
 -Type \\[dired-do-redisplay] to redisplay the marked files.
 -
 -When COMMAND runs, its working directory is the top-level directory
 -of the Dired buffer, so output files usually are created there
 -instead of in a subdir.
 -
 -In a noninteractive call (from Lisp code), you must specify
 -the list of file names explicitly with the FILE-LIST argument, which
 -can be produced by `dired-get-marked-files', for example.
 -
 -\(fn COMMAND &optional ARG FILE-LIST)" t nil)
 -
 -(autoload 'dired-run-shell-command "dired-aux" "\
 -
 -
 -\(fn COMMAND)" nil nil)
 -
 -(autoload 'dired-do-kill-lines "dired-aux" "\
 -Kill all marked lines (not the files).
 -With a prefix argument, kill that many lines starting with the current line.
 -\(A negative argument kills backward.)
 -If you use this command with a prefix argument to kill the line
 -for a file that is a directory, which you have inserted in the
 -Dired buffer as a subdirectory, then it deletes that subdirectory
 -from the buffer as well.
 -To kill an entire subdirectory (without killing its line in the
 -parent directory), go to its directory header line and use this
 -command with a prefix argument (the value does not matter).
 -
 -\(fn &optional ARG FMT)" t nil)
 -
 -(autoload 'dired-do-compress-to "dired-aux" "\
 -Compress selected files and directories to an archive.
 -You are prompted for the archive name.
 -The archiving command is chosen based on the archive name extension and
 -`dired-compress-files-alist'.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-compress-file "dired-aux" "\
 -Compress or uncompress FILE.
 -Return the name of the compressed or uncompressed file.
 -Return nil if no change in files.
 -
 -\(fn FILE)" nil nil)
 -
 -(autoload 'dired-query "dired-aux" "\
 -Format PROMPT with ARGS, query user, and store the result in SYM.
 -The return value is either nil or t.
 -
 -The user may type y or SPC to accept once; n or DEL to skip once;
 -! to accept this and subsequent queries; or q or ESC to decline
 -this and subsequent queries.
 -
 -If SYM is already bound to a non-nil value, this function may
 -return automatically without querying the user.  If SYM is !,
 -return t; if SYM is q or ESC, return nil.
 -
 -\(fn SYM PROMPT &rest ARGS)" nil nil)
 -
 -(autoload 'dired-do-compress "dired-aux" "\
 -Compress or uncompress marked (or next ARG) files.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-byte-compile "dired-aux" "\
 -Byte compile marked (or next ARG) Emacs Lisp files.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-load "dired-aux" "\
 -Load the marked (or next ARG) Emacs Lisp files.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-redisplay "dired-aux" "\
 -Redisplay all marked (or next ARG) files.
 -If on a subdir line, redisplay that subdirectory.  In that case,
 -a prefix arg lets you edit the `ls' switches used for the new listing.
 -
 -Dired remembers switches specified with a prefix arg, so that reverting
 -the buffer will not reset them.  However, using `dired-undo' to re-insert
 -or delete subdirectories can bypass this machinery.  Hence, you sometimes
 -may have to reset some subdirectory switches after a `dired-undo'.
 -You can reset all subdirectory switches to the default using
 -\\<dired-mode-map>\\[dired-reset-subdir-switches].
 -See Info node `(emacs)Subdir switches' for more details.
 -
 -\(fn &optional ARG TEST-FOR-SUBDIR)" t nil)
 -
 -(autoload 'dired-add-file "dired-aux" "\
 -
 -
 -\(fn FILENAME &optional MARKER-CHAR)" nil nil)
 -
 -(autoload 'dired-remove-file "dired-aux" "\
 -
 -
 -\(fn FILE)" nil nil)
 -
 -(autoload 'dired-relist-file "dired-aux" "\
 -Create or update the line for FILE in all Dired buffers it would belong in.
 -
 -\(fn FILE)" nil nil)
 -
 -(autoload 'dired-copy-file "dired-aux" "\
 -
 -
 -\(fn FROM TO OK-FLAG)" nil nil)
 -
 -(autoload 'dired-rename-file "dired-aux" "\
 -
 -
 -\(fn FILE NEWNAME OK-IF-ALREADY-EXISTS)" nil nil)
 -
 -(autoload 'dired-create-directory "dired-aux" "\
 -Create a directory called DIRECTORY.
 -If DIRECTORY already exists, signal an error.
 -
 -\(fn DIRECTORY)" t nil)
 -
 -(autoload 'dired-do-copy "dired-aux" "\
 -Copy all marked (or next ARG) files, or copy the current file.
 -When operating on just the current file, prompt for the new name.
 -
 -When operating on multiple or marked files, prompt for a target
 -directory, and make the new copies in that directory, with the
 -same names as the original files.  The initial suggestion for the
 -target directory is the Dired buffer's current directory (or, if
 -`dired-dwim-target' is non-nil, the current directory of a
 -neighboring Dired window).
 -
 -If `dired-copy-preserve-time' is non-nil, this command preserves
 -the modification time of each old file in the copy, similar to
 -the \"-p\" option for the \"cp\" shell command.
 -
 -This command copies symbolic links by creating new ones, similar
 -to the \"-d\" option for the \"cp\" shell command.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-symlink "dired-aux" "\
 -Make symbolic links to current file or all marked (or next ARG) files.
 -When operating on just the current file, you specify the new name.
 -When operating on multiple or marked files, you specify a directory
 -and new symbolic links are made in that directory
 -with the same names that the files currently have.  The default
 -suggested for the target directory depends on the value of
 -`dired-dwim-target', which see.
 -
 -For relative symlinks, use \\[dired-do-relsymlink].
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-hardlink "dired-aux" "\
 -Add names (hard links) current file or all marked (or next ARG) files.
 -When operating on just the current file, you specify the new name.
 -When operating on multiple or marked files, you specify a directory
 -and new hard links are made in that directory
 -with the same names that the files currently have.  The default
 -suggested for the target directory depends on the value of
 -`dired-dwim-target', which see.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-rename "dired-aux" "\
 -Rename current file or all marked (or next ARG) files.
 -When renaming just the current file, you specify the new name.
 -When renaming multiple or marked files, you specify a directory.
 -This command also renames any buffers that are visiting the files.
 -The default suggested for the target directory depends on the value
 -of `dired-dwim-target', which see.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-do-rename-regexp "dired-aux" "\
 -Rename selected files whose names match REGEXP to NEWNAME.
 -
 -With non-zero prefix argument ARG, the command operates on the next ARG
 -files.  Otherwise, it operates on all the marked files, or the current
 -file if none are marked.
 -
 -As each match is found, the user must type a character saying
 -  what to do with it.  For directions, type \\[help-command] at that time.
 -NEWNAME may contain \\=\\<n> or \\& as in `query-replace-regexp'.
 -REGEXP defaults to the last regexp used.
 -
 -With a zero prefix arg, renaming by regexp affects the absolute file name.
 -Normally, only the non-directory part of the file name is used and changed.
 -
 -\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
 -
 -(autoload 'dired-do-copy-regexp "dired-aux" "\
 -Copy selected files whose names match REGEXP to NEWNAME.
 -See function `dired-do-rename-regexp' for more info.
 -
 -\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
 -
 -(autoload 'dired-do-hardlink-regexp "dired-aux" "\
 -Hardlink selected files whose names match REGEXP to NEWNAME.
 -See function `dired-do-rename-regexp' for more info.
 -
 -\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
 -
 -(autoload 'dired-do-symlink-regexp "dired-aux" "\
 -Symlink selected files whose names match REGEXP to NEWNAME.
 -See function `dired-do-rename-regexp' for more info.
 -
 -\(fn REGEXP NEWNAME &optional ARG WHOLE-NAME)" t nil)
 -
 -(autoload 'dired-upcase "dired-aux" "\
 -Rename all marked (or next ARG) files to upper case.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-downcase "dired-aux" "\
 -Rename all marked (or next ARG) files to lower case.
 -
 -\(fn &optional ARG)" t nil)
 -
 -(autoload 'dired-maybe-insert-subdir "dired-aux" "\
 -Insert this subdirectory into the same dired buffer.
 -If it is already present, just move to it (type \\[dired-do-redisplay] to refresh),
 -  else inserts it at its natural place (as `ls -lR' would have done).
 -With a prefix arg, you may edit the ls switches used for this listing.
 -  You can add `R' to the switches to expand the whole tree starting at
 -  this subdirectory.
 -This function takes some pains to conform to `ls -lR' output.
 -
 -Dired remembers switches specified with a prefix arg, so that reverting
 -the buffer will not reset them.  However, using `dired-undo' to re-insert
 -or delete subdirectories can bypass this machinery.  Hence, you sometimes
 -may have to reset some subdirectory switches after a `dired-undo'.
 -You can reset all subdirectory switches to the default using
 -\\<dired-mode-map>\\[dired-reset-subdir-switches].
 -See Info node `(emacs)Subdir switches' for more details.
 -
 -\(fn DIRNAME &optional SWITCHES NO-ERROR-IF-NOT-DIR-P)" t nil)
 -
 -(autoload 'dired-insert-subdir "dired-aux" "\
 -Insert this subdirectory into the same Dired buffer.
 -If it is already present, overwrite the previous entry;
 -  otherwise, insert it at its natural place (as `ls -lR' would
 -  have done).
 -With a prefix arg, you may edit the `ls' switches used for this listing.
 -  You can add `R' to the switches to expand the whole tree starting at
 -  this subdirectory.
 -This function takes some pains to conform to `ls -lR' output.
 -
 -\(fn DIRNAME &optional SWITCHES NO-ERROR-IF-NOT-DIR-P)" t nil)
 -
 -(autoload 'dired-prev-subdir "dired-aux" "\
 -Go to previous subdirectory, regardless of level.
 -When called interactively and not on a subdir line, go to this subdir's line.
 -
 -\(fn ARG &optional NO-ERROR-IF-NOT-FOUND NO-SKIP)" t nil)
 -
 -(autoload 'dired-goto-subdir "dired-aux" "\
 -Go to end of header line of DIR in this dired buffer.
 -Return value of point on success, otherwise return nil.
 -The next char is either \\n, or \\r if DIR is hidden.
 -
 -\(fn DIR)" t nil)
 -
 -(autoload 'dired-mark-subdir-files "dired-aux" "\
 -Mark all files except `.' and `..' in current subdirectory.
 -If the Dired buffer shows multiple directories, this command
 -marks the files listed in the subdirectory that point is in.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-kill-subdir "dired-aux" "\
 -Remove all lines of current subdirectory.
 -Lower levels are unaffected.
 -
 -\(fn &optional REMEMBER-MARKS)" t nil)
 -
 -(autoload 'dired-tree-up "dired-aux" "\
 -Go up ARG levels in the dired tree.
 -
 -\(fn ARG)" t nil)
 -
 -(autoload 'dired-tree-down "dired-aux" "\
 -Go down in the dired tree.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-hide-subdir "dired-aux" "\
 -Hide or unhide the current subdirectory and move to next directory.
 -Optional prefix arg is a repeat factor.
 -Use \\[dired-hide-all] to (un)hide all directories.
 -
 -\(fn ARG)" t nil)
 -
 -(autoload 'dired-hide-all "dired-aux" "\
 -Hide all subdirectories, leaving only their header lines.
 -If there is already something hidden, make everything visible again.
 -Use \\[dired-hide-subdir] to (un)hide a particular subdirectory.
 -
 -\(fn &optional IGNORED)" t nil)
 -
 -(autoload 'dired-isearch-filenames-setup "dired-aux" "\
 -Set up isearch to search in Dired file names.
 -Intended to be added to `isearch-mode-hook'.
 -
 -\(fn)" nil nil)
 -
 -(autoload 'dired-isearch-filenames "dired-aux" "\
 -Search for a string using Isearch only in file names in the Dired buffer.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-isearch-filenames-regexp "dired-aux" "\
 -Search for a regexp using Isearch only in file names in the Dired buffer.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-do-isearch "dired-aux" "\
 -Search for a string through all marked files using Isearch.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-do-isearch-regexp "dired-aux" "\
 -Search for a regexp through all marked files using Isearch.
 -
 -\(fn)" t nil)
 -
 -(autoload 'dired-do-search "dired-aux" "\
 -Search through all marked files for a match for REGEXP.
 -Stops when a match is found.
 -To continue searching for next match, use command \\[tags-loop-continue].
 -
 -\(fn REGEXP)" t nil)
 -
 -(autoload 'dired-do-query-replace-regexp "dired-aux" "\
 -Do `query-replace-regexp' of FROM with TO, on all marked files.
 -Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
 -If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
 -with the command \\[tags-loop-continue].
 -
 -\(fn FROM TO &optional DELIMITED)" t nil)
 -
 -(autoload 'dired-show-file-type "dired-aux" "\
 -Print the type of FILE, according to the `file' command.
 -If you give a prefix to this command, and FILE is a symbolic
 -link, then the type of the file linked to by FILE is printed
 -instead.
 -
 -\(fn FILE &optional DEREF-SYMLINKS)" t nil)
 -
 -;;;***
 -\f
 -;;;### (autoloads nil "dired-x" "dired-x.el" "26ec84bf71edaf13ce45aeab60b7f31f")
 -;;; Generated autoloads from dired-x.el
 -
 -(autoload 'dired-jump "dired-x" "\
 -Jump to Dired buffer corresponding to current buffer.
 -If in a file, Dired the current directory and move to file's line.
 -If in Dired already, pop up a level and goto old directory's line.
 -In case the proper Dired file line cannot be found, refresh the dired
 -buffer and try again.
 -When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
 -Interactively with prefix argument, read FILE-NAME and
 -move to its line in dired.
 -
 -\(fn &optional OTHER-WINDOW FILE-NAME)" t nil)
 -
 -(autoload 'dired-jump-other-window "dired-x" "\
 -Like \\[dired-jump] (`dired-jump') but in other window.
 -
 -\(fn &optional FILE-NAME)" t nil)
 -
 -(autoload 'dired-do-relsymlink "dired-x" "\
 -Relative symlink all marked (or next ARG) files into a directory.
 -Otherwise make a relative symbolic link to the current file.
 -This creates relative symbolic links like
 -
 -    foo -> ../bar/foo
 -
 -not absolute ones like
 -
 -    foo -> /ugly/file/name/that/may/change/any/day/bar/foo
 -
 -For absolute symlinks, use \\[dired-do-symlink].
 -
 -\(fn &optional ARG)" t nil)
 -
 -;;;***
 -\f
 -;;; End of automatically extracted autoloads.
 -
  (provide 'dired)
  
  (run-hooks 'dired-load-hook)          ; for your customizations
diff --combined lisp/ffap.el
index 6c7932b512e252ce07101e5da58c9fb1b25c6dca,36727b3747d44b71f7cca9d4dd3e6ac44ea411b0..abf979f612933a224c5115dd9ae75384ab42b407
@@@ -570,7 -570,7 +570,7 @@@ Looks at `ffap-ftp-default-user', retur
  (defvaralias 'ffap-newsgroup-heads  'thing-at-point-newsgroup-heads)
  (defalias 'ffap-newsgroup-p 'thing-at-point-newsgroup-p)
  
 -(defsubst ffap-url-p (string)
 +(defun ffap-url-p (string)
    "If STRING looks like an URL, return it (maybe improved), else nil."
    (when (and (stringp string) ffap-url-regexp)
      (let* ((case-fold-search t)
@@@ -974,14 -974,14 +974,14 @@@ out of NAME.
               (push (cons "" (cdr (assoc (match-string 0) ; i.e. "(TeX-current-macro)"
                                          preferred-suffix-rules)))
                     guess-rules))
-            (setq kpsewhich-args (mapcar (lambda (rule)
-                                           (concat (car rule) name (cdr rule)))
-                                         guess-rules))
             (with-temp-buffer
               (let ((process-environment (buffer-local-value
                                           'process-environment curbuf))
                     (exec-path (buffer-local-value 'exec-path curbuf)))
-                (apply #'call-process "kpsewhich"  nil  t  nil kpsewhich-args))
+                (apply #'call-process "kpsewhich" nil t nil
+                       (mapcar (lambda (rule)
+                                           (concat (car rule) name (cdr rule)))
+                                         guess-rules)))
               (when (< (point-min) (point-max))
                 (buffer-substring (goto-char (point-min)) (point-at-eol))))))))
  
index c42fbe7e51f994e7bfaea99444e62e2d74523263,000995c5b5332cea6b0850fad53a96c88d2110a2..2056f3907b8152492c5ac865921991bc03883f9b
@@@ -206,7 -206,7 +206,7 @@@ This variant works around bugs in `eval
  (eval-and-compile
    (defmacro c--macroexpand-all (form &optional environment)
      ;; Macro to smooth out the renaming of `cl-macroexpand-all' in Emacs 24.3.
 -    (if (eq c--mapcan-status 'cl-mapcan)
 +    (if (fboundp 'macroexpand-all)
        `(macroexpand-all ,form ,environment)
        `(cl-macroexpand-all ,form ,environment)))
  
@@@ -493,21 -493,19 +493,21 @@@ must not be within a `c-save-buffer-sta
  wouldn't be able to undo them.
  
  The return value is the value of the last form in BODY."
 -  `(let* ((modified (buffer-modified-p)) (buffer-undo-list t)
 -        (inhibit-read-only t) (inhibit-point-motion-hooks t)
 -        before-change-functions after-change-functions
 -        deactivate-mark
 -        buffer-file-name buffer-file-truename ; Prevent primitives checking
 -                                              ; for file modification
 -        ,@varlist)
 -     (unwind-protect
 -       (progn ,@body)
 -       (and (not modified)
 -          (buffer-modified-p)
 -          (set-buffer-modified-p nil)))))
 -(put 'c-save-buffer-state 'lisp-indent-function 1)
 +  (declare (debug t) (indent 1))
 +  (if (fboundp 'with-silent-modifications)
 +      `(with-silent-modifications (let* ,varlist ,@body))
 +    `(let* ((modified (buffer-modified-p)) (buffer-undo-list t)
 +          (inhibit-read-only t) (inhibit-point-motion-hooks t)
 +          before-change-functions after-change-functions
 +          deactivate-mark
 +          buffer-file-name buffer-file-truename ; Prevent primitives checking
 +                                                ; for file modification
 +          ,@varlist)
 +       (unwind-protect
 +         (progn ,@body)
 +       (and (not modified)
 +            (buffer-modified-p)
 +            (set-buffer-modified-p nil))))))
  
  (defmacro c-tentative-buffer-changes (&rest body)
    "Eval BODY and optionally restore the buffer contents to the state it
@@@ -656,23 -654,35 +656,35 @@@ right side of it.
  ;; Wrappers for common scan-lists cases, mainly because it's almost
  ;; impossible to get a feel for how that function works.
  
- (defmacro c-go-list-forward ()
-   "Move backward across one balanced group of parentheses.
- Return POINT when we succeed, NIL when we fail.  In the latter case, leave
- point unmoved."
-   `(c-safe (let ((endpos (scan-lists (point) 1 0)))
-            (goto-char endpos)
-            endpos)))
- (defmacro c-go-list-backward ()
-   "Move backward across one balanced group of parentheses.
- Return POINT when we succeed, NIL when we fail.  In the latter case, leave
- point unmoved."
-   `(c-safe (let ((endpos (scan-lists (point) -1 0)))
-            (goto-char endpos)
-            endpos)))
+ (defmacro c-go-list-forward (&optional pos limit)
+   "Move forward across one balanced group of parentheses starting at POS or
+ point.  Return POINT when we succeed, NIL when we fail.  In the latter case,
+ leave point unmoved.
+ A LIMIT for the search may be given.  The start position is assumed to be
+ before it."
+   (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) 1 0)) (point))))
+     (if limit
+       `(save-restriction
+          (if ,limit
+              (narrow-to-region (point-min) ,limit))
+          ,res)
+       res)))
+ (defmacro c-go-list-backward (&optional pos limit)
+   "Move backward across one balanced group of parentheses starting at POS or
+ point.  Return POINT when we succeed, NIL when we fail.  In the latter case,
+ leave point unmoved.
+ A LIMIT for the search may be given.  The start position is assumed to be
+ after it."
+   (let ((res `(c-safe (goto-char (scan-lists ,(or pos `(point)) -1 0)) (point))))
+     (if limit
+       `(save-restriction
+          (if ,limit
+              (narrow-to-region ,limit (point-max)))
+          ,res)
+       res)))
  
  (defmacro c-up-list-forward (&optional pos limit)
    "Return the first position after the list sexp containing POS,
diff --combined src/lisp.h
index 90a0c1272c96f5a02b2fd375492d615b972ce988,f33a8f2494e688e52f9cbd8693ec7816550ed43f..02b8078a9fd513ad861e775dcc397970864db8b7
@@@ -3927,7 -3927,7 +3927,7 @@@ extern bool let_shadows_global_binding_
  
  #ifdef HAVE_MODULES
  /* Defined in alloc.c.  */
- extern Lisp_Object make_user_ptr (void (*finalizer) (void*), void *p);
+ extern Lisp_Object make_user_ptr (void (*finalizer) (void *), void *p);
  
  /* Defined in emacs-module.c.  */
  extern void module_init (void);
@@@ -4313,23 -4313,17 +4313,23 @@@ extern void init_font (void)
  extern void syms_of_fontset (void);
  #endif
  
 +/* Defined in inotify.c */
 +#ifdef HAVE_INOTIFY
 +extern void syms_of_inotify (void);
 +#endif
 +
 +/* Defined in kqueue.c */
 +#ifdef HAVE_KQUEUE
 +extern void globals_of_kqueue (void);
 +extern void syms_of_kqueue (void);
 +#endif
 +
  /* Defined in gfilenotify.c */
  #ifdef HAVE_GFILENOTIFY
  extern void globals_of_gfilenotify (void);
  extern void syms_of_gfilenotify (void);
  #endif
  
 -/* Defined in inotify.c */
 -#ifdef HAVE_INOTIFY
 -extern void syms_of_inotify (void);
 -#endif
 -
  #ifdef HAVE_W32NOTIFY
  /* Defined on w32notify.c.  */
  extern void syms_of_w32notify (void);
index f07258476993d476915a02ba85a6c906549e2d8e,a29e42e7343e0875a605349ebe7dc1f536672db5..305ca9d6770c2e3c3a5e2731566a399fa1f6b5da
@@@ -44,6 -44,7 +44,7 @@@
  (require 'vc-git)
  (require 'vc-hg)
  
+ (autoload 'dired-uncache "dired")
  (declare-function tramp-find-executable "tramp-sh")
  (declare-function tramp-get-remote-path "tramp-sh")
  (declare-function tramp-get-remote-stat "tramp-sh")
@@@ -1394,6 -1395,7 +1395,6 @@@ This tests also `make-symbolic-link', `
  
  (ert-deftest tramp-test26-process-file ()
    "Check `process-file'."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (not
  
  (ert-deftest tramp-test27-start-file-process ()
    "Check `start-file-process'."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (not
  
  (ert-deftest tramp-test28-shell-command ()
    "Check `shell-command'."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (not
  
  (ert-deftest tramp-test29-vc-registered ()
    "Check `vc-registered'."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
               (vc-register
                nil (list (car vc-handled-backends)
                          (list (file-name-nondirectory tmp-name2))))))
+           ;; vc-git uses an own process sentinel, Tramp's sentinel
+           ;; for flushing the cache isn't used.
+           (dired-uncache (concat (file-remote-p default-directory) "/"))
            (should (vc-registered (file-name-nondirectory tmp-name2)))))
  
        ;; Cleanup.
@@@ -1777,14 -1785,6 +1781,6 @@@ Several special characters do not work 
        (file-truename tramp-test-temporary-file-directory) nil
      (string-match "^HP-UX" (tramp-get-connection-property v "uname" ""))))
  
- (defun tramp--test-darwin-p ()
-   "Check, whether the remote host runs Mac OS X.
- Several special characters do not work properly there."
-   ;; We must refill the cache.  `file-truename' does it.
-   (with-parsed-tramp-file-name
-       (file-truename tramp-test-temporary-file-directory) nil
-     (string-match "^Darwin" (tramp-get-connection-property v "uname" ""))))
  (defun tramp--test-check-files (&rest files)
    "Run a simple but comprehensive test over every file in FILES."
    ;; We must use `file-truename' for the temporary directory, because
  (ert-deftest tramp-test31-special-characters-with-stat ()
    "Check special characters in file names.
  Use the `stat' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  (ert-deftest tramp-test31-special-characters-with-perl ()
    "Check special characters in file names.
  Use the `perl' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  (ert-deftest tramp-test31-special-characters-with-ls ()
    "Check special characters in file names.
  Use the `ls' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  
  (defun tramp--test-utf8 ()
    "Perform the test in `tramp-test32-utf8*'."
-   (tramp--instrument-test-case 10
    (let ((coding-system-for-read 'utf-8)
        (coding-system-for-write 'utf-8)
        (file-name-coding-system 'utf-8))
      (tramp--test-check-files
       (unless (tramp--test-hpux-p) "Γυρίστε το Γαλαξία με Ώτο Στοπ")
-      (unless (or (tramp--test-hpux-p) (tramp--test-darwin-p))
+      (unless (tramp--test-hpux-p)
         "أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت")
       "银河系漫游指南系列"
-      "Автостопом по гала́ктике"))))
+      "Автостопом по гала́ктике")))
  
  (ert-deftest tramp-test32-utf8 ()
    "Check UTF8 encoding in file names and file contents."
  (ert-deftest tramp-test32-utf8-with-stat ()
    "Check UTF8 encoding in file names and file contents.
  Use the `stat' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  (ert-deftest tramp-test32-utf8-with-perl ()
    "Check UTF8 encoding in file names and file contents.
  Use the `perl' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  (ert-deftest tramp-test32-utf8-with-ls ()
    "Check UTF8 encoding in file names and file contents.
  Use the `ls' command."
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
@@@ -2114,6 -2119,7 +2109,6 @@@ Such requests could arrive from timers
  process sentinels.  They shall not disturb each other."
    ;; Mark as failed until bug has been fixed.
    :expected-result :failed
 -  :tags '(:expensive-test)
    (skip-unless (tramp--test-enabled))
    (skip-unless
     (eq
  Since it unloads Tramp, it shall be the last test to run."
    ;; Mark as failed until all symbols are unbound.
    :expected-result (if (featurep 'tramp) :failed :passed)
 -  :tags '(:expensive-test)
    (when (featurep 'tramp)
      (unload-feature 'tramp 'force)
      ;; No Tramp feature must be left.
index b0f69bd9720e065e09cae2a4bd1260ccf18e20e9,dc184ea0d77cbeeacd6f24171b4355b78f2ba9f7..dc184ea0d77cbeeacd6f24171b4355b78f2ba9f7
@@@ -3,6 -3,9 +3,9 @@@
  
  setlock -n /tmp/getmail.lock && echo getmail isn\'t running
  
+ toto=$(grep hello foo |
+            wc)
  # adsgsdg
  
  if foo; then