commit 1bab3cefc133e06aaf4a48efb1623d1b458ab212 (HEAD, refs/remotes/origin/master) Author: Tassilo Horn Date: Mon Oct 26 08:01:18 2015 +0100 Fix infinite loop in sh-script's SMIE code * lisp/progmodes/sh-script.el (sh-smie-sh-forward-token): Fix infinite loop (bug#21747). diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index fbb4a90..baed27b 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1920,10 +1920,11 @@ Does not preserve point." ;; Pretend the here-document is a "newline representing a ;; semi-colon", since the here-doc otherwise covers the newline(s). ";") - (let ((semi (sh-smie--newline-semi-p))) - (forward-line 1) - (if (or semi (eobp)) ";" - (sh-smie-sh-forward-token)))) + (unless (eobp) + (let ((semi (sh-smie--newline-semi-p))) + (forward-line 1) + (if (or semi (eobp)) ";" + (sh-smie-sh-forward-token))))) (forward-comment (point-max)) (cond ((looking-at "\\\\\n") (forward-line 1) (sh-smie-sh-forward-token)) commit 3cdeda60c5c1c8e75aa2bbd7efa866a55ec2d150 Author: Artur Malabarba Date: Mon Oct 26 01:38:48 2015 +0000 * lisp/isearch.el (search-default-regexp-mode): Revert to nil Character-fold search _still_ doesn't play well with lax-whitespace. So disable it by default (again) for now. diff --git a/lisp/isearch.el b/lisp/isearch.el index 3b836e4..a1ce4f1 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -222,7 +222,7 @@ Default value, nil, means edit the string instead." (autoload 'character-fold-to-regexp "character-fold") -(defcustom search-default-regexp-mode #'character-fold-to-regexp +(defcustom search-default-regexp-mode nil "Default mode to use when starting isearch. Value is nil, t, or a function. commit 6b5fdca71696a513a9dcd24a12f9de96788a523a Author: Artur Malabarba Date: Mon Oct 26 00:51:02 2015 +0000 * lisp/isearch.el: No visual feedback for default search mode During an isearch where character-folding is the default, we don't want to take up minibuffer space just to tell the user that "Char-fold " is on. The same goes for other modes, if the user changes the default. In contrast, if the user toggles OFF the default mode, they should see "Literal", to distinguish it from the default mode. (isearch--describe-regexp-mode): Return "" if describing the default mode, and return "literal " if describing a plain search and it is not default. diff --git a/lisp/isearch.el b/lisp/isearch.el index 3f8ff7a..3b836e4 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1783,7 +1783,6 @@ replacements from Isearch is `M-s w ... M-%'." isearch-string (concat "Query replace" (isearch--describe-regexp-mode (or delimited isearch-regexp-function) t) - (if isearch-regexp " regexp" "") (if backward " backward" "") (if (and transient-mark-mode mark-active) " in region" "")) isearch-regexp) @@ -2533,12 +2532,19 @@ If there is no completion possible, say so and continue searching." "Make a string for describing REGEXP-FUNCTION. If SPACE-BEFORE is non-nil, put a space before, instead of after, the word mode." + (when (eq regexp-function t) + (setq regexp-function #'word-search-regexp)) (let ((description - (cond ((and (symbolp regexp-function) - (get regexp-function 'isearch-message-prefix)) - (get regexp-function 'isearch-message-prefix)) - (regexp-function "word ") - (t "")))) + ;; Don't use a description on the default search mode. + (cond ((equal regexp-function search-default-regexp-mode) "") + (regexp-function + (and (symbolp regexp-function) + (or (get regexp-function 'isearch-message-prefix) + ""))) + (isearch-regexp "regexp ") + ;; We're in literal mode. If the default mode is not + ;; literal, then describe it. + ((functionp search-default-regexp-mode) "literal ")))) (if space-before ;; Move space from the end to the beginning. (replace-regexp-in-string "\\(.*\\) \\'" " \\1" description) @@ -2574,7 +2580,6 @@ the word mode." isearch-filter-predicate) prefix) (isearch--describe-regexp-mode isearch-regexp-function) - (if isearch-regexp "regexp " "") (cond (multi-isearch-file-list "multi-file ") (multi-isearch-buffer-list "multi-buffer ") commit 207f235e33ce9226d4004b47ccef89b3ea3c7fdb Author: Artur Malabarba Date: Sat Oct 24 23:43:06 2015 +0100 * test/automated/simple-test.el: New file Define tests for `newline' and `open-line'. diff --git a/test/automated/simple-test.el b/test/automated/simple-test.el new file mode 100644 index 0000000..a9c4d67 --- /dev/null +++ b/test/automated/simple-test.el @@ -0,0 +1,183 @@ +;;; simple-test.el --- Tests for simple.el -*- lexical-binding: t; -*- + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Artur Malabarba + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(require 'ert) + +(defmacro simple-test--dummy-buffer (&rest body) + (declare (indent 0) + (debug t)) + `(with-temp-buffer + (emacs-lisp-mode) + (insert "(a b") + (save-excursion (insert " c d)")) + ,@body + (cons (buffer-substring (point-min) (point)) + (buffer-substring (point) (point-max))))) + + + +;;; `newline' +(ert-deftest newline () + (should-error (newline -1)) + (should (equal (simple-test--dummy-buffer (newline 1)) + '("(a b\n" . " c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-mode -1) + (call-interactively #'newline)) + '("(a b\n" . " c d)"))) + (should (equal (simple-test--dummy-buffer + (let ((current-prefix-arg 5)) + (call-interactively #'newline))) + '("(a b\n\n\n\n\n" . " c d)"))) + (should (equal (simple-test--dummy-buffer (newline 5)) + '("(a b\n\n\n\n\n" . " c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-char 1) + (newline 1)) + '("(a b \n" . "c d)")))) + +(ert-deftest newline-indent () + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (newline 1)) + '("(a b\n" . " c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (newline 1 'interactive)) + '("(a b\n " . "c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (let ((current-prefix-arg nil)) + (call-interactively #'newline) + (call-interactively #'newline))) + '("(a b\n\n " . "c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (newline 5 'interactive)) + '("(a b\n\n\n\n\n " . "c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (let ((current-prefix-arg 5)) + (call-interactively #'newline))) + '("(a b\n\n\n\n\n " . "c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-char 1) + (electric-indent-local-mode 1) + (newline 1 'interactive)) + '("(a b\n " . "c d)")))) + + +;;; `open-line' +(ert-deftest open-line () + (should-error (open-line -1)) + (should-error (open-line)) + (should (equal (simple-test--dummy-buffer (open-line 1)) + '("(a b" . "\n c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-mode -1) + (call-interactively #'open-line)) + '("(a b" . "\n c d)"))) + (should (equal (simple-test--dummy-buffer + (let ((current-prefix-arg 5)) + (call-interactively #'open-line))) + '("(a b" . "\n\n\n\n\n c d)"))) + (should (equal (simple-test--dummy-buffer (open-line 5)) + '("(a b" . "\n\n\n\n\n c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-char 1) + (open-line 1)) + '("(a b " . "\nc d)")))) + +(ert-deftest open-line-margin-and-prefix () + (should (equal (simple-test--dummy-buffer + (let ((left-margin 10)) + (open-line 3))) + '("(a b" . "\n\n\n c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-line 0) + (let ((left-margin 2)) + (open-line 1))) + '(" " . "\n (a b c d)"))) + (should (equal (simple-test--dummy-buffer + (let ((fill-prefix "- - ")) + (open-line 1))) + '("(a b" . "\n c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-line 0) + (let ((fill-prefix "- - ")) + (open-line 1))) + '("- - " . "\n(a b c d)")))) + +(ert-deftest open-line-indent () + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (open-line 1)) + '("(a b" . "\n c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (open-line 1 'interactive)) + '("(a b" . "\n c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (let ((current-prefix-arg nil)) + (call-interactively #'open-line) + (call-interactively #'open-line))) + '("(a b" . "\n\n c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (open-line 5 'interactive)) + '("(a b" . "\n\n\n\n\n c d)"))) + (should (equal (simple-test--dummy-buffer + (electric-indent-local-mode 1) + (let ((current-prefix-arg 5)) + (call-interactively #'open-line))) + '("(a b" . "\n\n\n\n\n c d)"))) + (should (equal (simple-test--dummy-buffer + (forward-char 1) + (electric-indent-local-mode 1) + (open-line 1 'interactive)) + '("(a b" . "\n c d)")))) + +(ert-deftest open-line-hook () + (let* ((x 0) + (inc (lambda () (setq x (1+ x))))) + (simple-test--dummy-buffer + (add-hook 'post-self-insert-hook inc nil 'local) + (open-line 1)) + (should (= x 0)) + (simple-test--dummy-buffer + (add-hook 'post-self-insert-hook inc nil 'local) + (open-line 1 'interactive)) + (should (= x 1)) + + (unwind-protect + (progn + (add-hook 'post-self-insert-hook inc) + (simple-test--dummy-buffer + (open-line 1)) + (should (= x 1)) + (simple-test--dummy-buffer + (open-line 10 'interactive)) + (should (= x 2))) + (remove-hook 'post-self-insert-hook inc)))) + +(provide 'simple-test) +;;; simple-test.el ends here commit bd4f04f86cea893e3369decdda074a4898491518 Author: Artur Malabarba Date: Sat Oct 24 22:26:27 2015 +0100 * lisp/simple.el (open-line): Integrate with electric-indent-mode Also run `post-self-insert-hook' when called interactively. diff --git a/lisp/simple.el b/lisp/simple.el index 5b05037..338a060 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -458,17 +458,27 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." (put-text-property from (point) 'rear-nonsticky (cons 'hard sticky))))) -(defun open-line (n) +(declare-function electric-indent-just-newline "electric") +(defun open-line (n &optional interactive) "Insert a newline and leave point before it. +If `electric-indent-mode' is enabled, indent the new line if it's +not empty. If there is a fill prefix and/or a `left-margin', insert them on the new line. If the old line would have been blank, insert them on the old line as well. + +With arg N, insert N newlines. +A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." + (interactive "*p\np") (let* ((do-fill-prefix (and fill-prefix (bolp))) (do-left-margin (and (bolp) (> (current-left-margin) 0))) (loc (point-marker)) - ;; Don't expand an abbrev before point. + ;; Don't expand an abbrev before point. (abbrev-mode nil)) - (newline n) + (if (and interactive + (looking-at-p "[[:space:]]*$")) + (electric-indent-just-newline n) + (newline n interactive)) (goto-char loc) (while (> n 0) (cond ((bolp) commit 6939896e2ffe2e742954c14bba6129af456f0857 Author: Artur Malabarba Date: Sat Oct 24 22:24:09 2015 +0100 * lisp/simple.el (open-line): Fix docstring Also explain apparently redundant line. diff --git a/lisp/simple.el b/lisp/simple.el index 8acb683..5b05037 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -460,10 +460,9 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." (defun open-line (n) "Insert a newline and leave point before it. -If there is a fill prefix and/or a `left-margin', insert them -on the new line if the line would have been blank. -With arg N, insert N newlines." - (interactive "*p") +If there is a fill prefix and/or a `left-margin', insert them on +the new line. If the old line would have been blank, insert them +on the old line as well. (let* ((do-fill-prefix (and fill-prefix (bolp))) (do-left-margin (and (bolp) (> (current-left-margin) 0))) (loc (point-marker)) @@ -478,6 +477,7 @@ With arg N, insert N newlines." (forward-line 1) (setq n (1- n))) (goto-char loc) + ;; Necessary in case a margin or prefix was inserted. (end-of-line))) (defun split-line (&optional arg) commit 61640f6fbccf9e920b579839bd6211cc33309eae Author: Thomas Fitzsimmons Date: Sun Oct 25 17:00:37 2015 -0400 Sync with soap-client repository, version 3.0.1 * soap-client.el, soap-inspect.el: Bump version to 3.0.1. * soap-client.el, soap-inspect.el: Update home page. * soap-client.el, soap-inspect.el: Bump version to 3.0.0. * soap-inspect.el: Merge in changes from Emacs master branch. * soap-client.el: Merge in changes from Emacs master branch. * soap-inspect.el: Shorten first line description. * soap-client.el: Make a small whitespace fix. * soap-inspect.el: Update copyright years. * soap-client.el (soap-encoded-namespaces): Move above first use in soap-encode-xs-element. * soap-client.el (soap-type-is-array?): new defun (soap-encode-xs-element): handle array elements in this function (soap-encode-xs-complex-type): flag error if asked to encode an array type, this is handled in `soap-encode-xs-element' * soap-inspect.el (soap-inspect-xs-attribute-group): Do not print type for attribute group. * soap-inspect.el (soap-sample-value-for-xs-attribute-group): New function. (soap-inspect-xs-attribute-group): Likewise. * soap-inspect.el (soap-resolve-references-for-xs-attribute-group): Resolve references of attributes in an attribute group. * soap-client.el (soap-decode-xs-attributes): Process attribute type directly, not through soap-wsdl-get. * soap-client.el (soap-xs-parse-attribute): Leave reference nil if reference attribute is nil. * soap-client.el (soap-resolve-references-for-xs-attribute): Convert XML schema attributes to xsd:string. * soap-inspect.el (soap-sample-value-for-xs-attribute): New function. (soap-sample-value-for-xs-simple-type): Prepend attributes to result. (soap-sample-value-for-xs-complex-type): Likewise. (soap-inspect-xs-attribute): New function. (soap-inspect-xs-simple-type): Print attributes. (soap-inspect-xs-complex-type): Likewise. * soap-inspect.el (soap-resolve-references-for-xs-simple-type): Resolve references for attributes. (soap-resolve-references-for-xs-complex-type): Likewise. * soap-client.el (soap-xml-node-find-matching-child): Rename from soap-xml-node-first-child. (soap-xs-parse-attribute): Call soap-xml-node-find-matching-child. (soap-xs-parse-simple-type): Likewise. * soap-client.el (soap-invoke-async): Add error checking. * soap-client.el (soap-invoke-internal): New function. (soap-invoke-async): Call soap-invoke-internal. (soap-invoke): Likewise. * soap-client.el (soap-invoke-async): Ensure buffer passed to url-retrieve callback is killed. * soap-client.el (soap-parse-wsdl-phase-validate-node): Rename function. (soap-parse-wsdl-phase-fetch-imports): Likewise. (soap-parse-wsdl-phase-parse-schema): Likewise. (soap-parse-wsdl-phase-fetch-schema): Likewise. (soap-parse-wsdl-phase-finish-parsing): Likewise. (soap-parse-wsdl): Update calls. * soap-client.el (soap-invoke-async): Fix callback invocation. * soap-client.el (soap-invoke-async): New function. (soap-invoke): Reimplement using soap-invoke-async. * soap-client.el (soap-parse-server-response): Improve docstring. (soap-invoke): Inline call to soap-parse-server-response. * soap-client.el (soap-decode-xs-complex-type): Prevent incorrect warning. * soap-client.el (soap-parse-server-response): Rename soap-process-url-response. Destroy the mime part. (soap-invoke): Call soap-parse-server-response. * soap-client.el: Update copyright date. * soap-client.el: Fix checkdoc issues. * soap-client.el: Fix indentation and long lines. * soap-client.el (soap-time-format): Remove variable. (soap-encode-xs-basic-type): Simplify date-time format detection. (soap-decode-xs-basic-type): Remove soap-time-format support. * soap-client.el (soap-process-url-response): New function. (soap-fetch-xml-from-url): Call soap-process-url-response. (soap-parse-wsdl-phase-1): New function. (soap-parse-wsdl-phase-2): Likewise. (soap-parse-wsdl-phase-3): Likewise. (soap-parse-wsdl-phase-4): Likewise. (soap-parse-wsdl-phase-5): Likewise. (soap-parse-wsdl): Call phase functions. * soap-client.el (soap-decode-xs-basic-type): Remove one-argument and call. * soap-client.el (soap-decode-date-time): Improve docstring. * soap-client.el (soap-xmlschema-imports): Remove variable. (soap-parse-schema): Add wsdl argument. Look up XML schema imports from wsdl. (soap-load-wsdl): Do not set soap-xmlschema-imports. (soap-parse-wsdl): Get XML schema imports from wsdl. * soap-client.el (soap-current-file): Remove variable. (soap-wsdl): Add current-file slot. (soap-fetch-xml-from-url): Add wsdl argument. Look up current file from wsdl. (soap-fetch-xml-from-file): Likewise. (soap-fetch-xml): Likewise. (soap-load-wsdl): Always create wsdl object first. (soap-parse-wsdl): Pass wsdl to soap-fetch-xml. * soap-client.el (soap-xs-element): Add is-group slot. (soap-xs-parse-element): Set is-group slot. (soap-resolve-references-for-xs-element): Skip is-group elements. (soap-xs-complex-type): Add is-group slot. (soap-xs-parse-complex-type): Set is-group slot. (soap-xs-parse-sequence): Parse xsd:group elements. (soap-resolve-references-for-xs-complex-type): Inline elements from referenced xsd:group nodes. (soap-parse-schema): Parse xsd:group nodes. * soap-client.el (soap-invoke): Don't set url-http-version to 1.0. * soap-client.el (soap-decode-xs-complex-type): Allow choice nodes to accept multiple values. * soap-client.el (soap-encode-body): Check parameters argument for extra header values. * soap-client.el (soap-well-known-xmlns): Add wsa and wsaw tags. (soap-operation): Add input-action and output-action slots. (soap-parse-operation): Parse wsaw:Action nodes. (soap-encode-body): Encode service-url for WS-Addressing. (soap-create-envelope): Likewise. (soap-invoke): Update soap-create-envelope call to provide service-url argument. * soap-client.el (soap-decode-xs-complex-type): Support xsi:type override attribute. (soap-decode-array): Likewise. * soap-client.el (soap-parse-schema): Handle location attribute. * soap-client.el (soap-decode-type): Check that multiRef matched validation regexp. * soap-client.el (soap-encode-xs-simple-type): Encode xsd:list nodes. (soap-decode-xs-simple-type): Decode xsd:list nodes. * soap-client.el (soap-get-candidate-elements): Fix reference handling. * soap-client.el (soap-xs-simple-type): Add is-list slot. (soap-xs-parse-simple-type): Call soap-xs-add-list for xsd:list nodes. (soap-xs-add-list): New function. * soap-client.el (soap-encode-xs-element): When a boolean is expected, interpret nil as "false". * soap-client.el (soap-make-xs-basic-types): Add gYearMonth, gYear, gMonthDay, gDay and gMonth. * soap-client.el (soap-time-format): New variable. (soap-encode-xs-basic-type): Handle dateTime, time, date, gYearMonth, gYear, gMonthDay, gDay and gMonth. (soap-decode-date-time): New function. (soap-decode-xs-basic-type): Use soap-decode-date-time. * soap-client.el (soap-encode-xs-basic-type): Validate value after encoding. (soap-decode-xs-basic-type): Validate value before decoding. * soap-client.el (soap-validate-xs-basic-type): New function. (soap-validate-xs-simple-type): Call soap-validate-xs-basic-type. * soap-client.el (soap-xs-add-union): Append result to base instead of overwriting it. (soap-validate-xs-simple-type): Add union support. * soap-client.el (soap-xs-add-restriction): Translate pattern to Emacs regexp using xsdre-translate. (soap-validate-xs-simple-type): Validate value against pattern. * soap-client.el (soap-xs-add-union): Preserve WSDL order of inline simpleType nodes. (soap-decode-type): Handle union types. * soap-client.el (soap-decode-xs-attributes): Decode basic-type attributes. * soap-client.el (soap-get-xs-attributes-from-groups): renamed from soap-xs-attribute-group-consolidate, all callers updated (soap-get-xs-attributes): renamed from soap-xs-attributes-consolidate, all callers updated * soap-client.el (soap-xs-type): Add attribute-group slot. (soap-xs-attribute-group): New type. (soap-xs-parse-attribute-group): New function. (soap-resolve-references-for-xs-attribute-group): Likewise. (soap-xs-add-extension): Handle attribute groups. (soap-resolve-references-for-xs-simple-type): Likewise. (soap-xs-parse-complex-type): Likewise. (soap-xs-parse-extension-or-restriction): Likewise. (soap-resolve-references-for-xs-complex-type): Likewise. (soap-xs-attribute-group-consolidate): New function. (soap-xs-attributes-consolidate): Handle attribute groups. (soap-parse-schema): Likewise. * soap-client.el (soap-encode-xs-basic-type): Fix boolean encoding. * soap-client.el (soap-encode-xs-complex-type): Print ref element names in warnings. * soap-client.el (soap-decode-xs-complex-type): Fix splicing. * soap-client.el (soap-decode-xs-complex-type): Eliminate invalid warnings for choice types. * soap-client.el (soap-encode-xs-complex-type-attributes): Also encode base type attributes. * soap-client.el (soap-encode-xs-complex-type): Fix compilation warning. Print e-name in warnings, or element if e-name is nil. * soap-client.el (soap-xs-element): Add alternatives slot. (soap-xs-parse-element): Set substitution-group. (soap-resolve-references-for-xs-element): Populate alternatives slot. (soap-get-candidate-elements): New function. (soap-encode-xs-complex-type): Iterate through all candidate elements. Handle types with nil type indicator. Fix warning logic. * soap-client.el (soap-current-wsdl): moved declaration earlier in the file to prevent compiler warning. * soap-client.el (soap-node-optional): New function. (soap-node-multiple): Likewise. (soap-xs-parse-element): Call soap-node-optional and soap-node-multiple. (soap-xs-complex-type): Add optional? and multiple? slots. (soap-xml-get-children-fq): New function. (soap-xs-element-get-fq-name): Likewise. (soap-xs-complex-type-optional-p): Likewise. (soap-xs-complex-type-multiple-p): Likewise. (soap-xs-attributes-consolidate): Likewise. (soap-decode-xs-attributes): Likewise. (soap-decode-xs-complex-type): Decode types with nil type indicator. Support children that use local namespaces. Decode attributes. Add type considerations to optional? and multiple? warnings. * soap-client.el (soap-xs-parse-extension-or-restriction): Store parsed attributes. (soap-encode-xs-complex-type-attributes): Encode custom attributes. * soap-client.el (soap-encode-xs-complex-type-attributes): don't add the xsi:type attribute (Exchange refuses requests which have this attribute) * soap-client.el, soap-inspect.el: converted to lexical binding, corrected compiler warnings about unused function arguments and local variables. * soap-client.el (soap-decode-xs-complex-type): Handle nil type indicator. (soap-parse-envelope): Handle response headers. (soap-parse-response): Likewise. Only return non-nil decoded values. * soap-client.el (soap-validate-xs-simple-type): Return validated value. * soap-client.el (soap-xs-parse-element) (soap-xs-parse-simple-type) (soap-xs-parse-complex-type) (soap-parse-message) (soap-parse-operation): add the current namespace to the element being created (soap-resolve-references-for-xs-element) (soap-resolve-references-for-xs-simple-type) (soap-resolve-references-for-xs-complex-type) (soap-resolve-references-for-operation): resolve the namespace to the namespace tag (soap-make-wsdl): specify a namespace tag when creating the xsd and soapenc namespaces (soap-wsdl-resolve-references): don't update namespace tags in elements here (soap-parse-port-type): bind the urn: to soap-target-xmlns (soap-encode-body): don't add nil namespace tags to soap-encoded-namespaces * soap-inspect.el: use `soap-make-wsdl` to construct the object for registering the soap-inspect method.Make debbugs tests pass * soap-client.el (soap-decode-any-type): use soap-l2fq on the type name, also skip string only nodes when decoding a structure. (soap-xs-parse-complex-type): (BUG) dispatch parsing for choice types too (soap-encode-body): grab the header value from the param table * soap-client.el (soap-should-encode-value-for-xs-element): new function (soap-encode-xs-element): don't encode nil value unless needed * soap-client.el (soap-bound-operation): new slot `soap-body` (soap-parse-binding): parse the message parts required in the body (soap-encode-body): encode only the parts that are declared to be part of the body * soap-client.el (soap-encode-xs-element): use the fq name when writing out the tag. (soap-encode-body): remove hack that inserts the xmlns in the element attributes list. * soap-client.el (soap-xs-attribute): add "default" slot (soap-xs-parse-attribute): default slot is set from the XML "fixed" attribute. (soap-encode-xs-complex-type-attributes): encode any attributes that have a default value. Also, don't put the xsi:nil attribute when the complex type has no content anyway. * soap-client.el (soap-well-known-xmlns): add the xml namespace (soap-local-xmlns): start with the xml namespace (soap-xml-node-first-child): skip xsd:annotation nodes too (soap-make-xs-basic-types): more xsd types added (soap-encode-xs-basic-type, soap-decode-xs-basic-type): handle "language", "time", "date", "nonNegativeInteger" (soap-resolve-references-for-xs-element): don't signal an error if the element does not have a type. (soap-xs-parse-simple-type): subtypes are handled with ecase, added stum for xsd:list (soap-xs-add-union): call soap-l2fq on all union members (soap-xs-add-extension): call soap-l2fq on the base member (soap-resolve-references-for-xs-simple-type): don't signal an error if the simple type has no base. (soap-resolve-references-for-xs-simple-type): bugfix, call soap-wsdl-get on each type of the base * soap-client.el (soap-resolve-references-for-xs-attribute): referenced type can be eiher a simple type or a basic type (soap-xs-add-restriction) (soap-xs-parse-extension-or-restriction): use `soap-l2fq' on base (soap-make-xs-basic-types) (soap-encode-xs-basic-type, soap-decode-xs-basic-type): add support for more XMLSchema basic types (soap-current-file, soap-xmlschema-imports): new defvars (soap-parse-schema): add locations from xsd:import tags to `soap-xmlschema-imports' (soap-wsdl): make destructor private (soap-make-wsdl): new defun, SOAP-WSDL object constructor (soap-wsdl-add-alias): check if we try to replace aliases (soap-fetch-xml-from-url, soap-fetch-xml-from-file) (soap-fetch-xml): new defuns (soap-load-wsdl): updated to load the WSDL from either a file or an url (soap-load-wsdl-from-url): now an alias to `soap-load-wsdl' (soap-parse-wsdl): process wsdl:import tags and imports from `soap-xmlschema-imports' * soap-client.el (soap-l2wk): bugfix: call symbolp instead of symbol-name (soap-l2fq): make the name part always a string (soap-name-p): new defun, used for name tests * soap-inspect.el (soap-sample-value-for-xs-complex-type): supply sample values for choice types with a special tag * soap-client.el (soap-encode-xs-complex-type): handle anonymous elements correctly (soap-encode-value): accept nodes that have no namespace tag * soap-client.el (soap-invoke): encode the string for `url-request-data' as UTF-8. Fixes issue 16 Co-authored-by: Alexandru Harsanyi diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index 008bbf4..264a39c 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el @@ -5,10 +5,10 @@ ;; Author: Alexandru Harsanyi ;; Author: Thomas Fitzsimmons ;; Created: December, 2009 -;; Version: 3.0.0 +;; Version: 3.0.1 ;; Keywords: soap, web-services, comm, hypermedia ;; Package: soap-client -;; Homepage: http://code.google.com/p/emacs-soap-client +;; Homepage: https://github.com/alex-hhh/emacs-soap-client ;; This file is part of GNU Emacs. diff --git a/lisp/net/soap-inspect.el b/lisp/net/soap-inspect.el index 7182b79..f6c7da6 100644 --- a/lisp/net/soap-inspect.el +++ b/lisp/net/soap-inspect.el @@ -4,10 +4,10 @@ ;; Author: Alexandru Harsanyi ;; Created: October 2010 -;; Version: 3.0.0 +;; Version: 3.0.1 ;; Keywords: soap, web-services, comm, hypermedia ;; Package: soap-client -;; Homepage: http://code.google.com/p/emacs-soap-client +;; Homepage: https://github.com/alex-hhh/emacs-soap-client ;; This file is part of GNU Emacs. commit ecb069e2f6107aed8983323fb9dede76414b56d8 Author: Eli Zaretskii Date: Sun Oct 25 22:05:44 2015 +0200 * lisp/progmodes/grep.el (grep): Doc fix. (Bug#21754) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 452a42f..efecd21 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -731,21 +731,24 @@ This function is called from `compilation-filter-hook'." ;;;###autoload (defun grep (command-args) - "Run grep, with user-specified args, and collect output in a buffer. -While grep runs asynchronously, you can use \\[next-error] (M-x next-error), + "Run Grep with user-specified COMMAND-ARGS, collect output in a buffer. +While Grep runs asynchronously, you can use \\[next-error] (M-x next-error), or \\\\[compile-goto-error] in the *grep* \ -buffer, to go to the lines where grep found -matches. To kill the grep job before it finishes, type \\[kill-compilation]. +buffer, to go to the lines where Grep found +matches. To kill the Grep job before it finishes, type \\[kill-compilation]. + +Noninteractively, COMMAND-ARGS should specify the Grep command-line +arguments. For doing a recursive `grep', see the `rgrep' command. For running -`grep' in a specific directory, see `lgrep'. +Grep in a specific directory, see `lgrep'. This command uses a special history list for its COMMAND-ARGS, so you can easily repeat a grep command. -A prefix argument says to default the argument based upon the current -tag the cursor is over, substituting it into the last grep command -in the grep command history (or into `grep-command' if that history +A prefix argument says to default the COMMAND-ARGS based on the current +tag the cursor is over, substituting it into the last Grep command +in the Grep command history (or into `grep-command' if that history list is empty)." (interactive (progn commit 12941b99d16835b5de3f065545ebe6a0835a1d0f Author: Artur Malabarba Date: Sun Oct 25 14:34:18 2015 +0000 * src/keyboard.c (post-command-hook): Extend the docstring Mainly, explain how to use it without hanging Emacs, or giving the impression that it is hanging. Also mention `pre-command-hook'. (pre-command-hook): Mention `post-command-hook'. diff --git a/src/keyboard.c b/src/keyboard.c index 1a78f6a..4ea0f97 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -11374,14 +11374,26 @@ Buffer modification stores t in this variable. */); doc: /* Normal hook run before each command is executed. If an unhandled error happens in running this hook, the function in which the error occurred is unconditionally removed, since -otherwise the error might happen repeatedly and make Emacs nonfunctional. */); +otherwise the error might happen repeatedly and make Emacs nonfunctional. + +See also `pre-command-hook'. */); Vpre_command_hook = Qnil; DEFVAR_LISP ("post-command-hook", Vpost_command_hook, doc: /* Normal hook run after each command is executed. If an unhandled error happens in running this hook, the function in which the error occurred is unconditionally removed, since -otherwise the error might happen repeatedly and make Emacs nonfunctional. */); +otherwise the error might happen repeatedly and make Emacs nonfunctional. + +It is usually a bad idea to use this hook for expensive processing. +If unavoidable, `while-no-input' can be used avoid making Emacs +unresponsive while the user types. Furthermore, this hook is run +before redisplay, so the effect of the executed command won't be +displayed on the buffer until after the hook has finished (giving the +impression that Emacs is hanging). You can call `redisplay' inside +`while-no-input' to avoid this. + +See also `pre-command-hook'. */); Vpost_command_hook = Qnil; #if 0 commit 2a85bf6a8e27dafd1005505a43cf9c4aff0957ea Author: Artur Malabarba Date: Sun Oct 25 11:24:40 2015 +0000 * lisp/custom.el (custom-declare-variable): Shorten code again Without using pcase this time. We can't use pcase because it is loaded after custom in loadup.el. Also add a comment explaining this to future dummies like me. diff --git a/lisp/custom.el b/lisp/custom.el index c5d0e65..afff867 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -155,15 +155,14 @@ set to nil, as the value is no longer rogue." (unless (memq :group args) (custom-add-to-group (custom-current-group) symbol 'custom-variable)) (while args - (let ((arg (car args))) - (setq args (cdr args)) - (unless (symbolp arg) + (let ((keyword (pop args))) + (unless (symbolp keyword) (error "Junk in args %S" args)) - (let ((keyword arg) - (value (car args))) - (unless args - (error "Keyword %s is missing an argument" keyword)) - (setq args (cdr args)) + (unless args + (error "Keyword %s is missing an argument" keyword)) + (let ((value (pop args))) + ;; Can't use `pcase' because it is loaded after `custom.el' + ;; during bootstrap. See `loadup.el'. (cond ((eq keyword :initialize) (setq initialize value)) ((eq keyword :set) commit 551562513e304a38a0caa1b94d87cc39a1af7c18 Author: Juanma Barranquero Date: Sun Oct 25 15:00:58 2015 +0100 ; ChangeLog.2 fixes diff --git a/ChangeLog.2 b/ChangeLog.2 index e6a6796..d86ce38 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -20,14 +20,13 @@ 2015-10-24 Artur Malabarba - * lisp/isearch.el: Make character-fold search the default again + * lisp/isearch.el: Make character-fold search the default again. 2015-10-24 Artur Malabarba - * lisp/character-fold.el: Many improvements - + * lisp/character-fold.el: Many improvements. (character-fold-search-forward, character-fold-search-backward): - New command + New command. (character-fold-to-regexp): Remove lax-whitespace hack. (character-fold-search): Remove variable. Only isearch and query-replace use char-folding, and they both have their own @@ -35,25 +34,20 @@ 2015-10-24 Artur Malabarba - * lisp/isearch.el: Generalize definition of regexp-function toggles - + * lisp/isearch.el: Generalize definition of regexp-function toggles. (isearch-specify-regexp-function): New macro for specifying possible values of `isearch-regexp-function'. - (isearch-toggle-character-fold, isearch-toggle-symbol) (isearch-toggle-word): Define with `isearch-specify-regexp-function'. 2015-10-24 Artur Malabarba - * lisp/isearch.el (search-default-regexp-mode): New variable - + * lisp/isearch.el (search-default-regexp-mode): New variable. (isearch-mode): Use it. 2015-10-24 Artur Malabarba - * lisp/isearch.el: Delete redundant :group entries - - (search-exit-option, search-slow-window-lines) + * lisp/isearch.el (search-exit-option, search-slow-window-lines) (search-slow-speed, search-upper-case) (search-nonincremental-instead, search-whitespace-regexp) (search-invisible, isearch-hide-immediately) @@ -63,7 +57,7 @@ 2015-10-24 Artur Malabarba - * lisp/custom.el (custom-declare-variable): Shorten code a bit + * lisp/custom.el (custom-declare-variable): Shorten code a bit. 2015-10-24 Juanma Barranquero @@ -87,7 +81,7 @@ 2015-10-24 Juanma Barranquero - addpm.c: Replace existing entries, but do not create new ones + addpm.c: Replace existing registry entries, but do not create new ones * nt/addpm.c (add_registry): If the Emacs registry key exists, replace existing values from previous versions, but do not add new ones; the @@ -187,8 +181,6 @@ 2015-10-24 Tassilo Horn - Add support for tar.bz2 and tar.xz archives - * lisp/dired-aux.el (dired-compress-files-alist): Add support for tar.bz2 and tar.xz archives. @@ -209,15 +201,13 @@ Replace the old icon for Windows and Mac OSX * nt/icons/emacs.ico: - * nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns: Use the new - icons. + * nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns: + Use the new icons. 2015-10-23 Stephen Leake - `load-path' should contain only directory names - * lisp/emacs-lisp/package.el (package-autoload-ensure-default-file): - `load-path' should contain only directory names + `load-path' should contain only directory names. 2015-10-23 Nicolas Petton @@ -261,15 +251,16 @@ * etc/images/icons/hicolor/32x32/apps/emacs23.png: * etc/images/icons/hicolor/48x48/apps/emacs23.png: * etc/images/icons/hicolor/scalable/apps/emacs23.svg: - * etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg: Move - the old logo files to emacs23.*. + * etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg: + Move the old logo files to emacs23.*. * etc/images/icons/hicolor/128x128/apps/emacs.png: * etc/images/icons/hicolor/16x16/apps/emacs.png: * etc/images/icons/hicolor/24x24/apps/emacs.png: * etc/images/icons/hicolor/32x32/apps/emacs.png: * etc/images/icons/hicolor/48x48/apps/emacs.png: * etc/images/icons/hicolor/scalable/apps/emacs.svg: - * etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg: New files. + * etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg: + New files. * etc/images/icons/README: Update the copyright information. 2015-10-23 Eli Zaretskii @@ -282,7 +273,7 @@ 2015-10-23 Anders Lindgren - NextSten maximization and NSTRACE rewrite. + NextSten maximization and NSTRACE rewrite Full-height, full-width, and maximized windows now cover the entire screen (except the menu bar), including the part where the @@ -292,25 +283,23 @@ Made NonMaximized->FullWidth->FullHeight->NonMaximized restore the original size. - * nsterm.m (ns_menu_bar_height): New function, return height of + * src/nsterm.m (ns_menu_bar_height): New function, return height of the menu bar, or 0 when it's hidden. - * nsterm.m (constrain_frame_rect): New function for constraining a - frame. - * nsterm.m (ns_constrain_all_frames): Set frame size explicitly - rather than relying on the system doing it for us by writing back - the current frame size. - * nsterm.m (windowWillUseStandardFrame): Register non-maximized - width or height as new user size. When entering full width or - height, the other size component is taken from the user size. - * nsterm.m (fullscreenState): New method for accessing the - fullscreen state. - * nsterm.m (constrainFrameRect): Restrict frame to be placed under - the menu bar, if present. The old version, sometimes, restricted - the height of a frame to the screen, this version never does this. - * nsterm.m (zoom): Perform zoom by setting the frame to the full - size of the screen (minus the menu bar). The default system - function, with the zoom animation, is no longer used, as the final - frame size doesn't cover the entire screen. + (constrain_frame_rect): New function for constraining a frame. + (ns_constrain_all_frames): Set frame size explicitly rather than + relying on the system doing it for us by writing back the current + frame size. + (windowWillUseStandardFrame): Register non-maximized width or + height as new user size. When entering full width or height, + the other size component is taken from the user size. + (fullscreenState): New method for accessing the fullscreen state. + (constrainFrameRect): Restrict frame to be placed under the menu bar, + if present. The old version, sometimes, restricted the height of a + frame to the screen, this version never does this. + (zoom): Perform zoom by setting the frame to the full size of the + screen (minus the menu bar). The default system function, with the + zoom animation, is no longer used, as the final frame size doesn't + cover the entire screen. Rework how to constrain resizing to the character grid. The old system used "resizeIncrements" in NSWindows. However, once a frame @@ -318,9 +307,9 @@ remained unaligned even after a resize. In addition, it conflicted when resizing a fullheight window. - * nsterm.m (windowWillResize): Restrict frame size to text grid, + * src/nsterm.m (windowWillResize): Restrict frame size to text grid, unless when pixelwise frame resizing is enabled. - * nsterm.m (updateFrameSize, initFrameFromEmacs) + (updateFrameSize, initFrameFromEmacs) (toggleFullScreen, handleFS): Don't set resizeIncrements. Redesign the NS trace system. The call structure is represented @@ -328,31 +317,28 @@ printf-style arguments. New macros for printing various information. - * nsterm.h (NSTRACE_ENABLED): Macro to enable trace system. - * nsterm.h (NSTRACE, NSTRACE_WHEN, NSTRACE_UNLESS): Macros to - start a new block (typically a function), accept printf-style - arguments. - * nsterm.h (NSTRACE_MSG): Macro for extra information, accepts + * src/nsterm.h (NSTRACE_ENABLED): Macro to enable trace system. + (NSTRACE, NSTRACE_WHEN, NSTRACE_UNLESS): Macros to start a new + block (typically a function), accept printf-style arguments. + (NSTRACE_MSG): Macro for extra information, accepts printf-style arguments. - * nsterm.h (NSTRACE_what): Macros for printing various types. - * nsterm.h (NSTRACE_FMT_what): Macro with printf format string - snippets. - * nsterm.h (NSTRACE_ARG_what): Macros for passing printf-style - arguments, corresponds to NSTRACE_FMT_what. - * nsterm.h (NSTRACE_RETURN): Macro to print return value, accept + (NSTRACE_what): Macros for printing various types. + (NSTRACE_FMT_what): Macro with printf format string snippets. + (NSTRACE_ARG_what): Macros for passing printf-style arguments, + corresponds to NSTRACE_FMT_what. + (NSTRACE_RETURN): Macro to print return value, accept printf-style arguments. - * nsterm.h (NSTRACE_RETURN_what): Macros to print return value for + (NSTRACE_RETURN_what): Macros to print return value for various types. - * nsterm.m: Remove old NSTRACE macro. - * nsterm.m (nstrace_num): Trace counter. - * nsterm.m (nstrace_depth): Current call depth. - * nsterm.m (nstrace_leave): NSTRACE support function, called when - the local variable "nstrace_enabled" goes out of scope using the + * nsterm.m: Remove old NSTRACE macro + * src/nsterm.m (nstrace_num): Trace counter. + (nstrace_depth): Current call depth. + (nstrace_leave): NSTRACE support function, called when the + local variable "nstrace_enabled" goes out of scope using the "cleanup" extension. - * nsterm.m (ns_print_fullscreen_type_name): NSTRACE_FSTYPE support - function. - * nsterm.m (constrain_frame_rect, ns_constrain_all_frames) + (ns_print_fullscreen_type_name): NSTRACE_FSTYPE support function. + (constrain_frame_rect, ns_constrain_all_frames) (ns_update_auto_hide_menu_bar, ns_update_begin) (ns_update_window_begin, update_window_end, ns_update_end) (ns_focus, ns_unfocus, ns_ring_bell, ns_frame_raise_lower) @@ -394,17 +380,17 @@ (resetCursorRects, setPosition, EmacsScroller_mouseDown) (EmacsScroller_mouseDragged, syms_of_nsterm): Use new trace system. - * nsfns.m: Remove old NSTRACE macro. - * nsfns.m (x_set_icon_name, ns_set_name, x_explicitly_set_name) + * nsfns.m: Remove old NSTRACE macro + * src/nsfns.m (x_set_icon_name, ns_set_name, x_explicitly_set_name) (x_implicitly_set_name, x_set_title, ns_set_name_as_filename) (ns_implicitly_set_icon_type, x_set_icon_type): Use new trace system. - * nsimage.m: Remove old NSTRACE macro. - * nsimage.m (ns_image_from_XBM, ns_image_for_XPM) + * nsimage.m: Remove old NSTRACE macro + * src/nsimage.m (ns_image_from_XBM, ns_image_for_XPM) (ns_image_from_bitmap_file, ns_load_image): Use new trace system. - * nsmenu.m: Remove old NSTRACE macro. - * nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog): + * nsmenu.m: Remove old NSTRACE macro + * src/nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog): Use new trace system. 2015-10-22 Katsumi Yamaoka @@ -480,8 +466,8 @@ Improve doc-view wrt. auto-revert-mode - * lisp/doc-view.el (doc-view-revert-buffer): Don't revert when file is - corrupted (bug#21729). + * lisp/doc-view.el (doc-view-revert-buffer): Don't revert when file + is corrupted (bug#21729). (doc-view-mode): Set doc-view-revert-buffer as revert-buffer-function. 2015-10-22 Oleh Krehel @@ -503,10 +489,6 @@ 2015-10-21 Paul Eggert - Spelling fixes - -2015-10-21 Paul Eggert - New lispref section “Security Considerations” This attempts to document some of the issues recently discussed @@ -532,8 +514,6 @@ 2015-10-21 Katsumi Yamaoka - Remove fboundp checks from mailcap-mime-data - * lisp/gnus/mailcap.el (mailcap-mime-data): Remove fboundp checks. (mailcap-viewer-passes-test): Do it instead. Thanks to Stefan Monnier. @@ -554,27 +534,23 @@ 2015-10-21 Artur Malabarba - * lisp/isearch.el (isearch-search-fun-default): Simplify logic - + * lisp/isearch.el (isearch-search-fun-default): Simplify logic. (isearch--lax-regexp-function-p): New function. 2015-10-21 Artur Malabarba - * lisp/isearch.el: Support lax-whitespace in regexp-function searches - + * lisp/isearch.el: Support lax-whitespace in regexp-function searches. (isearch-search-fun-default): Let-bind `search-spaces-regexp' around `isearch-regexp-function'. 2015-10-21 Artur Malabarba - * lisp/isearch.el: Rename word search to regexp-function search - + * lisp/isearch.el: Rename word search to regexp-function search. `isearch-word' went well beyond its original purpose, and the name no longer makes sense. It is now called - `isearch-regexp-function', and it's value should always be a - function that converts a string to a regexp (though setting it to - t is still supported for now). - + `isearch-regexp-function', and its value should always be a function + that converts a string to a regexp (though setting it to t is still + supported for now). (isearch-word): Make obsolete. (isearch-regexp-function): New variable. (isearch-mode, isearch-done, isearch--state, isearch--set-state) @@ -591,18 +567,12 @@ (isearch--describe-regexp-mode): New function. (isearch--describe-word-mode): Make obsolete. - * lisp/info.el (Info-isearch-search): Use the new var. - - * lisp/replace.el (replace-search, replace-highlight): Use the new - var. - - * lisp/obsolete/longlines.el (longlines-search-function): Use the - new var. - - * lisp/hexl.el (hexl-isearch-search-function): Use the new var. - - * lisp/cedet/semantic/senator.el (senator-isearch-search-fun): Use - the new var. + * lisp/info.el (Info-isearch-search): + * lisp/replace.el (replace-search, replace-highlight): + * lisp/obsolete/longlines.el (longlines-search-function): + * lisp/hexl.el (hexl-isearch-search-function): + * lisp/cedet/semantic/senator.el (senator-isearch-search-fun): + Use the new var. 2015-10-21 Oleh Krehel @@ -629,7 +599,7 @@ 2015-10-21 Katsumi Yamaoka - lisp/gnus/mailcap.el (mailcap-mailcap-entry-passes-test): Doc fix + * lisp/gnus/mailcap.el (mailcap-mailcap-entry-passes-test): Doc fix. 2015-10-20 Paul Eggert @@ -774,25 +744,23 @@ 2015-10-20 Dmitry Gutov - Call vc-dir-defresh after stash operations + Call vc-dir-refresh after stash operations * lisp/vc/vc-git.el (vc-git-stash-apply-at-point) - (vc-git-stash-pop-at-point): Call vc-dir-defresh (bug#13960). + (vc-git-stash-pop-at-point): Call vc-dir-refresh (bug#13960). * lisp/vc/vc-dir.el (vc-dir-resynch-file): Expand FNAME as well, since it can be abbreviated (as returned by vc-find-root). 2015-10-20 Dmitry Gutov - Don't declare vc-exec-after anymore - * lisp/vc/vc-svn.el: * lisp/vc/vc-mtn.el: * lisp/vc/vc-hg.el: * lisp/vc/vc-cvs.el: * lisp/vc/vc-git.el: - * lisp/vc/vc-bzr.el: Don't declare vc-exec-after anymore. Its - usages have been replaced with vc-run-delayed. + * lisp/vc/vc-bzr.el: Don't declare vc-exec-after anymore. + Its usages have been replaced with vc-run-delayed. 2015-10-20 Dima Kogan @@ -811,9 +779,8 @@ Update the way directories are compressed * lisp/dired-aux.el (dired-compress-file-suffixes): Update the recipe - for *.tar.gz decompression to use a pipe. - Add an entry for the default directory compression (to *.tar.g). - + for *.tar.gz decompression to use a pipe. + Add an entry for the default directory compression (to *.tar.g). (dired-compress-file): Update. See https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg00949.html. @@ -823,7 +790,7 @@ Unbreak `group' option for `mail-sources' * nnml.el (nnml-retrieve-groups, nnml-request-scan): - * nnmail.el (nnmail-get-new-mail-per-group): + * nnmail.el (nnmail-get-new-mail-per-group) (nnmail-get-new-mail-1): Unbreak `group' option for `mail-sources'. 2015-10-19 Nicolas Petton commit 80dd76a8e5d08b35c50589fb1ce7ef6a43ee74ab Author: Michael Albinus Date: Sun Oct 25 14:59:45 2015 +0100 Document file notification `stopped' event * doc/lispref/os.texi (File Notifications): Document `stopped event'. diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 1925bd5..0160de8 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -2632,6 +2632,8 @@ reports attribute changes as well @var{file} has been renamed to @var{file1} @item attribute-changed a @var{file} attribute was changed +@item stopped +watching @var{file} has been stopped @end table Note that the @file{w32notify} library does not report @@ -2639,6 +2641,11 @@ Note that the @file{w32notify} library does not report permissions or modification time, has changed, this library reports a @code{changed} event. +The @code{stopped} event reports, that watching the file has been +stopped. This could be because @code{file-notify-rm-watch} was called +(see below), or because the file being watched was deleted, or due to +another error reported from the underlying library. + @var{file} and @var{file1} are the name of the file(s) whose event is being reported. For example: @@ -2708,6 +2715,36 @@ A watch can become invalid if the file or directory it watches is deleted, or if the watcher thread exits abnormally for any other reason. Removing the watch by calling @code{file-notify-rm-watch} also makes it invalid. + +@example +@group +(setq desc (file-notify-add-watch + "/tmp/foo" '(change) 'my-notify-callback)) + @result{} 35025468 +@end group + +@group +(write-region "foo" nil "/tmp/foo") + @result{} Event (35025468 created "/tmp/foo") + Event (35025468 changed "/tmp/foo") +@end group + +@group +(file-notify-valid-p desc) + @result{} t +@end group + +@group +(delete-file "/tmp/foo") + @result{} Event (35025468 deleted "/tmp/foo") + Event (35025468 stopped "/tmp/foo") +@end group + +@group +(file-notify-valid-p desc) + @result{} nil +@end group +@end example @end defun @node Dynamic Libraries diff --git a/etc/NEWS b/etc/NEWS index 381e7c8..f5b06f9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -843,10 +843,15 @@ be added to the archive. ** Autorevert: dired buffers are also auto-reverted via file notifications, if Emacs is compiled with file notification support. +** File Notifications + ++++ +*** The new event `stopped' signals, that a file notification watch is +not active any longer. + +++ -** File Notifications: the new function `file-notify-valid-p' checks, -whether a file notification descriptor still corresponds to an -activate watch. +*** The new function `file-notify-valid-p' checks, whether a file +notification descriptor still corresponds to an activate watch. ** Dired commit ab116b19eda6bf42b11f7b902c749a77d7cb7683 Author: Michael Albinus Date: Sun Oct 25 14:18:17 2015 +0100 Introduce `stopped' event in file notification * lisp/filenotify.el (file-notify--rm-descriptor): New defun. (file-notify-rm-watch): Use it. (file-notify-callback): Implement `stopped' event. (file-notify-add-watch): Mention `stopped' in the docstring. Check, that upper directory exists. * test/automated/file-notify-tests.el (file-notify-test01-add-watch): Add two test cases. (file-notify-test02-events): Handle also `stopped' event. (file-notify-test04-file-validity): Add another test case. diff --git a/lisp/filenotify.el b/lisp/filenotify.el index b9f59de..55d9028 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -48,6 +48,33 @@ The value in the hash table is a list Several values for a given DIR happen only for `inotify', when different files from the same directory are watched.") +(defun file-notify--rm-descriptor (descriptor) + "Remove DESCRIPTOR from `file-notify-descriptors'. +DESCRIPTOR should be an object returned by `file-notify-add-watch'. +If it is registered in `file-notify-descriptors', a stopped event is sent." + (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) + (file (if (consp descriptor) (cdr descriptor))) + (registered (gethash desc file-notify-descriptors)) + (dir (car registered))) + + (when (consp registered) + ;; Send `stopped' event. + (dolist (entry (cdr registered)) + (funcall (cdr entry) + `(,(file-notify--descriptor desc) stopped + ,(or (and (stringp (car entry)) + (expand-file-name (car entry) dir)) + dir)))) + + ;; Modify `file-notify-descriptors'. + (if (not file) + (remhash desc file-notify-descriptors) + (setcdr registered + (delete (assoc file (cdr registered)) (cdr registered))) + (if (null (cdr registered)) + (remhash desc file-notify-descriptors) + (puthash desc registered file-notify-descriptors)))))) + ;; This function is used by `gfilenotify', `inotify' and `w32notify' events. ;;;###autoload (defun file-notify-handle-event (event) @@ -111,7 +138,7 @@ EVENT is the cadr of the event in `file-notify-handle-event' (registered (gethash desc file-notify-descriptors)) (actions (nth 1 event)) (file (file-notify--event-file-name event)) - file1 callback pending-event) + file1 callback pending-event stopped) ;; Make actions a list. (unless (consp actions) (setq actions (cons actions nil))) @@ -158,6 +185,8 @@ EVENT is the cadr of the event in `file-notify-handle-event' 'renamed) ;; inotify, w32notify. + ((eq action 'ignored) + (setq stopped t actions nil)) ((eq action 'attrib) 'attribute-changed) ((memq action '(create added)) 'created) ((memq action '(modify modified)) 'changed) @@ -194,6 +223,17 @@ EVENT is the cadr of the event in `file-notify-handle-event' (funcall (cadr pending-event) (car pending-event)) (setq pending-event nil)) + ;; Check for stopped. + (setq + stopped + (or + stopped + (and + (memq action '(deleted renamed)) + (= (length (cdr registered)) 1) + (string-equal + (or (file-name-nondirectory file) "") (car (cadr registered)))))) + ;; Apply callback. (when (and action (or @@ -213,7 +253,11 @@ EVENT is the cadr of the event in `file-notify-handle-event' `(,(file-notify--descriptor desc) ,action ,file ,file1)) (funcall callback - `(,(file-notify--descriptor desc) ,action ,file)))))))) + `(,(file-notify--descriptor desc) ,action ,file))))) + + ;; Modify `file-notify-descriptors'. + (when stopped + (file-notify--rm-descriptor (file-notify--descriptor desc)))))) ;; `gfilenotify' and `w32notify' return a unique descriptor for every ;; `file-notify-add-watch', while `inotify' returns a unique @@ -251,17 +295,18 @@ following: `changed' -- FILE has changed `renamed' -- FILE has been renamed to FILE1 `attribute-changed' -- a FILE attribute was changed + `stopped' -- watching FILE has been stopped FILE is the name of the file whose event is being reported." ;; Check arguments. (unless (stringp file) - (signal 'wrong-type-argument (list file))) + (signal 'wrong-type-argument `(,file))) (setq file (expand-file-name file)) (unless (and (consp flags) (null (delq 'change (delq 'attribute-change (copy-tree flags))))) - (signal 'wrong-type-argument (list flags))) + (signal 'wrong-type-argument `(,flags))) (unless (functionp callback) - (signal 'wrong-type-argument (list callback))) + (signal 'wrong-type-argument `(,callback))) (let* ((handler (find-file-name-handler file 'file-notify-add-watch)) (dir (directory-file-name @@ -270,6 +315,9 @@ FILE is the name of the file whose event is being reported." (file-name-directory file)))) desc func l-flags registered) + (unless (file-directory-p dir) + (signal 'file-notify-error `("Directory does not exist" ,dir))) + (if handler ;; A file name handler could exist even if there is no local ;; file notification support. @@ -326,10 +374,10 @@ FILE is the name of the file whose event is being reported." DESCRIPTOR should be an object returned by `file-notify-add-watch'." (let* ((desc (if (consp descriptor) (car descriptor) descriptor)) (file (if (consp descriptor) (cdr descriptor))) - (dir (car (gethash desc file-notify-descriptors))) + (registered (gethash desc file-notify-descriptors)) + (dir (car registered)) (handler (and (stringp dir) - (find-file-name-handler dir 'file-notify-rm-watch))) - (registered (gethash desc file-notify-descriptors))) + (find-file-name-handler dir 'file-notify-rm-watch)))) (when (stringp dir) ;; Call low-level function. @@ -351,14 +399,7 @@ DESCRIPTOR should be an object returned by `file-notify-add-watch'." (file-notify-error nil))) ;; Modify `file-notify-descriptors'. - (if (not file) - (remhash desc file-notify-descriptors) - - (setcdr registered - (delete (assoc file (cdr registered)) (cdr registered))) - (if (null (cdr registered)) - (remhash desc file-notify-descriptors) - (puthash desc registered file-notify-descriptors)))))) + (file-notify--rm-descriptor descriptor)))) (defun file-notify-valid-p (descriptor) "Check a watch specified by its DESCRIPTOR. diff --git a/test/automated/file-notify-tests.el b/test/automated/file-notify-tests.el index 8441d6d..56b4f69 100644 --- a/test/automated/file-notify-tests.el +++ b/test/automated/file-notify-tests.el @@ -83,11 +83,11 @@ (tramp-cleanup-connection (tramp-dissect-file-name temporary-file-directory) nil 'keep-password)) - (setq file-notify--test-tmpfile nil) - (setq file-notify--test-tmpfile1 nil) - (setq file-notify--test-desc nil) - (setq file-notify--test-results nil) - (setq file-notify--test-events nil) + (setq file-notify--test-tmpfile nil + file-notify--test-tmpfile1 nil + file-notify--test-desc nil + file-notify--test-results nil + file-notify--test-events nil) (when file-notify--test-event (error "file-notify--test-event should not be set but bound dynamically"))) @@ -166,6 +166,11 @@ being the result.") (ert-deftest file-notify-test01-add-watch () "Check `file-notify-add-watch'." (skip-unless (file-notify--test-local-enabled)) + + (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) + file-notify--test-tmpfile1 + (format "%s/%s" file-notify--test-tmpfile (md5 (current-time-string)))) + ;; Check, that different valid parameters are accepted. (should (setq file-notify--test-desc @@ -181,6 +186,12 @@ being the result.") (file-notify-add-watch temporary-file-directory '(change attribute-change) 'ignore))) (file-notify-rm-watch file-notify--test-desc) + ;; The file does not need to exist, just the upper directory. + (should + (setq file-notify--test-desc + (file-notify-add-watch + file-notify--test-tmpfile '(change attribute-change) 'ignore))) + (file-notify-rm-watch file-notify--test-desc) ;; Check error handling. (should-error (file-notify-add-watch 1 2 3 4) @@ -197,6 +208,13 @@ being the result.") (equal (should-error (file-notify-add-watch temporary-file-directory '(change) 3)) '(wrong-type-argument 3))) + ;; The upper directory of a file must exist. + (should + (equal (should-error + (file-notify-add-watch + file-notify--test-tmpfile1 '(change attribute-change) 'ignore)) + `(file-notify-error + "Directory does not exist" ,file-notify--test-tmpfile))) ;; Cleanup. (file-notify--test-cleanup)) @@ -230,8 +248,8 @@ and the event to `file-notify--test-events'." (result (ert-run-test (make-ert-test :body 'file-notify--test-event-test)))) (setq file-notify--test-events - (append file-notify--test-events `(,file-notify--test-event))) - (setq file-notify--test-results + (append file-notify--test-events `(,file-notify--test-event)) + file-notify--test-results (append file-notify--test-results `(,result))))) (defun file-notify--test-make-temp-name () @@ -273,7 +291,7 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." file-notify--test-tmpfile '(change) 'file-notify--test-event-handler)) (file-notify--test-with-events - (file-notify--test-timeout) '(created changed deleted) + (file-notify--test-timeout) '(created changed deleted stopped) (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (delete-file file-notify--test-tmpfile)) @@ -290,8 +308,8 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." ;; w32notify does not distinguish between `changed' and ;; `attribute-changed'. (if (eq file-notify--library 'w32notify) - '(created changed changed deleted) - '(created changed deleted)) + '(created changed changed deleted stopped) + '(created changed deleted stopped)) (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (copy-file file-notify--test-tmpfile file-notify--test-tmpfile1) @@ -310,7 +328,7 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." '(change) 'file-notify--test-event-handler)) (should file-notify--test-desc) (file-notify--test-with-events - (file-notify--test-timeout) '(created changed renamed) + (file-notify--test-timeout) '(created changed renamed stopped) (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (rename-file file-notify--test-tmpfile file-notify--test-tmpfile1) @@ -335,11 +353,11 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." ;; Otherwise, not all events arrive us in the remote case. (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) - (sleep-for 0.1) + (read-event nil nil 0.1) (set-file-modes file-notify--test-tmpfile 000) - (sleep-for 0.1) + (read-event nil nil 0.1) (set-file-times file-notify--test-tmpfile '(0 0)) - (sleep-for 0.1) + (read-event nil nil 0.1) (delete-file file-notify--test-tmpfile)) (file-notify-rm-watch file-notify--test-desc)) @@ -348,18 +366,19 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (should (equal (mapcar #'cadr file-notify--test-events) (if (eq file-notify--library 'w32notify) - '(created changed deleted - created changed changed deleted - created changed renamed) + '(created changed deleted stopped + created changed changed deleted stopped + created changed renamed stopped) (if (file-remote-p temporary-file-directory) - '(created changed deleted - created changed deleted - created changed renamed - attribute-changed attribute-changed attribute-changed) - '(created changed deleted - created changed deleted - created changed renamed - attribute-changed attribute-changed))))) + '(created changed deleted stopped + created changed deleted stopped + created changed renamed stopped + attribute-changed attribute-changed + attribute-changed stopped) + '(created changed deleted stopped + created changed deleted stopped + created changed renamed stopped + attribute-changed attribute-changed stopped))))) (should file-notify--test-results) (dolist (result file-notify--test-results) ;;(message "%s" (ert-test-result-messages result)) @@ -438,8 +457,8 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (unwind-protect (progn - (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)) - (setq file-notify--test-desc + (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) + file-notify--test-desc (file-notify-add-watch file-notify--test-tmpfile '(change) #'file-notify--test-event-handler)) @@ -452,6 +471,33 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." ;; After removing the watch, the descriptor must not be valid ;; anymore. (file-notify-rm-watch file-notify--test-desc) + (file-notify--wait-for-events + (file-notify--test-timeout) + (not (file-notify-valid-p file-notify--test-desc))) + (should-not (file-notify-valid-p file-notify--test-desc))) + + ;; Cleanup. + (file-notify--test-cleanup)) + + (unwind-protect + (progn + (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) + file-notify--test-desc + (file-notify-add-watch + file-notify--test-tmpfile + '(change) #'file-notify--test-event-handler)) + (file-notify--test-with-events + (file-notify--test-timeout) '(created changed) + (should (file-notify-valid-p file-notify--test-desc)) + (write-region + "any text" nil file-notify--test-tmpfile nil 'no-message) + (should (file-notify-valid-p file-notify--test-desc))) + ;; After deleting the file, the descriptor must not be valid + ;; anymore. + (delete-file file-notify--test-tmpfile) + (file-notify--wait-for-events + (file-notify--test-timeout) + (not (file-notify-valid-p file-notify--test-desc))) (should-not (file-notify-valid-p file-notify--test-desc))) ;; Cleanup. @@ -463,8 +509,8 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (unless (and noninteractive (eq file-notify--library 'w32notify)) (let ((temporary-file-directory (make-temp-file "file-notify-test-parent" t))) - (setq file-notify--test-tmpfile (file-notify--test-make-temp-name)) - (setq file-notify--test-desc + (setq file-notify--test-tmpfile (file-notify--test-make-temp-name) + file-notify--test-desc (file-notify-add-watch file-notify--test-tmpfile '(change) #'file-notify--test-event-handler)) @@ -474,8 +520,8 @@ Don't wait longer than TIMEOUT seconds for the events to be delivered." (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (should (file-notify-valid-p file-notify--test-desc))) - ;; After deleting the parent, the descriptor must not be valid - ;; anymore. + ;; After deleting the parent, the descriptor must not be + ;; valid anymore. (delete-directory temporary-file-directory t) (file-notify--wait-for-events (file-notify--test-timeout) commit 92c63c6552fc71961f0bb941d651ac359b9e1edc Author: Glenn Morris Date: Sun Oct 25 06:23:48 2015 -0400 ; Auto-commit of ChangeLog files. diff --git a/ChangeLog.2 b/ChangeLog.2 index 8c30a11..e6a6796 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -1,3 +1,891 @@ +2015-10-25 Paul Eggert + + Revert commit that broke 'make bootstrap' + + * lisp/custom.el (custom-declare-variable): Revert commit + 79fac080d277fed07b3c192890ad59d36d9f83b6. custom.el needs to work + even when pcase has not been defined yet, when doing bootstrapping. + +2015-10-25 Paul Eggert + + Port recent inline functions fix to Standard C + + * src/lisp.h (LISP_MACRO_DEFUN, LISP_MACRO_DEFUN_VOID): Remove. + All uses rewritten to define the function directly rather than to + use a macro to define the function. This conforms to Standard C, + which does not allow stray semicolons at the top level. I hope it + also avoids the problems with TAGS. Those macros, though clever, + were pretty confusing anyway, and it wasn’t clear they were worth + the aggravation even without the TAGS problem. + +2015-10-24 Artur Malabarba + + * lisp/isearch.el: Make character-fold search the default again + +2015-10-24 Artur Malabarba + + * lisp/character-fold.el: Many improvements + + (character-fold-search-forward, character-fold-search-backward): + New command + (character-fold-to-regexp): Remove lax-whitespace hack. + (character-fold-search): Remove variable. Only isearch and + query-replace use char-folding, and they both have their own + variables to configure that. + +2015-10-24 Artur Malabarba + + * lisp/isearch.el: Generalize definition of regexp-function toggles + + (isearch-specify-regexp-function): New macro for specifying + possible values of `isearch-regexp-function'. + + (isearch-toggle-character-fold, isearch-toggle-symbol) + (isearch-toggle-word): Define with `isearch-specify-regexp-function'. + +2015-10-24 Artur Malabarba + + * lisp/isearch.el (search-default-regexp-mode): New variable + + (isearch-mode): Use it. + +2015-10-24 Artur Malabarba + + * lisp/isearch.el: Delete redundant :group entries + + (search-exit-option, search-slow-window-lines) + (search-slow-speed, search-upper-case) + (search-nonincremental-instead, search-whitespace-regexp) + (search-invisible, isearch-hide-immediately) + (isearch-resume-in-command-history, search-ring-max) + (regexp-search-ring-max, search-ring-update, search-highlight) + (isearch-fail): Delete :group entries. + +2015-10-24 Artur Malabarba + + * lisp/custom.el (custom-declare-variable): Shorten code a bit + +2015-10-24 Juanma Barranquero + + addpm.c: Silence some warnings. + + * nt/addpm.c (DdeCommand): Cast pData argument of DdeClientTransaction + to LPBYTE. + (add_registry): Pass NULL to optional lpClass argument of + RegCreateKeyEx, not an empty string. + +2015-10-24 Juanma Barranquero + + addpm.c: Do not add obsolete GTK libraries to the path. + + * nt/addpm.c (REG_GTK, REG_RUNEMACS_PATH): Delete. + (add_registry): Remove variables `size' and `gtk_key'. + Do not add the GTK DLL directory to the library search path; it is + confusing behavior (in particular, the same Emacs version with and + without invoking addpm will use a different path), and the GTK image + libraries are obsolete anyway. + +2015-10-24 Juanma Barranquero + + addpm.c: Replace existing entries, but do not create new ones + + * nt/addpm.c (add_registry): If the Emacs registry key exists, replace + existing values from previous versions, but do not add new ones; the + key could exist for other reasons unrelated to old Emacsen, like X-style + resources, or to set some environment variables like HOME or LANG, and + in that case we don't want to populate it with obsolete values. + +2015-10-24 Juanma Barranquero + + * nt/addpm.c (add_registry): Do not compute unused return value. + +2015-10-24 Juanma Barranquero + + addpm.c: Don't pass REG_OPTION_NON_VOLATILE to RegOpenKeyEx + + * nt/addpm.c (add_registry): Pass 0 to ulOptions argument of + RegOpenKeyEx, not REG_OPTION_NON_VOLATILE. This doesn't change + current behavior because REG_OPTION_NON_VOLATILE is defined to + be 0L anyway, but that option is actually documented only for + RegCreateKeyEx. + +2015-10-24 Juanma Barranquero + + * src/w32notify.c (Fw32notify_add_watch): Fix version check. + +2015-10-24 Eli Zaretskii + + Update frame title when redisplay scrolls selected window + + * src/xdisp.c (redisplay_window): Reconsider the frame's title + when the mode-line of the frame's selected window needs to be + updated. + +2015-10-24 Eli Zaretskii + + Update frame title when scrolling the selected window + + * src/window.c (wset_update_mode_line): New function, sets either the + window's update_mode_line flag or the global update_mode_lines + variable. + (Fset_window_start, set_window_buffer, window_scroll_pixel_based) + (window_scroll_line_based): Call it instead of only setting the + window's update_mode_line flag. + +2015-10-24 Eli Zaretskii + + An even better fix for bug#21739 + + * src/window.c (set_window_buffer): If the window is the frame's + selected window, set update_mode_lines, not the window's + update_mode_line flag. (Bug#21739) + * src/buffer.c (Fkill_buffer): Undo last change. + (set_update_modelines_for_buf): Function deleted. + +2015-10-24 Thomas Fitzsimmons + + Sync with soap-client repository, version 3.0.0 + +2015-10-24 Nicolas Petton + + Update the new icon + + Move the E slightly to the right in the circle. + + * etc/images/icons/hicolor/128x128/apps/emacs.png: + * etc/images/icons/hicolor/16x16/apps/emacs.png: + * etc/images/icons/hicolor/24x24/apps/emacs.png: + * etc/images/icons/hicolor/32x32/apps/emacs.png: + * etc/images/icons/hicolor/48x48/apps/emacs.png: + * etc/images/icons/hicolor/scalable/apps/emacs.svg: + * nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns: + * nt/icons/emacs.ico: New icom update. + +2015-10-24 Eli Zaretskii + + Avoid missing inline functions from lisp.h in TAGS + + * src/lisp.h (LISP_MACRO_DEFUN): Mention in the commentary the + need to end each invocation with a semi-colon. + Add a semi-colon at the end of each invocation of LISP_MACRO_DEFUN + and LISP_MACRO_DEFUN_VOID. This is to avoid missing in TAGS + inline functions defined immediately after each invocation, and + also avoid tagging every invocation of these macros. + +2015-10-24 Eli Zaretskii + + A better fix for bug#21739 + + * src/buffer.c (set_update_modelines_for_buf): New function. + (Fkill_buffer): Use it to set the global variable + update_mode_lines if the killed buffer was displayed in some + window. Don't set windows_or_buffers_changed. This is a better + fix for bug#21739 than the previous fix, since it will cause only + redisplay of mode lines, not of entire windows, but will still + catch attention of x_consider_frame_title in xdisp.c, which + redraws the frame title. + +2015-10-24 Tassilo Horn + + Add support for tar.bz2 and tar.xz archives + + * lisp/dired-aux.el (dired-compress-files-alist): Add support for + tar.bz2 and tar.xz archives. + +2015-10-23 Eli Zaretskii + + Fix infloop in redisplay introduced by a recent change + + * src/xdisp.c (redisplay_internal): Avoid inflooping when + redisplaying the selected window sets the selected frame's + redisplay flag. (Bug#21745) + +2015-10-23 Nicolas Petton + + * lisp/emacs-lisp/thunk.el: Better documentation. + +2015-10-23 Nicolas Petton + + Replace the old icon for Windows and Mac OSX + + * nt/icons/emacs.ico: + * nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns: Use the new + icons. + +2015-10-23 Stephen Leake + + `load-path' should contain only directory names + + * lisp/emacs-lisp/package.el (package-autoload-ensure-default-file): + `load-path' should contain only directory names + +2015-10-23 Nicolas Petton + + New library thunk.el + + thunk.el is extracted from stream.el in ELPA, with additional tests. + + * lisp/emacs-lisp/thunk.el: New file. + * test/automated/thunk-tests.el: New file. + * etc/NEWS: Add information about thunk.el + +2015-10-23 Michael Albinus + + Fix Bug#21669 + + * lisp/filenotify.el (file-notify-rm-watch): Improve check for + calling low-level functions. + + * test/automated/file-notify-tests.el (file-notify--test-timeout): + Decrase to 6 seconds for remote directories. + (file-notify-test02-events): Expect different number of + `attribute-changed' events for the local and remote cases. Apply + short delays between the operations, in order to receive all + events in the remote case. Combine `attribute-change' tests. + (Bug#21669) + +2015-10-23 Eli Zaretskii + + Decode the HTML source when displaying it in EWW + + * lisp/net/eww.el (eww-view-source): Decode the HTML source + according to its headers. + +2015-10-23 Nicolas Petton + + New default icon + + * etc/images/icons/hicolor/128x128/apps/emacs23.png: + * etc/images/icons/hicolor/16x16/apps/emacs23.png: + * etc/images/icons/hicolor/24x24/apps/emacs23.png: + * etc/images/icons/hicolor/32x32/apps/emacs23.png: + * etc/images/icons/hicolor/48x48/apps/emacs23.png: + * etc/images/icons/hicolor/scalable/apps/emacs23.svg: + * etc/images/icons/hicolor/scalable/mimetypes/emacs-document23.svg: Move + the old logo files to emacs23.*. + * etc/images/icons/hicolor/128x128/apps/emacs.png: + * etc/images/icons/hicolor/16x16/apps/emacs.png: + * etc/images/icons/hicolor/24x24/apps/emacs.png: + * etc/images/icons/hicolor/32x32/apps/emacs.png: + * etc/images/icons/hicolor/48x48/apps/emacs.png: + * etc/images/icons/hicolor/scalable/apps/emacs.svg: + * etc/images/icons/hicolor/scalable/mimetypes/emacs-document.svg: New files. + * etc/images/icons/README: Update the copyright information. + +2015-10-23 Eli Zaretskii + + Fix redisplay of frame title when current buffer is killed + + * src/buffer.c (Fkill_buffer): Set windows_or_buffers_changed to a + non-zero value, to redisplay more than just the affected windows. + (Bug#21739) + +2015-10-23 Anders Lindgren + + NextSten maximization and NSTRACE rewrite. + + Full-height, full-width, and maximized windows now cover the + entire screen (except the menu bar), including the part where the + system dock is placed. The system zoom animation is no longer + used. + + Made NonMaximized->FullWidth->FullHeight->NonMaximized restore the + original size. + + * nsterm.m (ns_menu_bar_height): New function, return height of + the menu bar, or 0 when it's hidden. + * nsterm.m (constrain_frame_rect): New function for constraining a + frame. + * nsterm.m (ns_constrain_all_frames): Set frame size explicitly + rather than relying on the system doing it for us by writing back + the current frame size. + * nsterm.m (windowWillUseStandardFrame): Register non-maximized + width or height as new user size. When entering full width or + height, the other size component is taken from the user size. + * nsterm.m (fullscreenState): New method for accessing the + fullscreen state. + * nsterm.m (constrainFrameRect): Restrict frame to be placed under + the menu bar, if present. The old version, sometimes, restricted + the height of a frame to the screen, this version never does this. + * nsterm.m (zoom): Perform zoom by setting the frame to the full + size of the screen (minus the menu bar). The default system + function, with the zoom animation, is no longer used, as the final + frame size doesn't cover the entire screen. + + Rework how to constrain resizing to the character grid. The old + system used "resizeIncrements" in NSWindows. However, once a frame + was resized so that it was not aligned to the text grid, it + remained unaligned even after a resize. In addition, it conflicted + when resizing a fullheight window. + + * nsterm.m (windowWillResize): Restrict frame size to text grid, + unless when pixelwise frame resizing is enabled. + * nsterm.m (updateFrameSize, initFrameFromEmacs) + (toggleFullScreen, handleFS): Don't set resizeIncrements. + + Redesign the NS trace system. The call structure is represented + using indentations and vertical lines. The NSTRACE macro accepts + printf-style arguments. New macros for printing various + information. + + * nsterm.h (NSTRACE_ENABLED): Macro to enable trace system. + * nsterm.h (NSTRACE, NSTRACE_WHEN, NSTRACE_UNLESS): Macros to + start a new block (typically a function), accept printf-style + arguments. + * nsterm.h (NSTRACE_MSG): Macro for extra information, accepts + printf-style arguments. + * nsterm.h (NSTRACE_what): Macros for printing various types. + * nsterm.h (NSTRACE_FMT_what): Macro with printf format string + snippets. + * nsterm.h (NSTRACE_ARG_what): Macros for passing printf-style + arguments, corresponds to NSTRACE_FMT_what. + * nsterm.h (NSTRACE_RETURN): Macro to print return value, accept + printf-style arguments. + * nsterm.h (NSTRACE_RETURN_what): Macros to print return value for + various types. + + * nsterm.m: Remove old NSTRACE macro. + * nsterm.m (nstrace_num): Trace counter. + * nsterm.m (nstrace_depth): Current call depth. + * nsterm.m (nstrace_leave): NSTRACE support function, called when + the local variable "nstrace_enabled" goes out of scope using the + "cleanup" extension. + * nsterm.m (ns_print_fullscreen_type_name): NSTRACE_FSTYPE support + function. + * nsterm.m (constrain_frame_rect, ns_constrain_all_frames) + (ns_update_auto_hide_menu_bar, ns_update_begin) + (ns_update_window_begin, update_window_end, ns_update_end) + (ns_focus, ns_unfocus, ns_ring_bell, ns_frame_raise_lower) + (ns_frame_rehighlight, x_make_frame_visible) + (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources) + (x_destroy_window, x_set_offset, x_set_window_size) + (ns_fullscreen_hook, ns_lisp_to_color, ns_color_to_lisp) + (ns_defined_color, frame_set_mouse_pixel_position) + (note_mouse_movement, ns_mouse_position, ns_frame_up_to_date) + (ns_define_frame_cursor, x_get_keysym_name, ns_redraw_scroll_bars) + (ns_clear_frame, ns_clear_frame_area, ns_scroll_run) + (ns_after_update_window_line, ns_shift_glyphs_for_insert) + (dumpcursor, ns_draw_vertical_window_border) + (ns_draw_window_divider, ns_draw_relief) + (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background) + (ns_dumpglyphs_image, ns_draw_glyph_string, ns_send_appdefined) + (ns_read_socket, ns_select, ns_set_vertical_scroll_bar) + (ns_set_horizontal_scroll_bar, ns_condemn_scroll_bars) + (ns_redeem_scroll_bar, ns_judge_scroll_bars, ns_delete_terminal) + (ns_create_terminal, ns_term_init, sendEvent) + (applicationDidFinishLaunching, applicationDidBecomeActive) + (timeout_handler, fd_handler, EmacsView_dealloc, changeFont) + (acceptsFirstResponder, resetCursorRects, keyDown, mouseDown) + (deltaIsZero, rightMouseDown, otherMouseDown, mouseUp) + (rightMouseUp, otherMouseUp, scrollWheel, mouseMoved) + (mouse_autoselect_window, in_window, mouseDragged) + (rightMouseDragged, otherMouseDragged, windowShouldClose) + (updateFrameSize, windowWillResize, windowDidResize) + (windowDidBecomeKey, windowDidResignKey, windowWillMiniaturize) + (initFrameFromEmacs, windowDidMove, windowDidDeminiaturize) + (windowDidExpose, windowDidMiniaturize, windowWillEnterFullScreen) + (windowDidEnterFullScreen, windowWillExitFullScreen) + (windowDidExitFullScreen, toggleFullScreen, handleFS, setFSValue) + (mouseEntered, mouseExited, menuDown, toolbarClicked, drawRect) + (draggingEntered, performDragOperation, validRequestorForSendType) + (setMiniwindowImage, constrainFrameRect, performZoom, zoom) + (EmacsScroller_initFrame, EmacsScroller_setFrame) + (EmacsScroller_dealloc, condemn, reprieve, judge) + (resetCursorRects, setPosition, EmacsScroller_mouseDown) + (EmacsScroller_mouseDragged, syms_of_nsterm): Use new trace system. + + * nsfns.m: Remove old NSTRACE macro. + * nsfns.m (x_set_icon_name, ns_set_name, x_explicitly_set_name) + (x_implicitly_set_name, x_set_title, ns_set_name_as_filename) + (ns_implicitly_set_icon_type, x_set_icon_type): Use new trace system. + + * nsimage.m: Remove old NSTRACE macro. + * nsimage.m (ns_image_from_XBM, ns_image_for_XPM) + (ns_image_from_bitmap_file, ns_load_image): Use new trace system. + + * nsmenu.m: Remove old NSTRACE macro. + * nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog): + Use new trace system. + +2015-10-22 Katsumi Yamaoka + + No need to use eval-and-compile + + * lisp/gnus/auth-source.el: Do require epg (when compiling) before + autoload epg functions. + +2015-10-22 Katsumi Yamaoka + + Fix auth-source-epa-make-gpg-token compilation (bug#21724) + + * lisp/gnus/auth-source.el: Add eval-and-compile to autoloads for + epg-context-set-passphrase-callback, epg-decrypt-string, and + epg-encrypt-string; require epg when compiling for the setf-method + for epg-context-armor. (bug#21724) + +2015-10-22 Eli Zaretskii + + Include file cleanup for w32 files in src directory + + * src/w32xfns.c: Don't include keyboard.h, window.h, charset.h, + fontset.h, blockinput.h. + * src/w32uniscribe.c: Don't include dispextern.h, character.h, + charset.h, fontset.h. + * src/w32term.c: Don't include systty.h, systime.h, charset.h, + character.h, ccl.h, dispextern.h, disptab.h, intervals.h, + process.h, atimer.h, keymap.h, w32heap.h. Include bitmap/gray.xbm + in an ifdef-ed away block. + Include fcntl.h for CYGWIN. + (set_frame_param): Remove unused function. + * src/w32select.c: Don't include charset.h and composite.h. + (setup_config, Fw32_get_clipboard_data): Avoid compiler warnings + due to pointer signedness mismatches. + * src/w32reg.c (w32_get_string_resource): Avoid compiler warnings + due to pointer signedness mismatches. + * src/w32proc.c: Include unistd.h. Don't include systime.h, + process.h, dispextern.h. + (sys_spawnve, Fw32_short_file_name, Fw32_long_file_name) + (Fw32_application_type): Avoid compiler warnings due to pointer + signedness mismatches. + * src/w32menu.c: Don't include keymap.h, termhooks.h, window.h, + character.h, charset.h, dispextern.h. + (simple_dialog_show, add_menu_item): Avoid compiler warnings due + to pointer signedness mismatches. + * src/w32inevt.c: Don't include dispextern.h, window.h, + termhooks.h, w32heap.h. + * src/w32font.c: Don't include dispextern.h, character.h, + charset.h, fontset.h, font.h. + (intern_font_name, add_font_entity_to_list) + (registry_to_w32_charset, w32_to_x_charset, fill_in_logfont) + (list_all_matching_fonts): Avoid compiler warnings due to pointer + signedness mismatches. + * src/w32fns.c: Don't include character.h, intervals.h, + dispextern.h, epaths.h, charset.h, ccl.h, fontset.h, systime.h, + termhooks.h, w32heap.h, bitmap/gray.xbm, font.h, w32font.h. + (w32_color_map_lookup, add_system_logical_colors_to_map) + (x_decode_color, x_set_name, FPRINTF_WM_CHARS, Fxw_color_defined_p) + (Fxw_color_values, x_display_info_for_name, Fset_message_beep) + (x_create_tip_frame, Fx_file_dialog, Fsystem_move_file_to_trash) + (w32_parse_hot_key, Ffile_system_info, w32_kbd_patch_key): Avoid + compiler warnings, mainly due to pointer signedness mismatches. + (unwind_create_frame_1): Remove unused function. + * src/w32console.c: Don't include character.h, disptab.h, frame.h, + window.h, termhooks.h, dispextern.h. + (w32con_write_glyphs, w32con_write_glyphs_with_face): Fix pointer + signedness mismatch. + * src/w32.c: Include c-strcase.h and systty.h. Don't include + w32heap.h. + +2015-10-22 Tassilo Horn + + Improve doc-view wrt. auto-revert-mode + + * lisp/doc-view.el (doc-view-revert-buffer): Don't revert when file is + corrupted (bug#21729). + (doc-view-mode): Set doc-view-revert-buffer as revert-buffer-function. + +2015-10-22 Oleh Krehel + + Describe dired-do-compress-to in the manual + + * etc/NEWS: Update. + + * lisp/dired-aux.el: Fix typo. + + * doc/emacs/dired.texi: Add entry. + +2015-10-22 Jürgen Hötzel + + Further fix for proper locale handling in tramp-gvfs.el + + * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes): + Just suppress LC_MESSAGES locale category settings. + +2015-10-21 Paul Eggert + + Spelling fixes + +2015-10-21 Paul Eggert + + New lispref section “Security Considerations” + + This attempts to document some of the issues recently discussed + on emacs-devel, and to indicate other such issues. The section + could be a lot longer. + * doc/lispref/os.texi (Security Considerations): + New node. + * doc/lispref/elisp.texi (Top): + * doc/lispref/processes.texi (Shell Arguments): + * lisp/subr.el (shell-quote-argument): + * src/callproc.c (syms_of_callproc): + Reference it. + +2015-10-21 Paul Eggert + + Merge from gnulib + + This incorporates: + 2015-10-18 stdalign: work around pre-4.9 GCC x86 bug + 2015-10-18 time_rz: avoid warning from bleeding-edge gcc's -Wnonnull + * doc/misc/texinfo.tex, lib/stdalign.in.h, lib/time_rz.c: + Copy from gnulib. + +2015-10-21 Katsumi Yamaoka + + Remove fboundp checks from mailcap-mime-data + + * lisp/gnus/mailcap.el (mailcap-mime-data): Remove fboundp checks. + (mailcap-viewer-passes-test): Do it instead. Thanks to Stefan Monnier. + +2015-10-21 Ken Brown + + Further include-file cleanup + + * src/sheap.c: Include stdlib.h. + * src/unexcw.c: Include string.h. + +2015-10-21 Eli Zaretskii + + Fix logic in 'server-kill-emacs-query-function' + + * lisp/server.el (server-kill-emacs-query-function): Correct the + logic that controls whether the user is asked for confirmation. + (Bug#21723) + +2015-10-21 Artur Malabarba + + * lisp/isearch.el (isearch-search-fun-default): Simplify logic + + (isearch--lax-regexp-function-p): New function. + +2015-10-21 Artur Malabarba + + * lisp/isearch.el: Support lax-whitespace in regexp-function searches + + (isearch-search-fun-default): Let-bind `search-spaces-regexp' + around `isearch-regexp-function'. + +2015-10-21 Artur Malabarba + + * lisp/isearch.el: Rename word search to regexp-function search + + `isearch-word' went well beyond its original purpose, and the name + no longer makes sense. It is now called + `isearch-regexp-function', and it's value should always be a + function that converts a string to a regexp (though setting it to + t is still supported for now). + + (isearch-word): Make obsolete. + (isearch-regexp-function): New variable. + (isearch-mode, isearch-done, isearch--state, isearch--set-state) + (with-isearch-suspended, isearch-toggle-regexp) + (isearch-toggle-word, isearch-toggle-symbol) + (isearch-toggle-character-fold, isearch-query-replace) + (isearch-occur, isearch-highlight-regexp) + (isearch-search-and-update, isearch-message-prefix) + (isearch-search-fun-default, isearch-search) + (isearch-lazy-highlight-new-loop, isearch-lazy-highlight-search): + Use it. + (isearch-lazy-highlight-regexp-function): New var. + (isearch-lazy-highlight-word): Make obsolete. + (isearch--describe-regexp-mode): New function. + (isearch--describe-word-mode): Make obsolete. + + * lisp/info.el (Info-isearch-search): Use the new var. + + * lisp/replace.el (replace-search, replace-highlight): Use the new + var. + + * lisp/obsolete/longlines.el (longlines-search-function): Use the + new var. + + * lisp/hexl.el (hexl-isearch-search-function): Use the new var. + + * lisp/cedet/semantic/senator.el (senator-isearch-search-fun): Use + the new var. + +2015-10-21 Oleh Krehel + + Add dired-do-compress-to command bound to "c" + + * lisp/dired-aux.el (dired-shell-command): Use the caller's + `default-directory', return the result of `process-file'. + (dired-compress-file-suffixes): Add comment on why "tar -zxf" isn't + used by default. + (dired-compress-files-alist): New defvar. + (dired-do-compress-to): New command. + + * lisp/dired.el (dired-mode-map): Bind `dired-do-compress-to' to "c". + (dired-do-compress-to): Add an autoload entry. + + * etc/NEWS: Add two entries. + +2015-10-21 Tassilo Horn + + Make RefTeX work with LaTeX subfiles package + + * lisp/textmodes/reftex.el (reftex-TeX-master-file): Recognize subfiles + document class argument as master file for referencing purposes. + +2015-10-21 Katsumi Yamaoka + + lisp/gnus/mailcap.el (mailcap-mailcap-entry-passes-test): Doc fix + +2015-10-20 Paul Eggert + + Include-file cleanup for src directory + + Omit ‘#include "foo.h"’ unless the file needs foo.h (Bug#21707). + In a few cases, add ‘#include "foo.h"’ if the file needs foo.h + but does not include it directly. As a general rule, a source + file should include foo.h if it needs the interfaces that foo.h + defines. + * src/alloc.c: Don’t include process.h. Include dispextern.h, + systime.h. + * src/atimer.c: Don’t include blockinput.h. + * src/buffer.c: Include coding.h, systime.h. Don’t include + keyboard.h, coding.h. + * src/callint.c: Don’t include commands.h, keymap.h. + * src/callproc.c: Don’t include character.h, ccl.h, composite.h, + systty.h, termhooks.h. + * src/casetab.c: Don’t include character.h. + * src/category.c: Don’t include charset.h, keymap.h. + * src/ccl.h: Don’t include character.h. + * src/character.c: Don’t include charset.h. + * src/charset.c: Don’t include disptab.h. + * src/chartab.c: Don’t include ccl.h. + * src/cm.c: Don’t include frame.h, termhooks.h. + * src/cmds.c: Don’t include window.h, dispextern.h. + * src/coding.c: Don’t include window.h, frame.h. + * src/composite.c: Include composite.h. Don’t include window.h, + font.h. + * src/data.c: Don’t include syssignal.h, termhooks.h, font.h. + * src/dbusbind.c: Don’t include frame.h. + * src/decompress.c: Don’t include character.h. + * src/dired.c: Don’t include character.h, commands.h, charset.h. + * src/dispnew.c: Don’t include character.h, indent.h, intervals.h, + process.h, timespec.h. Include systime.h. + * src/doc.c: Include coding.h. Don’t include keyboard.h. + * src/editfns.c: Include composite.h. Don’t include frame.h. + * src/emacs.c: Include fcntl.h, coding.h. Don’t include + commands.h, systty.h.. + * src/fileio.c: Don’t include intervals.h, dispextern.h. + Include composite.h. + * src/filelock.c: Don’t include character.h, systime.h. + * src/fns.c: Don’t include time.h, commands.h, keyboard.h, + keymap.h, frame.h, blockinput.h, xterm.h. Include composite.h. + * src/font.c: Include termhooks.h. + * src/font.h: Don’t include ccl.h, frame.h. Add forward decls of + struct composition_it, struct face, struct glyph_string. + * src/fontset.c: Don’t include buffer.h, ccl.h, keyboard.h, + intervals.h, window.h, termhooks.h. + * src/frame.c: Don’t include character.h, commands.h, font.h. + * src/frame.h: Don’t include dispextern.h. + * src/fringe.c: Don’t include character.h. + * src/ftcrfont.c: Don’t include dispextern.h, frame.h, + character.h, charset.h, fontset.h. + * src/ftfont.c: Don’t include frame.h, blockinput.h, coding.h, + fontset.h. + * src/ftxfont.c: Don’t include dispextern.h, character.h, + charset.h, fontset.h. + * src/gfilenotify.c: Don’t include frame.h, process.h. + * src/gtkutil.c: Include dispextern.h, frame.h, systime.h. + Don’t include syssignal.h, buffer.h, charset.h, font.h. + * src/gtkutil.h: Don’t include frame.h. + * src/image.c: Include fcntl.h and stdio.h instead of sysstdio.h. + Don’t include character.h. + * src/indent.c: Don’t include keyboard.h, termchar.h. + * src/inotify.c: Don’t include character.h, frame.h. + * src/insdel.c: Include composite.h. Don’t include blockinput.h. + * src/intervals.c: Don’t include character.h, keyboard.h. + * src/intervals.h: Don’t include dispextern.h, composite.h. + * src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h. + Include coding.h. + * src/keyboard.h: Don’t incldue systime.h. + * src/keymap.c: Don’t include charset.h, frame.h. + * src/lread.c: Include dispextern.h and systime.h. + Don’t include frame.h. Include systime.h. + * src/macros.c: Don’t include commands.h, character.h, buffer.h. + * src/menu.c: Include character.h, coding.h. Don’t include + dispextern.h. + * src/menu.h: Don’t include systime.h. + * src/minibuf.c: Don’t include commands.h, dispextern.h, syntax.h, + intervals.h, termhooks.h. + * src/print.c: Include coding.h. Don’t include keyboard.h, + window.h, dispextern.h, termchar.h, termhooks.h, font.h. + Add forward decl of struct terminal. + * src/process.c: Don’t include termhooks.h, commands.h, + dispextern.h, composite.h. + * src/region-cache.c: Don’t include character.h. + * src/scroll.c: Don’t include keyboard.h, window.h. + * src/search.c: Don’t include category.h, commands.h. + * src/sound.c: Don’t include dispextern.h. + * src/syntax.c: Don’t include command.h, keymap.h. + * src/sysdep.c: Don’t include window.h, dispextern.h. + * src/systime.h: Use ‘#ifdef emacs’, not ‘#ifdef EMACS_LISP_H’, + * src/term.c: Don’t include systty.h, intervals.h, xterm.h. + * src/terminal.c: Include character.h. + Don’t include charset.h, coding.h. + * src/textprop.c: Don’t include character.h. + * src/undo.c: Don’t include character.h, commands.h, window.h. + * src/unexsol.c: Don’t include character.h, charset.h. + * src/widget.c: Include widget.h. Don’t include keyboard.h, + window.h, dispextern.h, blockinput.h, character.h, font.h. + * src/widgetprv.h: Don’t include widget.h. + * src/window.c: Don’t include character.h, menu.h, intervals.h. + * src/xdisp.c: Include composite.h, systime.h. Don’t include + macros.h, process.h. + * src/xfaces.c: Don’t include charset.h, keyboard.h, termhooks.h, + intervals.h. + * src/xfns.c: Don’t include menu.h, character.h, intervals.h, + epaths.h, fontset.h, systime.h, atimer.h, termchar.h. + * src/xfont.c: Don’t include dispextern.h, fontset.h, ccl.h. + * src/xftfont.c: Don’t include dispextern.h, character.h, fontset.h. + * src/xgselect.c: Don’t include timespec.h, frame.h. + Include systime.h. + * src/xgselect.h: Don’t include time.h. + Use a forward decl to struct timespec instead. + * src/xmenu.c: Don’t include keymap.h, character.h, charset.h, + dispextern.h. Include systime.h. + * src/xml.c: Don’t include character.h. + * src/xrdb.c [USE_MOTIF]: Don’t include keyboard.h. + * src/xselect.c: Don’t include dispextern.h, character.h, + buffer.h, process.h. + * src/xsmfns.c: Don’t include systime.h, sysselect.h. + * src/xterm.c: Don’t include syssignal.h, charset.h, disptab.h, + intervals.h process.h, keymap.h, xgselect.h. Include composite.h. + +2015-10-20 Paul Eggert + + (/ N) now returns the reciprocal of N + + This is more compatible with Common Lisp and XEmacs (Bug#21690). See: + http://lists.gnu.org/archive/html/emacs-devel/2015-10/msg01053.html + * lisp/color.el (color-hue-to-rgb, color-hsl-to-rgb) + (color-xyz-to-srgb, color-xyz-to-lab): + * lisp/emacs-lisp/cl-extra.el (cl-float-limits): + * lisp/net/shr-color.el (shr-color-hue-to-rgb) + (shr-color-hsl-to-rgb-fractions): + Exploit the change to simplify the code a bit. + * lisp/emacs-lisp/bytecomp.el (byte-compile-quo): + Don’t complain about single-argument calls to ‘/’. + * src/data.c (arith_driver, float_arith_driver): + Implement the change. + +2015-10-20 Dmitry Gutov + + Call vc-dir-defresh after stash operations + + * lisp/vc/vc-git.el (vc-git-stash-apply-at-point) + (vc-git-stash-pop-at-point): Call vc-dir-defresh (bug#13960). + + * lisp/vc/vc-dir.el (vc-dir-resynch-file): Expand FNAME as well, + since it can be abbreviated (as returned by vc-find-root). + +2015-10-20 Dmitry Gutov + + Don't declare vc-exec-after anymore + + * lisp/vc/vc-svn.el: + * lisp/vc/vc-mtn.el: + * lisp/vc/vc-hg.el: + * lisp/vc/vc-cvs.el: + * lisp/vc/vc-git.el: + * lisp/vc/vc-bzr.el: Don't declare vc-exec-after anymore. Its + usages have been replaced with vc-run-delayed. + +2015-10-20 Dima Kogan + + Fix memory leak in fontset handling + + * src/font.c (copy_font_spec): Make a deep copy of the input + argument FONT. (Bug#21651) + +2015-10-20 Michael Sperber + + * lisp/gnus/mailcap.el (mailcap-mime-data): + Conditonalize `doc-view-mode', which does not exist on XEmacs. + +2015-10-20 Oleh Krehel + + Update the way directories are compressed + + * lisp/dired-aux.el (dired-compress-file-suffixes): Update the recipe + for *.tar.gz decompression to use a pipe. + Add an entry for the default directory compression (to *.tar.g). + + (dired-compress-file): Update. + + See https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg00949.html. + +2015-10-20 Michael Sperber + + Unbreak `group' option for `mail-sources' + + * nnml.el (nnml-retrieve-groups, nnml-request-scan): + * nnmail.el (nnmail-get-new-mail-per-group): + (nnmail-get-new-mail-1): Unbreak `group' option for `mail-sources'. + +2015-10-19 Nicolas Petton + + New function seq-position + + * lisp/emacs-lisp/seq.el (seq-position): New function. + * test/automated/seq-tests.el: New tests for seq-position. + * doc/lispref/sequences.texi: Add documentation for `seq-position'. + +2015-10-19 Ken Brown + + Enable --with-wide-int build on 32-bit Cygwin + + * src/sheap.c (STATIC_HEAP_SIZE): Remove distinction between x86 + and x86_64 to enable --with-wide-int build on 32-bit Cygwin. + +2015-10-19 Glenn Morris + + * doc/emacs/ack.texi (Acknowledgments): Small, sad, update. + +2015-10-19 Eli Zaretskii + + Resurrect image loading under auto-image-file-mode + + * src/image.c (x_find_image_fd): Handle the case of -2 returned by + 'openp' specially. This special case was lost in the changes on + 2015-08-18. (Bug#21685) + +2015-10-19 Eli Zaretskii + + Fix return value of 'set-file-extended-attributes' + + * lisp/files.el (set-file-extended-attributes): Return non-nil + when setting either ACLs or SELinux context succeeds. Document + the return value. (Bug#21699) + + * doc/lispref/files.texi (Changing Files): Document the return + value of set-file-extended-attributes. + +2015-10-19 Eli Zaretskii + + Improve documentation of functions that change files + + * doc/lispref/files.texi (Changing Files): Document that these + functions signal an error on failure. + +2015-10-18 Eli Zaretskii + + Fix doc string of 'shell-quote-argument' + + * lisp/subr.el (shell-quote-argument): Doc fix. (Bug#21702) + +2015-10-18 Michael Albinus + + Some minor Tramp changes + + * doc/misc/tramp.texi (Obtaining Tramp): Add http git cloning. + + * lisp/net/tramp.el (tramp-handle-make-auto-save-file-name): + Expand `tramp-auto-save-directory'. + 2015-10-18 Michael Albinus Minor edits in Tramp @@ -15680,7 +16568,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit f8ff3937660f4192d72dec2da31fa5c582434d1f (inclusive). +commit 0afbc5b2a2cda9fe12246bf62567162ae2577160 (inclusive). See ChangeLog.1 for earlier changes. ;; Local Variables: