]> code.delx.au - gnu-emacs/commitdiff
Merge from origin/emacs-25
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 24 Apr 2016 19:49:22 +0000 (12:49 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 24 Apr 2016 19:49:22 +0000 (12:49 -0700)
9daf1cf * etc/NEWS: Improve wording of vc-git-log-output-coding-syste...
0cd2e92 Don't kill ~/ if it's the top level directory
4f40f5f describe-char: fix insert char documentation
87ee542 (vc-git-mode-line-string): Don't use `replace-regexp-in-string'

1  2 
etc/NEWS
lisp/dired-aux.el
lisp/vc/vc-git.el

diff --combined etc/NEWS
index a03f74dec6f3c174c041fd94b095b082d4f56650,42f54f39eb65fb6364aad04dcc2c586ff2793fbe..3cf88c1539d4b0b415248a032072a1e42043f506
+++ b/etc/NEWS
@@@ -22,404 -22,6 +22,404 @@@ 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
 +
 +** The new option 'configure --enable-gcc-warnings=warn-only' causes
 +GCC to issue warnings without stopping the build.  This behavior is
 +now the default in developer builds.  As before, use
 +'--disable-gcc-warnings' to suppress GCC's warnings, and
 +'--enable-gcc-warnings' to stop the build if GCC issues warnings.
 +
 ++++
 +** The Emacs server now has socket-launching support.  This allows
 +socket based activation, where an external process like systemd can
 +invoke the Emacs server process upon a socket connection event and
 +hand the socket over to Emacs.  Emacs uses this socket to service
 +emacsclient commands.  This new functionality can be disabled with the
 +configure option '--disable-libsystemd'.
 +
 +** New configure option '--disable-build-details' attempts to build an
 +Emacs that is more likely to be reproducible; that is, if you build
 +and install Emacs twice, the second Emacs is a copy of the first.
 +Deterministic builds omit the build date from the output of the
 +emacs-version and erc-cmd-SV functions, and the leave the following
 +variables nil: emacs-build-system, emacs-build-time,
 +erc-emacs-build-time.
 +
 +** Emacs no longer works on IRIX.  We expect that Emacs users are not
 +affected by this, as SGI stopped supporting IRIX in December 2013.
 +
 +\f
 +* Startup Changes in Emacs 25.2
 +
 +\f
 +* Changes in Emacs 25.2
 +
 +--
 +** `process-attributes' on Darwin systems now return more information.
 +
 ++++
 +** A number of accessors for the value returned by 'file-attributes'
 +has been added.  They are: 'file-attribute-type',
 +'file-attribute-link-number', 'file-attribute-user-id',
 +'file-attribute-group-id', 'file-attribute-access-time',
 +'file-attribute-modification-time',
 +'file-attribute-status-change-time', 'file-attribute-size',
 +'file-attribute-modes', 'file-attribute-inode-number', and
 +'file-attribute-device-number'
 +
 ++++
 +** The new function 'buffer-hash' has been added, and can be used to
 +compute a fash, non-consing hash of the contents of a buffer.
 +
 +---
 +** 'fill-paragraph' no longer marks the buffer as changed unless it
 +actually changed something.
 +
 +---
 +** The locale language name 'ca' is now mapped to the language
 +environment 'Catalan', which has been added.
 +
 +---
 +** 'align-regexp' has a separate history for its interactive argument
 +'align-regexp' no longer shares its history with all other
 +history-less functions that use 'read-string'
 +
 ++++
 +** The networking code has been reworked so that it's more
 +asynchronous than it was (when specifying :nowait t in
 +'make-network-process').  How asynchronous it is varies based on the
 +capabilities of the system, but on a typical GNU/Linux system the DNS
 +resolution, the connection, and (for TLS streams) the TLS negotiation
 +are all done without blocking the main Emacs thread.  To get
 +asynchronous TLS, the TLS boot parameters have to be passed in (see
 +the manual for details).
 +
 +Certain process oriented functions (like 'process-datagram-address')
 +will block until socket setup has been performed.  The recommended way
 +to deal with asynchronous sockets is to avoid interacting with them
 +until they have changed status to "run".  This is most easily done
 +from a process sentinel.
 +
 +** 'make-network-process' and 'open-network-stream' sometimes allowed
 +:service to be an integer string (e.g., :service "993") and sometimes
 +required an integer (e.g., :service 993).  This difference has been
 +eliminated, and integer strings work everywhere.
 +
 +** 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.
 +
 ++++
 +** A second dir-local file (.dir-locals-2.el) is now accepted.
 +See the variable 'dir-locals-file-2' for more information.
 +
 +---
 +** International domain names (IDNA) are now encoded via the new
 +puny.el library, so that one can visit web sites with non-ASCII URLs.
 +
 ++++
 +** The new 'timer-list' command lists all active timers in a buffer
 +where you can cancel them with the 'c' command.
 +
 ++++
 +** New function 'read-multiple-choice' use to prompt for
 +multiple-choice questions, with a handy way to display help texts.
 +
 +\f
 +* Editing Changes in Emacs 25.2
 +
 ++++
 +** New bindings for 'query-replace-map'.
 +'undo', undo the last replacement; bound to 'u'.
 +'undo-all', undo all replacements; bound to 'U'.
 +
 +\f
 +* Changes in Specialized Modes and Packages in Emacs 25.2
 +
 +** Compilation mode
 +
 +---
 +*** Messages from CMake are now recognized.
 +
 +** Dired
 +
 ++++
 +*** In wdired, when editing files to contain slash characters,
 +the resulting directories are automatically created.  Whether
 +to do this or not is controlled by the
 +'wdired-create-parent-directories' variable.
 +
 ++++
 +*** 'W' is now bound to 'browse-url-of-dired-file', and is useful for
 +viewing HTML files and the like.
 +
 +** eww
 +
 ++++
 +*** A new 's' command for switching to another eww buffer via the minibuffer.
 +
 +---
 +*** The 'o' command ('shr-save-contents') has moved to 'O' to avoid collision
 +with the 'o' command from 'image-map'.
 +
 ++++
 +*** 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.
 +
 +---
 +*** Images that are being loaded are now marked with grey
 +"placeholder" images of the size specified by the HTML.  They are then
 +replaced by the real images asynchronously, which will also now
 +respect width/height HTML specs (unless they specify widths/heights
 +bigger than the current window).
 +
 +** Images
 +
 ++++
 +*** Images are automatically scaled before displaying based on the
 +'image-scaling-factor' variable (if Emacs supports scaling the images
 +in question).
 +
 ++++
 +*** Images inserted with 'insert-image' and related functions get a
 +keymap put into the text properties (or overlays) that span the
 +image.  This keymap binds keystrokes for manipulating size and
 +rotation, as well as saving the image to a file.  These commands are
 +also available in 'image-mode'.
 +
 ++++
 +*** A new library for creating and manipulating SVG images has been
 +added.  See the "SVG Images" section in the lispref manual for
 +details.
 +
 ++++
 +*** New setf-able function to access and set image parameters is
 +provided: 'image-property'.
 +
 ++++
 +** The commands that add ChangeLog entries now prefer a VCS root directory
 +for the ChangeLog file, if none already exists.  Customize
 +'change-log-directory-files' to nil for the old behavior.
 +
 +---
 +** Support for non-string values of 'time-stamp-format' has been removed.
 +
 +** Message
 +
 +---
 +*** `message-use-idna' now defaults to t (because Emacs comes with
 +built-in IDNA support now).
 +
 +---
 +*** The 'message-valid-fqdn-regexp' variable has been removed, since
 +there are now top-level domains added all the time.  Message will no
 +longer warn about sending emails to top-level domains it hasn't heard
 +about.
 +
 +*** 'message-beginning-of-line' (bound to C-a) understands folded headers.
 +In 'visual-line-mode' it will look for the true beginning of a header
 +while in non-'visual-line-mode' it will move the point to the indented
 +header's value.
 +
 +** Tramp
 +
 ++++
 +*** New connection method "sg", which allows to edit files under
 +different group ID.
 +
 ++++
 +*** New connection method "doas" for OpenBSD hosts.
 +
 +---
 +** 'auto-revert-use-notify' is set back to t in 'global-auto-revert-mode'.
 +
 +** CSS mode
 +
 +---
 +*** Support for completing attribute values and bang-rules using the
 +'completion-at-point' command.
 +
 ++++
 +** Emacs now supports character name escape sequences in character and
 +string literals.  The syntax variants \N{character name} and
 +\N{U+code} are supported.
 +
 ++++
 +** Prog mode has some support for multi-mode indentation.
 +This allows better indentation support in modes that support multiple
 +programming languages in the same buffer, like literate programming
 +environments or ANTLR programs with embedded Python code.
 +
 +A major mode can provide indentation context for a sub-mode through
 +the 'prog-indentation-context' variable.  To support this, modes that
 +provide indentation should use 'prog-widen' instead of 'widen' and
 +'prog-first-column' instead of a literal zero.  See the node
 +"Mode-Specific Indent" in the ELisp manual for more details.
 +
 +** ERC
 +
 +*** New variable 'erc-default-port-tls' used to connect to TLS IRC
 +servers.
 +
 +** URL
 +
 ++++
 +*** The new function 'url-cookie-delete-cookie' can be used to
 +programmatically delete all cookies, or cookies from a specific
 +domain.
 +
 +*** The URL package now support https over proxies supporting CONNECT.
 +
 ++++
 +*** `url-user-agent' now defaults to `default', and the User-Agent
 +string is computed dynamically based on `url-privacy-level'.
 +
 +** VC and related modes
 +
 +---
 +*** The VC state indicator in the mode line now defaults to more
 +colorful faces to make it more obvious to the user what the state is.
 +See the 'vc-faces' customization group.
 +
 +\f
 +* New Modes and Packages in Emacs 25.2
 +
 +\f
 +* Incompatible Lisp Changes in Emacs 25.2
 +
 ++++
 +** Resizing a frame no longer runs 'window-configuration-change-hook'.
 +Put your function on 'window-size-change-functions' instead.
 +
 +** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term
 +mode to send the same escape sequences that xterm does.  This makes
 +things like forward-word in readline work.
 +
 +---
 +** hideshow mode got four key bindings that are analogous to outline
 +mode bindings: 'C-c @ C-a',  'C-c @ C-t',  'C-c @ C-d', and 'C-c @ C-e.'
 +
 +** The grep/rgrep/lgrep functions will now ask about saving files
 +before running.  This is controlled by the 'grep-save-buffers'
 +variable.
 +
 +\f
 +* Lisp Changes in Emacs 25.2
 +
 +** New var syntax-ppss-table to control the syntax-table used in syntax-ppss
 +
 +** Autoload files can be generated without timestamps,
 +by setting 'autoload-timestamps' to nil.
 +FIXME As an experiment, nil is the current default.
 +If no insurmountable problems before next release, it can stay that way.
 +
 +** 'ert-with-function-mocked' of 'ert-x package allows mocking of functions
 +in unit tests.
 +
 +---
 +** 'gnutls-boot' now takes a parameter :complete-negotiation that says
 +that negotiation should complete even on non-blocking sockets.
 +
 ++++
 +** New functions 'window-pixel-width-before-size-change' and
 +'window-pixel-height-before-size-change' allow to detect which window
 +changed size when 'window-size-change-functions' are run.
 +
 ++++
 +** New function 'display-buffer-reuse-mode-window' is an action function
 +suitable for use in 'display-buffer-alist'. For example, to avoid creating
 +a new window when opening man pages when there's already one, use
 +(add-to-list 'display-buffer-alist
 +     '("\\`\\*Man .*\\*\\'" .
 +       (display-buffer-reuse-mode-window
 +        (inhibit-same-window . nil)
 +        (mode . Man-mode))))
 +
 +---
 +** There is now a new variable 'flyspell-sort-corrections-function'
 +that allows changing the way corrections are sorted.
 +
 +---
 +** The new command 'fortune-message' has been added, which displays
 +fortunes in the echo area.
 +
 ++++
 +** New function 'func-arity' returns information about the argument list
 +of an arbitrary function.
 +This is a generalization of 'subr-arity' for functions that are not
 +built-in primitives.  We recommend using this new function instead of
 +'subr-arity'.
 +
 ++++
 +** 'parse-partial-sexp' state has a new element.  Element 10 is
 +non-nil when the last character scanned might be the first character
 +of a two character construct, i.e. a comment delimiter or escaped
 +character.  Its value is the syntax of that last character.
 +
 ++++
 +** 'parse-partial-sexp''s state, element 9, has now been confirmed as
 +permanent and documented, and may be used by Lisp programs.  Its value
 +is a list of currently open parenthesis positions, starting with the
 +outermost parenthesis.
 +
 +---
 +** 'read-color' will now display the color names using the color itself
 +as the background color.
 +
 +** The function 'redirect-debugging-output' now works on platforms
 +other than GNU/Linux.
 +
 ++++
 +** The new function 'string-version-lessp' compares strings by
 +interpreting consecutive runs of numerical characters as numbers, and
 +compares their numerical values.  According to this predicate,
 +"foo2.png" is smaller than "foo12.png".
 +
 ++++
 +** New functions 'sxhash-eq' and 'sxhash-eql' return hash codes of a
 +Lisp object suitable for use with 'eq' and 'eql' correspondingly.  If
 +two objects are 'eq' ('eql'), then the result of 'sxhash-eq'
 +('sxhash-eql') on them will be the same.
 +
 ++++
 +** Function 'sxhash' has been renamed to 'sxhash-equal' for
 +consistency with the new functions.  For compatibility, 'sxhash'
 +remains as an alias to 'sxhash-equal'.
 +
 ++++
 +** Time conversion functions that accept a time zone rule argument now
 +allow it to be OFFSET or a list (OFFSET ABBR), where the integer
 +OFFSET is a count of seconds east of Universal Time, and the string
 +ABBR is a time zone abbreviation.  The affected functions are
 +'current-time-string', 'current-time-zone', 'decode-time',
 +'format-time-string', and 'set-time-zone-rule'.
 +
 +\f
 +* Changes in Emacs 25.2 on Non-Free Operating Systems
 +
 +** Intercepting hotkeys on Windows 7 and later now works better.
 +The new keyboard hooking code properly grabs system hotkeys such as
 +Win-* and Alt-TAB, in a way that Emacs can get at them before the
 +system.  This makes the 'w32-register-hot-key' functionality work
 +again on all versions of MS-Windows starting with Windows 7.  On
 +Windows NT and later you can now register any hotkey combination.  (On
 +Windows 9X, the previous limitations, spelled out in the Emacs manual,
 +still apply.)
 +
  \f
  * Installation Changes in Emacs 25.1
  
@@@ -1387,13 -989,13 +1387,13 @@@ background or to the foreground
  
  ---
  *** New options for customizing encoding of Git commit log messages.
- The new options `vc-git-commits-coding-system' and
- `vc-git-log-output-coding-system' allow to customize the encoding of
- the log messages sent to Git when committing, and the decoding of the
- log messages read from Git history commands.  Both default to UTF-8;
- if you customize them, make sure they are consistent with the Git
config variables i18n.commitEncoding and i18n.logOutputEncoding.
- (`vc-git-commits-coding-system' existed previously, but was a
+ The new user options 'vc-git-commits-coding-system' and
+ 'vc-git-log-output-coding-system' specify the encoding of log messages
+ sent to Git when committing, and the decoding of log messages read
+ from Git history commands.  These options default to UTF-8; if
+ customized, they should be consistent with the Git config variables
+ i18n.commitEncoding and i18n.logOutputEncoding.
+ ('vc-git-commits-coding-system' existed previously, but was a
  variable, not a user option.)
  
  +++
diff --combined lisp/dired-aux.el
index aafceeaa9e0791588a6892550f9495155ae85132,08db1877f1ac4645dab5b97214607a8b83459ea8..b23b04a45fa0597911b8c939dfd905ee3838710a
@@@ -39,7 -39,6 +39,7 @@@
  ;; We need macros in dired.el to compile properly,
  ;; and we call subroutines in it too.
  (require 'dired)
 +(require 'cl-lib)  ; for cl-mapcan
  
  (defvar dired-create-files-failures nil
    "Variable where `dired-create-files' records failing file names.
@@@ -730,52 -729,26 +730,52 @@@ can be produced by `dired-get-marked-fi
         (command (if sequentially
                      (substring command 0 (match-beginning 0))
                    command))
 +         (parallel-in-background
 +          (and in-background (not sequentially) (not (eq system-type 'ms-dos))))
 +         (w32-shell (and (fboundp 'w32-shell-dos-semantics)
 +                         (w32-shell-dos-semantics)))
 +         ;; The way to run a command in background in Windows shells
 +         ;; is to use the START command.  The /B switch means not to
 +         ;; create a new window for the command.
 +         (cmd-prefix (if w32-shell "start /b " ""))
 +         ;; Windows shells don't support chaining with ";", they use
 +         ;; "&" instead.
 +         (cmd-sep (if (and (not w32-shell) (not parallel-in-background))
 +                      ";"
 +                    "&"))
         (stuff-it
          (if (or (string-match-p dired-star-subst-regexp command)
                  (string-match-p dired-quark-subst-regexp command))
              (lambda (x)
 -              (let ((retval command))
 +              (let ((retval (concat cmd-prefix command)))
                  (while (string-match
                          "\\(^\\|[ \t]\\)\\([*?]\\)\\([ \t]\\|$\\)" retval)
                    (setq retval (replace-match x t t retval 2)))
                  retval))
 -          (lambda (x) (concat command dired-mark-separator x)))))
 +          (lambda (x) (concat cmd-prefix command dired-mark-separator x)))))
      (concat
 -     (if on-each
 -       (mapconcat stuff-it (mapcar 'shell-quote-argument file-list)
 -                  (if (and in-background (not sequentially)) "&" ";"))
 -       (let ((files (mapconcat 'shell-quote-argument
 -                             file-list dired-mark-separator)))
 -       (if (> (length file-list) 1)
 -           (setq files (concat dired-mark-prefix files dired-mark-postfix)))
 -       (funcall stuff-it files)))
 -     (if in-background "&" ""))))
 +     (cond (on-each
 +            (format "%s%s"
 +                    (mapconcat stuff-it (mapcar 'shell-quote-argument file-list)
 +                               cmd-sep)
 +                    ;; POSIX shells running a list of commands in the background
 +                    ;; (LIST = cmd_1 & [cmd_2 & ... cmd_i & ... cmd_N &])
 +                    ;; return once cmd_N ends, i.e., the shell does not
 +                    ;; wait for cmd_i to finish before executing cmd_i+1.
 +                    ;; That means, running (shell-command LIST) may not show
 +                    ;; the output of all the commands (Bug#23206).
 +                    ;; Add 'wait' to force those POSIX shells to wait until
 +                    ;; all commands finish.
 +                    (or (and parallel-in-background (not w32-shell)
 +                             "&wait")
 +                        "")))
 +           (t
 +            (let ((files (mapconcat 'shell-quote-argument
 +                                    file-list dired-mark-separator)))
 +              (when (cdr file-list)
 +                (setq files (concat dired-mark-prefix files dired-mark-postfix)))
 +              (funcall stuff-it files))))
 +     (or (and in-background "&") ""))))
  
  ;; This is an extra function so that it can be redefined by ange-ftp.
  ;;;###autoload
@@@ -928,7 -901,6 +928,7 @@@ command with a prefix argument (the val
      ("\\.bz2\\'" "" "bunzip2")
      ("\\.xz\\'" "" "unxz")
      ("\\.zip\\'" "" "unzip -o -d %o %i")
 +    ("\\.7z\\'" "" "7z x -aoa -o%o %i")
      ;; This item controls naming for compression.
      ("\\.tar\\'" ".tgz" nil)
      ;; This item controls the compression of directories
@@@ -2514,8 -2486,8 +2514,8 @@@ Lower levels are unaffected.
         (cur-dir (dired-current-directory))
         (cons (assoc-string cur-dir dired-switches-alist))
         buffer-read-only)
-     (if (equal cur-dir default-directory)
-       (error "Attempt to kill top level directory"))
+     (when (equal cur-dir (expand-file-name default-directory))
+       (error "Attempt to kill top level directory"))
      (prog1
        (if remember-marks (dired-remember-marks beg end))
        (delete-region beg end)
@@@ -2800,7 -2772,7 +2800,7 @@@ instead.
  
  ;; Local Variables:
  ;; byte-compile-dynamic: t
 -;; generated-autoload-file: "dired.el"
 +;; generated-autoload-file: "dired-loaddefs.el"
  ;; End:
  
  ;;; dired-aux.el ends here
diff --combined lisp/vc/vc-git.el
index 2fd84f102f8fdbfb4c67b10ddfd89caab0ddda5a,5d06bf7f3572c18003fff47a412750215834b8dd..8568a94bbdbe29f282474781f2e8543e26d47ae0
@@@ -284,7 -284,7 +284,7 @@@ Should be consistent with the Git confi
           (def-ml (vc-default-mode-line-string 'Git file))
           (help-echo (get-text-property 0 'help-echo def-ml))
           (face   (get-text-property 0 'face def-ml)))
-     (propertize (replace-regexp-in-string (concat rev "\\'") disp-rev def-ml t t)
+     (propertize (concat (substring def-ml 0 4) disp-rev)
                  'face face
                  'help-echo (concat help-echo "\nCurrent revision: " rev))))
  
@@@ -1005,9 -1005,7 +1005,9 @@@ or BRANCH^ (where \"^\" can be repeated
      (goto-char (point-min))
      (unless (eobp)
        ;; Indent the expanded log entry.
 -      (indent-region (point-min) (point-max) 2)
 +      (while (re-search-forward "^  " nil t)
 +        (replace-match "")
 +        (forward-line))
        (buffer-string))))
  
  (defun vc-git-region-history (file buffer lfrom lto)